An experiment in domain refinement: Type domains and type representations for logic programs

  • Giorgio Levi
  • Fausto Spoto
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1490)


We apply the methodology of domain refinement to systematically derive domains for type analysis. Domains are built by iterative application of the Heyting completion operator to a given set of basic types. We give a condition on the type system which assures that two steps of iteration are sufficient to reach the fixpoint. Moreover, we provide a general representation for type domains through transfinite formulas. Finally, we show a subset of finite formulas which can be used as a computationally feasible implementation of the domains and we define the corresponding abstract operators.


Abstract interpretation abstract domain static analysis type analysis logic programming 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    K. R. Apt and E. Marchiori. Reasoning about Prolog programs: from modes through types to assertions. Formal Aspects of Computing, 6(6A):743–765, 1994.MATHCrossRefGoogle Scholar
  2. 2.
    T. Armstrong, K. Marriott, P. Schachte, and H. Søndergaard. Boolean functions for dependency analysis: Algebraic properties and efficient representation. In B. Le Charlier, editor, Proc. Static Analysis Symposium, SAS'94, volume 864 of Lecture Notes in Computer Science, pages 266–280. Springer-Verlag, 1994.Google Scholar
  3. 3.
    R. Barbuti and R. Giacobazzi. A Bottom-up Polymorphic Type Inference in Logic Programming. Science of Computer Programming, 19(3):281–313, 1992.MATHMathSciNetCrossRefGoogle Scholar
  4. 4.
    J. Boye. Directional Types in Logic Programming. PhD thesis, Linköping University (Sweden), 1996.Google Scholar
  5. 5.
    M. Codish and B. Demoen. Deriving Polymorphic Type Dependencies for Logic Programs Using Multiple Incarnations of Prop. In Proc. of the first International Symposium on Static Analysis, volume 864 of Lecture Notes in Computer Science, pages 281–296. Springer-Verlag, 1994.Google Scholar
  6. 6.
    M. Codish and V. Lagoon. Type dependencies for logic programs using ACI—unification. In Proceedings of the 1996 Israeli Symposium on Theory of Computing and Systems, pages 136–145. IEEE Press, June 1996. Extended version to appear in Theoretical Computer Science.Google Scholar
  7. 7.
    A. Cortesi, G. Filè, and W. Winsborough. Optimal Groundness Analysis Using Propositional Logic. Journal of Logic Programming, 27(2):137–167, 1996.MATHMathSciNetCrossRefGoogle Scholar
  8. 8.
    P. Cousot and R. Cousot. Abstract Interpretation and Applications to Logic Programs. Journal of Logic Programming, 13(2 & 3):103–179, 1992.MATHMathSciNetCrossRefGoogle Scholar
  9. 9.
    G. Filé, R. Giacobazzi, and F. Ranzato. A unifying view on abstract domain design. ACM Computing Surveys, 28(2):333–336, 1996.CrossRefGoogle Scholar
  10. 10.
    T. Frühwirth, E. Shapiro, M.Y. Vardi, and E. Yardeni. Logic Programs as Types for Logic Programs. In Albert R. Meyer, editor, Proceedings of the 6th Annual IEEE Symposium on Logic in Computer Science, pages 300–309, Amsterdam, The Netherlands, July 1991. IEEE Computer Society Press.Google Scholar
  11. 11.
    J. Gallagher and D. A. de Waal. Fast and Precise Regular Approximation of Logic Programs. In Pascal Van Hentenryck, editor, Proceedings of the Eleventh International Conference on Logic Programming, pages 599–613, Santa Margherita Ligure, Italy, 1994. The MIT Press.Google Scholar
  12. 12.
    R. Giacobazzi and F. Scozzari. Intuitionistic implication in abstract interpretation. In H. Glaser, P. Hartel, and H. Kuchen, editors, Proceedings of Ninth International Symposium on Programming Languages, Implementations, Logics and Programs PLILP'97, volume 1292 of Lecture Notes in Computer Science, pages 175–189. Springer-Verlag, 1997.Google Scholar
  13. 13.
    G. Janssens and M. Bruynooghe. Deriving descriptions of possible values of program variables by means of abstract interpretation. Journal of Logic Programming, 13(2 & 3):205–258, 1992.MATHMathSciNetCrossRefGoogle Scholar
  14. 14.
    T. Kanomori and K. Horiuchi. Polymorphic Type Inference in Prolog by Abstract Interpretation. In Logic Programming 87-Tokyo, volume 315 of Lecture Notes in Computer Science, pages 195–214. Springer-Verlag, 1988.Google Scholar
  15. 15.
    M. Kifer and J. Wu. A first-order theory of types and polymorphism in logic programming. In IEEE Symposium on logic in Computer Science, 1991.Google Scholar
  16. 16.
    C. Pyo and U. S. Reddy. Inference of Polymorphic Types for Logic Programming. In E. Lusk and R. Overbeek, editors, Proc. North American Conf. on Logic Programming'89, pages 1115–1132. The MIT Press, 1989.Google Scholar
  17. 17.
    F. Scozzari. Logical optimality of groundness analysis. In P. Van Hentenryck, editor, Proceedings of International Static Analysis Symposium, SAS'97, volume 1302 of Lecture Notes in Computer Science, pages 83–97. Springer-Verlag, 1997.Google Scholar
  18. 18.
    J. Xu and D. S. Warren. A Type Inference System for Prolog. In R. A. Kowalski and K. A. Bowen, editors, Proc. Fifth Int'l Conf. on Logic Programming, pages 604–619. The MIT Press, 1988.Google Scholar
  19. 19.
    E. Yardeni and E. Shapiro. A Type System for Logic Programs. Journal of Logic Programming, 10:125–135, 1991.MATHMathSciNetCrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1998

Authors and Affiliations

  • Giorgio Levi
    • 1
  • Fausto Spoto
    • 1
  1. 1.Dipartimento di InformaticaUniversità di PisaPisaItaly

Personalised recommendations