Abstract types have existential type
ACM Transactions on Programming Languages and Systems (TOPLAS)
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
A type-theoretic approach to higher-order modules with sharing
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Theoretical Computer Science - Special volume on computer algebra
Subtypes for Specifications: Predicate Subtyping in PVS
IEEE Transactions on Software Engineering
Cayenne—a language with dependent types
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Dependent types in practical programming
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
From system F to typed assembly language
ACM Transactions on Programming Languages and Systems (TOPLAS)
Information and Computation
Deciding type equivalence in a language with singleton kinds
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Contracts for higher-order functions
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
A type system for higher-order modules
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Refinement types for specification
PROCOMET '98 Proceedings of the IFIP TC2/WG2.2,2.3 International Conference on Programming Concepts and Methods
Journal of Functional Programming
Faking it Simulating dependent types in Haskell
Journal of Functional Programming
Proceedings of the 2005 ACM SIGPLAN workshop on Haskell
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Polymorphism and separation in hoare type theory
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Extended static checking for haskell
Proceedings of the 2006 ACM SIGPLAN workshop on Haskell
Sound and complete models of contracts
Journal of Functional Programming
Type reconstruction for general refinement types
ESOP'07 Proceedings of the 16th European conference on Programming
System description: ATS: a language that combines programming with theorem proving
FroCoS'05 Proceedings of the 5th international conference on Frontiers of Combining Systems
Dependent types from counterexamples
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Dependent types for JavaScript
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Hi-index | 0.00 |
Simple type systems perform compositional reasoning in that the type of a term depends only on the types of its subterms, and not on their semantics. Contracts offer more expressive abstractions, but static contract checking systems typically violate those abstractions and base their reasoning directly upon the semantics of terms. Pragmatically, this noncompositionality makes the decidability of static checking unpredictable. We first show how compositional reasoning may be restored using standard type-theoretic techniques, namely existential types and subtyping. Despite its compositional nature, our type system is exact, in that the type of a term can completely capture its semantics, hence demonstrating that precision and compositionality are compatible. We then address predictability of static checking for contract types by giving a type-checking algorithm for an important class of programs with contract predicates drawn from a decidable theory. Our algorithm relies crucially on the fact that the type of a term depends only the types of its subterms (which fall into the decidable theory) and not their semantics (which will not, in general).