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
The value flow graph: a program representation for optimal program transformations
Proceedings of the third European symposium on programming on ESOP '90
Principles of automated theorem proving
Principles of automated theorem proving
Combining analyses, combining optimizations
ACM Transactions on Programming Languages and Systems (TOPLAS)
Software—Practice & Experience
A sparse algorithm for predicated global value numbering
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
A unified approach to global program optimization
POPL '73 Proceedings of the 1st annual ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Symbolic evaluation and the global value graph
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Computers and Intractability: A Guide to the Theory of NP-Completeness
Computers and Intractability: A Guide to the Theory of NP-Completeness
Code Motion and Code Placement: Just Synonyms?
ESOP '98 Proceedings of the 7th European Symposium on Programming: Programming Languages and Systems
On the Complexity of Constant Propagation
ESOP '01 Proceedings of the 10th European Symposium on Programming Languages and Systems
Efficient Code Motion and an Adaption to Strength Reduction
TAPSOFT '91 Proceedings of the International Joint Conference on Theory and Practice of Software Development, Volume 2: Advances in Distributed Computing (ADC) and Colloquium on Combining Paradigms for Software Developmemnt (CCPSD)
Polynomial Constants Are Decidable
SAS '02 Proceedings of the 9th International Symposium on Static Analysis
Detecting Equalities of Variables: Combining Efficiency with Precision
SAS '99 Proceedings of the 6th International Symposium on Static Analysis
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
Computing polynomial program invariants
Information Processing Letters
Programming languages and their compilers: Preliminary notes
Programming languages and their compilers: Preliminary notes
A polynomial-time algorithm for global value numbering
Science of Computer Programming
Logical Interpretation: Static Program Analysis Using Theorem Proving
CADE-21 Proceedings of the 21st international conference on Automated Deduction: Automated Deduction
Invariant Checking for Programs with Procedure Calls
SAS '09 Proceedings of the 16th International Symposium on Static Analysis
Context unification with one context variable
Journal of Symbolic Computation
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
Upper adjoints for fast inter-procedural variable equalities
ESOP'08/ETAPS'08 Proceedings of the Theory and practice of software, 17th European conference on Programming languages and systems
Extending H1-clauses with disequalities
Information Processing Letters
Fast interprocedural linear two-variable equalities
ACM Transactions on Programming Languages and Systems (TOPLAS)
Interprocedural herbrand equalities
ESOP'05 Proceedings of the 14th European conference on Programming Languages and Systems
Complexity of Data Dependence Problems for Program Schemas with Concurrency
ACM Transactions on Computational Logic (TOCL)
Assertion checking over combined abstraction of linear arithmetic and uninterpreted functions
ESOP'06 Proceedings of the 15th European conference on Programming Languages and Systems
Hi-index | 0.00 |
A Herbrand equality between expressions in a program is an equality which holds relative to the Herbrand interpretation of operators. We show that the problem of checking validity of positive Boolean combinations of Herbrand equalities at a given program point is decidable – even in presence of disequality guards. This result vastly extends the reach of classical methods for global value numbering which cannot deal with disjunctions and are always based on an abstraction of conditional branching with non-deterministic choice. In order to introduce our analysis technique in a simpler scenario we also give an alternative proof that in the classic setting, where all guards are ignored, conjunctions of Herbrand equalities can be checked in polynomial time. As an application of our method, we show how to derive all valid Herbrand constants in programs with disequality guards. Finally, we present a PSPACE lower bound and show that in presence of equality guards instead of disequality guards, it is undecidable to check whether a given Herbrand equality holds or not.