doc-src/IsarAdvanced/Functions/intro.tex
author krauss
Tue, 22 May 2007 13:40:37 +0200
changeset 23070 c5b896d9788c
parent 23004 6658911db679
child 23188 595a0e24bd8e
permissions -rw-r--r--
regression tests: send failure reports to krauss@in.tum.de, too
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
23004
6658911db679 added files
krauss
parents:
diff changeset
     1
\section{Introduction}
6658911db679 added files
krauss
parents:
diff changeset
     2
6658911db679 added files
krauss
parents:
diff changeset
     3
In Isabelle 2007, new facilities for recursive function definitions
6658911db679 added files
krauss
parents:
diff changeset
     4
are available.
6658911db679 added files
krauss
parents:
diff changeset
     5
6658911db679 added files
krauss
parents:
diff changeset
     6
This document is intended as a tutorial for both inexperienced and
6658911db679 added files
krauss
parents:
diff changeset
     7
advanced users, and demonstrates the use of the package with a lot of
6658911db679 added files
krauss
parents:
diff changeset
     8
examples.
6658911db679 added files
krauss
parents:
diff changeset
     9
6658911db679 added files
krauss
parents:
diff changeset
    10
% Definitional extension
6658911db679 added files
krauss
parents:
diff changeset
    11
6658911db679 added files
krauss
parents:
diff changeset
    12
Following the LCF tradition, the package is realized as a definitional
6658911db679 added files
krauss
parents:
diff changeset
    13
extension: Recursive definitions are internally transformed into a
6658911db679 added files
krauss
parents:
diff changeset
    14
non-recursive form, such that the function can be defined using
6658911db679 added files
krauss
parents:
diff changeset
    15
standard definition facilities. Then the recursive specification is
6658911db679 added files
krauss
parents:
diff changeset
    16
derived from the primitive definition.  This is a complex task, but it
6658911db679 added files
krauss
parents:
diff changeset
    17
is fully automated and mostly transparent to the user. Definitional
6658911db679 added files
krauss
parents:
diff changeset
    18
extensions are valuable because they are conservative by construction:
6658911db679 added files
krauss
parents:
diff changeset
    19
The new concept of general wellfounded recursion is completely reduced
6658911db679 added files
krauss
parents:
diff changeset
    20
to existing principles.
6658911db679 added files
krauss
parents:
diff changeset
    21
6658911db679 added files
krauss
parents:
diff changeset
    22
6658911db679 added files
krauss
parents:
diff changeset
    23
6658911db679 added files
krauss
parents:
diff changeset
    24
6658911db679 added files
krauss
parents:
diff changeset
    25
The new \cmd{function} command, and its short form \cmd{fun} will
6658911db679 added files
krauss
parents:
diff changeset
    26
replace the traditional \cmd{recdef} command in the future. It solves
6658911db679 added files
krauss
parents:
diff changeset
    27
a few of technical issues around \cmd{recdef}, and allows definitions
6658911db679 added files
krauss
parents:
diff changeset
    28
which were not previously possible.
6658911db679 added files
krauss
parents:
diff changeset
    29
6658911db679 added files
krauss
parents:
diff changeset
    30
6658911db679 added files
krauss
parents:
diff changeset
    31