This Article 
 Bibliographic References 
 Add to: 
Logic Programming with Arrays
September 1991 (vol. 3 no. 3)
pp. 307-319

Nial is a programming language designed around a mathematical treatment of data as nested arrays. A goal of the research described is to integrate within Nial a functional style of programming based on the theory of arrays with the declarative capabilities of a logic programming environment. This is partially accomplished by storing logic clauses as arrays which can be manipulated using logic clauses. Arrays as terms are considered as part of the syntax of the clauses. The approach to logic programming is based on providing a flexible environment for experimenting with full clausal or Horn clause logic. A variety of predefined control strategies and the capability for user-defined control strategies have been provided. The expressive capabilities of combining logic and functional programming styles provides a suitable language for many application areas. The philosophy and design behind a combined logic/database model used to prototype a knowledge-based systems application are described.

[1] R. G. Bandes, "Constraining unification and the programming language Unicorn," inLogic Programming: Functions Relations and Equations, Degroot and Lindstrom, Eds. Englewood Cliffs, NJ: Prentice-Hall, 1985, pp. 397-410.
[2] R. Barbutti, M. Bellia, and G. Levi, "LEAF: A language which integrates logic, equations, and functions," inLogic Programming: Functions, Relations, and Equations, DeGroot and Lindstrom, Eds. Englewood Cliffs, NJ: Prentice-Hall, 1986, pp. 201-239.
[3] E. Blevis, "A basis for effective logic programming in Nial," Master's Thesis, Queen's Univ., Kingston, Canada, 1986.
[4] R. Chau, J. I. Glasgow, and M. A. Jenkins, "A framework for knowledge based systems in Nial," inProc. 1987 Phoenix Conf. Comput. Commun., Feb. 1987.
[5] R. Chau, J. I. Glasgow, and M. A. Jenkins, "Fuzzy information management using the roster model," inProc. 21st Hawaii Int. Conf. Syst. Sci., (HICSS-21), Jan. 1988.
[6] M. Féret, "More expressive logic programming in Nial," M.Sc. Thesis, Queen's University, Kingston, Canada, 1988.
[7] J. I. Glasgow and R. A. Browse, "Programming languages for artificial intelligence,"Int. J. Comput. Math. with Appl., Special Issue on Practical Artificial Intelligence Systems, vol. 11, no. 5, pp. 431-449, May 1985.
[8] J. I. Glasgow, M. A. Jenkins, and C. McCrosky, "User defined parallel control strategies," inMicrocomputer-Based Expert Systems, Gupta and Prasad, Eds. IEEE Press, 1988. Also appears inProc Second IEEE Symp. Logic Programming, Boston, MA, July 1985.
[9] J. I. Glasgow and M.A. Jenkins, "Array theory, logic and the Nial language," inProc. Int. Conf. Comput. Languages, Miami, FL, Oct. 1988.
[10] J. I. Glasgow, M. A. Jenkins, C. McCrosky, and H. Meijer, "Expressing parallel algorithms in Nial,"Parallel Comput. J., to appear 1989.
[11] M. A. Jenkins, J. I. Glasgow, and C. McCrosky, "Programming styles in Nial,"IEEE Software, Jan. 1986.
[12] M. A. Jenkins and J. I. Glasgow, "A logical basis for nested array data structures,"Programming Languages J., vol. 14, no. 1, pp. 35-49, 1989.
[13] M. A. Jenkins and W. H. Jenkins,The Q'Nial Reference Manual, Nial Systems Ltd., Kingston, Ont., Canada, 1985.
[14] M. A. Jenkins, "Nial as an AI language." inProc. 3rd Artif. Intell. Advanced Comput. Technol. Conf., Long Beach, 1987, pp. 93-97.
[15] M. A. Jenkins and W. H. Jenkins,Artificial Intelligence Toolkit for Q'Nial, Nial Systems Ltd., Kingston, Ont., Canada, 1987.
[16] H. J. Komorowski, "QLOG--The programming environment for Prolog in Lisp," inLogic Programming, K. L. Clark and S. A. Tarnlund, Eds. New York: Academic, 1982, pp. 315-323.
[17] R. Kowalski,Logic for Problem Solving. New York: North-Holland, 1979.
[18] A. Martelli and U. Montanari, "Optimizing decision trees through heuristically guided search,"Commun. ACM, vol. 21, pp. 1025-1039, Dec. 1978.
[19] A. Martelli and U. Montanari, "An efficient unification algorithm,"ACM Trans. Program. Lang. Syst., vol. 4, no. 2, pp. 258-282, 1982.
[20] T. More, "Notes on the diagrams, logic and operations of array theory," inStructures and Operations in Engineering and Management Systems, Bjorke and Franksen, Eds. Trondheim, Norway: Tapir, 1981.
[21] M. S. Paterson and M. N. Wegman, "Linear unification," inProc. 8th ACM Symp. Theory Comput., pp. 181-186, 1976.
[22] D. L. Poole and R. Goebel, "Gracefully adding negation and disjunction to Prolog," inProc. Third Int. Conf. Logic Programming, London, July 1976.
[23] U. S. Reddy, "On the relationship between logic and functional languages," inLogic Programming: Functions, Relations, and Equations, DeGroot and Lindstrom, Eds. Englewood Cliffs, NJ: Prentice-Hall, 1986.
[24] J. A. Robinson, "A machined-oriented logic based on the resolution principle,"J. Assoc. Comput. Mach., vol. 12, no. 1, pp. 23-41, Jan. 1965.
[25] J. A. Robinson and E. E. Sibert, "LOGLISP: Motivations, design and implementation," inLogic Programming, K. L. Clark and S. A. Tarnlund, Eds. New York: Academic, 1982, pp. 299-314.
[26] M. Sato and T. Sakurai, "QUTE: A functional language based on unification," inProc. Int. Conf. Fifth Generation Comput. Syst., ICOT 1984, pp. 156-165
[27] F. Schmidt, "Data systems design using the roster model in Nial," inProc. 3rd Leuchendahl Workshop Structures in Syst. Sci., Trondheim 1983.
[28] J.H. Siekman, "Universal unification," inProc. Seventh Int. Conf. Automated Deduction, Lectures Notes in Computer Science, no. 170. New York: Springer-Verlag, 1984, pp. 1-42.
[29] P. A. Subrahmanyam, "FUNLOG = Functions + Logic: A computational model integrating functional and logical programming," inProc. Int. Symp. Logic Programming, IEEE, 1984, pp. 144-153.
[30] Z. D. Umrigar and V. Pitchumani, "An experiment in programming with full first-order logic," inProc. Symp. Logic Programming, Boston, MA, July 1985.

Index Terms:
Nial; programming language; mathematical treatment; nested arrays; functional style; declarative capabilities; logic programming environment; logic clauses; Horn clause logic; user-defined control strategies; functional programming; knowledge-based systems application; functional programming; high level languages; logic programming
J.I. Glasgow, M.A. Jenkins, E. Blevis, M.P. Féret, "Logic Programming with Arrays," IEEE Transactions on Knowledge and Data Engineering, vol. 3, no. 3, pp. 307-319, Sept. 1991, doi:10.1109/69.91061
Usage of this product signifies your acceptance of the Terms of Use.