type ast_statement =
(CicNotationPt.term, CicNotationPt.term,
- CicNotationPt.term GrafiteAst.reduction, CicNotationPt.obj, string)
+ CicNotationPt.term GrafiteAst.reduction,
+ CicNotationPt.term CicNotationPt.obj, string)
GrafiteAst.statement
type statement =
| IDENT "case" ; id = IDENT ; params=LIST0[LPAREN ; i=IDENT ;
SYMBOL":" ; t=tactic_term ; RPAREN -> i,t] ->
GrafiteAst.Case(loc,id,params)
- | IDENT "obtain" ; termine=tactic_term ; SYMBOL "=" ; t1=tactic_term ; IDENT "by" ; t2=[ t=tactic_term -> `Term t | SYMBOL "_" ; params = auto_params' -> `Auto params ] ; cont=rewriting_step_continuation ->
- GrafiteAst.RewritingStep(loc, Some termine, t1, t2, cont)
+ | start=[IDENT "conclude" -> None | IDENT "obtain" ; name = IDENT -> Some name] ; termine=tactic_term ; SYMBOL "=" ; t1=tactic_term ; IDENT "by" ; t2=[ t=tactic_term -> `Term t | SYMBOL "_" ; params = auto_params' -> `Auto params ] ; cont=rewriting_step_continuation ->
+ GrafiteAst.RewritingStep(loc, Some (start,termine), t1, t2, cont)
| SYMBOL "=" ; t1=tactic_term ; IDENT "by" ; t2=[ t=tactic_term -> `Term t | SYMBOL "_" ; params = auto_params' -> `Auto params ] ;
cont=rewriting_step_continuation ->
GrafiteAst.RewritingStep(loc, None, t1, t2, cont)
]
];
rewriting_step_continuation : [
- [ IDENT "done" -> None
- | IDENT "we" ; IDENT "proved" ; id=IDENT -> Some (Cic.Name id)
- | -> Some Cic.Anonymous
+ [ IDENT "done" -> true
+ | -> false
]
];
atomic_tactical:
macro: [
[ [ IDENT "check" ]; t = term ->
GrafiteAst.Check (loc, t)
- | [ IDENT "inline"]; suri = QSTRING; prefix = OPT QSTRING ->
- let prefix = match prefix with None -> "" | Some prefix -> prefix in
- GrafiteAst.Inline (loc,suri,prefix)
+ | [ IDENT "inline"];
+ style = OPT [ IDENT "procedural" ];
+ suri = QSTRING; prefix = OPT QSTRING ->
+ let style = match style with
+ | None -> GrafiteAst.Declarative
+ | Some _ -> GrafiteAst.Procedural
+ in
+ let prefix = match prefix with None -> "" | Some prefix -> prefix in
+ GrafiteAst.Inline (loc,style,suri,prefix)
| [ IDENT "hint" ] -> GrafiteAst.Hint loc
| [ IDENT "whelp"; "match" ] ; t = term ->
GrafiteAst.WMatch (loc,t)