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    :   45 (  20 unt;  18 typ;   0 def)
%            Number of atoms       :  121 (  17 equ)
%            Maximal formula atoms :    6 (   2 avg)
%            Number of connectives :   18 (   3   ~;   0   |;   5   &)
%                                         (   2 <=>;   8  =>;   0  <=;   0 <~>)
%            Maximal formula depth :    9 (   2 avg)
%            Maximal term depth    :    3 (   1 avg)
%            Number of FOOLs       :   79 (  79 fml;   0 var)
%            Number of types       :    2 (   1 usr)
%            Number of type conns  :    7 (   7   >;   0   *;   0   +;   0  <<)
%            Number of predicates  :   16 (  15 usr;   5 prp; 0-2 aty)
%            Number of functors    :   17 (  17 usr;  10 con; 0-1 aty)
%            Number of variables   :   22 (  21   !;   1   ?;  22   :)
% SPC      : TF0_SAT_EQU_NAR

% Comments :
% Bugfixes : v7.5.0 - Fixes to the axioms.
%------------------------------------------------------------------------------
tff(tp_ty_2Enum_2Enum,type,
    ty_2Enum_2Enum: del ).

tff(stp_ty_2Enum_2Enum,type,
    tp__ty_2Enum_2Enum: $tType ).

tff(stp_inj_ty_2Enum_2Enum,type,
    inj__ty_2Enum_2Enum: tp__ty_2Enum_2Enum > $i ).

tff(stp_surj_ty_2Enum_2Enum,type,
    surj__ty_2Enum_2Enum: $i > tp__ty_2Enum_2Enum ).

tff(stp_inj_surj_ty_2Enum_2Enum,axiom,
    ! [X: tp__ty_2Enum_2Enum] : ( surj__ty_2Enum_2Enum(inj__ty_2Enum_2Enum(X)) = X ) ).

tff(stp_inj_mem_ty_2Enum_2Enum,axiom,
    ! [X: tp__ty_2Enum_2Enum] : mem(inj__ty_2Enum_2Enum(X),ty_2Enum_2Enum) ).

tff(stp_iso_mem_ty_2Enum_2Enum,axiom,
    ! [X: $i] :
      ( mem(X,ty_2Enum_2Enum)
     => ( X = inj__ty_2Enum_2Enum(surj__ty_2Enum_2Enum(X)) ) ) ).

tff(tp_c_2Enum_2E0,type,
    c_2Enum_2E0: $i ).

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

tff(stp_fo_c_2Enum_2E0,type,
    fo__c_2Enum_2E0: tp__ty_2Enum_2Enum ).

tff(stp_eq_fo_c_2Enum_2E0,axiom,
    inj__ty_2Enum_2Enum(fo__c_2Enum_2E0) = c_2Enum_2E0 ).

tff(tp_c_2Enum_2EABS__num,type,
    c_2Enum_2EABS__num: $i ).

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

tff(stp_fo_c_2Enum_2EABS__num,type,
    fo__c_2Enum_2EABS__num: tp__i > tp__ty_2Enum_2Enum ).

tff(stp_eq_fo_c_2Enum_2EABS__num,axiom,
    ! [X0: tp__i] : ( inj__ty_2Enum_2Enum(fo__c_2Enum_2EABS__num(X0)) = ap(c_2Enum_2EABS__num,inj__i(X0)) ) ).

tff(tp_c_2Enum_2EIS__NUM__REP,type,
    c_2Enum_2EIS__NUM__REP: $i ).

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

tff(stp_fo_c_2Enum_2EIS__NUM__REP,type,
    fo__c_2Enum_2EIS__NUM__REP: tp__i > tp__o ).

tff(stp_eq_fo_c_2Enum_2EIS__NUM__REP,axiom,
    ! [X0: tp__i] : ( inj__o(fo__c_2Enum_2EIS__NUM__REP(X0)) = ap(c_2Enum_2EIS__NUM__REP,inj__i(X0)) ) ).

tff(tp_c_2Enum_2EREP__num,type,
    c_2Enum_2EREP__num: $i ).

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

tff(stp_fo_c_2Enum_2EREP__num,type,
    fo__c_2Enum_2EREP__num: tp__ty_2Enum_2Enum > tp__i ).

tff(stp_eq_fo_c_2Enum_2EREP__num,axiom,
    ! [X0: tp__ty_2Enum_2Enum] : ( inj__i(fo__c_2Enum_2EREP__num(X0)) = ap(c_2Enum_2EREP__num,inj__ty_2Enum_2Enum(X0)) ) ).

tff(tp_c_2Enum_2ESUC,type,
    c_2Enum_2ESUC: $i ).

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

tff(stp_fo_c_2Enum_2ESUC,type,
    fo__c_2Enum_2ESUC: tp__ty_2Enum_2Enum > tp__ty_2Enum_2Enum ).

tff(stp_eq_fo_c_2Enum_2ESUC,axiom,
    ! [X0: tp__ty_2Enum_2Enum] : ( inj__ty_2Enum_2Enum(fo__c_2Enum_2ESUC(X0)) = ap(c_2Enum_2ESUC,inj__ty_2Enum_2Enum(X0)) ) ).

tff(tp_c_2Enum_2ESUC__REP,type,
    c_2Enum_2ESUC__REP: $i ).

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

tff(stp_fo_c_2Enum_2ESUC__REP,type,
    fo__c_2Enum_2ESUC__REP: tp__i > tp__i ).

tff(stp_eq_fo_c_2Enum_2ESUC__REP,axiom,
    ! [X0: tp__i] : ( inj__i(fo__c_2Enum_2ESUC__REP(X0)) = ap(c_2Enum_2ESUC__REP,inj__i(X0)) ) ).

tff(tp_c_2Enum_2EZERO__REP,type,
    c_2Enum_2EZERO__REP: $i ).

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

tff(stp_fo_c_2Enum_2EZERO__REP,type,
    fo__c_2Enum_2EZERO__REP: tp__i ).

tff(stp_eq_fo_c_2Enum_2EZERO__REP,axiom,
    inj__i(fo__c_2Enum_2EZERO__REP) = c_2Enum_2EZERO__REP ).

tff(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)) ) ).

tff(ax_thm_2Enum_2EZERO__REP__DEF,axiom,
    ! [V0y: tp__i] : ( fo__c_2Enum_2EZERO__REP != surj__i(ap(c_2Enum_2ESUC__REP,inj__i(V0y))) ) ).

tff(ax_thm_2Enum_2EIS__NUM__REP,axiom,
    ! [V0m: tp__i] :
      ( p(ap(c_2Enum_2EIS__NUM__REP,inj__i(V0m)))
    <=> ! [V1P: $i] :
          ( mem(V1P,arr(ind,bool))
         => ( ( p(ap(V1P,inj__i(fo__c_2Enum_2EZERO__REP)))
              & ! [V2n: tp__i] :
                  ( p(ap(V1P,inj__i(V2n)))
                 => p(ap(V1P,ap(c_2Enum_2ESUC__REP,inj__i(V2n)))) ) )
           => p(ap(V1P,inj__i(V0m))) ) ) ) ).

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

tff(ax_thm_2Enum_2Enum__ISO__DEF,axiom,
    ( ! [V0a: tp__ty_2Enum_2Enum] : ( surj__ty_2Enum_2Enum(ap(c_2Enum_2EABS__num,ap(c_2Enum_2EREP__num,inj__ty_2Enum_2Enum(V0a)))) = V0a )
    & ! [V1r: tp__i] :
        ( p(ap(c_2Enum_2EIS__NUM__REP,inj__i(V1r)))
      <=> ( surj__i(ap(c_2Enum_2EREP__num,ap(c_2Enum_2EABS__num,inj__i(V1r)))) = V1r ) ) ) ).

tff(ax_thm_2Enum_2EZERO__DEF,axiom,
    fo__c_2Enum_2E0 = surj__ty_2Enum_2Enum(ap(c_2Enum_2EABS__num,inj__i(fo__c_2Enum_2EZERO__REP))) ).

tff(ax_thm_2Enum_2ESUC__DEF,axiom,
    ! [V0m: tp__ty_2Enum_2Enum] : ( surj__ty_2Enum_2Enum(ap(c_2Enum_2ESUC,inj__ty_2Enum_2Enum(V0m))) = surj__ty_2Enum_2Enum(ap(c_2Enum_2EABS__num,ap(c_2Enum_2ESUC__REP,ap(c_2Enum_2EREP__num,inj__ty_2Enum_2Enum(V0m))))) ) ).

tff(conj_thm_2Enum_2ENOT__SUC,axiom,
    ! [V0n: tp__ty_2Enum_2Enum] : ( surj__ty_2Enum_2Enum(ap(c_2Enum_2ESUC,inj__ty_2Enum_2Enum(V0n))) != fo__c_2Enum_2E0 ) ).

tff(conj_thm_2Enum_2EINV__SUC,axiom,
    ! [V0m: tp__ty_2Enum_2Enum,V1n: tp__ty_2Enum_2Enum] :
      ( ( surj__ty_2Enum_2Enum(ap(c_2Enum_2ESUC,inj__ty_2Enum_2Enum(V0m))) = surj__ty_2Enum_2Enum(ap(c_2Enum_2ESUC,inj__ty_2Enum_2Enum(V1n))) )
     => ( V0m = V1n ) ) ).

tff(conj_thm_2Enum_2EINDUCTION,axiom,
    ! [V0P: $i] :
      ( mem(V0P,arr(ty_2Enum_2Enum,bool))
     => ( ( p(ap(V0P,inj__ty_2Enum_2Enum(fo__c_2Enum_2E0)))
          & ! [V1n: tp__ty_2Enum_2Enum] :
              ( p(ap(V0P,inj__ty_2Enum_2Enum(V1n)))
             => p(ap(V0P,ap(c_2Enum_2ESUC,inj__ty_2Enum_2Enum(V1n)))) ) )
       => ! [V2n: tp__ty_2Enum_2Enum] : p(ap(V0P,inj__ty_2Enum_2Enum(V2n))) ) ) ).

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