equal
deleted
inserted
replaced
149 Simplifier.simproc @{theory} "perm_simp" ["pi1 \<bullet> (pi2 \<bullet> x)"] perm_simproc'; |
149 Simplifier.simproc @{theory} "perm_simp" ["pi1 \<bullet> (pi2 \<bullet> x)"] perm_simproc'; |
150 |
150 |
151 val meta_spec = thm "meta_spec"; |
151 val meta_spec = thm "meta_spec"; |
152 |
152 |
153 fun projections rule = |
153 fun projections rule = |
154 Project_Rule.projections (ProofContext.init (Thm.theory_of_thm rule)) rule |
154 Project_Rule.projections (ProofContext.init_global (Thm.theory_of_thm rule)) rule |
155 |> map (Drule.export_without_context #> Rule_Cases.save rule); |
155 |> map (Drule.export_without_context #> Rule_Cases.save rule); |
156 |
156 |
157 val supp_prod = thm "supp_prod"; |
157 val supp_prod = thm "supp_prod"; |
158 val fresh_prod = thm "fresh_prod"; |
158 val fresh_prod = thm "fresh_prod"; |
159 val supports_fresh = thm "supports_fresh"; |
159 val supports_fresh = thm "supports_fresh"; |
1615 let |
1615 let |
1616 val x = Free ("x", augment_sort_typ thy11 fs_cp_sort T); |
1616 val x = Free ("x", augment_sort_typ thy11 fs_cp_sort T); |
1617 val y = Free ("y", U); |
1617 val y = Free ("y", U); |
1618 val y' = Free ("y'", U) |
1618 val y' = Free ("y'", U) |
1619 in |
1619 in |
1620 Drule.export_without_context (Goal.prove (ProofContext.init thy11) [] |
1620 Drule.export_without_context (Goal.prove (ProofContext.init_global thy11) [] |
1621 (map (augment_sort thy11 fs_cp_sort) |
1621 (map (augment_sort thy11 fs_cp_sort) |
1622 (finite_prems @ |
1622 (finite_prems @ |
1623 [HOLogic.mk_Trueprop (R $ x $ y), |
1623 [HOLogic.mk_Trueprop (R $ x $ y), |
1624 HOLogic.mk_Trueprop (HOLogic.mk_all ("y'", U, |
1624 HOLogic.mk_Trueprop (HOLogic.mk_all ("y'", U, |
1625 HOLogic.mk_imp (R $ x $ y', HOLogic.mk_eq (y', y)))), |
1625 HOLogic.mk_imp (R $ x $ y', HOLogic.mk_eq (y', y)))), |
1710 HOLogic.mk_Trueprop |
1710 HOLogic.mk_Trueprop |
1711 (Const ("Finite_Set.finite", HOLogic.mk_setT aT --> HOLogic.boolT) $ |
1711 (Const ("Finite_Set.finite", HOLogic.mk_setT aT --> HOLogic.boolT) $ |
1712 (Const ("Nominal.supp", fsT' --> HOLogic.mk_setT aT) $ rec_ctxt))) dt_atomTs; |
1712 (Const ("Nominal.supp", fsT' --> HOLogic.mk_setT aT) $ rec_ctxt))) dt_atomTs; |
1713 |
1713 |
1714 val rec_unique_thms = split_conj_thm (Goal.prove |
1714 val rec_unique_thms = split_conj_thm (Goal.prove |
1715 (ProofContext.init thy11) (map fst rec_unique_frees) |
1715 (ProofContext.init_global thy11) (map fst rec_unique_frees) |
1716 (map (augment_sort thy11 fs_cp_sort) |
1716 (map (augment_sort thy11 fs_cp_sort) |
1717 (flat finite_premss @ finite_ctxt_prems @ rec_prems @ rec_prems')) |
1717 (flat finite_premss @ finite_ctxt_prems @ rec_prems @ rec_prems')) |
1718 (augment_sort thy11 fs_cp_sort |
1718 (augment_sort thy11 fs_cp_sort |
1719 (HOLogic.mk_Trueprop (foldr1 HOLogic.mk_conj rec_unique_concls))) |
1719 (HOLogic.mk_Trueprop (foldr1 HOLogic.mk_conj rec_unique_concls))) |
1720 (fn {prems, context} => |
1720 (fn {prems, context} => |