| PAREN "("; t = term; PAREN ")" -> return_term loc t
]
];
- tactic_where: [
- [ where = OPT [ "in"; ident = IDENT -> ident ] -> where ]
- ];
tactic_term: [ [ t = term -> t ] ];
ident_list0: [
[ PAREN "["; idents = LIST0 IDENT SEP SYMBOL ";"; PAREN "]" -> idents ]
];
- ident_list1: [
- [ PAREN "["; idents = LIST1 IDENT SEP SYMBOL ";"; PAREN "]" -> idents ]
- ];
reduction_kind: [
[ [ IDENT "reduce" ] -> `Reduce
| [ IDENT "simplify" ] -> `Simpl
| [ IDENT "auto" ] ; num = OPT [ i = NUM -> int_of_string i ] ->
TacticAst.Auto (loc,num)
| [ IDENT "change" ];
- t1 = tactic_term; "with"; t2 = tactic_term;
- where = tactic_where ->
+ t1 = tactic_term; "with"; t2 = tactic_term; where = pattern_spec ->
TacticAst.Change (loc, t1, t2, where)
(* TODO Change_pattern *)
| [ IDENT "contradiction" ] ->
| [ IDENT "cut" ];
t = tactic_term ->
TacticAst.Cut (loc, t)
- | [ IDENT "decompose" ];
- principles = ident_list1; where = IDENT ->
- TacticAst.Decompose (loc, where, principles)
+ | [ IDENT "decompose" ]; where = term ->
+ TacticAst.Decompose (loc, where)
| [ IDENT "discriminate" ];
t = tactic_term ->
TacticAst.Discriminate (loc, t)
| [ IDENT "fourier" ] ->
TacticAst.Fourier loc
| IDENT "goal"; n = NUM -> TacticAst.Goal (loc, int_of_string n)
- | [ IDENT "injection" ]; ident = IDENT ->
- TacticAst.Injection (loc, ident)
+ | [ IDENT "injection" ]; t = term ->
+ TacticAst.Injection (loc, t)
| [ IDENT "intros" ];
num = OPT [ num = int -> num ];
idents = OPT ident_list0 ->
| [ IDENT "transitivity" ];
t = tactic_term ->
TacticAst.Transitivity (loc, t)
- | [ IDENT "fwd" ]; name = IDENT ->
- TacticAst.FwdSimpl (loc, name)
+ | [ IDENT "fwd" ]; t = term ->
+ TacticAst.FwdSimpl (loc, t)
| [ IDENT "lapply" ]; t = term ->
- TacticAst.LApply (loc, t, [])
+ TacticAst.LApply (loc, t)
]
];
tactical: