dc.contributor.advisor |
Potanin, Alex |
|
dc.contributor.advisor |
Groves, Lindsay |
|
dc.contributor.advisor |
Aldrich, Jonathan |
|
dc.contributor.author |
Mackay, Julian |
|
dc.date.accessioned |
2020-08-10T21:52:44Z |
|
dc.date.available |
2020-08-10T21:52:44Z |
|
dc.date.copyright |
2020 |
|
dc.date.issued |
2020 |
|
dc.identifier.uri |
http://researcharchive.vuw.ac.nz/handle/10063/9081 |
|
dc.description.abstract |
Path dependent types form a central component of the Scala programming language. Coupled with other expressive type forms, path dependent types provide for a diverse set of concepts and patterns, from nominality to F-bounded polymorphism. Recent years have seen much work aimed at formalising the foundations of path dependent types, most notably a hard won proof of type safety. Unfortunately subtyping remains undecidable, presenting problems for programmers who rely on the results of their tools. One such tool is Dotty, the basis for the upcoming Scala 3. Another is Wyvern, a new programming language that leverages path dependent types to support both first class modules and parametric polymorphism. In this thesis I investigate the issues with deciding subtyping in Wyvern. I define three decidable variants that retain several key instances of expressiveness including the ability to encode nominality and parametric polymorphism. Wyvfix fixes types to the contexts they are defined in, thereby eliminating expansive environments. Wyvnon-μ removes recursive subtyping, thus removing the key source of expansive environments during subtyping. Wyvμ places a syntactic restriction on the usage of recursive types. I discuss the formal properties of these variants, and the implications each has for expressing the common programming patterns of path dependent types. I have also mechanized the proofs of decidability for both Wyvfix and Wyvμ in Coq. |
en_NZ |
dc.language.iso |
en_NZ |
|
dc.publisher |
Victoria University of Wellington |
en_NZ |
dc.rights.uri |
http://creativecommons.org/licenses/by/3.0/nz/ |
|
dc.subject |
Programming Languages |
en_NZ |
dc.subject |
Formal Logics |
en_NZ |
dc.subject |
Semantics |
en_NZ |
dc.subject |
Functional Programming Languages |
en_NZ |
dc.subject |
Object oriented Programming Languages |
en_NZ |
dc.title |
Decidable Subtyping for Path Dependent Types |
en_NZ |
dc.type |
Text |
en_NZ |
vuwschema.contributor.unit |
School of Engineering and Computer Science |
en_NZ |
vuwschema.type.vuw |
Awarded Doctoral Thesis |
en_NZ |
thesis.degree.discipline |
Software Engineering |
en_NZ |
thesis.degree.discipline |
Computer Science |
en_NZ |
thesis.degree.grantor |
Victoria University of Wellington |
en_NZ |
thesis.degree.level |
Doctoral |
en_NZ |
thesis.degree.name |
Doctor of Philosophy |
en_NZ |
dc.rights.license |
Creative Commons GNU GPL |
en_NZ |
dc.rights.license |
Allow modifications |
en_NZ |
dc.rights.license |
Allow commercial use |
en_NZ |
dc.date.updated |
2020-08-10T02:26:39Z |
|
vuwschema.subject.anzsrcfor |
080308 Programming Languages |
en_NZ |
vuwschema.subject.anzsrcfor |
080309 Software Engineering |
en_NZ |
vuwschema.subject.anzsrctoa |
1 PURE BASIC RESEARCH |
en_NZ |