## Constructor subtyping (1999)

### Cached

### Download Links

- [repositorium.sdum.uminho.pt]
- [ftp-sop.inria.fr]
- [www.di.uminho.pt]
- DBLP

### Other Repositories/Bibliography

Citations: | 7 - 3 self |

### BibTeX

@MISC{Barthe99constructorsubtyping,

author = {Gilles Barthe and Maria Joao Frade},

title = {Constructor subtyping},

year = {1999}

}

### OpenURL

### Abstract

Constructor subtyping is a form of subtyping in which an inductive type is viewed as a subtype of another inductive type Ï if Ï has more constructors than. As suggested in [5, 12], its (potential) uses include proof assistants and functional programming languages. In this paper, we introduce and study the properties of a simply typed Î»-calculus with record types and datatypes, and which supports record subtyping and constructor subtyping. In the first part of the paper, we show that the calculus is confluent and strongly normalizing. In the second part of the paper, we show that the calculus admits a well-behaved theory of canonical inhabitants, provided one adopts expansive extensionality rules, including-expansion, surjective pairing, and a suitable expansion rule for datatypes. Finally, in the third part of the paper, we extend our calculus with unbounded recursion and show that confluence is preserved.

### Citations

1108 | E.A.: Temporal and Modal Logic
- Emerson
- 1990
(Show Context)
Citation Context ...of (P * E) --- if of (E * E * E) --- mlpair of (E * E) --- apply of (E * E) --- let of (P * E * E) --- letrec of (P * E * E) with IsE, NsE ; Lastly, we conclude with a definition of CTL formulae, see =-=[15]-=-. In this example, we consider two datatypes identifiers SF of state formulae and PF of path formulae, both with arity 1. datatype 'a SF = i of ('a * 'a SF) --- conj of ('a SF * 'a SF) --- not of 'a S... |

892 | A Theory of Objects
- Abadi, Cardelli
- 1996
(Show Context)
Citation Context ...lsinteger ; Thirdly, and as pointed out in [5, 12], constructor subtyping provides a suitable framework in which to formalize programming languages, including the object calculi of Abadi and Cardelli =-=[1]-=- and a variety of other languages taken from [29]. Yet another example of language that can be expressed with constructor semantics is mini-ML [22], as shown below. Here we consider four datatypes ide... |

759 | On Understanding Types, Data Abstraction, and Polymorphism
- Cardelli, Wegner
(Show Context)
Citation Context ...f types with a subtyping relationsand to enforce a subsumption rule a : A AsB a : B This basic mechanism of subtyping is powerful enough to capture a variety of concepts in computer science, see e.g. =-=[9]-=-, and its use is spreading both in functional programming languages, see e.g. [25, 30, 31], and in proof assistants, see e.g. [7, 24, 32]. Constructor subtyping is a basic form of subtyping, suggested... |

287 |
The Lambda Calculus. Its Syntax and Semantics, volume 103
- Barendregt
- 1984
(Show Context)
Citation Context ... = an ] j a:l j c[oe] a j case d[oe] a of fc 1 ) b 1 j : : : j c n ) b n g Free and bound variables, substitution :f: := :g are defined the usual way. Moreover we assume standard variable conventions =-=[2]-=- and identify record expressions which only differ in the order of their components, e.g. [l = a; l 0 = a 0 ] and [l 0 = a 0 ; l = a]. All the constructions are the usual ones, except perhaps for case... |

202 | Type systems
- Cardelli
- 1997
(Show Context)
Citation Context ...nd a suitable expansion rule for datatypes. Finally, in the third part of the paper, we extend our calculus with unbounded recursion and show that confluence is preserved. 1 Introduction Type systems =-=[3, 8]-=- lie at the core of modern functional programming languages, such as Haskell [28] or ML [26], and proof assistants, such as Coq [4] or PVS [32]. In order to improve the usability of these languages, i... |

139 | A calculus for overloaded functions with subtyping
- Castagna, Ghelli, et al.
- 1992
(Show Context)
Citation Context ...tions that have a different type. To do so, several options exist: for example, one may require the definitions to be coherent in a certain sense. Alternately, one may exploit some strategy, see e.g. =-=[10, 21]-=-, to disambiguate the definitions. Both approaches deserve further study. Furthermore, we intend to scale up the results of this paper to more complex type systems. 1. Type systems for programming lan... |

85 | Pattern matching with dependent types
- Coquand
- 1992
(Show Context)
Citation Context ...fg@di.uminho.pt Abstract. Constructor subtyping is a form of subtyping in which an inductive type oe is viewed as a subtype of another inductive typesifshas more constructors than oe. As suggested in =-=[5, 12]-=-, its (potential) uses include proof assistants and functional programming languages. In this paper, we introduce and study the properties of a simply typed -calculus with record types and datatypes, ... |

