Software Open Access

Revisiting Iso-Recursive Subtyping

Zhou, Yaoda; Dos Santos Oliveira, Bruno Cesar; Zhao, Jinxu

MARC21 XML Export

<?xml version='1.0' encoding='UTF-8'?>
<record xmlns="">
  <datafield tag="041" ind1=" " ind2=" ">
    <subfield code="a">eng</subfield>
  <controlfield tag="005">20200917125931.0</controlfield>
  <controlfield tag="001">4034438</controlfield>
  <datafield tag="700" ind1=" " ind2=" ">
    <subfield code="u">The University of Hong Kong</subfield>
    <subfield code="0">(orcid)0000-0002-8632-2291</subfield>
    <subfield code="a">Dos Santos Oliveira, Bruno Cesar</subfield>
  <datafield tag="700" ind1=" " ind2=" ">
    <subfield code="u">The University of Hong Kong</subfield>
    <subfield code="a">Zhao, Jinxu</subfield>
  <datafield tag="856" ind1="4" ind2=" ">
    <subfield code="s">1066</subfield>
    <subfield code="z">md5:a21c59d0814e1e02c396f0751564482a</subfield>
    <subfield code="u"> License</subfield>
  <datafield tag="856" ind1="4" ind2=" ">
    <subfield code="s">113468</subfield>
    <subfield code="z">md5:29eae91a6a0e0daf0055dd4077992c13</subfield>
    <subfield code="u"></subfield>
  <datafield tag="856" ind1="4" ind2=" ">
    <subfield code="s">165</subfield>
    <subfield code="z">md5:0aa23aa308584f80dd0dea5237308936</subfield>
    <subfield code="u"></subfield>
  <datafield tag="542" ind1=" " ind2=" ">
    <subfield code="l">open</subfield>
  <datafield tag="260" ind1=" " ind2=" ">
    <subfield code="c">2020-09-17</subfield>
  <datafield tag="909" ind1="C" ind2="O">
    <subfield code="p">software</subfield>
    <subfield code="o"></subfield>
  <datafield tag="100" ind1=" " ind2=" ">
    <subfield code="u">The University of Hong Kong</subfield>
    <subfield code="a">Zhou, Yaoda</subfield>
  <datafield tag="245" ind1=" " ind2=" ">
    <subfield code="a">Revisiting Iso-Recursive Subtyping</subfield>
  <datafield tag="540" ind1=" " ind2=" ">
    <subfield code="u"></subfield>
    <subfield code="a">Creative Commons Attribution 1.0 Generic</subfield>
  <datafield tag="650" ind1="1" ind2="7">
    <subfield code="a">cc-by</subfield>
    <subfield code="2"></subfield>
  <datafield tag="520" ind1=" " ind2=" ">
    <subfield code="a">&lt;p&gt;The Amber rules are well-known and widely used for subtyping&lt;/p&gt;

&lt;p&gt;iso-recursive types. They were first briefly and informally introduced&lt;/p&gt;

&lt;p&gt;in 1985 by Cardelli in a manuscript describing the Amber&lt;/p&gt;


&lt;p&gt;Despite their use over many years, important aspects of the metatheory of the iso-recursive&lt;/p&gt;

&lt;p&gt;style Amber rules have not been studied in depth or turn out to be&lt;/p&gt;

&lt;p&gt;quite challenging to formalize.&lt;/p&gt;


&lt;p&gt;This paper aims to revisit the problem of subtyping iso-recursive&lt;/p&gt;

&lt;p&gt;types. We start by introducing a novel declarative specification&lt;/p&gt;

&lt;p&gt;that we believe captures the ``spirit&amp;#39;&amp;#39; of Amber-style&lt;/p&gt;

&lt;p&gt;iso-recursive subtyping. Informally, the specification states that&lt;/p&gt;

&lt;p&gt;two recursive types are subtypes \emph{if all their finite&lt;/p&gt;

&lt;p&gt;unfoldings are subtypes}. The Amber rules are shown to be sound&lt;/p&gt;

&lt;p&gt;with respect to this declarative specification. We then derive a&lt;/p&gt;

&lt;p&gt;\emph{sound}, \emph{complete} and \emph{decidable} algorithmic&lt;/p&gt;

&lt;p&gt;formulation of subtyping that employs a novel \emph{double&lt;/p&gt;

&lt;p&gt;unfolding} rule. Compared to the Amber rules, the double&lt;/p&gt;

&lt;p&gt;unfolding rule has the advantage of: 1) being modular; 2)&lt;/p&gt;

&lt;p&gt;not requiring reflexivity to be built in; and 3) leading to&lt;/p&gt;

&lt;p&gt;an easy proof of transitivity of subtyping. This work&lt;/p&gt;

&lt;p&gt;sheds new insights on the theory of subtyping iso-recursive types,&lt;/p&gt;

&lt;p&gt;and the new double unfolding rule has important advantages over&lt;/p&gt;

&lt;p&gt;the original Amber rules for both implementations and&lt;/p&gt;

&lt;p&gt;metatheoretical studies involving recursive types. All results&lt;/p&gt;

&lt;p&gt;are mechanically formalized in the Coq theorem prover. As far as&lt;/p&gt;

&lt;p&gt;we know, this is the first comprehensive treatment of iso-recursive&lt;/p&gt;

&lt;p&gt;subtyping dealing with unrestricted recursive types in a theorem prover.&lt;/p&gt;</subfield>
  <datafield tag="773" ind1=" " ind2=" ">
    <subfield code="n">doi</subfield>
    <subfield code="i">isVersionOf</subfield>
    <subfield code="a">10.5281/zenodo.4034437</subfield>
  <datafield tag="024" ind1=" " ind2=" ">
    <subfield code="a">10.5281/zenodo.4034438</subfield>
    <subfield code="2">doi</subfield>
  <datafield tag="980" ind1=" " ind2=" ">
    <subfield code="a">software</subfield>
All versions This version
Views 7070
Downloads 1919
Data volume 579.6 kB579.6 kB
Unique views 6767
Unique downloads 1616


Cite as