Motivation
A simple way to read the meaning of a computation is to consider it as a mechanical procedure consisting of a finite number of steps that, when completed, yields a result. In particular, considering the lambda calculus as aI = λx.x
and I I
are both I
. This works for any strongly normalizing subset of the lambda calculus, such as a Ω =(λx.x x)(λx.x x)
does not have a normal form, and similarly the term X=λx.xΩ
does not have a normal form. But the application Ω (K I)
, where K
denotes the standard lambda term λx.λy.x
, reduces only to itself, whereas the application X (K I)
reduces with normal order reduction to I
, hence has a meaning. We thus see that not all non-normalizing terms are equivalent. We would like to say that Ω
is less meaningful than X
because applying X
to a term can produce a result but applying Ω
cannot.
In the infinitary lambda calculus, the term N N
, where N = λx.I(xx)
, reduces to both to I (I (...))
and Ω
. Hence there are also issues with confluence of normalization.
Sets of meaningless terms
We define a set of meaningless terms as follows: * Root-activeness: Every root-active term is in . A term is root-active if for all there exists a redex such that . * Closure under β-reduction: For all , if then . * Closure under substitution: For all and substitutions , . * Overlap: For all , . * Indiscernibility: For all , if can be obtained from by replacing a set of pairwise disjoint subterms in with other terms of , then if and only if . * Closure under β-expansion. For all , if , then . Some definitions leave this out, but it is useful. There are infinitely many sets of meaningless terms, but the ones most common in the literature are: * The set of terms without head normal form * The set of terms without weak head normal form * The set of root-active terms, i.e. the terms without top normal form or root normal form. Since root-activeness is assumed, this is the smallest set of meaningless terms. Note thatΩ
is root-active and therefore for every set of meaningless terms .
λ⊥-terms
The set of λ-terms with ⊥ (abbreviated λ⊥-terms) is defined coinductively by the grammar . This corresponds to the standard infinitary lambda calculus plus terms containing . Beta-reduction on this set is defined in the standard way. Given a set of meaningless terms , we also define a reduction to bottom: if and , then . The λ⊥-terms are then considered as a rewriting system with these two rules; thanks to the definition of meaningless terms this rewriting system is confluent and normalizing. The Böhm-like "tree" for a term may then be obtained as the normal form of the term in this system, possibly in an infinitary "in the limit" sense if the term expands infinitely.Böhm trees
The Böhm trees are obtained by considering the λ⊥-terms where the set of meaningless terms consists of those without head normal form. More explicitly, the Böhm tree BT(''M'') of a lambda term ''M'' can be computed as follows: # BT(''M'') is , if ''M'' has no head normal form # , if reduces in a finite number of steps to the head normal form For example,BT(Ω)=⊥, BT(I)=I, and BT(λ''x''.''x''Ω)=λ''x''.''x''⊥
.
Determining whether a term has a head normal form is an Lévy-Longo trees
The Lévy-Longo trees are obtained by considering the λ⊥-terms where the set of meaningless terms consists of those without weak head normal form. More explicitly, the Lévy-Longo tree LLT(''M'') of a lambda term ''M'' can be computed as follows: # LLT(''M'') is , if ''M'' has no weak head normal form. # If reduces to the weak head normal form , then . # If reduces to the weak head normal form , then /Berarducci trees
The Berarducci trees are obtained by considering the λ⊥-terms where the set of meaningless terms consists of the root-active terms. More explicitly, the Berarducci tree BerT(''M'') of a lambda term ''M'' can be computed as follows: # BerT(''M'') is , if ''M'' is root-active. # If reduces to a term , then . # If reduces to a term where does not reduce to any abstraction , then .Notes
References
* * * * * * {{DEFAULTSORT:Bohm Tree Lambda calculus