Functional Pearl: The Distributive $\lambda$-Calculus
Résumé
We introduce a simple extension of the $\lambda$-calculus with pairs—called the distributive $\lambda$-calculus—obtained by adding a computational interpretation of the valid distributivity isomorphism A⇒(B∧C) ≡ (A⇒B)∧(A⇒C) of simple types. We study the calculus both as an untyped and as a simply typed setting. Key features of the untyped calculus are confluence, the absence of clashes of constructs, that is, evaluation never gets stuck, and a leftmost-outermost normalization theorem, obtained with straight forward proofs. With respect to simple types, we show that the new rules satisfy subject reduction if types are considered up to the distributivity isomorphism. The main result is strong normalization for simple types up to distributivity. The proof is a smooth variation over the one for the λ-calculus with pairs and simple types.