## TPTP Axioms File: LAT002-0.ax

```%--------------------------------------------------------------------------
% File     : LAT002-0 : TPTP v7.5.0. Released v1.0.0.
% Domain   : Lattice Theory
% Axioms   : Lattice theory axioms
% Version  : [MOW76] axioms :
%            Incomplete > Reduced & Augmented > Complete.
% English  :

% Refs     : [MOW76] McCharen et al. (1976), Problems and Experiments for a
%          : [Wos88] Wos (1988), Automated Reasoning - 33 Basic Research Pr
% Source   : [MOW76]
% Names    :

% Status   : Satisfiable
% Syntax   : Number of clauses    :   20 (   0 non-Horn;   8 unit;  12 RR)
%            Number of atoms      :   48 (   2 equality)
%            Maximal clause size  :    5 (   2 average)
%            Number of predicates :    3 (   0 propositional; 2-3 arity)
%            Number of functors   :    4 (   2 constant; 0-2 arity)
%            Number of variables  :   66 (   4 singleton)
%            Maximal term depth   :    2 (   1 average)
% SPC      :

% Comments : These axioms are used in [Wos88] p.215, augmented by some
%            redundant axioms about 0 & 1.
%          : The original [MOW76] axioms have two extra redundant
%            modularity axioms.
%          : [OTTER] uses these too, augmented by some redundant axioms.
%          : The [MOW76] axiomatisation is missing the axioms that make
%            join and meet total functions.
%--------------------------------------------------------------------------
%----Union of n1 and x is equal to n1 :  (n1 v X) = n1
cnf(join_1_and_x,axiom,
( join(n1,X,n1) )).

%----Union of x with itself is equal to x :  (X v X) = X
cnf(join_x_and_x,axiom,
( join(X,X,X) )).

%----Union of n0 and x is equal to x :  (n0 v X) = X
cnf(join_0_and_x,axiom,
( join(n0,X,X) )).

%----Intersection of n0 and x is equal to n0 : (n0 ^ X) = n0
cnf(meet_0_and_x,axiom,
( meet(n0,X,n0) )).

%----Intersection of x and itself is equal to x : (X ^ X) = X
cnf(meet_x_and_x,axiom,
( meet(X,X,X) )).

%----Intersection of n1 and x is equal to itself : (n1 ^ X) = X
cnf(meet_1_and_x,axiom,
( meet(n1,X,X) )).

%----Intersection of x and y , is the same as meet of y and x.
%----  (X ^ Y) = (Y ^ X),
cnf(commutativity_of_meet,axiom,
( ~ meet(X,Y,Z)
| meet(Y,X,Z) )).

%----Union of x and y is the same as join of y and x. (X v Y) = (Y v X),
cnf(commutativity_of_join,axiom,
( ~ join(X,Y,Z)
| join(Y,X,Z) )).

%----Union of x with the meet of x and y is the same as x.
%----  X v (X ^ Y) = X
cnf(absorbtion1,axiom,
( ~ meet(X,Y,Z)
| join(X,Z,X) )).

%----Intersection  of x with the join of x and y is the same as x.
%----  X ^ (X v Y) = X
cnf(absorbtion2,axiom,
( ~ join(X,Y,Z)
| meet(X,Z,X) )).

%----The operation '^', meet ,is associative
%----  X ^ (Y ^ Z) = (X ^ Y) ^ Z
cnf(associativity_of_meet1,axiom,
( ~ meet(X,Y,Xy)
| ~ meet(Y,Z,Yz)
| ~ meet(X,Yz,Xyz)
| meet(Xy,Z,Xyz) )).

cnf(associativity_of_meet2,axiom,
( ~ meet(X,Y,Xy)
| ~ meet(Y,Z,Yz)
| ~ meet(Xy,Z,Xyz)
| meet(X,Yz,Xyz) )).

%----The operation 'v' is associative X v (Y v Z) = (X v Y) v Z
cnf(associativity_of_join1,axiom,
( ~ join(X,Y,Xy)
| ~ join(Y,Z,Yz)
| ~ join(X,Yz,Xyz)
| join(Xy,Z,Xyz) )).

cnf(associativity_of_join2,axiom,
( ~ join(X,Y,Xy)
| ~ join(Y,Z,Yz)
| ~ join(Xy,Z,Xyz)
| join(X,Yz,Xyz) )).

%----(X ^ Z) = X implies that (Z ^ (X v Y)) =  (X v (Y ^ Z)),
cnf(modularity1,axiom,
( ~ meet(X,Z,X)
| ~ join(X,Y,X1)
| ~ meet(Y,Z,Y1)
| ~ meet(Z,X1,Z1)
| join(X,Y1,Z1) )).

cnf(modularity2,axiom,
( ~ meet(X,Z,X)
| ~ join(X,Y,X1)
| ~ meet(Y,Z,Y1)
| ~ join(X,Y1,Z1)
| meet(Z,X1,Z1) )).

cnf(meet_total_function_1,axiom,
( meet(X,Y,meet_of(X,Y)) )).

cnf(meet_total_function_2,axiom,
( ~ meet(X,Y,Z1)
| ~ meet(X,Y,Z2)
| Z1 = Z2 )).

cnf(join_total_function_1,axiom,
( join(X,Y,join_of(X,Y)) )).

cnf(join_total_function_2,axiom,
( ~ join(X,Y,Z1)
| ~ join(X,Y,Z2)
| Z1 = Z2 )).

%--------------------------------------------------------------------------
```