% Prove an ortholattice (OL) 3-basis from an ortholattice single axiom.

assign(new_constants, 1).  % Introduce a new constant when possible.

lex([ ', ^, v, f ]).       % We will get warning about skolem constants not being here.

assign(pick_given_ratio, 5).  % 5 parts "lightest first" : 1 part "age first"

set(restrict_denials).     % Try for direct proofs.

assign(max_weight, 40).    % Weight limit.

formulas(assumptions).

% A single axiom for ortholattices (OL) in terms of the Sheffer stroke.

f(f(f(f(y,x),f(x,z)),u),f(x,f(f(x,f(f(y,y),y)),z))) = x # label(OL_Sh).

% Even though the hypothesis and the conclusions are in terms of the
% Sheffer stroke, we define meet, join, and complementation.
% The lex command above orders the symbols so that these defined
% operations are introduced when possible.  Prover9 proves these
% theorems more easily when it searches in terms of the defined
% operations.

x v y = f(f(x,x),f(y,y))  # label(definition_join).
x ^ y = f(f(x,y),f(x,y))  # label(definition_meet).
x' = f(x,x)               # label(definition_complementation).

end_of_list.

formulas(goals).

% We ask for 4 proofs: three parts and a combination of the three parts.
% The three parts are a basis for OL in terms of the Sheffer stroke.

f(x,f(f(y,z),f(y,z))) = f(y,f(f(x,z),f(x,z)))  # answer(assoc).
f(f(x,x),f(x,y)) = x                           # answer(absorb).
f(x,f(x,x)) = f(y,f(y,y))                      # answer(one).

f(x,f(f(y,z),f(y,z))) = f(y,f(f(x,z),f(x,z))) & f(f(x,x),f(x,y)) = x & f(x,f(x,x)) = f(y,f(y,y)) # answer(combined).

end_of_list.

