lemma set_of_idx_code[code]: fixes t :: "('a :: ccompare, 'b set) mapping_rbt" shows"set_of_idx (RBT_Mapping t) = (case ID CCOMPARE('a) of None → Code.abort (STR ''set_of_idx RBT_Mapping: ccompare = None'') (λ_. set_of_idx (RBT_Mapping t)) | Some _ →∪(snd ` set (RBT_Mapping2.entries t)))" unfolding RBT_Mapping_def by transfer (auto simp: ran_def rbt_comp_lookup[OF ID_ccompare'] ord.is_rbt_def linorder.rbt_lookup_in_tree[OF comparator.linorder[OF ID_ccompare']] split: option.splits)+
lemma mapping_combine[code]: fixes t :: "('a :: ccompare, 'b) mapping_rbt" shows"Mapping.combine f (RBT_Mapping t) (RBT_Mapping u) = (case ID CCOMPARE('a) of None → Code.abort (STR ''combine RBT_Mapping: ccompare = None'') (λ_. Mapping.combine f (RBT_Mapping t) (RBT_Mapping u)) | Some _ → RBT_Mapping (RBT_Mapping2.join (λ_. f) t u))" by (auto simp add: Mapping.combine.abs_eq Mapping_inject lookup_join split: option.split)
lift_definition mapping_join :: "('b → 'b → 'b) → ('a, 'b) mapping → ('a, 'b) mapping →('a, 'b) mapping"is "λf m m' x. case m x of None → None | Some y → (case m' x of None → None | Some y' →Some (f y y'))" .
lemma mapping_join_code[code]: fixes t :: "('a :: ccompare, 'b) mapping_rbt" shows"mapping_join f (RBT_Mapping t) (RBT_Mapping u) = (case ID CCOMPARE('a) of None → Code.abort (STR ''mapping_join RBT_Mapping: ccompare = None'') (λ_. mapping_join f (RBT_Mapping t) (RBT_Mapping u)) | Some _ → RBT_Mapping (RBT_Mapping2.meet (λ_. f) t u))" by (auto simp add: mapping_join.abs_eq Mapping_inject lookup_meet split: option.split)
contextassumes ID_ccompare_neq_None: "ID CCOMPARE('a :: ccompare) ≠ None" begin
lemma lookup_diff: "RBT_Mapping2.lookup (diff (t1 :: ('a, 'b) mapping_rbt) t2) = (λk. case RBT_Mapping2.lookup t1 k of None → None | Some v1 → (case RBT_Mapping2.lookup t2 k of None → Some v1 | Some v2 → None))" by transfer (auto simp add: fun_eq_iff linorder.rbt_lookup_rbt_minus[OF mapping_linorder] ID_ccompare_neq_None restrict_map_def split: option.splits)
end
lift_definition mapping_antijoin :: "('a, 'b) mapping → ('a, 'b) mapping → ('a, 'b) mapping"is "λm m' x. case m x of None → None | Some y → (case m' x of None → Some y | Some y' →None)" .
lemma mapping_antijoin_code[code]: fixes t :: "('a :: ccompare, 'b) mapping_rbt" shows"mapping_antijoin (RBT_Mapping t) (RBT_Mapping u) = (case ID CCOMPARE('a) of None → Code.abort (STR ''mapping_antijoin RBT_Mapping: ccompare = None'') (λ_. mapping_antijoin (RBT_Mapping t) (RBT_Mapping u)) | Some _ → RBT_Mapping (diff t u))" by (auto simp add: mapping_antijoin.abs_eq Mapping_inject lookup_diff split: option.split)
end
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.1 Sekunden
(vorverarbeitet am 2026-07-02)
¤
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.