Implementing mathematics with the Nuprl proof development system
Implementing mathematics with the Nuprl proof development system
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Eiffel: the language
Eliminating array bound checking through dependent types
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Annotation inference for modular checkers
Information Processing Letters - Special issue in honor of Edsger W. Dijkstra
Types and programming languages
Types and programming languages
Contracts for higher-order functions
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Construction of Abstract State Graphs with PVS
CAV '97 Proceedings of the 9th International Conference on Computer Aided Verification
Interactive Theorem Proving and Program Development
Interactive Theorem Proving and Program Development
A framework for numeric analysis of array operations
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Type-level Computation Using Narrowing in Ωmega
Electronic Notes in Theoretical Computer Science (ENTCS)
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Type-based data structure verification
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Array abstractions from proofs
CAV'07 Proceedings of the 19th international conference on Computer aided verification
TACAS'08/ETAPS'08 Proceedings of the Theory and practice of software, 14th international conference on Tools and algorithms for the construction and analysis of systems
Refinement types for secure implementations
ACM Transactions on Programming Languages and Systems (TOPLAS)
A parametric segmentation functor for fully automatic and scalable array content analysis
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ESOP'11/ETAPS'11 Proceedings of the 20th European conference on Programming languages and systems: part of the joint European conferences on theory and practice of software
Verified Security for Browser Extensions
SP '11 Proceedings of the 2011 IEEE Symposium on Security and Privacy
Secure distributed programming with value-dependent types
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Modular code-based cryptographic verification
Proceedings of the 18th ACM conference on Computer and communications security
Equality proofs and deferred type errors: a compiler pearl
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Hi-index | 0.00 |
We present abstract refinement types which enable quantification over the refinements of data- and function-types. Our key insight is that we can avail of quantification while preserving SMT-based decidability, simply by encoding refinement parameters as uninterpreted propositions within the refinement logic. We illustrate how this mechanism yields a variety of sophisticated means for reasoning about programs, including: parametric refinements for reasoning with type classes, index-dependent refinements for reasoning about key-value maps, recursive refinements for reasoning about recursive data types, and inductive refinements for reasoning about higher-order traversal routines. We have implemented our approach in a refinement type checker for Haskell and present experiments using our tool to verify correctness invariants of various programs.