aboutsummaryrefslogtreecommitdiff
path: root/src/tac2core.ml
diff options
context:
space:
mode:
authorPierre-Marie Pédrot2017-08-07 15:15:36 +0200
committerPierre-Marie Pédrot2017-08-07 16:15:22 +0200
commite1ea058fb664be58371237e5a6dbe0ec570448d5 (patch)
treee6760f2b0ed575123b6dd6b865b950a52fea17f6 /src/tac2core.ml
parent77150cc524f5cbdc9bf340be03f31e7f7542c98d (diff)
Defining a few base tacticals.
Diffstat (limited to 'src/tac2core.ml')
-rw-r--r--src/tac2core.ml25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/tac2core.ml b/src/tac2core.ml
index 7539e1b697..08f61f2c6c 100644
--- a/src/tac2core.ml
+++ b/src/tac2core.ml
@@ -574,6 +574,27 @@ let prm_with_holes : ml_tactic = function
Tacticals.New.tclWITHHOLES false (interp_app f [ans]) sigma
| _ -> assert false
+let prm_progress : ml_tactic = function
+| [f] -> Proofview.tclPROGRESS (thaw f)
+| _ -> assert false
+
+let prm_abstract : ml_tactic = function
+| [id; f] ->
+ let id = Value.to_option Value.to_ident id in
+ Tactics.tclABSTRACT id (Proofview.tclIGNORE (thaw f)) >>= fun () ->
+ return v_unit
+| _ -> assert false
+
+let prm_time : ml_tactic = function
+| [s; f] ->
+ let s = Value.to_option Value.to_string s in
+ Proofview.tclTIME s (thaw f)
+| _ -> assert false
+
+let prm_check_interrupt : ml_tactic = function
+| [_] -> Proofview.tclCHECKINTERRUPT >>= fun () -> return v_unit
+| _ -> assert false
+
(** Registering *)
let () = Tac2env.define_primitive (pname "print") prm_print
@@ -632,6 +653,10 @@ let () = Tac2env.define_primitive (pname "hyp") prm_hyp
let () = Tac2env.define_primitive (pname "hyps") prm_hyps
let () = Tac2env.define_primitive (pname "refine") prm_refine
let () = Tac2env.define_primitive (pname "with_holes") prm_with_holes
+let () = Tac2env.define_primitive (pname "progress") prm_progress
+let () = Tac2env.define_primitive (pname "abstract") prm_abstract
+let () = Tac2env.define_primitive (pname "time") prm_time
+let () = Tac2env.define_primitive (pname "check_interrupt") prm_check_interrupt
(** ML types *)