Software Open Access

ιDOT: A DOT Calculus with Object Initialization (Coq Formalization)

Kabir, Ifaz; Li, Yufeng; 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.4060109">
    <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.4060109</dct:identifier>
    <foaf:page rdf:resource="https://doi.org/10.5281/zenodo.4060109"/>
    <dct:creator>
      <rdf:Description>
        <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Agent"/>
        <foaf:name>Kabir, Ifaz</foaf:name>
        <foaf:givenName>Ifaz</foaf:givenName>
        <foaf:familyName>Kabir</foaf:familyName>
        <org:memberOf>
          <foaf:Organization>
            <foaf:name>University of Alberta</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>Li, Yufeng</foaf:name>
        <foaf:givenName>Yufeng</foaf:givenName>
        <foaf:familyName>Li</foaf:familyName>
        <org:memberOf>
          <foaf:Organization>
            <foaf:name>University of Waterlooo</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>ιDOT: A DOT Calculus with Object Initialization (Coq Formalization)</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">2020</dct:issued>
    <dcat:keyword>Scala</dcat:keyword>
    <dcat:keyword>DOT</dcat:keyword>
    <dcat:keyword>dependent object types</dcat:keyword>
    <dcat:keyword>type systems</dcat:keyword>
    <dcat:keyword>type safety</dcat:keyword>
    <dcat:keyword>type soundness</dcat:keyword>
    <dcat:keyword>Coq</dcat:keyword>
    <dcat:keyword>initialization</dcat:keyword>
    <dcat:keyword>effect systems</dcat:keyword>
    <dcat:keyword>iDOT</dcat:keyword>
    <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2020-09-30</dct:issued>
    <owl:sameAs rdf:resource="https://zenodo.org/record/4060109"/>
    <adms:identifier>
      <adms:Identifier>
        <skos:notation rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">https://zenodo.org/record/4060109</skos:notation>
        <adms:schemeAgency>url</adms:schemeAgency>
      </adms:Identifier>
    </adms:identifier>
    <dct:isVersionOf rdf:resource="https://doi.org/10.5281/zenodo.4060108"/>
    <dct:description>&lt;p&gt;This is the artifact for our OOPSLA&amp;#39;20 paper that presents &amp;iota;DOT, a Dependent Object Types calculus with a type and effect system to ensure safe initialization of objects. This artifact contains the proof of type safety for the &amp;iota;DOT calculus, formalized in the Coq proof assistant.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Paper abstract:&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;The &lt;em&gt;Dependent Object Types (DOT)&lt;/em&gt; calculus serves as a foundation of the Scala programming language, with a machine-verified soundness proof. However, Scala&amp;#39;s type system has been shown to be unsound due to null references, which are used as default values of fields of objects before they have been initialized. This paper proposes &lt;strong&gt;&amp;iota;DOT&lt;/strong&gt;, an extension of DOT for ensuring safe initialization of objects. DOT was previously extended to &amp;kappa;DOT with the addition of mutable fields and constructors. To &amp;kappa;DOT, &amp;iota;DOT adds an &lt;em&gt;initialization effect system&lt;/em&gt; that statically prevents the possibility of reading a null reference from an uninitialized object. To design &amp;iota;DOT, we have reformulated the Freedom Before Commitment object initialization scheme in terms of disjoint subheaps to make it easier to formalize in an effect system and prove sound. Soundness of &amp;iota;DOT depends on the interplay of three systems of rules: a type system close to that of DOT, an effect system to ensure definite assignment of fields in each constructor, and an initialization system that tracks the initialization status of objects in a stack of subheaps. We have proven the overall system sound and verified the soundness proof using the Coq proof assistant.&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:license rdf:resource="https://creativecommons.org/licenses/by/4.0/legalcode"/>
        <dcat:accessURL rdf:resource="https://doi.org/10.5281/zenodo.4060109"/>
      </dcat:Distribution>
    </dcat:distribution>
    <dcat:distribution>
      <dcat:Distribution>
        <dcat:accessURL rdf:resource="https://doi.org/10.5281/zenodo.4060109"/>
        <dcat:byteSize>3216346</dcat:byteSize>
        <dcat:downloadURL rdf:resource="https://zenodo.org/record/4060109/files/iDOT-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.4060109"/>
        <dcat:byteSize>1082</dcat:byteSize>
        <dcat:downloadURL rdf:resource="https://zenodo.org/record/4060109/files/LICENSE"/>
      </dcat:Distribution>
    </dcat:distribution>
    <dcat:distribution>
      <dcat:Distribution>
        <dcat:accessURL rdf:resource="https://doi.org/10.5281/zenodo.4060109"/>
        <dcat:byteSize>336910</dcat:byteSize>
        <dcat:downloadURL rdf:resource="https://zenodo.org/record/4060109/files/README.pdf"/>
        <dcat:mediaType>application/pdf</dcat:mediaType>
      </dcat:Distribution>
    </dcat:distribution>
  </rdf:Description>
</rdf:RDF>
93
66
views
downloads
All versions This version
Views 9393
Downloads 6666
Data volume 37.8 MB37.8 MB
Unique views 8181
Unique downloads 5555

Share

Cite as