# HG changeset patch # User Christian Urban # Date 1282000305 -28800 # Node ID 428d9cb9a24300cb6c95c6109c668e6779345e87 # Parent 29ebbe56f450468fb449bdbce0af4cb8cd2dc33b can also lift the various eqvt lemmas for bn, fv, fv_bn and size diff -r 29ebbe56f450 -r 428d9cb9a243 Nominal/Ex/CoreHaskell.thy --- a/Nominal/Ex/CoreHaskell.thy Tue Aug 17 06:50:49 2010 +0800 +++ b/Nominal/Ex/CoreHaskell.thy Tue Aug 17 07:11:45 2010 +0800 @@ -139,6 +139,20 @@ val thms_f = map (lift_thm qtys @{context}) @{thms bn_defs} *} +ML {* + val thms_f = map (lift_thm qtys @{context}) @{thms bn_eqvt} +*} + +ML {* + val thms_f = map (lift_thm qtys @{context}) @{thms fv_eqvt} +*} + +ML {* + val thms_f = map (lift_thm qtys @{context}) @{thms size_eqvt} +*} + + + lemmas fv_supp=tkind_ckind_ty_ty_lst_co_co_lst_trm_assoc_lst_pat_vars_tvars_cvars.supp(1-9,11,13,15) lemmas supp=tkind_ckind_ty_ty_lst_co_co_lst_trm_assoc_lst_pat_vars_tvars_cvars.fv[simplified fv_supp] diff -r 29ebbe56f450 -r 428d9cb9a243 Nominal/Ex/SingleLet.thy --- a/Nominal/Ex/SingleLet.thy Tue Aug 17 06:50:49 2010 +0800 +++ b/Nominal/Ex/SingleLet.thy Tue Aug 17 07:11:45 2010 +0800 @@ -31,8 +31,13 @@ thm trm_raw_assg_raw.size(9 - 16) thm eq_iff thm eq_iff_simps +thm bn_defs +thm fv_eqvt +thm bn_eqvt +thm size_eqvt -(* bn / eqvt lemmas for fv / fv_bn / bn *) + +(* eqvt lemmas for fv / fv_bn / bn *) ML {* val thms_d = map (lift_thm [@{typ trm}, @{typ assg}] @{context}) @{thms distinct} @@ -74,8 +79,20 @@ val thms_f = map (lift_thm [@{typ trm}, @{typ assg}] @{context}) @{thms bn_defs} *} -thm perm_defs -thm perm_simps +ML {* + val thms_f = map (lift_thm [@{typ trm}, @{typ assg}] @{context}) @{thms bn_eqvt} +*} + +ML {* + val thms_f = map (lift_thm [@{typ trm}, @{typ assg}] @{context}) @{thms fv_eqvt} +*} + +ML {* + val thms_f = map (lift_thm [@{typ trm}, @{typ assg}] @{context}) @{thms size_eqvt} +*} + + + lemma supp_fv: "supp t = fv_trm t" diff -r 29ebbe56f450 -r 428d9cb9a243 Nominal/NewParser.thy --- a/Nominal/NewParser.thy Tue Aug 17 06:50:49 2010 +0800 +++ b/Nominal/NewParser.thy Tue Aug 17 07:11:45 2010 +0800 @@ -375,15 +375,15 @@ (* proving equivariance lemmas for bns, fvs, size and alpha *) val _ = warning "Proving equivariance"; - val bn_eqvt = + val raw_bn_eqvt = if get_STEPS lthy > 6 then raw_prove_eqvt raw_bns raw_bn_induct (raw_bn_defs @ raw_perm_simps) lthy4 else raise TEST lthy4 - (* noting the bn_eqvt lemmas in a temprorary theory *) - val lthy_tmp = snd (Local_Theory.note ((Binding.empty, [eqvt_attrib]), bn_eqvt) lthy4) + (* noting the raw_bn_eqvt lemmas in a temprorary theory *) + val lthy_tmp = snd (Local_Theory.note ((Binding.empty, [eqvt_attrib]), raw_bn_eqvt) lthy4) - val fv_eqvt = + val raw_fv_eqvt = if get_STEPS lthy > 7 then raw_prove_eqvt (raw_fvs @ raw_fv_bns) raw_fv_bns_induct (raw_fv_defs @ raw_perm_simps) (Local_Theory.restore lthy_tmp) @@ -397,7 +397,7 @@ |> map (fn thm => thm RS @{thm sym}) else raise TEST lthy4 - val lthy5 = snd (Local_Theory.note ((Binding.empty, [eqvt_attrib]), fv_eqvt) lthy_tmp) + val lthy5 = snd (Local_Theory.note ((Binding.empty, [eqvt_attrib]), raw_fv_eqvt) lthy_tmp) val (alpha_eqvt, lthy6) = if get_STEPS lthy > 9 @@ -539,6 +539,9 @@ ||>> Local_Theory.note ((@{binding "perm_laws"}, []), raw_perm_laws) ||>> Local_Theory.note ((@{binding "alpha_bn_imps"}, []), alpha_bn_imp_thms) ||>> Local_Theory.note ((@{binding "alpha_equivp"}, []), alpha_equivp_thms) + ||>> Local_Theory.note ((@{binding "fv_eqvt"}, []), raw_fv_eqvt) + ||>> Local_Theory.note ((@{binding "bn_eqvt"}, []), raw_bn_eqvt) + ||>> Local_Theory.note ((@{binding "size_eqvt"}, []), raw_size_eqvt) val _ = if get_STEPS lthy > 20 @@ -636,7 +639,7 @@ val (_, lthy18) = Local_Theory.note ((suffix_bind "eq_iff", []), q_eq_iff) lthy17; val q_dis = map (lift_thm qtys lthy18) alpha_distincts; val lthy19 = note_simp_suffix "distinct" q_dis lthy18; - val q_eqvt = map (lift_thm qtys lthy19) (bn_eqvt @ fv_eqvt); + val q_eqvt = map (lift_thm qtys lthy19) (raw_bn_eqvt @ raw_fv_eqvt); val (_, lthy20) = Local_Theory.note ((Binding.empty, [Attrib.internal (fn _ => Nominal_ThmDecls.eqvt_add)]), q_eqvt) lthy19; val _ = warning "Supports";