
diff -r a746d49b0240 -r 331873ebc5cd Nominal/Ex/Lambda.thy
--- a/Nominal/Ex/Lambda.thy	Sun Aug 22 14:02:49 2010 +0800
+++ b/Nominal/Ex/Lambda.thy	Wed Aug 25 09:02:06 2010 +0800
@@ -3,14 +3,104 @@
 begin
 
 atom_decl name
-declare [[STEPS = 2]]
+declare [[STEPS = 20]]
 
-nominal_datatype 'a lam =
+class s1
+class s2
+
+nominal_datatype lambda: 
+ ('a, 'b) lam =
   Var "name"
-| App "'a lam" "'a lam"
-| Lam x::"name" l::"'a lam"  bind x in l
+| App "('a::s1, 'b::s2) lam" "('a, 'b) lam"
+| Lam x::"name" l::"('a, 'b) lam"  bind x in l
+
+term Var_raw
+term Var
+term App_raw
+term App
+thm Var_def App_def Lam_def
+term abs_lam
+
+thm distinct
+thm lam_raw.inducts
+thm lam_raw.exhaust
+thm fv_defs
+thm bn_defs
+thm perm_simps
+thm perm_laws
+thm lam_raw.size
+thm eq_iff
+thm eq_iff_simps
+thm fv_eqvt
+thm bn_eqvt
+thm size_eqvt
+
+ML {*
+  val qtys = [@{typ "('a::{s1, fs}, 'b::{s2,fs}) lam"}]
+*}
+
+ML {*
+  val thm_a = timeit (fn () => map (lift_thm @{context} qtys []) @{thms distinct})
+*}
+
+ML {* 
+  val thms_i = map (lift_thm @{context} qtys []) @{thms lam_raw.induct}
+*}
+
+ML {* 
+  val thms_i = map (lift_thm @{context} qtys []) @{thms lam_raw.exhaust}
+*}
+
+ML {*
+  val thms_f = map (lift_thm @{context} qtys []) @{thms fv_defs}
+*}
 
-ML {* Datatype.read_typ *}
+ML {*
+  val thms_p = map (lift_thm @{context} qtys []) @{thms perm_simps}
+*}
+
+ML {*
+  val thms_f = map (lift_thm @{context} qtys []) @{thms perm_laws}
+*}
+
+ML {*
+  val simps = @{thms alphas permute_prod.simps prod_fv.simps prod_alpha_def prod_rel.simps
+    prod.cases}
+*}
+
+(*  HERE *)
+
+ML {*
+ val thms_e = map (lift_thm @{context} qtys simps)  @{thms eq_iff}
+*}
+
+ML {*
+ val thms_e = map (lift_thm @{context} qtys simps) @{thms eq_iff_simps}
+*}
+
+
+ML {*
+  val thms_f = map (lift_thm @{context} qtys []) @{thms bn_defs}
+*}
+
+ML {*
+  val thms_f = map (lift_thm @{context} qtys []) @{thms bn_eqvt}
+*}
+
+ML {*
+  val thms_f = map (lift_thm @{context} qtys []) @{thms fv_eqvt}
+*}
+
+ML {*
+  val thms_f = map (lift_thm @{context} qtys []) @{thms size_eqvt}
+*}
+
+
+
+ML {*
+  space_explode "_raw" "bla_raw2_foo_raw3.0"
+*}
+
 
 
 thm eq_iff




