equal
deleted
inserted
replaced
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 = |