]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/cic_notation/grafiteAst.ml
ocaml 3.09 transition
[helm.git] / helm / ocaml / cic_notation / grafiteAst.ml
index da5c85411317faa108cc7891947d6870ca2fb909..cba5acd1f8322dd0d3d30dc64f10f9bad3118d3e 100644 (file)
@@ -47,8 +47,8 @@ type ('term, 'lazy_term, 'reduction, 'ident) tactic =
   | Absurd of loc * 'term
   | Apply of loc * 'term
   | Assumption of loc
-  | Auto of loc * int option * int option * string option
-      (* depth, width, paramodulation *)
+  | Auto of loc * int option * int option * string option * string option 
+      (* depth, width, paramodulation, full *) (* ALB *)
   | Change of loc * ('term, 'lazy_term, 'ident) pattern * 'lazy_term
   | Clear of loc * 'ident
   | ClearBody of loc * 'ident
@@ -124,8 +124,7 @@ type obj =
   | Inductive of (string * Ast.term) list *
       Ast.term inductive_type list
       (** parameters, list of loc * mutual inductive types *)
-  | Theorem of thm_flavour * string * Ast.term *
-      Ast.term option
+  | Theorem of thm_flavour * string * Ast.term * Ast.term option
       (** flavour, name, type, body
        * - name is absent when an unnamed theorem is being proved, tipically in
        *   interactive usage
@@ -136,9 +135,17 @@ type obj =
       (string * Ast.term) list
       (** left parameters, name, type, fields *)
 
+type metadata =
+  | Dependency of string  (* baseuri without trailing slash *)
+  | Baseuri of string 
+
+let compare_metadata = Pervasives.compare
+
+let eq_metadata = (=)
+
 (** To be increased each time the command type below changes, used for "safe"
  * marshalling *)
-let magic = 1
+let magic = 2
 
 type ('term,'obj) command =
   | Default of loc * string * UriManager.uri list
@@ -161,6 +168,8 @@ type ('term,'obj) command =
         Ast.cic_appl_pattern
       (* description (i.e. id), symbol, arg pattern, appl pattern *)
 
+  | Metadata of loc * metadata
+
     (* DEBUGGING *)
   | Dump of loc (* dump grammar on stdout *)
     (* DEBUGGING *)
@@ -198,16 +207,31 @@ type ('term, 'lazy_term, 'reduction, 'ident) tactical =
   | Then of loc * ('term, 'lazy_term, 'reduction, 'ident) tactical *
       ('term, 'lazy_term, 'reduction, 'ident) tactical list
   | First of loc * ('term, 'lazy_term, 'reduction, 'ident) tactical list
-      (* try a sequence of loc * tacticals until one succeeds, fail otherwise *)
+      (* try a sequence of loc * tactical until one succeeds, fail otherwise *)
   | Try of loc * ('term, 'lazy_term, 'reduction, 'ident) tactical
       (* try a tactical and mask failures *)
   | Solve of loc * ('term, 'lazy_term, 'reduction, 'ident) tactical list
 
+  | Dot of loc
+  | Semicolon of loc
+  | Branch of loc
+  | Shift of loc
+  | Pos of loc * int
+  | Merge of loc
+  | Focus of loc * int list
+  | Unfocus of loc
+  | Skip of loc
+
+let is_punctuation =
+  function
+  | Dot _ | Semicolon _ | Branch _ | Shift _ | Merge _ | Pos _ -> true
+  | _ -> false
 
 type ('term, 'lazy_term, 'reduction, 'obj, 'ident) code =
   | Command of loc * ('term,'obj) command
   | Macro of loc * 'term macro 
   | Tactical of loc * ('term, 'lazy_term, 'reduction, 'ident) tactical
+      * ('term, 'lazy_term, 'reduction, 'ident) tactical option(* punctuation *)
              
 type ('term, 'lazy_term, 'reduction, 'obj, 'ident) comment =
   | Note of loc * string