# Partial functions in comstructive formal theories

• Robert L. Constable
Invited Lectures
Part of the Lecture Notes in Computer Science book series (LNCS, volume 145)

## Abstract

Partial functions abound in modern computing theory, and so any system which purports to naturally formalize it must treat them. Surprisingly the most common treatments do not work well for constructive formal systems, i.e., for those with computational content. Since constructive formal systems are significant in computer science, it is important to give an account of partial functions in them. This paper does that by construing a partial function φ:N→N as a total function f:Df→N for Df an inductively defined set generated simultaneously with f. This idea has appeared in other guises, at least in the author's previous work, but here it is presented in a pure form. It is compared to Scott's method of using total functions on domains. A formal system of arithmetic is defined to illustrate the ideas. The system is shown consistent relative to constructive type theory; from this result important corollaries are drawn about using the theory as a programming language.

## Key words and phrases

automated automated logic Heyting arithmetic constructivity intuitionistic predicate calculus partial functions recursive functions programming logics program verification type theory type checking

## References

1. [1]
Aczel, Peter, "A Introduction to Inductive Definitions", Handbook of Mathematical Logic, (ed., J. Barwise), North-Holland, NY, 1977, pp. 739–782.Google Scholar
2. [2]
Constable, Robert L. and M.J. O'Donnell, A Programming Logic, Winthrop, Cambridge, 1978.Google Scholar
3. [3]
Constable, Robert L. and D.R. Zlatin, "The Type Theory of PL/CV3", IBM Logic of Programs Conference, Lecture Notes in Computer Science, Vol. 131, Springer-Verlag, NY, 1982, 72–93.Google Scholar
4. [4]
de Bakker, Jaco, Mathematical Theory of Program Correctness, Prentice-Hall, 1980.Google Scholar
5. [5]
Egli, H. and R.L. Constable, "Computability Concepts for Programming Language Semantics", Theoretical Computer Science, 2, 1976, pp. 133–145.Google Scholar
6. [6]
Feferman, Solomon, "Constructive Theories of Functions and Classes", Logic Colloquium '78 (eds., M. Boffa, D. van Dalen and K. McAloon), North-Holland, Amsterdam, 1979, pp. 159–224.Google Scholar
7. [7]
Gordon, M., R. Milner and C. Wadsworth, Edinburgh LCF: A Mechanized Logic of Computation, Lecture Notes in Computer Science, Vol. 78, Springer-Verlag, 1979.Google Scholar
8. [8]
Howard, W.A., "The Formulas-As-Types Notion of Construction" in Essays on Combinatory Logic, Lambda Calculus and Formalism, (eds., J.P. Seldin and J.R. Hindley), Academic Press, NY, 1980.Google Scholar
9. [9]
Kleene, S.C., Introduction to Metamathematics, D. Van Nostrand, Princeton, 1952, 550 pp.Google Scholar
10. [10]
Manna, Zohar, Mathematical Theory of Computation, McGraw-Hill, NY, 1974, 448p.Google Scholar
11. [11]
Martin-Löf, Per, "Constructive Mathematics and Computer Programming", 6th International Congress for Logic, Method and Phil. of Science, Hannover, August, 1979.Google Scholar
12. [12]
McCarthy, John, "A Basis for a Mathematical Theory of Computation", Computer Programming and Formal Systems (eds., P. Braffort and D. Hirschberg), North-Holland, Amsterdam, 1963, pp. 33–70.Google Scholar
13. [13]
Scott, Dana, "Outline of a Mathematical Theory of Computation", Proc. 4th Annual Princeton Conf. on Information Sciences & Systems, Princeton, 1970, pp. 169–176.Google Scholar
14. [14]
Scott, Dana, "Constructive Validity", Symposium on Automatic Demonstration, Lecture Notes in Mathematics, 125, Springer-Verlag, 1970, 237–275.Google Scholar
15. [15]
Scott, Dana, "Data Types as Lattices", SIAM Journal on Computing, 5:3, September 1976.Google Scholar
16. [16]
Stenlund, S., Combinators, Lambda-terms, and Proof-Theory, D. Reidel, Dordrecht, 1972, 183 pp.Google Scholar