Another Look at Function Domains
Other conference contribution, 2009
Bove and Capretta have presented a method to deal with partial and
general recursive functions in constructive type theory which relies
on an inductive characterisation of the domains of the
functions. The method separates the logical and the computational
aspects of an algorithm, and facilitates the formal verification of
the functions being defined. For nested recursive functions, the
method uses Dybjer' schema for simultaneous inductive-recursive
definitions. However, not all constructive type theories support
this kind of definitions.
Here we present a new approach for dealing with partial and general
recursive functions that preserves the advantages of the method by
Bove and Capretta, but which does not rely on inductive-recursive
definitions. In this approach, we start by inductively defining the
graph of the function, from which we first define the domain
and afterwards the type-theoretic version of the function. We
show two ways of proving the formal specification of the functions
defined with this new approach: by induction on the graph, or by
using an induction principle in the style of the induction principle
associated to the domain predicates of the Bove-Capretta method.
partial functions
nested functions
constructive type theory
General recursive functions