# HG changeset patch # User traytel # Date 1366796171 -7200 # Node ID c45ca48b526eeff352a2f6cf4e9ee048dd1992a4 # Parent cf039b3c42a73c05aef792b9653fa84f773c8137# Parent cb154917a496f0ad944ee2c195f5b63070d09ed6 merged diff -r cf039b3c42a7 -r c45ca48b526e src/Pure/Isar/expression.ML --- a/src/Pure/Isar/expression.ML Wed Apr 24 11:06:53 2013 +0200 +++ b/src/Pure/Isar/expression.ML Wed Apr 24 11:36:11 2013 +0200 @@ -829,7 +829,7 @@ fun meta_rewrite eqns ctxt = (map (Local_Defs.meta_rewrite_rule ctxt #> Drule.abs_def) (maps snd eqns), ctxt); -fun note_eqns_register note activate reinit deps witss eqns attrss export export' ctxt = +fun note_eqns_register note activate deps witss eqns attrss export export' ctxt = let val facts = (attrss ~~ map (fn eqn => [([Morphism.thm (export' $> export) eqn], [])]) eqns); @@ -843,22 +843,23 @@ in ctxt' |> fold activate' dep_morphs - |> reinit end; fun generic_interpretation prep_expr parse_prop prep_attr setup_proof note add_registration - reinit expression raw_eqns initial_ctxt = + expression raw_eqns initial_ctxt = let val (((propss, deps, export, export'), (eqns, attrss)), goal_ctxt) = read_interpretation prep_expr parse_prop prep_attr expression raw_eqns initial_ctxt; fun after_qed witss eqns = - note_eqns_register note add_registration reinit deps witss eqns attrss export export'; + note_eqns_register note add_registration deps witss eqns attrss export export'; in setup_proof after_qed propss eqns goal_ctxt end; val activate_proof = Context.proof_map ooo Locale.add_registration; val activate_local_theory = Local_Theory.target ooo activate_proof; val add_registration = Local_Theory.raw_theory o Context.theory_map ooo Locale.add_registration; -fun add_dependency locale = Local_Theory.raw_theory ooo Locale.add_dependency locale; +fun add_dependency locale dep_morph mixin export = + (Local_Theory.raw_theory ooo Locale.add_dependency locale) dep_morph mixin export + #> activate_local_theory dep_morph mixin export; fun add_dependency_global locale = Proof_Context.background_theory ooo Locale.add_dependency locale; fun gen_interpret prep_expr parse_prop prep_attr expression raw_eqns int state = @@ -870,7 +871,7 @@ Element.witness_local_proof_eqs (lift_after_qed after_qed) "interpret" propss eqns goal_ctxt int state; in generic_interpretation prep_expr parse_prop prep_attr setup_proof - Attrib.local_notes activate_proof I expression raw_eqns ctxt + Attrib.local_notes activate_proof expression raw_eqns ctxt end; fun gen_interpretation prep_expr parse_prop prep_attr expression raw_eqns lthy = @@ -881,7 +882,7 @@ in lthy |> generic_interpretation prep_expr parse_prop prep_attr Element.witness_proof_eqs - Local_Theory.notes_kind activate I expression raw_eqns + Local_Theory.notes_kind activate expression raw_eqns end; fun gen_sublocale prep_expr parse_prop prep_attr expression raw_eqns lthy = @@ -893,7 +894,7 @@ in lthy |> generic_interpretation prep_expr parse_prop prep_attr Element.witness_proof_eqs - Local_Theory.notes_kind (add_dependency locale) (Named_Target.reinit lthy) expression raw_eqns + Local_Theory.notes_kind (add_dependency locale) expression raw_eqns end; fun gen_sublocale_global prep_expr prep_loc parse_prop prep_attr before_exit raw_locale expression raw_eqns thy = @@ -903,7 +904,7 @@ thy |> Named_Target.init before_exit locale |> generic_interpretation prep_expr parse_prop prep_attr Element.witness_proof_eqs - Local_Theory.notes_kind (add_dependency_global locale) I expression raw_eqns + Local_Theory.notes_kind (add_dependency_global locale) expression raw_eqns end; in @@ -916,11 +917,10 @@ | NONE => error "Not in a named target"; val is_theory = (target = ""); val activate = if is_theory then add_registration else add_dependency target; - val reinit = if is_theory then I else Named_Target.reinit lthy; in lthy |> generic_interpretation cert_goal_expression (K I) (K I) Element.witness_proof_eqs - Local_Theory.notes_kind activate reinit expression raw_eqns + Local_Theory.notes_kind activate expression raw_eqns end; fun ephemeral_interpretation expression raw_eqns lthy = @@ -932,7 +932,7 @@ lthy |> Local_Theory.mark_brittle |> generic_interpretation cert_goal_expression (K I) (K I) Element.witness_proof_eqs - Local_Theory.notes_kind activate_local_theory I expression raw_eqns + Local_Theory.notes_kind activate_local_theory expression raw_eqns end; fun interpret x = gen_interpret cert_goal_expression (K I) (K I) x;