]> matita.cs.unibo.it Git - helm.git/blobdiff - components/tactics/tacticals.ml
- tacticals: new tactical ifs added: uses thens where if_ uses then_
[helm.git] / components / tactics / tacticals.ml
index d5ec8acfb8be6c9edee7f353ba9f5368f8314511..f647ebccaa9d199181761b2233c59f00ace13f1d 100644 (file)
@@ -201,6 +201,23 @@ let if_ ~start ~continuation ~fail =
    in
    PET.mk_tactic if_
 
+let ifs ~start ~continuations ~fail =
+   let ifs status =
+      let xoutput = 
+         try
+           let result = PET.apply_tactic start status in
+           info (lazy ("Tacticals.ifs: succedeed!!!"));
+           Some result 
+        with PET.Fail _ -> None
+      in
+      let tactic = match xoutput with
+         | Some res -> thens ~start:(const_tac res) ~continuations
+        | None     -> fail
+      in 
+      PET.apply_tactic tactic status
+   in
+   PET.mk_tactic ifs
+
 let first ~tactics =
   let rec first ~(tactics: tactic list) status =
     info (lazy "in Tacticals.first");