LamEx.thy
changeset 286 a031bcaf6719
parent 285 8ebdef196fd5
child 292 bd76f0398aa9
--- a/LamEx.thy	Thu Nov 05 09:38:34 2009 +0100
+++ b/LamEx.thy	Thu Nov 05 09:55:21 2009 +0100
@@ -33,16 +33,26 @@
 print_theorems
 
 lemma alpha_refl:
-  shows "x \<approx> x"
-  apply (rule rlam.induct)
-  apply (simp_all add:a1 a2)
-  apply (rule a3)
-  apply (simp_all)
-  (* apply (simp add: pt_swap_bij'') *)
+  fixes t::"rlam"
+  shows "t \<approx> t"
+  apply(induct t rule: rlam.induct)
+  apply(simp add: a1)
+  apply(simp add: a2)
+  apply(rule a3)
+  apply(subst pt_swap_bij'')
+  apply(rule pt_name_inst)
+  apply(rule at_name_inst)
+  apply(simp)
+  apply(simp)
+  done
+
+lemma alpha_EQUIV:
+  shows "EQUIV alpha"
 sorry
 
 quotient lam = rlam / alpha
-sorry
+  apply(rule alpha_EQUIV)
+  done
 
 print_quotients
 
@@ -126,12 +136,14 @@
   shows "Lam a t = Lam b s"
 sorry
 
-lemma perm_rsp: "(op = ===> alpha ===> alpha) op \<bullet> op \<bullet>"
+lemma perm_rsp: 
+  "(op = ===> alpha ===> alpha) op \<bullet> op \<bullet>"
   apply(auto)
   (* this is propably true if some type conditions are imposed ;o) *)
   sorry
 
-lemma fresh_rsp: "(op = ===> alpha ===> op =) fresh fresh" 
+lemma fresh_rsp: 
+  "(op = ===> alpha ===> op =) fresh fresh" 
   apply(auto)
   (* this is probably only true if some type conditions are imposed *)
   sorry
@@ -190,6 +202,10 @@
 ML {* val a2 = lift_thm_lam @{context} @{thm a2} *}
 ML {* val a3 = lift_thm_lam @{context} @{thm a3} *}
 
+thm a2
+ML {* val t_a = atomize_thm @{thm a2} *}
+ML {* val t_r = regularize t_a @{typ rlam} @{term alpha} @{thm alpha_EQUIV} @{thm alpha_refl} @{context} *}
+
 ML {* val alpha_cases = lift_thm_lam @{context} @{thm alpha.cases} *}
 ML {* val alpha_induct = lift_thm_lam @{context} @{thm alpha.induct} *}