export goal_tac (was internal refine_tac);
authorwenzelm
Wed, 26 Jul 2006 00:44:46 +0200
changeset 20208 90e551baac6a
parent 20207 4c57e850e8d5
child 20209 974d98969ba6
export goal_tac (was internal refine_tac);
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 *)