%%%%%%%%%%%%%%%%%%%%%  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 (gL) problems

set(geometric_rule).
set(geometric_rewrite_before).
set(para_from).
set(para_into).
set(para_from_vars).
set(para_into_vars).
set(order_eq).
set(back_demod).
set(process_input).
set(lrpo).

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

% clear(process_input).
% clear(back_demod).
% clear(dynamic_demod).
assign(max_weight, 19).
clear(lrpo).

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

list(usable).
x = x.
% x * y != u | x * z != u | y = z.  % left cancellation
% y * x != u | z * x != u | y = z.  % right cancellation
end_of_list.

list(sos).

% The following 4 say that * is a quasigroup.
% Uniqueness identities can be replaced with cancellation.

x * (x \ y) = y.   % right solvable
x \ (x * y) = y.   % right solution is unique
(x / y) * y = x.   % left solvable
(x * y) / y = x.   % left solution is unique

g(x,e) = f(x,e).
g(e,x) = f(e,x).
end_of_list.

list(passive).
g(A,B) != f(A,B).
end_of_list.

weight_list(pick_and_purge).
weight(f($(0),$dots(g($(0),$(0)))), 100).
weight(f($(0),$dots(f($(0),$(0)))), 100).
weight(g($(0),$dots(g($(0),$(0)))), 100).
weight(g($(0),$dots(f($(0),$(0)))), 100).

weight(f($dots(g($(0),$(0))),$(0)), 100).
weight(f($dots(f($(0),$(0))),$(0)), 100).
weight(g($dots(g($(0),$(0))),$(0)), 100).
weight(g($dots(f($(0),$(0))),$(0)), 100).
end_of_list.
