Software Open Access

A Path to DOT: Formalizing Fully Path-Dependent Types (Artifact)

Rapoport, Marianna; Lhoták, Ondřej


DCAT Export

<?xml version='1.0' encoding='utf-8'?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:adms="http://www.w3.org/ns/adms#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/" xmlns:dctype="http://purl.org/dc/dcmitype/" xmlns:dcat="http://www.w3.org/ns/dcat#" xmlns:duv="http://www.w3.org/ns/duv#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:frapo="http://purl.org/cerif/frapo/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:gsp="http://www.opengis.net/ont/geosparql#" xmlns:locn="http://www.w3.org/ns/locn#" xmlns:org="http://www.w3.org/ns/org#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:prov="http://www.w3.org/ns/prov#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:schema="http://schema.org/" xmlns:skos="http://www.w3.org/2004/02/skos/core#" xmlns:vcard="http://www.w3.org/2006/vcard/ns#" xmlns:wdrs="http://www.w3.org/2007/05/powder-s#">
  <rdf:Description rdf:about="https://doi.org/10.5281/zenodo.3366234">
    <rdf:type rdf:resource="http://www.w3.org/ns/dcat#Dataset"/>
    <dct:type rdf:resource="http://purl.org/dc/dcmitype/Software"/>
    <dct:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">https://doi.org/10.5281/zenodo.3366234</dct:identifier>
    <foaf:page rdf:resource="https://doi.org/10.5281/zenodo.3366234"/>
    <dct:creator>
      <rdf:Description>
        <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Agent"/>
        <foaf:name>Rapoport, Marianna</foaf:name>
        <foaf:givenName>Marianna</foaf:givenName>
        <foaf:familyName>Rapoport</foaf:familyName>
        <org:memberOf>
          <foaf:Organization>
            <foaf:name>University of Waterloo</foaf:name>
          </foaf:Organization>
        </org:memberOf>
      </rdf:Description>
    </dct:creator>
    <dct:creator>
      <rdf:Description>
        <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Agent"/>
        <foaf:name>Lhoták, Ondřej</foaf:name>
        <foaf:givenName>Ondřej</foaf:givenName>
        <foaf:familyName>Lhoták</foaf:familyName>
        <org:memberOf>
          <foaf:Organization>
            <foaf:name>University of Waterloo</foaf:name>
          </foaf:Organization>
        </org:memberOf>
      </rdf:Description>
    </dct:creator>
    <dct:title>A Path to DOT: Formalizing Fully Path-Dependent Types (Artifact)</dct:title>
    <dct:publisher>
      <foaf:Agent>
        <foaf:name>Zenodo</foaf:name>
      </foaf:Agent>
    </dct:publisher>
    <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#gYear">2019</dct:issued>
    <dcat:keyword>Scala, DOT, type systems, type safety, Coq</dcat:keyword>
    <dct:contributor>
      <rdf:Description>
        <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Agent"/>
        <foaf:name>Wang, Lu</foaf:name>
        <foaf:givenName>Lu</foaf:givenName>
        <foaf:familyName>Wang</foaf:familyName>
        <org:memberOf>
          <foaf:Organization>
            <foaf:name>University of Waterloo</foaf:name>
          </foaf:Organization>
        </org:memberOf>
      </rdf:Description>
    </dct:contributor>
    <dct:contributor>
      <rdf:Description>
        <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Agent"/>
        <foaf:name>Zhao, Yaoyu</foaf:name>
        <foaf:givenName>Yaoyu</foaf:givenName>
        <foaf:familyName>Zhao</foaf:familyName>
        <org:memberOf>
          <foaf:Organization>
            <foaf:name>University of Waterloo</foaf:name>
          </foaf:Organization>
        </org:memberOf>
      </rdf:Description>
    </dct:contributor>
    <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2019-07-05</dct:issued>
    <owl:sameAs rdf:resource="https://zenodo.org/record/3366234"/>
    <adms:identifier>
      <adms:Identifier>
        <skos:notation rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">https://zenodo.org/record/3366234</skos:notation>
        <adms:schemeAgency>url</adms:schemeAgency>
      </adms:Identifier>
    </adms:identifier>
    <dct:isVersionOf rdf:resource="https://doi.org/10.5281/zenodo.3366233"/>
    <dct:description>&lt;p&gt;This is the artifact for our OOPSLA&amp;#39;19 paper that presents &lt;em&gt;pDOT&lt;/em&gt;, a&amp;nbsp;generalization of the Dependent Object Types calculus with support for paths of arbitrary length. This artifact contains the type soundness proof of&amp;nbsp;&lt;em&gt;pDOT&lt;/em&gt; mechanized in Coq.&lt;/p&gt; &lt;p&gt;&lt;em&gt;Paper abstract:&lt;/em&gt;&lt;/p&gt; &lt;p&gt;The Dependent Object Types (DOT) calculus aims to formalize the Scala programming language with a focus on&amp;nbsp;&lt;em&gt;path-dependent types&lt;/em&gt;&amp;nbsp;&amp;mdash; types such as&amp;nbsp;&lt;span class="math-tex"&gt;\(x.a_1\dots a_n.T\)&lt;/span&gt; that depend on the runtime value of a&amp;nbsp;&lt;em&gt;path&lt;/em&gt;&amp;nbsp;&lt;span class="math-tex"&gt;\(x.a_1 \dots a_n\)&lt;/span&gt;&amp;nbsp;to an object. Unfortunately, existing formulations of DOT can model only types of the form &lt;span class="math-tex"&gt;\(x.A\)&lt;/span&gt;&amp;nbsp;which depend on&amp;nbsp;&lt;em&gt;variables&lt;/em&gt;&amp;nbsp;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&amp;#39;s variable restriction thus undermines its ability to fully formalize a variety of programming-language features including Scala&amp;#39;s module system, family polymorphism, and covariant specialization.&lt;/p&gt; &lt;p&gt;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&amp;#39;s full potential for formalizing Scala-like calculi.&lt;/p&gt;</dct:description>
    <dct:accessRights rdf:resource="http://publications.europa.eu/resource/authority/access-right/PUBLIC"/>
    <dct:accessRights>
      <dct:RightsStatement rdf:about="info:eu-repo/semantics/openAccess">
        <rdfs:label>Open Access</rdfs:label>
      </dct:RightsStatement>
    </dct:accessRights>
    <dcat:distribution>
      <dcat:Distribution>
        <dct:rights>
          <dct:RightsStatement rdf:about="https://opensource.org/licenses/MIT">
            <rdfs:label>MIT License</rdfs:label>
          </dct:RightsStatement>
        </dct:rights>
        <dcat:accessURL rdf:resource="https://doi.org/10.5281/zenodo.3366234"/>
      </dcat:Distribution>
    </dcat:distribution>
    <dcat:distribution>
      <dcat:Distribution>
        <dcat:accessURL rdf:resource="https://doi.org/10.5281/zenodo.3366234"/>
        <dcat:byteSize>1877332</dcat:byteSize>
        <dcat:downloadURL rdf:resource="https://zenodo.org/record/3366234/files/dot-calculus.zip"/>
        <dcat:mediaType>application/zip</dcat:mediaType>
      </dcat:Distribution>
    </dcat:distribution>
    <dcat:distribution>
      <dcat:Distribution>
        <dcat:accessURL rdf:resource="https://doi.org/10.5281/zenodo.3366234"/>
        <dcat:byteSize>1070</dcat:byteSize>
        <dcat:downloadURL rdf:resource="https://zenodo.org/record/3366234/files/LICENSE.txt"/>
        <dcat:mediaType>text/plain</dcat:mediaType>
      </dcat:Distribution>
    </dcat:distribution>
    <dcat:distribution>
      <dcat:Distribution>
        <dcat:accessURL rdf:resource="https://doi.org/10.5281/zenodo.3366234"/>
        <dcat:byteSize>579901</dcat:byteSize>
        <dcat:downloadURL rdf:resource="https://zenodo.org/record/3366234/files/README.pdf"/>
        <dcat:mediaType>application/pdf</dcat:mediaType>
      </dcat:Distribution>
    </dcat:distribution>
  </rdf:Description>
</rdf:RDF>
131
100
views
downloads
All versions This version
Views 131131
Downloads 100100
Data volume 72.4 MB72.4 MB
Unique views 124124
Unique downloads 7575

Share

Cite as