Counting and generating lambda terms

Lambda calculus is the basis of functional programming and higher order proof assistants. However, little is known about combinatorial properties of lambda terms, in particular, about their asymptotic distribution and random generation. This paper tries to answer questions like: How many terms of a given size are there? What is a ''typical'' structure of a simply typable term? Despite their ostensible simplicity, these questions still remain unanswered, whereas solutions to such problems are essential for testing compilers and optimizing programs whose expected efficiency depends on the size of terms. Our approach toward the afore-mentioned problems may be later extended to any language with bound variables, i.e., with scopes and declarations. This paper presents two complementary approaches: one, theoretical, uses complex analysis and generating functions, the other, experimental, is based on a generator of lambda-terms. Thanks to de Bruijn indices, we provide three families of formulas for the number of closed lambda terms of a given size and we give four relations between these numbers which have interesting combinatorial interpretations. As a by-product of the counting formulas, we design an algorithm for generating lambda terms. Performed tests provide us with experimental data, like the average depth of bound variables and the average number of head lambdas. We also create random generators for various sorts of terms. Thereafter, we conduct experiments that answer questions like: What is the ratio of simply typable terms among all terms? (Very small!) How are simply typable lambda terms distributed among all lambda terms? (A typable term almost always starts with an abstraction.) In this paper, abstractions and applications have size 1 and variables have size 0.

Data and Resources

Additional Info

Field Value
Source https://ens-lyon.hal.science/ensl-00740034
Author Grygiel, Katarzyna, Lescanne, Pierre
Maintainer CCSD
Last Updated May 10, 2026, 11:55 (UTC)
Created May 10, 2026, 11:55 (UTC)
Identifier ensl-00740034
Language en
Rights https://about.hal.science/hal-authorisation-v1/
contributor Theoretical Computer Science Department [Krakow] (TCS) ; Uniwersytet Jagielloński w Krakowie = Jagiellonian University = Université Jagellon de Cracovie (UJ)
creator Grygiel, Katarzyna
date 2012-10-01T00:00:00
harvest_object_id b077cb3f-1834-423e-89f3-d21f3fb333bd
harvest_source_id 3374d638-d20b-4672-ba96-a23232d55657
harvest_source_title test moissonnage SELUNE
metadata_modified 2025-10-13T00:00:00
relation info:eu-repo/semantics/altIdentifier/arxiv/1210.2610
set_spec type:UNDEFINED