doc-src/IsarRef/Thy/document/First_Order_Logic.tex
author wenzelm
Thu, 12 Feb 2009 11:19:54 +0100
changeset 29731 efcbbd7baa02
child 29740 6f8f94ccaaaf
permissions -rw-r--r--
updated generated files;
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}%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
    26
In order to commence a new object-logic within Isabelle/Pure we
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
    27
  introduce abstract syntactic categories \isa{{\isachardoublequote}i{\isachardoublequote}} for individuals
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
    28
  and \isa{{\isachardoublequote}o{\isachardoublequote}} for object-propositions.  The latter is embedded
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
    29
  into the language of Pure propositions by means of a separate
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
    30
  judgment.%
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}%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   301
Reasoning from basic axioms is often tedious.  Our proofs work by
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   302
  producing various instances of the given rules (potentially the
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   303
  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
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
efcbbd7baa02 updated generated files;
wenzelm
parents:
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\ add{\isacharcolon}\ left{\isacharunderscore}inv{\isacharparenright}{\isachardoublequote}}'' etc.%
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
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   362
\isamarkupsubsection{Propositional logic%
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
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   369
  after Gentzen's natural deduction \cite{Gentzen:1935}.%
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
\ \ disjE\ {\isacharbrackleft}elim{\isacharbrackright}{\isacharcolon}\ {\isachardoublequoteopen}A\ {\isasymor}\ B\ {\isasymLongrightarrow}\ {\isacharparenleft}A\ {\isasymLongrightarrow}\ C{\isacharparenright}\ {\isasymLongrightarrow}\ {\isacharparenleft}B\ {\isasymLongrightarrow}\ C{\isacharparenright}\ {\isasymLongrightarrow}\ C{\isachardoublequoteclose}\ \isakeyword{and}\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   382
\ \ disjI\isactrlisub {\isadigit{1}}\ {\isacharbrackleft}intro{\isacharbrackright}{\isacharcolon}\ {\isachardoublequoteopen}A\ {\isasymLongrightarrow}\ A\ {\isasymor}\ B{\isachardoublequoteclose}\ \isakeyword{and}\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   383
\ \ disjI\isactrlisub {\isadigit{2}}\ {\isacharbrackleft}intro{\isacharbrackright}{\isacharcolon}\ {\isachardoublequoteopen}B\ {\isasymLongrightarrow}\ A\ {\isasymor}\ B{\isachardoublequoteclose}\isanewline
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
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   389
\ \ conjD\isactrlisub {\isadigit{1}}\ {\isacharbrackleft}dest{\isacharbrackright}{\isacharcolon}\ {\isachardoublequoteopen}A\ {\isasymand}\ B\ {\isasymLongrightarrow}\ A{\isachardoublequoteclose}\ \isakeyword{and}\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   390
\ \ conjD\isactrlisub {\isadigit{2}}\ {\isacharbrackleft}dest{\isacharbrackright}{\isacharcolon}\ {\isachardoublequoteopen}A\ {\isasymand}\ B\ {\isasymLongrightarrow}\ B{\isachardoublequoteclose}%
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%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   413
\ A\ \isacommand{{\isachardot}{\isachardot}}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   414
\isanewline
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%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   417
\ B\ \isacommand{{\isachardot}{\isachardot}}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   418
\isanewline
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}%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   457
Note that the analogous elimination for disjunction ``\isa{{\isachardoublequote}{\isasymASSUMES}\ A\ {\isasymor}\ B\ {\isasymOBTAINS}\ A\ {\isasymBBAR}\ B{\isachardoublequote}}'' coincides with the
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   458
  original axiomatization of \isa{{\isachardoublequote}disjE{\isachardoublequote}}.
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   459
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   460
  \medskip We continue propositional logic by introducing absurdity
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   461
  with its characteristic elimination.  Plain truth may then be
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   462
  defined as a proposition that is trivially true.%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   463
