doc-src/IsarTut/generated/Tutorial.tex
author paulson
Tue, 13 Jan 2004 10:37:52 +0100
changeset 14354 988aa4648597
parent 13228 52df43782fab
permissions -rw-r--r--
types complex and hcomplex are now instances of class ringpower: omitting redundant lemmas
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
13202
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
     1
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
     2
\begin{isabellebody}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
     3
\def\isabellecontext{Tutorial}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
     4
\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
     5
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
     6
\isamarkupchapter{Introduction%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
     7
}
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
     8
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
     9
%
13228
52df43782fab updated;
wenzelm
parents: 13202
diff changeset
    10
\isamarkupchapter{Technical issues%
52df43782fab updated;
wenzelm
parents: 13202
diff changeset
    11
}
52df43782fab updated;
wenzelm
parents: 13202
diff changeset
    12
\isamarkuptrue%
52df43782fab updated;
wenzelm
parents: 13202
diff changeset
    13
%
52df43782fab updated;
wenzelm
parents: 13202
diff changeset
    14
\isamarkupsection{Source texts%
52df43782fab updated;
wenzelm
parents: 13202
diff changeset
    15
}
52df43782fab updated;
wenzelm
parents: 13202
diff changeset
    16
\isamarkuptrue%
52df43782fab updated;
wenzelm
parents: 13202
diff changeset
    17
%
52df43782fab updated;
wenzelm
parents: 13202
diff changeset
    18
\isamarkupsection{Interaction and debugging%
13202
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    19
}
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    20
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    21
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    22
\isamarkupchapter{Calculational reasoning%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    23
}
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    24
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    25
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    26
\isamarkupchapter{Proof by cases and induction%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    27
}
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    28
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    29
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    30
\isamarkupchapter{General natural deduction%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    31
}
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    32
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    33
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    34
\isamarkupchapter{Example: FIXME%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    35
}
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    36
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    37
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    38
\isamarkupchapter{FIXME%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    39
}
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    40
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    41
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    42
\isamarkupsection{Formal document preparation%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    43
}
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    44
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    45
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    46
\isamarkupsubsection{Example%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    47
}
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    48
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    49
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    50
\begin{isamarkuptext}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    51
See this very document itself.%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    52
\end{isamarkuptext}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    53
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    54
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    55
\isamarkupsubsection{Getting started%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    56
}
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    57
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    58
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    59
\begin{isamarkuptext}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    60
\verb"isatool mkdir Test && isatool make"%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    61
\end{isamarkuptext}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    62
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    63
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    64
\isamarkupsection{Human-readable proof composition in Isar%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    65
}
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    66
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    67
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    68
\isamarkupsubsection{Getting started%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    69
}
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    70
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    71
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    72
\begin{isamarkuptext}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    73
Claim a trivial goal in order to enter proof mode \isa{{\isasymdots}}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    74
\end{isamarkuptext}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    75
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    76
\isacommand{lemma}\ True\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    77
\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    78
\isacommand{proof}\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    79
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    80
\begin{isamarkuptxt}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    81
After the canonical initial refinement step we are left
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    82
    within an \emph{proof body}.%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    83
\end{isamarkuptxt}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    84
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    85
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    86
\begin{isamarkuptxt}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    87
Here we may augment the present local {proof context} as we
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    88
    please.%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    89
\end{isamarkuptxt}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    90
\ \ \isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    91
\isacommand{fix}\ something\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    92
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    93
\isacommand{assume}\ a{\isacharcolon}\ {\isachardoublequote}anything\ something{\isachardoublequote}\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    94
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    95
\begin{isamarkuptxt}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    96
Note that the present configuration may be inspected by
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    97
  several \emph{diagnostic commands}.%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    98
\end{isamarkuptxt}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
    99
