src/Pure/Isar/proof.ML
changeset 58002 0ed1e999a0fb
parent 57486 2131b6633529
child 58003 250ecd2502ad
equal deleted inserted replaced
58001:934d85f14d1d 58002:0ed1e999a0fb
   399   let
   399   let
   400     val (goal_ctxt, (_, {statement, messages = _, using, goal, before_qed, after_qed})) =
   400     val (goal_ctxt, (_, {statement, messages = _, using, goal, before_qed, after_qed})) =
   401       find_goal state;
   401       find_goal state;
   402     val ctxt = if current_context then context_of state else goal_ctxt;
   402     val ctxt = if current_context then context_of state else goal_ctxt;
   403   in
   403   in
   404     Method.apply method ctxt using goal |> Seq.map (fn (meth_cases, goal') =>
   404     method ctxt using goal |> Seq.map (fn (meth_cases, goal') =>
   405       state
   405       state
   406       |> map_goal
   406       |> map_goal
   407           (Proof_Context.update_cases false (no_goal_cases goal @ goal_cases goal') #>
   407           (Proof_Context.update_cases false (no_goal_cases goal @ goal_cases goal') #>
   408            Proof_Context.update_cases true meth_cases)
   408            Proof_Context.update_cases true meth_cases)
   409           (K (statement, [], using, goal', before_qed, after_qed)) I)
   409           (K (statement, [], using, goal', before_qed, after_qed)) I)
   890     val explicit_vars = fold Term.add_vars var_props [];
   890     val explicit_vars = fold Term.add_vars var_props [];
   891     val vars = filter_out (member (op =) explicit_vars) (fold Term.add_vars props []);
   891     val vars = filter_out (member (op =) explicit_vars) (fold Term.add_vars props []);
   892   in map (Logic.mk_term o Var) vars end;
   892   in map (Logic.mk_term o Var) vars end;
   893 
   893 
   894 fun refine_terms n =
   894 fun refine_terms n =
   895   refine (Method.Basic (K (RAW_METHOD
   895   refine (Method.Basic (K (NO_CASES o
   896     (K (HEADGOAL (PRECISE_CONJUNCTS n
   896     K (HEADGOAL (PRECISE_CONJUNCTS n
   897       (HEADGOAL (CONJUNCTS (ALLGOALS (rtac Drule.termI))))))))))
   897       (HEADGOAL (CONJUNCTS (ALLGOALS (rtac Drule.termI)))))))))
   898   #> Seq.hd;
   898   #> Seq.hd;
   899 
   899 
   900 in
   900 in
   901 
   901 
   902 fun generic_goal prepp kind before_qed after_qed raw_propp state =
   902 fun generic_goal prepp kind before_qed after_qed raw_propp state =