PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Proceedings of the ACM SIGPLAN 1999 conference on Programming language design and implementation
Type inference with constrained types
Theory and Practice of Object Systems - Special issue on foundations of object-oriented languages
Intersection types and computational effects
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Automatic predicate abstraction of C programs
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Flow-sensitive type qualifiers
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Construction of Abstract State Graphs with PVS
CAV '97 Proceedings of the 9th International Conference on Computer Aided Verification
An effective theory of type refinements
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
A framework for implementing pluggable type systems
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Type qualifier inference for java
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
A generic type-and-effect system
Proceedings of the 4th international workshop on Types in language design and implementation
JavaCOP: Declarative pluggable types for java
ACM Transactions on Programming Languages and Systems (TOPLAS)
Java bytecode verification for @NonNull types
CC'08/ETAPS'08 Proceedings of the Joint European Conferences on Theory and Practice of Software 17th international conference on Compiler construction
Formalisation and implementation of an algorithm for bytecode verification of @NonNull types
Science of Computer Programming
Tunable static inference for generic universe types
Proceedings of the 25th European conference on Object-oriented programming
Static typing with value space-based subtyping
Proceedings of the South African Institute of Computer Scientists and Information Technologists Conference on Knowledge, Innovation and Leadership in a Diverse, Multidisciplinary Environment
Implementing a Language with Flow-Sensitive and Structural Typing on the JVM
Electronic Notes in Theoretical Computer Science (ENTCS)
ARCS'12 Proceedings of the 25th international conference on Architecture of Computing Systems
Inference and checking of object ownership
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
Reim & ReImInfer: checking and inference of reference immutability and method purity
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Aliasing in Object-Oriented Programming
Hi-index | 0.00 |
In previous work, we described a new approach to supporting user-defined type qualifiers, which augment existing types to specify and check additional properties of interest. For each qualifier, users define a set of rules that are enforced during static typechecking of programs. Separately, these rules are automatically validated with respect to a user-defined predicate that formalizes the qualifier's intended run-time invariant. We instantiated this approach as a framework for user-defined type qualifiers in C programs, called Clarity. In this paper, we extend our earlier approach by resolving two usability issues. First, we show how to perform qualifier inference in the presence of user-defined rules by generating and solving a system of conditional set constraints, thereby relieving users of the burden of explicitly annotating programs. Second, we show how to automatically infer rules that respect a given user-defined invariant, thereby relieving qualifier designers of the burden of manually producing such rules. We have formalized both qualifier and rule inference and proven their correctness. We have also extended Clarity to support qualifier and rule inference, and we illustrate their utility in practice through experiments with several type qualifiers and open-source C programs.