doc-src/IsarRef/syntax.tex
changeset 7430 6ea8cbf94118
parent 7335 abba35b98892
child 7466 7df66ce6508a
equal deleted inserted replaced
7429:8f284fbb8728 7430:6ea8cbf94118
   263 
   263 
   264 \subsection{Proof methods}\label{sec:syn-meth}
   264 \subsection{Proof methods}\label{sec:syn-meth}
   265 
   265 
   266 Proof methods are either basic ones, or expressions composed of methods via
   266 Proof methods are either basic ones, or expressions composed of methods via
   267 ``\texttt{,}'' (sequential composition), ``\texttt{|}'' (alternative choices),
   267 ``\texttt{,}'' (sequential composition), ``\texttt{|}'' (alternative choices),
   268 ``\texttt{?}'' (try), ``\texttt{*}'' (repeat ${} \ge 0$ times), ``\texttt{+}''
   268 ``\texttt{?}'' (try), ``\texttt{+}'' (at least once).  In practice, proof
   269 (repeat ${} > 0$ times).  In practice, proof methods are usually just a comma
   269 methods are usually just a comma separated list of
   270 separated list of \railqtoken{nameref}~\railnonterm{args} specifications.
   270 \railqtoken{nameref}~\railnonterm{args} specifications.  Thus the syntax is
   271 Thus the syntax is similar to that of attributes, with plain parentheses
   271 similar to that of attributes, with plain parentheses instead of square
   272 instead of square brackets.  Note that parentheses may be dropped for single
   272 brackets.  Note that parentheses may be dropped for single method
   273 method specifications without arguments.
   273 specifications without arguments.
   274 
   274 
   275 \indexouternonterm{method}
   275 \indexouternonterm{method}
   276 \begin{rail}
   276 \begin{rail}
   277   method: (nameref | '(' methods ')') (() | '?' | '*' | '+')
   277   method: (nameref | '(' methods ')') (() | '?' | '+')
   278   ;
   278   ;
   279   methods: (nameref args | method) + (',' | '|')
   279   methods: (nameref args | method) + (',' | '|')
   280   ;
   280   ;
   281 \end{rail}
   281 \end{rail}
   282 
   282