# HG changeset patch # User wenzelm # Date 1008681638 -3600 # Node ID 5729b8cac4e131225433b1248e0c57e84cc04fa5 # Parent e417bd7ca8a0348e4bf30dac3433fb7568330e25 use Locale.read/cert_context_statement; diff -r e417bd7ca8a0 -r 5729b8cac4e1 src/Pure/Isar/proof.ML --- a/src/Pure/Isar/proof.ML Tue Dec 18 13:15:21 2001 +0100 +++ b/src/Pure/Isar/proof.ML Tue Dec 18 14:20:38 2001 +0100 @@ -614,14 +614,14 @@ val rule_contextN = "rule_context"; -fun setup_goal opt_block prepp autofix kind after_qed names raw_propss state = +fun setup_goal opt_block prepp autofix kind after_qed names raw_propp state = let val (state', (propss, gen_binds)) = state |> assert_forward_or_chain |> enter_forward |> opt_block - |> map_context_result (fn ctxt => prepp (ctxt, raw_propss)); + |> map_context_result (fn ctxt => prepp (ctxt, raw_propp)); val props = flat propss; val cprop = Thm.cterm_of (sign_of state') (foldr1 Logic.mk_conjunction props); @@ -649,25 +649,24 @@ end; (*global goals*) -fun global_goal prepp prep_locale activate kind a raw_locale elems args thy = +fun global_goal prep kind a raw_locale elems args thy = let val st = thy |> init_state |> open_block; - val (locale_ctxt, elems_ctxt) = context_of st |> activate - ((case raw_locale of None => Locale.empty | Some (name, _) => Locale.Locale name), elems); - val locale = apsome (apfst (prep_locale (Theory.sign_of thy))) raw_locale; + val (opt_name, locale_ctxt, elems_ctxt, propp) = + prep (apsome fst raw_locale) elems (map snd args) (context_of st); + val locale = (case raw_locale of None => None | Some (_, atts) => Some (the opt_name, atts)); in st |> map_context (K locale_ctxt) |> open_block |> map_context (K elems_ctxt) - |> setup_goal I prepp ProofContext.fix_frees (Theorem (kind, a, locale, map (snd o fst) args)) - Seq.single (map (fst o fst) args) (map snd args) + |> setup_goal I ProofContext.bind_propp_schematic_i + ProofContext.fix_frees (Theorem (kind, a, locale, map (snd o fst) args)) + Seq.single (map (fst o fst) args) propp end; -val multi_theorem = - global_goal ProofContext.bind_propp_schematic Locale.intern Locale.activate_context; -val multi_theorem_i = - global_goal ProofContext.bind_propp_schematic_i (K I) Locale.activate_context_i; +val multi_theorem = global_goal Locale.read_context_statement; +val multi_theorem_i = global_goal Locale.cert_context_statement; fun theorem k locale elems name atts p = multi_theorem k (name, atts) locale elems [(("", []), [p])];