
TL;DR
This paper investigates a restricted, decidable version of the D<: calculus from Scala's DOT type system, introducing step relations for algorithmic typing and subtyping, and proving their soundness and decidability.
Contribution
It proposes a simplified D<: calculus with decidable typechecking, along with step relations for algorithmic typing and subtyping, inspired by Scala's compiler approach.
Findings
Proved the soundness of step typing and subtyping relations.
Established the decidability of the proposed relations.
Highlighted the trade-off between expressiveness and decidability.
Abstract
The Dependent Object Types (DOT) calculus formalizes key features of Scala. The D calculus is the core of DOT. To date, presentations of D have used declarative typing and subtyping rules, as opposed to algorithmic. Unfortunately, algorithmic typing for full D is known to be an undecidable problem. We explore the design space for a restricted version of D that has decidable typechecking. Even in this simplified D , algorithmic typing and subtyping are tricky, due to the "bad bounds" problem. The Scala compiler bypasses bad bounds at the cost of a loss in expressiveness in its type system. Based on the approach taken in the Scala compiler, we present the Step Typing and Step Subtyping relations for D. We prove these relations sound and decidable. They are not complete with respect to the original D rules.
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.
Taxonomy
TopicsLogic, programming, and type systems · Parallel Computing and Optimization Techniques · Computational Physics and Python Applications
