diff -r 4c57e850e8d5 -r 90e551baac6a src/Pure/Isar/proof.ML --- a/src/Pure/Isar/proof.ML Wed Jul 26 00:44:44 2006 +0200 +++ b/src/Pure/Isar/proof.ML Wed Jul 26 00:44:46 2006 +0200 @@ -39,6 +39,7 @@ val refine: Method.text -> state -> state Seq.seq val refine_end: Method.text -> state -> state Seq.seq val refine_insert: thm list -> state -> state + val goal_tac: thm -> int -> tactic val refine_goals: (context -> thm -> unit) -> context -> thm list -> state -> state Seq.seq val match_bind: (string list * string) list -> state -> state val match_bind_i: (term list * term) list -> state -> state @@ -444,29 +445,23 @@ (* refine via sub-proof *) -local - -fun refine_tac rule = +fun goal_tac rule = Tactic.norm_hhf_tac THEN' Tactic.rtac rule THEN_ALL_NEW (Tactic.norm_hhf_tac THEN' (SUBGOAL (fn (goal, i) => if can Logic.unprotect (Logic.strip_assums_concl goal) then Tactic.etac Drule.protectI i else all_tac))); -in - fun refine_goals print_rule inner raw_rules state = let val (outer, (_, goal)) = get_goal state; - fun refine rule st = (print_rule outer rule; FINDGOAL (refine_tac rule) st); + fun refine rule st = (print_rule outer rule; FINDGOAL (goal_tac rule) st); in raw_rules |> ProofContext.goal_exports inner outer |> Seq.maps (fn rules => Seq.lift set_goal (EVERY (map refine rules) goal) state) end; -end; - (* conclude_goal *)