Hostname: page-component-cd9895bd7-dzt6s Total loading time: 0 Render date: 2024-12-18T21:36:32.977Z Has data issue: false hasContentIssue false

Optimality in goal-dependent analysis of Sharing

Published online by Cambridge University Press:  31 July 2009

GIANLUCA AMATO
Affiliation:
Dipartimento di Scienze, Università di Chieti–Pescara, Pescara, Italy (e-mail: [email protected], [email protected])
FRANCESCA SCOZZARI
Affiliation:
Dipartimento di Scienze, Università di Chieti–Pescara, Pescara, Italy (e-mail: [email protected], [email protected])

Abstract

We face the problems of correctness, optimality, and precision for the static analysis of logic programs, using the theory of abstract interpretation. We propose a framework with a denotational, goal-dependent semantics equipped with two unification operators for forward unification (calling a procedure) and backward unification (returning from a procedure). The latter is implemented through a matching operation. Our proposal clarifies and unifies many different frameworks and ideas on static analysis of logic programming in a single, formal setting. On the abstract side, we focus on the domain sharing by Jacobs and Langen (The Journal of Logic Programming, 1992, vol. 13, nos. 2–3, pp. 291–314) and provide the best correct approximation of all the primitive semantic operators, namely, projection, renaming, and forward and backward unifications. We show that the abstract unification operators are strictly more precise than those in the literature defined over the same abstract domain. In some cases, our operators are more precise than those developed for more complex domains involving linearity and freeness.

Type
Regular Papers
Copyright
Copyright © Cambridge University Press 2009

Access options

Get access to the full version of this content by using one of the access options below. (Log in options will check for institutional or personal access. Content may require purchase if you do not have access.)

References

