Core Concepts
The authors present the f-cube, an extension of the λ-cube that uses finite-set declarations to encode intersection types without the need for the troublesome intersection-introduction rule.
Abstract
The paper introduces the f-cube, an extension of the well-known λ-cube of type systems, which adds the capability to represent intersection types using finite-set declarations (FSDs).
The key insights are:
FSDs allow representing intersection types as Π-types, without requiring the problematic intersection-introduction rule. This rule makes it difficult to maintain type information and perform local optimizations in compilers that use intersection types.
The authors show how to translate Urzyczyn's famous untyped λ-term, which is strongly normalizing but not typable in the λ-cube or the higher-order polymorphic λ-calculus Fω, into the f-cube using the FSD-based encoding of intersection types.
The f-cube extends the λ-cube by generalizing declarations to include FSDs of the form x∈{A1, ..., An} : B, which restrict the variable x to be one of the Ais and have type B. This allows representing intersection types without the need for the intersection-introduction rule.
The authors demonstrate how the FSD-based encoding can be used to type examples like the polymorphic identity function and Urzyczyn's untyped term, which are not typable in the original λ-cube.
The paper shows how the f-cube, with its FSD-based approach to intersection types, can be a useful tool for language implementers who want the power of intersection types without the complications introduced by the intersection-introduction rule.