\end{isamarkuptext}%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   464
\isamarkuptrue%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   465
\isacommand{axiomatization}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   466
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   467
\ \ false\ {\isacharcolon}{\isacharcolon}\ o\ \ {\isacharparenleft}{\isachardoublequoteopen}{\isasymbottom}{\isachardoublequoteclose}{\isacharparenright}\ \isakeyword{where}\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   468
\ \ falseE\ {\isacharbrackleft}elim{\isacharbrackright}{\isacharcolon}\ {\isachardoublequoteopen}{\isasymbottom}\ {\isasymLongrightarrow}\ A{\isachardoublequoteclose}\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   469
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   470
\isacommand{definition}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   471
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   472
\ \ true\ {\isacharcolon}{\isacharcolon}\ o\ \ {\isacharparenleft}{\isachardoublequoteopen}{\isasymtop}{\isachardoublequoteclose}{\isacharparenright}\ \isakeyword{where}\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   473
\ \ {\isachardoublequoteopen}{\isasymtop}\ {\isasymequiv}\ {\isasymbottom}\ {\isasymlongrightarrow}\ {\isasymbottom}{\isachardoublequoteclose}\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   474
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   475
\isacommand{theorem}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   476
\ trueI\ {\isacharbrackleft}intro{\isacharbrackright}{\isacharcolon}\ {\isasymtop}\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   477
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   478
\isadelimproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   479
\ \ %
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   480
\endisadelimproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   481
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   482
\isatagproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   483
\isacommand{unfolding}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   484
\ true{\isacharunderscore}def\ \isacommand{{\isachardot}{\isachardot}}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   485
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   486
\endisatagproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   487
{\isafoldproof}%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   488
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   489
\isadelimproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   490
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   491
\endisadelimproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   492
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   493
\begin{isamarkuptext}%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   494
\medskip Now negation represents an implication towards absurdity:%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   495
\end{isamarkuptext}%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   496
\isamarkuptrue%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   497
\isacommand{definition}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   498
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   499
\ \ 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
   500
\ \ {\isachardoublequoteopen}{\isasymnot}\ A\ {\isasymequiv}\ A\ {\isasymlongrightarrow}\ {\isasymbottom}{\isachardoublequoteclose}\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   501
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   502
\isacommand{theorem}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   503
\ notI\ {\isacharbrackleft}intro{\isacharbrackright}{\isacharcolon}\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   504
\ \ \isakeyword{assumes}\ {\isachardoublequoteopen}A\ {\isasymLongrightarrow}\ {\isasymbottom}{\isachardoublequoteclose}\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   505
\ \ \isakeyword{shows}\ {\isachardoublequoteopen}{\isasymnot}\ A{\isachardoublequoteclose}\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   506
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   507
\isadelimproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   508
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   509
\endisadelimproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   510
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   511
\isatagproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   512
\isacommand{unfolding}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   513
\ not{\isacharunderscore}def\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   514
\isacommand{proof}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   515
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   516
\ \ \isacommand{assume}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   517
\ A\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   518
\ \ \isacommand{then}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   519
\ \isacommand{show}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   520
\ {\isasymbottom}\ \isacommand{by}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   521
\ {\isacharparenleft}rule\ {\isacharbackquoteopen}A\ {\isasymLongrightarrow}\ {\isasymbottom}{\isacharbackquoteclose}{\isacharparenright}\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   522
\isacommand{qed}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   523
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   524
\endisatagproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   525
{\isafoldproof}%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   526
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   527
\isadelimproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   528
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   529
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   530
\endisadelimproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   531
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   532
\isacommand{theorem}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   533
\ notE\ {\isacharbrackleft}elim{\isacharbrackright}{\isacharcolon}\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   534
\ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymnot}\ A{\isachardoublequoteclose}\ \isakeyword{and}\ A\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   535
\ \ \isakeyword{shows}\ B\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   536
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   537
\isadelimproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   538
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   539
\endisadelimproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   540
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   541
\isatagproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   542
\isacommand{proof}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   543
\ {\isacharminus}\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   544
\ \ \isacommand{from}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   545
\ {\isacharbackquoteopen}{\isasymnot}\ A{\isacharbackquoteclose}\ \isacommand{have}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   546
\ {\isachardoublequoteopen}A\ {\isasymlongrightarrow}\ {\isasymbottom}{\isachardoublequoteclose}\ \isacommand{unfolding}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   547
\ not{\isacharunderscore}def\ \isacommand{{\isachardot}}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   548
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   549
\ \ \isacommand{from}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   550
\ {\isacharbackquoteopen}A\ {\isasymlongrightarrow}\ {\isasymbottom}{\isacharbackquoteclose}\ \isakeyword{and}\ {\isacharbackquoteopen}A{\isacharbackquoteclose}\ \isacommand{have}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   551
\ {\isasymbottom}\ \isacommand{{\isachardot}{\isachardot}}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   552
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   553
\ \ \isacommand{then}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   554
\ \isacommand{show}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   555
\ B\ \isacommand{{\isachardot}{\isachardot}}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   556
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   557
\isacommand{qed}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   558
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   559
\endisatagproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   560
{\isafoldproof}%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   561
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   562
\isadelimproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   563
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   564
\endisadelimproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   565
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   566
\isamarkupsubsection{Classical logic%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   567
}
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   568
\isamarkuptrue%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   569
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   570
\begin{isamarkuptext}%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   571
Subsequently we state the principle of classical contradiction as a
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   572
  local assumption.  Thus we refrain from forcing the object-logic
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   573
  into the classical perspective.  Within that context, we may derive
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   574
  well-known consequences of the classical principle.%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   575
