| None ->
G.NTactic(loc,
[G.NAuto(loc,(None,["depth",depth]@params))])
- | Some (`Univ univ) ->
+ | Some (b,`Univ univ) ->
G.NTactic(loc,
- [G.NAuto(loc,(Some univ,["depth",depth]@params))])
- | Some `EmptyUniv ->
+ [G.NAuto(loc,(Some (b,univ),["depth",depth]@params))])
+ | Some (b,`EmptyUniv) ->
G.NTactic(loc,
- [G.NAuto(loc,(Some [],["depth",depth]@params))])
- | Some `Trace ->
+ [G.NAuto(loc,(Some (b,[]),["depth",depth]@params))])
+ | Some (b,`Trace) ->
G.NMacro(loc,
G.NAutoInteractive (loc, (None,["depth",depth]@params))))
| IDENT "intros" -> G.NMacro (loc, G.NIntroGuess loc)
i = auto_fixed_param -> i,""
| i = auto_fixed_param ; SYMBOL "="; v = [ v = int ->
string_of_int v | v = IDENT -> v ] -> i,v ];
- just = OPT [ IDENT "by"; by =
- [ univ = tactic_term_list1 -> `Univ univ
- | SYMBOL "{"; SYMBOL "}" -> `EmptyUniv
- | SYMBOL "_" -> `Trace ] -> by ] -> just,params
+ just = OPT [ is_user_trace =
+ [ IDENT "by" -> true
+ | IDENT "trace" -> false ];
+ by =
+ [ univ = tactic_term_list1 -> `Univ univ
+ | SYMBOL "{"; SYMBOL "}" -> `EmptyUniv
+ | SYMBOL "_" -> `Trace ] -> is_user_trace,by ] -> just,params
]
];
]];
grafite_ncommand: [ [
- IDENT "qed" -> G.NQed loc
+ IDENT "qed" ; b = OPT SYMBOL "-" ->
+ let b = match b with None -> true | Some _ -> false in G.NQed (loc,b)
| nflavour = ntheorem_flavour; name = IDENT; SYMBOL ":"; typ = term;
body = OPT [ SYMBOL <:unicode<def>> (* ≝ *); body = term -> body ] ->
G.NObj (loc, N.Theorem (nflavour, name, typ, body,`Regular))