Abstract
Def, the domain of definite Boolean functions, expresses (sure) dependencies between the program variables of, say, a constraint program. Share, on the other hand, captures the (possible) variable sharing between the variables of a logic program. The connection between these domains has been explored in the domain comparison and decomposition literature. We develop this link further and show how the meet (as well as the join) of Def can be modelled with efficient (quadratic) operations on Share. Further, we show how by compressing and widening Share and by rescheduling meet operations, we can construct a dependency analysis that is surprisingly fast and precise, and comes with time and space-performance guarantees. Unlike some other approaches, our analysis can be coded straightforwardly in Prolog.
Chapter PDF
Keywords
References
T. Armstrong, K. Marriott, P. Schachte, and H. Søndergaard. Two Classes of Boolean Functions for Dependency analysis. Science of Computer Programming, 31(1):3–45, 1998.
R. Bagnara. A Reactive Implementation of Pos using ROBDDs. In Programming Languages: Implementation, Logics and Programs, pages 107–121. Springer-Verlag, 1996. LNCS 1140.
R. Bagnara, P. Hill, and E. Zaffanella. Set-Sharing is Redundant for Pair-Sharing. In Static Analysis Symposium, pages 53–67. Springer-Verlag, 1997. LNCS 1302.
R. Bagnara and P. Schachte. Factorizing Equivalent Variable Pairs in ROBDDBased Implementations of Pos. In Seventh International Conference on Algebraic Methodology and Software Technology, Amazonia, Brazil, 1999. Springer-Verlag.
N. Baker and H. Søndergaard. Definiteness analysis for CLP(R). In Australian Computer Science Conference, pages 321–332, 1993.
P. Bigot, S. Debray, and K. Marriott. Understanding definiteness analysis using abstract interpretation. In Joint International Conference and Symposium on Logic Programming, pages 735–749. MIT Press, 1992.
R. Bryant. Symbolic Boolean manipulation with ordered binary-decision digrams. ACM Computing Surveys, 24(3):293–318, 1992.
M. Codish. Worst Case Groundness Analysis. Technical report, Ben-Gurion University of the Negev, 1998. ftp://ftp.cs.bgu.ac.il/pub/people/mcodish/pathpos.ps.gz.
M. Codish. Efficient Goal Directed Bottom-up Evaluation of Logic Programs. J. of Logic Programming (to appear), 1999.
M. Codish and B. Demoen. Analysing Logic Programs using “prop”-ositional Logic Programs and a Magic Wand. J. Logic Programming, 25(3):249–274, 1995.
M. Codish, A. Heaton, A. King, M. Abo-Zaed, and P. Hill. Widening Positive Boolean functions for Goal-dependent Groundness Analysis. Technical Report 12-98, Computing Laboratory, May 1998. http://www.cs.ukc.ac.uk/pubs/1998/589.
M.-M. Corsini, K. Musumbu, A. Rauzy, and B. Le Charlier. Efficient Bottom-up Abstract Interpretation of Prolog by means of Constraint Solving over Finite Domains. In In proceedings of Programming Language Implementation and Logic Programming, pages 75–91. Springer-Verlag, 1993. LNCS 714.
A. Cortesi and G. Filé. Comparison and Design of Abstract Domains for Sharing Analysis. In Italian Conference on Logic Programming, pages 251–265, 1993.
A. Cortesi, G. Filé, R. Giacobazzi, C. Palamidessi, and F. Ranzato. Complementation in Abstract Interpretation. ACM TOPLAS, 19(1):7–47, January 1997.
A. Cortesi, G. Filé, and W. Winsborough. Comparison of Abstract Interpretations. In International Conference on Automata, Languages and Programming, pages 521–532. Springer-Verlag, 1992. LNCS 623.
A. Cortesi, G. Filé, and W. Winsborough. The Quotient of an Abstract Interpretation for Comparing Static Analyses. Theoretical Computer Science, 202(1-2):163–192, 1998.
P. Cousot and R. Cousot. Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In Principles of Programming Languages, pages 238–252. ACM Press, 1977.
P. Dart. On Derived Dependencies and Connected Databases. J. Logic Programming, 11(1&2):163–188, 1991.
S. Dawson, C. R. Ramakrishnan, and D. S. Warren. Practical Program Analysis Using General Purpose Logic Programming Systems — A Case Study. In Programming Language Design and Implementation, pages 117–126. ACM Press, 1996.
C. Fecht. Abstrakte Interpretation logischer Programme: Theorie, Implementierung, Generierung. PhD thesis, Universität des Saarlandes, 1997. http://www.cs.uni-sb.de/RW/users/fecht/.
M. García de la Banda, M. Hermenegildo, M. Bruynooghe, V. Dumortier, G. Janssens, and W. Simoens. Global Analysis of Constraint Logic Programs. ACM TOPLAS, 18(5):564–614, 1996.
D. Jacobs and A. Langen. Static Analysis of Logic Programs. J. Logic Programming, 13(2 and 3):154–314, 1992.
N. Jones and H. Søndergaard. A semantics-based framework for the abstract interpretation of Prolog. In Abstract Interpretation of Declarative Languages, pages 123–142. Ellis Horwood Ltd, 1987.
P. Schachte. Precise and Efficient Static Analysis of Logic Programs. PhD thesis, Department of Computer Science, The University of Melbourne, Melbourne, Australia, 1998. (to appear).
H. Seidel. Personal communication on Prolog compiler integration and SML. November 1997.
P. Van Hentenryck, A. Cortesi, and B. Le Charlier. Evaluation of the domain Prop. J. Logic Programming, 23(3):237–278, 1995.
J. Wunderwald. Memoing Evaluation by Source-to-Source Transformation. In Logic Program Synthesis and Transformation, pages 17–32. Springer, 1995. LNCS 1048.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1999 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
King, A., Smaus, JG., Hill, P. (1999). Quotienting Share for Dependency Analysis. In: Swierstra, S.D. (eds) Programming Languages and Systems. ESOP 1999. Lecture Notes in Computer Science, vol 1576. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-49099-X_5
Download citation
DOI: https://doi.org/10.1007/3-540-49099-X_5
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-65699-9
Online ISBN: 978-3-540-49099-9
eBook Packages: Springer Book Archive