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