## TPTP Axioms File: SET006+2.ax

```%--------------------------------------------------------------------------
% File     : SET006+2 : TPTP v7.5.0. Released v2.2.0.
% Domain   : Set Theory
% Axioms   : Equivalence relation axioms for the SET006+0 set theory axioms
% Version  : [Pas99] axioms.
% English  :

% Refs     : [Pas99] Pastre (1999), Email to G. Sutcliffe
% Source   : [Pas99]
% Names    :

% Status   : Satisfiable
% Syntax   : Number of formulae    :    5 (   0 unit)
%            Number of atoms       :   39 (   1 equality)
%            Maximal formula depth :   12 (  10 average)
%            Number of connectives :   35 (   1 ~  ;   0  |;  17  &)
%                                         (   5 <=>;  12 =>;   0 <=)
%                                         (   0 <~>;   0 ~|;   0 ~&)
%            Number of predicates  :    8 (   0 propositional; 2-3 arity)
%            Number of functors    :    1 (   0 constant; 3-3 arity)
%            Number of variables   :   29 (   0 singleton;  26 !;   3 ?)
%            Maximal term depth    :    2 (   1 average)
% SPC      :

%--------------------------------------------------------------------------
%----Equivalence relations
fof(disjoint,axiom,
( ! [A,B] :
( disjoint(A,B)
<=> ~ ( ? [X] :
( member(X,A)
& member(X,B) ) ) ) )).

fof(partition,axiom,
( ! [A,E] :
( partition(A,E)
<=> ( ! [X] :
( member(X,A)
=> subset(X,E) )
& ! [X] :
( member(X,E)
=> ? [Y] :
( member(Y,A)
& member(X,Y) ) )
& ! [X,Y] :
( ( member(X,A)
& member(Y,A) )
=> ( ? [Z] :
( member(Z,X)
& member(Z,Y) )
=> X = Y ) ) ) ) )).

fof(equivalence,axiom,
( ! [A,R] :
( equivalence(R,A)
<=> ( ! [X] :
( member(X,A)
=> apply(R,X,X) )
& ! [X,Y] :
( ( member(X,A)
& member(Y,A) )
=> ( apply(R,X,Y)
=> apply(R,Y,X) ) )
& ! [X,Y,Z] :
( ( member(X,A)
& member(Y,A)
& member(Z,A) )
=> ( ( apply(R,X,Y)
& apply(R,Y,Z) )
=> apply(R,X,Z) ) ) ) ) )).

fof(equivalence_class,axiom,
( ! [R,E,A,X] :
( member(X,equivalence_class(A,E,R))
<=> ( member(X,E)
& apply(R,A,X) ) ) )).

fof(pre_order,axiom,
( ! [R,E] :
( pre_order(R,E)
<=> ( ! [X] :
( member(X,E)
=> apply(R,X,X) )
& ! [X,Y,Z] :
( ( member(X,E)
& member(Y,E)
& member(Z,E) )
=> ( ( apply(R,X,Y)
& apply(R,Y,Z) )
=> apply(R,X,Z) ) ) ) ) )).

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