Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
CAAP '90 Proceedings of the fifteenth colloquium on CAAP'90
Type inference with recursive types: syntax and semantics
Information and Computation
Inheritance as implicit coercion
Information and Computation
Research topics in functional programming
Co-induction in relational semantics
Theoretical Computer Science
Semantics of programming languages: structures and techniques
Semantics of programming languages: structures and techniques
ACM Transactions on Programming Languages and Systems (TOPLAS)
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A completeness theorem for Kleene algebras and the algebra of regular events
Papers presented at the IEEE symposium on Logic in computer science
Infinite objects in type theory
TYPES '93 Proceedings of the international workshop on Types for proofs and programs
Dynamic typing: syntax and proof theory
ESOP'92 Selected papers of the symposium on Fourth European symposium on programming
Two Complete Axiom Systems for the Algebra of Regular Events
Journal of the ACM (JACM)
Final Semantics for untyped lambda-calculus
TLCA '95 Proceedings of the Second International Conference on Typed Lambda Calculi and Applications
Results on the Propositional µ-Calculus
Proceedings of the 9th Colloquium on Automata, Languages and Programming
Final Semantics for a Higher Order Concurrent Language
CAAP '96 Proceedings of the 21st International Colloquium on Trees in Algebra and Programming
Syntactic Considerations on Recursive Types
LICS '96 Proceedings of the 11th Annual IEEE Symposium on Logic in Computer Science
Propositional modal logic of programs
STOC '77 Proceedings of the ninth annual ACM symposium on Theory of computing
Equational term graph rewriting
Equational term graph rewriting
Fair subtyping for open session types
ICALP'13 Proceedings of the 40th international conference on Automata, Languages, and Programming - Volume Part II
Hi-index | 0.00 |
We present new sound and complete axiomatizations of type equality and subtype inequality for a first-order type language with regular recursive types. The rules are motivated by coinductive characterizations of type containment and type equality via simulation and bisimulation, respectively. The main novelty of the axiomatization is the fixpoint rule (or coinduction principle). It states that from A,P $$\vdash$$ P one may deduce A $$\vdash$$ P, where P is either a type equality τ = τ' or type containment τ ≤ τ' and the proof of the premise must be contractive in a sense we define in this paper. In particular, a proof of A, P $$\vdash$$ P using the assumption axiom is not contractive. The fixpoint rule embodies a finitary coinduction principle and thus allows us to capture a coinductive relation in the fundamentally inductive framework of inference systems. The new axiomatizations are more concise than previous axiomatizations, particularly so for type containment since no separate axiomatization of type equality is required, as in Amadio and Cardelli's axiomatization. They give rise to a natural operational interpretation of proofs as coercions. In particular, the fixpoint rule corresponds to definition by recursion. Finally, the axiomatization is closely related to (known) efficient algorithms for deciding type equality and type containment. These can be modified to not only decide type equality and type containment, but also construct proofs in our axiomatizations efficiently. In connection with the operational interpretation of proofs as coercions this gives efficient (O(n 2) time) algorithms for constructing efficient coercions from a type to any of its supertypes or isomorphic types. More generally, we show how adding the fixpoint rule makes it possible to characterize inductively a set that is coinductively defined as the kernel (greatest fixed point) of an inference system.