diff options
| author | Pierre-Marie Pédrot | 2017-09-05 15:59:42 +0200 |
|---|---|---|
| committer | Pierre-Marie Pédrot | 2017-09-05 16:17:23 +0200 |
| commit | c38e196fc175aaca2268f73107c9658c7af7d9fc (patch) | |
| tree | f5ff48a6fa0bc9b794819aa6c56355117f4a824a /src/tac2stdlib.ml | |
| parent | 2b0e0ad1062ad49c8bd7d4a7d183fe0119f81803 (diff) | |
Binding move and intro.
Diffstat (limited to 'src/tac2stdlib.ml')
| -rw-r--r-- | src/tac2stdlib.ml | 20 |
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 |
