src/Sequents/prover.ML
changeset 59498 50b60f501b05
parent 58048 aa6296d09e0e
child 59582 0fbed69ff081
--- a/src/Sequents/prover.ML	Tue Feb 10 14:29:36 2015 +0100
+++ b/src/Sequents/prover.ML	Tue Feb 10 14:48:26 2015 +0100
@@ -146,13 +146,13 @@
 (*Like filt_resolve_tac, using could_resolve_seq
   Much faster than resolve_tac when there are many rules.
   Resolve subgoal i using the rules, unless more than maxr are compatible. *)
-fun filseq_resolve_tac rules maxr = SUBGOAL(fn (prem,i) =>
+fun filseq_resolve_tac ctxt rules maxr = SUBGOAL(fn (prem,i) =>
   let val rls = filter_thms could_resolve_seq (maxr+1, prem, rules)
   in  if length rls > maxr  then  no_tac
           else (*((rtac derelict 1 THEN rtac impl 1
                  THEN (rtac identity 2 ORELSE rtac ll_mp 2)
                  THEN rtac context1 1)
-                 ORELSE *) resolve_tac rls i
+                 ORELSE *) resolve_tac ctxt rls i
   end);
 
 
@@ -170,23 +170,23 @@
   The abstraction over state prevents needless divergence in recursion.
   The 9999 should be a parameter, to delay treatment of flexible goals. *)
 
-fun RESOLVE_THEN rules =
+fun RESOLVE_THEN ctxt rules =
   let val [rls0,rls1,rls2] = partition_list has_prems 0 2 rules;
       fun tac nextac i state = state |>
-             (filseq_resolve_tac rls0 9999 i
+             (filseq_resolve_tac ctxt rls0 9999 i
               ORELSE
-              (DETERM(filseq_resolve_tac rls1 9999 i) THEN  TRY(nextac i))
+              (DETERM(filseq_resolve_tac ctxt rls1 9999 i) THEN  TRY(nextac i))
               ORELSE
-              (DETERM(filseq_resolve_tac rls2 9999 i) THEN  TRY(nextac(i+1))
+              (DETERM(filseq_resolve_tac ctxt rls2 9999 i) THEN  TRY(nextac(i+1))
                                             THEN  TRY(nextac i)))
   in  tac  end;
 
 
 
 (*repeated resolution applied to the designated goal*)
-fun reresolve_tac rules =
+fun reresolve_tac ctxt rules =
   let
-    val restac = RESOLVE_THEN rules;  (*preprocessing done now*)
+    val restac = RESOLVE_THEN ctxt rules;  (*preprocessing done now*)
     fun gtac i = restac gtac i;
   in gtac end;
 
@@ -194,8 +194,8 @@
 fun repeat_goal_tac ctxt =
   let
     val (safes, unsafes) = get_rules ctxt;
-    val restac = RESOLVE_THEN safes;
-    val lastrestac = RESOLVE_THEN unsafes;
+    val restac = RESOLVE_THEN ctxt safes;
+    val lastrestac = RESOLVE_THEN ctxt unsafes;
     fun gtac i =
       restac gtac i ORELSE
        (if Config.get ctxt trace then print_tac ctxt "" THEN lastrestac gtac i
@@ -204,11 +204,11 @@
 
 
 (*Tries safe rules only*)
-fun safe_tac ctxt = reresolve_tac (#1 (get_rules ctxt));
+fun safe_tac ctxt = reresolve_tac ctxt (#1 (get_rules ctxt));
 
 (*Tries a safe rule or else a unsafe rule.  Single-step for tracing. *)
 fun step_tac ctxt =
-  safe_tac ctxt ORELSE' filseq_resolve_tac (#2 (get_rules ctxt)) 9999;
+  safe_tac ctxt ORELSE' filseq_resolve_tac ctxt (#2 (get_rules ctxt)) 9999;
 
 
 (* Tactic for reducing a goal, using Predicate Calculus rules.