Correctness, precision and efficiency in the sharing analysis of real logic languages

For programming languages based on logic, a knowledge of variable sharing is important; for instance, for their automatic parallelization and for many optimisations of the unification procedure, such as occurs-check reduction. Because of its usefulness, a considerable amount of research has been done on the design and development of techniques for the static analysis of variable sharing. Despite this fact, some of the most important issues related to the specification and implementation of a practical sharing analysis tool, such as the correctness, the precision and the efficiency of the analysis, have lacked satisfactory solutions. The thesis reports on our work in rectifying this situation and, thereby, enhancing the state-of-the-art on sharing analysis. Our contributions include: a correctness proof for the set-sharing domain of Jacobs and Langen that does not depend on the presence of the occurs-check in the concrete unification procedure; the definition of the simpler abstraction of set-sharing that is guaranteed to achieve the same precision on both variable independence and groundness; the specification, on this new domain of an abstract unification operator having polynomial complexity, as opposed to the exponential complexity of the abstract unification operator defined on set-sharing; the generalization of all the above results to a combined abstract domain including set-sharing, freeness and linearity information; an extensive experimental evaluation, including both the validation of the above results as well as the implementation and comparison of many other recent proposals for more precise sharing analysis domains; and the specification of a new representation for set-sharing which, by allowing for the definition of a family of widening operators, solves all the scalability problems of the analysis, while having a negligible impact on its precision.

[1]  Morgan Ward,et al.  The Closure Operators of a Lattice , 1942 .

[2]  J. A. Robinson,et al.  A Machine-Oriented Logic Based on the Resolution Principle , 1965, JACM.

[3]  Patrick Cousot,et al.  Static Determination of Dynamic Properties of Recursive Procedures , 1977, Formal Description of Programming Concepts.

[4]  Keith L. Clark,et al.  Negation as Failure , 1987, Logic and Data Bases.

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

[6]  Patrick Cousot,et al.  Systematic design of program analysis frameworks , 1979, POPL.

[7]  K. Hofmann,et al.  A Compendium of Continuous Lattices , 1980 .

[8]  Alberto Martelli,et al.  An Efficient Unification Algorithm , 1982, TOPL.

[9]  Alain Colmerauer,et al.  Equations and Inequations on Finite and Infinite Trees , 1984, FGCS.

[10]  Doug DeGroot,et al.  AND-Parallelism of Logic Programs Based on a Static Data Dependency Analysis , 1985, COMPCON.

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

[12]  Krzysztof R. Apt,et al.  Introduction to Logic Programming , 1988 .

[13]  Chris Hankin,et al.  Abstract Interpretation of Declarative Languages , 1987 .

[14]  John Wylie Lloyd,et al.  Foundations of Logic Programming , 1987, Symbolic Computation.

[15]  Michael J. Maher Complete axiomatizations of the algebras of finite, rational and infinite trees , 1988, [1988] Proceedings. Third Annual Information Symposium on Logic in Computer Science.

[16]  Michael J. Maher,et al.  Unification Revisited , 1988, Foundations of Deductive Databases and Logic Programming..

[17]  Dean Jacobs,et al.  Accurate and Efficient Approximation of Variable Aliasing in Logic Programs , 1989, NACLP.

[18]  Giorgio Levi,et al.  Declarative Modeling of the Operational Behavior of Logic Languages , 1989, Theor. Comput. Sci..

[19]  Alain Colmerauer,et al.  An introduction to Prolog III , 1989, CACM.

[20]  Manuel V. Hermenegildo,et al.  &-Prolog and its Performance: Exploiting Independent And-Parallelism , 1990, ICLP.

[21]  Kim Marriott,et al.  Analysis of Constraint Logic Programs , 1990, NACLP.

[22]  Andrew Taylor,et al.  High Performance Prolog Implementation , 1991 .

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

[24]  Maurice Bruynooghe,et al.  A Practical Framework for the Abstract Interpretation of Logic Programs , 1991, J. Log. Program..

[25]  Gilberto Filé,et al.  Computations, Abstractions and Constraints (abstract) , 1991, JTASPEFT/WSA.

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

[27]  Patrick Cousot,et al.  Abstract Interpretation Frameworks , 1992, J. Log. Comput..

[28]  Aliasing and groundness analysis of logic programs through abstract interpretation and its safety , 1992 .

[29]  Agostino Cortesi,et al.  Comparison of Abstract Interpretations , 1992, ICALP.

[30]  Peter Van Roy,et al.  High-performance logic programming with the Aquarius Prolog compiler , 1992, Computer.

[31]  Saumya K. Debray,et al.  Global Flow Analysis as a Practical Compilation Tool , 1992, J. Log. Program..

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

[33]  Maurice Bruynooghe,et al.  Improving abstract interpretations by combining domains , 1993, PEPM '93.

[34]  Giorgio Levi,et al.  A Model-Theoretic Reconstruction of the Operational Semantics of Logic Programs , 1993, Inf. Comput..

[35]  Agostino Cortesi,et al.  Comparison and design of abstract domains for sharing analysis , 1993, GULP.

[36]  Gilberto Filé,et al.  Freeness Analysis for Logic Programs - And Correctness? , 1993, ICLP.

[37]  Roberto Barbuti,et al.  A general framework for semantics-based bottom-up abstract interpretation of logic programs , 1993, TOPL.

[38]  Maurice Bruynooghe,et al.  Freeness, Sharing, Linearity and Correctness - All at Once , 1993, WSA.

[39]  Pascal Van Hentenryck,et al.  Combinations of abstract domains for logic programming , 1994, POPL '94.

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

[41]  Gert Smolka,et al.  Records for Logic Programming , 1994, J. Log. Program..

[42]  Michael J. Maher,et al.  Constraint Logic Programming: A Survey , 1994, J. Log. Program..

[43]  Kim Marriott,et al.  Denotational abstract interpretation of logic programs , 1994, TOPL.

[44]  Manuel V. Hermenegildo,et al.  Extracting Non-Strict Independent And-Parallelism Using Sharing and Freeness Information , 1994, SAS.

[45]  Saumya K. Debray,et al.  Abstract Interpretation of Logic Programs using Magic Transformations , 1994, J. Log. Program..

[46]  Andy King,et al.  A Synergistic Analysis for Sharing and Groundness with Traces Linearity , 1994, ESOP.

[47]  Maurice Bruynooghe,et al.  Abstracting s-semantincs Using A Model-Theoretic Approach , 1994, PLILP.

[48]  Agostino Cortesi,et al.  The Quotient of an Abstract Interpretation for Comparing Static Analyses , 1994, GULP-PRODE.

[49]  Maurice Bruynooghe,et al.  A composite domain for freeness, sharing, and compoundness analysis of logic programs , 1994 .

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

[51]  Roberto Giacobazzi,et al.  Generalized Semantics and Abstract Interpretation for Constraint Logic Programs , 1995, J. Log. Program..

[52]  Francesca Rossi,et al.  Strict and Nonstrict Independent And-Parallelism in Logic Programs: Correctness, Efficiency, and Compile-Time Conditions , 1995, J. Log. Program..

[53]  Gerda Janssens,et al.  On the Practicality of Abstract Equation Systems , 1995, ICLP.

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

[55]  Gilberto Filé,et al.  Complementation of Abstract Domains made Easy , 1996, JICSLP.

[56]  Roberto Giacobazzi,et al.  Compositional Optimization of Disjunctive Abstract Interpretations , 1996, ESOP.

[57]  Benedetto Intrigila,et al.  A Remark on Infinite Matching vs Infinite Unification , 1996, J. Symb. Comput..

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

[59]  Agostino Cortesi,et al.  Optimal Groundness Analysis Using Propositional Logic , 1996, J. Log. Program..

[60]  Christian Fecht Efficient and precise sharing domains for logic programs , 1996 .

[61]  Roberto Giacobazzi,et al.  Intuitionistic Implication in Abstract Interpretation , 1997, PLILP.

[62]  Roberto Giacobazzi,et al.  Completeness in Abstract Interpretation: A Domain Perspective , 1997, AMAST.

[63]  Agostino Cortesi,et al.  Complementation in abstract interpretation , 1997, TOPL.

[64]  Roberto Bagnara Structural Information Analysis for CLP Languages , 1997, APPIA-GULP-PRODE.

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

[66]  Francesca Scozzari Logical Optimality of Groundness Analysis , 1997, SAS.

[67]  Kim Marriott,et al.  Two Classes of Boolean Functions for Dependency Analysis , 1998, Sci. Comput. Program..

[68]  Michael Codish,et al.  The Boolean Logic of Set Sharing Analysis , 1998, PLILP/ALP.

[69]  Roberto Bagnara,et al.  Factorizing Equivalent Variable Pairs in ROBDD-Based Implementations of Pos , 1998, AMAST.

[70]  Roberto Bagnara,et al.  Data-Flow Analysis for Constraint Logic-Based Languages , 1999 .

[71]  Agostino Cortesi,et al.  Sharing is Optimal , 1999, J. Log. Program..

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

[73]  Giorgio Levi,et al.  Non Pair-Sharing and Freeness Analysis Through Linear Refinement , 1999, PEPM.

[74]  Roberto Bagnara,et al.  Decomposing Non-redundant Sharing by Complementation , 1999, SAS.

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

[76]  Andy King Pair-sharing over rational trees , 2000, J. Log. Program..

[77]  Roberto Bagnara,et al.  Efficient Structural Information Analysis for Real CLP Languages , 2000, LPAR.

[78]  Francesca Scozzari,et al.  Abstract Domains for Sharing Analysis by Optimal Semantics , 2000, SAS.

[79]  Bart Demoen,et al.  Two Advanced Transormations for Improving the Efficiency of an ILP system , 2000, ILP Work-in-progress reports.

[80]  Roberto Bagnara,et al.  Enhanced sharing analysis techniques: a comprehensive evaluation , 2000, PPDP '00.

[81]  Pascal Van Hentenryck,et al.  Combinations of abstract domains for logic programming: open product and generic pattern construction , 2000, Sci. Comput. Program..

[82]  Roberto Bagnara,et al.  Boolean functions for finite-tree dependencies , 2001, APPIA-GULP-PRODE.

[83]  Fausto Spoto,et al.  Abstract Compilation for Sharing Analysis , 2001, FLOPS.

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

[85]  Roberto Bagnara,et al.  Soundness, idempotence and commutativity of set-sharing , 2001, Theory and Practice of Logic Programming.

[86]  Roberto Bagnara,et al.  Set-sharing is redundant for pair-sharing , 1997, Theor. Comput. Sci..