Detecting equality of variables in programs
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Global value numbers and redundant computations
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Partial online cycle elimination in inclusion constraint graphs
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Fast Probabilistic Algorithms for Verification of Polynomial Identities
Journal of the ACM (JACM)
Translation validation for an optimizing compiler
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Dynamically Discovering Likely Program Invariants to Support Program Evolution
IEEE Transactions on Software Engineering - Special issue on 1999 international conference on software engineering
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
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
TACAS '98 Proceedings of the 4th International Conference on Tools and Algorithms for Construction and Analysis of Systems
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
Proceedings of the 5th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Precise interprocedural analysis using random interpretation
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A randomized satisfiability procedure for arithmetic and uninterpreted function symbols
Information and Computation - Special issue: 19th international conference on automated deduction (CADE-19)
Combining abstract interpreters
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Program verification as probabilistic inference
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Whole-program linear-constant analysis with applications to link-time optimization
SCOPES '07 Proceedingsof the 10th international workshop on Software & compilers for embedded systems
Analysis of modular arithmetic
ACM Transactions on Programming Languages and Systems (TOPLAS) - Special Issue ESOP'05
Inferring Congruence Equations Using SAT
CAV '08 Proceedings of the 20th international conference on Computer Aided Verification
Loop-extended symbolic execution on binary programs
Proceedings of the eighteenth international symposium on Software testing and analysis
A randomized satisfiability procedure for arithmetic and uninterpreted function symbols
Information and Computation - Special issue: 19th international conference on automated deduction (CADE-19)
Automatic invariant generation for hybrid systems using ideal fixed points
Proceedings of the 13th ACM international conference on Hybrid systems: computation and control
Software integrity checking expressions (ICEs) for robust tamper detection
IH'07 Proceedings of the 9th international conference on Information hiding
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
Abstract domains of affine relations
SAS'11 Proceedings of the 18th international conference on Static analysis
Interprocedurally analyzing polynomial identities
STACS'06 Proceedings of the 23rd Annual conference on Theoretical Aspects of Computer Science
An abstract domain to discover interval linear equalities
VMCAI'10 Proceedings of the 11th international conference on Verification, Model Checking, and Abstract Interpretation
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
A generic framework for interprocedural analysis of numerical properties
SAS'05 Proceedings of the 12th international conference on Static Analysis
Assertion checking over combined abstraction of linear arithmetic and uninterpreted functions
ESOP'06 Proceedings of the 15th European conference on Programming Languages and Systems
Discovering invariants via simple component analysis
Journal of Symbolic Computation
Hi-index | 0.00 |
We present a new polynomial-time randomized algorithm for discovering affine equalities involving variables in a program. The key idea of the algorithm is to execute a code fragment on a few random inputs, but in such a way that all paths are covered on each run. This makes it possible to rule out invalid relationships even with very few runs.The algorithm is based on two main techniques. First, both branches of a conditional are executed on each run and at joint points we perform an affine combination of the joining states. Secondly, in the branches of an equality conditional we adjust the data values on the fly to reflect the truth value of the guarding boolean expression. This increases the number of affine equalities that the analysis discovers.The algorithm is simpler to implement than alternative deterministic versions, has better computational complexity, and has an extremely small probability of error for even a small number of runs. This algorithm is an example of how randomization can provide a trade-off between the cost and complexity of program analysis, and a small probability of unsoundness.