Efficient representations for set-sharing analysis

The Set-Sharing domain has been widely used to infer at compile-time interesting properties of logic programs such as occurs-check reduction, automatic parallelization, and finite-tree analysis. However, performing abstract unification in this domain requires a closure operation that increases the number of sharing groups exponentially. Much attention has been given in the literature to mitigating this key inefficiency in this otherwise very useful domain. In this paper we present a novel approach to Set-Sharing: we define a new representation that leverages the complement (or negative) sharing relationships of the original sharing set, without loss of accuracy. Intuitively, given an abstract state shy over the finite set of variables of interest V, its negative representation is p(V) \ shy. Using this encoding during analysis dramatically reduces the number of elements that need to be represented in the abstract states and during abstract unification as the cardinality of the original set grows toward 2^. To further compress the number of elements, we express the set-sharing relationships through a set of ternary strings that compacts the representation by eliminating redundancies among the sharing sets. Our experimental evaluation shows that our approach can compress the number of relationships, reducing significantly the memory usage and running time of all abstract operations, including abstract unification.

[1]  Paul Helman,et al.  On-line Negative Databases , 2005, Int. J. Unconv. Comput..

[2]  Roberto Bagnara,et al.  Widening Sharing , 1999, APPIA-GULP-PRODE.

[3]  Dean Jacobs,et al.  Static Analysis of Logic Programs for Independent And-Parallelism , 1992, J. Log. Program..

[4]  Peter J. Stuckey,et al.  Sharing and groundness dependencies in logic programs , 1999, TOPL.

[5]  Manuel V. Hermenegildo,et al.  Combined Determination of Sharing and Freeness of Program Variables through Abstract Interpretation , 1991, ICLP.

[6]  Xuan Li,et al.  Collapsing Closures , 2006, ICLP.

[7]  Shin-ichi Minato,et al.  Zero-Suppressed BDDs for Set Manipulation in Combinatorial Problems , 1993, 30th ACM/IEEE Design Automation Conference.

[8]  Andy King,et al.  Depth-k Sharing and Freeness , 1994, ICLP.

[9]  Xuan Li,et al.  Lazy Set-Sharing Analysis , 2006, FLOPS.

[10]  Ehud Shapiro,et al.  Third International Conference on Logic Programming , 1986 .

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

[12]  Manuel V. Hermenegildo,et al.  Precise Set Sharing Analysis for Java-Style Programs , 2008, VMCAI.

[13]  D. Jacobs,et al.  Advanced techniques for approximating variable aliasing in logic programs , 1991 .

[14]  Manuel V. Hermenegildo,et al.  Effectiveness of Global Analysis in Strict Independence-Based Automatic Parallelization , 1994, ILPS.

[15]  Roberto Bagnara,et al.  Set-Sharing is Redundant for Pair-Sharing , 1997, SAS.

[16]  Donald R. Morrison,et al.  PATRICIA—Practical Algorithm To Retrieve Information Coded in Alphanumeric , 1968, J. ACM.

[17]  Jorge A. Navas,et al.  Efficient Top-Down Set-Sharing Analysis Using Cliques , 2006, PADL.

[18]  Harald Søndergaard,et al.  An Application of Abstract Interpretation of Logic Programs: Occur Check Reduction , 1986, ESOP.

[19]  Leon Sterling On the Practicality of Abstract Equation Systems , 1995 .

[20]  Manuel V. Hermenegildo,et al.  Compile-Time Derivation of Variable Dependency Using Abstract Interpretation , 1992, J. Log. Program..

[21]  Christian Fecht,et al.  An Efficient and Precise Sharing Domain for Logic Programs , 1996, PLILP.

[22]  Randal E. Bryant,et al.  Symbolic Boolean manipulation with ordered binary-decision diagrams , 1992, CSUR.

[23]  Maria Garcia de la Banda,et al.  Set-Sharing Is Not Always Redundant for Pair-Sharing , 2004, FLOPS.

[24]  Gilberto Filé,et al.  On the Design of a Correct Freeness Analysis for Logic Programs , 1995, J. Log. Program..

[25]  Michael Codish,et al.  An Algebraic Approach to Sharing Analysis of Logic Programs , 1997, SAS.

[26]  Kim Marriott,et al.  Boolean Functions for Dependency Analysis: Algebraic Properties and Efficient Representation , 1994, SAS.

[27]  Manuel V. Hermenegildo,et al.  Integrated program debugging, verification, and optimization using abstract interpretation (and the Ciao system preprocessor) , 2005, Sci. Comput. Program..

[28]  Roberto Bagnara,et al.  A correct, precise and efficient integration of set-sharing, freeness and linearity for the analysis of finite and rational tree languages , 2004, Theory and Practice of Logic Programming.

[29]  Stephanie Forrest,et al.  A Relational Algebra for Negative Databases , 2007 .

[30]  Roberto Bagnara,et al.  Finite-tree analysis for constraint logic-based languages , 2001, APPIA-GULP-PRODE.

[31]  Maurice Bruynooghe,et al.  Abstract Unification for a Composite Domain Deriving Sharing and Freeness Properties of Program Variables , 1994, ICLP Workshop: Verification and Analysis of Logic Languages.