Wikipedia lists the following algorithm to normalize a lambda calculation term $ t $:
- Yes $ t $ is not in the form of normal head, beta reduces the beta-redex to the top position to get $ t $. Then normalize $ t $ get $ t & # 39; $. $ t & # 39; $ is the normal form of $ t $.
- Yes $ t $ is in the form of normal head, normalize each of its sub-terms to obtain $ t $. $ t $ is the normal form of $ t $.
The basic case involved is if $ t $ is in normal form but has no sub-terms, in which case it is already in normal form. Yes $ t $ has a normal form, the algorithm above is guaranteed to find it.
The problem that I have, is that it does not seem that the algorithm has ever reduced eta.
For example, the algorithm normalizes $ lambda y. lambda x.y x $ to itself (since it is already in its normal form, and $ x $ is also in normal head shape). It should be normalized $ lambda y. y $ although.
It seems obvious that you need to add eta-reduction steps to some point. The problem is that I do not know where to put them and keep the property as the algorithm is sure to find the normal form.
When and where are you reducing to achieve this?