Nominal/Ex/Classical.thy
changeset 2891 304dfe6cc83a
parent 2889 0435c4dfd6f6
child 2892 a9f3600c9ae6
--- a/Nominal/Ex/Classical.thy	Thu Jun 23 13:09:17 2011 +0100
+++ b/Nominal/Ex/Classical.thy	Thu Jun 23 22:21:43 2011 +0100
@@ -9,7 +9,7 @@
 
 nominal_datatype trm =
   Ax "name" "coname"
-| Cut n::"coname" t1::"trm" c::"coname" t2::"trm"             bind n in t1, bind c in t2  
+| Cut c::"coname" t1::"trm" n::"name" t2::"trm"             bind n in t1, bind c in t2  
      ("Cut <_>._ '(_')._" [100,100,100,100] 100)
 | NotR n::"name" t::"trm" "coname"                            bind n in t
      ("NotR '(_')._ _" [100,100,100] 100)
@@ -46,7 +46,7 @@
 thm trm.supp
 thm trm.supp[simplified]
 
-nominal_primrec 
+nominal_primrec (* (invariant "\<lambda>(_, e, d) y. atom e \<sharp> y \<and> atom d \<sharp> y") *)
   crename :: "trm \<Rightarrow> coname \<Rightarrow> coname \<Rightarrow> trm"  ("_[_\<turnstile>c>_]" [100,100,100] 100) 
 where
   "(Ax x a)[d\<turnstile>c>e] = (if a=d then Ax x e else Ax x a)" 
@@ -68,6 +68,8 @@
   apply(simp only: eqvt_def)
   apply(simp only: crename_graph_def)
   apply (rule, perm_simp, rule)
+  (*apply(erule crename_graph.induct)
+  apply(simp add: trm.fresh)*)
   apply(rule TrueI)
   -- "covered all cases"
   apply(case_tac x)
@@ -96,8 +98,21 @@
   apply(metis)  
   apply(simp add: fresh_star_def)
   apply(metis)
-  -- "clashes"
+  -- "compatibility"
   apply(simp_all)
+  apply(rule conjI)
+  apply(erule conjE)+
+  apply(erule Abs_lst1_fcb)
+  apply(simp add: Abs_fresh_iff)
+  apply(simp add: Abs_fresh_iff)
+  apply(erule fresh_eqvt_at)
+  apply(simp add: finite_supp)
+  apply(simp add: fresh_Pair fresh_at_base(1))
+  apply(drule sym)
+  apply(drule sym)
+  apply(drule sym)
+  apply(drule sym)
+  apply(simp add: eqvt_at_def swap_fresh_fresh)
   oops
 
 end