TPTP Axioms File: SET006+2.ax


%--------------------------------------------------------------------------
% File     : SET006+2 : TPTP v8.2.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 unt;   0 def)
%            Number of atoms       :   39 (   1 equ)
%            Maximal formula atoms :   13 (   7 avg)
%            Number of connectives :   35 (   1   ~;   0   |;  17   &)
%                                         (   5 <=>;  12  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   12 (  10 avg)
%            Maximal term depth    :    2 (   1 avg)
%            Number of predicates  :    8 (   7 usr;   0 prp; 2-3 aty)
%            Number of functors    :    1 (   1 usr;   0 con; 3-3 aty)
%            Number of variables   :   29 (  26   !;   3   ?)
% SPC      : 

% Comments : Requires SET006+0.ax
%--------------------------------------------------------------------------
%----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) ) ) ) ) ).

%--------------------------------------------------------------------------