Information and Computation - Semantics of Data Types
Partial Functions in a Total Setting
Journal of Automated Reasoning
Nested General Recursion and Partiality in Type Theory
TPHOLs '01 Proceedings of the 14th International Conference on Theorem Proving in Higher Order Logics
Recursive Definitions in Type Theory
Proceedings of the Conference on Logic of Programs
Simple general recursion in type theory
Nordic Journal of Computing
Modelling general recursion in type theory
Mathematical Structures in Computer Science
Inductive types in the calculus of algebraic constructions
TLCA'03 Proceedings of the 6th international conference on Typed lambda calculi and applications
General recursion in type theory
TYPES'02 Proceedings of the 2002 international conference on Types for proofs and programs
Modelling general recursion in type theory
Mathematical Structures in Computer Science
A Type of Partial Recursive Functions
TPHOLs '08 Proceedings of the 21st International Conference on Theorem Proving in Higher Order Logics
Partial and Nested Recursive Function Definitions in Higher-order Logic
Journal of Automated Reasoning
TLCA'07 Proceedings of the 8th international conference on Typed lambda calculi and applications
Partial recursive functions in martin-löf type theory
CiE'06 Proceedings of the Second conference on Computability in Europe: logical Approaches to Computational Barriers
Hi-index | 0.00 |
In a series of articles, we developed a method to translate general recursive functions written in a functional programming style into constructive type theory. Three problems remained: the method could not properly deal with functions taking functional arguments, the translation of terms containing λ-abstractions was too strict, and partial application of general recursive functions was not allowed. Here, we show how the three problems can be solved by defining a type of partial functions between given types. Every function, including arguments to higher order functions, λ-abstractions and partially applied functions, is then translated as a pair consisting of a domain predicate and a function dependent on the predicate. Higher order functions are assigned domain predicates that inherit termination conditions from their functional arguments. The translation of a λ-abstraction does not need to be total anymore, but generates a local termination condition. The domain predicate of a partially applied function is defined by fixing the given arguments in the domain of the original function. As in our previous articles, simultaneous induction-recursion is required to deal with nested recursive functions. Since by using our method the inductive definition of the domain predicate can refer globally to the domain predicate itself, here we need to work on an impredicative type theory for the method to apply to all functions. However, in most practical cases the method can be adapted to work on a predicative type theory with type universes.