Joachim Breitner's Homepage
Interleaving normalizing reduction strategies
A little, not very significant, observation about lambda calculus and reduction strategies.
A reduction strategy determines, for every lambda term with redexes left, which redex to reduce next. A reduction strategy is normalizing if this procedure terminates for every lambda term that has a normal form.
A fun fact is: If you have two normalizing reduction strategies s1 and s2, consulting them alternately may not yield a normalizing strategy.
Here is an example. Consider the lambda-term o = (λx.xxx), and note that oo → ooo → oooo → …. Let Mi = (λx.(λx.x))(ooo…o) (with i ocurrences of o). Mi has two redexes, and reduces to either (λx.x) or Mi + 1. In particular, Mi has a normal form.
The two reduction strategies are:
- s1, which picks the second redex if given Mi for an even i, and the first (left-most) redex otherwise.
- s2, which picks the second redex if given Mi for an odd i, and the first (left-most) redex otherwise.
Both stratgies are normalizing: If during a reduction we come across Mi, then the reduction terminates in one or two steps; otherwise we are just doing left-most reduction, which is known to be normalizing.
But if we alternatingly consult s1 and s2 while trying to reduce M2, we get the sequence
M2 → M3 → M4 → …
which shows that this strategy is not normalizing.
Afterthought: The interleaved strategy is not actually a reduction strategy in the usual definition, as it not a pure (stateless) function from lambda term to redex.
Have something to say? You can post a comment by sending an e-Mail to me at <mail@joachim-breitner.de>, and I will include it here.