\ \ \isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   100
\isacommand{term}\ something\ \ %
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   101
\isamarkupcmt{\isa{something{\isasymColon}{\isacharprime}a}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   102
}
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   103
\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   104
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   105
\isacommand{term}\ anything\ \ %
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   106
\isamarkupcmt{\isa{anything{\isasymColon}{\isacharprime}a\ {\isasymRightarrow}\ bool}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   107
}
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   108
\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   109
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   110
\isacommand{thm}\ a\ \ %
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   111
\isamarkupcmt{\isa{anything\ something}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   112
}
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   113
\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   114
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   115
\begin{isamarkuptxt}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   116
We may state local (auxiliary) results as well.%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   117
\end{isamarkuptxt}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   118
\ \ \isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   119
\isacommand{have}\ True\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   120
\isacommand{proof}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   121
\isacommand{qed}\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   122
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   123
\begin{isamarkuptxt}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   124
We are now satisfied.%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   125
\end{isamarkuptxt}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   126
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   127
\isacommand{qed}\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   128
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   129
\isamarkupsubsection{Calculational Reasoning%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   130
}
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   131
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   132
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   133
\begin{isamarkuptext}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   134
Isar is mainly about Natural Deduction, but Calculational Reasoning
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   135
  turns out as a simplified instance of that, so we demonstrate it
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   136
  first.%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   137
\end{isamarkuptext}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   138
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   139
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   140
\isamarkupsubsubsection{Transitive chains%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   141
}
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   142
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   143
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   144
\begin{isamarkuptext}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   145
Technique: establish a chain of local facts, separated by \cmd{also}
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   146
  and terminated by \cmd{finally}; another goal has to follow to point
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   147
  out the final result.%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   148
\end{isamarkuptext}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   149
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   150
\isacommand{lemma}\ {\isachardoublequote}x{\isadigit{1}}\ {\isacharequal}\ x{\isadigit{4}}{\isachardoublequote}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   151
\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   152
\isacommand{proof}\ {\isacharminus}\ \ %
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   153
\isamarkupcmt{do nothing yet%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   154
}
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   155
\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   156
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   157
\isacommand{have}\ {\isachardoublequote}x{\isadigit{1}}\ {\isacharequal}\ x{\isadigit{2}}{\isachardoublequote}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   158
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   159
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   160
\isacommand{also}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   161
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   162
\isacommand{have}\ {\isachardoublequote}x{\isadigit{2}}\ {\isacharequal}\ x{\isadigit{3}}{\isachardoublequote}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   163
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   164
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   165
\isacommand{also}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   166
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   167
\isacommand{have}\ {\isachardoublequote}x{\isadigit{3}}\ {\isacharequal}\ x{\isadigit{4}}{\isachardoublequote}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   168
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   169
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   170
\isacommand{finally}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   171
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   172
\isacommand{show}\ {\isachardoublequote}x{\isadigit{1}}\ {\isacharequal}\ x{\isadigit{4}}{\isachardoublequote}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   173
\isacommand{{\isachardot}}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   174
\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   175
\isacommand{qed}\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   176
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   177
\begin{isamarkuptext}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   178
This may be written more succinctly, using the special term binds
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   179
  ``\isa{{\isasymdots}}'' (for the right-hand side of the last statement) and
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   180
  ``\isa{{\isacharquery}thesis}'' (for the original claim at the head of the
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   181
  proof).%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   182
\end{isamarkuptext}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   183
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   184
\isacommand{lemma}\ {\isachardoublequote}x{\isadigit{1}}\ {\isacharequal}\ x{\isadigit{4}}{\isachardoublequote}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   185
\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   186
\isacommand{proof}\ {\isacharminus}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   187
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   188
\isacommand{have}\ {\isachardoublequote}x{\isadigit{1}}\ {\isacharequal}\ x{\isadigit{2}}{\isachardoublequote}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   189
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   190
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   191
\isacommand{also}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   192
\isacommand{have}\ {\isachardoublequote}{\isasymdots}\ {\isacharequal}\ x{\isadigit{3}}{\isachardoublequote}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   193
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   194
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   195
\isacommand{also}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   196
\isacommand{have}\ {\isachardoublequote}{\isasymdots}\ {\isacharequal}\ x{\isadigit{4}}{\isachardoublequote}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   197
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   198
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   199
\isacommand{finally}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   200
\isacommand{show}\ {\isacharquery}thesis\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   201
\isacommand{{\isachardot}}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   202
\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   203
\isacommand{qed}\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   204
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   205
\begin{isamarkuptext}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   206
The (implicit) forward-chaining steps involved in \cmd{also} and
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   207
  \cmd{finally} are declared in the current context.  The main library
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   208
  of Isabelle/HOL already knows about (mixed) transitivities of \isa{{\isacharequal}}, \isa{{\isacharless}}, \isa{{\isasymle}} etc.%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   209
