Success: instance(atom,X). instance(f(a,b),X). instance(f(a,b),f(X,Y)). instance(f(a,X),f(Y,X)). instance(f(a,X),f(X,Y)). instance(f(X,Y),f(Y,X)). instance([a,b,c],[A,B,C]). instance([a,f(1,b,X),Y|Z],T). instance(f(X),X). % with occur_check off Fail: instance(f(a,b),f(X,X)). instance(X,a). instance(f(X),X). % with occur_check on