ITP001 Axioms: ITP120+5.ax


%------------------------------------------------------------------------------
% File     : ITP120+5 : TPTP v8.2.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    : intreal+2.ax [Gau20]
%          : HL4120+5.ax [TPAP]

% Status   : Satisfiable
% Syntax   : Number of formulae    :   28 (   4 unt;   0 def)
%            Number of atoms       :   88 (  28 equ)
%            Maximal formula atoms :   12 (   3 avg)
%            Number of connectives :   60 (   0   ~;   0   |;  12   &)
%                                         (   6 <=>;  42  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   10 (   4 avg)
%            Maximal term depth    :    8 (   2 avg)
%            Number of predicates  :    3 (   2 usr;   0 prp; 1-2 aty)
%            Number of functors    :   40 (  40 usr;  32 con; 0-2 aty)
%            Number of variables   :   42 (  42   !;   0   ?)
% SPC      : FOF_SAT_RFO_SEQ

% Comments :
% Bugfixes : v7.5.0 - Fixes to the axioms.
%------------------------------------------------------------------------------
fof(mem_c_2Eintreal_2EINT__CEILING,axiom,
    mem(c_2Eintreal_2EINT__CEILING,arr(ty_2Erealax_2Ereal,ty_2Einteger_2Eint)) ).

fof(mem_c_2Eintreal_2EINT__FLOOR,axiom,
    mem(c_2Eintreal_2EINT__FLOOR,arr(ty_2Erealax_2Ereal,ty_2Einteger_2Eint)) ).

fof(mem_c_2Eintreal_2Eis__int,axiom,
    mem(c_2Eintreal_2Eis__int,arr(ty_2Erealax_2Ereal,bool)) ).

fof(mem_c_2Eintreal_2Ereal__of__int,axiom,
    mem(c_2Eintreal_2Ereal__of__int,arr(ty_2Einteger_2Eint,ty_2Erealax_2Ereal)) ).

fof(ax_thm_2Eintreal_2Ereal__of__int,axiom,
    ! [V0i] :
      ( mem(V0i,ty_2Einteger_2Eint)
     => ap(c_2Eintreal_2Ereal__of__int,V0i) = ap(ap(ap(c_2Ebool_2ECOND(ty_2Erealax_2Ereal),ap(ap(c_2Einteger_2Eint__lt,V0i),ap(c_2Einteger_2Eint__of__num,c_2Enum_2E0))),ap(c_2Erealax_2Ereal__neg,ap(c_2Ereal_2Ereal__of__num,ap(c_2Einteger_2ENum,ap(c_2Einteger_2Eint__neg,V0i))))),ap(c_2Ereal_2Ereal__of__num,ap(c_2Einteger_2ENum,V0i))) ) ).

fof(conj_thm_2Eintreal_2Ereal__of__int__def,axiom,
    ! [V0i] :
      ( mem(V0i,ty_2Einteger_2Eint)
     => ap(c_2Eintreal_2Ereal__of__int,V0i) = ap(ap(ap(c_2Ebool_2ECOND(ty_2Erealax_2Ereal),ap(ap(c_2Einteger_2Eint__lt,V0i),ap(c_2Einteger_2Eint__of__num,c_2Enum_2E0))),ap(c_2Erealax_2Ereal__neg,ap(c_2Ereal_2Ereal__of__num,ap(c_2Einteger_2ENum,ap(c_2Einteger_2Eint__neg,V0i))))),ap(c_2Ereal_2Ereal__of__num,ap(c_2Einteger_2ENum,V0i))) ) ).

fof(lameq_f2741,axiom,
    ! [V0x] :
      ( mem(V0x,ty_2Erealax_2Ereal)
     => ! [V1i] : ap(f2741(V0x),V1i) = ap(ap(c_2Erealax_2Ereal__lt,V0x),ap(c_2Eintreal_2Ereal__of__int,ap(ap(c_2Einteger_2Eint__add,V1i),ap(c_2Einteger_2Eint__of__num,ap(c_2Earithmetic_2ENUMERAL,ap(c_2Earithmetic_2EBIT1,c_2Earithmetic_2EZERO)))))) ) ).

fof(ax_thm_2Eintreal_2EINT__FLOOR__def,axiom,
    ! [V0x] :
      ( mem(V0x,ty_2Erealax_2Ereal)
     => ap(c_2Eintreal_2EINT__FLOOR,V0x) = ap(c_2Einteger_2ELEAST__INT,f2741(V0x)) ) ).

fof(lameq_f2742,axiom,
    ! [V0x] :
      ( mem(V0x,ty_2Erealax_2Ereal)
     => ! [V1i] : ap(f2742(V0x),V1i) = ap(ap(c_2Ereal_2Ereal__lte,V0x),ap(c_2Eintreal_2Ereal__of__int,V1i)) ) ).

fof(ax_thm_2Eintreal_2EINT__CEILING__def,axiom,
    ! [V0x] :
      ( mem(V0x,ty_2Erealax_2Ereal)
     => ap(c_2Eintreal_2EINT__CEILING,V0x) = ap(c_2Einteger_2ELEAST__INT,f2742(V0x)) ) ).

fof(ax_thm_2Eintreal_2Eis__int__def,axiom,
    ! [V0x] :
      ( mem(V0x,ty_2Erealax_2Ereal)
     => ( p(ap(c_2Eintreal_2Eis__int,V0x))
      <=> V0x = ap(c_2Eintreal_2Ereal__of__int,ap(c_2Eintreal_2EINT__FLOOR,V0x)) ) ) ).

fof(conj_thm_2Eintreal_2Ereal__of__int__monotonic,axiom,
    ! [V0i] :
      ( mem(V0i,ty_2Einteger_2Eint)
     => ! [V1j] :
          ( mem(V1j,ty_2Einteger_2Eint)
         => ( p(ap(ap(c_2Einteger_2Eint__lt,V0i),V1j))
           => p(ap(ap(c_2Erealax_2Ereal__lt,ap(c_2Eintreal_2Ereal__of__int,V0i)),ap(c_2Eintreal_2Ereal__of__int,V1j))) ) ) ) ).

fof(conj_thm_2Eintreal_2EINT__FLOOR__BOUNDS,axiom,
    ! [V0r] :
      ( mem(V0r,ty_2Erealax_2Ereal)
     => ( p(ap(ap(c_2Ereal_2Ereal__lte,ap(c_2Eintreal_2Ereal__of__int,ap(c_2Eintreal_2EINT__FLOOR,V0r))),V0r))
        & p(ap(ap(c_2Erealax_2Ereal__lt,V0r),ap(c_2Eintreal_2Ereal__of__int,ap(ap(c_2Einteger_2Eint__add,ap(c_2Eintreal_2EINT__FLOOR,V0r)),ap(c_2Einteger_2Eint__of__num,ap(c_2Earithmetic_2ENUMERAL,ap(c_2Earithmetic_2EBIT1,c_2Earithmetic_2EZERO))))))) ) ) ).

fof(conj_thm_2Eintreal_2EINT__FLOOR,axiom,
    ! [V0r] :
      ( mem(V0r,ty_2Erealax_2Ereal)
     => ! [V1i] :
          ( mem(V1i,ty_2Einteger_2Eint)
         => ( ap(c_2Eintreal_2EINT__FLOOR,V0r) = V1i
          <=> ( p(ap(ap(c_2Ereal_2Ereal__lte,ap(c_2Eintreal_2Ereal__of__int,V1i)),V0r))
              & p(ap(ap(c_2Erealax_2Ereal__lt,V0r),ap(c_2Eintreal_2Ereal__of__int,ap(ap(c_2Einteger_2Eint__add,V1i),ap(c_2Einteger_2Eint__of__num,ap(c_2Earithmetic_2ENUMERAL,ap(c_2Earithmetic_2EBIT1,c_2Earithmetic_2EZERO))))))) ) ) ) ) ).

fof(lameq_f2743,axiom,
    ! [V0r] :
      ( mem(V0r,ty_2Erealax_2Ereal)
     => ! [V1i] : ap(f2743(V0r),V1i) = ap(ap(ap(c_2Ebool_2ECOND(ty_2Einteger_2Eint),ap(ap(c_2Emin_2E_3D(ty_2Erealax_2Ereal),ap(c_2Eintreal_2Ereal__of__int,V1i)),V0r)),V1i),ap(ap(c_2Einteger_2Eint__add,V1i),ap(c_2Einteger_2Eint__of__num,ap(c_2Earithmetic_2ENUMERAL,ap(c_2Earithmetic_2EBIT1,c_2Earithmetic_2EZERO))))) ) ).

fof(conj_thm_2Eintreal_2EINT__CEILING__INT__FLOOR,axiom,
    ! [V0r] :
      ( mem(V0r,ty_2Erealax_2Ereal)
     => ap(c_2Eintreal_2EINT__CEILING,V0r) = ap(ap(c_2Ebool_2ELET(ty_2Einteger_2Eint,ty_2Einteger_2Eint),f2743(V0r)),ap(c_2Eintreal_2EINT__FLOOR,V0r)) ) ).

fof(conj_thm_2Eintreal_2EINT__CEILING__BOUNDS,axiom,
    ! [V0r] :
      ( mem(V0r,ty_2Erealax_2Ereal)
     => ( p(ap(ap(c_2Erealax_2Ereal__lt,ap(c_2Eintreal_2Ereal__of__int,ap(ap(c_2Einteger_2Eint__sub,ap(c_2Eintreal_2EINT__CEILING,V0r)),ap(c_2Einteger_2Eint__of__num,ap(c_2Earithmetic_2ENUMERAL,ap(c_2Earithmetic_2EBIT1,c_2Earithmetic_2EZERO)))))),V0r))
        & p(ap(ap(c_2Ereal_2Ereal__lte,V0r),ap(c_2Eintreal_2Ereal__of__int,ap(c_2Eintreal_2EINT__CEILING,V0r)))) ) ) ).

fof(conj_thm_2Eintreal_2EINT__CEILING,axiom,
    ! [V0r] :
      ( mem(V0r,ty_2Erealax_2Ereal)
     => ! [V1i] :
          ( mem(V1i,ty_2Einteger_2Eint)
         => ( ap(c_2Eintreal_2EINT__CEILING,V0r) = V1i
          <=> ( p(ap(ap(c_2Erealax_2Ereal__lt,ap(c_2Eintreal_2Ereal__of__int,ap(ap(c_2Einteger_2Eint__sub,V1i),ap(c_2Einteger_2Eint__of__num,ap(c_2Earithmetic_2ENUMERAL,ap(c_2Earithmetic_2EBIT1,c_2Earithmetic_2EZERO)))))),V0r))
              & p(ap(ap(c_2Ereal_2Ereal__lte,V0r),ap(c_2Eintreal_2Ereal__of__int,V1i))) ) ) ) ) ).

fof(conj_thm_2Eintreal_2EINT__FLOOR__EQNS,axiom,
    ( ! [V0n] :
        ( mem(V0n,ty_2Enum_2Enum)
       => ap(c_2Eintreal_2EINT__FLOOR,ap(c_2Ereal_2Ereal__of__num,V0n)) = ap(c_2Einteger_2Eint__of__num,V0n) )
    & ! [V1n] :
        ( mem(V1n,ty_2Enum_2Enum)
       => ap(c_2Eintreal_2EINT__FLOOR,ap(c_2Erealax_2Ereal__neg,ap(c_2Ereal_2Ereal__of__num,V1n))) = ap(c_2Einteger_2Eint__neg,ap(c_2Einteger_2Eint__of__num,V1n)) )
    & ! [V2n] :
        ( mem(V2n,ty_2Enum_2Enum)
       => ! [V3m] :
            ( mem(V3m,ty_2Enum_2Enum)
           => ( p(ap(ap(c_2Eprim__rec_2E_3C,c_2Enum_2E0),V3m))
             => ap(c_2Eintreal_2EINT__FLOOR,ap(ap(c_2Ereal_2E_2F,ap(c_2Ereal_2Ereal__of__num,V2n)),ap(c_2Ereal_2Ereal__of__num,V3m))) = ap(ap(c_2Einteger_2Eint__div,ap(c_2Einteger_2Eint__of__num,V2n)),ap(c_2Einteger_2Eint__of__num,V3m)) ) ) )
    & ! [V4n] :
        ( mem(V4n,ty_2Enum_2Enum)
       => ! [V5m] :
            ( mem(V5m,ty_2Enum_2Enum)
           => ( p(ap(ap(c_2Eprim__rec_2E_3C,c_2Enum_2E0),V5m))
             => ap(c_2Eintreal_2EINT__FLOOR,ap(ap(c_2Ereal_2E_2F,ap(c_2Erealax_2Ereal__neg,ap(c_2Ereal_2Ereal__of__num,V4n))),ap(c_2Ereal_2Ereal__of__num,V5m))) = ap(ap(c_2Einteger_2Eint__div,ap(c_2Einteger_2Eint__neg,ap(c_2Einteger_2Eint__of__num,V4n))),ap(c_2Einteger_2Eint__of__num,V5m)) ) ) ) ) ).

fof(conj_thm_2Eintreal_2EINT__FLOOR__compute,axiom,
    ! [V0n] :
      ( mem(V0n,ty_2Enum_2Enum)
     => ! [V1m] :
          ( mem(V1m,ty_2Enum_2Enum)
         => ( ap(c_2Eintreal_2EINT__FLOOR,ap(c_2Ereal_2Ereal__of__num,V0n)) = ap(c_2Einteger_2Eint__of__num,V0n)
            & ap(c_2Eintreal_2EINT__FLOOR,ap(c_2Erealax_2Ereal__neg,ap(c_2Ereal_2Ereal__of__num,V0n))) = ap(c_2Einteger_2Eint__neg,ap(c_2Einteger_2Eint__of__num,V0n))
            & ap(c_2Eintreal_2EINT__FLOOR,ap(ap(c_2Ereal_2E_2F,ap(c_2Ereal_2Ereal__of__num,V0n)),ap(c_2Ereal_2Ereal__of__num,ap(c_2Earithmetic_2ENUMERAL,ap(c_2Earithmetic_2EBIT1,V1m))))) = ap(ap(c_2Einteger_2Eint__div,ap(c_2Einteger_2Eint__of__num,V0n)),ap(c_2Einteger_2Eint__of__num,ap(c_2Earithmetic_2ENUMERAL,ap(c_2Earithmetic_2EBIT1,V1m))))
            & ap(c_2Eintreal_2EINT__FLOOR,ap(ap(c_2Ereal_2E_2F,ap(c_2Ereal_2Ereal__of__num,V0n)),ap(c_2Ereal_2Ereal__of__num,ap(c_2Earithmetic_2ENUMERAL,ap(c_2Earithmetic_2EBIT2,V1m))))) = ap(ap(c_2Einteger_2Eint__div,ap(c_2Einteger_2Eint__of__num,V0n)),ap(c_2Einteger_2Eint__of__num,ap(c_2Earithmetic_2ENUMERAL,ap(c_2Earithmetic_2EBIT2,V1m))))
            & ap(c_2Eintreal_2EINT__FLOOR,ap(ap(c_2Ereal_2E_2F,ap(c_2Erealax_2Ereal__neg,ap(c_2Ereal_2Ereal__of__num,V0n))),ap(c_2Ereal_2Ereal__of__num,ap(c_2Earithmetic_2ENUMERAL,ap(c_2Earithmetic_2EBIT1,V1m))))) = ap(ap(c_2Einteger_2Eint__div,ap(c_2Einteger_2Eint__neg,ap(c_2Einteger_2Eint__of__num,V0n))),ap(c_2Einteger_2Eint__of__num,ap(c_2Earithmetic_2ENUMERAL,ap(c_2Earithmetic_2EBIT1,V1m))))
            & ap(c_2Eintreal_2EINT__FLOOR,ap(ap(c_2Ereal_2E_2F,ap(c_2Erealax_2Ereal__neg,ap(c_2Ereal_2Ereal__of__num,V0n))),ap(c_2Ereal_2Ereal__of__num,ap(c_2Earithmetic_2ENUMERAL,ap(c_2Earithmetic_2EBIT2,V1m))))) = ap(ap(c_2Einteger_2Eint__div,ap(c_2Einteger_2Eint__neg,ap(c_2Einteger_2Eint__of__num,V0n))),ap(c_2Einteger_2Eint__of__num,ap(c_2Earithmetic_2ENUMERAL,ap(c_2Earithmetic_2EBIT2,V1m)))) ) ) ) ).

fof(conj_thm_2Eintreal_2Ereal__of__int__num,axiom,
    ! [V0n] :
      ( mem(V0n,ty_2Enum_2Enum)
     => ap(c_2Eintreal_2Ereal__of__int,ap(c_2Einteger_2Eint__of__num,V0n)) = ap(c_2Ereal_2Ereal__of__num,V0n) ) ).

fof(conj_thm_2Eintreal_2Ereal__of__int__add,axiom,
    ! [V0m] :
      ( mem(V0m,ty_2Einteger_2Eint)
     => ! [V1n] :
          ( mem(V1n,ty_2Einteger_2Eint)
         => ap(c_2Eintreal_2Ereal__of__int,ap(ap(c_2Einteger_2Eint__add,V0m),V1n)) = ap(ap(c_2Erealax_2Ereal__add,ap(c_2Eintreal_2Ereal__of__int,V0m)),ap(c_2Eintreal_2Ereal__of__int,V1n)) ) ) ).

fof(conj_thm_2Eintreal_2Ereal__of__int__neg,axiom,
    ! [V0m] :
      ( mem(V0m,ty_2Einteger_2Eint)
     => ap(c_2Eintreal_2Ereal__of__int,ap(c_2Einteger_2Eint__neg,V0m)) = ap(c_2Erealax_2Ereal__neg,ap(c_2Eintreal_2Ereal__of__int,V0m)) ) ).

fof(conj_thm_2Eintreal_2Ereal__of__int__sub,axiom,
    ! [V0m] :
      ( mem(V0m,ty_2Einteger_2Eint)
     => ! [V1n] :
          ( mem(V1n,ty_2Einteger_2Eint)
         => ap(c_2Eintreal_2Ereal__of__int,ap(ap(c_2Einteger_2Eint__sub,V0m),V1n)) = ap(ap(c_2Ereal_2Ereal__sub,ap(c_2Eintreal_2Ereal__of__int,V0m)),ap(c_2Eintreal_2Ereal__of__int,V1n)) ) ) ).

fof(conj_thm_2Eintreal_2Ereal__of__int__mul,axiom,
    ! [V0m] :
      ( mem(V0m,ty_2Einteger_2Eint)
     => ! [V1n] :
          ( mem(V1n,ty_2Einteger_2Eint)
         => ap(c_2Eintreal_2Ereal__of__int,ap(ap(c_2Einteger_2Eint__mul,V0m),V1n)) = ap(ap(c_2Erealax_2Ereal__mul,ap(c_2Eintreal_2Ereal__of__int,V0m)),ap(c_2Eintreal_2Ereal__of__int,V1n)) ) ) ).

fof(conj_thm_2Eintreal_2Ereal__of__int__lt,axiom,
    ! [V0m] :
      ( mem(V0m,ty_2Einteger_2Eint)
     => ! [V1n] :
          ( mem(V1n,ty_2Einteger_2Eint)
         => ( p(ap(ap(c_2Erealax_2Ereal__lt,ap(c_2Eintreal_2Ereal__of__int,V0m)),ap(c_2Eintreal_2Ereal__of__int,V1n)))
          <=> p(ap(ap(c_2Einteger_2Eint__lt,V0m),V1n)) ) ) ) ).

fof(conj_thm_2Eintreal_2Ereal__of__int__11,axiom,
    ! [V0m] :
      ( mem(V0m,ty_2Einteger_2Eint)
     => ! [V1n] :
          ( mem(V1n,ty_2Einteger_2Eint)
         => ( ap(c_2Eintreal_2Ereal__of__int,V0m) = ap(c_2Eintreal_2Ereal__of__int,V1n)
          <=> V0m = V1n ) ) ) ).

fof(conj_thm_2Eintreal_2Ereal__of__int__le,axiom,
    ! [V0m] :
      ( mem(V0m,ty_2Einteger_2Eint)
     => ! [V1n] :
          ( mem(V1n,ty_2Einteger_2Eint)
         => ( p(ap(ap(c_2Ereal_2Ereal__lte,ap(c_2Eintreal_2Ereal__of__int,V0m)),ap(c_2Eintreal_2Ereal__of__int,V1n)))
          <=> p(ap(ap(c_2Einteger_2Eint__le,V0m),V1n)) ) ) ) ).

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