Nomen Nescio
2008-12-22 09:30:06 UTC
In [1], Torben Mogensen describes using Scheme to reduce to normal
form certain pure lambda calculus terms. But the lambda terms require
strong reduction to reach normal form, and this cannot ordinarily be
done with Scheme's weak head reduction.
How did Mogensen coax strong reduction out of a weak head reducer?
Example: One of Mogensen's terms computes Ackermann's function on a
Church numeral. But weak head reduction fails already in taking the
successor of Church zero. The successor function is
S = (lambda (m f x) f (m f x)).
Church zero is
0 = (lambda (f x) x)
With strong reduction (S 0) becomes (lambda (f x) f x), but with weak
head reduction (S 0) stops at (lambda (f x) f ((lambda (f x) x) f x)).
Normal form is never reached.
[1] @Article{mogensen94,
author = {Torben {\AE.} Mogensen},
title = {Efficient Self-Interpretation in Lambda Calculus},
journal = {ftp://ftp.diku.dk/diku/semantics/papers/D-128.dvi.Z},
year = 1994
}
form certain pure lambda calculus terms. But the lambda terms require
strong reduction to reach normal form, and this cannot ordinarily be
done with Scheme's weak head reduction.
How did Mogensen coax strong reduction out of a weak head reducer?
Example: One of Mogensen's terms computes Ackermann's function on a
Church numeral. But weak head reduction fails already in taking the
successor of Church zero. The successor function is
S = (lambda (m f x) f (m f x)).
Church zero is
0 = (lambda (f x) x)
With strong reduction (S 0) becomes (lambda (f x) f x), but with weak
head reduction (S 0) stops at (lambda (f x) f ((lambda (f x) x) f x)).
Normal form is never reached.
[1] @Article{mogensen94,
author = {Torben {\AE.} Mogensen},
title = {Efficient Self-Interpretation in Lambda Calculus},
journal = {ftp://ftp.diku.dk/diku/semantics/papers/D-128.dvi.Z},
year = 1994
}