doc-src/IsarRef/syntax.tex
changeset 19182 9b7477a10052
parent 18021 99d170aebb6e
child 19220 05b00acff957
equal deleted inserted replaced
19181:5c9f58562602 19182:9b7477a10052
   286 
   286 
   287 
   287 
   288 
   288 
   289 \subsection{Proof methods}\label{sec:syn-meth}
   289 \subsection{Proof methods}\label{sec:syn-meth}
   290 
   290 
   291 Proof methods are either basic ones, or expressions composed of methods via
   291 Proof methods are either basic ones, or expressions composed of
   292 ``\texttt{,}'' (sequential composition), ``\texttt{|}'' (alternative choices),
   292 methods via ``\texttt{,}'' (sequential composition), ``\texttt{|}''
   293 ``\texttt{?}'' (try), ``\texttt{+}'' (repeat at least once).  In practice,
   293 (alternative choices), ``\texttt{?}'' (try), ``\texttt{+}'' (repeat at
   294 proof methods are usually just a comma separated list of
   294 least once), ``\texttt{[$n$]}'' (restriction to first $n$ sub-goals).
   295 \railqtok{nameref}~\railnonterm{args} specifications.  Note that parentheses
   295 In practice, proof methods are usually just a comma separated list of
   296 may be dropped for single method specifications (with no arguments).
   296 \railqtok{nameref}~\railnonterm{args} specifications.  Note that
       
   297 parentheses may be dropped for single method specifications (with no
       
   298 arguments).
   297 
   299 
   298 \indexouternonterm{method}
   300 \indexouternonterm{method}
   299 \begin{rail}
   301 \begin{rail}
   300   method: (nameref | '(' methods ')') (() | '?' | '+')
   302   method: (nameref | '(' methods ')') (() | '?' | '+' | '[' nat ']')
   301   ;
   303   ;
   302   methods: (nameref args | method) + (',' | '|')
   304   methods: (nameref args | method) + (',' | '|')
   303   ;
   305   ;
   304 \end{rail}
   306 \end{rail}
   305 
   307