Hostname: page-component-7d684dbfc8-kpkbf Total loading time: 0 Render date: 2023-09-30T23:13:04.667Z Has data issue: false Feature Flags: { "corePageComponentGetUserInfoFromSharedSession": true, "coreDisableEcommerce": false, "coreDisableSocialShare": false, "coreDisableEcommerceForArticlePurchase": false, "coreDisableEcommerceForBookPurchase": false, "coreDisableEcommerceForElementPurchase": false, "coreUseNewShare": true, "useRatesEcommerce": true } hasContentIssue false

Many more predecessors: A representation workout

Published online by Cambridge University Press:  30 March 2020

Tohoku University, Japan, (e-mail:
Rights & Permissions [Opens in a new window]


Core share and HTML view are not possible as this article does not have html content. However, as you have access to this content, a full PDF is available via the ‘Save PDF’ action button.

From the outset, lambda calculus represented natural numbers through iterated application. The successor hence adds one more application, and the predecessor removes. In effect, the predecessor un-applies a term—which seemed impossible, even to Church. It took Kleene a rather oblique glance to sight a related representation of numbers, with an easier predecessor. Let us see what we can do if we look at this old problem with today’s eyes. We discern the systematic ways to derive more predecessors—smaller, faster, and sharper—while keeping all teeth.

Functional Pearl
© The Author(s) 2020. Published by Cambridge University Press


Abadi, M., Cardelli, L. & Plotkin, G. D. (1993) Types for the Scott numerals. Available at: Scholar
Barendregt, H. (1997) The impact of the lambda calculus in logic and computer science. Bull. Symb. Log. 3(2), 181215.CrossRefGoogle Scholar
Barendregt, H. & Barendsen, E. (2000) Introduction to Lambda Calculus.Google Scholar
Barendregt, H. P. (1981) The Lambda Calculus: Its Syntax and Semantics. Amsterdam: Elsevier.Google Scholar
Barendregt, H. P. (1990) Functional programming and lambda calculus. In Handbook of Theoretical Computer Science, Volume B: Formal Models and Semantics, van Leeuwen, J. (ed), Elsevier and MIT, pp. 321363.Google Scholar
Bawden, A. (1988) Reification without evaluation. Memo 946. Artificial Intelligence Laboratory, Massachusetts Institute of Technology.CrossRefGoogle Scholar
Böhm, C. & Berarducci, A. (1985) Automatic synthesis of typed Λ-programs on term algebras. Theor. Comput. Sci. 39(2–3), 135154.CrossRefGoogle Scholar
Dybjer, P. & Filinski, A. (2002) Normalization and partial evaluation. In APPSEM 2000: International Summer School on Applied Semantics, Advanced Lectures, Barthe, G., Dybjer, P., Pinto, L. & Saraiva, J. (eds). Lecture Notes in Computer Science, vol. 2395. Springer, pp. 137192.Google Scholar
Kemp, C. J. M. (2007) Theoretical Foundations for Practical ‘Totally Functional Programming’. Ph.D. thesis, University of Queensland.Google Scholar
Mogensen, T. Æ. (1992) Efficient self-interpretation in lambda calculus. J. Funct. Program. 2(3), 345364.CrossRefGoogle Scholar
Pierce, B. C. (2002) Types and Programming Languages. MIT.Google Scholar
Statman, R. (1979) The typed λ-calculus is not elementary recursive. Theor. Comput. Sci. 9(1), 7381.CrossRefGoogle Scholar
Urbanek, F. J. (1993) A simple lamda-term representing the predecessor function with respect to church numerials. Bull. EATCS 50, 276279.Google Scholar
Whitehead, A. N. & Russell, B. (1910). Principia Mathematica, Volume I. Cambridge, UK: Cambridge University.Google Scholar
Supplementary material: File

Kiselyov Supplementary Materials

Kiselyov Supplementary Materials

Download Kiselyov Supplementary Materials(File)
File 32 KB
Submit a response


No Discussions have been published for this article.