## 7.1 Syntax of tactics and tacticals

A tactic is applied as an ordinary command. If the tactic does not address the first subgoal, the command may be preceded by the wished subgoal number. See figure 7.1 for the syntax of tactic invocation and tacticals.

> tactic | ::= | atomic_tactic
> | | | `(` tactic `)`
> | | | tactic `Orelse` tactic
> | | | `Repeat` tactic
> | | | `Do` num tactic
> | | | `Info` tactic
> | | | `Try` tactic
> | | | `First [` tactic`| ... |` tactic `]`
> | | | `Solve [` tactic`| ... |` tactic `]`
> | | | `Abstract` tactic
> | | | `Abstract` tactic `using` ident
> | | | tactic `;` tactic
> | | | tactic `;[` tactic ``|```...` ``|```` tactic`` `]```
> tactic_invocation | ::= | num `:` tactic `.`
> | | | tactic `.`

> Figure 7.1: Invocation of tactics and tacticals

Remarks:

1. The infix tacticals `Orelse` and ``... `;` ...'' are associative. The tactical `Orelse` binds more than the prefix tacticals `Try`, `Repeat`, `Do`, `Info` and `Abstract` which themselves bind more than the postfix tactical ```... ;[ ... ]`'' which binds more than ``... `;` ...''.
   For instance
   `Try Repeat` tactic`1``Orelse` tactic`2``;`tactic`3``;[`tactic`31``|...|`tactic`3n``];`tactic`4``.`
   is understood as
   `(Try (Repeat (`tactic`1``Orelse` tactic`2``))); ((`tactic`3``;[`tactic`31``|...|`tactic`3n``]);`tactic`4``)`.
2. An atomic_tactic is any of the tactics listed below.