ITP001 Axioms: ITP019^5.ax


%------------------------------------------------------------------------------
% File     : ITP019^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    : while^2.ax [Gau20]
%          : HL4019^5.ax [TPAP]

% Status   : Satisfiable
% Syntax   : Number of formulae    :   42 (   2 unt;   8 typ;   0 def)
%            Number of atoms       :  655 (  23 equ;   0 cnn)
%            Maximal formula atoms :   46 (  15 avg)
%            Number of connectives : 1074 (  10   ~;   0   |;  19   &; 941   @)
%                                         (   5 <=>;  99  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   25 (  11 avg; 941 nst)
%            Number of types       :    2 (   1 usr)
%            Number of type conns  :    6 (   6   >;   0   *;   0   +;   0  <<)
%            Number of symbols     :   36 (  35 usr;  30 con; 0-2 aty)
%            Number of variables   :  119 (  13   ^ 102   !;   4   ?; 119   :)
% SPC      : TH0_SAT_EQU_NAR

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

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

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

thf(mem_c_2Ewhile_2ELEAST,axiom,
    mem @ c_2Ewhile_2ELEAST @ ( arr @ ( arr @ ty_2Enum_2Enum @ bool ) @ ty_2Enum_2Enum ) ).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

thf(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 )
                              @ ( lam @ A_27a
                                @ ^ [V5s: $i] : ( ap @ ( ap @ c_2Ebool_2E_2F_5C @ ( ap @ V0P @ V5s ) ) @ ( ap @ V2B @ V5s ) ) ) )
                            @ V3C )
                          @ V0P ) )
                     => ( p
                        @ ( ap @ ( ap @ ( ap @ ( c_2Ewhile_2EHOARE__SPEC @ A_27a @ A_27a ) @ V0P ) @ ( ap @ ( ap @ ( c_2Ewhile_2EWHILE @ A_27a ) @ V2B ) @ V3C ) )
                          @ ( lam @ A_27a
                            @ ^ [V6s: $i] : ( ap @ ( ap @ c_2Ebool_2E_2F_5C @ ( ap @ V0P @ V6s ) ) @ ( ap @ c_2Ebool_2E_7E @ ( ap @ V2B @ V6s ) ) ) ) ) ) ) ) ) ) ) ) ).

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

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

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

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

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

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

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

thf(conj_thm_2Ewhile_2ELEAST__EQ,axiom,
    ! [V0x: tp__ty_2Enum_2Enum] :
      ( ( ( surj__ty_2Enum_2Enum
          @ ( ap @ c_2Ewhile_2ELEAST
            @ ( lam @ ty_2Enum_2Enum
              @ ^ [V1n: $i] : ( ap @ ( ap @ ( c_2Emin_2E_3D @ ty_2Enum_2Enum ) @ V1n ) @ ( inj__ty_2Enum_2Enum @ V0x ) ) ) ) )
        = V0x )
      & ( ( surj__ty_2Enum_2Enum
          @ ( ap @ c_2Ewhile_2ELEAST
            @ ( lam @ ty_2Enum_2Enum
              @ ^ [V2n: $i] : ( ap @ ( ap @ ( c_2Emin_2E_3D @ ty_2Enum_2Enum ) @ ( inj__ty_2Enum_2Enum @ V0x ) ) @ V2n ) ) ) )
        = V0x ) ) ).

thf(conj_thm_2Ewhile_2ELEAST__T,axiom,
    ( ( surj__ty_2Enum_2Enum
      @ ( ap @ c_2Ewhile_2ELEAST
        @ ( lam @ ty_2Enum_2Enum
          @ ^ [V0x: $i] : c_2Ebool_2ET ) ) )
    = fo__c_2Enum_2E0 ) ).

thf(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 )
                  @ ( lam @ ty_2Enum_2Enum
                    @ ^ [V1n: $i] : ( ap @ V0P @ V1n ) ) ) )
              @ ( ap @ ( c_2Eoption_2ESOME @ ty_2Enum_2Enum )
                @ ( ap @ c_2Ewhile_2ELEAST
                  @ ( lam @ ty_2Enum_2Enum
                    @ ^ [V2n: $i] : ( ap @ V0P @ V2n ) ) ) ) )
            @ ( c_2Eoption_2ENONE @ ty_2Enum_2Enum ) ) ) ) ) ).

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

thf(conj_thm_2Ewhile_2EOLEAST__EQNS,axiom,
    ! [V0x: tp__ty_2Enum_2Enum] :
      ( ( ( surj__c_ty_2Eoption_2Eoption_ty_2Enum_2Enum
          @ ( ap @ c_2Ewhile_2EOLEAST
            @ ( lam @ ty_2Enum_2Enum
              @ ^ [V1n: $i] : ( ap @ ( ap @ ( c_2Emin_2E_3D @ ty_2Enum_2Enum ) @ V1n ) @ ( inj__ty_2Enum_2Enum @ 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
            @ ( lam @ ty_2Enum_2Enum
              @ ^ [V2n: $i] : ( ap @ ( ap @ ( c_2Emin_2E_3D @ ty_2Enum_2Enum ) @ ( inj__ty_2Enum_2Enum @ V0x ) ) @ V2n ) ) ) )
        = ( 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
            @ ( lam @ ty_2Enum_2Enum
              @ ^ [V3n: $i] : 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
            @ ( lam @ ty_2Enum_2Enum
              @ ^ [V4n: $i] : 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 ) ) ) ) ) ).

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

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

thf(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 )
                        @ ( lam @ ty_2Enum_2Enum
                          @ ^ [V3n: $i] : ( ap @ c_2Ebool_2E_7E @ ( ap @ V0G @ ( ap @ ( ap @ ( ap @ ( c_2Earithmetic_2EFUNPOW @ A_27a ) @ V1f ) @ V3n ) @ V2s ) ) ) ) ) )
                    @ ( ap @ ( c_2Eoption_2ESOME @ A_27a )
                      @ ( ap
                        @ ( ap @ ( ap @ ( c_2Earithmetic_2EFUNPOW @ A_27a ) @ V1f )
                          @ ( ap @ c_2Ewhile_2ELEAST
                            @ ( lam @ ty_2Enum_2Enum
                              @ ^ [V4n: $i] : ( ap @ c_2Ebool_2E_7E @ ( ap @ V0G @ ( ap @ ( ap @ ( ap @ ( c_2Earithmetic_2EFUNPOW @ A_27a ) @ V1f ) @ V4n ) @ V2s ) ) ) ) ) )
                        @ V2s ) ) )
                  @ ( c_2Eoption_2ENONE @ A_27a ) ) ) ) ) ) ).

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

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

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

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

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

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

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