doc-src/IsarRef/Thy/document/Synopsis.tex
author webertj
Fri, 17 Aug 2012 20:31:12 +0200
changeset 48853 ec82c33c75f8
parent 45820 1fe2dd6d5086
permissions -rw-r--r--
Typo fixed.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
42917
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
     1
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
     2
\begin{isabellebody}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
     3
\def\isabellecontext{Synopsis}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
     4
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
     5
\isadelimtheory
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
     6
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
     7
\endisadelimtheory
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
     8
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
     9
\isatagtheory
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
    10
\isacommand{theory}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
    11
\ Synopsis\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
    12
\isakeyword{imports}\ Base\ Main\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
    13
\isakeyword{begin}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
    14
\endisatagtheory
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
    15
{\isafoldtheory}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
    16
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
    17
\isadelimtheory
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
    18
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
    19
\endisadelimtheory
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
    20
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
    21
\isamarkupchapter{Synopsis%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
    22
}
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
    23
\isamarkuptrue%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
    24
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
    25
\isamarkupsection{Notepad%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
    26
}
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
    27
\isamarkuptrue%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
    28
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
    29
\begin{isamarkuptext}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
    30
An Isar proof body serves as mathematical notepad to compose logical
42918
wenzelm
parents: 42917
diff changeset
    31
  content, consisting of types, terms, facts.%
42917
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
    32
\end{isamarkuptext}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
    33
\isamarkuptrue%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
    34
%
42918
wenzelm
parents: 42917
diff changeset
    35
\isamarkupsubsection{Types and terms%
wenzelm
parents: 42917
diff changeset
    36
}
wenzelm
parents: 42917
diff changeset
    37
\isamarkuptrue%
wenzelm
parents: 42917
diff changeset
    38
\isacommand{notepad}\isamarkupfalse%
wenzelm
parents: 42917
diff changeset
    39
\isanewline
wenzelm
parents: 42917
diff changeset
    40
\isakeyword{begin}%
wenzelm
parents: 42917
diff changeset
    41
\isadelimproof
wenzelm
parents: 42917
diff changeset
    42
%
wenzelm
parents: 42917
diff changeset
    43
\endisadelimproof
wenzelm
parents: 42917
diff changeset
    44
%
wenzelm
parents: 42917
diff changeset
    45
\isatagproof
wenzelm
parents: 42917
diff changeset
    46
%
wenzelm
parents: 42917
diff changeset
    47
\begin{isamarkuptxt}%
wenzelm
parents: 42917
diff changeset
    48
Locally fixed entities:%
wenzelm
parents: 42917
diff changeset
    49
\end{isamarkuptxt}%
wenzelm
parents: 42917
diff changeset
    50
\isamarkuptrue%
wenzelm
parents: 42917
diff changeset
    51
\ \ \isacommand{fix}\isamarkupfalse%
wenzelm
parents: 42917
diff changeset
    52
\ x\ \ \ %
wenzelm
parents: 42917
diff changeset
    53
\isamarkupcmt{local constant, without any type information yet%
wenzelm
parents: 42917
diff changeset
    54
}
wenzelm
parents: 42917
diff changeset
    55
\isanewline
wenzelm
parents: 42917
diff changeset
    56
\ \ \isacommand{fix}\isamarkupfalse%
wenzelm
parents: 42917
diff changeset
    57
\ x\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{27}{\isacharprime}}a\ \ %
wenzelm
parents: 42917
diff changeset
    58
\isamarkupcmt{variant with explicit type-constraint for subsequent use%
wenzelm
parents: 42917
diff changeset
    59
}
wenzelm
parents: 42917
diff changeset
    60
\isanewline
wenzelm
parents: 42917
diff changeset
    61
\isanewline
wenzelm
parents: 42917
diff changeset
    62
\ \ \isacommand{fix}\isamarkupfalse%
wenzelm
parents: 42917
diff changeset
    63
\ a\ b\isanewline
wenzelm
parents: 42917
diff changeset
    64
\ \ \isacommand{assume}\isamarkupfalse%
wenzelm
parents: 42917
diff changeset
    65
\ {\isaliteral{22}{\isachardoublequoteopen}}a\ {\isaliteral{3D}{\isacharequal}}\ b{\isaliteral{22}{\isachardoublequoteclose}}\ \ %
wenzelm
parents: 42917
diff changeset
    66
\isamarkupcmt{type assignment at first occurrence in concrete term%
wenzelm
parents: 42917
diff changeset
    67
}
wenzelm
parents: 42917
diff changeset
    68
%
wenzelm
parents: 42917
diff changeset
    69
\begin{isamarkuptxt}%
wenzelm
parents: 42917
diff changeset
    70
Definitions (non-polymorphic):%
wenzelm
parents: 42917
diff changeset
    71
\end{isamarkuptxt}%
wenzelm
parents: 42917
diff changeset
    72
\isamarkuptrue%
wenzelm
parents: 42917
diff changeset
    73
\ \ \isacommand{def}\isamarkupfalse%
wenzelm
parents: 42917
diff changeset
    74
\ x\ {\isaliteral{5C3C65717569763E}{\isasymequiv}}\ {\isaliteral{22}{\isachardoublequoteopen}}t{\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}{\isaliteral{27}{\isacharprime}}a{\isaliteral{22}{\isachardoublequoteclose}}%
wenzelm
parents: 42917
diff changeset
    75
\begin{isamarkuptxt}%
wenzelm
parents: 42917
diff changeset
    76
Abbreviations (polymorphic):%
wenzelm
parents: 42917
diff changeset
    77
\end{isamarkuptxt}%
wenzelm
parents: 42917
diff changeset
    78
\isamarkuptrue%
wenzelm
parents: 42917
diff changeset
    79
\ \ \isacommand{let}\isamarkupfalse%
wenzelm
parents: 42917
diff changeset
    80
\ {\isaliteral{3F}{\isacharquery}}f\ {\isaliteral{3D}{\isacharequal}}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6C616D6264613E}{\isasymlambda}}x{\isaliteral{2E}{\isachardot}}\ x{\isaliteral{22}{\isachardoublequoteclose}}%
wenzelm
parents: 42917
diff changeset
    81
\endisatagproof
wenzelm
parents: 42917
diff changeset
    82
{\isafoldproof}%
wenzelm
parents: 42917
diff changeset
    83
%
wenzelm
parents: 42917
diff changeset
    84
\isadelimproof
wenzelm
parents: 42917
diff changeset
    85
%
wenzelm
parents: 42917
diff changeset
    86
\endisadelimproof
wenzelm
parents: 42917
diff changeset
    87
\isanewline
wenzelm
parents: 42917
diff changeset
    88
\ \ \isacommand{term}\isamarkupfalse%
wenzelm
parents: 42917
diff changeset
    89
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{3F}{\isacharquery}}f\ {\isaliteral{3F}{\isacharquery}}f{\isaliteral{22}{\isachardoublequoteclose}}%
wenzelm
parents: 42917
diff changeset
    90
\isadelimproof
wenzelm
parents: 42917
diff changeset
    91
%
wenzelm
parents: 42917
diff changeset
    92
\endisadelimproof
wenzelm
parents: 42917
diff changeset
    93
%
wenzelm
parents: 42917
diff changeset
    94
\isatagproof
wenzelm
parents: 42917
diff changeset
    95
%
wenzelm
parents: 42917
diff changeset
    96
\begin{isamarkuptxt}%
wenzelm
parents: 42917
diff changeset
    97
Notation:%
wenzelm
parents: 42917
diff changeset
    98
\end{isamarkuptxt}%
wenzelm
parents: 42917
diff changeset
    99
\isamarkuptrue%
wenzelm
parents: 42917
diff changeset
   100
\ \ \isacommand{write}\isamarkupfalse%
wenzelm
parents: 42917
diff changeset
   101
\ x\ \ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{2A}{\isacharasterisk}}{\isaliteral{2A}{\isacharasterisk}}{\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequoteclose}}{\isaliteral{29}{\isacharparenright}}%
wenzelm
parents: 42917
diff changeset
   102
\endisatagproof
wenzelm
parents: 42917
diff changeset
   103
{\isafoldproof}%
wenzelm
parents: 42917
diff changeset
   104
%
wenzelm
parents: 42917
diff changeset
   105
\isadelimproof
wenzelm
parents: 42917
diff changeset
   106
%
wenzelm
parents: 42917
diff changeset
   107
\endisadelimproof
wenzelm
parents: 42917
diff changeset
   108
\isanewline
wenzelm
parents: 42917
diff changeset
   109
\isacommand{end}\isamarkupfalse%
wenzelm
parents: 42917
diff changeset
   110
%
42917
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   111
\isamarkupsubsection{Facts%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   112
}
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   113
\isamarkuptrue%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   114
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   115
\begin{isamarkuptext}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   116
A fact is a simultaneous list of theorems.%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   117
\end{isamarkuptext}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   118
\isamarkuptrue%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   119
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   120
\isamarkupsubsubsection{Producing facts%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   121
}
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   122
\isamarkuptrue%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   123
\isacommand{notepad}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   124
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   125
\isakeyword{begin}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   126
\isadelimproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   127
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   128
\endisadelimproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   129
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   130
\isatagproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   131
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   132
\begin{isamarkuptxt}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   133
Via assumption (``lambda''):%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   134
\end{isamarkuptxt}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   135
\isamarkuptrue%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   136
\ \ \isacommand{assume}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   137
\ a{\isaliteral{3A}{\isacharcolon}}\ A%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   138
\begin{isamarkuptxt}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   139
Via proof (``let''):%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   140
\end{isamarkuptxt}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   141
\isamarkuptrue%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   142
\ \ \isacommand{have}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   143
\ b{\isaliteral{3A}{\isacharcolon}}\ B\ \isacommand{sorry}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   144
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   145
\begin{isamarkuptxt}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   146
Via abbreviation (``let''):%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   147
\end{isamarkuptxt}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   148
\isamarkuptrue%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   149
\ \ \isacommand{note}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   150
\ c\ {\isaliteral{3D}{\isacharequal}}\ a\ b%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   151
\endisatagproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   152
{\isafoldproof}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   153
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   154
\isadelimproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   155
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   156
\endisadelimproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   157
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   158
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   159
\isacommand{end}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   160
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   161
\isamarkupsubsubsection{Referencing facts%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   162
}
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   163
\isamarkuptrue%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   164
\isacommand{notepad}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   165
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   166
\isakeyword{begin}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   167
\isadelimproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   168
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   169
\endisadelimproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   170
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   171
\isatagproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   172
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   173
\begin{isamarkuptxt}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   174
Via explicit name:%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   175
\end{isamarkuptxt}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   176
\isamarkuptrue%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   177
\ \ \isacommand{assume}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   178
\ a{\isaliteral{3A}{\isacharcolon}}\ A\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   179
\ \ \isacommand{note}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   180
\ a%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   181
\begin{isamarkuptxt}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   182
Via implicit name:%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   183
\end{isamarkuptxt}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   184
\isamarkuptrue%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   185
\ \ \isacommand{assume}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   186
\ A\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   187
\ \ \isacommand{note}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   188
\ this%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   189
\begin{isamarkuptxt}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   190
Via literal proposition (unification with results from the proof text):%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   191
\end{isamarkuptxt}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   192
\isamarkuptrue%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   193
\ \ \isacommand{assume}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   194
\ A\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   195
\ \ \isacommand{note}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   196
\ {\isaliteral{60}{\isacharbackquoteopen}}A{\isaliteral{60}{\isacharbackquoteclose}}\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   197
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   198
\ \ \isacommand{assume}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   199
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C416E643E}{\isasymAnd}}x{\isaliteral{2E}{\isachardot}}\ B\ x{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   200
\ \ \isacommand{note}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   201
\ {\isaliteral{60}{\isacharbackquoteopen}}B\ a{\isaliteral{60}{\isacharbackquoteclose}}\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   202
\ \ \isacommand{note}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   203
\ {\isaliteral{60}{\isacharbackquoteopen}}B\ b{\isaliteral{60}{\isacharbackquoteclose}}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   204
\endisatagproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   205
{\isafoldproof}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   206
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   207
\isadelimproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   208
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   209
\endisadelimproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   210
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   211
\isacommand{end}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   212
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   213
\isamarkupsubsubsection{Manipulating facts%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   214
}
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   215
\isamarkuptrue%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   216
\isacommand{notepad}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   217
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   218
\isakeyword{begin}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   219
\isadelimproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   220
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   221
\endisadelimproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   222
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   223
\isatagproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   224
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   225
\begin{isamarkuptxt}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   226
Instantiation:%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   227
\end{isamarkuptxt}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   228
\isamarkuptrue%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   229
\ \ \isacommand{assume}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   230
\ a{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C416E643E}{\isasymAnd}}x{\isaliteral{2E}{\isachardot}}\ B\ x{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   231
\ \ \isacommand{note}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   232
\ a\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   233
\ \ \isacommand{note}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   234
\ a\ {\isaliteral{5B}{\isacharbrackleft}}of\ b{\isaliteral{5D}{\isacharbrackright}}\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   235
\ \ \isacommand{note}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   236
\ a\ {\isaliteral{5B}{\isacharbrackleft}}\isakeyword{where}\ x\ {\isaliteral{3D}{\isacharequal}}\ b{\isaliteral{5D}{\isacharbrackright}}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   237
\begin{isamarkuptxt}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   238
Backchaining:%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   239
\end{isamarkuptxt}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   240
\isamarkuptrue%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   241
\ \ \isacommand{assume}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   242
\ {\isadigit{1}}{\isaliteral{3A}{\isacharcolon}}\ A\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   243
\ \ \isacommand{assume}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   244
\ {\isadigit{2}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ C{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   245
\ \ \isacommand{note}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   246
\ {\isadigit{2}}\ {\isaliteral{5B}{\isacharbrackleft}}OF\ {\isadigit{1}}{\isaliteral{5D}{\isacharbrackright}}\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   247
\ \ \isacommand{note}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   248
\ {\isadigit{1}}\ {\isaliteral{5B}{\isacharbrackleft}}THEN\ {\isadigit{2}}{\isaliteral{5D}{\isacharbrackright}}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   249
\begin{isamarkuptxt}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   250
Symmetric results:%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   251
\end{isamarkuptxt}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   252
\isamarkuptrue%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   253
\ \ \isacommand{assume}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   254
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{3D}{\isacharequal}}\ y{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   255
\ \ \isacommand{note}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   256
\ this\ {\isaliteral{5B}{\isacharbrackleft}}symmetric{\isaliteral{5D}{\isacharbrackright}}\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   257
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   258
\ \ \isacommand{assume}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   259
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C6E6F7465713E}{\isasymnoteq}}\ y{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   260
\ \ \isacommand{note}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   261
\ this\ {\isaliteral{5B}{\isacharbrackleft}}symmetric{\isaliteral{5D}{\isacharbrackright}}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   262
\begin{isamarkuptxt}%
42922
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
   263
Adhoc-simplification (take care!):%
42917
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   264
\end{isamarkuptxt}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   265
\isamarkuptrue%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   266
\ \ \isacommand{assume}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   267
\ {\isaliteral{22}{\isachardoublequoteopen}}P\ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{5B}{\isacharbrackleft}}{\isaliteral{5D}{\isacharbrackright}}\ {\isaliteral{40}{\isacharat}}\ xs{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   268
\ \ \isacommand{note}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   269
\ this\ {\isaliteral{5B}{\isacharbrackleft}}simplified{\isaliteral{5D}{\isacharbrackright}}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   270
\endisatagproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   271
{\isafoldproof}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   272
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   273
\isadelimproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   274
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   275
\endisadelimproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   276
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   277
\isacommand{end}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   278
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   279
\isamarkupsubsubsection{Projections%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   280
}
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   281
\isamarkuptrue%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   282
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   283
\begin{isamarkuptext}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   284
Isar facts consist of multiple theorems.  There is notation to project
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   285
  interval ranges.%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   286
\end{isamarkuptext}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   287
\isamarkuptrue%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   288
\isacommand{notepad}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   289
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   290
\isakeyword{begin}\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   291
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   292
\isadelimproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   293
\ \ %
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   294
\endisadelimproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   295
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   296
\isatagproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   297
\isacommand{assume}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   298
\ stuff{\isaliteral{3A}{\isacharcolon}}\ A\ B\ C\ D\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   299
\ \ \isacommand{note}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   300
\ stuff{\isaliteral{28}{\isacharparenleft}}{\isadigit{1}}{\isaliteral{29}{\isacharparenright}}\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   301
\ \ \isacommand{note}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   302
\ stuff{\isaliteral{28}{\isacharparenleft}}{\isadigit{2}}{\isaliteral{2D}{\isacharminus}}{\isadigit{3}}{\isaliteral{29}{\isacharparenright}}\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   303
\ \ \isacommand{note}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   304
\ stuff{\isaliteral{28}{\isacharparenleft}}{\isadigit{2}}{\isaliteral{2D}{\isacharminus}}{\isaliteral{29}{\isacharparenright}}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   305
\endisatagproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   306
{\isafoldproof}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   307
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   308
\isadelimproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   309
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   310
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   311
\endisadelimproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   312
\isacommand{end}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   313
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   314
\isamarkupsubsubsection{Naming conventions%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   315
}
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   316
\isamarkuptrue%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   317
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   318
\begin{isamarkuptext}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   319
\begin{itemize}
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   320
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   321
  \item Lower-case identifiers are usually preferred.
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   322
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   323
  \item Facts can be named after the main term within the proposition.
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   324
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   325
  \item Facts should \emph{not} be named after the command that
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   326
  introduced them (\hyperlink{command.assume}{\mbox{\isa{\isacommand{assume}}}}, \hyperlink{command.have}{\mbox{\isa{\isacommand{have}}}}).  This is
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   327
  misleading and hard to maintain.
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   328
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   329
  \item Natural numbers can be used as ``meaningless'' names (more
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   330
  appropriate than \isa{{\isaliteral{22}{\isachardoublequote}}a{\isadigit{1}}{\isaliteral{22}{\isachardoublequote}}}, \isa{{\isaliteral{22}{\isachardoublequote}}a{\isadigit{2}}{\isaliteral{22}{\isachardoublequote}}} etc.)
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   331
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   332
  \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}}}).
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   333
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   334
  \end{itemize}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   335
