ITP001 Axioms: ITP019_5.ax


%------------------------------------------------------------------------------
% File     : ITP019_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    : while_2.ax [Gau20]
%          : HL4019_5.ax [TPAP]

% Status   : Satisfiable
% Syntax   : Number of formulae    :   58 (  10 unt;  16 typ;   0 def)
%            Number of atoms       :  687 (  31 equ)
%            Maximal formula atoms :   15 (  11 avg)
%            Number of connectives :  145 (  10   ~;   0   |;  19   &)
%                                         (   5 <=>; 111  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   16 (   7 avg)
%            Maximal term depth    :    3 (   1 avg)
%            Number of FOOLs       :  510 ( 510 fml;   0 var)
%            Number of types       :    2 (   1 usr)
%            Number of type conns  :   24 (  13   >;  11   *;   0   +;   0  <<)
%            Number of predicates  :   29 (  28 usr;  12 prp; 0-3 aty)
%            Number of functors    :   15 (  15 usr;   2 con; 0-4 aty)
%            Number of variables   :  132 ( 128   !;   4   ?; 132   :)
% SPC      : TF0_SAT_EQU_NAR

% Comments :
% Bugfixes : v7.5.0 - Fixes to the axioms.
%------------------------------------------------------------------------------
tff(tp_c_2Ewhile_2EHOARE__SPEC,type,
    c_2Ewhile_2EHOARE__SPEC: ( del * del ) > $i ).

tff(mem_c_2Ewhile_2EHOARE__SPEC,axiom,
    ! [A_27a: del,A_27b: del] : mem(c_2Ewhile_2EHOARE__SPEC(A_27a,A_27b),arr(arr(A_27a,bool),arr(arr(A_27a,A_27b),arr(arr(A_27b,bool),bool)))) ).

tff(tp_c_2Ewhile_2ELEAST,type,
    c_2Ewhile_2ELEAST: $i ).

tff(mem_c_2Ewhile_2ELEAST,axiom,
    mem(c_2Ewhile_2ELEAST,arr(arr(ty_2Enum_2Enum,bool),ty_2Enum_2Enum)) ).

tff(stp_c_ty_2Eoption_2Eoption_ty_2Enum_2Enum,type,
    tp__c_ty_2Eoption_2Eoption_ty_2Enum_2Enum: $tType ).

tff(stp_inj_c_ty_2Eoption_2Eoption_ty_2Enum_2Enum,type,
    inj__c_ty_2Eoption_2Eoption_ty_2Enum_2Enum: tp__c_ty_2Eoption_2Eoption_ty_2Enum_2Enum > $i ).

tff(stp_surj_c_ty_2Eoption_2Eoption_ty_2Enum_2Enum,type,
    surj__c_ty_2Eoption_2Eoption_ty_2Enum_2Enum: $i > tp__c_ty_2Eoption_2Eoption_ty_2Enum_2Enum ).

tff(stp_inj_surj_c_ty_2Eoption_2Eoption_ty_2Enum_2Enum,axiom,
    ! [X: tp__c_ty_2Eoption_2Eoption_ty_2Enum_2Enum] : ( surj__c_ty_2Eoption_2Eoption_ty_2Enum_2Enum(inj__c_ty_2Eoption_2Eoption_ty_2Enum_2Enum(X)) = X ) ).

tff(stp_inj_mem_c_ty_2Eoption_2Eoption_ty_2Enum_2Enum,axiom,
    ! [X: tp__c_ty_2Eoption_2Eoption_ty_2Enum_2Enum] : mem(inj__c_ty_2Eoption_2Eoption_ty_2Enum_2Enum(X),ty_2Eoption_2Eoption(ty_2Enum_2Enum)) ).

tff(stp_iso_mem_c_ty_2Eoption_2Eoption_ty_2Enum_2Enum,axiom,
    ! [X: $i] :
      ( mem(X,ty_2Eoption_2Eoption(ty_2Enum_2Enum))
     => ( X = inj__c_ty_2Eoption_2Eoption_ty_2Enum_2Enum(surj__c_ty_2Eoption_2Eoption_ty_2Enum_2Enum(X)) ) ) ).

tff(tp_c_2Ewhile_2EOLEAST,type,
    c_2Ewhile_2EOLEAST: $i ).

tff(mem_c_2Ewhile_2EOLEAST,axiom,
    mem(c_2Ewhile_2EOLEAST,arr(arr(ty_2Enum_2Enum,bool),ty_2Eoption_2Eoption(ty_2Enum_2Enum))) ).

tff(tp_c_2Ewhile_2EOWHILE,type,
    c_2Ewhile_2EOWHILE: del > $i ).

tff(mem_c_2Ewhile_2EOWHILE,axiom,
    ! [A_27a: del] : mem(c_2Ewhile_2EOWHILE(A_27a),arr(arr(A_27a,bool),arr(arr(A_27a,A_27a),arr(A_27a,ty_2Eoption_2Eoption(A_27a))))) ).

tff(tp_c_2Ewhile_2EWHILE,type,
    c_2Ewhile_2EWHILE: del > $i ).

tff(mem_c_2Ewhile_2EWHILE,axiom,
    ! [A_27a: del] : mem(c_2Ewhile_2EWHILE(A_27a),arr(arr(A_27a,bool),arr(arr(A_27a,A_27a),arr(A_27a,A_27a)))) ).

tff(conj_thm_2Ewhile_2EITERATION,axiom,
    ! [A_27a: del,V0P: $i] :
      ( mem(V0P,arr(A_27a,bool))
     => ! [V1g: $i] :
          ( mem(V1g,arr(A_27a,A_27a))
         => ? [V2f: $i] :
              ( mem(V2f,arr(A_27a,A_27a))
              & ! [V3x: $i] :
                  ( mem(V3x,A_27a)
                 => ( ap(V2f,V3x) = ap(ap(ap(c_2Ebool_2ECOND(A_27a),ap(V0P,V3x)),V3x),ap(V2f,ap(V1g,V3x))) ) ) ) ) ) ).

tff(ax_thm_2Ewhile_2EWHILE,axiom,
    ! [A_27a: del,V0P: $i] :
      ( mem(V0P,arr(A_27a,bool))
     => ! [V1g: $i] :
          ( mem(V1g,arr(A_27a,A_27a))
         => ! [V2x: $i] :
              ( mem(V2x,A_27a)
             => ( ap(ap(ap(c_2Ewhile_2EWHILE(A_27a),V0P),V1g),V2x) = ap(ap(ap(c_2Ebool_2ECOND(A_27a),ap(V0P,V2x)),ap(ap(ap(c_2Ewhile_2EWHILE(A_27a),V0P),V1g),ap(V1g,V2x))),V2x) ) ) ) ) ).

tff(conj_thm_2Ewhile_2EWHILE__INDUCTION,axiom,
    ! [A_27a: del,V0B: $i] :
      ( mem(V0B,arr(A_27a,bool))
     => ! [V1C: $i] :
          ( mem(V1C,arr(A_27a,A_27a))
         => ! [V2R: $i] :
              ( mem(V2R,arr(A_27a,arr(A_27a,bool)))
             => ( ( p(ap(c_2Erelation_2EWF(A_27a),V2R))
                  & ! [V3s: $i] :
                      ( mem(V3s,A_27a)
                     => ( p(ap(V0B,V3s))
                       => p(ap(ap(V2R,ap(V1C,V3s)),V3s)) ) ) )
               => ! [V4P: $i] :
                    ( mem(V4P,arr(A_27a,bool))
                   => ( ! [V5s: $i] :
                          ( mem(V5s,A_27a)
                         => ( ( p(ap(V0B,V5s))
                             => p(ap(V4P,ap(V1C,V5s))) )
                           => p(ap(V4P,V5s)) ) )
                     => ! [V6v: $i] :
                          ( mem(V6v,A_27a)
                         => p(ap(V4P,V6v)) ) ) ) ) ) ) ) ).

tff(ax_thm_2Ewhile_2EHOARE__SPEC__DEF,axiom,
    ! [A_27a: del,A_27b: del,V0P: $i] :
      ( mem(V0P,arr(A_27a,bool))
     => ! [V1C: $i] :
          ( mem(V1C,arr(A_27a,A_27b))
         => ! [V2Q: $i] :
              ( mem(V2Q,arr(A_27b,bool))
             => ( p(ap(ap(ap(c_2Ewhile_2EHOARE__SPEC(A_27a,A_27b),V0P),V1C),V2Q))
              <=> ! [V3s: $i] :
                    ( mem(V3s,A_27a)
                   => ( p(ap(V0P,V3s))
                     => p(ap(V2Q,ap(V1C,V3s))) ) ) ) ) ) ) ).

tff(lamtp_f186,type,
    f186: ( del * $i * $i ) > $i ).

tff(lameq_f186,axiom,
    ! [A_27a: del,V0P: $i] :
      ( mem(V0P,arr(A_27a,bool))
     => ! [V2B: $i] :
          ( mem(V2B,arr(A_27a,bool))
         => ! [V5s: $i] : ( ap(f186(A_27a,V0P,V2B),V5s) = ap(ap(c_2Ebool_2E_2F_5C,ap(V0P,V5s)),ap(V2B,V5s)) ) ) ) ).

tff(lamtp_f187,type,
    f187: ( del * $i * $i ) > $i ).

tff(lameq_f187,axiom,
    ! [A_27a: del,V0P: $i] :
      ( mem(V0P,arr(A_27a,bool))
     => ! [V2B: $i] :
          ( mem(V2B,arr(A_27a,bool))
         => ! [V6s: $i] : ( ap(f187(A_27a,V0P,V2B),V6s) = ap(ap(c_2Ebool_2E_2F_5C,ap(V0P,V6s)),ap(c_2Ebool_2E_7E,ap(V2B,V6s))) ) ) ) ).

tff(conj_thm_2Ewhile_2EWHILE__RULE,axiom,
    ! [A_27a: del,V0P: $i] :
      ( mem(V0P,arr(A_27a,bool))
     => ! [V1R: $i] :
          ( mem(V1R,arr(A_27a,arr(A_27a,bool)))
         => ! [V2B: $i] :
              ( mem(V2B,arr(A_27a,bool))
             => ! [V3C: $i] :
                  ( mem(V3C,arr(A_27a,A_27a))
                 => ( ( p(ap(c_2Erelation_2EWF(A_27a),V1R))
                      & ! [V4s: $i] :
                          ( mem(V4s,A_27a)
                         => ( p(ap(V2B,V4s))
                           => p(ap(ap(V1R,ap(V3C,V4s)),V4s)) ) ) )
                   => ( p(ap(ap(ap(c_2Ewhile_2EHOARE__SPEC(A_27a,A_27a),f186(A_27a,V0P,V2B)),V3C),V0P))
                     => p(ap(ap(ap(c_2Ewhile_2EHOARE__SPEC(A_27a,A_27a),V0P),ap(ap(c_2Ewhile_2EWHILE(A_27a),V2B),V3C)),f187(A_27a,V0P,V2B))) ) ) ) ) ) ) ).

tff(ax_thm_2Ewhile_2ELEAST__DEF,axiom,
    ! [V0P: $i] :
      ( mem(V0P,arr(ty_2Enum_2Enum,bool))
     => ( surj__ty_2Enum_2Enum(ap(c_2Ewhile_2ELEAST,V0P)) = surj__ty_2Enum_2Enum(ap(ap(ap(c_2Ewhile_2EWHILE(ty_2Enum_2Enum),ap(ap(c_2Ecombin_2Eo(ty_2Enum_2Enum,bool,bool),c_2Ebool_2E_7E),V0P)),c_2Enum_2ESUC),inj__ty_2Enum_2Enum(fo__c_2Enum_2E0))) ) ) ).

tff(conj_thm_2Ewhile_2ELEAST__INTRO,axiom,
    ! [V0P: $i] :
      ( mem(V0P,arr(ty_2Enum_2Enum,bool))
     => ! [V1x: tp__ty_2Enum_2Enum] :
          ( p(ap(V0P,inj__ty_2Enum_2Enum(V1x)))
         => p(ap(V0P,ap(c_2Ewhile_2ELEAST,V0P))) ) ) ).

tff(conj_thm_2Ewhile_2ELESS__LEAST,axiom,
    ! [V0P: $i] :
      ( mem(V0P,arr(ty_2Enum_2Enum,bool))
     => ! [V1m: tp__ty_2Enum_2Enum] :
          ( p(ap(ap(c_2Eprim__rec_2E_3C,inj__ty_2Enum_2Enum(V1m)),ap(c_2Ewhile_2ELEAST,V0P)))
         => ~ p(ap(V0P,inj__ty_2Enum_2Enum(V1m))) ) ) ).

tff(conj_thm_2Ewhile_2EFULL__LEAST__INTRO,axiom,
    ! [V0P: $i] :
      ( mem(V0P,arr(ty_2Enum_2Enum,bool))
     => ! [V1x: tp__ty_2Enum_2Enum] :
          ( p(ap(V0P,inj__ty_2Enum_2Enum(V1x)))
         => ( p(ap(V0P,ap(c_2Ewhile_2ELEAST,V0P)))
            & p(ap(ap(c_2Earithmetic_2E_3C_3D,ap(c_2Ewhile_2ELEAST,V0P)),inj__ty_2Enum_2Enum(V1x))) ) ) ) ).

tff(conj_thm_2Ewhile_2ELEAST__ELIM,axiom,
    ! [V0Q: $i] :
      ( mem(V0Q,arr(ty_2Enum_2Enum,bool))
     => ! [V1P: $i] :
          ( mem(V1P,arr(ty_2Enum_2Enum,bool))
         => ( ( ? [V2n: tp__ty_2Enum_2Enum] : p(ap(V1P,inj__ty_2Enum_2Enum(V2n)))
              & ! [V3n: tp__ty_2Enum_2Enum] :
                  ( ( ! [V4m: tp__ty_2Enum_2Enum] :
                        ( p(ap(ap(c_2Eprim__rec_2E_3C,inj__ty_2Enum_2Enum(V4m)),inj__ty_2Enum_2Enum(V3n)))
                       => ~ p(ap(V1P,inj__ty_2Enum_2Enum(V4m))) )
                    & p(ap(V1P,inj__ty_2Enum_2Enum(V3n))) )
                 => p(ap(V0Q,inj__ty_2Enum_2Enum(V3n))) ) )
           => p(ap(V0Q,ap(c_2Ewhile_2ELEAST,V1P))) ) ) ) ).

tff(conj_thm_2Ewhile_2ELEAST__EXISTS,axiom,
    ! [V0p: $i] :
      ( mem(V0p,arr(ty_2Enum_2Enum,bool))
     => ( ? [V1n: tp__ty_2Enum_2Enum] : p(ap(V0p,inj__ty_2Enum_2Enum(V1n)))
      <=> ( p(ap(V0p,ap(c_2Ewhile_2ELEAST,V0p)))
          & ! [V2n: tp__ty_2Enum_2Enum] :
              ( p(ap(ap(c_2Eprim__rec_2E_3C,inj__ty_2Enum_2Enum(V2n)),ap(c_2Ewhile_2ELEAST,V0p)))
             => ~ p(ap(V0p,inj__ty_2Enum_2Enum(V2n))) ) ) ) ) ).

tff(conj_thm_2Ewhile_2ELEAST__EXISTS__IMP,axiom,
    ! [V0p: $i] :
      ( mem(V0p,arr(ty_2Enum_2Enum,bool))
     => ( ? [V1n: tp__ty_2Enum_2Enum] : p(ap(V0p,inj__ty_2Enum_2Enum(V1n)))
       => ( p(ap(V0p,ap(c_2Ewhile_2ELEAST,V0p)))
          & ! [V2n: tp__ty_2Enum_2Enum] :
              ( p(ap(ap(c_2Eprim__rec_2E_3C,inj__ty_2Enum_2Enum(V2n)),ap(c_2Ewhile_2ELEAST,V0p)))
             => ~ p(ap(V0p,inj__ty_2Enum_2Enum(V2n))) ) ) ) ) ).

tff(lamtp_f188,type,
    f188: tp__ty_2Enum_2Enum > $i ).

tff(lameq_f188,axiom,
    ! [V0x: tp__ty_2Enum_2Enum,V1n: tp__ty_2Enum_2Enum] : ( ap(f188(V0x),inj__ty_2Enum_2Enum(V1n)) = ap(ap(c_2Emin_2E_3D(ty_2Enum_2Enum),inj__ty_2Enum_2Enum(V1n)),inj__ty_2Enum_2Enum(V0x)) ) ).

tff(lamtp_f189,type,
    f189: tp__ty_2Enum_2Enum > $i ).

tff(lameq_f189,axiom,
    ! [V0x: tp__ty_2Enum_2Enum,V2n: tp__ty_2Enum_2Enum] : ( ap(f189(V0x),inj__ty_2Enum_2Enum(V2n)) = ap(ap(c_2Emin_2E_3D(ty_2Enum_2Enum),inj__ty_2Enum_2Enum(V0x)),inj__ty_2Enum_2Enum(V2n)) ) ).

tff(conj_thm_2Ewhile_2ELEAST__EQ,axiom,
    ! [V0x: tp__ty_2Enum_2Enum] :
      ( ( surj__ty_2Enum_2Enum(ap(c_2Ewhile_2ELEAST,f188(V0x))) = V0x )
      & ( surj__ty_2Enum_2Enum(ap(c_2Ewhile_2ELEAST,f189(V0x))) = V0x ) ) ).

tff(conj_thm_2Ewhile_2ELEAST__T,axiom,
    surj__ty_2Enum_2Enum(ap(c_2Ewhile_2ELEAST,k(ty_2Enum_2Enum,c_2Ebool_2ET))) = fo__c_2Enum_2E0 ).

tff(lamtp_f190,type,
    f190: $i > $i ).

tff(lameq_f190,axiom,
    ! [V0P: $i] :
      ( mem(V0P,arr(ty_2Enum_2Enum,bool))
     => ! [V1n: tp__ty_2Enum_2Enum] : ( ap(f190(V0P),inj__ty_2Enum_2Enum(V1n)) = ap(V0P,inj__ty_2Enum_2Enum(V1n)) ) ) ).

tff(lamtp_f191,type,
    f191: $i > $i ).

tff(lameq_f191,axiom,
    ! [V0P: $i] :
      ( mem(V0P,arr(ty_2Enum_2Enum,bool))
     => ! [V2n: tp__ty_2Enum_2Enum] : ( ap(f191(V0P),inj__ty_2Enum_2Enum(V2n)) = ap(V0P,inj__ty_2Enum_2Enum(V2n)) ) ) ).

tff(ax_thm_2Ewhile_2EOLEAST__def,axiom,
    ! [V0P: $i] :
      ( mem(V0P,arr(ty_2Enum_2Enum,bool))
     => ( surj__c_ty_2Eoption_2Eoption_ty_2Enum_2Enum(ap(c_2Ewhile_2EOLEAST,V0P)) = surj__c_ty_2Eoption_2Eoption_ty_2Enum_2Enum(ap(ap(ap(c_2Ebool_2ECOND(ty_2Eoption_2Eoption(ty_2Enum_2Enum)),ap(c_2Ebool_2E_3F(ty_2Enum_2Enum),f190(V0P))),ap(c_2Eoption_2ESOME(ty_2Enum_2Enum),ap(c_2Ewhile_2ELEAST,f191(V0P)))),c_2Eoption_2ENONE(ty_2Enum_2Enum))) ) ) ).

tff(conj_thm_2Ewhile_2EOLEAST__INTRO,axiom,
    ! [V0P: $i] :
      ( mem(V0P,arr(ty_2Enum_2Enum,bool))
     => ! [V1Q: $i] :
          ( mem(V1Q,arr(ty_2Eoption_2Eoption(ty_2Enum_2Enum),bool))
         => ( ( ( ! [V2n: tp__ty_2Enum_2Enum] : ~ p(ap(V0P,inj__ty_2Enum_2Enum(V2n)))
               => p(ap(V1Q,c_2Eoption_2ENONE(ty_2Enum_2Enum))) )
              & ! [V3n: tp__ty_2Enum_2Enum] :
                  ( ( p(ap(V0P,inj__ty_2Enum_2Enum(V3n)))
                    & ! [V4m: tp__ty_2Enum_2Enum] :
                        ( p(ap(ap(c_2Eprim__rec_2E_3C,inj__ty_2Enum_2Enum(V4m)),inj__ty_2Enum_2Enum(V3n)))
                       => ~ p(ap(V0P,inj__ty_2Enum_2Enum(V4m))) ) )
                 => p(ap(V1Q,ap(c_2Eoption_2ESOME(ty_2Enum_2Enum),inj__ty_2Enum_2Enum(V3n)))) ) )
           => p(ap(V1Q,ap(c_2Ewhile_2EOLEAST,V0P))) ) ) ) ).

tff(conj_thm_2Ewhile_2EOLEAST__EQNS,axiom,
    ! [V0x: tp__ty_2Enum_2Enum] :
      ( ( surj__c_ty_2Eoption_2Eoption_ty_2Enum_2Enum(ap(c_2Ewhile_2EOLEAST,f188(V0x))) = surj__c_ty_2Eoption_2Eoption_ty_2Enum_2Enum(ap(c_2Eoption_2ESOME(ty_2Enum_2Enum),inj__ty_2Enum_2Enum(V0x))) )
      & ( surj__c_ty_2Eoption_2Eoption_ty_2Enum_2Enum(ap(c_2Ewhile_2EOLEAST,f189(V0x))) = surj__c_ty_2Eoption_2Eoption_ty_2Enum_2Enum(ap(c_2Eoption_2ESOME(ty_2Enum_2Enum),inj__ty_2Enum_2Enum(V0x))) )
      & ( surj__c_ty_2Eoption_2Eoption_ty_2Enum_2Enum(ap(c_2Ewhile_2EOLEAST,k(ty_2Enum_2Enum,c_2Ebool_2EF))) = surj__c_ty_2Eoption_2Eoption_ty_2Enum_2Enum(c_2Eoption_2ENONE(ty_2Enum_2Enum)) )
      & ( surj__c_ty_2Eoption_2Eoption_ty_2Enum_2Enum(ap(c_2Ewhile_2EOLEAST,k(ty_2Enum_2Enum,c_2Ebool_2ET))) = surj__c_ty_2Eoption_2Eoption_ty_2Enum_2Enum(ap(c_2Eoption_2ESOME(ty_2Enum_2Enum),inj__ty_2Enum_2Enum(fo__c_2Enum_2E0))) ) ) ).

tff(conj_thm_2Ewhile_2EOLEAST__EQ__NONE,axiom,
    ! [V0P: $i] :
      ( mem(V0P,arr(ty_2Enum_2Enum,bool))
     => ( ( surj__c_ty_2Eoption_2Eoption_ty_2Enum_2Enum(ap(c_2Ewhile_2EOLEAST,V0P)) = surj__c_ty_2Eoption_2Eoption_ty_2Enum_2Enum(c_2Eoption_2ENONE(ty_2Enum_2Enum)) )
      <=> ! [V1n: tp__ty_2Enum_2Enum] : ~ p(ap(V0P,inj__ty_2Enum_2Enum(V1n))) ) ) ).

tff(conj_thm_2Ewhile_2EOLEAST__EQ__SOME,axiom,
    ! [V0P: $i] :
      ( mem(V0P,arr(ty_2Enum_2Enum,bool))
     => ! [V1n: tp__ty_2Enum_2Enum] :
          ( ( surj__c_ty_2Eoption_2Eoption_ty_2Enum_2Enum(ap(c_2Ewhile_2EOLEAST,V0P)) = surj__c_ty_2Eoption_2Eoption_ty_2Enum_2Enum(ap(c_2Eoption_2ESOME(ty_2Enum_2Enum),inj__ty_2Enum_2Enum(V1n))) )
        <=> ( p(ap(V0P,inj__ty_2Enum_2Enum(V1n)))
            & ! [V2m: tp__ty_2Enum_2Enum] :
                ( p(ap(ap(c_2Eprim__rec_2E_3C,inj__ty_2Enum_2Enum(V2m)),inj__ty_2Enum_2Enum(V1n)))
               => ~ p(ap(V0P,inj__ty_2Enum_2Enum(V2m))) ) ) ) ) ).

tff(lamtp_f192,type,
    f192: ( del * $i * $i * $i ) > $i ).

tff(lameq_f192,axiom,
    ! [A_27a: del,V0G: $i] :
      ( mem(V0G,arr(A_27a,bool))
     => ! [V1f: $i] :
          ( mem(V1f,arr(A_27a,A_27a))
         => ! [V2s: $i] :
              ( mem(V2s,A_27a)
             => ! [V3n: tp__ty_2Enum_2Enum] : ( ap(f192(A_27a,V0G,V1f,V2s),inj__ty_2Enum_2Enum(V3n)) = ap(c_2Ebool_2E_7E,ap(V0G,ap(ap(ap(c_2Earithmetic_2EFUNPOW(A_27a),V1f),inj__ty_2Enum_2Enum(V3n)),V2s))) ) ) ) ) ).

tff(lamtp_f193,type,
    f193: ( del * $i * $i * $i ) > $i ).

tff(lameq_f193,axiom,
    ! [A_27a: del,V0G: $i] :
      ( mem(V0G,arr(A_27a,bool))
     => ! [V1f: $i] :
          ( mem(V1f,arr(A_27a,A_27a))
         => ! [V2s: $i] :
              ( mem(V2s,A_27a)
             => ! [V4n: tp__ty_2Enum_2Enum] : ( ap(f193(A_27a,V0G,V1f,V2s),inj__ty_2Enum_2Enum(V4n)) = ap(c_2Ebool_2E_7E,ap(V0G,ap(ap(ap(c_2Earithmetic_2EFUNPOW(A_27a),V1f),inj__ty_2Enum_2Enum(V4n)),V2s))) ) ) ) ) ).

tff(ax_thm_2Ewhile_2EOWHILE__def,axiom,
    ! [A_27a: del,V0G: $i] :
      ( mem(V0G,arr(A_27a,bool))
     => ! [V1f: $i] :
          ( mem(V1f,arr(A_27a,A_27a))
         => ! [V2s: $i] :
              ( mem(V2s,A_27a)
             => ( ap(ap(ap(c_2Ewhile_2EOWHILE(A_27a),V0G),V1f),V2s) = ap(ap(ap(c_2Ebool_2ECOND(ty_2Eoption_2Eoption(A_27a)),ap(c_2Ebool_2E_3F(ty_2Enum_2Enum),f192(A_27a,V0G,V1f,V2s))),ap(c_2Eoption_2ESOME(A_27a),ap(ap(ap(c_2Earithmetic_2EFUNPOW(A_27a),V1f),ap(c_2Ewhile_2ELEAST,f193(A_27a,V0G,V1f,V2s))),V2s))),c_2Eoption_2ENONE(A_27a)) ) ) ) ) ).

tff(conj_thm_2Ewhile_2EOWHILE__THM,axiom,
    ! [A_27a: del,V0G: $i] :
      ( mem(V0G,arr(A_27a,bool))
     => ! [V1f: $i] :
          ( mem(V1f,arr(A_27a,A_27a))
         => ! [V2s: $i] :
              ( mem(V2s,A_27a)
             => ( ap(ap(ap(c_2Ewhile_2EOWHILE(A_27a),V0G),V1f),V2s) = ap(ap(ap(c_2Ebool_2ECOND(ty_2Eoption_2Eoption(A_27a)),ap(V0G,V2s)),ap(ap(ap(c_2Ewhile_2EOWHILE(A_27a),V0G),V1f),ap(V1f,V2s))),ap(c_2Eoption_2ESOME(A_27a),V2s)) ) ) ) ) ).

tff(conj_thm_2Ewhile_2EOWHILE__EQ__NONE,axiom,
    ! [A_27a: del,V0G: $i] :
      ( mem(V0G,arr(A_27a,bool))
     => ! [V1f: $i] :
          ( mem(V1f,arr(A_27a,A_27a))
         => ! [V2s: $i] :
              ( mem(V2s,A_27a)
             => ( ( ap(ap(ap(c_2Ewhile_2EOWHILE(A_27a),V0G),V1f),V2s) = c_2Eoption_2ENONE(A_27a) )
              <=> ! [V3n: tp__ty_2Enum_2Enum] : p(ap(V0G,ap(ap(ap(c_2Earithmetic_2EFUNPOW(A_27a),V1f),inj__ty_2Enum_2Enum(V3n)),V2s))) ) ) ) ) ).

tff(conj_thm_2Ewhile_2EOWHILE__ENDCOND,axiom,
    ! [A_27a: del,V0G: $i] :
      ( mem(V0G,arr(A_27a,bool))
     => ! [V1f: $i] :
          ( mem(V1f,arr(A_27a,A_27a))
         => ! [V2s: $i] :
              ( mem(V2s,A_27a)
             => ! [V3s_27: $i] :
                  ( mem(V3s_27,A_27a)
                 => ( ( ap(ap(ap(c_2Ewhile_2EOWHILE(A_27a),V0G),V1f),V2s) = ap(c_2Eoption_2ESOME(A_27a),V3s_27) )
                   => ~ p(ap(V0G,V3s_27)) ) ) ) ) ) ).

tff(conj_thm_2Ewhile_2EOWHILE__WHILE,axiom,
    ! [A_27a: del,V0G: $i] :
      ( mem(V0G,arr(A_27a,bool))
     => ! [V1f: $i] :
          ( mem(V1f,arr(A_27a,A_27a))
         => ! [V2s: $i] :
              ( mem(V2s,A_27a)
             => ! [V3s_27: $i] :
                  ( mem(V3s_27,A_27a)
                 => ( ( ap(ap(ap(c_2Ewhile_2EOWHILE(A_27a),V0G),V1f),V2s) = ap(c_2Eoption_2ESOME(A_27a),V3s_27) )
                   => ( ap(ap(ap(c_2Ewhile_2EWHILE(A_27a),V0G),V1f),V2s) = V3s_27 ) ) ) ) ) ) ).

tff(conj_thm_2Ewhile_2EOWHILE__INV__IND,axiom,
    ! [A_27a: del,V0P: $i] :
      ( mem(V0P,arr(A_27a,bool))
     => ! [V1G: $i] :
          ( mem(V1G,arr(A_27a,bool))
         => ! [V2f: $i] :
              ( mem(V2f,arr(A_27a,A_27a))
             => ! [V3s: $i] :
                  ( mem(V3s,A_27a)
                 => ( ( p(ap(V0P,V3s))
                      & ! [V4x: $i] :
                          ( mem(V4x,A_27a)
                         => ( ( p(ap(V0P,V4x))
                              & p(ap(V1G,V4x)) )
                           => p(ap(V0P,ap(V2f,V4x))) ) ) )
                   => ! [V5s_27: $i] :
                        ( mem(V5s_27,A_27a)
                       => ( ( ap(ap(ap(c_2Ewhile_2EOWHILE(A_27a),V1G),V2f),V3s) = ap(c_2Eoption_2ESOME(A_27a),V5s_27) )
                         => p(ap(V0P,V5s_27)) ) ) ) ) ) ) ) ).

tff(conj_thm_2Ewhile_2EOWHILE__IND,axiom,
    ! [A_27a: del,V0P: $i] :
      ( mem(V0P,arr(A_27a,arr(A_27a,bool)))
     => ! [V1G: $i] :
          ( mem(V1G,arr(A_27a,bool))
         => ! [V2f: $i] :
              ( mem(V2f,arr(A_27a,A_27a))
             => ( ( ! [V3s: $i] :
                      ( mem(V3s,A_27a)
                     => ( ~ p(ap(V1G,V3s))
                       => p(ap(ap(V0P,V3s),V3s)) ) )
                  & ! [V4s1: $i] :
                      ( mem(V4s1,A_27a)
                     => ! [V5s2: $i] :
                          ( mem(V5s2,A_27a)
                         => ( ( p(ap(V1G,V4s1))
                              & p(ap(ap(V0P,ap(V2f,V4s1)),V5s2)) )
                           => p(ap(ap(V0P,V4s1),V5s2)) ) ) ) )
               => ! [V6s1: $i] :
                    ( mem(V6s1,A_27a)
                   => ! [V7s2: $i] :
                        ( mem(V7s2,A_27a)
                       => ( ( ap(ap(ap(c_2Ewhile_2EOWHILE(A_27a),V1G),V2f),V6s1) = ap(c_2Eoption_2ESOME(A_27a),V7s2) )
                         => p(ap(ap(V0P,V6s1),V7s2)) ) ) ) ) ) ) ) ).

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