* http://helm.cs.unibo.it/
*)
-(* $Id$ *)
+(* $Id: grafiteParser.ml 13176 2016-04-18 15:29:33Z fguidi $ *)
module N = NotationPt
module G = GrafiteAst
G.NObj (loc,
N.Theorem(name, N.Implicit `JustOne, Some body, attrs),
true)
- | src = source; IDENT "axiom"; i = index; name = IDENT; SYMBOL ":"; typ = term ->
+ | src = source; IDENT "axiom"; i = index; name = IDENT;
+ params = LIST0 protected_binder_vars; SYMBOL ":"; typ = term -> (* FG: params added *)
+ let typ = shift_params `Forall params typ in
let attrs = src, `Axiom, `Regular in
G.NObj (loc, N.Theorem (name, typ, None, attrs),i)
| src = source; IDENT "inductive"; spec = inductive_spec ->
paramspec = OPT inverter_param_list ;
outsort = OPT [ SYMBOL ":" ; outsort = term -> outsort ] ->
G.NInverter (loc,name,indty,paramspec,outsort)
- | IDENT "universe"; IDENT "constraint"; u1 = tactic_term;
+ | IDENT "universe"; cyclic = OPT [ IDENT "cyclic" -> () ] ; IDENT "constraint"; u1 = tactic_term;
SYMBOL <:unicode<lt>> ; u2 = tactic_term ->
+ let acyclic = match cyclic with None -> true | Some () -> false in
let urify = function
| NotationPt.AttributedTerm (_, NotationPt.Sort (`NType i)) ->
NUri.uri_of_string ("cic:/matita/pts/Type"^i^".univ")
in
let u1 = urify u1 in
let u2 = urify u2 in
- G.NUnivConstraint (loc,u1,u2)
+ G.NUnivConstraint (loc,acyclic,u1,u2)
| IDENT "unification"; IDENT "hint"; n = int; t = tactic_term ->
G.UnificationHint (loc, t, n)
| IDENT "coercion"; name = IDENT;