English

Untangling Typechecking of Intersections and Unions

Programming Languages 2021-03-24 v1

Abstract

Intersection and union types denote conjunctions and disjunctions of properties. Using bidirectional typechecking, intersection types are relatively straightforward, but union types present challenges. For union types, we can case-analyze a subterm of union type when it appears in evaluation position (replacing the subterm with a variable, and checking that term twice under appropriate assumptions). This technique preserves soundness in a call-by-value semantics. Sadly, there are so many choices of subterms that a direct implementation is not practical. But carefully transforming programs into let-normal form drastically reduces the number of choices. The key results are soundness and completeness: a typing derivation (in the system with too many subterm choices) exists for a program if and only if a derivation exists for the let-normalized program.

Keywords

Cite

@article{arxiv.1101.4428,
  title  = {Untangling Typechecking of Intersections and Unions},
  author = {Jana Dunfield},
  journal= {arXiv preprint arXiv:1101.4428},
  year   = {2021}
}

Comments

In Proceedings ITRS 2010, arXiv:1101.4104

R2 v1 2026-06-21T17:15:45.100Z