% benchmark parameters -n4 -m100

% Generate some rings (not necessarily with unit).

op(450, xfx, +). % sum
op(400, xfx, *). % product
op(350, fy, ~).  % minus

list(usable).

0+x=x.
x+0=x.
~x+x=0.
x+ ~x=0.
(x+y)+z=x+ (y+z).
x+y=y+x.

% Product is associative:

(x*y)*z=x* (y*z).

% Left and right distributivity:

x* (y+z)=x*y+x*z.
(y+z)*x=y*x+z*x.

% Here are alternate forms of distributivity which include
% auxiliary 3-place functions.  These use much less memory
% than the ordinary forms of distributivity.

% x* (y+z) = h(x,y,z). h(x,y,z) = x*y+x*z.
% (y+z)*x  = f(x,y,z). f(x,y,z) = y*x+z*x.

end_of_list.
