TPTP Axioms File: SET006+1.ax


%------------------------------------------------------------------------------
% File     : SET006+1 : TPTP v7.5.0. Bugfixed v2.2.1.
% Domain   : Set Theory
% Axioms   : Mapping 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    :   17 (   0 unit)
%            Number of atoms       :   99 (   3 equality)
%            Maximal formula depth :   19 (  11 average)
%            Number of connectives :   82 (   0 ~  ;   0  |;  46  &)
%                                         (  20 <=>;  16 =>;   0 <=)
%                                         (   0 <~>;   0 ~|;   0 ~&)
%            Number of predicates  :   14 (   0 propositional; 2-6 arity)
%            Number of functors    :    6 (   0 constant; 2-5 arity)
%            Number of variables   :  105 (   0 singleton;  97 !;   8 ?)
%            Maximal term depth    :    2 (   1 average)
% SPC      : 

% Comments : Requires SET006+0.ax
% Bugfixes : v2.2.1 - compose_function and inverse_function fixed.
%------------------------------------------------------------------------------
%----Axiom and properties of mappings
fof(maps,axiom,
    ( ! [F,A,B] :
        ( maps(F,A,B)
      <=> ( ! [X] :
              ( member(X,A)
             => ? [Y] :
                  ( member(Y,B)
                  & apply(F,X,Y) ) )
          & ! [X,Y1,Y2] :
              ( ( member(X,A)
                & member(Y1,B)
                & member(Y2,B) )
             => ( ( apply(F,X,Y1)
                  & apply(F,X,Y2) )
               => Y1 = Y2 ) ) ) ) )).

fof(compose_predicate,axiom,
    ( ! [H,G,F,A,B,C] :
        ( compose_predicate(H,G,F,A,B,C)
      <=> ! [X,Z] :
            ( ( member(X,A)
              & member(Z,C) )
           => ( apply(H,X,Z)
            <=> ? [Y] :
                  ( member(Y,B)
                  & apply(F,X,Y)
                  & apply(G,Y,Z) ) ) ) ) )).

fof(compose_function,axiom,
    ( ! [G,F,A,B,C,X,Z] :
        ( ( member(X,A)
          & member(Z,C) )
       => ( apply(compose_function(G,F,A,B,C),X,Z)
        <=> ? [Y] :
              ( member(Y,B)
              & apply(F,X,Y)
              & apply(G,Y,Z) ) ) ) )).

fof(equal_maps,axiom,
    ( ! [F,G,A,B] :
        ( equal_maps(F,G,A,B)
      <=> ! [X,Y1,Y2] :
            ( ( member(X,A)
              & member(Y1,B)
              & member(Y2,B) )
           => ( ( apply(F,X,Y1)
                & apply(G,X,Y2) )
             => Y1 = Y2 ) ) ) )).

fof(identity,axiom,
    ( ! [F,A] :
        ( identity(F,A)
      <=> ! [X] :
            ( member(X,A)
           => apply(F,X,X) ) ) )).

fof(injective,axiom,
    ( ! [F,A,B] :
        ( injective(F,A,B)
      <=> ! [X1,X2,Y] :
            ( ( member(X1,A)
              & member(X2,A)
              & member(Y,B) )
           => ( ( apply(F,X1,Y)
                & apply(F,X2,Y) )
             => X1 = X2 ) ) ) )).

fof(surjective,axiom,
    ( ! [F,A,B] :
        ( surjective(F,A,B)
      <=> ! [Y] :
            ( member(Y,B)
           => ? [E] :
                ( member(E,A)
                & apply(F,E,Y) ) ) ) )).

fof(one_to_one,axiom,
    ( ! [F,A,B] :
        ( one_to_one(F,A,B)
      <=> ( injective(F,A,B)
          & surjective(F,A,B) ) ) )).

fof(inverse_predicate,axiom,
    ( ! [G,F,A,B] :
        ( inverse_predicate(G,F,A,B)
      <=> ! [X,Y] :
            ( ( member(X,A)
              & member(Y,B) )
           => ( apply(F,X,Y)
            <=> apply(G,Y,X) ) ) ) )).

fof(inverse_function,axiom,
    ( ! [F,A,B,X,Y] :
        ( ( member(X,A)
          & member(Y,B) )
       => ( apply(F,X,Y)
        <=> apply(inverse_function(F,A,B),Y,X) ) ) )).

fof(image2,axiom,
    ( ! [F,A,Y] :
        ( member(Y,image2(F,A))
      <=> ? [X] :
            ( member(X,A)
            & apply(F,X,Y) ) ) )).

fof(image3,axiom,
    ( ! [F,A,B,Y] :
        ( member(Y,image3(F,A,B))
      <=> ( member(Y,B)
          & ? [X] :
              ( member(X,A)
              & apply(F,X,Y) ) ) ) )).

fof(inverse_image2,axiom,
    ( ! [F,B,X] :
        ( member(X,inverse_image2(F,B))
      <=> ? [Y] :
            ( member(Y,B)
            & apply(F,X,Y) ) ) )).

fof(inverse_image3,axiom,
    ( ! [F,B,A,X] :
        ( member(X,inverse_image3(F,B,A))
      <=> ( member(X,A)
          & ? [Y] :
              ( member(Y,B)
              & apply(F,X,Y) ) ) ) )).

fof(increasing_function,axiom,
    ( ! [F,A,R,B,S] :
        ( increasing(F,A,R,B,S)
      <=> ! [X1,Y1,X2,Y2] :
            ( ( member(X1,A)
              & member(Y1,B)
              & member(X2,A)
              & member(Y2,B)
              & apply(R,X1,X2)
              & apply(F,X1,Y1)
              & apply(F,X2,Y2) )
           => apply(S,Y1,Y2) ) ) )).

fof(decreasing_function,axiom,
    ( ! [F,A,R,B,S] :
        ( decreasing(F,A,R,B,S)
      <=> ! [X1,Y1,X2,Y2] :
            ( ( member(X1,A)
              & member(Y1,B)
              & member(X2,A)
              & member(Y2,B)
              & apply(R,X1,X2)
              & apply(F,X1,Y1)
              & apply(F,X2,Y2) )
           => apply(S,Y2,Y1) ) ) )).

fof(isomorphism,axiom,
    ( ! [F,A,R,B,S] :
        ( isomorphism(F,A,R,B,S)
      <=> ( maps(F,A,B)
          & one_to_one(F,A,B)
          & ! [X1,Y1,X2,Y2] :
              ( ( member(X1,A)
                & member(Y1,B)
                & member(X2,A)
                & member(Y2,B)
                & apply(F,X1,Y1)
                & apply(F,X2,Y2) )
             => ( apply(R,X1,X2)
              <=> apply(S,Y1,Y2) ) ) ) ) )).

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