Skip to main content

Dynamic memory management for sequential logic programming languages

  • Surveys
  • Conference paper
  • First Online:
Memory Management (IWMM 1992)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 637))

Included in the following conference series:

Abstract

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.

This article was processed using the LATEX macro package with LLNCS style

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  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. 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. K. Appleby, M. Carlsson, S. Haridi, and D. Sahlin. Garbage collection for Prolog based on the WAM. CACM, 31(6), 1988.

    Google Scholar 

  4. H.G. Baker. List-processing in real-time on a serial computer. CACM, 2l(4):280–294, 1978.

    Google Scholar 

  5. J. Barklund. A Garbage Collection Algorithm for Tricia. Technical Report 37B, UPMAIL, Uppsala University, 1987.

    Google Scholar 

  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. 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. 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. 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. 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. D.J. Bevan. Distributed garbage collection using reference counting. In PARLE, pages 176–187, 1987.

    Google Scholar 

  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. 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. P. Brisset. Compilation de λProlog. Thèse, Université de Rennes I, 1992.

    Google Scholar 

  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. 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. M. Bruynooghe. A note on garbage collection in Prolog interpreters. In 1st Int. Conf. Logic Programming, 1982.

    Google Scholar 

  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. M. Carlsson and J. Widèn. SICStus Prolog User's Manual. Research Report SICS/R88007C, SICS, 1988.

    Google Scholar 

  20. C.J.Cheney. A nonrecursive list compacting algorithm. CACM, 13(11):677–678, 1970.

    Google Scholar 

  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. A. Colmerauer. Opening the Prolog III universe. Byte Magazine, 12(9), 1987. Special Issue on Logic Programming.

    Google Scholar 

  23. J. Crammond. A garbage collection algorithm for shared memory parallel processors. Int. J. on Parallel Processing, 17(6):497–522, 1988.

    Article  Google Scholar 

  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. 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. 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. 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. S. Le Huitouze. Mise en œuvre de PrologII/MALI. Thèse, Université de Rennes I, 1988.

    Google Scholar 

  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. 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. 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. 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. D. Moon. Garbage collection in a large Lisp system. In ACM Conf. Lisp and Functional Programming, 1990.

    Google Scholar 

  34. F.L. Morris. A time and space efficient garbage compaction algorithm. CACM, 21(8):662–665, 1978.

    Google Scholar 

  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. U. Neumerkel. Extensible unification by metastructures. In Meta-Programming in Logic Programming, pages 352–363, Leuven, Belgium, 1990.

    Google Scholar 

  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. O. Ridoux. MALIv06: Tutorial and Reference Manual. Publication Interne 611, IRISA, 1991.

    Google Scholar 

  39. P. Roussel. Prolog: manuel de référence et d'utilisation. Technical Report, G.I.A. Université Aix-Marseille, 1975.

    Google Scholar 

  40. D. Sahlin. Making Garbage Collection Independent of the Amount of Garbage. Research Report SICS/R-87/87008, SICS, 1987.

    Google Scholar 

  41. D. Sahlin and M. Carlsson. Variable Shunting for the WAM. Research Report SICS/R-91/9107, SICS, 1991.

    Google Scholar 

  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. 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. 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. D. Ungar. Generation scavenging: a non-disruptive high performance storage reclamation algorithm. SIGPLAN Notices, (ACM), 19(5):157–167, 1984.

    Google Scholar 

  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. P.L. Wadler. Fixing some space leaks with a garbage collector. Software — Practice and Experience, 17(9):595–608, 1987.

    Google Scholar 

  48. D.H.D. Warren. An Abstract Prolog Instruction Set. Technical Note 309, SRI International, 1983.

    Google Scholar 

  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. D.H.D. Warren. An improved Prolog implementation which optimises tail-recursion. In Work. Logic Programming, Debrecen, Hungary, 1980.

    Google Scholar 

  51. D.H.D. Warren. Perpetual processes — an unexploited Prolog technique. Logic Programming Newsletter, (3), 1982.

    Google Scholar 

  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. 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 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Yves Bekkers Jacques Cohen

Rights and permissions

Reprints and permissions

Copyright information

© 1992 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Bekkers, Y., Ridoux, O., Ungaro, L. (1992). Dynamic memory management for sequential logic programming languages. In: Bekkers, Y., Cohen, J. (eds) Memory Management. IWMM 1992. Lecture Notes in Computer Science, vol 637. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0017184

Download citation

  • DOI: https://doi.org/10.1007/BFb0017184

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-55940-5

  • Online ISBN: 978-3-540-47315-2

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics