A semantics of multiple inheritance.
Proc. of the international symposium on Semantics of data types
Views: a way for pattern matching to cohabit with data abstraction
POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Automating reasoning in an implementation of constructive type theory
Automating reasoning in an implementation of constructive type theory
Combinatory reduction systems: introduction and survey
Theoretical Computer Science - A collection of contributions in honour of Corrado Bo¨hm on the occasion of his 70th birthday
Computation and reasoning: a type theory for computer science
Computation and reasoning: a type theory for computer science
Typing algorithm in type theory with inheritance
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Type inference for pure type systems
Information and Computation
Isomorphisms of Types: From Lambda-Calculus to Information Retrieval and Language Design
Isomorphisms of Types: From Lambda-Calculus to Information Retrieval and Language Design
Full integration of subtyping and if-expression
Proceedings of the 4th ACM SIGPLAN international conference on Principles and practice of declarative programming
An Implementation of LF with Coercive Subtyping & Universes
Journal of Automated Reasoning
Generalization and Reuse of Tactic Proofs
LPAR '94 Proceedings of the 5th International Conference on Logic Programming and Automated Reasoning
A short and flexible proof of Strong Normalization for the Calculus of Constructions
TYPES '94 Selected papers from the International Workshop on Types for Proofs and Programs
Implicit Coercions in Type Systems
TYPES '95 Selected papers from the International Workshop on Types for Proofs and Programs
A Two-Level Approach Towards Lean Proof-Checking
TYPES '95 Selected papers from the International Workshop on Types for Proofs and Programs
Changing Data Structures in Type Theory: A Study of Natural Numbers
TYPES '00 Selected papers from the International Workshop on Types for Proofs and Programs
Generalization in Type Theory Based Proof Assistants
TYPES '00 Selected papers from the International Workshop on Types for Proofs and Programs
Coercive Subtyping in Type Theory
CSL '96 Selected Papers from the10th International Workshop on Computer Science Logic
LICS '96 Proceedings of the 11th Annual IEEE Symposium on Logic in Computer Science
Journal of Functional Programming
Journal of Functional Programming
Type-checking injective pure type systems
Journal of Functional Programming
Weak transitivity in coercive subtyping
TYPES'02 Proceedings of the 2002 international conference on Types for proofs and programs
The not so simple proof-irrelevant model of CC
TYPES'02 Proceedings of the 2002 international conference on Types for proofs and programs
Isabelle/HOL: a proof assistant for higher-order logic
Isabelle/HOL: a proof assistant for higher-order logic
Hi-index | 0.00 |
Type isomorphisms are pairs of functions $f:A\rightarrow B$ and $g:B\rightarrow A$ that are mutually inverse with respect to convertibility. They can be used in the context of type checking to perform type checking modulo type isomorphisms, by adopting the rule $$\frac{a:A}{a:B}$$ whenever $f:A\rightarrow B$ and $g:B\rightarrow A$ have been declared as type isomorphisms. Type isomorphisms may be viewed as a special instance of coercions that provide embeddings of one type into another. Indeed, type systems for coercive subtyping feature a rule $$\frac{a:A}{a:B}$$ whenever there exists a coercion $f:A\rightarrow B$. By declaring $f$ and $g$ as coercions for every type isomorphism $f:A\rightarrow B$ and $g:B\rightarrow A$, one can simulate type-checking modulo type isomorphisms. However, the proposed encoding relies on the possibility of declaring coercions $f:A\rightarrow B$ and $g:B\rightarrow A$ simultaneously. Such coercions, which we call back-and-forth coercions, are only allowed provided $f$ and $g$ are mutually inverse. In principle, type isomorphisms, viewed as back-and-forth coercions, could be used in the context of proof assistants based on dependent type theory in order to relate equivalent representations of mathematical notions, for example, the polar and cartesian representations of complex numbers. However, the coercions that map one representation into another are not mutually inverse because of the intensional nature of dependent type theories. Consequently, the standard concept of type isomorphisms has limited applicability in the context of proof assistants.In order to circumvent this problem, we develop a computational interpretation of implicit coercions that allows for the definition of back-and-forth coercions without requiring them to be mutually inverse. We illustrate the usefulness of our approach in a number of formal developments that require us to navigate between different representations of mathematical objects or structures. We also discuss important meta-theoretical properties of our interpretation.