ITP001 Axioms: ITP009+5.ax


%------------------------------------------------------------------------------
% File     : ITP009+5 : TPTP v9.0.0. Bugfixed v7.5.0.
% Domain   : Interactive Theorem Proving
% Axioms   : HOL4 set theory export, chainy mode
% Version  : [BG+19] axioms.
% English  :

% Refs     : [BG+19] Brown et al. (2019), GRUNGE: A Grand Unified ATP Chall
%          : [Gau20] Gauthier (2020), Email to Geoff Sutcliffe
% Source   : [BG+19]
% Names    : num+2.ax [Gau20]
%          : HL4009+5.ax [TPAP]

% Status   : Satisfiable
% Syntax   : Number of formulae    :   18 (   9 unt;   0 def)
%            Number of atoms       :   43 (   8 equ)
%            Maximal formula atoms :    8 (   2 avg)
%            Number of connectives :   28 (   3   ~;   0   |;   5   &)
%                                         (   2 <=>;  18  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   11 (   3 avg)
%            Maximal term depth    :    4 (   1 avg)
%            Number of predicates  :    4 (   3 usr;   0 prp; 1-2 aty)
%            Number of functors    :   15 (  15 usr;  10 con; 0-2 aty)
%            Number of variables   :   14 (  13   !;   1   ?)
% SPC      : FOF_SAT_RFO_SEQ

% Comments :
% Bugfixes : v7.5.0 - Fixes to the axioms.
%------------------------------------------------------------------------------
fof(ne_ty_2Enum_2Enum,axiom,
    ne(ty_2Enum_2Enum) ).

fof(mem_c_2Enum_2E0,axiom,
    mem(c_2Enum_2E0,ty_2Enum_2Enum) ).

fof(mem_c_2Enum_2EABS__num,axiom,
    mem(c_2Enum_2EABS__num,arr(ind,ty_2Enum_2Enum)) ).

fof(mem_c_2Enum_2EIS__NUM__REP,axiom,
    mem(c_2Enum_2EIS__NUM__REP,arr(ind,bool)) ).

fof(mem_c_2Enum_2EREP__num,axiom,
    mem(c_2Enum_2EREP__num,arr(ty_2Enum_2Enum,ind)) ).

fof(mem_c_2Enum_2ESUC,axiom,
    mem(c_2Enum_2ESUC,arr(ty_2Enum_2Enum,ty_2Enum_2Enum)) ).

fof(mem_c_2Enum_2ESUC__REP,axiom,
    mem(c_2Enum_2ESUC__REP,arr(ind,ind)) ).

fof(mem_c_2Enum_2EZERO__REP,axiom,
    mem(c_2Enum_2EZERO__REP,ind) ).

fof(ax_thm_2Enum_2ESUC__REP__DEF,axiom,
    ( p(ap(c_2Ebool_2EONE__ONE(ind,ind),c_2Enum_2ESUC__REP))
    & ~ p(ap(c_2Ebool_2EONTO(ind,ind),c_2Enum_2ESUC__REP)) ) ).

fof(ax_thm_2Enum_2EZERO__REP__DEF,axiom,
    ! [V0y] :
      ( mem(V0y,ind)
     => c_2Enum_2EZERO__REP != ap(c_2Enum_2ESUC__REP,V0y) ) ).

fof(ax_thm_2Enum_2EIS__NUM__REP,axiom,
    ! [V0m] :
      ( mem(V0m,ind)
     => ( p(ap(c_2Enum_2EIS__NUM__REP,V0m))
      <=> ! [V1P] :
            ( mem(V1P,arr(ind,bool))
           => ( ( p(ap(V1P,c_2Enum_2EZERO__REP))
                & ! [V2n] :
                    ( mem(V2n,ind)
                   => ( p(ap(V1P,V2n))
                     => p(ap(V1P,ap(c_2Enum_2ESUC__REP,V2n))) ) ) )
             => p(ap(V1P,V0m)) ) ) ) ) ).

fof(ax_thm_2Enum_2Enum__TY__DEF,axiom,
    ? [V0rep] :
      ( mem(V0rep,arr(ty_2Enum_2Enum,ind))
      & p(ap(ap(c_2Ebool_2ETYPE__DEFINITION(ind,ty_2Enum_2Enum),c_2Enum_2EIS__NUM__REP),V0rep)) ) ).

fof(ax_thm_2Enum_2Enum__ISO__DEF,axiom,
    ( ! [V0a] :
        ( mem(V0a,ty_2Enum_2Enum)
       => ap(c_2Enum_2EABS__num,ap(c_2Enum_2EREP__num,V0a)) = V0a )
    & ! [V1r] :
        ( mem(V1r,ind)
       => ( p(ap(c_2Enum_2EIS__NUM__REP,V1r))
        <=> ap(c_2Enum_2EREP__num,ap(c_2Enum_2EABS__num,V1r)) = V1r ) ) ) ).

fof(ax_thm_2Enum_2EZERO__DEF,axiom,
    c_2Enum_2E0 = ap(c_2Enum_2EABS__num,c_2Enum_2EZERO__REP) ).

fof(ax_thm_2Enum_2ESUC__DEF,axiom,
    ! [V0m] :
      ( mem(V0m,ty_2Enum_2Enum)
     => ap(c_2Enum_2ESUC,V0m) = ap(c_2Enum_2EABS__num,ap(c_2Enum_2ESUC__REP,ap(c_2Enum_2EREP__num,V0m))) ) ).

fof(conj_thm_2Enum_2ENOT__SUC,axiom,
    ! [V0n] :
      ( mem(V0n,ty_2Enum_2Enum)
     => ap(c_2Enum_2ESUC,V0n) != c_2Enum_2E0 ) ).

fof(conj_thm_2Enum_2EINV__SUC,axiom,
    ! [V0m] :
      ( mem(V0m,ty_2Enum_2Enum)
     => ! [V1n] :
          ( mem(V1n,ty_2Enum_2Enum)
         => ( ap(c_2Enum_2ESUC,V0m) = ap(c_2Enum_2ESUC,V1n)
           => V0m = V1n ) ) ) ).

fof(conj_thm_2Enum_2EINDUCTION,axiom,
    ! [V0P] :
      ( mem(V0P,arr(ty_2Enum_2Enum,bool))
     => ( ( p(ap(V0P,c_2Enum_2E0))
          & ! [V1n] :
              ( mem(V1n,ty_2Enum_2Enum)
             => ( p(ap(V0P,V1n))
               => p(ap(V0P,ap(c_2Enum_2ESUC,V1n))) ) ) )
       => ! [V2n] :
            ( mem(V2n,ty_2Enum_2Enum)
           => p(ap(V0P,V2n)) ) ) ) ).

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