ACM Transactions on Programming Languages and Systems (TOPLAS)
Proceedings of the ACM SIGPLAN 1999 conference on Programming language design and implementation
Type definitions with parameters
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
The Definition of Standard ML
Coinductive Axiomatization of Recursive Type Equality and Subtyping
TLCA '97 Proceedings of the Third International Conference on Typed Lambda Calculi and Applications
The Equivalence Problem for Deterministic Pushdown Automata is Decidable
ICALP '97 Proceedings of the 24th International Colloquium on Automata, Languages and Programming
An ideal model for recursive polymorphic types
POPL '84 Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Journal of Functional Programming
Modeling abstract types in modules with open existential types
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Subtyping, declaratively: an exercise in mixed induction and coinduction
MPC'10 Proceedings of the 10th international conference on Mathematics of program construction
A syntactic type system for recursive modules
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Subtyping by folding an inductive relation into a coinductive one
TFP'11 Proceedings of the 12th international conference on Trends in Functional Programming
Mixin’ Up the ML Module System
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 0.00 |
Although theories of equivalence or subtyping for recursive types have been extensively investigated, sophisticated interaction between recursive types and abstract types has gained little attention. The key idea behind type theories for recursive types is to use syntactic contractiveness, meaning every μ-bound variable occurs only under a type constructor such as → or ∗. This syntactic contractiveness guarantees the existence of the unique solution of recursive equations and thus has been considered necessary for designing a sound theory for recursive types. However, in an advanced type system, such as OCaml, with recursive types, type parameters, and abstract types, we cannot easily define the syntactic contractiveness of types. In this paper, we investigate a sound type system for recursive types, type parameters, and abstract types. In particular, we develop a new semantic notion of contractiveness for types and signatures using mixed induction and coinduction, and show that our type system is sound with respect to the standard call-by-value operational semantics, which eliminates signature sealings. Moreover we show that while non-contractive types in signatures lead to unsoundness of the type system, they may be allowed in modules. We have also formalized the whole system and its type soundness proof in Coq.