Improving distributed unification through type analysis

  • Evelina Lamma
  • Paola Mello
  • Cesare Stefanelli
  • Pascal Van Hentenryck
Workshop 19: Symbolic Computation
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1300)


In distributed implementations of logic programming, data structures are spread among different nodes and unification involves sending and receiving messages to access them. Traditional implementations make remote data structures accessible to other processes by sending messages which carry either the overall data structure (infinite-level copying) or only remote references to these data structures (zero-level copying). These fixed policies can be far from optimal on various classes of programs and may induce substantial overhead. The purpose of this paper is to present an implementation scheme for distributed logic programming which consists of tailoring the copying level to each procedure. The scheme is based on a consumption specification which describes the way the procedure “consumes” its arguments locally. The consumption specification (or an approximation of it) can be automatically obtained through a static analysis inspired by traditional type analyses. The paper also describes a high-level distributed implementation that uses the consumption specification to avoid unnecessary copying and to request data structures globally. Experimental results for a network of workstations show the potential of the approach.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    H. Aït-Kaci: Warren's Abstract Machine. The MIT Press (1991).Google Scholar
  2. 2.
    A. Ciampolini, E. Lamma, P. Mello and C. Stefanelli: Multilevel Copying for Unification in Parallel Architectures. Proc. Second Euromicro Workshop on Parallel and Distributed Processing, IEEE Computer Society Press (1994) 518–525.Google Scholar
  3. 3.
    P. Cousot and R. Cousot: Abstract Interpretation and Application to Logic Programs. Journal of Logic Programming, 13 (1992) 103–180.Google Scholar
  4. 4.
    G. Frosini, P. Corsini and L. Rizzo: Implementing a parallel Prolog interpreter by using Occam and Transputers. Microprocessors and Microsystems, 13 (1989) 271–279.Google Scholar
  5. 5.
    F. Gecseg and M. Steinby: Tree Automata. Akademiai Kiado, Budapest (1984).Google Scholar
  6. 6.
    N. Heintze and J. Jaffar: A Finite Presentation Theorem for Approximating Logic Programs. Proc. 17th ACM Symp. on Principles of Programming Languages (1990) 197–209.Google Scholar
  7. 7.
    M. Hermenegildo, D. Cabeza and M. Carro: Using Attributed Variables in the Implementation of Concurrent and Parallel Logic Programming Systems. Proc. Int'l Conf. on Logic Programming ICLP95, The MIT Press (1995).Google Scholar
  8. 8.
    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) (1992) 205–258.Google Scholar
  9. 9.
    P. Kacsuk and M. Wise (eds.): Implementations of Distributed Prolog. J. Wiley and Sons (1992).Google Scholar
  10. 10.
    E. Lamma, P. Mello, C. Stefanelli and P. Van Hentenryck: Consumption-based Distributed Unification in parallel architectures. Proc. APPIA-GULP-PRODE96, M. Martelli and M. Navarro eds., San Sebastian (S) (1996).Google Scholar
  11. 11.
    S. Le Huitouze: A New Data Structure for Implementing Extensions to Prolog. P. Deransart and J. Maluszunski eds, Proc. Programming Language Implementation and Logic Programming, Springer-Verlag (1990) 136–150.Google Scholar
  12. 12.
    K. Nakajima, N. Ichiyoshi, K. Rokusawa and Y. Inamura: A new external reference management and distributed unification for KL1. ICOT editor, Proc. Int'l Conf. FGCS-88 (1988) 904–913.Google Scholar
  13. 13.
    L. Sterling, E. Shapiro: The Art of Prolog, MIT Press (1986).Google Scholar
  14. 14.
    Swedish Institute of Computer Science, SICStus Prolog User's Guide, S. Kista (1990).Google Scholar
  15. 15.
    S. Taylor: Parallel Logic Programming Techniques. Prentice-Hall International Editions (1989).Google Scholar
  16. 16.
    E. Tick: Parallel Logic Programming. MIT Press (1991).Google Scholar
  17. 17.
    P. Van Hentenryck, A. Cortesi, and B. Le Charlier: Type Analysis of Prolog using Type Graphs. Journal of Logic Programming, 22 (3) (1995).Google Scholar
  18. 18.
    D.H.D. Warren: An abstract Prolog instruction set. Technical Report TR 309, SRI International (1983).Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1997

Authors and Affiliations

  • Evelina Lamma
    • 1
  • Paola Mello
    • 2
  • Cesare Stefanelli
    • 1
  • Pascal Van Hentenryck
    • 3
  1. 1.DEIS, Università di BolognaBolognaItaly
  2. 2.Istituto di IngegneriaUniversity di FerraraFerraraItaly
  3. 3.Dept. of Computer ScienceBrown UniversityProvidenceUSA

Personalised recommendations