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