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
Preview
Unable to display preview. Download preview PDF.
References
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.
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.
K. Appleby, M. Carlsson, S. Haridi, and D. Sahlin. Garbage collection for Prolog based on the WAM. CACM, 31(6), 1988.
H.G. Baker. List-processing in real-time on a serial computer. CACM, 2l(4):280–294, 1978.
J. Barklund. A Garbage Collection Algorithm for Tricia. Technical Report 37B, UPMAIL, Uppsala University, 1987.
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.
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.
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.
Y. Bekkers, B. Canet, O. Ridoux, and L. Ungaro. A short note on garbage collection in Prolog interpreters. Logic Programming Newsletter, (5), 1983.
Y. Bekkers and L. Ungaro. Implementing parallel garbage collector for Prolog. In A. Voronkov, editor, Russian Conf. Logic Programming, Leningrad, 1991. LNCS 592.
D.J. Bevan. Distributed garbage collection using reference counting. In PARLE, pages 176–187, 1987.
P. Boizumault. A general model to implement dif and freeze. In E. Shapiro, editor, 3rd Int. Conf. Logic Programming, London, 1986. LNCS 225.
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.
P. Brisset. Compilation de λProlog. Thèse, Université de Rennes I, 1992.
M. Bruynooghe. Garbage collection in Prolog implementations. In J.A. Campbell, editor, Implementations of Prolog, pages 259–267, Ellis Horwood, 1984.
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.
M. Bruynooghe. A note on garbage collection in Prolog interpreters. In 1st Int. Conf. Logic Programming, 1982.
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.
M. Carlsson and J. Widèn. SICStus Prolog User's Manual. Research Report SICS/R88007C, SICS, 1988.
C.J.Cheney. A nonrecursive list compacting algorithm. CACM, 13(11):677–678, 1970.
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.
A. Colmerauer. Opening the Prolog III universe. Byte Magazine, 12(9), 1987. Special Issue on Logic Programming.
J. Crammond. A garbage collection algorithm for shared memory parallel processors. Int. J. on Parallel Processing, 17(6):497–522, 1988.
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.
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.
R.R. Fenichel and J.C. Yochelson. A LISP garbage-collector for virtual-memory computer systems. CACM, 12(11):611–612, 1969.
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.
S. Le Huitouze. Mise en œuvre de PrologII/MALI. Thèse, Université de Rennes I, 1988.
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.
H. Lieberman and C. Hewitt. A real-time garbage collector based on the lifetimes of objects. CACM, 26(6):419–429, 1983.
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.
C.S. Mellish. An alternative to structure-sharing in the implementation of a Prolog interpreter. In Work. Logic Programming, Debrecen, Hungary, 1980.
D. Moon. Garbage collection in a large Lisp system. In ACM Conf. Lisp and Functional Programming, 1990.
F.L. Morris. A time and space efficient garbage compaction algorithm. CACM, 21(8):662–665, 1978.
G. Nadathur and D. Miller. An overview of λProlog. In K. Bowen and R. Kowalski, editors, Symp. Logic Programming, pages 810–827, 1988.
U. Neumerkel. Extensible unification by metastructures. In Meta-Programming in Logic Programming, pages 352–363, Leuven, Belgium, 1990.
E. Pittomvils, M. Bruynooghe, and Y.D. Willems. Towards a real-time garbage collector for Prolog. In 2nd Symp. Logic Programming, IEEE, 1985.
O. Ridoux. MALIv06: Tutorial and Reference Manual. Publication Interne 611, IRISA, 1991.
P. Roussel. Prolog: manuel de référence et d'utilisation. Technical Report, G.I.A. Université Aix-Marseille, 1975.
D. Sahlin. Making Garbage Collection Independent of the Amount of Garbage. Research Report SICS/R-87/87008, SICS, 1987.
D. Sahlin and M. Carlsson. Variable Shunting for the WAM. Research Report SICS/R-91/9107, SICS, 1991.
J. Schimpf. Garbage collection for Prolog based on twin cells. In 2nd NACLP Workshop on Logic Programming Architectures and Implementations, MIT Press, 1990.
Touraïvane. La récupération de mémoire dans les machines non déterministes. Thèse, Université d'Aix-Marseille, 1988.
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.
D. Ungar. Generation scavenging: a non-disruptive high performance storage reclamation algorithm. SIGPLAN Notices, (ACM), 19(5):157–167, 1984.
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.
P.L. Wadler. Fixing some space leaks with a garbage collector. Software — Practice and Experience, 17(9):595–608, 1987.
D.H.D. Warren. An Abstract Prolog Instruction Set. Technical Note 309, SRI International, 1983.
D.H.D. Warren. Implementing Prolog — Compiling Logic Programs, Vol. 1 and 2. D.A.I. Research Report 39, 40, University of Edinburgh, 1977.
D.H.D. Warren. An improved Prolog implementation which optimises tail-recursion. In Work. Logic Programming, Debrecen, Hungary, 1980.
D.H.D. Warren. Perpetual processes — an unexploited Prolog technique. Logic Programming Newsletter, (3), 1982.
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.
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.
Author information
Authors and Affiliations
Editor information
Rights 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