doc-src/IsarRef/Thy/document/First_Order_Logic.tex
author wenzelm
Mon, 03 Oct 2011 11:14:19 +0200
changeset 45988 a45121ffcfcb
parent 43522 e3fdb7c96be5
permissions -rw-r--r--
some amendments due to Jean Pichon;
wenzelm@30057
     1
%
wenzelm@30057
     2
\begin{isabellebody}%
wenzelm@40685
     3
\def\isabellecontext{First{\isaliteral{5F}{\isacharunderscore}}Order{\isaliteral{5F}{\isacharunderscore}}Logic}%
wenzelm@30057
     4
%
wenzelm@30057
     5
\isamarkupheader{Example: First-Order Logic%
wenzelm@30057
     6
}
wenzelm@30057
     7
\isamarkuptrue%
wenzelm@30057
     8
%
wenzelm@30057
     9
\isadelimvisible
wenzelm@30057
    10
%
wenzelm@30057
    11
\endisadelimvisible
wenzelm@30057
    12
%
wenzelm@30057
    13
\isatagvisible
wenzelm@30057
    14
\isacommand{theory}\isamarkupfalse%
wenzelm@40685
    15
\ First{\isaliteral{5F}{\isacharunderscore}}Order{\isaliteral{5F}{\isacharunderscore}}Logic\isanewline
wenzelm@43522
    16
\isakeyword{imports}\ Base\ \ \isanewline
wenzelm@30057
    17
\isakeyword{begin}%
wenzelm@30057
    18
\endisatagvisible
wenzelm@30057
    19
{\isafoldvisible}%
wenzelm@30057
    20
%
wenzelm@30057
    21
\isadelimvisible
wenzelm@30057
    22
%
wenzelm@30057
    23
\endisadelimvisible
wenzelm@30057
    24
%
wenzelm@30057
    25
\begin{isamarkuptext}%
wenzelm@30066
    26
\noindent In order to commence a new object-logic within
wenzelm@40685
    27
  Isabelle/Pure we introduce abstract syntactic categories \isa{{\isaliteral{22}{\isachardoublequote}}i{\isaliteral{22}{\isachardoublequote}}}
wenzelm@40685
    28
  for individuals and \isa{{\isaliteral{22}{\isachardoublequote}}o{\isaliteral{22}{\isachardoublequote}}} for object-propositions.  The latter
wenzelm@30066
    29
  is embedded into the language of Pure propositions by means of a
wenzelm@30066
    30
  separate judgment.%
wenzelm@30057
    31
\end{isamarkuptext}%
wenzelm@30057
    32
\isamarkuptrue%
wenzelm@30057
    33
\isacommand{typedecl}\isamarkupfalse%
wenzelm@30057
    34
\ i\isanewline
wenzelm@30057
    35
\isacommand{typedecl}\isamarkupfalse%
wenzelm@30057
    36
\ o\isanewline
wenzelm@30057
    37
\isanewline
wenzelm@30057
    38
\isacommand{judgment}\isamarkupfalse%
wenzelm@30057
    39
\isanewline
wenzelm@40685
    40
\ \ Trueprop\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}o\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ prop{\isaliteral{22}{\isachardoublequoteclose}}\ \ \ \ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5F}{\isacharunderscore}}{\isaliteral{22}{\isachardoublequoteclose}}\ {\isadigit{5}}{\isaliteral{29}{\isacharparenright}}%
wenzelm@30057
    41
\begin{isamarkuptext}%
wenzelm@30057
    42
\noindent Note that the object-logic judgement is implicit in the
wenzelm@40685
    43
  syntax: writing \isa{A} produces \isa{{\isaliteral{22}{\isachardoublequote}}Trueprop\ A{\isaliteral{22}{\isachardoublequote}}} internally.
wenzelm@30057
    44
  From the Pure perspective this means ``\isa{A} is derivable in the
wenzelm@30057
    45
  object-logic''.%
wenzelm@30057
    46
\end{isamarkuptext}%
wenzelm@30057
    47
\isamarkuptrue%
wenzelm@30057
    48
%
wenzelm@30057
    49
\isamarkupsubsection{Equational reasoning \label{sec:framework-ex-equal}%
wenzelm@30057
    50
}
wenzelm@30057
    51
\isamarkuptrue%
wenzelm@30057
    52
%
wenzelm@30057
    53
\begin{isamarkuptext}%
wenzelm@30057
    54
Equality is axiomatized as a binary predicate on individuals, with
wenzelm@30057
    55
  reflexivity as introduction, and substitution as elimination
wenzelm@30057
    56
  principle.  Note that the latter is particularly convenient in a
wenzelm@30057
    57
  framework like Isabelle, because syntactic congruences are
wenzelm@40685
    58
  implicitly produced by unification of \isa{{\isaliteral{22}{\isachardoublequote}}B\ x{\isaliteral{22}{\isachardoublequote}}} against
wenzelm@30057
    59
  expressions containing occurrences of \isa{x}.%
wenzelm@30057
    60
\end{isamarkuptext}%
wenzelm@30057
    61
\isamarkuptrue%
wenzelm@30057
    62
\isacommand{axiomatization}\isamarkupfalse%
wenzelm@30057
    63
\isanewline
wenzelm@40685
    64
\ \ equal\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}i\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ i\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ o{\isaliteral{22}{\isachardoublequoteclose}}\ \ {\isaliteral{28}{\isacharparenleft}}\isakeyword{infix}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{3D}{\isacharequal}}{\isaliteral{22}{\isachardoublequoteclose}}\ {\isadigit{5}}{\isadigit{0}}{\isaliteral{29}{\isacharparenright}}\isanewline
wenzelm@30057
    65
\isakeyword{where}\isanewline
wenzelm@40685
    66
\ \ refl\ {\isaliteral{5B}{\isacharbrackleft}}intro{\isaliteral{5D}{\isacharbrackright}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{3D}{\isacharequal}}\ x{\isaliteral{22}{\isachardoublequoteclose}}\ \isakeyword{and}\isanewline
wenzelm@40685
    67
\ \ subst\ {\isaliteral{5B}{\isacharbrackleft}}elim{\isaliteral{5D}{\isacharbrackright}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{3D}{\isacharequal}}\ y\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ B\ x\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ B\ y{\isaliteral{22}{\isachardoublequoteclose}}%
wenzelm@30057
    68
\begin{isamarkuptext}%
wenzelm@30057
    69
\noindent Substitution is very powerful, but also hard to control in
wenzelm@30057
    70
  full generality.  We derive some common symmetry~/ transitivity
wenzelm@45988
    71
  schemes of \isa{equal} as particular consequences.%
wenzelm@30057
    72
\end{isamarkuptext}%
wenzelm@30057
    73
\isamarkuptrue%
wenzelm@30057
    74
\isacommand{theorem}\isamarkupfalse%
wenzelm@40685
    75
\ sym\ {\isaliteral{5B}{\isacharbrackleft}}sym{\isaliteral{5D}{\isacharbrackright}}{\isaliteral{3A}{\isacharcolon}}\isanewline
wenzelm@40685
    76
