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