\end{isamarkuptext}%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   576
\isamarkuptrue%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   577
\isacommand{locale}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   578
\ classical\ {\isacharequal}\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   579
\ \ \isakeyword{assumes}\ classical{\isacharcolon}\ {\isachardoublequoteopen}{\isacharparenleft}{\isasymnot}\ C\ {\isasymLongrightarrow}\ C{\isacharparenright}\ {\isasymLongrightarrow}\ C{\isachardoublequoteclose}\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   580
\isakeyword{begin}\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   581
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   582
\isacommand{theorem}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   583
\ double{\isacharunderscore}negation{\isacharcolon}\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   584
\ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymnot}\ {\isasymnot}\ C{\isachardoublequoteclose}\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   585
\ \ \isakeyword{shows}\ C\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   586
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   587
\isadelimproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   588
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   589
\endisadelimproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   590
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   591
\isatagproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   592
\isacommand{proof}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   593
\ {\isacharparenleft}rule\ classical{\isacharparenright}\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   594
\ \ \isacommand{assume}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   595
\ {\isachardoublequoteopen}{\isasymnot}\ C{\isachardoublequoteclose}\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   596
\ \ \isacommand{with}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   597
\ {\isacharbackquoteopen}{\isasymnot}\ {\isasymnot}\ C{\isacharbackquoteclose}\ \isacommand{show}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   598
\ C\ \isacommand{{\isachardot}{\isachardot}}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   599
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   600
\isacommand{qed}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   601
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   602
\endisatagproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   603
{\isafoldproof}%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   604
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   605
\isadelimproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   606
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   607
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   608
\endisadelimproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   609
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   610
\isacommand{theorem}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   611
\ tertium{\isacharunderscore}non{\isacharunderscore}datur{\isacharcolon}\ {\isachardoublequoteopen}C\ {\isasymor}\ {\isasymnot}\ C{\isachardoublequoteclose}\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   612
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   613
\isadelimproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   614
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   615
\endisadelimproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   616
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   617
\isatagproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   618
\isacommand{proof}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   619
\ {\isacharparenleft}rule\ double{\isacharunderscore}negation{\isacharparenright}\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   620
\ \ \isacommand{show}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   621
\ {\isachardoublequoteopen}{\isasymnot}\ {\isasymnot}\ {\isacharparenleft}C\ {\isasymor}\ {\isasymnot}\ C{\isacharparenright}{\isachardoublequoteclose}\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   622
\ \ \isacommand{proof}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   623
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   624
\ \ \ \ \isacommand{assume}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   625
\ {\isachardoublequoteopen}{\isasymnot}\ {\isacharparenleft}C\ {\isasymor}\ {\isasymnot}\ C{\isacharparenright}{\isachardoublequoteclose}\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   626
\ \ \ \ \isacommand{have}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   627
\ {\isachardoublequoteopen}{\isasymnot}\ C{\isachardoublequoteclose}\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   628
\ \ \ \ \isacommand{proof}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   629
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   630
\ \ \ \ \ \ \isacommand{assume}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   631
\ C\ \isacommand{then}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   632
\ \isacommand{have}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   633
\ {\isachardoublequoteopen}C\ {\isasymor}\ {\isasymnot}\ C{\isachardoublequoteclose}\ \isacommand{{\isachardot}{\isachardot}}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   634
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   635
\ \ \ \ \ \ \isacommand{with}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   636
\ {\isacharbackquoteopen}{\isasymnot}\ {\isacharparenleft}C\ {\isasymor}\ {\isasymnot}\ C{\isacharparenright}{\isacharbackquoteclose}\ \isacommand{show}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   637
\ {\isasymbottom}\ \isacommand{{\isachardot}{\isachardot}}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   638
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   639
\ \ \ \ \isacommand{qed}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   640
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   641
\ \ \ \ \isacommand{then}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   642
\ \isacommand{have}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   643
\ {\isachardoublequoteopen}C\ {\isasymor}\ {\isasymnot}\ C{\isachardoublequoteclose}\ \isacommand{{\isachardot}{\isachardot}}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   644
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   645
\ \ \ \ \isacommand{with}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   646
\ {\isacharbackquoteopen}{\isasymnot}\ {\isacharparenleft}C\ {\isasymor}\ {\isasymnot}\ C{\isacharparenright}{\isacharbackquoteclose}\ \isacommand{show}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   647
\ {\isasymbottom}\ \isacommand{{\isachardot}{\isachardot}}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   648
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   649
\ \ \isacommand{qed}\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
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   653
\endisatagproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   654
{\isafoldproof}%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   655
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   656
\isadelimproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   657
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   658
\endisadelimproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   659
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   660
\begin{isamarkuptext}%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   661
These examples illustrate both classical reasoning and non-trivial
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   662
  propositional proofs in general.  All three rules characterize
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   663
  classical logic independently, but the original rule is already the
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   664
  most convenient to use, because it leaves the conclusion unchanged.
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   665
  Note that \isa{{\isachardoublequote}{\isacharparenleft}{\isasymnot}\ C\ {\isasymLongrightarrow}\ C{\isacharparenright}\ {\isasymLongrightarrow}\ C{\isachardoublequote}} fits again into our format for
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   666
  eliminations, despite the additional twist that the context refers
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   667
  to the main conclusion.  So we may write \isa{{\isachardoublequote}classical{\isachardoublequote}} as the
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   668
  Isar statement ``\isa{{\isachardoublequote}{\isasymOBTAINS}\ {\isasymnot}\ thesis{\isachardoublequote}}''.  This also
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   669
  explains nicely how classical reasoning really works: whatever the
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   670
  main \isa{thesis} might be, we may always assume its negation!%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   671
