Affiliation:
1. University of Waterloo, Canada
Abstract
The Dependent Object Types (DOT) calculus aims to formalize the Scala programming language with a focus on
path-dependent types
— types such as
x
.
a
1
…
a
n
.
T
that depend on the runtime value of a
path
x
.
a
1
…
a
n
to an object. Unfortunately, existing formulations of DOT can model only types of the form
x
.
A
which depend on
variables
rather than general paths. This restriction makes it impossible to model nested module dependencies. Nesting small components inside larger ones is a necessary ingredient of a modular, scalable language. DOT’s variable restriction thus undermines its ability to fully formalize a variety of programming-language features including Scala’s module system, family polymorphism, and covariant specialization.
This paper presents the pDOT calculus, which generalizes DOT to support types that depend on paths of arbitrary length, as well as singleton types to track path equality. We show that naive approaches to add paths to DOT make it inherently unsound, and present necessary conditions for such a calculus to be sound. We discuss the key changes necessary to adapt the techniques of the DOT soundness proofs so that they can be applied to pDOT. Our paper comes with a Coq-mechanized type-safety proof of pDOT. With support for paths of arbitrary length, pDOT can realize DOT’s full potential for formalizing Scala-like calculi.
Funder
Natural Sciences and Engineering Research Council of Canada
Publisher
Association for Computing Machinery (ACM)
Subject
Safety, Risk, Reliability and Quality,Software
Cited by
10 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Degrees of Separation: A Flexible Type System for Safe Concurrency;Proceedings of the ACM on Programming Languages;2024-04-29
2. Dependency-Free Capture Tracking;Proceedings of the 25th ACM International Workshop on Formal Techniques for Java-like Programs;2023-07-18
3. Bounded Abstract Effects;ACM Transactions on Programming Languages and Systems;2022-01-12
4. Implementing path-dependent GADT reasoning for Scala 3;Proceedings of the 12th ACM SIGPLAN International Symposium on Scala;2021-10-17
5. A theory of higher-order subtyping with type intervals;Proceedings of the ACM on Programming Languages;2021-08-22