\ \ \isakeyword{assumes}\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{3D}{\isacharequal}}\ y{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@40685
    77
\ \ \isakeyword{shows}\ {\isaliteral{22}{\isachardoublequoteopen}}y\ {\isaliteral{3D}{\isacharequal}}\ x{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@30057
    78
%
wenzelm@30057
    79
\isadelimproof
wenzelm@30057
    80
%
wenzelm@30057
    81
\endisadelimproof
wenzelm@30057
    82
%
wenzelm@30057
    83
\isatagproof
wenzelm@30057
    84
\isacommand{proof}\isamarkupfalse%
wenzelm@40685
    85
\ {\isaliteral{2D}{\isacharminus}}\isanewline
wenzelm@30057
    86
\ \ \isacommand{have}\isamarkupfalse%
wenzelm@40685
    87
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{3D}{\isacharequal}}\ x{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30057
    88
\isanewline
wenzelm@30057
    89
\ \ \isacommand{with}\isamarkupfalse%
wenzelm@40685
    90
\ {\isaliteral{60}{\isacharbackquoteopen}}x\ {\isaliteral{3D}{\isacharequal}}\ y{\isaliteral{60}{\isacharbackquoteclose}}\ \isacommand{show}\isamarkupfalse%
wenzelm@40685
    91
\ {\isaliteral{22}{\isachardoublequoteopen}}y\ {\isaliteral{3D}{\isacharequal}}\ x{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30057
    92
\isanewline
wenzelm@30057
    93
\isacommand{qed}\isamarkupfalse%
wenzelm@30057
    94
%
wenzelm@30057
    95
\endisatagproof
wenzelm@30057
    96
{\isafoldproof}%
wenzelm@30057
    97
%
wenzelm@30057
    98
\isadelimproof
wenzelm@30057
    99
\isanewline
wenzelm@30057
   100
%
wenzelm@30057
   101
\endisadelimproof
wenzelm@30057
   102
\isanewline
wenzelm@30057
   103
\isacommand{theorem}\isamarkupfalse%
wenzelm@40685
   104
\ forw{\isaliteral{5F}{\isacharunderscore}}subst\ {\isaliteral{5B}{\isacharbrackleft}}trans{\isaliteral{5D}{\isacharbrackright}}{\isaliteral{3A}{\isacharcolon}}\isanewline
wenzelm@40685
   105
\ \ \isakeyword{assumes}\ {\isaliteral{22}{\isachardoublequoteopen}}y\ {\isaliteral{3D}{\isacharequal}}\ x{\isaliteral{22}{\isachardoublequoteclose}}\ \isakeyword{and}\ {\isaliteral{22}{\isachardoublequoteopen}}B\ x{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@40685
   106
\ \ \isakeyword{shows}\ {\isaliteral{22}{\isachardoublequoteopen}}B\ y{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@30057
   107
%
wenzelm@30057
   108
\isadelimproof
wenzelm@30057
   109
%
wenzelm@30057
   110
\endisadelimproof
wenzelm@30057
   111
%
wenzelm@30057
   112
\isatagproof
wenzelm@30057
   113
\isacommand{proof}\isamarkupfalse%
wenzelm@40685
   114
\ {\isaliteral{2D}{\isacharminus}}\isanewline
wenzelm@30057
   115
\ \ \isacommand{from}\isamarkupfalse%
wenzelm@40685
   116
\ {\isaliteral{60}{\isacharbackquoteopen}}y\ {\isaliteral{3D}{\isacharequal}}\ x{\isaliteral{60}{\isacharbackquoteclose}}\ \isacommand{have}\isamarkupfalse%
wenzelm@40685
   117
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{3D}{\isacharequal}}\ y{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30057
   118
\isanewline
wenzelm@30057
   119
\ \ \isacommand{from}\isamarkupfalse%
wenzelm@40685
   120
\ this\ \isakeyword{and}\ {\isaliteral{60}{\isacharbackquoteopen}}B\ x{\isaliteral{60}{\isacharbackquoteclose}}\ \isacommand{show}\isamarkupfalse%
wenzelm@40685
   121
\ {\isaliteral{22}{\isachardoublequoteopen}}B\ y{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30057
   122
\isanewline
wenzelm@30057
   123
\isacommand{qed}\isamarkupfalse%
wenzelm@30057
   124
%
wenzelm@30057
   125
\endisatagproof
wenzelm@30057
   126
{\isafoldproof}%
wenzelm@30057
   127
%
wenzelm@30057
   128
\isadelimproof
wenzelm@30057
   129
\isanewline
wenzelm@30057
   130
%
wenzelm@30057
   131
\endisadelimproof
wenzelm@30057
   132
\isanewline
wenzelm@30057
   133
\isacommand{theorem}\isamarkupfalse%
wenzelm@40685
   134
\ back{\isaliteral{5F}{\isacharunderscore}}subst\ {\isaliteral{5B}{\isacharbrackleft}}trans{\isaliteral{5D}{\isacharbrackright}}{\isaliteral{3A}{\isacharcolon}}\isanewline
wenzelm@40685
   135
\ \ \isakeyword{assumes}\ {\isaliteral{22}{\isachardoublequoteopen}}B\ x{\isaliteral{22}{\isachardoublequoteclose}}\ \isakeyword{and}\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{3D}{\isacharequal}}\ y{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@40685
   136
\ \ \isakeyword{shows}\ {\isaliteral{22}{\isachardoublequoteopen}}B\ y{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@30057
   137
%
wenzelm@30057
   138
\isadelimproof
wenzelm@30057
   139
%
wenzelm@30057
   140
\endisadelimproof
wenzelm@30057
   141
%
wenzelm@30057
   142
\isatagproof
wenzelm@30057
   143
\isacommand{proof}\isamarkupfalse%
wenzelm@40685
   144
\ {\isaliteral{2D}{\isacharminus}}\isanewline
wenzelm@30057
   145
\ \ \isacommand{from}\isamarkupfalse%
wenzelm@40685
   146
\ {\isaliteral{60}{\isacharbackquoteopen}}x\ {\isaliteral{3D}{\isacharequal}}\ y{\isaliteral{60}{\isacharbackquoteclose}}\ \isakeyword{and}\ {\isaliteral{60}{\isacharbackquoteopen}}B\ x{\isaliteral{60}{\isacharbackquoteclose}}\isanewline
wenzelm@30057
   147
\ \ \isacommand{show}\isamarkupfalse%
wenzelm@40685
   148
\ {\isaliteral{22}{\isachardoublequoteopen}}B\ y{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30057
   149
\isanewline
wenzelm@30057
   150
\isacommand{qed}\isamarkupfalse%
wenzelm@30057
   151
%
wenzelm@30057
   152
\endisatagproof
wenzelm@30057
   153
{\isafoldproof}%
wenzelm@30057
   154
%
wenzelm@30057
   155
\isadelimproof
wenzelm@30057
   156
\isanewline
wenzelm@30057
   157
%
wenzelm@30057
   158
\endisadelimproof
wenzelm@30057
   159
\isanewline
wenzelm@30057
   160
\isacommand{theorem}\isamarkupfalse%
wenzelm@40685
   161
\ trans\ {\isaliteral{5B}{\isacharbrackleft}}trans{\isaliteral{5D}{\isacharbrackright}}{\isaliteral{3A}{\isacharcolon}}\isanewline
wenzelm@40685
   162
\ \ \isakeyword{assumes}\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{3D}{\isacharequal}}\ y{\isaliteral{22}{\isachardoublequoteclose}}\ \isakeyword{and}\ {\isaliteral{22}{\isachardoublequoteopen}}y\ {\isaliteral{3D}{\isacharequal}}\ z{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@40685
   163
\ \ \isakeyword{shows}\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{3D}{\isacharequal}}\ z{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@30057
   164
%
wenzelm@30057
   165
\isadelimproof
wenzelm@30057
   166
%
wenzelm@30057
   167
\endisadelimproof
wenzelm@30057
   168
%
wenzelm@30057
   169
\isatagproof
wenzelm@30057
   170
\isacommand{proof}\isamarkupfalse%
wenzelm@40685
   171
\ {\isaliteral{2D}{\isacharminus}}\isanewline
wenzelm@30057
   172
\ \ \isacommand{from}\isamarkupfalse%
wenzelm@40685
   173
\ {\isaliteral{60}{\isacharbackquoteopen}}y\ {\isaliteral{3D}{\isacharequal}}\ z{\isaliteral{60}{\isacharbackquoteclose}}\ \isakeyword{and}\ {\isaliteral{60}{\isacharbackquoteopen}}x\ {\isaliteral{3D}{\isacharequal}}\ y{\isaliteral{60}{\isacharbackquoteclose}}\isanewline
wenzelm@30057
   174
\ \ \isacommand{show}\isamarkupfalse%
wenzelm@40685
   175
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{3D}{\isacharequal}}\ z{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30057
   176
\isanewline
wenzelm@30057
   177
\isacommand{qed}\isamarkupfalse%
wenzelm@30057
   178
%
wenzelm@30057
   179
\endisatagproof
wenzelm@30057
   180
{\isafoldproof}%
wenzelm@30057
   181
%
wenzelm@30057
   182
\isadelimproof
wenzelm@30057
   183
%
wenzelm@30057
   184
\endisadelimproof
wenzelm@30057
   185
%
wenzelm@30057
   186
\isamarkupsubsection{Basic group theory%
wenzelm@30057
   187
}
wenzelm@30057
   188
\isamarkuptrue%
wenzelm@30057
   189
%
wenzelm@30057
   190
\begin{isamarkuptext}%
wenzelm@30057
   191
As an example for equational reasoning we consider some bits of
wenzelm@30057
   192
  group theory.  The subsequent locale definition postulates group
wenzelm@30057
   193
  operations and axioms; we also derive some consequences of this
wenzelm@30057
   194
  specification.%
wenzelm@30057
   195
\end{isamarkuptext}%
wenzelm@30057
   196
\isamarkuptrue%
wenzelm@30057
   197
\isacommand{locale}\isamarkupfalse%
wenzelm@40685
   198
\ group\ {\isaliteral{3D}{\isacharequal}}\isanewline
wenzelm@40685
   199
\ \ \isakeyword{fixes}\ prod\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}i\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ i\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ i{\isaliteral{22}{\isachardoublequoteclose}}\ \ {\isaliteral{28}{\isacharparenleft}}\isakeyword{infix}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C636972633E}{\isasymcirc}}{\isaliteral{22}{\isachardoublequoteclose}}\ {\isadigit{7}}{\isadigit{0}}{\isaliteral{29}{\isacharparenright}}\isanewline
wenzelm@40685
   200
\ \ \ \ \isakeyword{and}\ inv\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}i\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ i{\isaliteral{22}{\isachardoublequoteclose}}\ \ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{28}{\isacharparenleft}}{\isaliteral{5F}{\isacharunderscore}}{\isaliteral{5C3C696E76657273653E}{\isasyminverse}}{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}\ {\isaliteral{5B}{\isacharbrackleft}}{\isadigit{1}}{\isadigit{0}}{\isadigit{0}}{\isadigit{0}}{\isaliteral{5D}{\isacharbrackright}}\ {\isadigit{9}}{\isadigit{9}}{\isadigit{9}}{\isaliteral{29}{\isacharparenright}}\isanewline
wenzelm@40685
   201
\ \ \ \ \isakeyword{and}\ unit\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ i\ \ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{22}{\isachardoublequoteopen}}{\isadigit{1}}{\isaliteral{22}{\isachardoublequoteclose}}{\isaliteral{29}{\isacharparenright}}\isanewline
wenzelm@40685
   202
\ \ \isakeyword{assumes}\ assoc{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{28}{\isacharparenleft}}x\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ y{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ z\ {\isaliteral{3D}{\isacharequal}}\ x\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ {\isaliteral{28}{\isacharparenleft}}y\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ z{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@40685
   203
\ \ \ \ \isakeyword{and}\ left{\isaliteral{5F}{\isacharunderscore}}unit{\isaliteral{3A}{\isacharcolon}}\ \ {\isaliteral{22}{\isachardoublequoteopen}}{\isadigit{1}}\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ x\ {\isaliteral{3D}{\isacharequal}}\ x{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@40685
   204
\ \ \ \ \isakeyword{and}\ left{\isaliteral{5F}{\isacharunderscore}}inv{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}x{\isaliteral{5C3C696E76657273653E}{\isasyminverse}}\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ x\ {\isaliteral{3D}{\isacharequal}}\ {\isadigit{1}}{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@30057
   205
\isakeyword{begin}\isanewline
wenzelm@30057
   206
\isanewline
wenzelm@30057
   207
\isacommand{theorem}\isamarkupfalse%
wenzelm@40685
   208
\ right{\isaliteral{5F}{\isacharunderscore}}inv{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ x{\isaliteral{5C3C696E76657273653E}{\isasyminverse}}\ {\isaliteral{3D}{\isacharequal}}\ {\isadigit{1}}{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@30057
   209
%
wenzelm@30057
   210
\isadelimproof
wenzelm@30057
   211
%
wenzelm@30057
   212
\endisadelimproof
wenzelm@30057
   213
%
wenzelm@30057
   214
\isatagproof
wenzelm@30057
   215
\isacommand{proof}\isamarkupfalse%
wenzelm@40685
   216
\ {\isaliteral{2D}{\isacharminus}}\isanewline
wenzelm@30057
   217
\ \ \isacommand{have}\isamarkupfalse%
wenzelm@40685
   218
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ x{\isaliteral{5C3C696E76657273653E}{\isasyminverse}}\ {\isaliteral{3D}{\isacharequal}}\ {\isadigit{1}}\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ {\isaliteral{28}{\isacharparenleft}}x\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ x{\isaliteral{5C3C696E76657273653E}{\isasyminverse}}{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{by}\isamarkupfalse%
wenzelm@40685
   219
\ {\isaliteral{28}{\isacharparenleft}}rule\ left{\isaliteral{5F}{\isacharunderscore}}unit\ {\isaliteral{5B}{\isacharbrackleft}}symmetric{\isaliteral{5D}{\isacharbrackright}}{\isaliteral{29}{\isacharparenright}}\isanewline
wenzelm@30057
   220
\ \ \isacommand{also}\isamarkupfalse%
wenzelm@30057
   221
\ \isacommand{have}\isamarkupfalse%
wenzelm@40685
   222
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C646F74733E}{\isasymdots}}\ {\isaliteral{3D}{\isacharequal}}\ {\isaliteral{28}{\isacharparenleft}}{\isadigit{1}}\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ x{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ x{\isaliteral{5C3C696E76657273653E}{\isasyminverse}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{by}\isamarkupfalse%
wenzelm@40685
   223
\ {\isaliteral{28}{\isacharparenleft}}rule\ assoc\ {\isaliteral{5B}{\isacharbrackleft}}symmetric{\isaliteral{5D}{\isacharbrackright}}{\isaliteral{29}{\isacharparenright}}\isanewline
wenzelm@30057
   224
\ \ \isacommand{also}\isamarkupfalse%
wenzelm@30057
   225
\ \isacommand{have}\isamarkupfalse%
wenzelm@40685
   226
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isadigit{1}}\ {\isaliteral{3D}{\isacharequal}}\ {\isaliteral{28}{\isacharparenleft}}x{\isaliteral{5C3C696E76657273653E}{\isasyminverse}}{\isaliteral{29}{\isacharparenright}}{\isaliteral{5C3C696E76657273653E}{\isasyminverse}}\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ x{\isaliteral{5C3C696E76657273653E}{\isasyminverse}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{by}\isamarkupfalse%
wenzelm@40685
   227
\ {\isaliteral{28}{\isacharparenleft}}rule\ left{\isaliteral{5F}{\isacharunderscore}}inv\ {\isaliteral{5B}{\isacharbrackleft}}symmetric{\isaliteral{5D}{\isacharbrackright}}{\isaliteral{29}{\isacharparenright}}\isanewline
wenzelm@30057
   228
\ \ \isacommand{also}\isamarkupfalse%
wenzelm@30057
   229
\ \isacommand{have}\isamarkupfalse%
wenzelm@40685
   230
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C646F74733E}{\isasymdots}}\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ x\ {\isaliteral{3D}{\isacharequal}}\ {\isaliteral{28}{\isacharparenleft}}x{\isaliteral{5C3C696E76657273653E}{\isasyminverse}}{\isaliteral{29}{\isacharparenright}}{\isaliteral{5C3C696E76657273653E}{\isasyminverse}}\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ {\isaliteral{28}{\isacharparenleft}}x{\isaliteral{5C3C696E76657273653E}{\isasyminverse}}\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ x{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{by}\isamarkupfalse%
wenzelm@40685
   231
\ {\isaliteral{28}{\isacharparenleft}}rule\ assoc{\isaliteral{29}{\isacharparenright}}\isanewline
wenzelm@30057
   232
\ \ \isacommand{also}\isamarkupfalse%
wenzelm@30057
   233
\ \isacommand{have}\isamarkupfalse%
wenzelm@40685
   234
\ {\isaliteral{22}{\isachardoublequoteopen}}x{\isaliteral{5C3C696E76657273653E}{\isasyminverse}}\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ x\ {\isaliteral{3D}{\isacharequal}}\ {\isadigit{1}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{by}\isamarkupfalse%
wenzelm@40685
   235
\ {\isaliteral{28}{\isacharparenleft}}rule\ left{\isaliteral{5F}{\isacharunderscore}}inv{\isaliteral{29}{\isacharparenright}}\isanewline
wenzelm@30057
   236
\ \ \isacommand{also}\isamarkupfalse%
wenzelm@30057
   237
\ \isacommand{have}\isamarkupfalse%
wenzelm@40685
   238
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{28}{\isacharparenleft}}{\isaliteral{28}{\isacharparenleft}}x{\isaliteral{5C3C696E76657273653E}{\isasyminverse}}{\isaliteral{29}{\isacharparenright}}{\isaliteral{5C3C696E76657273653E}{\isasyminverse}}\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ {\isaliteral{5C3C646F74733E}{\isasymdots}}{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ x{\isaliteral{5C3C696E76657273653E}{\isasyminverse}}\ {\isaliteral{3D}{\isacharequal}}\ {\isaliteral{28}{\isacharparenleft}}x{\isaliteral{5C3C696E76657273653E}{\isasyminverse}}{\isaliteral{29}{\isacharparenright}}{\isaliteral{5C3C696E76657273653E}{\isasyminverse}}\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ {\isaliteral{28}{\isacharparenleft}}{\isadigit{1}}\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ x{\isaliteral{5C3C696E76657273653E}{\isasyminverse}}{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{by}\isamarkupfalse%
wenzelm@40685
   239
\ {\isaliteral{28}{\isacharparenleft}}rule\ assoc{\isaliteral{29}{\isacharparenright}}\isanewline
wenzelm@30057
   240
\ \ \isacommand{also}\isamarkupfalse%
wenzelm@30057
   241
\ \isacommand{have}\isamarkupfalse%
wenzelm@40685
   242
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isadigit{1}}\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ x{\isaliteral{5C3C696E76657273653E}{\isasyminverse}}\ {\isaliteral{3D}{\isacharequal}}\ x{\isaliteral{5C3C696E76657273653E}{\isasyminverse}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{by}\isamarkupfalse%
wenzelm@40685
   243
\ {\isaliteral{28}{\isacharparenleft}}rule\ left{\isaliteral{5F}{\isacharunderscore}}unit{\isaliteral{29}{\isacharparenright}}\isanewline
wenzelm@30057
   244
\ \ \isacommand{also}\isamarkupfalse%
wenzelm@30057
   245
\ \isacommand{have}\isamarkupfalse%
wenzelm@40685
   246
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{28}{\isacharparenleft}}x{\isaliteral{5C3C696E76657273653E}{\isasyminverse}}{\isaliteral{29}{\isacharparenright}}{\isaliteral{5C3C696E76657273653E}{\isasyminverse}}\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ {\isaliteral{5C3C646F74733E}{\isasymdots}}\ {\isaliteral{3D}{\isacharequal}}\ {\isadigit{1}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{by}\isamarkupfalse%
wenzelm@40685
   247
\ {\isaliteral{28}{\isacharparenleft}}rule\ left{\isaliteral{5F}{\isacharunderscore}}inv{\isaliteral{29}{\isacharparenright}}\isanewline
wenzelm@30057
   248
\ \ \isacommand{finally}\isamarkupfalse%
wenzelm@30057
   249
\ \isacommand{show}\isamarkupfalse%
wenzelm@40685
   250
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ x{\isaliteral{5C3C696E76657273653E}{\isasyminverse}}\ {\isaliteral{3D}{\isacharequal}}\ {\isadigit{1}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30057
   251
\isanewline
wenzelm@30057
   252
\isacommand{qed}\isamarkupfalse%
wenzelm@30057
   253
%
wenzelm@30057
   254
\endisatagproof
wenzelm@30057
   255
{\isafoldproof}%
wenzelm@30057
   256
%
wenzelm@30057
   257
\isadelimproof
wenzelm@30057
   258
\isanewline
wenzelm@30057
   259
%
wenzelm@30057
   260
\endisadelimproof
wenzelm@30057
   261
\isanewline
wenzelm@30057
   262
\isacommand{theorem}\isamarkupfalse%
wenzelm@40685
   263
\ right{\isaliteral{5F}{\isacharunderscore}}unit{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ {\isadigit{1}}\ {\isaliteral{3D}{\isacharequal}}\ x{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@30057
   264
%
wenzelm@30057
   265
\isadelimproof
wenzelm@30057
   266
%
wenzelm@30057
   267
\endisadelimproof
wenzelm@30057
   268
%
wenzelm@30057
   269
\isatagproof
wenzelm@30057
   270
\isacommand{proof}\isamarkupfalse%
wenzelm@40685
   271
\ {\isaliteral{2D}{\isacharminus}}\isanewline
wenzelm@30057
   272
\ \ \isacommand{have}\isamarkupfalse%
wenzelm@40685
   273
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isadigit{1}}\ {\isaliteral{3D}{\isacharequal}}\ x{\isaliteral{5C3C696E76657273653E}{\isasyminverse}}\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ x{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{by}\isamarkupfalse%
wenzelm@40685
   274
\ {\isaliteral{28}{\isacharparenleft}}rule\ left{\isaliteral{5F}{\isacharunderscore}}inv\ {\isaliteral{5B}{\isacharbrackleft}}symmetric{\isaliteral{5D}{\isacharbrackright}}{\isaliteral{29}{\isacharparenright}}\isanewline
wenzelm@30057
   275
\ \ \isacommand{also}\isamarkupfalse%
wenzelm@30057
   276
\ \isacommand{have}\isamarkupfalse%
wenzelm@40685
   277
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ {\isaliteral{5C3C646F74733E}{\isasymdots}}\ {\isaliteral{3D}{\isacharequal}}\ {\isaliteral{28}{\isacharparenleft}}x\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ x{\isaliteral{5C3C696E76657273653E}{\isasyminverse}}{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ x{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{by}\isamarkupfalse%
wenzelm@40685
   278
\ {\isaliteral{28}{\isacharparenleft}}rule\ assoc\ {\isaliteral{5B}{\isacharbrackleft}}symmetric{\isaliteral{5D}{\isacharbrackright}}{\isaliteral{29}{\isacharparenright}}\isanewline
wenzelm@30057
   279
\ \ \isacommand{also}\isamarkupfalse%
wenzelm@30057
   280
\ \isacommand{have}\isamarkupfalse%
wenzelm@40685
   281
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ x{\isaliteral{5C3C696E76657273653E}{\isasyminverse}}\ {\isaliteral{3D}{\isacharequal}}\ {\isadigit{1}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{by}\isamarkupfalse%
wenzelm@40685
   282
\ {\isaliteral{28}{\isacharparenleft}}rule\ right{\isaliteral{5F}{\isacharunderscore}}inv{\isaliteral{29}{\isacharparenright}}\isanewline
wenzelm@30057
   283
\ \ \isacommand{also}\isamarkupfalse%
wenzelm@30057
   284
\ \isacommand{have}\isamarkupfalse%
wenzelm@40685
   285
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C646F74733E}{\isasymdots}}\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ x\ {\isaliteral{3D}{\isacharequal}}\ x{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{by}\isamarkupfalse%
wenzelm@40685
   286
\ {\isaliteral{28}{\isacharparenleft}}rule\ left{\isaliteral{5F}{\isacharunderscore}}unit{\isaliteral{29}{\isacharparenright}}\isanewline
wenzelm@30057
   287
\ \ \isacommand{finally}\isamarkupfalse%
wenzelm@30057
   288
\ \isacommand{show}\isamarkupfalse%
wenzelm@40685
   289
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ {\isadigit{1}}\ {\isaliteral{3D}{\isacharequal}}\ x{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30057
   290
\isanewline
wenzelm@30057
   291
\isacommand{qed}\isamarkupfalse%
wenzelm@30057
   292
%
wenzelm@30057
   293
\endisatagproof
wenzelm@30057
   294
{\isafoldproof}%
wenzelm@30057
   295
%
wenzelm@30057
   296
\isadelimproof
wenzelm@30057
   297
%
wenzelm@30057
   298
\endisadelimproof
wenzelm@30057
   299
%
wenzelm@30057
   300
\begin{isamarkuptext}%
wenzelm@30066
   301
\noindent Reasoning from basic axioms is often tedious.  Our proofs
wenzelm@30066
   302
  work by producing various instances of the given rules (potentially
wenzelm@40685
   303
  the symmetric form) using the pattern ``\hyperlink{command.have}{\mbox{\isa{\isacommand{have}}}}~\isa{eq}~\hyperlink{command.by}{\mbox{\isa{\isacommand{by}}}}~\isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{28}{\isacharparenleft}}rule\ r{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequote}}}'' and composing the chain of
wenzelm@30057
   304
  results via \hyperlink{command.also}{\mbox{\isa{\isacommand{also}}}}/\hyperlink{command.finally}{\mbox{\isa{\isacommand{finally}}}}.  These steps may
wenzelm@30057
   305
  involve any of the transitivity rules declared in
wenzelm@30057
   306
  \secref{sec:framework-ex-equal}, namely \isa{trans} in combining
wenzelm@40685
   307
  the first two results in \isa{right{\isaliteral{5F}{\isacharunderscore}}inv} and in the final steps of
wenzelm@40685
   308
  both proofs, \isa{forw{\isaliteral{5F}{\isacharunderscore}}subst} in the first combination of \isa{right{\isaliteral{5F}{\isacharunderscore}}unit}, and \isa{back{\isaliteral{5F}{\isacharunderscore}}subst} in all other calculational steps.
wenzelm@30057
   309
wenzelm@30057
   310
  Occasional substitutions in calculations are adequate, but should
wenzelm@30057
   311
  not be over-emphasized.  The other extreme is to compose a chain by
wenzelm@30057
   312
  plain transitivity only, with replacements occurring always in
wenzelm@30057
   313
  topmost position. For example:%
wenzelm@30057
   314
\end{isamarkuptext}%
wenzelm@30057
   315
\isamarkuptrue%
wenzelm@30057
   316
%
wenzelm@30057
   317
\isadelimproof
wenzelm@30057
   318
%
wenzelm@30057
   319
\endisadelimproof
wenzelm@30057
   320
%
wenzelm@30057
   321
\isatagproof
wenzelm@30057
   322
\ \ \isacommand{have}\isamarkupfalse%
wenzelm@40685
   323
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ {\isadigit{1}}\ {\isaliteral{3D}{\isacharequal}}\ x\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ {\isaliteral{28}{\isacharparenleft}}x{\isaliteral{5C3C696E76657273653E}{\isasyminverse}}\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ x{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{unfolding}\isamarkupfalse%
wenzelm@40685
   324
\ left{\isaliteral{5F}{\isacharunderscore}}inv\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30057
   325
\isanewline
wenzelm@30057
   326
\ \ \isacommand{also}\isamarkupfalse%
wenzelm@30057
   327
\ \isacommand{have}\isamarkupfalse%
wenzelm@40685
   328
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C646F74733E}{\isasymdots}}\ {\isaliteral{3D}{\isacharequal}}\ {\isaliteral{28}{\isacharparenleft}}x\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ x{\isaliteral{5C3C696E76657273653E}{\isasyminverse}}{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ x{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{unfolding}\isamarkupfalse%
wenzelm@40685
   329
\ assoc\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30057
   330
\isanewline
wenzelm@30057
   331
\ \ \isacommand{also}\isamarkupfalse%
wenzelm@30057
   332
\ \isacommand{have}\isamarkupfalse%
wenzelm@40685
   333
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C646F74733E}{\isasymdots}}\ {\isaliteral{3D}{\isacharequal}}\ {\isadigit{1}}\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ x{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{unfolding}\isamarkupfalse%
wenzelm@40685
   334
\ right{\isaliteral{5F}{\isacharunderscore}}inv\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30057
   335
\isanewline
wenzelm@30057
   336
\ \ \isacommand{also}\isamarkupfalse%
wenzelm@30057
   337
\ \isacommand{have}\isamarkupfalse%
wenzelm@40685
   338
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C646F74733E}{\isasymdots}}\ {\isaliteral{3D}{\isacharequal}}\ x{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{unfolding}\isamarkupfalse%
wenzelm@40685
   339
\ left{\isaliteral{5F}{\isacharunderscore}}unit\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30057
   340
\isanewline
wenzelm@30057
   341
\ \ \isacommand{finally}\isamarkupfalse%
wenzelm@30057
   342
\ \isacommand{have}\isamarkupfalse%
wenzelm@40685
   343
\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C636972633E}{\isasymcirc}}\ {\isadigit{1}}\ {\isaliteral{3D}{\isacharequal}}\ x{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30057
   344
%
wenzelm@30057
   345
\endisatagproof
wenzelm@30057
   346
{\isafoldproof}%
wenzelm@30057
   347
%
wenzelm@30057
   348
\isadelimproof
wenzelm@30057
   349
%
wenzelm@30057
   350
\endisadelimproof
wenzelm@30057
   351
%
wenzelm@30057
   352
\begin{isamarkuptext}%
wenzelm@30057
   353
\noindent Here we have re-used the built-in mechanism for unfolding
wenzelm@30057
   354
  definitions in order to normalize each equational problem.  A more
wenzelm@30057
   355
  realistic object-logic would include proper setup for the Simplifier
wenzelm@30057
   356
  (\secref{sec:simplifier}), the main automated tool for equational
wenzelm@40685
   357
  reasoning in Isabelle.  Then ``\hyperlink{command.unfolding}{\mbox{\isa{\isacommand{unfolding}}}}~\isa{left{\isaliteral{5F}{\isacharunderscore}}inv}~\hyperlink{command.ddot}{\mbox{\isa{\isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}}}}'' would become ``\hyperlink{command.by}{\mbox{\isa{\isacommand{by}}}}~\isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{28}{\isacharparenleft}}simp\ only{\isaliteral{3A}{\isacharcolon}}\ left{\isaliteral{5F}{\isacharunderscore}}inv{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequote}}}'' etc.%
wenzelm@30057
   358
\end{isamarkuptext}%
wenzelm@30057
   359
\isamarkuptrue%
wenzelm@30057
   360
\isacommand{end}\isamarkupfalse%
wenzelm@30057
   361
%
wenzelm@30066
   362
\isamarkupsubsection{Propositional logic \label{sec:framework-ex-prop}%
wenzelm@30057
   363
}
wenzelm@30057
   364
\isamarkuptrue%
wenzelm@30057
   365
%
wenzelm@30057
   366
\begin{isamarkuptext}%
wenzelm@30057
   367
We axiomatize basic connectives of propositional logic: implication,
wenzelm@30057
   368
  disjunction, and conjunction.  The associated rules are modeled
wenzelm@30066
   369
  after Gentzen's system of Natural Deduction \cite{Gentzen:1935}.%
wenzelm@30057
   370
\end{isamarkuptext}%
wenzelm@30057
   371
\isamarkuptrue%
wenzelm@30057
   372
\isacommand{axiomatization}\isamarkupfalse%
wenzelm@30057
   373
\isanewline
wenzelm@40685
   374
\ \ imp\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}o\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ o\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ o{\isaliteral{22}{\isachardoublequoteclose}}\ \ {\isaliteral{28}{\isacharparenleft}}\isakeyword{infixr}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6C6F6E6772696768746172726F773E}{\isasymlongrightarrow}}{\isaliteral{22}{\isachardoublequoteclose}}\ {\isadigit{2}}{\isadigit{5}}{\isaliteral{29}{\isacharparenright}}\ \isakeyword{where}\isanewline
wenzelm@40685
   375
\ \ impI\ {\isaliteral{5B}{\isacharbrackleft}}intro{\isaliteral{5D}{\isacharbrackright}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{28}{\isacharparenleft}}A\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ B{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ A\ {\isaliteral{5C3C6C6F6E6772696768746172726F773E}{\isasymlongrightarrow}}\ B{\isaliteral{22}{\isachardoublequoteclose}}\ \isakeyword{and}\isanewline
wenzelm@40685
   376
\ \ impD\ {\isaliteral{5B}{\isacharbrackleft}}dest{\isaliteral{5D}{\isacharbrackright}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{28}{\isacharparenleft}}A\ {\isaliteral{5C3C6C6F6E6772696768746172726F773E}{\isasymlongrightarrow}}\ B{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ A\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ B{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@30057
   377
\isanewline
wenzelm@30057
   378
\isacommand{axiomatization}\isamarkupfalse%
wenzelm@30057
   379
\isanewline
wenzelm@40685
   380
\ \ disj\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}o\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ o\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ o{\isaliteral{22}{\isachardoublequoteclose}}\ \ {\isaliteral{28}{\isacharparenleft}}\isakeyword{infixr}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6F723E}{\isasymor}}{\isaliteral{22}{\isachardoublequoteclose}}\ {\isadigit{3}}{\isadigit{0}}{\isaliteral{29}{\isacharparenright}}\ \isakeyword{where}\isanewline
wenzelm@40685
   381
\ \ disjI\isaliteral{5C3C5E697375623E}{}\isactrlisub {\isadigit{1}}\ {\isaliteral{5B}{\isacharbrackleft}}intro{\isaliteral{5D}{\isacharbrackright}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ A\ {\isaliteral{5C3C6F723E}{\isasymor}}\ B{\isaliteral{22}{\isachardoublequoteclose}}\ \isakeyword{and}\isanewline
wenzelm@40685
   382
\ \ disjI\isaliteral{5C3C5E697375623E}{}\isactrlisub {\isadigit{2}}\ {\isaliteral{5B}{\isacharbrackleft}}intro{\isaliteral{5D}{\isacharbrackright}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}B\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ A\ {\isaliteral{5C3C6F723E}{\isasymor}}\ B{\isaliteral{22}{\isachardoublequoteclose}}\ \isakeyword{and}\isanewline
wenzelm@40685
   383
\ \ disjE\ {\isaliteral{5B}{\isacharbrackleft}}elim{\isaliteral{5D}{\isacharbrackright}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C6F723E}{\isasymor}}\ B\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ {\isaliteral{28}{\isacharparenleft}}A\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ C{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ {\isaliteral{28}{\isacharparenleft}}B\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ C{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ C{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@30057
   384
\isanewline
wenzelm@30057
   385
\isacommand{axiomatization}\isamarkupfalse%
wenzelm@30057
   386
\isanewline
wenzelm@40685
   387
\ \ conj\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}o\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ o\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ o{\isaliteral{22}{\isachardoublequoteclose}}\ \ {\isaliteral{28}{\isacharparenleft}}\isakeyword{infixr}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C616E643E}{\isasymand}}{\isaliteral{22}{\isachardoublequoteclose}}\ {\isadigit{3}}{\isadigit{5}}{\isaliteral{29}{\isacharparenright}}\ \isakeyword{where}\isanewline
wenzelm@40685
   388
\ \ conjI\ {\isaliteral{5B}{\isacharbrackleft}}intro{\isaliteral{5D}{\isacharbrackright}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ B\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ A\ {\isaliteral{5C3C616E643E}{\isasymand}}\ B{\isaliteral{22}{\isachardoublequoteclose}}\ \isakeyword{and}\isanewline
wenzelm@40685
   389
\ \ conjD\isaliteral{5C3C5E697375623E}{}\isactrlisub {\isadigit{1}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C616E643E}{\isasymand}}\ B\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ A{\isaliteral{22}{\isachardoublequoteclose}}\ \isakeyword{and}\isanewline
wenzelm@40685
   390
\ \ conjD\isaliteral{5C3C5E697375623E}{}\isactrlisub {\isadigit{2}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C616E643E}{\isasymand}}\ B\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ B{\isaliteral{22}{\isachardoublequoteclose}}%
wenzelm@30057
   391
\begin{isamarkuptext}%
wenzelm@30057
   392
\noindent The conjunctive destructions have the disadvantage that
wenzelm@40685
   393
  decomposing \isa{{\isaliteral{22}{\isachardoublequote}}A\ {\isaliteral{5C3C616E643E}{\isasymand}}\ B{\isaliteral{22}{\isachardoublequote}}} involves an immediate decision which
wenzelm@30057
   394
  component should be projected.  The more convenient simultaneous
wenzelm@40685
   395
  elimination \isa{{\isaliteral{22}{\isachardoublequote}}A\ {\isaliteral{5C3C616E643E}{\isasymand}}\ B\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ {\isaliteral{28}{\isacharparenleft}}A\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ B\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ C{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ C{\isaliteral{22}{\isachardoublequote}}} can be derived as
wenzelm@30057
   396
  follows:%
wenzelm@30057
   397
\end{isamarkuptext}%
wenzelm@30057
   398
\isamarkuptrue%
wenzelm@30057
   399
\isacommand{theorem}\isamarkupfalse%
wenzelm@40685
   400
\ conjE\ {\isaliteral{5B}{\isacharbrackleft}}elim{\isaliteral{5D}{\isacharbrackright}}{\isaliteral{3A}{\isacharcolon}}\isanewline
wenzelm@40685
   401
\ \ \isakeyword{assumes}\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C616E643E}{\isasymand}}\ B{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@30057
   402
\ \ \isakeyword{obtains}\ A\ \isakeyword{and}\ B\isanewline
wenzelm@30057
   403
%
wenzelm@30057
   404
\isadelimproof
wenzelm@30057
   405
%
wenzelm@30057
   406
\endisadelimproof
wenzelm@30057
   407
%
wenzelm@30057
   408
\isatagproof
wenzelm@30057
   409
\isacommand{proof}\isamarkupfalse%
wenzelm@30057
   410
\isanewline
wenzelm@30057
   411
\ \ \isacommand{from}\isamarkupfalse%
wenzelm@40685
   412
\ {\isaliteral{60}{\isacharbackquoteopen}}A\ {\isaliteral{5C3C616E643E}{\isasymand}}\ B{\isaliteral{60}{\isacharbackquoteclose}}\ \isacommand{show}\isamarkupfalse%
wenzelm@30066
   413
\ A\ \isacommand{by}\isamarkupfalse%
wenzelm@40685
   414
\ {\isaliteral{28}{\isacharparenleft}}rule\ conjD\isaliteral{5C3C5E697375623E}{}\isactrlisub {\isadigit{1}}{\isaliteral{29}{\isacharparenright}}\isanewline
wenzelm@30057
   415
\ \ \isacommand{from}\isamarkupfalse%
wenzelm@40685
   416
\ {\isaliteral{60}{\isacharbackquoteopen}}A\ {\isaliteral{5C3C616E643E}{\isasymand}}\ B{\isaliteral{60}{\isacharbackquoteclose}}\ \isacommand{show}\isamarkupfalse%
wenzelm@30066
   417
\ B\ \isacommand{by}\isamarkupfalse%
wenzelm@40685
   418
\ {\isaliteral{28}{\isacharparenleft}}rule\ conjD\isaliteral{5C3C5E697375623E}{}\isactrlisub {\isadigit{2}}{\isaliteral{29}{\isacharparenright}}\isanewline
wenzelm@30057
   419
\isacommand{qed}\isamarkupfalse%
wenzelm@30057
   420
%
wenzelm@30057
   421
\endisatagproof
wenzelm@30057
   422
{\isafoldproof}%
wenzelm@30057
   423
%
wenzelm@30057
   424
\isadelimproof
wenzelm@30057
   425
%
wenzelm@30057
   426
\endisadelimproof
wenzelm@30057
   427
%
wenzelm@30057
   428
\begin{isamarkuptext}%
wenzelm@30057
   429
\noindent Here is an example of swapping conjuncts with a single
wenzelm@30057
   430
  intermediate elimination step:%
wenzelm@30057
   431
\end{isamarkuptext}%
wenzelm@30057
   432
\isamarkuptrue%
wenzelm@30057
   433
%
wenzelm@30057
   434
\isadelimproof
wenzelm@30057
   435
%
wenzelm@30057
   436
\endisadelimproof
wenzelm@30057
   437
%
wenzelm@30057
   438
\isatagproof
wenzelm@30057
   439
\ \ \isacommand{assume}\isamarkupfalse%
wenzelm@40685
   440
\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C616E643E}{\isasymand}}\ B{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@30057
   441
\ \ \isacommand{then}\isamarkupfalse%
wenzelm@30057
   442
\ \isacommand{obtain}\isamarkupfalse%
wenzelm@40685
   443
\ B\ \isakeyword{and}\ A\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30057
   444
\isanewline
wenzelm@30057
   445
\ \ \isacommand{then}\isamarkupfalse%
wenzelm@30057
   446
\ \isacommand{have}\isamarkupfalse%
wenzelm@40685
   447
\ {\isaliteral{22}{\isachardoublequoteopen}}B\ {\isaliteral{5C3C616E643E}{\isasymand}}\ A{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30057
   448
%
wenzelm@30057
   449
\endisatagproof
wenzelm@30057
   450
{\isafoldproof}%
wenzelm@30057
   451
%
wenzelm@30057
   452
\isadelimproof
wenzelm@30057
   453
%
wenzelm@30057
   454
\endisadelimproof
wenzelm@30057
   455
%
wenzelm@30057
   456
\begin{isamarkuptext}%
wenzelm@30066
   457
\noindent Note that the analogous elimination rule for disjunction
wenzelm@40685
   458
  ``\isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{5C3C415353554D45533E}{\isasymASSUMES}}\ A\ {\isaliteral{5C3C6F723E}{\isasymor}}\ B\ {\isaliteral{5C3C4F425441494E533E}{\isasymOBTAINS}}\ A\ {\isaliteral{5C3C424241523E}{\isasymBBAR}}\ B{\isaliteral{22}{\isachardoublequote}}}'' coincides with
wenzelm@30066
   459
  the original axiomatization of \isa{disjE}.
wenzelm@30057
   460
wenzelm@30057
   461
  \medskip We continue propositional logic by introducing absurdity
wenzelm@30057
   462
  with its characteristic elimination.  Plain truth may then be
wenzelm@30057
   463
  defined as a proposition that is trivially true.%
wenzelm@30057
   464
\end{isamarkuptext}%
wenzelm@30057
   465
\isamarkuptrue%
wenzelm@30057
   466
\isacommand{axiomatization}\isamarkupfalse%
wenzelm@30057
   467
\isanewline
wenzelm@40685
   468
\ \ false\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ o\ \ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C626F74746F6D3E}{\isasymbottom}}{\isaliteral{22}{\isachardoublequoteclose}}{\isaliteral{29}{\isacharparenright}}\ \isakeyword{where}\isanewline
wenzelm@40685
   469
\ \ falseE\ {\isaliteral{5B}{\isacharbrackleft}}elim{\isaliteral{5D}{\isacharbrackright}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C626F74746F6D3E}{\isasymbottom}}\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ A{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@30057
   470
\isanewline
wenzelm@30057
   471
\isacommand{definition}\isamarkupfalse%
wenzelm@30057
   472
\isanewline
wenzelm@40685
   473
\ \ true\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ o\ \ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C746F703E}{\isasymtop}}{\isaliteral{22}{\isachardoublequoteclose}}{\isaliteral{29}{\isacharparenright}}\ \isakeyword{where}\isanewline
wenzelm@40685
   474
\ \ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C746F703E}{\isasymtop}}\ {\isaliteral{5C3C65717569763E}{\isasymequiv}}\ {\isaliteral{5C3C626F74746F6D3E}{\isasymbottom}}\ {\isaliteral{5C3C6C6F6E6772696768746172726F773E}{\isasymlongrightarrow}}\ {\isaliteral{5C3C626F74746F6D3E}{\isasymbottom}}{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@30057
   475
\isanewline
wenzelm@30057
   476
\isacommand{theorem}\isamarkupfalse%
wenzelm@40685
   477
\ trueI\ {\isaliteral{5B}{\isacharbrackleft}}intro{\isaliteral{5D}{\isacharbrackright}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{5C3C746F703E}{\isasymtop}}\isanewline
wenzelm@30057
   478
%
wenzelm@30057
   479
\isadelimproof
wenzelm@30057
   480
\ \ %
wenzelm@30057
   481
\endisadelimproof
wenzelm@30057
   482
%
wenzelm@30057
   483
\isatagproof
wenzelm@30057
   484
\isacommand{unfolding}\isamarkupfalse%
wenzelm@40685
   485
\ true{\isaliteral{5F}{\isacharunderscore}}def\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30057
   486
%
wenzelm@30057
   487
\endisatagproof
wenzelm@30057
   488
{\isafoldproof}%
wenzelm@30057
   489
%
wenzelm@30057
   490
\isadelimproof
wenzelm@30057
   491
%
wenzelm@30057
   492
\endisadelimproof
wenzelm@30057
   493
%
wenzelm@30057
   494
\begin{isamarkuptext}%
wenzelm@30066
   495
\medskip\noindent Now negation represents an implication towards
wenzelm@30066
   496
  absurdity:%
wenzelm@30057
   497
\end{isamarkuptext}%
wenzelm@30057
   498
\isamarkuptrue%
wenzelm@30057
   499
\isacommand{definition}\isamarkupfalse%
wenzelm@30057
   500
\isanewline
wenzelm@40685
   501
\ \ not\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}o\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ o{\isaliteral{22}{\isachardoublequoteclose}}\ \ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6E6F743E}{\isasymnot}}\ {\isaliteral{5F}{\isacharunderscore}}{\isaliteral{22}{\isachardoublequoteclose}}\ {\isaliteral{5B}{\isacharbrackleft}}{\isadigit{4}}{\isadigit{0}}{\isaliteral{5D}{\isacharbrackright}}\ {\isadigit{4}}{\isadigit{0}}{\isaliteral{29}{\isacharparenright}}\ \isakeyword{where}\isanewline
wenzelm@40685
   502
\ \ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6E6F743E}{\isasymnot}}\ A\ {\isaliteral{5C3C65717569763E}{\isasymequiv}}\ A\ {\isaliteral{5C3C6C6F6E6772696768746172726F773E}{\isasymlongrightarrow}}\ {\isaliteral{5C3C626F74746F6D3E}{\isasymbottom}}{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@30057
   503
\isanewline
wenzelm@30057
   504
\isacommand{theorem}\isamarkupfalse%
wenzelm@40685
   505
\ notI\ {\isaliteral{5B}{\isacharbrackleft}}intro{\isaliteral{5D}{\isacharbrackright}}{\isaliteral{3A}{\isacharcolon}}\isanewline
wenzelm@40685
   506
\ \ \isakeyword{assumes}\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ {\isaliteral{5C3C626F74746F6D3E}{\isasymbottom}}{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@40685
   507
\ \ \isakeyword{shows}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6E6F743E}{\isasymnot}}\ A{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@30057
   508
%
wenzelm@30057
   509
\isadelimproof
wenzelm@30057
   510
%
wenzelm@30057
   511
\endisadelimproof
wenzelm@30057
   512
%
wenzelm@30057
   513
\isatagproof
wenzelm@30057
   514
\isacommand{unfolding}\isamarkupfalse%
wenzelm@40685
   515
\ not{\isaliteral{5F}{\isacharunderscore}}def\isanewline
wenzelm@30057
   516
\isacommand{proof}\isamarkupfalse%
wenzelm@30057
   517
\isanewline
wenzelm@30057
   518
\ \ \isacommand{assume}\isamarkupfalse%
wenzelm@30057
   519
\ A\isanewline
wenzelm@30057
   520
\ \ \isacommand{then}\isamarkupfalse%
wenzelm@30057
   521
\ \isacommand{show}\isamarkupfalse%
wenzelm@40685
   522
\ {\isaliteral{5C3C626F74746F6D3E}{\isasymbottom}}\ \isacommand{by}\isamarkupfalse%
wenzelm@40685
   523
\ {\isaliteral{28}{\isacharparenleft}}rule\ {\isaliteral{60}{\isacharbackquoteopen}}A\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ {\isaliteral{5C3C626F74746F6D3E}{\isasymbottom}}{\isaliteral{60}{\isacharbackquoteclose}}{\isaliteral{29}{\isacharparenright}}\isanewline
wenzelm@30057
   524
\isacommand{qed}\isamarkupfalse%
wenzelm@30057
   525
%
wenzelm@30057
   526
\endisatagproof
wenzelm@30057
   527
{\isafoldproof}%
wenzelm@30057
   528
%
wenzelm@30057
   529
\isadelimproof
wenzelm@30057
   530
\isanewline
wenzelm@30057
   531
%
wenzelm@30057
   532
\endisadelimproof
wenzelm@30057
   533
\isanewline
wenzelm@30057
   534
\isacommand{theorem}\isamarkupfalse%
wenzelm@40685
   535
\ notE\ {\isaliteral{5B}{\isacharbrackleft}}elim{\isaliteral{5D}{\isacharbrackright}}{\isaliteral{3A}{\isacharcolon}}\isanewline
wenzelm@40685
   536
\ \ \isakeyword{assumes}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6E6F743E}{\isasymnot}}\ A{\isaliteral{22}{\isachardoublequoteclose}}\ \isakeyword{and}\ A\isanewline
wenzelm@30057
   537
\ \ \isakeyword{shows}\ B\isanewline
wenzelm@30057
   538
%
wenzelm@30057
   539
\isadelimproof
wenzelm@30057
   540
%
wenzelm@30057
   541
\endisadelimproof
wenzelm@30057
   542
%
wenzelm@30057
   543
\isatagproof
wenzelm@30057
   544
\isacommand{proof}\isamarkupfalse%
wenzelm@40685
   545
\ {\isaliteral{2D}{\isacharminus}}\isanewline
wenzelm@30057
   546
\ \ \isacommand{from}\isamarkupfalse%
wenzelm@40685
   547
\ {\isaliteral{60}{\isacharbackquoteopen}}{\isaliteral{5C3C6E6F743E}{\isasymnot}}\ A{\isaliteral{60}{\isacharbackquoteclose}}\ \isacommand{have}\isamarkupfalse%
wenzelm@40685
   548
\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C6C6F6E6772696768746172726F773E}{\isasymlongrightarrow}}\ {\isaliteral{5C3C626F74746F6D3E}{\isasymbottom}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{unfolding}\isamarkupfalse%
wenzelm@40685
   549
\ not{\isaliteral{5F}{\isacharunderscore}}def\ \isacommand{{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30057
   550
\isanewline
wenzelm@30057
   551
\ \ \isacommand{from}\isamarkupfalse%
wenzelm@40685
   552
\ {\isaliteral{60}{\isacharbackquoteopen}}A\ {\isaliteral{5C3C6C6F6E6772696768746172726F773E}{\isasymlongrightarrow}}\ {\isaliteral{5C3C626F74746F6D3E}{\isasymbottom}}{\isaliteral{60}{\isacharbackquoteclose}}\ \isakeyword{and}\ {\isaliteral{60}{\isacharbackquoteopen}}A{\isaliteral{60}{\isacharbackquoteclose}}\ \isacommand{have}\isamarkupfalse%
wenzelm@40685
   553
\ {\isaliteral{5C3C626F74746F6D3E}{\isasymbottom}}\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30057
   554
\isanewline
wenzelm@30057
   555
\ \ \isacommand{then}\isamarkupfalse%
wenzelm@30057
   556
\ \isacommand{show}\isamarkupfalse%
wenzelm@40685
   557
\ B\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30057
   558
\isanewline
wenzelm@30057
   559
\isacommand{qed}\isamarkupfalse%
wenzelm@30057
   560
%
wenzelm@30057
   561
\endisatagproof
wenzelm@30057
   562
{\isafoldproof}%
wenzelm@30057
   563
%
wenzelm@30057
   564
\isadelimproof
wenzelm@30057
   565
%
wenzelm@30057
   566
\endisadelimproof
wenzelm@30057
   567
%
wenzelm@30057
   568
\isamarkupsubsection{Classical logic%
wenzelm@30057
   569
}
wenzelm@30057
   570
\isamarkuptrue%
wenzelm@30057
   571
%
wenzelm@30057
   572
\begin{isamarkuptext}%
wenzelm@30057
   573
Subsequently we state the principle of classical contradiction as a
wenzelm@30057
   574
  local assumption.  Thus we refrain from forcing the object-logic
wenzelm@30057
   575
  into the classical perspective.  Within that context, we may derive
wenzelm@30057
   576
  well-known consequences of the classical principle.%
wenzelm@30057
   577
\end{isamarkuptext}%
wenzelm@30057
   578
\isamarkuptrue%
wenzelm@30057
   579
\isacommand{locale}\isamarkupfalse%
wenzelm@40685
   580
\ classical\ {\isaliteral{3D}{\isacharequal}}\isanewline
wenzelm@40685
   581
\ \ \isakeyword{assumes}\ classical{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C6E6F743E}{\isasymnot}}\ C\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ C{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ C{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@30057
   582
\isakeyword{begin}\isanewline
wenzelm@30057
   583
\isanewline
wenzelm@30057
   584
\isacommand{theorem}\isamarkupfalse%
wenzelm@40685
   585
\ double{\isaliteral{5F}{\isacharunderscore}}negation{\isaliteral{3A}{\isacharcolon}}\isanewline
wenzelm@40685
   586
\ \ \isakeyword{assumes}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6E6F743E}{\isasymnot}}\ {\isaliteral{5C3C6E6F743E}{\isasymnot}}\ C{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@30057
   587
\ \ \isakeyword{shows}\ C\isanewline
wenzelm@30057
   588
%
wenzelm@30057
   589
\isadelimproof
wenzelm@30057
   590
%
wenzelm@30057
   591
\endisadelimproof
wenzelm@30057
   592
%
wenzelm@30057
   593
\isatagproof
wenzelm@30057
   594
\isacommand{proof}\isamarkupfalse%
wenzelm@40685
   595
\ {\isaliteral{28}{\isacharparenleft}}rule\ classical{\isaliteral{29}{\isacharparenright}}\isanewline
wenzelm@30057
   596
\ \ \isacommand{assume}\isamarkupfalse%
wenzelm@40685
   597
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6E6F743E}{\isasymnot}}\ C{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@30057
   598
\ \ \isacommand{with}\isamarkupfalse%
wenzelm@40685
   599
\ {\isaliteral{60}{\isacharbackquoteopen}}{\isaliteral{5C3C6E6F743E}{\isasymnot}}\ {\isaliteral{5C3C6E6F743E}{\isasymnot}}\ C{\isaliteral{60}{\isacharbackquoteclose}}\ \isacommand{show}\isamarkupfalse%
wenzelm@40685
   600
\ C\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30057
   601
\isanewline
wenzelm@30057
   602
\isacommand{qed}\isamarkupfalse%
wenzelm@30057
   603
%
wenzelm@30057
   604
\endisatagproof
wenzelm@30057
   605
{\isafoldproof}%
wenzelm@30057
   606
%
wenzelm@30057
   607
\isadelimproof
wenzelm@30057
   608
\isanewline
wenzelm@30057
   609
%
wenzelm@30057
   610
\endisadelimproof
wenzelm@30057
   611
\isanewline
wenzelm@30057
   612
\isacommand{theorem}\isamarkupfalse%
wenzelm@40685
   613
\ tertium{\isaliteral{5F}{\isacharunderscore}}non{\isaliteral{5F}{\isacharunderscore}}datur{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}C\ {\isaliteral{5C3C6F723E}{\isasymor}}\ {\isaliteral{5C3C6E6F743E}{\isasymnot}}\ C{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@30057
   614
%
wenzelm@30057
   615
\isadelimproof
wenzelm@30057
   616
%
wenzelm@30057
   617
\endisadelimproof
wenzelm@30057
   618
%
wenzelm@30057
   619
\isatagproof
wenzelm@30057
   620
\isacommand{proof}\isamarkupfalse%
wenzelm@40685
   621
\ {\isaliteral{28}{\isacharparenleft}}rule\ double{\isaliteral{5F}{\isacharunderscore}}negation{\isaliteral{29}{\isacharparenright}}\isanewline
wenzelm@30057
   622
\ \ \isacommand{show}\isamarkupfalse%
wenzelm@40685
   623
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6E6F743E}{\isasymnot}}\ {\isaliteral{5C3C6E6F743E}{\isasymnot}}\ {\isaliteral{28}{\isacharparenleft}}C\ {\isaliteral{5C3C6F723E}{\isasymor}}\ {\isaliteral{5C3C6E6F743E}{\isasymnot}}\ C{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@30057
   624
\ \ \isacommand{proof}\isamarkupfalse%
wenzelm@30057
   625
\isanewline
wenzelm@30057
   626
\ \ \ \ \isacommand{assume}\isamarkupfalse%
wenzelm@40685
   627
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6E6F743E}{\isasymnot}}\ {\isaliteral{28}{\isacharparenleft}}C\ {\isaliteral{5C3C6F723E}{\isasymor}}\ {\isaliteral{5C3C6E6F743E}{\isasymnot}}\ C{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@30057
   628
\ \ \ \ \isacommand{have}\isamarkupfalse%
wenzelm@40685
   629
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6E6F743E}{\isasymnot}}\ C{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@30057
   630
\ \ \ \ \isacommand{proof}\isamarkupfalse%
wenzelm@30057
   631
\isanewline
wenzelm@30057
   632
\ \ \ \ \ \ \isacommand{assume}\isamarkupfalse%
wenzelm@30057
   633
\ C\ \isacommand{then}\isamarkupfalse%
wenzelm@30057
   634
\ \isacommand{have}\isamarkupfalse%
wenzelm@40685
   635
\ {\isaliteral{22}{\isachardoublequoteopen}}C\ {\isaliteral{5C3C6F723E}{\isasymor}}\ {\isaliteral{5C3C6E6F743E}{\isasymnot}}\ C{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30057
   636
\isanewline
wenzelm@30057
   637
\ \ \ \ \ \ \isacommand{with}\isamarkupfalse%
wenzelm@40685
   638
\ {\isaliteral{60}{\isacharbackquoteopen}}{\isaliteral{5C3C6E6F743E}{\isasymnot}}\ {\isaliteral{28}{\isacharparenleft}}C\ {\isaliteral{5C3C6F723E}{\isasymor}}\ {\isaliteral{5C3C6E6F743E}{\isasymnot}}\ C{\isaliteral{29}{\isacharparenright}}{\isaliteral{60}{\isacharbackquoteclose}}\ \isacommand{show}\isamarkupfalse%
wenzelm@40685
   639
\ {\isaliteral{5C3C626F74746F6D3E}{\isasymbottom}}\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30057
   640
\isanewline
wenzelm@30057
   641
\ \ \ \ \isacommand{qed}\isamarkupfalse%
wenzelm@30057
   642
\isanewline
wenzelm@30057
   643
\ \ \ \ \isacommand{then}\isamarkupfalse%
wenzelm@30057
   644
\ \isacommand{have}\isamarkupfalse%
wenzelm@40685
   645
\ {\isaliteral{22}{\isachardoublequoteopen}}C\ {\isaliteral{5C3C6F723E}{\isasymor}}\ {\isaliteral{5C3C6E6F743E}{\isasymnot}}\ C{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30057
   646
\isanewline
wenzelm@30057
   647
\ \ \ \ \isacommand{with}\isamarkupfalse%
wenzelm@40685
   648
\ {\isaliteral{60}{\isacharbackquoteopen}}{\isaliteral{5C3C6E6F743E}{\isasymnot}}\ {\isaliteral{28}{\isacharparenleft}}C\ {\isaliteral{5C3C6F723E}{\isasymor}}\ {\isaliteral{5C3C6E6F743E}{\isasymnot}}\ C{\isaliteral{29}{\isacharparenright}}{\isaliteral{60}{\isacharbackquoteclose}}\ \isacommand{show}\isamarkupfalse%
wenzelm@40685
   649
\ {\isaliteral{5C3C626F74746F6D3E}{\isasymbottom}}\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30057
   650
\isanewline
wenzelm@30057
   651
\ \ \isacommand{qed}\isamarkupfalse%
wenzelm@30057
   652
\isanewline
wenzelm@30057
   653
\isacommand{qed}\isamarkupfalse%
wenzelm@30057
   654
%
wenzelm@30057
   655
\endisatagproof
wenzelm@30057
   656
{\isafoldproof}%
wenzelm@30057
   657
%
wenzelm@30057
   658
\isadelimproof
wenzelm@30057
   659
%
wenzelm@30057
   660
\endisadelimproof
wenzelm@30057
   661
%
wenzelm@30057
   662
\begin{isamarkuptext}%
wenzelm@30066
   663
\noindent These examples illustrate both classical reasoning and
wenzelm@30066
   664
  non-trivial propositional proofs in general.  All three rules
wenzelm@30066
   665
  characterize classical logic independently, but the original rule is
wenzelm@30066
   666
  already the most convenient to use, because it leaves the conclusion
wenzelm@40685
   667
  unchanged.  Note that \isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C6E6F743E}{\isasymnot}}\ C\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ C{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ C{\isaliteral{22}{\isachardoublequote}}} fits again into our
wenzelm@30066
   668
  format for eliminations, despite the additional twist that the
wenzelm@40685
   669
  context refers to the main conclusion.  So we may write \isa{classical} as the Isar statement ``\isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{5C3C4F425441494E533E}{\isasymOBTAINS}}\ {\isaliteral{5C3C6E6F743E}{\isasymnot}}\ thesis{\isaliteral{22}{\isachardoublequote}}}''.
wenzelm@30066
   670
  This also explains nicely how classical reasoning really works:
wenzelm@30066
   671
  whatever the main \isa{thesis} might be, we may always assume its
wenzelm@30066
   672
  negation!%
wenzelm@30057
   673
\end{isamarkuptext}%
wenzelm@30057
   674
\isamarkuptrue%
wenzelm@30057
   675
\isacommand{end}\isamarkupfalse%
wenzelm@30057
   676
%
wenzelm@30066
   677
\isamarkupsubsection{Quantifiers \label{sec:framework-ex-quant}%
wenzelm@30057
   678
}
wenzelm@30057
   679
\isamarkuptrue%
wenzelm@30057
   680
%
wenzelm@30057
   681
\begin{isamarkuptext}%
wenzelm@30057
   682
Representing quantifiers is easy, thanks to the higher-order nature
wenzelm@30057
   683
  of the underlying framework.  According to the well-known technique
wenzelm@30057
   684
  introduced by Church \cite{church40}, quantifiers are operators on
wenzelm@40685
   685
  predicates, which are syntactically represented as \isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{5C3C6C616D6264613E}{\isasymlambda}}{\isaliteral{22}{\isachardoublequote}}}-terms
wenzelm@40685
   686
  of type \isa{{\isaliteral{22}{\isachardoublequote}}i\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ o{\isaliteral{22}{\isachardoublequote}}}.  Binder notation turns \isa{{\isaliteral{22}{\isachardoublequote}}All\ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C6C616D6264613E}{\isasymlambda}}x{\isaliteral{2E}{\isachardot}}\ B\ x{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequote}}} into \isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}x{\isaliteral{2E}{\isachardot}}\ B\ x{\isaliteral{22}{\isachardoublequote}}} etc.%
wenzelm@30057
   687
\end{isamarkuptext}%
wenzelm@30057
   688
\isamarkuptrue%
wenzelm@30057
   689
\isacommand{axiomatization}\isamarkupfalse%
wenzelm@30057
   690
\isanewline
wenzelm@40685
   691
\ \ All\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{28}{\isacharparenleft}}i\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ o{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ o{\isaliteral{22}{\isachardoublequoteclose}}\ \ {\isaliteral{28}{\isacharparenleft}}\isakeyword{binder}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}{\isaliteral{22}{\isachardoublequoteclose}}\ {\isadigit{1}}{\isadigit{0}}{\isaliteral{29}{\isacharparenright}}\ \isakeyword{where}\isanewline
wenzelm@40685
   692
\ \ allI\ {\isaliteral{5B}{\isacharbrackleft}}intro{\isaliteral{5D}{\isacharbrackright}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C416E643E}{\isasymAnd}}x{\isaliteral{2E}{\isachardot}}\ B\ x{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ {\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}x{\isaliteral{2E}{\isachardot}}\ B\ x{\isaliteral{22}{\isachardoublequoteclose}}\ \isakeyword{and}\isanewline
wenzelm@40685
   693
\ \ allD\ {\isaliteral{5B}{\isacharbrackleft}}dest{\isaliteral{5D}{\isacharbrackright}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}x{\isaliteral{2E}{\isachardot}}\ B\ x{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ B\ a{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@30057
   694
\isanewline
wenzelm@30057
   695
\isacommand{axiomatization}\isamarkupfalse%
wenzelm@30057
   696
\isanewline
wenzelm@40685
   697
\ \ Ex\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{28}{\isacharparenleft}}i\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ o{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ o{\isaliteral{22}{\isachardoublequoteclose}}\ \ {\isaliteral{28}{\isacharparenleft}}\isakeyword{binder}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6578697374733E}{\isasymexists}}{\isaliteral{22}{\isachardoublequoteclose}}\ {\isadigit{1}}{\isadigit{0}}{\isaliteral{29}{\isacharparenright}}\ \isakeyword{where}\isanewline
wenzelm@40685
   698
\ \ exI\ {\isaliteral{5B}{\isacharbrackleft}}intro{\isaliteral{5D}{\isacharbrackright}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}B\ a\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C6578697374733E}{\isasymexists}}x{\isaliteral{2E}{\isachardot}}\ B\ x{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isakeyword{and}\isanewline
wenzelm@40685
   699
\ \ exE\ {\isaliteral{5B}{\isacharbrackleft}}elim{\isaliteral{5D}{\isacharbrackright}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C6578697374733E}{\isasymexists}}x{\isaliteral{2E}{\isachardot}}\ B\ x{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C416E643E}{\isasymAnd}}x{\isaliteral{2E}{\isachardot}}\ B\ x\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ C{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ C{\isaliteral{22}{\isachardoublequoteclose}}%
wenzelm@30057
   700
\begin{isamarkuptext}%
wenzelm@40685
   701
\noindent The statement of \isa{exE} corresponds to ``\isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{5C3C415353554D45533E}{\isasymASSUMES}}\ {\isaliteral{5C3C6578697374733E}{\isasymexists}}x{\isaliteral{2E}{\isachardot}}\ B\ x\ {\isaliteral{5C3C4F425441494E533E}{\isasymOBTAINS}}\ x\ {\isaliteral{5C3C57484552453E}{\isasymWHERE}}\ B\ x{\isaliteral{22}{\isachardoublequote}}}'' in Isar.  In the
wenzelm@30066
   702
  subsequent example we illustrate quantifier reasoning involving all
wenzelm@30066
   703
  four rules:%
wenzelm@30057
   704
\end{isamarkuptext}%
wenzelm@30057
   705
\isamarkuptrue%
wenzelm@30057
   706
\isacommand{theorem}\isamarkupfalse%
wenzelm@30057
   707
\isanewline
wenzelm@40685
   708
\ \ \isakeyword{assumes}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6578697374733E}{\isasymexists}}x{\isaliteral{2E}{\isachardot}}\ {\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}y{\isaliteral{2E}{\isachardot}}\ R\ x\ y{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@40685
   709
\ \ \isakeyword{shows}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}y{\isaliteral{2E}{\isachardot}}\ {\isaliteral{5C3C6578697374733E}{\isasymexists}}x{\isaliteral{2E}{\isachardot}}\ R\ x\ y{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@30057
   710
%
wenzelm@30057
   711
\isadelimproof
wenzelm@30057
   712
%
wenzelm@30057
   713
\endisadelimproof
wenzelm@30057
   714
%
wenzelm@30057
   715
\isatagproof
wenzelm@30057
   716
\isacommand{proof}\isamarkupfalse%
wenzelm@30057
   717
\ \ \ \ %
wenzelm@40685
   718
\isamarkupcmt{\isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}{\isaliteral{22}{\isachardoublequote}}} introduction%
wenzelm@30057
   719
}
wenzelm@30057
   720
\isanewline
wenzelm@30057
   721
\ \ \isacommand{obtain}\isamarkupfalse%
wenzelm@40685
   722
