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