\end{isamarkuptext}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   210
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   211
\isacommand{lemma}\ {\isachardoublequote}{\isacharparenleft}x{\isadigit{1}}{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ {\isacharless}\ x{\isadigit{6}}{\isachardoublequote}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   212
\ \ %
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   213
\isamarkupcmt{restriction to type \isa{nat} ensures that \isa{{\isacharless}} is really transitive%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   214
}
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   215
\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   216
\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   217
\isacommand{proof}\ {\isacharminus}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   218
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   219
\isacommand{have}\ {\isachardoublequote}x{\isadigit{1}}\ {\isacharless}\ x{\isadigit{2}}{\isachardoublequote}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   220
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   221
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   222
\isacommand{also}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   223
\isacommand{have}\ {\isachardoublequote}{\isasymdots}\ {\isasymle}\ x{\isadigit{3}}{\isachardoublequote}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   224
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   225
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   226
\isacommand{also}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   227
\isacommand{have}\ {\isachardoublequote}{\isasymdots}\ {\isacharequal}\ x{\isadigit{4}}{\isachardoublequote}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   228
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   229
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   230
\isacommand{also}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   231
\isacommand{have}\ {\isachardoublequote}{\isasymdots}\ {\isacharless}\ x{\isadigit{5}}{\isachardoublequote}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   232
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   233
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   234
\isacommand{also}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   235
\isacommand{have}\ {\isachardoublequote}{\isasymdots}\ {\isacharequal}\ x{\isadigit{6}}{\isachardoublequote}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   236
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   237
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   238
\isacommand{finally}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   239
\isacommand{show}\ {\isacharquery}thesis\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   240
\isacommand{{\isachardot}}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   241
\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   242
\isacommand{qed}\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   243
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   244
\begin{isamarkuptext}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   245
We may also calculate on propositions.%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   246
\end{isamarkuptext}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   247
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   248
\isacommand{lemma}\ True\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   249
\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   250
\isacommand{proof}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   251
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   252
\isacommand{have}\ {\isachardoublequote}A\ {\isasymlongrightarrow}\ B\ {\isasymlongrightarrow}\ C{\isachardoublequote}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   253
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   254
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   255
\isacommand{also}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   256
\isacommand{have}\ A\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   257
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   258
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   259
\isacommand{also}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   260
\isacommand{have}\ B\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   261
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   262
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   263
\isacommand{finally}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   264
\isacommand{have}\ C\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   265
\isacommand{{\isachardot}}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   266
\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   267
\isacommand{qed}\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   268
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   269
\begin{isamarkuptext}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   270
This is getting pretty close to Dijkstra's preferred proof style.%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   271
\end{isamarkuptext}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   272
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   273
\isacommand{lemma}\ True\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   274
\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   275
\isacommand{proof}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   276
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   277
\isacommand{have}\ {\isacharbrackleft}trans{\isacharbrackright}{\isacharcolon}\ {\isachardoublequote}{\isasymAnd}X\ Y\ Z{\isachardot}\ X\ {\isasymlongrightarrow}\ Y\ {\isasymLongrightarrow}\ Y\ {\isasymlongrightarrow}\ Z\ {\isasymLongrightarrow}\ X\ {\isasymlongrightarrow}\ Z{\isachardoublequote}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   278
\isacommand{by}\ rules\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   279
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   280
\isacommand{have}\ {\isachardoublequote}A\ {\isasymlongrightarrow}\ B{\isachardoublequote}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   281
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   282
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   283
\isacommand{also}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   284
\isacommand{have}\ {\isachardoublequote}{\isasymdots}\ {\isasymlongrightarrow}\ C{\isachardoublequote}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   285
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   286
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   287
\isacommand{also}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   288
\isacommand{have}\ {\isachardoublequote}{\isasymdots}\ {\isasymlongrightarrow}\ D{\isachardoublequote}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   289
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   290
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   291
\isacommand{finally}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   292
\isacommand{have}\ {\isachardoublequote}A\ {\isasymlongrightarrow}\ D{\isachardoublequote}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   293
\isacommand{{\isachardot}}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   294
\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   295
\isacommand{qed}\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   296
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   297
\isamarkupsubsubsection{Degenerate calculations and bigstep reasoning%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   298
}
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   299
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   300
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   301
\begin{isamarkuptext}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   302
Instead of \cmd{also}/\cmd{finally} we may use degenerative steps
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   303
  \cmd{moreover}/\cmd{ultimately} to accumulate facts, without
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   304
  applying any forward rules yet.%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   305
\end{isamarkuptext}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   306
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   307
\isacommand{lemma}\ True\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   308
\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   309
\isacommand{proof}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   310
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   311
\isacommand{have}\ A\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   312
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   313
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   314
\isacommand{moreover}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   315
\isacommand{have}\ B\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   316
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   317
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   318
\isacommand{moreover}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   319
\isacommand{have}\ C\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   320
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   321
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   322
\isacommand{ultimately}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   323
\isacommand{have}\ A\ \isakeyword{and}\ B\ \isakeyword{and}\ C\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   324
\isacommand{{\isachardot}}\ \ %
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   325
\isamarkupcmt{Pretty obvious, right?%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   326
}
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   327
\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   328
\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   329
\isacommand{qed}\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   330
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   331
\begin{isamarkuptext}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   332
Both kinds of calculational elements may be used together.%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   333
\end{isamarkuptext}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   334
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   335
\isacommand{lemma}\ True\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   336
\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   337
\isacommand{proof}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   338
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   339
\isacommand{assume}\ reasoning{\isacharunderscore}pattern\ {\isacharbrackleft}trans{\isacharbrackright}{\isacharcolon}\ {\isachardoublequote}A\ {\isasymLongrightarrow}\ B\ {\isasymLongrightarrow}\ C\ {\isasymLongrightarrow}\ D{\isachardoublequote}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   340
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   341
\isacommand{have}\ A\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   342
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   343
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   344
\isacommand{moreover}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   345
\isacommand{have}\ B\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   346
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   347
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   348
\isacommand{moreover}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   349
\isacommand{have}\ C\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   350
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   351
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   352
\isacommand{finally}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   353
\isacommand{have}\ D\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   354
\isacommand{{\isachardot}}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   355
\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   356
\isacommand{qed}\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   357
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   358
\isamarkupsubsection{Natural deduction%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   359
}
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   360
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   361
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   362
\isamarkupsubsubsection{Primitive patterns%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   363
}
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   364
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   365
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   366
\begin{isamarkuptext}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   367
The default theory context admits to perform canonical single-step
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   368
  reasoning (similar to Gentzen) without further ado.%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   369
\end{isamarkuptext}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   370
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   371
\isacommand{lemma}\ True\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   372
\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   373
\isacommand{proof}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   374
\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   375
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   376
\isacommand{have}\ True\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   377
\isacommand{{\isachardot}{\isachardot}}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   378
\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   379
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   380
\isacommand{{\isacharbraceleft}}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   381
\isacommand{assume}\ False\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   382
\ \ \ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   383
\isacommand{then}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   384
\isacommand{have}\ C\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   385
\isacommand{{\isachardot}{\isachardot}}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   386
\isacommand{{\isacharbraceright}}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   387
\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   388
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   389
\isacommand{have}\ {\isachardoublequote}{\isasymnot}\ A{\isachardoublequote}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   390
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   391
\isacommand{proof}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   392
\ \ \ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   393
\isacommand{assume}\ A\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   394
\ \ \ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   395
\isacommand{show}\ False\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   396
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   397
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   398
\isacommand{qed}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   399
\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   400
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   401
\isacommand{{\isacharbraceleft}}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   402
\isacommand{assume}\ {\isachardoublequote}{\isasymnot}\ A{\isachardoublequote}\ \isakeyword{and}\ A\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   403
\ \ \ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   404
\isacommand{then}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   405
\isacommand{have}\ C\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   406
\isacommand{{\isachardot}{\isachardot}}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   407
\isacommand{{\isacharbraceright}}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   408
\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   409
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   410
\isacommand{have}\ {\isachardoublequote}A\ {\isasymlongrightarrow}\ B{\isachardoublequote}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   411
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   412
\isacommand{proof}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   413
\ \ \ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   414
\isacommand{assume}\ A\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   415
\ \ \ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   416
\isacommand{show}\ B\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   417
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   418
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   419
\isacommand{qed}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   420
\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   421
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   422
\isacommand{{\isacharbraceleft}}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   423
\isacommand{assume}\ {\isachardoublequote}A\ {\isasymlongrightarrow}\ B{\isachardoublequote}\ \isakeyword{and}\ A\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   424
\ \ \ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   425
\isacommand{then}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   426
\isacommand{have}\ B\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   427
\isacommand{{\isachardot}{\isachardot}}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   428
\isacommand{{\isacharbraceright}}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   429
\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   430
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   431
\isacommand{have}\ {\isachardoublequote}A\ {\isasymand}\ B{\isachardoublequote}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   432
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   433
\isacommand{proof}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   434
\ \ \ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   435
\isacommand{show}\ A\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   436
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   437
\ \ \ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   438
\isacommand{show}\ B\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   439
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   440
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   441
\isacommand{qed}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   442
\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   443
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   444
\isacommand{{\isacharbraceleft}}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   445
\isacommand{assume}\ {\isachardoublequote}A\ {\isasymand}\ B{\isachardoublequote}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   446
\ \ \ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   447
\isacommand{then}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   448
\isacommand{have}\ A\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   449
\isacommand{{\isachardot}{\isachardot}}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   450
\isacommand{{\isacharbraceright}}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   451
\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   452
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   453
\isacommand{{\isacharbraceleft}}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   454
\isacommand{assume}\ {\isachardoublequote}A\ {\isasymand}\ B{\isachardoublequote}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   455
\ \ \ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   456
\isacommand{then}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   457
\isacommand{have}\ B\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   458
\isacommand{{\isachardot}{\isachardot}}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   459
\isacommand{{\isacharbraceright}}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   460
\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   461
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   462
\isacommand{{\isacharbraceleft}}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   463
\isacommand{assume}\ A\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   464
\ \ \ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   465
\isacommand{then}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   466
\isacommand{have}\ {\isachardoublequote}A\ {\isasymor}\ B{\isachardoublequote}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   467
\isacommand{{\isachardot}{\isachardot}}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   468
\isacommand{{\isacharbraceright}}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   469
\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   470
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   471
\isacommand{{\isacharbraceleft}}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   472
\isacommand{assume}\ B\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   473
\ \ \ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   474
\isacommand{then}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   475
\isacommand{have}\ {\isachardoublequote}A\ {\isasymor}\ B{\isachardoublequote}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   476
\isacommand{{\isachardot}{\isachardot}}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   477
\isacommand{{\isacharbraceright}}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   478
\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   479
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   480
\isacommand{{\isacharbraceleft}}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   481
\isacommand{assume}\ {\isachardoublequote}A\ {\isasymor}\ B{\isachardoublequote}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   482
\ \ \ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   483
\isacommand{then}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   484
\isacommand{have}\ C\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   485
\ \ \ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   486
\isacommand{proof}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   487
\ \ \ \ \ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   488
\isacommand{assume}\ A\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   489
\ \ \ \ \ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   490
\isacommand{then}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   491
\isacommand{show}\ {\isacharquery}thesis\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   492
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   493
\ \ \ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   494
\isacommand{next}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   495
\ \ \ \ \ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   496
\isacommand{assume}\ B\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   497
\ \ \ \ \ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   498
\isacommand{then}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   499
\isacommand{show}\ {\isacharquery}thesis\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   500
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   501
\ \ \ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   502
\isacommand{qed}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   503
\isacommand{{\isacharbraceright}}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   504
\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   505
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   506
\isacommand{have}\ {\isachardoublequote}{\isasymforall}x{\isachardot}\ P\ x{\isachardoublequote}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   507
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   508
\isacommand{proof}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   509
\ \ \ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   510
\isacommand{fix}\ x\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   511
\ \ \ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   512
\isacommand{show}\ {\isachardoublequote}P\ x{\isachardoublequote}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   513
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   514
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   515
\isacommand{qed}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   516
\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   517
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   518
\isacommand{{\isacharbraceleft}}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   519
\isacommand{assume}\ {\isachardoublequote}{\isasymforall}x{\isachardot}\ P\ x{\isachardoublequote}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   520
\ \ \ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   521
\isacommand{then}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   522
\isacommand{have}\ {\isachardoublequote}P\ t{\isachardoublequote}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   523
\isacommand{{\isachardot}{\isachardot}}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   524
\isacommand{{\isacharbraceright}}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   525
\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   526
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   527
\isacommand{have}\ {\isachardoublequote}{\isasymexists}x{\isachardot}\ P\ x{\isachardoublequote}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   528
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   529
\isacommand{proof}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   530
\ \ \ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   531
\isacommand{show}\ {\isachardoublequote}P\ t{\isachardoublequote}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   532
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   533
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   534
\isacommand{qed}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   535
\ \ \isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   536
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   537
\isacommand{{\isacharbraceleft}}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   538
\isacommand{assume}\ {\isachardoublequote}{\isasymexists}x{\isachardot}\ P\ x{\isachardoublequote}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   539
\ \ \ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   540
\isacommand{then}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   541
\isacommand{obtain}\ x\ \isakeyword{where}\ {\isachardoublequote}P\ x{\isachardoublequote}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   542
\isacommand{{\isachardot}{\isachardot}}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   543
\ \ \ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   544
\isacommand{note}\ nothing\ \ %
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   545
\isamarkupcmt{relax%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   546
}
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   547
\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   548
\isacommand{{\isacharbraceright}}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   549
\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   550
\isacommand{qed}\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   551
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   552
\begin{isamarkuptext}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   553
Certainly, this works with derived rules for defined concepts in the
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   554
  same manner.  E.g.\ use the simple-typed set-theory of Isabelle/HOL.%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   555
\end{isamarkuptext}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   556
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   557
\isacommand{lemma}\ True\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   558
\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   559
\isacommand{proof}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   560
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   561
\isacommand{have}\ {\isachardoublequote}y\ {\isasymin}\ {\isacharparenleft}{\isasymInter}x\ {\isasymin}\ A{\isachardot}\ B\ x{\isacharparenright}{\isachardoublequote}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   562
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   563
\isacommand{proof}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   564
\ \ \ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   565
\isacommand{fix}\ x\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   566
\ \ \ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   567
\isacommand{assume}\ {\isachardoublequote}x\ {\isasymin}\ A{\isachardoublequote}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   568
\ \ \ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   569
\isacommand{show}\ {\isachardoublequote}y\ {\isasymin}\ B\ x{\isachardoublequote}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   570
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   571
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   572
\isacommand{qed}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   573
\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   574
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   575
\isacommand{have}\ {\isachardoublequote}y\ {\isasymin}\ {\isacharparenleft}{\isasymUnion}x\ {\isasymin}\ A{\isachardot}\ B\ x{\isacharparenright}{\isachardoublequote}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   576
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   577
\isacommand{proof}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   578
\ \ \ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   579
\isacommand{show}\ {\isachardoublequote}a\ {\isasymin}\ A{\isachardoublequote}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   580
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   581
\ \ \ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   582
\isacommand{show}\ {\isachardoublequote}y\ {\isasymin}\ B\ a{\isachardoublequote}\ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   583
\isacommand{sorry}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   584
\ \ \isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   585
\isacommand{qed}\isanewline
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   586
\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   587
\isacommand{qed}\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   588
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   589
\isamarkupsubsubsection{Variations in structure%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   590
}
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   591
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   592
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   593
\begin{isamarkuptext}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   594
The design of the Isar language takes the user seriously%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   595
\end{isamarkuptext}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   596
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   597
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   598
\isamarkupsubsubsection{Generalized elimination%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   599
}
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   600
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   601
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   602
\isamarkupsubsubsection{Scalable cases and induction%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   603
}
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   604
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   605
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   606
\isamarkupsection{Assimilating the old tactical style%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   607
}
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   608
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   609
%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   610
\begin{isamarkuptext}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   611
Improper commands: 
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   612
  Observation: every Isar subproof may start with a ``script'' of%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   613
\end{isamarkuptext}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   614
\isamarkuptrue%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   615
\isamarkupfalse%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   616
\end{isabellebody}%
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   617
%%% Local Variables:
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   618
%%% mode: latex
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   619
%%% TeX-master: "root"
53022e5f73ff initial setup;
wenzelm
parents:
diff changeset
   620
%%% End: