%-----------------------------------------------------------------------------
sum(X,Y,Z):-
    nonvar(X),
    nonvar(Y),
    Z is X+Y.

sum(X,Y,Z):-
    var(Y),
    nonvar(Z),
    nonvar(X),
    Y is Z-X.

sum(X,Y,Z):-
    var(X),
    nonvar(Z),
    nonvar(Y),
    X is Z-Y.

product(X,Y,Z):-
    nonvar(X),
    nonvar(Y),
    Z is X*Y.

product(X,Y,Z):-
    var(Y),
    nonvar(Z),
    nonvar(X),
    Y is Z/X.

product(X,Y,Z):-
    var(X),
    nonvar(Z),
    nonvar(Y),
    X is Z/Y.
%-----------------------------------------------------------------------------
