Recursive Functions with Higher Order Domains

  • Ana Bove
  • Venanzio Capretta
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3461)

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.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. [BC01]
    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)CrossRefGoogle Scholar
  2. [BC04]
    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
  3. [Bla03]
    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)CrossRefGoogle Scholar
  4. [Bov01]
    Bove, A.: Simple general recursion in type theory. Nordic Journal of Computing 8(1), 22–42 (2001)MATHMathSciNetGoogle Scholar
  5. [Bov02a]
    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
  6. [Bov02b]
    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
  7. [Bov03]
    Bove, A.: General recursion in type theory. In: Geuvers, H., Wiedijk, F. (eds.) TYPES 2002. LNCS, vol. 2646, pp. 39–58. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  8. [Cap04]
    Caprett, V.: A polymorphic representation of induction-recursion. Draft paper (2004), Available from, http://www.science.uottawa.ca/~vcapr396/
  9. [CH88]
    Coquand, T., Huet, G.: The Calculus of Constructions. Information and Computation 76, 95–120 (1988)MATHCrossRefMathSciNetGoogle Scholar
  10. [CM85]
    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)Google Scholar
  11. [Coq02]
    Coq Development Team. LogiCal Project. The Coq Proof Assistant. Reference Manual. Version 7.4. INRIA (2002)Google Scholar
  12. [DDG98]
    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)Google Scholar
  13. [Dyb00]
    Dybjer, P.: A general formulation of simultaneous inductive-recursive definitions in type theory. Journal of Symbolic Logic 65(2) (June 2000)Google Scholar
  14. [FFL97]
    Finn, S., Fourman, M.P., Longley, J.: Partial functions in a total setting. Journal of Automated Reasoning 18(1), 85–104 (1997)MATHCrossRefMathSciNetGoogle Scholar
  15. [Jon03]
    Peyton Jones, S. (ed.): Haskell 98 Language and Libraries. The Revised Report. Cambridge University Press (April 2003)Google Scholar
  16. [Pau]
    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

Copyright information

© Springer-Verlag Berlin Heidelberg 2005

Authors and Affiliations

  • Ana Bove
    • 1
  • Venanzio Capretta
    • 2
  1. 1.Department of Computing ScienceChalmers University of TechnologyGöteborgSweden
  2. 2.Department of Mathematics and StatisticsUniversity of OttawaOttawaCanada

Personalised recommendations