]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/cic_transformations/tacticAst.ml
added Abort and Check commands
[helm.git] / helm / ocaml / cic_transformations / tacticAst.ml
index 833e1b1c4beed5c35bb7788e0520b6134d2a6715..3a74b3863b1cdd52c57b6b5d11408c384c45ee57 100644 (file)
@@ -23,8 +23,6 @@
  * 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
@@ -33,7 +31,7 @@ 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
   | Apply of 'term
@@ -67,17 +65,45 @@ type ('term, 'ident) tactic =
   | 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
+  | 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
+       *)
+
+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 *)