# HG changeset patch # User wenzelm # Date 1629105742 -7200 # Node ID de12016ffefb89d30e566b933058893b46e70ed3 # Parent 9e73600ec75d5effbdf63eb205ee0350bcafa879 more scalable data structures; diff -r 9e73600ec75d -r de12016ffefb src/Pure/Isar/class.ML --- a/src/Pure/Isar/class.ML Mon Aug 16 11:21:54 2021 +0200 +++ b/src/Pure/Isar/class.ML Mon Aug 16 11:22:22 2021 +0200 @@ -76,7 +76,7 @@ axiom: thm option, (* dynamic part *) - defs: thm list, + defs: thm Item_Net.T, operations: (string * (class * ((typ * term) * bool))) list (* n.b. @@ -102,7 +102,7 @@ Class_Data {consts = _, base_sort = _, base_morph = _, export_morph = _, assm_intro = _, of_class = _, axiom = _, defs = defs2, operations = operations2}) = make_class_data ((consts, base_sort, base_morph, export_morph, assm_intro, of_class, axiom), - (Thm.merge_thms (defs1, defs2), + (Item_Net.merge (defs1, defs2), AList.merge (op =) (K true) (operations1, operations2))); structure Class_Data = Theory_Data @@ -153,7 +153,7 @@ Graph.fold (fn (_, (Class_Data {assm_intro, ...}, _)) => fold (insert Thm.eq_thm) (the_list assm_intro)) (Class_Data.get thy) []; -fun these_defs thy = maps (#defs o the_class_data thy) o ancestry thy; +fun these_defs thy = maps (Item_Net.content o #defs o the_class_data thy) o ancestry thy; fun these_operations thy = maps (#operations o the_class_data thy) o ancestry thy; val base_morphism = #base_morph oo the_class_data; @@ -226,7 +226,8 @@ val add_class = Graph.new_node (class, make_class_data (((map o apply2) fst params, base_sort, base_morph, export_morph, Option.map Thm.trim_context some_assm_intro, - Thm.trim_context of_class, Option.map Thm.trim_context some_axiom), ([], operations))) + Thm.trim_context of_class, Option.map Thm.trim_context some_axiom), + (Thm.full_rules, operations))) #> fold (curry Graph.add_edge class) sups; in Class_Data.map add_class thy end; @@ -261,7 +262,7 @@ in thy |> (Class_Data.map o Graph.map_node class o map_class_data o apsnd o apfst) - (cons sym_thm) + (Item_Net.update sym_thm) |> activate_defs class [sym_thm] end;