Modular Class Analysis with DATALOG

  • Frédéric Besson
  • Thomas Jensen
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2694)


DATALOG can be used to specify a variety of class analyses for object-oriented programs as variations of a common framework. In this framework, the result of analysing a class is a set of DATALOG clauses whose least fixpoint is the information analysed for. Modular class analysis of program fragments is then expressed as the resolution of openDATALOG programs. We provide a theory for the partial resolution of sets of open clauses and define a number of operators for reducing such open clauses.


Logic Program Class Analysis Open Program Resolution Method Predicate Symbol 
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.
    O. Agesen. Constraint-Based Type Inference and Parametric Polymorphism. In B. Le Charlier, editor, Proc. of the 1st International Static Analysis Symposium, volume 864 of LNCS, pages 78–100. Springer-Verlag, 1994.Google Scholar
  2. 2.
    K. R. Apt. Introduction to logic programming. In J. van Leeuwen, editor, Handbook of Theoretical Computer Science: Volume B: Formal Models and Semantics, pages 493–574. Elsevier, Amsterdam, 1990.Google Scholar
  3. 3.
    D. F. Bacon and P. F. Sweeney. Fast Static Analysis of C++ Virtual Function Calls. In Proc. of OOPSLA’96, volume 31(10) of ACM SIGPLAN Notices, pages 324–341, New York, 1996. ACM Press.Google Scholar
  4. 4.
    A. Bossi, M. Gabbrielli, G. Levi, and M. C. Meo. A Compositional Semantics for Logic Programs. Theoretical Computer Science, 122(1–2):3–47, 1994.zbMATHCrossRefMathSciNetGoogle Scholar
  5. 5.
    M. G. Burke and B. G. Ryder. A critical analysis of incremental iterative data flow analysis algorithms. IEEE Transactions on Software Engineering, 16(7):723–728, 1990.CrossRefGoogle Scholar
  6. 6.
    A. K. Chandra and P. M. Merlin. Optimal implementation of conjunctive queries in relational data bases. In Proc. of the 9th ACM symposium on Theory of computing, pages 77–90, 1977.Google Scholar
  7. 7.
    M. Codish, S. K. Debray, and R. Giacobazzi. Compositional analysis of modular logic programs. In Proc. of the 20th ACM symposium on Principles of programming languages, pages 451–464. ACM Press, 1993.Google Scholar
  8. 8.
    M. Codish, M. Falaschi, and K. Marriott. Suspension analysis for concurrent logic programs. ACM Transactions on Programming Languages and Systems, 16(3):649–686, 1994.CrossRefGoogle Scholar
  9. 9.
    P. Cousot and R. Cousot. Comparing the Galois connection and widening/narrowing approaches to abstract interpretation, invited paper. In M. Bruynooghe and M. Wirsing, editors, Proc. of the International Workshop Programming Language Implementation and Logic Programming, volume 631 of LNCS, pages 269–295. Springer, 1992.CrossRefGoogle Scholar
  10. 10.
    P. Cousot and R. Cousot. Modular static program analysis, invited paper. In R.N. Horspool, editor, Proc. of the 11th International Conference on Compiler Construction, volume 2304 of LNCS, pages 159–178, Grenoble, France, April 2002. Springer.CrossRefGoogle Scholar
  11. 11.
    F. Denis and J-P Delahaye. Unfolding, procedural and fixpoint semantics of logic programs. In Proc. of the 8th Annual Symposium on Theoretical Aspects of Computer Science, volume 480 of LNCS, pages 511–522, Hamburg, Germany, February 1991. Springer.Google Scholar
  12. 12.
    A. Diwan, J. E. B. Moss, and K. S. McKinley. Simple and Effective Analysis of Statically Typed Object-Oriented Programs. In Proc. of OOPSLA’96, volume 31(10) of ACM SIGPLAN Notices, pages 292–305, New York, 1996. ACM Press.Google Scholar
  13. 13.
    C. Flanagan and M. Felleisen. Componential set-based analysis. ACM Transactions on Programming Languages and Systems, 21(2):370–416, 1999.CrossRefGoogle Scholar
  14. 14.
    H. Gaifman, H. Mairson, Y. Sagiv, and M. Y. Vardi. Undecidable optimization problems for database logic programs. In Proc. Symposium on Logic in Computer Science, pages 106–115, Ithaca, New York, jun 1987. IEEE Computer Society.Google Scholar
  15. 15.
    D. Grove and C. Chambers. A framework for call graph construction algorithms. ACM Transactions on Programming Languages and Systems, 23(6):685–746, 2001.CrossRefGoogle Scholar
  16. 16.
    R. R. Hansen. Flow logic for carmel. Technical Report Secsafe-IMM-001, IMM, Technical U. of Denamrk, 2002.Google Scholar
  17. 17.
    P. M. Hill and F. Spoto. Logic Programs as Compact Denotations. Proc. of the Fifth International Symposium on Practical Aspects of Declarative Languages, PADL’ 03, 2003.Google Scholar
  18. 18.
    L. Hornof and J. Noyé. Accurate binding-time analysis for imperative languages: flow, context, and return sensitivity. Theoretical Computer Science, 248(1–2):3–27, 2000.zbMATHCrossRefGoogle Scholar
  19. 19.
    T. Jensen and F. Spoto. Class analysis of object-oriented programs through abstract interpretation. In F. Honsell and M. Miculan, editors, Proc. of Foundations of Software Science and Computation Structures (FoSSaCS’01), pages 261–275. Springer LNCS vol. 2030, 2001.CrossRefGoogle Scholar
  20. 20.
    G. Levi. Models, unfolding rules and fixpoint semantics. In Robert A. Kowalski and Kenneth A. Bowen, editors, Proc. of the 5th International Conference and Symposium on Logic Programming, pages 1649–1665, Seatle, 1988. ALP, IEEE, The MIT Press.Google Scholar
  21. 21.
    J. F. Naughton. Data independent recursion in deductive databases. Journal of Computer and System Sciences, 38(2):259–289, April 1989.zbMATHCrossRefMathSciNetGoogle Scholar
  22. 22.
    F. Nielson and H. Seidl. Control-flow analysis in cubic time. In Proc. of European Symp. on Programming (ESOP’01), pages 252–268. Springer LNCS vol. 2028, 2001.Google Scholar
  23. 23.
    J. Palsberg and M. I. Schwartzbach. Object-Oriented Type-Systems. John Wiley & Sons, 1994.Google Scholar
  24. 24.
    J. Plevyak and A. Chien. Precise Concrete Type Inference for Object-Oriented Languages. In Proc. of OOPSLA’94, volume 29(10) of ACM SIGPLAN Notices, pages 324–340. ACM Press, October 1994.Google Scholar
  25. 25.
    T. Reps. Demand interprocedural program analysis using logic databases. In Applications of Logic Databases, pages 163–196, Boston, MA, 1994. Kluwer.Google Scholar
  26. 26.
    A. Rountev, B. G. Ryder, and W. Landi. Data-flow analysis of program fragments. In Proc. of the 7th international symposium on Foundations of software engineering, pages 235–252. Springer-Verlag, 1999.Google Scholar
  27. 27.
    Y. Sagiv and M. Yannakakis. Equivalences among relational expressions with the union and difference operators. Journal of the ACM, 27(4):633–655, 1980.zbMATHCrossRefMathSciNetGoogle Scholar
  28. 28.
    O. Shmueli. Decidability and expressiveness aspects of logic queries. In Proc. of the 6th ACM symposium on Principles of database systems, pages 237–249. ACM Press, 1987.Google Scholar
  29. 29.
    J. D. Ullman. Principles of database and knowledge-base systems, volume 2, volume 14 of Principles of Computer Science. Computer Science Press, 1988.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2003

Authors and Affiliations

  • Frédéric Besson
    • 1
  • Thomas Jensen
    • 1
  1. 1.IRISA/INRIA/CNRSRennesFrance

Personalised recommendations