| author | berghofe | 
| Tue, 10 Jan 2012 23:58:10 +0100 | |
| changeset 46180 | 72ee700e1d8f | 
| parent 45260 | 48295059cef3 | 
| child 46484 | 50fca9d09528 | 
| permissions | -rw-r--r-- | 
| 30124 | 1 | % | 
| 2 | \begin{isabellebody}%
 | |
| 3 | \def\isabellecontext{Syntax}%
 | |
| 4 | % | |
| 5 | \isadelimtheory | |
| 6 | % | |
| 7 | \endisadelimtheory | |
| 8 | % | |
| 9 | \isatagtheory | |
| 10 | \isacommand{theory}\isamarkupfalse%
 | |
| 11 | \ Syntax\isanewline | |
| 12 | \isakeyword{imports}\ Base\isanewline
 | |
| 13 | \isakeyword{begin}%
 | |
| 14 | \endisatagtheory | |
| 15 | {\isafoldtheory}%
 | |
| 16 | % | |
| 17 | \isadelimtheory | |
| 18 | % | |
| 19 | \endisadelimtheory | |
| 20 | % | |
| 35001 | 21 | \isamarkupchapter{Concrete syntax and type-checking%
 | 
| 30124 | 22 | } | 
| 23 | \isamarkuptrue% | |
| 24 | % | |
| 25 | \begin{isamarkuptext}%
 | |
| 45258 | 26 | Pure \isa{{\isaliteral{5C3C6C616D6264613E}{\isasymlambda}}}-calculus as introduced in \chref{ch:logic} is
 | 
| 27 | an adequate foundation for logical languages --- in the tradition of | |
| 28 |   \emph{higher-order abstract syntax} --- but end-users require
 | |
| 29 | additional means for reading and printing of terms and types. This | |
| 30 |   important add-on outside the logical core is called \emph{inner
 | |
| 31 |   syntax} in Isabelle jargon, as opposed to the \emph{outer syntax} of
 | |
| 32 |   the theory and proof language (cf.\ \chref{FIXME}).
 | |
| 33 | ||
| 34 |   For example, according to \cite{church40} quantifiers are
 | |
| 35 |   represented as higher-order constants \isa{All\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{27}{\isacharprime}}a\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ bool{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ bool} such that \isa{All\ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C6C616D6264613E}{\isasymlambda}}x{\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}{\isaliteral{27}{\isacharprime}}a{\isaliteral{2E}{\isachardot}}\ B\ x{\isaliteral{29}{\isacharparenright}}} faithfully represents
 | |
| 36 |   the idea that is displayed as \isa{{\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}x{\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}{\isaliteral{27}{\isacharprime}}a{\isaliteral{2E}{\isachardot}}\ B\ x} via \hyperlink{keyword.binder}{\mbox{\isa{\isakeyword{binder}}}} notation.  Moreover, type-inference in the style of
 | |
| 37 |   Hindley-Milner \cite{hindleymilner} (and extensions) enables users
 | |
| 38 |   to write \isa{{\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}x{\isaliteral{2E}{\isachardot}}\ B\ x} concisely, when the type \isa{{\isaliteral{27}{\isacharprime}}a} is
 | |
| 39 |   already clear from the context.\footnote{Type-inference taken to the
 | |
| 40 | extreme can easily confuse users, though. Beginners often stumble | |
| 41 | over unexpectedly general types inferred by the system.} | |
| 42 | ||
| 43 |   \medskip The main inner syntax operations are \emph{read} for
 | |
| 44 |   parsing together with type-checking, and \emph{pretty} for formatted
 | |
| 45 |   output.  See also \secref{sec:read-print}.
 | |
| 46 | ||
| 47 | Furthermore, the input and output syntax layers are sub-divided into | |
| 48 |   separate phases for \emph{concrete syntax} versus \emph{abstract
 | |
| 49 |   syntax}, see also \secref{sec:parse-unparse} and
 | |
| 50 |   \secref{sec:term-check}, respectively.  This results in the
 | |
| 51 | following decomposition of the main operations: | |
| 52 | ||
| 53 |   \begin{itemize}
 | |
| 54 | ||
| 55 |   \item \isa{read\ {\isaliteral{3D}{\isacharequal}}\ parse{\isaliteral{3B}{\isacharsemicolon}}\ check}
 | |
| 56 | ||
| 57 |   \item \isa{pretty\ {\isaliteral{3D}{\isacharequal}}\ uncheck{\isaliteral{3B}{\isacharsemicolon}}\ unparse}
 | |
| 58 | ||
| 59 |   \end{itemize}
 | |
| 60 | ||
| 61 | Some specification package might thus intercept syntax processing at | |
| 62 |   a well-defined stage after \isa{parse}, to a augment the
 | |
| 63 | resulting pre-term before full type-reconstruction is performed by | |
| 64 |   \isa{check}, for example.  Note that the formal status of bound
 | |
| 65 | variables, versus free variables, versus constants must not be | |
| 66 | changed here!% | |
| 30124 | 67 | \end{isamarkuptext}%
 | 
| 68 | \isamarkuptrue% | |
| 69 | % | |
| 39885 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 70 | \isamarkupsection{Reading and pretty printing \label{sec:read-print}%
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 71 | } | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 72 | \isamarkuptrue% | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 73 | % | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 74 | \begin{isamarkuptext}%
 | 
| 45258 | 75 | Read and print operations are roughly dual to each other, such | 
| 76 |   that for the user \isa{s{\isaliteral{27}{\isacharprime}}\ {\isaliteral{3D}{\isacharequal}}\ pretty\ {\isaliteral{28}{\isacharparenleft}}read\ s{\isaliteral{29}{\isacharparenright}}} looks similar to
 | |
| 77 |   the original source text \isa{s}, but the details depend on many
 | |
| 78 | side-conditions. There are also explicit options to control | |
| 79 | suppressing of type information in the output. The default | |
| 80 |   configuration routinely looses information, so \isa{t{\isaliteral{27}{\isacharprime}}\ {\isaliteral{3D}{\isacharequal}}\ read\ {\isaliteral{28}{\isacharparenleft}}pretty\ t{\isaliteral{29}{\isacharparenright}}} might fail, produce a differently typed term, or a
 | |
| 81 | completely different term in the face of syntactic overloading!% | |
| 39885 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 82 | \end{isamarkuptext}%
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 83 | \isamarkuptrue% | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 84 | % | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 85 | \isadelimmlref | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 86 | % | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 87 | \endisadelimmlref | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 88 | % | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 89 | \isatagmlref | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 90 | % | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 91 | \begin{isamarkuptext}%
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 92 | \begin{mldecls}
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 93 |   \indexdef{}{ML}{Syntax.read\_typ}\verb|Syntax.read_typ: Proof.context -> string -> typ| \\
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 94 |   \indexdef{}{ML}{Syntax.read\_term}\verb|Syntax.read_term: Proof.context -> string -> term| \\
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 95 |   \indexdef{}{ML}{Syntax.read\_prop}\verb|Syntax.read_prop: Proof.context -> string -> term| \\
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 96 |   \indexdef{}{ML}{Syntax.pretty\_typ}\verb|Syntax.pretty_typ: Proof.context -> typ -> Pretty.T| \\
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 97 |   \indexdef{}{ML}{Syntax.pretty\_term}\verb|Syntax.pretty_term: Proof.context -> term -> Pretty.T| \\
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 98 |   \end{mldecls}
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 99 | |
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 100 |   \begin{description}
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 101 | |
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 102 | \item FIXME | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 103 | |
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 104 |   \end{description}%
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 105 | \end{isamarkuptext}%
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 106 | \isamarkuptrue% | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 107 | % | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 108 | \endisatagmlref | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 109 | {\isafoldmlref}%
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 110 | % | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 111 | \isadelimmlref | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 112 | % | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 113 | \endisadelimmlref | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 114 | % | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 115 | \isamarkupsection{Parsing and unparsing \label{sec:parse-unparse}%
 | 
| 35001 | 116 | } | 
| 117 | \isamarkuptrue% | |
| 118 | % | |
| 119 | \begin{isamarkuptext}%
 | |
| 45258 | 120 | Parsing and unparsing converts between actual source text and | 
| 121 |   a certain \emph{pre-term} format, where all bindings and scopes are
 | |
| 122 | resolved faithfully. Thus the names of free variables or constants | |
| 123 | are already determined in the sense of the logical context, but type | |
| 124 | information might is still missing. Pre-terms support an explicit | |
| 125 |   language of \emph{type constraints} that may be augmented by user
 | |
| 126 |   code to guide the later \emph{check} phase, for example.
 | |
| 127 | ||
| 128 | Actual parsing is based on traditional lexical analysis and Earley | |
| 129 | parsing for arbitrary context-free grammars. The user can specify | |
| 130 |   this via mixfix annotations.  Moreover, there are \emph{syntax
 | |
| 131 | translations} that can be augmented by the user, either | |
| 132 |   declaratively via \hyperlink{command.translations}{\mbox{\isa{\isacommand{translations}}}} or programmatically via
 | |
| 133 |   \hyperlink{command.parse-translation}{\mbox{\isa{\isacommand{parse{\isaliteral{5F}{\isacharunderscore}}translation}}}}, \hyperlink{command.print-translation}{\mbox{\isa{\isacommand{print{\isaliteral{5F}{\isacharunderscore}}translation}}}} etc.  The
 | |
| 134 | final scope resolution is performed by the system, according to name | |
| 135 | spaces for types, constants etc.\ determined by the context.% | |
| 35001 | 136 | \end{isamarkuptext}%
 | 
| 137 | \isamarkuptrue% | |
| 138 | % | |
| 39885 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 139 | \isadelimmlref | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 140 | % | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 141 | \endisadelimmlref | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 142 | % | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 143 | \isatagmlref | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 144 | % | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 145 | \begin{isamarkuptext}%
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 146 | \begin{mldecls}
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 147 |   \indexdef{}{ML}{Syntax.parse\_typ}\verb|Syntax.parse_typ: Proof.context -> string -> typ| \\
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 148 |   \indexdef{}{ML}{Syntax.parse\_term}\verb|Syntax.parse_term: Proof.context -> string -> term| \\
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 149 |   \indexdef{}{ML}{Syntax.parse\_prop}\verb|Syntax.parse_prop: Proof.context -> string -> term| \\
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 150 |   \indexdef{}{ML}{Syntax.unparse\_typ}\verb|Syntax.unparse_typ: Proof.context -> typ -> Pretty.T| \\
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 151 |   \indexdef{}{ML}{Syntax.unparse\_term}\verb|Syntax.unparse_term: Proof.context -> term -> Pretty.T| \\
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 152 |   \end{mldecls}
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 153 | |
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 154 |   \begin{description}
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 155 | |
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 156 | \item FIXME | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 157 | |
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 158 |   \end{description}%
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 159 | \end{isamarkuptext}%
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 160 | \isamarkuptrue% | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 161 | % | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 162 | \endisatagmlref | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 163 | {\isafoldmlref}%
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 164 | % | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 165 | \isadelimmlref | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 166 | % | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 167 | \endisadelimmlref | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 168 | % | 
| 35001 | 169 | \isamarkupsection{Checking and unchecking \label{sec:term-check}%
 | 
| 170 | } | |
| 171 | \isamarkuptrue% | |
| 172 | % | |
| 39885 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 173 | \begin{isamarkuptext}%
 | 
| 45258 | 174 | These operations define the transition from pre-terms and | 
| 175 | fully-annotated terms in the sense of the logical core | |
| 176 |   (\chref{ch:logic}).
 | |
| 177 | ||
| 178 |   The \emph{check} phase is meant to subsume a variety of mechanisms
 | |
| 179 | in the manner of ``type-inference'' or ``type-reconstruction'' or | |
| 180 | ``type-improvement'', not just type-checking in the narrow sense. | |
| 181 |   The \emph{uncheck} phase is roughly dual, it prunes type-information
 | |
| 182 | before pretty printing. | |
| 183 | ||
| 184 |   A typical add-on for the check/uncheck syntax layer is the \hyperlink{command.abbreviation}{\mbox{\isa{\isacommand{abbreviation}}}} mechanism.  Here the user specifies syntactic
 | |
| 185 |   definitions that are managed by the system as polymorphic \isa{let} bindings.  These are expanded during the \isa{check}
 | |
| 186 |   phase, and contracted during the \isa{uncheck} phase, without
 | |
| 187 | affecting the type-assignment of the given terms. | |
| 188 | ||
| 189 | \medskip The precise meaning of type checking depends on the context | |
| 45260 | 190 | --- additional check/uncheck plugins might be defined in user space! | 
| 45258 | 191 | |
| 192 |   For example, the \hyperlink{command.class}{\mbox{\isa{\isacommand{class}}}} command defines a context where
 | |
| 193 |   \isa{check} treats certain type instances of overloaded
 | |
| 194 | constants according to the ``dictionary construction'' of its | |
| 195 | logical foundation. This involves ``type improvement'' | |
| 196 | (specialization of slightly too general types) and replacement by | |
| 197 |   certain locale parameters.  See also \cite{Haftmann-Wenzel:2009}.%
 | |
| 39885 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 198 | \end{isamarkuptext}%
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 199 | \isamarkuptrue% | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 200 | % | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 201 | \isadelimmlref | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 202 | % | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 203 | \endisadelimmlref | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 204 | % | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 205 | \isatagmlref | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 206 | % | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 207 | \begin{isamarkuptext}%
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 208 | \begin{mldecls}
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 209 |   \indexdef{}{ML}{Syntax.check\_typs}\verb|Syntax.check_typs: Proof.context -> typ list -> typ list| \\
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 210 |   \indexdef{}{ML}{Syntax.check\_terms}\verb|Syntax.check_terms: Proof.context -> term list -> term list| \\
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 211 |   \indexdef{}{ML}{Syntax.check\_props}\verb|Syntax.check_props: Proof.context -> term list -> term list| \\
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 212 |   \indexdef{}{ML}{Syntax.uncheck\_typs}\verb|Syntax.uncheck_typs: Proof.context -> typ list -> typ list| \\
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 213 |   \indexdef{}{ML}{Syntax.uncheck\_terms}\verb|Syntax.uncheck_terms: Proof.context -> term list -> term list| \\
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 214 |   \end{mldecls}
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 215 | |
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 216 |   \begin{description}
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 217 | |
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 218 | \item FIXME | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 219 | |
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 220 |   \end{description}%
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 221 | \end{isamarkuptext}%
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 222 | \isamarkuptrue% | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 223 | % | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 224 | \endisatagmlref | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 225 | {\isafoldmlref}%
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 226 | % | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 227 | \isadelimmlref | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 228 | % | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 229 | \endisadelimmlref | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 230 | % | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 231 | \isamarkupsection{Syntax translations%
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 232 | } | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 233 | \isamarkuptrue% | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 234 | % | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 235 | \begin{isamarkuptext}%
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 236 | FIXME% | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 237 | \end{isamarkuptext}%
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 238 | \isamarkuptrue% | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 239 | % | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 240 | \isadelimmlantiq | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 241 | % | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 242 | \endisadelimmlantiq | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 243 | % | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 244 | \isatagmlantiq | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 245 | % | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 246 | \begin{isamarkuptext}%
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 247 | \begin{matharray}{rcl}
 | 
| 40406 | 248 |   \indexdef{}{ML antiquotation}{class\_syntax}\hypertarget{ML antiquotation.class-syntax}{\hyperlink{ML antiquotation.class-syntax}{\mbox{\isa{class{\isaliteral{5F}{\isacharunderscore}}syntax}}}} & : & \isa{ML{\isaliteral{5F}{\isacharunderscore}}antiquotation} \\
 | 
| 249 |   \indexdef{}{ML antiquotation}{type\_syntax}\hypertarget{ML antiquotation.type-syntax}{\hyperlink{ML antiquotation.type-syntax}{\mbox{\isa{type{\isaliteral{5F}{\isacharunderscore}}syntax}}}} & : & \isa{ML{\isaliteral{5F}{\isacharunderscore}}antiquotation} \\
 | |
| 250 |   \indexdef{}{ML antiquotation}{const\_syntax}\hypertarget{ML antiquotation.const-syntax}{\hyperlink{ML antiquotation.const-syntax}{\mbox{\isa{const{\isaliteral{5F}{\isacharunderscore}}syntax}}}} & : & \isa{ML{\isaliteral{5F}{\isacharunderscore}}antiquotation} \\
 | |
| 251 |   \indexdef{}{ML antiquotation}{syntax\_const}\hypertarget{ML antiquotation.syntax-const}{\hyperlink{ML antiquotation.syntax-const}{\mbox{\isa{syntax{\isaliteral{5F}{\isacharunderscore}}const}}}} & : & \isa{ML{\isaliteral{5F}{\isacharunderscore}}antiquotation} \\
 | |
| 39885 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 252 |   \end{matharray}
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 253 | |
| 42510 
b9c106763325
use @{rail} antiquotation (with some nested markup);
 wenzelm parents: 
40406diff
changeset | 254 |   \begin{railoutput}
 | 
| 42662 | 255 | \rail@begin{4}{}
 | 
| 42510 
b9c106763325
use @{rail} antiquotation (with some nested markup);
 wenzelm parents: 
40406diff
changeset | 256 | \rail@bar | 
| 
b9c106763325
use @{rail} antiquotation (with some nested markup);
 wenzelm parents: 
40406diff
changeset | 257 | \rail@term{\hyperlink{ML antiquotation.class-syntax}{\mbox{\isa{class{\isaliteral{5F}{\isacharunderscore}}syntax}}}}[]
 | 
| 
b9c106763325
use @{rail} antiquotation (with some nested markup);
 wenzelm parents: 
40406diff
changeset | 258 | \rail@nextbar{1}
 | 
| 
b9c106763325
use @{rail} antiquotation (with some nested markup);
 wenzelm parents: 
40406diff
changeset | 259 | \rail@term{\hyperlink{ML antiquotation.type-syntax}{\mbox{\isa{type{\isaliteral{5F}{\isacharunderscore}}syntax}}}}[]
 | 
| 
b9c106763325
use @{rail} antiquotation (with some nested markup);
 wenzelm parents: 
40406diff
changeset | 260 | \rail@nextbar{2}
 | 
| 
b9c106763325
use @{rail} antiquotation (with some nested markup);
 wenzelm parents: 
40406diff
changeset | 261 | \rail@term{\hyperlink{ML antiquotation.const-syntax}{\mbox{\isa{const{\isaliteral{5F}{\isacharunderscore}}syntax}}}}[]
 | 
| 
b9c106763325
use @{rail} antiquotation (with some nested markup);
 wenzelm parents: 
40406diff
changeset | 262 | \rail@nextbar{3}
 | 
| 
b9c106763325
use @{rail} antiquotation (with some nested markup);
 wenzelm parents: 
40406diff
changeset | 263 | \rail@term{\hyperlink{ML antiquotation.syntax-const}{\mbox{\isa{syntax{\isaliteral{5F}{\isacharunderscore}}const}}}}[]
 | 
| 
b9c106763325
use @{rail} antiquotation (with some nested markup);
 wenzelm parents: 
40406diff
changeset | 264 | \rail@endbar | 
| 
b9c106763325
use @{rail} antiquotation (with some nested markup);
 wenzelm parents: 
40406diff
changeset | 265 | \rail@nont{\isa{name}}[]
 | 
| 
b9c106763325
use @{rail} antiquotation (with some nested markup);
 wenzelm parents: 
40406diff
changeset | 266 | \rail@end | 
| 
b9c106763325
use @{rail} antiquotation (with some nested markup);
 wenzelm parents: 
40406diff
changeset | 267 | \end{railoutput}
 | 
| 
b9c106763325
use @{rail} antiquotation (with some nested markup);
 wenzelm parents: 
40406diff
changeset | 268 | |
| 39885 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 269 | |
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 270 |   \begin{description}
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 271 | |
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 272 | \item FIXME | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 273 | |
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 274 |   \end{description}%
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 275 | \end{isamarkuptext}%
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 276 | \isamarkuptrue% | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 277 | % | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 278 | \endisatagmlantiq | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 279 | {\isafoldmlantiq}%
 | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 280 | % | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 281 | \isadelimmlantiq | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 282 | % | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 283 | \endisadelimmlantiq | 
| 
6a3f7941c3a0
cumulative update of generated files (since bf164c153d10);
 wenzelm parents: 
35001diff
changeset | 284 | % | 
| 30124 | 285 | \isadelimtheory | 
| 286 | % | |
| 287 | \endisadelimtheory | |
| 288 | % | |
| 289 | \isatagtheory | |
| 290 | \isacommand{end}\isamarkupfalse%
 | |
| 291 | % | |
| 292 | \endisatagtheory | |
| 293 | {\isafoldtheory}%
 | |
| 294 | % | |
| 295 | \isadelimtheory | |
| 296 | % | |
| 297 | \endisadelimtheory | |
| 298 | \isanewline | |
| 299 | \end{isabellebody}%
 | |
| 300 | %%% Local Variables: | |
| 301 | %%% mode: latex | |
| 302 | %%% TeX-master: "root" | |
| 303 | %%% End: |