Correcting a widespread error in unification algorithms

The unification of two patterns both containing variables is a ubiquitous operation in logic programming and in many artificial intelligence applications. Thus, many texts present unification algorithms. Unfortunately, at least seven of these presentations are incorrect. The common error occurs when logic variables are represented as binding lists; implementations that destructively update variable cells do not manifest the error. This note gives the examples that uncover the error and presents a correction.

[1]  Kevin Knight,et al.  Unification: a multidisciplinary survey , 1989, CSUR.

[2]  Stuart J. Russell,et al.  The compleat guide to MRS , 1985 .

[3]  Eugene Charniak,et al.  Artificial Intelligence Programming , 1987 .

[4]  M. W. Curtis,et al.  A Turing Machine Simulator , 1965, JACM.

[5]  Christopher Butler,et al.  Unification , 1937, Journal of the Irish Medical Association.

[6]  R. Wilensky,et al.  Common LISPcraft , 1986 .

[7]  Michael J. Maher,et al.  Unification Revisited , 1988, Foundations of Deductive Databases and Logic Programming..

[8]  Allan Ramsey,et al.  AI in Practice: Examples in Pop-11 , 1987 .

[9]  Drew McDermott,et al.  Introduction to artificial intelligence , 1986, Addison-Wesley series in computer science.

[10]  David Maier,et al.  Computing with logic , 1988 .

[11]  Patrick Henry Winston,et al.  Lisp , 1981, Reihe Künstliche Intelligenz.

[12]  Gerald J. Sussman,et al.  Structure and interpretation of computer programs , 1985, Proceedings of the IEEE.

[13]  Wade L. Hennessey Common Lisp , 1989 .

[14]  J. A. Robinson,et al.  A Machine-Oriented Logic Based on the Resolution Principle , 1965, JACM.