34 | Structural recursive definitions in type theory
- Gimenez
- 1998
(Show Context)
Citation Context ...sn ! d 0 [ff 1 ; : : : ; ff m ] in @. 3.sis a d-constructor type in @, written @ `scoty(d), is defined by the rules of Figure 3, where: -- ff appears positively ins, written ff poss, is defined as in =-=[17]-=-; -- ae is strictly positive w.r.t. d, written ae spos d, is defined as in [17]; -- d 2 @ if there exists a declaration (c : ) 2 @ in which d occurs; 4. @ is a legal datatype context, written @ legal,... |

25 | Adjoint Rewriting
- Ghani
- 1995
(Show Context)
Citation Context ...! fi z:: z :s! oe A similar remark applies to records and case-expressions. 3. ! -like rules for datatypes seem to have received very little attention in the literature. As far as we know, only Ghani =-=[16]-=- proposes a possible such rule (his rule is motivated by categorical considerations) but does not study it in detail. Our expansion rule for datatypes is weaker than the one suggested by Ghani [16] an... |

24 | The impact of the lambda calculus in logic and computer science
- Barendregt
- 1997
(Show Context)
Citation Context ...nd a suitable expansion rule for datatypes. Finally, in the third part of the paper, we extend our calculus with unbounded recursion and show that confluence is preserved. 1 Introduction Type systems =-=[3, 8]-=- lie at the core of modern functional programming languages, such as Haskell [28] or ML [26], and proof assistants, such as Coq [4] or PVS [32]. In order to improve the usability of these languages, i... |

17 |
Dependent Record Types and Algebraic Structures in Type Theory
- Betarte
- 1998
(Show Context)
Citation Context ... enough to capture a variety of concepts in computer science, see e.g. [9], and its use is spreading both in functional programming languages, see e.g. [25, 30, 31], and in proof assistants, see e.g. =-=[7, 24, 32]-=-. Constructor subtyping is a basic form of subtyping, suggested in [12] and developed in [5], in which an inductive type oe is viewed as a subtype of another inductive typesifshas more constructors th... |

17 | Simulating expansions without expansions - Cosmo, Kesner - 1993 |

12 | Typed operational semantics for higher order subtyping
- Compagnoni, Goguen
- 1997
(Show Context)
Citation Context ...work on the design of higher-order typed (HOT) languages, one may envisage extendings!;[];data with further constructs, including bounded quantification [9], objects [1], bounded operator abstraction =-=[11]-=-. We are also interested in scaling up our results to programming languages with dependent types such as DML [33]. The DML type system is based on constraints, and hence it seems possible to consider ... |

8 | A brief history of rewriting with extensionality
- Cosmo
- 1996
(Show Context)
Citation Context ...n. Expansive extensionality rules have numerous applications in categorical rewriting, unification and partial evaluation. In addition to these traditional motivations, which are nicely summarized in =-=[13]-=-, subtyping adds some new fundamental reasons to use expansive rules: 1. contractive rules lead to non-confluent calculi, even on well-typed expressions: if we adopt j-reduction for -abstractions, the... |

8 |
Simulating expansions without expansions
- Cosmo, Kesner
- 1994
(Show Context)
Citation Context ... let ! full+rec denote ! full [ ! rec . We have: Proposition 8. The relation ! full+rec is confluent on typable expressions. Proof. Using a standard technique due to L'evy [23], and exploited e.g. in =-=[14]-=-. The idea is to introduce bounded fixpoints, show that the calculus remains strongly normalizing and confluent, and then use some elementary reasoning on abstract reduction systems to conclude that !... |

5 | The Coq Proof Assistant User's Guide, version 6.1", INRIA Rocquencourt and CNRS-ENS - Barras, Boutin, et al. - 1996 |

4 |
The Coq Proof Assistant User's Guide. Version 6.2
- al
- 1998
(Show Context)
Citation Context ...nd show that confluence is preserved. 1 Introduction Type systems [3, 8] lie at the core of modern functional programming languages, such as Haskell [28] or ML [26], and proof assistants, such as Coq =-=[4]-=- or PVS [32]. In order to improve the usability of these languages, it is important to devise flexible (and safe) type systems, in which programs and proofs may be written easily. A basic mechanism to... |

4 | Order-sorted inductive types
- Barthe
- 1999
(Show Context)
Citation Context ...fg@di.uminho.pt Abstract. Constructor subtyping is a form of subtyping in which an inductive type oe is viewed as a subtype of another inductive typesifshas more constructors than oe. As suggested in =-=[5, 12]-=-, its (potential) uses include proof assistants and functional programming languages. In this paper, we introduce and study the properties of a simply typed -calculus with record types and datatypes, ... |

3 | Structural recursive de nitions in type theory - Gimenez - 1998 |