Abstract
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.
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
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)
Bruynooghe, M.: A Practical Framework for the Abstract Interpretation of Logic Programs. Journal of Logic Programming 10, 91–124 (1991)
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: http://clip.dia.fi.upm.es/Software/Ciao/
Consel, C., Koo, S.C.: Parameterized partial deduction. ACM Transactions on Programming Languages and Systems 15(3), 463–493 (1993)
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)
Cousot, P., Cousot, R.: Systematic Design of Program Transformation Frameworks by Abstract Interpretation. In: POPL 2002, pp. 178–190. ACM, New York (2002)
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)
Gallagher, J., Codish, M., Shapiro, E.: Specialisation of Prolog and FCP Programs Using Abstract Interpretation. NGC 6(2–3), 159–186 (1988)
Gallagher, J.P., Peralta, J.C.: Regular tree languages as an abstract domain in program specialisation. HOSC 14(2,3), 143–172 (2001)
Gallagher, J.P.: Static Analysis for Logic Program Specialization. In: Workshop on Static Analysis WSA 1992, pp. 285–294 (1992)
Gallagher, J.P.: Tutorial on specialisation of logic programs. In: Proc. of PEPM 1993, pp. 88–98. ACM Press, New York (1993)
Hermenegildo, M., Puebla, G., Marriott, K., Stuckey, P.: Incremental Analysis of Constraint Logic Programs. ACM TOPLAS 22(2), 187–223 (2000)
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)
Jones, N.D., Gomard, C.K., Sestoft, P.: Partial Evaluation and Automatic Program Generation. Prentice Hall, New York (1993)
Leuschel, M.: Program Specialisation and Abstract Interpretation Reconciled. In: Joint International Conference and Symposium on Logic Programming (June 1998)
Leuschel, M.: A framework for the integration of partial evaluation and abstract interpretation of logic programs. ACM TOPLAS 26(3), 413–463 (2004)
Leuschel, M., Bruynooghe, M.: Logic program specialisation through partial deduction: Control issues. Theory and Practice of Logic Programming 2(4 & 5), 461–515 (2002)
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)
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)
Lloyd, J.W.: Foundations of Logic Programming, 2nd extended edn. Springer, Heidelberg (1987)
Lloyd, J.W., Shepherdson, J.C.: Partial Evaluation in Logic Programming. Journal of Logic Programming 11(3–4), 217–242 (1991)
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)
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)
Puebla, G., Hermenegildo, M.: Abstract Multiple Specialization and its Application to Program Parallelization. JLP 41(2&3), 279–316 (1999)
Puebla, G., Hermenegildo, M.: Abstract Specialization and its Applications. In: Proc. of PEPM 2003, pp. 29–43. ACM Press, New York (invited talk, 2003)
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)
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)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2006 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Puebla, G., Albert, E., Hermenegildo, M. (2006). Abstract Interpretation with Specialized Definitions. In: Yi, K. (eds) Static Analysis. SAS 2006. Lecture Notes in Computer Science, vol 4134. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11823230_8
Download citation
DOI: https://doi.org/10.1007/11823230_8
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-37756-6
Online ISBN: 978-3-540-37758-0
eBook Packages: Computer ScienceComputer Science (R0)