Dynamic memory management for sequential logic programming languages

  • Y. Bekkers
  • O. Ridoux
  • L. Ungaro
Part of the Lecture Notes in Computer Science book series (LNCS, volume 637)


Logic programming languages are becoming more complex with the introduction of new features such as constraints or terms with an equality theory. With this increase in complexity, they require more and more sophisticated memory management. This survey gives an insight into the memory management problems in sequential logic programming language implementations; it also describes the presently known solutions. It is meant to be understood by non-specialists in logic programming with good knowledge of memory management in general. We first describe a “usefulness logic” for run-time objects. Usefulness logic defines non-garbage objects. Next, memory management systems are presented from the most trivial original run-time system, with no real concern for memory problems, to elaborated run-time systems with memory management closely observing the usefulness logic. Finally, the choice of a garbage collection technique is discussed in relation with logic programming specificities.


Logic Program Logic Programming Garbage Collection Memory Management Garbage Collector 
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.
    A. Aggoun and N. Beldiceanu. Time stamps techniques for the trailed data in constraint logic programming systems. In Séminaire de Programmation Logique de Trégastel, pages 487–509, CNET, France, 1990.Google Scholar
  2. 2.
    H. Aït-Kaci. The WAM: A (Real) Tutorial. Technical Report 5, DEC Paris Research Laboratory, 1990. Revised in Warren's Abstract Machine: A Tutorial Reconstruction, MIT Press, 1991.Google Scholar
  3. 3.
    K. Appleby, M. Carlsson, S. Haridi, and D. Sahlin. Garbage collection for Prolog based on the WAM. CACM, 31(6), 1988.Google Scholar
  4. 4.
    H.G. Baker. List-processing in real-time on a serial computer. CACM, 2l(4):280–294, 1978.Google Scholar
  5. 5.
    J. Barklund. A Garbage Collection Algorithm for Tricia. Technical Report 37B, UPMAIL, Uppsala University, 1987.Google Scholar
  6. 6.
    Y. Bekkers, B. Canet, O. Ridoux, and L. Ungaro. MALI: a memory with a real-time garbage collector for implementing logic programming languages. In 3rd Symp. Logic Programming, IEEE, 1986.Google Scholar
  7. 7.
    Y. Bekkers, B. Canet, O. Ridoux, and L. Ungaro. A memory management machine for Prolog. In Informatique-85, Symposium Soviéto-Français, pages 111–117, Tallin, 1985.Google Scholar
  8. 8.
    Y. Bekkers, B. Canet, O. Ridoux, and L. Ungaro. A memory management machine for Prolog interpreters. In S-Å. Tärnlund, editor, 2nd Int. Conf. Logic Programming, pages 343–351, Uppsala University, 1984.Google Scholar
  9. 9.
    Y. Bekkers, B. Canet, O. Ridoux, and L. Ungaro. A short note on garbage collection in Prolog interpreters. Logic Programming Newsletter, (5), 1983.Google Scholar
  10. 10.
    Y. Bekkers and L. Ungaro. Implementing parallel garbage collector for Prolog. In A. Voronkov, editor, Russian Conf. Logic Programming, Leningrad, 1991. LNCS 592.Google Scholar
  11. 11.
    D.J. Bevan. Distributed garbage collection using reference counting. In PARLE, pages 176–187, 1987.Google Scholar
  12. 12.
    P. Boizumault. A general model to implement dif and freeze. In E. Shapiro, editor, 3rd Int. Conf. Logic Programming, London, 1986. LNCS 225.Google Scholar
  13. 13.
    R.S. Boyer and J.S. Moore. The sharing of structure in theorem-proving programs. In B. Meltzer and D. Mitchie, editors, Machine Intelligence, pages 101–116, Edinburgh University Press, 1972.Google Scholar
  14. 14.
    P. Brisset. Compilation de λProlog. Thèse, Université de Rennes I, 1992.Google Scholar
  15. 15.
    M. Bruynooghe. Garbage collection in Prolog implementations. In J.A. Campbell, editor, Implementations of Prolog, pages 259–267, Ellis Horwood, 1984.Google Scholar
  16. 16.
    M. Bruynooghe. The memory management of Prolog implementations. In Logic Programming Workshop, Debrecen, Hungary, 1980. Revised in S-Å. Tärnlund and K.L. Clark (editors), Logic Programming, pages 83–98, Academic Press, 1982.Google Scholar
  17. 17.
    M. Bruynooghe. A note on garbage collection in Prolog interpreters. In 1st Int. Conf. Logic Programming, 1982.Google Scholar
  18. 18.
    M. Carlsson. Freeze, indexing and other implementation issues in the WAM. In J.L. Lassez, editor, 4th Int. Conf. Logic Programming, pages 40–58, MIT Press, Melbourne, 1987.Google Scholar
  19. 19.
    M. Carlsson and J. Widèn. SICStus Prolog User's Manual. Research Report SICS/R88007C, SICS, 1988.Google Scholar
  20. 20.
    C.J.Cheney. A nonrecursive list compacting algorithm. CACM, 13(11):677–678, 1970.Google Scholar
  21. 21.
    A. Ciepielewski and S. Haridi. Storage Models for Or-Parallel Execution of Logic Programs. Technical Report Report TRITA-CS-8301, Royal Institute of Technology, Stockholm, 1983.Google Scholar
  22. 22.
    A. Colmerauer. Opening the Prolog III universe. Byte Magazine, 12(9), 1987. Special Issue on Logic Programming.Google Scholar
  23. 23.
    J. Crammond. A garbage collection algorithm for shared memory parallel processors. Int. J. on Parallel Processing, 17(6):497–522, 1988.CrossRefGoogle Scholar
  24. 24.
    M. Dincbas, P. Van Hentenryck, H. Simonis, A. Aggoun, and T. Graf. The constraint logic programming language CHIP. In Int. Conf. on Fifth Generation Computer Systems, pages 693–702, Tokyo, 1988.Google Scholar
  25. 25.
    M. Dorochevsky, K. Schuerman, A. Véron, and J. Xu. Constraint handling, garbage collection and execution model issues in ElipSys. In A. Beaumont and G. Gupta, editors, ICLP'91 Workshop on Parallel Execution of Logic Programs, pages 17–28, 1991.Google Scholar
  26. 26.
    R.R. Fenichel and J.C. Yochelson. A LISP garbage-collector for virtual-memory computer systems. CACM, 12(11):611–612, 1969.Google Scholar
  27. 27.
    A. Goto, Y. Kimura, T. Nakagawa, and T. Chikayama. Lazy reference counting: an incremental garbage collection method for parallel inference machines. In 5th Int. Conf. and Symp. on Logic Programming, pages 1241–1256, 1988.Google Scholar
  28. 28.
    S. Le Huitouze. Mise en œuvre de PrologII/MALI. Thèse, Université de Rennes I, 1988.Google Scholar
  29. 29.
    S. Le Huitouze. A new data structure for implementing extensions to Prolog. In P. Deransart and J. Maluszyński, editors, Int. Work. Programming Languages Implementation and Logic Programming, 1990. LNCS 456.Google Scholar
  30. 30.
    H. Lieberman and C. Hewitt. A real-time garbage collector based on the lifetimes of objects. CACM, 26(6):419–429, 1983.Google Scholar
  31. 31.
    T.G. Lindholm and R.A. O'Keefe. Efficient implementation of a defensible semantics for dynamic Prolog code. In 4th Int. Conf. Logic Programming, MIT Press, Melbourne, Australia, 1987.Google Scholar
  32. 32.
    C.S. Mellish. An alternative to structure-sharing in the implementation of a Prolog interpreter. In Work. Logic Programming, Debrecen, Hungary, 1980.Google Scholar
  33. 33.
    D. Moon. Garbage collection in a large Lisp system. In ACM Conf. Lisp and Functional Programming, 1990.Google Scholar
  34. 34.
    F.L. Morris. A time and space efficient garbage compaction algorithm. CACM, 21(8):662–665, 1978.Google Scholar
  35. 35.
    G. Nadathur and D. Miller. An overview of λProlog. In K. Bowen and R. Kowalski, editors, Symp. Logic Programming, pages 810–827, 1988.Google Scholar
  36. 36.
    U. Neumerkel. Extensible unification by metastructures. In Meta-Programming in Logic Programming, pages 352–363, Leuven, Belgium, 1990.Google Scholar
  37. 37.
    E. Pittomvils, M. Bruynooghe, and Y.D. Willems. Towards a real-time garbage collector for Prolog. In 2nd Symp. Logic Programming, IEEE, 1985.Google Scholar
  38. 38.
    O. Ridoux. MALIv06: Tutorial and Reference Manual. Publication Interne 611, IRISA, 1991.Google Scholar
  39. 39.
    P. Roussel. Prolog: manuel de référence et d'utilisation. Technical Report, G.I.A. Université Aix-Marseille, 1975.Google Scholar
  40. 40.
    D. Sahlin. Making Garbage Collection Independent of the Amount of Garbage. Research Report SICS/R-87/87008, SICS, 1987.Google Scholar
  41. 41.
    D. Sahlin and M. Carlsson. Variable Shunting for the WAM. Research Report SICS/R-91/9107, SICS, 1991.Google Scholar
  42. 42.
    J. Schimpf. Garbage collection for Prolog based on twin cells. In 2nd NACLP Workshop on Logic Programming Architectures and Implementations, MIT Press, 1990.Google Scholar
  43. 43.
    Touraïvane. La récupération de mémoire dans les machines non déterministes. Thèse, Université d'Aix-Marseille, 1988.Google Scholar
  44. 44.
    K. Ueda and M. Morita. A new implementation technique for flat GHC. In D.H.D. Warren and P. Szeredi, editors, 7th Int. Conf. Logic Programming, pages 3–17, MIT Press, Jerusalem, 1990.Google Scholar
  45. 45.
    D. Ungar. Generation scavenging: a non-disruptive high performance storage reclamation algorithm. SIGPLAN Notices, (ACM), 19(5):157–167, 1984.Google Scholar
  46. 46.
    M. Van Caneghem. L'anatomie de PrologII. Thèse de doctorat d'état, Université d'Aix-Marseille, 1984. Also in L'anatomie de PrologII, InterÉdition, Paris, 1986.Google Scholar
  47. 47.
    P.L. Wadler. Fixing some space leaks with a garbage collector. Software — Practice and Experience, 17(9):595–608, 1987.Google Scholar
  48. 48.
    D.H.D. Warren. An Abstract Prolog Instruction Set. Technical Note 309, SRI International, 1983.Google Scholar
  49. 49.
    D.H.D. Warren. Implementing Prolog — Compiling Logic Programs, Vol. 1 and 2. D.A.I. Research Report 39, 40, University of Edinburgh, 1977.Google Scholar
  50. 50.
    D.H.D. Warren. An improved Prolog implementation which optimises tail-recursion. In Work. Logic Programming, Debrecen, Hungary, 1980.Google Scholar
  51. 51.
    D.H.D. Warren. Perpetual processes — an unexploited Prolog technique. Logic Programming Newsletter, (3), 1982.Google Scholar
  52. 52.
    D.S. Warren. Efficient Prolog memory management for flexible control strategies. In 1984 Int. Symp. Logic Programming, IEEE Computer Society Press, Atlantic City, NJ, 1984.Google Scholar
  53. 53.
    P. Weemeeuw and B. Demoen. A la recherche de la mémoire perdue, or: memory compaction for shared memory multiprocessors—design and specification. In S. Debray and M. Hermenegildo, editors, 2nd North American Conf. on Logic Programming, pages 306–320, 1990.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1992

Authors and Affiliations

  • Y. Bekkers
    • 1
  • O. Ridoux
    • 1
  • L. Ungaro
    • 1
  1. 1.IRISA/INRIA-RennesCampus Universitaire de BeaulieuRennes CedexFrance

Personalised recommendations