\ x\ \isakeyword{where}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}y{\isaliteral{2E}{\isachardot}}\ R\ x\ y{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{using}\isamarkupfalse%
wenzelm@40685
   723
\ {\isaliteral{60}{\isacharbackquoteopen}}{\isaliteral{5C3C6578697374733E}{\isasymexists}}x{\isaliteral{2E}{\isachardot}}\ {\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}y{\isaliteral{2E}{\isachardot}}\ R\ x\ y{\isaliteral{60}{\isacharbackquoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30057
   724
\ \ \ \ %
wenzelm@40685
   725
\isamarkupcmt{\isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{5C3C6578697374733E}{\isasymexists}}{\isaliteral{22}{\isachardoublequote}}} elimination%
wenzelm@30057
   726
}
wenzelm@30057
   727
\isanewline
wenzelm@30057
   728
\ \ \isacommand{fix}\isamarkupfalse%
wenzelm@30057
   729
\ y\ \isacommand{have}\isamarkupfalse%
wenzelm@40685
   730
\ {\isaliteral{22}{\isachardoublequoteopen}}R\ x\ y{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{using}\isamarkupfalse%
wenzelm@40685
   731
\ {\isaliteral{60}{\isacharbackquoteopen}}{\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}y{\isaliteral{2E}{\isachardot}}\ R\ x\ y{\isaliteral{60}{\isacharbackquoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30057
   732
\ \ \ \ %
wenzelm@40685
   733
\isamarkupcmt{\isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}{\isaliteral{22}{\isachardoublequote}}} destruction%
wenzelm@30057
   734
}
wenzelm@30057
   735
\isanewline
wenzelm@30057
   736
\ \ \isacommand{then}\isamarkupfalse%
wenzelm@30057
   737
\ \isacommand{show}\isamarkupfalse%
wenzelm@40685
   738
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6578697374733E}{\isasymexists}}x{\isaliteral{2E}{\isachardot}}\ R\ x\ y{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30057
   739
\ \ \ \ %
wenzelm@40685
   740
\isamarkupcmt{\isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{5C3C6578697374733E}{\isasymexists}}{\isaliteral{22}{\isachardoublequote}}} introduction%
wenzelm@30057
   741
}
wenzelm@30057
   742
\isanewline
wenzelm@30057
   743
\isacommand{qed}\isamarkupfalse%
wenzelm@30057
   744
%
wenzelm@30057
   745
\endisatagproof
wenzelm@30057
   746
{\isafoldproof}%
wenzelm@30057
   747
%
wenzelm@30057
   748
\isadelimproof
wenzelm@30057
   749
%
wenzelm@30057
   750
\endisadelimproof
wenzelm@30057
   751
%
wenzelm@30066
   752
\isamarkupsubsection{Canonical reasoning patterns%
wenzelm@30066
   753
}
wenzelm@30066
   754
\isamarkuptrue%
wenzelm@30066
   755
%
wenzelm@30066
   756
\begin{isamarkuptext}%
wenzelm@30066
   757
The main rules of first-order predicate logic from
wenzelm@30066
   758
  \secref{sec:framework-ex-prop} and \secref{sec:framework-ex-quant}
wenzelm@30066
   759
  can now be summarized as follows, using the native Isar statement
wenzelm@30066
   760
  format of \secref{sec:framework-stmt}.
wenzelm@30066
   761
wenzelm@30066
   762
  \medskip
wenzelm@30066
   763
  \begin{tabular}{l}
wenzelm@40685
   764
  \isa{{\isaliteral{22}{\isachardoublequote}}impI{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{5C3C415353554D45533E}{\isasymASSUMES}}\ A\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ B\ {\isaliteral{5C3C53484F57533E}{\isasymSHOWS}}\ A\ {\isaliteral{5C3C6C6F6E6772696768746172726F773E}{\isasymlongrightarrow}}\ B{\isaliteral{22}{\isachardoublequote}}} \\
wenzelm@40685
   765
  \isa{{\isaliteral{22}{\isachardoublequote}}impD{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{5C3C415353554D45533E}{\isasymASSUMES}}\ A\ {\isaliteral{5C3C6C6F6E6772696768746172726F773E}{\isasymlongrightarrow}}\ B\ {\isaliteral{5C3C414E443E}{\isasymAND}}\ A\ {\isaliteral{5C3C53484F57533E}{\isasymSHOWS}}\ B{\isaliteral{22}{\isachardoublequote}}} \\[1ex]
wenzelm@30066
   766
wenzelm@40685
   767
  \isa{{\isaliteral{22}{\isachardoublequote}}disjI\isaliteral{5C3C5E697375623E}{}\isactrlisub {\isadigit{1}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{5C3C415353554D45533E}{\isasymASSUMES}}\ A\ {\isaliteral{5C3C53484F57533E}{\isasymSHOWS}}\ A\ {\isaliteral{5C3C6F723E}{\isasymor}}\ B{\isaliteral{22}{\isachardoublequote}}} \\
wenzelm@40685
   768
  \isa{{\isaliteral{22}{\isachardoublequote}}disjI\isaliteral{5C3C5E697375623E}{}\isactrlisub {\isadigit{2}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{5C3C415353554D45533E}{\isasymASSUMES}}\ B\ {\isaliteral{5C3C53484F57533E}{\isasymSHOWS}}\ A\ {\isaliteral{5C3C6F723E}{\isasymor}}\ B{\isaliteral{22}{\isachardoublequote}}} \\
wenzelm@40685
   769
  \isa{{\isaliteral{22}{\isachardoublequote}}disjE{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{5C3C415353554D45533E}{\isasymASSUMES}}\ A\ {\isaliteral{5C3C6F723E}{\isasymor}}\ B\ {\isaliteral{5C3C4F425441494E533E}{\isasymOBTAINS}}\ A\ {\isaliteral{5C3C424241523E}{\isasymBBAR}}\ B{\isaliteral{22}{\isachardoublequote}}} \\[1ex]
wenzelm@30066
   770
wenzelm@40685
   771
  \isa{{\isaliteral{22}{\isachardoublequote}}conjI{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{5C3C415353554D45533E}{\isasymASSUMES}}\ A\ {\isaliteral{5C3C414E443E}{\isasymAND}}\ B\ {\isaliteral{5C3C53484F57533E}{\isasymSHOWS}}\ A\ {\isaliteral{5C3C616E643E}{\isasymand}}\ B{\isaliteral{22}{\isachardoublequote}}} \\
wenzelm@40685
   772
  \isa{{\isaliteral{22}{\isachardoublequote}}conjE{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{5C3C415353554D45533E}{\isasymASSUMES}}\ A\ {\isaliteral{5C3C616E643E}{\isasymand}}\ B\ {\isaliteral{5C3C4F425441494E533E}{\isasymOBTAINS}}\ A\ {\isaliteral{5C3C414E443E}{\isasymAND}}\ B{\isaliteral{22}{\isachardoublequote}}} \\[1ex]
wenzelm@30066
   773
wenzelm@40685
   774
  \isa{{\isaliteral{22}{\isachardoublequote}}falseE{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{5C3C415353554D45533E}{\isasymASSUMES}}\ {\isaliteral{5C3C626F74746F6D3E}{\isasymbottom}}\ {\isaliteral{5C3C53484F57533E}{\isasymSHOWS}}\ A{\isaliteral{22}{\isachardoublequote}}} \\
wenzelm@40685
   775
  \isa{{\isaliteral{22}{\isachardoublequote}}trueI{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{5C3C53484F57533E}{\isasymSHOWS}}\ {\isaliteral{5C3C746F703E}{\isasymtop}}{\isaliteral{22}{\isachardoublequote}}} \\[1ex]
wenzelm@30066
   776
wenzelm@40685
   777
  \isa{{\isaliteral{22}{\isachardoublequote}}notI{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{5C3C415353554D45533E}{\isasymASSUMES}}\ A\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ {\isaliteral{5C3C626F74746F6D3E}{\isasymbottom}}\ {\isaliteral{5C3C53484F57533E}{\isasymSHOWS}}\ {\isaliteral{5C3C6E6F743E}{\isasymnot}}\ A{\isaliteral{22}{\isachardoublequote}}} \\
wenzelm@40685
   778
  \isa{{\isaliteral{22}{\isachardoublequote}}notE{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{5C3C415353554D45533E}{\isasymASSUMES}}\ {\isaliteral{5C3C6E6F743E}{\isasymnot}}\ A\ {\isaliteral{5C3C414E443E}{\isasymAND}}\ A\ {\isaliteral{5C3C53484F57533E}{\isasymSHOWS}}\ B{\isaliteral{22}{\isachardoublequote}}} \\[1ex]
wenzelm@30066
   779
wenzelm@40685
   780
  \isa{{\isaliteral{22}{\isachardoublequote}}allI{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{5C3C415353554D45533E}{\isasymASSUMES}}\ {\isaliteral{5C3C416E643E}{\isasymAnd}}x{\isaliteral{2E}{\isachardot}}\ B\ x\ {\isaliteral{5C3C53484F57533E}{\isasymSHOWS}}\ {\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}x{\isaliteral{2E}{\isachardot}}\ B\ x{\isaliteral{22}{\isachardoublequote}}} \\
wenzelm@40685
   781
  \isa{{\isaliteral{22}{\isachardoublequote}}allE{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{5C3C415353554D45533E}{\isasymASSUMES}}\ {\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}x{\isaliteral{2E}{\isachardot}}\ B\ x\ {\isaliteral{5C3C53484F57533E}{\isasymSHOWS}}\ B\ a{\isaliteral{22}{\isachardoublequote}}} \\[1ex]
wenzelm@30066
   782
wenzelm@40685
   783
  \isa{{\isaliteral{22}{\isachardoublequote}}exI{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{5C3C415353554D45533E}{\isasymASSUMES}}\ B\ a\ {\isaliteral{5C3C53484F57533E}{\isasymSHOWS}}\ {\isaliteral{5C3C6578697374733E}{\isasymexists}}x{\isaliteral{2E}{\isachardot}}\ B\ x{\isaliteral{22}{\isachardoublequote}}} \\
wenzelm@40685
   784
  \isa{{\isaliteral{22}{\isachardoublequote}}exE{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{5C3C415353554D45533E}{\isasymASSUMES}}\ {\isaliteral{5C3C6578697374733E}{\isasymexists}}x{\isaliteral{2E}{\isachardot}}\ B\ x\ {\isaliteral{5C3C4F425441494E533E}{\isasymOBTAINS}}\ a\ {\isaliteral{5C3C57484552453E}{\isasymWHERE}}\ B\ a{\isaliteral{22}{\isachardoublequote}}}
wenzelm@30066
   785
  \end{tabular}
wenzelm@30066
   786
  \medskip
wenzelm@30066
   787
wenzelm@30066
   788
  \noindent This essentially provides a declarative reading of Pure
wenzelm@30066
   789
  rules as Isar reasoning patterns: the rule statements tells how a
wenzelm@30066
   790
  canonical proof outline shall look like.  Since the above rules have
wenzelm@30066
   791
  already been declared as \hyperlink{attribute.Pure.intro}{\mbox{\isa{intro}}}, \hyperlink{attribute.Pure.elim}{\mbox{\isa{elim}}}, \hyperlink{attribute.Pure.dest}{\mbox{\isa{dest}}} --- each according to its
wenzelm@30066
   792
  particular shape --- we can immediately write Isar proof texts as
wenzelm@30066
   793
  follows:%
wenzelm@30066
   794
\end{isamarkuptext}%
wenzelm@30066
   795
\isamarkuptrue%
wenzelm@30066
   796
%
wenzelm@30066
   797
\isadelimproof
wenzelm@30066
   798
%
wenzelm@30066
   799
\endisadelimproof
wenzelm@30066
   800
%
wenzelm@30066
   801
\isatagproof
wenzelm@30066
   802
%
wenzelm@30066
   803
\begin{minipage}[t]{0.4\textwidth}
wenzelm@30066
   804
\isanewline
wenzelm@30066
   805
\ \ \isacommand{have}\isamarkupfalse%
wenzelm@40685
   806
\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C6C6F6E6772696768746172726F773E}{\isasymlongrightarrow}}\ B{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@30066
   807
\ \ \isacommand{proof}\isamarkupfalse%
wenzelm@30066
   808
\isanewline
wenzelm@30066
   809
\ \ \ \ \isacommand{assume}\isamarkupfalse%
wenzelm@30066
   810
\ A\isanewline
wenzelm@30066
   811
\ \ \ \ \isacommand{show}\isamarkupfalse%
wenzelm@30066
   812
\ B%
wenzelm@30066
   813
\endisatagproof
wenzelm@30066
   814
{\isafoldproof}%
wenzelm@30066
   815
%
wenzelm@30066
   816
\isadelimproof
wenzelm@30066
   817
%
wenzelm@30066
   818
\endisadelimproof
wenzelm@30066
   819
%
wenzelm@30066
   820
\isadelimnoproof
wenzelm@30066
   821
\ %
wenzelm@30066
   822
\endisadelimnoproof
wenzelm@30066
   823
%
wenzelm@30066
   824
\isatagnoproof
wenzelm@30066
   825
\isacommand{sorry}\isamarkupfalse%
wenzelm@30066
   826
%
wenzelm@30066
   827
\endisatagnoproof
wenzelm@30066
   828
{\isafoldnoproof}%
wenzelm@30066
   829
%
wenzelm@30066
   830
\isadelimnoproof
wenzelm@30066
   831
\isanewline
wenzelm@30066
   832
%
wenzelm@30066
   833
\endisadelimnoproof
wenzelm@30066
   834
%
wenzelm@30066
   835
\isadelimproof
wenzelm@30066
   836
\ \ %
wenzelm@30066
   837
\endisadelimproof
wenzelm@30066
   838
%
wenzelm@30066
   839
\isatagproof
wenzelm@30066
   840
\isacommand{qed}\isamarkupfalse%
wenzelm@30066
   841
%
wenzelm@30066
   842
\end{minipage}\qquad\begin{minipage}[t]{0.4\textwidth}
wenzelm@30066
   843
\isanewline
wenzelm@30066
   844
\ \ \isacommand{have}\isamarkupfalse%
wenzelm@40685
   845
\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C6C6F6E6772696768746172726F773E}{\isasymlongrightarrow}}\ B{\isaliteral{22}{\isachardoublequoteclose}}\ \isakeyword{and}\ A%
wenzelm@30066
   846
\endisatagproof
wenzelm@30066
   847
{\isafoldproof}%
wenzelm@30066
   848
%
wenzelm@30066
   849
\isadelimproof
wenzelm@30066
   850
%
wenzelm@30066
   851
\endisadelimproof
wenzelm@30066
   852
%
wenzelm@30066
   853
\isadelimnoproof
wenzelm@30066
   854
\ %
wenzelm@30066
   855
\endisadelimnoproof
wenzelm@30066
   856
%
wenzelm@30066
   857
\isatagnoproof
wenzelm@30066
   858
\isacommand{sorry}\isamarkupfalse%
wenzelm@30066
   859
%
wenzelm@30066
   860
\endisatagnoproof
wenzelm@30066
   861
{\isafoldnoproof}%
wenzelm@30066
   862
%
wenzelm@30066
   863
\isadelimnoproof
wenzelm@30066
   864
\isanewline
wenzelm@30066
   865
%
wenzelm@30066
   866
\endisadelimnoproof
wenzelm@30066
   867
%
wenzelm@30066
   868
\isadelimproof
wenzelm@30066
   869
\ \ %
wenzelm@30066
   870
\endisadelimproof
wenzelm@30066
   871
%
wenzelm@30066
   872
\isatagproof
wenzelm@30066
   873
\isacommand{then}\isamarkupfalse%
wenzelm@30066
   874
\ \isacommand{have}\isamarkupfalse%
wenzelm@40685
   875
\ B\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30066
   876
%
wenzelm@30066
   877
\end{minipage}\\[3ex]\begin{minipage}[t]{0.4\textwidth}
wenzelm@30066
   878
\isanewline
wenzelm@30066
   879
\ \ \isacommand{have}\isamarkupfalse%
wenzelm@30066
   880
\ A%
wenzelm@30066
   881
\endisatagproof
wenzelm@30066
   882
{\isafoldproof}%
wenzelm@30066
   883
%
wenzelm@30066
   884
\isadelimproof
wenzelm@30066
   885
%
wenzelm@30066
   886
\endisadelimproof
wenzelm@30066
   887
%
wenzelm@30066
   888
\isadelimnoproof
wenzelm@30066
   889
\ %
wenzelm@30066
   890
\endisadelimnoproof
wenzelm@30066
   891
%
wenzelm@30066
   892
\isatagnoproof
wenzelm@30066
   893
\isacommand{sorry}\isamarkupfalse%
wenzelm@30066
   894
%
wenzelm@30066
   895
\endisatagnoproof
wenzelm@30066
   896
{\isafoldnoproof}%
wenzelm@30066
   897
%
wenzelm@30066
   898
\isadelimnoproof
wenzelm@30066
   899
\isanewline
wenzelm@30066
   900
%
wenzelm@30066
   901
\endisadelimnoproof
wenzelm@30066
   902
%
wenzelm@30066
   903
\isadelimproof
wenzelm@30066
   904
\ \ %
wenzelm@30066
   905
\endisadelimproof
wenzelm@30066
   906
%
wenzelm@30066
   907
\isatagproof
wenzelm@30066
   908
\isacommand{then}\isamarkupfalse%
wenzelm@30066
   909
\ \isacommand{have}\isamarkupfalse%
wenzelm@40685
   910
\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C6F723E}{\isasymor}}\ B{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30066
   911
\isanewline
wenzelm@30066
   912
\isanewline
wenzelm@30066
   913
\ \ \isacommand{have}\isamarkupfalse%
wenzelm@30066
   914
\ B%
wenzelm@30066
   915
\endisatagproof
wenzelm@30066
   916
{\isafoldproof}%
wenzelm@30066
   917
%
wenzelm@30066
   918
\isadelimproof
wenzelm@30066
   919
%
wenzelm@30066
   920
\endisadelimproof
wenzelm@30066
   921
%
wenzelm@30066
   922
\isadelimnoproof
wenzelm@30066
   923
\ %
wenzelm@30066
   924
\endisadelimnoproof
wenzelm@30066
   925
%
wenzelm@30066
   926
\isatagnoproof
wenzelm@30066
   927
\isacommand{sorry}\isamarkupfalse%
wenzelm@30066
   928
%
wenzelm@30066
   929
\endisatagnoproof
wenzelm@30066
   930
{\isafoldnoproof}%
wenzelm@30066
   931
%
wenzelm@30066
   932
\isadelimnoproof
wenzelm@30066
   933
\isanewline
wenzelm@30066
   934
%
wenzelm@30066
   935
\endisadelimnoproof
wenzelm@30066
   936
%
wenzelm@30066
   937
\isadelimproof
wenzelm@30066
   938
\ \ %
wenzelm@30066
   939
\endisadelimproof
wenzelm@30066
   940
%
wenzelm@30066
   941
\isatagproof
wenzelm@30066
   942
\isacommand{then}\isamarkupfalse%
wenzelm@30066
   943
\ \isacommand{have}\isamarkupfalse%
wenzelm@40685
   944
\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C6F723E}{\isasymor}}\ B{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30066
   945
%
wenzelm@30066
   946
\end{minipage}\qquad\begin{minipage}[t]{0.4\textwidth}
wenzelm@30066
   947
\isanewline
wenzelm@30066
   948
\ \ \isacommand{have}\isamarkupfalse%
wenzelm@40685
   949
\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C6F723E}{\isasymor}}\ B{\isaliteral{22}{\isachardoublequoteclose}}%
wenzelm@30066
   950
\endisatagproof
wenzelm@30066
   951
{\isafoldproof}%
wenzelm@30066
   952
%
wenzelm@30066
   953
\isadelimproof
wenzelm@30066
   954
%
wenzelm@30066
   955
\endisadelimproof
wenzelm@30066
   956
%
wenzelm@30066
   957
\isadelimnoproof
wenzelm@30066
   958
\ %
wenzelm@30066
   959
\endisadelimnoproof
wenzelm@30066
   960
%
wenzelm@30066
   961
\isatagnoproof
wenzelm@30066
   962
\isacommand{sorry}\isamarkupfalse%
wenzelm@30066
   963
%
wenzelm@30066
   964
\endisatagnoproof
wenzelm@30066
   965
{\isafoldnoproof}%
wenzelm@30066
   966
%
wenzelm@30066
   967
\isadelimnoproof
wenzelm@30066
   968
\isanewline
wenzelm@30066
   969
%
wenzelm@30066
   970
\endisadelimnoproof
wenzelm@30066
   971
%
wenzelm@30066
   972
\isadelimproof
wenzelm@30066
   973
\ \ %
wenzelm@30066
   974
\endisadelimproof
wenzelm@30066
   975
%
wenzelm@30066
   976
\isatagproof
wenzelm@30066
   977
\isacommand{then}\isamarkupfalse%
wenzelm@30066
   978
\ \isacommand{have}\isamarkupfalse%
wenzelm@30066
   979
\ C\isanewline
wenzelm@30066
   980
\ \ \isacommand{proof}\isamarkupfalse%
wenzelm@30066
   981
\isanewline
wenzelm@30066
   982
\ \ \ \ \isacommand{assume}\isamarkupfalse%
wenzelm@30066
   983
\ A\isanewline
wenzelm@30066
   984
\ \ \ \ \isacommand{then}\isamarkupfalse%
wenzelm@30066
   985
\ \isacommand{show}\isamarkupfalse%
wenzelm@30066
   986
\ C%
wenzelm@30066
   987
\endisatagproof
wenzelm@30066
   988
{\isafoldproof}%
wenzelm@30066
   989
%
wenzelm@30066
   990
\isadelimproof
wenzelm@30066
   991
%
wenzelm@30066
   992
\endisadelimproof
wenzelm@30066
   993
%
wenzelm@30066
   994
\isadelimnoproof
wenzelm@30066
   995
\ %
wenzelm@30066
   996
\endisadelimnoproof
wenzelm@30066
   997
%
wenzelm@30066
   998
\isatagnoproof
wenzelm@30066
   999
\isacommand{sorry}\isamarkupfalse%
wenzelm@30066
  1000
%
wenzelm@30066
  1001
\endisatagnoproof
wenzelm@30066
  1002
{\isafoldnoproof}%
wenzelm@30066
  1003
%
wenzelm@30066
  1004
\isadelimnoproof
wenzelm@30066
  1005
\isanewline
wenzelm@30066
  1006
%
wenzelm@30066
  1007
\endisadelimnoproof
wenzelm@30066
  1008
%
wenzelm@30066
  1009
\isadelimproof
wenzelm@30066
  1010
\ \ %
wenzelm@30066
  1011
\endisadelimproof
wenzelm@30066
  1012
%
wenzelm@30066
  1013
\isatagproof
wenzelm@30066
  1014
\isacommand{next}\isamarkupfalse%
wenzelm@30066
  1015
\isanewline
wenzelm@30066
  1016
\ \ \ \ \isacommand{assume}\isamarkupfalse%
wenzelm@30066
  1017
\ B\isanewline
wenzelm@30066
  1018
\ \ \ \ \isacommand{then}\isamarkupfalse%
wenzelm@30066
  1019
\ \isacommand{show}\isamarkupfalse%
wenzelm@30066
  1020
\ C%
wenzelm@30066
  1021
\endisatagproof
wenzelm@30066
  1022
{\isafoldproof}%
wenzelm@30066
  1023
%
wenzelm@30066
  1024
\isadelimproof
wenzelm@30066
  1025
%
wenzelm@30066
  1026
\endisadelimproof
wenzelm@30066
  1027
%
wenzelm@30066
  1028
\isadelimnoproof
wenzelm@30066
  1029
\ %
wenzelm@30066
  1030
\endisadelimnoproof
wenzelm@30066
  1031
%
wenzelm@30066
  1032
\isatagnoproof
wenzelm@30066
  1033
\isacommand{sorry}\isamarkupfalse%
wenzelm@30066
  1034
%
wenzelm@30066
  1035
\endisatagnoproof
wenzelm@30066
  1036
{\isafoldnoproof}%
wenzelm@30066
  1037
%
wenzelm@30066
  1038
\isadelimnoproof
wenzelm@30066
  1039
\isanewline
wenzelm@30066
  1040
%
wenzelm@30066
  1041
\endisadelimnoproof
wenzelm@30066
  1042
%
wenzelm@30066
  1043
\isadelimproof
wenzelm@30066
  1044
\ \ %
wenzelm@30066
  1045
\endisadelimproof
wenzelm@30066
  1046
%
wenzelm@30066
  1047
\isatagproof
wenzelm@30066
  1048
\isacommand{qed}\isamarkupfalse%
wenzelm@30066
  1049
%
wenzelm@30066
  1050
\end{minipage}\\[3ex]\begin{minipage}[t]{0.4\textwidth}
wenzelm@30066
  1051
\isanewline
wenzelm@30066
  1052
\ \ \isacommand{have}\isamarkupfalse%
wenzelm@30066
  1053
\ A\ \isakeyword{and}\ B%
wenzelm@30066
  1054
\endisatagproof
wenzelm@30066
  1055
{\isafoldproof}%
wenzelm@30066
  1056
%
wenzelm@30066
  1057
\isadelimproof
wenzelm@30066
  1058
%
wenzelm@30066
  1059
\endisadelimproof
wenzelm@30066
  1060
%
wenzelm@30066
  1061
\isadelimnoproof
wenzelm@30066
  1062
\ %
wenzelm@30066
  1063
\endisadelimnoproof
wenzelm@30066
  1064
%
wenzelm@30066
  1065
\isatagnoproof
wenzelm@30066
  1066
\isacommand{sorry}\isamarkupfalse%
wenzelm@30066
  1067
%
wenzelm@30066
  1068
\endisatagnoproof
wenzelm@30066
  1069
{\isafoldnoproof}%
wenzelm@30066
  1070
%
wenzelm@30066
  1071
\isadelimnoproof
wenzelm@30066
  1072
\isanewline
wenzelm@30066
  1073
%
wenzelm@30066
  1074
\endisadelimnoproof
wenzelm@30066
  1075
%
wenzelm@30066
  1076
\isadelimproof
wenzelm@30066
  1077
\ \ %
wenzelm@30066
  1078
\endisadelimproof
wenzelm@30066
  1079
%
wenzelm@30066
  1080
\isatagproof
wenzelm@30066
  1081
\isacommand{then}\isamarkupfalse%
wenzelm@30066
  1082
\ \isacommand{have}\isamarkupfalse%
wenzelm@40685
  1083
\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C616E643E}{\isasymand}}\ B{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30066
  1084
%
wenzelm@30066
  1085
\end{minipage}\qquad\begin{minipage}[t]{0.4\textwidth}
wenzelm@30066
  1086
\isanewline
wenzelm@30066
  1087
\ \ \isacommand{have}\isamarkupfalse%
wenzelm@40685
  1088
\ {\isaliteral{22}{\isachardoublequoteopen}}A\ {\isaliteral{5C3C616E643E}{\isasymand}}\ B{\isaliteral{22}{\isachardoublequoteclose}}%
wenzelm@30066
  1089
\endisatagproof
wenzelm@30066
  1090
{\isafoldproof}%
wenzelm@30066
  1091
%
wenzelm@30066
  1092
\isadelimproof
wenzelm@30066
  1093
%
wenzelm@30066
  1094
\endisadelimproof
wenzelm@30066
  1095
%
wenzelm@30066
  1096
\isadelimnoproof
wenzelm@30066
  1097
\ %
wenzelm@30066
  1098
\endisadelimnoproof
wenzelm@30066
  1099
%
wenzelm@30066
  1100
\isatagnoproof
wenzelm@30066
  1101
\isacommand{sorry}\isamarkupfalse%
wenzelm@30066
  1102
%
wenzelm@30066
  1103
\endisatagnoproof
wenzelm@30066
  1104
{\isafoldnoproof}%
wenzelm@30066
  1105
%
wenzelm@30066
  1106
\isadelimnoproof
wenzelm@30066
  1107
\isanewline
wenzelm@30066
  1108
%
wenzelm@30066
  1109
\endisadelimnoproof
wenzelm@30066
  1110
%
wenzelm@30066
  1111
\isadelimproof
wenzelm@30066
  1112
\ \ %
wenzelm@30066
  1113
\endisadelimproof
wenzelm@30066
  1114
%
wenzelm@30066
  1115
\isatagproof
wenzelm@30066
  1116
\isacommand{then}\isamarkupfalse%
wenzelm@30066
  1117
\ \isacommand{obtain}\isamarkupfalse%
wenzelm@40685
  1118
\ A\ \isakeyword{and}\ B\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30066
  1119
%
wenzelm@30066
  1120
\end{minipage}\\[3ex]\begin{minipage}[t]{0.4\textwidth}
wenzelm@30066
  1121
\isanewline
wenzelm@30066
  1122
\ \ \isacommand{have}\isamarkupfalse%
wenzelm@40685
  1123
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C626F74746F6D3E}{\isasymbottom}}{\isaliteral{22}{\isachardoublequoteclose}}%
wenzelm@30066
  1124
\endisatagproof
wenzelm@30066
  1125
{\isafoldproof}%
wenzelm@30066
  1126
%
wenzelm@30066
  1127
\isadelimproof
wenzelm@30066
  1128
%
wenzelm@30066
  1129
\endisadelimproof
wenzelm@30066
  1130
%
wenzelm@30066
  1131
\isadelimnoproof
wenzelm@30066
  1132
\ %
wenzelm@30066
  1133
\endisadelimnoproof
wenzelm@30066
  1134
%
wenzelm@30066
  1135
\isatagnoproof
wenzelm@30066
  1136
\isacommand{sorry}\isamarkupfalse%
wenzelm@30066
  1137
%
wenzelm@30066
  1138
\endisatagnoproof
wenzelm@30066
  1139
{\isafoldnoproof}%
wenzelm@30066
  1140
%
wenzelm@30066
  1141
\isadelimnoproof
wenzelm@30066
  1142
\isanewline
wenzelm@30066
  1143
%
wenzelm@30066
  1144
\endisadelimnoproof
wenzelm@30066
  1145
%
wenzelm@30066
  1146
\isadelimproof
wenzelm@30066
  1147
\ \ %
wenzelm@30066
  1148
\endisadelimproof
wenzelm@30066
  1149
%
wenzelm@30066
  1150
\isatagproof
wenzelm@30066
  1151
\isacommand{then}\isamarkupfalse%
wenzelm@30066
  1152
\ \isacommand{have}\isamarkupfalse%
wenzelm@40685
  1153
\ A\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30066
  1154
%
wenzelm@30066
  1155
\end{minipage}\qquad\begin{minipage}[t]{0.4\textwidth}
wenzelm@30066
  1156
