From F to DOT: Type Soundness Proofs with Definitional Interpreters
Tiark Rompf, Nada Amin

TL;DR
This paper demonstrates how to prove type soundness for rich DOT calculi and advanced polymorphic type systems using definitional interpreters, addressing limitations of traditional proof methods.
Contribution
It introduces a novel approach to proving type soundness via definitional interpreters, including mechanized proofs for System F<: and extensions, and generalizes DOT-like calculi as System D.
Findings
Rich DOT calculi can be proved sound despite restrictions.
Type soundness for polymorphic systems can be mechanized in Coq with simple induction.
DOT-like calculi form a broad design space with path-dependent types.
Abstract
Scala's type system unifies ML modules, object-oriented, and functional programming. The Dependent Object Types (DOT) family of calculi has been proposed as a new foundation for Scala and similar languages. Unfortunately, it is not clear how DOT relates to any well-known type systems, and type soundness has only been established for very restricted subsets. In fact, important Scala features are known to break at least one key metatheoretic property such as environment narrowing or subtyping transitivity, which are usually required for a type soundness proof. First, and, perhaps surprisingly, we show how rich DOT calculi can still be proved sound. The key insight is that narrowing and subtyping transitivity only need to hold for runtime objects, but not for code that is never executed. Alas, the dominant method of proving type soundness, Wright and Felleisen's syntactic approach, is…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
