doc-src/TutorialI/Misc/document/asm_simp.tex
author wenzelm
Mon, 08 May 2000 10:52:28 +0200
changeset 8823 bd8f8dbda512
parent 8749 2665170f104a
child 9145 9f7b8de5bfaf
permissions -rw-r--r--
updated syntax of simp options: (no_asm) etc.;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8749
2665170f104a Adding generated files
nipkow
parents:
diff changeset
     1
\begin{isabelle}%
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
By default, assumptions are part of the simplification process: they are used
2665170f104a Adding generated files
nipkow
parents:
diff changeset
     5
as simplification rules and are simplified themselves. For example:%
2665170f104a Adding generated files
nipkow
parents:
diff changeset
     6
\end{isamarkuptext}%
2665170f104a Adding generated files
nipkow
parents:
diff changeset
     7
\isacommand{lemma}~{"}{\isasymlbrakk}~xs~@~zs~=~ys~@~xs;~[]~@~xs~=~[]~@~[]~{\isasymrbrakk}~{\isasymLongrightarrow}~ys~=~zs{"}\isanewline
2665170f104a Adding generated files
nipkow
parents:
diff changeset
     8
\isacommand{apply}~simp\isacommand{.}%
2665170f104a Adding generated files
nipkow
parents:
diff changeset
     9
\begin{isamarkuptext}%
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    10
\noindent
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    11
The second assumption simplifies to \isa{xs = []}, which in turn
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    12
simplifies the first assumption to \isa{zs = ys}, thus reducing the
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    13
conclusion to \isa{ys = ys} and hence to \isa{True}.
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    14
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    15
In some cases this may be too much of a good thing and may lead to
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    16
nontermination:%
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    17
\end{isamarkuptext}%
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    18
\isacommand{lemma}~{"}{\isasymforall}x.~f~x~=~g~(f~(g~x))~{\isasymLongrightarrow}~f~[]~=~f~[]~@~[]{"}%
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    19
\begin{isamarkuptxt}%
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    20
\noindent
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    21
cannot be solved by an unmodified application of \isa{simp} because the
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    22
simplification rule \isa{f x = g(f(g x))} extracted from the assumption
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    23
does not terminate. Isabelle notices certain simple forms of
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    24
nontermination but not this one. The problem can be circumvented by
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    25
explicitly telling the simplifier to ignore the assumptions:%
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    26
\end{isamarkuptxt}%
8823
bd8f8dbda512 updated syntax of simp options: (no_asm) etc.;
wenzelm
parents: 8749
diff changeset
    27
\isacommand{apply}(simp~(no\_asm))\isacommand{.}%
8749
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    28
\begin{isamarkuptext}%
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    29
\noindent
8823
bd8f8dbda512 updated syntax of simp options: (no_asm) etc.;
wenzelm
parents: 8749
diff changeset
    30
There are three options that influence the treatment of assumptions:
8749
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    31
\begin{description}
8823
bd8f8dbda512 updated syntax of simp options: (no_asm) etc.;
wenzelm
parents: 8749
diff changeset
    32
\item[\isaindexbold{(no_asm)}] means that assumptions are completely ignored.
bd8f8dbda512 updated syntax of simp options: (no_asm) etc.;
wenzelm
parents: 8749
diff changeset
    33
\item[\isaindexbold{(no_asm_simp)}] means that the assumptions are not simplified but
8749
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    34
  are used in the simplification of the conclusion.
8823
bd8f8dbda512 updated syntax of simp options: (no_asm) etc.;
wenzelm
parents: 8749
diff changeset
    35
\item[\isaindexbold{(no_asm_use)}] means that the assumptions are simplified
8749
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    36
but are not
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    37
  used in the simplification of each other or the conclusion.
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    38
\end{description}
8823
bd8f8dbda512 updated syntax of simp options: (no_asm) etc.;
wenzelm
parents: 8749
diff changeset
    39
Neither \isa{(no_asm_simp)} nor \isa{(no_asm_use)} allow to simplify the above
8749
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    40
problematic subgoal.
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    41
8823
bd8f8dbda512 updated syntax of simp options: (no_asm) etc.;
wenzelm
parents: 8749
diff changeset
    42
Note that only one of the above options is allowed, and it must precede all
bd8f8dbda512 updated syntax of simp options: (no_asm) etc.;
wenzelm
parents: 8749
diff changeset
    43
other arguments.%
8749
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    44
\end{isamarkuptext}%
2665170f104a Adding generated files
nipkow
parents:
diff changeset
    45
\end{isabelle}%