doc-src/TutorialI/Misc/document/let_rewr.tex
author nipkow
Fri, 01 Sep 2000 19:09:44 +0200
changeset 9792 bbefb6ce5cb2
parent 9722 a5f86aed785b
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}%
9792
bbefb6ce5cb2 *** empty log message ***
nipkow
parents: 9722
diff changeset
     3
%
bbefb6ce5cb2 *** empty log message ***
nipkow
parents: 9722
diff changeset
     4
\isamarkupsubsubsection{Simplifying let-expressions}
bbefb6ce5cb2 *** empty log message ***
nipkow
parents: 9722
diff changeset
     5
%
bbefb6ce5cb2 *** empty log message ***
nipkow
parents: 9722
diff changeset
     6
\begin{isamarkuptext}%
bbefb6ce5cb2 *** empty log message ***
nipkow
parents: 9722
diff changeset
     7
\index{simplification!of let-expressions}
bbefb6ce5cb2 *** empty log message ***
nipkow
parents: 9722
diff changeset
     8
Proving a goal containing \isaindex{let}-expressions almost invariably
bbefb6ce5cb2 *** empty log message ***
nipkow
parents: 9722
diff changeset
     9
requires the \isa{let}-con\-structs to be expanded at some point. Since
bbefb6ce5cb2 *** empty log message ***
nipkow
parents: 9722
diff changeset
    10
\isa{let}-\isa{in} is just syntactic sugar for a predefined constant
bbefb6ce5cb2 *** empty log message ***
nipkow
parents: 9722
diff changeset
    11
(called \isa{Let}), expanding \isa{let}-constructs means rewriting with
bbefb6ce5cb2 *** empty log message ***
nipkow
parents: 9722
diff changeset
    12
\isa{Let{\isacharunderscore}def}:%
bbefb6ce5cb2 *** empty log message ***
nipkow
parents: 9722
diff changeset
    13
\end{isamarkuptext}%
9673
1b2d4f995b13 updated;
wenzelm
parents: 9541
diff changeset
    14
\isacommand{lemma}\ {\isachardoublequote}{\isacharparenleft}let\ xs\ {\isacharequal}\ {\isacharbrackleft}{\isacharbrackright}\ in\ xs{\isacharat}ys{\isacharat}xs{\isacharparenright}\ {\isacharequal}\ ys{\isachardoublequote}\isanewline
1b2d4f995b13 updated;
wenzelm
parents: 9541
diff changeset
    15
\isacommand{by}{\isacharparenleft}simp\ add{\isacharcolon}\ Let{\isacharunderscore}def{\isacharparenright}%
8749
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    16
\begin{isamarkuptext}%
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    17
If, in a particular context, there is no danger of a combinatorial explosion
9792
bbefb6ce5cb2 *** empty log message ***
nipkow
parents: 9722
diff changeset
    18
of nested \isa{let}s one could even add \isa{Let{\isacharunderscore}def} permanently:%
8749
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    19
\end{isamarkuptext}%
9722
a5f86aed785b *** empty log message ***
nipkow
parents: 9721
diff changeset
    20
\isacommand{lemmas}\ {\isacharbrackleft}simp{\isacharbrackright}\ {\isacharequal}\ Let{\isacharunderscore}def\end{isabellebody}%
9145
9f7b8de5bfaf updated;
wenzelm
parents: 8771
diff changeset
    21
%%% Local Variables:
9f7b8de5bfaf updated;
wenzelm
parents: 8771
diff changeset
    22
%%% mode: latex
9f7b8de5bfaf updated;
wenzelm
parents: 8771
diff changeset
    23
%%% TeX-master: "root"
9f7b8de5bfaf updated;
wenzelm
parents: 8771
diff changeset
    24
%%% End: