Christian Collberg
Department of Computer Science
University of Arizona
The rule:
The goal:
Can two terms and be ``made identical,'' by assigning values to their variables?
Two terms and match if
| variable subst. | |||
| a | a | yes | |
| a | b | no | |
| sin(X) | sin(a) | yes | |
| sin(a) | sin(X) | yes | |
| cos(X) | sin(a) | no | |
| sin(X) | sin(cos(a)) | yes |
| variable subst. | |||
| likes(c, X) | likes(a, X) | no | |
| likes(c, X) | likes(c, Y) | yes | |
| likes(X, X) | likes(c, Y) | yes | |
| likes(X, X) | likes(c, _) | yes | |
| likes(c, a(X)) | likes(V, Z) | yes | |
| likes(X, a(X)) | likes(c, Z) | yes |
Consequences of Prolog Matching: