ガードで引数として渡された変数そのものとのユニフィケーションを行なう場 合, ヘッドの対応する引数の位置に, 直接ユニフィケーションの相手を書いて しまうような略記ができる. たとえば, 前のインバータの例にあった
という節はnot(In, Out) :- In = 1 | Out = 0.
と略記できる.not(1, Out) :- true | Out = 0.
整数 1 のような具体的な値でなくても, 引数同士のユニフィケーション (引 数の値が同じ) をガードで行なう場合, たとえば
という節はsame(X, Y, R) :- X = Y | R = same.
と, 同じ変数名をヘッドに2回使って表現することもできる.same(X, X, R) :- true | R = same.