src/HOL/Nominal/nominal_datatype.ML
changeset 36610 bafd82950e24
parent 36428 874843c1e96e
child 36692 54b64d4ad524
equal deleted inserted replaced
36609:6ed6112f0a95 36610:bafd82950e24
   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} =>