fun lookup :: "('a::linorder*'b) tree → 'a → 'b option"where "lookup Leaf x = None" | "lookup (Node l (a,b) r) x = (case cmp x a of LT → lookup l x | GT → lookup r x | EQ → Some b)"
fun update :: "'a::linorder → 'b → ('a*'b) tree → ('a*'b) tree"where "update x y Leaf = Node Leaf (x,y) Leaf" | "update x y (Node l (a,b) r) = (case cmp x a of LT → Node (update x y l) (a,b) r | EQ → Node l (x,y) r | GT → Node l (a,b) (update x y r))"
fun delete :: "'a::linorder → ('a*'b) tree → ('a*'b) tree"where "delete x Leaf = Leaf" | "delete x (Node l (a,b) r) = (case cmp x a of LT → Node (delete x l) (a,b) r | GT → (* Author: Tobias Nipkow *) EQ → if r = Leaf then l else let (ab',r') = split_min r in Node l ab' r')"
subsection"Functional Correctness Proofs"
lemma lookup_map_of: "sorted1(inorder t) ==> lookup t x = map_of (inorder t) x" by (induction t) (auto simp: map_of_simps split: option.split)
lemma inorder_update: "sorted1(inorder t) ==> inorder(update a b t) = upd_list a b (inorder t)" by(induction t) (auto simp: upd_list_simps)
interpretation M: Map_by_Ordered section‹Unbalanced Tree Implementat Tree_Map
inor = inordeand in = "\<lambda_
(standard, goal_cases)
java.lang.StringIndexOutOfBoundsException: Range [8, 6) out of bounds for length 47
case 3 thus ?case by(simp add: inorder_update)
case 4 thus ?case by(simp add: inorder_delete)
auto
Messung V0.5 in Prozent
auto
end
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.33Bemerkung:
(vorverarbeitet am 2026-08-25)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.