]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/tactics/fourierR.ml
bugfix: demodulate_tac is in module Saturation
[helm.git] / helm / ocaml / tactics / fourierR.ml
index 1c4e40ed3601fa3dbeab5d2cf910ebffca3f93d2..8b910bded8ebabe6c5695016930b4ef4325c721b 100644 (file)
@@ -23,6 +23,8 @@
  * http://cs.unibo.it/helm/.
  *)
 
+(* $Id$ *)
+
 
 (******************** THE FOURIER TACTIC ***********************)
 
@@ -194,8 +196,8 @@ let rational_of_const = rational_of_term;;
 *)
 let fails f a =
  try
-   let tmp = (f a) in
-   false
+  ignore (f a);
+  false
  with 
    _-> true
  ;;
@@ -660,11 +662,7 @@ let tac_zero_inf_false gl (n,d) =
     apply_tactic (PrimitiveTactics.apply_tac ~term:_Rnot_lt0) status
    else
     apply_tactic (Tacticals.then_ 
-     ~start:( mk_tactic (fun status -> 
-       let (proof, goal) = status in
-       let curi,metasenv,pbo,pty = proof in
-       let metano,context,ty = CicUtil.lookup_meta goal metasenv in
-        apply_tactic (PrimitiveTactics.apply_tac ~term:_Rle_not_lt) status))
+     ~start:(mk_tactic (apply_tactic (PrimitiveTactics.apply_tac ~term:_Rle_not_lt)))
      ~continuation:(tac_zero_infeq_pos gl (-n,d))) 
     status
  in
@@ -692,17 +690,19 @@ let tac_zero_infeq_false gl (n,d) =
   apply_tactic 
    (Tacticals.then_
     ~start:
-      (ReductionTactics.fold_tac ~reduction:CicReduction.whd
+      (ReductionTactics.fold_tac
+        ~reduction:(const_lazy_reduction CicReduction.whd)
         ~pattern:(ProofEngineTypes.conclusion_pattern None)
         ~term:
-          (Cic.Appl
+          (const_lazy_term
+            (Cic.Appl
             [_Rle ; _R0 ;
               Cic.Appl
-               [_Rmult ; int_to_real n ; Cic.Appl [_Rinv ; int_to_real d]]]))
+               [_Rmult ; int_to_real n ; Cic.Appl [_Rinv ; int_to_real d]]])))
     ~continuation:
       (Tacticals.then_ 
         ~start:(PrimitiveTactics.apply_tac ~term:_Rlt_not_le)
-        ~continuation:(tac_zero_inf_pos (-n,d)))) 
+        ~continuation:(tac_zero_inf_pos (-n,d))))
    status 
  in
   mk_tactic (tac_zero_infeq_false gl (n,d))
@@ -898,7 +898,7 @@ let equality_replace a b =
 
 let tcl_fail a (proof,goal) =
   match a with
-    1 -> raise (ProofEngineTypes.Fail "fail-tactical")
+    1 -> raise (ProofEngineTypes.Fail (lazy "fail-tactical"))
   | _ -> (proof,[goal])
 ;;
 
@@ -915,7 +915,7 @@ let assumption_tac (proof,goal)=
         )  
           context 
   in
-  Tacticals.try_tactics ~tactics:tac_list (proof,goal)
+  Tacticals.first ~tactics:tac_list (proof,goal)
 ;;
 *)
 (* Galla: moved in negationTactics.ml
@@ -939,8 +939,6 @@ let rec fourier (s_proof,s_goal)=
   debug ("invoco fourier_tac sul goal "^string_of_int(s_goal)^" e contesto:\n");
   debug_pcontext s_context;
 
-  let fhyp = String.copy "new_hyp_for_fourier" in 
-   
 (* here we need to negate the thesis, but to do this we need to apply the 
    right theoreme,so let's parse our thesis *)
   
@@ -1135,7 +1133,7 @@ let rec fourier (s_proof,s_goal)=
              apply_tactic 
               (ReductionTactics.change_tac
                 ~pattern:(ProofEngineTypes.conclusion_pattern (Some ty))
-                (Cic.Appl [ _not; ineq])) 
+                (const_lazy_term (Cic.Appl [ _not; ineq])))
               status))
            ~continuation:(Tacticals.then_ 
              ~start:(PrimitiveTactics.apply_tac ~term:
@@ -1162,7 +1160,7 @@ let rec fourier (s_proof,s_goal)=
                    r))
                  ~continuations:
                    [PrimitiveTactics.apply_tac ~term:_Rinv_R1;
-                   Tacticals.try_tactics 
+                   Tacticals.first 
                      ~tactics:[ "ring",Ring.ring_tac; "id", Tacticals.id_tac] 
                    ])
                ;(*Tacticals.id_tac*)
@@ -1181,7 +1179,7 @@ let rec fourier (s_proof,s_goal)=
                    let r = apply_tactic 
                    (ReductionTactics.change_tac
                       ~pattern:(ProofEngineTypes.conclusion_pattern (Some ty))
-                      w1) status
+                      (const_lazy_term w1)) status
                    in
                    debug("fine MY_CHNGE\n");
                    r))