Subtyping Recursive Types
Identifieur interne : 00D698 ( Main/Merge ); précédent : 00D697; suivant : 00D699Subtyping Recursive Types
Auteurs : R. Amadio ; L. CardelliSource :
- ACM Transactions on Programming Languages and Systems ; 1993.
Abstract
We investigate the interactions of subtyping and recursive types in a simply typed lambda calculus. The two fundamental questions here are whether two (recursive) types are in the subtype relation and whether a term has a type. To address the first question, we relate various definitions of type equivalence and subtyping that are induced by a model, an ordering on infinite trees, an algorithm, and a set of type rules. We show soundness and completeness among the rules, the algorithm, and the tree semantics. We also prove soundness and a restricted form of completeness for the model. To address the second question, we show that to every pair of types in the subtype relation we can associate a term whose denotation is the uniquely determined coercion map between two types. Moreover we derive an algorithm that, when given a term with implicit coercions, can infer its least type whenever possible.
Links toward previous steps (curation, corpus...)
- to stream Crin, to step Corpus: 001257
- to stream Crin, to step Curation: 001257
- to stream Crin, to step Checkpoint: 003226
Links to Exploration step
CRIN:amadio93aLe document en format XML
<record><TEI><teiHeader><fileDesc><titleStmt><title xml:lang="fr" wicri:score="-44">Subtyping Recursive Types</title>
</titleStmt>
<publicationStmt><idno type="RBID">CRIN:amadio93a</idno>
<date when="1993" year="1993">1993</date>
<idno type="wicri:Area/Crin/Corpus">001257</idno>
<idno type="wicri:Area/Crin/Curation">001257</idno>
<idno type="wicri:explorRef" wicri:stream="Crin" wicri:step="Curation">001257</idno>
<idno type="wicri:Area/Crin/Checkpoint">003226</idno>
<idno type="wicri:explorRef" wicri:stream="Crin" wicri:step="Checkpoint">003226</idno>
<idno type="wicri:Area/Main/Merge">00D698</idno>
</publicationStmt>
<sourceDesc><biblStruct><analytic><title xml:lang="fr">Subtyping Recursive Types</title>
<author><name sortKey="Amadio, R" sort="Amadio, R" uniqKey="Amadio R" first="R." last="Amadio">R. Amadio</name>
</author>
<author><name sortKey="Cardelli, L" sort="Cardelli, L" uniqKey="Cardelli L" first="L." last="Cardelli">L. Cardelli</name>
</author>
</analytic>
<series><title level="j">ACM Transactions on Programming Languages and Systems</title>
<imprint><date when="1993" type="published">1993</date>
</imprint>
</series>
</biblStruct>
</sourceDesc>
</fileDesc>
<profileDesc><textClass></textClass>
</profileDesc>
</teiHeader>
<front><div type="abstract" xml:lang="en" wicri:score="1313">We investigate the interactions of subtyping and recursive types in a simply typed lambda calculus. The two fundamental questions here are whether two (recursive) types are in the subtype relation and whether a term has a type. To address the first question, we relate various definitions of type equivalence and subtyping that are induced by a model, an ordering on infinite trees, an algorithm, and a set of type rules. We show soundness and completeness among the rules, the algorithm, and the tree semantics. We also prove soundness and a restricted form of completeness for the model. To address the second question, we show that to every pair of types in the subtype relation we can associate a term whose denotation is the uniquely determined coercion map between two types. Moreover we derive an algorithm that, when given a term with implicit coercions, can infer its least type whenever possible.</div>
</front>
</TEI>
</record>
Pour manipuler ce document sous Unix (Dilib)
EXPLOR_STEP=$WICRI_ROOT/Wicri/Lorraine/explor/InforLorV4/Data/Main/Merge
HfdSelect -h $EXPLOR_STEP/biblio.hfd -nk 00D698 | SxmlIndent | more
Ou
HfdSelect -h $EXPLOR_AREA/Data/Main/Merge/biblio.hfd -nk 00D698 | SxmlIndent | more
Pour mettre un lien sur cette page dans le réseau Wicri
{{Explor lien |wiki= Wicri/Lorraine |area= InforLorV4 |flux= Main |étape= Merge |type= RBID |clé= CRIN:amadio93a |texte= Subtyping Recursive Types }}
![]() | This area was generated with Dilib version V0.6.33. | ![]() |