doc-src/TutorialI/tricks.tex
author wenzelm
Wed, 30 Aug 2000 17:54:05 +0200
changeset 9749 36ddd544a18d
parent 9743 d18d5c4a1f80
child 9754 a123a64cadeb
permissions -rw-r--r--
token trans: removed \mbox to achieve proper italic correction;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9743
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
     1
\chapter{The Tricks of the Trade}
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
     2
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
     3
\section{Simplification}
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
     4
\index{simplification|(}
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
     5
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
     6
\subsection{Advanced features}
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
     7
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
     8
\subsubsection{Congruence rules}
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
     9
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
    10
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
    11
\subsubsection{Permutative rewrite rules}
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
    12
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
    13
A rewrite rule is \textbf{permutative} if the left-hand side and right-hand
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
    14
side are the same up to renaming of variables.  The most common permutative
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
    15
rule is commutativity: $x+y = y+x$.  Another example is $(x-y)-z = (x-z)-y$.
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
    16
Such rules are problematic because once they apply, they can be used forever.
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
    17
The simplifier is aware of this danger and treats permutative rules
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
    18
separately. For details see~\cite{isabelle-ref}.
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
    19
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
    20
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
    21
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
    22
\subsection{How it works}
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
    23
\label{sec:SimpHow}
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
    24
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
    25
\subsubsection{Higher-order patterns}
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
    26
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
    27
\subsubsection{Local assumptions}
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
    28
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
    29
\subsubsection{The preprocessor}
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
    30
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
    31
\index{simplification|)}
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
    32
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
    33
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
    34
\section{Advanced induction techniques}
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
    35
\label{sec:advanced-ind}
d18d5c4a1f80 *** empty log message ***
nipkow
parents:
diff changeset
    36
\input{Misc/document/AdvancedInd.tex}