\end{isamarkuptext}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   336
\isamarkuptrue%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   337
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   338
\isamarkupsubsection{Block structure%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   339
}
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   340
\isamarkuptrue%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   341
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   342
\begin{isamarkuptext}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   343
The formal notepad is block structured.  The fact produced by the last
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   344
  entry of a block is exported into the outer context.%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   345
\end{isamarkuptext}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   346
\isamarkuptrue%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   347
\isacommand{notepad}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   348
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   349
\isakeyword{begin}\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   350
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   351
\isadelimproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   352
\ \ %
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   353
\endisadelimproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   354
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   355
\isatagproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   356
\isacommand{{\isaliteral{7B}{\isacharbraceleft}}}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   357
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   358
\ \ \ \ \isacommand{have}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   359
\ a{\isaliteral{3A}{\isacharcolon}}\ A\ \isacommand{sorry}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   360
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   361
\ \ \ \ \isacommand{have}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   362
\ b{\isaliteral{3A}{\isacharcolon}}\ B\ \isacommand{sorry}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   363
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   364
\ \ \ \ \isacommand{note}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   365
\ a\ b\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   366
\ \ \isacommand{{\isaliteral{7D}{\isacharbraceright}}}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   367
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   368
\ \ \isacommand{note}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   369
\ this\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   370
\ \ \isacommand{note}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   371
\ {\isaliteral{60}{\isacharbackquoteopen}}A{\isaliteral{60}{\isacharbackquoteclose}}\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   372
\ \ \isacommand{note}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   373
\ {\isaliteral{60}{\isacharbackquoteopen}}B{\isaliteral{60}{\isacharbackquoteclose}}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   374
\endisatagproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   375
{\isafoldproof}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   376
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   377
\isadelimproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   378
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   379
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   380
\endisadelimproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   381
\isacommand{end}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   382
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   383
\begin{isamarkuptext}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   384
Explicit blocks as well as implicit blocks of nested goal
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   385
  statements (e.g.\ \hyperlink{command.have}{\mbox{\isa{\isacommand{have}}}}) automatically introduce one extra
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   386
  pair of parentheses in reserve.  The \hyperlink{command.next}{\mbox{\isa{\isacommand{next}}}} command allows
42918
wenzelm
parents: 42917
diff changeset
   387
  to ``jump'' between these sub-blocks.%
42917
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   388
\end{isamarkuptext}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   389
\isamarkuptrue%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   390
\isacommand{notepad}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   391
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   392
\isakeyword{begin}\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   393
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   394
\isadelimproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   395
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   396
\ \ %
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   397
\endisadelimproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   398
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   399
\isatagproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   400
\isacommand{{\isaliteral{7B}{\isacharbraceleft}}}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   401
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   402
\ \ \ \ \isacommand{have}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   403
\ a{\isaliteral{3A}{\isacharcolon}}\ A\ \isacommand{sorry}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   404
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   405
\ \ \isacommand{next}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   406
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   407
\ \ \ \ \isacommand{have}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   408
\ b{\isaliteral{3A}{\isacharcolon}}\ B\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   409
\ \ \ \ \isacommand{proof}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   410
\ {\isaliteral{2D}{\isacharminus}}\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   411
\ \ \ \ \ \ \isacommand{show}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   412
\ B\ \isacommand{sorry}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   413
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   414
\ \ \ \ \isacommand{next}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   415
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   416
\ \ \ \ \ \ \isacommand{have}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   417
\ c{\isaliteral{3A}{\isacharcolon}}\ C\ \isacommand{sorry}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   418
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   419
\ \ \ \ \isacommand{next}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   420
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   421
\ \ \ \ \ \ \isacommand{have}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   422
\ d{\isaliteral{3A}{\isacharcolon}}\ D\ \isacommand{sorry}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   423
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   424
\ \ \ \ \isacommand{qed}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   425
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   426
\ \ \isacommand{{\isaliteral{7D}{\isacharbraceright}}}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   427
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   428
\begin{isamarkuptxt}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   429
Alternative version with explicit parentheses everywhere:%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   430
\end{isamarkuptxt}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   431
\isamarkuptrue%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   432
\ \ \isacommand{{\isaliteral{7B}{\isacharbraceleft}}}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   433
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   434
\ \ \ \ \isacommand{{\isaliteral{7B}{\isacharbraceleft}}}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   435
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   436
\ \ \ \ \ \ \isacommand{have}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   437
\ a{\isaliteral{3A}{\isacharcolon}}\ A\ \isacommand{sorry}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   438
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   439
\ \ \ \ \isacommand{{\isaliteral{7D}{\isacharbraceright}}}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   440
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   441
\ \ \ \ \isacommand{{\isaliteral{7B}{\isacharbraceleft}}}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   442
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   443
\ \ \ \ \ \ \isacommand{have}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   444
\ b{\isaliteral{3A}{\isacharcolon}}\ B\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   445
\ \ \ \ \ \ \isacommand{proof}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   446
\ {\isaliteral{2D}{\isacharminus}}\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   447
\ \ \ \ \ \ \ \ \isacommand{{\isaliteral{7B}{\isacharbraceleft}}}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   448
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   449
\ \ \ \ \ \ \ \ \ \ \isacommand{show}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   450
\ B\ \isacommand{sorry}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   451
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   452
\ \ \ \ \ \ \ \ \isacommand{{\isaliteral{7D}{\isacharbraceright}}}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   453
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   454
\ \ \ \ \ \ \ \ \isacommand{{\isaliteral{7B}{\isacharbraceleft}}}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   455
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   456
\ \ \ \ \ \ \ \ \ \ \isacommand{have}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   457
\ c{\isaliteral{3A}{\isacharcolon}}\ C\ \isacommand{sorry}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   458
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   459
\ \ \ \ \ \ \ \ \isacommand{{\isaliteral{7D}{\isacharbraceright}}}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   460
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   461
\ \ \ \ \ \ \ \ \isacommand{{\isaliteral{7B}{\isacharbraceleft}}}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   462
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   463
\ \ \ \ \ \ \ \ \ \ \isacommand{have}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   464
\ d{\isaliteral{3A}{\isacharcolon}}\ D\ \isacommand{sorry}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   465
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   466
\ \ \ \ \ \ \ \ \isacommand{{\isaliteral{7D}{\isacharbraceright}}}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   467
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   468
\ \ \ \ \ \ \isacommand{qed}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   469
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   470
\ \ \ \ \isacommand{{\isaliteral{7D}{\isacharbraceright}}}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   471
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   472
\ \ \isacommand{{\isaliteral{7D}{\isacharbraceright}}}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   473
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   474
\endisatagproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   475
{\isafoldproof}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   476
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   477
\isadelimproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   478
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   479
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   480
\endisadelimproof
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   481
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
   482
\isacommand{end}\isamarkupfalse%
42919
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   483
%
42921
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   484
\isamarkupsection{Calculational reasoning \label{sec:calculations-synopsis}%
42919
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   485
}
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   486
\isamarkuptrue%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   487
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   488
\begin{isamarkuptext}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   489
For example, see \verb|~~/src/HOL/Isar_Examples/Group.thy|.%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   490
\end{isamarkuptext}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   491
\isamarkuptrue%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   492
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   493
\isamarkupsubsection{Special names in Isar proofs%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   494
}
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   495
\isamarkuptrue%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   496
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   497
\begin{isamarkuptext}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   498
\begin{itemize}
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   499
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   500
  \item term \isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{3F}{\isacharquery}}thesis{\isaliteral{22}{\isachardoublequote}}} --- the main conclusion of the
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   501
  innermost pending claim
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   502
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   503
  \item term \isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{5C3C646F74733E}{\isasymdots}}{\isaliteral{22}{\isachardoublequote}}} --- the argument of the last explicitly
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   504
    stated result (for infix application this is the right-hand side)
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   505
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   506
  \item fact \isa{{\isaliteral{22}{\isachardoublequote}}this{\isaliteral{22}{\isachardoublequote}}} --- the last result produced in the text
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   507
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   508
  \end{itemize}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   509
\end{isamarkuptext}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   510
\isamarkuptrue%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   511
\isacommand{notepad}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   512
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   513
\isakeyword{begin}\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   514
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   515
\isadelimproof
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   516
\ \ %
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   517
\endisadelimproof
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   518
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   519
\isatagproof
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   520
\isacommand{have}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   521
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{3D}{\isacharequal}}\ y{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   522
\ \ \isacommand{proof}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   523
\ {\isaliteral{2D}{\isacharminus}}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   524
\endisatagproof
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   525
{\isafoldproof}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   526
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   527
\isadelimproof
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   528
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   529
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   530
\endisadelimproof
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   531
\ \ \ \ \isacommand{term}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   532
\ {\isaliteral{3F}{\isacharquery}}thesis\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   533
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   534
\isadelimproof
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   535
\ \ \ \ %
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   536
\endisadelimproof
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   537
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   538
\isatagproof
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   539
\isacommand{show}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   540
\ {\isaliteral{3F}{\isacharquery}}thesis\ \isacommand{sorry}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   541
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   542
\endisatagproof
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   543
{\isafoldproof}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   544
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   545
\isadelimproof
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   546
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   547
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   548
\endisadelimproof
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   549
\ \ \ \ \isacommand{term}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   550
\ {\isaliteral{3F}{\isacharquery}}thesis\ \ %
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   551
\isamarkupcmt{static!%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   552
}
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   553
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   554
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   555
\isadelimproof
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   556
\ \ %
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   557
\endisadelimproof
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   558
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   559
\isatagproof
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   560
\isacommand{qed}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   561
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   562
\endisatagproof
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   563
{\isafoldproof}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   564
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   565
\isadelimproof
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   566
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   567
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   568
\endisadelimproof
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   569
\ \ \isacommand{term}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   570
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C646F74733E}{\isasymdots}}{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   571
\ \ \isacommand{thm}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   572
\ this\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   573
\isacommand{end}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   574
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   575
\begin{isamarkuptext}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   576
Calculational reasoning maintains the special fact called
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   577
  ``\isa{calculation}'' in the background.  Certain language
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   578
  elements combine primary \isa{this} with secondary \isa{calculation}.%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   579
\end{isamarkuptext}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   580
\isamarkuptrue%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   581
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   582
\isamarkupsubsection{Transitive chains%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   583
}
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   584
\isamarkuptrue%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   585
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   586
\begin{isamarkuptext}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   587
The Idea is to combine \isa{this} and \isa{calculation}
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   588
  via typical \isa{trans} rules (see also \hyperlink{command.print-trans-rules}{\mbox{\isa{\isacommand{print{\isaliteral{5F}{\isacharunderscore}}trans{\isaliteral{5F}{\isacharunderscore}}rules}}}}):%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   589
\end{isamarkuptext}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   590
\isamarkuptrue%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   591
\isacommand{thm}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   592
\ trans\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   593
\isacommand{thm}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   594
\ less{\isaliteral{5F}{\isacharunderscore}}trans\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   595
\isacommand{thm}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   596
\ less{\isaliteral{5F}{\isacharunderscore}}le{\isaliteral{5F}{\isacharunderscore}}trans\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   597
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   598
\isacommand{notepad}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   599
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   600
\isakeyword{begin}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   601
\isadelimproof
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   602
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   603
\endisadelimproof
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   604
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   605
\isatagproof
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   606
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   607
\begin{isamarkuptxt}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   608
Plain bottom-up calculation:%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   609
\end{isamarkuptxt}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   610
\isamarkuptrue%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   611
\ \ \isacommand{have}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   612
\ {\isaliteral{22}{\isachardoublequoteopen}}a\ {\isaliteral{3D}{\isacharequal}}\ b{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   613
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   614
\ \ \isacommand{also}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   615
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   616
\ \ \isacommand{have}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   617
\ {\isaliteral{22}{\isachardoublequoteopen}}b\ {\isaliteral{3D}{\isacharequal}}\ c{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   618
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   619
\ \ \isacommand{also}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   620
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   621
\ \ \isacommand{have}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   622
\ {\isaliteral{22}{\isachardoublequoteopen}}c\ {\isaliteral{3D}{\isacharequal}}\ d{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   623
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   624
\ \ \isacommand{finally}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   625
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   626
\ \ \isacommand{have}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   627
\ {\isaliteral{22}{\isachardoublequoteopen}}a\ {\isaliteral{3D}{\isacharequal}}\ d{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   628
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   629
\begin{isamarkuptxt}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   630
Variant using the \isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{5C3C646F74733E}{\isasymdots}}{\isaliteral{22}{\isachardoublequote}}} abbreviation:%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   631
\end{isamarkuptxt}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   632
\isamarkuptrue%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   633
\ \ \isacommand{have}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   634
\ {\isaliteral{22}{\isachardoublequoteopen}}a\ {\isaliteral{3D}{\isacharequal}}\ b{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   635
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   636
\ \ \isacommand{also}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   637
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   638
\ \ \isacommand{have}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   639
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C646F74733E}{\isasymdots}}\ {\isaliteral{3D}{\isacharequal}}\ c{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   640
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   641
\ \ \isacommand{also}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   642
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   643
\ \ \isacommand{have}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   644
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C646F74733E}{\isasymdots}}\ {\isaliteral{3D}{\isacharequal}}\ d{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   645
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   646
\ \ \isacommand{finally}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   647
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   648
\ \ \isacommand{have}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   649
\ {\isaliteral{22}{\isachardoublequoteopen}}a\ {\isaliteral{3D}{\isacharequal}}\ d{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   650
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   651
\begin{isamarkuptxt}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   652
Top-down version with explicit claim at the head:%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   653
\end{isamarkuptxt}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   654
\isamarkuptrue%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   655
\ \ \isacommand{have}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   656
\ {\isaliteral{22}{\isachardoublequoteopen}}a\ {\isaliteral{3D}{\isacharequal}}\ d{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   657
\ \ \isacommand{proof}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   658
\ {\isaliteral{2D}{\isacharminus}}\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   659
\ \ \ \ \isacommand{have}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   660
\ {\isaliteral{22}{\isachardoublequoteopen}}a\ {\isaliteral{3D}{\isacharequal}}\ b{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   661
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   662
\ \ \ \ \isacommand{also}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   663
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   664
\ \ \ \ \isacommand{have}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   665
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C646F74733E}{\isasymdots}}\ {\isaliteral{3D}{\isacharequal}}\ c{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   666
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   667
\ \ \ \ \isacommand{also}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   668
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   669
\ \ \ \ \isacommand{have}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   670
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C646F74733E}{\isasymdots}}\ {\isaliteral{3D}{\isacharequal}}\ d{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   671
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   672
\ \ \ \ \isacommand{finally}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   673
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   674
\ \ \ \ \isacommand{show}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   675
\ {\isaliteral{3F}{\isacharquery}}thesis\ \isacommand{{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   676
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   677
\ \ \isacommand{qed}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   678
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   679
\isacommand{next}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   680
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   681
\begin{isamarkuptxt}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   682
Mixed inequalities (require suitable base type):%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   683
\end{isamarkuptxt}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   684
\isamarkuptrue%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   685
\ \ \isacommand{fix}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   686
\ a\ b\ c\ d\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ nat\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   687
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   688
\ \ \isacommand{have}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   689
\ {\isaliteral{22}{\isachardoublequoteopen}}a\ {\isaliteral{3C}{\isacharless}}\ b{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   690
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   691
\ \ \isacommand{also}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   692
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   693
\ \ \isacommand{have}\isamarkupfalse%
45820
1fe2dd6d5086 updated generated file;
wenzelm
parents: 45103
diff changeset
   694
\ {\isaliteral{22}{\isachardoublequoteopen}}b\ {\isaliteral{5C3C6C653E}{\isasymle}}\ c{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
42919
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   695
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   696
\ \ \isacommand{also}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   697
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   698
\ \ \isacommand{have}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   699
\ {\isaliteral{22}{\isachardoublequoteopen}}c\ {\isaliteral{3D}{\isacharequal}}\ d{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   700
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   701
\ \ \isacommand{finally}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   702
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   703
\ \ \isacommand{have}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   704
\ {\isaliteral{22}{\isachardoublequoteopen}}a\ {\isaliteral{3C}{\isacharless}}\ d{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   705
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   706
\endisatagproof
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   707
{\isafoldproof}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   708
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   709
\isadelimproof
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   710
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   711
\endisadelimproof
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   712
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   713
\isacommand{end}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   714
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   715
\isamarkupsubsubsection{Notes%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   716
}
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   717
\isamarkuptrue%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   718
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   719
\begin{isamarkuptext}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   720
\begin{itemize}
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   721
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   722
  \item The notion of \isa{trans} rule is very general due to the
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   723
  flexibility of Isabelle/Pure rule composition.
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   724
45820
1fe2dd6d5086 updated generated file;
wenzelm
parents: 45103
diff changeset
   725
  \item User applications may declare their own rules, with some care
42919
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   726
  about the operational details of higher-order unification.
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   727
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   728
  \end{itemize}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   729
\end{isamarkuptext}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   730
\isamarkuptrue%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   731
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   732
\isamarkupsubsection{Degenerate calculations and bigstep reasoning%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   733
}
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   734
\isamarkuptrue%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   735
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   736
\begin{isamarkuptext}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   737
The Idea is to append \isa{this} to \isa{calculation},
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   738
  without rule composition.%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   739
\end{isamarkuptext}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   740
\isamarkuptrue%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   741
\isacommand{notepad}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   742
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   743
\isakeyword{begin}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   744
\isadelimproof
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   745
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   746
\endisadelimproof
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   747
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   748
\isatagproof
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   749
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   750
\begin{isamarkuptxt}%
42920
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
   751
A vacuous proof:%
42919
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   752
\end{isamarkuptxt}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   753
\isamarkuptrue%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   754
\ \ \isacommand{have}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   755
\ A\ \isacommand{sorry}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   756
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   757
\ \ \isacommand{moreover}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   758
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   759
\ \ \isacommand{have}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   760
\ B\ \isacommand{sorry}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   761
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   762
\ \ \isacommand{moreover}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   763
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   764
\ \ \isacommand{have}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   765
\ C\ \isacommand{sorry}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   766
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   767
\ \ \isacommand{ultimately}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   768
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   769
\ \ \isacommand{have}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   770
\ A\ \isakeyword{and}\ B\ \isakeyword{and}\ C\ \isacommand{{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   771
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   772
\isacommand{next}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   773
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   774
\begin{isamarkuptxt}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   775
Slightly more content (trivial bigstep reasoning):%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   776
\end{isamarkuptxt}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   777
\isamarkuptrue%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   778
\ \ \isacommand{have}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   779
\ A\ \isacommand{sorry}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   780
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   781
\ \ \isacommand{moreover}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   782
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   783
\ \ \isacommand{have}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   784
\ B\ \isacommand{sorry}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   785
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   786
\ \ \isacommand{moreover}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   787
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   788
\ \ \isacommand{have}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   789
\ C\ \isacommand{sorry}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   790
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   791
\ \ \isacommand{ultimately}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   792
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   793
\ \ \isacommand{have}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   794
\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C616E643E}{\isasymand}}\ B\ {\isaliteral{5C3C616E643E}{\isasymand}}\ C{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{by}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   795
\ blast\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   796
\isacommand{next}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   797
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   798
\begin{isamarkuptxt}%
42920
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
   799
More ambitious bigstep reasoning involving structured results:%
42919
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   800
\end{isamarkuptxt}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   801
\isamarkuptrue%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   802
\ \ \isacommand{have}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   803
\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C6F723E}{\isasymor}}\ B\ {\isaliteral{5C3C6F723E}{\isasymor}}\ C{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   804
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   805
\ \ \isacommand{moreover}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   806
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   807
\ \ \isacommand{{\isaliteral{7B}{\isacharbraceleft}}}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   808
\ \isacommand{assume}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   809
\ A\ \isacommand{have}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   810
\ R\ \isacommand{sorry}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   811
\ \isacommand{{\isaliteral{7D}{\isacharbraceright}}}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   812
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   813
\ \ \isacommand{moreover}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   814
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   815
\ \ \isacommand{{\isaliteral{7B}{\isacharbraceleft}}}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   816
\ \isacommand{assume}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   817
\ B\ \isacommand{have}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   818
\ R\ \isacommand{sorry}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   819
\ \isacommand{{\isaliteral{7D}{\isacharbraceright}}}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   820
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   821
\ \ \isacommand{moreover}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   822
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   823
\ \ \isacommand{{\isaliteral{7B}{\isacharbraceleft}}}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   824
\ \isacommand{assume}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   825
\ C\ \isacommand{have}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   826
\ R\ \isacommand{sorry}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   827
\ \isacommand{{\isaliteral{7D}{\isacharbraceright}}}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   828
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   829
\ \ \isacommand{ultimately}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   830
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   831
\ \ \isacommand{have}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   832
\ R\ \isacommand{by}\isamarkupfalse%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   833
\ blast\ \ %
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   834
\isamarkupcmt{``big-bang integration'' of proof blocks (occasionally fragile)%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   835
}
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   836
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   837
\endisatagproof
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   838
{\isafoldproof}%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   839
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   840
\isadelimproof
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   841
%
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   842
\endisadelimproof
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   843
\isanewline
6e83c2f73240 some material on "Calculational reasoning";
wenzelm
parents: 42918
diff changeset
   844
\isacommand{end}\isamarkupfalse%
42920
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
   845
%
42923
3ba51a3acff0 tuned headings;
wenzelm
parents: 42922
diff changeset
   846
\isamarkupsection{Induction%
42921
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   847
}
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   848
\isamarkuptrue%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   849
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   850
\isamarkupsubsection{Induction as Natural Deduction%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   851
}
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   852
\isamarkuptrue%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   853
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   854
\begin{isamarkuptext}%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   855
In principle, induction is just a special case of Natural
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   856
  Deduction (see also \secref{sec:natural-deduction-synopsis}).  For
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   857
  example:%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   858
\end{isamarkuptext}%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   859
\isamarkuptrue%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   860
\isacommand{thm}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   861
\ nat{\isaliteral{2E}{\isachardot}}induct\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   862
\isacommand{print{\isaliteral{5F}{\isacharunderscore}}statement}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   863
\ nat{\isaliteral{2E}{\isachardot}}induct\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   864
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   865
\isacommand{notepad}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   866
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   867
\isakeyword{begin}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   868
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   869
\isadelimproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   870
\ \ %
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   871
\endisadelimproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   872
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   873
\isatagproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   874
\isacommand{fix}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   875
\ n\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ nat\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   876
\ \ \isacommand{have}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   877
\ {\isaliteral{22}{\isachardoublequoteopen}}P\ n{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   878
\ \ \isacommand{proof}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   879
\ {\isaliteral{28}{\isacharparenleft}}rule\ nat{\isaliteral{2E}{\isachardot}}induct{\isaliteral{29}{\isacharparenright}}\ \ %
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   880
\isamarkupcmt{fragile rule application!%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   881
}
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   882
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   883
\ \ \ \ \isacommand{show}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   884
\ {\isaliteral{22}{\isachardoublequoteopen}}P\ {\isadigit{0}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   885
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   886
\ \ \isacommand{next}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   887
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   888
\ \ \ \ \isacommand{fix}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   889
\ n\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ nat\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   890
\ \ \ \ \isacommand{assume}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   891
\ {\isaliteral{22}{\isachardoublequoteopen}}P\ n{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   892
\ \ \ \ \isacommand{show}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   893
\ {\isaliteral{22}{\isachardoublequoteopen}}P\ {\isaliteral{28}{\isacharparenleft}}Suc\ n{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   894
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   895
\ \ \isacommand{qed}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   896
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   897
\endisatagproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   898
{\isafoldproof}%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   899
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   900
\isadelimproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   901
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   902
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   903
\endisadelimproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   904
\isacommand{end}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   905
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   906
\begin{isamarkuptext}%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   907
In practice, much more proof infrastructure is required.
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   908
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   909
  The proof method \hyperlink{method.induct}{\mbox{\isa{induct}}} provides:
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   910
  \begin{itemize}
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   911
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   912
  \item implicit rule selection and robust instantiation
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   913
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   914
  \item context elements via symbolic case names
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   915
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   916
  \item support for rule-structured induction statements, with local
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   917
    parameters, premises, etc.
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   918
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   919
  \end{itemize}%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   920
\end{isamarkuptext}%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   921
\isamarkuptrue%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   922
\isacommand{notepad}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   923
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   924
\isakeyword{begin}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   925
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   926
\isadelimproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   927
\ \ %
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   928
\endisadelimproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   929
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   930
\isatagproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   931
\isacommand{fix}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   932
\ n\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ nat\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   933
\ \ \isacommand{have}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   934
\ {\isaliteral{22}{\isachardoublequoteopen}}P\ n{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   935
\ \ \isacommand{proof}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   936
\ {\isaliteral{28}{\isacharparenleft}}induct\ n{\isaliteral{29}{\isacharparenright}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   937
\ \ \ \ \isacommand{case}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   938
\ {\isadigit{0}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   939
\ \ \ \ \isacommand{show}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   940
\ {\isaliteral{3F}{\isacharquery}}case\ \isacommand{sorry}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   941
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   942
\ \ \isacommand{next}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   943
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   944
\ \ \ \ \isacommand{case}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   945
\ {\isaliteral{28}{\isacharparenleft}}Suc\ n{\isaliteral{29}{\isacharparenright}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   946
\ \ \ \ \isacommand{from}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   947
\ Suc{\isaliteral{2E}{\isachardot}}hyps\ \isacommand{show}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   948
\ {\isaliteral{3F}{\isacharquery}}case\ \isacommand{sorry}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   949
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   950
\ \ \isacommand{qed}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   951
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   952
\endisatagproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   953
{\isafoldproof}%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   954
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   955
\isadelimproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   956
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   957
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   958
\endisadelimproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   959
\isacommand{end}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   960
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   961
\isamarkupsubsubsection{Example%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   962
}
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   963
\isamarkuptrue%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   964
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   965
\begin{isamarkuptext}%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   966
The subsequent example combines the following proof patterns:
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   967
  \begin{itemize}
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   968
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   969
  \item outermost induction (over the datatype structure of natural
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   970
  numbers), to decompose the proof problem in top-down manner
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   971
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   972
  \item calculational reasoning (\secref{sec:calculations-synopsis})
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   973
  to compose the result in each case
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   974
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   975
  \item solving local claims within the calculation by simplification
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   976
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   977
  \end{itemize}%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   978
\end{isamarkuptext}%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   979
\isamarkuptrue%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   980
\isacommand{lemma}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   981
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   982
\ \ \isakeyword{fixes}\ n\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ nat\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   983
\ \ \isakeyword{shows}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C53756D3E}{\isasymSum}}i{\isaliteral{3D}{\isacharequal}}{\isadigit{0}}{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}n{\isaliteral{2E}{\isachardot}}\ i{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{3D}{\isacharequal}}\ n\ {\isaliteral{2A}{\isacharasterisk}}\ {\isaliteral{28}{\isacharparenleft}}n\ {\isaliteral{2B}{\isacharplus}}\ {\isadigit{1}}{\isaliteral{29}{\isacharparenright}}\ div\ {\isadigit{2}}{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   984
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   985
\isadelimproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   986
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   987
\endisadelimproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   988
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   989
\isatagproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   990
\isacommand{proof}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   991
\ {\isaliteral{28}{\isacharparenleft}}induct\ n{\isaliteral{29}{\isacharparenright}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   992
\ \ \isacommand{case}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   993
\ {\isadigit{0}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   994
\ \ \isacommand{have}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   995
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C53756D3E}{\isasymSum}}i{\isaliteral{3D}{\isacharequal}}{\isadigit{0}}{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}{\isadigit{0}}{\isaliteral{2E}{\isachardot}}\ i{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{3D}{\isacharequal}}\ {\isaliteral{28}{\isacharparenleft}}{\isadigit{0}}{\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}nat{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{by}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   996
\ simp\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   997
\ \ \isacommand{also}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   998
\ \isacommand{have}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
   999
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C646F74733E}{\isasymdots}}\ {\isaliteral{3D}{\isacharequal}}\ {\isadigit{0}}\ {\isaliteral{2A}{\isacharasterisk}}\ {\isaliteral{28}{\isacharparenleft}}{\isadigit{0}}\ {\isaliteral{2B}{\isacharplus}}\ {\isadigit{1}}{\isaliteral{29}{\isacharparenright}}\ div\ {\isadigit{2}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{by}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1000
\ simp\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1001
\ \ \isacommand{finally}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1002
\ \isacommand{show}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1003
\ {\isaliteral{3F}{\isacharquery}}case\ \isacommand{{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1004
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1005
\isacommand{next}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1006
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1007
\ \ \isacommand{case}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1008
\ {\isaliteral{28}{\isacharparenleft}}Suc\ n{\isaliteral{29}{\isacharparenright}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1009
\ \ \isacommand{have}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1010
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C53756D3E}{\isasymSum}}i{\isaliteral{3D}{\isacharequal}}{\isadigit{0}}{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}Suc\ n{\isaliteral{2E}{\isachardot}}\ i{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{3D}{\isacharequal}}\ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C53756D3E}{\isasymSum}}i{\isaliteral{3D}{\isacharequal}}{\isadigit{0}}{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}n{\isaliteral{2E}{\isachardot}}\ i{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{2B}{\isacharplus}}\ {\isaliteral{28}{\isacharparenleft}}n\ {\isaliteral{2B}{\isacharplus}}\ {\isadigit{1}}{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{by}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1011
\ simp\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1012
\ \ \isacommand{also}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1013
\ \isacommand{have}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1014
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C646F74733E}{\isasymdots}}\ {\isaliteral{3D}{\isacharequal}}\ n\ {\isaliteral{2A}{\isacharasterisk}}\ {\isaliteral{28}{\isacharparenleft}}n\ {\isaliteral{2B}{\isacharplus}}\ {\isadigit{1}}{\isaliteral{29}{\isacharparenright}}\ div\ {\isadigit{2}}\ {\isaliteral{2B}{\isacharplus}}\ {\isaliteral{28}{\isacharparenleft}}n\ {\isaliteral{2B}{\isacharplus}}\ {\isadigit{1}}{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{by}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1015
\ {\isaliteral{28}{\isacharparenleft}}simp\ add{\isaliteral{3A}{\isacharcolon}}\ Suc{\isaliteral{2E}{\isachardot}}hyps{\isaliteral{29}{\isacharparenright}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1016
\ \ \isacommand{also}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1017
\ \isacommand{have}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1018
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C646F74733E}{\isasymdots}}\ {\isaliteral{3D}{\isacharequal}}\ {\isaliteral{28}{\isacharparenleft}}n\ {\isaliteral{2A}{\isacharasterisk}}\ {\isaliteral{28}{\isacharparenleft}}n\ {\isaliteral{2B}{\isacharplus}}\ {\isadigit{1}}{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{2B}{\isacharplus}}\ {\isadigit{2}}\ {\isaliteral{2A}{\isacharasterisk}}\ {\isaliteral{28}{\isacharparenleft}}n\ {\isaliteral{2B}{\isacharplus}}\ {\isadigit{1}}{\isaliteral{29}{\isacharparenright}}{\isaliteral{29}{\isacharparenright}}\ div\ {\isadigit{2}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{by}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1019
\ simp\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1020
\ \ \isacommand{also}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1021
\ \isacommand{have}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1022
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C646F74733E}{\isasymdots}}\ {\isaliteral{3D}{\isacharequal}}\ {\isaliteral{28}{\isacharparenleft}}Suc\ n\ {\isaliteral{2A}{\isacharasterisk}}\ {\isaliteral{28}{\isacharparenleft}}Suc\ n\ {\isaliteral{2B}{\isacharplus}}\ {\isadigit{1}}{\isaliteral{29}{\isacharparenright}}{\isaliteral{29}{\isacharparenright}}\ div\ {\isadigit{2}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{by}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1023
\ simp\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1024
\ \ \isacommand{finally}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1025
\ \isacommand{show}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1026
\ {\isaliteral{3F}{\isacharquery}}case\ \isacommand{{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1027
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1028
\isacommand{qed}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1029
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1030
\endisatagproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1031
{\isafoldproof}%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1032
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1033
\isadelimproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1034
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1035
\endisadelimproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1036
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1037
\begin{isamarkuptext}%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1038
This demonstrates how induction proofs can be done without
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1039
  having to consider the raw Natural Deduction structure.%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1040
\end{isamarkuptext}%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1041
\isamarkuptrue%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1042
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1043
\isamarkupsubsection{Induction with local parameters and premises%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1044
}
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1045
\isamarkuptrue%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1046
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1047
\begin{isamarkuptext}%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1048
Idea: Pure rule statements are passed through the induction
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1049
  rule.  This achieves convenient proof patterns, thanks to some
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1050
  internal trickery in the \hyperlink{method.induct}{\mbox{\isa{induct}}} method.
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1051
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1052
  Important: Using compact HOL formulae with \isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}{\isaliteral{2F}{\isacharslash}}{\isaliteral{5C3C6C6F6E6772696768746172726F773E}{\isasymlongrightarrow}}{\isaliteral{22}{\isachardoublequote}}} is a
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1053
  well-known anti-pattern! It would produce useless formal noise.%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1054
\end{isamarkuptext}%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1055
\isamarkuptrue%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1056
\isacommand{notepad}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1057
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1058
\isakeyword{begin}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1059
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1060
\isadelimproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1061
\ \ %
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1062
\endisadelimproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1063
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1064
\isatagproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1065
\isacommand{fix}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1066
\ n\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ nat\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1067
\ \ \isacommand{fix}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1068
\ P\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}nat\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ bool{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1069
\ \ \isacommand{fix}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1070
\ Q\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{27}{\isacharprime}}a\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ nat\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ bool{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1071
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1072
\ \ \isacommand{have}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1073
\ {\isaliteral{22}{\isachardoublequoteopen}}P\ n{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1074
\ \ \isacommand{proof}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1075
\ {\isaliteral{28}{\isacharparenleft}}induct\ n{\isaliteral{29}{\isacharparenright}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1076
\ \ \ \ \isacommand{case}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1077
\ {\isadigit{0}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1078
\ \ \ \ \isacommand{show}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1079
\ {\isaliteral{22}{\isachardoublequoteopen}}P\ {\isadigit{0}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1080
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1081
\ \ \isacommand{next}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1082
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1083
\ \ \ \ \isacommand{case}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1084
\ {\isaliteral{28}{\isacharparenleft}}Suc\ n{\isaliteral{29}{\isacharparenright}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1085
\ \ \ \ \isacommand{from}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1086
\ {\isaliteral{60}{\isacharbackquoteopen}}P\ n{\isaliteral{60}{\isacharbackquoteclose}}\ \isacommand{show}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1087
\ {\isaliteral{22}{\isachardoublequoteopen}}P\ {\isaliteral{28}{\isacharparenleft}}Suc\ n{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1088
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1089
\ \ \isacommand{qed}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1090
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1091
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1092
\ \ \isacommand{have}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1093
\ {\isaliteral{22}{\isachardoublequoteopen}}A\ n\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ P\ n{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1094
\ \ \isacommand{proof}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1095
\ {\isaliteral{28}{\isacharparenleft}}induct\ n{\isaliteral{29}{\isacharparenright}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1096
\ \ \ \ \isacommand{case}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1097
\ {\isadigit{0}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1098
\ \ \ \ \isacommand{from}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1099
\ {\isaliteral{60}{\isacharbackquoteopen}}A\ {\isadigit{0}}{\isaliteral{60}{\isacharbackquoteclose}}\ \isacommand{show}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1100
\ {\isaliteral{22}{\isachardoublequoteopen}}P\ {\isadigit{0}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1101
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1102
\ \ \isacommand{next}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1103
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1104
\ \ \ \ \isacommand{case}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1105
\ {\isaliteral{28}{\isacharparenleft}}Suc\ n{\isaliteral{29}{\isacharparenright}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1106
\ \ \ \ \isacommand{from}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1107
\ {\isaliteral{60}{\isacharbackquoteopen}}A\ n\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ P\ n{\isaliteral{60}{\isacharbackquoteclose}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1108
\ \ \ \ \ \ \isakeyword{and}\ {\isaliteral{60}{\isacharbackquoteopen}}A\ {\isaliteral{28}{\isacharparenleft}}Suc\ n{\isaliteral{29}{\isacharparenright}}{\isaliteral{60}{\isacharbackquoteclose}}\ \isacommand{show}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1109
\ {\isaliteral{22}{\isachardoublequoteopen}}P\ {\isaliteral{28}{\isacharparenleft}}Suc\ n{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1110
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1111
\ \ \isacommand{qed}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1112
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1113
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1114
\ \ \isacommand{have}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1115
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C416E643E}{\isasymAnd}}x{\isaliteral{2E}{\isachardot}}\ Q\ x\ n{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1116
\ \ \isacommand{proof}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1117
\ {\isaliteral{28}{\isacharparenleft}}induct\ n{\isaliteral{29}{\isacharparenright}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1118
\ \ \ \ \isacommand{case}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1119
\ {\isadigit{0}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1120
\ \ \ \ \isacommand{show}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1121
\ {\isaliteral{22}{\isachardoublequoteopen}}Q\ x\ {\isadigit{0}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1122
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1123
\ \ \isacommand{next}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1124
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1125
\ \ \ \ \isacommand{case}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1126
\ {\isaliteral{28}{\isacharparenleft}}Suc\ n{\isaliteral{29}{\isacharparenright}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1127
\ \ \ \ \isacommand{from}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1128
\ {\isaliteral{60}{\isacharbackquoteopen}}{\isaliteral{5C3C416E643E}{\isasymAnd}}x{\isaliteral{2E}{\isachardot}}\ Q\ x\ n{\isaliteral{60}{\isacharbackquoteclose}}\ \isacommand{show}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1129
\ {\isaliteral{22}{\isachardoublequoteopen}}Q\ x\ {\isaliteral{28}{\isacharparenleft}}Suc\ n{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1130
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1131
\begin{isamarkuptxt}%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1132
Local quantification admits arbitrary instances:%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1133
\end{isamarkuptxt}%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1134
\isamarkuptrue%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1135
\ \ \ \ \isacommand{note}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1136
\ {\isaliteral{60}{\isacharbackquoteopen}}Q\ a\ n{\isaliteral{60}{\isacharbackquoteclose}}\ \isakeyword{and}\ {\isaliteral{60}{\isacharbackquoteopen}}Q\ b\ n{\isaliteral{60}{\isacharbackquoteclose}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1137
\ \ \isacommand{qed}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1138
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1139
\endisatagproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1140
{\isafoldproof}%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1141
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1142
\isadelimproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1143
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1144
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1145
\endisadelimproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1146
\isacommand{end}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1147
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1148
\isamarkupsubsection{Implicit induction context%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1149
}
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1150
\isamarkuptrue%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1151
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1152
\begin{isamarkuptext}%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1153
The \hyperlink{method.induct}{\mbox{\isa{induct}}} method can isolate local parameters and
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1154
  premises directly from the given statement.  This is convenient in
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1155
  practical applications, but requires some understanding of what is
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1156
  going on internally (as explained above).%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1157
\end{isamarkuptext}%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1158
\isamarkuptrue%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1159
\isacommand{notepad}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1160
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1161
\isakeyword{begin}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1162
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1163
\isadelimproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1164
\ \ %
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1165
\endisadelimproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1166
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1167
\isatagproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1168
\isacommand{fix}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1169
\ n\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ nat\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1170
\ \ \isacommand{fix}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1171
\ Q\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{27}{\isacharprime}}a\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ nat\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ bool{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1172
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1173
\ \ \isacommand{fix}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1174
\ x\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{27}{\isacharprime}}a\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1175
\ \ \isacommand{assume}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1176
\ {\isaliteral{22}{\isachardoublequoteopen}}A\ x\ n{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1177
\ \ \isacommand{then}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1178
\ \isacommand{have}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1179
\ {\isaliteral{22}{\isachardoublequoteopen}}Q\ x\ n{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1180
\ \ \isacommand{proof}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1181
\ {\isaliteral{28}{\isacharparenleft}}induct\ n\ arbitrary{\isaliteral{3A}{\isacharcolon}}\ x{\isaliteral{29}{\isacharparenright}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1182
\ \ \ \ \isacommand{case}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1183
\ {\isadigit{0}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1184
\ \ \ \ \isacommand{from}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1185
\ {\isaliteral{60}{\isacharbackquoteopen}}A\ x\ {\isadigit{0}}{\isaliteral{60}{\isacharbackquoteclose}}\ \isacommand{show}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1186
\ {\isaliteral{22}{\isachardoublequoteopen}}Q\ x\ {\isadigit{0}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1187
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1188
\ \ \isacommand{next}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1189
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1190
\ \ \ \ \isacommand{case}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1191
\ {\isaliteral{28}{\isacharparenleft}}Suc\ n{\isaliteral{29}{\isacharparenright}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1192
\ \ \ \ \isacommand{from}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1193
\ {\isaliteral{60}{\isacharbackquoteopen}}{\isaliteral{5C3C416E643E}{\isasymAnd}}x{\isaliteral{2E}{\isachardot}}\ A\ x\ n\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ Q\ x\ n{\isaliteral{60}{\isacharbackquoteclose}}\ \ %
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1194
\isamarkupcmt{arbitrary instances can be produced here%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1195
}
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1196
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1197
\ \ \ \ \ \ \isakeyword{and}\ {\isaliteral{60}{\isacharbackquoteopen}}A\ x\ {\isaliteral{28}{\isacharparenleft}}Suc\ n{\isaliteral{29}{\isacharparenright}}{\isaliteral{60}{\isacharbackquoteclose}}\ \isacommand{show}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1198
\ {\isaliteral{22}{\isachardoublequoteopen}}Q\ x\ {\isaliteral{28}{\isacharparenleft}}Suc\ n{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1199
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1200
\ \ \isacommand{qed}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1201
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1202
\endisatagproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1203
{\isafoldproof}%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1204
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1205
\isadelimproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1206
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1207
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1208
\endisadelimproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1209
\isacommand{end}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1210
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1211
\isamarkupsubsection{Advanced induction with term definitions%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1212
}
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1213
\isamarkuptrue%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1214
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1215
\begin{isamarkuptext}%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1216
Induction over subexpressions of a certain shape are delicate
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1217
  to formalize.  The Isar \hyperlink{method.induct}{\mbox{\isa{induct}}} method provides
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1218
  infrastructure for this.
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1219
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1220
  Idea: sub-expressions of the problem are turned into a defined
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1221
  induction variable; often accompanied with fixing of auxiliary
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1222
  parameters in the original expression.%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1223
\end{isamarkuptext}%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1224
\isamarkuptrue%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1225
\isacommand{notepad}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1226
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1227
\isakeyword{begin}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1228
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1229
\isadelimproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1230
\ \ %
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1231
\endisadelimproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1232
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1233
\isatagproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1234
\isacommand{fix}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1235
\ a\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{27}{\isacharprime}}a\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ nat{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1236
\ \ \isacommand{fix}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1237
\ A\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}nat\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ bool{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1238
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1239
\ \ \isacommand{assume}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1240
\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{28}{\isacharparenleft}}a\ x{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1241
\ \ \isacommand{then}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1242
\ \isacommand{have}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1243
\ {\isaliteral{22}{\isachardoublequoteopen}}P\ {\isaliteral{28}{\isacharparenleft}}a\ x{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1244
\ \ \isacommand{proof}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1245
\ {\isaliteral{28}{\isacharparenleft}}induct\ {\isaliteral{22}{\isachardoublequoteopen}}a\ x{\isaliteral{22}{\isachardoublequoteclose}}\ arbitrary{\isaliteral{3A}{\isacharcolon}}\ x{\isaliteral{29}{\isacharparenright}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1246
\ \ \ \ \isacommand{case}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1247
\ {\isadigit{0}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1248
\ \ \ \ \isacommand{note}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1249
\ prem\ {\isaliteral{3D}{\isacharequal}}\ {\isaliteral{60}{\isacharbackquoteopen}}A\ {\isaliteral{28}{\isacharparenleft}}a\ x{\isaliteral{29}{\isacharparenright}}{\isaliteral{60}{\isacharbackquoteclose}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1250
\ \ \ \ \ \ \isakeyword{and}\ defn\ {\isaliteral{3D}{\isacharequal}}\ {\isaliteral{60}{\isacharbackquoteopen}}{\isadigit{0}}\ {\isaliteral{3D}{\isacharequal}}\ a\ x{\isaliteral{60}{\isacharbackquoteclose}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1251
\ \ \ \ \isacommand{show}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1252
\ {\isaliteral{22}{\isachardoublequoteopen}}P\ {\isaliteral{28}{\isacharparenleft}}a\ x{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1253
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1254
\ \ \isacommand{next}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1255
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1256
\ \ \ \ \isacommand{case}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1257
\ {\isaliteral{28}{\isacharparenleft}}Suc\ n{\isaliteral{29}{\isacharparenright}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1258
\ \ \ \ \isacommand{note}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1259
\ hyp\ {\isaliteral{3D}{\isacharequal}}\ {\isaliteral{60}{\isacharbackquoteopen}}{\isaliteral{5C3C416E643E}{\isasymAnd}}x{\isaliteral{2E}{\isachardot}}\ n\ {\isaliteral{3D}{\isacharequal}}\ a\ x\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ A\ {\isaliteral{28}{\isacharparenleft}}a\ x{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ P\ {\isaliteral{28}{\isacharparenleft}}a\ x{\isaliteral{29}{\isacharparenright}}{\isaliteral{60}{\isacharbackquoteclose}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1260
\ \ \ \ \ \ \isakeyword{and}\ prem\ {\isaliteral{3D}{\isacharequal}}\ {\isaliteral{60}{\isacharbackquoteopen}}A\ {\isaliteral{28}{\isacharparenleft}}a\ x{\isaliteral{29}{\isacharparenright}}{\isaliteral{60}{\isacharbackquoteclose}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1261
\ \ \ \ \ \ \isakeyword{and}\ defn\ {\isaliteral{3D}{\isacharequal}}\ {\isaliteral{60}{\isacharbackquoteopen}}Suc\ n\ {\isaliteral{3D}{\isacharequal}}\ a\ x{\isaliteral{60}{\isacharbackquoteclose}}\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1262
\ \ \ \ \isacommand{show}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1263
\ {\isaliteral{22}{\isachardoublequoteopen}}P\ {\isaliteral{28}{\isacharparenleft}}a\ x{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1264
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1265
\ \ \isacommand{qed}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1266
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1267
\endisatagproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1268
{\isafoldproof}%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1269
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1270
\isadelimproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1271
\isanewline
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1272
%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1273
\endisadelimproof
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1274
\isacommand{end}\isamarkupfalse%
ec270c6cb942 some material on "Structured induction proofs";
wenzelm
parents: 42920
diff changeset
  1275
%
42923
3ba51a3acff0 tuned headings;
wenzelm
parents: 42922
diff changeset
  1276
\isamarkupsection{Natural Deduction \label{sec:natural-deduction-synopsis}%
42920
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1277
}
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1278
\isamarkuptrue%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1279
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1280
\isamarkupsubsection{Rule statements%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1281
}
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1282
\isamarkuptrue%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1283
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1284
\begin{isamarkuptext}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1285
Isabelle/Pure ``theorems'' are always natural deduction rules,
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1286
  which sometimes happen to consist of a conclusion only.
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1287
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1288
  The framework connectives \isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{5C3C416E643E}{\isasymAnd}}{\isaliteral{22}{\isachardoublequote}}} and \isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}{\isaliteral{22}{\isachardoublequote}}} indicate the
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1289
  rule structure declaratively.  For example:%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1290
\end{isamarkuptext}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1291
\isamarkuptrue%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1292
\isacommand{thm}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1293
\ conjI\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1294
\isacommand{thm}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1295
\ impI\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1296
\isacommand{thm}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1297
\ nat{\isaliteral{2E}{\isachardot}}induct%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1298
\begin{isamarkuptext}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1299
The object-logic is embedded into the Pure framework via an implicit
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1300
  derivability judgment \isa{{\isaliteral{22}{\isachardoublequote}}Trueprop\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ bool\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ prop{\isaliteral{22}{\isachardoublequote}}}.
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1301
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1302
  Thus any HOL formulae appears atomic to the Pure framework, while
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1303
  the rule structure outlines the corresponding proof pattern.
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1304
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1305
  This can be made explicit as follows:%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1306
\end{isamarkuptext}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1307
\isamarkuptrue%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1308
\isacommand{notepad}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1309
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1310
\isakeyword{begin}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1311
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1312
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1313
\ \ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1314
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1315
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1316
\isatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1317
\isacommand{write}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1318
\ Trueprop\ \ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{22}{\isachardoublequoteopen}}Tr{\isaliteral{22}{\isachardoublequoteclose}}{\isaliteral{29}{\isacharparenright}}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1319
\endisatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1320
{\isafoldproof}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1321
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1322
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1323
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1324
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1325
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1326
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1327
\ \ \isacommand{thm}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1328
\ conjI\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1329
\ \ \isacommand{thm}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1330
\ impI\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1331
\ \ \isacommand{thm}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1332
\ nat{\isaliteral{2E}{\isachardot}}induct\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1333
\isacommand{end}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1334
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1335
\begin{isamarkuptext}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1336
Isar provides first-class notation for rule statements as follows.%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1337
\end{isamarkuptext}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1338
\isamarkuptrue%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1339
\isacommand{print{\isaliteral{5F}{\isacharunderscore}}statement}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1340
\ conjI\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1341
\isacommand{print{\isaliteral{5F}{\isacharunderscore}}statement}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1342
\ impI\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1343
\isacommand{print{\isaliteral{5F}{\isacharunderscore}}statement}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1344
\ nat{\isaliteral{2E}{\isachardot}}induct%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1345
\isamarkupsubsubsection{Examples%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1346
}
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1347
\isamarkuptrue%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1348
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1349
\begin{isamarkuptext}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1350
Introductions and eliminations of some standard connectives of
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1351
  the object-logic can be written as rule statements as follows.  (The
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1352
  proof ``\hyperlink{command.by}{\mbox{\isa{\isacommand{by}}}}~\hyperlink{method.blast}{\mbox{\isa{blast}}}'' serves as sanity check.)%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1353
\end{isamarkuptext}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1354
\isamarkuptrue%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1355
\isacommand{lemma}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1356
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{28}{\isacharparenleft}}P\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ False{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ {\isaliteral{5C3C6E6F743E}{\isasymnot}}\ P{\isaliteral{22}{\isachardoublequoteclose}}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1357
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1358
\ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1359
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1360
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1361
\isatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1362
\isacommand{by}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1363
\ blast%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1364
\endisatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1365
{\isafoldproof}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1366
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1367
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1368
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1369
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1370
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1371
\isacommand{lemma}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1372
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6E6F743E}{\isasymnot}}\ P\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ P\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ Q{\isaliteral{22}{\isachardoublequoteclose}}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1373
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1374
\ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1375
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1376
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1377
\isatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1378
\isacommand{by}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1379
\ blast%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1380
\endisatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1381
{\isafoldproof}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1382
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1383
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1384
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1385
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1386
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1387
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1388
\isacommand{lemma}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1389
\ {\isaliteral{22}{\isachardoublequoteopen}}P\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ Q\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ P\ {\isaliteral{5C3C616E643E}{\isasymand}}\ Q{\isaliteral{22}{\isachardoublequoteclose}}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1390
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1391
\ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1392
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1393
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1394
\isatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1395
\isacommand{by}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1396
\ blast%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1397
\endisatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1398
{\isafoldproof}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1399
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1400
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1401
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1402
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1403
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1404
\isacommand{lemma}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1405
\ {\isaliteral{22}{\isachardoublequoteopen}}P\ {\isaliteral{5C3C616E643E}{\isasymand}}\ Q\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ {\isaliteral{28}{\isacharparenleft}}P\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ Q\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ R{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ R{\isaliteral{22}{\isachardoublequoteclose}}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1406
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1407
\ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1408
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1409
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1410
\isatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1411
\isacommand{by}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1412
\ blast%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1413
\endisatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1414
{\isafoldproof}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1415
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1416
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1417
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1418
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1419
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1420
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1421
\isacommand{lemma}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1422
\ {\isaliteral{22}{\isachardoublequoteopen}}P\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ P\ {\isaliteral{5C3C6F723E}{\isasymor}}\ Q{\isaliteral{22}{\isachardoublequoteclose}}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1423
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1424
\ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1425
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1426
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1427
\isatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1428
\isacommand{by}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1429
\ blast%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1430
\endisatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1431
{\isafoldproof}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1432
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1433
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1434
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1435
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1436
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1437
\isacommand{lemma}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1438
\ {\isaliteral{22}{\isachardoublequoteopen}}Q\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ P\ {\isaliteral{5C3C6F723E}{\isasymor}}\ Q{\isaliteral{22}{\isachardoublequoteclose}}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1439
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1440
\ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1441
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1442
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1443
\isatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1444
\isacommand{by}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1445
\ blast%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1446
\endisatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1447
{\isafoldproof}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1448
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1449
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1450
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1451
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1452
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1453
\isacommand{lemma}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1454
\ {\isaliteral{22}{\isachardoublequoteopen}}P\ {\isaliteral{5C3C6F723E}{\isasymor}}\ Q\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ {\isaliteral{28}{\isacharparenleft}}P\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ R{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ {\isaliteral{28}{\isacharparenleft}}Q\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ R{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ R{\isaliteral{22}{\isachardoublequoteclose}}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1455
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1456
\ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1457
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1458
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1459
\isatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1460
\isacommand{by}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1461
\ blast%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1462
\endisatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1463
{\isafoldproof}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1464
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1465
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1466
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1467
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1468
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1469
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1470
\isacommand{lemma}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1471
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C416E643E}{\isasymAnd}}x{\isaliteral{2E}{\isachardot}}\ P\ x{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}x{\isaliteral{2E}{\isachardot}}\ P\ x{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1472
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1473
\ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1474
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1475
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1476
\isatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1477
\isacommand{by}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1478
\ blast%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1479
\endisatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1480
{\isafoldproof}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1481
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1482
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1483
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1484
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1485
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1486
\isacommand{lemma}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1487
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}x{\isaliteral{2E}{\isachardot}}\ P\ x{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ P\ x{\isaliteral{22}{\isachardoublequoteclose}}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1488
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1489
\ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1490
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1491
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1492
\isatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1493
\isacommand{by}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1494
\ blast%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1495
\endisatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1496
{\isafoldproof}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1497
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1498
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1499
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1500
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1501
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1502
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1503
\isacommand{lemma}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1504
\ {\isaliteral{22}{\isachardoublequoteopen}}P\ x\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C6578697374733E}{\isasymexists}}x{\isaliteral{2E}{\isachardot}}\ P\ x{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1505
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1506
\ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1507
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1508
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1509
\isatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1510
\isacommand{by}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1511
\ blast%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1512
\endisatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1513
{\isafoldproof}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1514
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1515
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1516
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1517
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1518
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1519
\isacommand{lemma}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1520
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C6578697374733E}{\isasymexists}}x{\isaliteral{2E}{\isachardot}}\ P\ x{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C416E643E}{\isasymAnd}}x{\isaliteral{2E}{\isachardot}}\ P\ x\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ R{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ R{\isaliteral{22}{\isachardoublequoteclose}}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1521
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1522
\ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1523
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1524
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1525
\isatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1526
\isacommand{by}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1527
\ blast%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1528
\endisatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1529
{\isafoldproof}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1530
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1531
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1532
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1533
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1534
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1535
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1536
\isacommand{lemma}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1537
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C696E3E}{\isasymin}}\ A\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ x\ {\isaliteral{5C3C696E3E}{\isasymin}}\ B\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ x\ {\isaliteral{5C3C696E3E}{\isasymin}}\ A\ {\isaliteral{5C3C696E7465723E}{\isasyminter}}\ B{\isaliteral{22}{\isachardoublequoteclose}}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1538
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1539
\ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1540
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1541
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1542
\isatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1543
\isacommand{by}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1544
\ blast%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1545
\endisatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1546
{\isafoldproof}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1547
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1548
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1549
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1550
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1551
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1552
\isacommand{lemma}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1553
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C696E3E}{\isasymin}}\ A\ {\isaliteral{5C3C696E7465723E}{\isasyminter}}\ B\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ {\isaliteral{28}{\isacharparenleft}}x\ {\isaliteral{5C3C696E3E}{\isasymin}}\ A\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ x\ {\isaliteral{5C3C696E3E}{\isasymin}}\ B\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ R{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ R{\isaliteral{22}{\isachardoublequoteclose}}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1554
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1555
\ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1556
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1557
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1558
\isatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1559
\isacommand{by}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1560
\ blast%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1561
\endisatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1562
{\isafoldproof}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1563
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1564
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1565
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1566
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1567
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1568
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1569
\isacommand{lemma}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1570
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C696E3E}{\isasymin}}\ A\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ x\ {\isaliteral{5C3C696E3E}{\isasymin}}\ A\ {\isaliteral{5C3C756E696F6E3E}{\isasymunion}}\ B{\isaliteral{22}{\isachardoublequoteclose}}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1571
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1572
\ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1573
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1574
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1575
\isatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1576
\isacommand{by}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1577
\ blast%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1578
\endisatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1579
{\isafoldproof}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1580
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1581
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1582
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1583
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1584
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1585
\isacommand{lemma}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1586
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C696E3E}{\isasymin}}\ B\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ x\ {\isaliteral{5C3C696E3E}{\isasymin}}\ A\ {\isaliteral{5C3C756E696F6E3E}{\isasymunion}}\ B{\isaliteral{22}{\isachardoublequoteclose}}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1587
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1588
\ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1589
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1590
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1591
\isatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1592
\isacommand{by}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1593
\ blast%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1594
\endisatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1595
{\isafoldproof}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1596
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1597
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1598
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1599
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1600
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1601
\isacommand{lemma}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1602
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C696E3E}{\isasymin}}\ A\ {\isaliteral{5C3C756E696F6E3E}{\isasymunion}}\ B\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ {\isaliteral{28}{\isacharparenleft}}x\ {\isaliteral{5C3C696E3E}{\isasymin}}\ A\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ R{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ {\isaliteral{28}{\isacharparenleft}}x\ {\isaliteral{5C3C696E3E}{\isasymin}}\ B\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ R{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ R{\isaliteral{22}{\isachardoublequoteclose}}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1603
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1604
\ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1605
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1606
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1607
\isatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1608
\isacommand{by}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1609
\ blast%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1610
\endisatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1611
{\isafoldproof}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1612
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1613
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1614
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1615
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1616
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1617
\isamarkupsubsection{Isar context elements%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1618
}
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1619
\isamarkuptrue%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1620
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1621
\begin{isamarkuptext}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1622
We derive some results out of the blue, using Isar context
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1623
  elements and some explicit blocks.  This illustrates their meaning
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1624
  wrt.\ Pure connectives, without goal states getting in the way.%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1625
\end{isamarkuptext}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1626
\isamarkuptrue%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1627
\isacommand{notepad}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1628
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1629
\isakeyword{begin}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1630
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1631
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1632
\ \ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1633
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1634
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1635
\isatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1636
\isacommand{{\isaliteral{7B}{\isacharbraceleft}}}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1637
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1638
\ \ \ \ \isacommand{fix}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1639
\ x\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1640
\ \ \ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1641
\ {\isaliteral{22}{\isachardoublequoteopen}}B\ x{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1642
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1643
\ \ \isacommand{{\isaliteral{7D}{\isacharbraceright}}}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1644
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1645
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1646
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C416E643E}{\isasymAnd}}x{\isaliteral{2E}{\isachardot}}\ B\ x{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{by}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1647
\ fact\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1648
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1649
\isacommand{next}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1650
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1651
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1652
\ \ \isacommand{{\isaliteral{7B}{\isacharbraceleft}}}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1653
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1654
\ \ \ \ \isacommand{assume}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1655
\ A\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1656
\ \ \ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1657
\ B\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1658
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1659
\ \ \isacommand{{\isaliteral{7D}{\isacharbraceright}}}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1660
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1661
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1662
\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ B{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{by}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1663
\ fact\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1664
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1665
\isacommand{next}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1666
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1667
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1668
\ \ \isacommand{{\isaliteral{7B}{\isacharbraceleft}}}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1669
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1670
\ \ \ \ \isacommand{def}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1671
\ x\ {\isaliteral{5C3C65717569763E}{\isasymequiv}}\ t\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1672
\ \ \ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1673
\ {\isaliteral{22}{\isachardoublequoteopen}}B\ x{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1674
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1675
\ \ \isacommand{{\isaliteral{7D}{\isacharbraceright}}}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1676
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1677
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1678
\ {\isaliteral{22}{\isachardoublequoteopen}}B\ t{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{by}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1679
\ fact\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1680
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1681
\isacommand{next}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1682
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1683
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1684
\ \ \isacommand{{\isaliteral{7B}{\isacharbraceleft}}}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1685
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1686
\ \ \ \ \isacommand{obtain}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1687
\ x\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{27}{\isacharprime}}a\ \isakeyword{where}\ {\isaliteral{22}{\isachardoublequoteopen}}B\ x{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1688
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1689
\ \ \ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1690
\ C\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1691
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1692
\ \ \isacommand{{\isaliteral{7D}{\isacharbraceright}}}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1693
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1694
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1695
\ C\ \isacommand{by}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1696
\ fact%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1697
\endisatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1698
{\isafoldproof}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1699
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1700
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1701
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1702
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1703
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1704
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1705
\isacommand{end}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1706
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1707
\isamarkupsubsection{Pure rule composition%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1708
}
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1709
\isamarkuptrue%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1710
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1711
\begin{isamarkuptext}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1712
The Pure framework provides means for:
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1713
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1714
  \begin{itemize}
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1715
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1716
    \item backward-chaining of rules by \hyperlink{inference.resolution}{\mbox{\isa{resolution}}}
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1717
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1718
    \item closing of branches by \hyperlink{inference.assumption}{\mbox{\isa{assumption}}}
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1719
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1720
  \end{itemize}
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1721
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1722
  Both principles involve higher-order unification of \isa{{\isaliteral{5C3C6C616D6264613E}{\isasymlambda}}}-terms
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1723
  modulo \isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{5C3C616C7068613E}{\isasymalpha}}{\isaliteral{5C3C626574613E}{\isasymbeta}}{\isaliteral{5C3C6574613E}{\isasymeta}}{\isaliteral{22}{\isachardoublequote}}}-equivalence (cf.\ Huet and Miller).%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1724
\end{isamarkuptext}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1725
\isamarkuptrue%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1726
\isacommand{notepad}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1727
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1728
\isakeyword{begin}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1729
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1730
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1731
\ \ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1732
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1733
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1734
\isatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1735
\isacommand{assume}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1736
\ a{\isaliteral{3A}{\isacharcolon}}\ A\ \isakeyword{and}\ b{\isaliteral{3A}{\isacharcolon}}\ B%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1737
\endisatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1738
{\isafoldproof}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1739
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1740
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1741
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1742
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1743
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1744
\ \ \isacommand{thm}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1745
\ conjI\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1746
\ \ \isacommand{thm}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1747
\ conjI\ {\isaliteral{5B}{\isacharbrackleft}}of\ A\ B{\isaliteral{5D}{\isacharbrackright}}\ \ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1748
\isamarkupcmt{instantiation%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1749
}
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1750
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1751
\ \ \isacommand{thm}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1752
\ conjI\ {\isaliteral{5B}{\isacharbrackleft}}of\ A\ B{\isaliteral{2C}{\isacharcomma}}\ OF\ a\ b{\isaliteral{5D}{\isacharbrackright}}\ \ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1753
\isamarkupcmt{instantiation and composition%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1754
}
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1755
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1756
\ \ \isacommand{thm}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1757
\ conjI\ {\isaliteral{5B}{\isacharbrackleft}}OF\ a\ b{\isaliteral{5D}{\isacharbrackright}}\ \ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1758
\isamarkupcmt{composition via unification (trivial)%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1759
}
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1760
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1761
\ \ \isacommand{thm}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1762
\ conjI\ {\isaliteral{5B}{\isacharbrackleft}}OF\ {\isaliteral{60}{\isacharbackquoteopen}}A{\isaliteral{60}{\isacharbackquoteclose}}\ {\isaliteral{60}{\isacharbackquoteopen}}B{\isaliteral{60}{\isacharbackquoteclose}}{\isaliteral{5D}{\isacharbrackright}}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1763
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1764
\ \ \isacommand{thm}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1765
\ conjI\ {\isaliteral{5B}{\isacharbrackleft}}OF\ disjI{\isadigit{1}}{\isaliteral{5D}{\isacharbrackright}}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1766
\isacommand{end}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1767
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1768
\begin{isamarkuptext}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1769
Note: Low-level rule composition is tedious and leads to
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1770
  unreadable~/ unmaintainable expressions in the text.%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1771
\end{isamarkuptext}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1772
\isamarkuptrue%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1773
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1774
\isamarkupsubsection{Structured backward reasoning%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1775
}
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1776
\isamarkuptrue%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1777
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1778
\begin{isamarkuptext}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1779
Idea: Canonical proof decomposition via \hyperlink{command.fix}{\mbox{\isa{\isacommand{fix}}}}~/
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1780
  \hyperlink{command.assume}{\mbox{\isa{\isacommand{assume}}}}~/ \hyperlink{command.show}{\mbox{\isa{\isacommand{show}}}}, where the body produces a
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1781
  natural deduction rule to refine some goal.%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1782
\end{isamarkuptext}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1783
\isamarkuptrue%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1784
\isacommand{notepad}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1785
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1786
\isakeyword{begin}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1787
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1788
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1789
\ \ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1790
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1791
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1792
\isatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1793
\isacommand{fix}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1794
\ A\ B\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{27}{\isacharprime}}a\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ bool{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1795
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1796
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1797
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C416E643E}{\isasymAnd}}x{\isaliteral{2E}{\isachardot}}\ A\ x\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ B\ x{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1798
\ \ \isacommand{proof}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1799
\ {\isaliteral{2D}{\isacharminus}}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1800
\ \ \ \ \isacommand{fix}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1801
\ x\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1802
\ \ \ \ \isacommand{assume}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1803
\ {\isaliteral{22}{\isachardoublequoteopen}}A\ x{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1804
\ \ \ \ \isacommand{show}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1805
\ {\isaliteral{22}{\isachardoublequoteopen}}B\ x{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1806
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1807
\ \ \isacommand{qed}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1808
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1809
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1810
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1811
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C416E643E}{\isasymAnd}}x{\isaliteral{2E}{\isachardot}}\ A\ x\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ B\ x{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1812
\ \ \isacommand{proof}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1813
\ {\isaliteral{2D}{\isacharminus}}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1814
\ \ \ \ \isacommand{{\isaliteral{7B}{\isacharbraceleft}}}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1815
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1816
\ \ \ \ \ \ \isacommand{fix}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1817
\ x\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1818
\ \ \ \ \ \ \isacommand{assume}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1819
\ {\isaliteral{22}{\isachardoublequoteopen}}A\ x{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1820
\ \ \ \ \ \ \isacommand{show}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1821
\ {\isaliteral{22}{\isachardoublequoteopen}}B\ x{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1822
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1823
\ \ \ \ \isacommand{{\isaliteral{7D}{\isacharbraceright}}}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1824
\ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1825
\isamarkupcmt{implicit block structure made explicit%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1826
}
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1827
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1828
\ \ \ \ \isacommand{note}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1829
\ {\isaliteral{60}{\isacharbackquoteopen}}{\isaliteral{5C3C416E643E}{\isasymAnd}}x{\isaliteral{2E}{\isachardot}}\ A\ x\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ B\ x{\isaliteral{60}{\isacharbackquoteclose}}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1830
\ \ \ \ \ \ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1831
\isamarkupcmt{side exit for the resulting rule%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1832
}
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1833
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1834
\ \ \isacommand{qed}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1835
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1836
\endisatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1837
{\isafoldproof}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1838
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1839
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1840
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1841
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1842
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1843
\isacommand{end}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1844
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1845
\isamarkupsubsection{Structured rule application%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1846
}
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1847
\isamarkuptrue%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1848
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1849
\begin{isamarkuptext}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1850
Idea: Previous facts and new claims are composed with a rule from
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1851
  the context (or background library).%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1852
\end{isamarkuptext}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1853
\isamarkuptrue%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1854
\isacommand{notepad}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1855
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1856
\isakeyword{begin}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1857
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1858
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1859
\ \ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1860
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1861
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1862
\isatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1863
\isacommand{assume}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1864
\ r{\isadigit{1}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ B\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ C{\isaliteral{22}{\isachardoublequoteclose}}\ \ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1865
\isamarkupcmt{simple rule (Horn clause)%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1866
}
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1867
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1868
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1869
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1870
\ A\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1871
\ \ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1872
\isamarkupcmt{prefix of facts via outer sub-proof%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1873
}
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1874
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1875
\ \ \isacommand{then}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1876
\ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1877
\ C\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1878
\ \ \isacommand{proof}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1879
\ {\isaliteral{28}{\isacharparenleft}}rule\ r{\isadigit{1}}{\isaliteral{29}{\isacharparenright}}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1880
\ \ \ \ \isacommand{show}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1881
\ B\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1882
\ \ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1883
\isamarkupcmt{remaining rule premises via inner sub-proof%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1884
}
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1885
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1886
\ \ \isacommand{qed}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1887
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1888
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1889
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1890
\ C\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1891
\ \ \isacommand{proof}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1892
\ {\isaliteral{28}{\isacharparenleft}}rule\ r{\isadigit{1}}{\isaliteral{29}{\isacharparenright}}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1893
\ \ \ \ \isacommand{show}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1894
\ A\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1895
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1896
\ \ \ \ \isacommand{show}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1897
\ B\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1898
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1899
\ \ \isacommand{qed}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1900
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1901
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1902
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1903
\ A\ \isakeyword{and}\ B\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1904
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1905
\ \ \isacommand{then}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1906
\ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1907
\ C\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1908
\ \ \isacommand{proof}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1909
\ {\isaliteral{28}{\isacharparenleft}}rule\ r{\isadigit{1}}{\isaliteral{29}{\isacharparenright}}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1910
\ \ \isacommand{qed}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1911
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1912
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1913
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1914
\ A\ \isakeyword{and}\ B\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1915
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1916
\ \ \isacommand{then}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1917
\ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1918
\ C\ \isacommand{by}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1919
\ {\isaliteral{28}{\isacharparenleft}}rule\ r{\isadigit{1}}{\isaliteral{29}{\isacharparenright}}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1920
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1921
\isacommand{next}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1922
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1923
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1924
\ \ \isacommand{assume}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1925
\ r{\isadigit{2}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C416E643E}{\isasymAnd}}x{\isaliteral{2E}{\isachardot}}\ B{\isadigit{1}}\ x\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ B{\isadigit{2}}\ x{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ C{\isaliteral{22}{\isachardoublequoteclose}}\ \ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1926
\isamarkupcmt{nested rule%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1927
}
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1928
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1929
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1930
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1931
\ A\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1932
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1933
\ \ \isacommand{then}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1934
\ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1935
\ C\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1936
\ \ \isacommand{proof}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1937
\ {\isaliteral{28}{\isacharparenleft}}rule\ r{\isadigit{2}}{\isaliteral{29}{\isacharparenright}}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1938
\ \ \ \ \isacommand{fix}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1939
\ x\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1940
\ \ \ \ \isacommand{assume}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1941
\ {\isaliteral{22}{\isachardoublequoteopen}}B{\isadigit{1}}\ x{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1942
\ \ \ \ \isacommand{show}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1943
\ {\isaliteral{22}{\isachardoublequoteopen}}B{\isadigit{2}}\ x{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1944
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1945
\ \ \isacommand{qed}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1946
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1947
\begin{isamarkuptxt}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1948
The compound rule premise \isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{5C3C416E643E}{\isasymAnd}}x{\isaliteral{2E}{\isachardot}}\ B{\isadigit{1}}\ x\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ B{\isadigit{2}}\ x{\isaliteral{22}{\isachardoublequote}}} is better
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1949
    addressed via \hyperlink{command.fix}{\mbox{\isa{\isacommand{fix}}}}~/ \hyperlink{command.assume}{\mbox{\isa{\isacommand{assume}}}}~/ \hyperlink{command.show}{\mbox{\isa{\isacommand{show}}}}
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1950
    in the nested proof body.%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1951
\end{isamarkuptxt}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1952
\isamarkuptrue%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1953
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1954
\endisatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1955
{\isafoldproof}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1956
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1957
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1958
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1959
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1960
\isacommand{end}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1961
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1962
\isamarkupsubsection{Example: predicate logic%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1963
}
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1964
\isamarkuptrue%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1965
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1966
\begin{isamarkuptext}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1967
Using the above principles, standard introduction and elimination proofs
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1968
  of predicate logic connectives of HOL work as follows.%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1969
\end{isamarkuptext}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1970
\isamarkuptrue%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1971
\isacommand{notepad}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1972
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1973
\isakeyword{begin}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1974
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1975
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1976
\ \ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1977
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1978
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1979
\isatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1980
\isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1981
\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C6C6F6E6772696768746172726F773E}{\isasymlongrightarrow}}\ B{\isaliteral{22}{\isachardoublequoteclose}}\ \isakeyword{and}\ A\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1982
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1983
\ \ \isacommand{then}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1984
\ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1985
\ B\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1986
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1987
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1988
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1989
\ A\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1990
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1991
\ \ \isacommand{then}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1992
\ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1993
\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C6F723E}{\isasymor}}\ B{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1994
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1995
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1996
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1997
\ B\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1998
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  1999
\ \ \isacommand{then}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2000
\ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2001
\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C6F723E}{\isasymor}}\ B{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2002
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2003
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2004
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2005
\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C6F723E}{\isasymor}}\ B{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2006
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2007
\ \ \isacommand{then}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2008
\ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2009
\ C\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2010
\ \ \isacommand{proof}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2011
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2012
\ \ \ \ \isacommand{assume}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2013
\ A\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2014
\ \ \ \ \isacommand{then}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2015
\ \isacommand{show}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2016
\ C\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2017
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2018
\ \ \isacommand{next}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2019
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2020
\ \ \ \ \isacommand{assume}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2021
\ B\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2022
\ \ \ \ \isacommand{then}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2023
\ \isacommand{show}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2024
\ C\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2025
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2026
\ \ \isacommand{qed}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2027
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2028
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2029
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2030
\ A\ \isakeyword{and}\ B\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2031
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2032
\ \ \isacommand{then}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2033
\ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2034
\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C616E643E}{\isasymand}}\ B{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2035
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2036
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2037
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2038
\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C616E643E}{\isasymand}}\ B{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2039
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2040
\ \ \isacommand{then}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2041
\ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2042
\ A\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2043
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2044
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2045
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2046
\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C616E643E}{\isasymand}}\ B{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2047
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2048
\ \ \isacommand{then}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2049
\ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2050
\ B\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2051
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2052
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2053
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2054
\ False\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2055
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2056
\ \ \isacommand{then}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2057
\ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2058
\ A\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2059
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2060
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2061
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2062
\ True\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2063
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2064
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2065
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2066
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6E6F743E}{\isasymnot}}\ A{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2067
\ \ \isacommand{proof}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2068
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2069
\ \ \ \ \isacommand{assume}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2070
\ A\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2071
\ \ \ \ \isacommand{then}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2072
\ \isacommand{show}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2073
\ False\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2074
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2075
\ \ \isacommand{qed}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2076
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2077
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2078
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2079
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6E6F743E}{\isasymnot}}\ A{\isaliteral{22}{\isachardoublequoteclose}}\ \isakeyword{and}\ A\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2080
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2081
\ \ \isacommand{then}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2082
\ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2083
\ B\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2084
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2085
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2086
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2087
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}x{\isaliteral{2E}{\isachardot}}\ P\ x{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2088
\ \ \isacommand{proof}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2089
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2090
\ \ \ \ \isacommand{fix}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2091
\ x\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2092
\ \ \ \ \isacommand{show}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2093
\ {\isaliteral{22}{\isachardoublequoteopen}}P\ x{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2094
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2095
\ \ \isacommand{qed}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2096
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2097
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2098
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2099
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}x{\isaliteral{2E}{\isachardot}}\ P\ x{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2100
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2101
\ \ \isacommand{then}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2102
\ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2103
\ {\isaliteral{22}{\isachardoublequoteopen}}P\ a{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2104
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2105
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2106
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2107
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6578697374733E}{\isasymexists}}x{\isaliteral{2E}{\isachardot}}\ P\ x{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2108
\ \ \isacommand{proof}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2109
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2110
\ \ \ \ \isacommand{show}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2111
\ {\isaliteral{22}{\isachardoublequoteopen}}P\ a{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2112
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2113
\ \ \isacommand{qed}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2114
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2115
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2116
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2117
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6578697374733E}{\isasymexists}}x{\isaliteral{2E}{\isachardot}}\ P\ x{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2118
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2119
\ \ \isacommand{then}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2120
\ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2121
\ C\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2122
\ \ \isacommand{proof}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2123
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2124
\ \ \ \ \isacommand{fix}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2125
\ a\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2126
\ \ \ \ \isacommand{assume}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2127
\ {\isaliteral{22}{\isachardoublequoteopen}}P\ a{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2128
\ \ \ \ \isacommand{show}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2129
\ C\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2130
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2131
\ \ \isacommand{qed}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2132
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2133
\begin{isamarkuptxt}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2134
Less awkward version using \hyperlink{command.obtain}{\mbox{\isa{\isacommand{obtain}}}}:%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2135
\end{isamarkuptxt}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2136
\isamarkuptrue%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2137
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2138
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6578697374733E}{\isasymexists}}x{\isaliteral{2E}{\isachardot}}\ P\ x{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2139
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2140
\ \ \isacommand{then}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2141
\ \isacommand{obtain}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2142
\ a\ \isakeyword{where}\ {\isaliteral{22}{\isachardoublequoteopen}}P\ a{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2143
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2144
\endisatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2145
{\isafoldproof}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2146
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2147
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2148
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2149
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2150
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2151
\isacommand{end}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2152
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2153
\begin{isamarkuptext}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2154
Further variations to illustrate Isar sub-proofs involving
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2155
  \hyperlink{command.show}{\mbox{\isa{\isacommand{show}}}}:%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2156
\end{isamarkuptext}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2157
\isamarkuptrue%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2158
\isacommand{notepad}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2159
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2160
\isakeyword{begin}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2161
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2162
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2163
\ \ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2164
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2165
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2166
\isatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2167
\isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2168
\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C616E643E}{\isasymand}}\ B{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2169
\ \ \isacommand{proof}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2170
\ \ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2171
\isamarkupcmt{two strictly isolated subproofs%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2172
}
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2173
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2174
\ \ \ \ \isacommand{show}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2175
\ A\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2176
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2177
\ \ \isacommand{next}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2178
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2179
\ \ \ \ \isacommand{show}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2180
\ B\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2181
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2182
\ \ \isacommand{qed}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2183
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2184
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2185
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2186
\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C616E643E}{\isasymand}}\ B{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2187
\ \ \isacommand{proof}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2188
\ \ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2189
\isamarkupcmt{one simultaneous sub-proof%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2190
}
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2191
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2192
\ \ \ \ \isacommand{show}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2193
\ A\ \isakeyword{and}\ B\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2194
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2195
\ \ \isacommand{qed}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2196
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2197
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2198
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2199
\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C616E643E}{\isasymand}}\ B{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2200
\ \ \isacommand{proof}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2201
\ \ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2202
\isamarkupcmt{two subproofs in the same context%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2203
}
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2204
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2205
\ \ \ \ \isacommand{show}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2206
\ A\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2207
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2208
\ \ \ \ \isacommand{show}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2209
\ B\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2210
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2211
\ \ \isacommand{qed}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2212
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2213
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2214
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2215
\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C616E643E}{\isasymand}}\ B{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2216
\ \ \isacommand{proof}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2217
\ \ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2218
\isamarkupcmt{swapped order%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2219
}
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2220
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2221
\ \ \ \ \isacommand{show}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2222
\ B\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2223
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2224
\ \ \ \ \isacommand{show}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2225
\ A\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2226
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2227
\ \ \isacommand{qed}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2228
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2229
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2230
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2231
\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C616E643E}{\isasymand}}\ B{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2232
\ \ \isacommand{proof}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2233
\ \ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2234
\isamarkupcmt{sequential subproofs%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2235
}
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2236
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2237
\ \ \ \ \isacommand{show}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2238
\ A\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2239
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2240
\ \ \ \ \isacommand{show}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2241
\ B\ \isacommand{using}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2242
\ {\isaliteral{60}{\isacharbackquoteopen}}A{\isaliteral{60}{\isacharbackquoteclose}}\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2243
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2244
\ \ \isacommand{qed}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2245
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2246
\endisatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2247
{\isafoldproof}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2248
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2249
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2250
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2251
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2252
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2253
\isacommand{end}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2254
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2255
\isamarkupsubsubsection{Example: set-theoretic operators%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2256
}
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2257
\isamarkuptrue%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2258
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2259
\begin{isamarkuptext}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2260
There is nothing special about logical connectives (\isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{5C3C616E643E}{\isasymand}}{\isaliteral{22}{\isachardoublequote}}}, \isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{5C3C6F723E}{\isasymor}}{\isaliteral{22}{\isachardoublequote}}}, \isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}{\isaliteral{22}{\isachardoublequote}}}, \isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{5C3C6578697374733E}{\isasymexists}}{\isaliteral{22}{\isachardoublequote}}} etc.).  Operators from
45103
a45121ffcfcb some amendments due to Jean Pichon;
wenzelm
parents: 42923
diff changeset
  2261
  set-theory or lattice-theory work analogously.  It is only a matter
42920
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2262
  of rule declarations in the library; rules can be also specified
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2263
  explicitly.%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2264
\end{isamarkuptext}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2265
\isamarkuptrue%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2266
\isacommand{notepad}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2267
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2268
\isakeyword{begin}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2269
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2270
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2271
\ \ %
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2272
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2273
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2274
\isatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2275
\isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2276
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C696E3E}{\isasymin}}\ A{\isaliteral{22}{\isachardoublequoteclose}}\ \isakeyword{and}\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C696E3E}{\isasymin}}\ B{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2277
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2278
\ \ \isacommand{then}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2279
\ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2280
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C696E3E}{\isasymin}}\ A\ {\isaliteral{5C3C696E7465723E}{\isasyminter}}\ B{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2281
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2282
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2283
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2284
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C696E3E}{\isasymin}}\ A{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2285
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2286
\ \ \isacommand{then}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2287
\ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2288
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C696E3E}{\isasymin}}\ A\ {\isaliteral{5C3C756E696F6E3E}{\isasymunion}}\ B{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2289
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2290
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2291
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2292
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C696E3E}{\isasymin}}\ B{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2293
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2294
\ \ \isacommand{then}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2295
\ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2296
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C696E3E}{\isasymin}}\ A\ {\isaliteral{5C3C756E696F6E3E}{\isasymunion}}\ B{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2297
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2298
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2299
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2300
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C696E3E}{\isasymin}}\ A\ {\isaliteral{5C3C756E696F6E3E}{\isasymunion}}\ B{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2301
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2302
\ \ \isacommand{then}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2303
\ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2304
\ C\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2305
\ \ \isacommand{proof}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2306
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2307
\ \ \ \ \isacommand{assume}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2308
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C696E3E}{\isasymin}}\ A{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2309
\ \ \ \ \isacommand{then}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2310
\ \isacommand{show}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2311
\ C\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2312
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2313
\ \ \isacommand{next}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2314
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2315
\ \ \ \ \isacommand{assume}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2316
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C696E3E}{\isasymin}}\ B{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2317
\ \ \ \ \isacommand{then}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2318
\ \isacommand{show}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2319
\ C\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2320
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2321
\ \ \isacommand{qed}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2322
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2323
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2324
\isacommand{next}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2325
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2326
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2327
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C696E3E}{\isasymin}}\ {\isaliteral{5C3C496E7465723E}{\isasymInter}}A{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2328
\ \ \isacommand{proof}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2329
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2330
\ \ \ \ \isacommand{fix}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2331
\ a\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2332
\ \ \ \ \isacommand{assume}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2333
\ {\isaliteral{22}{\isachardoublequoteopen}}a\ {\isaliteral{5C3C696E3E}{\isasymin}}\ A{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2334
\ \ \ \ \isacommand{show}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2335
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C696E3E}{\isasymin}}\ a{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2336
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2337
\ \ \isacommand{qed}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2338
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2339
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2340
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2341
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C696E3E}{\isasymin}}\ {\isaliteral{5C3C496E7465723E}{\isasymInter}}A{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2342
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2343
\ \ \isacommand{then}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2344
\ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2345
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C696E3E}{\isasymin}}\ a{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2346
\ \ \isacommand{proof}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2347
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2348
\ \ \ \ \isacommand{show}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2349
\ {\isaliteral{22}{\isachardoublequoteopen}}a\ {\isaliteral{5C3C696E3E}{\isasymin}}\ A{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2350
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2351
\ \ \isacommand{qed}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2352
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2353
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2354
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2355
\ {\isaliteral{22}{\isachardoublequoteopen}}a\ {\isaliteral{5C3C696E3E}{\isasymin}}\ A{\isaliteral{22}{\isachardoublequoteclose}}\ \isakeyword{and}\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C696E3E}{\isasymin}}\ a{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2356
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2357
\ \ \isacommand{then}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2358
\ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2359
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C696E3E}{\isasymin}}\ {\isaliteral{5C3C556E696F6E3E}{\isasymUnion}}A{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2360
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2361
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2362
\ \ \isacommand{have}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2363
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C696E3E}{\isasymin}}\ {\isaliteral{5C3C556E696F6E3E}{\isasymUnion}}A{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2364
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2365
\ \ \isacommand{then}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2366
\ \isacommand{obtain}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2367
\ a\ \isakeyword{where}\ {\isaliteral{22}{\isachardoublequoteopen}}a\ {\isaliteral{5C3C696E3E}{\isasymin}}\ A{\isaliteral{22}{\isachardoublequoteclose}}\ \isakeyword{and}\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C696E3E}{\isasymin}}\ a{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2368
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2369
\endisatagproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2370
{\isafoldproof}%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2371
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2372
\isadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2373
\isanewline
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2374
%
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2375
\endisadelimproof
8c0a49d72857 some material on "Structured Natural Deduction";
wenzelm
parents: 42919
diff changeset
  2376
\isacommand{end}\isamarkupfalse%
42922
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2377
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2378
\isamarkupsection{Generalized elimination and cases%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2379
}
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2380
\isamarkuptrue%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2381
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2382
\isamarkupsubsection{General elimination rules%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2383
}
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2384
\isamarkuptrue%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2385
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2386
\begin{isamarkuptext}%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2387
The general format of elimination rules is illustrated by the
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2388
  following typical representatives:%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2389
\end{isamarkuptext}%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2390
\isamarkuptrue%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2391
\isacommand{thm}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2392
\ exE\ \ \ \ \ %
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2393
\isamarkupcmt{local parameter%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2394
}
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2395
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2396
\isacommand{thm}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2397
\ conjE\ \ \ %
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2398
\isamarkupcmt{local premises%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2399
}
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2400
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2401
\isacommand{thm}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2402
\ disjE\ \ \ %
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2403
\isamarkupcmt{split into cases%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2404
}
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2405
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2406
\begin{isamarkuptext}%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2407
Combining these characteristics leads to the following general scheme
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2408
  for elimination rules with cases:
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2409
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2410
  \begin{itemize}
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2411
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2412
  \item prefix of assumptions (or ``major premises'')
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2413
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2414
  \item one or more cases that enable to establish the main conclusion
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2415
    in an augmented context
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2416
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2417
  \end{itemize}%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2418
\end{isamarkuptext}%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2419
\isamarkuptrue%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2420
\isacommand{notepad}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2421
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2422
\isakeyword{begin}\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2423
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2424
\isadelimproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2425
\ \ %
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2426
\endisadelimproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2427
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2428
\isatagproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2429
\isacommand{assume}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2430
\ r{\isaliteral{3A}{\isacharcolon}}\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2431
\ \ \ \ {\isaliteral{22}{\isachardoublequoteopen}}A{\isadigit{1}}\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ A{\isadigit{2}}\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ \ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{2A}{\isacharasterisk}}\ assumptions\ {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{29}{\isacharparenright}}\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2432
\ \ \ \ \ \ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C416E643E}{\isasymAnd}}x\ y{\isaliteral{2E}{\isachardot}}\ B{\isadigit{1}}\ x\ y\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ C{\isadigit{1}}\ x\ y\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ R{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ \ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{2A}{\isacharasterisk}}\ case\ {\isadigit{1}}\ {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{29}{\isacharparenright}}\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2433
\ \ \ \ \ \ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C416E643E}{\isasymAnd}}x\ y{\isaliteral{2E}{\isachardot}}\ B{\isadigit{2}}\ x\ y\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ C{\isadigit{2}}\ x\ y\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ R{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ \ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{2A}{\isacharasterisk}}\ case\ {\isadigit{2}}\ {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{29}{\isacharparenright}}\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2434
\ \ \ \ \ \ R\ \ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{2A}{\isacharasterisk}}\ main\ conclusion\ {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2435
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2436
\ \ \isacommand{have}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2437
\ A{\isadigit{1}}\ \isakeyword{and}\ A{\isadigit{2}}\ \isacommand{sorry}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2438
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2439
\ \ \isacommand{then}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2440
\ \isacommand{have}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2441
\ R\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2442
\ \ \isacommand{proof}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2443
\ {\isaliteral{28}{\isacharparenleft}}rule\ r{\isaliteral{29}{\isacharparenright}}\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2444
\ \ \ \ \isacommand{fix}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2445
\ x\ y\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2446
\ \ \ \ \isacommand{assume}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2447
\ {\isaliteral{22}{\isachardoublequoteopen}}B{\isadigit{1}}\ x\ y{\isaliteral{22}{\isachardoublequoteclose}}\ \isakeyword{and}\ {\isaliteral{22}{\isachardoublequoteopen}}C{\isadigit{1}}\ x\ y{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2448
\ \ \ \ \isacommand{show}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2449
\ {\isaliteral{3F}{\isacharquery}}thesis\ \isacommand{sorry}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2450
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2451
\ \ \isacommand{next}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2452
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2453
\ \ \ \ \isacommand{fix}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2454
\ x\ y\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2455
\ \ \ \ \isacommand{assume}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2456
\ {\isaliteral{22}{\isachardoublequoteopen}}B{\isadigit{2}}\ x\ y{\isaliteral{22}{\isachardoublequoteclose}}\ \isakeyword{and}\ {\isaliteral{22}{\isachardoublequoteopen}}C{\isadigit{2}}\ x\ y{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2457
\ \ \ \ \isacommand{show}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2458
\ {\isaliteral{3F}{\isacharquery}}thesis\ \isacommand{sorry}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2459
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2460
\ \ \isacommand{qed}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2461
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2462
\endisatagproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2463
{\isafoldproof}%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2464
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2465
\isadelimproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2466
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2467
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2468
\endisadelimproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2469
\isacommand{end}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2470
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2471
\begin{isamarkuptext}%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2472
Here \isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{3F}{\isacharquery}}thesis{\isaliteral{22}{\isachardoublequote}}} is used to refer to the unchanged goal
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2473
  statement.%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2474
\end{isamarkuptext}%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2475
\isamarkuptrue%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2476
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2477
\isamarkupsubsection{Rules with cases%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2478
}
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2479
\isamarkuptrue%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2480
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2481
\begin{isamarkuptext}%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2482
Applying an elimination rule to some goal, leaves that unchanged
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2483
  but allows to augment the context in the sub-proof of each case.
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2484
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2485
  Isar provides some infrastructure to support this:
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2486
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2487
  \begin{itemize}
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2488
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2489
  \item native language elements to state eliminations
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2490
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2491
  \item symbolic case names
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2492
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2493
  \item method \hyperlink{method.cases}{\mbox{\isa{cases}}} to recover this structure in a
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2494
  sub-proof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2495
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2496
  \end{itemize}%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2497
\end{isamarkuptext}%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2498
\isamarkuptrue%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2499
\isacommand{print{\isaliteral{5F}{\isacharunderscore}}statement}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2500
\ exE\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2501
\isacommand{print{\isaliteral{5F}{\isacharunderscore}}statement}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2502
\ conjE\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2503
\isacommand{print{\isaliteral{5F}{\isacharunderscore}}statement}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2504
\ disjE\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2505
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2506
\isacommand{lemma}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2507
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2508
\ \ \isakeyword{assumes}\ A{\isadigit{1}}\ \isakeyword{and}\ A{\isadigit{2}}\ \ %
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2509
\isamarkupcmt{assumptions%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2510
}
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2511
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2512
\ \ \isakeyword{obtains}\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2513
\ \ \ \ {\isaliteral{28}{\isacharparenleft}}case{\isadigit{1}}{\isaliteral{29}{\isacharparenright}}\ \ x\ y\ \isakeyword{where}\ {\isaliteral{22}{\isachardoublequoteopen}}B{\isadigit{1}}\ x\ y{\isaliteral{22}{\isachardoublequoteclose}}\ \isakeyword{and}\ {\isaliteral{22}{\isachardoublequoteopen}}C{\isadigit{1}}\ x\ y{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2514
\ \ {\isaliteral{7C}{\isacharbar}}\ {\isaliteral{28}{\isacharparenleft}}case{\isadigit{2}}{\isaliteral{29}{\isacharparenright}}\ \ x\ y\ \isakeyword{where}\ {\isaliteral{22}{\isachardoublequoteopen}}B{\isadigit{2}}\ x\ y{\isaliteral{22}{\isachardoublequoteclose}}\ \isakeyword{and}\ {\isaliteral{22}{\isachardoublequoteopen}}C{\isadigit{2}}\ x\ y{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2515
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2516
\isadelimproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2517
\ \ %
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2518
\endisadelimproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2519
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2520
\isatagproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2521
\isacommand{sorry}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2522
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2523
\endisatagproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2524
{\isafoldproof}%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2525
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2526
\isadelimproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2527
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2528
\endisadelimproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2529
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2530
\isamarkupsubsubsection{Example%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2531
}
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2532
\isamarkuptrue%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2533
\isacommand{lemma}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2534
\ tertium{\isaliteral{5F}{\isacharunderscore}}non{\isaliteral{5F}{\isacharunderscore}}datur{\isaliteral{3A}{\isacharcolon}}\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2535
\ \ \isakeyword{obtains}\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2536
\ \ \ \ {\isaliteral{28}{\isacharparenleft}}T{\isaliteral{29}{\isacharparenright}}\ \ A\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2537
\ \ {\isaliteral{7C}{\isacharbar}}\ {\isaliteral{28}{\isacharparenleft}}F{\isaliteral{29}{\isacharparenright}}\ \ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6E6F743E}{\isasymnot}}\ A{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2538
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2539
\isadelimproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2540
\ \ %
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2541
\endisadelimproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2542
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2543
\isatagproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2544
\isacommand{by}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2545
\ blast%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2546
\endisatagproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2547
{\isafoldproof}%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2548
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2549
\isadelimproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2550
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2551
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2552
\endisadelimproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2553
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2554
\isacommand{notepad}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2555
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2556
\isakeyword{begin}\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2557
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2558
\isadelimproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2559
\ \ %
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2560
\endisadelimproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2561
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2562
\isatagproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2563
\isacommand{fix}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2564
\ x\ y\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{27}{\isacharprime}}a\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2565
\ \ \isacommand{have}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2566
\ C\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2567
\ \ \isacommand{proof}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2568
\ {\isaliteral{28}{\isacharparenleft}}cases\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{3D}{\isacharequal}}\ y{\isaliteral{22}{\isachardoublequoteclose}}\ rule{\isaliteral{3A}{\isacharcolon}}\ tertium{\isaliteral{5F}{\isacharunderscore}}non{\isaliteral{5F}{\isacharunderscore}}datur{\isaliteral{29}{\isacharparenright}}\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2569
\ \ \ \ \isacommand{case}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2570
\ T\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2571
\ \ \ \ \isacommand{from}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2572
\ {\isaliteral{60}{\isacharbackquoteopen}}x\ {\isaliteral{3D}{\isacharequal}}\ y{\isaliteral{60}{\isacharbackquoteclose}}\ \isacommand{show}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2573
\ {\isaliteral{3F}{\isacharquery}}thesis\ \isacommand{sorry}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2574
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2575
\ \ \isacommand{next}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2576
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2577
\ \ \ \ \isacommand{case}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2578
\ F\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2579
\ \ \ \ \isacommand{from}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2580
\ {\isaliteral{60}{\isacharbackquoteopen}}x\ {\isaliteral{5C3C6E6F7465713E}{\isasymnoteq}}\ y{\isaliteral{60}{\isacharbackquoteclose}}\ \isacommand{show}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2581
\ {\isaliteral{3F}{\isacharquery}}thesis\ \isacommand{sorry}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2582
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2583
\ \ \isacommand{qed}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2584
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2585
\endisatagproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2586
{\isafoldproof}%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2587
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2588
\isadelimproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2589
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2590
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2591
\endisadelimproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2592
\isacommand{end}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2593
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2594
\isamarkupsubsubsection{Example%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2595
}
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2596
\isamarkuptrue%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2597
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2598
\begin{isamarkuptext}%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2599
Isabelle/HOL specification mechanisms (datatype, inductive, etc.)
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2600
  provide suitable derived cases rules.%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2601
\end{isamarkuptext}%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2602
\isamarkuptrue%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2603
\isacommand{datatype}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2604
\ foo\ {\isaliteral{3D}{\isacharequal}}\ Foo\ {\isaliteral{7C}{\isacharbar}}\ Bar\ foo\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2605
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2606
\isacommand{notepad}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2607
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2608
\isakeyword{begin}\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2609
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2610
\isadelimproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2611
\ \ %
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2612
\endisadelimproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2613
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2614
\isatagproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2615
\isacommand{fix}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2616
\ x\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ foo\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2617
\ \ \isacommand{have}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2618
\ C\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2619
\ \ \isacommand{proof}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2620
\ {\isaliteral{28}{\isacharparenleft}}cases\ x{\isaliteral{29}{\isacharparenright}}\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2621
\ \ \ \ \isacommand{case}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2622
\ Foo\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2623
\ \ \ \ \isacommand{from}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2624
\ {\isaliteral{60}{\isacharbackquoteopen}}x\ {\isaliteral{3D}{\isacharequal}}\ Foo{\isaliteral{60}{\isacharbackquoteclose}}\ \isacommand{show}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2625
\ {\isaliteral{3F}{\isacharquery}}thesis\ \isacommand{sorry}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2626
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2627
\ \ \isacommand{next}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2628
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2629
\ \ \ \ \isacommand{case}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2630
\ {\isaliteral{28}{\isacharparenleft}}Bar\ a{\isaliteral{29}{\isacharparenright}}\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2631
\ \ \ \ \isacommand{from}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2632
\ {\isaliteral{60}{\isacharbackquoteopen}}x\ {\isaliteral{3D}{\isacharequal}}\ Bar\ a{\isaliteral{60}{\isacharbackquoteclose}}\ \isacommand{show}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2633
\ {\isaliteral{3F}{\isacharquery}}thesis\ \isacommand{sorry}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2634
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2635
\ \ \isacommand{qed}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2636
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2637
\endisatagproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2638
{\isafoldproof}%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2639
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2640
\isadelimproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2641
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2642
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2643
\endisadelimproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2644
\isacommand{end}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2645
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2646
\isamarkupsubsection{Obtaining local contexts%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2647
}
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2648
\isamarkuptrue%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2649
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2650
\begin{isamarkuptext}%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2651
A single ``case'' branch may be inlined into Isar proof text
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2652
  via \hyperlink{command.obtain}{\mbox{\isa{\isacommand{obtain}}}}.  This proves \isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C416E643E}{\isasymAnd}}x{\isaliteral{2E}{\isachardot}}\ B\ x\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ thesis{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ thesis{\isaliteral{22}{\isachardoublequote}}} on the spot, and augments the context afterwards.%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2653
\end{isamarkuptext}%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2654
\isamarkuptrue%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2655
\isacommand{notepad}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2656
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2657
\isakeyword{begin}\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2658
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2659
\isadelimproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2660
\ \ %
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2661
\endisadelimproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2662
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2663
\isatagproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2664
\isacommand{fix}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2665
\ B\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{27}{\isacharprime}}a\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ bool{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2666
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2667
\ \ \isacommand{obtain}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2668
\ x\ \isakeyword{where}\ {\isaliteral{22}{\isachardoublequoteopen}}B\ x{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2669
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2670
\ \ \isacommand{note}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2671
\ {\isaliteral{60}{\isacharbackquoteopen}}B\ x{\isaliteral{60}{\isacharbackquoteclose}}%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2672
\begin{isamarkuptxt}%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2673
Conclusions from this context may not mention \isa{x} again!%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2674
\end{isamarkuptxt}%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2675
\isamarkuptrue%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2676
\ \ \isacommand{{\isaliteral{7B}{\isacharbraceleft}}}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2677
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2678
\ \ \ \ \isacommand{obtain}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2679
\ x\ \isakeyword{where}\ {\isaliteral{22}{\isachardoublequoteopen}}B\ x{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{sorry}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2680
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2681
\ \ \ \ \isacommand{from}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2682
\ {\isaliteral{60}{\isacharbackquoteopen}}B\ x{\isaliteral{60}{\isacharbackquoteclose}}\ \isacommand{have}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2683
\ C\ \isacommand{sorry}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2684
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2685
\ \ \isacommand{{\isaliteral{7D}{\isacharbraceright}}}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2686
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2687
\ \ \isacommand{note}\isamarkupfalse%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2688
\ {\isaliteral{60}{\isacharbackquoteopen}}C{\isaliteral{60}{\isacharbackquoteclose}}%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2689
\endisatagproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2690
{\isafoldproof}%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2691
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2692
\isadelimproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2693
\isanewline
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2694
%
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2695
\endisadelimproof
91e229959d4c some material on "Generalized elimination and cases";
wenzelm
parents: 42921
diff changeset
  2696
\isacommand{end}\isamarkupfalse%
42917
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
  2697
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
  2698
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
  2699
\isadelimtheory
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
  2700
\isanewline
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
  2701
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
  2702
\endisadelimtheory
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
  2703
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
  2704
\isatagtheory
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
  2705
\isacommand{end}\isamarkupfalse%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
  2706
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
  2707
\endisatagtheory
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
  2708
{\isafoldtheory}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
  2709
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
  2710
\isadelimtheory
45103
a45121ffcfcb some amendments due to Jean Pichon;
wenzelm
parents: 42923
diff changeset
  2711
\isanewline
42917
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
  2712
%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
  2713
\endisadelimtheory
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
  2714
\end{isabellebody}%
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
  2715
%%% Local Variables:
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
  2716
%%% mode: latex
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
  2717
%%% TeX-master: "root"
ba23e83b0868 added Synopsis, with some "Notepad" material;
wenzelm
parents:
diff changeset
  2718
%%% End: