We define a weak λ-calculus, λσw,
as a subsystem of the full λ-calculus with explicit substitutions
λσ[uArr ]. We
claim that λσw could be the archetypal
output
language of functional compilers, just as the λ-calculus is their
universal input
language. Furthermore, λσ[uArr ] could be
the adequate theory to establish the correctness of functional compilers.
Here we illustrate
these claims by proving the correctness of four simplified compilers and
runtime systems
modelled as abstract machines. The four machines we prove are the Krivine
machine, the
SECD, the FAM and the CAM. Thus, we give the first formal proofs of Cardelli's
FAM and
of its compiler.