fixed bug where perm_simp 'forgets' how to prove equivariance for the empty set
authorChristian Urban <urbanc@in.tum.de>
Thu, 27 May 2010 18:30:26 +0200
changeset 2200 31f1ec832d39
parent 2195 0c1dcdefb515
child 2201 4d8d9b8af76f
fixed bug where perm_simp 'forgets' how to prove equivariance for the empty set
Nominal-General/Nominal2_Eqvt.thy
Nominal-General/nominal_thmdecls.ML
Nominal/Ex/SingleLet.thy
Nominal/NewAlpha.thy
--- a/Nominal-General/Nominal2_Eqvt.thy	Thu May 27 11:21:37 2010 +0200
+++ b/Nominal-General/Nominal2_Eqvt.thy	Thu May 27 18:30:26 2010 +0200
@@ -383,7 +383,7 @@
 
 declare [[trace_eqvt = false]]
 
-text {* Problem: there is no raw eqvt-rule for The *}
+text {* there is no raw eqvt-rule for The *}
 lemma "p \<bullet> (THE x. P x) = foo"
 apply(perm_strict_simp exclude: The)
 apply(perm_simp exclude: The)
--- a/Nominal-General/nominal_thmdecls.ML	Thu May 27 11:21:37 2010 +0200
+++ b/Nominal-General/nominal_thmdecls.ML	Thu May 27 18:30:26 2010 +0200
@@ -47,13 +47,13 @@
   val merge = Item_Net.merge);
 
 structure EqvtRawData = Generic_Data
-( type T = thm Symtab.table;
-  val empty = Symtab.empty;
+( type T = thm Termtab.table;
+  val empty = Termtab.empty;
   val extend = I;
-  val merge = Symtab.merge (K true));
+  val merge = Termtab.merge (K true));
 
 val eqvts = Item_Net.content o EqvtData.get;
-val eqvts_raw = map snd o Symtab.dest o EqvtRawData.get;
+val eqvts_raw = map snd o Termtab.dest o EqvtRawData.get;
 
 val get_eqvts_thms = eqvts o  Context.Proof;
 val get_eqvts_raw_thms = eqvts_raw o Context.Proof;
@@ -63,17 +63,17 @@
 
 fun add_raw_thm thm = 
   case prop_of thm of
-    Const ("==", _) $ _ $ Const (c, _) => EqvtRawData.map (Symtab.update (c, thm))
+    Const ("==", _) $ _ $ (c as Const _) => EqvtRawData.map (Termtab.update (c, thm)) 
   | _ => raise THM ("Theorem must be a meta-equality where the right-hand side is a constant.", 0, [thm]) 
 
 fun del_raw_thm thm = 
   case prop_of thm of
-    Const ("==", _) $ _ $ Const (c, _) => EqvtRawData.map (Symtab.delete c)
+    Const ("==", _) $ _ $ (c as Const _) => EqvtRawData.map (Termtab.delete c)
   | _ => raise THM ("Theorem must be a meta-equality where the right-hand side is a constant.", 0, [thm]) 
 
 fun is_eqvt ctxt trm =
   case trm of 
-    Const (c, _) => Symtab.defined (EqvtRawData.get (Context.Proof ctxt)) c
+    (c as Const _) => Termtab.defined (EqvtRawData.get (Context.Proof ctxt)) c
   | _ => raise TERM ("Term must be a constsnt.", [trm])
 
 
--- a/Nominal/Ex/SingleLet.thy	Thu May 27 11:21:37 2010 +0200
+++ b/Nominal/Ex/SingleLet.thy	Thu May 27 18:30:26 2010 +0200
@@ -29,8 +29,6 @@
 thm trm_assg.fv[simplified trm_assg.supp(1-2)]
 
 
-
-
 end
 
 
--- a/Nominal/NewAlpha.thy	Thu May 27 11:21:37 2010 +0200
+++ b/Nominal/NewAlpha.thy	Thu May 27 18:30:26 2010 +0200
@@ -206,7 +206,7 @@
 
   val (alphas, lthy') = Inductive.add_inductive_i
      {quiet_mode = true, verbose = false, alt_name = Binding.empty,
-      coind = false, no_elim = false, no_ind = false, skip_mono = true, fork_mono = false}
+      coind = false, no_elim = false, no_ind = false, skip_mono = false, fork_mono = false}
      all_alpha_names [] all_alpha_eqs [] lthy
 
   val alpha_ts_loc = #preds alphas;