Prolog Unification

Examples

Consider the following

2 = 2.
2 = 1 + 1.

Lists

Basic Syntax.

.(car, cdr)
.(1, .(2, .(3, [])))

(show diagrams)

Alternative Syntax.

.(1, .(2, .(3, []))) = [1, 2, 3].
.(1, .(2, .(3, []))) = [1 | [2, 3]].
.(1, .(2, .(3, []))) = [1 | [2 | [3]]].
.(1, .(2, .(3, []))) = [1 | [2 | [3 | []]]].
.(car, cdr) = [car | cdr].

(note trailing dot vs. dot as functor) (show diagrams)

Unification with Variables

Note "=" does not mean "assignment". Note "=" does not mean "equality test". In Prolog, "=" means unify the two terms.

A + B = +(2, 3).
+(A, B) = +(2, 3).
A + B = 2 + 3.
=( A + B,  2 + 3).

Unification with Lists, Variables

[Car|Cdr] = [1, 2, 3].
[First, Second | Rest] = [1, 2, 3].
[First, Second | Rest] = [one, two].
[First, Second | Rest] = [bad].