23004
|
1 |
\section{Introduction}
|
|
2 |
|
|
3 |
In Isabelle 2007, new facilities for recursive function definitions
|
|
4 |
are available.
|
|
5 |
|
|
6 |
This document is intended as a tutorial for both inexperienced and
|
|
7 |
advanced users, and demonstrates the use of the package with a lot of
|
|
8 |
examples.
|
|
9 |
|
|
10 |
% Definitional extension
|
|
11 |
|
|
12 |
Following the LCF tradition, the package is realized as a definitional
|
|
13 |
extension: Recursive definitions are internally transformed into a
|
|
14 |
non-recursive form, such that the function can be defined using
|
|
15 |
standard definition facilities. Then the recursive specification is
|
|
16 |
derived from the primitive definition. This is a complex task, but it
|
|
17 |
is fully automated and mostly transparent to the user. Definitional
|
|
18 |
extensions are valuable because they are conservative by construction:
|
|
19 |
The new concept of general wellfounded recursion is completely reduced
|
|
20 |
to existing principles.
|
|
21 |
|
|
22 |
|
|
23 |
|
|
24 |
|
|
25 |
The new \cmd{function} command, and its short form \cmd{fun} will
|
|
26 |
replace the traditional \cmd{recdef} command in the future. It solves
|
|
27 |
a few of technical issues around \cmd{recdef}, and allows definitions
|
|
28 |
which were not previously possible.
|
|
29 |
|
|
30 |
|
|
31 |
|