proper thm ord that conforms to Thm.eq_thm_prop (amending f5fd9b41188a): relevant for declarations in a locale contex with assumptions, e.g. "locale test = assumes True begin declare refl [rule del] end";
authorwenzelm
Sat, 12 Jul 2025 16:01:38 +0200
changeset 82855 df2d774bcf21
parent 82854 86915cddda08
child 82856 1e39653de974
proper thm ord that conforms to Thm.eq_thm_prop (amending f5fd9b41188a): relevant for declarations in a locale contex with assumptions, e.g. "locale test = assumes True begin declare refl [rule del] end";
src/Pure/bires.ML
src/Pure/cterm_items.ML
--- a/src/Pure/bires.ML	Sat Jul 12 13:05:04 2025 +0200
+++ b/src/Pure/bires.ML	Sat Jul 12 16:01:38 2025 +0200
@@ -161,28 +161,28 @@
   {kind = kind, tag = next_tag next tag, info = info};
 
 
-abstype 'a decls = Decls of {next: int, rules: 'a decl list Thmtab.table}
+abstype 'a decls = Decls of {next: int, rules: 'a decl list Proptab.table}
 with
 
 local
 
 fun dup_decls (Decls {rules, ...}) (thm, decl) =
-  member decl_eq_kind (Thmtab.lookup_list rules thm) decl;
+  member decl_eq_kind (Proptab.lookup_list rules thm) decl;
 
 fun add_decls (thm, decl) (Decls {next, rules}) =
   let
     val decl' = next_decl next decl;
-    val decls' = Decls {next = next - 1, rules = Thmtab.cons_list (thm, decl') rules};
+    val decls' = Decls {next = next - 1, rules = Proptab.cons_list (thm, decl') rules};
   in (decl', decls') end;
 
 in
 
-fun has_decls (Decls {rules, ...}) = Thmtab.defined rules;
+fun has_decls (Decls {rules, ...}) = Proptab.defined rules;
 
-fun get_decls (Decls {rules, ...}) = Thmtab.lookup_list rules;
+fun get_decls (Decls {rules, ...}) = Proptab.lookup_list rules;
 
 fun dest_decls (Decls {rules, ...}) pred =
-  build (rules |> Thmtab.fold (fn (th, ds) => ds |> fold (fn d => pred (th, d) ? cons (th, d))))
+  build (rules |> Proptab.fold (fn (th, ds) => ds |> fold (fn d => pred (th, d) ? cons (th, d))))
   |> sort (decl_ord o apply2 #2);
 
 fun pretty_decls ctxt kinds decls =
@@ -201,9 +201,9 @@
 fun remove_decls thm (decls as Decls {next, rules}) =
   (case get_decls decls thm of
     [] => ([], decls)
-  | old_decls => (old_decls, Decls {next = next, rules = Thmtab.delete thm rules}));
+  | old_decls => (old_decls, Decls {next = next, rules = Proptab.delete thm rules}));
 
-val empty_decls = Decls {next = ~1, rules = Thmtab.empty};
+val empty_decls = Decls {next = ~1, rules = Proptab.empty};
 
 end;
 
--- a/src/Pure/cterm_items.ML	Sat Jul 12 13:05:04 2025 +0200
+++ b/src/Pure/cterm_items.ML	Sat Jul 12 16:01:38 2025 +0200
@@ -43,6 +43,12 @@
 end;
 
 
+structure Proptab = Table
+(
+  type key = thm
+  val ord = pointer_eq_ord (Term_Ord.fast_term_ord o apply2 Thm.full_prop_of)
+);
+
 structure Thmtab:
 sig
   include TABLE