diff -r 2bf351f09317 -r 467123396e5a Nominal/Ex/SingleLet.thy --- a/Nominal/Ex/SingleLet.thy Fri Jul 16 05:09:45 2010 +0100 +++ b/Nominal/Ex/SingleLet.thy Sat Jul 17 10:25:29 2010 +0100 @@ -114,7 +114,7 @@ instance trm :: pt sorry instance assg :: pt sorry -lemma +lemma b1: "p \ Var name = Var (p \ name)" "p \ App trm1 trm2 = App (p \ trm1) (p \ trm2)" "p \ Lam name trm = Lam (p \ name) (p \ trm)" @@ -133,43 +133,39 @@ *} *) +thm eq_iff[no_vars] + +ML {* + val q1 = lift_thm [@{typ trm}, @{typ assg}] @{context} @{thm "eq_iff"(1)} +*} + local_setup {* Local_Theory.note ((@{binding d1}, []), thms_d) #> snd *} local_setup {* Local_Theory.note ((@{binding i1}, []), thms_i) #> snd *} local_setup {* Local_Theory.note ((@{binding f1}, []), thms_f) #> snd *} +local_setup {* Local_Theory.note ((@{binding q1}, []), [q1]) #> snd *} + thm perm_defs thm perm_simps -instance trm :: pt sorry -instance assg :: pt sorry - lemma supp_fv: "supp t = fv_trm t" "supp b = fv_bn b" apply(induct t and b rule: i1) apply(simp_all add: f1) apply(simp_all add: supp_def) -apply(simp add: supp_def permute_trm1 alpha1_INJ fv_trm1) -apply(simp only: supp_at_base[simplified supp_def]) -apply(simp add: supp_def permute_trm1 alpha1_INJ fv_trm1) -apply(simp add: Collect_imp_eq Collect_neg_eq Un_commute) -apply(subgoal_tac "supp (Lm1 name rtrm1) = supp (Abs {atom name} rtrm1)") -apply(simp add: supp_Abs fv_trm1) -apply(simp (no_asm) add: supp_def permute_set_eq atom_eqvt permute_trm1) -apply(simp add: alpha1_INJ) -apply(simp add: Abs_eq_iff) -apply(simp add: alpha_gen.simps) -apply(simp add: supp_eqvt[symmetric] fv_trm1_eqvt[symmetric]) -apply(simp add: supp_fv_let fv_trm1 fv_eq_bv supp_Pair) -apply blast -apply(simp add: supp_def permute_trm1 alpha1_INJ fv_trm1) -apply(simp add: supp_def permute_trm1 alpha1_INJ fv_trm1) -apply(simp only: supp_at_base[simplified supp_def]) -apply(simp (no_asm) only: supp_def permute_set_eq atom_eqvt permute_trm1 alpha1_INJ[simplified alpha_bp_eq]) -apply(simp add: Collect_imp_eq Collect_neg_eq[symmetric]) -apply(fold supp_def) -apply simp -done +apply(simp_all add: b1) +sorry + +consts perm_bn_trm :: "perm \ trm \ trm" +consts perm_bn_assg :: "perm \ assg \ assg" + +lemma y: + "perm_bn_trm p (Var x) = (Var x)" + "perm_bn_trm p (App t1 t2) = (App t1 t2)" + "perm_bn_trm p (" + + ML {* map (lift_thm [@{typ trm}, @{typ assg}] @{context}) @{thms eq_iff}