% cut4.pl:  The last place to put the cut in our rule is after
% both predicates.  Here it is:

firstvalue(a).
firstvalue(b).
secondvalue(1).
secondvalue(2).

cartesian(X,Y) :- firstvalue(X), secondvalue(Y), !.

% Same plan:  Before reading further, what do you think will happen, and why?
% Go ahead and try it, then read on.
%
%
%
% How did you do?  With both predicates on the left of the cut, Prolog
% satisfies both X and Y once, goes through the one-way glass, but cannot
% backtrack through it.  Thus, we get just the first pair of unifications. 
% Prolog doesn't even bother to ask us if we want to continue; there's no
% reason to ask because there's nothing more for Prolog to try.

