This Article 
 Bibliographic References 
 Add to: 
Computational Improvements in Prolog Applications by Predicate Variable Pointers
May 1990 (vol. 16 no. 5)
pp. 490-497

The programming tradeoffs between structure-oriented and clause-oriented operations on data structures in Prolog are limited in current implementations because the assertion of clauses that include uninstantiated variables destroys any binding between these variables and those with which they are unified in the execution of the program. Built-in predicates for Prolog that allow one to assert predicate variables pointers, which are constants, rather than uninstantiated variables, are presented. The author shows: the possible performance benefits of clause-oriented implementations of data structures over equivalent structure-oriented versions, the logical implications of the proposed built-in predicates, and their practical significance by integrating them in C-Prolog and evaluating the two different implementations of the symbol table dictionary in D.H.D. Warren's pseudo-Pascal compiler example.

[1] ALS Prolog Technical Reference Manual, Applied Logic Systems Inc., Syracuse, NY, 1988.
[2] Quintus Prolog V2.2 User's Guide, Quintus Computer Systems, Mountain View, CA, 1988.
[3] P. Boizumault, "A general model to implement DIF and FREEZE," inProc. Third Int. Conf. Logic Programming(LNCS 225), E. Shapiro, Ed. New York: Springer-Verlag, 1986, pp. 585-592.
[4] K. A. Bowen and R. A. Kowalski, "Amalgamating language and metalanguage in logic programming," inLogic Programming, K. L. Clark and S.-A. Tarnlund, Eds. New York: Academic, 1982, pp. 153-172.
[5] W. F. Clocksin and C. S. Mellish,Programming in Prolog. New York: Springer-Verlag, 1984.
[6] P. M. Hill and J. W. Lloyd, "Meta-programming for dynamic knowledge bases," Dep. Comput. Sci., Univ. Bristol, Bristol, England, Tech. Rep. CS-88-18, Dec. 1988.
[7] C. J. Hogger,Introduction to Logic Programming. London: Academic, 1984.
[8] D. E. Knuth,The Art of Computer Programming, Vol. 3, Reading, MA: Addison-Wesley, 1973.
[9] J. W. Lloyd, "Directions for meta-programming," inProc. Fifth Generation Computer Systems '88, Tokyo, Japan, Nov 1988.
[10] H. Nakashima, S. Tomura, and K. Ueda, "What is a variable in Prolog?" inProc. Int. Conf. Fifth Generation Computer Systems, Tokyo, Japan, 1984, pp. 327-332.
[11] C-Prolog User's Guide, Version 1.2a, Dep. Architecture, Univ. Edinburgh, Edinburgh, Scotland, Tech. Rep. UE-83-82/11, Mar. 1983.
[12] C. Sterling and E. Shapiro,The Art of Prolog: Advanced Programming Techniques. Cambridge, MA: MIT Press, 1986.
[13] D. H. D. Warren, "Logic programming and compiler writing,"Software Practice and Experience, vol. 10, no. 11, 1980.

Index Terms:
structure-oriented operations; Warren; computational improvements; Prolog applications; predicate variable pointers; clause-oriented operations; data structures; uninstantiated variables; performance benefits; logical implications; built-in predicates; C-Prolog; symbol table dictionary; pseudo-Pascal compiler; computational complexity; data structures; PROLOG.
G.M. Karam, "Computational Improvements in Prolog Applications by Predicate Variable Pointers," IEEE Transactions on Software Engineering, vol. 16, no. 5, pp. 490-497, May 1990, doi:10.1109/32.52772
Usage of this product signifies your acceptance of the Terms of Use.