# HG changeset patch # User Christian Urban # Date 1274124220 -3600 # Node ID ad608532c7cd2b48fbbfb32051c8244e66c5edd7 # Parent 6297629f024cfd0ca15d362e259c2177dc1ac09c# Parent 270207489062bca8e50d6a75e0f0c35a5f19d317 merged diff -r 6297629f024c -r ad608532c7cd Nominal/Ex/Term8.thy --- a/Nominal/Ex/Term8.thy Mon May 17 18:13:39 2010 +0100 +++ b/Nominal/Ex/Term8.thy Mon May 17 20:23:40 2010 +0100 @@ -6,9 +6,7 @@ atom_decl name -(* this should work but gives an error at the moment: - in alpha_bn_rsp proof. -*) +ML {* val _ = cheat_alpha_bn_rsp := true *} nominal_datatype foo = Foo0 "name" @@ -22,6 +20,7 @@ "bv (Bar0 x) = {}" | "bv (Bar1 v x b) = {atom v}" +thm foo_bar.supp end diff -r 6297629f024c -r ad608532c7cd Nominal/Rsp.thy --- a/Nominal/Rsp.thy Mon May 17 18:13:39 2010 +0100 +++ b/Nominal/Rsp.thy Mon May 17 20:23:40 2010 +0100 @@ -145,10 +145,10 @@ fun alpha_bn_rsp_tac simps res exhausts a ctxt = rtac allI THEN_ALL_NEW case_rules_tac ctxt a exhausts THEN_ALL_NEW - asm_full_simp_tac (HOL_ss addsimps simps) THEN_ALL_NEW + asm_full_simp_tac (HOL_ss addsimps simps addsimps @{thms alphas}) THEN_ALL_NEW TRY o REPEAT_ALL_NEW (rtac @{thm arg_cong2[of _ _ _ _ "op \"]}) THEN_ALL_NEW TRY o eresolve_tac res THEN_ALL_NEW - asm_full_simp_tac (HOL_ss addsimps simps); + asm_full_simp_tac (HOL_ss addsimps simps) *} @@ -186,10 +186,15 @@ end *} +lemma exi_same: "\(pi :: perm). P pi \ (\(p :: perm). P p \ Q p) \ \pi. Q pi" + by auto + ML {* fun prove_alpha_alphabn alphas ind simps alpha_bns ctxt = prove_by_rel_induct alphas build_alpha_alpha_bn_gl ind - (fn _ => asm_full_simp_tac (HOL_ss addsimps simps)) alpha_bns ctxt + (fn _ => asm_full_simp_tac (HOL_ss addsimps simps addsimps @{thms alphas}) + THEN_ALL_NEW split_conj_tac THEN_ALL_NEW (TRY o etac @{thm exi_same}) + THEN_ALL_NEW asm_full_simp_tac HOL_ss) alpha_bns ctxt *} ML {*