\end{isamarkuptext}%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   672
\isamarkuptrue%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   673
\isacommand{end}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   674
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   675
\isamarkupsubsection{Quantifiers%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   676
}
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   677
\isamarkuptrue%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   678
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   679
\begin{isamarkuptext}%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   680
Representing quantifiers is easy, thanks to the higher-order nature
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   681
  of the underlying framework.  According to the well-known technique
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   682
  introduced by Church \cite{church40}, quantifiers are operators on
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   683
  predicates, which are syntactically represented as \isa{{\isachardoublequote}{\isasymlambda}{\isachardoublequote}}-terms
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   684
  of type \isa{{\isachardoublequote}i\ {\isasymRightarrow}\ o{\isachardoublequote}}.  Specific binder notation relates \isa{{\isachardoublequote}All\ {\isacharparenleft}{\isasymlambda}x{\isachardot}\ B\ x{\isacharparenright}{\isachardoublequote}} to \isa{{\isachardoublequote}{\isasymforall}x{\isachardot}\ B\ x{\isachardoublequote}} etc.%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   685
\end{isamarkuptext}%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   686
\isamarkuptrue%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   687
\isacommand{axiomatization}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   688
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   689
\ \ 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
   690
\ \ 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
   691
\ \ 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
   692
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   693
\isacommand{axiomatization}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   694
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   695
\ \ 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
   696
\ \ 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
   697
\ \ 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
   698
\begin{isamarkuptext}%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   699
\noindent The \isa{exE} rule corresponds to an Isar statement
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   700
  ``\isa{{\isachardoublequote}{\isasymASSUMES}\ {\isasymexists}x{\isachardot}\ B\ x\ {\isasymOBTAINS}\ x\ {\isasymWHERE}\ B\ x{\isachardoublequote}}''.  In the
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   701
  following example we illustrate quantifier reasoning with all four
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   702
  rules:%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   703
\end{isamarkuptext}%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   704
\isamarkuptrue%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   705
\isacommand{theorem}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   706
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   707
\ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymexists}x{\isachardot}\ {\isasymforall}y{\isachardot}\ R\ x\ y{\isachardoublequoteclose}\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   708
\ \ \isakeyword{shows}\ {\isachardoublequoteopen}{\isasymforall}y{\isachardot}\ {\isasymexists}x{\isachardot}\ R\ x\ y{\isachardoublequoteclose}\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   709
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   710
\isadelimproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   711
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   712
\endisadelimproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   713
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   714
\isatagproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   715
\isacommand{proof}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   716
\ \ \ \ %
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   717
\isamarkupcmt{\isa{{\isachardoublequote}{\isasymforall}{\isachardoublequote}} introduction%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   718
}
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   719
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   720
\ \ \isacommand{obtain}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   721
\ x\ \isakeyword{where}\ {\isachardoublequoteopen}{\isasymforall}y{\isachardot}\ R\ x\ y{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   722
\ {\isacharbackquoteopen}{\isasymexists}x{\isachardot}\ {\isasymforall}y{\isachardot}\ R\ x\ y{\isacharbackquoteclose}\ \isacommand{{\isachardot}{\isachardot}}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   723
\ \ \ \ %
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   724
\isamarkupcmt{\isa{{\isachardoublequote}{\isasymexists}{\isachardoublequote}} elimination%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   725
}
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   726
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   727
\ \ \isacommand{fix}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   728
\ y\ \isacommand{have}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   729
\ {\isachardoublequoteopen}R\ x\ y{\isachardoublequoteclose}\ \isacommand{using}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   730
\ {\isacharbackquoteopen}{\isasymforall}y{\isachardot}\ R\ x\ y{\isacharbackquoteclose}\ \isacommand{{\isachardot}{\isachardot}}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   731
\ \ \ \ %
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   732
\isamarkupcmt{\isa{{\isachardoublequote}{\isasymforall}{\isachardoublequote}} destruction%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   733
}
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   734
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   735
\ \ \isacommand{then}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   736
\ \isacommand{show}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   737
\ {\isachardoublequoteopen}{\isasymexists}x{\isachardot}\ R\ x\ y{\isachardoublequoteclose}\ \isacommand{{\isachardot}{\isachardot}}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   738
\ \ \ \ %
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   739
\isamarkupcmt{\isa{{\isachardoublequote}{\isasymexists}{\isachardoublequote}} introduction%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   740
}
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   741
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   742
\isacommand{qed}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   743
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   744
\endisatagproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   745
{\isafoldproof}%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   746
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   747
\isadelimproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   748
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   749
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   750
\endisadelimproof
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   751
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   752
\isadelimvisible
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   753
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   754
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   755
\endisadelimvisible
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   756
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   757
\isatagvisible
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   758
\isacommand{end}\isamarkupfalse%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   759
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   760
\endisatagvisible
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   761
{\isafoldvisible}%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   762
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   763
\isadelimvisible
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   764
\isanewline
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   765
%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   766
\endisadelimvisible
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   767
\end{isabellebody}%
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   768
%%% Local Variables:
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   769
%%% mode: latex
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   770
%%% TeX-master: "root"
efcbbd7baa02 updated generated files;
wenzelm
parents:
diff changeset
   771
%%% End: