Typestate: A programming language concept for enhancing software reliability
IEEE Transactions on Software Engineering
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Avoiding exponential explosion: generating compact verification conditions
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Enforcing high-level protocols in low-level software
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Automatic predicate abstraction of C programs
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
The pointer assertion logic engine
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Adoption and focus: practical linear types for imperative programming
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Automatic discovery of linear restraints among variables of a program
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Parametric shape analysis via 3-valued logic
ACM Transactions on Programming Languages and Systems (TOPLAS)
Systematic design of program analysis frameworks
POPL '79 Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Performance Analysis of Parallelizing Compilers on the Perfect Benchmarks Programs
IEEE Transactions on Parallel and Distributed Systems
Fickle: Dynamic Object Re-classification
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Relative Completeness of Abstraction Refinement for Software Model Checking
TACAS '02 Proceedings of the 8th International Conference on Tools and Algorithms for the Construction and Analysis of Systems
CIAA '00 Revised Papers from the 5th International Conference on Implementation and Application of Automata
Declaring and checking non-null types in an object-oriented language
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Typestate verification: abstraction techniques and complexity results
SAS'03 Proceedings of the 10th international conference on Static analysis
Crosscutting techniques in program specification and analysis
Proceedings of the 4th international conference on Aspect-oriented software development
Exploring the acceptability envelope
OOPSLA '05 Companion to the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Extending separation logic with fixpoints and postponed substitution
Theoretical Computer Science - Algebraic methodology and software technology
Modular Pluggable Analyses for Data Structure Consistency
IEEE Transactions on Software Engineering
Static specification inference using predicate mining
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Companion to the 22nd ACM SIGPLAN conference on Object-oriented programming systems and applications companion
Implications of a Data Structure Consistency Checking System
Verified Software: Theories, Tools, Experiments
Protocol Inference Using Static Path Profiles
SAS '08 Proceedings of the 15th international symposium on Static Analysis
Types and higher-order recursion schemes for verification of higher-order programs
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Checking semantic usage of frameworks
LCSD '07 Proceedings of the 2007 Symposium on Library-Centric Software Design
Verified abstractions on developers' desks
International Workshop on Aliasing, Confinement and Ownership in Object-Oriented Programming
CAV '09 Proceedings of the 21st International Conference on Computer Aided Verification
CADE-22 Proceedings of the 22nd International Conference on Automated Deduction
Decision Procedures for Set-Valued Fields
Electronic Notes in Theoretical Computer Science (ENTCS)
Decision procedures for algebraic data types with abstractions
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Polynomial constraints for sets with cardinality bounds
FOSSACS'07 Proceedings of the 10th international conference on Foundations of software science and computational structures
An overview of the Jahob analysis system: project goals and current status
IPDPS'06 Proceedings of the 20th international conference on Parallel and distributed processing
Precise reasoning for programs using containers
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Towards complete reasoning about axiomatic specifications
VMCAI'11 Proceedings of the 12th international conference on Verification, model checking, and abstract interpretation
Sets with cardinality constraints in satisfiability modulo theories
VMCAI'11 Proceedings of the 12th international conference on Verification, model checking, and abstract interpretation
APLAS'10 Proceedings of the 8th Asian conference on Programming languages and systems
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Verification of semantic commutativity conditions and inverse operations on linked data structures
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Hob: a tool for verifying data structure consistency
CC'05 Proceedings of the 14th international conference on Compiler Construction
VMCAI'06 Proceedings of the 7th international conference on Verification, Model Checking, and Abstract Interpretation
An algorithm for deciding BAPA: boolean algebra with presburger arithmetic
CADE' 20 Proceedings of the 20th international conference on Automated Deduction
An introduction to data representation synthesis
Communications of the ACM
Hi-index | 0.02 |
We present an analysis to verify abstract set specifications for programs that use object field values to determine the membership of objects in abstract sets. In our approach, each module may encapsulate several data structures and use membership in abstract sets to characterize how objects participate in its data structures. Each module's specification uses set algebra formulas to characterize the effects of its operations on the abstract sets. The program may define abstract set membership in a variety of ways; arbitrary analyses (potentially with multiple analyses applied to different modules in the same program) may verify the corresponding set specifications. The analysis we present in this paper verifies set specifications by constructing and verifying set algebra formulas whose validity implies the validity of the set specifications. We have implemented our analysis and annotated several programs (75-2500 lines of code) with set specifications. We found that our original analysis algorithm did not scale; this paper describes several optimizations that improve the scalability of our analysis. It also presents experimental data comparing the original and optimized versions of our analysis.