A framework for defining logics
Journal of the ACM (JACM)
Refinement types for ML
Theoretical Computer Science
Toward a foundational typed assembly language
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Handbook of automated reasoning
On equivalence and canonical forms in the LF type theory
ACM Transactions on Computational Logic (TOCL)
Practical refinement-type checking
Practical refinement-type checking
Towards a mechanized metatheory of standard ML
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Mechanizing metatheory in a logical framework
Journal of Functional Programming
ACM Transactions on Computational Logic (TOCL)
Proceedings of the 3rd workshop on Programming languages meets program verification
Refinement Types as Proof Irrelevance
TLCA '09 Proceedings of the 9th International Conference on Typed Lambda Calculi and Applications
Coercive subtyping in lambda-free logical frameworks
Proceedings of the Fourth International Workshop on Logical Frameworks and Meta-Languages: Theory and Practice
Greedy bidirectional polymorphism
Proceedings of the 2009 ACM SIGPLAN workshop on ML
Hi-index | 0.00 |
We present a system of refinement types for LF in the style of recent formulations where only canonical forms are well-typed. Both the usual LF rules and the rules for type refinements are bidirectional, leading to a straightforward proof of decidability of type-checking even in the presence of intersection types. Because we insist on canonical forms, structural rules for subtyping can now be derived rather than being assumed as primitive. We illustrate the expressive power of our system with several examples in the domain of logics and programming languages.