doc-src/TutorialI/Advanced/advanced.tex
author nipkow
Mon, 19 Mar 2001 17:25:42 +0100
changeset 11216 279004936bb0
parent 11196 bb4ede27fcb7
child 11428 332347b9b942
permissions -rw-r--r--
*** empty log message ***
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}
9958
67f2920862c7 *** empty log message ***
nipkow
parents:
diff changeset
     2
67f2920862c7 *** empty log message ***
nipkow
parents:
diff changeset
     3
Although we have already learned a lot about simplification, recursion and
67f2920862c7 *** empty log message ***
nipkow
parents:
diff changeset
     4
induction, there are some advanced proof techniques that we have not covered
10885
90695f46440b lcp's pass over the book, chapters 1-8
paulson
parents: 10654
diff changeset
     5
yet and which are worth learning. The three sections of this chapter are almost
9958
67f2920862c7 *** empty log message ***
nipkow
parents:
diff changeset
     6
independent of each other and can be read in any order. Only the notion of
67f2920862c7 *** empty log message ***
nipkow
parents:
diff changeset
     7
\emph{congruence rules}, introduced in the section on simplification, is
67f2920862c7 *** empty log message ***
nipkow
parents:
diff changeset
     8
required for parts of the section on recursion.
67f2920862c7 *** empty log message ***
nipkow
parents:
diff changeset
     9
9993
c0f7fb6e538e *** empty log message ***
nipkow
parents: 9958
diff changeset
    10
\input{Advanced/document/simp.tex}
9958
67f2920862c7 *** empty log message ***
nipkow
parents:
diff changeset
    11
11216
279004936bb0 *** empty log message ***
nipkow
parents: 11196
diff changeset
    12
\section{Advanced Forms of Recursion}
9958
67f2920862c7 *** empty log message ***
nipkow
parents:
diff changeset
    13
\index{*recdef|(}
10186
499637e8f2c6 *** empty log message ***
nipkow
parents: 10178
diff changeset
    14
10654
458068404143 *** empty log message ***
nipkow
parents: 10522
diff changeset
    15
The purpose of this section is to introduce advanced forms of
11196
bb4ede27fcb7 *** empty log message ***
nipkow
parents: 10885
diff changeset
    16
\isacommand{recdef}: how to establish termination by means other than measure
bb4ede27fcb7 *** empty log message ***
nipkow
parents: 10885
diff changeset
    17
functions, how to define recursive function over nested recursive datatypes,
10654
458068404143 *** empty log message ***
nipkow
parents: 10522
diff changeset
    18
and how to deal with partial functions.
10187
0376cccd9118 *** empty log message ***
nipkow
parents: 10186
diff changeset
    19
10189
865918597b63 *** empty log message ***
nipkow
parents: 10187
diff changeset
    20
If, after reading this section, you feel that the definition of recursive
10885
90695f46440b lcp's pass over the book, chapters 1-8
paulson
parents: 10654
diff changeset
    21
functions is overly complicated by the requirement of
10189
865918597b63 *** empty log message ***
nipkow
parents: 10187
diff changeset
    22
totality, you should ponder the alternative, a logic of partial functions,
865918597b63 *** empty log message ***
nipkow
parents: 10187
diff changeset
    23
where recursive definitions are always wellformed. For a start, there are many
865918597b63 *** empty log message ***
nipkow
parents: 10187
diff changeset
    24
such logics, and no clear winner has emerged. And in all of these logics you
865918597b63 *** empty log message ***
nipkow
parents: 10187
diff changeset
    25
are (more or less frequently) required to reason about the definedness of
10885
90695f46440b lcp's pass over the book, chapters 1-8
paulson
parents: 10654
diff changeset
    26
terms explicitly. Thus one shifts definedness arguments from definition time to
10189
865918597b63 *** empty log message ***
nipkow
parents: 10187
diff changeset
    27
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
    28
can then proceed unencumbered by worries about undefinedness.
865918597b63 *** empty log message ***
nipkow
parents: 10187
diff changeset
    29
11216
279004936bb0 *** empty log message ***
nipkow
parents: 11196
diff changeset
    30
\subsection{Beyond Measure}
11196
bb4ede27fcb7 *** empty log message ***
nipkow
parents: 10885
diff changeset
    31
\label{sec:beyond-measure}
bb4ede27fcb7 *** empty log message ***
nipkow
parents: 10885
diff changeset
    32
\input{Advanced/document/WFrec.tex}
bb4ede27fcb7 *** empty log message ***
nipkow
parents: 10885
diff changeset
    33
11216
279004936bb0 *** empty log message ***
nipkow
parents: 11196
diff changeset
    34
\subsection{Recursion Over Nested Datatypes}
10186
499637e8f2c6 *** empty log message ***
nipkow
parents: 10178
diff changeset
    35
\label{sec:nested-recdef}
9993
c0f7fb6e538e *** empty log message ***
nipkow
parents: 9958
diff changeset
    36
\input{Recdef/document/Nested0.tex}
c0f7fb6e538e *** empty log message ***
nipkow
parents: 9958
diff changeset
    37
\input{Recdef/document/Nested1.tex}
c0f7fb6e538e *** empty log message ***
nipkow
parents: 9958
diff changeset
    38
\input{Recdef/document/Nested2.tex}
9958
67f2920862c7 *** empty log message ***
nipkow
parents:
diff changeset
    39
11216
279004936bb0 *** empty log message ***
nipkow
parents: 11196
diff changeset
    40
\subsection{Partial Functions}
10654
458068404143 *** empty log message ***
nipkow
parents: 10522
diff changeset
    41
\index{partial function}
458068404143 *** empty log message ***
nipkow
parents: 10522
diff changeset
    42
\input{Advanced/document/Partial.tex}
458068404143 *** empty log message ***
nipkow
parents: 10522
diff changeset
    43
458068404143 *** empty log message ***
nipkow
parents: 10522
diff changeset
    44
\index{*recdef|)}
458068404143 *** empty log message ***
nipkow
parents: 10522
diff changeset
    45
11216
279004936bb0 *** empty log message ***
nipkow
parents: 11196
diff changeset
    46
\section{Advanced Induction Techniques}
9958
67f2920862c7 *** empty log message ***
nipkow
parents:
diff changeset
    47
\label{sec:advanced-ind}
67f2920862c7 *** empty log message ***
nipkow
parents:
diff changeset
    48
\index{induction|(}
9993
c0f7fb6e538e *** empty log message ***
nipkow
parents: 9958
diff changeset
    49
\input{Misc/document/AdvancedInd.tex}
10217
e61e7e1eacaf *** empty log message ***
nipkow
parents: 10189
diff changeset
    50
\input{CTL/document/CTLind.tex}
9958
67f2920862c7 *** empty log message ***
nipkow
parents:
diff changeset
    51
\index{induction|)}