Abstract Interpretation with Specialized Definitions

  • Germán Puebla
  • Elvira Albert
  • Manuel Hermenegildo
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4134)


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.


Logic Program Partial Evaluation Abstract Interpretation Derivation Step Abstract Domain 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Albert, E., Puebla, G., Gallagher, J.P.: Non-leftmost unfolding in partial evaluation of logic programs with impure predicates. In: Hill, P.M. (ed.) LOPSTR 2005. LNCS, vol. 3901, pp. 115–132. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  2. 2.
    Bruynooghe, M.: A Practical Framework for the Abstract Interpretation of Logic Programs. Journal of Logic Programming 10, 91–124 (1991)CrossRefMathSciNetMATHGoogle Scholar
  3. 3.
    Bueno, F., Cabeza, D., Carro, M., Hermenegildo, M., López-García, P., Puebla, G.: The Ciao Prolog System. Reference Manual (v1.8). The Ciao System Documentation Series–TR CLIP4/2002.1, School of Computer Science, Technical University of Madrid (UPM) (May 2002), System and on-line version of the manual available at:
  4. 4.
    Consel, C., Koo, S.C.: Parameterized partial deduction. ACM Transactions on Programming Languages and Systems 15(3), 463–493 (1993)CrossRefGoogle Scholar
  5. 5.
    Cousot, P., Cousot, R.: Abstract Interpretation: a Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints. In: Proc. of POPL 1977, pp. 238–252 (1977)Google Scholar
  6. 6.
    Cousot, P., Cousot, R.: Systematic Design of Program Transformation Frameworks by Abstract Interpretation. In: POPL 2002, pp. 178–190. ACM, New York (2002)CrossRefGoogle Scholar
  7. 7.
    De Schreye, D., Glück, R., Jørgensen, J., Leuschel, M., Martens, B., Sørensen, M.H.: Conjunctive Partial Deduction: Foundations, Control, Algorihtms, and Experiments. Journal of Logic Programming 41(2&3), 231–277 (1999)CrossRefMathSciNetMATHGoogle Scholar
  8. 8.
    Gallagher, J., Codish, M., Shapiro, E.: Specialisation of Prolog and FCP Programs Using Abstract Interpretation. NGC 6(2–3), 159–186 (1988)CrossRefMATHGoogle Scholar
  9. 9.
    Gallagher, J.P., Peralta, J.C.: Regular tree languages as an abstract domain in program specialisation. HOSC 14(2,3), 143–172 (2001)MATHGoogle Scholar
  10. 10.
    Gallagher, J.P.: Static Analysis for Logic Program Specialization. In: Workshop on Static Analysis WSA 1992, pp. 285–294 (1992)Google Scholar
  11. 11.
    Gallagher, J.P.: Tutorial on specialisation of logic programs. In: Proc. of PEPM 1993, pp. 88–98. ACM Press, New York (1993)CrossRefGoogle Scholar
  12. 12.
    Hermenegildo, M., Puebla, G., Marriott, K., Stuckey, P.: Incremental Analysis of Constraint Logic Programs. ACM TOPLAS 22(2), 187–223 (2000)CrossRefGoogle Scholar
  13. 13.
    Jones, N.D.: Combining Abstract Interpretation and Partial Evaluation. In: Kuchen, H., Swierstra, S.D. (eds.) PLILP 1996. LNCS, vol. 1140, pp. 396–405. Springer, Heidelberg (1996)Google Scholar
  14. 14.
    Jones, N.D., Gomard, C.K., Sestoft, P.: Partial Evaluation and Automatic Program Generation. Prentice Hall, New York (1993)MATHGoogle Scholar
  15. 15.
    Leuschel, M.: Program Specialisation and Abstract Interpretation Reconciled. In: Joint International Conference and Symposium on Logic Programming (June 1998)Google Scholar
  16. 16.
    Leuschel, M.: A framework for the integration of partial evaluation and abstract interpretation of logic programs. ACM TOPLAS 26(3), 413–463 (2004)CrossRefGoogle Scholar
  17. 17.
    Leuschel, M., Bruynooghe, M.: Logic program specialisation through partial deduction: Control issues. Theory and Practice of Logic Programming 2(4 & 5), 461–515 (2002)CrossRefMathSciNetMATHGoogle Scholar
  18. 18.
    Leuschel, M., De Schreye, D.: Logic program specialisation: How to be more specific. In: Kuchen, H., Swierstra, S.D. (eds.) PLILP 1996. LNCS, vol. 1140, pp. 137–151. Springer, Heidelberg (1996)Google Scholar
  19. 19.
    Leuschel, M.A., Gruner, S.: Abstract conjunctive partial deduction using regular types and its application to model checking. In: Pettorossi, A. (ed.) LOPSTR 2001. LNCS, vol. 2372, p. 91. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  20. 20.
    Lloyd, J.W.: Foundations of Logic Programming, 2nd extended edn. Springer, Heidelberg (1987)Google Scholar
  21. 21.
    Lloyd, J.W., Shepherdson, J.C.: Partial Evaluation in Logic Programming. Journal of Logic Programming 11(3–4), 217–242 (1991)CrossRefMathSciNetMATHGoogle Scholar
  22. 22.
    Muthukumar, K., Hermenegildo, M.: Combined Determination of Sharing and Freeness of Program Variables Through Abstract Interpretation. In: 1991 International Conference on Logic Programming, pp. 49–63. MIT Press, Cambridge (1991)Google Scholar
  23. 23.
    Puebla, G., Hermenegildo, M.: Optimized Algorithms for the Incremental Analysis of Logic Programs. In: Cousot, R., Schmidt, D.A. (eds.) SAS 1996. LNCS, vol. 1145, pp. 270–284. Springer, Heidelberg (1996)Google Scholar
  24. 24.
    Puebla, G., Hermenegildo, M.: Abstract Multiple Specialization and its Application to Program Parallelization. JLP 41(2&3), 279–316 (1999)CrossRefMathSciNetMATHGoogle Scholar
  25. 25.
    Puebla, G., Hermenegildo, M.: Abstract Specialization and its Applications. In: Proc. of PEPM 2003, pp. 29–43. ACM Press, New York (invited talk, 2003)CrossRefGoogle Scholar
  26. 26.
    Puebla, G., Hermenegildo, M., Gallagher, J.: An Integration of Partial Evaluation in a Generic Abstract Interpretation Framework. In: PEPM 1999. BRISC Series, vol. NS-99-1, pp. 75–85. Univ. of Aarhus, Denmark (1999)Google Scholar
  27. 27.
    Vaucheret, C., Bueno, F.: More precise yet efficient type inference for logic programs. In: Hermenegildo, M.V., Puebla, G. (eds.) SAS 2002. LNCS, vol. 2477, pp. 102–116. Springer, Heidelberg (2002)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Germán Puebla
    • 1
  • Elvira Albert
    • 2
  • Manuel Hermenegildo
    • 1
    • 3
  1. 1.School of Computer ScienceTechnical U. of Madrid 
  2. 2.School of Computer ScienceComplutense U. of Madrid 
  3. 3.Depts. of Comp. Sci. and El. and Comp. Eng.U. of New Mexico 

Personalised recommendations