doc-src/IsarAdvanced/Functions/intro.tex
author krauss
Fri, 01 Jun 2007 15:20:53 +0200
changeset 23188 595a0e24bd8e
parent 23004 6658911db679
child 23805 953eb3c5f793
permissions -rw-r--r--
updated
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
23188
595a0e24bd8e updated
krauss
parents: 23004
diff changeset
     3
In the upcomung release of Isabelle 2007, new facilities for recursive
595a0e24bd8e updated
krauss
parents: 23004
diff changeset
     4
function definitions \cite{krauss2006} will be available.
23004
6658911db679 added files
krauss
parents:
diff changeset
     5
23188
595a0e24bd8e updated
krauss
parents: 23004
diff changeset
     6
This tutorial is an example-guided introduction to the practical use
595a0e24bd8e updated
krauss
parents: 23004
diff changeset
     7
of the package. We assume that you have mastered the basic concepts of
595a0e24bd8e updated
krauss
parents: 23004
diff changeset
     8
Isabelle/HOL and are able to write basic specifications and
595a0e24bd8e updated
krauss
parents: 23004
diff changeset
     9
proofs. To start out with Isabelle in general, you should read the
595a0e24bd8e updated
krauss
parents: 23004
diff changeset
    10
tutorial \cite{isa-tutorial}.
23004
6658911db679 added files
krauss
parents:
diff changeset
    11
6658911db679 added files
krauss
parents:
diff changeset
    12
% Definitional extension
6658911db679 added files
krauss
parents:
diff changeset
    13
6658911db679 added files
krauss
parents:
diff changeset
    14
Following the LCF tradition, the package is realized as a definitional
6658911db679 added files
krauss
parents:
diff changeset
    15
extension: Recursive definitions are internally transformed into a
6658911db679 added files
krauss
parents:
diff changeset
    16
non-recursive form, such that the function can be defined using
6658911db679 added files
krauss
parents:
diff changeset
    17
standard definition facilities. Then the recursive specification is
6658911db679 added files
krauss
parents:
diff changeset
    18
derived from the primitive definition.  This is a complex task, but it
6658911db679 added files
krauss
parents:
diff changeset
    19
is fully automated and mostly transparent to the user. Definitional
6658911db679 added files
krauss
parents:
diff changeset
    20
extensions are valuable because they are conservative by construction:
6658911db679 added files
krauss
parents:
diff changeset
    21
The new concept of general wellfounded recursion is completely reduced
6658911db679 added files
krauss
parents:
diff changeset
    22
to existing principles.
6658911db679 added files
krauss
parents:
diff changeset
    23
6658911db679 added files
krauss
parents:
diff changeset
    24
6658911db679 added files
krauss
parents:
diff changeset
    25
6658911db679 added files
krauss
parents:
diff changeset
    26
6658911db679 added files
krauss
parents:
diff changeset
    27
The new \cmd{function} command, and its short form \cmd{fun} will
23188
595a0e24bd8e updated
krauss
parents: 23004
diff changeset
    28
replace the traditional \cmd{recdef} command \cite{slind-tfl} in the future. It solves
23004
6658911db679 added files
krauss
parents:
diff changeset
    29
a few of technical issues around \cmd{recdef}, and allows definitions
6658911db679 added files
krauss
parents:
diff changeset
    30
which were not previously possible.
6658911db679 added files
krauss
parents:
diff changeset
    31
6658911db679 added files
krauss
parents:
diff changeset
    32
6658911db679 added files
krauss
parents:
diff changeset
    33
23188
595a0e24bd8e updated
krauss
parents: 23004
diff changeset
    34