Two Efficient Representations for Set-Sharing Analysis in Logic Programs

Set-Sharing analysis, the classic Jacobs and Langen’s domain, has been widely used to infer several interesting properties of programs at compile-time such as occurs-check reduction, automatic parallelization, finite-tree analysis, etc. However, performing abstract unification over this domain implies the use of a closure operation which makes the number of sharing groups grow exponentially. Much attention has been given in the literature to mitigate this key inefficiency in thi s otherwise very useful domain. In this paper we present two novel alternative representations for the traditional set-sharing domain, tSH and tNSH, which compress efficiently the number of elements into fewer el ements enabling more efficient abstract operations, including abstract unification, without any loss of accuracy. Our experimental evaluation supports that both representations can reduce dramatically the number of sharing groups showing they can be more practical solutions towards scalable set-sharing.

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

[2]  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.

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

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

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

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

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

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

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

[10]  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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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