(== x x) = x for all x
(== x y) = (== y x) for all x and y
(== x (== x y)) = (== x y) for all x and y
(== x (== y z)) = (== (== x y) z)
(== [x, 1] [2, y]) = [2, 1] (== [2, y] [z, 3]) = [2, 3] (== [x, 1] [z, 3]) does not unify (since 1 does not unify with 3)