doc-src/TutorialI/Advanced/advanced.tex
author wenzelm
Sun, 15 Oct 2000 19:50:35 +0200
changeset 10220 2a726de6e124
parent 10217 e61e7e1eacaf
child 10420 ef006735bee8
permissions -rw-r--r--
proper symbol markup with \isamath, \isatext; support sub/super scripts:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10178
aecb5bf6f76f *** empty log message ***
nipkow
parents: 10171
diff changeset
     1
\chapter{Advanced Simplification, Recursion and Induction}
aecb5bf6f76f *** empty log message ***
nipkow
parents: 10171
diff changeset
     2
\markboth{}{CHAPTER 4: ADVANCED SIMPLIFICATION, RECURSION ...}
9958
67f2920862c7 *** empty log message ***
nipkow
parents:
diff changeset
     3
67f2920862c7 *** empty log message ***
nipkow
parents:
diff changeset
     4
Although we have already learned a lot about simplification, recursion and
67f2920862c7 *** empty log message ***
nipkow
parents:
diff changeset
     5
induction, there are some advanced proof techniques that we have not covered
67f2920862c7 *** empty log message ***
nipkow
parents:
diff changeset
     6
yet and which are worth knowing about if you intend to beome a serious
67f2920862c7 *** empty log message ***
nipkow
parents:
diff changeset
     7
(human) theorem prover. The three sections of this chapter are almost
67f2920862c7 *** empty log message ***
nipkow
parents:
diff changeset
     8
independent of each other and can be read in any order. Only the notion of
67f2920862c7 *** empty log message ***
nipkow
parents:
diff changeset
     9
\emph{congruence rules}, introduced in the section on simplification, is
67f2920862c7 *** empty log message ***
nipkow
parents:
diff changeset
    10
required for parts of the section on recursion.
67f2920862c7 *** empty log message ***
nipkow
parents:
diff changeset
    11
9993
c0f7fb6e538e *** empty log message ***
nipkow
parents: 9958
diff changeset
    12
\input{Advanced/document/simp.tex}
9958
67f2920862c7 *** empty log message ***
nipkow
parents:
diff changeset
    13
67f2920862c7 *** empty log message ***
nipkow
parents:
diff changeset
    14
\section{Advanced forms of recursion}
67f2920862c7 *** empty log message ***
nipkow
parents:
diff changeset
    15
\index{*recdef|(}
10186
499637e8f2c6 *** empty log message ***
nipkow
parents: 10178
diff changeset
    16
10187
0376cccd9118 *** empty log message ***
nipkow
parents: 10186
diff changeset
    17
The purpose of this section is to introduce advanced forms of \isacommand{recdef}. It
0376cccd9118 *** empty log message ***
nipkow
parents: 10186
diff changeset
    18
covers two topics: how to define recursive function over nested recursive datatypes
0376cccd9118 *** empty log message ***
nipkow
parents: 10186
diff changeset
    19
and how to establish termination by means other than measure functions.
0376cccd9118 *** empty log message ***
nipkow
parents: 10186
diff changeset
    20
10189
865918597b63 *** empty log message ***
nipkow
parents: 10187
diff changeset
    21
If, after reading this section, you feel that the definition of recursive
865918597b63 *** empty log message ***
nipkow
parents: 10187
diff changeset
    22
functions is overly and maybe unnecessarily complicated by the requirement of
865918597b63 *** empty log message ***
nipkow
parents: 10187
diff changeset
    23
totality, you should ponder the alternative, a logic of partial functions,
865918597b63 *** empty log message ***
nipkow
parents: 10187
diff changeset
    24
where recursive definitions are always wellformed. For a start, there are many
865918597b63 *** empty log message ***
nipkow
parents: 10187
diff changeset
    25
such logics, and no clear winner has emerged. And in all of these logics you
865918597b63 *** empty log message ***
nipkow
parents: 10187
diff changeset
    26
are (more or less frequently) required to reason about the definedness of
865918597b63 *** empty log message ***
nipkow
parents: 10187
diff changeset
    27
terms explicitly. Thus one shifts definedness arguments from definition to
865918597b63 *** empty log message ***
nipkow
parents: 10187
diff changeset
    28
proof time. In HOL you may have to work hard to define a function, but proofs
865918597b63 *** empty log message ***
nipkow
parents: 10187
diff changeset
    29
can then proceed unencumbered by worries about undefinedness.
865918597b63 *** empty log message ***
nipkow
parents: 10187
diff changeset
    30
10186
499637e8f2c6 *** empty log message ***
nipkow
parents: 10178
diff changeset
    31
\subsection{Recursion over nested datatypes}
499637e8f2c6 *** empty log message ***
nipkow
parents: 10178
diff changeset
    32
\label{sec:nested-recdef}
9993
c0f7fb6e538e *** empty log message ***
nipkow
parents: 9958
diff changeset
    33
\input{Recdef/document/Nested0.tex}
c0f7fb6e538e *** empty log message ***
nipkow
parents: 9958
diff changeset
    34
\input{Recdef/document/Nested1.tex}
c0f7fb6e538e *** empty log message ***
nipkow
parents: 9958
diff changeset
    35
\input{Recdef/document/Nested2.tex}
9958
67f2920862c7 *** empty log message ***
nipkow
parents:
diff changeset
    36
\index{*recdef|)}
67f2920862c7 *** empty log message ***
nipkow
parents:
diff changeset
    37
10186
499637e8f2c6 *** empty log message ***
nipkow
parents: 10178
diff changeset
    38
\subsection{Beyond measure}
499637e8f2c6 *** empty log message ***
nipkow
parents: 10178
diff changeset
    39
\label{sec:wellfounded}
10187
0376cccd9118 *** empty log message ***
nipkow
parents: 10186
diff changeset
    40
\input{Advanced/document/WFrec.tex}
10186
499637e8f2c6 *** empty log message ***
nipkow
parents: 10178
diff changeset
    41
9958
67f2920862c7 *** empty log message ***
nipkow
parents:
diff changeset
    42
\section{Advanced induction techniques}
67f2920862c7 *** empty log message ***
nipkow
parents:
diff changeset
    43
\label{sec:advanced-ind}
67f2920862c7 *** empty log message ***
nipkow
parents:
diff changeset
    44
\index{induction|(}
9993
c0f7fb6e538e *** empty log message ***
nipkow
parents: 9958
diff changeset
    45
\input{Misc/document/AdvancedInd.tex}
10217
e61e7e1eacaf *** empty log message ***
nipkow
parents: 10189
diff changeset
    46
\input{CTL/document/CTLind.tex}
9958
67f2920862c7 *** empty log message ***
nipkow
parents:
diff changeset
    47
\index{induction|)}