\isanewline
wenzelm@30066
  1157
\ \ \isacommand{have}\isamarkupfalse%
wenzelm@40685
  1158
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C746F703E}{\isasymtop}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30066
  1159
%
wenzelm@30066
  1160
\end{minipage}\\[3ex]\begin{minipage}[t]{0.4\textwidth}
wenzelm@30066
  1161
\isanewline
wenzelm@30066
  1162
\ \ \isacommand{have}\isamarkupfalse%
wenzelm@40685
  1163
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6E6F743E}{\isasymnot}}\ A{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@30066
  1164
\ \ \isacommand{proof}\isamarkupfalse%
wenzelm@30066
  1165
\isanewline
wenzelm@30066
  1166
\ \ \ \ \isacommand{assume}\isamarkupfalse%
wenzelm@30066
  1167
\ A\isanewline
wenzelm@30066
  1168
\ \ \ \ \isacommand{then}\isamarkupfalse%
wenzelm@30066
  1169
\ \isacommand{show}\isamarkupfalse%
wenzelm@40685
  1170
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C626F74746F6D3E}{\isasymbottom}}{\isaliteral{22}{\isachardoublequoteclose}}%
wenzelm@30066
  1171
\endisatagproof
wenzelm@30066
  1172
{\isafoldproof}%
wenzelm@30066
  1173
%
wenzelm@30066
  1174
\isadelimproof
wenzelm@30066
  1175
%
wenzelm@30066
  1176
\endisadelimproof
wenzelm@30066
  1177
%
wenzelm@30066
  1178
\isadelimnoproof
wenzelm@30066
  1179
\ %
wenzelm@30066
  1180
\endisadelimnoproof
wenzelm@30066
  1181
%
wenzelm@30066
  1182
\isatagnoproof
wenzelm@30066
  1183
\isacommand{sorry}\isamarkupfalse%
wenzelm@30066
  1184
%
wenzelm@30066
  1185
\endisatagnoproof
wenzelm@30066
  1186
{\isafoldnoproof}%
wenzelm@30066
  1187
%
wenzelm@30066
  1188
\isadelimnoproof
wenzelm@30066
  1189
\isanewline
wenzelm@30066
  1190
%
wenzelm@30066
  1191
\endisadelimnoproof
wenzelm@30066
  1192
%
wenzelm@30066
  1193
\isadelimproof
wenzelm@30066
  1194
\ \ %
wenzelm@30066
  1195
\endisadelimproof
wenzelm@30066
  1196
%
wenzelm@30066
  1197
\isatagproof
wenzelm@30066
  1198
\isacommand{qed}\isamarkupfalse%
wenzelm@30066
  1199
%
wenzelm@30066
  1200
\end{minipage}\qquad\begin{minipage}[t]{0.4\textwidth}
wenzelm@30066
  1201
\isanewline
wenzelm@30066
  1202
\ \ \isacommand{have}\isamarkupfalse%
wenzelm@40685
  1203
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6E6F743E}{\isasymnot}}\ A{\isaliteral{22}{\isachardoublequoteclose}}\ \isakeyword{and}\ A%
wenzelm@30066
  1204
\endisatagproof
wenzelm@30066
  1205
{\isafoldproof}%
wenzelm@30066
  1206
%
wenzelm@30066
  1207
\isadelimproof
wenzelm@30066
  1208
%
wenzelm@30066
  1209
\endisadelimproof
wenzelm@30066
  1210
%
wenzelm@30066
  1211
\isadelimnoproof
wenzelm@30066
  1212
\ %
wenzelm@30066
  1213
\endisadelimnoproof
wenzelm@30066
  1214
%
wenzelm@30066
  1215
\isatagnoproof
wenzelm@30066
  1216
\isacommand{sorry}\isamarkupfalse%
wenzelm@30066
  1217
%
wenzelm@30066
  1218
\endisatagnoproof
wenzelm@30066
  1219
{\isafoldnoproof}%
wenzelm@30066
  1220
%
wenzelm@30066
  1221
\isadelimnoproof
wenzelm@30066
  1222
\isanewline
wenzelm@30066
  1223
%
wenzelm@30066
  1224
\endisadelimnoproof
wenzelm@30066
  1225
%
wenzelm@30066
  1226
\isadelimproof
wenzelm@30066
  1227
\ \ %
wenzelm@30066
  1228
\endisadelimproof
wenzelm@30066
  1229
%
wenzelm@30066
  1230
\isatagproof
wenzelm@30066
  1231
\isacommand{then}\isamarkupfalse%
wenzelm@30066
  1232
\ \isacommand{have}\isamarkupfalse%
wenzelm@40685
  1233
\ B\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30066
  1234
%
wenzelm@30066
  1235
\end{minipage}\\[3ex]\begin{minipage}[t]{0.4\textwidth}
wenzelm@30066
  1236
\isanewline
wenzelm@30066
  1237
\ \ \isacommand{have}\isamarkupfalse%
wenzelm@40685
  1238
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}x{\isaliteral{2E}{\isachardot}}\ B\ x{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@30066
  1239
\ \ \isacommand{proof}\isamarkupfalse%
wenzelm@30066
  1240
\isanewline
wenzelm@30066
  1241
\ \ \ \ \isacommand{fix}\isamarkupfalse%
wenzelm@30066
  1242
\ x\isanewline
wenzelm@30066
  1243
\ \ \ \ \isacommand{show}\isamarkupfalse%
wenzelm@40685
  1244
\ {\isaliteral{22}{\isachardoublequoteopen}}B\ x{\isaliteral{22}{\isachardoublequoteclose}}%
wenzelm@30066
  1245
\endisatagproof
wenzelm@30066
  1246
{\isafoldproof}%
wenzelm@30066
  1247
%
wenzelm@30066
  1248
\isadelimproof
wenzelm@30066
  1249
%
wenzelm@30066
  1250
\endisadelimproof
wenzelm@30066
  1251
%
wenzelm@30066
  1252
\isadelimnoproof
wenzelm@30066
  1253
\ %
wenzelm@30066
  1254
\endisadelimnoproof
wenzelm@30066
  1255
%
wenzelm@30066
  1256
\isatagnoproof
wenzelm@30066
  1257
\isacommand{sorry}\isamarkupfalse%
wenzelm@30066
  1258
%
wenzelm@30066
  1259
\endisatagnoproof
wenzelm@30066
  1260
{\isafoldnoproof}%
wenzelm@30066
  1261
%
wenzelm@30066
  1262
\isadelimnoproof
wenzelm@30066
  1263
\isanewline
wenzelm@30066
  1264
%
wenzelm@30066
  1265
\endisadelimnoproof
wenzelm@30066
  1266
%
wenzelm@30066
  1267
\isadelimproof
wenzelm@30066
  1268
\ \ %
wenzelm@30066
  1269
\endisadelimproof
wenzelm@30066
  1270
%
wenzelm@30066
  1271
\isatagproof
wenzelm@30066
  1272
\isacommand{qed}\isamarkupfalse%
wenzelm@30066
  1273
%
wenzelm@30066
  1274
\end{minipage}\qquad\begin{minipage}[t]{0.4\textwidth}
wenzelm@30066
  1275
\isanewline
wenzelm@30066
  1276
\ \ \isacommand{have}\isamarkupfalse%
wenzelm@40685
  1277
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}x{\isaliteral{2E}{\isachardot}}\ B\ x{\isaliteral{22}{\isachardoublequoteclose}}%
wenzelm@30066
  1278
\endisatagproof
wenzelm@30066
  1279
{\isafoldproof}%
wenzelm@30066
  1280
%
wenzelm@30066
  1281
\isadelimproof
wenzelm@30066
  1282
%
wenzelm@30066
  1283
\endisadelimproof
wenzelm@30066
  1284
%
wenzelm@30066
  1285
\isadelimnoproof
wenzelm@30066
  1286
\ %
wenzelm@30066
  1287
\endisadelimnoproof
wenzelm@30066
  1288
%
wenzelm@30066
  1289
\isatagnoproof
wenzelm@30066
  1290
\isacommand{sorry}\isamarkupfalse%
wenzelm@30066
  1291
%
wenzelm@30066
  1292
\endisatagnoproof
wenzelm@30066
  1293
{\isafoldnoproof}%
wenzelm@30066
  1294
%
wenzelm@30066
  1295
\isadelimnoproof
wenzelm@30066
  1296
\isanewline
wenzelm@30066
  1297
%
wenzelm@30066
  1298
\endisadelimnoproof
wenzelm@30066
  1299
%
wenzelm@30066
  1300
\isadelimproof
wenzelm@30066
  1301
\ \ %
wenzelm@30066
  1302
\endisadelimproof
wenzelm@30066
  1303
%
wenzelm@30066
  1304
\isatagproof
wenzelm@30066
  1305
\isacommand{then}\isamarkupfalse%
wenzelm@30066
  1306
\ \isacommand{have}\isamarkupfalse%
wenzelm@40685
  1307
\ {\isaliteral{22}{\isachardoublequoteopen}}B\ a{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30066
  1308
%
wenzelm@30066
  1309
\end{minipage}\\[3ex]\begin{minipage}[t]{0.4\textwidth}
wenzelm@30066
  1310
\isanewline
wenzelm@30066
  1311
\ \ \isacommand{have}\isamarkupfalse%
wenzelm@40685
  1312
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6578697374733E}{\isasymexists}}x{\isaliteral{2E}{\isachardot}}\ B\ x{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
wenzelm@30066
  1313
\ \ \isacommand{proof}\isamarkupfalse%
wenzelm@30066
  1314
\isanewline
wenzelm@30066
  1315
\ \ \ \ \isacommand{show}\isamarkupfalse%
wenzelm@40685
  1316
\ {\isaliteral{22}{\isachardoublequoteopen}}B\ a{\isaliteral{22}{\isachardoublequoteclose}}%
wenzelm@30066
  1317
\endisatagproof
wenzelm@30066
  1318
{\isafoldproof}%
wenzelm@30066
  1319
%
wenzelm@30066
  1320
\isadelimproof
wenzelm@30066
  1321
%
wenzelm@30066
  1322
\endisadelimproof
wenzelm@30066
  1323
%
wenzelm@30066
  1324
\isadelimnoproof
wenzelm@30066
  1325
\ %
wenzelm@30066
  1326
\endisadelimnoproof
wenzelm@30066
  1327
%
wenzelm@30066
  1328
\isatagnoproof
wenzelm@30066
  1329
\isacommand{sorry}\isamarkupfalse%
wenzelm@30066
  1330
%
wenzelm@30066
  1331
\endisatagnoproof
wenzelm@30066
  1332
{\isafoldnoproof}%
wenzelm@30066
  1333
%
wenzelm@30066
  1334
\isadelimnoproof
wenzelm@30066
  1335
\isanewline
wenzelm@30066
  1336
%
wenzelm@30066
  1337
\endisadelimnoproof
wenzelm@30066
  1338
%
wenzelm@30066
  1339
\isadelimproof
wenzelm@30066
  1340
\ \ %
wenzelm@30066
  1341
\endisadelimproof
wenzelm@30066
  1342
%
wenzelm@30066
  1343
\isatagproof
wenzelm@30066
  1344
\isacommand{qed}\isamarkupfalse%
wenzelm@30066
  1345
%
wenzelm@30066
  1346
\end{minipage}\qquad\begin{minipage}[t]{0.4\textwidth}
wenzelm@30066
  1347
\isanewline
wenzelm@30066
  1348
\ \ \isacommand{have}\isamarkupfalse%
wenzelm@40685
  1349
\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6578697374733E}{\isasymexists}}x{\isaliteral{2E}{\isachardot}}\ B\ x{\isaliteral{22}{\isachardoublequoteclose}}%
wenzelm@30066
  1350
\endisatagproof
wenzelm@30066
  1351
{\isafoldproof}%
wenzelm@30066
  1352
%
wenzelm@30066
  1353
\isadelimproof
wenzelm@30066
  1354
%
wenzelm@30066
  1355
\endisadelimproof
wenzelm@30066
  1356
%
wenzelm@30066
  1357
\isadelimnoproof
wenzelm@30066
  1358
\ %
wenzelm@30066
  1359
\endisadelimnoproof
wenzelm@30066
  1360
%
wenzelm@30066
  1361
\isatagnoproof
wenzelm@30066
  1362
\isacommand{sorry}\isamarkupfalse%
wenzelm@30066
  1363
%
wenzelm@30066
  1364
\endisatagnoproof
wenzelm@30066
  1365
{\isafoldnoproof}%
wenzelm@30066
  1366
%
wenzelm@30066
  1367
\isadelimnoproof
wenzelm@30066
  1368
\isanewline
wenzelm@30066
  1369
%
wenzelm@30066
  1370
\endisadelimnoproof
wenzelm@30066
  1371
%
wenzelm@30066
  1372
\isadelimproof
wenzelm@30066
  1373
\ \ %
wenzelm@30066
  1374
\endisadelimproof
wenzelm@30066
  1375
%
wenzelm@30066
  1376
\isatagproof
wenzelm@30066
  1377
\isacommand{then}\isamarkupfalse%
wenzelm@30066
  1378
\ \isacommand{obtain}\isamarkupfalse%
wenzelm@40685
  1379
\ a\ \isakeyword{where}\ {\isaliteral{22}{\isachardoublequoteopen}}B\ a{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
wenzelm@30066
  1380
%
wenzelm@30066
  1381
\end{minipage}
wenzelm@30066
  1382
%
wenzelm@30066
  1383
\endisatagproof
wenzelm@30066
  1384
{\isafoldproof}%
wenzelm@30066
  1385
%
wenzelm@30066
  1386
\isadelimproof
wenzelm@30066
  1387
%
wenzelm@30066
  1388
\endisadelimproof
wenzelm@30066
  1389
%
wenzelm@30066
  1390
\begin{isamarkuptext}%
wenzelm@30066
  1391
\bigskip\noindent Of course, these proofs are merely examples.  As
wenzelm@30066
  1392
  sketched in \secref{sec:framework-subproof}, there is a fair amount
wenzelm@30066
  1393
  of flexibility in expressing Pure deductions in Isar.  Here the user
wenzelm@30066
  1394
  is asked to express himself adequately, aiming at proof texts of
wenzelm@30066
  1395
  literary quality.%
wenzelm@30066
  1396
\end{isamarkuptext}%
wenzelm@30066
  1397
\isamarkuptrue%
wenzelm@30066
  1398
%
wenzelm@30057
  1399
\isadelimvisible
wenzelm@30057
  1400
%
wenzelm@30057
  1401
\endisadelimvisible
wenzelm@30057
  1402
%
wenzelm@30057
  1403
\isatagvisible
wenzelm@30057
  1404
\isacommand{end}\isamarkupfalse%
wenzelm@30057
  1405
%
wenzelm@30057
  1406
\endisatagvisible
wenzelm@30057
  1407
{\isafoldvisible}%
wenzelm@30057
  1408
%
wenzelm@30057
  1409
\isadelimvisible
wenzelm@30057
  1410
%
wenzelm@30057
  1411
\endisadelimvisible
wenzelm@30066
  1412
\isanewline
wenzelm@30057
  1413
\end{isabellebody}%
wenzelm@30057
  1414
%%% Local Variables:
wenzelm@30057
  1415
%%% mode: latex
wenzelm@30057
  1416
%%% TeX-master: "root"
wenzelm@30057
  1417
%%% End: