updated generated file;
authorwenzelm
Thu, 15 May 2008 17:39:20 +0200
changeset 269028db1e960d636
parent 26901 d1694ef6e7a7
child 26903 0542898ab667
updated generated file;
doc-src/IsarImplementation/Thy/document/prelim.tex
doc-src/IsarRef/Thy/document/Generic.tex
doc-src/IsarRef/Thy/document/HOLCF_Specific.tex
doc-src/IsarRef/Thy/document/HOL_Specific.tex
doc-src/IsarRef/Thy/document/ML_Tactic.tex
doc-src/IsarRef/Thy/document/Proof.tex
doc-src/IsarRef/Thy/document/Quick_Reference.tex
doc-src/IsarRef/Thy/document/Spec.tex
doc-src/IsarRef/Thy/document/ZF_Specific.tex
doc-src/IsarRef/Thy/document/intro.tex
doc-src/IsarRef/Thy/document/pure.tex
doc-src/IsarRef/Thy/document/syntax.tex
     1.1 --- a/doc-src/IsarImplementation/Thy/document/prelim.tex	Thu May 15 17:37:21 2008 +0200
     1.2 +++ b/doc-src/IsarImplementation/Thy/document/prelim.tex	Thu May 15 17:39:20 2008 +0200
     1.3 @@ -140,14 +140,14 @@
     1.4    \isa{Nat} &    &              &            & \isa{List} \\
     1.5          & $\searrow$ &              & $\swarrow$ \\
     1.6          &            & \isa{Length} \\
     1.7 -        &            & \multicolumn{3}{l}{~~\mbox{\isa{\isakeyword{imports}}}} \\
     1.8 -        &            & \multicolumn{3}{l}{~~\mbox{\isa{\isakeyword{begin}}}} \\
     1.9 +        &            & \multicolumn{3}{l}{~~\hyperlink{keyword.imports}{\mbox{\isa{\isakeyword{imports}}}}} \\
    1.10 +        &            & \multicolumn{3}{l}{~~\hyperlink{keyword.begin}{\mbox{\isa{\isakeyword{begin}}}}} \\
    1.11          &            & $\vdots$~~ \\
    1.12          &            & \isa{{\isasymbullet}}~~ \\
    1.13          &            & $\vdots$~~ \\
    1.14          &            & \isa{{\isasymbullet}}~~ \\
    1.15          &            & $\vdots$~~ \\
    1.16 -        &            & \multicolumn{3}{l}{~~\mbox{\isa{\isacommand{end}}}} \\
    1.17 +        &            & \multicolumn{3}{l}{~~\hyperlink{command.end}{\mbox{\isa{\isacommand{end}}}}} \\
    1.18    \end{tabular}
    1.19    \caption{A theory definition depending on ancestors}\label{fig:ex-theory}
    1.20    \end{center}
     2.1 --- a/doc-src/IsarRef/Thy/document/Generic.tex	Thu May 15 17:37:21 2008 +0200
     2.2 +++ b/doc-src/IsarRef/Thy/document/Generic.tex	Thu May 15 17:39:20 2008 +0200
     2.3 @@ -34,17 +34,17 @@
     2.4  %
     2.5  \begin{isamarkuptext}%
     2.6  \begin{matharray}{rcll}
     2.7 -    \indexdef{}{command}{axiomatization}\mbox{\isa{\isacommand{axiomatization}}} & : & \isarkeep{local{\dsh}theory} & (axiomatic!)\\
     2.8 -    \indexdef{}{command}{definition}\mbox{\isa{\isacommand{definition}}} & : & \isarkeep{local{\dsh}theory} \\
     2.9 -    \indexdef{}{attribute}{defn}\mbox{\isa{defn}} & : & \isaratt \\
    2.10 -    \indexdef{}{command}{abbreviation}\mbox{\isa{\isacommand{abbreviation}}} & : & \isarkeep{local{\dsh}theory} \\
    2.11 -    \indexdef{}{command}{print\_abbrevs}\mbox{\isa{\isacommand{print{\isacharunderscore}abbrevs}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
    2.12 -    \indexdef{}{command}{notation}\mbox{\isa{\isacommand{notation}}} & : & \isarkeep{local{\dsh}theory} \\
    2.13 -    \indexdef{}{command}{no\_notation}\mbox{\isa{\isacommand{no{\isacharunderscore}notation}}} & : & \isarkeep{local{\dsh}theory} \\
    2.14 +    \indexdef{}{command}{axiomatization}\hypertarget{command.axiomatization}{\hyperlink{command.axiomatization}{\mbox{\isa{\isacommand{axiomatization}}}}} & : & \isarkeep{local{\dsh}theory} & (axiomatic!)\\
    2.15 +    \indexdef{}{command}{definition}\hypertarget{command.definition}{\hyperlink{command.definition}{\mbox{\isa{\isacommand{definition}}}}} & : & \isarkeep{local{\dsh}theory} \\
    2.16 +    \indexdef{}{attribute}{defn}\hypertarget{attribute.defn}{\hyperlink{attribute.defn}{\mbox{\isa{defn}}}} & : & \isaratt \\
    2.17 +    \indexdef{}{command}{abbreviation}\hypertarget{command.abbreviation}{\hyperlink{command.abbreviation}{\mbox{\isa{\isacommand{abbreviation}}}}} & : & \isarkeep{local{\dsh}theory} \\
    2.18 +    \indexdef{}{command}{print\_abbrevs}\hypertarget{command.print_abbrevs}{\hyperlink{command.print_abbrevs}{\mbox{\isa{\isacommand{print{\isacharunderscore}abbrevs}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
    2.19 +    \indexdef{}{command}{notation}\hypertarget{command.notation}{\hyperlink{command.notation}{\mbox{\isa{\isacommand{notation}}}}} & : & \isarkeep{local{\dsh}theory} \\
    2.20 +    \indexdef{}{command}{no\_notation}\hypertarget{command.no_notation}{\hyperlink{command.no_notation}{\mbox{\isa{\isacommand{no{\isacharunderscore}notation}}}}} & : & \isarkeep{local{\dsh}theory} \\
    2.21    \end{matharray}
    2.22  
    2.23    These specification mechanisms provide a slightly more abstract view
    2.24 -  than the underlying primitives of \mbox{\isa{\isacommand{consts}}}, \mbox{\isa{\isacommand{defs}}} (see \secref{sec:consts}), and \mbox{\isa{\isacommand{axioms}}} (see
    2.25 +  than the underlying primitives of \hyperlink{command.consts}{\mbox{\isa{\isacommand{consts}}}}, \hyperlink{command.defs}{\mbox{\isa{\isacommand{defs}}}} (see \secref{sec:consts}), and \hyperlink{command.axioms}{\mbox{\isa{\isacommand{axioms}}}} (see
    2.26    \secref{sec:axms-thms}).  In particular, type-inference is commonly
    2.27    available, and result names need not be given.
    2.28  
    2.29 @@ -68,7 +68,7 @@
    2.30  
    2.31    \begin{descr}
    2.32    
    2.33 -  \item [\mbox{\isa{\isacommand{axiomatization}}}~\isa{{\isachardoublequote}c\isactrlsub {\isadigit{1}}\ {\isasymdots}\ c\isactrlsub m\ {\isasymWHERE}\ {\isasymphi}\isactrlsub {\isadigit{1}}\ {\isasymdots}\ {\isasymphi}\isactrlsub n{\isachardoublequote}}] introduces several constants
    2.34 +  \item [\hyperlink{command.axiomatization}{\mbox{\isa{\isacommand{axiomatization}}}}~\isa{{\isachardoublequote}c\isactrlsub {\isadigit{1}}\ {\isasymdots}\ c\isactrlsub m\ {\isasymWHERE}\ {\isasymphi}\isactrlsub {\isadigit{1}}\ {\isasymdots}\ {\isasymphi}\isactrlsub n{\isachardoublequote}}] introduces several constants
    2.35    simultaneously and states axiomatic properties for these.  The
    2.36    constants are marked as being specified once and for all, which
    2.37    prevents additional specifications being issued later on.
    2.38 @@ -77,20 +77,20 @@
    2.39    declaring a new logical system.  Normal applications should only use
    2.40    definitional mechanisms!
    2.41  
    2.42 -  \item [\mbox{\isa{\isacommand{definition}}}~\isa{{\isachardoublequote}c\ {\isasymWHERE}\ eq{\isachardoublequote}}] produces an
    2.43 +  \item [\hyperlink{command.definition}{\mbox{\isa{\isacommand{definition}}}}~\isa{{\isachardoublequote}c\ {\isasymWHERE}\ eq{\isachardoublequote}}] produces an
    2.44    internal definition \isa{{\isachardoublequote}c\ {\isasymequiv}\ t{\isachardoublequote}} according to the specification
    2.45    given as \isa{eq}, which is then turned into a proven fact.  The
    2.46    given proposition may deviate from internal meta-level equality
    2.47 -  according to the rewrite rules declared as \mbox{\isa{defn}} by the
    2.48 +  according to the rewrite rules declared as \hyperlink{attribute.defn}{\mbox{\isa{defn}}} by the
    2.49    object-logic.  This usually covers object-level equality \isa{{\isachardoublequote}x\ {\isacharequal}\ y{\isachardoublequote}} and equivalence \isa{{\isachardoublequote}A\ {\isasymleftrightarrow}\ B{\isachardoublequote}}.  End-users normally need not
    2.50 -  change the \mbox{\isa{defn}} setup.
    2.51 +  change the \hyperlink{attribute.defn}{\mbox{\isa{defn}}} setup.
    2.52    
    2.53    Definitions may be presented with explicit arguments on the LHS, as
    2.54    well as additional conditions, e.g.\ \isa{{\isachardoublequote}f\ x\ y\ {\isacharequal}\ t{\isachardoublequote}} instead of
    2.55    \isa{{\isachardoublequote}f\ {\isasymequiv}\ {\isasymlambda}x\ y{\isachardot}\ t{\isachardoublequote}} and \isa{{\isachardoublequote}y\ {\isasymnoteq}\ {\isadigit{0}}\ {\isasymLongrightarrow}\ g\ x\ y\ {\isacharequal}\ u{\isachardoublequote}} instead of an
    2.56    unrestricted \isa{{\isachardoublequote}g\ {\isasymequiv}\ {\isasymlambda}x\ y{\isachardot}\ u{\isachardoublequote}}.
    2.57    
    2.58 -  \item [\mbox{\isa{\isacommand{abbreviation}}}~\isa{{\isachardoublequote}c\ {\isasymWHERE}\ eq{\isachardoublequote}}] introduces
    2.59 +  \item [\hyperlink{command.abbreviation}{\mbox{\isa{\isacommand{abbreviation}}}}~\isa{{\isachardoublequote}c\ {\isasymWHERE}\ eq{\isachardoublequote}}] introduces
    2.60    a syntactic constant which is associated with a certain term
    2.61    according to the meta-level equality \isa{eq}.
    2.62    
    2.63 @@ -103,20 +103,20 @@
    2.64    The optional \isa{mode} specification restricts output to a
    2.65    particular print mode; using ``\isa{input}'' here achieves the
    2.66    effect of one-way abbreviations.  The mode may also include an
    2.67 -  ``\mbox{\isa{\isakeyword{output}}}'' qualifier that affects the concrete syntax
    2.68 -  declared for abbreviations, cf.\ \mbox{\isa{\isacommand{syntax}}} in
    2.69 +  ``\hyperlink{keyword.output}{\mbox{\isa{\isakeyword{output}}}}'' qualifier that affects the concrete syntax
    2.70 +  declared for abbreviations, cf.\ \hyperlink{command.syntax}{\mbox{\isa{\isacommand{syntax}}}} in
    2.71    \secref{sec:syn-trans}.
    2.72    
    2.73 -  \item [\mbox{\isa{\isacommand{print{\isacharunderscore}abbrevs}}}] prints all constant abbreviations
    2.74 +  \item [\hyperlink{command.print_abbrevs}{\mbox{\isa{\isacommand{print{\isacharunderscore}abbrevs}}}}] prints all constant abbreviations
    2.75    of the current context.
    2.76    
    2.77 -  \item [\mbox{\isa{\isacommand{notation}}}~\isa{{\isachardoublequote}c\ {\isacharparenleft}mx{\isacharparenright}{\isachardoublequote}}] associates mixfix
    2.78 +  \item [\hyperlink{command.notation}{\mbox{\isa{\isacommand{notation}}}}~\isa{{\isachardoublequote}c\ {\isacharparenleft}mx{\isacharparenright}{\isachardoublequote}}] associates mixfix
    2.79    syntax with an existing constant or fixed variable.  This is a
    2.80 -  robust interface to the underlying \mbox{\isa{\isacommand{syntax}}} primitive
    2.81 +  robust interface to the underlying \hyperlink{command.syntax}{\mbox{\isa{\isacommand{syntax}}}} primitive
    2.82    (\secref{sec:syn-trans}).  Type declaration and internal syntactic
    2.83    representation of the given entity is retrieved from the context.
    2.84    
    2.85 -  \item [\mbox{\isa{\isacommand{no{\isacharunderscore}notation}}}] is similar to \mbox{\isa{\isacommand{notation}}}, but removes the specified syntax annotation from the
    2.86 +  \item [\hyperlink{command.no_notation}{\mbox{\isa{\isacommand{no{\isacharunderscore}notation}}}}] is similar to \hyperlink{command.notation}{\mbox{\isa{\isacommand{notation}}}}, but removes the specified syntax annotation from the
    2.87    present context.
    2.88  
    2.89    \end{descr}
    2.90 @@ -141,8 +141,8 @@
    2.91    means of an attribute.
    2.92  
    2.93    \begin{matharray}{rcl}
    2.94 -    \indexdef{}{command}{declaration}\mbox{\isa{\isacommand{declaration}}} & : & \isarkeep{local{\dsh}theory} \\
    2.95 -    \indexdef{}{command}{declare}\mbox{\isa{\isacommand{declare}}} & : & \isarkeep{local{\dsh}theory} \\
    2.96 +    \indexdef{}{command}{declaration}\hypertarget{command.declaration}{\hyperlink{command.declaration}{\mbox{\isa{\isacommand{declaration}}}}} & : & \isarkeep{local{\dsh}theory} \\
    2.97 +    \indexdef{}{command}{declare}\hypertarget{command.declare}{\hyperlink{command.declare}{\mbox{\isa{\isacommand{declare}}}}} & : & \isarkeep{local{\dsh}theory} \\
    2.98    \end{matharray}
    2.99  
   2.100    \begin{rail}
   2.101 @@ -154,16 +154,16 @@
   2.102  
   2.103    \begin{descr}
   2.104  
   2.105 -  \item [\mbox{\isa{\isacommand{declaration}}}~\isa{d}] adds the declaration
   2.106 +  \item [\hyperlink{command.declaration}{\mbox{\isa{\isacommand{declaration}}}}~\isa{d}] adds the declaration
   2.107    function \isa{d} of ML type \verb|declaration|, to the current
   2.108    local theory under construction.  In later application contexts, the
   2.109    function is transformed according to the morphisms being involved in
   2.110    the interpretation hierarchy.
   2.111  
   2.112 -  \item [\mbox{\isa{\isacommand{declare}}}~\isa{thms}] declares theorems to the
   2.113 +  \item [\hyperlink{command.declare}{\mbox{\isa{\isacommand{declare}}}}~\isa{thms}] declares theorems to the
   2.114    current local theory context.  No theorem binding is involved here,
   2.115 -  unlike \mbox{\isa{\isacommand{theorems}}} or \mbox{\isa{\isacommand{lemmas}}} (cf.\
   2.116 -  \secref{sec:axms-thms}), so \mbox{\isa{\isacommand{declare}}} only has the effect
   2.117 +  unlike \hyperlink{command.theorems}{\mbox{\isa{\isacommand{theorems}}}} or \hyperlink{command.lemmas}{\mbox{\isa{\isacommand{lemmas}}}} (cf.\
   2.118 +  \secref{sec:axms-thms}), so \hyperlink{command.declare}{\mbox{\isa{\isacommand{declare}}}} only has the effect
   2.119    of applying attributes as included in the theorem specification.
   2.120  
   2.121    \end{descr}%
   2.122 @@ -184,8 +184,8 @@
   2.123    global theory context.
   2.124  
   2.125    \begin{matharray}{rcll}
   2.126 -    \indexdef{}{command}{context}\mbox{\isa{\isacommand{context}}} & : & \isartrans{theory}{local{\dsh}theory} \\
   2.127 -    \indexdef{}{command}{end}\mbox{\isa{\isacommand{end}}} & : & \isartrans{local{\dsh}theory}{theory} \\
   2.128 +    \indexdef{}{command}{context}\hypertarget{command.context}{\hyperlink{command.context}{\mbox{\isa{\isacommand{context}}}}} & : & \isartrans{theory}{local{\dsh}theory} \\
   2.129 +    \indexdef{}{command}{end}\hypertarget{command.end}{\hyperlink{command.end}{\mbox{\isa{\isacommand{end}}}}} & : & \isartrans{local{\dsh}theory}{theory} \\
   2.130    \end{matharray}
   2.131  
   2.132    \indexouternonterm{target}
   2.133 @@ -199,19 +199,19 @@
   2.134  
   2.135    \begin{descr}
   2.136    
   2.137 -  \item [\mbox{\isa{\isacommand{context}}}~\isa{{\isachardoublequote}c\ {\isasymBEGIN}{\isachardoublequote}}] recommences an
   2.138 +  \item [\hyperlink{command.context}{\mbox{\isa{\isacommand{context}}}}~\isa{{\isachardoublequote}c\ {\isasymBEGIN}{\isachardoublequote}}] recommences an
   2.139    existing locale or class context \isa{c}.  Note that locale and
   2.140 -  class definitions allow to include the \indexref{}{keyword}{begin}\mbox{\isa{\isakeyword{begin}}}
   2.141 +  class definitions allow to include the \indexref{}{keyword}{begin}\hyperlink{keyword.begin}{\mbox{\isa{\isakeyword{begin}}}}
   2.142    keyword as well, in order to continue the local theory immediately
   2.143    after the initial specification.
   2.144    
   2.145 -  \item [\mbox{\isa{\isacommand{end}}}] concludes the current local theory and
   2.146 +  \item [\hyperlink{command.end}{\mbox{\isa{\isacommand{end}}}}] concludes the current local theory and
   2.147    continues the enclosing global theory.  Note that a non-local
   2.148 -  \mbox{\isa{\isacommand{end}}} has a different meaning: it concludes the theory
   2.149 +  \hyperlink{command.end}{\mbox{\isa{\isacommand{end}}}} has a different meaning: it concludes the theory
   2.150    itself (\secref{sec:begin-thy}).
   2.151    
   2.152    \item [\isa{{\isachardoublequote}{\isacharparenleft}{\isasymIN}\ c{\isacharparenright}{\isachardoublequote}}] given after any local theory command
   2.153 -  specifies an immediate target, e.g.\ ``\mbox{\isa{\isacommand{definition}}}~\isa{{\isachardoublequote}{\isacharparenleft}{\isasymIN}\ c{\isacharparenright}\ {\isasymdots}{\isachardoublequote}}'' or ``\mbox{\isa{\isacommand{theorem}}}~\isa{{\isachardoublequote}{\isacharparenleft}{\isasymIN}\ c{\isacharparenright}\ {\isasymdots}{\isachardoublequote}}''.  This works both in a local or
   2.154 +  specifies an immediate target, e.g.\ ``\hyperlink{command.definition}{\mbox{\isa{\isacommand{definition}}}}~\isa{{\isachardoublequote}{\isacharparenleft}{\isasymIN}\ c{\isacharparenright}\ {\isasymdots}{\isachardoublequote}}'' or ``\hyperlink{command.theorem}{\mbox{\isa{\isacommand{theorem}}}}~\isa{{\isachardoublequote}{\isacharparenleft}{\isasymIN}\ c{\isacharparenright}\ {\isasymdots}{\isachardoublequote}}''.  This works both in a local or
   2.155    global theory context; the current target context will be suspended
   2.156    for this command only.  Note that ``\isa{{\isachardoublequote}{\isacharparenleft}{\isasymIN}\ {\isacharminus}{\isacharparenright}{\isachardoublequote}}'' will
   2.157    always produce a global result independently of the current target
   2.158 @@ -255,11 +255,11 @@
   2.159  %
   2.160  \begin{isamarkuptext}%
   2.161  \begin{matharray}{rcl}
   2.162 -    \indexdef{}{command}{locale}\mbox{\isa{\isacommand{locale}}} & : & \isartrans{theory}{local{\dsh}theory} \\
   2.163 -    \indexdef{}{command}{print\_locale}\mbox{\isa{\isacommand{print{\isacharunderscore}locale}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
   2.164 -    \indexdef{}{command}{print\_locales}\mbox{\isa{\isacommand{print{\isacharunderscore}locales}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
   2.165 -    \indexdef{}{method}{intro\_locales}\mbox{\isa{intro{\isacharunderscore}locales}} & : & \isarmeth \\
   2.166 -    \indexdef{}{method}{unfold\_locales}\mbox{\isa{unfold{\isacharunderscore}locales}} & : & \isarmeth \\
   2.167 +    \indexdef{}{command}{locale}\hypertarget{command.locale}{\hyperlink{command.locale}{\mbox{\isa{\isacommand{locale}}}}} & : & \isartrans{theory}{local{\dsh}theory} \\
   2.168 +    \indexdef{}{command}{print\_locale}\hypertarget{command.print_locale}{\hyperlink{command.print_locale}{\mbox{\isa{\isacommand{print{\isacharunderscore}locale}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
   2.169 +    \indexdef{}{command}{print\_locales}\hypertarget{command.print_locales}{\hyperlink{command.print_locales}{\mbox{\isa{\isacommand{print{\isacharunderscore}locales}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
   2.170 +    \indexdef{}{method}{intro\_locales}\hypertarget{method.intro_locales}{\hyperlink{method.intro_locales}{\mbox{\isa{intro{\isacharunderscore}locales}}}} & : & \isarmeth \\
   2.171 +    \indexdef{}{method}{unfold\_locales}\hypertarget{method.unfold_locales}{\hyperlink{method.unfold_locales}{\mbox{\isa{unfold{\isacharunderscore}locales}}}} & : & \isarmeth \\
   2.172    \end{matharray}
   2.173  
   2.174    \indexouternonterm{contextexpr}\indexouternonterm{contextelem}
   2.175 @@ -294,11 +294,11 @@
   2.176  
   2.177    \begin{descr}
   2.178    
   2.179 -  \item [\mbox{\isa{\isacommand{locale}}}~\isa{{\isachardoublequote}loc\ {\isacharequal}\ import\ {\isacharplus}\ body{\isachardoublequote}}] defines a
   2.180 +  \item [\hyperlink{command.locale}{\mbox{\isa{\isacommand{locale}}}}~\isa{{\isachardoublequote}loc\ {\isacharequal}\ import\ {\isacharplus}\ body{\isachardoublequote}}] defines a
   2.181    new locale \isa{loc} as a context consisting of a certain view of
   2.182    existing locales (\isa{import}) plus some additional elements
   2.183    (\isa{body}).  Both \isa{import} and \isa{body} are optional;
   2.184 -  the degenerate form \mbox{\isa{\isacommand{locale}}}~\isa{loc} defines an empty
   2.185 +  the degenerate form \hyperlink{command.locale}{\mbox{\isa{\isacommand{locale}}}}~\isa{loc} defines an empty
   2.186    locale, which may still be useful to collect declarations of facts
   2.187    later on.  Type-inference on locale expressions automatically takes
   2.188    care of the most general typing that the combined context elements
   2.189 @@ -320,31 +320,31 @@
   2.190  
   2.191    \begin{descr}
   2.192  
   2.193 -  \item [\mbox{\isa{\isakeyword{fixes}}}~\isa{{\isachardoublequote}x\ {\isacharcolon}{\isacharcolon}\ {\isasymtau}\ {\isacharparenleft}mx{\isacharparenright}{\isachardoublequote}}] declares a local
   2.194 +  \item [\hyperlink{element.fixes}{\mbox{\isa{\isakeyword{fixes}}}}~\isa{{\isachardoublequote}x\ {\isacharcolon}{\isacharcolon}\ {\isasymtau}\ {\isacharparenleft}mx{\isacharparenright}{\isachardoublequote}}] declares a local
   2.195    parameter of type \isa{{\isasymtau}} and mixfix annotation \isa{mx} (both
   2.196    are optional).  The special syntax declaration ``\isa{{\isachardoublequote}{\isacharparenleft}{\isasymSTRUCTURE}{\isacharparenright}{\isachardoublequote}}'' means that \isa{x} may be referenced
   2.197    implicitly in this context.
   2.198  
   2.199 -  \item [\mbox{\isa{\isakeyword{constrains}}}~\isa{{\isachardoublequote}x\ {\isacharcolon}{\isacharcolon}\ {\isasymtau}{\isachardoublequote}}] introduces a type
   2.200 +  \item [\hyperlink{element.constrains}{\mbox{\isa{\isakeyword{constrains}}}}~\isa{{\isachardoublequote}x\ {\isacharcolon}{\isacharcolon}\ {\isasymtau}{\isachardoublequote}}] introduces a type
   2.201    constraint \isa{{\isasymtau}} on the local parameter \isa{x}.
   2.202  
   2.203 -  \item [\mbox{\isa{\isakeyword{assumes}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}\isactrlsub {\isadigit{1}}\ {\isasymdots}\ {\isasymphi}\isactrlsub n{\isachardoublequote}}]
   2.204 -  introduces local premises, similar to \mbox{\isa{\isacommand{assume}}} within a
   2.205 +  \item [\hyperlink{element.assumes}{\mbox{\isa{\isakeyword{assumes}}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}\isactrlsub {\isadigit{1}}\ {\isasymdots}\ {\isasymphi}\isactrlsub n{\isachardoublequote}}]
   2.206 +  introduces local premises, similar to \hyperlink{command.assume}{\mbox{\isa{\isacommand{assume}}}} within a
   2.207    proof (cf.\ \secref{sec:proof-context}).
   2.208  
   2.209 -  \item [\mbox{\isa{\isakeyword{defines}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ x\ {\isasymequiv}\ t{\isachardoublequote}}] defines a previously
   2.210 -  declared parameter.  This is similar to \mbox{\isa{\isacommand{def}}} within a
   2.211 -  proof (cf.\ \secref{sec:proof-context}), but \mbox{\isa{\isakeyword{defines}}}
   2.212 +  \item [\hyperlink{element.defines}{\mbox{\isa{\isakeyword{defines}}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ x\ {\isasymequiv}\ t{\isachardoublequote}}] defines a previously
   2.213 +  declared parameter.  This is similar to \hyperlink{command.def}{\mbox{\isa{\isacommand{def}}}} within a
   2.214 +  proof (cf.\ \secref{sec:proof-context}), but \hyperlink{element.defines}{\mbox{\isa{\isakeyword{defines}}}}
   2.215    takes an equational proposition instead of variable-term pair.  The
   2.216    left-hand side of the equation may have additional arguments, e.g.\
   2.217 -  ``\mbox{\isa{\isakeyword{defines}}}~\isa{{\isachardoublequote}f\ x\isactrlsub {\isadigit{1}}\ {\isasymdots}\ x\isactrlsub n\ {\isasymequiv}\ t{\isachardoublequote}}''.
   2.218 +  ``\hyperlink{element.defines}{\mbox{\isa{\isakeyword{defines}}}}~\isa{{\isachardoublequote}f\ x\isactrlsub {\isadigit{1}}\ {\isasymdots}\ x\isactrlsub n\ {\isasymequiv}\ t{\isachardoublequote}}''.
   2.219  
   2.220 -  \item [\mbox{\isa{\isakeyword{notes}}}~\isa{{\isachardoublequote}a\ {\isacharequal}\ b\isactrlsub {\isadigit{1}}\ {\isasymdots}\ b\isactrlsub n{\isachardoublequote}}]
   2.221 +  \item [\hyperlink{element.notes}{\mbox{\isa{\isakeyword{notes}}}}~\isa{{\isachardoublequote}a\ {\isacharequal}\ b\isactrlsub {\isadigit{1}}\ {\isasymdots}\ b\isactrlsub n{\isachardoublequote}}]
   2.222    reconsiders facts within a local context.  Most notably, this may
   2.223    include arbitrary declarations in any attribute specifications
   2.224 -  included here, e.g.\ a local \mbox{\isa{simp}} rule.
   2.225 +  included here, e.g.\ a local \hyperlink{attribute.simp}{\mbox{\isa{simp}}} rule.
   2.226  
   2.227 -  \item [\mbox{\isa{\isakeyword{includes}}}~\isa{c}] copies the specified context
   2.228 +  \item [\hyperlink{element.includes}{\mbox{\isa{\isakeyword{includes}}}}~\isa{c}] copies the specified context
   2.229    in a statically scoped manner.  Only available in the long goal
   2.230    format of \secref{sec:goals}.
   2.231  
   2.232 @@ -356,7 +356,7 @@
   2.233    \end{descr}
   2.234    
   2.235    Note that ``\isa{{\isachardoublequote}{\isacharparenleft}{\isasymIS}\ p\isactrlsub {\isadigit{1}}\ {\isasymdots}\ p\isactrlsub n{\isacharparenright}{\isachardoublequote}}'' patterns given
   2.236 -  in the syntax of \mbox{\isa{\isakeyword{assumes}}} and \mbox{\isa{\isakeyword{defines}}} above
   2.237 +  in the syntax of \hyperlink{element.assumes}{\mbox{\isa{\isakeyword{assumes}}}} and \hyperlink{element.defines}{\mbox{\isa{\isakeyword{defines}}}} above
   2.238    are illegal in locale definitions.  In the long goal format of
   2.239    \secref{sec:goals}, term bindings may be included as expected,
   2.240    though.
   2.241 @@ -382,24 +382,24 @@
   2.242    constructions.  Predicates are also omitted for empty specification
   2.243    texts.
   2.244  
   2.245 -  \item [\mbox{\isa{\isacommand{print{\isacharunderscore}locale}}}~\isa{{\isachardoublequote}import\ {\isacharplus}\ body{\isachardoublequote}}] prints the
   2.246 +  \item [\hyperlink{command.print_locale}{\mbox{\isa{\isacommand{print{\isacharunderscore}locale}}}}~\isa{{\isachardoublequote}import\ {\isacharplus}\ body{\isachardoublequote}}] prints the
   2.247    specified locale expression in a flattened form.  The notable
   2.248 -  special case \mbox{\isa{\isacommand{print{\isacharunderscore}locale}}}~\isa{loc} just prints the
   2.249 +  special case \hyperlink{command.print_locale}{\mbox{\isa{\isacommand{print{\isacharunderscore}locale}}}}~\isa{loc} just prints the
   2.250    contents of the named locale, but keep in mind that type-inference
   2.251    will normalize type variables according to the usual alphabetical
   2.252 -  order.  The command omits \mbox{\isa{\isakeyword{notes}}} elements by default.
   2.253 -  Use \mbox{\isa{\isacommand{print{\isacharunderscore}locale}}}\isa{{\isachardoublequote}{\isacharbang}{\isachardoublequote}} to get them included.
   2.254 +  order.  The command omits \hyperlink{element.notes}{\mbox{\isa{\isakeyword{notes}}}} elements by default.
   2.255 +  Use \hyperlink{command.print_locale}{\mbox{\isa{\isacommand{print{\isacharunderscore}locale}}}}\isa{{\isachardoublequote}{\isacharbang}{\isachardoublequote}} to get them included.
   2.256  
   2.257 -  \item [\mbox{\isa{\isacommand{print{\isacharunderscore}locales}}}] prints the names of all locales
   2.258 +  \item [\hyperlink{command.print_locales}{\mbox{\isa{\isacommand{print{\isacharunderscore}locales}}}}] prints the names of all locales
   2.259    of the current theory.
   2.260  
   2.261 -  \item [\mbox{\isa{intro{\isacharunderscore}locales}} and \mbox{\isa{unfold{\isacharunderscore}locales}}]
   2.262 +  \item [\hyperlink{method.intro_locales}{\mbox{\isa{intro{\isacharunderscore}locales}}} and \hyperlink{method.unfold_locales}{\mbox{\isa{unfold{\isacharunderscore}locales}}}]
   2.263    repeatedly expand all introduction rules of locale predicates of the
   2.264 -  theory.  While \mbox{\isa{intro{\isacharunderscore}locales}} only applies the \isa{loc{\isachardot}intro} introduction rules and therefore does not decend to
   2.265 -  assumptions, \mbox{\isa{unfold{\isacharunderscore}locales}} is more aggressive and applies
   2.266 +  theory.  While \hyperlink{method.intro_locales}{\mbox{\isa{intro{\isacharunderscore}locales}}} only applies the \isa{loc{\isachardot}intro} introduction rules and therefore does not decend to
   2.267 +  assumptions, \hyperlink{method.unfold_locales}{\mbox{\isa{unfold{\isacharunderscore}locales}}} is more aggressive and applies
   2.268    \isa{loc{\isacharunderscore}axioms{\isachardot}intro} as well.  Both methods are aware of locale
   2.269    specifications entailed by the context, both from target and
   2.270 -  \mbox{\isa{\isakeyword{includes}}} statements, and from interpretations (see
   2.271 +  \hyperlink{element.includes}{\mbox{\isa{\isakeyword{includes}}}} statements, and from interpretations (see
   2.272    below).  New goals that are entailed by the current context are
   2.273    discharged automatically.
   2.274  
   2.275 @@ -416,12 +416,12 @@
   2.276    be instantiated, and the instantiated facts added to the current
   2.277    context.  This requires a proof of the instantiated specification
   2.278    and is called \emph{locale interpretation}.  Interpretation is
   2.279 -  possible in theories and locales (command \mbox{\isa{\isacommand{interpretation}}}) and also within a proof body (command \mbox{\isa{\isacommand{interpret}}}).
   2.280 +  possible in theories and locales (command \hyperlink{command.interpretation}{\mbox{\isa{\isacommand{interpretation}}}}) and also within a proof body (command \hyperlink{command.interpret}{\mbox{\isa{\isacommand{interpret}}}}).
   2.281  
   2.282    \begin{matharray}{rcl}
   2.283 -    \indexdef{}{command}{interpretation}\mbox{\isa{\isacommand{interpretation}}} & : & \isartrans{theory}{proof(prove)} \\
   2.284 -    \indexdef{}{command}{interpret}\mbox{\isa{\isacommand{interpret}}} & : & \isartrans{proof(state) ~|~ proof(chain)}{proof(prove)} \\
   2.285 -    \indexdef{}{command}{print\_interps}\mbox{\isa{\isacommand{print{\isacharunderscore}interps}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : &  \isarkeep{theory~|~proof} \\
   2.286 +    \indexdef{}{command}{interpretation}\hypertarget{command.interpretation}{\hyperlink{command.interpretation}{\mbox{\isa{\isacommand{interpretation}}}}} & : & \isartrans{theory}{proof(prove)} \\
   2.287 +    \indexdef{}{command}{interpret}\hypertarget{command.interpret}{\hyperlink{command.interpret}{\mbox{\isa{\isacommand{interpret}}}}} & : & \isartrans{proof(state) ~|~ proof(chain)}{proof(prove)} \\
   2.288 +    \indexdef{}{command}{print\_interps}\hypertarget{command.print_interps}{\hyperlink{command.print_interps}{\mbox{\isa{\isacommand{print{\isacharunderscore}interps}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : &  \isarkeep{theory~|~proof} \\
   2.289    \end{matharray}
   2.290  
   2.291    \indexouternonterm{interp}
   2.292 @@ -441,9 +441,9 @@
   2.293  
   2.294    \begin{descr}
   2.295  
   2.296 -  \item [\mbox{\isa{\isacommand{interpretation}}}~\isa{{\isachardoublequote}expr\ insts\ {\isasymWHERE}\ eqns{\isachardoublequote}}]
   2.297 +  \item [\hyperlink{command.interpretation}{\mbox{\isa{\isacommand{interpretation}}}}~\isa{{\isachardoublequote}expr\ insts\ {\isasymWHERE}\ eqns{\isachardoublequote}}]
   2.298  
   2.299 -  The first form of \mbox{\isa{\isacommand{interpretation}}} interprets \isa{expr} in the theory.  The instantiation is given as a list of terms
   2.300 +  The first form of \hyperlink{command.interpretation}{\mbox{\isa{\isacommand{interpretation}}}} interprets \isa{expr} in the theory.  The instantiation is given as a list of terms
   2.301    \isa{insts} and is positional.  All parameters must receive an
   2.302    instantiation term --- with the exception of defined parameters.
   2.303    These are, if omitted, derived from the defining equation and other
   2.304 @@ -455,7 +455,7 @@
   2.305    in a post-processing phase.
   2.306  
   2.307    Additional equations, which are unfolded in facts during
   2.308 -  post-processing, may be given after the keyword \mbox{\isa{\isakeyword{where}}}.
   2.309 +  post-processing, may be given after the keyword \hyperlink{keyword.where}{\mbox{\isa{\isakeyword{where}}}}.
   2.310    This is useful for interpreting concepts introduced through
   2.311    definition specification elements.  The equations must be proved.
   2.312    Note that if equations are present, the context expression is
   2.313 @@ -480,7 +480,7 @@
   2.314    interpretations dynamically participate in any facts added to
   2.315    locales.
   2.316  
   2.317 -  \item [\mbox{\isa{\isacommand{interpretation}}}~\isa{{\isachardoublequote}name\ {\isasymsubseteq}\ expr{\isachardoublequote}}]
   2.318 +  \item [\hyperlink{command.interpretation}{\mbox{\isa{\isacommand{interpretation}}}}~\isa{{\isachardoublequote}name\ {\isasymsubseteq}\ expr{\isachardoublequote}}]
   2.319  
   2.320    This form of the command interprets \isa{expr} in the locale
   2.321    \isa{name}.  It requires a proof that the specification of \isa{name} implies the specification of \isa{expr}.  As in the
   2.322 @@ -507,11 +507,11 @@
   2.323    prefix and attributes, although only for fragments of \isa{expr}
   2.324    that are not interpreted in the theory already.
   2.325  
   2.326 -  \item [\mbox{\isa{\isacommand{interpret}}}~\isa{{\isachardoublequote}expr\ insts\ {\isasymWHERE}\ eqns{\isachardoublequote}}]
   2.327 +  \item [\hyperlink{command.interpret}{\mbox{\isa{\isacommand{interpret}}}}~\isa{{\isachardoublequote}expr\ insts\ {\isasymWHERE}\ eqns{\isachardoublequote}}]
   2.328    interprets \isa{expr} in the proof context and is otherwise
   2.329    similar to interpretation in theories.
   2.330  
   2.331 -  \item [\mbox{\isa{\isacommand{print{\isacharunderscore}interps}}}~\isa{loc}] prints the
   2.332 +  \item [\hyperlink{command.print_interps}{\mbox{\isa{\isacommand{print{\isacharunderscore}interps}}}}~\isa{loc}] prints the
   2.333    interpretations of a particular locale \isa{loc} that are active
   2.334    in the current context, either theory or proof context.  The
   2.335    exclamation point argument triggers printing of \emph{witness}
   2.336 @@ -556,12 +556,12 @@
   2.337    tutorial.
   2.338  
   2.339    \begin{matharray}{rcl}
   2.340 -    \indexdef{}{command}{class}\mbox{\isa{\isacommand{class}}} & : & \isartrans{theory}{local{\dsh}theory} \\
   2.341 -    \indexdef{}{command}{instantiation}\mbox{\isa{\isacommand{instantiation}}} & : & \isartrans{theory}{local{\dsh}theory} \\
   2.342 -    \indexdef{}{command}{instance}\mbox{\isa{\isacommand{instance}}} & : & \isartrans{local{\dsh}theory}{local{\dsh}theory} \\
   2.343 -    \indexdef{}{command}{subclass}\mbox{\isa{\isacommand{subclass}}} & : & \isartrans{local{\dsh}theory}{local{\dsh}theory} \\
   2.344 -    \indexdef{}{command}{print\_classes}\mbox{\isa{\isacommand{print{\isacharunderscore}classes}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
   2.345 -    \indexdef{}{method}{intro\_classes}\mbox{\isa{intro{\isacharunderscore}classes}} & : & \isarmeth \\
   2.346 +    \indexdef{}{command}{class}\hypertarget{command.class}{\hyperlink{command.class}{\mbox{\isa{\isacommand{class}}}}} & : & \isartrans{theory}{local{\dsh}theory} \\
   2.347 +    \indexdef{}{command}{instantiation}\hypertarget{command.instantiation}{\hyperlink{command.instantiation}{\mbox{\isa{\isacommand{instantiation}}}}} & : & \isartrans{theory}{local{\dsh}theory} \\
   2.348 +    \indexdef{}{command}{instance}\hypertarget{command.instance}{\hyperlink{command.instance}{\mbox{\isa{\isacommand{instance}}}}} & : & \isartrans{local{\dsh}theory}{local{\dsh}theory} \\
   2.349 +    \indexdef{}{command}{subclass}\hypertarget{command.subclass}{\hyperlink{command.subclass}{\mbox{\isa{\isacommand{subclass}}}}} & : & \isartrans{local{\dsh}theory}{local{\dsh}theory} \\
   2.350 +    \indexdef{}{command}{print\_classes}\hypertarget{command.print_classes}{\hyperlink{command.print_classes}{\mbox{\isa{\isacommand{print{\isacharunderscore}classes}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
   2.351 +    \indexdef{}{method}{intro\_classes}\hypertarget{method.intro_classes}{\hyperlink{method.intro_classes}{\mbox{\isa{intro{\isacharunderscore}classes}}}} & : & \isarmeth \\
   2.352    \end{matharray}
   2.353  
   2.354    \begin{rail}
   2.355 @@ -583,50 +583,50 @@
   2.356  
   2.357    \begin{descr}
   2.358  
   2.359 -  \item [\mbox{\isa{\isacommand{class}}}~\isa{{\isachardoublequote}c\ {\isacharequal}\ superclasses\ {\isacharplus}\ body{\isachardoublequote}}] defines
   2.360 +  \item [\hyperlink{command.class}{\mbox{\isa{\isacommand{class}}}}~\isa{{\isachardoublequote}c\ {\isacharequal}\ superclasses\ {\isacharplus}\ body{\isachardoublequote}}] defines
   2.361    a new class \isa{c}, inheriting from \isa{superclasses}.  This
   2.362    introduces a locale \isa{c} with import of all locales \isa{superclasses}.
   2.363  
   2.364 -  Any \mbox{\isa{\isakeyword{fixes}}} in \isa{body} are lifted to the global
   2.365 +  Any \hyperlink{element.fixes}{\mbox{\isa{\isakeyword{fixes}}}} in \isa{body} are lifted to the global
   2.366    theory level (\emph{class operations} \isa{{\isachardoublequote}f\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ f\isactrlsub n{\isachardoublequote}} of class \isa{c}), mapping the local type parameter
   2.367    \isa{{\isasymalpha}} to a schematic type variable \isa{{\isachardoublequote}{\isacharquery}{\isasymalpha}\ {\isacharcolon}{\isacharcolon}\ c{\isachardoublequote}}.
   2.368  
   2.369 -  Likewise, \mbox{\isa{\isakeyword{assumes}}} in \isa{body} are also lifted,
   2.370 +  Likewise, \hyperlink{element.assumes}{\mbox{\isa{\isakeyword{assumes}}}} in \isa{body} are also lifted,
   2.371    mapping each local parameter \isa{{\isachardoublequote}f\ {\isacharcolon}{\isacharcolon}\ {\isasymtau}{\isacharbrackleft}{\isasymalpha}{\isacharbrackright}{\isachardoublequote}} to its
   2.372    corresponding global constant \isa{{\isachardoublequote}f\ {\isacharcolon}{\isacharcolon}\ {\isasymtau}{\isacharbrackleft}{\isacharquery}{\isasymalpha}\ {\isacharcolon}{\isacharcolon}\ c{\isacharbrackright}{\isachardoublequote}}.  The
   2.373    corresponding introduction rule is provided as \isa{c{\isacharunderscore}class{\isacharunderscore}axioms{\isachardot}intro}.  This rule should be rarely needed directly
   2.374 -  --- the \mbox{\isa{intro{\isacharunderscore}classes}} method takes care of the details of
   2.375 +  --- the \hyperlink{method.intro_classes}{\mbox{\isa{intro{\isacharunderscore}classes}}} method takes care of the details of
   2.376    class membership proofs.
   2.377  
   2.378 -  \item [\mbox{\isa{\isacommand{instantiation}}}~\isa{{\isachardoublequote}t\ {\isacharcolon}{\isacharcolon}\ {\isacharparenleft}s\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ s\isactrlsub n{\isacharparenright}\ s\ {\isasymBEGIN}{\isachardoublequote}}] opens a theory target (cf.\
   2.379 +  \item [\hyperlink{command.instantiation}{\mbox{\isa{\isacommand{instantiation}}}}~\isa{{\isachardoublequote}t\ {\isacharcolon}{\isacharcolon}\ {\isacharparenleft}s\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ s\isactrlsub n{\isacharparenright}\ s\ {\isasymBEGIN}{\isachardoublequote}}] opens a theory target (cf.\
   2.380    \secref{sec:target}) which allows to specify class operations \isa{{\isachardoublequote}f\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ f\isactrlsub n{\isachardoublequote}} corresponding to sort \isa{s} at the
   2.381 -  particular type instance \isa{{\isachardoublequote}{\isacharparenleft}{\isasymalpha}\isactrlsub {\isadigit{1}}\ {\isacharcolon}{\isacharcolon}\ s\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ {\isasymalpha}\isactrlsub n\ {\isacharcolon}{\isacharcolon}\ s\isactrlsub n{\isacharparenright}\ t{\isachardoublequote}}.  A plain \mbox{\isa{\isacommand{instance}}} command
   2.382 +  particular type instance \isa{{\isachardoublequote}{\isacharparenleft}{\isasymalpha}\isactrlsub {\isadigit{1}}\ {\isacharcolon}{\isacharcolon}\ s\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ {\isasymalpha}\isactrlsub n\ {\isacharcolon}{\isacharcolon}\ s\isactrlsub n{\isacharparenright}\ t{\isachardoublequote}}.  A plain \hyperlink{command.instance}{\mbox{\isa{\isacommand{instance}}}} command
   2.383    in the target body poses a goal stating these type arities.  The
   2.384 -  target is concluded by an \indexref{}{command}{end}\mbox{\isa{\isacommand{end}}} command.
   2.385 +  target is concluded by an \indexref{}{command}{end}\hyperlink{command.end}{\mbox{\isa{\isacommand{end}}}} command.
   2.386  
   2.387    Note that a list of simultaneous type constructors may be given;
   2.388    this corresponds nicely to mutual recursive type definitions, e.g.\
   2.389    in Isabelle/HOL.
   2.390  
   2.391 -  \item [\mbox{\isa{\isacommand{instance}}}] in an instantiation target body sets
   2.392 -  up a goal stating the type arities claimed at the opening \mbox{\isa{\isacommand{instantiation}}}.  The proof would usually proceed by \mbox{\isa{intro{\isacharunderscore}classes}}, and then establish the characteristic theorems of
   2.393 +  \item [\hyperlink{command.instance}{\mbox{\isa{\isacommand{instance}}}}] in an instantiation target body sets
   2.394 +  up a goal stating the type arities claimed at the opening \hyperlink{command.instantiation}{\mbox{\isa{\isacommand{instantiation}}}}.  The proof would usually proceed by \hyperlink{method.intro_classes}{\mbox{\isa{intro{\isacharunderscore}classes}}}, and then establish the characteristic theorems of
   2.395    the type classes involved.  After finishing the proof, the
   2.396    background theory will be augmented by the proven type arities.
   2.397  
   2.398 -  \item [\mbox{\isa{\isacommand{subclass}}}~\isa{c}] in a class context for class
   2.399 +  \item [\hyperlink{command.subclass}{\mbox{\isa{\isacommand{subclass}}}}~\isa{c}] in a class context for class
   2.400    \isa{d} sets up a goal stating that class \isa{c} is logically
   2.401    contained in class \isa{d}.  After finishing the proof, class
   2.402    \isa{d} is proven to be subclass \isa{c} and the locale \isa{c} is interpreted into \isa{d} simultaneously.
   2.403  
   2.404 -  \item [\mbox{\isa{\isacommand{print{\isacharunderscore}classes}}}] prints all classes in the current
   2.405 +  \item [\hyperlink{command.print_classes}{\mbox{\isa{\isacommand{print{\isacharunderscore}classes}}}}] prints all classes in the current
   2.406    theory.
   2.407  
   2.408 -  \item [\mbox{\isa{intro{\isacharunderscore}classes}}] repeatedly expands all class
   2.409 +  \item [\hyperlink{method.intro_classes}{\mbox{\isa{intro{\isacharunderscore}classes}}}] repeatedly expands all class
   2.410    introduction rules of this theory.  Note that this method usually
   2.411    needs not be named explicitly, as it is already included in the
   2.412 -  default proof step (e.g.\ of \mbox{\isa{\isacommand{proof}}}).  In particular,
   2.413 +  default proof step (e.g.\ of \hyperlink{command.proof}{\mbox{\isa{\isacommand{proof}}}}).  In particular,
   2.414    instantiation of trivial (syntactic) classes may be performed by a
   2.415 -  single ``\mbox{\isa{\isacommand{{\isachardot}{\isachardot}}}}'' proof step.
   2.416 +  single ``\hyperlink{command.ddot}{\mbox{\isa{\isacommand{{\isachardot}{\isachardot}}}}}'' proof step.
   2.417  
   2.418    \end{descr}%
   2.419  \end{isamarkuptext}%
   2.420 @@ -667,8 +667,8 @@
   2.421  %
   2.422  \begin{isamarkuptext}%
   2.423  \begin{matharray}{rcl}
   2.424 -    \indexdef{}{command}{axclass}\mbox{\isa{\isacommand{axclass}}} & : & \isartrans{theory}{theory} \\
   2.425 -    \indexdef{}{command}{instance}\mbox{\isa{\isacommand{instance}}} & : & \isartrans{theory}{proof(prove)} \\
   2.426 +    \indexdef{}{command}{axclass}\hypertarget{command.axclass}{\hyperlink{command.axclass}{\mbox{\isa{\isacommand{axclass}}}}} & : & \isartrans{theory}{theory} \\
   2.427 +    \indexdef{}{command}{instance}\hypertarget{command.instance}{\hyperlink{command.instance}{\mbox{\isa{\isacommand{instance}}}}} & : & \isartrans{theory}{proof(prove)} \\
   2.428    \end{matharray}
   2.429  
   2.430    Axiomatic type classes are Isabelle/Pure's primitive
   2.431 @@ -685,21 +685,21 @@
   2.432  
   2.433    \begin{descr}
   2.434    
   2.435 -  \item [\mbox{\isa{\isacommand{axclass}}}~\isa{{\isachardoublequote}c\ {\isasymsubseteq}\ c\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ c\isactrlsub n\ axms{\isachardoublequote}}] defines an axiomatic type class as the intersection of
   2.436 +  \item [\hyperlink{command.axclass}{\mbox{\isa{\isacommand{axclass}}}}~\isa{{\isachardoublequote}c\ {\isasymsubseteq}\ c\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ c\isactrlsub n\ axms{\isachardoublequote}}] defines an axiomatic type class as the intersection of
   2.437    existing classes, with additional axioms holding.  Class axioms may
   2.438    not contain more than one type variable.  The class axioms (with
   2.439    implicit sort constraints added) are bound to the given names.
   2.440    Furthermore a class introduction rule is generated (being bound as
   2.441 -  \isa{c{\isacharunderscore}class{\isachardot}intro}); this rule is employed by method \mbox{\isa{intro{\isacharunderscore}classes}} to support instantiation proofs of this class.
   2.442 +  \isa{c{\isacharunderscore}class{\isachardot}intro}); this rule is employed by method \hyperlink{method.intro_classes}{\mbox{\isa{intro{\isacharunderscore}classes}}} to support instantiation proofs of this class.
   2.443    
   2.444    The ``class axioms'' are stored as theorems according to the given
   2.445    name specifications, adding \isa{{\isachardoublequote}c{\isacharunderscore}class{\isachardoublequote}} as name space prefix;
   2.446    the same facts are also stored collectively as \isa{c{\isacharunderscore}class{\isachardot}axioms}.
   2.447    
   2.448 -  \item [\mbox{\isa{\isacommand{instance}}}~\isa{{\isachardoublequote}c\isactrlsub {\isadigit{1}}\ {\isasymsubseteq}\ c\isactrlsub {\isadigit{2}}{\isachardoublequote}} and
   2.449 -  \mbox{\isa{\isacommand{instance}}}~\isa{{\isachardoublequote}t\ {\isacharcolon}{\isacharcolon}\ {\isacharparenleft}s\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ s\isactrlsub n{\isacharparenright}\ s{\isachardoublequote}}]
   2.450 +  \item [\hyperlink{command.instance}{\mbox{\isa{\isacommand{instance}}}}~\isa{{\isachardoublequote}c\isactrlsub {\isadigit{1}}\ {\isasymsubseteq}\ c\isactrlsub {\isadigit{2}}{\isachardoublequote}} and
   2.451 +  \hyperlink{command.instance}{\mbox{\isa{\isacommand{instance}}}}~\isa{{\isachardoublequote}t\ {\isacharcolon}{\isacharcolon}\ {\isacharparenleft}s\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ s\isactrlsub n{\isacharparenright}\ s{\isachardoublequote}}]
   2.452    setup a goal stating a class relation or type arity.  The proof
   2.453 -  would usually proceed by \mbox{\isa{intro{\isacharunderscore}classes}}, and then establish
   2.454 +  would usually proceed by \hyperlink{method.intro_classes}{\mbox{\isa{intro{\isacharunderscore}classes}}}, and then establish
   2.455    the characteristic theorems of the type classes involved.  After
   2.456    finishing the proof, the theory will be augmented by a type
   2.457    signature declaration corresponding to the resulting theorem.
   2.458 @@ -716,13 +716,13 @@
   2.459  Isabelle/Pure's definitional schemes support certain forms of
   2.460    overloading (see \secref{sec:consts}).  At most occassions
   2.461    overloading will be used in a Haskell-like fashion together with
   2.462 -  type classes by means of \mbox{\isa{\isacommand{instantiation}}} (see
   2.463 +  type classes by means of \hyperlink{command.instantiation}{\mbox{\isa{\isacommand{instantiation}}}} (see
   2.464    \secref{sec:class}).  Sometimes low-level overloading is desirable.
   2.465 -  The \mbox{\isa{\isacommand{overloading}}} target provides a convenient view for
   2.466 +  The \hyperlink{command.overloading}{\mbox{\isa{\isacommand{overloading}}}} target provides a convenient view for
   2.467    end-users.
   2.468  
   2.469    \begin{matharray}{rcl}
   2.470 -    \indexdef{}{command}{overloading}\mbox{\isa{\isacommand{overloading}}} & : & \isartrans{theory}{local{\dsh}theory} \\
   2.471 +    \indexdef{}{command}{overloading}\hypertarget{command.overloading}{\hyperlink{command.overloading}{\mbox{\isa{\isacommand{overloading}}}}} & : & \isartrans{theory}{local{\dsh}theory} \\
   2.472    \end{matharray}
   2.473  
   2.474    \begin{rail}
   2.475 @@ -732,14 +732,14 @@
   2.476  
   2.477    \begin{descr}
   2.478  
   2.479 -  \item [\mbox{\isa{\isacommand{overloading}}}~\isa{{\isachardoublequote}x\isactrlsub {\isadigit{1}}\ {\isasymequiv}\ c\isactrlsub {\isadigit{1}}\ {\isacharcolon}{\isacharcolon}\ {\isasymtau}\isactrlsub {\isadigit{1}}\ {\isasymAND}\ {\isasymdots}\ x\isactrlsub n\ {\isasymequiv}\ c\isactrlsub n\ {\isacharcolon}{\isacharcolon}\ {\isasymtau}\isactrlsub n\ {\isasymBEGIN}{\isachardoublequote}}]
   2.480 +  \item [\hyperlink{command.overloading}{\mbox{\isa{\isacommand{overloading}}}}~\isa{{\isachardoublequote}x\isactrlsub {\isadigit{1}}\ {\isasymequiv}\ c\isactrlsub {\isadigit{1}}\ {\isacharcolon}{\isacharcolon}\ {\isasymtau}\isactrlsub {\isadigit{1}}\ {\isasymAND}\ {\isasymdots}\ x\isactrlsub n\ {\isasymequiv}\ c\isactrlsub n\ {\isacharcolon}{\isacharcolon}\ {\isasymtau}\isactrlsub n\ {\isasymBEGIN}{\isachardoublequote}}]
   2.481    opens a theory target (cf.\ \secref{sec:target}) which allows to
   2.482    specify constants with overloaded definitions.  These are identified
   2.483    by an explicitly given mapping from variable names \isa{{\isachardoublequote}x\isactrlsub i{\isachardoublequote}} to constants \isa{{\isachardoublequote}c\isactrlsub i{\isachardoublequote}} at particular type
   2.484    instances.  The definitions themselves are established using common
   2.485    specification tools, using the names \isa{{\isachardoublequote}x\isactrlsub i{\isachardoublequote}} as
   2.486    reference to the corresponding constants.  The target is concluded
   2.487 -  by \mbox{\isa{\isacommand{end}}}.
   2.488 +  by \hyperlink{command.end}{\mbox{\isa{\isacommand{end}}}}.
   2.489  
   2.490    A \isa{{\isachardoublequote}{\isacharparenleft}unchecked{\isacharparenright}{\isachardoublequote}} option disables global dependency checks for
   2.491    the corresponding definition, which is occasionally useful for
   2.492 @@ -761,7 +761,7 @@
   2.493    context).  Thus global reference variables are easily avoided.  The
   2.494    user may change the value of a configuration option by means of an
   2.495    associated attribute of the same name.  This form of context
   2.496 -  declaration works particularly well with commands such as \mbox{\isa{\isacommand{declare}}} or \mbox{\isa{\isacommand{using}}}.
   2.497 +  declaration works particularly well with commands such as \hyperlink{command.declare}{\mbox{\isa{\isacommand{declare}}}} or \hyperlink{command.using}{\mbox{\isa{\isacommand{using}}}}.
   2.498  
   2.499    For historical reasons, some tools cannot take the full proof
   2.500    context into account and merely refer to the background theory.
   2.501 @@ -769,7 +769,7 @@
   2.502    ``global'', which may not be changed within a local context.
   2.503  
   2.504    \begin{matharray}{rcll}
   2.505 -    \indexdef{}{command}{print\_configs}\mbox{\isa{\isacommand{print{\isacharunderscore}configs}}} & : & \isarkeep{theory~|~proof} \\
   2.506 +    \indexdef{}{command}{print\_configs}\hypertarget{command.print_configs}{\hyperlink{command.print_configs}{\mbox{\isa{\isacommand{print{\isacharunderscore}configs}}}}} & : & \isarkeep{theory~|~proof} \\
   2.507    \end{matharray}
   2.508  
   2.509    \begin{rail}
   2.510 @@ -778,7 +778,7 @@
   2.511  
   2.512    \begin{descr}
   2.513    
   2.514 -  \item [\mbox{\isa{\isacommand{print{\isacharunderscore}configs}}}] prints the available
   2.515 +  \item [\hyperlink{command.print_configs}{\mbox{\isa{\isacommand{print{\isacharunderscore}configs}}}}] prints the available
   2.516    configuration options, with names, types, and current values.
   2.517    
   2.518    \item [\isa{{\isachardoublequote}name\ {\isacharequal}\ value{\isachardoublequote}}] as an attribute expression modifies
   2.519 @@ -800,14 +800,14 @@
   2.520  %
   2.521  \begin{isamarkuptext}%
   2.522  \begin{matharray}{rcl}
   2.523 -    \indexdef{}{method}{unfold}\mbox{\isa{unfold}} & : & \isarmeth \\
   2.524 -    \indexdef{}{method}{fold}\mbox{\isa{fold}} & : & \isarmeth \\
   2.525 -    \indexdef{}{method}{insert}\mbox{\isa{insert}} & : & \isarmeth \\[0.5ex]
   2.526 -    \indexdef{}{method}{erule}\mbox{\isa{erule}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   2.527 -    \indexdef{}{method}{drule}\mbox{\isa{drule}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   2.528 -    \indexdef{}{method}{frule}\mbox{\isa{frule}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   2.529 -    \indexdef{}{method}{succeed}\mbox{\isa{succeed}} & : & \isarmeth \\
   2.530 -    \indexdef{}{method}{fail}\mbox{\isa{fail}} & : & \isarmeth \\
   2.531 +    \indexdef{}{method}{unfold}\hypertarget{method.unfold}{\hyperlink{method.unfold}{\mbox{\isa{unfold}}}} & : & \isarmeth \\
   2.532 +    \indexdef{}{method}{fold}\hypertarget{method.fold}{\hyperlink{method.fold}{\mbox{\isa{fold}}}} & : & \isarmeth \\
   2.533 +    \indexdef{}{method}{insert}\hypertarget{method.insert}{\hyperlink{method.insert}{\mbox{\isa{insert}}}} & : & \isarmeth \\[0.5ex]
   2.534 +    \indexdef{}{method}{erule}\hypertarget{method.erule}{\hyperlink{method.erule}{\mbox{\isa{erule}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   2.535 +    \indexdef{}{method}{drule}\hypertarget{method.drule}{\hyperlink{method.drule}{\mbox{\isa{drule}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   2.536 +    \indexdef{}{method}{frule}\hypertarget{method.frule}{\hyperlink{method.frule}{\mbox{\isa{frule}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   2.537 +    \indexdef{}{method}{succeed}\hypertarget{method.succeed}{\hyperlink{method.succeed}{\mbox{\isa{succeed}}}} & : & \isarmeth \\
   2.538 +    \indexdef{}{method}{fail}\hypertarget{method.fail}{\hyperlink{method.fail}{\mbox{\isa{fail}}}} & : & \isarmeth \\
   2.539    \end{matharray}
   2.540  
   2.541    \begin{rail}
   2.542 @@ -819,15 +819,15 @@
   2.543  
   2.544    \begin{descr}
   2.545    
   2.546 -  \item [\mbox{\isa{unfold}}~\isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isachardoublequote}} and \mbox{\isa{fold}}~\isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isachardoublequote}}] expand (or fold back) the
   2.547 +  \item [\hyperlink{method.unfold}{\mbox{\isa{unfold}}}~\isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isachardoublequote}} and \hyperlink{method.fold}{\mbox{\isa{fold}}}~\isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isachardoublequote}}] expand (or fold back) the
   2.548    given definitions throughout all goals; any chained facts provided
   2.549    are inserted into the goal and subject to rewriting as well.
   2.550  
   2.551 -  \item [\mbox{\isa{insert}}~\isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isachardoublequote}}] inserts
   2.552 +  \item [\hyperlink{method.insert}{\mbox{\isa{insert}}}~\isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isachardoublequote}}] inserts
   2.553    theorems as facts into all goals of the proof state.  Note that
   2.554    current facts indicated for forward chaining are ignored.
   2.555  
   2.556 -  \item [\mbox{\isa{erule}}~\isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isachardoublequote}}, \mbox{\isa{drule}}~\isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isachardoublequote}}, and \mbox{\isa{frule}}~\isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isachardoublequote}}] are similar to the basic \mbox{\isa{rule}}
   2.557 +  \item [\hyperlink{method.erule}{\mbox{\isa{erule}}}~\isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isachardoublequote}}, \hyperlink{method.drule}{\mbox{\isa{drule}}}~\isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isachardoublequote}}, and \hyperlink{method.frule}{\mbox{\isa{frule}}}~\isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isachardoublequote}}] are similar to the basic \hyperlink{method.rule}{\mbox{\isa{rule}}}
   2.558    method (see \secref{sec:pure-meth-att}), but apply rules by
   2.559    elim-resolution, destruct-resolution, and forward-resolution,
   2.560    respectively \cite{isabelle-ref}.  The optional natural number
   2.561 @@ -839,30 +839,30 @@
   2.562    basic rule application are usually expressed in Isar at the proof
   2.563    language level, rather than via implicit proof state manipulations.
   2.564    For example, a proper single-step elimination would be done using
   2.565 -  the plain \mbox{\isa{rule}} method, with forward chaining of current
   2.566 +  the plain \hyperlink{method.rule}{\mbox{\isa{rule}}} method, with forward chaining of current
   2.567    facts.
   2.568  
   2.569 -  \item [\mbox{\isa{succeed}}] yields a single (unchanged) result; it is
   2.570 +  \item [\hyperlink{method.succeed}{\mbox{\isa{succeed}}}] yields a single (unchanged) result; it is
   2.571    the identity of the ``\isa{{\isachardoublequote}{\isacharcomma}{\isachardoublequote}}'' method combinator (cf.\
   2.572    \secref{sec:syn-meth}).
   2.573  
   2.574 -  \item [\mbox{\isa{fail}}] yields an empty result sequence; it is the
   2.575 +  \item [\hyperlink{method.fail}{\mbox{\isa{fail}}}] yields an empty result sequence; it is the
   2.576    identity of the ``\isa{{\isachardoublequote}{\isacharbar}{\isachardoublequote}}'' method combinator (cf.\
   2.577    \secref{sec:syn-meth}).
   2.578  
   2.579    \end{descr}
   2.580  
   2.581    \begin{matharray}{rcl}
   2.582 -    \indexdef{}{attribute}{tagged}\mbox{\isa{tagged}} & : & \isaratt \\
   2.583 -    \indexdef{}{attribute}{untagged}\mbox{\isa{untagged}} & : & \isaratt \\[0.5ex]
   2.584 -    \indexdef{}{attribute}{THEN}\mbox{\isa{THEN}} & : & \isaratt \\
   2.585 -    \indexdef{}{attribute}{COMP}\mbox{\isa{COMP}} & : & \isaratt \\[0.5ex]
   2.586 -    \indexdef{}{attribute}{unfolded}\mbox{\isa{unfolded}} & : & \isaratt \\
   2.587 -    \indexdef{}{attribute}{folded}\mbox{\isa{folded}} & : & \isaratt \\[0.5ex]
   2.588 -    \indexdef{}{attribute}{rotated}\mbox{\isa{rotated}} & : & \isaratt \\
   2.589 -    \indexdef{Pure}{attribute}{elim\_format}\mbox{\isa{elim{\isacharunderscore}format}} & : & \isaratt \\
   2.590 -    \indexdef{}{attribute}{standard}\mbox{\isa{standard}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isaratt \\
   2.591 -    \indexdef{}{attribute}{no\_vars}\mbox{\isa{no{\isacharunderscore}vars}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isaratt \\
   2.592 +    \indexdef{}{attribute}{tagged}\hypertarget{attribute.tagged}{\hyperlink{attribute.tagged}{\mbox{\isa{tagged}}}} & : & \isaratt \\
   2.593 +    \indexdef{}{attribute}{untagged}\hypertarget{attribute.untagged}{\hyperlink{attribute.untagged}{\mbox{\isa{untagged}}}} & : & \isaratt \\[0.5ex]
   2.594 +    \indexdef{}{attribute}{THEN}\hypertarget{attribute.THEN}{\hyperlink{attribute.THEN}{\mbox{\isa{THEN}}}} & : & \isaratt \\
   2.595 +    \indexdef{}{attribute}{COMP}\hypertarget{attribute.COMP}{\hyperlink{attribute.COMP}{\mbox{\isa{COMP}}}} & : & \isaratt \\[0.5ex]
   2.596 +    \indexdef{}{attribute}{unfolded}\hypertarget{attribute.unfolded}{\hyperlink{attribute.unfolded}{\mbox{\isa{unfolded}}}} & : & \isaratt \\
   2.597 +    \indexdef{}{attribute}{folded}\hypertarget{attribute.folded}{\hyperlink{attribute.folded}{\mbox{\isa{folded}}}} & : & \isaratt \\[0.5ex]
   2.598 +    \indexdef{}{attribute}{rotated}\hypertarget{attribute.rotated}{\hyperlink{attribute.rotated}{\mbox{\isa{rotated}}}} & : & \isaratt \\
   2.599 +    \indexdef{Pure}{attribute}{elim\_format}\hypertarget{attribute.Pure.elim_format}{\hyperlink{attribute.Pure.elim_format}{\mbox{\isa{elim{\isacharunderscore}format}}}} & : & \isaratt \\
   2.600 +    \indexdef{}{attribute}{standard}\hypertarget{attribute.standard}{\hyperlink{attribute.standard}{\mbox{\isa{standard}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isaratt \\
   2.601 +    \indexdef{}{attribute}{no\_vars}\hypertarget{attribute.no_vars}{\hyperlink{attribute.no_vars}{\mbox{\isa{no{\isacharunderscore}vars}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isaratt \\
   2.602    \end{matharray}
   2.603  
   2.604    \begin{rail}
   2.605 @@ -879,38 +879,38 @@
   2.606  
   2.607    \begin{descr}
   2.608  
   2.609 -  \item [\mbox{\isa{tagged}}~\isa{{\isachardoublequote}name\ arg{\isachardoublequote}} and \mbox{\isa{untagged}}~\isa{name}] add and remove \emph{tags} of some theorem.
   2.610 +  \item [\hyperlink{attribute.tagged}{\mbox{\isa{tagged}}}~\isa{{\isachardoublequote}name\ arg{\isachardoublequote}} and \hyperlink{attribute.untagged}{\mbox{\isa{untagged}}}~\isa{name}] add and remove \emph{tags} of some theorem.
   2.611    Tags may be any list of string pairs that serve as formal comment.
   2.612    The first string is considered the tag name, the second its
   2.613 -  argument.  Note that \mbox{\isa{untagged}} removes any tags of the
   2.614 +  argument.  Note that \hyperlink{attribute.untagged}{\mbox{\isa{untagged}}} removes any tags of the
   2.615    same name.
   2.616  
   2.617 -  \item [\mbox{\isa{THEN}}~\isa{a} and \mbox{\isa{COMP}}~\isa{a}]
   2.618 -  compose rules by resolution.  \mbox{\isa{THEN}} resolves with the
   2.619 +  \item [\hyperlink{attribute.THEN}{\mbox{\isa{THEN}}}~\isa{a} and \hyperlink{attribute.COMP}{\mbox{\isa{COMP}}}~\isa{a}]
   2.620 +  compose rules by resolution.  \hyperlink{attribute.THEN}{\mbox{\isa{THEN}}} resolves with the
   2.621    first premise of \isa{a} (an alternative position may be also
   2.622 -  specified); the \mbox{\isa{COMP}} version skips the automatic
   2.623 +  specified); the \hyperlink{attribute.COMP}{\mbox{\isa{COMP}}} version skips the automatic
   2.624    lifting process that is normally intended (cf.\ \verb|"op RS"| and
   2.625    \verb|"op COMP"| in \cite[\S5]{isabelle-ref}).
   2.626    
   2.627 -  \item [\mbox{\isa{unfolded}}~\isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isachardoublequote}} and
   2.628 -  \mbox{\isa{folded}}~\isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isachardoublequote}}] expand and fold
   2.629 +  \item [\hyperlink{attribute.unfolded}{\mbox{\isa{unfolded}}}~\isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isachardoublequote}} and
   2.630 +  \hyperlink{attribute.folded}{\mbox{\isa{folded}}}~\isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isachardoublequote}}] expand and fold
   2.631    back again the given definitions throughout a rule.
   2.632  
   2.633 -  \item [\mbox{\isa{rotated}}~\isa{n}] rotate the premises of a
   2.634 +  \item [\hyperlink{attribute.rotated}{\mbox{\isa{rotated}}}~\isa{n}] rotate the premises of a
   2.635    theorem by \isa{n} (default 1).
   2.636  
   2.637 -  \item [\mbox{\isa{Pure{\isachardot}elim{\isacharunderscore}format}}] turns a destruction rule into
   2.638 +  \item [\hyperlink{attribute.Pure.elim_format}{\mbox{\isa{Pure{\isachardot}elim{\isacharunderscore}format}}}] turns a destruction rule into
   2.639    elimination rule format, by resolving with the rule \isa{{\isachardoublequote}PROP\ A\ {\isasymLongrightarrow}\ {\isacharparenleft}PROP\ A\ {\isasymLongrightarrow}\ PROP\ B{\isacharparenright}\ {\isasymLongrightarrow}\ PROP\ B{\isachardoublequote}}.
   2.640    
   2.641    Note that the Classical Reasoner (\secref{sec:classical}) provides
   2.642    its own version of this operation.
   2.643  
   2.644 -  \item [\mbox{\isa{standard}}] puts a theorem into the standard form
   2.645 +  \item [\hyperlink{attribute.standard}{\mbox{\isa{standard}}}] puts a theorem into the standard form
   2.646    of object-rules at the outermost theory level.  Note that this
   2.647    operation violates the local proof context (including active
   2.648    locales).
   2.649  
   2.650 -  \item [\mbox{\isa{no{\isacharunderscore}vars}}] replaces schematic variables by free
   2.651 +  \item [\hyperlink{attribute.no_vars}{\mbox{\isa{no{\isacharunderscore}vars}}}] replaces schematic variables by free
   2.652    ones; this is mainly for tuning output of pretty printed theorems.
   2.653  
   2.654    \end{descr}%
   2.655 @@ -946,20 +946,20 @@
   2.656    consistently named \isa{foo{\isacharunderscore}tac}.  Note also that variable names
   2.657    occurring on left hand sides of instantiations must be preceded by a
   2.658    question mark if they coincide with a keyword or contain dots.  This
   2.659 -  is consistent with the attribute \mbox{\isa{where}} (see
   2.660 +  is consistent with the attribute \hyperlink{attribute.where}{\mbox{\isa{where}}} (see
   2.661    \secref{sec:pure-meth-att}).
   2.662  
   2.663    \begin{matharray}{rcl}
   2.664 -    \indexdef{}{method}{rule\_tac}\mbox{\isa{rule{\isacharunderscore}tac}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   2.665 -    \indexdef{}{method}{erule\_tac}\mbox{\isa{erule{\isacharunderscore}tac}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   2.666 -    \indexdef{}{method}{drule\_tac}\mbox{\isa{drule{\isacharunderscore}tac}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   2.667 -    \indexdef{}{method}{frule\_tac}\mbox{\isa{frule{\isacharunderscore}tac}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   2.668 -    \indexdef{}{method}{cut\_tac}\mbox{\isa{cut{\isacharunderscore}tac}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   2.669 -    \indexdef{}{method}{thin\_tac}\mbox{\isa{thin{\isacharunderscore}tac}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   2.670 -    \indexdef{}{method}{subgoal\_tac}\mbox{\isa{subgoal{\isacharunderscore}tac}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   2.671 -    \indexdef{}{method}{rename\_tac}\mbox{\isa{rename{\isacharunderscore}tac}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   2.672 -    \indexdef{}{method}{rotate\_tac}\mbox{\isa{rotate{\isacharunderscore}tac}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   2.673 -    \indexdef{}{method}{tactic}\mbox{\isa{tactic}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   2.674 +    \indexdef{}{method}{rule\_tac}\hypertarget{method.rule_tac}{\hyperlink{method.rule_tac}{\mbox{\isa{rule{\isacharunderscore}tac}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   2.675 +    \indexdef{}{method}{erule\_tac}\hypertarget{method.erule_tac}{\hyperlink{method.erule_tac}{\mbox{\isa{erule{\isacharunderscore}tac}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   2.676 +    \indexdef{}{method}{drule\_tac}\hypertarget{method.drule_tac}{\hyperlink{method.drule_tac}{\mbox{\isa{drule{\isacharunderscore}tac}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   2.677 +    \indexdef{}{method}{frule\_tac}\hypertarget{method.frule_tac}{\hyperlink{method.frule_tac}{\mbox{\isa{frule{\isacharunderscore}tac}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   2.678 +    \indexdef{}{method}{cut\_tac}\hypertarget{method.cut_tac}{\hyperlink{method.cut_tac}{\mbox{\isa{cut{\isacharunderscore}tac}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   2.679 +    \indexdef{}{method}{thin\_tac}\hypertarget{method.thin_tac}{\hyperlink{method.thin_tac}{\mbox{\isa{thin{\isacharunderscore}tac}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   2.680 +    \indexdef{}{method}{subgoal\_tac}\hypertarget{method.subgoal_tac}{\hyperlink{method.subgoal_tac}{\mbox{\isa{subgoal{\isacharunderscore}tac}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   2.681 +    \indexdef{}{method}{rename\_tac}\hypertarget{method.rename_tac}{\hyperlink{method.rename_tac}{\mbox{\isa{rename{\isacharunderscore}tac}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   2.682 +    \indexdef{}{method}{rotate\_tac}\hypertarget{method.rotate_tac}{\hyperlink{method.rotate_tac}{\mbox{\isa{rotate{\isacharunderscore}tac}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   2.683 +    \indexdef{}{method}{tactic}\hypertarget{method.tactic}{\hyperlink{method.tactic}{\mbox{\isa{tactic}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   2.684    \end{matharray}
   2.685  
   2.686    \begin{rail}
   2.687 @@ -981,37 +981,37 @@
   2.688  
   2.689  \begin{descr}
   2.690  
   2.691 -  \item [\mbox{\isa{rule{\isacharunderscore}tac}} etc.] do resolution of rules with explicit
   2.692 +  \item [\hyperlink{method.rule_tac}{\mbox{\isa{rule{\isacharunderscore}tac}}} etc.] do resolution of rules with explicit
   2.693    instantiation.  This works the same way as the ML tactics \verb|res_inst_tac| etc. (see \cite[\S3]{isabelle-ref}).
   2.694  
   2.695    Multiple rules may be only given if there is no instantiation; then
   2.696 -  \mbox{\isa{rule{\isacharunderscore}tac}} is the same as \verb|resolve_tac| in ML (see
   2.697 +  \hyperlink{method.rule_tac}{\mbox{\isa{rule{\isacharunderscore}tac}}} is the same as \verb|resolve_tac| in ML (see
   2.698    \cite[\S3]{isabelle-ref}).
   2.699  
   2.700 -  \item [\mbox{\isa{cut{\isacharunderscore}tac}}] inserts facts into the proof state as
   2.701 +  \item [\hyperlink{method.cut_tac}{\mbox{\isa{cut{\isacharunderscore}tac}}}] inserts facts into the proof state as
   2.702    assumption of a subgoal, see also \verb|cut_facts_tac| in
   2.703    \cite[\S3]{isabelle-ref}.  Note that the scope of schematic
   2.704    variables is spread over the main goal statement.  Instantiations
   2.705    may be given as well, see also ML tactic \verb|cut_inst_tac| in
   2.706    \cite[\S3]{isabelle-ref}.
   2.707  
   2.708 -  \item [\mbox{\isa{thin{\isacharunderscore}tac}}~\isa{{\isasymphi}}] deletes the specified
   2.709 +  \item [\hyperlink{method.thin_tac}{\mbox{\isa{thin{\isacharunderscore}tac}}}~\isa{{\isasymphi}}] deletes the specified
   2.710    assumption from a subgoal; note that \isa{{\isasymphi}} may contain schematic
   2.711    variables.  See also \verb|thin_tac| in \cite[\S3]{isabelle-ref}.
   2.712  
   2.713 -  \item [\mbox{\isa{subgoal{\isacharunderscore}tac}}~\isa{{\isasymphi}}] adds \isa{{\isasymphi}} as an
   2.714 +  \item [\hyperlink{method.subgoal_tac}{\mbox{\isa{subgoal{\isacharunderscore}tac}}}~\isa{{\isasymphi}}] adds \isa{{\isasymphi}} as an
   2.715    assumption to a subgoal.  See also \verb|subgoal_tac| and \verb|subgoals_tac| in \cite[\S3]{isabelle-ref}.
   2.716  
   2.717 -  \item [\mbox{\isa{rename{\isacharunderscore}tac}}~\isa{{\isachardoublequote}x\isactrlsub {\isadigit{1}}\ {\isasymdots}\ x\isactrlsub n{\isachardoublequote}}] renames
   2.718 +  \item [\hyperlink{method.rename_tac}{\mbox{\isa{rename{\isacharunderscore}tac}}}~\isa{{\isachardoublequote}x\isactrlsub {\isadigit{1}}\ {\isasymdots}\ x\isactrlsub n{\isachardoublequote}}] renames
   2.719    parameters of a goal according to the list \isa{{\isachardoublequote}x\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ x\isactrlsub n{\isachardoublequote}}, which refers to the \emph{suffix} of variables.
   2.720  
   2.721 -  \item [\mbox{\isa{rotate{\isacharunderscore}tac}}~\isa{n}] rotates the assumptions of a
   2.722 +  \item [\hyperlink{method.rotate_tac}{\mbox{\isa{rotate{\isacharunderscore}tac}}}~\isa{n}] rotates the assumptions of a
   2.723    goal by \isa{n} positions: from right to left if \isa{n} is
   2.724    positive, and from left to right if \isa{n} is negative; the
   2.725    default value is 1.  See also \verb|rotate_tac| in
   2.726    \cite[\S3]{isabelle-ref}.
   2.727  
   2.728 -  \item [\mbox{\isa{tactic}}~\isa{{\isachardoublequote}text{\isachardoublequote}}] produces a proof method from
   2.729 +  \item [\hyperlink{method.tactic}{\mbox{\isa{tactic}}}~\isa{{\isachardoublequote}text{\isachardoublequote}}] produces a proof method from
   2.730    any ML text of type \verb|tactic|.  Apart from the usual ML
   2.731    environment and the current implicit theory context, the ML code may
   2.732    refer to the following locally bound values:
   2.733 @@ -1041,8 +1041,8 @@
   2.734  %
   2.735  \begin{isamarkuptext}%
   2.736  \begin{matharray}{rcl}
   2.737 -    \indexdef{}{method}{simp}\mbox{\isa{simp}} & : & \isarmeth \\
   2.738 -    \indexdef{}{method}{simp\_all}\mbox{\isa{simp{\isacharunderscore}all}} & : & \isarmeth \\
   2.739 +    \indexdef{}{method}{simp}\hypertarget{method.simp}{\hyperlink{method.simp}{\mbox{\isa{simp}}}} & : & \isarmeth \\
   2.740 +    \indexdef{}{method}{simp\_all}\hypertarget{method.simp_all}{\hyperlink{method.simp_all}{\mbox{\isa{simp{\isacharunderscore}all}}}} & : & \isarmeth \\
   2.741    \end{matharray}
   2.742  
   2.743    \indexouternonterm{simpmod}
   2.744 @@ -1059,7 +1059,7 @@
   2.745  
   2.746    \begin{descr}
   2.747  
   2.748 -  \item [\mbox{\isa{simp}}] invokes the Simplifier, after declaring
   2.749 +  \item [\hyperlink{method.simp}{\mbox{\isa{simp}}}] invokes the Simplifier, after declaring
   2.750    additional rules according to the arguments given.  Note that the
   2.751    \railtterm{only} modifier first removes all other rewrite rules,
   2.752    congruences, and looper tactics (including splits), and then behaves
   2.753 @@ -1075,7 +1075,7 @@
   2.754    include the Splitter (all major object logics such HOL, HOLCF, FOL,
   2.755    ZF do this already).
   2.756  
   2.757 -  \item [\mbox{\isa{simp{\isacharunderscore}all}}] is similar to \mbox{\isa{simp}}, but acts on
   2.758 +  \item [\hyperlink{method.simp_all}{\mbox{\isa{simp{\isacharunderscore}all}}}] is similar to \hyperlink{method.simp}{\mbox{\isa{simp}}}, but acts on
   2.759    all goals (backwards from the last to the first one).
   2.760  
   2.761    \end{descr}
   2.762 @@ -1086,7 +1086,7 @@
   2.763    \verb|asm_full_simp_tac| in \cite[\S10]{isabelle-ref}).  In
   2.764    structured proofs this is usually quite well behaved in practice:
   2.765    just the local premises of the actual goal are involved, additional
   2.766 -  facts may be inserted via explicit forward-chaining (via \mbox{\isa{\isacommand{then}}}, \mbox{\isa{\isacommand{from}}}, \mbox{\isa{\isacommand{using}}} etc.).  The full
   2.767 +  facts may be inserted via explicit forward-chaining (via \hyperlink{command.then}{\mbox{\isa{\isacommand{then}}}}, \hyperlink{command.from}{\mbox{\isa{\isacommand{from}}}}, \hyperlink{command.using}{\mbox{\isa{\isacommand{using}}}} etc.).  The full
   2.768    context of premises is only included if the ``\isa{{\isachardoublequote}{\isacharbang}{\isachardoublequote}}'' (bang)
   2.769    argument is given, which should be used with some care, though.
   2.770  
   2.771 @@ -1116,10 +1116,10 @@
   2.772  %
   2.773  \begin{isamarkuptext}%
   2.774  \begin{matharray}{rcl}
   2.775 -    \indexdef{}{command}{print\_simpset}\mbox{\isa{\isacommand{print{\isacharunderscore}simpset}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
   2.776 -    \indexdef{}{attribute}{simp}\mbox{\isa{simp}} & : & \isaratt \\
   2.777 -    \indexdef{}{attribute}{cong}\mbox{\isa{cong}} & : & \isaratt \\
   2.778 -    \indexdef{}{attribute}{split}\mbox{\isa{split}} & : & \isaratt \\
   2.779 +    \indexdef{}{command}{print\_simpset}\hypertarget{command.print_simpset}{\hyperlink{command.print_simpset}{\mbox{\isa{\isacommand{print{\isacharunderscore}simpset}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
   2.780 +    \indexdef{}{attribute}{simp}\hypertarget{attribute.simp}{\hyperlink{attribute.simp}{\mbox{\isa{simp}}}} & : & \isaratt \\
   2.781 +    \indexdef{}{attribute}{cong}\hypertarget{attribute.cong}{\hyperlink{attribute.cong}{\mbox{\isa{cong}}}} & : & \isaratt \\
   2.782 +    \indexdef{}{attribute}{split}\hypertarget{attribute.split}{\hyperlink{attribute.split}{\mbox{\isa{split}}}} & : & \isaratt \\
   2.783    \end{matharray}
   2.784  
   2.785    \begin{rail}
   2.786 @@ -1129,15 +1129,15 @@
   2.787  
   2.788    \begin{descr}
   2.789  
   2.790 -  \item [\mbox{\isa{\isacommand{print{\isacharunderscore}simpset}}}] prints the collection of rules
   2.791 +  \item [\hyperlink{command.print_simpset}{\mbox{\isa{\isacommand{print{\isacharunderscore}simpset}}}}] prints the collection of rules
   2.792    declared to the Simplifier, which is also known as ``simpset''
   2.793    internally \cite{isabelle-ref}.
   2.794  
   2.795 -  \item [\mbox{\isa{simp}}] declares simplification rules.
   2.796 +  \item [\hyperlink{attribute.simp}{\mbox{\isa{simp}}}] declares simplification rules.
   2.797  
   2.798 -  \item [\mbox{\isa{cong}}] declares congruence rules.
   2.799 +  \item [\hyperlink{attribute.cong}{\mbox{\isa{cong}}}] declares congruence rules.
   2.800  
   2.801 -  \item [\mbox{\isa{split}}] declares case split rules.
   2.802 +  \item [\hyperlink{attribute.split}{\mbox{\isa{split}}}] declares case split rules.
   2.803  
   2.804    \end{descr}%
   2.805  \end{isamarkuptext}%
   2.806 @@ -1149,7 +1149,7 @@
   2.807  %
   2.808  \begin{isamarkuptext}%
   2.809  \begin{matharray}{rcl}
   2.810 -    \indexdef{}{command}{simproc\_setup}\mbox{\isa{\isacommand{simproc{\isacharunderscore}setup}}} & : & \isarkeep{local{\dsh}theory} \\
   2.811 +    \indexdef{}{command}{simproc\_setup}\hypertarget{command.simproc_setup}{\hyperlink{command.simproc_setup}{\mbox{\isa{\isacommand{simproc{\isacharunderscore}setup}}}}} & : & \isarkeep{local{\dsh}theory} \\
   2.812      simproc & : & \isaratt \\
   2.813    \end{matharray}
   2.814  
   2.815 @@ -1163,7 +1163,7 @@
   2.816  
   2.817    \begin{descr}
   2.818  
   2.819 -  \item [\mbox{\isa{\isacommand{simproc{\isacharunderscore}setup}}}] defines a named simplification
   2.820 +  \item [\hyperlink{command.simproc_setup}{\mbox{\isa{\isacommand{simproc{\isacharunderscore}setup}}}}] defines a named simplification
   2.821    procedure that is invoked by the Simplifier whenever any of the
   2.822    given term patterns match the current redex.  The implementation,
   2.823    which is provided as ML source text, needs to be of type \verb|"morphism -> simpset -> cterm -> thm option"|, where the \verb|cterm| represents the current redex \isa{r} and the result is
   2.824 @@ -1173,7 +1173,7 @@
   2.825    Simplifier invocation, including the actual Isar proof context.  The
   2.826    \verb|morphism| informs about the difference of the original
   2.827    compilation context wrt.\ the one of the actual application later
   2.828 -  on.  The optional \mbox{\isa{\isakeyword{identifier}}} specifies theorems that
   2.829 +  on.  The optional \hyperlink{keyword.identifier}{\mbox{\isa{\isakeyword{identifier}}}} specifies theorems that
   2.830    represent the logical content of the abstract theory of this
   2.831    simproc.
   2.832  
   2.833 @@ -1182,7 +1182,7 @@
   2.834  
   2.835    \item [\isa{{\isachardoublequote}simproc\ add{\isacharcolon}\ name{\isachardoublequote}} and \isa{{\isachardoublequote}simproc\ del{\isacharcolon}\ name{\isachardoublequote}}]
   2.836    add or delete named simprocs to the current Simplifier context.  The
   2.837 -  default is to add a simproc.  Note that \mbox{\isa{\isacommand{simproc{\isacharunderscore}setup}}}
   2.838 +  default is to add a simproc.  Note that \hyperlink{command.simproc_setup}{\mbox{\isa{\isacommand{simproc{\isacharunderscore}setup}}}}
   2.839    already adds the new simproc to the subsequent context.
   2.840  
   2.841    \end{descr}%
   2.842 @@ -1195,7 +1195,7 @@
   2.843  %
   2.844  \begin{isamarkuptext}%
   2.845  \begin{matharray}{rcl}
   2.846 -    \indexdef{}{attribute}{simplified}\mbox{\isa{simplified}} & : & \isaratt \\
   2.847 +    \indexdef{}{attribute}{simplified}\hypertarget{attribute.simplified}{\hyperlink{attribute.simplified}{\mbox{\isa{simplified}}}} & : & \isaratt \\
   2.848    \end{matharray}
   2.849  
   2.850    \begin{rail}
   2.851 @@ -1208,7 +1208,7 @@
   2.852  
   2.853    \begin{descr}
   2.854    
   2.855 -  \item [\mbox{\isa{simplified}}~\isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isachardoublequote}}]
   2.856 +  \item [\hyperlink{attribute.simplified}{\mbox{\isa{simplified}}}~\isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isachardoublequote}}]
   2.857    causes a theorem to be simplified, either by exactly the specified
   2.858    rules \isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ a\isactrlsub n{\isachardoublequote}}, or the implicit Simplifier
   2.859    context if no arguments are given.  The result is fully simplified
   2.860 @@ -1230,9 +1230,9 @@
   2.861  %
   2.862  \begin{isamarkuptext}%
   2.863  \begin{matharray}{rcl}
   2.864 -    \indexdef{}{method}{subst}\mbox{\isa{subst}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   2.865 -    \indexdef{}{method}{hypsubst}\mbox{\isa{hypsubst}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   2.866 -    \indexdef{}{method}{split}\mbox{\isa{split}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   2.867 +    \indexdef{}{method}{subst}\hypertarget{method.subst}{\hyperlink{method.subst}{\mbox{\isa{subst}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   2.868 +    \indexdef{}{method}{hypsubst}\hypertarget{method.hypsubst}{\hyperlink{method.hypsubst}{\mbox{\isa{hypsubst}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   2.869 +    \indexdef{}{method}{split}\hypertarget{method.split}{\hyperlink{method.split}{\mbox{\isa{split}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   2.870    \end{matharray}
   2.871  
   2.872    \begin{rail}
   2.873 @@ -1251,14 +1251,14 @@
   2.874  
   2.875    \begin{descr}
   2.876  
   2.877 -  \item [\mbox{\isa{subst}}~\isa{eq}] performs a single substitution
   2.878 +  \item [\hyperlink{method.subst}{\mbox{\isa{subst}}}~\isa{eq}] performs a single substitution
   2.879    step using rule \isa{eq}, which may be either a meta or object
   2.880    equality.
   2.881  
   2.882 -  \item [\mbox{\isa{subst}}~\isa{{\isachardoublequote}{\isacharparenleft}asm{\isacharparenright}\ eq{\isachardoublequote}}] substitutes in an
   2.883 +  \item [\hyperlink{method.subst}{\mbox{\isa{subst}}}~\isa{{\isachardoublequote}{\isacharparenleft}asm{\isacharparenright}\ eq{\isachardoublequote}}] substitutes in an
   2.884    assumption.
   2.885  
   2.886 -  \item [\mbox{\isa{subst}}~\isa{{\isachardoublequote}{\isacharparenleft}i\ {\isasymdots}\ j{\isacharparenright}\ eq{\isachardoublequote}}] performs several
   2.887 +  \item [\hyperlink{method.subst}{\mbox{\isa{subst}}}~\isa{{\isachardoublequote}{\isacharparenleft}i\ {\isasymdots}\ j{\isacharparenright}\ eq{\isachardoublequote}}] performs several
   2.888    substitutions in the conclusion. The numbers \isa{i} to \isa{j}
   2.889    indicate the positions to substitute at.  Positions are ordered from
   2.890    the top of the term tree moving down from left to right. For
   2.891 @@ -1271,19 +1271,19 @@
   2.892    assume all substitutions are performed simultaneously.  Otherwise
   2.893    the behaviour of \isa{subst} is not specified.
   2.894  
   2.895 -  \item [\mbox{\isa{subst}}~\isa{{\isachardoublequote}{\isacharparenleft}asm{\isacharparenright}\ {\isacharparenleft}i\ {\isasymdots}\ j{\isacharparenright}\ eq{\isachardoublequote}}] performs the
   2.896 +  \item [\hyperlink{method.subst}{\mbox{\isa{subst}}}~\isa{{\isachardoublequote}{\isacharparenleft}asm{\isacharparenright}\ {\isacharparenleft}i\ {\isasymdots}\ j{\isacharparenright}\ eq{\isachardoublequote}}] performs the
   2.897    substitutions in the assumptions.  Positions \isa{{\isachardoublequote}{\isadigit{1}}\ {\isasymdots}\ i\isactrlsub {\isadigit{1}}{\isachardoublequote}}
   2.898    refer to assumption 1, positions \isa{{\isachardoublequote}i\isactrlsub {\isadigit{1}}\ {\isacharplus}\ {\isadigit{1}}\ {\isasymdots}\ i\isactrlsub {\isadigit{2}}{\isachardoublequote}}
   2.899    to assumption 2, and so on.
   2.900  
   2.901 -  \item [\mbox{\isa{hypsubst}}] performs substitution using some
   2.902 +  \item [\hyperlink{method.hypsubst}{\mbox{\isa{hypsubst}}}] performs substitution using some
   2.903    assumption; this only works for equations of the form \isa{{\isachardoublequote}x\ {\isacharequal}\ t{\isachardoublequote}} where \isa{x} is a free or bound variable.
   2.904  
   2.905 -  \item [\mbox{\isa{split}}~\isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isachardoublequote}}] performs
   2.906 +  \item [\hyperlink{method.split}{\mbox{\isa{split}}}~\isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isachardoublequote}}] performs
   2.907    single-step case splitting using the given rules.  By default,
   2.908    splitting is performed in the conclusion of a goal; the \isa{{\isachardoublequote}{\isacharparenleft}asm{\isacharparenright}{\isachardoublequote}} option indicates to operate on assumptions instead.
   2.909    
   2.910 -  Note that the \mbox{\isa{simp}} method already involves repeated
   2.911 +  Note that the \hyperlink{method.simp}{\mbox{\isa{simp}}} method already involves repeated
   2.912    application of split rules as declared in the current context.
   2.913  
   2.914    \end{descr}%
   2.915 @@ -1300,10 +1300,10 @@
   2.916  %
   2.917  \begin{isamarkuptext}%
   2.918  \begin{matharray}{rcl}
   2.919 -    \indexdef{}{method}{rule}\mbox{\isa{rule}} & : & \isarmeth \\
   2.920 -    \indexdef{}{method}{contradiction}\mbox{\isa{contradiction}} & : & \isarmeth \\
   2.921 -    \indexdef{}{method}{intro}\mbox{\isa{intro}} & : & \isarmeth \\
   2.922 -    \indexdef{}{method}{elim}\mbox{\isa{elim}} & : & \isarmeth \\
   2.923 +    \indexdef{}{method}{rule}\hypertarget{method.rule}{\hyperlink{method.rule}{\mbox{\isa{rule}}}} & : & \isarmeth \\
   2.924 +    \indexdef{}{method}{contradiction}\hypertarget{method.contradiction}{\hyperlink{method.contradiction}{\mbox{\isa{contradiction}}}} & : & \isarmeth \\
   2.925 +    \indexdef{}{method}{intro}\hypertarget{method.intro}{\hyperlink{method.intro}{\mbox{\isa{intro}}}} & : & \isarmeth \\
   2.926 +    \indexdef{}{method}{elim}\hypertarget{method.elim}{\hyperlink{method.elim}{\mbox{\isa{elim}}}} & : & \isarmeth \\
   2.927    \end{matharray}
   2.928  
   2.929    \begin{rail}
   2.930 @@ -1313,7 +1313,7 @@
   2.931  
   2.932    \begin{descr}
   2.933  
   2.934 -  \item [\mbox{\isa{rule}}] as offered by the Classical Reasoner is a
   2.935 +  \item [\hyperlink{method.rule}{\mbox{\isa{rule}}}] as offered by the Classical Reasoner is a
   2.936    refinement over the primitive one (see \secref{sec:pure-meth-att}).
   2.937    Both versions essentially work the same, but the classical version
   2.938    observes the classical rule context in addition to that of
   2.939 @@ -1324,16 +1324,16 @@
   2.940    ones), but only few declarations to the rule context of
   2.941    Isabelle/Pure (\secref{sec:pure-meth-att}).
   2.942  
   2.943 -  \item [\mbox{\isa{contradiction}}] solves some goal by contradiction,
   2.944 +  \item [\hyperlink{method.contradiction}{\mbox{\isa{contradiction}}}] solves some goal by contradiction,
   2.945    deriving any result from both \isa{{\isachardoublequote}{\isasymnot}\ A{\isachardoublequote}} and \isa{A}.  Chained
   2.946    facts, which are guaranteed to participate, may appear in either
   2.947    order.
   2.948  
   2.949 -  \item [\mbox{\isa{intro}} and \mbox{\isa{elim}}] repeatedly refine
   2.950 -  some goal by intro- or elim-resolution, after having inserted any
   2.951 -  chained facts.  Exactly the rules given as arguments are taken into
   2.952 -  account; this allows fine-tuned decomposition of a proof problem, in
   2.953 -  contrast to common automated tools.
   2.954 +  \item [\hyperlink{method.intro}{\mbox{\isa{intro}}} and \hyperlink{method.elim}{\mbox{\isa{elim}}}] repeatedly refine some
   2.955 +  goal by intro- or elim-resolution, after having inserted any chained
   2.956 +  facts.  Exactly the rules given as arguments are taken into account;
   2.957 +  this allows fine-tuned decomposition of a proof problem, in contrast
   2.958 +  to common automated tools.
   2.959  
   2.960    \end{descr}%
   2.961  \end{isamarkuptext}%
   2.962 @@ -1345,12 +1345,12 @@
   2.963  %
   2.964  \begin{isamarkuptext}%
   2.965  \begin{matharray}{rcl}
   2.966 -    \indexdef{}{method}{blast}\mbox{\isa{blast}} & : & \isarmeth \\
   2.967 -    \indexdef{}{method}{fast}\mbox{\isa{fast}} & : & \isarmeth \\
   2.968 -    \indexdef{}{method}{slow}\mbox{\isa{slow}} & : & \isarmeth \\
   2.969 -    \indexdef{}{method}{best}\mbox{\isa{best}} & : & \isarmeth \\
   2.970 -    \indexdef{}{method}{safe}\mbox{\isa{safe}} & : & \isarmeth \\
   2.971 -    \indexdef{}{method}{clarify}\mbox{\isa{clarify}} & : & \isarmeth \\
   2.972 +    \indexdef{}{method}{blast}\hypertarget{method.blast}{\hyperlink{method.blast}{\mbox{\isa{blast}}}} & : & \isarmeth \\
   2.973 +    \indexdef{}{method}{fast}\hypertarget{method.fast}{\hyperlink{method.fast}{\mbox{\isa{fast}}}} & : & \isarmeth \\
   2.974 +    \indexdef{}{method}{slow}\hypertarget{method.slow}{\hyperlink{method.slow}{\mbox{\isa{slow}}}} & : & \isarmeth \\
   2.975 +    \indexdef{}{method}{best}\hypertarget{method.best}{\hyperlink{method.best}{\mbox{\isa{best}}}} & : & \isarmeth \\
   2.976 +    \indexdef{}{method}{safe}\hypertarget{method.safe}{\hyperlink{method.safe}{\mbox{\isa{safe}}}} & : & \isarmeth \\
   2.977 +    \indexdef{}{method}{clarify}\hypertarget{method.clarify}{\hyperlink{method.clarify}{\mbox{\isa{clarify}}}} & : & \isarmeth \\
   2.978    \end{matharray}
   2.979  
   2.980    \indexouternonterm{clamod}
   2.981 @@ -1366,11 +1366,11 @@
   2.982  
   2.983    \begin{descr}
   2.984  
   2.985 -  \item [\mbox{\isa{blast}}] refers to the classical tableau prover (see
   2.986 +  \item [\hyperlink{method.blast}{\mbox{\isa{blast}}}] refers to the classical tableau prover (see
   2.987    \verb|blast_tac| in \cite[\S11]{isabelle-ref}).  The optional
   2.988    argument specifies a user-supplied search bound (default 20).
   2.989  
   2.990 -  \item [\mbox{\isa{fast}}, \mbox{\isa{slow}}, \mbox{\isa{best}}, \mbox{\isa{safe}}, and \mbox{\isa{clarify}}] refer to the generic classical
   2.991 +  \item [\hyperlink{method.fast}{\mbox{\isa{fast}}}, \hyperlink{method.slow}{\mbox{\isa{slow}}}, \hyperlink{method.best}{\mbox{\isa{best}}}, \hyperlink{method.safe}{\mbox{\isa{safe}}}, and \hyperlink{method.clarify}{\mbox{\isa{clarify}}}] refer to the generic classical
   2.992    reasoner.  See \verb|fast_tac|, \verb|slow_tac|, \verb|best_tac|, \verb|safe_tac|, and \verb|clarify_tac| in \cite[\S11]{isabelle-ref} for
   2.993    more information.
   2.994  
   2.995 @@ -1390,12 +1390,12 @@
   2.996  %
   2.997  \begin{isamarkuptext}%
   2.998  \begin{matharray}{rcl}
   2.999 -    \indexdef{}{method}{auto}\mbox{\isa{auto}} & : & \isarmeth \\
  2.1000 -    \indexdef{}{method}{force}\mbox{\isa{force}} & : & \isarmeth \\
  2.1001 -    \indexdef{}{method}{clarsimp}\mbox{\isa{clarsimp}} & : & \isarmeth \\
  2.1002 -    \indexdef{}{method}{fastsimp}\mbox{\isa{fastsimp}} & : & \isarmeth \\
  2.1003 -    \indexdef{}{method}{slowsimp}\mbox{\isa{slowsimp}} & : & \isarmeth \\
  2.1004 -    \indexdef{}{method}{bestsimp}\mbox{\isa{bestsimp}} & : & \isarmeth \\
  2.1005 +    \indexdef{}{method}{auto}\hypertarget{method.auto}{\hyperlink{method.auto}{\mbox{\isa{auto}}}} & : & \isarmeth \\
  2.1006 +    \indexdef{}{method}{force}\hypertarget{method.force}{\hyperlink{method.force}{\mbox{\isa{force}}}} & : & \isarmeth \\
  2.1007 +    \indexdef{}{method}{clarsimp}\hypertarget{method.clarsimp}{\hyperlink{method.clarsimp}{\mbox{\isa{clarsimp}}}} & : & \isarmeth \\
  2.1008 +    \indexdef{}{method}{fastsimp}\hypertarget{method.fastsimp}{\hyperlink{method.fastsimp}{\mbox{\isa{fastsimp}}}} & : & \isarmeth \\
  2.1009 +    \indexdef{}{method}{slowsimp}\hypertarget{method.slowsimp}{\hyperlink{method.slowsimp}{\mbox{\isa{slowsimp}}}} & : & \isarmeth \\
  2.1010 +    \indexdef{}{method}{bestsimp}\hypertarget{method.bestsimp}{\hyperlink{method.bestsimp}{\mbox{\isa{bestsimp}}}} & : & \isarmeth \\
  2.1011    \end{matharray}
  2.1012  
  2.1013    \indexouternonterm{clasimpmod}
  2.1014 @@ -1413,7 +1413,7 @@
  2.1015  
  2.1016    \begin{descr}
  2.1017  
  2.1018 -  \item [\mbox{\isa{auto}}, \mbox{\isa{force}}, \mbox{\isa{clarsimp}}, \mbox{\isa{fastsimp}}, \mbox{\isa{slowsimp}}, and \mbox{\isa{bestsimp}}] provide
  2.1019 +  \item [\hyperlink{method.auto}{\mbox{\isa{auto}}}, \hyperlink{method.force}{\mbox{\isa{force}}}, \hyperlink{method.clarsimp}{\mbox{\isa{clarsimp}}}, \hyperlink{method.fastsimp}{\mbox{\isa{fastsimp}}}, \hyperlink{method.slowsimp}{\mbox{\isa{slowsimp}}}, and \hyperlink{method.bestsimp}{\mbox{\isa{bestsimp}}}] provide
  2.1020    access to Isabelle's combined simplification and classical reasoning
  2.1021    tactics.  These correspond to \verb|auto_tac|, \verb|force_tac|, \verb|clarsimp_tac|, and Classical Reasoner tactics with the Simplifier
  2.1022    added as wrapper, see \cite[\S11]{isabelle-ref} for more
  2.1023 @@ -1436,12 +1436,12 @@
  2.1024  %
  2.1025  \begin{isamarkuptext}%
  2.1026  \begin{matharray}{rcl}
  2.1027 -    \indexdef{}{command}{print\_claset}\mbox{\isa{\isacommand{print{\isacharunderscore}claset}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
  2.1028 -    \indexdef{}{attribute}{intro}\mbox{\isa{intro}} & : & \isaratt \\
  2.1029 -    \indexdef{}{attribute}{elim}\mbox{\isa{elim}} & : & \isaratt \\
  2.1030 -    \indexdef{}{attribute}{dest}\mbox{\isa{dest}} & : & \isaratt \\
  2.1031 -    \indexdef{}{attribute}{rule}\mbox{\isa{rule}} & : & \isaratt \\
  2.1032 -    \indexdef{}{attribute}{iff}\mbox{\isa{iff}} & : & \isaratt \\
  2.1033 +    \indexdef{}{command}{print\_claset}\hypertarget{command.print_claset}{\hyperlink{command.print_claset}{\mbox{\isa{\isacommand{print{\isacharunderscore}claset}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
  2.1034 +    \indexdef{}{attribute}{intro}\hypertarget{attribute.intro}{\hyperlink{attribute.intro}{\mbox{\isa{intro}}}} & : & \isaratt \\
  2.1035 +    \indexdef{}{attribute}{elim}\hypertarget{attribute.elim}{\hyperlink{attribute.elim}{\mbox{\isa{elim}}}} & : & \isaratt \\
  2.1036 +    \indexdef{}{attribute}{dest}\hypertarget{attribute.dest}{\hyperlink{attribute.dest}{\mbox{\isa{dest}}}} & : & \isaratt \\
  2.1037 +    \indexdef{}{attribute}{rule}\hypertarget{attribute.rule}{\hyperlink{attribute.rule}{\mbox{\isa{rule}}}} & : & \isaratt \\
  2.1038 +    \indexdef{}{attribute}{iff}\hypertarget{attribute.iff}{\hyperlink{attribute.iff}{\mbox{\isa{iff}}}} & : & \isaratt \\
  2.1039    \end{matharray}
  2.1040  
  2.1041    \begin{rail}
  2.1042 @@ -1455,30 +1455,30 @@
  2.1043  
  2.1044    \begin{descr}
  2.1045  
  2.1046 -  \item [\mbox{\isa{\isacommand{print{\isacharunderscore}claset}}}] prints the collection of rules
  2.1047 +  \item [\hyperlink{command.print_claset}{\mbox{\isa{\isacommand{print{\isacharunderscore}claset}}}}] prints the collection of rules
  2.1048    declared to the Classical Reasoner, which is also known as
  2.1049    ``claset'' internally \cite{isabelle-ref}.
  2.1050    
  2.1051 -  \item [\mbox{\isa{intro}}, \mbox{\isa{elim}}, and \mbox{\isa{dest}}]
  2.1052 +  \item [\hyperlink{attribute.intro}{\mbox{\isa{intro}}}, \hyperlink{attribute.elim}{\mbox{\isa{elim}}}, and \hyperlink{attribute.dest}{\mbox{\isa{dest}}}]
  2.1053    declare introduction, elimination, and destruction rules,
  2.1054    respectively.  By default, rules are considered as \emph{unsafe}
  2.1055    (i.e.\ not applied blindly without backtracking), while ``\isa{{\isachardoublequote}{\isacharbang}{\isachardoublequote}}'' classifies as \emph{safe}.  Rule declarations marked by
  2.1056    ``\isa{{\isachardoublequote}{\isacharquery}{\isachardoublequote}}'' coincide with those of Isabelle/Pure, cf.\
  2.1057    \secref{sec:pure-meth-att} (i.e.\ are only applied in single steps
  2.1058 -  of the \mbox{\isa{rule}} method).  The optional natural number
  2.1059 +  of the \hyperlink{method.rule}{\mbox{\isa{rule}}} method).  The optional natural number
  2.1060    specifies an explicit weight argument, which is ignored by automated
  2.1061    tools, but determines the search order of single rule steps.
  2.1062  
  2.1063 -  \item [\mbox{\isa{rule}}~\isa{del}] deletes introduction,
  2.1064 +  \item [\hyperlink{attribute.rule}{\mbox{\isa{rule}}}~\isa{del}] deletes introduction,
  2.1065    elimination, or destruction rules from the context.
  2.1066  
  2.1067 -  \item [\mbox{\isa{iff}}] declares logical equivalences to the
  2.1068 +  \item [\hyperlink{attribute.iff}{\mbox{\isa{iff}}}] declares logical equivalences to the
  2.1069    Simplifier and the Classical reasoner at the same time.
  2.1070    Non-conditional rules result in a ``safe'' introduction and
  2.1071    elimination pair; conditional ones are considered ``unsafe''.  Rules
  2.1072    with negative conclusion are automatically inverted (using \isa{{\isachardoublequote}{\isasymnot}{\isachardoublequote}}-elimination internally).
  2.1073  
  2.1074 -  The ``\isa{{\isachardoublequote}{\isacharquery}{\isachardoublequote}}'' version of \mbox{\isa{iff}} declares rules to
  2.1075 +  The ``\isa{{\isachardoublequote}{\isacharquery}{\isachardoublequote}}'' version of \hyperlink{attribute.iff}{\mbox{\isa{iff}}} declares rules to
  2.1076    the Isabelle/Pure context only, and omits the Simplifier
  2.1077    declaration.
  2.1078  
  2.1079 @@ -1492,12 +1492,12 @@
  2.1080  %
  2.1081  \begin{isamarkuptext}%
  2.1082  \begin{matharray}{rcl}
  2.1083 -    \indexdef{}{attribute}{swapped}\mbox{\isa{swapped}} & : & \isaratt \\
  2.1084 +    \indexdef{}{attribute}{swapped}\hypertarget{attribute.swapped}{\hyperlink{attribute.swapped}{\mbox{\isa{swapped}}}} & : & \isaratt \\
  2.1085    \end{matharray}
  2.1086  
  2.1087    \begin{descr}
  2.1088  
  2.1089 -  \item [\mbox{\isa{swapped}}] turns an introduction rule into an
  2.1090 +  \item [\hyperlink{attribute.swapped}{\mbox{\isa{swapped}}}] turns an introduction rule into an
  2.1091    elimination, by resolving with the classical swap principle \isa{{\isachardoublequote}{\isacharparenleft}{\isasymnot}\ B\ {\isasymLongrightarrow}\ A{\isacharparenright}\ {\isasymLongrightarrow}\ {\isacharparenleft}{\isasymnot}\ A\ {\isasymLongrightarrow}\ B{\isacharparenright}{\isachardoublequote}}.
  2.1092  
  2.1093    \end{descr}%
  2.1094 @@ -1514,34 +1514,34 @@
  2.1095  %
  2.1096  \begin{isamarkuptext}%
  2.1097  \begin{matharray}{rcl}
  2.1098 -    \indexdef{}{command}{case}\mbox{\isa{\isacommand{case}}} & : & \isartrans{proof(state)}{proof(state)} \\
  2.1099 -    \indexdef{}{command}{print\_cases}\mbox{\isa{\isacommand{print{\isacharunderscore}cases}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{proof} \\
  2.1100 -    \indexdef{}{attribute}{case\_names}\mbox{\isa{case{\isacharunderscore}names}} & : & \isaratt \\
  2.1101 -    \indexdef{}{attribute}{case\_conclusion}\mbox{\isa{case{\isacharunderscore}conclusion}} & : & \isaratt \\
  2.1102 -    \indexdef{}{attribute}{params}\mbox{\isa{params}} & : & \isaratt \\
  2.1103 -    \indexdef{}{attribute}{consumes}\mbox{\isa{consumes}} & : & \isaratt \\
  2.1104 +    \indexdef{}{command}{case}\hypertarget{command.case}{\hyperlink{command.case}{\mbox{\isa{\isacommand{case}}}}} & : & \isartrans{proof(state)}{proof(state)} \\
  2.1105 +    \indexdef{}{command}{print\_cases}\hypertarget{command.print_cases}{\hyperlink{command.print_cases}{\mbox{\isa{\isacommand{print{\isacharunderscore}cases}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{proof} \\
  2.1106 +    \indexdef{}{attribute}{case\_names}\hypertarget{attribute.case_names}{\hyperlink{attribute.case_names}{\mbox{\isa{case{\isacharunderscore}names}}}} & : & \isaratt \\
  2.1107 +    \indexdef{}{attribute}{case\_conclusion}\hypertarget{attribute.case_conclusion}{\hyperlink{attribute.case_conclusion}{\mbox{\isa{case{\isacharunderscore}conclusion}}}} & : & \isaratt \\
  2.1108 +    \indexdef{}{attribute}{params}\hypertarget{attribute.params}{\hyperlink{attribute.params}{\mbox{\isa{params}}}} & : & \isaratt \\
  2.1109 +    \indexdef{}{attribute}{consumes}\hypertarget{attribute.consumes}{\hyperlink{attribute.consumes}{\mbox{\isa{consumes}}}} & : & \isaratt \\
  2.1110    \end{matharray}
  2.1111  
  2.1112    The puristic way to build up Isar proof contexts is by explicit
  2.1113 -  language elements like \mbox{\isa{\isacommand{fix}}}, \mbox{\isa{\isacommand{assume}}},
  2.1114 -  \mbox{\isa{\isacommand{let}}} (see \secref{sec:proof-context}).  This is adequate
  2.1115 +  language elements like \hyperlink{command.fix}{\mbox{\isa{\isacommand{fix}}}}, \hyperlink{command.assume}{\mbox{\isa{\isacommand{assume}}}},
  2.1116 +  \hyperlink{command.let}{\mbox{\isa{\isacommand{let}}}} (see \secref{sec:proof-context}).  This is adequate
  2.1117    for plain natural deduction, but easily becomes unwieldy in concrete
  2.1118    verification tasks, which typically involve big induction rules with
  2.1119    several cases.
  2.1120  
  2.1121 -  The \mbox{\isa{\isacommand{case}}} command provides a shorthand to refer to a
  2.1122 +  The \hyperlink{command.case}{\mbox{\isa{\isacommand{case}}}} command provides a shorthand to refer to a
  2.1123    local context symbolically: certain proof methods provide an
  2.1124 -  environment of named ``cases'' of the form \isa{{\isachardoublequote}c{\isacharcolon}\ x\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ x\isactrlsub m{\isacharcomma}\ {\isasymphi}\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ {\isasymphi}\isactrlsub n{\isachardoublequote}}; the effect of ``\mbox{\isa{\isacommand{case}}}~\isa{c}'' is then equivalent to ``\mbox{\isa{\isacommand{fix}}}~\isa{{\isachardoublequote}x\isactrlsub {\isadigit{1}}\ {\isasymdots}\ x\isactrlsub m{\isachardoublequote}}~\mbox{\isa{\isacommand{assume}}}~\isa{{\isachardoublequote}c{\isacharcolon}\ {\isasymphi}\isactrlsub {\isadigit{1}}\ {\isasymdots}\ {\isasymphi}\isactrlsub n{\isachardoublequote}}''.  Term bindings may be covered as well, notably
  2.1125 -  \mbox{\isa{{\isacharquery}case}} for the main conclusion.
  2.1126 +  environment of named ``cases'' of the form \isa{{\isachardoublequote}c{\isacharcolon}\ x\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ x\isactrlsub m{\isacharcomma}\ {\isasymphi}\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ {\isasymphi}\isactrlsub n{\isachardoublequote}}; the effect of ``\hyperlink{command.case}{\mbox{\isa{\isacommand{case}}}}~\isa{c}'' is then equivalent to ``\hyperlink{command.fix}{\mbox{\isa{\isacommand{fix}}}}~\isa{{\isachardoublequote}x\isactrlsub {\isadigit{1}}\ {\isasymdots}\ x\isactrlsub m{\isachardoublequote}}~\hyperlink{command.assume}{\mbox{\isa{\isacommand{assume}}}}~\isa{{\isachardoublequote}c{\isacharcolon}\ {\isasymphi}\isactrlsub {\isadigit{1}}\ {\isasymdots}\ {\isasymphi}\isactrlsub n{\isachardoublequote}}''.  Term bindings may be covered as well, notably
  2.1127 +  \hyperlink{variable.?case}{\mbox{\isa{{\isacharquery}case}}} for the main conclusion.
  2.1128  
  2.1129    By default, the ``terminology'' \isa{{\isachardoublequote}x\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ x\isactrlsub m{\isachardoublequote}} of
  2.1130    a case value is marked as hidden, i.e.\ there is no way to refer to
  2.1131    such parameters in the subsequent proof text.  After all, original
  2.1132    rule parameters stem from somewhere outside of the current proof
  2.1133 -  text.  By using the explicit form ``\mbox{\isa{\isacommand{case}}}~\isa{{\isachardoublequote}{\isacharparenleft}c\ y\isactrlsub {\isadigit{1}}\ {\isasymdots}\ y\isactrlsub m{\isacharparenright}{\isachardoublequote}}'' instead, the proof author is able to
  2.1134 +  text.  By using the explicit form ``\hyperlink{command.case}{\mbox{\isa{\isacommand{case}}}}~\isa{{\isachardoublequote}{\isacharparenleft}c\ y\isactrlsub {\isadigit{1}}\ {\isasymdots}\ y\isactrlsub m{\isacharparenright}{\isachardoublequote}}'' instead, the proof author is able to
  2.1135    chose local names that fit nicely into the current context.
  2.1136  
  2.1137 -  \medskip It is important to note that proper use of \mbox{\isa{\isacommand{case}}} does not provide means to peek at the current goal state,
  2.1138 +  \medskip It is important to note that proper use of \hyperlink{command.case}{\mbox{\isa{\isacommand{case}}}} does not provide means to peek at the current goal state,
  2.1139    which is not directly observable in Isar!  Nonetheless, goal
  2.1140    refinement commands do provide named cases \isa{{\isachardoublequote}goal\isactrlsub i{\isachardoublequote}}
  2.1141    for each subgoal \isa{{\isachardoublequote}i\ {\isacharequal}\ {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ n{\isachardoublequote}} of the resulting goal state.
  2.1142 @@ -1553,7 +1553,7 @@
  2.1143    Under normal circumstances, the text of cases emerge from standard
  2.1144    elimination or induction rules, which in turn are derived from
  2.1145    previous theory specifications in a canonical way (say from
  2.1146 -  \mbox{\isa{\isacommand{inductive}}} definitions).
  2.1147 +  \hyperlink{command.inductive}{\mbox{\isa{\isacommand{inductive}}}} definitions).
  2.1148  
  2.1149    \medskip Proper cases are only available if both the proof method
  2.1150    and the rules involved support this.  By using appropriate
  2.1151 @@ -1580,29 +1580,29 @@
  2.1152  
  2.1153    \begin{descr}
  2.1154    
  2.1155 -  \item [\mbox{\isa{\isacommand{case}}}~\isa{{\isachardoublequote}{\isacharparenleft}c\ x\isactrlsub {\isadigit{1}}\ {\isasymdots}\ x\isactrlsub m{\isacharparenright}{\isachardoublequote}}]
  2.1156 +  \item [\hyperlink{command.case}{\mbox{\isa{\isacommand{case}}}}~\isa{{\isachardoublequote}{\isacharparenleft}c\ x\isactrlsub {\isadigit{1}}\ {\isasymdots}\ x\isactrlsub m{\isacharparenright}{\isachardoublequote}}]
  2.1157    invokes a named local context \isa{{\isachardoublequote}c{\isacharcolon}\ x\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ x\isactrlsub m{\isacharcomma}\ {\isasymphi}\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ {\isasymphi}\isactrlsub m{\isachardoublequote}}, as provided by an appropriate
  2.1158 -  proof method (such as \indexref{}{method}{cases}\mbox{\isa{cases}} and \indexref{}{method}{induct}\mbox{\isa{induct}}).
  2.1159 -  The command ``\mbox{\isa{\isacommand{case}}}~\isa{{\isachardoublequote}{\isacharparenleft}c\ x\isactrlsub {\isadigit{1}}\ {\isasymdots}\ x\isactrlsub m{\isacharparenright}{\isachardoublequote}}'' abbreviates ``\mbox{\isa{\isacommand{fix}}}~\isa{{\isachardoublequote}x\isactrlsub {\isadigit{1}}\ {\isasymdots}\ x\isactrlsub m{\isachardoublequote}}~\mbox{\isa{\isacommand{assume}}}~\isa{{\isachardoublequote}c{\isacharcolon}\ {\isasymphi}\isactrlsub {\isadigit{1}}\ {\isasymdots}\ {\isasymphi}\isactrlsub n{\isachardoublequote}}''.
  2.1160 +  proof method (such as \indexref{}{method}{cases}\hyperlink{method.cases}{\mbox{\isa{cases}}} and \indexref{}{method}{induct}\hyperlink{method.induct}{\mbox{\isa{induct}}}).
  2.1161 +  The command ``\hyperlink{command.case}{\mbox{\isa{\isacommand{case}}}}~\isa{{\isachardoublequote}{\isacharparenleft}c\ x\isactrlsub {\isadigit{1}}\ {\isasymdots}\ x\isactrlsub m{\isacharparenright}{\isachardoublequote}}'' abbreviates ``\hyperlink{command.fix}{\mbox{\isa{\isacommand{fix}}}}~\isa{{\isachardoublequote}x\isactrlsub {\isadigit{1}}\ {\isasymdots}\ x\isactrlsub m{\isachardoublequote}}~\hyperlink{command.assume}{\mbox{\isa{\isacommand{assume}}}}~\isa{{\isachardoublequote}c{\isacharcolon}\ {\isasymphi}\isactrlsub {\isadigit{1}}\ {\isasymdots}\ {\isasymphi}\isactrlsub n{\isachardoublequote}}''.
  2.1162  
  2.1163 -  \item [\mbox{\isa{\isacommand{print{\isacharunderscore}cases}}}] prints all local contexts of the
  2.1164 +  \item [\hyperlink{command.print_cases}{\mbox{\isa{\isacommand{print{\isacharunderscore}cases}}}}] prints all local contexts of the
  2.1165    current state, using Isar proof language notation.
  2.1166    
  2.1167 -  \item [\mbox{\isa{case{\isacharunderscore}names}}~\isa{{\isachardoublequote}c\isactrlsub {\isadigit{1}}\ {\isasymdots}\ c\isactrlsub k{\isachardoublequote}}]
  2.1168 +  \item [\hyperlink{attribute.case_names}{\mbox{\isa{case{\isacharunderscore}names}}}~\isa{{\isachardoublequote}c\isactrlsub {\isadigit{1}}\ {\isasymdots}\ c\isactrlsub k{\isachardoublequote}}]
  2.1169    declares names for the local contexts of premises of a theorem;
  2.1170    \isa{{\isachardoublequote}c\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ c\isactrlsub k{\isachardoublequote}} refers to the \emph{suffix} of the
  2.1171    list of premises.
  2.1172    
  2.1173 -  \item [\mbox{\isa{case{\isacharunderscore}conclusion}}~\isa{{\isachardoublequote}c\ d\isactrlsub {\isadigit{1}}\ {\isasymdots}\ d\isactrlsub k{\isachardoublequote}}] declares names for the conclusions of a named premise
  2.1174 +  \item [\hyperlink{attribute.case_conclusion}{\mbox{\isa{case{\isacharunderscore}conclusion}}}~\isa{{\isachardoublequote}c\ d\isactrlsub {\isadigit{1}}\ {\isasymdots}\ d\isactrlsub k{\isachardoublequote}}] declares names for the conclusions of a named premise
  2.1175    \isa{c}; here \isa{{\isachardoublequote}d\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ d\isactrlsub k{\isachardoublequote}} refers to the
  2.1176    prefix of arguments of a logical formula built by nesting a binary
  2.1177    connective (e.g.\ \isa{{\isachardoublequote}{\isasymor}{\isachardoublequote}}).
  2.1178    
  2.1179 -  Note that proof methods such as \mbox{\isa{induct}} and \mbox{\isa{coinduct}} already provide a default name for the conclusion as a
  2.1180 +  Note that proof methods such as \hyperlink{method.induct}{\mbox{\isa{induct}}} and \hyperlink{method.coinduct}{\mbox{\isa{coinduct}}} already provide a default name for the conclusion as a
  2.1181    whole.  The need to name subformulas only arises with cases that
  2.1182    split into several sub-cases, as in common co-induction rules.
  2.1183  
  2.1184 -  \item [\mbox{\isa{params}}~\isa{{\isachardoublequote}p\isactrlsub {\isadigit{1}}\ {\isasymdots}\ p\isactrlsub m\ {\isasymAND}\ {\isasymdots}\ q\isactrlsub {\isadigit{1}}\ {\isasymdots}\ q\isactrlsub n{\isachardoublequote}}] renames the innermost parameters of
  2.1185 +  \item [\hyperlink{attribute.params}{\mbox{\isa{params}}}~\isa{{\isachardoublequote}p\isactrlsub {\isadigit{1}}\ {\isasymdots}\ p\isactrlsub m\ {\isasymAND}\ {\isasymdots}\ q\isactrlsub {\isadigit{1}}\ {\isasymdots}\ q\isactrlsub n{\isachardoublequote}}] renames the innermost parameters of
  2.1186    premises \isa{{\isachardoublequote}{\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ n{\isachardoublequote}} of some theorem.  An empty list of names
  2.1187    may be given to skip positions, leaving the present parameters
  2.1188    unchanged.
  2.1189 @@ -1610,19 +1610,19 @@
  2.1190    Note that the default usage of case rules does \emph{not} directly
  2.1191    expose parameters to the proof context.
  2.1192    
  2.1193 -  \item [\mbox{\isa{consumes}}~\isa{n}] declares the number of
  2.1194 +  \item [\hyperlink{attribute.consumes}{\mbox{\isa{consumes}}}~\isa{n}] declares the number of
  2.1195    ``major premises'' of a rule, i.e.\ the number of facts to be
  2.1196    consumed when it is applied by an appropriate proof method.  The
  2.1197 -  default value of \mbox{\isa{consumes}} is \isa{{\isachardoublequote}n\ {\isacharequal}\ {\isadigit{1}}{\isachardoublequote}}, which is
  2.1198 +  default value of \hyperlink{attribute.consumes}{\mbox{\isa{consumes}}} is \isa{{\isachardoublequote}n\ {\isacharequal}\ {\isadigit{1}}{\isachardoublequote}}, which is
  2.1199    appropriate for the usual kind of cases and induction rules for
  2.1200    inductive sets (cf.\ \secref{sec:hol-inductive}).  Rules without any
  2.1201 -  \mbox{\isa{consumes}} declaration given are treated as if
  2.1202 -  \mbox{\isa{consumes}}~\isa{{\isadigit{0}}} had been specified.
  2.1203 +  \hyperlink{attribute.consumes}{\mbox{\isa{consumes}}} declaration given are treated as if
  2.1204 +  \hyperlink{attribute.consumes}{\mbox{\isa{consumes}}}~\isa{{\isadigit{0}}} had been specified.
  2.1205    
  2.1206 -  Note that explicit \mbox{\isa{consumes}} declarations are only
  2.1207 +  Note that explicit \hyperlink{attribute.consumes}{\mbox{\isa{consumes}}} declarations are only
  2.1208    rarely needed; this is already taken care of automatically by the
  2.1209 -  higher-level \mbox{\isa{cases}}, \mbox{\isa{induct}}, and
  2.1210 -  \mbox{\isa{coinduct}} declarations.
  2.1211 +  higher-level \hyperlink{attribute.cases}{\mbox{\isa{cases}}}, \hyperlink{attribute.induct}{\mbox{\isa{induct}}}, and
  2.1212 +  \hyperlink{attribute.coinduct}{\mbox{\isa{coinduct}}} declarations.
  2.1213  
  2.1214    \end{descr}%
  2.1215  \end{isamarkuptext}%
  2.1216 @@ -1634,21 +1634,21 @@
  2.1217  %
  2.1218  \begin{isamarkuptext}%
  2.1219  \begin{matharray}{rcl}
  2.1220 -    \indexdef{}{method}{cases}\mbox{\isa{cases}} & : & \isarmeth \\
  2.1221 -    \indexdef{}{method}{induct}\mbox{\isa{induct}} & : & \isarmeth \\
  2.1222 -    \indexdef{}{method}{coinduct}\mbox{\isa{coinduct}} & : & \isarmeth \\
  2.1223 +    \indexdef{}{method}{cases}\hypertarget{method.cases}{\hyperlink{method.cases}{\mbox{\isa{cases}}}} & : & \isarmeth \\
  2.1224 +    \indexdef{}{method}{induct}\hypertarget{method.induct}{\hyperlink{method.induct}{\mbox{\isa{induct}}}} & : & \isarmeth \\
  2.1225 +    \indexdef{}{method}{coinduct}\hypertarget{method.coinduct}{\hyperlink{method.coinduct}{\mbox{\isa{coinduct}}}} & : & \isarmeth \\
  2.1226    \end{matharray}
  2.1227  
  2.1228 -  The \mbox{\isa{cases}}, \mbox{\isa{induct}}, and \mbox{\isa{coinduct}}
  2.1229 +  The \hyperlink{method.cases}{\mbox{\isa{cases}}}, \hyperlink{method.induct}{\mbox{\isa{induct}}}, and \hyperlink{method.coinduct}{\mbox{\isa{coinduct}}}
  2.1230    methods provide a uniform interface to common proof techniques over
  2.1231    datatypes, inductive predicates (or sets), recursive functions etc.
  2.1232    The corresponding rules may be specified and instantiated in a
  2.1233    casual manner.  Furthermore, these methods provide named local
  2.1234 -  contexts that may be invoked via the \mbox{\isa{\isacommand{case}}} proof command
  2.1235 +  contexts that may be invoked via the \hyperlink{command.case}{\mbox{\isa{\isacommand{case}}}} proof command
  2.1236    within the subsequent proof text.  This accommodates compact proof
  2.1237    texts even when reasoning about large specifications.
  2.1238  
  2.1239 -  The \mbox{\isa{induct}} method also provides some additional
  2.1240 +  The \hyperlink{method.induct}{\mbox{\isa{induct}}} method also provides some additional
  2.1241    infrastructure in order to be applicable to structure statements
  2.1242    (either using explicit meta-level connectives, or including facts
  2.1243    and parameters separately).  This avoids cumbersome encoding of
  2.1244 @@ -1676,20 +1676,20 @@
  2.1245  
  2.1246    \begin{descr}
  2.1247  
  2.1248 -  \item [\mbox{\isa{cases}}~\isa{{\isachardoublequote}insts\ R{\isachardoublequote}}] applies method \mbox{\isa{rule}} with an appropriate case distinction theorem, instantiated to
  2.1249 +  \item [\hyperlink{method.cases}{\mbox{\isa{cases}}}~\isa{{\isachardoublequote}insts\ R{\isachardoublequote}}] applies method \hyperlink{method.rule}{\mbox{\isa{rule}}} with an appropriate case distinction theorem, instantiated to
  2.1250    the subjects \isa{insts}.  Symbolic case names are bound according
  2.1251    to the rule's local contexts.
  2.1252  
  2.1253    The rule is determined as follows, according to the facts and
  2.1254 -  arguments passed to the \mbox{\isa{cases}} method:
  2.1255 +  arguments passed to the \hyperlink{method.cases}{\mbox{\isa{cases}}} method:
  2.1256  
  2.1257    \medskip
  2.1258    \begin{tabular}{llll}
  2.1259      facts           &                 & arguments   & rule \\\hline
  2.1260 -                    & \mbox{\isa{cases}} &             & classical case split \\
  2.1261 -                    & \mbox{\isa{cases}} & \isa{t}   & datatype exhaustion (type of \isa{t}) \\
  2.1262 -    \isa{{\isachardoublequote}{\isasymturnstile}\ A\ t{\isachardoublequote}} & \mbox{\isa{cases}} & \isa{{\isachardoublequote}{\isasymdots}{\isachardoublequote}} & inductive predicate/set elimination (of \isa{A}) \\
  2.1263 -    \isa{{\isachardoublequote}{\isasymdots}{\isachardoublequote}}     & \mbox{\isa{cases}} & \isa{{\isachardoublequote}{\isasymdots}\ rule{\isacharcolon}\ R{\isachardoublequote}} & explicit rule \isa{R} \\
  2.1264 +                    & \hyperlink{method.cases}{\mbox{\isa{cases}}} &             & classical case split \\
  2.1265 +                    & \hyperlink{method.cases}{\mbox{\isa{cases}}} & \isa{t}   & datatype exhaustion (type of \isa{t}) \\
  2.1266 +    \isa{{\isachardoublequote}{\isasymturnstile}\ A\ t{\isachardoublequote}} & \hyperlink{method.cases}{\mbox{\isa{cases}}} & \isa{{\isachardoublequote}{\isasymdots}{\isachardoublequote}} & inductive predicate/set elimination (of \isa{A}) \\
  2.1267 +    \isa{{\isachardoublequote}{\isasymdots}{\isachardoublequote}}     & \hyperlink{method.cases}{\mbox{\isa{cases}}} & \isa{{\isachardoublequote}{\isasymdots}\ rule{\isacharcolon}\ R{\isachardoublequote}} & explicit rule \isa{R} \\
  2.1268    \end{tabular}
  2.1269    \medskip
  2.1270  
  2.1271 @@ -1699,16 +1699,16 @@
  2.1272    term needs to be specified; this refers to the first variable of the
  2.1273    last premise (it is usually the same for all cases).
  2.1274  
  2.1275 -  \item [\mbox{\isa{induct}}~\isa{{\isachardoublequote}insts\ R{\isachardoublequote}}] is analogous to the
  2.1276 -  \mbox{\isa{cases}} method, but refers to induction rules, which are
  2.1277 +  \item [\hyperlink{method.induct}{\mbox{\isa{induct}}}~\isa{{\isachardoublequote}insts\ R{\isachardoublequote}}] is analogous to the
  2.1278 +  \hyperlink{method.cases}{\mbox{\isa{cases}}} method, but refers to induction rules, which are
  2.1279    determined as follows:
  2.1280  
  2.1281    \medskip
  2.1282    \begin{tabular}{llll}
  2.1283      facts           &                  & arguments            & rule \\\hline
  2.1284 -                    & \mbox{\isa{induct}} & \isa{{\isachardoublequote}P\ x{\isachardoublequote}}        & datatype induction (type of \isa{x}) \\
  2.1285 -    \isa{{\isachardoublequote}{\isasymturnstile}\ A\ x{\isachardoublequote}} & \mbox{\isa{induct}} & \isa{{\isachardoublequote}{\isasymdots}{\isachardoublequote}}          & predicate/set induction (of \isa{A}) \\
  2.1286 -    \isa{{\isachardoublequote}{\isasymdots}{\isachardoublequote}}     & \mbox{\isa{induct}} & \isa{{\isachardoublequote}{\isasymdots}\ rule{\isacharcolon}\ R{\isachardoublequote}} & explicit rule \isa{R} \\
  2.1287 +                    & \hyperlink{method.induct}{\mbox{\isa{induct}}} & \isa{{\isachardoublequote}P\ x{\isachardoublequote}}        & datatype induction (type of \isa{x}) \\
  2.1288 +    \isa{{\isachardoublequote}{\isasymturnstile}\ A\ x{\isachardoublequote}} & \hyperlink{method.induct}{\mbox{\isa{induct}}} & \isa{{\isachardoublequote}{\isasymdots}{\isachardoublequote}}          & predicate/set induction (of \isa{A}) \\
  2.1289 +    \isa{{\isachardoublequote}{\isasymdots}{\isachardoublequote}}     & \hyperlink{method.induct}{\mbox{\isa{induct}}} & \isa{{\isachardoublequote}{\isasymdots}\ rule{\isacharcolon}\ R{\isachardoublequote}} & explicit rule \isa{R} \\
  2.1290    \end{tabular}
  2.1291    \medskip
  2.1292    
  2.1293 @@ -1740,16 +1740,16 @@
  2.1294    pending variables in the rule.  Such schematic induction rules
  2.1295    rarely occur in practice, though.
  2.1296  
  2.1297 -  \item [\mbox{\isa{coinduct}}~\isa{{\isachardoublequote}inst\ R{\isachardoublequote}}] is analogous to the
  2.1298 -  \mbox{\isa{induct}} method, but refers to coinduction rules, which are
  2.1299 +  \item [\hyperlink{method.coinduct}{\mbox{\isa{coinduct}}}~\isa{{\isachardoublequote}inst\ R{\isachardoublequote}}] is analogous to the
  2.1300 +  \hyperlink{method.induct}{\mbox{\isa{induct}}} method, but refers to coinduction rules, which are
  2.1301    determined as follows:
  2.1302  
  2.1303    \medskip
  2.1304    \begin{tabular}{llll}
  2.1305      goal          &                    & arguments & rule \\\hline
  2.1306 -                  & \mbox{\isa{coinduct}} & \isa{x} & type coinduction (type of \isa{x}) \\
  2.1307 -    \isa{{\isachardoublequote}A\ x{\isachardoublequote}} & \mbox{\isa{coinduct}} & \isa{{\isachardoublequote}{\isasymdots}{\isachardoublequote}} & predicate/set coinduction (of \isa{A}) \\
  2.1308 -    \isa{{\isachardoublequote}{\isasymdots}{\isachardoublequote}}   & \mbox{\isa{coinduct}} & \isa{{\isachardoublequote}{\isasymdots}\ rule{\isacharcolon}\ R{\isachardoublequote}} & explicit rule \isa{R} \\
  2.1309 +                  & \hyperlink{method.coinduct}{\mbox{\isa{coinduct}}} & \isa{x} & type coinduction (type of \isa{x}) \\
  2.1310 +    \isa{{\isachardoublequote}A\ x{\isachardoublequote}} & \hyperlink{method.coinduct}{\mbox{\isa{coinduct}}} & \isa{{\isachardoublequote}{\isasymdots}{\isachardoublequote}} & predicate/set coinduction (of \isa{A}) \\
  2.1311 +    \isa{{\isachardoublequote}{\isasymdots}{\isachardoublequote}}   & \hyperlink{method.coinduct}{\mbox{\isa{coinduct}}} & \isa{{\isachardoublequote}{\isasymdots}\ rule{\isacharcolon}\ R{\isachardoublequote}} & explicit rule \isa{R} \\
  2.1312    \end{tabular}
  2.1313    
  2.1314    Coinduction is the dual of induction.  Induction essentially
  2.1315 @@ -1768,23 +1768,23 @@
  2.1316    \end{descr}
  2.1317  
  2.1318    Above methods produce named local contexts, as determined by the
  2.1319 -  instantiated rule as given in the text.  Beyond that, the \mbox{\isa{induct}} and \mbox{\isa{coinduct}} methods guess further instantiations
  2.1320 +  instantiated rule as given in the text.  Beyond that, the \hyperlink{method.induct}{\mbox{\isa{induct}}} and \hyperlink{method.coinduct}{\mbox{\isa{coinduct}}} methods guess further instantiations
  2.1321    from the goal specification itself.  Any persisting unresolved
  2.1322    schematic variables of the resulting rule will render the the
  2.1323 -  corresponding case invalid.  The term binding \mbox{\isa{{\isacharquery}case}} for
  2.1324 +  corresponding case invalid.  The term binding \hyperlink{variable.?case}{\mbox{\isa{{\isacharquery}case}}} for
  2.1325    the conclusion will be provided with each case, provided that term
  2.1326    is fully specified.
  2.1327  
  2.1328 -  The \mbox{\isa{\isacommand{print{\isacharunderscore}cases}}} command prints all named cases present
  2.1329 +  The \hyperlink{command.print_cases}{\mbox{\isa{\isacommand{print{\isacharunderscore}cases}}}} command prints all named cases present
  2.1330    in the current proof state.
  2.1331  
  2.1332 -  \medskip Despite the additional infrastructure, both \mbox{\isa{cases}}
  2.1333 -  and \mbox{\isa{coinduct}} merely apply a certain rule, after
  2.1334 +  \medskip Despite the additional infrastructure, both \hyperlink{method.cases}{\mbox{\isa{cases}}}
  2.1335 +  and \hyperlink{method.coinduct}{\mbox{\isa{coinduct}}} merely apply a certain rule, after
  2.1336    instantiation, while conforming due to the usual way of monotonic
  2.1337    natural deduction: the context of a structured statement \isa{{\isachardoublequote}{\isasymAnd}x\isactrlsub {\isadigit{1}}\ {\isasymdots}\ x\isactrlsub m{\isachardot}\ {\isasymphi}\isactrlsub {\isadigit{1}}\ {\isasymLongrightarrow}\ {\isasymdots}\ {\isasymphi}\isactrlsub n\ {\isasymLongrightarrow}\ {\isasymdots}{\isachardoublequote}}
  2.1338    reappears unchanged after the case split.
  2.1339  
  2.1340 -  The \mbox{\isa{induct}} method is fundamentally different in this
  2.1341 +  The \hyperlink{method.induct}{\mbox{\isa{induct}}} method is fundamentally different in this
  2.1342    respect: the meta-level structure is passed through the
  2.1343    ``recursive'' course involved in the induction.  Thus the original
  2.1344    statement is basically replaced by separate copies, corresponding to
  2.1345 @@ -1796,7 +1796,7 @@
  2.1346    In induction proofs, local assumptions introduced by cases are split
  2.1347    into two different kinds: \isa{hyps} stemming from the rule and
  2.1348    \isa{prems} from the goal statement.  This is reflected in the
  2.1349 -  extracted cases accordingly, so invoking ``\mbox{\isa{\isacommand{case}}}~\isa{c}'' will provide separate facts \isa{c{\isachardot}hyps} and \isa{c{\isachardot}prems},
  2.1350 +  extracted cases accordingly, so invoking ``\hyperlink{command.case}{\mbox{\isa{\isacommand{case}}}}~\isa{c}'' will provide separate facts \isa{c{\isachardot}hyps} and \isa{c{\isachardot}prems},
  2.1351    as well as fact \isa{c} to hold the all-inclusive list.
  2.1352  
  2.1353    \medskip Facts presented to either method are consumed according to
  2.1354 @@ -1815,10 +1815,10 @@
  2.1355  %
  2.1356  \begin{isamarkuptext}%
  2.1357  \begin{matharray}{rcl}
  2.1358 -    \indexdef{}{command}{print\_induct\_rules}\mbox{\isa{\isacommand{print{\isacharunderscore}induct{\isacharunderscore}rules}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
  2.1359 -    \indexdef{}{attribute}{cases}\mbox{\isa{cases}} & : & \isaratt \\
  2.1360 -    \indexdef{}{attribute}{induct}\mbox{\isa{induct}} & : & \isaratt \\
  2.1361 -    \indexdef{}{attribute}{coinduct}\mbox{\isa{coinduct}} & : & \isaratt \\
  2.1362 +    \indexdef{}{command}{print\_induct\_rules}\hypertarget{command.print_induct_rules}{\hyperlink{command.print_induct_rules}{\mbox{\isa{\isacommand{print{\isacharunderscore}induct{\isacharunderscore}rules}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
  2.1363 +    \indexdef{}{attribute}{cases}\hypertarget{attribute.cases}{\hyperlink{attribute.cases}{\mbox{\isa{cases}}}} & : & \isaratt \\
  2.1364 +    \indexdef{}{attribute}{induct}\hypertarget{attribute.induct}{\hyperlink{attribute.induct}{\mbox{\isa{induct}}}} & : & \isaratt \\
  2.1365 +    \indexdef{}{attribute}{coinduct}\hypertarget{attribute.coinduct}{\hyperlink{attribute.coinduct}{\mbox{\isa{coinduct}}}} & : & \isaratt \\
  2.1366    \end{matharray}
  2.1367  
  2.1368    \begin{rail}
  2.1369 @@ -1835,19 +1835,19 @@
  2.1370  
  2.1371    \begin{descr}
  2.1372  
  2.1373 -  \item [\mbox{\isa{\isacommand{print{\isacharunderscore}induct{\isacharunderscore}rules}}}] prints cases and induct
  2.1374 +  \item [\hyperlink{command.print_induct_rules}{\mbox{\isa{\isacommand{print{\isacharunderscore}induct{\isacharunderscore}rules}}}}] prints cases and induct
  2.1375    rules for predicates (or sets) and types of the current context.
  2.1376    
  2.1377 -  \item [\mbox{\isa{cases}}, \mbox{\isa{induct}}, and \mbox{\isa{coinduct}}] (as attributes) augment the corresponding context of
  2.1378 +  \item [\hyperlink{attribute.cases}{\mbox{\isa{cases}}}, \hyperlink{attribute.induct}{\mbox{\isa{induct}}}, and \hyperlink{attribute.coinduct}{\mbox{\isa{coinduct}}}] (as attributes) augment the corresponding context of
  2.1379    rules for reasoning about (co)inductive predicates (or sets) and
  2.1380    types, using the corresponding methods of the same name.  Certain
  2.1381    definitional packages of object-logics usually declare emerging
  2.1382    cases and induction rules as expected, so users rarely need to
  2.1383    intervene.
  2.1384    
  2.1385 -  Manual rule declarations usually refer to the \mbox{\isa{case{\isacharunderscore}names}} and \mbox{\isa{params}} attributes to adjust names of
  2.1386 -  cases and parameters of a rule; the \mbox{\isa{consumes}}
  2.1387 -  declaration is taken care of automatically: \mbox{\isa{consumes}}~\isa{{\isadigit{0}}} is specified for ``type'' rules and \mbox{\isa{consumes}}~\isa{{\isadigit{1}}} for ``predicate'' / ``set'' rules.
  2.1388 +  Manual rule declarations usually refer to the \hyperlink{attribute.case_names}{\mbox{\isa{case{\isacharunderscore}names}}} and \hyperlink{attribute.params}{\mbox{\isa{params}}} attributes to adjust names of
  2.1389 +  cases and parameters of a rule; the \hyperlink{attribute.consumes}{\mbox{\isa{consumes}}}
  2.1390 +  declaration is taken care of automatically: \hyperlink{attribute.consumes}{\mbox{\isa{consumes}}}~\isa{{\isadigit{0}}} is specified for ``type'' rules and \hyperlink{attribute.consumes}{\mbox{\isa{consumes}}}~\isa{{\isadigit{1}}} for ``predicate'' / ``set'' rules.
  2.1391  
  2.1392    \end{descr}%
  2.1393  \end{isamarkuptext}%
  2.1394 @@ -1859,11 +1859,11 @@
  2.1395  %
  2.1396  \begin{isamarkuptext}%
  2.1397  \begin{matharray}{rcl}
  2.1398 -    \indexdef{}{command}{judgment}\mbox{\isa{\isacommand{judgment}}} & : & \isartrans{theory}{theory} \\
  2.1399 -    \indexdef{}{method}{atomize}\mbox{\isa{atomize}} & : & \isarmeth \\
  2.1400 -    \indexdef{}{attribute}{atomize}\mbox{\isa{atomize}} & : & \isaratt \\
  2.1401 -    \indexdef{}{attribute}{rule\_format}\mbox{\isa{rule{\isacharunderscore}format}} & : & \isaratt \\
  2.1402 -    \indexdef{}{attribute}{rulify}\mbox{\isa{rulify}} & : & \isaratt \\
  2.1403 +    \indexdef{}{command}{judgment}\hypertarget{command.judgment}{\hyperlink{command.judgment}{\mbox{\isa{\isacommand{judgment}}}}} & : & \isartrans{theory}{theory} \\
  2.1404 +    \indexdef{}{method}{atomize}\hypertarget{method.atomize}{\hyperlink{method.atomize}{\mbox{\isa{atomize}}}} & : & \isarmeth \\
  2.1405 +    \indexdef{}{attribute}{atomize}\hypertarget{attribute.atomize}{\hyperlink{attribute.atomize}{\mbox{\isa{atomize}}}} & : & \isaratt \\
  2.1406 +    \indexdef{}{attribute}{rule\_format}\hypertarget{attribute.rule_format}{\hyperlink{attribute.rule_format}{\mbox{\isa{rule{\isacharunderscore}format}}}} & : & \isaratt \\
  2.1407 +    \indexdef{}{attribute}{rulify}\hypertarget{attribute.rulify}{\hyperlink{attribute.rulify}{\mbox{\isa{rulify}}}} & : & \isaratt \\
  2.1408    \end{matharray}
  2.1409  
  2.1410    The very starting point for any Isabelle object-logic is a ``truth
  2.1411 @@ -1877,8 +1877,8 @@
  2.1412    to be viewed as an atomic statement from the meta-level perspective,
  2.1413    e.g.\ \isa{{\isachardoublequote}{\isasymAnd}x{\isachardot}\ x\ {\isasymin}\ A\ {\isasymLongrightarrow}\ P\ x{\isachardoublequote}} versus \isa{{\isachardoublequote}{\isasymforall}x\ {\isasymin}\ A{\isachardot}\ P\ x{\isachardoublequote}}.
  2.1414  
  2.1415 -  From the following language elements, only the \mbox{\isa{atomize}}
  2.1416 -  method and \mbox{\isa{rule{\isacharunderscore}format}} attribute are occasionally
  2.1417 +  From the following language elements, only the \hyperlink{method.atomize}{\mbox{\isa{atomize}}}
  2.1418 +  method and \hyperlink{attribute.rule_format}{\mbox{\isa{rule{\isacharunderscore}format}}} attribute are occasionally
  2.1419    required by end-users, the rest is for those who need to setup their
  2.1420    own object-logic.  In the latter case existing formulations of
  2.1421    Isabelle/FOL or Isabelle/HOL may be taken as realistic examples.
  2.1422 @@ -1897,35 +1897,35 @@
  2.1423  
  2.1424    \begin{descr}
  2.1425    
  2.1426 -  \item [\mbox{\isa{\isacommand{judgment}}}~\isa{{\isachardoublequote}c\ {\isacharcolon}{\isacharcolon}\ {\isasymsigma}\ {\isacharparenleft}mx{\isacharparenright}{\isachardoublequote}}] declares
  2.1427 +  \item [\hyperlink{command.judgment}{\mbox{\isa{\isacommand{judgment}}}}~\isa{{\isachardoublequote}c\ {\isacharcolon}{\isacharcolon}\ {\isasymsigma}\ {\isacharparenleft}mx{\isacharparenright}{\isachardoublequote}}] declares
  2.1428    constant \isa{c} as the truth judgment of the current
  2.1429    object-logic.  Its type \isa{{\isasymsigma}} should specify a coercion of the
  2.1430    category of object-level propositions to \isa{prop} of the Pure
  2.1431    meta-logic; the mixfix annotation \isa{{\isachardoublequote}{\isacharparenleft}mx{\isacharparenright}{\isachardoublequote}} would typically
  2.1432    just link the object language (internally of syntactic category
  2.1433 -  \isa{logic}) with that of \isa{prop}.  Only one \mbox{\isa{\isacommand{judgment}}} declaration may be given in any theory development.
  2.1434 +  \isa{logic}) with that of \isa{prop}.  Only one \hyperlink{command.judgment}{\mbox{\isa{\isacommand{judgment}}}} declaration may be given in any theory development.
  2.1435    
  2.1436 -  \item [\mbox{\isa{atomize}} (as a method)] rewrites any non-atomic
  2.1437 +  \item [\hyperlink{method.atomize}{\mbox{\isa{atomize}}} (as a method)] rewrites any non-atomic
  2.1438    premises of a sub-goal, using the meta-level equations declared via
  2.1439 -  \mbox{\isa{atomize}} (as an attribute) beforehand.  As a result,
  2.1440 +  \hyperlink{attribute.atomize}{\mbox{\isa{atomize}}} (as an attribute) beforehand.  As a result,
  2.1441    heavily nested goals become amenable to fundamental operations such
  2.1442 -  as resolution (cf.\ the \mbox{\isa{rule}} method).  Giving the ``\isa{{\isachardoublequote}{\isacharparenleft}full{\isacharparenright}{\isachardoublequote}}'' option here means to turn the whole subgoal into an
  2.1443 +  as resolution (cf.\ the \hyperlink{method.rule}{\mbox{\isa{rule}}} method).  Giving the ``\isa{{\isachardoublequote}{\isacharparenleft}full{\isacharparenright}{\isachardoublequote}}'' option here means to turn the whole subgoal into an
  2.1444    object-statement (if possible), including the outermost parameters
  2.1445    and assumptions as well.
  2.1446  
  2.1447 -  A typical collection of \mbox{\isa{atomize}} rules for a particular
  2.1448 +  A typical collection of \hyperlink{attribute.atomize}{\mbox{\isa{atomize}}} rules for a particular
  2.1449    object-logic would provide an internalization for each of the
  2.1450    connectives of \isa{{\isachardoublequote}{\isasymAnd}{\isachardoublequote}}, \isa{{\isachardoublequote}{\isasymLongrightarrow}{\isachardoublequote}}, and \isa{{\isachardoublequote}{\isasymequiv}{\isachardoublequote}}.
  2.1451    Meta-level conjunction should be covered as well (this is
  2.1452    particularly important for locales, see \secref{sec:locale}).
  2.1453  
  2.1454 -  \item [\mbox{\isa{rule{\isacharunderscore}format}}] rewrites a theorem by the
  2.1455 -  equalities declared as \mbox{\isa{rulify}} rules in the current
  2.1456 +  \item [\hyperlink{attribute.rule_format}{\mbox{\isa{rule{\isacharunderscore}format}}}] rewrites a theorem by the
  2.1457 +  equalities declared as \hyperlink{attribute.rulify}{\mbox{\isa{rulify}}} rules in the current
  2.1458    object-logic.  By default, the result is fully normalized, including
  2.1459    assumptions and conclusions at any depth.  The \isa{{\isachardoublequote}{\isacharparenleft}no{\isacharunderscore}asm{\isacharparenright}{\isachardoublequote}}
  2.1460    option restricts the transformation to the conclusion of a rule.
  2.1461  
  2.1462 -  In common object-logics (HOL, FOL, ZF), the effect of \mbox{\isa{rule{\isacharunderscore}format}} is to replace (bounded) universal quantification
  2.1463 +  In common object-logics (HOL, FOL, ZF), the effect of \hyperlink{attribute.rule_format}{\mbox{\isa{rule{\isacharunderscore}format}}} is to replace (bounded) universal quantification
  2.1464    (\isa{{\isachardoublequote}{\isasymforall}{\isachardoublequote}}) and implication (\isa{{\isachardoublequote}{\isasymlongrightarrow}{\isachardoublequote}}) by the corresponding
  2.1465    rule statements over \isa{{\isachardoublequote}{\isasymAnd}{\isachardoublequote}} and \isa{{\isachardoublequote}{\isasymLongrightarrow}{\isachardoublequote}}.
  2.1466  
     3.1 --- a/doc-src/IsarRef/Thy/document/HOLCF_Specific.tex	Thu May 15 17:37:21 2008 +0200
     3.2 +++ b/doc-src/IsarRef/Thy/document/HOLCF_Specific.tex	Thu May 15 17:39:20 2008 +0200
     3.3 @@ -30,14 +30,14 @@
     3.4  %
     3.5  \begin{isamarkuptext}%
     3.6  \begin{matharray}{rcl}
     3.7 -    \indexdef{HOLCF}{command}{consts}\mbox{\isa{\isacommand{consts}}} & : & \isartrans{theory}{theory} \\
     3.8 +    \indexdef{HOLCF}{command}{consts}\hypertarget{command.HOLCF.consts}{\hyperlink{command.HOLCF.consts}{\mbox{\isa{\isacommand{consts}}}}} & : & \isartrans{theory}{theory} \\
     3.9    \end{matharray}
    3.10  
    3.11    HOLCF provides a separate type for continuous functions \isa{{\isachardoublequote}{\isasymalpha}\ {\isasymrightarrow}\ {\isasymbeta}{\isachardoublequote}}, with an explicit application operator \isa{{\isachardoublequote}f\ {\isasymcdot}\ x{\isachardoublequote}}.
    3.12    Isabelle mixfix syntax normally refers directly to the pure
    3.13    meta-level function type \isa{{\isachardoublequote}{\isasymalpha}\ {\isasymRightarrow}\ {\isasymbeta}{\isachardoublequote}}, with application \isa{{\isachardoublequote}f\ x{\isachardoublequote}}.
    3.14  
    3.15 -  The HOLCF variant of \mbox{\isa{\isacommand{consts}}} modifies that of
    3.16 +  The HOLCF variant of \hyperlink{command.HOLCF.consts}{\mbox{\isa{\isacommand{consts}}}} modifies that of
    3.17    Pure Isabelle (cf.\ \secref{sec:consts}) such that declarations
    3.18    involving continuous function types are treated specifically.  Any
    3.19    given syntax template is transformed internally, generating
    3.20 @@ -53,7 +53,7 @@
    3.21  %
    3.22  \begin{isamarkuptext}%
    3.23  \begin{matharray}{rcl}
    3.24 -    \indexdef{HOLCF}{command}{domain}\mbox{\isa{\isacommand{domain}}} & : & \isartrans{theory}{theory} \\
    3.25 +    \indexdef{HOLCF}{command}{domain}\hypertarget{command.HOLCF.domain}{\hyperlink{command.HOLCF.domain}{\mbox{\isa{\isacommand{domain}}}}} & : & \isartrans{theory}{theory} \\
    3.26    \end{matharray}
    3.27  
    3.28    \begin{rail}
     4.1 --- a/doc-src/IsarRef/Thy/document/HOL_Specific.tex	Thu May 15 17:37:21 2008 +0200
     4.2 +++ b/doc-src/IsarRef/Thy/document/HOL_Specific.tex	Thu May 15 17:39:20 2008 +0200
     4.3 @@ -30,8 +30,8 @@
     4.4  %
     4.5  \begin{isamarkuptext}%
     4.6  \begin{matharray}{rcl}
     4.7 -    \indexdef{HOL}{command}{typedecl}\mbox{\isa{\isacommand{typedecl}}} & : & \isartrans{theory}{theory} \\
     4.8 -    \indexdef{HOL}{command}{typedef}\mbox{\isa{\isacommand{typedef}}} & : & \isartrans{theory}{proof(prove)} \\
     4.9 +    \indexdef{HOL}{command}{typedecl}\hypertarget{command.HOL.typedecl}{\hyperlink{command.HOL.typedecl}{\mbox{\isa{\isacommand{typedecl}}}}} & : & \isartrans{theory}{theory} \\
    4.10 +    \indexdef{HOL}{command}{typedef}\hypertarget{command.HOL.typedef}{\hyperlink{command.HOL.typedef}{\mbox{\isa{\isacommand{typedef}}}}} & : & \isartrans{theory}{proof(prove)} \\
    4.11    \end{matharray}
    4.12  
    4.13    \begin{rail}
    4.14 @@ -50,30 +50,30 @@
    4.15  
    4.16    \begin{descr}
    4.17    
    4.18 -  \item [\mbox{\isa{\isacommand{typedecl}}}~\isa{{\isachardoublequote}{\isacharparenleft}{\isasymalpha}\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ {\isasymalpha}\isactrlsub n{\isacharparenright}\ t{\isachardoublequote}}] is similar to the original \mbox{\isa{\isacommand{typedecl}}} of
    4.19 +  \item [\hyperlink{command.HOL.typedecl}{\mbox{\isa{\isacommand{typedecl}}}}~\isa{{\isachardoublequote}{\isacharparenleft}{\isasymalpha}\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ {\isasymalpha}\isactrlsub n{\isacharparenright}\ t{\isachardoublequote}}] is similar to the original \hyperlink{command.typedecl}{\mbox{\isa{\isacommand{typedecl}}}} of
    4.20    Isabelle/Pure (see \secref{sec:types-pure}), but also declares type
    4.21    arity \isa{{\isachardoublequote}t\ {\isacharcolon}{\isacharcolon}\ {\isacharparenleft}type{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ type{\isacharparenright}\ type{\isachardoublequote}}, making \isa{t} an
    4.22    actual HOL type constructor.   %FIXME check, update
    4.23    
    4.24 -  \item [\mbox{\isa{\isacommand{typedef}}}~\isa{{\isachardoublequote}{\isacharparenleft}{\isasymalpha}\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ {\isasymalpha}\isactrlsub n{\isacharparenright}\ t\ {\isacharequal}\ A{\isachardoublequote}}] sets up a goal stating non-emptiness of the set \isa{A}.
    4.25 +  \item [\hyperlink{command.HOL.typedef}{\mbox{\isa{\isacommand{typedef}}}}~\isa{{\isachardoublequote}{\isacharparenleft}{\isasymalpha}\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ {\isasymalpha}\isactrlsub n{\isacharparenright}\ t\ {\isacharequal}\ A{\isachardoublequote}}] sets up a goal stating non-emptiness of the set \isa{A}.
    4.26    After finishing the proof, the theory will be augmented by a
    4.27    Gordon/HOL-style type definition, which establishes a bijection
    4.28    between the representing set \isa{A} and the new type \isa{t}.
    4.29    
    4.30 -  Technically, \mbox{\isa{\isacommand{typedef}}} defines both a type \isa{t} and a set (term constant) of the same name (an alternative base
    4.31 +  Technically, \hyperlink{command.HOL.typedef}{\mbox{\isa{\isacommand{typedef}}}} defines both a type \isa{t} and a set (term constant) of the same name (an alternative base
    4.32    name may be given in parentheses).  The injection from type to set
    4.33    is called \isa{Rep{\isacharunderscore}t}, its inverse \isa{Abs{\isacharunderscore}t} (this may be
    4.34 -  changed via an explicit \mbox{\isa{\isakeyword{morphisms}}} declaration).
    4.35 +  changed via an explicit \hyperlink{keyword.HOL.morphisms}{\mbox{\isa{\isakeyword{morphisms}}}} declaration).
    4.36    
    4.37    Theorems \isa{Rep{\isacharunderscore}t}, \isa{Rep{\isacharunderscore}t{\isacharunderscore}inverse}, and \isa{Abs{\isacharunderscore}t{\isacharunderscore}inverse} provide the most basic characterization as a
    4.38    corresponding injection/surjection pair (in both directions).  Rules
    4.39    \isa{Rep{\isacharunderscore}t{\isacharunderscore}inject} and \isa{Abs{\isacharunderscore}t{\isacharunderscore}inject} provide a slightly
    4.40    more convenient view on the injectivity part, suitable for automated
    4.41 -  proof tools (e.g.\ in \mbox{\isa{simp}} or \mbox{\isa{iff}}
    4.42 +  proof tools (e.g.\ in \hyperlink{attribute.simp}{\mbox{\isa{simp}}} or \hyperlink{attribute.iff}{\mbox{\isa{iff}}}
    4.43    declarations).  Rules \isa{Rep{\isacharunderscore}t{\isacharunderscore}cases}/\isa{Rep{\isacharunderscore}t{\isacharunderscore}induct}, and
    4.44    \isa{Abs{\isacharunderscore}t{\isacharunderscore}cases}/\isa{Abs{\isacharunderscore}t{\isacharunderscore}induct} provide alternative views
    4.45    on surjectivity; these are already declared as set or type rules for
    4.46 -  the generic \mbox{\isa{cases}} and \mbox{\isa{induct}} methods.
    4.47 +  the generic \hyperlink{method.cases}{\mbox{\isa{cases}}} and \hyperlink{method.induct}{\mbox{\isa{induct}}} methods.
    4.48    
    4.49    An alternative name may be specified in parentheses; the default is
    4.50    to use \isa{t} as indicated before.  The ``\isa{{\isachardoublequote}{\isacharparenleft}open{\isacharparenright}{\isachardoublequote}}''
    4.51 @@ -85,7 +85,7 @@
    4.52    Note that raw type declarations are rarely used in practice; the
    4.53    main application is with experimental (or even axiomatic!) theory
    4.54    fragments.  Instead of primitive HOL type definitions, user-level
    4.55 -  theories usually refer to higher-level packages such as \mbox{\isa{\isacommand{record}}} (see \secref{sec:hol-record}) or \mbox{\isa{\isacommand{datatype}}} (see \secref{sec:hol-datatype}).%
    4.56 +  theories usually refer to higher-level packages such as \hyperlink{command.HOL.record}{\mbox{\isa{\isacommand{record}}}} (see \secref{sec:hol-record}) or \hyperlink{command.HOL.datatype}{\mbox{\isa{\isacommand{datatype}}}} (see \secref{sec:hol-datatype}).%
    4.57  \end{isamarkuptext}%
    4.58  \isamarkuptrue%
    4.59  %
    4.60 @@ -95,7 +95,7 @@
    4.61  %
    4.62  \begin{isamarkuptext}%
    4.63  \begin{matharray}{rcl}
    4.64 -    \mbox{\isa{split{\isacharunderscore}format}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isaratt \\
    4.65 +    \hyperlink{attribute.HOL.split_format}{\mbox{\isa{split{\isacharunderscore}format}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isaratt \\
    4.66    \end{matharray}
    4.67  
    4.68    \begin{rail}
    4.69 @@ -105,7 +105,7 @@
    4.70  
    4.71    \begin{descr}
    4.72    
    4.73 -  \item [\mbox{\isa{split{\isacharunderscore}format}}~\isa{{\isachardoublequote}p\isactrlsub {\isadigit{1}}\ {\isasymdots}\ p\isactrlsub m\ {\isasymAND}\ {\isasymdots}\ {\isasymAND}\ q\isactrlsub {\isadigit{1}}\ {\isasymdots}\ q\isactrlsub n{\isachardoublequote}}] puts expressions of
    4.74 +  \item [\hyperlink{attribute.HOL.split_format}{\mbox{\isa{split{\isacharunderscore}format}}}~\isa{{\isachardoublequote}p\isactrlsub {\isadigit{1}}\ {\isasymdots}\ p\isactrlsub m\ {\isasymAND}\ {\isasymdots}\ {\isasymAND}\ q\isactrlsub {\isadigit{1}}\ {\isasymdots}\ q\isactrlsub n{\isachardoublequote}}] puts expressions of
    4.75    low-level tuple types into canonical form as specified by the
    4.76    arguments given; the \isa{i}-th collection of arguments refers to
    4.77    occurrences in premise \isa{i} of the rule.  The ``\isa{{\isachardoublequote}{\isacharparenleft}complete{\isacharparenright}{\isachardoublequote}}'' option causes \emph{all} arguments in function
    4.78 @@ -204,7 +204,7 @@
    4.79  %
    4.80  \begin{isamarkuptext}%
    4.81  \begin{matharray}{rcl}
    4.82 -    \indexdef{HOL}{command}{record}\mbox{\isa{\isacommand{record}}} & : & \isartrans{theory}{theory} \\
    4.83 +    \indexdef{HOL}{command}{record}\hypertarget{command.HOL.record}{\hyperlink{command.HOL.record}{\mbox{\isa{\isacommand{record}}}}} & : & \isartrans{theory}{theory} \\
    4.84    \end{matharray}
    4.85  
    4.86    \begin{rail}
    4.87 @@ -214,7 +214,7 @@
    4.88  
    4.89    \begin{descr}
    4.90  
    4.91 -  \item [\mbox{\isa{\isacommand{record}}}~\isa{{\isachardoublequote}{\isacharparenleft}{\isasymalpha}\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ {\isasymalpha}\isactrlsub m{\isacharparenright}\ t\ {\isacharequal}\ {\isasymtau}\ {\isacharplus}\ c\isactrlsub {\isadigit{1}}\ {\isacharcolon}{\isacharcolon}\ {\isasymsigma}\isactrlsub {\isadigit{1}}\ {\isasymdots}\ c\isactrlsub n\ {\isacharcolon}{\isacharcolon}\ {\isasymsigma}\isactrlsub n{\isachardoublequote}}] defines
    4.92 +  \item [\hyperlink{command.HOL.record}{\mbox{\isa{\isacommand{record}}}}~\isa{{\isachardoublequote}{\isacharparenleft}{\isasymalpha}\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ {\isasymalpha}\isactrlsub m{\isacharparenright}\ t\ {\isacharequal}\ {\isasymtau}\ {\isacharplus}\ c\isactrlsub {\isadigit{1}}\ {\isacharcolon}{\isacharcolon}\ {\isasymsigma}\isactrlsub {\isadigit{1}}\ {\isasymdots}\ c\isactrlsub n\ {\isacharcolon}{\isacharcolon}\ {\isasymsigma}\isactrlsub n{\isachardoublequote}}] defines
    4.93    extensible record type \isa{{\isachardoublequote}{\isacharparenleft}{\isasymalpha}\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ {\isasymalpha}\isactrlsub m{\isacharparenright}\ t{\isachardoublequote}},
    4.94    derived from the optional parent record \isa{{\isachardoublequote}{\isasymtau}{\isachardoublequote}} by adding new
    4.95    field components \isa{{\isachardoublequote}c\isactrlsub i\ {\isacharcolon}{\isacharcolon}\ {\isasymsigma}\isactrlsub i{\isachardoublequote}} etc.
    4.96 @@ -326,7 +326,7 @@
    4.97    \item Standard conversions for selectors or updates applied to
    4.98    record constructor terms are made part of the default Simplifier
    4.99    context; thus proofs by reduction of basic operations merely require
   4.100 -  the \mbox{\isa{simp}} method without further arguments.  These rules
   4.101 +  the \hyperlink{method.simp}{\mbox{\isa{simp}}} method without further arguments.  These rules
   4.102    are available as \isa{{\isachardoublequote}t{\isachardot}simps{\isachardoublequote}}, too.
   4.103    
   4.104    \item Selectors applied to updated records are automatically reduced
   4.105 @@ -334,15 +334,15 @@
   4.106    standard Simplifier setup.
   4.107  
   4.108    \item Inject equations of a form analogous to \isa{{\isachardoublequote}{\isacharparenleft}x{\isacharcomma}\ y{\isacharparenright}\ {\isacharequal}\ {\isacharparenleft}x{\isacharprime}{\isacharcomma}\ y{\isacharprime}{\isacharparenright}\ {\isasymequiv}\ x\ {\isacharequal}\ x{\isacharprime}\ {\isasymand}\ y\ {\isacharequal}\ y{\isacharprime}{\isachardoublequote}} are declared to the Simplifier and Classical
   4.109 -  Reasoner as \mbox{\isa{iff}} rules.  These rules are available as
   4.110 +  Reasoner as \hyperlink{attribute.iff}{\mbox{\isa{iff}}} rules.  These rules are available as
   4.111    \isa{{\isachardoublequote}t{\isachardot}iffs{\isachardoublequote}}.
   4.112  
   4.113    \item The introduction rule for record equality analogous to \isa{{\isachardoublequote}x\ r\ {\isacharequal}\ x\ r{\isacharprime}\ {\isasymLongrightarrow}\ y\ r\ {\isacharequal}\ y\ r{\isacharprime}\ {\isasymdots}\ {\isasymLongrightarrow}\ r\ {\isacharequal}\ r{\isacharprime}{\isachardoublequote}} is declared to the Simplifier,
   4.114 -  and as the basic rule context as ``\mbox{\isa{intro}}\isa{{\isachardoublequote}{\isacharquery}{\isachardoublequote}}''.
   4.115 +  and as the basic rule context as ``\hyperlink{attribute.intro}{\mbox{\isa{intro}}}\isa{{\isachardoublequote}{\isacharquery}{\isachardoublequote}}''.
   4.116    The rule is called \isa{{\isachardoublequote}t{\isachardot}equality{\isachardoublequote}}.
   4.117  
   4.118    \item Representations of arbitrary record expressions as canonical
   4.119 -  constructor terms are provided both in \mbox{\isa{cases}} and \mbox{\isa{induct}} format (cf.\ the generic proof methods of the same name,
   4.120 +  constructor terms are provided both in \hyperlink{method.cases}{\mbox{\isa{cases}}} and \hyperlink{method.induct}{\mbox{\isa{induct}}} format (cf.\ the generic proof methods of the same name,
   4.121    \secref{sec:cases-induct}).  Several variations are available, for
   4.122    fixed records, record schemes, more parts etc.
   4.123    
   4.124 @@ -364,8 +364,8 @@
   4.125  %
   4.126  \begin{isamarkuptext}%
   4.127  \begin{matharray}{rcl}
   4.128 -    \indexdef{HOL}{command}{datatype}\mbox{\isa{\isacommand{datatype}}} & : & \isartrans{theory}{theory} \\
   4.129 -    \indexdef{HOL}{command}{rep\_datatype}\mbox{\isa{\isacommand{rep{\isacharunderscore}datatype}}} & : & \isartrans{theory}{theory} \\
   4.130 +    \indexdef{HOL}{command}{datatype}\hypertarget{command.HOL.datatype}{\hyperlink{command.HOL.datatype}{\mbox{\isa{\isacommand{datatype}}}}} & : & \isartrans{theory}{theory} \\
   4.131 +    \indexdef{HOL}{command}{rep\_datatype}\hypertarget{command.HOL.rep_datatype}{\hyperlink{command.HOL.rep_datatype}{\mbox{\isa{\isacommand{rep{\isacharunderscore}datatype}}}}} & : & \isartrans{theory}{theory} \\
   4.132    \end{matharray}
   4.133  
   4.134    \begin{rail}
   4.135 @@ -383,10 +383,10 @@
   4.136  
   4.137    \begin{descr}
   4.138  
   4.139 -  \item [\mbox{\isa{\isacommand{datatype}}}] defines inductive datatypes in
   4.140 +  \item [\hyperlink{command.HOL.datatype}{\mbox{\isa{\isacommand{datatype}}}}] defines inductive datatypes in
   4.141    HOL.
   4.142  
   4.143 -  \item [\mbox{\isa{\isacommand{rep{\isacharunderscore}datatype}}}] represents existing types as
   4.144 +  \item [\hyperlink{command.HOL.rep_datatype}{\mbox{\isa{\isacommand{rep{\isacharunderscore}datatype}}}}] represents existing types as
   4.145    inductive ones, generating the standard infrastructure of derived
   4.146    concepts (primitive recursion etc.).
   4.147  
   4.148 @@ -399,7 +399,7 @@
   4.149    See \cite{isabelle-HOL} for more details on datatypes, but beware of
   4.150    the old-style theory syntax being used there!  Apart from proper
   4.151    proof methods for case-analysis and induction, there are also
   4.152 -  emulations of ML tactics \mbox{\isa{case{\isacharunderscore}tac}} and \mbox{\isa{induct{\isacharunderscore}tac}} available, see \secref{sec:hol-induct-tac}; these admit
   4.153 +  emulations of ML tactics \hyperlink{method.HOL.case_tac}{\mbox{\isa{case{\isacharunderscore}tac}}} and \hyperlink{method.HOL.induct_tac}{\mbox{\isa{induct{\isacharunderscore}tac}}} available, see \secref{sec:hol-induct-tac}; these admit
   4.154    to refer directly to the internal structure of subgoals (including
   4.155    internally bound parameters).%
   4.156  \end{isamarkuptext}%
   4.157 @@ -411,10 +411,10 @@
   4.158  %
   4.159  \begin{isamarkuptext}%
   4.160  \begin{matharray}{rcl}
   4.161 -    \indexdef{HOL}{command}{primrec}\mbox{\isa{\isacommand{primrec}}} & : & \isarkeep{local{\dsh}theory} \\
   4.162 -    \indexdef{HOL}{command}{fun}\mbox{\isa{\isacommand{fun}}} & : & \isarkeep{local{\dsh}theory} \\
   4.163 -    \indexdef{HOL}{command}{function}\mbox{\isa{\isacommand{function}}} & : & \isartrans{local{\dsh}theory}{proof(prove)} \\
   4.164 -    \indexdef{HOL}{command}{termination}\mbox{\isa{\isacommand{termination}}} & : & \isartrans{local{\dsh}theory}{proof(prove)} \\
   4.165 +    \indexdef{HOL}{command}{primrec}\hypertarget{command.HOL.primrec}{\hyperlink{command.HOL.primrec}{\mbox{\isa{\isacommand{primrec}}}}} & : & \isarkeep{local{\dsh}theory} \\
   4.166 +    \indexdef{HOL}{command}{fun}\hypertarget{command.HOL.fun}{\hyperlink{command.HOL.fun}{\mbox{\isa{\isacommand{fun}}}}} & : & \isarkeep{local{\dsh}theory} \\
   4.167 +    \indexdef{HOL}{command}{function}\hypertarget{command.HOL.function}{\hyperlink{command.HOL.function}{\mbox{\isa{\isacommand{function}}}}} & : & \isartrans{local{\dsh}theory}{proof(prove)} \\
   4.168 +    \indexdef{HOL}{command}{termination}\hypertarget{command.HOL.termination}{\hyperlink{command.HOL.termination}{\mbox{\isa{\isacommand{termination}}}}} & : & \isartrans{local{\dsh}theory}{proof(prove)} \\
   4.169    \end{matharray}
   4.170  
   4.171    \railalias{funopts}{function\_opts}  %FIXME ??
   4.172 @@ -436,10 +436,10 @@
   4.173  
   4.174    \begin{descr}
   4.175  
   4.176 -  \item [\mbox{\isa{\isacommand{primrec}}}] defines primitive recursive
   4.177 +  \item [\hyperlink{command.HOL.primrec}{\mbox{\isa{\isacommand{primrec}}}}] defines primitive recursive
   4.178    functions over datatypes, see also \cite{isabelle-HOL}.
   4.179  
   4.180 -  \item [\mbox{\isa{\isacommand{function}}}] defines functions by general
   4.181 +  \item [\hyperlink{command.HOL.function}{\mbox{\isa{\isacommand{function}}}}] defines functions by general
   4.182    wellfounded recursion. A detailed description with examples can be
   4.183    found in \cite{isabelle-function}. The function is specified by a
   4.184    set of (possibly conditional) recursive equations with arbitrary
   4.185 @@ -449,15 +449,15 @@
   4.186    The defined function is considered partial, and the resulting
   4.187    simplification rules (named \isa{{\isachardoublequote}f{\isachardot}psimps{\isachardoublequote}}) and induction rule
   4.188    (named \isa{{\isachardoublequote}f{\isachardot}pinduct{\isachardoublequote}}) are guarded by a generated domain
   4.189 -  predicate \isa{{\isachardoublequote}f{\isacharunderscore}dom{\isachardoublequote}}. The \mbox{\isa{\isacommand{termination}}}
   4.190 +  predicate \isa{{\isachardoublequote}f{\isacharunderscore}dom{\isachardoublequote}}. The \hyperlink{command.HOL.termination}{\mbox{\isa{\isacommand{termination}}}}
   4.191    command can then be used to establish that the function is total.
   4.192  
   4.193 -  \item [\mbox{\isa{\isacommand{fun}}}] is a shorthand notation for
   4.194 -  ``\mbox{\isa{\isacommand{function}}}~\isa{{\isachardoublequote}{\isacharparenleft}sequential{\isacharparenright}{\isachardoublequote}}, followed by
   4.195 +  \item [\hyperlink{command.HOL.fun}{\mbox{\isa{\isacommand{fun}}}}] is a shorthand notation for
   4.196 +  ``\hyperlink{command.HOL.function}{\mbox{\isa{\isacommand{function}}}}~\isa{{\isachardoublequote}{\isacharparenleft}sequential{\isacharparenright}{\isachardoublequote}}, followed by
   4.197    automated proof attempts regarding pattern matching and termination.
   4.198    See \cite{isabelle-function} for further details.
   4.199  
   4.200 -  \item [\mbox{\isa{\isacommand{termination}}}~\isa{f}] commences a
   4.201 +  \item [\hyperlink{command.HOL.termination}{\mbox{\isa{\isacommand{termination}}}}~\isa{f}] commences a
   4.202    termination proof for the previously defined function \isa{f}.  If
   4.203    this is omitted, the command refers to the most recent function
   4.204    definition.  After the proof is closed, the recursive equations and
   4.205 @@ -467,18 +467,18 @@
   4.206  
   4.207    %FIXME check
   4.208  
   4.209 -  Recursive definitions introduced by both the \mbox{\isa{\isacommand{primrec}}} and the \mbox{\isa{\isacommand{function}}} command accommodate
   4.210 +  Recursive definitions introduced by both the \hyperlink{command.HOL.primrec}{\mbox{\isa{\isacommand{primrec}}}} and the \hyperlink{command.HOL.function}{\mbox{\isa{\isacommand{function}}}} command accommodate
   4.211    reasoning by induction (cf.\ \secref{sec:cases-induct}): rule \isa{{\isachardoublequote}c{\isachardot}induct{\isachardoublequote}} (where \isa{c} is the name of the function definition)
   4.212    refers to a specific induction rule, with parameters named according
   4.213 -  to the user-specified equations.  Case names of \mbox{\isa{\isacommand{primrec}}} are that of the datatypes involved, while those of
   4.214 -  \mbox{\isa{\isacommand{function}}} are numbered (starting from 1).
   4.215 +  to the user-specified equations.  Case names of \hyperlink{command.HOL.primrec}{\mbox{\isa{\isacommand{primrec}}}} are that of the datatypes involved, while those of
   4.216 +  \hyperlink{command.HOL.function}{\mbox{\isa{\isacommand{function}}}} are numbered (starting from 1).
   4.217  
   4.218    The equations provided by these packages may be referred later as
   4.219    theorem list \isa{{\isachardoublequote}f{\isachardot}simps{\isachardoublequote}}, where \isa{f} is the (collective)
   4.220    name of the functions defined.  Individual equations may be named
   4.221    explicitly as well.
   4.222  
   4.223 -  The \mbox{\isa{\isacommand{function}}} command accepts the following
   4.224 +  The \hyperlink{command.HOL.function}{\mbox{\isa{\isacommand{function}}}} command accepts the following
   4.225    options.
   4.226  
   4.227    \begin{descr}
   4.228 @@ -518,9 +518,9 @@
   4.229  %
   4.230  \begin{isamarkuptext}%
   4.231  \begin{matharray}{rcl}
   4.232 -    \indexdef{HOL}{method}{pat\_completeness}\mbox{\isa{pat{\isacharunderscore}completeness}} & : & \isarmeth \\
   4.233 -    \indexdef{HOL}{method}{relation}\mbox{\isa{relation}} & : & \isarmeth \\
   4.234 -    \indexdef{HOL}{method}{lexicographic\_order}\mbox{\isa{lexicographic{\isacharunderscore}order}} & : & \isarmeth \\
   4.235 +    \indexdef{HOL}{method}{pat\_completeness}\hypertarget{method.HOL.pat_completeness}{\hyperlink{method.HOL.pat_completeness}{\mbox{\isa{pat{\isacharunderscore}completeness}}}} & : & \isarmeth \\
   4.236 +    \indexdef{HOL}{method}{relation}\hypertarget{method.HOL.relation}{\hyperlink{method.HOL.relation}{\mbox{\isa{relation}}}} & : & \isarmeth \\
   4.237 +    \indexdef{HOL}{method}{lexicographic\_order}\hypertarget{method.HOL.lexicographic_order}{\hyperlink{method.HOL.lexicographic_order}{\mbox{\isa{lexicographic{\isacharunderscore}order}}}} & : & \isarmeth \\
   4.238    \end{matharray}
   4.239  
   4.240    \begin{rail}
   4.241 @@ -532,24 +532,24 @@
   4.242  
   4.243    \begin{descr}
   4.244  
   4.245 -  \item [\mbox{\isa{pat{\isacharunderscore}completeness}}] is a specialized method to
   4.246 +  \item [\hyperlink{method.HOL.pat_completeness}{\mbox{\isa{pat{\isacharunderscore}completeness}}}] is a specialized method to
   4.247    solve goals regarding the completeness of pattern matching, as
   4.248 -  required by the \mbox{\isa{\isacommand{function}}} package (cf.\
   4.249 +  required by the \hyperlink{command.HOL.function}{\mbox{\isa{\isacommand{function}}}} package (cf.\
   4.250    \cite{isabelle-function}).
   4.251  
   4.252 -  \item [\mbox{\isa{relation}}~\isa{R}] introduces a termination
   4.253 +  \item [\hyperlink{method.HOL.relation}{\mbox{\isa{relation}}}~\isa{R}] introduces a termination
   4.254    proof using the relation \isa{R}.  The resulting proof state will
   4.255    contain goals expressing that \isa{R} is wellfounded, and that the
   4.256    arguments of recursive calls decrease with respect to \isa{R}.
   4.257    Usually, this method is used as the initial proof step of manual
   4.258    termination proofs.
   4.259  
   4.260 -  \item [\mbox{\isa{lexicographic{\isacharunderscore}order}}] attempts a fully
   4.261 +  \item [\hyperlink{method.HOL.lexicographic_order}{\mbox{\isa{lexicographic{\isacharunderscore}order}}}] attempts a fully
   4.262    automated termination proof by searching for a lexicographic
   4.263    combination of size measures on the arguments of the function. The
   4.264 -  method accepts the same arguments as the \mbox{\isa{auto}} method,
   4.265 +  method accepts the same arguments as the \hyperlink{method.auto}{\mbox{\isa{auto}}} method,
   4.266    which it uses internally to prove local descents.  The same context
   4.267 -  modifiers as for \mbox{\isa{auto}} are accepted, see
   4.268 +  modifiers as for \hyperlink{method.auto}{\mbox{\isa{auto}}} are accepted, see
   4.269    \secref{sec:clasimp}.
   4.270  
   4.271    In case of failure, extensive information is printed, which can help
   4.272 @@ -564,11 +564,11 @@
   4.273  \isamarkuptrue%
   4.274  %
   4.275  \begin{isamarkuptext}%
   4.276 -The old TFL commands \mbox{\isa{\isacommand{recdef}}} and \mbox{\isa{\isacommand{recdef{\isacharunderscore}tc}}} for defining recursive are mostly obsolete; \mbox{\isa{\isacommand{function}}} or \mbox{\isa{\isacommand{fun}}} should be used instead.
   4.277 +The old TFL commands \hyperlink{command.HOL.recdef}{\mbox{\isa{\isacommand{recdef}}}} and \hyperlink{command.HOL.recdef_tc}{\mbox{\isa{\isacommand{recdef{\isacharunderscore}tc}}}} for defining recursive are mostly obsolete; \hyperlink{command.HOL.function}{\mbox{\isa{\isacommand{function}}}} or \hyperlink{command.HOL.fun}{\mbox{\isa{\isacommand{fun}}}} should be used instead.
   4.278  
   4.279    \begin{matharray}{rcl}
   4.280 -    \indexdef{HOL}{command}{recdef}\mbox{\isa{\isacommand{recdef}}} & : & \isartrans{theory}{theory} \\
   4.281 -    \indexdef{HOL}{command}{recdef\_tc}\mbox{\isa{\isacommand{recdef{\isacharunderscore}tc}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isartrans{theory}{proof(prove)} \\
   4.282 +    \indexdef{HOL}{command}{recdef}\hypertarget{command.HOL.recdef}{\hyperlink{command.HOL.recdef}{\mbox{\isa{\isacommand{recdef}}}}} & : & \isartrans{theory}{theory} \\
   4.283 +    \indexdef{HOL}{command}{recdef\_tc}\hypertarget{command.HOL.recdef_tc}{\hyperlink{command.HOL.recdef_tc}{\mbox{\isa{\isacommand{recdef{\isacharunderscore}tc}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isartrans{theory}{proof(prove)} \\
   4.284    \end{matharray}
   4.285  
   4.286    \begin{rail}
   4.287 @@ -586,33 +586,33 @@
   4.288  
   4.289    \begin{descr}
   4.290    
   4.291 -  \item [\mbox{\isa{\isacommand{recdef}}}] defines general well-founded
   4.292 +  \item [\hyperlink{command.HOL.recdef}{\mbox{\isa{\isacommand{recdef}}}}] defines general well-founded
   4.293    recursive functions (using the TFL package), see also
   4.294    \cite{isabelle-HOL}.  The ``\isa{{\isachardoublequote}{\isacharparenleft}permissive{\isacharparenright}{\isachardoublequote}}'' option tells
   4.295    TFL to recover from failed proof attempts, returning unfinished
   4.296    results.  The \isa{recdef{\isacharunderscore}simp}, \isa{recdef{\isacharunderscore}cong}, and \isa{recdef{\isacharunderscore}wf} hints refer to auxiliary rules to be used in the internal
   4.297 -  automated proof process of TFL.  Additional \mbox{\isa{clasimpmod}}
   4.298 +  automated proof process of TFL.  Additional \hyperlink{syntax.clasimpmod}{\mbox{\isa{clasimpmod}}}
   4.299    declarations (cf.\ \secref{sec:clasimp}) may be given to tune the
   4.300    context of the Simplifier (cf.\ \secref{sec:simplifier}) and
   4.301    Classical reasoner (cf.\ \secref{sec:classical}).
   4.302    
   4.303 -  \item [\mbox{\isa{\isacommand{recdef{\isacharunderscore}tc}}}~\isa{{\isachardoublequote}c\ {\isacharparenleft}i{\isacharparenright}{\isachardoublequote}}] recommences the
   4.304 +  \item [\hyperlink{command.HOL.recdef_tc}{\mbox{\isa{\isacommand{recdef{\isacharunderscore}tc}}}}~\isa{{\isachardoublequote}c\ {\isacharparenleft}i{\isacharparenright}{\isachardoublequote}}] recommences the
   4.305    proof for leftover termination condition number \isa{i} (default
   4.306 -  1) as generated by a \mbox{\isa{\isacommand{recdef}}} definition of
   4.307 +  1) as generated by a \hyperlink{command.HOL.recdef}{\mbox{\isa{\isacommand{recdef}}}} definition of
   4.308    constant \isa{c}.
   4.309    
   4.310 -  Note that in most cases, \mbox{\isa{\isacommand{recdef}}} is able to finish
   4.311 +  Note that in most cases, \hyperlink{command.HOL.recdef}{\mbox{\isa{\isacommand{recdef}}}} is able to finish
   4.312    its internal proofs without manual intervention.
   4.313  
   4.314    \end{descr}
   4.315  
   4.316 -  \medskip Hints for \mbox{\isa{\isacommand{recdef}}} may be also declared
   4.317 +  \medskip Hints for \hyperlink{command.HOL.recdef}{\mbox{\isa{\isacommand{recdef}}}} may be also declared
   4.318    globally, using the following attributes.
   4.319  
   4.320    \begin{matharray}{rcl}
   4.321 -    \indexdef{HOL}{attribute}{recdef\_simp}\mbox{\isa{recdef{\isacharunderscore}simp}} & : & \isaratt \\
   4.322 -    \indexdef{HOL}{attribute}{recdef\_cong}\mbox{\isa{recdef{\isacharunderscore}cong}} & : & \isaratt \\
   4.323 -    \indexdef{HOL}{attribute}{recdef\_wf}\mbox{\isa{recdef{\isacharunderscore}wf}} & : & \isaratt \\
   4.324 +    \indexdef{HOL}{attribute}{recdef\_simp}\hypertarget{attribute.HOL.recdef_simp}{\hyperlink{attribute.HOL.recdef_simp}{\mbox{\isa{recdef{\isacharunderscore}simp}}}} & : & \isaratt \\
   4.325 +    \indexdef{HOL}{attribute}{recdef\_cong}\hypertarget{attribute.HOL.recdef_cong}{\hyperlink{attribute.HOL.recdef_cong}{\mbox{\isa{recdef{\isacharunderscore}cong}}}} & : & \isaratt \\
   4.326 +    \indexdef{HOL}{attribute}{recdef\_wf}\hypertarget{attribute.HOL.recdef_wf}{\hyperlink{attribute.HOL.recdef_wf}{\mbox{\isa{recdef{\isacharunderscore}wf}}}} & : & \isaratt \\
   4.327    \end{matharray}
   4.328  
   4.329    \begin{rail}
   4.330 @@ -628,8 +628,8 @@
   4.331  %
   4.332  \begin{isamarkuptext}%
   4.333  \begin{matharray}{rcl}
   4.334 -    \indexdef{HOL}{command}{specification}\mbox{\isa{\isacommand{specification}}} & : & \isartrans{theory}{proof(prove)} \\
   4.335 -    \indexdef{HOL}{command}{ax\_specification}\mbox{\isa{\isacommand{ax{\isacharunderscore}specification}}} & : & \isartrans{theory}{proof(prove)} \\
   4.336 +    \indexdef{HOL}{command}{specification}\hypertarget{command.HOL.specification}{\hyperlink{command.HOL.specification}{\mbox{\isa{\isacommand{specification}}}}} & : & \isartrans{theory}{proof(prove)} \\
   4.337 +    \indexdef{HOL}{command}{ax\_specification}\hypertarget{command.HOL.ax_specification}{\hyperlink{command.HOL.ax_specification}{\mbox{\isa{\isacommand{ax{\isacharunderscore}specification}}}}} & : & \isartrans{theory}{proof(prove)} \\
   4.338    \end{matharray}
   4.339  
   4.340    \begin{rail}
   4.341 @@ -640,14 +640,14 @@
   4.342  
   4.343    \begin{descr}
   4.344  
   4.345 -  \item [\mbox{\isa{\isacommand{specification}}}~\isa{{\isachardoublequote}decls\ {\isasymphi}{\isachardoublequote}}] sets up a
   4.346 +  \item [\hyperlink{command.HOL.specification}{\mbox{\isa{\isacommand{specification}}}}~\isa{{\isachardoublequote}decls\ {\isasymphi}{\isachardoublequote}}] sets up a
   4.347    goal stating the existence of terms with the properties specified to
   4.348    hold for the constants given in \isa{decls}.  After finishing the
   4.349    proof, the theory will be augmented with definitions for the given
   4.350    constants, as well as with theorems stating the properties for these
   4.351    constants.
   4.352  
   4.353 -  \item [\mbox{\isa{\isacommand{ax{\isacharunderscore}specification}}}~\isa{{\isachardoublequote}decls\ {\isasymphi}{\isachardoublequote}}] sets
   4.354 +  \item [\hyperlink{command.HOL.ax_specification}{\mbox{\isa{\isacommand{ax{\isacharunderscore}specification}}}}~\isa{{\isachardoublequote}decls\ {\isasymphi}{\isachardoublequote}}] sets
   4.355    up a goal stating the existence of terms with the properties
   4.356    specified to hold for the constants given in \isa{decls}.  After
   4.357    finishing the proof, the theory will be augmented with axioms
   4.358 @@ -660,13 +660,13 @@
   4.359  
   4.360    \end{descr}
   4.361  
   4.362 -  Whether to use \mbox{\isa{\isacommand{specification}}} or \mbox{\isa{\isacommand{ax{\isacharunderscore}specification}}} is to some extent a matter of style.  \mbox{\isa{\isacommand{specification}}} introduces no new axioms, and so by
   4.363 -  construction cannot introduce inconsistencies, whereas \mbox{\isa{\isacommand{ax{\isacharunderscore}specification}}} does introduce axioms, but only after the
   4.364 +  Whether to use \hyperlink{command.HOL.specification}{\mbox{\isa{\isacommand{specification}}}} or \hyperlink{command.HOL.ax_specification}{\mbox{\isa{\isacommand{ax{\isacharunderscore}specification}}}} is to some extent a matter of style.  \hyperlink{command.HOL.specification}{\mbox{\isa{\isacommand{specification}}}} introduces no new axioms, and so by
   4.365 +  construction cannot introduce inconsistencies, whereas \hyperlink{command.HOL.ax_specification}{\mbox{\isa{\isacommand{ax{\isacharunderscore}specification}}}} does introduce axioms, but only after the
   4.366    user has explicitly proven it to be safe.  A practical issue must be
   4.367    considered, though: After introducing two constants with the same
   4.368 -  properties using \mbox{\isa{\isacommand{specification}}}, one can prove
   4.369 +  properties using \hyperlink{command.HOL.specification}{\mbox{\isa{\isacommand{specification}}}}, one can prove
   4.370    that the two constants are, in fact, equal.  If this might be a
   4.371 -  problem, one should use \mbox{\isa{\isacommand{ax{\isacharunderscore}specification}}}.%
   4.372 +  problem, one should use \hyperlink{command.HOL.ax_specification}{\mbox{\isa{\isacommand{ax{\isacharunderscore}specification}}}}.%
   4.373  \end{isamarkuptext}%
   4.374  \isamarkuptrue%
   4.375  %
   4.376 @@ -698,11 +698,11 @@
   4.377    to use inference rules for type-checking.
   4.378  
   4.379    \begin{matharray}{rcl}
   4.380 -    \indexdef{HOL}{command}{inductive}\mbox{\isa{\isacommand{inductive}}} & : & \isarkeep{local{\dsh}theory} \\
   4.381 -    \indexdef{HOL}{command}{inductive\_set}\mbox{\isa{\isacommand{inductive{\isacharunderscore}set}}} & : & \isarkeep{local{\dsh}theory} \\
   4.382 -    \indexdef{HOL}{command}{coinductive}\mbox{\isa{\isacommand{coinductive}}} & : & \isarkeep{local{\dsh}theory} \\
   4.383 -    \indexdef{HOL}{command}{coinductive\_set}\mbox{\isa{\isacommand{coinductive{\isacharunderscore}set}}} & : & \isarkeep{local{\dsh}theory} \\
   4.384 -    \indexdef{HOL}{attribute}{mono}\mbox{\isa{mono}} & : & \isaratt \\
   4.385 +    \indexdef{HOL}{command}{inductive}\hypertarget{command.HOL.inductive}{\hyperlink{command.HOL.inductive}{\mbox{\isa{\isacommand{inductive}}}}} & : & \isarkeep{local{\dsh}theory} \\
   4.386 +    \indexdef{HOL}{command}{inductive\_set}\hypertarget{command.HOL.inductive_set}{\hyperlink{command.HOL.inductive_set}{\mbox{\isa{\isacommand{inductive{\isacharunderscore}set}}}}} & : & \isarkeep{local{\dsh}theory} \\
   4.387 +    \indexdef{HOL}{command}{coinductive}\hypertarget{command.HOL.coinductive}{\hyperlink{command.HOL.coinductive}{\mbox{\isa{\isacommand{coinductive}}}}} & : & \isarkeep{local{\dsh}theory} \\
   4.388 +    \indexdef{HOL}{command}{coinductive\_set}\hypertarget{command.HOL.coinductive_set}{\hyperlink{command.HOL.coinductive_set}{\mbox{\isa{\isacommand{coinductive{\isacharunderscore}set}}}}} & : & \isarkeep{local{\dsh}theory} \\
   4.389 +    \indexdef{HOL}{attribute}{mono}\hypertarget{attribute.HOL.mono}{\hyperlink{attribute.HOL.mono}{\mbox{\isa{mono}}}} & : & \isaratt \\
   4.390    \end{matharray}
   4.391  
   4.392    \begin{rail}
   4.393 @@ -717,21 +717,21 @@
   4.394  
   4.395    \begin{descr}
   4.396  
   4.397 -  \item [\mbox{\isa{\isacommand{inductive}}} and \mbox{\isa{\isacommand{coinductive}}}] define (co)inductive predicates from the
   4.398 -  introduction rules given in the \mbox{\isa{\isakeyword{where}}} part.  The
   4.399 -  optional \mbox{\isa{\isakeyword{for}}} part contains a list of parameters of the
   4.400 +  \item [\hyperlink{command.HOL.inductive}{\mbox{\isa{\isacommand{inductive}}}} and \hyperlink{command.HOL.coinductive}{\mbox{\isa{\isacommand{coinductive}}}}] define (co)inductive predicates from the
   4.401 +  introduction rules given in the \hyperlink{keyword.where}{\mbox{\isa{\isakeyword{where}}}} part.  The
   4.402 +  optional \hyperlink{keyword.for}{\mbox{\isa{\isakeyword{for}}}} part contains a list of parameters of the
   4.403    (co)inductive predicates that remain fixed throughout the
   4.404 -  definition.  The optional \mbox{\isa{\isakeyword{monos}}} section contains
   4.405 +  definition.  The optional \hyperlink{keyword.monos}{\mbox{\isa{\isakeyword{monos}}}} section contains
   4.406    \emph{monotonicity theorems}, which are required for each operator
   4.407    applied to a recursive set in the introduction rules.  There
   4.408    \emph{must} be a theorem of the form \isa{{\isachardoublequote}A\ {\isasymle}\ B\ {\isasymLongrightarrow}\ M\ A\ {\isasymle}\ M\ B{\isachardoublequote}},
   4.409    for each premise \isa{{\isachardoublequote}M\ R\isactrlsub i\ t{\isachardoublequote}} in an introduction rule!
   4.410  
   4.411 -  \item [\mbox{\isa{\isacommand{inductive{\isacharunderscore}set}}} and \mbox{\isa{\isacommand{coinductive{\isacharunderscore}set}}}] are wrappers for to the previous commands,
   4.412 +  \item [\hyperlink{command.HOL.inductive_set}{\mbox{\isa{\isacommand{inductive{\isacharunderscore}set}}}} and \hyperlink{command.HOL.coinductive_set}{\mbox{\isa{\isacommand{coinductive{\isacharunderscore}set}}}}] are wrappers for to the previous commands,
   4.413    allowing the definition of (co)inductive sets.
   4.414  
   4.415 -  \item [\mbox{\isa{mono}}] declares monotonicity rules.  These
   4.416 -  rule are involved in the automated monotonicity proof of \mbox{\isa{\isacommand{inductive}}}.
   4.417 +  \item [\hyperlink{attribute.HOL.mono}{\mbox{\isa{mono}}}] declares monotonicity rules.  These
   4.418 +  rule are involved in the automated monotonicity proof of \hyperlink{command.HOL.inductive}{\mbox{\isa{\isacommand{inductive}}}}.
   4.419  
   4.420    \end{descr}%
   4.421  \end{isamarkuptext}%
   4.422 @@ -774,7 +774,7 @@
   4.423  \begin{isamarkuptext}%
   4.424  Each theory contains a default set of theorems that are used in
   4.425    monotonicity proofs.  New rules can be added to this set via the
   4.426 -  \mbox{\isa{mono}} attribute.  The HOL theory \isa{Inductive}
   4.427 +  \hyperlink{attribute.HOL.mono}{\mbox{\isa{mono}}} attribute.  The HOL theory \isa{Inductive}
   4.428    shows how this is done.  In general, the following monotonicity
   4.429    theorems may be added:
   4.430  
   4.431 @@ -817,15 +817,15 @@
   4.432  %
   4.433  \begin{isamarkuptext}%
   4.434  \begin{matharray}{rcl}
   4.435 -    \indexdef{HOL}{method}{arith}\mbox{\isa{arith}} & : & \isarmeth \\
   4.436 -    \indexdef{HOL}{attribute}{arith\_split}\mbox{\isa{arith{\isacharunderscore}split}} & : & \isaratt \\
   4.437 +    \indexdef{HOL}{method}{arith}\hypertarget{method.HOL.arith}{\hyperlink{method.HOL.arith}{\mbox{\isa{arith}}}} & : & \isarmeth \\
   4.438 +    \indexdef{HOL}{attribute}{arith\_split}\hypertarget{attribute.HOL.arith_split}{\hyperlink{attribute.HOL.arith_split}{\mbox{\isa{arith{\isacharunderscore}split}}}} & : & \isaratt \\
   4.439    \end{matharray}
   4.440  
   4.441 -  The \mbox{\isa{arith}} method decides linear arithmetic problems
   4.442 +  The \hyperlink{method.HOL.arith}{\mbox{\isa{arith}}} method decides linear arithmetic problems
   4.443    (on types \isa{nat}, \isa{int}, \isa{real}).  Any current
   4.444    facts are inserted into the goal before running the procedure.
   4.445  
   4.446 -  The \mbox{\isa{arith{\isacharunderscore}split}} attribute declares case split
   4.447 +  The \hyperlink{attribute.HOL.arith_split}{\mbox{\isa{arith{\isacharunderscore}split}}} attribute declares case split
   4.448    rules to be expanded before the arithmetic procedure is invoked.
   4.449  
   4.450    Note that a simpler (but faster) version of arithmetic reasoning is
   4.451 @@ -842,10 +842,10 @@
   4.452    ported to Isar.  These should be never used in proper proof texts!
   4.453  
   4.454    \begin{matharray}{rcl}
   4.455 -    \indexdef{HOL}{method}{case\_tac}\mbox{\isa{case{\isacharunderscore}tac}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   4.456 -    \indexdef{HOL}{method}{induct\_tac}\mbox{\isa{induct{\isacharunderscore}tac}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   4.457 -    \indexdef{HOL}{method}{ind\_cases}\mbox{\isa{ind{\isacharunderscore}cases}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   4.458 -    \indexdef{HOL}{command}{inductive\_cases}\mbox{\isa{\isacommand{inductive{\isacharunderscore}cases}}} & : & \isartrans{theory}{theory} \\
   4.459 +    \indexdef{HOL}{method}{case\_tac}\hypertarget{method.HOL.case_tac}{\hyperlink{method.HOL.case_tac}{\mbox{\isa{case{\isacharunderscore}tac}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   4.460 +    \indexdef{HOL}{method}{induct\_tac}\hypertarget{method.HOL.induct_tac}{\hyperlink{method.HOL.induct_tac}{\mbox{\isa{induct{\isacharunderscore}tac}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   4.461 +    \indexdef{HOL}{method}{ind\_cases}\hypertarget{method.HOL.ind_cases}{\hyperlink{method.HOL.ind_cases}{\mbox{\isa{ind{\isacharunderscore}cases}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
   4.462 +    \indexdef{HOL}{command}{inductive\_cases}\hypertarget{command.HOL.inductive_cases}{\hyperlink{command.HOL.inductive_cases}{\mbox{\isa{\isacommand{inductive{\isacharunderscore}cases}}}}} & : & \isartrans{theory}{theory} \\
   4.463    \end{matharray}
   4.464  
   4.465    \begin{rail}
   4.466 @@ -864,20 +864,20 @@
   4.467  
   4.468    \begin{descr}
   4.469  
   4.470 -  \item [\mbox{\isa{case{\isacharunderscore}tac}} and \mbox{\isa{induct{\isacharunderscore}tac}}]
   4.471 +  \item [\hyperlink{method.HOL.case_tac}{\mbox{\isa{case{\isacharunderscore}tac}}} and \hyperlink{method.HOL.induct_tac}{\mbox{\isa{induct{\isacharunderscore}tac}}}]
   4.472    admit to reason about inductive datatypes only (unless an
   4.473 -  alternative rule is given explicitly).  Furthermore, \mbox{\isa{case{\isacharunderscore}tac}} does a classical case split on booleans; \mbox{\isa{induct{\isacharunderscore}tac}} allows only variables to be given as instantiation.
   4.474 +  alternative rule is given explicitly).  Furthermore, \hyperlink{method.HOL.case_tac}{\mbox{\isa{case{\isacharunderscore}tac}}} does a classical case split on booleans; \hyperlink{method.HOL.induct_tac}{\mbox{\isa{induct{\isacharunderscore}tac}}} allows only variables to be given as instantiation.
   4.475    These tactic emulations feature both goal addressing and dynamic
   4.476    instantiation.  Note that named rule cases are \emph{not} provided
   4.477 -  as would be by the proper \mbox{\isa{induct}} and \mbox{\isa{cases}} proof
   4.478 +  as would be by the proper \hyperlink{method.induct}{\mbox{\isa{induct}}} and \hyperlink{method.cases}{\mbox{\isa{cases}}} proof
   4.479    methods (see \secref{sec:cases-induct}).
   4.480    
   4.481 -  \item [\mbox{\isa{ind{\isacharunderscore}cases}} and \mbox{\isa{\isacommand{inductive{\isacharunderscore}cases}}}] provide an interface to the internal \verb|mk_cases| operation.  Rules are simplified in an unrestricted
   4.482 +  \item [\hyperlink{method.HOL.ind_cases}{\mbox{\isa{ind{\isacharunderscore}cases}}} and \hyperlink{command.HOL.inductive_cases}{\mbox{\isa{\isacommand{inductive{\isacharunderscore}cases}}}}] provide an interface to the internal \verb|mk_cases| operation.  Rules are simplified in an unrestricted
   4.483    forward manner.
   4.484  
   4.485 -  While \mbox{\isa{ind{\isacharunderscore}cases}} is a proof method to apply the
   4.486 -  result immediately as elimination rules, \mbox{\isa{\isacommand{inductive{\isacharunderscore}cases}}} provides case split theorems at the theory level
   4.487 -  for later use.  The \mbox{\isa{\isakeyword{for}}} argument of the \mbox{\isa{ind{\isacharunderscore}cases}} method allows to specify a list of variables that should
   4.488 +  While \hyperlink{method.HOL.ind_cases}{\mbox{\isa{ind{\isacharunderscore}cases}}} is a proof method to apply the
   4.489 +  result immediately as elimination rules, \hyperlink{command.HOL.inductive_cases}{\mbox{\isa{\isacommand{inductive{\isacharunderscore}cases}}}} provides case split theorems at the theory level
   4.490 +  for later use.  The \hyperlink{keyword.for}{\mbox{\isa{\isakeyword{for}}}} argument of the \hyperlink{method.HOL.ind_cases}{\mbox{\isa{ind{\isacharunderscore}cases}}} method allows to specify a list of variables that should
   4.491    be generalized before applying the resulting rule.
   4.492  
   4.493    \end{descr}%
   4.494 @@ -899,12 +899,12 @@
   4.495    (this actually covers the new-style theory format as well).
   4.496  
   4.497    \begin{matharray}{rcl}
   4.498 -    \indexdef{HOL}{command}{value}\mbox{\isa{\isacommand{value}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
   4.499 -    \indexdef{HOL}{command}{code\_module}\mbox{\isa{\isacommand{code{\isacharunderscore}module}}} & : & \isartrans{theory}{theory} \\
   4.500 -    \indexdef{HOL}{command}{code\_library}\mbox{\isa{\isacommand{code{\isacharunderscore}library}}} & : & \isartrans{theory}{theory} \\
   4.501 -    \indexdef{HOL}{command}{consts\_code}\mbox{\isa{\isacommand{consts{\isacharunderscore}code}}} & : & \isartrans{theory}{theory} \\
   4.502 -    \indexdef{HOL}{command}{types\_code}\mbox{\isa{\isacommand{types{\isacharunderscore}code}}} & : & \isartrans{theory}{theory} \\  
   4.503 -    \indexdef{HOL}{attribute}{code}\mbox{\isa{code}} & : & \isaratt \\
   4.504 +    \indexdef{HOL}{command}{value}\hypertarget{command.HOL.value}{\hyperlink{command.HOL.value}{\mbox{\isa{\isacommand{value}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
   4.505 +    \indexdef{HOL}{command}{code\_module}\hypertarget{command.HOL.code_module}{\hyperlink{command.HOL.code_module}{\mbox{\isa{\isacommand{code{\isacharunderscore}module}}}}} & : & \isartrans{theory}{theory} \\
   4.506 +    \indexdef{HOL}{command}{code\_library}\hypertarget{command.HOL.code_library}{\hyperlink{command.HOL.code_library}{\mbox{\isa{\isacommand{code{\isacharunderscore}library}}}}} & : & \isartrans{theory}{theory} \\
   4.507 +    \indexdef{HOL}{command}{consts\_code}\hypertarget{command.HOL.consts_code}{\hyperlink{command.HOL.consts_code}{\mbox{\isa{\isacommand{consts{\isacharunderscore}code}}}}} & : & \isartrans{theory}{theory} \\
   4.508 +    \indexdef{HOL}{command}{types\_code}\hypertarget{command.HOL.types_code}{\hyperlink{command.HOL.types_code}{\mbox{\isa{\isacommand{types{\isacharunderscore}code}}}}} & : & \isartrans{theory}{theory} \\  
   4.509 +    \indexdef{HOL}{attribute}{code}\hypertarget{attribute.HOL.code}{\hyperlink{attribute.HOL.code}{\mbox{\isa{code}}}} & : & \isaratt \\
   4.510    \end{matharray}
   4.511  
   4.512    \begin{rail}
   4.513 @@ -946,7 +946,7 @@
   4.514  
   4.515    \begin{descr}
   4.516  
   4.517 -  \item [\mbox{\isa{\isacommand{value}}}~\isa{t}] evaluates and prints a
   4.518 +  \item [\hyperlink{command.HOL.value}{\mbox{\isa{\isacommand{value}}}}~\isa{t}] evaluates and prints a
   4.519    term using the code generator.
   4.520  
   4.521    \end{descr}
   4.522 @@ -961,21 +961,21 @@
   4.523    introduction on how to use it.
   4.524  
   4.525    \begin{matharray}{rcl}
   4.526 -    \indexdef{HOL}{command}{export\_code}\mbox{\isa{\isacommand{export{\isacharunderscore}code}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
   4.527 -    \indexdef{HOL}{command}{code\_thms}\mbox{\isa{\isacommand{code{\isacharunderscore}thms}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
   4.528 -    \indexdef{HOL}{command}{code\_deps}\mbox{\isa{\isacommand{code{\isacharunderscore}deps}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
   4.529 -    \indexdef{HOL}{command}{code\_datatype}\mbox{\isa{\isacommand{code{\isacharunderscore}datatype}}} & : & \isartrans{theory}{theory} \\
   4.530 -    \indexdef{HOL}{command}{code\_const}\mbox{\isa{\isacommand{code{\isacharunderscore}const}}} & : & \isartrans{theory}{theory} \\
   4.531 -    \indexdef{HOL}{command}{code\_type}\mbox{\isa{\isacommand{code{\isacharunderscore}type}}} & : & \isartrans{theory}{theory} \\
   4.532 -    \indexdef{HOL}{command}{code\_class}\mbox{\isa{\isacommand{code{\isacharunderscore}class}}} & : & \isartrans{theory}{theory} \\
   4.533 -    \indexdef{HOL}{command}{code\_instance}\mbox{\isa{\isacommand{code{\isacharunderscore}instance}}} & : & \isartrans{theory}{theory} \\
   4.534 -    \indexdef{HOL}{command}{code\_monad}\mbox{\isa{\isacommand{code{\isacharunderscore}monad}}} & : & \isartrans{theory}{theory} \\
   4.535 -    \indexdef{HOL}{command}{code\_reserved}\mbox{\isa{\isacommand{code{\isacharunderscore}reserved}}} & : & \isartrans{theory}{theory} \\
   4.536 -    \indexdef{HOL}{command}{code\_include}\mbox{\isa{\isacommand{code{\isacharunderscore}include}}} & : & \isartrans{theory}{theory} \\
   4.537 -    \indexdef{HOL}{command}{code\_modulename}\mbox{\isa{\isacommand{code{\isacharunderscore}modulename}}} & : & \isartrans{theory}{theory} \\
   4.538 -    \indexdef{HOL}{command}{code\_exception}\mbox{\isa{\isacommand{code{\isacharunderscore}exception}}} & : & \isartrans{theory}{theory} \\
   4.539 -    \indexdef{HOL}{command}{print\_codesetup}\mbox{\isa{\isacommand{print{\isacharunderscore}codesetup}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
   4.540 -    \indexdef{HOL}{attribute}{code}\mbox{\isa{code}} & : & \isaratt \\
   4.541 +    \indexdef{HOL}{command}{export\_code}\hypertarget{command.HOL.export_code}{\hyperlink{command.HOL.export_code}{\mbox{\isa{\isacommand{export{\isacharunderscore}code}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
   4.542 +    \indexdef{HOL}{command}{code\_thms}\hypertarget{command.HOL.code_thms}{\hyperlink{command.HOL.code_thms}{\mbox{\isa{\isacommand{code{\isacharunderscore}thms}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
   4.543 +    \indexdef{HOL}{command}{code\_deps}\hypertarget{command.HOL.code_deps}{\hyperlink{command.HOL.code_deps}{\mbox{\isa{\isacommand{code{\isacharunderscore}deps}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
   4.544 +    \indexdef{HOL}{command}{code\_datatype}\hypertarget{command.HOL.code_datatype}{\hyperlink{command.HOL.code_datatype}{\mbox{\isa{\isacommand{code{\isacharunderscore}datatype}}}}} & : & \isartrans{theory}{theory} \\
   4.545 +    \indexdef{HOL}{command}{code\_const}\hypertarget{command.HOL.code_const}{\hyperlink{command.HOL.code_const}{\mbox{\isa{\isacommand{code{\isacharunderscore}const}}}}} & : & \isartrans{theory}{theory} \\
   4.546 +    \indexdef{HOL}{command}{code\_type}\hypertarget{command.HOL.code_type}{\hyperlink{command.HOL.code_type}{\mbox{\isa{\isacommand{code{\isacharunderscore}type}}}}} & : & \isartrans{theory}{theory} \\
   4.547 +    \indexdef{HOL}{command}{code\_class}\hypertarget{command.HOL.code_class}{\hyperlink{command.HOL.code_class}{\mbox{\isa{\isacommand{code{\isacharunderscore}class}}}}} & : & \isartrans{theory}{theory} \\
   4.548 +    \indexdef{HOL}{command}{code\_instance}\hypertarget{command.HOL.code_instance}{\hyperlink{command.HOL.code_instance}{\mbox{\isa{\isacommand{code{\isacharunderscore}instance}}}}} & : & \isartrans{theory}{theory} \\
   4.549 +    \indexdef{HOL}{command}{code\_monad}\hypertarget{command.HOL.code_monad}{\hyperlink{command.HOL.code_monad}{\mbox{\isa{\isacommand{code{\isacharunderscore}monad}}}}} & : & \isartrans{theory}{theory} \\
   4.550 +    \indexdef{HOL}{command}{code\_reserved}\hypertarget{command.HOL.code_reserved}{\hyperlink{command.HOL.code_reserved}{\mbox{\isa{\isacommand{code{\isacharunderscore}reserved}}}}} & : & \isartrans{theory}{theory} \\
   4.551 +    \indexdef{HOL}{command}{code\_include}\hypertarget{command.HOL.code_include}{\hyperlink{command.HOL.code_include}{\mbox{\isa{\isacommand{code{\isacharunderscore}include}}}}} & : & \isartrans{theory}{theory} \\
   4.552 +    \indexdef{HOL}{command}{code\_modulename}\hypertarget{command.HOL.code_modulename}{\hyperlink{command.HOL.code_modulename}{\mbox{\isa{\isacommand{code{\isacharunderscore}modulename}}}}} & : & \isartrans{theory}{theory} \\
   4.553 +    \indexdef{HOL}{command}{code\_exception}\hypertarget{command.HOL.code_exception}{\hyperlink{command.HOL.code_exception}{\mbox{\isa{\isacommand{code{\isacharunderscore}exception}}}}} & : & \isartrans{theory}{theory} \\
   4.554 +    \indexdef{HOL}{command}{print\_codesetup}\hypertarget{command.HOL.print_codesetup}{\hyperlink{command.HOL.print_codesetup}{\mbox{\isa{\isacommand{print{\isacharunderscore}codesetup}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
   4.555 +    \indexdef{HOL}{attribute}{code}\hypertarget{attribute.HOL.code}{\hyperlink{attribute.HOL.code}{\mbox{\isa{code}}}} & : & \isaratt \\
   4.556    \end{matharray}
   4.557  
   4.558    \begin{rail}
   4.559 @@ -1050,7 +1050,7 @@
   4.560  
   4.561    \begin{descr}
   4.562  
   4.563 -  \item [\mbox{\isa{\isacommand{export{\isacharunderscore}code}}}] is the canonical interface
   4.564 +  \item [\hyperlink{command.HOL.export_code}{\mbox{\isa{\isacommand{export{\isacharunderscore}code}}}}] is the canonical interface
   4.565    for generating and serializing code: for a given list of constants,
   4.566    code is generated for the specified target languages.  Abstract code
   4.567    is cached incrementally.  If no constant is given, the currently
   4.568 @@ -1063,7 +1063,7 @@
   4.569  
   4.570    By default, for each involved theory one corresponding name space
   4.571    module is generated.  Alternativly, a module name may be specified
   4.572 -  after the \mbox{\isa{\isakeyword{module{\isacharunderscore}name}}} keyword; then \emph{all} code is
   4.573 +  after the \hyperlink{keyword.module_name}{\mbox{\isa{\isakeyword{module{\isacharunderscore}name}}}} keyword; then \emph{all} code is
   4.574    placed in this module.
   4.575  
   4.576    For \emph{SML} and \emph{OCaml}, the file specification refers to a
   4.577 @@ -1077,68 +1077,68 @@
   4.578    \emph{Haskell} a module name prefix may be given using the ``\isa{{\isachardoublequote}root{\isacharcolon}{\isachardoublequote}}'' argument; ``\isa{string{\isacharunderscore}classes}'' adds a ``\verb|deriving (Read, Show)|'' clause to each appropriate datatype
   4.579    declaration.
   4.580  
   4.581 -  \item [\mbox{\isa{\isacommand{code{\isacharunderscore}thms}}}] prints a list of theorems
   4.582 +  \item [\hyperlink{command.HOL.code_thms}{\mbox{\isa{\isacommand{code{\isacharunderscore}thms}}}}] prints a list of theorems
   4.583    representing the corresponding program containing all given
   4.584    constants; if no constants are given, the currently cached code
   4.585    theorems are printed.
   4.586  
   4.587 -  \item [\mbox{\isa{\isacommand{code{\isacharunderscore}deps}}}] visualizes dependencies of
   4.588 +  \item [\hyperlink{command.HOL.code_deps}{\mbox{\isa{\isacommand{code{\isacharunderscore}deps}}}}] visualizes dependencies of
   4.589    theorems representing the corresponding program containing all given
   4.590    constants; if no constants are given, the currently cached code
   4.591    theorems are visualized.
   4.592  
   4.593 -  \item [\mbox{\isa{\isacommand{code{\isacharunderscore}datatype}}}] specifies a constructor set
   4.594 +  \item [\hyperlink{command.HOL.code_datatype}{\mbox{\isa{\isacommand{code{\isacharunderscore}datatype}}}}] specifies a constructor set
   4.595    for a logical type.
   4.596  
   4.597 -  \item [\mbox{\isa{\isacommand{code{\isacharunderscore}const}}}] associates a list of constants
   4.598 +  \item [\hyperlink{command.HOL.code_const}{\mbox{\isa{\isacommand{code{\isacharunderscore}const}}}}] associates a list of constants
   4.599    with target-specific serializations; omitting a serialization
   4.600    deletes an existing serialization.
   4.601  
   4.602 -  \item [\mbox{\isa{\isacommand{code{\isacharunderscore}type}}}] associates a list of type
   4.603 +  \item [\hyperlink{command.HOL.code_type}{\mbox{\isa{\isacommand{code{\isacharunderscore}type}}}}] associates a list of type
   4.604    constructors with target-specific serializations; omitting a
   4.605    serialization deletes an existing serialization.
   4.606  
   4.607 -  \item [\mbox{\isa{\isacommand{code{\isacharunderscore}class}}}] associates a list of classes
   4.608 +  \item [\hyperlink{command.HOL.code_class}{\mbox{\isa{\isacommand{code{\isacharunderscore}class}}}}] associates a list of classes
   4.609    with target-specific class names; in addition, constants associated
   4.610    with this class may be given target-specific names used for instance
   4.611    declarations; omitting a serialization deletes an existing
   4.612    serialization.  This applies only to \emph{Haskell}.
   4.613  
   4.614 -  \item [\mbox{\isa{\isacommand{code{\isacharunderscore}instance}}}] declares a list of type
   4.615 +  \item [\hyperlink{command.HOL.code_instance}{\mbox{\isa{\isacommand{code{\isacharunderscore}instance}}}}] declares a list of type
   4.616    constructor / class instance relations as ``already present'' for a
   4.617    given target.  Omitting a ``\isa{{\isachardoublequote}{\isacharminus}{\isachardoublequote}}'' deletes an existing
   4.618    ``already present'' declaration.  This applies only to
   4.619    \emph{Haskell}.
   4.620  
   4.621 -  \item [\mbox{\isa{\isacommand{code{\isacharunderscore}monad}}}] provides an auxiliary
   4.622 +  \item [\hyperlink{command.HOL.code_monad}{\mbox{\isa{\isacommand{code{\isacharunderscore}monad}}}}] provides an auxiliary
   4.623    mechanism to generate monadic code.
   4.624  
   4.625 -  \item [\mbox{\isa{\isacommand{code{\isacharunderscore}reserved}}}] declares a list of names as
   4.626 +  \item [\hyperlink{command.HOL.code_reserved}{\mbox{\isa{\isacommand{code{\isacharunderscore}reserved}}}}] declares a list of names as
   4.627    reserved for a given target, preventing it to be shadowed by any
   4.628    generated code.
   4.629  
   4.630 -  \item [\mbox{\isa{\isacommand{code{\isacharunderscore}include}}}] adds arbitrary named content
   4.631 +  \item [\hyperlink{command.HOL.code_include}{\mbox{\isa{\isacommand{code{\isacharunderscore}include}}}}] adds arbitrary named content
   4.632    (``include'') to generated code.  A as last argument ``\isa{{\isachardoublequote}{\isacharminus}{\isachardoublequote}}''
   4.633    will remove an already added ``include''.
   4.634  
   4.635 -  \item [\mbox{\isa{\isacommand{code{\isacharunderscore}modulename}}}] declares aliasings from
   4.636 +  \item [\hyperlink{command.HOL.code_modulename}{\mbox{\isa{\isacommand{code{\isacharunderscore}modulename}}}}] declares aliasings from
   4.637    one module name onto another.
   4.638  
   4.639 -  \item [\mbox{\isa{\isacommand{code{\isacharunderscore}exception}}}] declares constants which
   4.640 +  \item [\hyperlink{command.HOL.code_exception}{\mbox{\isa{\isacommand{code{\isacharunderscore}exception}}}}] declares constants which
   4.641    are not required to have a definition by a defining equations; these
   4.642    are mapped on exceptions instead.
   4.643  
   4.644 -  \item [\mbox{\isa{code}}~\isa{func}] explicitly selects (or
   4.645 +  \item [\hyperlink{attribute.HOL.code}{\mbox{\isa{code}}}~\isa{func}] explicitly selects (or
   4.646    with option ``\isa{{\isachardoublequote}del{\isacharcolon}{\isachardoublequote}}'' deselects) a defining equation for
   4.647    code generation.  Usually packages introducing defining equations
   4.648    provide a resonable default setup for selection.
   4.649  
   4.650 -  \item [\mbox{\isa{code}}\isa{inline}] declares (or with
   4.651 +  \item [\hyperlink{attribute.HOL.code}{\mbox{\isa{code}}}\isa{inline}] declares (or with
   4.652    option ``\isa{{\isachardoublequote}del{\isacharcolon}{\isachardoublequote}}'' removes) inlining theorems which are
   4.653    applied as rewrite rules to any defining equation during
   4.654    preprocessing.
   4.655  
   4.656 -  \item [\mbox{\isa{\isacommand{print{\isacharunderscore}codesetup}}}] gives an overview on
   4.657 +  \item [\hyperlink{command.HOL.print_codesetup}{\mbox{\isa{\isacommand{print{\isacharunderscore}codesetup}}}}] gives an overview on
   4.658    selected defining equations, code generator datatypes and
   4.659    preprocessor setup.
   4.660  
     5.1 --- a/doc-src/IsarRef/Thy/document/ML_Tactic.tex	Thu May 15 17:37:21 2008 +0200
     5.2 +++ b/doc-src/IsarRef/Thy/document/ML_Tactic.tex	Thu May 15 17:39:20 2008 +0200
     5.3 @@ -26,7 +26,7 @@
     5.4  %
     5.5  \begin{isamarkuptext}%
     5.6  Isar Proof methods closely resemble traditional tactics, when used
     5.7 -  in unstructured sequences of \mbox{\isa{\isacommand{apply}}} commands.
     5.8 +  in unstructured sequences of \hyperlink{command.apply}{\mbox{\isa{\isacommand{apply}}}} commands.
     5.9    Isabelle/Isar provides emulations for all major ML tactics of
    5.10    classic Isabelle --- mostly for the sake of easy porting of existing
    5.11    developments, as actual Isar proof texts would demand much less
    5.12 @@ -38,7 +38,7 @@
    5.13    corresponding ML tactic.  Furthermore, the Isar versions of classic
    5.14    Isabelle tactics often cover several variant forms by a single
    5.15    method with separate options to tune the behavior.  For example,
    5.16 -  method \mbox{\isa{simp}} replaces all of \verb|simp_tac|~/ \verb|asm_simp_tac|~/ \verb|full_simp_tac|~/ \verb|asm_full_simp_tac|, there
    5.17 +  method \hyperlink{method.simp}{\mbox{\isa{simp}}} replaces all of \verb|simp_tac|~/ \verb|asm_simp_tac|~/ \verb|full_simp_tac|~/ \verb|asm_full_simp_tac|, there
    5.18    is also concrete syntax for augmenting the Simplifier context (the
    5.19    current ``simpset'') in a convenient way.%
    5.20  \end{isamarkuptext}%
    5.21 @@ -67,16 +67,16 @@
    5.22  
    5.23    \end{enumerate}
    5.24  
    5.25 -  Basically, the set of Isar tactic emulations \mbox{\isa{rule{\isacharunderscore}tac}},
    5.26 -  \mbox{\isa{erule{\isacharunderscore}tac}}, \mbox{\isa{drule{\isacharunderscore}tac}}, \mbox{\isa{frule{\isacharunderscore}tac}} (see
    5.27 +  Basically, the set of Isar tactic emulations \hyperlink{method.rule_tac}{\mbox{\isa{rule{\isacharunderscore}tac}}},
    5.28 +  \hyperlink{method.erule_tac}{\mbox{\isa{erule{\isacharunderscore}tac}}}, \hyperlink{method.drule_tac}{\mbox{\isa{drule{\isacharunderscore}tac}}}, \hyperlink{method.frule_tac}{\mbox{\isa{frule{\isacharunderscore}tac}}} (see
    5.29    \secref{sec:tactics}) would be sufficient to cover the four modes,
    5.30    either with or without instantiation, and either with single or
    5.31    multiple arguments.  Although it is more convenient in most cases to
    5.32 -  use the plain \mbox{\isa{rule}} method (see
    5.33 +  use the plain \hyperlink{method.rule}{\mbox{\isa{rule}}} method (see
    5.34    \secref{sec:pure-meth-att}), or any of its ``improper'' variants
    5.35 -  \mbox{\isa{erule}}, \mbox{\isa{drule}}, \mbox{\isa{frule}} (see
    5.36 +  \hyperlink{method.erule}{\mbox{\isa{erule}}}, \hyperlink{method.drule}{\mbox{\isa{drule}}}, \hyperlink{method.frule}{\mbox{\isa{frule}}} (see
    5.37    \secref{sec:misc-meth-att}).  Note that explicit goal addressing is
    5.38 -  only supported by the actual \mbox{\isa{rule{\isacharunderscore}tac}} version.
    5.39 +  only supported by the actual \hyperlink{method.rule_tac}{\mbox{\isa{rule{\isacharunderscore}tac}}} version.
    5.40  
    5.41    With this in mind, plain resolution tactics correspond to Isar
    5.42    methods as follows.
    5.43 @@ -95,7 +95,7 @@
    5.44    \medskip
    5.45  
    5.46    Note that explicit goal addressing may be usually avoided by
    5.47 -  changing the order of subgoals with \mbox{\isa{\isacommand{defer}}} or \mbox{\isa{\isacommand{prefer}}} (see \secref{sec:tactic-commands}).%
    5.48 +  changing the order of subgoals with \hyperlink{command.defer}{\mbox{\isa{\isacommand{defer}}}} or \hyperlink{command.prefer}{\mbox{\isa{\isacommand{prefer}}}} (see \secref{sec:tactic-commands}).%
    5.49  \end{isamarkuptext}%
    5.50  \isamarkuptrue%
    5.51  %
    5.52 @@ -105,20 +105,20 @@
    5.53  %
    5.54  \begin{isamarkuptext}%
    5.55  The main Simplifier tactics \verb|simp_tac| and variants (cf.\
    5.56 -  \cite{isabelle-ref}) are all covered by the \mbox{\isa{simp}} and
    5.57 -  \mbox{\isa{simp{\isacharunderscore}all}} methods (see \secref{sec:simplifier}).  Note that
    5.58 +  \cite{isabelle-ref}) are all covered by the \hyperlink{method.simp}{\mbox{\isa{simp}}} and
    5.59 +  \hyperlink{method.simp_all}{\mbox{\isa{simp{\isacharunderscore}all}}} methods (see \secref{sec:simplifier}).  Note that
    5.60    there is no individual goal addressing available, simplification
    5.61 -  acts either on the first goal (\mbox{\isa{simp}}) or all goals
    5.62 -  (\mbox{\isa{simp{\isacharunderscore}all}}).
    5.63 +  acts either on the first goal (\hyperlink{method.simp}{\mbox{\isa{simp}}}) or all goals
    5.64 +  (\hyperlink{method.simp_all}{\mbox{\isa{simp{\isacharunderscore}all}}}).
    5.65  
    5.66    \medskip
    5.67    \begin{tabular}{lll}
    5.68 -    \verb|asm_full_simp_tac|~\isa{{\isachardoublequote}{\isacharat}{\isacharbraceleft}simpset{\isacharbraceright}\ {\isadigit{1}}{\isachardoublequote}} & & \mbox{\isa{simp}} \\
    5.69 -    \verb|ALLGOALS|~(\verb|asm_full_simp_tac|~\isa{{\isachardoublequote}{\isacharat}{\isacharbraceleft}simpset{\isacharbraceright}{\isachardoublequote}}) & & \mbox{\isa{simp{\isacharunderscore}all}} \\[0.5ex]
    5.70 -    \verb|simp_tac|~\isa{{\isachardoublequote}{\isacharat}{\isacharbraceleft}simpset{\isacharbraceright}\ {\isadigit{1}}{\isachardoublequote}} & & \mbox{\isa{simp}}~\isa{{\isachardoublequote}{\isacharparenleft}no{\isacharunderscore}asm{\isacharparenright}{\isachardoublequote}} \\
    5.71 -    \verb|asm_simp_tac|~\isa{{\isachardoublequote}{\isacharat}{\isacharbraceleft}simpset{\isacharbraceright}\ {\isadigit{1}}{\isachardoublequote}} & & \mbox{\isa{simp}}~\isa{{\isachardoublequote}{\isacharparenleft}no{\isacharunderscore}asm{\isacharunderscore}simp{\isacharparenright}{\isachardoublequote}} \\
    5.72 -    \verb|full_simp_tac|~\isa{{\isachardoublequote}{\isacharat}{\isacharbraceleft}simpset{\isacharbraceright}\ {\isadigit{1}}{\isachardoublequote}} & & \mbox{\isa{simp}}~\isa{{\isachardoublequote}{\isacharparenleft}no{\isacharunderscore}asm{\isacharunderscore}use{\isacharparenright}{\isachardoublequote}} \\
    5.73 -    \verb|asm_lr_simp_tac|~\isa{{\isachardoublequote}{\isacharat}{\isacharbraceleft}simpset{\isacharbraceright}\ {\isadigit{1}}{\isachardoublequote}} & & \mbox{\isa{simp}}~\isa{{\isachardoublequote}{\isacharparenleft}asm{\isacharunderscore}lr{\isacharparenright}{\isachardoublequote}} \\
    5.74 +    \verb|asm_full_simp_tac|~\isa{{\isachardoublequote}{\isacharat}{\isacharbraceleft}simpset{\isacharbraceright}\ {\isadigit{1}}{\isachardoublequote}} & & \hyperlink{method.simp}{\mbox{\isa{simp}}} \\
    5.75 +    \verb|ALLGOALS|~(\verb|asm_full_simp_tac|~\isa{{\isachardoublequote}{\isacharat}{\isacharbraceleft}simpset{\isacharbraceright}{\isachardoublequote}}) & & \hyperlink{method.simp_all}{\mbox{\isa{simp{\isacharunderscore}all}}} \\[0.5ex]
    5.76 +    \verb|simp_tac|~\isa{{\isachardoublequote}{\isacharat}{\isacharbraceleft}simpset{\isacharbraceright}\ {\isadigit{1}}{\isachardoublequote}} & & \hyperlink{method.simp}{\mbox{\isa{simp}}}~\isa{{\isachardoublequote}{\isacharparenleft}no{\isacharunderscore}asm{\isacharparenright}{\isachardoublequote}} \\
    5.77 +    \verb|asm_simp_tac|~\isa{{\isachardoublequote}{\isacharat}{\isacharbraceleft}simpset{\isacharbraceright}\ {\isadigit{1}}{\isachardoublequote}} & & \hyperlink{method.simp}{\mbox{\isa{simp}}}~\isa{{\isachardoublequote}{\isacharparenleft}no{\isacharunderscore}asm{\isacharunderscore}simp{\isacharparenright}{\isachardoublequote}} \\
    5.78 +    \verb|full_simp_tac|~\isa{{\isachardoublequote}{\isacharat}{\isacharbraceleft}simpset{\isacharbraceright}\ {\isadigit{1}}{\isachardoublequote}} & & \hyperlink{method.simp}{\mbox{\isa{simp}}}~\isa{{\isachardoublequote}{\isacharparenleft}no{\isacharunderscore}asm{\isacharunderscore}use{\isacharparenright}{\isachardoublequote}} \\
    5.79 +    \verb|asm_lr_simp_tac|~\isa{{\isachardoublequote}{\isacharat}{\isacharbraceleft}simpset{\isacharbraceright}\ {\isadigit{1}}{\isachardoublequote}} & & \hyperlink{method.simp}{\mbox{\isa{simp}}}~\isa{{\isachardoublequote}{\isacharparenleft}asm{\isacharunderscore}lr{\isacharparenright}{\isachardoublequote}} \\
    5.80    \end{tabular}
    5.81    \medskip%
    5.82  \end{isamarkuptext}%
    5.83 @@ -131,7 +131,7 @@
    5.84  \begin{isamarkuptext}%
    5.85  The Classical Reasoner provides a rather large number of variations
    5.86    of automated tactics, such as \verb|blast_tac|, \verb|fast_tac|, \verb|clarify_tac| etc.\ (see \cite{isabelle-ref}).  The corresponding
    5.87 -  Isar methods usually share the same base name, such as \mbox{\isa{blast}}, \mbox{\isa{fast}}, \mbox{\isa{clarify}} etc.\ (see
    5.88 +  Isar methods usually share the same base name, such as \hyperlink{method.blast}{\mbox{\isa{blast}}}, \hyperlink{method.fast}{\mbox{\isa{fast}}}, \hyperlink{method.clarify}{\mbox{\isa{clarify}}} etc.\ (see
    5.89    \secref{sec:classical}).%
    5.90  \end{isamarkuptext}%
    5.91  \isamarkuptrue%
    5.92 @@ -167,7 +167,7 @@
    5.93    in Isar, providing the bare minimum of combinators only: ``\isa{{\isachardoublequote}{\isacharcomma}{\isachardoublequote}}'' (sequential composition), ``\isa{{\isachardoublequote}{\isacharbar}{\isachardoublequote}}'' (alternative
    5.94    choices), ``\isa{{\isachardoublequote}{\isacharquery}{\isachardoublequote}}'' (try), ``\isa{{\isachardoublequote}{\isacharplus}{\isachardoublequote}}'' (repeat at least
    5.95    once).  These are usually sufficient in practice; if all fails,
    5.96 -  arbitrary ML tactic code may be invoked via the \mbox{\isa{tactic}}
    5.97 +  arbitrary ML tactic code may be invoked via the \hyperlink{method.tactic}{\mbox{\isa{tactic}}}
    5.98    method (see \secref{sec:tactics}).
    5.99  
   5.100    \medskip Common ML tacticals may be expressed directly in Isar as
   5.101 @@ -193,14 +193,14 @@
   5.102    \medskip \verb|ALLGOALS|, \verb|SOMEGOAL| etc.\ (see
   5.103    \cite{isabelle-ref}) are not available in Isar, since there is no
   5.104    direct goal addressing.  Nevertheless, some basic methods address
   5.105 -  all goals internally, notably \mbox{\isa{simp{\isacharunderscore}all}} (see
   5.106 +  all goals internally, notably \hyperlink{method.simp_all}{\mbox{\isa{simp{\isacharunderscore}all}}} (see
   5.107    \secref{sec:simplifier}).  Also note that \verb|ALLGOALS| can be
   5.108    often replaced by ``\isa{{\isachardoublequote}{\isacharplus}{\isachardoublequote}}'' (repeat at least once), although
   5.109    this usually has a different operational behavior, such as solving
   5.110    goals in a different order.
   5.111  
   5.112    \medskip Iterated resolution, such as \verb|REPEAT (FIRSTGOAL|\isasep\isanewline%
   5.113 -\verb|  (resolve_tac \<dots>))|, is usually better expressed using the \mbox{\isa{intro}} and \mbox{\isa{elim}} methods of Isar (see
   5.114 +\verb|  (resolve_tac \<dots>))|, is usually better expressed using the \hyperlink{method.intro}{\mbox{\isa{intro}}} and \hyperlink{method.elim}{\mbox{\isa{elim}}} methods of Isar (see
   5.115    \secref{sec:classical}).%
   5.116  \end{isamarkuptext}%
   5.117  \isamarkuptrue%
     6.1 --- a/doc-src/IsarRef/Thy/document/Proof.tex	Thu May 15 17:37:21 2008 +0200
     6.2 +++ b/doc-src/IsarRef/Thy/document/Proof.tex	Thu May 15 17:39:20 2008 +0200
     6.3 @@ -43,7 +43,7 @@
     6.4    intermediate results etc.
     6.5  
     6.6    \item [\isa{{\isachardoublequote}proof{\isacharparenleft}chain{\isacharparenright}{\isachardoublequote}}] is intermediate between \isa{{\isachardoublequote}proof{\isacharparenleft}state{\isacharparenright}{\isachardoublequote}} and \isa{{\isachardoublequote}proof{\isacharparenleft}prove{\isacharparenright}{\isachardoublequote}}: existing facts (i.e.\
     6.7 -  the contents of the special ``\indexref{}{fact}{this}\mbox{\isa{this}}'' register) have been
     6.8 +  the contents of the special ``\indexref{}{fact}{this}\hyperlink{fact.this}{\mbox{\isa{this}}}'' register) have been
     6.9    just picked up in order to be used when refining the goal claimed
    6.10    next.
    6.11  
    6.12 @@ -65,17 +65,17 @@
    6.13  %
    6.14  \begin{isamarkuptext}%
    6.15  \begin{matharray}{rcl}
    6.16 -    \indexdef{}{command}{fix}\mbox{\isa{\isacommand{fix}}} & : & \isartrans{proof(state)}{proof(state)} \\
    6.17 -    \indexdef{}{command}{assume}\mbox{\isa{\isacommand{assume}}} & : & \isartrans{proof(state)}{proof(state)} \\
    6.18 -    \indexdef{}{command}{presume}\mbox{\isa{\isacommand{presume}}} & : & \isartrans{proof(state)}{proof(state)} \\
    6.19 -    \indexdef{}{command}{def}\mbox{\isa{\isacommand{def}}} & : & \isartrans{proof(state)}{proof(state)} \\
    6.20 +    \indexdef{}{command}{fix}\hypertarget{command.fix}{\hyperlink{command.fix}{\mbox{\isa{\isacommand{fix}}}}} & : & \isartrans{proof(state)}{proof(state)} \\
    6.21 +    \indexdef{}{command}{assume}\hypertarget{command.assume}{\hyperlink{command.assume}{\mbox{\isa{\isacommand{assume}}}}} & : & \isartrans{proof(state)}{proof(state)} \\
    6.22 +    \indexdef{}{command}{presume}\hypertarget{command.presume}{\hyperlink{command.presume}{\mbox{\isa{\isacommand{presume}}}}} & : & \isartrans{proof(state)}{proof(state)} \\
    6.23 +    \indexdef{}{command}{def}\hypertarget{command.def}{\hyperlink{command.def}{\mbox{\isa{\isacommand{def}}}}} & : & \isartrans{proof(state)}{proof(state)} \\
    6.24    \end{matharray}
    6.25  
    6.26    The logical proof context consists of fixed variables and
    6.27    assumptions.  The former closely correspond to Skolem constants, or
    6.28    meta-level universal quantification as provided by the Isabelle/Pure
    6.29    logical framework.  Introducing some \emph{arbitrary, but fixed}
    6.30 -  variable via ``\mbox{\isa{\isacommand{fix}}}~\isa{x}'' results in a local value
    6.31 +  variable via ``\hyperlink{command.fix}{\mbox{\isa{\isacommand{fix}}}}~\isa{x}'' results in a local value
    6.32    that may be used in the subsequent proof as any other variable or
    6.33    constant.  Furthermore, any result \isa{{\isachardoublequote}{\isasymturnstile}\ {\isasymphi}{\isacharbrackleft}x{\isacharbrackright}{\isachardoublequote}} exported from
    6.34    the context will be universally closed wrt.\ \isa{x} at the
    6.35 @@ -89,12 +89,12 @@
    6.36    the assumption: \isa{{\isachardoublequote}{\isasymturnstile}\ {\isasymchi}\ {\isasymLongrightarrow}\ {\isasymphi}{\isachardoublequote}}.  Thus, solving an enclosing goal
    6.37    using such a result would basically introduce a new subgoal stemming
    6.38    from the assumption.  How this situation is handled depends on the
    6.39 -  version of assumption command used: while \mbox{\isa{\isacommand{assume}}}
    6.40 +  version of assumption command used: while \hyperlink{command.assume}{\mbox{\isa{\isacommand{assume}}}}
    6.41    insists on solving the subgoal by unification with some premise of
    6.42 -  the goal, \mbox{\isa{\isacommand{presume}}} leaves the subgoal unchanged in order
    6.43 +  the goal, \hyperlink{command.presume}{\mbox{\isa{\isacommand{presume}}}} leaves the subgoal unchanged in order
    6.44    to be proved later by the user.
    6.45  
    6.46 -  Local definitions, introduced by ``\mbox{\isa{\isacommand{def}}}~\isa{{\isachardoublequote}x\ {\isasymequiv}\ t{\isachardoublequote}}'', are achieved by combining ``\mbox{\isa{\isacommand{fix}}}~\isa{x}'' with
    6.47 +  Local definitions, introduced by ``\hyperlink{command.def}{\mbox{\isa{\isacommand{def}}}}~\isa{{\isachardoublequote}x\ {\isasymequiv}\ t{\isachardoublequote}}'', are achieved by combining ``\hyperlink{command.fix}{\mbox{\isa{\isacommand{fix}}}}~\isa{x}'' with
    6.48    another version of assumption that causes any hypothetical equation
    6.49    \isa{{\isachardoublequote}x\ {\isasymequiv}\ t{\isachardoublequote}} to be eliminated by the reflexivity rule.  Thus,
    6.50    exporting some result \isa{{\isachardoublequote}x\ {\isasymequiv}\ t\ {\isasymturnstile}\ {\isasymphi}{\isacharbrackleft}x{\isacharbrackright}{\isachardoublequote}} yields \isa{{\isachardoublequote}{\isasymturnstile}\ {\isasymphi}{\isacharbrackleft}t{\isacharbrackright}{\isachardoublequote}}.
    6.51 @@ -112,21 +112,21 @@
    6.52  
    6.53    \begin{descr}
    6.54    
    6.55 -  \item [\mbox{\isa{\isacommand{fix}}}~\isa{x}] introduces a local variable
    6.56 +  \item [\hyperlink{command.fix}{\mbox{\isa{\isacommand{fix}}}}~\isa{x}] introduces a local variable
    6.57    \isa{x} that is \emph{arbitrary, but fixed.}
    6.58    
    6.59 -  \item [\mbox{\isa{\isacommand{assume}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}} and \mbox{\isa{\isacommand{presume}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}}] introduce a local fact \isa{{\isachardoublequote}{\isasymphi}\ {\isasymturnstile}\ {\isasymphi}{\isachardoublequote}} by
    6.60 +  \item [\hyperlink{command.assume}{\mbox{\isa{\isacommand{assume}}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}} and \hyperlink{command.presume}{\mbox{\isa{\isacommand{presume}}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}}] introduce a local fact \isa{{\isachardoublequote}{\isasymphi}\ {\isasymturnstile}\ {\isasymphi}{\isachardoublequote}} by
    6.61    assumption.  Subsequent results applied to an enclosing goal (e.g.\
    6.62 -  by \indexref{}{command}{show}\mbox{\isa{\isacommand{show}}}) are handled as follows: \mbox{\isa{\isacommand{assume}}} expects to be able to unify with existing premises in the
    6.63 -  goal, while \mbox{\isa{\isacommand{presume}}} leaves \isa{{\isasymphi}} as new subgoals.
    6.64 +  by \indexref{}{command}{show}\hyperlink{command.show}{\mbox{\isa{\isacommand{show}}}}) are handled as follows: \hyperlink{command.assume}{\mbox{\isa{\isacommand{assume}}}} expects to be able to unify with existing premises in the
    6.65 +  goal, while \hyperlink{command.presume}{\mbox{\isa{\isacommand{presume}}}} leaves \isa{{\isasymphi}} as new subgoals.
    6.66    
    6.67    Several lists of assumptions may be given (separated by
    6.68 -  \indexref{}{keyword}{and}\mbox{\isa{\isakeyword{and}}}; the resulting list of current facts consists
    6.69 +  \indexref{}{keyword}{and}\hyperlink{keyword.and}{\mbox{\isa{\isakeyword{and}}}}; the resulting list of current facts consists
    6.70    of all of these concatenated.
    6.71    
    6.72 -  \item [\mbox{\isa{\isacommand{def}}}~\isa{{\isachardoublequote}x\ {\isasymequiv}\ t{\isachardoublequote}}] introduces a local
    6.73 +  \item [\hyperlink{command.def}{\mbox{\isa{\isacommand{def}}}}~\isa{{\isachardoublequote}x\ {\isasymequiv}\ t{\isachardoublequote}}] introduces a local
    6.74    (non-polymorphic) definition.  In results exported from the context,
    6.75 -  \isa{x} is replaced by \isa{t}.  Basically, ``\mbox{\isa{\isacommand{def}}}~\isa{{\isachardoublequote}x\ {\isasymequiv}\ t{\isachardoublequote}}'' abbreviates ``\mbox{\isa{\isacommand{fix}}}~\isa{x}~\mbox{\isa{\isacommand{assume}}}~\isa{{\isachardoublequote}x\ {\isasymequiv}\ t{\isachardoublequote}}'', with the resulting
    6.76 +  \isa{x} is replaced by \isa{t}.  Basically, ``\hyperlink{command.def}{\mbox{\isa{\isacommand{def}}}}~\isa{{\isachardoublequote}x\ {\isasymequiv}\ t{\isachardoublequote}}'' abbreviates ``\hyperlink{command.fix}{\mbox{\isa{\isacommand{fix}}}}~\isa{x}~\hyperlink{command.assume}{\mbox{\isa{\isacommand{assume}}}}~\isa{{\isachardoublequote}x\ {\isasymequiv}\ t{\isachardoublequote}}'', with the resulting
    6.77    hypothetical equation solved by reflexivity.
    6.78    
    6.79    The default name for the definitional equation is \isa{x{\isacharunderscore}def}.
    6.80 @@ -134,7 +134,7 @@
    6.81  
    6.82    \end{descr}
    6.83  
    6.84 -  The special name \indexref{}{fact}{prems}\mbox{\isa{prems}} refers to all assumptions of the
    6.85 +  The special name \indexref{}{fact}{prems}\hyperlink{fact.prems}{\mbox{\isa{prems}}} refers to all assumptions of the
    6.86    current context as a list of theorems.  This feature should be used
    6.87    with great care!  It is better avoided in final proof texts.%
    6.88  \end{isamarkuptext}%
    6.89 @@ -146,22 +146,22 @@
    6.90  %
    6.91  \begin{isamarkuptext}%
    6.92  \begin{matharray}{rcl}
    6.93 -    \indexdef{}{command}{note}\mbox{\isa{\isacommand{note}}} & : & \isartrans{proof(state)}{proof(state)} \\
    6.94 -    \indexdef{}{command}{then}\mbox{\isa{\isacommand{then}}} & : & \isartrans{proof(state)}{proof(chain)} \\
    6.95 -    \indexdef{}{command}{from}\mbox{\isa{\isacommand{from}}} & : & \isartrans{proof(state)}{proof(chain)} \\
    6.96 -    \indexdef{}{command}{with}\mbox{\isa{\isacommand{with}}} & : & \isartrans{proof(state)}{proof(chain)} \\
    6.97 -    \indexdef{}{command}{using}\mbox{\isa{\isacommand{using}}} & : & \isartrans{proof(prove)}{proof(prove)} \\
    6.98 -    \indexdef{}{command}{unfolding}\mbox{\isa{\isacommand{unfolding}}} & : & \isartrans{proof(prove)}{proof(prove)} \\
    6.99 +    \indexdef{}{command}{note}\hypertarget{command.note}{\hyperlink{command.note}{\mbox{\isa{\isacommand{note}}}}} & : & \isartrans{proof(state)}{proof(state)} \\
   6.100 +    \indexdef{}{command}{then}\hypertarget{command.then}{\hyperlink{command.then}{\mbox{\isa{\isacommand{then}}}}} & : & \isartrans{proof(state)}{proof(chain)} \\
   6.101 +    \indexdef{}{command}{from}\hypertarget{command.from}{\hyperlink{command.from}{\mbox{\isa{\isacommand{from}}}}} & : & \isartrans{proof(state)}{proof(chain)} \\
   6.102 +    \indexdef{}{command}{with}\hypertarget{command.with}{\hyperlink{command.with}{\mbox{\isa{\isacommand{with}}}}} & : & \isartrans{proof(state)}{proof(chain)} \\
   6.103 +    \indexdef{}{command}{using}\hypertarget{command.using}{\hyperlink{command.using}{\mbox{\isa{\isacommand{using}}}}} & : & \isartrans{proof(prove)}{proof(prove)} \\
   6.104 +    \indexdef{}{command}{unfolding}\hypertarget{command.unfolding}{\hyperlink{command.unfolding}{\mbox{\isa{\isacommand{unfolding}}}}} & : & \isartrans{proof(prove)}{proof(prove)} \\
   6.105    \end{matharray}
   6.106  
   6.107    New facts are established either by assumption or proof of local
   6.108    statements.  Any fact will usually be involved in further proofs,
   6.109    either as explicit arguments of proof methods, or when forward
   6.110 -  chaining towards the next goal via \mbox{\isa{\isacommand{then}}} (and variants);
   6.111 -  \mbox{\isa{\isacommand{from}}} and \mbox{\isa{\isacommand{with}}} are composite forms
   6.112 -  involving \mbox{\isa{\isacommand{note}}}.  The \mbox{\isa{\isacommand{using}}} elements
   6.113 +  chaining towards the next goal via \hyperlink{command.then}{\mbox{\isa{\isacommand{then}}}} (and variants);
   6.114 +  \hyperlink{command.from}{\mbox{\isa{\isacommand{from}}}} and \hyperlink{command.with}{\mbox{\isa{\isacommand{with}}}} are composite forms
   6.115 +  involving \hyperlink{command.note}{\mbox{\isa{\isacommand{note}}}}.  The \hyperlink{command.using}{\mbox{\isa{\isacommand{using}}}} elements
   6.116    augments the collection of used facts \emph{after} a goal has been
   6.117 -  stated.  Note that the special theorem name \indexref{}{fact}{this}\mbox{\isa{this}} refers
   6.118 +  stated.  Note that the special theorem name \indexref{}{fact}{this}\hyperlink{fact.this}{\mbox{\isa{this}}} refers
   6.119    to the most recently established facts, but only \emph{before}
   6.120    issuing a follow-up claim.
   6.121  
   6.122 @@ -174,52 +174,52 @@
   6.123  
   6.124    \begin{descr}
   6.125  
   6.126 -  \item [\mbox{\isa{\isacommand{note}}}~\isa{{\isachardoublequote}a\ {\isacharequal}\ b\isactrlsub {\isadigit{1}}\ {\isasymdots}\ b\isactrlsub n{\isachardoublequote}}]
   6.127 +  \item [\hyperlink{command.note}{\mbox{\isa{\isacommand{note}}}}~\isa{{\isachardoublequote}a\ {\isacharequal}\ b\isactrlsub {\isadigit{1}}\ {\isasymdots}\ b\isactrlsub n{\isachardoublequote}}]
   6.128    recalls existing facts \isa{{\isachardoublequote}b\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ b\isactrlsub n{\isachardoublequote}}, binding
   6.129    the result as \isa{a}.  Note that attributes may be involved as
   6.130    well, both on the left and right hand sides.
   6.131  
   6.132 -  \item [\mbox{\isa{\isacommand{then}}}] indicates forward chaining by the current
   6.133 +  \item [\hyperlink{command.then}{\mbox{\isa{\isacommand{then}}}}] indicates forward chaining by the current
   6.134    facts in order to establish the goal to be claimed next.  The
   6.135    initial proof method invoked to refine that will be offered the
   6.136    facts to do ``anything appropriate'' (see also
   6.137 -  \secref{sec:proof-steps}).  For example, method \indexref{}{method}{rule}\mbox{\isa{rule}}
   6.138 +  \secref{sec:proof-steps}).  For example, method \indexref{}{method}{rule}\hyperlink{method.rule}{\mbox{\isa{rule}}}
   6.139    (see \secref{sec:pure-meth-att}) would typically do an elimination
   6.140    rather than an introduction.  Automatic methods usually insert the
   6.141    facts into the goal state before operation.  This provides a simple
   6.142    scheme to control relevance of facts in automated proof search.
   6.143    
   6.144 -  \item [\mbox{\isa{\isacommand{from}}}~\isa{b}] abbreviates ``\mbox{\isa{\isacommand{note}}}~\isa{b}~\mbox{\isa{\isacommand{then}}}''; thus \mbox{\isa{\isacommand{then}}} is
   6.145 -  equivalent to ``\mbox{\isa{\isacommand{from}}}~\isa{this}''.
   6.146 +  \item [\hyperlink{command.from}{\mbox{\isa{\isacommand{from}}}}~\isa{b}] abbreviates ``\hyperlink{command.note}{\mbox{\isa{\isacommand{note}}}}~\isa{b}~\hyperlink{command.then}{\mbox{\isa{\isacommand{then}}}}''; thus \hyperlink{command.then}{\mbox{\isa{\isacommand{then}}}} is
   6.147 +  equivalent to ``\hyperlink{command.from}{\mbox{\isa{\isacommand{from}}}}~\isa{this}''.
   6.148    
   6.149 -  \item [\mbox{\isa{\isacommand{with}}}~\isa{{\isachardoublequote}b\isactrlsub {\isadigit{1}}\ {\isasymdots}\ b\isactrlsub n{\isachardoublequote}}]
   6.150 -  abbreviates ``\mbox{\isa{\isacommand{from}}}~\isa{{\isachardoublequote}b\isactrlsub {\isadigit{1}}\ {\isasymdots}\ b\isactrlsub n\ {\isasymAND}\ this{\isachardoublequote}}''; thus the forward chaining is from earlier facts together
   6.151 +  \item [\hyperlink{command.with}{\mbox{\isa{\isacommand{with}}}}~\isa{{\isachardoublequote}b\isactrlsub {\isadigit{1}}\ {\isasymdots}\ b\isactrlsub n{\isachardoublequote}}]
   6.152 +  abbreviates ``\hyperlink{command.from}{\mbox{\isa{\isacommand{from}}}}~\isa{{\isachardoublequote}b\isactrlsub {\isadigit{1}}\ {\isasymdots}\ b\isactrlsub n\ {\isasymAND}\ this{\isachardoublequote}}''; thus the forward chaining is from earlier facts together
   6.153    with the current ones.
   6.154    
   6.155 -  \item [\mbox{\isa{\isacommand{using}}}~\isa{{\isachardoublequote}b\isactrlsub {\isadigit{1}}\ {\isasymdots}\ b\isactrlsub n{\isachardoublequote}}] augments
   6.156 +  \item [\hyperlink{command.using}{\mbox{\isa{\isacommand{using}}}}~\isa{{\isachardoublequote}b\isactrlsub {\isadigit{1}}\ {\isasymdots}\ b\isactrlsub n{\isachardoublequote}}] augments
   6.157    the facts being currently indicated for use by a subsequent
   6.158 -  refinement step (such as \indexref{}{command}{apply}\mbox{\isa{\isacommand{apply}}} or \indexref{}{command}{proof}\mbox{\isa{\isacommand{proof}}}).
   6.159 +  refinement step (such as \indexref{}{command}{apply}\hyperlink{command.apply}{\mbox{\isa{\isacommand{apply}}}} or \indexref{}{command}{proof}\hyperlink{command.proof}{\mbox{\isa{\isacommand{proof}}}}).
   6.160    
   6.161 -  \item [\mbox{\isa{\isacommand{unfolding}}}~\isa{{\isachardoublequote}b\isactrlsub {\isadigit{1}}\ {\isasymdots}\ b\isactrlsub n{\isachardoublequote}}] is
   6.162 -  structurally similar to \mbox{\isa{\isacommand{using}}}, but unfolds definitional
   6.163 +  \item [\hyperlink{command.unfolding}{\mbox{\isa{\isacommand{unfolding}}}}~\isa{{\isachardoublequote}b\isactrlsub {\isadigit{1}}\ {\isasymdots}\ b\isactrlsub n{\isachardoublequote}}] is
   6.164 +  structurally similar to \hyperlink{command.using}{\mbox{\isa{\isacommand{using}}}}, but unfolds definitional
   6.165    equations \isa{{\isachardoublequote}b\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}\ b\isactrlsub n{\isachardoublequote}} throughout the goal state
   6.166    and facts.
   6.167  
   6.168    \end{descr}
   6.169  
   6.170    Forward chaining with an empty list of theorems is the same as not
   6.171 -  chaining at all.  Thus ``\mbox{\isa{\isacommand{from}}}~\isa{nothing}'' has no
   6.172 +  chaining at all.  Thus ``\hyperlink{command.from}{\mbox{\isa{\isacommand{from}}}}~\isa{nothing}'' has no
   6.173    effect apart from entering \isa{{\isachardoublequote}prove{\isacharparenleft}chain{\isacharparenright}{\isachardoublequote}} mode, since
   6.174 -  \indexref{}{fact}{nothing}\mbox{\isa{nothing}} is bound to the empty list of theorems.
   6.175 +  \indexref{}{fact}{nothing}\hyperlink{fact.nothing}{\mbox{\isa{nothing}}} is bound to the empty list of theorems.
   6.176  
   6.177 -  Basic proof methods (such as \indexref{}{method}{rule}\mbox{\isa{rule}}) expect multiple
   6.178 +  Basic proof methods (such as \indexref{}{method}{rule}\hyperlink{method.rule}{\mbox{\isa{rule}}}) expect multiple
   6.179    facts to be given in their proper order, corresponding to a prefix
   6.180    of the premises of the rule involved.  Note that positions may be
   6.181 -  easily skipped using something like \mbox{\isa{\isacommand{from}}}~\isa{{\isachardoublequote}{\isacharunderscore}\ {\isasymAND}\ a\ {\isasymAND}\ b{\isachardoublequote}}, for example.  This involves the trivial rule
   6.182 +  easily skipped using something like \hyperlink{command.from}{\mbox{\isa{\isacommand{from}}}}~\isa{{\isachardoublequote}{\isacharunderscore}\ {\isasymAND}\ a\ {\isasymAND}\ b{\isachardoublequote}}, for example.  This involves the trivial rule
   6.183    \isa{{\isachardoublequote}PROP\ {\isasympsi}\ {\isasymLongrightarrow}\ PROP\ {\isasympsi}{\isachardoublequote}}, which is bound in Isabelle/Pure as
   6.184 -  ``\indexref{}{fact}{\_}\mbox{\isa{{\isacharunderscore}}}'' (underscore).
   6.185 +  ``\indexref{}{fact}{\_}\hyperlink{fact._}{\mbox{\isa{{\isacharunderscore}}}}'' (underscore).
   6.186  
   6.187 -  Automated methods (such as \mbox{\isa{simp}} or \mbox{\isa{auto}}) just
   6.188 +  Automated methods (such as \hyperlink{method.simp}{\mbox{\isa{simp}}} or \hyperlink{method.auto}{\mbox{\isa{auto}}}) just
   6.189    insert any given facts before their usual operation.  Depending on
   6.190    the kind of procedure involved, the order of facts is less
   6.191    significant here.%
   6.192 @@ -232,31 +232,31 @@
   6.193  %
   6.194  \begin{isamarkuptext}%
   6.195  \begin{matharray}{rcl}
   6.196 -    \indexdef{}{command}{lemma}\mbox{\isa{\isacommand{lemma}}} & : & \isartrans{local{\dsh}theory}{proof(prove)} \\
   6.197 -    \indexdef{}{command}{theorem}\mbox{\isa{\isacommand{theorem}}} & : & \isartrans{local{\dsh}theory}{proof(prove)} \\
   6.198 -    \indexdef{}{command}{corollary}\mbox{\isa{\isacommand{corollary}}} & : & \isartrans{local{\dsh}theory}{proof(prove)} \\
   6.199 -    \indexdef{}{command}{have}\mbox{\isa{\isacommand{have}}} & : & \isartrans{proof(state) ~|~ proof(chain)}{proof(prove)} \\
   6.200 -    \indexdef{}{command}{show}\mbox{\isa{\isacommand{show}}} & : & \isartrans{proof(state) ~|~ proof(chain)}{proof(prove)} \\
   6.201 -    \indexdef{}{command}{hence}\mbox{\isa{\isacommand{hence}}} & : & \isartrans{proof(state)}{proof(prove)} \\
   6.202 -    \indexdef{}{command}{thus}\mbox{\isa{\isacommand{thus}}} & : & \isartrans{proof(state)}{proof(prove)} \\
   6.203 -    \indexdef{}{command}{print\_statement}\mbox{\isa{\isacommand{print{\isacharunderscore}statement}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
   6.204 +    \indexdef{}{command}{lemma}\hypertarget{command.lemma}{\hyperlink{command.lemma}{\mbox{\isa{\isacommand{lemma}}}}} & : & \isartrans{local{\dsh}theory}{proof(prove)} \\
   6.205 +    \indexdef{}{command}{theorem}\hypertarget{command.theorem}{\hyperlink{command.theorem}{\mbox{\isa{\isacommand{theorem}}}}} & : & \isartrans{local{\dsh}theory}{proof(prove)} \\
   6.206 +    \indexdef{}{command}{corollary}\hypertarget{command.corollary}{\hyperlink{command.corollary}{\mbox{\isa{\isacommand{corollary}}}}} & : & \isartrans{local{\dsh}theory}{proof(prove)} \\
   6.207 +    \indexdef{}{command}{have}\hypertarget{command.have}{\hyperlink{command.have}{\mbox{\isa{\isacommand{have}}}}} & : & \isartrans{proof(state) ~|~ proof(chain)}{proof(prove)} \\
   6.208 +    \indexdef{}{command}{show}\hypertarget{command.show}{\hyperlink{command.show}{\mbox{\isa{\isacommand{show}}}}} & : & \isartrans{proof(state) ~|~ proof(chain)}{proof(prove)} \\
   6.209 +    \indexdef{}{command}{hence}\hypertarget{command.hence}{\hyperlink{command.hence}{\mbox{\isa{\isacommand{hence}}}}} & : & \isartrans{proof(state)}{proof(prove)} \\
   6.210 +    \indexdef{}{command}{thus}\hypertarget{command.thus}{\hyperlink{command.thus}{\mbox{\isa{\isacommand{thus}}}}} & : & \isartrans{proof(state)}{proof(prove)} \\
   6.211 +    \indexdef{}{command}{print\_statement}\hypertarget{command.print_statement}{\hyperlink{command.print_statement}{\mbox{\isa{\isacommand{print{\isacharunderscore}statement}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
   6.212    \end{matharray}
   6.213  
   6.214    From a theory context, proof mode is entered by an initial goal
   6.215 -  command such as \mbox{\isa{\isacommand{lemma}}}, \mbox{\isa{\isacommand{theorem}}}, or
   6.216 -  \mbox{\isa{\isacommand{corollary}}}.  Within a proof, new claims may be
   6.217 +  command such as \hyperlink{command.lemma}{\mbox{\isa{\isacommand{lemma}}}}, \hyperlink{command.theorem}{\mbox{\isa{\isacommand{theorem}}}}, or
   6.218 +  \hyperlink{command.corollary}{\mbox{\isa{\isacommand{corollary}}}}.  Within a proof, new claims may be
   6.219    introduced locally as well; four variants are available here to
   6.220    indicate whether forward chaining of facts should be performed
   6.221 -  initially (via \indexref{}{command}{then}\mbox{\isa{\isacommand{then}}}), and whether the final result
   6.222 +  initially (via \indexref{}{command}{then}\hyperlink{command.then}{\mbox{\isa{\isacommand{then}}}}), and whether the final result
   6.223    is meant to solve some pending goal.
   6.224  
   6.225    Goals may consist of multiple statements, resulting in a list of
   6.226    facts eventually.  A pending multi-goal is internally represented as
   6.227    a meta-level conjunction (printed as \isa{{\isachardoublequote}{\isacharampersand}{\isacharampersand}{\isachardoublequote}}), which is usually
   6.228    split into the corresponding number of sub-goals prior to an initial
   6.229 -  method application, via \indexref{}{command}{proof}\mbox{\isa{\isacommand{proof}}}
   6.230 -  (\secref{sec:proof-steps}) or \indexref{}{command}{apply}\mbox{\isa{\isacommand{apply}}}
   6.231 -  (\secref{sec:tactic-commands}).  The \indexref{}{method}{induct}\mbox{\isa{induct}} method
   6.232 +  method application, via \indexref{}{command}{proof}\hyperlink{command.proof}{\mbox{\isa{\isacommand{proof}}}}
   6.233 +  (\secref{sec:proof-steps}) or \indexref{}{command}{apply}\hyperlink{command.apply}{\mbox{\isa{\isacommand{apply}}}}
   6.234 +  (\secref{sec:tactic-commands}).  The \indexref{}{method}{induct}\hyperlink{method.induct}{\mbox{\isa{induct}}} method
   6.235    covered in \secref{sec:cases-induct} acts on multiple claims
   6.236    simultaneously.
   6.237  
   6.238 @@ -267,10 +267,10 @@
   6.239    parameters and assumptions.  Here the role of each part of the
   6.240    statement is explicitly marked by separate keywords (see also
   6.241    \secref{sec:locale}); the local assumptions being introduced here
   6.242 -  are available as \indexref{}{fact}{assms}\mbox{\isa{assms}} in the proof.  Moreover, there
   6.243 -  are two kinds of conclusions: \indexdef{}{element}{shows}\mbox{\isa{\isakeyword{shows}}} states several
   6.244 +  are available as \indexref{}{fact}{assms}\hyperlink{fact.assms}{\mbox{\isa{assms}}} in the proof.  Moreover, there
   6.245 +  are two kinds of conclusions: \indexdef{}{element}{shows}\hypertarget{element.shows}{\hyperlink{element.shows}{\mbox{\isa{\isakeyword{shows}}}}} states several
   6.246    simultaneous propositions (essentially a big conjunction), while
   6.247 -  \indexdef{}{element}{obtains}\mbox{\isa{\isakeyword{obtains}}} claims several simultaneous simultaneous
   6.248 +  \indexdef{}{element}{obtains}\hypertarget{element.obtains}{\hyperlink{element.obtains}{\mbox{\isa{\isakeyword{obtains}}}}} claims several simultaneous simultaneous
   6.249    contexts of (essentially a big disjunction of eliminated parameters
   6.250    and assumptions, cf.\ \secref{sec:obtain}).
   6.251  
   6.252 @@ -294,32 +294,32 @@
   6.253  
   6.254    \begin{descr}
   6.255    
   6.256 -  \item [\mbox{\isa{\isacommand{lemma}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}}] enters proof mode with
   6.257 +  \item [\hyperlink{command.lemma}{\mbox{\isa{\isacommand{lemma}}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}}] enters proof mode with
   6.258    \isa{{\isasymphi}} as main goal, eventually resulting in some fact \isa{{\isachardoublequote}{\isasymturnstile}\ {\isasymphi}{\isachardoublequote}} to be put back into the target context.  An additional
   6.259    \railnonterm{context} specification may build up an initial proof
   6.260    context for the subsequent claim; this includes local definitions
   6.261 -  and syntax as well, see the definition of \mbox{\isa{contextelem}} in
   6.262 +  and syntax as well, see the definition of \hyperlink{syntax.contextelem}{\mbox{\isa{contextelem}}} in
   6.263    \secref{sec:locale}.
   6.264    
   6.265 -  \item [\mbox{\isa{\isacommand{theorem}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}} and \mbox{\isa{\isacommand{corollary}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}}] are essentially the same as \mbox{\isa{\isacommand{lemma}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}}, but the facts are internally marked as
   6.266 +  \item [\hyperlink{command.theorem}{\mbox{\isa{\isacommand{theorem}}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}} and \hyperlink{command.corollary}{\mbox{\isa{\isacommand{corollary}}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}}] are essentially the same as \hyperlink{command.lemma}{\mbox{\isa{\isacommand{lemma}}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}}, but the facts are internally marked as
   6.267    being of a different kind.  This discrimination acts like a formal
   6.268    comment.
   6.269    
   6.270 -  \item [\mbox{\isa{\isacommand{have}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}}] claims a local goal,
   6.271 +  \item [\hyperlink{command.have}{\mbox{\isa{\isacommand{have}}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}}] claims a local goal,
   6.272    eventually resulting in a fact within the current logical context.
   6.273    This operation is completely independent of any pending sub-goals of
   6.274 -  an enclosing goal statements, so \mbox{\isa{\isacommand{have}}} may be freely
   6.275 +  an enclosing goal statements, so \hyperlink{command.have}{\mbox{\isa{\isacommand{have}}}} may be freely
   6.276    used for experimental exploration of potential results within a
   6.277    proof body.
   6.278    
   6.279 -  \item [\mbox{\isa{\isacommand{show}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}}] is like \mbox{\isa{\isacommand{have}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}} plus a second stage to refine some pending
   6.280 +  \item [\hyperlink{command.show}{\mbox{\isa{\isacommand{show}}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}}] is like \hyperlink{command.have}{\mbox{\isa{\isacommand{have}}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}} plus a second stage to refine some pending
   6.281    sub-goal for each one of the finished result, after having been
   6.282    exported into the corresponding context (at the head of the
   6.283 -  sub-proof of this \mbox{\isa{\isacommand{show}}} command).
   6.284 +  sub-proof of this \hyperlink{command.show}{\mbox{\isa{\isacommand{show}}}} command).
   6.285    
   6.286    To accommodate interactive debugging, resulting rules are printed
   6.287    before being applied internally.  Even more, interactive execution
   6.288 -  of \mbox{\isa{\isacommand{show}}} predicts potential failure and displays the
   6.289 +  of \hyperlink{command.show}{\mbox{\isa{\isacommand{show}}}} predicts potential failure and displays the
   6.290    resulting error as a warning beforehand.  Watch out for the
   6.291    following message:
   6.292  
   6.293 @@ -328,29 +328,29 @@
   6.294    Problem! Local statement will fail to solve any pending goal
   6.295    \end{ttbox}
   6.296    
   6.297 -  \item [\mbox{\isa{\isacommand{hence}}}] abbreviates ``\mbox{\isa{\isacommand{then}}}~\mbox{\isa{\isacommand{have}}}'', i.e.\ claims a local goal to be proven by forward
   6.298 -  chaining the current facts.  Note that \mbox{\isa{\isacommand{hence}}} is also
   6.299 -  equivalent to ``\mbox{\isa{\isacommand{from}}}~\isa{this}~\mbox{\isa{\isacommand{have}}}''.
   6.300 +  \item [\hyperlink{command.hence}{\mbox{\isa{\isacommand{hence}}}}] abbreviates ``\hyperlink{command.then}{\mbox{\isa{\isacommand{then}}}}~\hyperlink{command.have}{\mbox{\isa{\isacommand{have}}}}'', i.e.\ claims a local goal to be proven by forward
   6.301 +  chaining the current facts.  Note that \hyperlink{command.hence}{\mbox{\isa{\isacommand{hence}}}} is also
   6.302 +  equivalent to ``\hyperlink{command.from}{\mbox{\isa{\isacommand{from}}}}~\isa{this}~\hyperlink{command.have}{\mbox{\isa{\isacommand{have}}}}''.
   6.303    
   6.304 -  \item [\mbox{\isa{\isacommand{thus}}}] abbreviates ``\mbox{\isa{\isacommand{then}}}~\mbox{\isa{\isacommand{show}}}''.  Note that \mbox{\isa{\isacommand{thus}}} is also equivalent to
   6.305 -  ``\mbox{\isa{\isacommand{from}}}~\isa{this}~\mbox{\isa{\isacommand{show}}}''.
   6.306 +  \item [\hyperlink{command.thus}{\mbox{\isa{\isacommand{thus}}}}] abbreviates ``\hyperlink{command.then}{\mbox{\isa{\isacommand{then}}}}~\hyperlink{command.show}{\mbox{\isa{\isacommand{show}}}}''.  Note that \hyperlink{command.thus}{\mbox{\isa{\isacommand{thus}}}} is also equivalent to
   6.307 +  ``\hyperlink{command.from}{\mbox{\isa{\isacommand{from}}}}~\isa{this}~\hyperlink{command.show}{\mbox{\isa{\isacommand{show}}}}''.
   6.308    
   6.309 -  \item [\mbox{\isa{\isacommand{print{\isacharunderscore}statement}}}~\isa{a}] prints facts from the
   6.310 +  \item [\hyperlink{command.print_statement}{\mbox{\isa{\isacommand{print{\isacharunderscore}statement}}}}~\isa{a}] prints facts from the
   6.311    current theory or proof context in long statement form, according to
   6.312 -  the syntax for \mbox{\isa{\isacommand{lemma}}} given above.
   6.313 +  the syntax for \hyperlink{command.lemma}{\mbox{\isa{\isacommand{lemma}}}} given above.
   6.314  
   6.315    \end{descr}
   6.316  
   6.317    Any goal statement causes some term abbreviations (such as
   6.318 -  \indexref{}{variable}{?thesis}\mbox{\isa{{\isacharquery}thesis}}) to be bound automatically, see also
   6.319 +  \indexref{}{variable}{?thesis}\hyperlink{variable.?thesis}{\mbox{\isa{{\isacharquery}thesis}}}) to be bound automatically, see also
   6.320    \secref{sec:term-abbrev}.  Furthermore, the local context of a
   6.321 -  (non-atomic) goal is provided via the \indexref{}{case}{rule\_context}\mbox{\isa{rule{\isacharunderscore}context}} case.
   6.322 +  (non-atomic) goal is provided via the \indexref{}{case}{rule\_context}\hyperlink{case.rule_context}{\mbox{\isa{rule{\isacharunderscore}context}}} case.
   6.323  
   6.324 -  The optional case names of \indexref{}{element}{obtains}\mbox{\isa{\isakeyword{obtains}}} have a twofold
   6.325 +  The optional case names of \indexref{}{element}{obtains}\hyperlink{element.obtains}{\mbox{\isa{\isakeyword{obtains}}}} have a twofold
   6.326    meaning: (1) during the of this claim they refer to the the local
   6.327    context introductions, (2) the resulting rule is annotated
   6.328    accordingly to support symbolic case splits when used with the
   6.329 -  \indexref{}{method}{cases}\mbox{\isa{cases}} method (cf.  \secref{sec:cases-induct}).
   6.330 +  \indexref{}{method}{cases}\hyperlink{method.cases}{\mbox{\isa{cases}}} method (cf.  \secref{sec:cases-induct}).
   6.331  
   6.332    \medskip
   6.333  
   6.334 @@ -380,12 +380,12 @@
   6.335  %
   6.336  \begin{isamarkuptext}%
   6.337  \begin{matharray}{rcl}
   6.338 -    \indexdef{}{command}{proof}\mbox{\isa{\isacommand{proof}}} & : & \isartrans{proof(prove)}{proof(state)} \\
   6.339 -    \indexdef{}{command}{qed}\mbox{\isa{\isacommand{qed}}} & : & \isartrans{proof(state)}{proof(state) ~|~ theory} \\
   6.340 -    \indexdef{}{command}{by}\mbox{\isa{\isacommand{by}}} & : & \isartrans{proof(prove)}{proof(state) ~|~ theory} \\
   6.341 -    \indexdef{}{command}{..}\mbox{\isa{\isacommand{{\isachardot}{\isachardot}}}} & : & \isartrans{proof(prove)}{proof(state) ~|~ theory} \\
   6.342 -    \indexdef{}{command}{.}\mbox{\isa{\isacommand{{\isachardot}}}} & : & \isartrans{proof(prove)}{proof(state) ~|~ theory} \\
   6.343 -    \indexdef{}{command}{sorry}\mbox{\isa{\isacommand{sorry}}} & : & \isartrans{proof(prove)}{proof(state) ~|~ theory} \\
   6.344 +    \indexdef{}{command}{proof}\hypertarget{command.proof}{\hyperlink{command.proof}{\mbox{\isa{\isacommand{proof}}}}} & : & \isartrans{proof(prove)}{proof(state)} \\
   6.345 +    \indexdef{}{command}{qed}\hypertarget{command.qed}{\hyperlink{command.qed}{\mbox{\isa{\isacommand{qed}}}}} & : & \isartrans{proof(state)}{proof(state) ~|~ theory} \\
   6.346 +    \indexdef{}{command}{by}\hypertarget{command.by}{\hyperlink{command.by}{\mbox{\isa{\isacommand{by}}}}} & : & \isartrans{proof(prove)}{proof(state) ~|~ theory} \\
   6.347 +    \indexdef{}{command}{..}\hypertarget{command.ddot}{\hyperlink{command.ddot}{\mbox{\isa{\isacommand{{\isachardot}{\isachardot}}}}}} & : & \isartrans{proof(prove)}{proof(state) ~|~ theory} \\
   6.348 +    \indexdef{}{command}{.}\hypertarget{command.dot}{\hyperlink{command.dot}{\mbox{\isa{\isacommand{{\isachardot}}}}}} & : & \isartrans{proof(prove)}{proof(state) ~|~ theory} \\
   6.349 +    \indexdef{}{command}{sorry}\hypertarget{command.sorry}{\hyperlink{command.sorry}{\mbox{\isa{\isacommand{sorry}}}}} & : & \isartrans{proof(prove)}{proof(state) ~|~ theory} \\
   6.350    \end{matharray}
   6.351  
   6.352    Arbitrary goal refinement via tactics is considered harmful.
   6.353 @@ -394,17 +394,17 @@
   6.354  
   6.355    \begin{enumerate}
   6.356  
   6.357 -  \item An \emph{initial} refinement step \indexref{}{command}{proof}\mbox{\isa{\isacommand{proof}}}~\isa{{\isachardoublequote}m\isactrlsub {\isadigit{1}}{\isachardoublequote}} reduces a newly stated goal to a number
   6.358 +  \item An \emph{initial} refinement step \indexref{}{command}{proof}\hyperlink{command.proof}{\mbox{\isa{\isacommand{proof}}}}~\isa{{\isachardoublequote}m\isactrlsub {\isadigit{1}}{\isachardoublequote}} reduces a newly stated goal to a number
   6.359    of sub-goals that are to be solved later.  Facts are passed to
   6.360    \isa{{\isachardoublequote}m\isactrlsub {\isadigit{1}}{\isachardoublequote}} for forward chaining, if so indicated by \isa{{\isachardoublequote}proof{\isacharparenleft}chain{\isacharparenright}{\isachardoublequote}} mode.
   6.361    
   6.362 -  \item A \emph{terminal} conclusion step \indexref{}{command}{qed}\mbox{\isa{\isacommand{qed}}}~\isa{{\isachardoublequote}m\isactrlsub {\isadigit{2}}{\isachardoublequote}} is intended to solve remaining goals.  No facts are
   6.363 +  \item A \emph{terminal} conclusion step \indexref{}{command}{qed}\hyperlink{command.qed}{\mbox{\isa{\isacommand{qed}}}}~\isa{{\isachardoublequote}m\isactrlsub {\isadigit{2}}{\isachardoublequote}} is intended to solve remaining goals.  No facts are
   6.364    passed to \isa{{\isachardoublequote}m\isactrlsub {\isadigit{2}}{\isachardoublequote}}.
   6.365  
   6.366    \end{enumerate}
   6.367  
   6.368    The only other (proper) way to affect pending goals in a proof body
   6.369 -  is by \indexref{}{command}{show}\mbox{\isa{\isacommand{show}}}, which involves an explicit statement of
   6.370 +  is by \indexref{}{command}{show}\hyperlink{command.show}{\mbox{\isa{\isacommand{show}}}}, which involves an explicit statement of
   6.371    what is to be solved eventually.  Thus we avoid the fundamental
   6.372    problem of unstructured tactic scripts that consist of numerous
   6.373    consecutive goal transformations, with invisible effects.
   6.374 @@ -417,7 +417,7 @@
   6.375    an intelligible manner.
   6.376  
   6.377    Unless given explicitly by the user, the default initial method is
   6.378 -  ``\indexref{}{method}{rule}\mbox{\isa{rule}}'', which applies a single standard elimination
   6.379 +  ``\indexref{}{method}{rule}\hyperlink{method.rule}{\mbox{\isa{rule}}}'', which applies a single standard elimination
   6.380    or introduction rule according to the topmost symbol involved.
   6.381    There is no separate default terminal method.  Any remaining goals
   6.382    are always solved by assumption in the very last step.
   6.383 @@ -435,44 +435,44 @@
   6.384  
   6.385    \begin{descr}
   6.386    
   6.387 -  \item [\mbox{\isa{\isacommand{proof}}}~\isa{{\isachardoublequote}m\isactrlsub {\isadigit{1}}{\isachardoublequote}}] refines the goal by
   6.388 +  \item [\hyperlink{command.proof}{\mbox{\isa{\isacommand{proof}}}}~\isa{{\isachardoublequote}m\isactrlsub {\isadigit{1}}{\isachardoublequote}}] refines the goal by
   6.389    proof method \isa{{\isachardoublequote}m\isactrlsub {\isadigit{1}}{\isachardoublequote}}; facts for forward chaining are
   6.390    passed if so indicated by \isa{{\isachardoublequote}proof{\isacharparenleft}chain{\isacharparenright}{\isachardoublequote}} mode.
   6.391    
   6.392 -  \item [\mbox{\isa{\isacommand{qed}}}~\isa{{\isachardoublequote}m\isactrlsub {\isadigit{2}}{\isachardoublequote}}] refines any remaining
   6.393 +  \item [\hyperlink{command.qed}{\mbox{\isa{\isacommand{qed}}}}~\isa{{\isachardoublequote}m\isactrlsub {\isadigit{2}}{\isachardoublequote}}] refines any remaining
   6.394    goals by proof method \isa{{\isachardoublequote}m\isactrlsub {\isadigit{2}}{\isachardoublequote}} and concludes the
   6.395    sub-proof by assumption.  If the goal had been \isa{{\isachardoublequote}show{\isachardoublequote}} (or
   6.396    \isa{{\isachardoublequote}thus{\isachardoublequote}}), some pending sub-goal is solved as well by the rule
   6.397    resulting from the result \emph{exported} into the enclosing goal
   6.398    context.  Thus \isa{{\isachardoublequote}qed{\isachardoublequote}} may fail for two reasons: either \isa{{\isachardoublequote}m\isactrlsub {\isadigit{2}}{\isachardoublequote}} fails, or the resulting rule does not fit to any
   6.399    pending goal\footnote{This includes any additional ``strong''
   6.400 -  assumptions as introduced by \mbox{\isa{\isacommand{assume}}}.} of the enclosing
   6.401 +  assumptions as introduced by \hyperlink{command.assume}{\mbox{\isa{\isacommand{assume}}}}.} of the enclosing
   6.402    context.  Debugging such a situation might involve temporarily
   6.403 -  changing \mbox{\isa{\isacommand{show}}} into \mbox{\isa{\isacommand{have}}}, or weakening the
   6.404 -  local context by replacing occurrences of \mbox{\isa{\isacommand{assume}}} by
   6.405 -  \mbox{\isa{\isacommand{presume}}}.
   6.406 +  changing \hyperlink{command.show}{\mbox{\isa{\isacommand{show}}}} into \hyperlink{command.have}{\mbox{\isa{\isacommand{have}}}}, or weakening the
   6.407 +  local context by replacing occurrences of \hyperlink{command.assume}{\mbox{\isa{\isacommand{assume}}}} by
   6.408 +  \hyperlink{command.presume}{\mbox{\isa{\isacommand{presume}}}}.
   6.409    
   6.410 -  \item [\mbox{\isa{\isacommand{by}}}~\isa{{\isachardoublequote}m\isactrlsub {\isadigit{1}}\ m\isactrlsub {\isadigit{2}}{\isachardoublequote}}] is a
   6.411 +  \item [\hyperlink{command.by}{\mbox{\isa{\isacommand{by}}}}~\isa{{\isachardoublequote}m\isactrlsub {\isadigit{1}}\ m\isactrlsub {\isadigit{2}}{\isachardoublequote}}] is a
   6.412    \emph{terminal proof}\index{proof!terminal}; it abbreviates
   6.413 -  \mbox{\isa{\isacommand{proof}}}~\isa{{\isachardoublequote}m\isactrlsub {\isadigit{1}}{\isachardoublequote}}~\isa{{\isachardoublequote}qed{\isachardoublequote}}~\isa{{\isachardoublequote}m\isactrlsub {\isadigit{2}}{\isachardoublequote}}, but with backtracking across both methods.  Debugging
   6.414 -  an unsuccessful \mbox{\isa{\isacommand{by}}}~\isa{{\isachardoublequote}m\isactrlsub {\isadigit{1}}\ m\isactrlsub {\isadigit{2}}{\isachardoublequote}}
   6.415 +  \hyperlink{command.proof}{\mbox{\isa{\isacommand{proof}}}}~\isa{{\isachardoublequote}m\isactrlsub {\isadigit{1}}{\isachardoublequote}}~\isa{{\isachardoublequote}qed{\isachardoublequote}}~\isa{{\isachardoublequote}m\isactrlsub {\isadigit{2}}{\isachardoublequote}}, but with backtracking across both methods.  Debugging
   6.416 +  an unsuccessful \hyperlink{command.by}{\mbox{\isa{\isacommand{by}}}}~\isa{{\isachardoublequote}m\isactrlsub {\isadigit{1}}\ m\isactrlsub {\isadigit{2}}{\isachardoublequote}}
   6.417    command can be done by expanding its definition; in many cases
   6.418 -  \mbox{\isa{\isacommand{proof}}}~\isa{{\isachardoublequote}m\isactrlsub {\isadigit{1}}{\isachardoublequote}} (or even \isa{{\isachardoublequote}apply{\isachardoublequote}}~\isa{{\isachardoublequote}m\isactrlsub {\isadigit{1}}{\isachardoublequote}}) is already sufficient to see the
   6.419 +  \hyperlink{command.proof}{\mbox{\isa{\isacommand{proof}}}}~\isa{{\isachardoublequote}m\isactrlsub {\isadigit{1}}{\isachardoublequote}} (or even \isa{{\isachardoublequote}apply{\isachardoublequote}}~\isa{{\isachardoublequote}m\isactrlsub {\isadigit{1}}{\isachardoublequote}}) is already sufficient to see the
   6.420    problem.
   6.421  
   6.422 -  \item [``\mbox{\isa{\isacommand{{\isachardot}{\isachardot}}}}''] is a \emph{default
   6.423 -  proof}\index{proof!default}; it abbreviates \mbox{\isa{\isacommand{by}}}~\isa{{\isachardoublequote}rule{\isachardoublequote}}.
   6.424 +  \item [``\hyperlink{command.ddot}{\mbox{\isa{\isacommand{{\isachardot}{\isachardot}}}}}''] is a \emph{default
   6.425 +  proof}\index{proof!default}; it abbreviates \hyperlink{command.by}{\mbox{\isa{\isacommand{by}}}}~\isa{{\isachardoublequote}rule{\isachardoublequote}}.
   6.426  
   6.427 -  \item [``\mbox{\isa{\isacommand{{\isachardot}}}}''] is a \emph{trivial
   6.428 -  proof}\index{proof!trivial}; it abbreviates \mbox{\isa{\isacommand{by}}}~\isa{{\isachardoublequote}this{\isachardoublequote}}.
   6.429 +  \item [``\hyperlink{command.dot}{\mbox{\isa{\isacommand{{\isachardot}}}}}''] is a \emph{trivial
   6.430 +  proof}\index{proof!trivial}; it abbreviates \hyperlink{command.by}{\mbox{\isa{\isacommand{by}}}}~\isa{{\isachardoublequote}this{\isachardoublequote}}.
   6.431    
   6.432 -  \item [\mbox{\isa{\isacommand{sorry}}}] is a \emph{fake proof}\index{proof!fake}
   6.433 +  \item [\hyperlink{command.sorry}{\mbox{\isa{\isacommand{sorry}}}}] is a \emph{fake proof}\index{proof!fake}
   6.434    pretending to solve the pending claim without further ado.  This
   6.435    only works in interactive development, or if the \verb|quick_and_dirty| flag is enabled (in ML).  Facts emerging from fake
   6.436    proofs are not the real thing.  Internally, each theorem container
   6.437    is tainted by an oracle invocation, which is indicated as ``\isa{{\isachardoublequote}{\isacharbrackleft}{\isacharbang}{\isacharbrackright}{\isachardoublequote}}'' in the printed result.
   6.438    
   6.439 -  The most important application of \mbox{\isa{\isacommand{sorry}}} is to support
   6.440 +  The most important application of \hyperlink{command.sorry}{\mbox{\isa{\isacommand{sorry}}}} is to support
   6.441    experimentation and top-down proof development.
   6.442  
   6.443    \end{descr}%
   6.444 @@ -490,19 +490,19 @@
   6.445    \chref{ch:gen-tools} and \chref{ch:hol}).
   6.446  
   6.447    \begin{matharray}{rcl}
   6.448 -    \indexdef{}{method}{-}\mbox{\isa{{\isacharminus}}} & : & \isarmeth \\
   6.449 -    \indexdef{}{method}{fact}\mbox{\isa{fact}} & : & \isarmeth \\
   6.450 -    \indexdef{}{method}{assumption}\mbox{\isa{assumption}} & : & \isarmeth \\
   6.451 -    \indexdef{}{method}{this}\mbox{\isa{this}} & : & \isarmeth \\
   6.452 -    \indexdef{}{method}{rule}\mbox{\isa{rule}} & : & \isarmeth \\
   6.453 -    \indexdef{}{method}{iprover}\mbox{\isa{iprover}} & : & \isarmeth \\[0.5ex]
   6.454 -    \indexdef{}{attribute}{intro}\mbox{\isa{intro}} & : & \isaratt \\
   6.455 -    \indexdef{}{attribute}{elim}\mbox{\isa{elim}} & : & \isaratt \\
   6.456 -    \indexdef{}{attribute}{dest}\mbox{\isa{dest}} & : & \isaratt \\
   6.457 -    \indexdef{}{attribute}{rule}\mbox{\isa{rule}} & : & \isaratt \\[0.5ex]
   6.458 -    \indexdef{}{attribute}{OF}\mbox{\isa{OF}} & : & \isaratt \\
   6.459 -    \indexdef{}{attribute}{of}\mbox{\isa{of}} & : & \isaratt \\
   6.460 -    \indexdef{}{attribute}{where}\mbox{\isa{where}} & : & \isaratt \\
   6.461 +    \indexdef{}{method}{-}\hypertarget{method.-}{\hyperlink{method.-}{\mbox{\isa{{\isacharminus}}}}} & : & \isarmeth \\
   6.462 +    \indexdef{}{method}{fact}\hypertarget{method.fact}{\hyperlink{method.fact}{\mbox{\isa{fact}}}} & : & \isarmeth \\
   6.463 +    \indexdef{}{method}{assumption}\hypertarget{method.assumption}{\hyperlink{method.assumption}{\mbox{\isa{assumption}}}} & : & \isarmeth \\
   6.464 +    \indexdef{}{method}{this}\hypertarget{method.this}{\hyperlink{method.this}{\mbox{\isa{this}}}} & : & \isarmeth \\
   6.465 +    \indexdef{}{method}{rule}\hypertarget{method.rule}{\hyperlink{method.rule}{\mbox{\isa{rule}}}} & : & \isarmeth \\
   6.466 +    \indexdef{}{method}{iprover}\hypertarget{method.iprover}{\hyperlink{method.iprover}{\mbox{\isa{iprover}}}} & : & \isarmeth \\[0.5ex]
   6.467 +    \indexdef{Pure}{attribute}{intro}\hypertarget{attribute.Pure.intro}{\hyperlink{attribute.Pure.intro}{\mbox{\isa{intro}}}} & : & \isaratt \\
   6.468 +    \indexdef{Pure}{attribute}{elim}\hypertarget{attribute.Pure.elim}{\hyperlink{attribute.Pure.elim}{\mbox{\isa{elim}}}} & : & \isaratt \\
   6.469 +    \indexdef{Pure}{attribute}{dest}\hypertarget{attribute.Pure.dest}{\hyperlink{attribute.Pure.dest}{\mbox{\isa{dest}}}} & : & \isaratt \\
   6.470 +    \indexdef{}{attribute}{rule}\hypertarget{attribute.rule}{\hyperlink{attribute.rule}{\mbox{\isa{rule}}}} & : & \isaratt \\[0.5ex]
   6.471 +    \indexdef{}{attribute}{OF}\hypertarget{attribute.OF}{\hyperlink{attribute.OF}{\mbox{\isa{OF}}}} & : & \isaratt \\
   6.472 +    \indexdef{}{attribute}{of}\hypertarget{attribute.of}{\hyperlink{attribute.of}{\mbox{\isa{of}}}} & : & \isaratt \\
   6.473 +    \indexdef{}{attribute}{where}\hypertarget{attribute.where}{\hyperlink{attribute.where}{\mbox{\isa{where}}}} & : & \isaratt \\
   6.474    \end{matharray}
   6.475  
   6.476    \begin{rail}
   6.477 @@ -528,85 +528,88 @@
   6.478  
   6.479    \begin{descr}
   6.480    
   6.481 -  \item [``\mbox{\isa{{\isacharminus}}}'' (minus)] does nothing but insert the
   6.482 +  \item [``\hyperlink{method.-}{\mbox{\isa{{\isacharminus}}}}'' (minus)] does nothing but insert the
   6.483    forward chaining facts as premises into the goal.  Note that command
   6.484 -  \indexref{}{command}{proof}\mbox{\isa{\isacommand{proof}}} without any method actually performs a single
   6.485 -  reduction step using the \indexref{}{method}{rule}\mbox{\isa{rule}} method; thus a plain
   6.486 -  \emph{do-nothing} proof step would be ``\mbox{\isa{\isacommand{proof}}}~\isa{{\isachardoublequote}{\isacharminus}{\isachardoublequote}}'' rather than \mbox{\isa{\isacommand{proof}}} alone.
   6.487 +  \indexref{}{command}{proof}\hyperlink{command.proof}{\mbox{\isa{\isacommand{proof}}}} without any method actually performs a single
   6.488 +  reduction step using the \indexref{}{method}{rule}\hyperlink{method.rule}{\mbox{\isa{rule}}} method; thus a plain
   6.489 +  \emph{do-nothing} proof step would be ``\hyperlink{command.proof}{\mbox{\isa{\isacommand{proof}}}}~\isa{{\isachardoublequote}{\isacharminus}{\isachardoublequote}}'' rather than \hyperlink{command.proof}{\mbox{\isa{\isacommand{proof}}}} alone.
   6.490    
   6.491 -  \item [\mbox{\isa{fact}}~\isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isachardoublequote}}] composes
   6.492 +  \item [\hyperlink{method.fact}{\mbox{\isa{fact}}}~\isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isachardoublequote}}] composes
   6.493    some fact from \isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ a\isactrlsub n{\isachardoublequote}} (or implicitly from
   6.494    the current proof context) modulo unification of schematic type and
   6.495    term variables.  The rule structure is not taken into account, i.e.\
   6.496    meta-level implication is considered atomic.  This is the same
   6.497    principle underlying literal facts (cf.\ \secref{sec:syn-att}):
   6.498 -  ``\mbox{\isa{\isacommand{have}}}~\isa{{\isachardoublequote}{\isasymphi}{\isachardoublequote}}~\mbox{\isa{\isacommand{by}}}~\isa{fact}'' is
   6.499 -  equivalent to ``\mbox{\isa{\isacommand{note}}}~\verb|`|\isa{{\isasymphi}}\verb|`|'' provided that \isa{{\isachardoublequote}{\isasymturnstile}\ {\isasymphi}{\isachardoublequote}} is an instance of some known
   6.500 +  ``\hyperlink{command.have}{\mbox{\isa{\isacommand{have}}}}~\isa{{\isachardoublequote}{\isasymphi}{\isachardoublequote}}~\hyperlink{command.by}{\mbox{\isa{\isacommand{by}}}}~\isa{fact}'' is
   6.501 +  equivalent to ``\hyperlink{command.note}{\mbox{\isa{\isacommand{note}}}}~\verb|`|\isa{{\isasymphi}}\verb|`|'' provided that \isa{{\isachardoublequote}{\isasymturnstile}\ {\isasymphi}{\isachardoublequote}} is an instance of some known
   6.502    \isa{{\isachardoublequote}{\isasymturnstile}\ {\isasymphi}{\isachardoublequote}} in the proof context.
   6.503    
   6.504 -  \item [\mbox{\isa{assumption}}] solves some goal by a single assumption
   6.505 +  \item [\hyperlink{method.assumption}{\mbox{\isa{assumption}}}] solves some goal by a single assumption
   6.506    step.  All given facts are guaranteed to participate in the
   6.507    refinement; this means there may be only 0 or 1 in the first place.
   6.508 -  Recall that \mbox{\isa{\isacommand{qed}}} (\secref{sec:proof-steps}) already
   6.509 +  Recall that \hyperlink{command.qed}{\mbox{\isa{\isacommand{qed}}}} (\secref{sec:proof-steps}) already
   6.510    concludes any remaining sub-goals by assumption, so structured
   6.511 -  proofs usually need not quote the \mbox{\isa{assumption}} method at
   6.512 +  proofs usually need not quote the \hyperlink{method.assumption}{\mbox{\isa{assumption}}} method at
   6.513    all.
   6.514    
   6.515 -  \item [\mbox{\isa{this}}] applies all of the current facts directly as
   6.516 -  rules.  Recall that ``\mbox{\isa{\isacommand{{\isachardot}}}}'' (dot) abbreviates ``\mbox{\isa{\isacommand{by}}}~\isa{this}''.
   6.517 +  \item [\hyperlink{method.this}{\mbox{\isa{this}}}] applies all of the current facts directly as
   6.518 +  rules.  Recall that ``\hyperlink{command.dot}{\mbox{\isa{\isacommand{{\isachardot}}}}}'' (dot) abbreviates ``\hyperlink{command.by}{\mbox{\isa{\isacommand{by}}}}~\isa{this}''.
   6.519    
   6.520 -  \item [\mbox{\isa{rule}}~\isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isachardoublequote}}] applies some
   6.521 +  \item [\hyperlink{method.rule}{\mbox{\isa{rule}}}~\isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isachardoublequote}}] applies some
   6.522    rule given as argument in backward manner; facts are used to reduce
   6.523 -  the rule before applying it to the goal.  Thus \mbox{\isa{rule}}
   6.524 +  the rule before applying it to the goal.  Thus \hyperlink{method.rule}{\mbox{\isa{rule}}}
   6.525    without facts is plain introduction, while with facts it becomes
   6.526    elimination.
   6.527    
   6.528 -  When no arguments are given, the \mbox{\isa{rule}} method tries to pick
   6.529 +  When no arguments are given, the \hyperlink{method.rule}{\mbox{\isa{rule}}} method tries to pick
   6.530    appropriate rules automatically, as declared in the current context
   6.531 -  using the \mbox{\isa{intro}}, \mbox{\isa{elim}}, \mbox{\isa{dest}}
   6.532 -  attributes (see below).  This is the default behavior of \mbox{\isa{\isacommand{proof}}} and ``\mbox{\isa{\isacommand{{\isachardot}{\isachardot}}}}'' (double-dot) steps (see
   6.533 -  \secref{sec:proof-steps}).
   6.534 +  using the \hyperlink{attribute.Pure.intro}{\mbox{\isa{intro}}}, \hyperlink{attribute.Pure.elim}{\mbox{\isa{elim}}},
   6.535 +  \hyperlink{attribute.Pure.dest}{\mbox{\isa{dest}}} attributes (see below).  This is the
   6.536 +  default behavior of \hyperlink{command.proof}{\mbox{\isa{\isacommand{proof}}}} and ``\hyperlink{command.ddot}{\mbox{\isa{\isacommand{{\isachardot}{\isachardot}}}}}'' 
   6.537 +  (double-dot) steps (see \secref{sec:proof-steps}).
   6.538    
   6.539 -  \item [\mbox{\isa{iprover}}] performs intuitionistic proof search,
   6.540 +  \item [\hyperlink{method.iprover}{\mbox{\isa{iprover}}}] performs intuitionistic proof search,
   6.541    depending on specifically declared rules from the context, or given
   6.542    as explicit arguments.  Chained facts are inserted into the goal
   6.543 -  before commencing proof search; ``\mbox{\isa{iprover}}\isa{{\isachardoublequote}{\isacharbang}{\isachardoublequote}}'' 
   6.544 -  means to include the current \mbox{\isa{prems}} as well.
   6.545 +  before commencing proof search; ``\hyperlink{method.iprover}{\mbox{\isa{iprover}}}\isa{{\isachardoublequote}{\isacharbang}{\isachardoublequote}}'' 
   6.546 +  means to include the current \hyperlink{fact.prems}{\mbox{\isa{prems}}} as well.
   6.547    
   6.548 -  Rules need to be classified as \mbox{\isa{intro}}, \mbox{\isa{elim}}, or \mbox{\isa{dest}}; here the ``\isa{{\isachardoublequote}{\isacharbang}{\isachardoublequote}}'' indicator
   6.549 -  refers to ``safe'' rules, which may be applied aggressively (without
   6.550 -  considering back-tracking later).  Rules declared with ``\isa{{\isachardoublequote}{\isacharquery}{\isachardoublequote}}'' are ignored in proof search (the single-step \mbox{\isa{rule}}
   6.551 -  method still observes these).  An explicit weight annotation may be
   6.552 -  given as well; otherwise the number of rule premises will be taken
   6.553 -  into account here.
   6.554 +  Rules need to be classified as \hyperlink{attribute.Pure.intro}{\mbox{\isa{intro}}},
   6.555 +  \hyperlink{attribute.Pure.elim}{\mbox{\isa{elim}}}, or \hyperlink{attribute.Pure.dest}{\mbox{\isa{dest}}}; here the
   6.556 +  ``\isa{{\isachardoublequote}{\isacharbang}{\isachardoublequote}}'' indicator refers to ``safe'' rules, which may be
   6.557 +  applied aggressively (without considering back-tracking later).
   6.558 +  Rules declared with ``\isa{{\isachardoublequote}{\isacharquery}{\isachardoublequote}}'' are ignored in proof search (the
   6.559 +  single-step \hyperlink{method.rule}{\mbox{\isa{rule}}} method still observes these).  An
   6.560 +  explicit weight annotation may be given as well; otherwise the
   6.561 +  number of rule premises will be taken into account here.
   6.562    
   6.563 -  \item [\mbox{\isa{intro}}, \mbox{\isa{elim}}, and \mbox{\isa{dest}}]
   6.564 -  declare introduction, elimination, and destruct rules, to be used
   6.565 -  with the \mbox{\isa{rule}} and \mbox{\isa{iprover}} methods.  Note that
   6.566 -  the latter will ignore rules declared with ``\isa{{\isachardoublequote}{\isacharquery}{\isachardoublequote}}'', while
   6.567 -  ``\isa{{\isachardoublequote}{\isacharbang}{\isachardoublequote}}''  are used most aggressively.
   6.568 +  \item [\hyperlink{attribute.Pure.intro}{\mbox{\isa{intro}}}, \hyperlink{attribute.Pure.elim}{\mbox{\isa{elim}}}, and
   6.569 +  \hyperlink{attribute.Pure.dest}{\mbox{\isa{dest}}}] declare introduction, elimination, and
   6.570 +  destruct rules, to be used with the \hyperlink{method.rule}{\mbox{\isa{rule}}} and \hyperlink{method.iprover}{\mbox{\isa{iprover}}} methods.  Note that the latter will ignore rules declared
   6.571 +  with ``\isa{{\isachardoublequote}{\isacharquery}{\isachardoublequote}}'', while ``\isa{{\isachardoublequote}{\isacharbang}{\isachardoublequote}}''  are used most
   6.572 +  aggressively.
   6.573    
   6.574    The classical reasoner (see \secref{sec:classical}) introduces its
   6.575    own variants of these attributes; use qualified names to access the
   6.576 -  present versions of Isabelle/Pure, i.e.\ \mbox{\isa{Pure{\isachardot}intro}}.
   6.577 +  present versions of Isabelle/Pure, i.e.\ \hyperlink{attribute.Pure.Pure.intro}{\mbox{\isa{Pure{\isachardot}intro}}}.
   6.578    
   6.579 -  \item [\mbox{\isa{rule}}~\isa{del}] undeclares introduction,
   6.580 +  \item [\hyperlink{attribute.rule}{\mbox{\isa{rule}}}~\isa{del}] undeclares introduction,
   6.581    elimination, or destruct rules.
   6.582    
   6.583 -  \item [\mbox{\isa{OF}}~\isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isachardoublequote}}] applies some
   6.584 +  \item [\hyperlink{attribute.OF}{\mbox{\isa{OF}}}~\isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isachardoublequote}}] applies some
   6.585    theorem to all of the given rules \isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ a\isactrlsub n{\isachardoublequote}}
   6.586    (in parallel).  This corresponds to the \verb|"op MRS"| operation in
   6.587    ML, but note the reversed order.  Positions may be effectively
   6.588    skipped by including ``\isa{{\isacharunderscore}}'' (underscore) as argument.
   6.589    
   6.590 -  \item [\mbox{\isa{of}}~\isa{{\isachardoublequote}t\isactrlsub {\isadigit{1}}\ {\isasymdots}\ t\isactrlsub n{\isachardoublequote}}] performs
   6.591 +  \item [\hyperlink{attribute.of}{\mbox{\isa{of}}}~\isa{{\isachardoublequote}t\isactrlsub {\isadigit{1}}\ {\isasymdots}\ t\isactrlsub n{\isachardoublequote}}] performs
   6.592    positional instantiation of term variables.  The terms \isa{{\isachardoublequote}t\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ t\isactrlsub n{\isachardoublequote}} are substituted for any schematic
   6.593    variables occurring in a theorem from left to right; ``\isa{{\isacharunderscore}}''
   6.594    (underscore) indicates to skip a position.  Arguments following a
   6.595    ``\isa{{\isachardoublequote}concl{\isacharcolon}{\isachardoublequote}}'' specification refer to positions of the
   6.596    conclusion of a rule.
   6.597    
   6.598 -  \item [\mbox{\isa{where}}~\isa{{\isachardoublequote}x\isactrlsub {\isadigit{1}}\ {\isacharequal}\ t\isactrlsub {\isadigit{1}}\ {\isasymAND}\ {\isasymdots}\ x\isactrlsub n\ {\isacharequal}\ t\isactrlsub n{\isachardoublequote}}] performs named instantiation of schematic
   6.599 +  \item [\hyperlink{attribute.where}{\mbox{\isa{where}}}~\isa{{\isachardoublequote}x\isactrlsub {\isadigit{1}}\ {\isacharequal}\ t\isactrlsub {\isadigit{1}}\ {\isasymAND}\ {\isasymdots}\ x\isactrlsub n\ {\isacharequal}\ t\isactrlsub n{\isachardoublequote}}] performs named instantiation of schematic
   6.600    type and term variables occurring in a theorem.  Schematic variables
   6.601    have to be specified on the left-hand side (e.g.\ \isa{{\isachardoublequote}{\isacharquery}x{\isadigit{1}}{\isachardot}{\isadigit{3}}{\isachardoublequote}}).
   6.602    The question mark may be omitted if the variable name is a plain
   6.603 @@ -624,60 +627,60 @@
   6.604  %
   6.605  \begin{isamarkuptext}%
   6.606  \begin{matharray}{rcl}
   6.607 -    \indexdef{}{command}{let}\mbox{\isa{\isacommand{let}}} & : & \isartrans{proof(state)}{proof(state)} \\
   6.608 -    \indexdef{}{keyword}{is}\mbox{\isa{\isakeyword{is}}} & : & syntax \\
   6.609 +    \indexdef{}{command}{let}\hypertarget{command.let}{\hyperlink{command.let}{\mbox{\isa{\isacommand{let}}}}} & : & \isartrans{proof(state)}{proof(state)} \\
   6.610 +    \indexdef{}{keyword}{is}\hypertarget{keyword.is}{\hyperlink{keyword.is}{\mbox{\isa{\isakeyword{is}}}}} & : & syntax \\
   6.611    \end{matharray}
   6.612  
   6.613 -  Abbreviations may be either bound by explicit \mbox{\isa{\isacommand{let}}}~\isa{{\isachardoublequote}p\ {\isasymequiv}\ t{\isachardoublequote}} statements, or by annotating assumptions or
   6.614 +  Abbreviations may be either bound by explicit \hyperlink{command.let}{\mbox{\isa{\isacommand{let}}}}~\isa{{\isachardoublequote}p\ {\isasymequiv}\ t{\isachardoublequote}} statements, or by annotating assumptions or
   6.615    goal statements with a list of patterns ``\isa{{\isachardoublequote}{\isacharparenleft}{\isasymIS}\ p\isactrlsub {\isadigit{1}}\ {\isasymdots}\ p\isactrlsub n{\isacharparenright}{\isachardoublequote}}''.  In both cases, higher-order matching is invoked to
   6.616    bind extra-logical term variables, which may be either named
   6.617    schematic variables of the form \isa{{\isacharquery}x}, or nameless dummies
   6.618 -  ``\mbox{\isa{{\isacharunderscore}}}'' (underscore). Note that in the \mbox{\isa{\isacommand{let}}}
   6.619 -  form the patterns occur on the left-hand side, while the \mbox{\isa{\isakeyword{is}}} patterns are in postfix position.
   6.620 +  ``\hyperlink{variable._}{\mbox{\isa{{\isacharunderscore}}}}'' (underscore). Note that in the \hyperlink{command.let}{\mbox{\isa{\isacommand{let}}}}
   6.621 +  form the patterns occur on the left-hand side, while the \hyperlink{keyword.is}{\mbox{\isa{\isakeyword{is}}}} patterns are in postfix position.
   6.622  
   6.623    Polymorphism of term bindings is handled in Hindley-Milner style,
   6.624    similar to ML.  Type variables referring to local assumptions or
   6.625    open goal statements are \emph{fixed}, while those of finished
   6.626 -  results or bound by \mbox{\isa{\isacommand{let}}} may occur in \emph{arbitrary}
   6.627 +  results or bound by \hyperlink{command.let}{\mbox{\isa{\isacommand{let}}}} may occur in \emph{arbitrary}
   6.628    instances later.  Even though actual polymorphism should be rarely
   6.629    used in practice, this mechanism is essential to achieve proper
   6.630    incremental type-inference, as the user proceeds to build up the
   6.631    Isar proof text from left to right.
   6.632  
   6.633    \medskip Term abbreviations are quite different from local
   6.634 -  definitions as introduced via \mbox{\isa{\isacommand{def}}} (see
   6.635 +  definitions as introduced via \hyperlink{command.def}{\mbox{\isa{\isacommand{def}}}} (see
   6.636    \secref{sec:proof-context}).  The latter are visible within the
   6.637    logic as actual equations, while abbreviations disappear during the
   6.638 -  input process just after type checking.  Also note that \mbox{\isa{\isacommand{def}}} does not support polymorphism.
   6.639 +  input process just after type checking.  Also note that \hyperlink{command.def}{\mbox{\isa{\isacommand{def}}}} does not support polymorphism.
   6.640  
   6.641    \begin{rail}
   6.642      'let' ((term + 'and') '=' term + 'and')
   6.643      ;  
   6.644    \end{rail}
   6.645  
   6.646 -  The syntax of \mbox{\isa{\isakeyword{is}}} patterns follows \railnonterm{termpat}
   6.647 +  The syntax of \hyperlink{keyword.is}{\mbox{\isa{\isakeyword{is}}}} patterns follows \railnonterm{termpat}
   6.648    or \railnonterm{proppat} (see \secref{sec:term-decls}).
   6.649  
   6.650    \begin{descr}
   6.651  
   6.652 -  \item [\mbox{\isa{\isacommand{let}}}~\isa{{\isachardoublequote}p\isactrlsub {\isadigit{1}}\ {\isacharequal}\ t\isactrlsub {\isadigit{1}}\ {\isasymAND}\ {\isasymdots}\ p\isactrlsub n\ {\isacharequal}\ t\isactrlsub n{\isachardoublequote}}] binds any text variables in patterns \isa{{\isachardoublequote}p\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ p\isactrlsub n{\isachardoublequote}} by simultaneous higher-order matching
   6.653 +  \item [\hyperlink{command.let}{\mbox{\isa{\isacommand{let}}}}~\isa{{\isachardoublequote}p\isactrlsub {\isadigit{1}}\ {\isacharequal}\ t\isactrlsub {\isadigit{1}}\ {\isasymAND}\ {\isasymdots}\ p\isactrlsub n\ {\isacharequal}\ t\isactrlsub n{\isachardoublequote}}] binds any text variables in patterns \isa{{\isachardoublequote}p\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ p\isactrlsub n{\isachardoublequote}} by simultaneous higher-order matching
   6.654    against terms \isa{{\isachardoublequote}t\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ t\isactrlsub n{\isachardoublequote}}.
   6.655  
   6.656 -  \item [\isa{{\isachardoublequote}{\isacharparenleft}{\isasymIS}\ p\isactrlsub {\isadigit{1}}\ {\isasymdots}\ p\isactrlsub n{\isacharparenright}{\isachardoublequote}}] resembles \mbox{\isa{\isacommand{let}}}, but matches \isa{{\isachardoublequote}p\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ p\isactrlsub n{\isachardoublequote}} against the
   6.657 -  preceding statement.  Also note that \mbox{\isa{\isakeyword{is}}} is not a
   6.658 -  separate command, but part of others (such as \mbox{\isa{\isacommand{assume}}},
   6.659 -  \mbox{\isa{\isacommand{have}}} etc.).
   6.660 +  \item [\isa{{\isachardoublequote}{\isacharparenleft}{\isasymIS}\ p\isactrlsub {\isadigit{1}}\ {\isasymdots}\ p\isactrlsub n{\isacharparenright}{\isachardoublequote}}] resembles \hyperlink{command.let}{\mbox{\isa{\isacommand{let}}}}, but matches \isa{{\isachardoublequote}p\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ p\isactrlsub n{\isachardoublequote}} against the
   6.661 +  preceding statement.  Also note that \hyperlink{keyword.is}{\mbox{\isa{\isakeyword{is}}}} is not a
   6.662 +  separate command, but part of others (such as \hyperlink{command.assume}{\mbox{\isa{\isacommand{assume}}}},
   6.663 +  \hyperlink{command.have}{\mbox{\isa{\isacommand{have}}}} etc.).
   6.664  
   6.665    \end{descr}
   6.666  
   6.667    Some \emph{implicit} term abbreviations\index{term abbreviations}
   6.668    for goals and facts are available as well.  For any open goal,
   6.669 -  \indexref{}{variable}{thesis}\mbox{\isa{thesis}} refers to its object-level statement,
   6.670 +  \indexref{}{variable}{thesis}\hyperlink{variable.thesis}{\mbox{\isa{thesis}}} refers to its object-level statement,
   6.671    abstracted over any meta-level parameters (if present).  Likewise,
   6.672 -  \indexref{}{variable}{this}\mbox{\isa{this}} is bound for fact statements resulting from
   6.673 -  assumptions or finished goals.  In case \mbox{\isa{this}} refers to
   6.674 +  \indexref{}{variable}{this}\hyperlink{variable.this}{\mbox{\isa{this}}} is bound for fact statements resulting from
   6.675 +  assumptions or finished goals.  In case \hyperlink{variable.this}{\mbox{\isa{this}}} refers to
   6.676    an object-logic statement that is an application \isa{{\isachardoublequote}f\ t{\isachardoublequote}}, then
   6.677 -  \isa{t} is bound to the special text variable ``\mbox{\isa{{\isasymdots}}}''
   6.678 +  \isa{t} is bound to the special text variable ``\hyperlink{variable.dots}{\mbox{\isa{{\isasymdots}}}}''
   6.679    (three dots).  The canonical application of this convenience are
   6.680    calculational proofs (see \secref{sec:calculation}).%
   6.681  \end{isamarkuptext}%
   6.682 @@ -689,19 +692,19 @@
   6.683  %
   6.684  \begin{isamarkuptext}%
   6.685  \begin{matharray}{rcl}
   6.686 -    \indexdef{}{command}{next}\mbox{\isa{\isacommand{next}}} & : & \isartrans{proof(state)}{proof(state)} \\
   6.687 -    \indexdef{}{command}{\{}\mbox{\isa{\isacommand{{\isacharbraceleft}}}} & : & \isartrans{proof(state)}{proof(state)} \\
   6.688 -    \indexdef{}{command}{\}}\mbox{\isa{\isacommand{{\isacharbraceright}}}} & : & \isartrans{proof(state)}{proof(state)} \\
   6.689 +    \indexdef{}{command}{next}\hypertarget{command.next}{\hyperlink{command.next}{\mbox{\isa{\isacommand{next}}}}} & : & \isartrans{proof(state)}{proof(state)} \\
   6.690 +    \indexdef{}{command}{\{}\hypertarget{command.braceleft}{\hyperlink{command.braceleft}{\mbox{\isa{\isacommand{{\isacharbraceleft}}}}}} & : & \isartrans{proof(state)}{proof(state)} \\
   6.691 +    \indexdef{}{command}{\}}\hypertarget{command.braceright}{\hyperlink{command.braceright}{\mbox{\isa{\isacommand{{\isacharbraceright}}}}}} & : & \isartrans{proof(state)}{proof(state)} \\
   6.692    \end{matharray}
   6.693  
   6.694    While Isar is inherently block-structured, opening and closing
   6.695    blocks is mostly handled rather casually, with little explicit
   6.696    user-intervention.  Any local goal statement automatically opens
   6.697    \emph{two} internal blocks, which are closed again when concluding
   6.698 -  the sub-proof (by \mbox{\isa{\isacommand{qed}}} etc.).  Sections of different
   6.699 -  context within a sub-proof may be switched via \mbox{\isa{\isacommand{next}}},
   6.700 +  the sub-proof (by \hyperlink{command.qed}{\mbox{\isa{\isacommand{qed}}}} etc.).  Sections of different
   6.701 +  context within a sub-proof may be switched via \hyperlink{command.next}{\mbox{\isa{\isacommand{next}}}},
   6.702    which is just a single block-close followed by block-open again.
   6.703 -  The effect of \mbox{\isa{\isacommand{next}}} is to reset the local proof context;
   6.704 +  The effect of \hyperlink{command.next}{\mbox{\isa{\isacommand{next}}}} is to reset the local proof context;
   6.705    there is no goal focus involved here!
   6.706  
   6.707    For slightly more advanced applications, there are explicit block
   6.708 @@ -710,18 +713,18 @@
   6.709  
   6.710    \begin{descr}
   6.711  
   6.712 -  \item [\mbox{\isa{\isacommand{next}}}] switches to a fresh block within a
   6.713 +  \item [\hyperlink{command.next}{\mbox{\isa{\isacommand{next}}}}] switches to a fresh block within a
   6.714    sub-proof, resetting the local context to the initial one.
   6.715  
   6.716 -  \item [\mbox{\isa{\isacommand{{\isacharbraceleft}}}} and \mbox{\isa{\isacommand{{\isacharbraceright}}}}] explicitly open and close
   6.717 -  blocks.  Any current facts pass through ``\mbox{\isa{\isacommand{{\isacharbraceleft}}}}''
   6.718 -  unchanged, while ``\mbox{\isa{\isacommand{{\isacharbraceright}}}}'' causes any result to be
   6.719 +  \item [\hyperlink{command.braceleft}{\mbox{\isa{\isacommand{{\isacharbraceleft}}}}} and \hyperlink{command.braceright}{\mbox{\isa{\isacommand{{\isacharbraceright}}}}}] explicitly open and close
   6.720 +  blocks.  Any current facts pass through ``\hyperlink{command.braceleft}{\mbox{\isa{\isacommand{{\isacharbraceleft}}}}}''
   6.721 +  unchanged, while ``\hyperlink{command.braceright}{\mbox{\isa{\isacommand{{\isacharbraceright}}}}}'' causes any result to be
   6.722    \emph{exported} into the enclosing context.  Thus fixed variables
   6.723    are generalized, assumptions discharged, and local definitions
   6.724    unfolded (cf.\ \secref{sec:proof-context}).  There is no difference
   6.725 -  of \mbox{\isa{\isacommand{assume}}} and \mbox{\isa{\isacommand{presume}}} in this mode of
   6.726 +  of \hyperlink{command.assume}{\mbox{\isa{\isacommand{assume}}}} and \hyperlink{command.presume}{\mbox{\isa{\isacommand{presume}}}} in this mode of
   6.727    forward reasoning --- in contrast to plain backward reasoning with
   6.728 -  the result exported at \mbox{\isa{\isacommand{show}}} time.
   6.729 +  the result exported at \hyperlink{command.show}{\mbox{\isa{\isacommand{show}}}} time.
   6.730  
   6.731    \end{descr}%
   6.732  \end{isamarkuptext}%
   6.733 @@ -742,12 +745,12 @@
   6.734    be used in scripts, too.
   6.735  
   6.736    \begin{matharray}{rcl}
   6.737 -    \indexdef{}{command}{apply}\mbox{\isa{\isacommand{apply}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isartrans{proof(prove)}{proof(prove)} \\
   6.738 -    \indexdef{}{command}{apply\_end}\mbox{\isa{\isacommand{apply{\isacharunderscore}end}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isartrans{proof(state)}{proof(state)} \\
   6.739 -    \indexdef{}{command}{done}\mbox{\isa{\isacommand{done}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isartrans{proof(prove)}{proof(state)} \\
   6.740 -    \indexdef{}{command}{defer}\mbox{\isa{\isacommand{defer}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isartrans{proof}{proof} \\
   6.741 -    \indexdef{}{command}{prefer}\mbox{\isa{\isacommand{prefer}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isartrans{proof}{proof} \\
   6.742 -    \indexdef{}{command}{back}\mbox{\isa{\isacommand{back}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isartrans{proof}{proof} \\
   6.743 +    \indexdef{}{command}{apply}\hypertarget{command.apply}{\hyperlink{command.apply}{\mbox{\isa{\isacommand{apply}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isartrans{proof(prove)}{proof(prove)} \\
   6.744 +    \indexdef{}{command}{apply\_end}\hypertarget{command.apply_end}{\hyperlink{command.apply_end}{\mbox{\isa{\isacommand{apply{\isacharunderscore}end}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isartrans{proof(state)}{proof(state)} \\
   6.745 +    \indexdef{}{command}{done}\hypertarget{command.done}{\hyperlink{command.done}{\mbox{\isa{\isacommand{done}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isartrans{proof(prove)}{proof(state)} \\
   6.746 +    \indexdef{}{command}{defer}\hypertarget{command.defer}{\hyperlink{command.defer}{\mbox{\isa{\isacommand{defer}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isartrans{proof}{proof} \\
   6.747 +    \indexdef{}{command}{prefer}\hypertarget{command.prefer}{\hyperlink{command.prefer}{\mbox{\isa{\isacommand{prefer}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isartrans{proof}{proof} \\
   6.748 +    \indexdef{}{command}{back}\hypertarget{command.back}{\hyperlink{command.back}{\mbox{\isa{\isacommand{back}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isartrans{proof}{proof} \\
   6.749    \end{matharray}
   6.750  
   6.751    \begin{rail}
   6.752 @@ -761,42 +764,42 @@
   6.753  
   6.754    \begin{descr}
   6.755  
   6.756 -  \item [\mbox{\isa{\isacommand{apply}}}~\isa{m}] applies proof method \isa{m}
   6.757 -  in initial position, but unlike \mbox{\isa{\isacommand{proof}}} it retains
   6.758 +  \item [\hyperlink{command.apply}{\mbox{\isa{\isacommand{apply}}}}~\isa{m}] applies proof method \isa{m}
   6.759 +  in initial position, but unlike \hyperlink{command.proof}{\mbox{\isa{\isacommand{proof}}}} it retains
   6.760    ``\isa{{\isachardoublequote}proof{\isacharparenleft}prove{\isacharparenright}{\isachardoublequote}}'' mode.  Thus consecutive method
   6.761    applications may be given just as in tactic scripts.
   6.762    
   6.763    Facts are passed to \isa{m} as indicated by the goal's
   6.764    forward-chain mode, and are \emph{consumed} afterwards.  Thus any
   6.765 -  further \mbox{\isa{\isacommand{apply}}} command would always work in a purely
   6.766 +  further \hyperlink{command.apply}{\mbox{\isa{\isacommand{apply}}}} command would always work in a purely
   6.767    backward manner.
   6.768    
   6.769 -  \item [\mbox{\isa{\isacommand{apply{\isacharunderscore}end}}}~\isa{{\isachardoublequote}m{\isachardoublequote}}] applies proof method
   6.770 +  \item [\hyperlink{command.apply_end}{\mbox{\isa{\isacommand{apply{\isacharunderscore}end}}}}~\isa{{\isachardoublequote}m{\isachardoublequote}}] applies proof method
   6.771    \isa{m} as if in terminal position.  Basically, this simulates a
   6.772 -  multi-step tactic script for \mbox{\isa{\isacommand{qed}}}, but may be given
   6.773 +  multi-step tactic script for \hyperlink{command.qed}{\mbox{\isa{\isacommand{qed}}}}, but may be given
   6.774    anywhere within the proof body.
   6.775    
   6.776    No facts are passed to \isa{m} here.  Furthermore, the static
   6.777 -  context is that of the enclosing goal (as for actual \mbox{\isa{\isacommand{qed}}}).  Thus the proof method may not refer to any assumptions
   6.778 +  context is that of the enclosing goal (as for actual \hyperlink{command.qed}{\mbox{\isa{\isacommand{qed}}}}).  Thus the proof method may not refer to any assumptions
   6.779    introduced in the current body, for example.
   6.780    
   6.781 -  \item [\mbox{\isa{\isacommand{done}}}] completes a proof script, provided that
   6.782 +  \item [\hyperlink{command.done}{\mbox{\isa{\isacommand{done}}}}] completes a proof script, provided that
   6.783    the current goal state is solved completely.  Note that actual
   6.784 -  structured proof commands (e.g.\ ``\mbox{\isa{\isacommand{{\isachardot}}}}'' or \mbox{\isa{\isacommand{sorry}}}) may be used to conclude proof scripts as well.
   6.785 +  structured proof commands (e.g.\ ``\hyperlink{command.dot}{\mbox{\isa{\isacommand{{\isachardot}}}}}'' or \hyperlink{command.sorry}{\mbox{\isa{\isacommand{sorry}}}}) may be used to conclude proof scripts as well.
   6.786  
   6.787 -  \item [\mbox{\isa{\isacommand{defer}}}~\isa{n} and \mbox{\isa{\isacommand{prefer}}}~\isa{n}] shuffle the list of pending goals: \mbox{\isa{\isacommand{defer}}} puts off
   6.788 +  \item [\hyperlink{command.defer}{\mbox{\isa{\isacommand{defer}}}}~\isa{n} and \hyperlink{command.prefer}{\mbox{\isa{\isacommand{prefer}}}}~\isa{n}] shuffle the list of pending goals: \hyperlink{command.defer}{\mbox{\isa{\isacommand{defer}}}} puts off
   6.789    sub-goal \isa{n} to the end of the list (\isa{{\isachardoublequote}n\ {\isacharequal}\ {\isadigit{1}}{\isachardoublequote}} by
   6.790 -  default), while \mbox{\isa{\isacommand{prefer}}} brings sub-goal \isa{n} to the
   6.791 +  default), while \hyperlink{command.prefer}{\mbox{\isa{\isacommand{prefer}}}} brings sub-goal \isa{n} to the
   6.792    front.
   6.793    
   6.794 -  \item [\mbox{\isa{\isacommand{back}}}] does back-tracking over the result
   6.795 +  \item [\hyperlink{command.back}{\mbox{\isa{\isacommand{back}}}}] does back-tracking over the result
   6.796    sequence of the latest proof command.  Basically, any proof command
   6.797    may return multiple results.
   6.798    
   6.799    \end{descr}
   6.800  
   6.801    Any proper Isar proof method may be used with tactic script commands
   6.802 -  such as \mbox{\isa{\isacommand{apply}}}.  A few additional emulations of actual
   6.803 +  such as \hyperlink{command.apply}{\mbox{\isa{\isacommand{apply}}}}.  A few additional emulations of actual
   6.804    tactics are provided as well; these would be never used in actual
   6.805    structured proofs, of course.%
   6.806  \end{isamarkuptext}%
   6.807 @@ -808,29 +811,29 @@
   6.808  %
   6.809  \begin{isamarkuptext}%
   6.810  \begin{matharray}{rcl}
   6.811 -    \indexdef{}{command}{oops}\mbox{\isa{\isacommand{oops}}} & : & \isartrans{proof}{theory} \\
   6.812 +    \indexdef{}{command}{oops}\hypertarget{command.oops}{\hyperlink{command.oops}{\mbox{\isa{\isacommand{oops}}}}} & : & \isartrans{proof}{theory} \\
   6.813    \end{matharray}
   6.814  
   6.815 -  The \mbox{\isa{\isacommand{oops}}} command discontinues the current proof
   6.816 +  The \hyperlink{command.oops}{\mbox{\isa{\isacommand{oops}}}} command discontinues the current proof
   6.817    attempt, while considering the partial proof text as properly
   6.818    processed.  This is conceptually quite different from ``faking''
   6.819 -  actual proofs via \indexref{}{command}{sorry}\mbox{\isa{\isacommand{sorry}}} (see
   6.820 -  \secref{sec:proof-steps}): \mbox{\isa{\isacommand{oops}}} does not observe the
   6.821 +  actual proofs via \indexref{}{command}{sorry}\hyperlink{command.sorry}{\mbox{\isa{\isacommand{sorry}}}} (see
   6.822 +  \secref{sec:proof-steps}): \hyperlink{command.oops}{\mbox{\isa{\isacommand{oops}}}} does not observe the
   6.823    proof structure at all, but goes back right to the theory level.
   6.824 -  Furthermore, \mbox{\isa{\isacommand{oops}}} does not produce any result theorem
   6.825 +  Furthermore, \hyperlink{command.oops}{\mbox{\isa{\isacommand{oops}}}} does not produce any result theorem
   6.826    --- there is no intended claim to be able to complete the proof
   6.827    anyhow.
   6.828  
   6.829 -  A typical application of \mbox{\isa{\isacommand{oops}}} is to explain Isar proofs
   6.830 +  A typical application of \hyperlink{command.oops}{\mbox{\isa{\isacommand{oops}}}} is to explain Isar proofs
   6.831    \emph{within} the system itself, in conjunction with the document
   6.832    preparation tools of Isabelle described in \cite{isabelle-sys}.
   6.833    Thus partial or even wrong proof attempts can be discussed in a
   6.834    logically sound manner.  Note that the Isabelle {\LaTeX} macros can
   6.835    be easily adapted to print something like ``\isa{{\isachardoublequote}{\isasymdots}{\isachardoublequote}}'' instead of
   6.836 -  the keyword ``\mbox{\isa{\isacommand{oops}}}''.
   6.837 +  the keyword ``\hyperlink{command.oops}{\mbox{\isa{\isacommand{oops}}}}''.
   6.838  
   6.839 -  \medskip The \mbox{\isa{\isacommand{oops}}} command is undo-able, unlike
   6.840 -  \indexref{}{command}{kill}\mbox{\isa{\isacommand{kill}}} (see \secref{sec:history}).  The effect is to
   6.841 +  \medskip The \hyperlink{command.oops}{\mbox{\isa{\isacommand{oops}}}} command is undo-able, unlike
   6.842 +  \indexref{}{command}{kill}\hyperlink{command.kill}{\mbox{\isa{\isacommand{kill}}}} (see \secref{sec:history}).  The effect is to
   6.843    get back to the theory just before the opening of the proof.%
   6.844  \end{isamarkuptext}%
   6.845  \isamarkuptrue%
   6.846 @@ -841,15 +844,15 @@
   6.847  %
   6.848  \begin{isamarkuptext}%
   6.849  \begin{matharray}{rcl}
   6.850 -    \indexdef{}{command}{obtain}\mbox{\isa{\isacommand{obtain}}} & : & \isartrans{proof(state)}{proof(prove)} \\
   6.851 -    \indexdef{}{command}{guess}\mbox{\isa{\isacommand{guess}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isartrans{proof(state)}{proof(prove)} \\
   6.852 +    \indexdef{}{command}{obtain}\hypertarget{command.obtain}{\hyperlink{command.obtain}{\mbox{\isa{\isacommand{obtain}}}}} & : & \isartrans{proof(state)}{proof(prove)} \\
   6.853 +    \indexdef{}{command}{guess}\hypertarget{command.guess}{\hyperlink{command.guess}{\mbox{\isa{\isacommand{guess}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isartrans{proof(state)}{proof(prove)} \\
   6.854    \end{matharray}
   6.855  
   6.856    Generalized elimination means that additional elements with certain
   6.857    properties may be introduced in the current context, by virtue of a
   6.858    locally proven ``soundness statement''.  Technically speaking, the
   6.859 -  \mbox{\isa{\isacommand{obtain}}} language element is like a declaration of
   6.860 -  \mbox{\isa{\isacommand{fix}}} and \mbox{\isa{\isacommand{assume}}} (see also see
   6.861 +  \hyperlink{command.obtain}{\mbox{\isa{\isacommand{obtain}}}} language element is like a declaration of
   6.862 +  \hyperlink{command.fix}{\mbox{\isa{\isacommand{fix}}}} and \hyperlink{command.assume}{\mbox{\isa{\isacommand{assume}}}} (see also see
   6.863    \secref{sec:proof-context}), together with a soundness proof of its
   6.864    additional claim.  According to the nature of existential reasoning,
   6.865    assumptions get eliminated from any result exported from the context
   6.866 @@ -863,51 +866,51 @@
   6.867      ;
   6.868    \end{rail}
   6.869  
   6.870 -  The derived Isar command \mbox{\isa{\isacommand{obtain}}} is defined as follows
   6.871 +  The derived Isar command \hyperlink{command.obtain}{\mbox{\isa{\isacommand{obtain}}}} is defined as follows
   6.872    (where \isa{{\isachardoublequote}b\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ b\isactrlsub k{\isachardoublequote}} shall refer to (optional)
   6.873    facts indicated for forward chaining).
   6.874    \begin{matharray}{l}
   6.875 -    \isa{{\isachardoublequote}{\isasymlangle}using\ b\isactrlsub {\isadigit{1}}\ {\isasymdots}\ b\isactrlsub k{\isasymrangle}{\isachardoublequote}}~~\mbox{\isa{\isacommand{obtain}}}~\isa{{\isachardoublequote}x\isactrlsub {\isadigit{1}}\ {\isasymdots}\ x\isactrlsub m\ {\isasymWHERE}\ a{\isacharcolon}\ {\isasymphi}\isactrlsub {\isadigit{1}}\ {\isasymdots}\ {\isasymphi}\isactrlsub n\ \ {\isasymlangle}proof{\isasymrangle}\ {\isasymequiv}{\isachardoublequote}} \\[1ex]
   6.876 -    \quad \mbox{\isa{\isacommand{have}}}~\isa{{\isachardoublequote}{\isasymAnd}thesis{\isachardot}\ {\isacharparenleft}{\isasymAnd}x\isactrlsub {\isadigit{1}}\ {\isasymdots}\ x\isactrlsub m{\isachardot}\ {\isasymphi}\isactrlsub {\isadigit{1}}\ {\isasymLongrightarrow}\ {\isasymdots}\ {\isasymphi}\isactrlsub n\ {\isasymLongrightarrow}\ thesis{\isacharparenright}\ {\isasymLongrightarrow}\ thesis{\isachardoublequote}} \\
   6.877 -    \quad \mbox{\isa{\isacommand{proof}}}~\isa{succeed} \\
   6.878 -    \qquad \mbox{\isa{\isacommand{fix}}}~\isa{thesis} \\
   6.879 -    \qquad \mbox{\isa{\isacommand{assume}}}~\isa{{\isachardoublequote}that\ {\isacharbrackleft}Pure{\isachardot}intro{\isacharquery}{\isacharbrackright}{\isacharcolon}\ {\isasymAnd}x\isactrlsub {\isadigit{1}}\ {\isasymdots}\ x\isactrlsub m{\isachardot}\ {\isasymphi}\isactrlsub {\isadigit{1}}\ {\isasymLongrightarrow}\ {\isasymdots}\ {\isasymphi}\isactrlsub n\ {\isasymLongrightarrow}\ thesis{\isachardoublequote}} \\
   6.880 -    \qquad \mbox{\isa{\isacommand{then}}}~\mbox{\isa{\isacommand{show}}}~\isa{thesis} \\
   6.881 -    \quad\qquad \mbox{\isa{\isacommand{apply}}}~\isa{{\isacharminus}} \\
   6.882 -    \quad\qquad \mbox{\isa{\isacommand{using}}}~\isa{{\isachardoublequote}b\isactrlsub {\isadigit{1}}\ {\isasymdots}\ b\isactrlsub k\ \ {\isasymlangle}proof{\isasymrangle}{\isachardoublequote}} \\
   6.883 -    \quad \mbox{\isa{\isacommand{qed}}} \\
   6.884 -    \quad \mbox{\isa{\isacommand{fix}}}~\isa{{\isachardoublequote}x\isactrlsub {\isadigit{1}}\ {\isasymdots}\ x\isactrlsub m{\isachardoublequote}}~\mbox{\isa{\isacommand{assume}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}\ a{\isacharcolon}\ {\isasymphi}\isactrlsub {\isadigit{1}}\ {\isasymdots}\ {\isasymphi}\isactrlsub n{\isachardoublequote}} \\
   6.885 +    \isa{{\isachardoublequote}{\isasymlangle}using\ b\isactrlsub {\isadigit{1}}\ {\isasymdots}\ b\isactrlsub k{\isasymrangle}{\isachardoublequote}}~~\hyperlink{command.obtain}{\mbox{\isa{\isacommand{obtain}}}}~\isa{{\isachardoublequote}x\isactrlsub {\isadigit{1}}\ {\isasymdots}\ x\isactrlsub m\ {\isasymWHERE}\ a{\isacharcolon}\ {\isasymphi}\isactrlsub {\isadigit{1}}\ {\isasymdots}\ {\isasymphi}\isactrlsub n\ \ {\isasymlangle}proof{\isasymrangle}\ {\isasymequiv}{\isachardoublequote}} \\[1ex]
   6.886 +    \quad \hyperlink{command.have}{\mbox{\isa{\isacommand{have}}}}~\isa{{\isachardoublequote}{\isasymAnd}thesis{\isachardot}\ {\isacharparenleft}{\isasymAnd}x\isactrlsub {\isadigit{1}}\ {\isasymdots}\ x\isactrlsub m{\isachardot}\ {\isasymphi}\isactrlsub {\isadigit{1}}\ {\isasymLongrightarrow}\ {\isasymdots}\ {\isasymphi}\isactrlsub n\ {\isasymLongrightarrow}\ thesis{\isacharparenright}\ {\isasymLongrightarrow}\ thesis{\isachardoublequote}} \\
   6.887 +    \quad \hyperlink{command.proof}{\mbox{\isa{\isacommand{proof}}}}~\isa{succeed} \\
   6.888 +    \qquad \hyperlink{command.fix}{\mbox{\isa{\isacommand{fix}}}}~\isa{thesis} \\
   6.889 +    \qquad \hyperlink{command.assume}{\mbox{\isa{\isacommand{assume}}}}~\isa{{\isachardoublequote}that\ {\isacharbrackleft}Pure{\isachardot}intro{\isacharquery}{\isacharbrackright}{\isacharcolon}\ {\isasymAnd}x\isactrlsub {\isadigit{1}}\ {\isasymdots}\ x\isactrlsub m{\isachardot}\ {\isasymphi}\isactrlsub {\isadigit{1}}\ {\isasymLongrightarrow}\ {\isasymdots}\ {\isasymphi}\isactrlsub n\ {\isasymLongrightarrow}\ thesis{\isachardoublequote}} \\
   6.890 +    \qquad \hyperlink{command.then}{\mbox{\isa{\isacommand{then}}}}~\hyperlink{command.show}{\mbox{\isa{\isacommand{show}}}}~\isa{thesis} \\
   6.891 +    \quad\qquad \hyperlink{command.apply}{\mbox{\isa{\isacommand{apply}}}}~\isa{{\isacharminus}} \\
   6.892 +    \quad\qquad \hyperlink{command.using}{\mbox{\isa{\isacommand{using}}}}~\isa{{\isachardoublequote}b\isactrlsub {\isadigit{1}}\ {\isasymdots}\ b\isactrlsub k\ \ {\isasymlangle}proof{\isasymrangle}{\isachardoublequote}} \\
   6.893 +    \quad \hyperlink{command.qed}{\mbox{\isa{\isacommand{qed}}}} \\
   6.894 +    \quad \hyperlink{command.fix}{\mbox{\isa{\isacommand{fix}}}}~\isa{{\isachardoublequote}x\isactrlsub {\isadigit{1}}\ {\isasymdots}\ x\isactrlsub m{\isachardoublequote}}~\hyperlink{command.assume}{\mbox{\isa{\isacommand{assume}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}\ a{\isacharcolon}\ {\isasymphi}\isactrlsub {\isadigit{1}}\ {\isasymdots}\ {\isasymphi}\isactrlsub n{\isachardoublequote}} \\
   6.895    \end{matharray}
   6.896  
   6.897    Typically, the soundness proof is relatively straight-forward, often
   6.898 -  just by canonical automated tools such as ``\mbox{\isa{\isacommand{by}}}~\isa{simp}'' or ``\mbox{\isa{\isacommand{by}}}~\isa{blast}''.  Accordingly, the
   6.899 +  just by canonical automated tools such as ``\hyperlink{command.by}{\mbox{\isa{\isacommand{by}}}}~\isa{simp}'' or ``\hyperlink{command.by}{\mbox{\isa{\isacommand{by}}}}~\isa{blast}''.  Accordingly, the
   6.900    ``\isa{that}'' reduction above is declared as simplification and
   6.901    introduction rule.
   6.902  
   6.903 -  In a sense, \mbox{\isa{\isacommand{obtain}}} represents at the level of Isar
   6.904 +  In a sense, \hyperlink{command.obtain}{\mbox{\isa{\isacommand{obtain}}}} represents at the level of Isar
   6.905    proofs what would be meta-logical existential quantifiers and
   6.906    conjunctions.  This concept has a broad range of useful
   6.907    applications, ranging from plain elimination (or introduction) of
   6.908    object-level existential and conjunctions, to elimination over
   6.909    results of symbolic evaluation of recursive definitions, for
   6.910 -  example.  Also note that \mbox{\isa{\isacommand{obtain}}} without parameters acts
   6.911 -  much like \mbox{\isa{\isacommand{have}}}, where the result is treated as a
   6.912 +  example.  Also note that \hyperlink{command.obtain}{\mbox{\isa{\isacommand{obtain}}}} without parameters acts
   6.913 +  much like \hyperlink{command.have}{\mbox{\isa{\isacommand{have}}}}, where the result is treated as a
   6.914    genuine assumption.
   6.915  
   6.916    An alternative name to be used instead of ``\isa{that}'' above may
   6.917    be given in parentheses.
   6.918  
   6.919 -  \medskip The improper variant \mbox{\isa{\isacommand{guess}}} is similar to
   6.920 -  \mbox{\isa{\isacommand{obtain}}}, but derives the obtained statement from the
   6.921 +  \medskip The improper variant \hyperlink{command.guess}{\mbox{\isa{\isacommand{guess}}}} is similar to
   6.922 +  \hyperlink{command.obtain}{\mbox{\isa{\isacommand{obtain}}}}, but derives the obtained statement from the
   6.923    course of reasoning!  The proof starts with a fixed goal \isa{thesis}.  The subsequent proof may refine this to anything of the
   6.924    form like \isa{{\isachardoublequote}{\isasymAnd}x\isactrlsub {\isadigit{1}}\ {\isasymdots}\ x\isactrlsub m{\isachardot}\ {\isasymphi}\isactrlsub {\isadigit{1}}\ {\isasymLongrightarrow}\ {\isasymdots}\ {\isasymphi}\isactrlsub n\ {\isasymLongrightarrow}\ thesis{\isachardoublequote}}, but must not introduce new subgoals.  The
   6.925    final goal state is then used as reduction rule for the obtain
   6.926    scheme described above.  Obtained parameters \isa{{\isachardoublequote}x\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ x\isactrlsub m{\isachardoublequote}} are marked as internal by default, which prevents the
   6.927    proof context from being polluted by ad-hoc variables.  The variable
   6.928 -  names and type constraints given as arguments for \mbox{\isa{\isacommand{guess}}}
   6.929 +  names and type constraints given as arguments for \hyperlink{command.guess}{\mbox{\isa{\isacommand{guess}}}}
   6.930    specify a prefix of obtained parameters explicitly in the text.
   6.931  
   6.932 -  It is important to note that the facts introduced by \mbox{\isa{\isacommand{obtain}}} and \mbox{\isa{\isacommand{guess}}} may not be polymorphic: any
   6.933 +  It is important to note that the facts introduced by \hyperlink{command.obtain}{\mbox{\isa{\isacommand{obtain}}}} and \hyperlink{command.guess}{\mbox{\isa{\isacommand{guess}}}} may not be polymorphic: any
   6.934    type-variables occurring here are fixed in the present context!%
   6.935  \end{isamarkuptext}%
   6.936  \isamarkuptrue%
   6.937 @@ -918,27 +921,27 @@
   6.938  %
   6.939  \begin{isamarkuptext}%
   6.940  \begin{matharray}{rcl}
   6.941 -    \indexdef{}{command}{also}\mbox{\isa{\isacommand{also}}} & : & \isartrans{proof(state)}{proof(state)} \\
   6.942 -    \indexdef{}{command}{finally}\mbox{\isa{\isacommand{finally}}} & : & \isartrans{proof(state)}{proof(chain)} \\
   6.943 -    \indexdef{}{command}{moreover}\mbox{\isa{\isacommand{moreover}}} & : & \isartrans{proof(state)}{proof(state)} \\
   6.944 -    \indexdef{}{command}{ultimately}\mbox{\isa{\isacommand{ultimately}}} & : & \isartrans{proof(state)}{proof(chain)} \\
   6.945 -    \indexdef{}{command}{print\_trans\_rules}\mbox{\isa{\isacommand{print{\isacharunderscore}trans{\isacharunderscore}rules}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
   6.946 -    \mbox{\isa{trans}} & : & \isaratt \\
   6.947 -    \mbox{\isa{sym}} & : & \isaratt \\
   6.948 -    \mbox{\isa{symmetric}} & : & \isaratt \\
   6.949 +    \indexdef{}{command}{also}\hypertarget{command.also}{\hyperlink{command.also}{\mbox{\isa{\isacommand{also}}}}} & : & \isartrans{proof(state)}{proof(state)} \\
   6.950 +    \indexdef{}{command}{finally}\hypertarget{command.finally}{\hyperlink{command.finally}{\mbox{\isa{\isacommand{finally}}}}} & : & \isartrans{proof(state)}{proof(chain)} \\
   6.951 +    \indexdef{}{command}{moreover}\hypertarget{command.moreover}{\hyperlink{command.moreover}{\mbox{\isa{\isacommand{moreover}}}}} & : & \isartrans{proof(state)}{proof(state)} \\
   6.952 +    \indexdef{}{command}{ultimately}\hypertarget{command.ultimately}{\hyperlink{command.ultimately}{\mbox{\isa{\isacommand{ultimately}}}}} & : & \isartrans{proof(state)}{proof(chain)} \\
   6.953 +    \indexdef{}{command}{print\_trans\_rules}\hypertarget{command.print_trans_rules}{\hyperlink{command.print_trans_rules}{\mbox{\isa{\isacommand{print{\isacharunderscore}trans{\isacharunderscore}rules}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
   6.954 +    \hyperlink{attribute.trans}{\mbox{\isa{trans}}} & : & \isaratt \\
   6.955 +    \hyperlink{attribute.sym}{\mbox{\isa{sym}}} & : & \isaratt \\
   6.956 +    \hyperlink{attribute.symmetric}{\mbox{\isa{symmetric}}} & : & \isaratt \\
   6.957    \end{matharray}
   6.958  
   6.959    Calculational proof is forward reasoning with implicit application
   6.960    of transitivity rules (such those of \isa{{\isachardoublequote}{\isacharequal}{\isachardoublequote}}, \isa{{\isachardoublequote}{\isasymle}{\isachardoublequote}},
   6.961    \isa{{\isachardoublequote}{\isacharless}{\isachardoublequote}}).  Isabelle/Isar maintains an auxiliary fact register
   6.962 -  \indexref{}{fact}{calculation}\mbox{\isa{calculation}} for accumulating results obtained by
   6.963 -  transitivity composed with the current result.  Command \mbox{\isa{\isacommand{also}}} updates \mbox{\isa{calculation}} involving \mbox{\isa{this}}, while
   6.964 -  \mbox{\isa{\isacommand{finally}}} exhibits the final \mbox{\isa{calculation}} by
   6.965 +  \indexref{}{fact}{calculation}\hyperlink{fact.calculation}{\mbox{\isa{calculation}}} for accumulating results obtained by
   6.966 +  transitivity composed with the current result.  Command \hyperlink{command.also}{\mbox{\isa{\isacommand{also}}}} updates \hyperlink{fact.calculation}{\mbox{\isa{calculation}}} involving \hyperlink{fact.this}{\mbox{\isa{this}}}, while
   6.967 +  \hyperlink{command.finally}{\mbox{\isa{\isacommand{finally}}}} exhibits the final \hyperlink{fact.calculation}{\mbox{\isa{calculation}}} by
   6.968    forward chaining towards the next goal statement.  Both commands
   6.969    require valid current facts, i.e.\ may occur only after commands
   6.970 -  that produce theorems such as \mbox{\isa{\isacommand{assume}}}, \mbox{\isa{\isacommand{note}}}, or some finished proof of \mbox{\isa{\isacommand{have}}}, \mbox{\isa{\isacommand{show}}} etc.  The \mbox{\isa{\isacommand{moreover}}} and \mbox{\isa{\isacommand{ultimately}}}
   6.971 -  commands are similar to \mbox{\isa{\isacommand{also}}} and \mbox{\isa{\isacommand{finally}}},
   6.972 -  but only collect further results in \mbox{\isa{calculation}} without
   6.973 +  that produce theorems such as \hyperlink{command.assume}{\mbox{\isa{\isacommand{assume}}}}, \hyperlink{command.note}{\mbox{\isa{\isacommand{note}}}}, or some finished proof of \hyperlink{command.have}{\mbox{\isa{\isacommand{have}}}}, \hyperlink{command.show}{\mbox{\isa{\isacommand{show}}}} etc.  The \hyperlink{command.moreover}{\mbox{\isa{\isacommand{moreover}}}} and \hyperlink{command.ultimately}{\mbox{\isa{\isacommand{ultimately}}}}
   6.974 +  commands are similar to \hyperlink{command.also}{\mbox{\isa{\isacommand{also}}}} and \hyperlink{command.finally}{\mbox{\isa{\isacommand{finally}}}},
   6.975 +  but only collect further results in \hyperlink{fact.calculation}{\mbox{\isa{calculation}}} without
   6.976    applying any rules yet.
   6.977  
   6.978    Also note that the implicit term abbreviation ``\isa{{\isachardoublequote}{\isasymdots}{\isachardoublequote}}'' has
   6.979 @@ -958,11 +961,11 @@
   6.980    handling of block-structure.}
   6.981  
   6.982    \begin{matharray}{rcl}
   6.983 -    \mbox{\isa{\isacommand{also}}}\isa{{\isachardoublequote}\isactrlsub {\isadigit{0}}{\isachardoublequote}} & \equiv & \mbox{\isa{\isacommand{note}}}~\isa{{\isachardoublequote}calculation\ {\isacharequal}\ this{\isachardoublequote}} \\
   6.984 -    \mbox{\isa{\isacommand{also}}}\isa{{\isachardoublequote}\isactrlsub n\isactrlsub {\isacharplus}\isactrlsub {\isadigit{1}}{\isachardoublequote}} & \equiv & \mbox{\isa{\isacommand{note}}}~\isa{{\isachardoublequote}calculation\ {\isacharequal}\ trans\ {\isacharbrackleft}OF\ calculation\ this{\isacharbrackright}{\isachardoublequote}} \\[0.5ex]
   6.985 -    \mbox{\isa{\isacommand{finally}}} & \equiv & \mbox{\isa{\isacommand{also}}}~\mbox{\isa{\isacommand{from}}}~\isa{calculation} \\[0.5ex]
   6.986 -    \mbox{\isa{\isacommand{moreover}}} & \equiv & \mbox{\isa{\isacommand{note}}}~\isa{{\isachardoublequote}calculation\ {\isacharequal}\ calculation\ this{\isachardoublequote}} \\
   6.987 -    \mbox{\isa{\isacommand{ultimately}}} & \equiv & \mbox{\isa{\isacommand{moreover}}}~\mbox{\isa{\isacommand{from}}}~\isa{calculation} \\
   6.988 +    \hyperlink{command.also}{\mbox{\isa{\isacommand{also}}}}\isa{{\isachardoublequote}\isactrlsub {\isadigit{0}}{\isachardoublequote}} & \equiv & \hyperlink{command.note}{\mbox{\isa{\isacommand{note}}}}~\isa{{\isachardoublequote}calculation\ {\isacharequal}\ this{\isachardoublequote}} \\
   6.989 +    \hyperlink{command.also}{\mbox{\isa{\isacommand{also}}}}\isa{{\isachardoublequote}\isactrlsub n\isactrlsub {\isacharplus}\isactrlsub {\isadigit{1}}{\isachardoublequote}} & \equiv & \hyperlink{command.note}{\mbox{\isa{\isacommand{note}}}}~\isa{{\isachardoublequote}calculation\ {\isacharequal}\ trans\ {\isacharbrackleft}OF\ calculation\ this{\isacharbrackright}{\isachardoublequote}} \\[0.5ex]
   6.990 +    \hyperlink{command.finally}{\mbox{\isa{\isacommand{finally}}}} & \equiv & \hyperlink{command.also}{\mbox{\isa{\isacommand{also}}}}~\hyperlink{command.from}{\mbox{\isa{\isacommand{from}}}}~\isa{calculation} \\[0.5ex]
   6.991 +    \hyperlink{command.moreover}{\mbox{\isa{\isacommand{moreover}}}} & \equiv & \hyperlink{command.note}{\mbox{\isa{\isacommand{note}}}}~\isa{{\isachardoublequote}calculation\ {\isacharequal}\ calculation\ this{\isachardoublequote}} \\
   6.992 +    \hyperlink{command.ultimately}{\mbox{\isa{\isacommand{ultimately}}}} & \equiv & \hyperlink{command.moreover}{\mbox{\isa{\isacommand{moreover}}}}~\hyperlink{command.from}{\mbox{\isa{\isacommand{from}}}}~\isa{calculation} \\
   6.993    \end{matharray}
   6.994  
   6.995    \begin{rail}
   6.996 @@ -974,43 +977,43 @@
   6.997  
   6.998    \begin{descr}
   6.999  
  6.1000 -  \item [\mbox{\isa{\isacommand{also}}}~\isa{{\isachardoublequote}{\isacharparenleft}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isacharparenright}{\isachardoublequote}}]
  6.1001 -  maintains the auxiliary \mbox{\isa{calculation}} register as follows.
  6.1002 -  The first occurrence of \mbox{\isa{\isacommand{also}}} in some calculational
  6.1003 -  thread initializes \mbox{\isa{calculation}} by \mbox{\isa{this}}. Any
  6.1004 -  subsequent \mbox{\isa{\isacommand{also}}} on the same level of block-structure
  6.1005 -  updates \mbox{\isa{calculation}} by some transitivity rule applied to
  6.1006 -  \mbox{\isa{calculation}} and \mbox{\isa{this}} (in that order).  Transitivity
  6.1007 +  \item [\hyperlink{command.also}{\mbox{\isa{\isacommand{also}}}}~\isa{{\isachardoublequote}{\isacharparenleft}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isacharparenright}{\isachardoublequote}}]
  6.1008 +  maintains the auxiliary \hyperlink{fact.calculation}{\mbox{\isa{calculation}}} register as follows.
  6.1009 +  The first occurrence of \hyperlink{command.also}{\mbox{\isa{\isacommand{also}}}} in some calculational
  6.1010 +  thread initializes \hyperlink{fact.calculation}{\mbox{\isa{calculation}}} by \hyperlink{fact.this}{\mbox{\isa{this}}}. Any
  6.1011 +  subsequent \hyperlink{command.also}{\mbox{\isa{\isacommand{also}}}} on the same level of block-structure
  6.1012 +  updates \hyperlink{fact.calculation}{\mbox{\isa{calculation}}} by some transitivity rule applied to
  6.1013 +  \hyperlink{fact.calculation}{\mbox{\isa{calculation}}} and \hyperlink{fact.this}{\mbox{\isa{this}}} (in that order).  Transitivity
  6.1014    rules are picked from the current context, unless alternative rules
  6.1015    are given as explicit arguments.
  6.1016  
  6.1017 -  \item [\mbox{\isa{\isacommand{finally}}}~\isa{{\isachardoublequote}{\isacharparenleft}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isacharparenright}{\isachardoublequote}}]
  6.1018 -  maintaining \mbox{\isa{calculation}} in the same way as \mbox{\isa{\isacommand{also}}}, and concludes the current calculational thread.  The final
  6.1019 +  \item [\hyperlink{command.finally}{\mbox{\isa{\isacommand{finally}}}}~\isa{{\isachardoublequote}{\isacharparenleft}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isacharparenright}{\isachardoublequote}}]
  6.1020 +  maintaining \hyperlink{fact.calculation}{\mbox{\isa{calculation}}} in the same way as \hyperlink{command.also}{\mbox{\isa{\isacommand{also}}}}, and concludes the current calculational thread.  The final
  6.1021    result is exhibited as fact for forward chaining towards the next
  6.1022 -  goal. Basically, \mbox{\isa{\isacommand{finally}}} just abbreviates \mbox{\isa{\isacommand{also}}}~\mbox{\isa{\isacommand{from}}}~\mbox{\isa{calculation}}.  Typical idioms for
  6.1023 -  concluding calculational proofs are ``\mbox{\isa{\isacommand{finally}}}~\mbox{\isa{\isacommand{show}}}~\isa{{\isacharquery}thesis}~\mbox{\isa{\isacommand{{\isachardot}}}}'' and ``\mbox{\isa{\isacommand{finally}}}~\mbox{\isa{\isacommand{have}}}~\isa{{\isasymphi}}~\mbox{\isa{\isacommand{{\isachardot}}}}''.
  6.1024 +  goal. Basically, \hyperlink{command.finally}{\mbox{\isa{\isacommand{finally}}}} just abbreviates \hyperlink{command.also}{\mbox{\isa{\isacommand{also}}}}~\hyperlink{command.from}{\mbox{\isa{\isacommand{from}}}}~\hyperlink{fact.calculation}{\mbox{\isa{calculation}}}.  Typical idioms for
  6.1025 +  concluding calculational proofs are ``\hyperlink{command.finally}{\mbox{\isa{\isacommand{finally}}}}~\hyperlink{command.show}{\mbox{\isa{\isacommand{show}}}}~\isa{{\isacharquery}thesis}~\hyperlink{command.dot}{\mbox{\isa{\isacommand{{\isachardot}}}}}'' and ``\hyperlink{command.finally}{\mbox{\isa{\isacommand{finally}}}}~\hyperlink{command.have}{\mbox{\isa{\isacommand{have}}}}~\isa{{\isasymphi}}~\hyperlink{command.dot}{\mbox{\isa{\isacommand{{\isachardot}}}}}''.
  6.1026  
  6.1027 -  \item [\mbox{\isa{\isacommand{moreover}}} and \mbox{\isa{\isacommand{ultimately}}}] are
  6.1028 -  analogous to \mbox{\isa{\isacommand{also}}} and \mbox{\isa{\isacommand{finally}}}, but collect
  6.1029 +  \item [\hyperlink{command.moreover}{\mbox{\isa{\isacommand{moreover}}}} and \hyperlink{command.ultimately}{\mbox{\isa{\isacommand{ultimately}}}}] are
  6.1030 +  analogous to \hyperlink{command.also}{\mbox{\isa{\isacommand{also}}}} and \hyperlink{command.finally}{\mbox{\isa{\isacommand{finally}}}}, but collect
  6.1031    results only, without applying rules.
  6.1032  
  6.1033 -  \item [\mbox{\isa{\isacommand{print{\isacharunderscore}trans{\isacharunderscore}rules}}}] prints the list of
  6.1034 -  transitivity rules (for calculational commands \mbox{\isa{\isacommand{also}}} and
  6.1035 -  \mbox{\isa{\isacommand{finally}}}) and symmetry rules (for the \mbox{\isa{symmetric}} operation and single step elimination patters) of the
  6.1036 +  \item [\hyperlink{command.print_trans_rules}{\mbox{\isa{\isacommand{print{\isacharunderscore}trans{\isacharunderscore}rules}}}}] prints the list of
  6.1037 +  transitivity rules (for calculational commands \hyperlink{command.also}{\mbox{\isa{\isacommand{also}}}} and
  6.1038 +  \hyperlink{command.finally}{\mbox{\isa{\isacommand{finally}}}}) and symmetry rules (for the \hyperlink{attribute.symmetric}{\mbox{\isa{symmetric}}} operation and single step elimination patters) of the
  6.1039    current context.
  6.1040  
  6.1041 -  \item [\mbox{\isa{trans}}] declares theorems as transitivity rules.
  6.1042 +  \item [\hyperlink{attribute.trans}{\mbox{\isa{trans}}}] declares theorems as transitivity rules.
  6.1043  
  6.1044 -  \item [\mbox{\isa{sym}}] declares symmetry rules, as well as
  6.1045 -  \mbox{\isa{Pure{\isachardot}elim}}\isa{{\isachardoublequote}{\isacharquery}{\isachardoublequote}} rules.
  6.1046 +  \item [\hyperlink{attribute.sym}{\mbox{\isa{sym}}}] declares symmetry rules, as well as
  6.1047 +  \hyperlink{attribute.Pure.elim}{\mbox{\isa{Pure{\isachardot}elim}}}\isa{{\isachardoublequote}{\isacharquery}{\isachardoublequote}} rules.
  6.1048  
  6.1049 -  \item [\mbox{\isa{symmetric}}] resolves a theorem with some rule
  6.1050 -  declared as \mbox{\isa{sym}} in the current context.  For example,
  6.1051 -  ``\mbox{\isa{\isacommand{assume}}}~\isa{{\isachardoublequote}{\isacharbrackleft}symmetric{\isacharbrackright}{\isacharcolon}\ x\ {\isacharequal}\ y{\isachardoublequote}}'' produces a
  6.1052 +  \item [\hyperlink{attribute.symmetric}{\mbox{\isa{symmetric}}}] resolves a theorem with some rule
  6.1053 +  declared as \hyperlink{attribute.sym}{\mbox{\isa{sym}}} in the current context.  For example,
  6.1054 +  ``\hyperlink{command.assume}{\mbox{\isa{\isacommand{assume}}}}~\isa{{\isachardoublequote}{\isacharbrackleft}symmetric{\isacharbrackright}{\isacharcolon}\ x\ {\isacharequal}\ y{\isachardoublequote}}'' produces a
  6.1055    swapped fact derived from that assumption.
  6.1056  
  6.1057    In structured proof texts it is often more appropriate to use an
  6.1058 -  explicit single-step elimination proof, such as ``\mbox{\isa{\isacommand{assume}}}~\isa{{\isachardoublequote}x\ {\isacharequal}\ y{\isachardoublequote}}~\mbox{\isa{\isacommand{then}}}~\mbox{\isa{\isacommand{have}}}~\isa{{\isachardoublequote}y\ {\isacharequal}\ x{\isachardoublequote}}~\mbox{\isa{\isacommand{{\isachardot}{\isachardot}}}}''.
  6.1059 +  explicit single-step elimination proof, such as ``\hyperlink{command.assume}{\mbox{\isa{\isacommand{assume}}}}~\isa{{\isachardoublequote}x\ {\isacharequal}\ y{\isachardoublequote}}~\hyperlink{command.then}{\mbox{\isa{\isacommand{then}}}}~\hyperlink{command.have}{\mbox{\isa{\isacommand{have}}}}~\isa{{\isachardoublequote}y\ {\isacharequal}\ x{\isachardoublequote}}~\hyperlink{command.ddot}{\mbox{\isa{\isacommand{{\isachardot}{\isachardot}}}}}''.
  6.1060  
  6.1061    \end{descr}%
  6.1062  \end{isamarkuptext}%
     7.1 --- a/doc-src/IsarRef/Thy/document/Quick_Reference.tex	Thu May 15 17:37:21 2008 +0200
     7.2 +++ b/doc-src/IsarRef/Thy/document/Quick_Reference.tex	Thu May 15 17:39:20 2008 +0200
     7.3 @@ -34,38 +34,38 @@
     7.4  %
     7.5  \begin{isamarkuptext}%
     7.6  \begin{tabular}{ll}
     7.7 -    \mbox{\isa{\isacommand{fix}}}~\isa{x} & augment context by \isa{{\isachardoublequote}{\isasymAnd}x{\isachardot}\ {\isasymbox}{\isachardoublequote}} \\
     7.8 -    \mbox{\isa{\isacommand{assume}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}} & augment context by \isa{{\isachardoublequote}{\isasymphi}\ {\isasymLongrightarrow}\ {\isasymbox}{\isachardoublequote}} \\
     7.9 -    \mbox{\isa{\isacommand{then}}} & indicate forward chaining of facts \\
    7.10 -    \mbox{\isa{\isacommand{have}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}} & prove local result \\
    7.11 -    \mbox{\isa{\isacommand{show}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}} & prove local result, refining some goal \\
    7.12 -    \mbox{\isa{\isacommand{using}}}~\isa{a} & indicate use of additional facts \\
    7.13 -    \mbox{\isa{\isacommand{unfolding}}}~\isa{a} & unfold definitional equations \\
    7.14 -    \mbox{\isa{\isacommand{proof}}}~\isa{{\isachardoublequote}m\isactrlsub {\isadigit{1}}{\isachardoublequote}}~\dots~\mbox{\isa{\isacommand{qed}}}~\isa{{\isachardoublequote}m\isactrlsub {\isadigit{2}}{\isachardoublequote}} & indicate proof structure and refinements \\
    7.15 -    \mbox{\isa{\isacommand{{\isacharbraceleft}}}}~\isa{{\isachardoublequote}{\isasymdots}{\isachardoublequote}}~\mbox{\isa{\isacommand{{\isacharbraceright}}}} & indicate explicit blocks \\
    7.16 -    \mbox{\isa{\isacommand{next}}} & switch blocks \\
    7.17 -    \mbox{\isa{\isacommand{note}}}~\isa{{\isachardoublequote}a\ {\isacharequal}\ b{\isachardoublequote}} & reconsider facts \\
    7.18 -    \mbox{\isa{\isacommand{let}}}~\isa{{\isachardoublequote}p\ {\isacharequal}\ t{\isachardoublequote}} & abbreviate terms by higher-order matching \\
    7.19 +    \hyperlink{command.fix}{\mbox{\isa{\isacommand{fix}}}}~\isa{x} & augment context by \isa{{\isachardoublequote}{\isasymAnd}x{\isachardot}\ {\isasymbox}{\isachardoublequote}} \\
    7.20 +    \hyperlink{command.assume}{\mbox{\isa{\isacommand{assume}}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}} & augment context by \isa{{\isachardoublequote}{\isasymphi}\ {\isasymLongrightarrow}\ {\isasymbox}{\isachardoublequote}} \\
    7.21 +    \hyperlink{command.then}{\mbox{\isa{\isacommand{then}}}} & indicate forward chaining of facts \\
    7.22 +    \hyperlink{command.have}{\mbox{\isa{\isacommand{have}}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}} & prove local result \\
    7.23 +    \hyperlink{command.show}{\mbox{\isa{\isacommand{show}}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}} & prove local result, refining some goal \\
    7.24 +    \hyperlink{command.using}{\mbox{\isa{\isacommand{using}}}}~\isa{a} & indicate use of additional facts \\
    7.25 +    \hyperlink{command.unfolding}{\mbox{\isa{\isacommand{unfolding}}}}~\isa{a} & unfold definitional equations \\
    7.26 +    \hyperlink{command.proof}{\mbox{\isa{\isacommand{proof}}}}~\isa{{\isachardoublequote}m\isactrlsub {\isadigit{1}}{\isachardoublequote}}~\dots~\hyperlink{command.qed}{\mbox{\isa{\isacommand{qed}}}}~\isa{{\isachardoublequote}m\isactrlsub {\isadigit{2}}{\isachardoublequote}} & indicate proof structure and refinements \\
    7.27 +    \hyperlink{command.braceleft}{\mbox{\isa{\isacommand{{\isacharbraceleft}}}}}~\isa{{\isachardoublequote}{\isasymdots}{\isachardoublequote}}~\hyperlink{command.braceright}{\mbox{\isa{\isacommand{{\isacharbraceright}}}}} & indicate explicit blocks \\
    7.28 +    \hyperlink{command.next}{\mbox{\isa{\isacommand{next}}}} & switch blocks \\
    7.29 +    \hyperlink{command.note}{\mbox{\isa{\isacommand{note}}}}~\isa{{\isachardoublequote}a\ {\isacharequal}\ b{\isachardoublequote}} & reconsider facts \\
    7.30 +    \hyperlink{command.let}{\mbox{\isa{\isacommand{let}}}}~\isa{{\isachardoublequote}p\ {\isacharequal}\ t{\isachardoublequote}} & abbreviate terms by higher-order matching \\
    7.31    \end{tabular}
    7.32  
    7.33    \medskip
    7.34  
    7.35    \begin{tabular}{rcl}
    7.36 -    \isa{{\isachardoublequote}theory{\isasymdash}stmt{\isachardoublequote}} & = & \mbox{\isa{\isacommand{theorem}}}~\isa{{\isachardoublequote}name{\isacharcolon}\ props\ proof\ \ {\isacharbar}{\isachardoublequote}}~~\mbox{\isa{\isacommand{definition}}}~\isa{{\isachardoublequote}{\isasymdots}\ \ {\isacharbar}\ \ {\isasymdots}{\isachardoublequote}} \\[1ex]
    7.37 -    \isa{{\isachardoublequote}proof{\isachardoublequote}} & = & \isa{{\isachardoublequote}prfx\isactrlsup {\isacharasterisk}{\isachardoublequote}}~\mbox{\isa{\isacommand{proof}}}~\isa{{\isachardoublequote}method\ stmt\isactrlsup {\isacharasterisk}{\isachardoublequote}}~\mbox{\isa{\isacommand{qed}}}~\isa{method} \\
    7.38 -    & \isa{{\isachardoublequote}{\isacharbar}{\isachardoublequote}} & \isa{{\isachardoublequote}prfx\isactrlsup {\isacharasterisk}{\isachardoublequote}}~\mbox{\isa{\isacommand{done}}} \\[1ex]
    7.39 -    \isa{prfx} & = & \mbox{\isa{\isacommand{apply}}}~\isa{method} \\
    7.40 -    & \isa{{\isachardoublequote}{\isacharbar}{\isachardoublequote}} & \mbox{\isa{\isacommand{using}}}~\isa{{\isachardoublequote}facts{\isachardoublequote}} \\
    7.41 -    & \isa{{\isachardoublequote}{\isacharbar}{\isachardoublequote}} & \mbox{\isa{\isacommand{unfolding}}}~\isa{{\isachardoublequote}facts{\isachardoublequote}} \\
    7.42 -    \isa{stmt} & = & \mbox{\isa{\isacommand{{\isacharbraceleft}}}}~\isa{{\isachardoublequote}stmt\isactrlsup {\isacharasterisk}{\isachardoublequote}}~\mbox{\isa{\isacommand{{\isacharbraceright}}}} \\
    7.43 -    & \isa{{\isachardoublequote}{\isacharbar}{\isachardoublequote}} & \mbox{\isa{\isacommand{next}}} \\
    7.44 -    & \isa{{\isachardoublequote}{\isacharbar}{\isachardoublequote}} & \mbox{\isa{\isacommand{note}}}~\isa{{\isachardoublequote}name\ {\isacharequal}\ facts{\isachardoublequote}} \\
    7.45 -    & \isa{{\isachardoublequote}{\isacharbar}{\isachardoublequote}} & \mbox{\isa{\isacommand{let}}}~\isa{{\isachardoublequote}term\ {\isacharequal}\ term{\isachardoublequote}} \\
    7.46 -    & \isa{{\isachardoublequote}{\isacharbar}{\isachardoublequote}} & \mbox{\isa{\isacommand{fix}}}~\isa{{\isachardoublequote}var\isactrlsup {\isacharplus}{\isachardoublequote}} \\
    7.47 -    & \isa{{\isachardoublequote}{\isacharbar}{\isachardoublequote}} & \mbox{\isa{\isacommand{assume}}}~\isa{{\isachardoublequote}name{\isacharcolon}\ props{\isachardoublequote}} \\
    7.48 -    & \isa{{\isachardoublequote}{\isacharbar}{\isachardoublequote}} & \mbox{\isa{\isacommand{then}}}\isa{{\isachardoublequote}\isactrlsup {\isacharquery}{\isachardoublequote}}~\isa{goal} \\
    7.49 -    \isa{goal} & = & \mbox{\isa{\isacommand{have}}}~\isa{{\isachardoublequote}name{\isacharcolon}\ props\ proof{\isachardoublequote}} \\
    7.50 -    & \isa{{\isachardoublequote}{\isacharbar}{\isachardoublequote}} & \mbox{\isa{\isacommand{show}}}~\isa{{\isachardoublequote}name{\isacharcolon}\ props\ proof{\isachardoublequote}} \\
    7.51 +    \isa{{\isachardoublequote}theory{\isasymdash}stmt{\isachardoublequote}} & = & \hyperlink{command.theorem}{\mbox{\isa{\isacommand{theorem}}}}~\isa{{\isachardoublequote}name{\isacharcolon}\ props\ proof\ \ {\isacharbar}{\isachardoublequote}}~~\hyperlink{command.definition}{\mbox{\isa{\isacommand{definition}}}}~\isa{{\isachardoublequote}{\isasymdots}\ \ {\isacharbar}\ \ {\isasymdots}{\isachardoublequote}} \\[1ex]
    7.52 +    \isa{{\isachardoublequote}proof{\isachardoublequote}} & = & \isa{{\isachardoublequote}prfx\isactrlsup {\isacharasterisk}{\isachardoublequote}}~\hyperlink{command.proof}{\mbox{\isa{\isacommand{proof}}}}~\isa{{\isachardoublequote}method\ stmt\isactrlsup {\isacharasterisk}{\isachardoublequote}}~\hyperlink{command.qed}{\mbox{\isa{\isacommand{qed}}}}~\isa{method} \\
    7.53 +    & \isa{{\isachardoublequote}{\isacharbar}{\isachardoublequote}} & \isa{{\isachardoublequote}prfx\isactrlsup {\isacharasterisk}{\isachardoublequote}}~\hyperlink{command.done}{\mbox{\isa{\isacommand{done}}}} \\[1ex]
    7.54 +    \isa{prfx} & = & \hyperlink{command.apply}{\mbox{\isa{\isacommand{apply}}}}~\isa{method} \\
    7.55 +    & \isa{{\isachardoublequote}{\isacharbar}{\isachardoublequote}} & \hyperlink{command.using}{\mbox{\isa{\isacommand{using}}}}~\isa{{\isachardoublequote}facts{\isachardoublequote}} \\
    7.56 +    & \isa{{\isachardoublequote}{\isacharbar}{\isachardoublequote}} & \hyperlink{command.unfolding}{\mbox{\isa{\isacommand{unfolding}}}}~\isa{{\isachardoublequote}facts{\isachardoublequote}} \\
    7.57 +    \isa{stmt} & = & \hyperlink{command.braceleft}{\mbox{\isa{\isacommand{{\isacharbraceleft}}}}}~\isa{{\isachardoublequote}stmt\isactrlsup {\isacharasterisk}{\isachardoublequote}}~\hyperlink{command.braceright}{\mbox{\isa{\isacommand{{\isacharbraceright}}}}} \\
    7.58 +    & \isa{{\isachardoublequote}{\isacharbar}{\isachardoublequote}} & \hyperlink{command.next}{\mbox{\isa{\isacommand{next}}}} \\
    7.59 +    & \isa{{\isachardoublequote}{\isacharbar}{\isachardoublequote}} & \hyperlink{command.note}{\mbox{\isa{\isacommand{note}}}}~\isa{{\isachardoublequote}name\ {\isacharequal}\ facts{\isachardoublequote}} \\
    7.60 +    & \isa{{\isachardoublequote}{\isacharbar}{\isachardoublequote}} & \hyperlink{command.let}{\mbox{\isa{\isacommand{let}}}}~\isa{{\isachardoublequote}term\ {\isacharequal}\ term{\isachardoublequote}} \\
    7.61 +    & \isa{{\isachardoublequote}{\isacharbar}{\isachardoublequote}} & \hyperlink{command.fix}{\mbox{\isa{\isacommand{fix}}}}~\isa{{\isachardoublequote}var\isactrlsup {\isacharplus}{\isachardoublequote}} \\
    7.62 +    & \isa{{\isachardoublequote}{\isacharbar}{\isachardoublequote}} & \hyperlink{command.assume}{\mbox{\isa{\isacommand{assume}}}}~\isa{{\isachardoublequote}name{\isacharcolon}\ props{\isachardoublequote}} \\
    7.63 +    & \isa{{\isachardoublequote}{\isacharbar}{\isachardoublequote}} & \hyperlink{command.then}{\mbox{\isa{\isacommand{then}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharquery}{\isachardoublequote}}~\isa{goal} \\
    7.64 +    \isa{goal} & = & \hyperlink{command.have}{\mbox{\isa{\isacommand{have}}}}~\isa{{\isachardoublequote}name{\isacharcolon}\ props\ proof{\isachardoublequote}} \\
    7.65 +    & \isa{{\isachardoublequote}{\isacharbar}{\isachardoublequote}} & \hyperlink{command.show}{\mbox{\isa{\isacommand{show}}}}~\isa{{\isachardoublequote}name{\isacharcolon}\ props\ proof{\isachardoublequote}} \\
    7.66    \end{tabular}%
    7.67  \end{isamarkuptext}%
    7.68  \isamarkuptrue%
    7.69 @@ -76,17 +76,17 @@
    7.70  %
    7.71  \begin{isamarkuptext}%
    7.72  \begin{tabular}{rcl}
    7.73 -    \mbox{\isa{\isacommand{by}}}~\isa{{\isachardoublequote}m\isactrlsub {\isadigit{1}}\ m\isactrlsub {\isadigit{2}}{\isachardoublequote}} & \isa{{\isachardoublequote}{\isasymequiv}{\isachardoublequote}} &
    7.74 -      \mbox{\isa{\isacommand{proof}}}~\isa{{\isachardoublequote}m\isactrlsub {\isadigit{1}}{\isachardoublequote}}~\mbox{\isa{\isacommand{qed}}}~\isa{{\isachardoublequote}m\isactrlsub {\isadigit{2}}{\isachardoublequote}} \\
    7.75 -    \mbox{\isa{\isacommand{{\isachardot}{\isachardot}}}} & \isa{{\isachardoublequote}{\isasymequiv}{\isachardoublequote}} & \mbox{\isa{\isacommand{by}}}~\isa{rule} \\
    7.76 -    \mbox{\isa{\isacommand{{\isachardot}}}} & \isa{{\isachardoublequote}{\isasymequiv}{\isachardoublequote}} & \mbox{\isa{\isacommand{by}}}~\isa{this} \\
    7.77 -    \mbox{\isa{\isacommand{hence}}} & \isa{{\isachardoublequote}{\isasymequiv}{\isachardoublequote}} & \mbox{\isa{\isacommand{then}}}~\mbox{\isa{\isacommand{have}}} \\
    7.78 -    \mbox{\isa{\isacommand{thus}}} & \isa{{\isachardoublequote}{\isasymequiv}{\isachardoublequote}} & \mbox{\isa{\isacommand{then}}}~\mbox{\isa{\isacommand{show}}} \\
    7.79 -    \mbox{\isa{\isacommand{from}}}~\isa{a} & \isa{{\isachardoublequote}{\isasymequiv}{\isachardoublequote}} & \mbox{\isa{\isacommand{note}}}~\isa{a}~\mbox{\isa{\isacommand{then}}} \\
    7.80 -    \mbox{\isa{\isacommand{with}}}~\isa{a} & \isa{{\isachardoublequote}{\isasymequiv}{\isachardoublequote}} & \mbox{\isa{\isacommand{from}}}~\isa{{\isachardoublequote}a\ {\isasymAND}\ this{\isachardoublequote}} \\[1ex]
    7.81 -    \mbox{\isa{\isacommand{from}}}~\isa{this} & \isa{{\isachardoublequote}{\isasymequiv}{\isachardoublequote}} & \mbox{\isa{\isacommand{then}}} \\
    7.82 -    \mbox{\isa{\isacommand{from}}}~\isa{this}~\mbox{\isa{\isacommand{have}}} & \isa{{\isachardoublequote}{\isasymequiv}{\isachardoublequote}} & \mbox{\isa{\isacommand{hence}}} \\
    7.83 -    \mbox{\isa{\isacommand{from}}}~\isa{this}~\mbox{\isa{\isacommand{show}}} & \isa{{\isachardoublequote}{\isasymequiv}{\isachardoublequote}} & \mbox{\isa{\isacommand{thus}}} \\
    7.84 +    \hyperlink{command.by}{\mbox{\isa{\isacommand{by}}}}~\isa{{\isachardoublequote}m\isactrlsub {\isadigit{1}}\ m\isactrlsub {\isadigit{2}}{\isachardoublequote}} & \isa{{\isachardoublequote}{\isasymequiv}{\isachardoublequote}} &
    7.85 +      \hyperlink{command.proof}{\mbox{\isa{\isacommand{proof}}}}~\isa{{\isachardoublequote}m\isactrlsub {\isadigit{1}}{\isachardoublequote}}~\hyperlink{command.qed}{\mbox{\isa{\isacommand{qed}}}}~\isa{{\isachardoublequote}m\isactrlsub {\isadigit{2}}{\isachardoublequote}} \\
    7.86 +    \hyperlink{command.ddot}{\mbox{\isa{\isacommand{{\isachardot}{\isachardot}}}}} & \isa{{\isachardoublequote}{\isasymequiv}{\isachardoublequote}} & \hyperlink{command.by}{\mbox{\isa{\isacommand{by}}}}~\isa{rule} \\
    7.87 +    \hyperlink{command.dot}{\mbox{\isa{\isacommand{{\isachardot}}}}} & \isa{{\isachardoublequote}{\isasymequiv}{\isachardoublequote}} & \hyperlink{command.by}{\mbox{\isa{\isacommand{by}}}}~\isa{this} \\
    7.88 +    \hyperlink{command.hence}{\mbox{\isa{\isacommand{hence}}}} & \isa{{\isachardoublequote}{\isasymequiv}{\isachardoublequote}} & \hyperlink{command.then}{\mbox{\isa{\isacommand{then}}}}~\hyperlink{command.have}{\mbox{\isa{\isacommand{have}}}} \\
    7.89 +    \hyperlink{command.thus}{\mbox{\isa{\isacommand{thus}}}} & \isa{{\isachardoublequote}{\isasymequiv}{\isachardoublequote}} & \hyperlink{command.then}{\mbox{\isa{\isacommand{then}}}}~\hyperlink{command.show}{\mbox{\isa{\isacommand{show}}}} \\
    7.90 +    \hyperlink{command.from}{\mbox{\isa{\isacommand{from}}}}~\isa{a} & \isa{{\isachardoublequote}{\isasymequiv}{\isachardoublequote}} & \hyperlink{command.note}{\mbox{\isa{\isacommand{note}}}}~\isa{a}~\hyperlink{command.then}{\mbox{\isa{\isacommand{then}}}} \\
    7.91 +    \hyperlink{command.with}{\mbox{\isa{\isacommand{with}}}}~\isa{a} & \isa{{\isachardoublequote}{\isasymequiv}{\isachardoublequote}} & \hyperlink{command.from}{\mbox{\isa{\isacommand{from}}}}~\isa{{\isachardoublequote}a\ {\isasymAND}\ this{\isachardoublequote}} \\[1ex]
    7.92 +    \hyperlink{command.from}{\mbox{\isa{\isacommand{from}}}}~\isa{this} & \isa{{\isachardoublequote}{\isasymequiv}{\isachardoublequote}} & \hyperlink{command.then}{\mbox{\isa{\isacommand{then}}}} \\
    7.93 +    \hyperlink{command.from}{\mbox{\isa{\isacommand{from}}}}~\isa{this}~\hyperlink{command.have}{\mbox{\isa{\isacommand{have}}}} & \isa{{\isachardoublequote}{\isasymequiv}{\isachardoublequote}} & \hyperlink{command.hence}{\mbox{\isa{\isacommand{hence}}}} \\
    7.94 +    \hyperlink{command.from}{\mbox{\isa{\isacommand{from}}}}~\isa{this}~\hyperlink{command.show}{\mbox{\isa{\isacommand{show}}}} & \isa{{\isachardoublequote}{\isasymequiv}{\isachardoublequote}} & \hyperlink{command.thus}{\mbox{\isa{\isacommand{thus}}}} \\
    7.95    \end{tabular}%
    7.96  \end{isamarkuptext}%
    7.97  \isamarkuptrue%
    7.98 @@ -97,26 +97,26 @@
    7.99  %
   7.100  \begin{isamarkuptext}%
   7.101  \begin{tabular}{rcl}
   7.102 -    \mbox{\isa{\isacommand{also}}}\isa{{\isachardoublequote}\isactrlsub {\isadigit{0}}{\isachardoublequote}} & \isa{{\isachardoublequote}{\isasymapprox}{\isachardoublequote}} &
   7.103 -      \mbox{\isa{\isacommand{note}}}~\isa{{\isachardoublequote}calculation\ {\isacharequal}\ this{\isachardoublequote}} \\
   7.104 -    \mbox{\isa{\isacommand{also}}}\isa{{\isachardoublequote}\isactrlsub n\isactrlsub {\isacharplus}\isactrlsub {\isadigit{1}}{\isachardoublequote}} & \isa{{\isachardoublequote}{\isasymapprox}{\isachardoublequote}} &
   7.105 -      \mbox{\isa{\isacommand{note}}}~\isa{{\isachardoublequote}calculation\ {\isacharequal}\ trans\ {\isacharbrackleft}OF\ calculation\ this{\isacharbrackright}{\isachardoublequote}} \\
   7.106 -    \mbox{\isa{\isacommand{finally}}} & \isa{{\isachardoublequote}{\isasymapprox}{\isachardoublequote}} &
   7.107 -      \mbox{\isa{\isacommand{also}}}~\mbox{\isa{\isacommand{from}}}~\isa{calculation} \\[0.5ex]
   7.108 -    \mbox{\isa{\isacommand{moreover}}} & \isa{{\isachardoublequote}{\isasymapprox}{\isachardoublequote}} &
   7.109 -      \mbox{\isa{\isacommand{note}}}~\isa{{\isachardoublequote}calculation\ {\isacharequal}\ calculation\ this{\isachardoublequote}} \\
   7.110 -    \mbox{\isa{\isacommand{ultimately}}} & \isa{{\isachardoublequote}{\isasymapprox}{\isachardoublequote}} &
   7.111 -      \mbox{\isa{\isacommand{moreover}}}~\mbox{\isa{\isacommand{from}}}~\isa{calculation} \\[0.5ex]
   7.112 -    \mbox{\isa{\isacommand{presume}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}} & \isa{{\isachardoublequote}{\isasymapprox}{\isachardoublequote}} &
   7.113 -      \mbox{\isa{\isacommand{assume}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}} \\
   7.114 -    \mbox{\isa{\isacommand{def}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ x\ {\isasymequiv}\ t{\isachardoublequote}} & \isa{{\isachardoublequote}{\isasymapprox}{\isachardoublequote}} &
   7.115 -      \mbox{\isa{\isacommand{fix}}}~\isa{x}~\mbox{\isa{\isacommand{assume}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ x\ {\isasymequiv}\ t{\isachardoublequote}} \\
   7.116 -    \mbox{\isa{\isacommand{obtain}}}~\isa{{\isachardoublequote}x\ {\isasymWHERE}\ a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}} & \isa{{\isachardoublequote}{\isasymapprox}{\isachardoublequote}} &
   7.117 -      \isa{{\isachardoublequote}{\isasymdots}{\isachardoublequote}}~\mbox{\isa{\isacommand{fix}}}~\isa{x}~\mbox{\isa{\isacommand{assume}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}} \\
   7.118 -    \mbox{\isa{\isacommand{case}}}~\isa{c} & \isa{{\isachardoublequote}{\isasymapprox}{\isachardoublequote}} &
   7.119 -      \mbox{\isa{\isacommand{fix}}}~\isa{x}~\mbox{\isa{\isacommand{assume}}}~\isa{{\isachardoublequote}c{\isacharcolon}\ {\isasymphi}{\isachardoublequote}} \\
   7.120 -    \mbox{\isa{\isacommand{sorry}}} & \isa{{\isachardoublequote}{\isasymapprox}{\isachardoublequote}} &
   7.121 -      \mbox{\isa{\isacommand{by}}}~\isa{cheating} \\
   7.122 +    \hyperlink{command.also}{\mbox{\isa{\isacommand{also}}}}\isa{{\isachardoublequote}\isactrlsub {\isadigit{0}}{\isachardoublequote}} & \isa{{\isachardoublequote}{\isasymapprox}{\isachardoublequote}} &
   7.123 +      \hyperlink{command.note}{\mbox{\isa{\isacommand{note}}}}~\isa{{\isachardoublequote}calculation\ {\isacharequal}\ this{\isachardoublequote}} \\
   7.124 +    \hyperlink{command.also}{\mbox{\isa{\isacommand{also}}}}\isa{{\isachardoublequote}\isactrlsub n\isactrlsub {\isacharplus}\isactrlsub {\isadigit{1}}{\isachardoublequote}} & \isa{{\isachardoublequote}{\isasymapprox}{\isachardoublequote}} &
   7.125 +      \hyperlink{command.note}{\mbox{\isa{\isacommand{note}}}}~\isa{{\isachardoublequote}calculation\ {\isacharequal}\ trans\ {\isacharbrackleft}OF\ calculation\ this{\isacharbrackright}{\isachardoublequote}} \\
   7.126 +    \hyperlink{command.finally}{\mbox{\isa{\isacommand{finally}}}} & \isa{{\isachardoublequote}{\isasymapprox}{\isachardoublequote}} &
   7.127 +      \hyperlink{command.also}{\mbox{\isa{\isacommand{also}}}}~\hyperlink{command.from}{\mbox{\isa{\isacommand{from}}}}~\isa{calculation} \\[0.5ex]
   7.128 +    \hyperlink{command.moreover}{\mbox{\isa{\isacommand{moreover}}}} & \isa{{\isachardoublequote}{\isasymapprox}{\isachardoublequote}} &
   7.129 +      \hyperlink{command.note}{\mbox{\isa{\isacommand{note}}}}~\isa{{\isachardoublequote}calculation\ {\isacharequal}\ calculation\ this{\isachardoublequote}} \\
   7.130 +    \hyperlink{command.ultimately}{\mbox{\isa{\isacommand{ultimately}}}} & \isa{{\isachardoublequote}{\isasymapprox}{\isachardoublequote}} &
   7.131 +      \hyperlink{command.moreover}{\mbox{\isa{\isacommand{moreover}}}}~\hyperlink{command.from}{\mbox{\isa{\isacommand{from}}}}~\isa{calculation} \\[0.5ex]
   7.132 +    \hyperlink{command.presume}{\mbox{\isa{\isacommand{presume}}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}} & \isa{{\isachardoublequote}{\isasymapprox}{\isachardoublequote}} &
   7.133 +      \hyperlink{command.assume}{\mbox{\isa{\isacommand{assume}}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}} \\
   7.134 +    \hyperlink{command.def}{\mbox{\isa{\isacommand{def}}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ x\ {\isasymequiv}\ t{\isachardoublequote}} & \isa{{\isachardoublequote}{\isasymapprox}{\isachardoublequote}} &
   7.135 +      \hyperlink{command.fix}{\mbox{\isa{\isacommand{fix}}}}~\isa{x}~\hyperlink{command.assume}{\mbox{\isa{\isacommand{assume}}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ x\ {\isasymequiv}\ t{\isachardoublequote}} \\
   7.136 +    \hyperlink{command.obtain}{\mbox{\isa{\isacommand{obtain}}}}~\isa{{\isachardoublequote}x\ {\isasymWHERE}\ a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}} & \isa{{\isachardoublequote}{\isasymapprox}{\isachardoublequote}} &
   7.137 +      \isa{{\isachardoublequote}{\isasymdots}{\isachardoublequote}}~\hyperlink{command.fix}{\mbox{\isa{\isacommand{fix}}}}~\isa{x}~\hyperlink{command.assume}{\mbox{\isa{\isacommand{assume}}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}} \\
   7.138 +    \hyperlink{command.case}{\mbox{\isa{\isacommand{case}}}}~\isa{c} & \isa{{\isachardoublequote}{\isasymapprox}{\isachardoublequote}} &
   7.139 +      \hyperlink{command.fix}{\mbox{\isa{\isacommand{fix}}}}~\isa{x}~\hyperlink{command.assume}{\mbox{\isa{\isacommand{assume}}}}~\isa{{\isachardoublequote}c{\isacharcolon}\ {\isasymphi}{\isachardoublequote}} \\
   7.140 +    \hyperlink{command.sorry}{\mbox{\isa{\isacommand{sorry}}}} & \isa{{\isachardoublequote}{\isasymapprox}{\isachardoublequote}} &
   7.141 +      \hyperlink{command.by}{\mbox{\isa{\isacommand{by}}}}~\isa{cheating} \\
   7.142    \end{tabular}%
   7.143  \end{isamarkuptext}%
   7.144  \isamarkuptrue%
   7.145 @@ -127,11 +127,11 @@
   7.146  %
   7.147  \begin{isamarkuptext}%
   7.148  \begin{tabular}{ll}
   7.149 -    \mbox{\isa{\isacommand{pr}}} & print current state \\
   7.150 -    \mbox{\isa{\isacommand{thm}}}~\isa{a} & print fact \\
   7.151 -    \mbox{\isa{\isacommand{term}}}~\isa{t} & print term \\
   7.152 -    \mbox{\isa{\isacommand{prop}}}~\isa{{\isasymphi}} & print meta-level proposition \\
   7.153 -    \mbox{\isa{\isacommand{typ}}}~\isa{{\isasymtau}} & print meta-level type \\
   7.154 +    \hyperlink{command.pr}{\mbox{\isa{\isacommand{pr}}}} & print current state \\
   7.155 +    \hyperlink{command.thm}{\mbox{\isa{\isacommand{thm}}}}~\isa{a} & print fact \\
   7.156 +    \hyperlink{command.term}{\mbox{\isa{\isacommand{term}}}}~\isa{t} & print term \\
   7.157 +    \hyperlink{command.prop}{\mbox{\isa{\isacommand{prop}}}}~\isa{{\isasymphi}} & print meta-level proposition \\
   7.158 +    \hyperlink{command.typ}{\mbox{\isa{\isacommand{typ}}}}~\isa{{\isasymtau}} & print meta-level type \\
   7.159    \end{tabular}%
   7.160  \end{isamarkuptext}%
   7.161  \isamarkuptrue%
   7.162 @@ -143,27 +143,27 @@
   7.163  \begin{isamarkuptext}%
   7.164  \begin{tabular}{ll}
   7.165      \multicolumn{2}{l}{\textbf{Single steps (forward-chaining facts)}} \\[0.5ex]
   7.166 -    \mbox{\isa{assumption}} & apply some assumption \\
   7.167 -    \mbox{\isa{this}} & apply current facts \\
   7.168 -    \mbox{\isa{rule}}~\isa{a} & apply some rule  \\
   7.169 -    \mbox{\isa{rule}} & apply standard rule (default for \mbox{\isa{\isacommand{proof}}}) \\
   7.170 -    \mbox{\isa{contradiction}} & apply \isa{{\isachardoublequote}{\isasymnot}{\isachardoublequote}} elimination rule (any order) \\
   7.171 -    \mbox{\isa{cases}}~\isa{t} & case analysis (provides cases) \\
   7.172 -    \mbox{\isa{induct}}~\isa{x} & proof by induction (provides cases) \\[2ex]
   7.173 +    \hyperlink{method.assumption}{\mbox{\isa{assumption}}} & apply some assumption \\
   7.174 +    \hyperlink{method.this}{\mbox{\isa{this}}} & apply current facts \\
   7.175 +    \hyperlink{method.rule}{\mbox{\isa{rule}}}~\isa{a} & apply some rule  \\
   7.176 +    \hyperlink{method.rule}{\mbox{\isa{rule}}} & apply standard rule (default for \hyperlink{command.proof}{\mbox{\isa{\isacommand{proof}}}}) \\
   7.177 +    \hyperlink{method.contradiction}{\mbox{\isa{contradiction}}} & apply \isa{{\isachardoublequote}{\isasymnot}{\isachardoublequote}} elimination rule (any order) \\
   7.178 +    \hyperlink{method.cases}{\mbox{\isa{cases}}}~\isa{t} & case analysis (provides cases) \\
   7.179 +    \hyperlink{method.induct}{\mbox{\isa{induct}}}~\isa{x} & proof by induction (provides cases) \\[2ex]
   7.180  
   7.181      \multicolumn{2}{l}{\textbf{Repeated steps (inserting facts)}} \\[0.5ex]
   7.182 -    \mbox{\isa{{\isacharminus}}} & no rules \\
   7.183 -    \mbox{\isa{intro}}~\isa{a} & introduction rules \\
   7.184 -    \mbox{\isa{intro{\isacharunderscore}classes}} & class introduction rules \\
   7.185 -    \mbox{\isa{elim}}~\isa{a} & elimination rules \\
   7.186 -    \mbox{\isa{unfold}}~\isa{a} & definitional rewrite rules \\[2ex]
   7.187 +    \hyperlink{method.-}{\mbox{\isa{{\isacharminus}}}} & no rules \\
   7.188 +    \hyperlink{method.intro}{\mbox{\isa{intro}}}~\isa{a} & introduction rules \\
   7.189 +    \hyperlink{method.intro_classes}{\mbox{\isa{intro{\isacharunderscore}classes}}} & class introduction rules \\
   7.190 +    \hyperlink{method.elim}{\mbox{\isa{elim}}}~\isa{a} & elimination rules \\
   7.191 +    \hyperlink{method.unfold}{\mbox{\isa{unfold}}}~\isa{a} & definitional rewrite rules \\[2ex]
   7.192  
   7.193      \multicolumn{2}{l}{\textbf{Automated proof tools (inserting facts)}} \\[0.5ex]
   7.194 -    \mbox{\isa{iprover}} & intuitionistic proof search \\
   7.195 -    \mbox{\isa{blast}}, \mbox{\isa{fast}} & Classical Reasoner \\
   7.196 -    \mbox{\isa{simp}}, \mbox{\isa{simp{\isacharunderscore}all}} & Simplifier (+ Splitter) \\
   7.197 -    \mbox{\isa{auto}}, \mbox{\isa{force}} & Simplifier + Classical Reasoner \\
   7.198 -    \mbox{\isa{arith}} & Arithmetic procedures \\
   7.199 +    \hyperlink{method.iprover}{\mbox{\isa{iprover}}} & intuitionistic proof search \\
   7.200 +    \hyperlink{method.blast}{\mbox{\isa{blast}}}, \hyperlink{method.fast}{\mbox{\isa{fast}}} & Classical Reasoner \\
   7.201 +    \hyperlink{method.simp}{\mbox{\isa{simp}}}, \hyperlink{method.simp_all}{\mbox{\isa{simp{\isacharunderscore}all}}} & Simplifier (+ Splitter) \\
   7.202 +    \hyperlink{method.auto}{\mbox{\isa{auto}}}, \hyperlink{method.force}{\mbox{\isa{force}}} & Simplifier + Classical Reasoner \\
   7.203 +    \hyperlink{method.arith}{\mbox{\isa{arith}}} & Arithmetic procedures \\
   7.204    \end{tabular}%
   7.205  \end{isamarkuptext}%
   7.206  \isamarkuptrue%
   7.207 @@ -175,21 +175,21 @@
   7.208  \begin{isamarkuptext}%
   7.209  \begin{tabular}{ll}
   7.210      \multicolumn{2}{l}{\textbf{Operations}} \\[0.5ex]
   7.211 -    \mbox{\isa{OF}}~\isa{a} & rule resolved with facts (skipping ``\isa{{\isacharunderscore}}'') \\
   7.212 -    \mbox{\isa{of}}~\isa{t} & rule instantiated with terms (skipping ``\isa{{\isacharunderscore}}'') \\
   7.213 -    \mbox{\isa{where}}~\isa{{\isachardoublequote}x\ {\isacharequal}\ t{\isachardoublequote}} & rule instantiated with terms, by variable name \\
   7.214 -    \mbox{\isa{symmetric}} & resolution with symmetry rule \\
   7.215 -    \mbox{\isa{THEN}}~\isa{b} & resolution with another rule \\
   7.216 -    \mbox{\isa{rule{\isacharunderscore}format}} & result put into standard rule format \\
   7.217 -    \mbox{\isa{elim{\isacharunderscore}format}} & destruct rule turned into elimination rule format \\[1ex]
   7.218 +    \hyperlink{attribute.OF}{\mbox{\isa{OF}}}~\isa{a} & rule resolved with facts (skipping ``\isa{{\isacharunderscore}}'') \\
   7.219 +    \hyperlink{attribute.of}{\mbox{\isa{of}}}~\isa{t} & rule instantiated with terms (skipping ``\isa{{\isacharunderscore}}'') \\
   7.220 +    \hyperlink{attribute.where}{\mbox{\isa{where}}}~\isa{{\isachardoublequote}x\ {\isacharequal}\ t{\isachardoublequote}} & rule instantiated with terms, by variable name \\
   7.221 +    \hyperlink{attribute.symmetric}{\mbox{\isa{symmetric}}} & resolution with symmetry rule \\
   7.222 +    \hyperlink{attribute.THEN}{\mbox{\isa{THEN}}}~\isa{b} & resolution with another rule \\
   7.223 +    \hyperlink{attribute.rule_format}{\mbox{\isa{rule{\isacharunderscore}format}}} & result put into standard rule format \\
   7.224 +    \hyperlink{attribute.elim_format}{\mbox{\isa{elim{\isacharunderscore}format}}} & destruct rule turned into elimination rule format \\[1ex]
   7.225  
   7.226      \multicolumn{2}{l}{\textbf{Declarations}} \\[0.5ex]
   7.227 -    \mbox{\isa{simp}} & Simplifier rule \\
   7.228 -    \mbox{\isa{intro}}, \mbox{\isa{elim}}, \mbox{\isa{dest}} & Pure or Classical Reasoner rule \\
   7.229 -    \mbox{\isa{iff}} & Simplifier + Classical Reasoner rule \\
   7.230 -    \mbox{\isa{split}} & case split rule \\
   7.231 -    \mbox{\isa{trans}} & transitivity rule \\
   7.232 -    \mbox{\isa{sym}} & symmetry rule \\
   7.233 +    \hyperlink{attribute.simp}{\mbox{\isa{simp}}} & Simplifier rule \\
   7.234 +    \hyperlink{attribute.intro}{\mbox{\isa{intro}}}, \hyperlink{attribute.elim}{\mbox{\isa{elim}}}, \hyperlink{attribute.dest}{\mbox{\isa{dest}}} & Pure or Classical Reasoner rule \\
   7.235 +    \hyperlink{attribute.iff}{\mbox{\isa{iff}}} & Simplifier + Classical Reasoner rule \\
   7.236 +    \hyperlink{attribute.split}{\mbox{\isa{split}}} & case split rule \\
   7.237 +    \hyperlink{attribute.trans}{\mbox{\isa{trans}}} & transitivity rule \\
   7.238 +    \hyperlink{attribute.sym}{\mbox{\isa{sym}}} & symmetry rule \\
   7.239    \end{tabular}%
   7.240  \end{isamarkuptext}%
   7.241  \isamarkuptrue%
   7.242 @@ -200,28 +200,28 @@
   7.243  %
   7.244  \begin{isamarkuptext}%
   7.245  \begin{tabular}{l|lllll}
   7.246 -      & \mbox{\isa{rule}} & \mbox{\isa{iprover}} & \mbox{\isa{blast}} & \mbox{\isa{simp}} & \mbox{\isa{auto}} \\
   7.247 -      &                &                   & \mbox{\isa{fast}} & \mbox{\isa{simp{\isacharunderscore}all}} & \mbox{\isa{force}} \\
   7.248 +      & \hyperlink{method.rule}{\mbox{\isa{rule}}} & \hyperlink{method.iprover}{\mbox{\isa{iprover}}} & \hyperlink{method.blast}{\mbox{\isa{blast}}} & \hyperlink{method.simp}{\mbox{\isa{simp}}} & \hyperlink{method.auto}{\mbox{\isa{auto}}} \\
   7.249 +      &                &                   & \hyperlink{method.fast}{\mbox{\isa{fast}}} & \hyperlink{method.simp_all}{\mbox{\isa{simp{\isacharunderscore}all}}} & \hyperlink{method.force}{\mbox{\isa{force}}} \\
   7.250      \hline
   7.251 -    \mbox{\isa{Pure{\isachardot}elim}}\isa{{\isachardoublequote}{\isacharbang}{\isachardoublequote}} \mbox{\isa{Pure{\isachardot}intro}}\isa{{\isachardoublequote}{\isacharbang}{\isachardoublequote}}
   7.252 +    \hyperlink{attribute.Pure.elim}{\mbox{\isa{Pure{\isachardot}elim}}}\isa{{\isachardoublequote}{\isacharbang}{\isachardoublequote}} \hyperlink{attribute.Pure.intro}{\mbox{\isa{Pure{\isachardot}intro}}}\isa{{\isachardoublequote}{\isacharbang}{\isachardoublequote}}
   7.253        & \isa{{\isachardoublequote}{\isasymtimes}{\isachardoublequote}}    & \isa{{\isachardoublequote}{\isasymtimes}{\isachardoublequote}} \\
   7.254 -    \mbox{\isa{Pure{\isachardot}elim}} \mbox{\isa{Pure{\isachardot}intro}}
   7.255 +    \hyperlink{attribute.Pure.elim}{\mbox{\isa{Pure{\isachardot}elim}}} \hyperlink{attribute.Pure.intro}{\mbox{\isa{Pure{\isachardot}intro}}}
   7.256        & \isa{{\isachardoublequote}{\isasymtimes}{\isachardoublequote}}    & \isa{{\isachardoublequote}{\isasymtimes}{\isachardoublequote}} \\
   7.257 -    \mbox{\isa{elim}}\isa{{\isachardoublequote}{\isacharbang}{\isachardoublequote}} \mbox{\isa{intro}}\isa{{\isachardoublequote}{\isacharbang}{\isachardoublequote}}
   7.258 +    \hyperlink{attribute.elim}{\mbox{\isa{elim}}}\isa{{\isachardoublequote}{\isacharbang}{\isachardoublequote}} \hyperlink{attribute.intro}{\mbox{\isa{intro}}}\isa{{\isachardoublequote}{\isacharbang}{\isachardoublequote}}
   7.259        & \isa{{\isachardoublequote}{\isasymtimes}{\isachardoublequote}}    &                    & \isa{{\isachardoublequote}{\isasymtimes}{\isachardoublequote}}          &                     & \isa{{\isachardoublequote}{\isasymtimes}{\isachardoublequote}} \\
   7.260 -    \mbox{\isa{elim}} \mbox{\isa{intro}}
   7.261 +    \hyperlink{attribute.elim}{\mbox{\isa{elim}}} \hyperlink{attribute.intro}{\mbox{\isa{intro}}}
   7.262        & \isa{{\isachardoublequote}{\isasymtimes}{\isachardoublequote}}    &                    & \isa{{\isachardoublequote}{\isasymtimes}{\isachardoublequote}}          &                     & \isa{{\isachardoublequote}{\isasymtimes}{\isachardoublequote}} \\
   7.263 -    \mbox{\isa{iff}}
   7.264 +    \hyperlink{attribute.iff}{\mbox{\isa{iff}}}
   7.265        & \isa{{\isachardoublequote}{\isasymtimes}{\isachardoublequote}}    &                    & \isa{{\isachardoublequote}{\isasymtimes}{\isachardoublequote}}          & \isa{{\isachardoublequote}{\isasymtimes}{\isachardoublequote}}         & \isa{{\isachardoublequote}{\isasymtimes}{\isachardoublequote}} \\
   7.266 -    \mbox{\isa{iff}}\isa{{\isachardoublequote}{\isacharquery}{\isachardoublequote}}
   7.267 +    \hyperlink{attribute.iff}{\mbox{\isa{iff}}}\isa{{\isachardoublequote}{\isacharquery}{\isachardoublequote}}
   7.268        & \isa{{\isachardoublequote}{\isasymtimes}{\isachardoublequote}} \\
   7.269 -    \mbox{\isa{elim}}\isa{{\isachardoublequote}{\isacharquery}{\isachardoublequote}} \mbox{\isa{intro}}\isa{{\isachardoublequote}{\isacharquery}{\isachardoublequote}}
   7.270 +    \hyperlink{attribute.elim}{\mbox{\isa{elim}}}\isa{{\isachardoublequote}{\isacharquery}{\isachardoublequote}} \hyperlink{attribute.intro}{\mbox{\isa{intro}}}\isa{{\isachardoublequote}{\isacharquery}{\isachardoublequote}}
   7.271        & \isa{{\isachardoublequote}{\isasymtimes}{\isachardoublequote}} \\
   7.272 -    \mbox{\isa{simp}}
   7.273 +    \hyperlink{attribute.simp}{\mbox{\isa{simp}}}
   7.274        &                &                    &                      & \isa{{\isachardoublequote}{\isasymtimes}{\isachardoublequote}}         & \isa{{\isachardoublequote}{\isasymtimes}{\isachardoublequote}} \\
   7.275 -    \mbox{\isa{cong}}
   7.276 +    \hyperlink{attribute.cong}{\mbox{\isa{cong}}}
   7.277        &                &                    &                      & \isa{{\isachardoublequote}{\isasymtimes}{\isachardoublequote}}         & \isa{{\isachardoublequote}{\isasymtimes}{\isachardoublequote}} \\
   7.278 -    \mbox{\isa{split}}
   7.279 +    \hyperlink{attribute.split}{\mbox{\isa{split}}}
   7.280        &                &                    &                      & \isa{{\isachardoublequote}{\isasymtimes}{\isachardoublequote}}         & \isa{{\isachardoublequote}{\isasymtimes}{\isachardoublequote}} \\
   7.281    \end{tabular}%
   7.282  \end{isamarkuptext}%
   7.283 @@ -237,12 +237,12 @@
   7.284  %
   7.285  \begin{isamarkuptext}%
   7.286  \begin{tabular}{ll}
   7.287 -    \mbox{\isa{\isacommand{apply}}}~\isa{m} & apply proof method at initial position \\
   7.288 -    \mbox{\isa{\isacommand{apply{\isacharunderscore}end}}}~\isa{m} & apply proof method near terminal position \\
   7.289 -    \mbox{\isa{\isacommand{done}}} & complete proof \\
   7.290 -    \mbox{\isa{\isacommand{defer}}}~\isa{n} & move subgoal to end \\
   7.291 -    \mbox{\isa{\isacommand{prefer}}}~\isa{n} & move subgoal to beginning \\
   7.292 -    \mbox{\isa{\isacommand{back}}} & backtrack last command \\
   7.293 +    \hyperlink{command.apply}{\mbox{\isa{\isacommand{apply}}}}~\isa{m} & apply proof method at initial position \\
   7.294 +    \hyperlink{command.apply_end}{\mbox{\isa{\isacommand{apply{\isacharunderscore}end}}}}~\isa{m} & apply proof method near terminal position \\
   7.295 +    \hyperlink{command.done}{\mbox{\isa{\isacommand{done}}}} & complete proof \\
   7.296 +    \hyperlink{command.defer}{\mbox{\isa{\isacommand{defer}}}}~\isa{n} & move subgoal to end \\
   7.297 +    \hyperlink{command.prefer}{\mbox{\isa{\isacommand{prefer}}}}~\isa{n} & move subgoal to beginning \\
   7.298 +    \hyperlink{command.back}{\mbox{\isa{\isacommand{back}}}} & backtrack last command \\
   7.299    \end{tabular}%
   7.300  \end{isamarkuptext}%
   7.301  \isamarkuptrue%
   7.302 @@ -253,19 +253,19 @@
   7.303  %
   7.304  \begin{isamarkuptext}%
   7.305  \begin{tabular}{ll}
   7.306 -    \mbox{\isa{rule{\isacharunderscore}tac}}~\isa{insts} & resolution (with instantiation) \\
   7.307 -    \mbox{\isa{erule{\isacharunderscore}tac}}~\isa{insts} & elim-resolution (with instantiation) \\
   7.308 -    \mbox{\isa{drule{\isacharunderscore}tac}}~\isa{insts} & destruct-resolution (with instantiation) \\
   7.309 -    \mbox{\isa{frule{\isacharunderscore}tac}}~\isa{insts} & forward-resolution (with instantiation) \\
   7.310 -    \mbox{\isa{cut{\isacharunderscore}tac}}~\isa{insts} & insert facts (with instantiation) \\
   7.311 -    \mbox{\isa{thin{\isacharunderscore}tac}}~\isa{{\isasymphi}} & delete assumptions \\
   7.312 -    \mbox{\isa{subgoal{\isacharunderscore}tac}}~\isa{{\isasymphi}} & new claims \\
   7.313 -    \mbox{\isa{rename{\isacharunderscore}tac}}~\isa{x} & rename innermost goal parameters \\
   7.314 -    \mbox{\isa{rotate{\isacharunderscore}tac}}~\isa{n} & rotate assumptions of goal \\
   7.315 -    \mbox{\isa{tactic}}~\isa{{\isachardoublequote}text{\isachardoublequote}} & arbitrary ML tactic \\
   7.316 -    \mbox{\isa{case{\isacharunderscore}tac}}~\isa{t} & exhaustion (datatypes) \\
   7.317 -    \mbox{\isa{induct{\isacharunderscore}tac}}~\isa{x} & induction (datatypes) \\
   7.318 -    \mbox{\isa{ind{\isacharunderscore}cases}}~\isa{t} & exhaustion + simplification (inductive predicates) \\
   7.319 +    \hyperlink{method.rule_tac}{\mbox{\isa{rule{\isacharunderscore}tac}}}~\isa{insts} & resolution (with instantiation) \\
   7.320 +    \hyperlink{method.erule_tac}{\mbox{\isa{erule{\isacharunderscore}tac}}}~\isa{insts} & elim-resolution (with instantiation) \\
   7.321 +    \hyperlink{method.drule_tac}{\mbox{\isa{drule{\isacharunderscore}tac}}}~\isa{insts} & destruct-resolution (with instantiation) \\
   7.322 +    \hyperlink{method.frule_tac}{\mbox{\isa{frule{\isacharunderscore}tac}}}~\isa{insts} & forward-resolution (with instantiation) \\
   7.323 +    \hyperlink{method.cut_tac}{\mbox{\isa{cut{\isacharunderscore}tac}}}~\isa{insts} & insert facts (with instantiation) \\
   7.324 +    \hyperlink{method.thin_tac}{\mbox{\isa{thin{\isacharunderscore}tac}}}~\isa{{\isasymphi}} & delete assumptions \\
   7.325 +    \hyperlink{method.subgoal_tac}{\mbox{\isa{subgoal{\isacharunderscore}tac}}}~\isa{{\isasymphi}} & new claims \\
   7.326 +    \hyperlink{method.rename_tac}{\mbox{\isa{rename{\isacharunderscore}tac}}}~\isa{x} & rename innermost goal parameters \\
   7.327 +    \hyperlink{method.rotate_tac}{\mbox{\isa{rotate{\isacharunderscore}tac}}}~\isa{n} & rotate assumptions of goal \\
   7.328 +    \hyperlink{method.tactic}{\mbox{\isa{tactic}}}~\isa{{\isachardoublequote}text{\isachardoublequote}} & arbitrary ML tactic \\
   7.329 +    \hyperlink{method.case_tac}{\mbox{\isa{case{\isacharunderscore}tac}}}~\isa{t} & exhaustion (datatypes) \\
   7.330 +    \hyperlink{method.induct_tac}{\mbox{\isa{induct{\isacharunderscore}tac}}}~\isa{x} & induction (datatypes) \\
   7.331 +    \hyperlink{method.ind_cases}{\mbox{\isa{ind{\isacharunderscore}cases}}}~\isa{t} & exhaustion + simplification (inductive predicates) \\
   7.332    \end{tabular}%
   7.333  \end{isamarkuptext}%
   7.334  \isamarkuptrue%
     8.1 --- a/doc-src/IsarRef/Thy/document/Spec.tex	Thu May 15 17:37:21 2008 +0200
     8.2 +++ b/doc-src/IsarRef/Thy/document/Spec.tex	Thu May 15 17:39:20 2008 +0200
     8.3 @@ -30,21 +30,21 @@
     8.4  %
     8.5  \begin{isamarkuptext}%
     8.6  \begin{matharray}{rcl}
     8.7 -    \indexdef{}{command}{header}\mbox{\isa{\isacommand{header}}} & : & \isarkeep{toplevel} \\
     8.8 -    \indexdef{}{command}{theory}\mbox{\isa{\isacommand{theory}}} & : & \isartrans{toplevel}{theory} \\
     8.9 -    \indexdef{}{command}{end}\mbox{\isa{\isacommand{end}}} & : & \isartrans{theory}{toplevel} \\
    8.10 +    \indexdef{}{command}{header}\hypertarget{command.header}{\hyperlink{command.header}{\mbox{\isa{\isacommand{header}}}}} & : & \isarkeep{toplevel} \\
    8.11 +    \indexdef{}{command}{theory}\hypertarget{command.theory}{\hyperlink{command.theory}{\mbox{\isa{\isacommand{theory}}}}} & : & \isartrans{toplevel}{theory} \\
    8.12 +    \indexdef{}{command}{end}\hypertarget{command.end}{\hyperlink{command.end}{\mbox{\isa{\isacommand{end}}}}} & : & \isartrans{theory}{toplevel} \\
    8.13    \end{matharray}
    8.14  
    8.15    Isabelle/Isar theories are defined via theory, which contain both
    8.16    specifications and proofs; occasionally definitional mechanisms also
    8.17    require some explicit proof.
    8.18  
    8.19 -  The first ``real'' command of any theory has to be \mbox{\isa{\isacommand{theory}}}, which starts a new theory based on the merge of existing
    8.20 -  ones.  Just preceding the \mbox{\isa{\isacommand{theory}}} keyword, there may be
    8.21 -  an optional \mbox{\isa{\isacommand{header}}} declaration, which is relevant to
    8.22 +  The first ``real'' command of any theory has to be \hyperlink{command.theory}{\mbox{\isa{\isacommand{theory}}}}, which starts a new theory based on the merge of existing
    8.23 +  ones.  Just preceding the \hyperlink{command.theory}{\mbox{\isa{\isacommand{theory}}}} keyword, there may be
    8.24 +  an optional \hyperlink{command.header}{\mbox{\isa{\isacommand{header}}}} declaration, which is relevant to
    8.25    document preparation only; it acts very much like a special
    8.26    pre-theory markup command (cf.\ \secref{sec:markup-thy} and
    8.27 -  \secref{sec:markup-thy}).  The \mbox{\isa{\isacommand{end}}} command concludes a
    8.28 +  \secref{sec:markup-thy}).  The \hyperlink{command.end}{\mbox{\isa{\isacommand{end}}}} command concludes a
    8.29    theory development; it has to be the very last command of any theory
    8.30    file loaded in batch-mode.
    8.31  
    8.32 @@ -59,13 +59,13 @@
    8.33  
    8.34    \begin{descr}
    8.35  
    8.36 -  \item [\mbox{\isa{\isacommand{header}}}~\isa{{\isachardoublequote}text{\isachardoublequote}}] provides plain text
    8.37 +  \item [\hyperlink{command.header}{\mbox{\isa{\isacommand{header}}}}~\isa{{\isachardoublequote}text{\isachardoublequote}}] provides plain text
    8.38    markup just preceding the formal beginning of a theory.  In actual
    8.39    document preparation the corresponding {\LaTeX} macro \verb|\isamarkupheader| may be redefined to produce chapter or section
    8.40    headings.  See also \secref{sec:markup-thy} and
    8.41    \secref{sec:markup-prf} for further markup commands.
    8.42    
    8.43 -  \item [\mbox{\isa{\isacommand{theory}}}~\isa{{\isachardoublequote}A\ {\isasymIMPORTS}\ B\isactrlsub {\isadigit{1}}\ {\isasymdots}\ B\isactrlsub n\ {\isasymBEGIN}{\isachardoublequote}}] starts a new theory \isa{A} based on the
    8.44 +  \item [\hyperlink{command.theory}{\mbox{\isa{\isacommand{theory}}}}~\isa{{\isachardoublequote}A\ {\isasymIMPORTS}\ B\isactrlsub {\isadigit{1}}\ {\isasymdots}\ B\isactrlsub n\ {\isasymBEGIN}{\isachardoublequote}}] starts a new theory \isa{A} based on the
    8.45    merge of existing theories \isa{{\isachardoublequote}B\isactrlsub {\isadigit{1}}\ {\isasymdots}\ B\isactrlsub n{\isachardoublequote}}.
    8.46    
    8.47    Due to inclusion of several ancestors, the overall theory structure
    8.48 @@ -75,14 +75,14 @@
    8.49    Changed files are automatically reloaded when processing theory
    8.50    headers.
    8.51    
    8.52 -  The optional \indexdef{}{keyword}{uses}\mbox{\isa{\isakeyword{uses}}} specification declares additional
    8.53 +  The optional \indexdef{}{keyword}{uses}\hypertarget{keyword.uses}{\hyperlink{keyword.uses}{\mbox{\isa{\isakeyword{uses}}}}} specification declares additional
    8.54    dependencies on extra files (usually ML sources).  Files will be
    8.55    loaded immediately (as ML), unless the name is put in parentheses,
    8.56    which merely documents the dependency to be resolved later in the
    8.57 -  text (typically via explicit \indexref{}{command}{use}\mbox{\isa{\isacommand{use}}} in the body text,
    8.58 +  text (typically via explicit \indexref{}{command}{use}\hyperlink{command.use}{\mbox{\isa{\isacommand{use}}}} in the body text,
    8.59    see \secref{sec:ML}).
    8.60    
    8.61 -  \item [\mbox{\isa{\isacommand{end}}}] concludes the current theory definition or
    8.62 +  \item [\hyperlink{command.end}{\mbox{\isa{\isacommand{end}}}}] concludes the current theory definition or
    8.63    context switch.
    8.64  
    8.65    \end{descr}%
     9.1 --- a/doc-src/IsarRef/Thy/document/ZF_Specific.tex	Thu May 15 17:37:21 2008 +0200
     9.2 +++ b/doc-src/IsarRef/Thy/document/ZF_Specific.tex	Thu May 15 17:39:20 2008 +0200
     9.3 @@ -36,9 +36,9 @@
     9.4    Simplifier setup.
     9.5  
     9.6    \begin{matharray}{rcl}
     9.7 -    \indexdef{ZF}{command}{print\_tcset}\mbox{\isa{\isacommand{print{\isacharunderscore}tcset}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
     9.8 -    \indexdef{ZF}{method}{typecheck}\mbox{\isa{typecheck}} & : & \isarmeth \\
     9.9 -    \indexdef{ZF}{attribute}{TC}\mbox{\isa{TC}} & : & \isaratt \\
    9.10 +    \indexdef{ZF}{command}{print\_tcset}\hypertarget{command.ZF.print_tcset}{\hyperlink{command.ZF.print_tcset}{\mbox{\isa{\isacommand{print{\isacharunderscore}tcset}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
    9.11 +    \indexdef{ZF}{method}{typecheck}\hypertarget{method.ZF.typecheck}{\hyperlink{method.ZF.typecheck}{\mbox{\isa{typecheck}}}} & : & \isarmeth \\
    9.12 +    \indexdef{ZF}{attribute}{TC}\hypertarget{attribute.ZF.TC}{\hyperlink{attribute.ZF.TC}{\mbox{\isa{TC}}}} & : & \isaratt \\
    9.13    \end{matharray}
    9.14  
    9.15    \begin{rail}
    9.16 @@ -48,13 +48,13 @@
    9.17  
    9.18    \begin{descr}
    9.19    
    9.20 -  \item [\mbox{\isa{\isacommand{print{\isacharunderscore}tcset}}}] prints the collection of
    9.21 +  \item [\hyperlink{command.ZF.print_tcset}{\mbox{\isa{\isacommand{print{\isacharunderscore}tcset}}}}] prints the collection of
    9.22    typechecking rules of the current context.
    9.23    
    9.24 -  \item [\mbox{\isa{typecheck}}] attempts to solve any pending
    9.25 +  \item [\hyperlink{method.ZF.typecheck}{\mbox{\isa{typecheck}}}] attempts to solve any pending
    9.26    type-checking problems in subgoals.
    9.27    
    9.28 -  \item [\mbox{\isa{TC}}] adds or deletes type-checking rules
    9.29 +  \item [\hyperlink{attribute.ZF.TC}{\mbox{\isa{TC}}}] adds or deletes type-checking rules
    9.30    from the context.
    9.31  
    9.32    \end{descr}%
    9.33 @@ -75,10 +75,10 @@
    9.34    Coinductive definitions are available in both cases, too.
    9.35  
    9.36    \begin{matharray}{rcl}
    9.37 -    \indexdef{ZF}{command}{inductive}\mbox{\isa{\isacommand{inductive}}} & : & \isartrans{theory}{theory} \\
    9.38 -    \indexdef{ZF}{command}{coinductive}\mbox{\isa{\isacommand{coinductive}}} & : & \isartrans{theory}{theory} \\
    9.39 -    \indexdef{ZF}{command}{datatype}\mbox{\isa{\isacommand{datatype}}} & : & \isartrans{theory}{theory} \\
    9.40 -    \indexdef{ZF}{command}{codatatype}\mbox{\isa{\isacommand{codatatype}}} & : & \isartrans{theory}{theory} \\
    9.41 +    \indexdef{ZF}{command}{inductive}\hypertarget{command.ZF.inductive}{\hyperlink{command.ZF.inductive}{\mbox{\isa{\isacommand{inductive}}}}} & : & \isartrans{theory}{theory} \\
    9.42 +    \indexdef{ZF}{command}{coinductive}\hypertarget{command.ZF.coinductive}{\hyperlink{command.ZF.coinductive}{\mbox{\isa{\isacommand{coinductive}}}}} & : & \isartrans{theory}{theory} \\
    9.43 +    \indexdef{ZF}{command}{datatype}\hypertarget{command.ZF.datatype}{\hyperlink{command.ZF.datatype}{\mbox{\isa{\isacommand{datatype}}}}} & : & \isartrans{theory}{theory} \\
    9.44 +    \indexdef{ZF}{command}{codatatype}\hypertarget{command.ZF.codatatype}{\hyperlink{command.ZF.codatatype}{\mbox{\isa{\isacommand{codatatype}}}}} & : & \isartrans{theory}{theory} \\
    9.45    \end{matharray}
    9.46  
    9.47    \begin{rail}
    9.48 @@ -129,7 +129,7 @@
    9.49  %
    9.50  \begin{isamarkuptext}%
    9.51  \begin{matharray}{rcl}
    9.52 -    \indexdef{ZF}{command}{primrec}\mbox{\isa{\isacommand{primrec}}} & : & \isartrans{theory}{theory} \\
    9.53 +    \indexdef{ZF}{command}{primrec}\hypertarget{command.ZF.primrec}{\hyperlink{command.ZF.primrec}{\mbox{\isa{\isacommand{primrec}}}}} & : & \isartrans{theory}{theory} \\
    9.54    \end{matharray}
    9.55  
    9.56    \begin{rail}
    9.57 @@ -148,10 +148,10 @@
    9.58    ported to Isar.  These should not be used in proper proof texts.
    9.59  
    9.60    \begin{matharray}{rcl}
    9.61 -    \indexdef{ZF}{method}{case\_tac}\mbox{\isa{case{\isacharunderscore}tac}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
    9.62 -    \indexdef{ZF}{method}{induct\_tac}\mbox{\isa{induct{\isacharunderscore}tac}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
    9.63 -    \indexdef{ZF}{method}{ind\_cases}\mbox{\isa{ind{\isacharunderscore}cases}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
    9.64 -    \indexdef{ZF}{command}{inductive\_cases}\mbox{\isa{\isacommand{inductive{\isacharunderscore}cases}}} & : & \isartrans{theory}{theory} \\
    9.65 +    \indexdef{ZF}{method}{case\_tac}\hypertarget{method.ZF.case_tac}{\hyperlink{method.ZF.case_tac}{\mbox{\isa{case{\isacharunderscore}tac}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
    9.66 +    \indexdef{ZF}{method}{induct\_tac}\hypertarget{method.ZF.induct_tac}{\hyperlink{method.ZF.induct_tac}{\mbox{\isa{induct{\isacharunderscore}tac}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
    9.67 +    \indexdef{ZF}{method}{ind\_cases}\hypertarget{method.ZF.ind_cases}{\hyperlink{method.ZF.ind_cases}{\mbox{\isa{ind{\isacharunderscore}cases}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarmeth \\
    9.68 +    \indexdef{ZF}{command}{inductive\_cases}\hypertarget{command.ZF.inductive_cases}{\hyperlink{command.ZF.inductive_cases}{\mbox{\isa{\isacommand{inductive{\isacharunderscore}cases}}}}} & : & \isartrans{theory}{theory} \\
    9.69    \end{matharray}
    9.70  
    9.71    \begin{rail}
    10.1 --- a/doc-src/IsarRef/Thy/document/intro.tex	Thu May 15 17:37:21 2008 +0200
    10.2 +++ b/doc-src/IsarRef/Thy/document/intro.tex	Thu May 15 17:39:20 2008 +0200
    10.3 @@ -102,7 +102,7 @@
    10.4  end;
    10.5  \end{ttbox}
    10.6  
    10.7 -  Note that any Isabelle/Isar command may be retracted by \mbox{\isa{\isacommand{undo}}}.  See the Isabelle/Isar Quick Reference
    10.8 +  Note that any Isabelle/Isar command may be retracted by \hyperlink{command.undo}{\mbox{\isa{\isacommand{undo}}}}.  See the Isabelle/Isar Quick Reference
    10.9    (\appref{ap:refcard}) for a comprehensive overview of available
   10.10    commands and other language elements.%
   10.11  \end{isamarkuptext}%
   10.12 @@ -235,10 +235,10 @@
   10.13  
   10.14    The Isar proof language is embedded into the new theory format as a
   10.15    proper sub-language.  Proof mode is entered by stating some
   10.16 -  \mbox{\isa{\isacommand{theorem}}} or \mbox{\isa{\isacommand{lemma}}} at the theory level, and
   10.17 -  left again with the final conclusion (e.g.\ via \mbox{\isa{\isacommand{qed}}}).
   10.18 +  \hyperlink{command.theorem}{\mbox{\isa{\isacommand{theorem}}}} or \hyperlink{command.lemma}{\mbox{\isa{\isacommand{lemma}}}} at the theory level, and
   10.19 +  left again with the final conclusion (e.g.\ via \hyperlink{command.qed}{\mbox{\isa{\isacommand{qed}}}}).
   10.20    A few theory specification mechanisms also require some proof, such
   10.21 -  as HOL's \mbox{\isa{\isacommand{typedef}}} which demands non-emptiness of the
   10.22 +  as HOL's \hyperlink{command.typedef}{\mbox{\isa{\isacommand{typedef}}}} which demands non-emptiness of the
   10.23    representing sets.%
   10.24  \end{isamarkuptext}%
   10.25  \isamarkuptrue%
    11.1 --- a/doc-src/IsarRef/Thy/document/pure.tex	Thu May 15 17:37:21 2008 +0200
    11.2 +++ b/doc-src/IsarRef/Thy/document/pure.tex	Thu May 15 17:39:20 2008 +0200
    11.3 @@ -58,12 +58,12 @@
    11.4  %
    11.5  \begin{isamarkuptext}%
    11.6  \begin{matharray}{rcl}
    11.7 -    \indexdef{}{command}{chapter}\mbox{\isa{\isacommand{chapter}}} & : & \isarkeep{local{\dsh}theory} \\
    11.8 -    \indexdef{}{command}{section}\mbox{\isa{\isacommand{section}}} & : & \isarkeep{local{\dsh}theory} \\
    11.9 -    \indexdef{}{command}{subsection}\mbox{\isa{\isacommand{subsection}}} & : & \isarkeep{local{\dsh}theory} \\
   11.10 -    \indexdef{}{command}{subsubsection}\mbox{\isa{\isacommand{subsubsection}}} & : & \isarkeep{local{\dsh}theory} \\
   11.11 -    \indexdef{}{command}{text}\mbox{\isa{\isacommand{text}}} & : & \isarkeep{local{\dsh}theory} \\
   11.12 -    \indexdef{}{command}{text\_raw}\mbox{\isa{\isacommand{text{\isacharunderscore}raw}}} & : & \isarkeep{local{\dsh}theory} \\
   11.13 +    \indexdef{}{command}{chapter}\hypertarget{command.chapter}{\hyperlink{command.chapter}{\mbox{\isa{\isacommand{chapter}}}}} & : & \isarkeep{local{\dsh}theory} \\
   11.14 +    \indexdef{}{command}{section}\hypertarget{command.section}{\hyperlink{command.section}{\mbox{\isa{\isacommand{section}}}}} & : & \isarkeep{local{\dsh}theory} \\
   11.15 +    \indexdef{}{command}{subsection}\hypertarget{command.subsection}{\hyperlink{command.subsection}{\mbox{\isa{\isacommand{subsection}}}}} & : & \isarkeep{local{\dsh}theory} \\
   11.16 +    \indexdef{}{command}{subsubsection}\hypertarget{command.subsubsection}{\hyperlink{command.subsubsection}{\mbox{\isa{\isacommand{subsubsection}}}}} & : & \isarkeep{local{\dsh}theory} \\
   11.17 +    \indexdef{}{command}{text}\hypertarget{command.text}{\hyperlink{command.text}{\mbox{\isa{\isacommand{text}}}}} & : & \isarkeep{local{\dsh}theory} \\
   11.18 +    \indexdef{}{command}{text\_raw}\hypertarget{command.text_raw}{\hyperlink{command.text_raw}{\mbox{\isa{\isacommand{text{\isacharunderscore}raw}}}}} & : & \isarkeep{local{\dsh}theory} \\
   11.19    \end{matharray}
   11.20  
   11.21    Apart from formal comments (see \secref{sec:comments}), markup
   11.22 @@ -80,19 +80,19 @@
   11.23  
   11.24    \begin{descr}
   11.25  
   11.26 -  \item [\mbox{\isa{\isacommand{chapter}}}, \mbox{\isa{\isacommand{section}}}, \mbox{\isa{\isacommand{subsection}}}, and \mbox{\isa{\isacommand{subsubsection}}}] mark chapter and
   11.27 +  \item [\hyperlink{command.chapter}{\mbox{\isa{\isacommand{chapter}}}}, \hyperlink{command.section}{\mbox{\isa{\isacommand{section}}}}, \hyperlink{command.subsection}{\mbox{\isa{\isacommand{subsection}}}}, and \hyperlink{command.subsubsection}{\mbox{\isa{\isacommand{subsubsection}}}}] mark chapter and
   11.28    section headings.
   11.29  
   11.30 -  \item [\mbox{\isa{\isacommand{text}}}] specifies paragraphs of plain text.
   11.31 +  \item [\hyperlink{command.text}{\mbox{\isa{\isacommand{text}}}}] specifies paragraphs of plain text.
   11.32  
   11.33 -  \item [\mbox{\isa{\isacommand{text{\isacharunderscore}raw}}}] inserts {\LaTeX} source into the
   11.34 +  \item [\hyperlink{command.text_raw}{\mbox{\isa{\isacommand{text{\isacharunderscore}raw}}}}] inserts {\LaTeX} source into the
   11.35    output, without additional markup.  Thus the full range of document
   11.36    manipulations becomes available.
   11.37  
   11.38    \end{descr}
   11.39  
   11.40    The \isa{{\isachardoublequote}text{\isachardoublequote}} argument of these markup commands (except for
   11.41 -  \mbox{\isa{\isacommand{text{\isacharunderscore}raw}}}) may contain references to formal entities
   11.42 +  \hyperlink{command.text_raw}{\mbox{\isa{\isacommand{text{\isacharunderscore}raw}}}}) may contain references to formal entities
   11.43    (``antiquotations'', see also \secref{sec:antiq}).  These are
   11.44    interpreted in the present theory context, or the named \isa{{\isachardoublequote}target{\isachardoublequote}}.
   11.45  
   11.46 @@ -100,12 +100,12 @@
   11.47    the name prefixed by \verb|\isamarkup|.  For the sectioning
   11.48    commands this is a plain macro with a single argument, e.g.\
   11.49    \verb|\isamarkupchapter{|\isa{{\isachardoublequote}{\isasymdots}{\isachardoublequote}}\verb|}| for
   11.50 -  \mbox{\isa{\isacommand{chapter}}}.  The \mbox{\isa{\isacommand{text}}} markup results in a
   11.51 -  {\LaTeX} environment \verb|\begin{isamarkuptext}| \isa{{\isachardoublequote}{\isasymdots}{\isachardoublequote}} \verb|\end{isamarkuptext}|, while \mbox{\isa{\isacommand{text{\isacharunderscore}raw}}}
   11.52 +  \hyperlink{command.chapter}{\mbox{\isa{\isacommand{chapter}}}}.  The \hyperlink{command.text}{\mbox{\isa{\isacommand{text}}}} markup results in a
   11.53 +  {\LaTeX} environment \verb|\begin{isamarkuptext}| \isa{{\isachardoublequote}{\isasymdots}{\isachardoublequote}} \verb|\end{isamarkuptext}|, while \hyperlink{command.text_raw}{\mbox{\isa{\isacommand{text{\isacharunderscore}raw}}}}
   11.54    causes the text to be inserted directly into the {\LaTeX} source.
   11.55  
   11.56    \medskip Additional markup commands are available for proofs (see
   11.57 -  \secref{sec:markup-prf}).  Also note that the \indexref{}{command}{header}\mbox{\isa{\isacommand{header}}} declaration (see \secref{sec:begin-thy}) admits to insert
   11.58 +  \secref{sec:markup-prf}).  Also note that the \indexref{}{command}{header}\hyperlink{command.header}{\mbox{\isa{\isacommand{header}}}} declaration (see \secref{sec:begin-thy}) admits to insert
   11.59    section markup just preceding the actual theory definition.%
   11.60  \end{isamarkuptext}%
   11.61  \isamarkuptrue%
   11.62 @@ -116,10 +116,10 @@
   11.63  %
   11.64  \begin{isamarkuptext}%
   11.65  \begin{matharray}{rcll}
   11.66 -    \indexdef{}{command}{classes}\mbox{\isa{\isacommand{classes}}} & : & \isartrans{theory}{theory} \\
   11.67 -    \indexdef{}{command}{classrel}\mbox{\isa{\isacommand{classrel}}} & : & \isartrans{theory}{theory} & (axiomatic!) \\
   11.68 -    \indexdef{}{command}{defaultsort}\mbox{\isa{\isacommand{defaultsort}}} & : & \isartrans{theory}{theory} \\
   11.69 -    \indexdef{}{command}{class\_deps}\mbox{\isa{\isacommand{class{\isacharunderscore}deps}}} & : & \isarkeep{theory~|~proof} \\
   11.70 +    \indexdef{}{command}{classes}\hypertarget{command.classes}{\hyperlink{command.classes}{\mbox{\isa{\isacommand{classes}}}}} & : & \isartrans{theory}{theory} \\
   11.71 +    \indexdef{}{command}{classrel}\hypertarget{command.classrel}{\hyperlink{command.classrel}{\mbox{\isa{\isacommand{classrel}}}}} & : & \isartrans{theory}{theory} & (axiomatic!) \\
   11.72 +    \indexdef{}{command}{defaultsort}\hypertarget{command.defaultsort}{\hyperlink{command.defaultsort}{\mbox{\isa{\isacommand{defaultsort}}}}} & : & \isartrans{theory}{theory} \\
   11.73 +    \indexdef{}{command}{class\_deps}\hypertarget{command.class_deps}{\hyperlink{command.class_deps}{\mbox{\isa{\isacommand{class{\isacharunderscore}deps}}}}} & : & \isarkeep{theory~|~proof} \\
   11.74    \end{matharray}
   11.75  
   11.76    \begin{rail}
   11.77 @@ -133,20 +133,20 @@
   11.78  
   11.79    \begin{descr}
   11.80  
   11.81 -  \item [\mbox{\isa{\isacommand{classes}}}~\isa{{\isachardoublequote}c\ {\isasymsubseteq}\ c\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ c\isactrlsub n{\isachardoublequote}}]
   11.82 +  \item [\hyperlink{command.classes}{\mbox{\isa{\isacommand{classes}}}}~\isa{{\isachardoublequote}c\ {\isasymsubseteq}\ c\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ c\isactrlsub n{\isachardoublequote}}]
   11.83    declares class \isa{c} to be a subclass of existing classes \isa{{\isachardoublequote}c\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ c\isactrlsub n{\isachardoublequote}}.  Cyclic class structures are not permitted.
   11.84  
   11.85 -  \item [\mbox{\isa{\isacommand{classrel}}}~\isa{{\isachardoublequote}c\isactrlsub {\isadigit{1}}\ {\isasymsubseteq}\ c\isactrlsub {\isadigit{2}}{\isachardoublequote}}] states
   11.86 +  \item [\hyperlink{command.classrel}{\mbox{\isa{\isacommand{classrel}}}}~\isa{{\isachardoublequote}c\isactrlsub {\isadigit{1}}\ {\isasymsubseteq}\ c\isactrlsub {\isadigit{2}}{\isachardoublequote}}] states
   11.87    subclass relations between existing classes \isa{{\isachardoublequote}c\isactrlsub {\isadigit{1}}{\isachardoublequote}} and
   11.88 -  \isa{{\isachardoublequote}c\isactrlsub {\isadigit{2}}{\isachardoublequote}}.  This is done axiomatically!  The \indexref{}{command}{instance}\mbox{\isa{\isacommand{instance}}} command (see \secref{sec:axclass}) provides a way to
   11.89 +  \isa{{\isachardoublequote}c\isactrlsub {\isadigit{2}}{\isachardoublequote}}.  This is done axiomatically!  The \indexref{}{command}{instance}\hyperlink{command.instance}{\mbox{\isa{\isacommand{instance}}}} command (see \secref{sec:axclass}) provides a way to
   11.90    introduce proven class relations.
   11.91  
   11.92 -  \item [\mbox{\isa{\isacommand{defaultsort}}}~\isa{s}] makes sort \isa{s} the
   11.93 +  \item [\hyperlink{command.defaultsort}{\mbox{\isa{\isacommand{defaultsort}}}}~\isa{s}] makes sort \isa{s} the
   11.94    new default sort for any type variables given without sort
   11.95    constraints.  Usually, the default sort would be only changed when
   11.96    defining a new object-logic.
   11.97  
   11.98 -  \item [\mbox{\isa{\isacommand{class{\isacharunderscore}deps}}}] visualizes the subclass relation,
   11.99 +  \item [\hyperlink{command.class_deps}{\mbox{\isa{\isacommand{class{\isacharunderscore}deps}}}}] visualizes the subclass relation,
  11.100    using Isabelle's graph browser tool (see also \cite{isabelle-sys}).
  11.101  
  11.102    \end{descr}%
  11.103 @@ -159,10 +159,10 @@
  11.104  %
  11.105  \begin{isamarkuptext}%
  11.106  \begin{matharray}{rcll}
  11.107 -    \indexdef{}{command}{types}\mbox{\isa{\isacommand{types}}} & : & \isartrans{theory}{theory} \\
  11.108 -    \indexdef{}{command}{typedecl}\mbox{\isa{\isacommand{typedecl}}} & : & \isartrans{theory}{theory} \\
  11.109 -    \indexdef{}{command}{nonterminals}\mbox{\isa{\isacommand{nonterminals}}} & : & \isartrans{theory}{theory} \\
  11.110 -    \indexdef{}{command}{arities}\mbox{\isa{\isacommand{arities}}} & : & \isartrans{theory}{theory} & (axiomatic!) \\
  11.111 +    \indexdef{}{command}{types}\hypertarget{command.types}{\hyperlink{command.types}{\mbox{\isa{\isacommand{types}}}}} & : & \isartrans{theory}{theory} \\
  11.112 +    \indexdef{}{command}{typedecl}\hypertarget{command.typedecl}{\hyperlink{command.typedecl}{\mbox{\isa{\isacommand{typedecl}}}}} & : & \isartrans{theory}{theory} \\
  11.113 +    \indexdef{}{command}{nonterminals}\hypertarget{command.nonterminals}{\hyperlink{command.nonterminals}{\mbox{\isa{\isacommand{nonterminals}}}}} & : & \isartrans{theory}{theory} \\
  11.114 +    \indexdef{}{command}{arities}\hypertarget{command.arities}{\hyperlink{command.arities}{\mbox{\isa{\isacommand{arities}}}}} & : & \isartrans{theory}{theory} & (axiomatic!) \\
  11.115    \end{matharray}
  11.116  
  11.117    \begin{rail}
  11.118 @@ -178,24 +178,24 @@
  11.119  
  11.120    \begin{descr}
  11.121  
  11.122 -  \item [\mbox{\isa{\isacommand{types}}}~\isa{{\isachardoublequote}{\isacharparenleft}{\isasymalpha}\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ {\isasymalpha}\isactrlsub n{\isacharparenright}\ t\ {\isacharequal}\ {\isasymtau}{\isachardoublequote}}]
  11.123 +  \item [\hyperlink{command.types}{\mbox{\isa{\isacommand{types}}}}~\isa{{\isachardoublequote}{\isacharparenleft}{\isasymalpha}\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ {\isasymalpha}\isactrlsub n{\isacharparenright}\ t\ {\isacharequal}\ {\isasymtau}{\isachardoublequote}}]
  11.124    introduces \emph{type synonym} \isa{{\isachardoublequote}{\isacharparenleft}{\isasymalpha}\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ {\isasymalpha}\isactrlsub n{\isacharparenright}\ t{\isachardoublequote}}
  11.125    for existing type \isa{{\isachardoublequote}{\isasymtau}{\isachardoublequote}}.  Unlike actual type definitions, as
  11.126    are available in Isabelle/HOL for example, type synonyms are just
  11.127    purely syntactic abbreviations without any logical significance.
  11.128    Internally, type synonyms are fully expanded.
  11.129    
  11.130 -  \item [\mbox{\isa{\isacommand{typedecl}}}~\isa{{\isachardoublequote}{\isacharparenleft}{\isasymalpha}\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ {\isasymalpha}\isactrlsub n{\isacharparenright}\ t{\isachardoublequote}}]
  11.131 +  \item [\hyperlink{command.typedecl}{\mbox{\isa{\isacommand{typedecl}}}}~\isa{{\isachardoublequote}{\isacharparenleft}{\isasymalpha}\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ {\isasymalpha}\isactrlsub n{\isacharparenright}\ t{\isachardoublequote}}]
  11.132    declares a new type constructor \isa{t}, intended as an actual
  11.133    logical type (of the object-logic, if available).
  11.134  
  11.135 -  \item [\mbox{\isa{\isacommand{nonterminals}}}~\isa{c}] declares type
  11.136 +  \item [\hyperlink{command.nonterminals}{\mbox{\isa{\isacommand{nonterminals}}}}~\isa{c}] declares type
  11.137    constructors \isa{c} (without arguments) to act as purely
  11.138    syntactic types, i.e.\ nonterminal symbols of Isabelle's inner
  11.139    syntax of terms or types.
  11.140  
  11.141 -  \item [\mbox{\isa{\isacommand{arities}}}~\isa{{\isachardoublequote}t\ {\isacharcolon}{\isacharcolon}\ {\isacharparenleft}s\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ s\isactrlsub n{\isacharparenright}\ s{\isachardoublequote}}] augments Isabelle's order-sorted signature of types by new type
  11.142 -  constructor arities.  This is done axiomatically!  The \indexref{}{command}{instance}\mbox{\isa{\isacommand{instance}}} command (see \S\ref{sec:axclass}) provides a way to
  11.143 +  \item [\hyperlink{command.arities}{\mbox{\isa{\isacommand{arities}}}}~\isa{{\isachardoublequote}t\ {\isacharcolon}{\isacharcolon}\ {\isacharparenleft}s\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ s\isactrlsub n{\isacharparenright}\ s{\isachardoublequote}}] augments Isabelle's order-sorted signature of types by new type
  11.144 +  constructor arities.  This is done axiomatically!  The \indexref{}{command}{instance}\hyperlink{command.instance}{\mbox{\isa{\isacommand{instance}}}} command (see \S\ref{sec:axclass}) provides a way to
  11.145    introduce proven type arities.
  11.146  
  11.147    \end{descr}%
  11.148 @@ -243,9 +243,9 @@
  11.149    instance of this, general \isa{{\isachardoublequote}d\ {\isacharcolon}{\isacharcolon}\ {\isasymalpha}\ {\isasymtimes}\ {\isasymbeta}{\isachardoublequote}} will be disallowed.
  11.150  
  11.151    \begin{matharray}{rcl}
  11.152 -    \indexdef{}{command}{consts}\mbox{\isa{\isacommand{consts}}} & : & \isartrans{theory}{theory} \\
  11.153 -    \indexdef{}{command}{defs}\mbox{\isa{\isacommand{defs}}} & : & \isartrans{theory}{theory} \\
  11.154 -    \indexdef{}{command}{constdefs}\mbox{\isa{\isacommand{constdefs}}} & : & \isartrans{theory}{theory} \\
  11.155 +    \indexdef{}{command}{consts}\hypertarget{command.consts}{\hyperlink{command.consts}{\mbox{\isa{\isacommand{consts}}}}} & : & \isartrans{theory}{theory} \\
  11.156 +    \indexdef{}{command}{defs}\hypertarget{command.defs}{\hyperlink{command.defs}{\mbox{\isa{\isacommand{defs}}}}} & : & \isartrans{theory}{theory} \\
  11.157 +    \indexdef{}{command}{constdefs}\hypertarget{command.constdefs}{\hyperlink{command.constdefs}{\mbox{\isa{\isacommand{constdefs}}}}} & : & \isartrans{theory}{theory} \\
  11.158    \end{matharray}
  11.159  
  11.160    \begin{rail}
  11.161 @@ -269,12 +269,12 @@
  11.162  
  11.163    \begin{descr}
  11.164  
  11.165 -  \item [\mbox{\isa{\isacommand{consts}}}~\isa{{\isachardoublequote}c\ {\isacharcolon}{\isacharcolon}\ {\isasymsigma}{\isachardoublequote}}] declares constant
  11.166 +  \item [\hyperlink{command.consts}{\mbox{\isa{\isacommand{consts}}}}~\isa{{\isachardoublequote}c\ {\isacharcolon}{\isacharcolon}\ {\isasymsigma}{\isachardoublequote}}] declares constant
  11.167    \isa{c} to have any instance of type scheme \isa{{\isasymsigma}}.  The
  11.168    optional mixfix annotations may attach concrete syntax to the
  11.169    constants declared.
  11.170    
  11.171 -  \item [\mbox{\isa{\isacommand{defs}}}~\isa{{\isachardoublequote}name{\isacharcolon}\ eqn{\isachardoublequote}}] introduces \isa{eqn}
  11.172 +  \item [\hyperlink{command.defs}{\mbox{\isa{\isacommand{defs}}}}~\isa{{\isachardoublequote}name{\isacharcolon}\ eqn{\isachardoublequote}}] introduces \isa{eqn}
  11.173    as a definitional axiom for some existing constant.
  11.174    
  11.175    The \isa{{\isachardoublequote}{\isacharparenleft}unchecked{\isacharparenright}{\isachardoublequote}} option disables global dependency checks
  11.176 @@ -287,7 +287,7 @@
  11.177    message would be issued for any definitional equation with a more
  11.178    special type than that of the corresponding constant declaration.
  11.179    
  11.180 -  \item [\mbox{\isa{\isacommand{constdefs}}}] provides a streamlined combination of
  11.181 +  \item [\hyperlink{command.constdefs}{\mbox{\isa{\isacommand{constdefs}}}}] provides a streamlined combination of
  11.182    constants declarations and definitions: type-inference takes care of
  11.183    the most general typing of the given specification (the optional
  11.184    type constraint may refer to type-inference dummies ``\isa{{\isacharunderscore}}'' as usual).  The resulting type declaration needs to agree with
  11.185 @@ -314,10 +314,10 @@
  11.186  %
  11.187  \begin{isamarkuptext}%
  11.188  \begin{matharray}{rcl}
  11.189 -    \indexdef{}{command}{syntax}\mbox{\isa{\isacommand{syntax}}} & : & \isartrans{theory}{theory} \\
  11.190 -    \indexdef{}{command}{no\_syntax}\mbox{\isa{\isacommand{no{\isacharunderscore}syntax}}} & : & \isartrans{theory}{theory} \\
  11.191 -    \indexdef{}{command}{translations}\mbox{\isa{\isacommand{translations}}} & : & \isartrans{theory}{theory} \\
  11.192 -    \indexdef{}{command}{no\_translations}\mbox{\isa{\isacommand{no{\isacharunderscore}translations}}} & : & \isartrans{theory}{theory} \\
  11.193 +    \indexdef{}{command}{syntax}\hypertarget{command.syntax}{\hyperlink{command.syntax}{\mbox{\isa{\isacommand{syntax}}}}} & : & \isartrans{theory}{theory} \\
  11.194 +    \indexdef{}{command}{no\_syntax}\hypertarget{command.no_syntax}{\hyperlink{command.no_syntax}{\mbox{\isa{\isacommand{no{\isacharunderscore}syntax}}}}} & : & \isartrans{theory}{theory} \\
  11.195 +    \indexdef{}{command}{translations}\hypertarget{command.translations}{\hyperlink{command.translations}{\mbox{\isa{\isacommand{translations}}}}} & : & \isartrans{theory}{theory} \\
  11.196 +    \indexdef{}{command}{no\_translations}\hypertarget{command.no_translations}{\hyperlink{command.no_translations}{\mbox{\isa{\isacommand{no{\isacharunderscore}translations}}}}} & : & \isartrans{theory}{theory} \\
  11.197    \end{matharray}
  11.198  
  11.199    \begin{rail}
  11.200 @@ -334,26 +334,26 @@
  11.201  
  11.202    \begin{descr}
  11.203    
  11.204 -  \item [\mbox{\isa{\isacommand{syntax}}}~\isa{{\isachardoublequote}{\isacharparenleft}mode{\isacharparenright}\ decls{\isachardoublequote}}] is similar to
  11.205 -  \mbox{\isa{\isacommand{consts}}}~\isa{decls}, except that the actual logical
  11.206 +  \item [\hyperlink{command.syntax}{\mbox{\isa{\isacommand{syntax}}}}~\isa{{\isachardoublequote}{\isacharparenleft}mode{\isacharparenright}\ decls{\isachardoublequote}}] is similar to
  11.207 +  \hyperlink{command.consts}{\mbox{\isa{\isacommand{consts}}}}~\isa{decls}, except that the actual logical
  11.208    signature extension is omitted.  Thus the context free grammar of
  11.209    Isabelle's inner syntax may be augmented in arbitrary ways,
  11.210    independently of the logic.  The \isa{mode} argument refers to the
  11.211 -  print mode that the grammar rules belong; unless the \indexref{}{keyword}{output}\mbox{\isa{\isakeyword{output}}} indicator is given, all productions are added both to the
  11.212 +  print mode that the grammar rules belong; unless the \indexref{}{keyword}{output}\hyperlink{keyword.output}{\mbox{\isa{\isakeyword{output}}}} indicator is given, all productions are added both to the
  11.213    input and output grammar.
  11.214    
  11.215 -  \item [\mbox{\isa{\isacommand{no{\isacharunderscore}syntax}}}~\isa{{\isachardoublequote}{\isacharparenleft}mode{\isacharparenright}\ decls{\isachardoublequote}}] removes
  11.216 -  grammar declarations (and translations) resulting from \isa{decls}, which are interpreted in the same manner as for \mbox{\isa{\isacommand{syntax}}} above.
  11.217 +  \item [\hyperlink{command.no_syntax}{\mbox{\isa{\isacommand{no{\isacharunderscore}syntax}}}}~\isa{{\isachardoublequote}{\isacharparenleft}mode{\isacharparenright}\ decls{\isachardoublequote}}] removes
  11.218 +  grammar declarations (and translations) resulting from \isa{decls}, which are interpreted in the same manner as for \hyperlink{command.syntax}{\mbox{\isa{\isacommand{syntax}}}} above.
  11.219    
  11.220 -  \item [\mbox{\isa{\isacommand{translations}}}~\isa{rules}] specifies syntactic
  11.221 +  \item [\hyperlink{command.translations}{\mbox{\isa{\isacommand{translations}}}}~\isa{rules}] specifies syntactic
  11.222    translation rules (i.e.\ macros): parse~/ print rules (\isa{{\isachardoublequote}{\isasymrightleftharpoons}{\isachardoublequote}}),
  11.223    parse rules (\isa{{\isachardoublequote}{\isasymrightharpoonup}{\isachardoublequote}}), or print rules (\isa{{\isachardoublequote}{\isasymleftharpoondown}{\isachardoublequote}}).
  11.224    Translation patterns may be prefixed by the syntactic category to be
  11.225    used for parsing; the default is \isa{logic}.
  11.226    
  11.227 -  \item [\mbox{\isa{\isacommand{no{\isacharunderscore}translations}}}~\isa{rules}] removes syntactic
  11.228 +  \item [\hyperlink{command.no_translations}{\mbox{\isa{\isacommand{no{\isacharunderscore}translations}}}}~\isa{rules}] removes syntactic
  11.229    translation rules, which are interpreted in the same manner as for
  11.230 -  \mbox{\isa{\isacommand{translations}}} above.
  11.231 +  \hyperlink{command.translations}{\mbox{\isa{\isacommand{translations}}}} above.
  11.232  
  11.233    \end{descr}%
  11.234  \end{isamarkuptext}%
  11.235 @@ -365,9 +365,9 @@
  11.236  %
  11.237  \begin{isamarkuptext}%
  11.238  \begin{matharray}{rcll}
  11.239 -    \indexdef{}{command}{axioms}\mbox{\isa{\isacommand{axioms}}} & : & \isartrans{theory}{theory} & (axiomatic!) \\
  11.240 -    \indexdef{}{command}{lemmas}\mbox{\isa{\isacommand{lemmas}}} & : & \isarkeep{local{\dsh}theory} \\
  11.241 -    \indexdef{}{command}{theorems}\mbox{\isa{\isacommand{theorems}}} & : & isarkeep{local{\dsh}theory} \\
  11.242 +    \indexdef{}{command}{axioms}\hypertarget{command.axioms}{\hyperlink{command.axioms}{\mbox{\isa{\isacommand{axioms}}}}} & : & \isartrans{theory}{theory} & (axiomatic!) \\
  11.243 +    \indexdef{}{command}{lemmas}\hypertarget{command.lemmas}{\hyperlink{command.lemmas}{\mbox{\isa{\isacommand{lemmas}}}}} & : & \isarkeep{local{\dsh}theory} \\
  11.244 +    \indexdef{}{command}{theorems}\hypertarget{command.theorems}{\hyperlink{command.theorems}{\mbox{\isa{\isacommand{theorems}}}}} & : & isarkeep{local{\dsh}theory} \\
  11.245    \end{matharray}
  11.246  
  11.247    \begin{rail}
  11.248 @@ -379,7 +379,7 @@
  11.249  
  11.250    \begin{descr}
  11.251    
  11.252 -  \item [\mbox{\isa{\isacommand{axioms}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}}] introduces arbitrary
  11.253 +  \item [\hyperlink{command.axioms}{\mbox{\isa{\isacommand{axioms}}}}~\isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}{\isachardoublequote}}] introduces arbitrary
  11.254    statements as axioms of the meta-logic.  In fact, axioms are
  11.255    ``axiomatic theorems'', and may be referred later just as any other
  11.256    theorem.
  11.257 @@ -388,13 +388,13 @@
  11.258    systems.  Everyday work is typically done the hard way, with proper
  11.259    definitions and proven theorems.
  11.260    
  11.261 -  \item [\mbox{\isa{\isacommand{lemmas}}}~\isa{{\isachardoublequote}a\ {\isacharequal}\ b\isactrlsub {\isadigit{1}}\ {\isasymdots}\ b\isactrlsub n{\isachardoublequote}}]
  11.262 +  \item [\hyperlink{command.lemmas}{\mbox{\isa{\isacommand{lemmas}}}}~\isa{{\isachardoublequote}a\ {\isacharequal}\ b\isactrlsub {\isadigit{1}}\ {\isasymdots}\ b\isactrlsub n{\isachardoublequote}}]
  11.263    retrieves and stores existing facts in the theory context, or the
  11.264    specified target context (see also \secref{sec:target}).  Typical
  11.265    applications would also involve attributes, to declare Simplifier
  11.266    rules, for example.
  11.267    
  11.268 -  \item [\mbox{\isa{\isacommand{theorems}}}] is essentially the same as \mbox{\isa{\isacommand{lemmas}}}, but marks the result as a different kind of facts.
  11.269 +  \item [\hyperlink{command.theorems}{\mbox{\isa{\isacommand{theorems}}}}] is essentially the same as \hyperlink{command.lemmas}{\mbox{\isa{\isacommand{lemmas}}}}, but marks the result as a different kind of facts.
  11.270  
  11.271    \end{descr}%
  11.272  \end{isamarkuptext}%
  11.273 @@ -406,9 +406,9 @@
  11.274  %
  11.275  \begin{isamarkuptext}%
  11.276  \begin{matharray}{rcl}
  11.277 -    \indexdef{}{command}{global}\mbox{\isa{\isacommand{global}}} & : & \isartrans{theory}{theory} \\
  11.278 -    \indexdef{}{command}{local}\mbox{\isa{\isacommand{local}}} & : & \isartrans{theory}{theory} \\
  11.279 -    \indexdef{}{command}{hide}\mbox{\isa{\isacommand{hide}}} & : & \isartrans{theory}{theory} \\
  11.280 +    \indexdef{}{command}{global}\hypertarget{command.global}{\hyperlink{command.global}{\mbox{\isa{\isacommand{global}}}}} & : & \isartrans{theory}{theory} \\
  11.281 +    \indexdef{}{command}{local}\hypertarget{command.local}{\hyperlink{command.local}{\mbox{\isa{\isacommand{local}}}}} & : & \isartrans{theory}{theory} \\
  11.282 +    \indexdef{}{command}{hide}\hypertarget{command.hide}{\hyperlink{command.hide}{\mbox{\isa{\isacommand{hide}}}}} & : & \isartrans{theory}{theory} \\
  11.283    \end{matharray}
  11.284  
  11.285    \begin{rail}
  11.286 @@ -424,17 +424,17 @@
  11.287  
  11.288    \begin{descr}
  11.289  
  11.290 -  \item [\mbox{\isa{\isacommand{global}}} and \mbox{\isa{\isacommand{local}}}] change the
  11.291 +  \item [\hyperlink{command.global}{\mbox{\isa{\isacommand{global}}}} and \hyperlink{command.local}{\mbox{\isa{\isacommand{local}}}}] change the
  11.292    current name declaration mode.  Initially, theories start in
  11.293 -  \mbox{\isa{\isacommand{local}}} mode, causing all names to be automatically
  11.294 -  qualified by the theory name.  Changing this to \mbox{\isa{\isacommand{global}}}
  11.295 +  \hyperlink{command.local}{\mbox{\isa{\isacommand{local}}}} mode, causing all names to be automatically
  11.296 +  qualified by the theory name.  Changing this to \hyperlink{command.global}{\mbox{\isa{\isacommand{global}}}}
  11.297    causes all names to be declared without the theory prefix, until
  11.298 -  \mbox{\isa{\isacommand{local}}} is declared again.
  11.299 +  \hyperlink{command.local}{\mbox{\isa{\isacommand{local}}}} is declared again.
  11.300    
  11.301    Note that global names are prone to get hidden accidently later,
  11.302    when qualified names of the same base name are introduced.
  11.303    
  11.304 -  \item [\mbox{\isa{\isacommand{hide}}}~\isa{{\isachardoublequote}space\ names{\isachardoublequote}}] fully removes
  11.305 +  \item [\hyperlink{command.hide}{\mbox{\isa{\isacommand{hide}}}}~\isa{{\isachardoublequote}space\ names{\isachardoublequote}}] fully removes
  11.306    declarations from a given name space (which may be \isa{{\isachardoublequote}class{\isachardoublequote}},
  11.307    \isa{{\isachardoublequote}type{\isachardoublequote}}, \isa{{\isachardoublequote}const{\isachardoublequote}}, or \isa{{\isachardoublequote}fact{\isachardoublequote}}); with the \isa{{\isachardoublequote}{\isacharparenleft}open{\isacharparenright}{\isachardoublequote}} option, only the base name is hidden.  Global
  11.308    (unqualified) names may never be hidden.
  11.309 @@ -454,12 +454,12 @@
  11.310  %
  11.311  \begin{isamarkuptext}%
  11.312  \begin{matharray}{rcl}
  11.313 -    \indexdef{}{command}{use}\mbox{\isa{\isacommand{use}}} & : & \isarkeep{theory~|~local{\dsh}theory} \\
  11.314 -    \indexdef{}{command}{ML}\mbox{\isa{\isacommand{ML}}} & : & \isarkeep{theory~|~local{\dsh}theory} \\
  11.315 -    \indexdef{}{command}{ML\_val}\mbox{\isa{\isacommand{ML{\isacharunderscore}val}}} & : & \isartrans{\cdot}{\cdot} \\
  11.316 -    \indexdef{}{command}{ML\_command}\mbox{\isa{\isacommand{ML{\isacharunderscore}command}}} & : & \isartrans{\cdot}{\cdot} \\
  11.317 -    \indexdef{}{command}{setup}\mbox{\isa{\isacommand{setup}}} & : & \isartrans{theory}{theory} \\
  11.318 -    \indexdef{}{command}{method\_setup}\mbox{\isa{\isacommand{method{\isacharunderscore}setup}}} & : & \isartrans{theory}{theory} \\
  11.319 +    \indexdef{}{command}{use}\hypertarget{command.use}{\hyperlink{command.use}{\mbox{\isa{\isacommand{use}}}}} & : & \isarkeep{theory~|~local{\dsh}theory} \\
  11.320 +    \indexdef{}{command}{ML}\hypertarget{command.ML}{\hyperlink{command.ML}{\mbox{\isa{\isacommand{ML}}}}} & : & \isarkeep{theory~|~local{\dsh}theory} \\
  11.321 +    \indexdef{}{command}{ML\_val}\hypertarget{command.ML_val}{\hyperlink{command.ML_val}{\mbox{\isa{\isacommand{ML{\isacharunderscore}val}}}}} & : & \isartrans{\cdot}{\cdot} \\
  11.322 +    \indexdef{}{command}{ML\_command}\hypertarget{command.ML_command}{\hyperlink{command.ML_command}{\mbox{\isa{\isacommand{ML{\isacharunderscore}command}}}}} & : & \isartrans{\cdot}{\cdot} \\
  11.323 +    \indexdef{}{command}{setup}\hypertarget{command.setup}{\hyperlink{command.setup}{\mbox{\isa{\isacommand{setup}}}}} & : & \isartrans{theory}{theory} \\
  11.324 +    \indexdef{}{command}{method\_setup}\hypertarget{command.method_setup}{\hyperlink{command.method_setup}{\mbox{\isa{\isacommand{method{\isacharunderscore}setup}}}}} & : & \isartrans{theory}{theory} \\
  11.325    \end{matharray}
  11.326  
  11.327    \begin{rail}
  11.328 @@ -473,26 +473,26 @@
  11.329  
  11.330    \begin{descr}
  11.331  
  11.332 -  \item [\mbox{\isa{\isacommand{use}}}~\isa{{\isachardoublequote}file{\isachardoublequote}}] reads and executes ML
  11.333 +  \item [\hyperlink{command.use}{\mbox{\isa{\isacommand{use}}}}~\isa{{\isachardoublequote}file{\isachardoublequote}}] reads and executes ML
  11.334    commands from \isa{{\isachardoublequote}file{\isachardoublequote}}.  The current theory context is passed
  11.335    down to the ML toplevel and may be modified, using \verb|"Context.>>"| or derived ML commands.  The file name is checked with
  11.336 -  the \indexref{}{keyword}{uses}\mbox{\isa{\isakeyword{uses}}} dependency declaration given in the theory
  11.337 +  the \indexref{}{keyword}{uses}\hyperlink{keyword.uses}{\mbox{\isa{\isakeyword{uses}}}} dependency declaration given in the theory
  11.338    header (see also \secref{sec:begin-thy}).
  11.339    
  11.340 -  \item [\mbox{\isa{\isacommand{ML}}}~\isa{{\isachardoublequote}text{\isachardoublequote}}] is similar to \mbox{\isa{\isacommand{use}}}, but executes ML commands directly from the given \isa{{\isachardoublequote}text{\isachardoublequote}}.
  11.341 +  \item [\hyperlink{command.ML}{\mbox{\isa{\isacommand{ML}}}}~\isa{{\isachardoublequote}text{\isachardoublequote}}] is similar to \hyperlink{command.use}{\mbox{\isa{\isacommand{use}}}}, but executes ML commands directly from the given \isa{{\isachardoublequote}text{\isachardoublequote}}.
  11.342  
  11.343 -  \item [\mbox{\isa{\isacommand{ML{\isacharunderscore}val}}} and \mbox{\isa{\isacommand{ML{\isacharunderscore}command}}}] are
  11.344 -  diagnostic versions of \mbox{\isa{\isacommand{ML}}}, which means that the context
  11.345 -  may not be updated.  \mbox{\isa{\isacommand{ML{\isacharunderscore}val}}} echos the bindings produced
  11.346 -  at the ML toplevel, but \mbox{\isa{\isacommand{ML{\isacharunderscore}command}}} is silent.
  11.347 +  \item [\hyperlink{command.ML_val}{\mbox{\isa{\isacommand{ML{\isacharunderscore}val}}}} and \hyperlink{command.ML_command}{\mbox{\isa{\isacommand{ML{\isacharunderscore}command}}}}] are
  11.348 +  diagnostic versions of \hyperlink{command.ML}{\mbox{\isa{\isacommand{ML}}}}, which means that the context
  11.349 +  may not be updated.  \hyperlink{command.ML_val}{\mbox{\isa{\isacommand{ML{\isacharunderscore}val}}}} echos the bindings produced
  11.350 +  at the ML toplevel, but \hyperlink{command.ML_command}{\mbox{\isa{\isacommand{ML{\isacharunderscore}command}}}} is silent.
  11.351    
  11.352 -  \item [\mbox{\isa{\isacommand{setup}}}~\isa{{\isachardoublequote}text{\isachardoublequote}}] changes the current theory
  11.353 +  \item [\hyperlink{command.setup}{\mbox{\isa{\isacommand{setup}}}}~\isa{{\isachardoublequote}text{\isachardoublequote}}] changes the current theory
  11.354    context by applying \isa{{\isachardoublequote}text{\isachardoublequote}}, which refers to an ML expression
  11.355    of type \verb|"theory -> theory"|.  This enables to initialize
  11.356    any object-logic specific tools and packages written in ML, for
  11.357    example.
  11.358    
  11.359 -  \item [\mbox{\isa{\isacommand{method{\isacharunderscore}setup}}}~\isa{{\isachardoublequote}name\ {\isacharequal}\ text\ description{\isachardoublequote}}]
  11.360 +  \item [\hyperlink{command.method_setup}{\mbox{\isa{\isacommand{method{\isacharunderscore}setup}}}}~\isa{{\isachardoublequote}name\ {\isacharequal}\ text\ description{\isachardoublequote}}]
  11.361    defines a proof method in the current theory.  The given \isa{{\isachardoublequote}text{\isachardoublequote}} has to be an ML expression of type \verb|"Args.src ->|\isasep\isanewline%
  11.362  \verb|  Proof.context -> Proof.method"|.  Parsing concrete method syntax
  11.363    from \verb|Args.src| input can be quite tedious in general.  The
  11.364 @@ -526,12 +526,12 @@
  11.365  %
  11.366  \begin{isamarkuptext}%
  11.367  \begin{matharray}{rcl}
  11.368 -    \indexdef{}{command}{parse\_ast\_translation}\mbox{\isa{\isacommand{parse{\isacharunderscore}ast{\isacharunderscore}translation}}} & : & \isartrans{theory}{theory} \\
  11.369 -    \indexdef{}{command}{parse\_translation}\mbox{\isa{\isacommand{parse{\isacharunderscore}translation}}} & : & \isartrans{theory}{theory} \\
  11.370 -    \indexdef{}{command}{print\_translation}\mbox{\isa{\isacommand{print{\isacharunderscore}translation}}} & : & \isartrans{theory}{theory} \\
  11.371 -    \indexdef{}{command}{typed\_print\_translation}\mbox{\isa{\isacommand{typed{\isacharunderscore}print{\isacharunderscore}translation}}} & : & \isartrans{theory}{theory} \\
  11.372 -    \indexdef{}{command}{print\_ast\_translation}\mbox{\isa{\isacommand{print{\isacharunderscore}ast{\isacharunderscore}translation}}} & : & \isartrans{theory}{theory} \\
  11.373 -    \indexdef{}{command}{token\_translation}\mbox{\isa{\isacommand{token{\isacharunderscore}translation}}} & : & \isartrans{theory}{theory} \\
  11.374 +    \indexdef{}{command}{parse\_ast\_translation}\hypertarget{command.parse_ast_translation}{\hyperlink{command.parse_ast_translation}{\mbox{\isa{\isacommand{parse{\isacharunderscore}ast{\isacharunderscore}translation}}}}} & : & \isartrans{theory}{theory} \\
  11.375 +    \indexdef{}{command}{parse\_translation}\hypertarget{command.parse_translation}{\hyperlink{command.parse_translation}{\mbox{\isa{\isacommand{parse{\isacharunderscore}translation}}}}} & : & \isartrans{theory}{theory} \\
  11.376 +    \indexdef{}{command}{print\_translation}\hypertarget{command.print_translation}{\hyperlink{command.print_translation}{\mbox{\isa{\isacommand{print{\isacharunderscore}translation}}}}} & : & \isartrans{theory}{theory} \\
  11.377 +    \indexdef{}{command}{typed\_print\_translation}\hypertarget{command.typed_print_translation}{\hyperlink{command.typed_print_translation}{\mbox{\isa{\isacommand{typed{\isacharunderscore}print{\isacharunderscore}translation}}}}} & : & \isartrans{theory}{theory} \\
  11.378 +    \indexdef{}{command}{print\_ast\_translation}\hypertarget{command.print_ast_translation}{\hyperlink{command.print_ast_translation}{\mbox{\isa{\isacommand{print{\isacharunderscore}ast{\isacharunderscore}translation}}}}} & : & \isartrans{theory}{theory} \\
  11.379 +    \indexdef{}{command}{token\_translation}\hypertarget{command.token_translation}{\hyperlink{command.token_translation}{\mbox{\isa{\isacommand{token{\isacharunderscore}translation}}}}} & : & \isartrans{theory}{theory} \\
  11.380    \end{matharray}
  11.381  
  11.382    \begin{rail}
  11.383 @@ -591,7 +591,7 @@
  11.384  %
  11.385  \begin{isamarkuptext}%
  11.386  \begin{matharray}{rcl}
  11.387 -    \indexdef{}{command}{oracle}\mbox{\isa{\isacommand{oracle}}} & : & \isartrans{theory}{theory} \\
  11.388 +    \indexdef{}{command}{oracle}\hypertarget{command.oracle}{\hyperlink{command.oracle}{\mbox{\isa{\isacommand{oracle}}}}} & : & \isartrans{theory}{theory} \\
  11.389    \end{matharray}
  11.390  
  11.391    The oracle interface promotes a given ML function \verb|theory -> T -> term| to \verb|theory -> T -> thm|, for some
  11.392 @@ -609,7 +609,7 @@
  11.393  
  11.394    \begin{descr}
  11.395  
  11.396 -  \item [\mbox{\isa{\isacommand{oracle}}}~\isa{{\isachardoublequote}name\ {\isacharparenleft}type{\isacharparenright}\ {\isacharequal}\ text{\isachardoublequote}}] turns the
  11.397 +  \item [\hyperlink{command.oracle}{\mbox{\isa{\isacommand{oracle}}}}~\isa{{\isachardoublequote}name\ {\isacharparenleft}type{\isacharparenright}\ {\isacharequal}\ text{\isachardoublequote}}] turns the
  11.398    given ML expression \isa{{\isachardoublequote}text{\isachardoublequote}} of type
  11.399    \verb|theory ->|~\isa{{\isachardoublequote}type{\isachardoublequote}}~\verb|-> term| into an
  11.400    ML function of type
  11.401 @@ -630,11 +630,11 @@
  11.402  %
  11.403  \begin{isamarkuptext}%
  11.404  \begin{matharray}{rcl}
  11.405 -    \indexdef{}{command}{sect}\mbox{\isa{\isacommand{sect}}} & : & \isartrans{proof}{proof} \\
  11.406 -    \indexdef{}{command}{subsect}\mbox{\isa{\isacommand{subsect}}} & : & \isartrans{proof}{proof} \\
  11.407 -    \indexdef{}{command}{subsubsect}\mbox{\isa{\isacommand{subsubsect}}} & : & \isartrans{proof}{proof} \\
  11.408 -    \indexdef{}{command}{txt}\mbox{\isa{\isacommand{txt}}} & : & \isartrans{proof}{proof} \\
  11.409 -    \indexdef{}{command}{txt\_raw}\mbox{\isa{\isacommand{txt{\isacharunderscore}raw}}} & : & \isartrans{proof}{proof} \\
  11.410 +    \indexdef{}{command}{sect}\hypertarget{command.sect}{\hyperlink{command.sect}{\mbox{\isa{\isacommand{sect}}}}} & : & \isartrans{proof}{proof} \\
  11.411 +    \indexdef{}{command}{subsect}\hypertarget{command.subsect}{\hyperlink{command.subsect}{\mbox{\isa{\isacommand{subsect}}}}} & : & \isartrans{proof}{proof} \\
  11.412 +    \indexdef{}{command}{subsubsect}\hypertarget{command.subsubsect}{\hyperlink{command.subsubsect}{\mbox{\isa{\isacommand{subsubsect}}}}} & : & \isartrans{proof}{proof} \\
  11.413 +    \indexdef{}{command}{txt}\hypertarget{command.txt}{\hyperlink{command.txt}{\mbox{\isa{\isacommand{txt}}}}} & : & \isartrans{proof}{proof} \\
  11.414 +    \indexdef{}{command}{txt\_raw}\hypertarget{command.txt_raw}{\hyperlink{command.txt_raw}{\mbox{\isa{\isacommand{txt{\isacharunderscore}raw}}}}} & : & \isartrans{proof}{proof} \\
  11.415    \end{matharray}
  11.416  
  11.417    These markup commands for proof mode closely correspond to the ones
  11.418 @@ -657,17 +657,17 @@
  11.419  %
  11.420  \begin{isamarkuptext}%
  11.421  \begin{matharray}{rcl}
  11.422 -    \indexdef{}{command}{pr}\mbox{\isa{\isacommand{pr}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{\cdot} \\
  11.423 -    \indexdef{}{command}{thm}\mbox{\isa{\isacommand{thm}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
  11.424 -    \indexdef{}{command}{term}\mbox{\isa{\isacommand{term}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
  11.425 -    \indexdef{}{command}{prop}\mbox{\isa{\isacommand{prop}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
  11.426 -    \indexdef{}{command}{typ}\mbox{\isa{\isacommand{typ}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
  11.427 -    \indexdef{}{command}{prf}\mbox{\isa{\isacommand{prf}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
  11.428 -    \indexdef{}{command}{full\_prf}\mbox{\isa{\isacommand{full{\isacharunderscore}prf}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
  11.429 +    \indexdef{}{command}{pr}\hypertarget{command.pr}{\hyperlink{command.pr}{\mbox{\isa{\isacommand{pr}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{\cdot} \\
  11.430 +    \indexdef{}{command}{thm}\hypertarget{command.thm}{\hyperlink{command.thm}{\mbox{\isa{\isacommand{thm}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
  11.431 +    \indexdef{}{command}{term}\hypertarget{command.term}{\hyperlink{command.term}{\mbox{\isa{\isacommand{term}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
  11.432 +    \indexdef{}{command}{prop}\hypertarget{command.prop}{\hyperlink{command.prop}{\mbox{\isa{\isacommand{prop}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
  11.433 +    \indexdef{}{command}{typ}\hypertarget{command.typ}{\hyperlink{command.typ}{\mbox{\isa{\isacommand{typ}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
  11.434 +    \indexdef{}{command}{prf}\hypertarget{command.prf}{\hyperlink{command.prf}{\mbox{\isa{\isacommand{prf}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
  11.435 +    \indexdef{}{command}{full\_prf}\hypertarget{command.full_prf}{\hyperlink{command.full_prf}{\mbox{\isa{\isacommand{full{\isacharunderscore}prf}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
  11.436    \end{matharray}
  11.437  
  11.438    These diagnostic commands assist interactive development.  Note that
  11.439 -  \mbox{\isa{\isacommand{undo}}} does not apply here, the theory or proof
  11.440 +  \hyperlink{command.undo}{\mbox{\isa{\isacommand{undo}}}} does not apply here, the theory or proof
  11.441    configuration is not changed.
  11.442  
  11.443    \begin{rail}
  11.444 @@ -692,34 +692,34 @@
  11.445  
  11.446    \begin{descr}
  11.447  
  11.448 -  \item [\mbox{\isa{\isacommand{pr}}}~\isa{{\isachardoublequote}goals{\isacharcomma}\ prems{\isachardoublequote}}] prints the current
  11.449 +  \item [\hyperlink{command.pr}{\mbox{\isa{\isacommand{pr}}}}~\isa{{\isachardoublequote}goals{\isacharcomma}\ prems{\isachardoublequote}}] prints the current
  11.450    proof state (if present), including the proof context, current facts
  11.451    and goals.  The optional limit arguments affect the number of goals
  11.452    and premises to be displayed, which is initially 10 for both.
  11.453    Omitting limit values leaves the current setting unchanged.
  11.454  
  11.455 -  \item [\mbox{\isa{\isacommand{thm}}}~\isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isachardoublequote}}] retrieves
  11.456 +  \item [\hyperlink{command.thm}{\mbox{\isa{\isacommand{thm}}}}~\isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isachardoublequote}}] retrieves
  11.457    theorems from the current theory or proof context.  Note that any
  11.458    attributes included in the theorem specifications are applied to a
  11.459    temporary context derived from the current theory or proof; the
  11.460    result is discarded, i.e.\ attributes involved in \isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ a\isactrlsub n{\isachardoublequote}} do not have any permanent effect.
  11.461  
  11.462 -  \item [\mbox{\isa{\isacommand{term}}}~\isa{t} and \mbox{\isa{\isacommand{prop}}}~\isa{{\isasymphi}}]
  11.463 +  \item [\hyperlink{command.term}{\mbox{\isa{\isacommand{term}}}}~\isa{t} and \hyperlink{command.prop}{\mbox{\isa{\isacommand{prop}}}}~\isa{{\isasymphi}}]
  11.464    read, type-check and print terms or propositions according to the
  11.465    current theory or proof context; the inferred type of \isa{t} is
  11.466    output as well.  Note that these commands are also useful in
  11.467    inspecting the current environment of term abbreviations.
  11.468  
  11.469 -  \item [\mbox{\isa{\isacommand{typ}}}~\isa{{\isasymtau}}] reads and prints types of the
  11.470 +  \item [\hyperlink{command.typ}{\mbox{\isa{\isacommand{typ}}}}~\isa{{\isasymtau}}] reads and prints types of the
  11.471    meta-logic according to the current theory or proof context.
  11.472  
  11.473 -  \item [\mbox{\isa{\isacommand{prf}}}] displays the (compact) proof term of the
  11.474 +  \item [\hyperlink{command.prf}{\mbox{\isa{\isacommand{prf}}}}] displays the (compact) proof term of the
  11.475    current proof state (if present), or of the given theorems. Note
  11.476    that this requires proof terms to be switched on for the current
  11.477    object logic (see the ``Proof terms'' section of the Isabelle
  11.478    reference manual for information on how to do this).
  11.479  
  11.480 -  \item [\mbox{\isa{\isacommand{full{\isacharunderscore}prf}}}] is like \mbox{\isa{\isacommand{prf}}}, but displays
  11.481 +  \item [\hyperlink{command.full_prf}{\mbox{\isa{\isacommand{full{\isacharunderscore}prf}}}}] is like \hyperlink{command.prf}{\mbox{\isa{\isacommand{prf}}}}, but displays
  11.482    the full proof term, i.e.\ also displays information omitted in the
  11.483    compact proof term, which is denoted by ``\isa{{\isacharunderscore}}'' placeholders
  11.484    there.
  11.485 @@ -729,7 +729,7 @@
  11.486    All of the diagnostic commands above admit a list of \isa{modes}
  11.487    to be specified, which is appended to the current print mode (see
  11.488    also \cite{isabelle-ref}).  Thus the output behavior may be modified
  11.489 -  according particular print mode features.  For example, \mbox{\isa{\isacommand{pr}}}~\isa{{\isachardoublequote}{\isacharparenleft}latex\ xsymbols\ symbols{\isacharparenright}{\isachardoublequote}} would print the current
  11.490 +  according particular print mode features.  For example, \hyperlink{command.pr}{\mbox{\isa{\isacommand{pr}}}}~\isa{{\isachardoublequote}{\isacharparenleft}latex\ xsymbols\ symbols{\isacharparenright}{\isachardoublequote}} would print the current
  11.491    proof state with mathematical symbols and special characters
  11.492    represented in {\LaTeX} source, according to the Isabelle style
  11.493    \cite{isabelle-sys}.
  11.494 @@ -746,16 +746,16 @@
  11.495  %
  11.496  \begin{isamarkuptext}%
  11.497  \begin{matharray}{rcl}
  11.498 -    \indexdef{}{command}{print\_commands}\mbox{\isa{\isacommand{print{\isacharunderscore}commands}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{\cdot} \\
  11.499 -    \indexdef{}{command}{print\_theory}\mbox{\isa{\isacommand{print{\isacharunderscore}theory}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
  11.500 -    \indexdef{}{command}{print\_syntax}\mbox{\isa{\isacommand{print{\isacharunderscore}syntax}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
  11.501 -    \indexdef{}{command}{print\_methods}\mbox{\isa{\isacommand{print{\isacharunderscore}methods}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
  11.502 -    \indexdef{}{command}{print\_attributes}\mbox{\isa{\isacommand{print{\isacharunderscore}attributes}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
  11.503 -    \indexdef{}{command}{print\_theorems}\mbox{\isa{\isacommand{print{\isacharunderscore}theorems}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
  11.504 -    \indexdef{}{command}{find\_theorems}\mbox{\isa{\isacommand{find{\isacharunderscore}theorems}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
  11.505 -    \indexdef{}{command}{thm\_deps}\mbox{\isa{\isacommand{thm{\isacharunderscore}deps}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
  11.506 -    \indexdef{}{command}{print\_facts}\mbox{\isa{\isacommand{print{\isacharunderscore}facts}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{proof} \\
  11.507 -    \indexdef{}{command}{print\_binds}\mbox{\isa{\isacommand{print{\isacharunderscore}binds}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{proof} \\
  11.508 +    \indexdef{}{command}{print\_commands}\hypertarget{command.print_commands}{\hyperlink{command.print_commands}{\mbox{\isa{\isacommand{print{\isacharunderscore}commands}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{\cdot} \\
  11.509 +    \indexdef{}{command}{print\_theory}\hypertarget{command.print_theory}{\hyperlink{command.print_theory}{\mbox{\isa{\isacommand{print{\isacharunderscore}theory}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
  11.510 +    \indexdef{}{command}{print\_syntax}\hypertarget{command.print_syntax}{\hyperlink{command.print_syntax}{\mbox{\isa{\isacommand{print{\isacharunderscore}syntax}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
  11.511 +    \indexdef{}{command}{print\_methods}\hypertarget{command.print_methods}{\hyperlink{command.print_methods}{\mbox{\isa{\isacommand{print{\isacharunderscore}methods}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
  11.512 +    \indexdef{}{command}{print\_attributes}\hypertarget{command.print_attributes}{\hyperlink{command.print_attributes}{\mbox{\isa{\isacommand{print{\isacharunderscore}attributes}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
  11.513 +    \indexdef{}{command}{print\_theorems}\hypertarget{command.print_theorems}{\hyperlink{command.print_theorems}{\mbox{\isa{\isacommand{print{\isacharunderscore}theorems}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
  11.514 +    \indexdef{}{command}{find\_theorems}\hypertarget{command.find_theorems}{\hyperlink{command.find_theorems}{\mbox{\isa{\isacommand{find{\isacharunderscore}theorems}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
  11.515 +    \indexdef{}{command}{thm\_deps}\hypertarget{command.thm_deps}{\hyperlink{command.thm_deps}{\mbox{\isa{\isacommand{thm{\isacharunderscore}deps}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{theory~|~proof} \\
  11.516 +    \indexdef{}{command}{print\_facts}\hypertarget{command.print_facts}{\hyperlink{command.print_facts}{\mbox{\isa{\isacommand{print{\isacharunderscore}facts}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{proof} \\
  11.517 +    \indexdef{}{command}{print\_binds}\hypertarget{command.print_binds}{\hyperlink{command.print_binds}{\mbox{\isa{\isacommand{print{\isacharunderscore}binds}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{proof} \\
  11.518    \end{matharray}
  11.519  
  11.520    \begin{rail}
  11.521 @@ -777,29 +777,29 @@
  11.522  
  11.523    \begin{descr}
  11.524    
  11.525 -  \item [\mbox{\isa{\isacommand{print{\isacharunderscore}commands}}}] prints Isabelle's outer theory
  11.526 +  \item [\hyperlink{command.print_commands}{\mbox{\isa{\isacommand{print{\isacharunderscore}commands}}}}] prints Isabelle's outer theory
  11.527    syntax, including keywords and command.
  11.528    
  11.529 -  \item [\mbox{\isa{\isacommand{print{\isacharunderscore}theory}}}] prints the main logical content of
  11.530 +  \item [\hyperlink{command.print_theory}{\mbox{\isa{\isacommand{print{\isacharunderscore}theory}}}}] prints the main logical content of
  11.531    the theory context; the ``\isa{{\isachardoublequote}{\isacharbang}{\isachardoublequote}}'' option indicates extra
  11.532    verbosity.
  11.533  
  11.534 -  \item [\mbox{\isa{\isacommand{print{\isacharunderscore}syntax}}}] prints the inner syntax of types
  11.535 +  \item [\hyperlink{command.print_syntax}{\mbox{\isa{\isacommand{print{\isacharunderscore}syntax}}}}] prints the inner syntax of types
  11.536    and terms, depending on the current context.  The output can be very
  11.537    verbose, including grammar tables and syntax translation rules.  See
  11.538    \cite[\S7, \S8]{isabelle-ref} for further information on Isabelle's
  11.539    inner syntax.
  11.540    
  11.541 -  \item [\mbox{\isa{\isacommand{print{\isacharunderscore}methods}}}] prints all proof methods
  11.542 +  \item [\hyperlink{command.print_methods}{\mbox{\isa{\isacommand{print{\isacharunderscore}methods}}}}] prints all proof methods
  11.543    available in the current theory context.
  11.544    
  11.545 -  \item [\mbox{\isa{\isacommand{print{\isacharunderscore}attributes}}}] prints all attributes
  11.546 +  \item [\hyperlink{command.print_attributes}{\mbox{\isa{\isacommand{print{\isacharunderscore}attributes}}}}] prints all attributes
  11.547    available in the current theory context.
  11.548    
  11.549 -  \item [\mbox{\isa{\isacommand{print{\isacharunderscore}theorems}}}] prints theorems resulting from
  11.550 +  \item [\hyperlink{command.print_theorems}{\mbox{\isa{\isacommand{print{\isacharunderscore}theorems}}}}] prints theorems resulting from
  11.551    the last command.
  11.552    
  11.553 -  \item [\mbox{\isa{\isacommand{find{\isacharunderscore}theorems}}}~\isa{criteria}] retrieves facts
  11.554 +  \item [\hyperlink{command.find_theorems}{\mbox{\isa{\isacommand{find{\isacharunderscore}theorems}}}}~\isa{criteria}] retrieves facts
  11.555    from the theory or proof context matching all of given search
  11.556    criteria.  The criterion \isa{{\isachardoublequote}name{\isacharcolon}\ p{\isachardoublequote}} selects all theorems
  11.557    whose fully qualified name matches pattern \isa{p}, which may
  11.558 @@ -818,14 +818,14 @@
  11.559    default, duplicates are removed from the search result. Use
  11.560    \isa{with{\isacharunderscore}dups} to display duplicates.
  11.561    
  11.562 -  \item [\mbox{\isa{\isacommand{thm{\isacharunderscore}deps}}}~\isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isachardoublequote}}]
  11.563 +  \item [\hyperlink{command.thm_deps}{\mbox{\isa{\isacommand{thm{\isacharunderscore}deps}}}}~\isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isachardoublequote}}]
  11.564    visualizes dependencies of facts, using Isabelle's graph browser
  11.565    tool (see also \cite{isabelle-sys}).
  11.566    
  11.567 -  \item [\mbox{\isa{\isacommand{print{\isacharunderscore}facts}}}] prints all local facts of the
  11.568 +  \item [\hyperlink{command.print_facts}{\mbox{\isa{\isacommand{print{\isacharunderscore}facts}}}}] prints all local facts of the
  11.569    current context, both named and unnamed ones.
  11.570    
  11.571 -  \item [\mbox{\isa{\isacommand{print{\isacharunderscore}binds}}}] prints all term abbreviations
  11.572 +  \item [\hyperlink{command.print_binds}{\mbox{\isa{\isacommand{print{\isacharunderscore}binds}}}}] prints all term abbreviations
  11.573    present in the context.
  11.574  
  11.575    \end{descr}%
  11.576 @@ -838,17 +838,17 @@
  11.577  %
  11.578  \begin{isamarkuptext}%
  11.579  \begin{matharray}{rcl}
  11.580 -    \indexdef{}{command}{undo}\mbox{\isa{\isacommand{undo}}}^{{ * }{ * }} & : & \isarkeep{\cdot} \\
  11.581 -    \indexdef{}{command}{redo}\mbox{\isa{\isacommand{redo}}}^{{ * }{ * }} & : & \isarkeep{\cdot} \\
  11.582 -    \indexdef{}{command}{kill}\mbox{\isa{\isacommand{kill}}}^{{ * }{ * }} & : & \isarkeep{\cdot} \\
  11.583 +    \indexdef{}{command}{undo}\hypertarget{command.undo}{\hyperlink{command.undo}{\mbox{\isa{\isacommand{undo}}}}}^{{ * }{ * }} & : & \isarkeep{\cdot} \\
  11.584 +    \indexdef{}{command}{redo}\hypertarget{command.redo}{\hyperlink{command.redo}{\mbox{\isa{\isacommand{redo}}}}}^{{ * }{ * }} & : & \isarkeep{\cdot} \\
  11.585 +    \indexdef{}{command}{kill}\hypertarget{command.kill}{\hyperlink{command.kill}{\mbox{\isa{\isacommand{kill}}}}}^{{ * }{ * }} & : & \isarkeep{\cdot} \\
  11.586    \end{matharray}
  11.587  
  11.588    The Isabelle/Isar top-level maintains a two-stage history, for
  11.589    theory and proof state transformation.  Basically, any command can
  11.590 -  be undone using \mbox{\isa{\isacommand{undo}}}, excluding mere diagnostic
  11.591 -  elements.  Its effect may be revoked via \mbox{\isa{\isacommand{redo}}}, unless
  11.592 -  the corresponding \mbox{\isa{\isacommand{undo}}} step has crossed the beginning
  11.593 -  of a proof or theory.  The \mbox{\isa{\isacommand{kill}}} command aborts the
  11.594 +  be undone using \hyperlink{command.undo}{\mbox{\isa{\isacommand{undo}}}}, excluding mere diagnostic
  11.595 +  elements.  Its effect may be revoked via \hyperlink{command.redo}{\mbox{\isa{\isacommand{redo}}}}, unless
  11.596 +  the corresponding \hyperlink{command.undo}{\mbox{\isa{\isacommand{undo}}}} step has crossed the beginning
  11.597 +  of a proof or theory.  The \hyperlink{command.kill}{\mbox{\isa{\isacommand{kill}}}} command aborts the
  11.598    current history node altogether, discontinuing a proof or even the
  11.599    whole theory.  This operation is \emph{not} undo-able.
  11.600  
  11.601 @@ -856,7 +856,7 @@
  11.602      History commands should never be used with user interfaces such as
  11.603      Proof~General \cite{proofgeneral,Aspinall:TACAS:2000}, which takes
  11.604      care of stepping forth and back itself.  Interfering by manual
  11.605 -    \mbox{\isa{\isacommand{undo}}}, \mbox{\isa{\isacommand{redo}}}, or even \mbox{\isa{\isacommand{kill}}}
  11.606 +    \hyperlink{command.undo}{\mbox{\isa{\isacommand{undo}}}}, \hyperlink{command.redo}{\mbox{\isa{\isacommand{redo}}}}, or even \hyperlink{command.kill}{\mbox{\isa{\isacommand{kill}}}}
  11.607      commands would quickly result in utter confusion.
  11.608    \end{warn}%
  11.609  \end{isamarkuptext}%
  11.610 @@ -868,11 +868,11 @@
  11.611  %
  11.612  \begin{isamarkuptext}%
  11.613  \begin{matharray}{rcl}
  11.614 -    \indexdef{}{command}{cd}\mbox{\isa{\isacommand{cd}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{\cdot} \\
  11.615 -    \indexdef{}{command}{pwd}\mbox{\isa{\isacommand{pwd}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{\cdot} \\
  11.616 -    \indexdef{}{command}{use\_thy}\mbox{\isa{\isacommand{use{\isacharunderscore}thy}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{\cdot} \\
  11.617 -    \indexdef{}{command}{display\_drafts}\mbox{\isa{\isacommand{display{\isacharunderscore}drafts}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{\cdot} \\
  11.618 -    \indexdef{}{command}{print\_drafts}\mbox{\isa{\isacommand{print{\isacharunderscore}drafts}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{\cdot} \\
  11.619 +    \indexdef{}{command}{cd}\hypertarget{command.cd}{\hyperlink{command.cd}{\mbox{\isa{\isacommand{cd}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{\cdot} \\
  11.620 +    \indexdef{}{command}{pwd}\hypertarget{command.pwd}{\hyperlink{command.pwd}{\mbox{\isa{\isacommand{pwd}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{\cdot} \\
  11.621 +    \indexdef{}{command}{use\_thy}\hypertarget{command.use_thy}{\hyperlink{command.use_thy}{\mbox{\isa{\isacommand{use{\isacharunderscore}thy}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{\cdot} \\
  11.622 +    \indexdef{}{command}{display\_drafts}\hypertarget{command.display_drafts}{\hyperlink{command.display_drafts}{\mbox{\isa{\isacommand{display{\isacharunderscore}drafts}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{\cdot} \\
  11.623 +    \indexdef{}{command}{print\_drafts}\hypertarget{command.print_drafts}{\hyperlink{command.print_drafts}{\mbox{\isa{\isacommand{print{\isacharunderscore}drafts}}}}}\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}} & : & \isarkeep{\cdot} \\
  11.624    \end{matharray}
  11.625  
  11.626    \begin{rail}
  11.627 @@ -884,16 +884,16 @@
  11.628  
  11.629    \begin{descr}
  11.630  
  11.631 -  \item [\mbox{\isa{\isacommand{cd}}}~\isa{path}] changes the current directory
  11.632 +  \item [\hyperlink{command.cd}{\mbox{\isa{\isacommand{cd}}}}~\isa{path}] changes the current directory
  11.633    of the Isabelle process.
  11.634  
  11.635 -  \item [\mbox{\isa{\isacommand{pwd}}}] prints the current working directory.
  11.636 +  \item [\hyperlink{command.pwd}{\mbox{\isa{\isacommand{pwd}}}}] prints the current working directory.
  11.637  
  11.638 -  \item [\mbox{\isa{\isacommand{use{\isacharunderscore}thy}}}~\isa{A}] preload theory \isa{A}.
  11.639 +  \item [\hyperlink{command.use_thy}{\mbox{\isa{\isacommand{use{\isacharunderscore}thy}}}}~\isa{A}] preload theory \isa{A}.
  11.640    These system commands are scarcely used when working interactively,
  11.641    since loading of theories is done automatically as required.
  11.642  
  11.643 -  \item [\mbox{\isa{\isacommand{display{\isacharunderscore}drafts}}}~\isa{paths} and \mbox{\isa{\isacommand{print{\isacharunderscore}drafts}}}~\isa{paths}] perform simple output of a given list
  11.644 +  \item [\hyperlink{command.display_drafts}{\mbox{\isa{\isacommand{display{\isacharunderscore}drafts}}}}~\isa{paths} and \hyperlink{command.print_drafts}{\mbox{\isa{\isacommand{print{\isacharunderscore}drafts}}}}~\isa{paths}] perform simple output of a given list
  11.645    of raw source files.  Only those symbols that do not require
  11.646    additional {\LaTeX} packages are displayed properly, everything else
  11.647    is left verbatim.
    12.1 --- a/doc-src/IsarRef/Thy/document/syntax.tex	Thu May 15 17:37:21 2008 +0200
    12.2 +++ b/doc-src/IsarRef/Thy/document/syntax.tex	Thu May 15 17:39:20 2008 +0200
    12.3 @@ -93,16 +93,16 @@
    12.4    presented in \cite{isabelle-ref}.
    12.5  
    12.6    \begin{matharray}{rcl}
    12.7 -    \indexdef{}{syntax}{ident}\mbox{\isa{ident}} & = & letter\,quasiletter^* \\
    12.8 -    \indexdef{}{syntax}{longident}\mbox{\isa{longident}} & = & ident (\verb,.,ident)^+ \\
    12.9 -    \indexdef{}{syntax}{symident}\mbox{\isa{symident}} & = & sym^+ ~|~ \verb,\,\verb,<,ident\verb,>, \\
   12.10 -    \indexdef{}{syntax}{nat}\mbox{\isa{nat}} & = & digit^+ \\
   12.11 -    \indexdef{}{syntax}{var}\mbox{\isa{var}} & = & ident ~|~ \verb,?,ident ~|~ \verb,?,ident\verb,.,nat \\
   12.12 -    \indexdef{}{syntax}{typefree}\mbox{\isa{typefree}} & = & \verb,',ident \\
   12.13 -    \indexdef{}{syntax}{typevar}\mbox{\isa{typevar}} & = & typefree ~|~ \verb,?,typefree ~|~ \verb,?,typefree\verb,.,nat \\
   12.14 -    \indexdef{}{syntax}{string}\mbox{\isa{string}} & = & \verb,", ~\dots~ \verb,", \\
   12.15 -    \indexdef{}{syntax}{altstring}\mbox{\isa{altstring}} & = & \backquote ~\dots~ \backquote \\
   12.16 -    \indexdef{}{syntax}{verbatim}\mbox{\isa{verbatim}} & = & \verb,{*, ~\dots~ \verb,*,\verb,}, \\[1ex]
   12.17 +    \indexdef{}{syntax}{ident}\hypertarget{syntax.ident}{\hyperlink{syntax.ident}{\mbox{\isa{ident}}}} & = & letter\,quasiletter^* \\
   12.18 +    \indexdef{}{syntax}{longident}\hypertarget{syntax.longident}{\hyperlink{syntax.longident}{\mbox{\isa{longident}}}} & = & ident (\verb,.,ident)^+ \\
   12.19 +    \indexdef{}{syntax}{symident}\hypertarget{syntax.symident}{\hyperlink{syntax.symident}{\mbox{\isa{symident}}}} & = & sym^+ ~|~ \verb,\,\verb,<,ident\verb,>, \\
   12.20 +    \indexdef{}{syntax}{nat}\hypertarget{syntax.nat}{\hyperlink{syntax.nat}{\mbox{\isa{nat}}}} & = & digit^+ \\
   12.21 +    \indexdef{}{syntax}{var}\hypertarget{syntax.var}{\hyperlink{syntax.var}{\mbox{\isa{var}}}} & = & ident ~|~ \verb,?,ident ~|~ \verb,?,ident\verb,.,nat \\
   12.22 +    \indexdef{}{syntax}{typefree}\hypertarget{syntax.typefree}{\hyperlink{syntax.typefree}{\mbox{\isa{typefree}}}} & = & \verb,',ident \\
   12.23 +    \indexdef{}{syntax}{typevar}\hypertarget{syntax.typevar}{\hyperlink{syntax.typevar}{\mbox{\isa{typevar}}}} & = & typefree ~|~ \verb,?,typefree ~|~ \verb,?,typefree\verb,.,nat \\
   12.24 +    \indexdef{}{syntax}{string}\hypertarget{syntax.string}{\hyperlink{syntax.string}{\mbox{\isa{string}}}} & = & \verb,", ~\dots~ \verb,", \\
   12.25 +    \indexdef{}{syntax}{altstring}\hypertarget{syntax.altstring}{\hyperlink{syntax.altstring}{\mbox{\isa{altstring}}}} & = & \backquote ~\dots~ \backquote \\
   12.26 +    \indexdef{}{syntax}{verbatim}\hypertarget{syntax.verbatim}{\hyperlink{syntax.verbatim}{\mbox{\isa{verbatim}}}} & = & \verb,{*, ~\dots~ \verb,*,\verb,}, \\[1ex]
   12.27  
   12.28      letter & = & latin ~|~ \verb,\,\verb,<,latin\verb,>, ~|~ \verb,\,\verb,<,latin\,latin\verb,>, ~|~ greek ~|~ \\
   12.29             &   & \verb,\<^isub>, ~|~ \verb,\<^isup>, \\
   12.30 @@ -123,12 +123,12 @@
   12.31            &   & \verb,\<Upsilon>, ~|~ \verb,\<Phi>, ~|~ \verb,\<Psi>, ~|~ \verb,\<Omega>, \\
   12.32    \end{matharray}
   12.33  
   12.34 -  The syntax of \mbox{\isa{string}} admits any characters, including
   12.35 +  The syntax of \hyperlink{syntax.string}{\mbox{\isa{string}}} admits any characters, including
   12.36    newlines; ``\verb|"|'' (double-quote) and ``\verb|\|'' (backslash) need to be escaped by a backslash; arbitrary
   12.37    character codes may be specified as ``\verb|\|\isa{ddd}'',
   12.38    with three decimal digits.  Alternative strings according to
   12.39 -  \mbox{\isa{altstring}} are analogous, using single back-quotes instead.
   12.40 -  The body of \mbox{\isa{verbatim}} may consist of any text not
   12.41 +  \hyperlink{syntax.altstring}{\mbox{\isa{altstring}}} are analogous, using single back-quotes instead.
   12.42 +  The body of \hyperlink{syntax.verbatim}{\mbox{\isa{verbatim}}} may consist of any text not
   12.43    containing ``\verb|*|\verb|}|''; this allows
   12.44    convenient inclusion of quotes without further escapes.  The greek
   12.45    letters do \emph{not} include \verb|\<lambda>|, which is already used
   12.46 @@ -292,8 +292,8 @@
   12.47  %
   12.48  \begin{isamarkuptext}%
   12.49  Mixfix annotations specify concrete \emph{inner} syntax of Isabelle
   12.50 -  types and terms.  Some commands such as \mbox{\isa{\isacommand{types}}} (see
   12.51 -  \secref{sec:types-pure}) admit infixes only, while \mbox{\isa{\isacommand{consts}}} (see \secref{sec:consts}) and \mbox{\isa{\isacommand{syntax}}} (see
   12.52 +  types and terms.  Some commands such as \hyperlink{command.types}{\mbox{\isa{\isacommand{types}}}} (see
   12.53 +  \secref{sec:types-pure}) admit infixes only, while \hyperlink{command.consts}{\mbox{\isa{\isacommand{consts}}}} (see \secref{sec:consts}) and \hyperlink{command.syntax}{\mbox{\isa{\isacommand{syntax}}}} (see
   12.54    \secref{sec:syn-trans}) support the full range of general mixfixes
   12.55    and binders.
   12.56  
   12.57 @@ -410,9 +410,9 @@
   12.58  
   12.59    \item selections from named facts \isa{{\isachardoublequote}a{\isacharparenleft}i{\isacharparenright}{\isachardoublequote}} or \isa{{\isachardoublequote}a{\isacharparenleft}j\ {\isacharminus}\ k{\isacharparenright}{\isachardoublequote}},
   12.60  
   12.61 -  \item literal fact propositions using \indexref{}{syntax}{altstring}\mbox{\isa{altstring}} syntax
   12.62 +  \item literal fact propositions using \indexref{}{syntax}{altstring}\hyperlink{syntax.altstring}{\mbox{\isa{altstring}}} syntax
   12.63    \verb|`|\isa{{\isachardoublequote}{\isasymphi}{\isachardoublequote}}\verb|`| (see also method
   12.64 -  \indexref{}{method}{fact}\mbox{\isa{fact}} in \secref{sec:pure-meth-att}).
   12.65 +  \indexref{}{method}{fact}\hyperlink{method.fact}{\mbox{\isa{fact}}} in \secref{sec:pure-meth-att}).
   12.66  
   12.67    \end{enumerate}
   12.68  
   12.69 @@ -426,7 +426,7 @@
   12.70    internal dummy fact, which will be ignored later on.  So only the
   12.71    effect of the attribute on the background context will persist.
   12.72    This form of in-place declarations is particularly useful with
   12.73 -  commands like \mbox{\isa{\isacommand{declare}}} and \mbox{\isa{\isacommand{using}}}.
   12.74 +  commands like \hyperlink{command.declare}{\mbox{\isa{\isacommand{declare}}}} and \hyperlink{command.using}{\mbox{\isa{\isacommand{using}}}}.
   12.75  
   12.76    \indexouternonterm{axmdecl}\indexouternonterm{thmdecl}
   12.77    \indexouternonterm{thmdef}\indexouternonterm{thmref}
   12.78 @@ -490,8 +490,8 @@
   12.79    the typing refers to all variables, while in \isa{{\isachardoublequote}a{\isacharcolon}\ {\isasymphi}\isactrlsub {\isadigit{1}}\ {\isasymdots}\ {\isasymphi}\isactrlsub n{\isachardoublequote}} the naming refers to all propositions collectively.
   12.80    Isar language elements that refer to \railnonterm{vars} or
   12.81    \railnonterm{props} typically admit separate typings or namings via
   12.82 -  another level of iteration, with explicit \indexref{}{keyword}{and}\mbox{\isa{\isakeyword{and}}}
   12.83 -  separators; e.g.\ see \mbox{\isa{\isacommand{fix}}} and \mbox{\isa{\isacommand{assume}}} in
   12.84 +  another level of iteration, with explicit \indexref{}{keyword}{and}\hyperlink{keyword.and}{\mbox{\isa{\isakeyword{and}}}}
   12.85 +  separators; e.g.\ see \hyperlink{command.fix}{\mbox{\isa{\isacommand{fix}}}} and \hyperlink{command.assume}{\mbox{\isa{\isacommand{assume}}}} in
   12.86    \secref{sec:proof-context}.%
   12.87  \end{isamarkuptext}%
   12.88  \isamarkuptrue%
   12.89 @@ -502,24 +502,24 @@
   12.90  %
   12.91  \begin{isamarkuptext}%
   12.92  \begin{matharray}{rcl}
   12.93 -    \indexdef{}{antiquotation}{theory}\mbox{\isa{theory}} & : & \isarantiq \\
   12.94 -    \indexdef{}{antiquotation}{thm}\mbox{\isa{thm}} & : & \isarantiq \\
   12.95 -    \indexdef{}{antiquotation}{prop}\mbox{\isa{prop}} & : & \isarantiq \\
   12.96 -    \indexdef{}{antiquotation}{term}\mbox{\isa{term}} & : & \isarantiq \\
   12.97 -    \indexdef{}{antiquotation}{const}\mbox{\isa{const}} & : & \isarantiq \\
   12.98 -    \indexdef{}{antiquotation}{abbrev}\mbox{\isa{abbrev}} & : & \isarantiq \\
   12.99 -    \indexdef{}{antiquotation}{typeof}\mbox{\isa{typeof}} & : & \isarantiq \\
  12.100 -    \indexdef{}{antiquotation}{typ}\mbox{\isa{typ}} & : & \isarantiq \\
  12.101 -    \indexdef{}{antiquotation}{thm\_style}\mbox{\isa{thm{\isacharunderscore}style}} & : & \isarantiq \\
  12.102 -    \indexdef{}{antiquotation}{term\_style}\mbox{\isa{term{\isacharunderscore}style}} & : & \isarantiq \\
  12.103 -    \indexdef{}{antiquotation}{text}\mbox{\isa{text}} & : & \isarantiq \\
  12.104 -    \indexdef{}{antiquotation}{goals}\mbox{\isa{goals}} & : & \isarantiq \\
  12.105 -    \indexdef{}{antiquotation}{subgoals}\mbox{\isa{subgoals}} & : & \isarantiq \\
  12.106 -    \indexdef{}{antiquotation}{prf}\mbox{\isa{prf}} & : & \isarantiq \\
  12.107 -    \indexdef{}{antiquotation}{full\_prf}\mbox{\isa{full{\isacharunderscore}prf}} & : & \isarantiq \\
  12.108 -    \indexdef{}{antiquotation}{ML}\mbox{\isa{ML}} & : & \isarantiq \\
  12.109 -    \indexdef{}{antiquotation}{ML\_type}\mbox{\isa{ML{\isacharunderscore}type}} & : & \isarantiq \\
  12.110 -    \indexdef{}{antiquotation}{ML\_struct}\mbox{\isa{ML{\isacharunderscore}struct}} & : & \isarantiq \\
  12.111 +    \indexdef{}{antiquotation}{theory}\hypertarget{antiquotation.theory}{\hyperlink{antiquotation.theory}{\mbox{\isa{theory}}}} & : & \isarantiq \\
  12.112 +    \indexdef{}{antiquotation}{thm}\hypertarget{antiquotation.thm}{\hyperlink{antiquotation.thm}{\mbox{\isa{thm}}}} & : & \isarantiq \\
  12.113 +    \indexdef{}{antiquotation}{prop}\hypertarget{antiquotation.prop}{\hyperlink{antiquotation.prop}{\mbox{\isa{prop}}}} & : & \isarantiq \\
  12.114 +    \indexdef{}{antiquotation}{term}\hypertarget{antiquotation.term}{\hyperlink{antiquotation.term}{\mbox{\isa{term}}}} & : & \isarantiq \\
  12.115 +    \indexdef{}{antiquotation}{const}\hypertarget{antiquotation.const}{\hyperlink{antiquotation.const}{\mbox{\isa{const}}}} & : & \isarantiq \\
  12.116 +    \indexdef{}{antiquotation}{abbrev}\hypertarget{antiquotation.abbrev}{\hyperlink{antiquotation.abbrev}{\mbox{\isa{abbrev}}}} & : & \isarantiq \\
  12.117 +    \indexdef{}{antiquotation}{typeof}\hypertarget{antiquotation.typeof}{\hyperlink{antiquotation.typeof}{\mbox{\isa{typeof}}}} & : & \isarantiq \\
  12.118 +    \indexdef{}{antiquotation}{typ}\hypertarget{antiquotation.typ}{\hyperlink{antiquotation.typ}{\mbox{\isa{typ}}}} & : & \isarantiq \\
  12.119 +    \indexdef{}{antiquotation}{thm\_style}\hypertarget{antiquotation.thm_style}{\hyperlink{antiquotation.thm_style}{\mbox{\isa{thm{\isacharunderscore}style}}}} & : & \isarantiq \\
  12.120 +    \indexdef{}{antiquotation}{term\_style}\hypertarget{antiquotation.term_style}{\hyperlink{antiquotation.term_style}{\mbox{\isa{term{\isacharunderscore}style}}}} & : & \isarantiq \\
  12.121 +    \indexdef{}{antiquotation}{text}\hypertarget{antiquotation.text}{\hyperlink{antiquotation.text}{\mbox{\isa{text}}}} & : & \isarantiq \\
  12.122 +    \indexdef{}{antiquotation}{goals}\hypertarget{antiquotation.goals}{\hyperlink{antiquotation.goals}{\mbox{\isa{goals}}}} & : & \isarantiq \\
  12.123 +    \indexdef{}{antiquotation}{subgoals}\hypertarget{antiquotation.subgoals}{\hyperlink{antiquotation.subgoals}{\mbox{\isa{subgoals}}}} & : & \isarantiq \\
  12.124 +    \indexdef{}{antiquotation}{prf}\hypertarget{antiquotation.prf}{\hyperlink{antiquotation.prf}{\mbox{\isa{prf}}}} & : & \isarantiq \\
  12.125 +    \indexdef{}{antiquotation}{full\_prf}\hypertarget{antiquotation.full_prf}{\hyperlink{antiquotation.full_prf}{\mbox{\isa{full{\isacharunderscore}prf}}}} & : & \isarantiq \\
  12.126 +    \indexdef{}{antiquotation}{ML}\hypertarget{antiquotation.ML}{\hyperlink{antiquotation.ML}{\mbox{\isa{ML}}}} & : & \isarantiq \\
  12.127 +    \indexdef{}{antiquotation}{ML\_type}\hypertarget{antiquotation.ML_type}{\hyperlink{antiquotation.ML_type}{\mbox{\isa{ML{\isacharunderscore}type}}}} & : & \isarantiq \\
  12.128 +    \indexdef{}{antiquotation}{ML\_struct}\hypertarget{antiquotation.ML_struct}{\hyperlink{antiquotation.ML_struct}{\mbox{\isa{ML{\isacharunderscore}struct}}}} & : & \isarantiq \\
  12.129    \end{matharray}
  12.130  
  12.131    The text body of formal comments (see also \secref{sec:comments})
  12.132 @@ -579,7 +579,7 @@
  12.133    \item [\isa{{\isachardoublequote}{\isacharat}{\isacharbraceleft}thm\ a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isacharbraceright}{\isachardoublequote}}] prints theorems
  12.134    \isa{{\isachardoublequote}a\isactrlsub {\isadigit{1}}\ {\isasymdots}\ a\isactrlsub n{\isachardoublequote}}.  Note that attribute specifications
  12.135    may be included as well (see also \secref{sec:syn-att}); the
  12.136 -  \indexref{}{attribute}{no\_vars}\mbox{\isa{no{\isacharunderscore}vars}} rule (see \secref{sec:misc-meth-att}) would
  12.137 +  \indexref{}{attribute}{no\_vars}\hyperlink{attribute.no_vars}{\mbox{\isa{no{\isacharunderscore}vars}}} rule (see \secref{sec:misc-meth-att}) would
  12.138    be particularly useful to suppress printing of schematic variables.
  12.139  
  12.140    \item [\isa{{\isachardoublequote}{\isacharat}{\isacharbraceleft}prop\ {\isasymphi}{\isacharbraceright}{\isachardoublequote}}] prints a well-typed proposition \isa{{\isachardoublequote}{\isasymphi}{\isachardoublequote}}.
  12.141 @@ -701,7 +701,7 @@
  12.142  
  12.143    \item[\isa{{\isachardoublequote}source\ {\isacharequal}\ bool{\isachardoublequote}}] prints the source text of the
  12.144    antiquotation arguments, rather than the actual value.  Note that
  12.145 -  this does not affect well-formedness checks of \mbox{\isa{thm}}, \mbox{\isa{term}}, etc. (only the \mbox{\isa{text}} antiquotation admits arbitrary output).
  12.146 +  this does not affect well-formedness checks of \hyperlink{antiquotation.thm}{\mbox{\isa{thm}}}, \hyperlink{antiquotation.term}{\mbox{\isa{term}}}, etc. (only the \hyperlink{antiquotation.text}{\mbox{\isa{text}}} antiquotation admits arbitrary output).
  12.147  
  12.148    \item[\isa{{\isachardoublequote}goals{\isacharunderscore}limit\ {\isacharequal}\ nat{\isachardoublequote}}] determines the maximum number of
  12.149    goals to be printed.
  12.150 @@ -753,14 +753,14 @@
  12.151    specifically, e.g.\ to fold proof texts, or drop parts of the text
  12.152    completely.
  12.153  
  12.154 -  For example ``\mbox{\isa{\isacommand{by}}}~\isa{{\isachardoublequote}{\isacharpercent}invisible\ auto{\isachardoublequote}}'' would
  12.155 +  For example ``\hyperlink{command.by}{\mbox{\isa{\isacommand{by}}}}~\isa{{\isachardoublequote}{\isacharpercent}invisible\ auto{\isachardoublequote}}'' would
  12.156    cause that piece of proof to be treated as \isa{invisible} instead
  12.157    of \isa{{\isachardoublequote}proof{\isachardoublequote}} (the default), which may be either show or hidden
  12.158 -  depending on the document setup.  In contrast, ``\mbox{\isa{\isacommand{by}}}~\isa{{\isachardoublequote}{\isacharpercent}visible\ auto{\isachardoublequote}}'' would force this text to be shown
  12.159 +  depending on the document setup.  In contrast, ``\hyperlink{command.by}{\mbox{\isa{\isacommand{by}}}}~\isa{{\isachardoublequote}{\isacharpercent}visible\ auto{\isachardoublequote}}'' would force this text to be shown
  12.160    invariably.
  12.161  
  12.162    Explicit tag specifications within a proof apply to all subsequent
  12.163 -  commands of the same level of nesting.  For example, ``\mbox{\isa{\isacommand{proof}}}~\isa{{\isachardoublequote}{\isacharpercent}visible\ {\isasymdots}{\isachardoublequote}}~\mbox{\isa{\isacommand{qed}}}'' would force the
  12.164 +  commands of the same level of nesting.  For example, ``\hyperlink{command.proof}{\mbox{\isa{\isacommand{proof}}}}~\isa{{\isachardoublequote}{\isacharpercent}visible\ {\isasymdots}{\isachardoublequote}}~\hyperlink{command.qed}{\mbox{\isa{\isacommand{qed}}}}'' would force the
  12.165    whole sub-proof to be typeset as \isa{visible} (unless some of its
  12.166    parts are tagged differently).%
  12.167  \end{isamarkuptext}%