* http://helm.cs.unibo.it/
*)
-type location = int * int
-
type direction = [ `Left | `Right ]
type reduction_kind = [ `Reduce | `Simpl | `Whd ]
type 'term pattern = Pattern of 'term
to the current goal *)
type ('term, 'ident) tactic =
- | LocatedTactic of location * ('term, 'ident) tactic
+ | LocatedTactic of CicAst.location * ('term, 'ident) tactic
- | Absurd
+ | Absurd of 'term
| Apply of 'term
+ | Auto
| Assumption
| Change of 'term * 'term * 'ident option (* what, with what, where *)
| Change_pattern of 'term pattern * 'term * 'ident option
| Exists
| Fold of reduction_kind * 'term
| Fourier
+ | Hint
| Injection of 'ident
| Intros of int option * 'ident list
| Left
| Symmetry
| Transitivity of 'term
-type 'tactic tactical =
- | LocatedTactical of location * 'tactic tactical
+type thm_flavour =
+ [ `Definition
+ | `Fact
+ | `Goal
+ | `Lemma
+ | `Remark
+ | `Theorem
+ ]
+
+type 'term command =
+ | Abort
+ | Baseuri of string option (** get/set base uri *)
+ | Check of 'term
+ | Proof
+ | Qed of string option
+ (** name.
+ * Name is needed when theorem was started without providing a name
+ *)
+ | Quit
+ | Theorem of thm_flavour * string option * 'term * 'term option
+ (** flavour, name, type, body
+ * - name is absent when an unnamed theorem is being proved, tipically in
+ * interactive usage
+ * - body is present when its given along with the command, otherwise it
+ * will be given in proof editing mode using the tactical language
+ *)
+ | Redo of int option
+ | Undo of int option
+
+type ('term, 'ident) tactical =
+ | LocatedTactical of CicAst.location * ('term, 'ident) tactical
+
+ | Tactic of ('term, 'ident) tactic
+ | Command of 'term command
| Fail
- | Do of int * 'tactic tactical
+ | Do of int * ('term, 'ident) tactical
| IdTac
- | Repeat of 'tactic tactical
- | Seq of 'tactic tactical list (* sequential composition *)
- | Tactic of 'tactic
- | Then of 'tactic tactical * 'tactic tactical list
- | Tries of 'tactic tactical list
+ | Repeat of ('term, 'ident) tactical
+ | Seq of ('term, 'ident) tactical list (* sequential composition *)
+ | Then of ('term, 'ident) tactical * ('term, 'ident) tactical list
+ | Tries of ('term, 'ident) tactical list
(* try a sequence of tacticals until one succeeds, fail otherwise *)
- | Try of 'tactic tactical (* try a tactical and mask failures *)
+ | Try of ('term, 'ident) tactical (* try a tactical and mask failures *)