6in
vexpr ::=vexpr ; vexpr |vexpr ; [ (vexpr |)* vexpr ] |vatom vatom ::=Fun input_fun+ -> expr |Rec rec_clause |Rec (rec_clause And)* rec_clause In expr |Match Context With (context_rule |)* context_rule |( vexpr ) |vatom Orelse vatom |Do (int | ident) vatom |Repeat vatom |Try vatom |First [ (vexpr |)* vexpr ] |Solve [ (vexpr |)* vexpr ] |Idtac |Fail |primitive_tactic |arg
Table 10.3: Values of Ltac
Let ident1 = expr1 |
And ident2 = expr2 |
... |
And identn = exprn In |
expr |
Match term With |
term1 -> expr1 |
| term2 -> expr2 |
... |
| termn -> exprn |
| _ -> exprn+1 |
Match Context With |
[context_hyps1,1;...;context_hyps1,m1 |-term1] -> expr1 |
|[context_hyps2,1;...;context_hyps2,m2 |-term2] -> expr2 |
... |
|[context_hypsn,1;...;context_hypsn,mn |-termn] -> exprn |
|_ -> exprn+1 |
Recursive Tactic Definition |
ident1 input_fun1,1 ... input_fun1,m1 := expr1 |
And ident2 input_fun2,1 ... input_fun2,m2 := expr2 |
... |
And identn input_funn,1 ... input_funn,mn := exprn |