doc-src/TutorialI/Advanced/advanced.tex
author paulson
Thu, 09 Aug 2001 18:12:15 +0200
changeset 11494 23a118849801
parent 11428 332347b9b942
child 25281 8d309beb66d6
permissions -rw-r--r--
revisions and indexing
nipkow@10178
     1
\chapter{Advanced Simplification, Recursion and Induction}
nipkow@9958
     2
nipkow@9958
     3
Although we have already learned a lot about simplification, recursion and
nipkow@9958
     4
induction, there are some advanced proof techniques that we have not covered
paulson@10885
     5
yet and which are worth learning. The three sections of this chapter are almost
nipkow@9958
     6
independent of each other and can be read in any order. Only the notion of
nipkow@9958
     7
\emph{congruence rules}, introduced in the section on simplification, is
nipkow@9958
     8
required for parts of the section on recursion.
nipkow@9958
     9
nipkow@9993
    10
\input{Advanced/document/simp.tex}
nipkow@9958
    11
nipkow@11216
    12
\section{Advanced Forms of Recursion}
paulson@11428
    13
\index{recdef@\isacommand {recdef} (command)|(}
nipkow@10186
    14
paulson@11494
    15
This section introduces advanced forms of
nipkow@11196
    16
\isacommand{recdef}: how to establish termination by means other than measure
paulson@11494
    17
functions, how to define recursive functions over nested recursive datatypes
nipkow@10654
    18
and how to deal with partial functions.
nipkow@10187
    19
nipkow@10189
    20
If, after reading this section, you feel that the definition of recursive
paulson@10885
    21
functions is overly complicated by the requirement of
paulson@11494
    22
totality, you should ponder the alternatives.  In a logic of partial functions,
paulson@11494
    23
recursive definitions are always accepted.  But there are many
nipkow@10189
    24
such logics, and no clear winner has emerged. And in all of these logics you
nipkow@10189
    25
are (more or less frequently) required to reason about the definedness of
paulson@10885
    26
terms explicitly. Thus one shifts definedness arguments from definition time to
nipkow@10189
    27
proof time. In HOL you may have to work hard to define a function, but proofs
nipkow@10189
    28
can then proceed unencumbered by worries about undefinedness.
nipkow@10189
    29
nipkow@11216
    30
\subsection{Beyond Measure}
nipkow@11196
    31
\label{sec:beyond-measure}
nipkow@11196
    32
\input{Advanced/document/WFrec.tex}
nipkow@11196
    33
nipkow@11216
    34
\subsection{Recursion Over Nested Datatypes}
nipkow@10186
    35
\label{sec:nested-recdef}
nipkow@9993
    36
\input{Recdef/document/Nested0.tex}
nipkow@9993
    37
\input{Recdef/document/Nested1.tex}
nipkow@9993
    38
\input{Recdef/document/Nested2.tex}
nipkow@9958
    39
nipkow@11216
    40
\subsection{Partial Functions}
paulson@11494
    41
\index{functions!partial}
nipkow@10654
    42
\input{Advanced/document/Partial.tex}
nipkow@10654
    43
paulson@11428
    44
\index{recdef@\isacommand {recdef} (command)|)}
nipkow@10654
    45
nipkow@11216
    46
\section{Advanced Induction Techniques}
nipkow@9958
    47
\label{sec:advanced-ind}
nipkow@9958
    48
\index{induction|(}
nipkow@9993
    49
\input{Misc/document/AdvancedInd.tex}
nipkow@10217
    50
\input{CTL/document/CTLind.tex}
nipkow@9958
    51
\index{induction|)}