doc-src/Codegen/Thy/document/Evaluation.tex
author haftmann
Tue, 07 Sep 2010 16:58:01 +0200
changeset 39210 985b13c5a61d
parent 39068 5ac590e8b320
child 39599 d9c247f7afa3
permissions -rw-r--r--
updated generated document
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
38560
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
     1
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
     2
\begin{isabellebody}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
     3
\def\isabellecontext{Evaluation}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
     4
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
     5
\isadelimtheory
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
     6
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
     7
\endisadelimtheory
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
     8
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
     9
\isatagtheory
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    10
\isacommand{theory}\isamarkupfalse%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    11
\ Evaluation\isanewline
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    12
\isakeyword{imports}\ Setup\isanewline
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    13
\isakeyword{begin}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    14
\endisatagtheory
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    15
{\isafoldtheory}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    16
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    17
\isadelimtheory
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    18
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    19
\endisadelimtheory
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    20
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    21
\isamarkupsection{Evaluation%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    22
}
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    23
\isamarkuptrue%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    24
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    25
\begin{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    26
Introduction%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    27
\end{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    28
\isamarkuptrue%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    29
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    30
\isamarkupsubsection{Evaluation techniques%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    31
}
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    32
\isamarkuptrue%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    33
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    34
\begin{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    35
simplifier%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    36
\end{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    37
\isamarkuptrue%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    38
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    39
\begin{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    40
nbe%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    41
\end{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    42
\isamarkuptrue%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    43
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    44
\begin{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    45
eval target: SML standalone vs. Isabelle/SML, example, soundness%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    46
\end{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    47
\isamarkuptrue%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    48
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    49
\isamarkupsubsection{Dynamic evaluation%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    50
}
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    51
\isamarkuptrue%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    52
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    53
\begin{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    54
value (three variants)%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    55
\end{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    56
\isamarkuptrue%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    57
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    58
\begin{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    59
methods (three variants)%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    60
\end{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    61
\isamarkuptrue%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    62
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    63
\begin{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    64
corresponding ML interfaces%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    65
\end{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    66
\isamarkuptrue%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    67
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    68
\isamarkupsubsection{Static evaluation%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    69
}
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    70
\isamarkuptrue%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    71
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    72
\begin{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    73
code_simp, nbe (tbd), Eval (tbd, in simple fashion)%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    74
\end{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    75
\isamarkuptrue%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    76
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    77
\begin{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    78
hand-written: code antiquotation%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    79
\end{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    80
\isamarkuptrue%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    81
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    82
\isamarkupsubsection{Hybrid techniques%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    83
}
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    84
\isamarkuptrue%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    85
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    86
\begin{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    87
code reflect runtime%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    88
\end{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    89
\isamarkuptrue%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    90
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    91
\begin{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    92
code reflect external%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    93
\end{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    94
\isamarkuptrue%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    95
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    96
\begin{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    97
FIXME here the old sections follow%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    98
\end{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
    99
\isamarkuptrue%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   100
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   101
\isamarkupsubsection{Evaluation oracle%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   102
}
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   103
\isamarkuptrue%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   104
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   105
\begin{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   106
Code generation may also be used to \emph{evaluate} expressions
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   107
  (using \isa{SML} as target language of course).
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   108
  For instance, the \indexdef{}{command}{value}\hypertarget{command.value}{\hyperlink{command.value}{\mbox{\isa{\isacommand{value}}}}} reduces an expression to a
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   109
  normal form with respect to the underlying code equations:%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   110
\end{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   111
\isamarkuptrue%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   112
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   113
\isadelimquote
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   114
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   115
\endisadelimquote
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   116
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   117
\isatagquote
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   118
\isacommand{value}\isamarkupfalse%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   119
\ {\isachardoublequoteopen}{\isadigit{4}}{\isadigit{2}}\ {\isacharslash}\ {\isacharparenleft}{\isadigit{1}}{\isadigit{2}}\ {\isacharcolon}{\isacharcolon}\ rat{\isacharparenright}{\isachardoublequoteclose}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   120
\endisatagquote
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   121
{\isafoldquote}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   122
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   123
\isadelimquote
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   124
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   125
\endisadelimquote
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   126
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   127
\begin{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   128
\noindent will display \isa{{\isadigit{7}}\ {\isacharslash}\ {\isadigit{2}}}.
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   129
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   130
  The \hyperlink{method.eval}{\mbox{\isa{eval}}} method tries to reduce a goal by code generation to \isa{True}
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   131
  and solves it in that case, but fails otherwise:%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   132
\end{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   133
\isamarkuptrue%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   134
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   135
\isadelimquote
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   136
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   137
\endisadelimquote
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   138
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   139
\isatagquote
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   140
\isacommand{lemma}\isamarkupfalse%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   141
\ {\isachardoublequoteopen}{\isadigit{4}}{\isadigit{2}}\ {\isacharslash}\ {\isacharparenleft}{\isadigit{1}}{\isadigit{2}}\ {\isacharcolon}{\isacharcolon}\ rat{\isacharparenright}\ {\isacharequal}\ {\isadigit{7}}\ {\isacharslash}\ {\isadigit{2}}{\isachardoublequoteclose}\isanewline
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   142
\ \ \isacommand{by}\isamarkupfalse%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   143
\ eval%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   144
\endisatagquote
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   145
{\isafoldquote}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   146
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   147
\isadelimquote
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   148
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   149
\endisadelimquote
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   150
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   151
\begin{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   152
\noindent The soundness of the \hyperlink{method.eval}{\mbox{\isa{eval}}} method depends crucially 
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   153
  on the correctness of the code generator;  this is one of the reasons
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   154
  why you should not use adaptation (see \secref{sec:adaptation}) frivolously.%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   155
\end{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   156
\isamarkuptrue%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   157
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   158
\isamarkupsubsubsection{Code antiquotation%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   159
}
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   160
\isamarkuptrue%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   161
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   162
\begin{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   163
In scenarios involving techniques like reflection it is quite common
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   164
  that code generated from a theory forms the basis for implementing
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   165
  a proof procedure in \isa{SML}.  To facilitate interfacing of generated code
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   166
  with system code, the code generator provides a \isa{code} antiquotation:%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   167
\end{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   168
\isamarkuptrue%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   169
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   170
\isadelimquote
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   171
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   172
\endisadelimquote
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   173
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   174
\isatagquote
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   175
\isacommand{datatype}\isamarkupfalse%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   176
\ form\ {\isacharequal}\ T\ {\isacharbar}\ F\ {\isacharbar}\ And\ form\ form\ {\isacharbar}\ Or\ form\ form\ %
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   177
\endisatagquote
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   178
{\isafoldquote}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   179
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   180
\isadelimquote
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   181
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   182
\endisadelimquote
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   183
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   184
\isadelimquotett
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   185
\ %
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   186
\endisadelimquotett
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   187
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   188
\isatagquotett
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   189
\isacommand{ML}\isamarkupfalse%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   190
\ {\isacharverbatimopen}\isanewline
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   191
\ \ fun\ eval{\isacharunderscore}form\ %
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   192
\isaantiq
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   193
code\ T%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   194
\endisaantiq
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   195
\ {\isacharequal}\ true\isanewline
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   196
\ \ \ \ {\isacharbar}\ eval{\isacharunderscore}form\ %
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   197
\isaantiq
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   198
code\ F%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   199
\endisaantiq
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   200
\ {\isacharequal}\ false\isanewline
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   201
\ \ \ \ {\isacharbar}\ eval{\isacharunderscore}form\ {\isacharparenleft}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   202
\isaantiq
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   203
code\ And%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   204
\endisaantiq
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   205
\ {\isacharparenleft}p{\isacharcomma}\ q{\isacharparenright}{\isacharparenright}\ {\isacharequal}\isanewline
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   206
\ \ \ \ \ \ \ \ eval{\isacharunderscore}form\ p\ andalso\ eval{\isacharunderscore}form\ q\isanewline
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   207
\ \ \ \ {\isacharbar}\ eval{\isacharunderscore}form\ {\isacharparenleft}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   208
\isaantiq
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   209
code\ Or%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   210
\endisaantiq
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   211
\ {\isacharparenleft}p{\isacharcomma}\ q{\isacharparenright}{\isacharparenright}\ {\isacharequal}\isanewline
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   212
\ \ \ \ \ \ \ \ eval{\isacharunderscore}form\ p\ orelse\ eval{\isacharunderscore}form\ q{\isacharsemicolon}\isanewline
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   213
{\isacharverbatimclose}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   214
\endisatagquotett
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   215
{\isafoldquotett}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   216
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   217
\isadelimquotett
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   218
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   219
\endisadelimquotett
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   220
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   221
\begin{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   222
\noindent \isa{code} takes as argument the name of a constant;  after the
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   223
  whole \isa{SML} is read, the necessary code is generated transparently
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   224
  and the corresponding constant names are inserted.  This technique also
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   225
  allows to use pattern matching on constructors stemming from compiled
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   226
  \isa{datatypes}.
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   227
39068
5ac590e8b320 updated
haftmann
parents: 38560
diff changeset
   228
  For a less simplistic example, theory \isa{Ferrack} is
38560
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   229
  a good reference.%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   230
\end{isamarkuptext}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   231
\isamarkuptrue%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   232
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   233
\isadelimtheory
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   234
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   235
\endisadelimtheory
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   236
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   237
\isatagtheory
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   238
\isacommand{end}\isamarkupfalse%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   239
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   240
\endisatagtheory
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   241
{\isafoldtheory}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   242
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   243
\isadelimtheory
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   244
%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   245
\endisadelimtheory
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   246
\isanewline
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   247
\end{isabellebody}%
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   248
%%% Local Variables:
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   249
%%% mode: latex
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   250
%%% TeX-master: "root"
004c35739d75 added generated file;
wenzelm
parents:
diff changeset
   251
%%% End: