doc-src/IsarRef/Thy/document/Synopsis.tex
author wenzelm
Tue, 31 May 2011 22:47:18 +0200
changeset 44121 ba23e83b0868
child 44122 36daee4cc9c9
permissions -rw-r--r--
added Synopsis, with some "Notepad" material;
wenzelm@44121
     1
%
wenzelm@44121
     2
\begin{isabellebody}%
wenzelm@44121
     3
\def\isabellecontext{Synopsis}%
wenzelm@44121
     4
%
wenzelm@44121
     5
\isadelimtheory
wenzelm@44121
     6
%
wenzelm@44121
     7
\endisadelimtheory
wenzelm@44121
     8
%
wenzelm@44121
     9
\isatagtheory
wenzelm@44121
    10
\isacommand{theory}\isamarkupfalse%
wenzelm@44121
    11
\ Synopsis\isanewline
wenzelm@44121
    12
\isakeyword{imports}\ Base\ Main\isanewline
wenzelm@44121
    13
\isakeyword{begin}%
wenzelm@44121
    14
\endisatagtheory
wenzelm@44121
    15
{\isafoldtheory}%
wenzelm@44121
    16
%
wenzelm@44121
    17
\isadelimtheory
wenzelm@44121
    18
%
wenzelm@44121
    19
\endisadelimtheory
wenzelm@44121
    20
%
wenzelm@44121
    21
\isamarkupchapter{Synopsis%
wenzelm@44121
    22
}
wenzelm@44121
    23
\isamarkuptrue%
wenzelm@44121
    24
%
wenzelm@44121
    25
\isamarkupsection{Notepad%
wenzelm@44121
    26
}
wenzelm@44121
    27
\isamarkuptrue%
wenzelm@44121
    28
%
wenzelm@44121
    29
\begin{isamarkuptext}%
wenzelm@44121
    30
An Isar proof body serves as mathematical notepad to compose logical
wenzelm@44121
    31
  content, consisting of facts, terms, types.%
wenzelm@44121
    32
\end{isamarkuptext}%
wenzelm@44121
    33
\isamarkuptrue%
wenzelm@44121
    34
%
wenzelm@44121
    35
\isamarkupsubsection{Facts%
wenzelm@44121
    36
}
wenzelm@44121
    37
\isamarkuptrue%
wenzelm@44121
    38
%
wenzelm@44121
    39
\begin{isamarkuptext}%
wenzelm@44121
    40
A fact is a simultaneous list of theorems.%
wenzelm@44121
    41
\end{isamarkuptext}%
wenzelm@44121
    42
\isamarkuptrue%
wenzelm@44121
    43
%
wenzelm@44121
    44
\isamarkupsubsubsection{Producing facts%
wenzelm@44121
    45
}
wenzelm@44121
    46
\isamarkuptrue%
wenzelm@44121
    47
\isacommand{notepad}\isamarkupfalse%
wenzelm@44121
    48
\isanewline
wenzelm@44121
    49
\isakeyword{begin}%
wenzelm@44121
    50
\isadelimproof
wenzelm@44121
    51
%
wenzelm@44121
    52
\endisadelimproof
wenzelm@44121
    53
%
wenzelm@44121
    54
\isatagproof
wenzelm@44121
    55
%
wenzelm@44121
    56
\begin{isamarkuptxt}%
wenzelm@44121
    57
Via assumption (``lambda''):%
wenzelm@44121
    58
\end{isamarkuptxt}%
wenzelm@44121
    59
\isamarkuptrue%
wenzelm@44121
    60
\ \ \isacommand{assume}\isamarkupfalse%
wenzelm@44121
    61
\ a{\isaliteral{3A}{\isacharcolon}}\ A%
wenzelm@44121
    62
\begin{isamarkuptxt}%
wenzelm@44121
    63
Via proof (``let''):%
wenzelm@44121
    64
\end{isamarkuptxt}%
wenzelm@44121
    65
\isamarkuptrue%
wenzelm@44121
    66
\ \ \isacommand{have}\isamarkupfalse%
wenzelm@44121
    67
\ b{\isaliteral{3A}{\isacharcolon}}\ B\ \isacommand{sorry}\isamarkupfalse%
wenzelm@44121
    68
%
wenzelm@44121
    69
\begin{isamarkuptxt}%
wenzelm@44121
    70
Via abbreviation (``let''):%
wenzelm@44121
    71
\end{isamarkuptxt}%
wenzelm@44121
    72
\isamarkuptrue%
wenzelm@44121
    73
\ \ \isacommand{note}\isamarkupfalse%
wenzelm@44121
    74
\ c\ {\isaliteral{3D}{\isacharequal}}\ a\ b%
wenzelm@44121
    75
\endisatagproof
wenzelm@44121
    76
{\isafoldproof}%
wenzelm@44121
    77
%
wenzelm@44121
    78
\isadelimproof
wenzelm@44121
    79
%
wenzelm@44121
    80
\endisadelimproof
wenzelm@44121
    81
\isanewline
wenzelm@44121
    82
\isanewline
wenzelm@44121
    83
\isacommand{end}\isamarkupfalse%
wenzelm@44121
    84
%
wenzelm@44121
    85
\isamarkupsubsubsection{Referencing facts%
wenzelm@44121
    86
}
wenzelm@44121
    87
\isamarkuptrue%
wenzelm@44121
    88
\isacommand{notepad}\isamarkupfalse%
wenzelm@44121
    89
\isanewline
wenzelm@44121
    90
\isakeyword{begin}%
wenzelm@44121
    91
\isadelimproof
wenzelm@44121
    92
%
wenzelm@44121
    93
\endisadelimproof
wenzelm@44121
    94
%
wenzelm@44121
    95
\isatagproof
wenzelm@44121
    96
%
wenzelm@44121
    97
\begin{isamarkuptxt}%
wenzelm@44121
    98
Via explicit name:%
wenzelm@44121
    99
\end{isamarkuptxt}%
wenzelm@44121
   100
\isamarkuptrue%
wenzelm@44121
   101
\ \ \isacommand{assume}\isamarkupfalse%
wenzelm@44121
   102
\ a{\isaliteral{3A}{\isacharcolon}}\ A\isanewline
wenzelm@44121
   103
\ \ \isacommand{note}\isamarkupfalse%
wenzelm@44121
   104
\ a%
wenzelm@44121
   105
\begin{isamarkuptxt}%
wenzelm@44121
   106
Via implicit name:%
wenzelm@44121
   107
\end{isamarkuptxt}%
wenzelm@44121
   108
\isamarkuptrue%
wenzelm@44121
   109
\ \ \isacommand{assume}\isamarkupfalse%
wenzelm@44121
   110
\ A\isanewline
wenzelm@44121
   111
\ \ \isacommand{note}\isamarkupfalse%
wenzelm@44121
   112
\ this%
wenzelm@44121
   113
\begin{isamarkuptxt}%
wenzelm@44121
   114
Via literal proposition (unification with results from the proof text):%
wenzelm@44121
   115
\end{isamarkuptxt}%
wenzelm@44121
   116
\isamarkuptrue%
wenzelm@44121
   117
\ \ \isacommand{assume}\isamarkupfalse%
wenzelm@44121
   118
\ A\isanewline
wenzelm@44121
   119
\ \ \isacommand{note}\isamarkupfalse%
wenzelm@44121
   120
\ {\isaliteral{60}{\isacharbackquoteopen}}A{\isaliteral{60}{\isacharbackquoteclose}}\isanewline
wenzelm@44121
   121
\isanewline
wenzelm@44121
   122
\ \ \isacommand{assume}\isamarkupfalse%
wenzelm@44121
   123
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C416E643E}{\isasymAnd}}x{\isaliteral{2E}{\isachardot}}\ B\ x{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@44121
   124
\ \ \isacommand{note}\isamarkupfalse%
wenzelm@44121
   125
\ {\isaliteral{60}{\isacharbackquoteopen}}B\ a{\isaliteral{60}{\isacharbackquoteclose}}\isanewline
wenzelm@44121
   126
\ \ \isacommand{note}\isamarkupfalse%
wenzelm@44121
   127
\ {\isaliteral{60}{\isacharbackquoteopen}}B\ b{\isaliteral{60}{\isacharbackquoteclose}}%
wenzelm@44121
   128
\endisatagproof
wenzelm@44121
   129
{\isafoldproof}%
wenzelm@44121
   130
%
wenzelm@44121
   131
\isadelimproof
wenzelm@44121
   132
%
wenzelm@44121
   133
\endisadelimproof
wenzelm@44121
   134
\isanewline
wenzelm@44121
   135
\isacommand{end}\isamarkupfalse%
wenzelm@44121
   136
%
wenzelm@44121
   137
\isamarkupsubsubsection{Manipulating facts%
wenzelm@44121
   138
}
wenzelm@44121
   139
\isamarkuptrue%
wenzelm@44121
   140
\isacommand{notepad}\isamarkupfalse%
wenzelm@44121
   141
\isanewline
wenzelm@44121
   142
\isakeyword{begin}%
wenzelm@44121
   143
\isadelimproof
wenzelm@44121
   144
%
wenzelm@44121
   145
\endisadelimproof
wenzelm@44121
   146
%
wenzelm@44121
   147
\isatagproof
wenzelm@44121
   148
%
wenzelm@44121
   149
\begin{isamarkuptxt}%
wenzelm@44121
   150
Instantiation:%
wenzelm@44121
   151
\end{isamarkuptxt}%
wenzelm@44121
   152
\isamarkuptrue%
wenzelm@44121
   153
\ \ \isacommand{assume}\isamarkupfalse%
wenzelm@44121
   154
\ a{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C416E643E}{\isasymAnd}}x{\isaliteral{2E}{\isachardot}}\ B\ x{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@44121
   155
\ \ \isacommand{note}\isamarkupfalse%
wenzelm@44121
   156
\ a\isanewline
wenzelm@44121
   157
\ \ \isacommand{note}\isamarkupfalse%
wenzelm@44121
   158
\ a\ {\isaliteral{5B}{\isacharbrackleft}}of\ b{\isaliteral{5D}{\isacharbrackright}}\isanewline
wenzelm@44121
   159
\ \ \isacommand{note}\isamarkupfalse%
wenzelm@44121
   160
\ a\ {\isaliteral{5B}{\isacharbrackleft}}\isakeyword{where}\ x\ {\isaliteral{3D}{\isacharequal}}\ b{\isaliteral{5D}{\isacharbrackright}}%
wenzelm@44121
   161
\begin{isamarkuptxt}%
wenzelm@44121
   162
Backchaining:%
wenzelm@44121
   163
\end{isamarkuptxt}%
wenzelm@44121
   164
\isamarkuptrue%
wenzelm@44121
   165
\ \ \isacommand{assume}\isamarkupfalse%
wenzelm@44121
   166
\ {\isadigit{1}}{\isaliteral{3A}{\isacharcolon}}\ A\isanewline
wenzelm@44121
   167
\ \ \isacommand{assume}\isamarkupfalse%
wenzelm@44121
   168
\ {\isadigit{2}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ C{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@44121
   169
\ \ \isacommand{note}\isamarkupfalse%
wenzelm@44121
   170
\ {\isadigit{2}}\ {\isaliteral{5B}{\isacharbrackleft}}OF\ {\isadigit{1}}{\isaliteral{5D}{\isacharbrackright}}\isanewline
wenzelm@44121
   171
\ \ \isacommand{note}\isamarkupfalse%
wenzelm@44121
   172
\ {\isadigit{1}}\ {\isaliteral{5B}{\isacharbrackleft}}THEN\ {\isadigit{2}}{\isaliteral{5D}{\isacharbrackright}}%
wenzelm@44121
   173
\begin{isamarkuptxt}%
wenzelm@44121
   174
Symmetric results:%
wenzelm@44121
   175
\end{isamarkuptxt}%
wenzelm@44121
   176
\isamarkuptrue%
wenzelm@44121
   177
\ \ \isacommand{assume}\isamarkupfalse%
wenzelm@44121
   178
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{3D}{\isacharequal}}\ y{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@44121
   179
\ \ \isacommand{note}\isamarkupfalse%
wenzelm@44121
   180
\ this\ {\isaliteral{5B}{\isacharbrackleft}}symmetric{\isaliteral{5D}{\isacharbrackright}}\isanewline
wenzelm@44121
   181
\isanewline
wenzelm@44121
   182
\ \ \isacommand{assume}\isamarkupfalse%
wenzelm@44121
   183
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C6E6F7465713E}{\isasymnoteq}}\ y{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@44121
   184
\ \ \isacommand{note}\isamarkupfalse%
wenzelm@44121
   185
\ this\ {\isaliteral{5B}{\isacharbrackleft}}symmetric{\isaliteral{5D}{\isacharbrackright}}%
wenzelm@44121
   186
\begin{isamarkuptxt}%
wenzelm@44121
   187
Adhoc-simplication (take care!):%
wenzelm@44121
   188
\end{isamarkuptxt}%
wenzelm@44121
   189
\isamarkuptrue%
wenzelm@44121
   190
\ \ \isacommand{assume}\isamarkupfalse%
wenzelm@44121
   191
\ {\isaliteral{22}{\isachardoublequoteopen}}P\ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{5B}{\isacharbrackleft}}{\isaliteral{5D}{\isacharbrackright}}\ {\isaliteral{40}{\isacharat}}\ xs{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@44121
   192
\ \ \isacommand{note}\isamarkupfalse%
wenzelm@44121
   193
\ this\ {\isaliteral{5B}{\isacharbrackleft}}simplified{\isaliteral{5D}{\isacharbrackright}}%
wenzelm@44121
   194
\endisatagproof
wenzelm@44121
   195
{\isafoldproof}%
wenzelm@44121
   196
%
wenzelm@44121
   197
\isadelimproof
wenzelm@44121
   198
%
wenzelm@44121
   199
\endisadelimproof
wenzelm@44121
   200
\isanewline
wenzelm@44121
   201
\isacommand{end}\isamarkupfalse%
wenzelm@44121
   202
%
wenzelm@44121
   203
\isamarkupsubsubsection{Projections%
wenzelm@44121
   204
}
wenzelm@44121
   205
\isamarkuptrue%
wenzelm@44121
   206
%
wenzelm@44121
   207
\begin{isamarkuptext}%
wenzelm@44121
   208
Isar facts consist of multiple theorems.  There is notation to project
wenzelm@44121
   209
  interval ranges.%
wenzelm@44121
   210
\end{isamarkuptext}%
wenzelm@44121
   211
\isamarkuptrue%
wenzelm@44121
   212
\isacommand{notepad}\isamarkupfalse%
wenzelm@44121
   213
\isanewline
wenzelm@44121
   214
\isakeyword{begin}\isanewline
wenzelm@44121
   215
%
wenzelm@44121
   216
\isadelimproof
wenzelm@44121
   217
\ \ %
wenzelm@44121
   218
\endisadelimproof
wenzelm@44121
   219
%
wenzelm@44121
   220
\isatagproof
wenzelm@44121
   221
\isacommand{assume}\isamarkupfalse%
wenzelm@44121
   222
\ stuff{\isaliteral{3A}{\isacharcolon}}\ A\ B\ C\ D\isanewline
wenzelm@44121
   223
\ \ \isacommand{note}\isamarkupfalse%
wenzelm@44121
   224
\ stuff{\isaliteral{28}{\isacharparenleft}}{\isadigit{1}}{\isaliteral{29}{\isacharparenright}}\isanewline
wenzelm@44121
   225
\ \ \isacommand{note}\isamarkupfalse%
wenzelm@44121
   226
\ stuff{\isaliteral{28}{\isacharparenleft}}{\isadigit{2}}{\isaliteral{2D}{\isacharminus}}{\isadigit{3}}{\isaliteral{29}{\isacharparenright}}\isanewline
wenzelm@44121
   227
\ \ \isacommand{note}\isamarkupfalse%
wenzelm@44121
   228
\ stuff{\isaliteral{28}{\isacharparenleft}}{\isadigit{2}}{\isaliteral{2D}{\isacharminus}}{\isaliteral{29}{\isacharparenright}}%
wenzelm@44121
   229
\endisatagproof
wenzelm@44121
   230
{\isafoldproof}%
wenzelm@44121
   231
%
wenzelm@44121
   232
\isadelimproof
wenzelm@44121
   233
\isanewline
wenzelm@44121
   234
%
wenzelm@44121
   235
\endisadelimproof
wenzelm@44121
   236
\isacommand{end}\isamarkupfalse%
wenzelm@44121
   237
%
wenzelm@44121
   238
\isamarkupsubsubsection{Naming conventions%
wenzelm@44121
   239
}
wenzelm@44121
   240
\isamarkuptrue%
wenzelm@44121
   241
%
wenzelm@44121
   242
\begin{isamarkuptext}%
wenzelm@44121
   243
\begin{itemize}
wenzelm@44121
   244
wenzelm@44121
   245
  \item Lower-case identifiers are usually preferred.
wenzelm@44121
   246
wenzelm@44121
   247
  \item Facts can be named after the main term within the proposition.
wenzelm@44121
   248
wenzelm@44121
   249
  \item Facts should \emph{not} be named after the command that
wenzelm@44121
   250
  introduced them (\hyperlink{command.assume}{\mbox{\isa{\isacommand{assume}}}}, \hyperlink{command.have}{\mbox{\isa{\isacommand{have}}}}).  This is
wenzelm@44121
   251
  misleading and hard to maintain.
wenzelm@44121
   252
wenzelm@44121
   253
  \item Natural numbers can be used as ``meaningless'' names (more
wenzelm@44121
   254
  appropriate than \isa{{\isaliteral{22}{\isachardoublequote}}a{\isadigit{1}}{\isaliteral{22}{\isachardoublequote}}}, \isa{{\isaliteral{22}{\isachardoublequote}}a{\isadigit{2}}{\isaliteral{22}{\isachardoublequote}}} etc.)
wenzelm@44121
   255
wenzelm@44121
   256
  \item Symbolic identifiers are supported (e.g. \isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}}, \isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{2A}{\isacharasterisk}}{\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}}, \isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{2A}{\isacharasterisk}}{\isaliteral{2A}{\isacharasterisk}}{\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}}).
wenzelm@44121
   257
wenzelm@44121
   258
  \end{itemize}%
wenzelm@44121
   259
\end{isamarkuptext}%
wenzelm@44121
   260
\isamarkuptrue%
wenzelm@44121
   261
%
wenzelm@44121
   262
\isamarkupsubsection{Block structure%
wenzelm@44121
   263
}
wenzelm@44121
   264
\isamarkuptrue%
wenzelm@44121
   265
%
wenzelm@44121
   266
\begin{isamarkuptext}%
wenzelm@44121
   267
The formal notepad is block structured.  The fact produced by the last
wenzelm@44121
   268
  entry of a block is exported into the outer context.%
wenzelm@44121
   269
\end{isamarkuptext}%
wenzelm@44121
   270
\isamarkuptrue%
wenzelm@44121
   271
\isacommand{notepad}\isamarkupfalse%
wenzelm@44121
   272
\isanewline
wenzelm@44121
   273
\isakeyword{begin}\isanewline
wenzelm@44121
   274
%
wenzelm@44121
   275
\isadelimproof
wenzelm@44121
   276
\ \ %
wenzelm@44121
   277
\endisadelimproof
wenzelm@44121
   278
%
wenzelm@44121
   279
\isatagproof
wenzelm@44121
   280
\isacommand{{\isaliteral{7B}{\isacharbraceleft}}}\isamarkupfalse%
wenzelm@44121
   281
\isanewline
wenzelm@44121
   282
\ \ \ \ \isacommand{have}\isamarkupfalse%
wenzelm@44121
   283
\ a{\isaliteral{3A}{\isacharcolon}}\ A\ \isacommand{sorry}\isamarkupfalse%
wenzelm@44121
   284
\isanewline
wenzelm@44121
   285
\ \ \ \ \isacommand{have}\isamarkupfalse%
wenzelm@44121
   286
\ b{\isaliteral{3A}{\isacharcolon}}\ B\ \isacommand{sorry}\isamarkupfalse%
wenzelm@44121
   287
\isanewline
wenzelm@44121
   288
\ \ \ \ \isacommand{note}\isamarkupfalse%
wenzelm@44121
   289
\ a\ b\isanewline
wenzelm@44121
   290
\ \ \isacommand{{\isaliteral{7D}{\isacharbraceright}}}\isamarkupfalse%
wenzelm@44121
   291
\isanewline
wenzelm@44121
   292
\ \ \isacommand{note}\isamarkupfalse%
wenzelm@44121
   293
\ this\isanewline
wenzelm@44121
   294
\ \ \isacommand{note}\isamarkupfalse%
wenzelm@44121
   295
\ {\isaliteral{60}{\isacharbackquoteopen}}A{\isaliteral{60}{\isacharbackquoteclose}}\isanewline
wenzelm@44121
   296
\ \ \isacommand{note}\isamarkupfalse%
wenzelm@44121
   297
\ {\isaliteral{60}{\isacharbackquoteopen}}B{\isaliteral{60}{\isacharbackquoteclose}}%
wenzelm@44121
   298
\endisatagproof
wenzelm@44121
   299
{\isafoldproof}%
wenzelm@44121
   300
%
wenzelm@44121
   301
\isadelimproof
wenzelm@44121
   302
\isanewline
wenzelm@44121
   303
%
wenzelm@44121
   304
\endisadelimproof
wenzelm@44121
   305
\isacommand{end}\isamarkupfalse%
wenzelm@44121
   306
%
wenzelm@44121
   307
\begin{isamarkuptext}%
wenzelm@44121
   308
Explicit blocks as well as implicit blocks of nested goal
wenzelm@44121
   309
  statements (e.g.\ \hyperlink{command.have}{\mbox{\isa{\isacommand{have}}}}) automatically introduce one extra
wenzelm@44121
   310
  pair of parentheses in reserve.  The \hyperlink{command.next}{\mbox{\isa{\isacommand{next}}}} command allows
wenzelm@44121
   311
  to ``jump'' these sub-blocks.%
wenzelm@44121
   312
\end{isamarkuptext}%
wenzelm@44121
   313
\isamarkuptrue%
wenzelm@44121
   314
\isacommand{notepad}\isamarkupfalse%
wenzelm@44121
   315
\isanewline
wenzelm@44121
   316
\isakeyword{begin}\isanewline
wenzelm@44121
   317
%
wenzelm@44121
   318
\isadelimproof
wenzelm@44121
   319
\isanewline
wenzelm@44121
   320
\ \ %
wenzelm@44121
   321
\endisadelimproof
wenzelm@44121
   322
%
wenzelm@44121
   323
\isatagproof
wenzelm@44121
   324
\isacommand{{\isaliteral{7B}{\isacharbraceleft}}}\isamarkupfalse%
wenzelm@44121
   325
\isanewline
wenzelm@44121
   326
\ \ \ \ \isacommand{have}\isamarkupfalse%
wenzelm@44121
   327
\ a{\isaliteral{3A}{\isacharcolon}}\ A\ \isacommand{sorry}\isamarkupfalse%
wenzelm@44121
   328
\isanewline
wenzelm@44121
   329
\ \ \isacommand{next}\isamarkupfalse%
wenzelm@44121
   330
\isanewline
wenzelm@44121
   331
\ \ \ \ \isacommand{have}\isamarkupfalse%
wenzelm@44121
   332
\ b{\isaliteral{3A}{\isacharcolon}}\ B\isanewline
wenzelm@44121
   333
\ \ \ \ \isacommand{proof}\isamarkupfalse%
wenzelm@44121
   334
\ {\isaliteral{2D}{\isacharminus}}\isanewline
wenzelm@44121
   335
\ \ \ \ \ \ \isacommand{show}\isamarkupfalse%
wenzelm@44121
   336
\ B\ \isacommand{sorry}\isamarkupfalse%
wenzelm@44121
   337
\isanewline
wenzelm@44121
   338
\ \ \ \ \isacommand{next}\isamarkupfalse%
wenzelm@44121
   339
\isanewline
wenzelm@44121
   340
\ \ \ \ \ \ \isacommand{have}\isamarkupfalse%
wenzelm@44121
   341
\ c{\isaliteral{3A}{\isacharcolon}}\ C\ \isacommand{sorry}\isamarkupfalse%
wenzelm@44121
   342
\isanewline
wenzelm@44121
   343
\ \ \ \ \isacommand{next}\isamarkupfalse%
wenzelm@44121
   344
\isanewline
wenzelm@44121
   345
\ \ \ \ \ \ \isacommand{have}\isamarkupfalse%
wenzelm@44121
   346
\ d{\isaliteral{3A}{\isacharcolon}}\ D\ \isacommand{sorry}\isamarkupfalse%
wenzelm@44121
   347
\isanewline
wenzelm@44121
   348
\ \ \ \ \isacommand{qed}\isamarkupfalse%
wenzelm@44121
   349
\isanewline
wenzelm@44121
   350
\ \ \isacommand{{\isaliteral{7D}{\isacharbraceright}}}\isamarkupfalse%
wenzelm@44121
   351
%
wenzelm@44121
   352
\begin{isamarkuptxt}%
wenzelm@44121
   353
Alternative version with explicit parentheses everywhere:%
wenzelm@44121
   354
\end{isamarkuptxt}%
wenzelm@44121
   355
\isamarkuptrue%
wenzelm@44121
   356
\ \ \isacommand{{\isaliteral{7B}{\isacharbraceleft}}}\isamarkupfalse%
wenzelm@44121
   357
\isanewline
wenzelm@44121
   358
\ \ \ \ \isacommand{{\isaliteral{7B}{\isacharbraceleft}}}\isamarkupfalse%
wenzelm@44121
   359
\isanewline
wenzelm@44121
   360
\ \ \ \ \ \ \isacommand{have}\isamarkupfalse%
wenzelm@44121
   361
\ a{\isaliteral{3A}{\isacharcolon}}\ A\ \isacommand{sorry}\isamarkupfalse%
wenzelm@44121
   362
\isanewline
wenzelm@44121
   363
\ \ \ \ \isacommand{{\isaliteral{7D}{\isacharbraceright}}}\isamarkupfalse%
wenzelm@44121
   364
\isanewline
wenzelm@44121
   365
\ \ \ \ \isacommand{{\isaliteral{7B}{\isacharbraceleft}}}\isamarkupfalse%
wenzelm@44121
   366
\isanewline
wenzelm@44121
   367
\ \ \ \ \ \ \isacommand{have}\isamarkupfalse%
wenzelm@44121
   368
\ b{\isaliteral{3A}{\isacharcolon}}\ B\isanewline
wenzelm@44121
   369
\ \ \ \ \ \ \isacommand{proof}\isamarkupfalse%
wenzelm@44121
   370
\ {\isaliteral{2D}{\isacharminus}}\isanewline
wenzelm@44121
   371
\ \ \ \ \ \ \ \ \isacommand{{\isaliteral{7B}{\isacharbraceleft}}}\isamarkupfalse%
wenzelm@44121
   372
\isanewline
wenzelm@44121
   373
\ \ \ \ \ \ \ \ \ \ \isacommand{show}\isamarkupfalse%
wenzelm@44121
   374
\ B\ \isacommand{sorry}\isamarkupfalse%
wenzelm@44121
   375
\isanewline
wenzelm@44121
   376
\ \ \ \ \ \ \ \ \isacommand{{\isaliteral{7D}{\isacharbraceright}}}\isamarkupfalse%
wenzelm@44121
   377
\isanewline
wenzelm@44121
   378
\ \ \ \ \ \ \ \ \isacommand{{\isaliteral{7B}{\isacharbraceleft}}}\isamarkupfalse%
wenzelm@44121
   379
\isanewline
wenzelm@44121
   380
\ \ \ \ \ \ \ \ \ \ \isacommand{have}\isamarkupfalse%
wenzelm@44121
   381
\ c{\isaliteral{3A}{\isacharcolon}}\ C\ \isacommand{sorry}\isamarkupfalse%
wenzelm@44121
   382
\isanewline
wenzelm@44121
   383
\ \ \ \ \ \ \ \ \isacommand{{\isaliteral{7D}{\isacharbraceright}}}\isamarkupfalse%
wenzelm@44121
   384
\isanewline
wenzelm@44121
   385
\ \ \ \ \ \ \ \ \isacommand{{\isaliteral{7B}{\isacharbraceleft}}}\isamarkupfalse%
wenzelm@44121
   386
\isanewline
wenzelm@44121
   387
\ \ \ \ \ \ \ \ \ \ \isacommand{have}\isamarkupfalse%
wenzelm@44121
   388
\ d{\isaliteral{3A}{\isacharcolon}}\ D\ \isacommand{sorry}\isamarkupfalse%
wenzelm@44121
   389
\isanewline
wenzelm@44121
   390
\ \ \ \ \ \ \ \ \isacommand{{\isaliteral{7D}{\isacharbraceright}}}\isamarkupfalse%
wenzelm@44121
   391
\isanewline
wenzelm@44121
   392
\ \ \ \ \ \ \isacommand{qed}\isamarkupfalse%
wenzelm@44121
   393
\isanewline
wenzelm@44121
   394
\ \ \ \ \isacommand{{\isaliteral{7D}{\isacharbraceright}}}\isamarkupfalse%
wenzelm@44121
   395
\isanewline
wenzelm@44121
   396
\ \ \isacommand{{\isaliteral{7D}{\isacharbraceright}}}\isamarkupfalse%
wenzelm@44121
   397
%
wenzelm@44121
   398
\endisatagproof
wenzelm@44121
   399
{\isafoldproof}%
wenzelm@44121
   400
%
wenzelm@44121
   401
\isadelimproof
wenzelm@44121
   402
\isanewline
wenzelm@44121
   403
%
wenzelm@44121
   404
\endisadelimproof
wenzelm@44121
   405
\isanewline
wenzelm@44121
   406
\isacommand{end}\isamarkupfalse%
wenzelm@44121
   407
%
wenzelm@44121
   408
\isamarkupsubsection{Terms and Types%
wenzelm@44121
   409
}
wenzelm@44121
   410
\isamarkuptrue%
wenzelm@44121
   411
\isacommand{notepad}\isamarkupfalse%
wenzelm@44121
   412
\isanewline
wenzelm@44121
   413
\isakeyword{begin}%
wenzelm@44121
   414
\isadelimproof
wenzelm@44121
   415
%
wenzelm@44121
   416
\endisadelimproof
wenzelm@44121
   417
%
wenzelm@44121
   418
\isatagproof
wenzelm@44121
   419
%
wenzelm@44121
   420
\begin{isamarkuptxt}%
wenzelm@44121
   421
Locally fixed entities:%
wenzelm@44121
   422
\end{isamarkuptxt}%
wenzelm@44121
   423
\isamarkuptrue%
wenzelm@44121
   424
\ \ \isacommand{fix}\isamarkupfalse%
wenzelm@44121
   425
\ x\ \ \ %
wenzelm@44121
   426
\isamarkupcmt{local constant, without any type information yet%
wenzelm@44121
   427
}
wenzelm@44121
   428
\isanewline
wenzelm@44121
   429
\ \ \isacommand{fix}\isamarkupfalse%
wenzelm@44121
   430
\ x\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{27}{\isacharprime}}a\ \ %
wenzelm@44121
   431
\isamarkupcmt{variant with explicit type-constraint for subsequent use%
wenzelm@44121
   432
}
wenzelm@44121
   433
\isanewline
wenzelm@44121
   434
\isanewline
wenzelm@44121
   435
\ \ \isacommand{fix}\isamarkupfalse%
wenzelm@44121
   436
\ a\ b\isanewline
wenzelm@44121
   437
\ \ \isacommand{assume}\isamarkupfalse%
wenzelm@44121
   438
\ {\isaliteral{22}{\isachardoublequoteopen}}a\ {\isaliteral{3D}{\isacharequal}}\ b{\isaliteral{22}{\isachardoublequoteclose}}\ \ %
wenzelm@44121
   439
\isamarkupcmt{type assignment at first occurrence in concrete term%
wenzelm@44121
   440
}
wenzelm@44121
   441
%
wenzelm@44121
   442
\begin{isamarkuptxt}%
wenzelm@44121
   443
Definitions (non-polymorphic):%
wenzelm@44121
   444
\end{isamarkuptxt}%
wenzelm@44121
   445
\isamarkuptrue%
wenzelm@44121
   446
\ \ \isacommand{def}\isamarkupfalse%
wenzelm@44121
   447
\ x\ {\isaliteral{5C3C65717569763E}{\isasymequiv}}\ {\isaliteral{22}{\isachardoublequoteopen}}t{\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}{\isaliteral{27}{\isacharprime}}a{\isaliteral{22}{\isachardoublequoteclose}}%
wenzelm@44121
   448
\begin{isamarkuptxt}%
wenzelm@44121
   449
Abbreviations (polymorphic):%
wenzelm@44121
   450
\end{isamarkuptxt}%
wenzelm@44121
   451
\isamarkuptrue%
wenzelm@44121
   452
\ \ \isacommand{let}\isamarkupfalse%
wenzelm@44121
   453
\ {\isaliteral{3F}{\isacharquery}}f\ {\isaliteral{3D}{\isacharequal}}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6C616D6264613E}{\isasymlambda}}x{\isaliteral{2E}{\isachardot}}\ x{\isaliteral{22}{\isachardoublequoteclose}}%
wenzelm@44121
   454
\endisatagproof
wenzelm@44121
   455
{\isafoldproof}%
wenzelm@44121
   456
%
wenzelm@44121
   457
\isadelimproof
wenzelm@44121
   458
%
wenzelm@44121
   459
\endisadelimproof
wenzelm@44121
   460
\isanewline
wenzelm@44121
   461
\ \ \isacommand{term}\isamarkupfalse%
wenzelm@44121
   462
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{3F}{\isacharquery}}f\ {\isaliteral{3F}{\isacharquery}}f{\isaliteral{22}{\isachardoublequoteclose}}%
wenzelm@44121
   463
\isadelimproof
wenzelm@44121
   464
%
wenzelm@44121
   465
\endisadelimproof
wenzelm@44121
   466
%
wenzelm@44121
   467
\isatagproof
wenzelm@44121
   468
%
wenzelm@44121
   469
\begin{isamarkuptxt}%
wenzelm@44121
   470
Notation:%
wenzelm@44121
   471
\end{isamarkuptxt}%
wenzelm@44121
   472
\isamarkuptrue%
wenzelm@44121
   473
\ \ \isacommand{write}\isamarkupfalse%
wenzelm@44121
   474
\ x\ \ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{2A}{\isacharasterisk}}{\isaliteral{2A}{\isacharasterisk}}{\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequoteclose}}{\isaliteral{29}{\isacharparenright}}%
wenzelm@44121
   475
\endisatagproof
wenzelm@44121
   476
{\isafoldproof}%
wenzelm@44121
   477
%
wenzelm@44121
   478
\isadelimproof
wenzelm@44121
   479
%
wenzelm@44121
   480
\endisadelimproof
wenzelm@44121
   481
\isanewline
wenzelm@44121
   482
\isacommand{end}\isamarkupfalse%
wenzelm@44121
   483
\isanewline
wenzelm@44121
   484
%
wenzelm@44121
   485
\isadelimtheory
wenzelm@44121
   486
\isanewline
wenzelm@44121
   487
%
wenzelm@44121
   488
\endisadelimtheory
wenzelm@44121
   489
%
wenzelm@44121
   490
\isatagtheory
wenzelm@44121
   491
\isacommand{end}\isamarkupfalse%
wenzelm@44121
   492
%
wenzelm@44121
   493
\endisatagtheory
wenzelm@44121
   494
{\isafoldtheory}%
wenzelm@44121
   495
%
wenzelm@44121
   496
\isadelimtheory
wenzelm@44121
   497
%
wenzelm@44121
   498
\endisadelimtheory
wenzelm@44121
   499
\end{isabellebody}%
wenzelm@44121
   500
%%% Local Variables:
wenzelm@44121
   501
%%% mode: latex
wenzelm@44121
   502
%%% TeX-master: "root"
wenzelm@44121
   503
%%% End: