Abstract
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.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
Bove, A., Capretta, V.: Nested general recursion and partiality in type theory. In: Boulton, R.J., Jackson, P.B. (eds.) TPHOLs 2001. LNCS, vol. 2152, pp. 121–135. Springer, Heidelberg (2001)
Bove, A., Capretta, V.: Modelling general recursion in type theory. To appear in Mathematical Structures in Computer Science (May 2004) Available on the WWW: http://www.cs.chalmers.se/~bove/Papers/general_presentation.ps.gz
Blanqui, F.: Inductive types in the calculus of algebraic constructions. In: Hofmann, M.O. (ed.) TLCA 2003. LNCS, vol. 2701, pp. 46–59. Springer, Heidelberg (2003)
Bove, A.: Simple general recursion in type theory. Nordic Journal of Computing 8(1), 22–42 (2001)
Bove, A.: Mutual general recursion in type theory. Technical Report, Chalmers University of Technology (May 2002) Available on the WWW: http://www.cs.chalmers.se/~bove/Papers/mutual_rec.ps.gz
Bove, A.: General Recursion in Type Theory. PhD thesis, Chalmers University of Technology, Department of Computing Science (November 2002) Available on the WWW: http://cs.chalmers.se/~bove/Papers/phd_thesis.ps.gz
Bove, A.: General recursion in type theory. In: Geuvers, H., Wiedijk, F. (eds.) TYPES 2002. LNCS, vol. 2646, pp. 39–58. Springer, Heidelberg (2003)
Caprett, V.: A polymorphic representation of induction-recursion. Draft paper (2004), Available from, http://www.science.uottawa.ca/~vcapr396/
Coquand, T., Huet, G.: The Calculus of Constructions. Information and Computation 76, 95–120 (1988)
Constable, R.L., Mendler, N.P.: Recursive definitions in type theory. In: Parikh, R. (ed.) Logic of Programs 1985. LNCS, vol. 193, pp. 61–78. Springer, Heidelberg (1985)
Coq Development Team. LogiCal Project. The Coq Proof Assistant. Reference Manual. Version 7.4. INRIA (2002)
Dubois, C., Donzeau-Gouge, V.V.: A step towards the mechanization of partial functions: Domains as inductive predicates. In: Kerber, M. (ed.) CADE-15, The 15th International Conference on Automated Deduction, Workshop Mechanization of Partial Functions, July 1998, pp. 53–62 (1998)
Dybjer, P.: A general formulation of simultaneous inductive-recursive definitions in type theory. Journal of Symbolic Logic 65(2) (June 2000)
Finn, S., Fourman, M.P., Longley, J.: Partial functions in a total setting. Journal of Automated Reasoning 18(1), 85–104 (1997)
Peyton Jones, S. (ed.): Haskell 98 Language and Libraries. The Revised Report. Cambridge University Press (April 2003)
Paulin, C.: How widely applicable is Coq? Contribution to the Coq mailing list, 19 (August 2002), http://pauillac.inria.fr/bin/wilma_hiliter/coq-club/200208/msg00003.html
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2005 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Bove, A., Capretta, V. (2005). Recursive Functions with Higher Order Domains. In: Urzyczyn, P. (eds) Typed Lambda Calculi and Applications. TLCA 2005. Lecture Notes in Computer Science, vol 3461. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11417170_10
Download citation
DOI: https://doi.org/10.1007/11417170_10
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-25593-2
Online ISBN: 978-3-540-32014-2
eBook Packages: Computer ScienceComputer Science (R0)