In PROLOG there is an idea called: unification. It’s similar to setting a variable to something but there are certainly several difference (otherwise it would be called assignment). One major difference in unification is pattern matching. For instance if I had the following code segment in PROLOG

X / Y = 10 / a

Then the variable X will be assigned 10 and the variable Y will be assigned a. This is very powerful tool. Unification however has some limitations. For instance, unification with bounds-check (the default unification in PROLOG) won’t allow one to do the following.

X is X+1

That’s because the right hand side contains (or is an improper subset) of the left hand side. This unification with bounds check is computed using substitution which I will further discuss at some other time.

For now that was a bit of PROLOG for you!