Amato, G. and Scozzari, F. 2002. Optimality in goal-dependent analysis of sharing. In Proc. of the Joint Conference on Declarative Programming (AGP'02), Moreno-Navarro, J. J. and Mariño-Carballo, J., Eds. Universidad Politécnica de Madrid, Madrid, 189205.Google Scholar
Amato, G. and Scozzari, F. 2003. A general framework for variable aliasing: Towards optimal operators for sharing properties. In Logic Based Program Synthesis and Transformation 12th International Workshop, LOPSTR 2002, Madrid, Spain, September 17–20, 2002. Revised Selected Papers, Leuschel, M., Ed. Lecture Notes in Computer Science, vol. 2664. Springer, Berlin Heidelberg, 5270.Google Scholar
Apt, K. R. 1990. Introduction to logic programming. In Handbook of Theoretical Computer Science. Vol. B: Formal Models and Semantics, van Leeuwen, J., Ed. Elsevier and MIT Press, 495574.Google Scholar
Bagnara, R., Hill, P. M. and Zaffanella, E. 2002. Set-sharing is redundant for pair-sharing. Theoretical Computer Science 277, 1–2, 346.CrossRefGoogle Scholar
Bagnara, R., Zaffanella, E. and Hill, P. M. 2005. Enhanced sharing analysis techniques: A comprehensive evaluation. Theory and Practice of Logic Programming 5, 1–2, 143.CrossRefGoogle Scholar
Bossi, A., Gabbrielli, M., Levi, G. and Martelli, M. 1994. The s-semantics approach: Theory and applications. The Journal of Logic Programming 19–20, 149–197.Google Scholar
Bruynooghe, M. 1991. A practical framework for the abstract interpretation of logic programs. The Journal of Logic Programming 10, 1–4, 91124.CrossRefGoogle Scholar
Codish, M., Lagoon, V. and Bueno, F. 2000. An algebraic approach to sharing analysis of logic programs. The Journal of Logic Programming 42, 2 (Feb.), 110149.Google Scholar
Cortesi, A. and Filé, G. 1999. Sharing is optimal. The Journal of Logic Programming 38, 3, 371386.CrossRefGoogle Scholar
Cortesi, A., Filé, G. and Winsborough, W. W. 1994. Optimal Groundness Analysis Using Propositional Formulas, Technical Report 94/11. Dipartimento di Matematica Pura ed Applicata, Università di Padova.Google Scholar
Cortesi, A., Filé, G. and Winsborough, W. W. 1996. Optimal groundness analysis using propositional logic. The Journal of Logic Programming 27, 2, 137167.CrossRefGoogle Scholar
Cousot, P. and Cousot, R. 1979. Systematic design of program analysis frameworks. In Proc. of the Sixth ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages. ACM Press, New York, 269282.Google Scholar
Cousot, P. and Cousot, R. 1992. Abstract interpretation and applications to logic programs. The Journal of Logic Programming 13, 2–3, 103179.CrossRefGoogle Scholar
Cousot, P. and Cousot, R. 1994. Higher-order abstract interpretation (and application to comportment analysis generalizing strictness, termination, projection and PER analysis of functional languages), invited paper. In Proc. of the 1994 International Conference on Computer Languages, Bal, Henri E., Ed. IEEE Computer Society Press, Los Alamitos, CA, 95112.Google Scholar
Furukawa, K., Ed. 1991. Logic Programming: Proc. of the Eighth International Conference. MIT Press, Cambridge, MA.Google Scholar
García de la Banda, M. J., Marriott, K., Stuckey, P. J., and Søndergaard, H. 1998. Differential methods in logic program analysis. The Journal of Logic Programming 35, 1 (Apr.), 137.CrossRefGoogle Scholar
Giacobazzi, R., Ranzato, F. and Scozzari, F. 2000. Making abstract interpretations complete. Journal of the ACM 47, 2, 361416.CrossRefGoogle Scholar
Hans, W. and Winkler, S. 1992. Aliasing and Groundness Analysis of Logic Programs through Abstract Interpretation and Its Safety, Technical Report 92-27 [online]. Accessed 10 July 2009. Technical University of Aachen (RWTH Aachen). URL: http://sunsite.informatik.rwth-aachen.de/Publications/AIBGoogle Scholar
Henkin, L., Monk, J. D. and Tarski, A. 1971. Cylindric Algebras Part I, Studies in Logic and the Foundations of Mathematics, no. 115. North Holland, Amsterdam.Google Scholar
Hermenegildo, M. V. and Rossi, F. 1995. Strict and nonstrict independent and-parallelism in logic programs: Correctness, efficiency, and compile-time conditions. The Journal of Logic Programming 22, 1, 145.CrossRefGoogle Scholar
Hill, P. M., Zaffanella, E. and Bagnara, R. 2004. A correct, precise and efficient integration of set-sharing, freeness and linearity for the analysis of finite and rational tree languages. Theory and Practice of Logic Programming 4, 3, 289323.CrossRefGoogle Scholar
Howe, J. M. and King, A. 2003. Three optimisations for sharing. Theory and Practice of Logic Programming 3, 2 (Jan.), 243257.CrossRefGoogle Scholar
Jacobs, D. and Langen, A. 1992. Static analysis of logic programs for independent AND parallelism. The Journal of Logic Programming 13, 2–3, 291314.CrossRefGoogle Scholar
King, A. 1994. A synergistic analysis for sharing and groundness which traces linearity. In Programming Languages and Systems ESOP '94, Fifth European Symposium on Programming Edinburg, U.K., April 11–13, 1994, Proc., Sannella, D., Ed. Lecture Notes in Computer Science, vol. 788. Springer, Berlin Heidelberg, 363378.Google Scholar
King, A. 2000. Pair-sharing over rational trees. The Journal of Logic Programming 46, 1–2, 139155.CrossRefGoogle Scholar
King, A. and Longley, M. 1995. Abstract Matching Can Improve on Abstract Unification, Technical Report 4-95*. Computing Laboratory, University of Kent, Canterbury, UK.Google Scholar
Langen, A. 1990. Static Analysis for Independent And-Parallelism in Logic Programs, PhD thesis. University of Southern California, Los Angeles, CA.Google Scholar
Le Charlier, B., Musumbu, K. and Van Hentenryck, P. 1991. A generic abstract interpretation algorithm and its complexity analysis. In Logic Programming: Proc. of the Eighth International Conference, Furukawa, K, Ed. MIT Press, Cambridge, MA, 6478.Google Scholar
Le Charlier, B. and Van Hentenryck, P. 1994. Experimental evaluation of a generic abstract interpretation algorithm for prolog. ACM Transactions on Programming Languages and Systems 16, 1, 35101.CrossRefGoogle Scholar
Levi, G. and Spoto, F. 2003. Pair-independence and freeness analysis through linear refinement. Information and Computation 182, 1, 1452.CrossRefGoogle Scholar
Lloyd, J. W. 1987. Foundations of Logic Programming, 2nd ed. Springer, New York.CrossRefGoogle Scholar
Marriott, K., Søndergaard, H. and Jones, N. D. 1994. Denotational abstract interpretation of logic programs. ACM Transactions on Programming Languages and Systems 16, 3, 607648.CrossRefGoogle Scholar
Muthukumar, K. and Hermenegildo, M. V. 1991. Combined determination of sharing and freeness of program variables through abstract interpretation. In Logic Programming: Proc. of the Eighth International Conference, Furukawa, K, Ed. MIT Press, Cambridge, MA, 4963.Google Scholar
Muthukumar, K. and Hermenegildo, M. V. 1992. Compile-time derivation of variable dependency using abstract interpretation. The Journal of Logic Programming 13, 2–3, 315347.CrossRefGoogle Scholar
Palamidessi, C. 1990. Algebraic properties of idempotent substitutions. In Automata, Languages and Programming, 17th International Colloquium Warwick University, England, July 16–20, 1990, Proc., Paterson, M., Ed. Lecture Notes in Computer Science, vol. 443. Springer, Berlin Heidelberg, 386399.Google Scholar
Shepherdson, J. C. 1994. The role of standardising apart in logic programming. Theoretical Computer Science 129, 143166.CrossRefGoogle Scholar
Søndergaard, H. 1986. An application of abstract interpretation of logic programs: Occur check reduction. In Proc. ESOP 86, Robinet, B. and Wilhelm, R., Eds. Lecture Notes in Computer Science, vol. 213. Springer, Berlin Heidelberg, 327338.CrossRefGoogle Scholar
Van Emden, M. H. and Kowalski, R. A. 1976. The semantics of predicate logic as a programming language. Journal of the ACM 23, 4, 733742.CrossRefGoogle Scholar