
diff -r 7645e18e8b19 -r 80db544a37ea Nominal/Ex/SingleLet.thy
--- a/Nominal/Ex/SingleLet.thy	Mon Aug 16 17:39:16 2010 +0800
+++ b/Nominal/Ex/SingleLet.thy	Mon Aug 16 17:59:09 2010 +0800
@@ -58,47 +58,46 @@
   val thms_f = map (lift_thm [@{typ trm}, @{typ assg}] @{context}) @{thms perm_laws}
 *}
 
-ML {*
-  Local_Theory.exit_global;
-  Class.instantiation;
-  Class.prove_instantiation_exit_result;
-  Named_Target.theory_init;
-  op |->
-*}
-  
-done
-|> ...
-  |-> (fn x => Class.prove_instantiation_exit_result phi tac x)
-  |-> (fn y => ...)
-
-
 
 section {* NOT *} 
 
+lemma [quot_respect]:
+  "(alpha_assg_raw ===> alpha_assg_raw ===> op =) alpha_bn_raw alpha_bn_raw"
+  "(op = ===> (alpha_trm_raw ===> op =) ===> prod_rel op = alpha_trm_raw ===> op =) prod_fv prod_fv"
+  "((prod_rel op = alpha_trm_raw ===> prod_rel op = alpha_trm_raw ===> op =) ===>
+         (alpha_trm_raw ===> alpha_trm_raw ===> op =) ===>
+            prod_rel (prod_rel op = alpha_trm_raw) alpha_trm_raw ===>
+            prod_rel (prod_rel op = alpha_trm_raw) alpha_trm_raw ===> op =)
+            prod_alpha prod_alpha" 
+  "(op = ===>
+         (alpha_trm_raw ===> alpha_trm_raw ===> op =) ===>
+            prod_rel op = alpha_trm_raw ===> prod_rel op = alpha_trm_raw ===> op =)
+            prod_alpha prod_alpha"
+  "((prod_rel (prod_rel op = alpha_trm_raw) alpha_trm_raw ===>
+             prod_rel (prod_rel op = alpha_trm_raw) alpha_trm_raw ===> op =) ===>
+            (alpha_trm_raw ===> alpha_trm_raw ===> op =) ===>
+            prod_rel (prod_rel (prod_rel op = alpha_trm_raw) alpha_trm_raw) alpha_trm_raw ===>
+            prod_rel (prod_rel (prod_rel op = alpha_trm_raw) alpha_trm_raw) alpha_trm_raw ===>
+            op =)
+            prod_alpha prod_alpha"
+sorry
+
+thm eq_iff(5)
+thm eq_iff(5)[unfolded alphas permute_prod.simps]
+ML {*
+  val thms_e = map (lift_thm [@{typ trm}, @{typ assg}] @{context}) 
+   @{thms eq_iff(5)[unfolded alphas permute_prod.simps]}
+*}
 
 ML {*
   val thms_e = map (lift_thm [@{typ trm}, @{typ assg}] @{context}) @{thms eq_iff[unfolded alphas prod_fv.simps prod_rel.simps prod_alpha_def]}
 *}
 
 ML {*
-  val thms_e = map (lift_thm [@{typ trm}, @{typ assg}] @{context}) @{thms eq_iff[unfolding alphas]}
+  val thms_e = map (lift_thm [@{typ trm}, @{typ assg}] @{context}) @{thms eq_iff[unfolded alphas]}
 *}
 
 
-(*
-instance trm :: size ..
-instance assg :: size ..
-
-lemma "(size (Var x)) = 0"
-apply(descending)
-apply(rule trm_raw_assg_raw.size(9 - 16))
-apply(simp)
-*)
-
-ML {*
-  val thms_e = map (lift_thm [@{typ trm}, @{typ assg}] @{context}) @{thms eq_iff[unfolding alphas]}
-*}
-
 
 thm perm_defs
 thm perm_simps




