%%%%%%%%%%%%%%%%%%%%%  Basic options

op(400, xfx, [*,+,^,v,/,\,#]).  % infix operators
op(300,yf,@).                   % postfix operator

clear(print_kept).
clear(print_new_demod).
clear(print_back_demod).

assign(pick_given_ratio, 4).
assign(max_mem, 20000).

%%%%%%%%%%%%%%%%%%%%%  Standard for equational problems

set(knuth_bendix).
set(build_proof_object).

%%%%%%%%%%%%%%%%%%%%%  Modifications to strategy

assign(max_weight, 21).

%%%%%%%%%%%%%%%%%%%%%  Clauses

list(usable).
x = x.
end_of_list.

list(sos).
x ^ x = x.
x ^ y = y ^ x.
(x ^ y) ^ z = x ^ (y ^ z).
x v x = x.
x v y = y v x.
(x v y) v z = x v (y v z).
x ^ (x v y) = x.
x v (x ^ y) = x.
0 ^ x = 0.
0 v x = x.
1 ^ x = x.
1 v x = 1.
x ^ x = x.
x v x = x.
(x ^ y) v (x ^ z) = x ^ (y v (x ^ z)).  % Modularity

% ((A v B)' v ((A ^ B)' ^ B)) ^ ((A v B)' v ((A ^ B)' ^ A)) = (A v B)'

% C1 is a complement of A v B
C1 v (A v B) = 1.
C1 ^ (A v B) = 0.

% C2 is a complement of A ^ B
C2 v (A ^ B) = 1.
C2 ^ (A ^ B) = 0.

%%%%%%%%
% denial 1:
% (C1 v (A ^ C2)) ^ (C1 v (B ^ C2)) != C1.

%%%%%%%%
% denial 2:
C1 v (A ^ C2) = D.
C1 v (B ^ C2) = E.
D ^ E != C1.

end_of_list.

weight_list(pick_and_purge).
weight(A, 0).
weight(B, 0).
weight(C1, 0).
weight(C2, 0).
weight(D, 0).
weight(E, 0).
end_of_list.
