include("ortholattice-header").

% MOL_SS basis: { A_SS, B_SS, ONE_SS, MOD_SS }
% MOL basis:    { AJ, B1, DM, CC, ONE, MOD }

list(sos).

f(x,f(f(y,z),f(y,z))) = f(y,f(f(x,z),f(x,z))).  % A_SS
f(f(x,x),f(x,y)) = x.                           % B_SS
f(x,f(x,x)) = f(y,f(y,y)).                      % ONE_SS
f(x,f(y,f(x,f(z,z)))) = f(x,f(z,f(x,f(y,y)))).  % MOD_SS

x v y = f(f(x,x),f(y,y)).        % DEF_J
x ^ y = f(f(x,y),f(x,y)).        % DEF_M
c(x) = f(x,x).                   % DEF_C

end_of_list.

% Note that for this style of proof, where the goals are in the passive list,
% the denials must be in canonical form.  Because of the symbol ordering
% in the lex command, the canonical form is all in terms of join and complement.
% Therefore we rewrite denials that contain the meet operation.

assign(max_proofs, 7).

list(passive).

  A v (B v C) != B v (A v C)              | $Ans(AJ).
  A v (A ^ B) != A                        | $Ans(B1).
  A ^ B != c(c(A) v c(B))                 | $Ans(DM).
  c(c(A)) != A                            | $Ans(CC).
  A v c(A) != B v c(B)                    | $Ans(ONE).

% A v (B ^ (A v C)) != A v (C ^ (A v B))  | $Ans(MOD).
  A v c(c(B) v c(A v C)) != A v c(c(C) v c(A v B))  | $Ans(MOD_rewritten).

  f(A,B) != c(A) v c(B)      | $Ans(DEF_SS).

end_of_list.
