aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPierre-Marie Pédrot2017-09-05 15:59:42 +0200
committerPierre-Marie Pédrot2017-09-05 16:17:23 +0200
commitc38e196fc175aaca2268f73107c9658c7af7d9fc (patch)
treef5ff48a6fa0bc9b794819aa6c56355117f4a824a /src
parent2b0e0ad1062ad49c8bd7d4a7d183fe0119f81803 (diff)
Binding move and intro.
Diffstat (limited to 'src')
-rw-r--r--src/tac2stdlib.ml20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/tac2stdlib.ml b/src/tac2stdlib.ml
index 03141805ef..1762952e55 100644
--- a/src/tac2stdlib.ml
+++ b/src/tac2stdlib.ml
@@ -176,6 +176,13 @@ let to_inversion_kind = function
| ValInt 2 -> Misctypes.FullInversionClear
| _ -> assert false
+let to_move_location = function
+| ValInt 0 -> MoveFirst
+| ValInt 1 -> MoveLast
+| ValBlk (0, [|id|]) -> MoveAfter (Value.to_ident id)
+| ValBlk (1, [|id|]) -> MoveBefore (Value.to_ident id)
+| _ -> assert false
+
(** Standard tactics sharing their implementation with Ltac1 *)
let pname s = { mltac_plugin = "ltac2"; mltac_tactic = s }
@@ -488,6 +495,19 @@ end
let () = define_prim0 "tac_reflexivity" Tactics.intros_reflexivity
+let () = define_prim2 "tac_move" begin fun _ id mv ->
+ let id = Value.to_ident id in
+ let mv = to_move_location mv in
+ Tactics.move_hyp id mv
+end
+
+let () = define_prim2 "tac_intro" begin fun _ id mv ->
+ let id = Value.to_option Value.to_ident id in
+ let mv = Value.to_option to_move_location mv in
+ let mv = Option.default MoveLast mv in
+ Tactics.intro_move id mv
+end
+
(*
TACTIC EXTEND exact