% Ukázka řezu plati(a). plati(b) :- !. plati(c). % Robinsonova Aritmetika geq(_, 0). geq(s(X), s(Y)) :- geq(X, Y). lt(X, Y) :- geq(Y, s(X)). % max_nocut(+X, +Y, -M) :- M = max(X, Y). max_nocut(X, Y, X) :- geq(X, Y). max_nocut(X, Y, Y) :- lt(X, Y). % max(+X, +Y, -M) :- M = max(X, Y). max(X, Y, X) :- geq(X, Y), !. max(X, Y, Y) :- lt(X, Y). % max2(+X, +Y, -M) :- M = max(X, Y). max2(X, Y, Z) :- geq(X, Y), !, Z = X. max2(_, Y, Y). negace(Predikat) :- Predikat, !, fail. negace(_). %% Všemožné mazací predikáty smaz(P, [P|L], L). smaz(P, [X|L], [X|NL]) :- smaz(P, L, NL). smazMozna(_, [], []). smazMozna(P, [P|L], L). smazMozna(P, [X|L], [X|NL]) :- smazMozna(P, L, NL). smazPrvni(P, [P|L], L) :- !. smazPrvni(P, [X|L], [X|NL]) :- smazPrvni(P, L, NL). smazPrvni2(P, [P|L], L). smazPrvni2(P, [X|L], [X|NL]) :- P \= X, smazPrvni2(P, L, NL).