A Simple Soundness Proof for Dependent Object Types
Marianna Rapoport, Ifaz Kabir, Paul He, Ond\v{r}ej Lhot\'ak

TL;DR
This paper introduces a simple, modular, and machine-verified proof strategy for the soundness of Dependent Object Types (DOT), simplifying reasoning by separating type concerns and enabling easier extensions for Scala modeling.
Contribution
It presents a novel, modular proof approach for DOT's soundness, focusing on a restricted type system to simplify reasoning and facilitate modifications.
Findings
Proof strategy is modular and separates type reasoning from other concerns.
Almost all reasoning is done within an intuitive restricted type system.
The proof is fully machine-verified in Coq.
Abstract
Dependent Object Types (DOT) is intended to be a core calculus for modelling Scala. Its distinguishing feature is abstract type members, fields in objects that hold types rather than values. Proving soundness of DOT has been surprisingly challenging, and existing proofs are complicated, and reason about multiple concepts at the same time (e.g. types, values, evaluation). To serve as a core calculus for Scala, DOT should be easy to experiment with and extend, and therefore its soundness proof needs to be easy to modify. This paper presents a simple and modular proof strategy for reasoning in DOT. The strategy separates reasoning about types from other concerns. It is centred around a theorem that connects the full DOT type system to a restricted variant in which the challenges and paradoxes caused by abstract type members are eliminated. Almost all reasoning in the proof is done in the…
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.
