Join Algorithms for the Theory of Uninterpreted Functions

The join of two sets of facts, E 1 and E 2 , is defined as the set of all facts that are implied independently by both E 1 and E 2 . Congruence closure is a widely used representation for sets of equational facts in the theory of uninterpreted function symbols (UFS). We present an optimal join algorithm for special classes of the theory of UFS using the congruence closure framework. Several known join algorithms, which work on a strict subclass, can be cast as specific instantiations of our generic procedure. We demonstrate the limitations of any approach for computing joins that is based on the use of congruence closure. We also mention some interesting open problems in this area.

[1]  Nicolas Halbwachs,et al.  Automatic discovery of linear restraints among variables of a program , 1978, POPL.

[2]  Deepak Kapur,et al.  Shostak's Congruence Closure as Completion , 1997, RTA.

[3]  Greg Nelson,et al.  Simplification by Cooperating Decision Procedures , 1979, TOPL.

[4]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[5]  Mark N. Wegman,et al.  Efficiently computing static single assignment form and the control dependence graph , 1991, TOPL.

[6]  Dexter Kozen Partial Automata and Finitely Generated Congruences: An Extension of Nerode’s Theorem , 1992 .

[7]  Keith D. Cooper,et al.  Value Numbering , 1997, Softw. Pract. Exp..

[8]  Sándor Vágvölgyi Intersection of finitely generated congruences over term algebra , 2003, Theor. Comput. Sci..

[9]  Bernhard Steffen,et al.  Detecting Equalities of Variables: Combining Efficiency with Precision , 1999, SAS.

[10]  Thomas W. Reps,et al.  Precise interprocedural dataflow analysis via graph reachability , 1995, POPL '95.

[11]  Steven S. Muchnick,et al.  Advanced Compiler Design and Implementation , 1997 .

[12]  Ashish Tiwari,et al.  Abstract Congruence Closure , 2003, Journal of Automated Reasoning.

[13]  SeidlHelmut,et al.  Precise interprocedural analysis through linear algebra , 2004 .

[14]  Patrick Cousot,et al.  A static analyzer for large safety-critical software , 2003, PLDI.

[15]  Bowen Alpern,et al.  Detecting equality of variables in programs , 1988, POPL '88.

[16]  Helmut Seidl,et al.  Precise interprocedural analysis through linear algebra , 2004, POPL.

[17]  Enric Rodríguez-Carbonell,et al.  An Abstract Interpretation Approach for Automatic Generation of Polynomial Invariants , 2004, SAS.

[18]  Greg Nelson,et al.  Fast Decision Procedures Based on Congruence Closure , 1980, JACM.

[19]  Enric Rodríguez-Carbonell,et al.  Automatic Generation of Polynomial Loop Invariants: Algebraic Foundations , 2004, ISSAC '04.

[20]  Michael Karr,et al.  Affine relationships among variables of a program , 1976, Acta Informatica.