Abstract Interpretation with Specialized Definitions

The relationship between abstract interpretation and partial evaluation has received considerable attention and (partial) integrations have been proposed starting from both the partial evaluation and abstract interpretation perspectives. In this work we present what we argue is the first generic algorithm for efficient and precise integration of abstract interpretation and partial evaluation from an abstract interpretation perspective. Taking as starting point state-of-the-art algorithms for context-sensitive, polyvariant abstract interpretation and (abstract) partial evaluation of logic programs, we present an algorithm which combines the best of both worlds. Key ingredients include the accurate success propagation inherent to abstract interpretation and the powerful program transformations achievable by partial deduction. In our algorithm, the calls which appear in the analysis graph are not analyzed w.r.t. the original definition of the procedure but w.r.t. specialized definitions of these procedures. Such specialized definitions are obtained by applying both unfolding and abstract executability. Also, our framework is parametric w.r.t. different control strategies and abstract domains. Different combinations of these parameters correspond to existing algorithms for program analysis and specialization. Our approach efficiently computes strictly more precise results than those achievable by each of the individual techniques. The algorithm is one of the key components of CiaoPP, the analysis and specialization system of the Ciao compiler.

[1]  John P. Gallagher,et al.  An Integration of Partial Evaluation in a Generic Abstract Interpretation Framework , 1999, PEPM.

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

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

[4]  Neil D. Jones Combining abstract interpretation and partial evaluation , 1997 .

[5]  Pieter H. Hartel,et al.  Programming Languages: Implementations, Logics, and Programs , 1996, Lecture Notes in Computer Science.

[6]  John P. Gallagher,et al.  Tutorial on specialisation of logic programs , 1993, PEPM '93.

[7]  Michael Leuschel,et al.  Program Specialisation and Abstract Interpretation Reconciled , 1998, IJCSLP.

[8]  Wim Vanhoof,et al.  Offline specialisation in Prolog using a hand-written compiler generator , 2002, Theory and Practice of Logic Programming.

[9]  Manuel V. Hermenegildo,et al.  Optimized Algorithms for Incremental Analysis of Logic Programs , 1996, SAS.

[10]  Francisco Bueno,et al.  More Precise Yet Efficient Type Inference for Logic Programs , 2002, SAS.

[11]  Manuel V. Hermenegildo,et al.  The ciao prolog system , 2002 .

[12]  Danny De Schreye,et al.  Logic Program Specialisation: How To Be More Specific , 1996, PLILP.

[13]  Manuel V. Hermenegildo,et al.  Abstract specialization and its applications , 2003, PEPM '03.

[14]  J. W. Lloyd,et al.  Foundations of logic programming; (2nd extended ed.) , 1987 .

[15]  Manuel V. Hermenegildo,et al.  Abstract Multiple Specialization and Its Application to Program Parallelization , 1999, J. Log. Program..

[16]  Jp Gallagher Static analysis for logic program specialisation , 1992 .

[17]  Stefan Gruner,et al.  Abstract Conjunctive Partial Deduction Using Regular Types and Its Application to Model Checking , 2001, LOPSTR.

[18]  J. Lloyd Foundations of Logic Programming , 1984, Symbolic Computation.

[19]  G. G. Stokes "J." , 1890, The New Yale Book of Quotations.

[20]  Neil D. Jones,et al.  Combining Abstract Interpretation and Partial Evaluation (Brief Overview) , 1997, SAS.

[21]  John P. Gallagher,et al.  Non-leftmost Unfolding in Partial Evaluation of Logic Programs with Impure Predicates , 2005, LOPSTR.

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

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

[24]  Patrick Cousot,et al.  Systematic design of program transformation frameworks by abstract interpretation , 2002, POPL '02.

[25]  Matt Brown,et al.  Invited talk , 2007 .

[26]  Maurice Bruynooghe,et al.  Under Consideration for Publication in Theory and Practice of Logic Programming Logic Program Specialisation through Partial Deduction: Control Issues , 2022 .

[27]  Siau-Cheng Khoo,et al.  Parameterized partial evaluation , 1993, TOPL.

[28]  Peter J. Stuckey,et al.  Incremental analysis of constraint logic programs , 2000, TOPL.

[29]  M. Sørensen,et al.  Conjunctive Partial Deduction: Foundations, Control, Algorithms, and Experiments , 1999, J. Log. Program..

[30]  John W. Lloyd,et al.  Partial Evaluation in Logic Programming , 1991, J. Log. Program..

[31]  Peter Sestoft,et al.  Partial evaluation and automatic program generation , 1993, Prentice Hall international series in computer science.

[32]  Michael Leuschel,et al.  A framework for the integration of partial evaluation and abstract interpretation of logic programs , 2004, TOPL.

[33]  John P. Gallagher,et al.  Regular Tree Languages as an Abstract Domain in Program Specialisation , 2001, High. Order Symb. Comput..