Unification in a combination of arbitrary disjoint equational theories
Journal of Symbolic Computation
Detecting equality of variables in programs
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Simplification by Cooperating Decision Procedures
ACM Transactions on Programming Languages and Systems (TOPLAS)
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
A unified approach to global program optimization
POPL '73 Proceedings of the 1st annual ACM SIGACT-SIGPLAN symposium on Principles of programming languages
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Discovering affine equalities using random interpretation
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Validity Checking for Combinations of Theories with Equality
FMCAD '96 Proceedings of the First International Conference on Formal Methods in Computer-Aided Design
Unification in the Union of Disjoint Equational Theories: Combining Decision Procedures
CADE-11 Proceedings of the 11th International Conference on Automated Deduction: Automated Deduction
Journal of Automated Reasoning
Precise interprocedural analysis through linear algebra
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Global value numbering using random interpretation
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Precise interprocedural analysis using random interpretation
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Checking herbrand equalities and beyond
VMCAI'05 Proceedings of the 6th international conference on Verification, Model Checking, and Abstract Interpretation
Analysis of modular arithmetic
ESOP'05 Proceedings of the 14th European conference on Programming Languages and Systems
Combining abstract interpreters
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Logical Interpretation: Static Program Analysis Using Theorem Proving
CADE-21 Proceedings of the 21st international conference on Automated Deduction: Automated Deduction
Program analysis for compiler validation
Proceedings of the 8th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Automated deduction for verification
ACM Computing Surveys (CSUR)
Invariant Checking for Programs with Procedure Calls
SAS '09 Proceedings of the 16th International Symposium on Static Analysis
A Smooth Combination of Linear and Herbrand Equalities for Polynomial Time Must-Alias Analysis
FM '09 Proceedings of the 2nd World Congress on Formal Methods
Computing procedure summaries for interprocedural analysis
ESOP'07 Proceedings of the 16th European conference on Programming
VMCAI'07 Proceedings of the 8th international conference on Verification, model checking, and abstract interpretation
Combining equational reasoning
FroCoS'09 Proceedings of the 7th international conference on Frontiers of combining systems
Arithmetic strengthening for shape analysis
SAS'07 Proceedings of the 14th international conference on Static Analysis
Hi-index | 0.00 |
This paper presents results on the problem of checking equality assertions in programs whose expressions have been abstracted using combination of linear arithmetic and uninterpreted functions, and whose conditionals are treated as non-deterministic. We first show that the problem of assertion checking for this combined abstraction is coNP-hard, even for loop-free programs. This result is quite surprising since assertion checking for the individual abstractions of linear arithmetic and uninterpreted functions can be performed efficiently in polynomial time. Next, we give an assertion checking algorithm for this combined abstraction, thereby proving decidability of this problem despite the underlying lattice having infinite height. Our algorithm is based on an important connection between unification theory and program analysis. Specifically, we show that weakest preconditions can be strengthened by replacing equalities by their unifiers, without losing any precision, during backward analysis of programs.