##
inc(X, succ(X)). % you don't have to understand this.
##
##
foo :-
inc(X, Y), % Implicit RELATION.
X = zero, % MATCH X against the atom zero, impliclity match Y.
something(X, Y). % same as something(zero, succ(zero)).
bar :-
inc(X, Y), % Same implicit relation.
Y = succ(zero), % Implicitly match X against zero.
something(X, Y). % same as something(zero, succ(zero)).