doc-src/TutorialI/Misc/document/def_rewr.tex
author nipkow
Tue, 29 Aug 2000 15:43:29 +0200
changeset 9722 a5f86aed785b
parent 9721 7e51c9f3d5a0
child 9723 a977245dfc8a
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9722
a5f86aed785b *** empty log message ***
nipkow
parents: 9721
diff changeset
     1
%
a5f86aed785b *** empty log message ***
nipkow
parents: 9721
diff changeset
     2
\begin{isabellebody}%
8749
2665170f104a Adding generated files
nipkow
parents:
diff changeset
     3
%
2665170f104a Adding generated files
nipkow
parents:
diff changeset
     4
\begin{isamarkuptext}%
2665170f104a Adding generated files
nipkow
parents:
diff changeset
     5
\noindent Constant definitions (\S\ref{sec:ConstDefinitions}) can
2665170f104a Adding generated files
nipkow
parents:
diff changeset
     6
be used as simplification rules, but by default they are not.  Hence the
2665170f104a Adding generated files
nipkow
parents:
diff changeset
     7
simplifier does not expand them automatically, just as it should be:
2665170f104a Adding generated files
nipkow
parents:
diff changeset
     8
definitions are introduced for the purpose of abbreviating complex
2665170f104a Adding generated files
nipkow
parents:
diff changeset
     9
concepts. Of course we need to expand the definitions initially to derive
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    10
enough lemmas that characterize the concept sufficiently for us to forget the
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    11
original definition. For example, given%
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    12
\end{isamarkuptext}%
9673
1b2d4f995b13 updated;
wenzelm
parents: 9541
diff changeset
    13
\isacommand{constdefs}\ exor\ {\isacharcolon}{\isacharcolon}\ {\isachardoublequote}bool\ {\isasymRightarrow}\ bool\ {\isasymRightarrow}\ bool{\isachardoublequote}\isanewline
1b2d4f995b13 updated;
wenzelm
parents: 9541
diff changeset
    14
\ \ \ \ \ \ \ \ \ {\isachardoublequote}exor\ A\ B\ {\isasymequiv}\ {\isacharparenleft}A\ {\isasymand}\ {\isasymnot}B{\isacharparenright}\ {\isasymor}\ {\isacharparenleft}{\isasymnot}A\ {\isasymand}\ B{\isacharparenright}{\isachardoublequote}%
8749
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    15
\begin{isamarkuptext}%
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    16
\noindent
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    17
we may want to prove%
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    18
\end{isamarkuptext}%
9673
1b2d4f995b13 updated;
wenzelm
parents: 9541
diff changeset
    19
\isacommand{lemma}\ {\isachardoublequote}exor\ A\ {\isacharparenleft}{\isasymnot}A{\isacharparenright}{\isachardoublequote}%
8749
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    20
\begin{isamarkuptxt}%
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    21
\noindent
9698
f0740137a65d updated;
wenzelm
parents: 9673
diff changeset
    22
Typically, the opening move consists in \emph{unfolding} the definition(s), which we need to
f0740137a65d updated;
wenzelm
parents: 9673
diff changeset
    23
get started, but nothing else:\indexbold{*unfold}\indexbold{definition!unfolding}%
8749
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    24
\end{isamarkuptxt}%
9698
f0740137a65d updated;
wenzelm
parents: 9673
diff changeset
    25
\isacommand{apply}{\isacharparenleft}simp\ only{\isacharcolon}exor{\isacharunderscore}def{\isacharparenright}%
8749
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    26
\begin{isamarkuptxt}%
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    27
\noindent
9698
f0740137a65d updated;
wenzelm
parents: 9673
diff changeset
    28
In this particular case, the resulting goal
8749
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    29
\begin{isabellepar}%
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    30
~1.~A~{\isasymand}~{\isasymnot}~{\isasymnot}~A~{\isasymor}~{\isasymnot}~A~{\isasymand}~{\isasymnot}~A%
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    31
\end{isabellepar}%
9698
f0740137a65d updated;
wenzelm
parents: 9673
diff changeset
    32
can be proved by simplification. Thus we could have proved the lemma outright%
8749
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    33
\end{isamarkuptxt}%
9698
f0740137a65d updated;
wenzelm
parents: 9673
diff changeset
    34
\isacommand{by}{\isacharparenleft}simp\ add{\isacharcolon}\ exor{\isacharunderscore}def{\isacharparenright}%
8749
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    35
\begin{isamarkuptext}%
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    36
\noindent
9698
f0740137a65d updated;
wenzelm
parents: 9673
diff changeset
    37
Of course we can also unfold definitions in the middle of a proof.
8749
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    38
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    39
You should normally not turn a definition permanently into a simplification
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    40
rule because this defeats the whole purpose of an abbreviation.%
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    41
\end{isamarkuptext}%
9722
a5f86aed785b *** empty log message ***
nipkow
parents: 9721
diff changeset
    42
\end{isabellebody}%
9145
9f7b8de5bfaf updated;
wenzelm
parents: 8749
diff changeset
    43
%%% Local Variables:
9f7b8de5bfaf updated;
wenzelm
parents: 8749
diff changeset
    44
%%% mode: latex
9f7b8de5bfaf updated;
wenzelm
parents: 8749
diff changeset
    45
%%% TeX-master: "root"
9f7b8de5bfaf updated;
wenzelm
parents: 8749
diff changeset
    46
%%% End: