# Intuitive explanation of neutral / normal form in lambda calculus

It is possible to distinguish Normal terms which don't contain beta redex as a sub-expression, from others like so

data WithBound a = Var | Other a

data Normal a
= Neutral (Neutral a)
| Abstract (Normal (WithBound a))

data Neutral a
= Variable a
| Apply (Neutral a) (Normal a)


Is there any intuitive explanation as to why this property would hold ? It might be entirely self-evident somehow after you look at it long enough but it does not prompt straight out to me as of now.

I can reassure you that this property is not immediately self-evident. In trying to describe/enumerate the set of normal forms, the main observation required is the following:

• Abstraction preserves normal forms: if $t$ is normal, than so is $\lambda x.t$.

• Application does not preserve normal forms: if $t$ and $u$ are normal, $t\ u$ may contain a redex!

We want to characterize the normal forms for which we can not create redexes when performing applications. Obviously, this occurs iff $t$ is a $\lambda$-abstraction. In particular, we can take $u$ to be anything we want, so long as it is in normal form.

For $t$, we need either a variable or an application, itself already in normal form. This allows a convenient recursive definition for $t$, which we will call neutral: $$t=x$$ or $$t=t_1\ t_2$$ with $t_2$ any normal form, and $t_1\ t_2$ also in normal form, i.e. $t_1$ also a neutral term.

But this is exactly your definition of Neutral!

One can carry out this process further to characterize exactly the normalizing (resp. strongly normalizing) terms, if we furthermore allow weak head expansions.