ITP001 Axioms: ITP067^7.ax


%------------------------------------------------------------------------------
% File     : ITP067^7 : TPTP v9.0.0. Bugfixed v7.5.0.
% Domain   : Interactive Theorem Proving
% Axioms   : HOL4 syntactic export, chainy mode
% Version  : [BG+19] axioms.
% English  :

% Refs     : [BG+19] Brown et al. (2019), GRUNGE: A Grand Unified ATP Chall
%          : [Gau19] Gauthier (2019), Email to Geoff Sutcliffe
% Source   : [BG+19]
% Names    : mergesort.ax [Gau19]
%          : HL4067^7.ax [TPAP]

% Status   : Satisfiable
% Syntax   : Number of formulae    :   99 (  21 unt;  50 typ;   0 def)
%            Number of atoms       :  184 (  72 equ;  23 cnn)
%            Maximal formula atoms :   20 (   1 avg)
%            Number of connectives : 2138 (  23   ~;   1   |;  97   &;1970   @)
%                                         (  10 <=>;  37  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   30 (  10 avg;1970 nst)
%            Number of types       :    3 (   2 usr)
%            Number of type conns  :  356 ( 356   >;   0   *;   0   +;   0  <<)
%            Number of symbols     :   50 (  48 usr;   5 con; 0-6 aty)
%            Number of variables   :  458 (  27   ^ 395   !;   1   ?; 458   :)
%                                         (  35  !>;   0  ?*;   0  @-;   0  @+)
% SPC      : TH1_SAT_EQU_NAR

% Comments :
% Bugfixes : v7.5.0 - Fixes to the axioms.
%------------------------------------------------------------------------------
thf(tyop_2Elist_2Elist,type,
    tyop_2Elist_2Elist: $tType > $tType ).

thf(tyop_2Emin_2Ebool,type,
    tyop_2Emin_2Ebool: $tType ).

thf(tyop_2Emin_2Efun,type,
    tyop_2Emin_2Efun: $tType > $tType > $tType ).

thf(tyop_2Enum_2Enum,type,
    tyop_2Enum_2Enum: $tType ).

thf(c_2Ebool_2E_21,type,
    c_2Ebool_2E_21: 
      !>[A_27a: $tType] : ( ( A_27a > $o ) > $o ) ).

thf(c_2Earithmetic_2E_2D,type,
    c_2Earithmetic_2E_2D: tyop_2Enum_2Enum > tyop_2Enum_2Enum > tyop_2Enum_2Enum ).

thf(c_2Ebool_2E_2F_5C,type,
    c_2Ebool_2E_2F_5C: $o > $o > $o ).

thf(c_2Enum_2E0,type,
    c_2Enum_2E0: tyop_2Enum_2Enum ).

thf(c_2Emin_2E_3D,type,
    c_2Emin_2E_3D: 
      !>[A_27a: $tType] : ( A_27a > A_27a > $o ) ).

thf(c_2Emin_2E_3D_3D_3E,type,
    c_2Emin_2E_3D_3D_3E: $o > $o > $o ).

thf(c_2Ebool_2E_3F,type,
    c_2Ebool_2E_3F: 
      !>[A_27a: $tType] : ( ( A_27a > $o ) > $o ) ).

thf(c_2Elist_2EAPPEND,type,
    c_2Elist_2EAPPEND: 
      !>[A_27a: $tType] : ( ( tyop_2Elist_2Elist @ A_27a ) > ( tyop_2Elist_2Elist @ A_27a ) > ( tyop_2Elist_2Elist @ A_27a ) ) ).

thf(c_2Earithmetic_2EBIT1,type,
    c_2Earithmetic_2EBIT1: tyop_2Enum_2Enum > tyop_2Enum_2Enum ).

thf(c_2Earithmetic_2EBIT2,type,
    c_2Earithmetic_2EBIT2: tyop_2Enum_2Enum > tyop_2Enum_2Enum ).

thf(c_2Ebool_2ECOND,type,
    c_2Ebool_2ECOND: 
      !>[A_27a: $tType] : ( $o > A_27a > A_27a > A_27a ) ).

thf(c_2Elist_2ECONS,type,
    c_2Elist_2ECONS: 
      !>[A_27a: $tType] : ( A_27a > ( tyop_2Elist_2Elist @ A_27a ) > ( tyop_2Elist_2Elist @ A_27a ) ) ).

thf(c_2Earithmetic_2EDIV2,type,
    c_2Earithmetic_2EDIV2: tyop_2Enum_2Enum > tyop_2Enum_2Enum ).

thf(c_2Elist_2EDROP,type,
    c_2Elist_2EDROP: 
      !>[A_27a: $tType] : ( tyop_2Enum_2Enum > ( tyop_2Elist_2Elist @ A_27a ) > ( tyop_2Elist_2Elist @ A_27a ) ) ).

thf(c_2Ebool_2EF,type,
    c_2Ebool_2EF: $o ).

thf(c_2Elist_2EFILTER,type,
    c_2Elist_2EFILTER: 
      !>[A_27a: $tType] : ( ( A_27a > $o ) > ( tyop_2Elist_2Elist @ A_27a ) > ( tyop_2Elist_2Elist @ A_27a ) ) ).

thf(c_2Ebool_2EIN,type,
    c_2Ebool_2EIN: 
      !>[A_27a: $tType] : ( A_27a > ( A_27a > $o ) > $o ) ).

thf(c_2Elist_2ELENGTH,type,
    c_2Elist_2ELENGTH: 
      !>[A_27a: $tType] : ( ( tyop_2Elist_2Elist @ A_27a ) > tyop_2Enum_2Enum ) ).

thf(c_2Ebool_2ELET,type,
    c_2Ebool_2ELET: 
      !>[A_27a: $tType,A_27b: $tType] : ( ( A_27a > A_27b ) > A_27a > A_27b ) ).

thf(c_2Elist_2ELIST__TO__SET,type,
    c_2Elist_2ELIST__TO__SET: 
      !>[A_27a: $tType] : ( ( tyop_2Elist_2Elist @ A_27a ) > A_27a > $o ) ).

thf(c_2Elist_2ENIL,type,
    c_2Elist_2ENIL: 
      !>[A_27a: $tType] : ( tyop_2Elist_2Elist @ A_27a ) ).

thf(c_2Earithmetic_2ENUMERAL,type,
    c_2Earithmetic_2ENUMERAL: tyop_2Enum_2Enum > tyop_2Enum_2Enum ).

thf(c_2Esorting_2EPERM,type,
    c_2Esorting_2EPERM: 
      !>[A_27a: $tType] : ( ( tyop_2Elist_2Elist @ A_27a ) > ( tyop_2Elist_2Elist @ A_27a ) > $o ) ).

thf(c_2Elist_2EREV,type,
    c_2Elist_2EREV: 
      !>[A_27a: $tType] : ( ( tyop_2Elist_2Elist @ A_27a ) > ( tyop_2Elist_2Elist @ A_27a ) > ( tyop_2Elist_2Elist @ A_27a ) ) ).

thf(c_2Elist_2EREVERSE,type,
    c_2Elist_2EREVERSE: 
      !>[A_27a: $tType] : ( ( tyop_2Elist_2Elist @ A_27a ) > ( tyop_2Elist_2Elist @ A_27a ) ) ).

thf(c_2Esorting_2ESORTED,type,
    c_2Esorting_2ESORTED: 
      !>[A_27a: $tType] : ( ( A_27a > A_27a > $o ) > ( tyop_2Elist_2Elist @ A_27a ) > $o ) ).

thf(c_2Esorting_2ESTABLE,type,
    c_2Esorting_2ESTABLE: 
      !>[A_27a: $tType] : ( ( ( A_27a > A_27a > $o ) > ( tyop_2Elist_2Elist @ A_27a ) > ( tyop_2Elist_2Elist @ A_27a ) ) > ( A_27a > A_27a > $o ) > $o ) ).

thf(c_2Ebool_2ET,type,
    c_2Ebool_2ET: $o ).

thf(c_2Elist_2ETAKE,type,
    c_2Elist_2ETAKE: 
      !>[A_27a: $tType] : ( tyop_2Enum_2Enum > ( tyop_2Elist_2Elist @ A_27a ) > ( tyop_2Elist_2Elist @ A_27a ) ) ).

thf(c_2Earithmetic_2EZERO,type,
    c_2Earithmetic_2EZERO: tyop_2Enum_2Enum ).

thf(c_2Ebool_2E_5C_2F,type,
    c_2Ebool_2E_5C_2F: $o > $o > $o ).

thf(c_2Elist_2Elist__CASE,type,
    c_2Elist_2Elist__CASE: 
      !>[A_27a: $tType,A_27b: $tType] : ( ( tyop_2Elist_2Elist @ A_27a ) > A_27b > ( A_27a > ( tyop_2Elist_2Elist @ A_27a ) > A_27b ) > A_27b ) ).

thf(c_2Emergesort_2Emerge,type,
    c_2Emergesort_2Emerge: 
      !>[A_27a: $tType] : ( ( A_27a > A_27a > $o ) > ( tyop_2Elist_2Elist @ A_27a ) > ( tyop_2Elist_2Elist @ A_27a ) > ( tyop_2Elist_2Elist @ A_27a ) ) ).

thf(c_2Emergesort_2Emerge__tail,type,
    c_2Emergesort_2Emerge__tail: 
      !>[A_27a: $tType] : ( $o > ( A_27a > A_27a > $o ) > ( tyop_2Elist_2Elist @ A_27a ) > ( tyop_2Elist_2Elist @ A_27a ) > ( tyop_2Elist_2Elist @ A_27a ) > ( tyop_2Elist_2Elist @ A_27a ) ) ).

thf(c_2Emergesort_2Emergesort,type,
    c_2Emergesort_2Emergesort: 
      !>[A_27a: $tType] : ( ( A_27a > A_27a > $o ) > ( tyop_2Elist_2Elist @ A_27a ) > ( tyop_2Elist_2Elist @ A_27a ) ) ).

thf(c_2Emergesort_2EmergesortN,type,
    c_2Emergesort_2EmergesortN: 
      !>[A_27a: $tType] : ( ( A_27a > A_27a > $o ) > tyop_2Enum_2Enum > ( tyop_2Elist_2Elist @ A_27a ) > ( tyop_2Elist_2Elist @ A_27a ) ) ).

thf(c_2Emergesort_2EmergesortN__tail,type,
    c_2Emergesort_2EmergesortN__tail: 
      !>[A_27a: $tType] : ( $o > ( A_27a > A_27a > $o ) > tyop_2Enum_2Enum > ( tyop_2Elist_2Elist @ A_27a ) > ( tyop_2Elist_2Elist @ A_27a ) ) ).

thf(c_2Emergesort_2Emergesort__tail,type,
    c_2Emergesort_2Emergesort__tail: 
      !>[A_27a: $tType] : ( ( A_27a > A_27a > $o ) > ( tyop_2Elist_2Elist @ A_27a ) > ( tyop_2Elist_2Elist @ A_27a ) ) ).

thf(c_2Emergesort_2Esort2,type,
    c_2Emergesort_2Esort2: 
      !>[A_27a: $tType] : ( ( A_27a > A_27a > $o ) > A_27a > A_27a > ( tyop_2Elist_2Elist @ A_27a ) ) ).

thf(c_2Emergesort_2Esort2__tail,type,
    c_2Emergesort_2Esort2__tail: 
      !>[A_27a: $tType] : ( $o > ( A_27a > A_27a > $o ) > A_27a > A_27a > ( tyop_2Elist_2Elist @ A_27a ) ) ).

thf(c_2Emergesort_2Esort3,type,
    c_2Emergesort_2Esort3: 
      !>[A_27a: $tType] : ( ( A_27a > A_27a > $o ) > A_27a > A_27a > A_27a > ( tyop_2Elist_2Elist @ A_27a ) ) ).

thf(c_2Emergesort_2Esort3__tail,type,
    c_2Emergesort_2Esort3__tail: 
      !>[A_27a: $tType] : ( $o > ( A_27a > A_27a > $o ) > A_27a > A_27a > A_27a > ( tyop_2Elist_2Elist @ A_27a ) ) ).

thf(c_2Emergesort_2Estable,type,
    c_2Emergesort_2Estable: 
      !>[A_27a: $tType] : ( ( A_27a > A_27a > $o ) > ( tyop_2Elist_2Elist @ A_27a ) > ( tyop_2Elist_2Elist @ A_27a ) > $o ) ).

thf(c_2Erelation_2Etotal,type,
    c_2Erelation_2Etotal: 
      !>[A_27a: $tType] : ( ( A_27a > A_27a > $o ) > $o ) ).

thf(c_2Erelation_2Etransitive,type,
    c_2Erelation_2Etransitive: 
      !>[A_27a: $tType] : ( ( A_27a > A_27a > $o ) > $o ) ).

thf(c_2Ebool_2E_7E,type,
    c_2Ebool_2E_7E: $o > $o ).

thf(logicdef_2E_2F_5C,axiom,
    ! [V0: $o,V1: $o] :
      ( ( c_2Ebool_2E_2F_5C @ V0 @ V1 )
    <=> ( V0
        & V1 ) ) ).

thf(logicdef_2E_5C_2F,axiom,
    ! [V0: $o,V1: $o] :
      ( ( c_2Ebool_2E_5C_2F @ V0 @ V1 )
    <=> ( V0
        | V1 ) ) ).

thf(logicdef_2E_7E,axiom,
    ! [V0: $o] :
      ( ( c_2Ebool_2E_7E @ V0 )
    <=> ( (~) @ V0 ) ) ).

thf(logicdef_2E_3D_3D_3E,axiom,
    ! [V0: $o,V1: $o] :
      ( ( c_2Emin_2E_3D_3D_3E @ V0 @ V1 )
    <=> ( V0
       => V1 ) ) ).

thf(logicdef_2E_3D,axiom,
    ! [A_27a: $tType,V0: A_27a,V1: A_27a] :
      ( ( c_2Emin_2E_3D @ A_27a @ V0 @ V1 )
    <=> ( V0 = V1 ) ) ).

thf(quantdef_2E_21,axiom,
    ! [A_27a: $tType,V0f: A_27a > $o] :
      ( ( c_2Ebool_2E_21 @ A_27a @ V0f )
    <=> ! [V1x: A_27a] : ( V0f @ V1x ) ) ).

thf(quantdef_2E_3F,axiom,
    ! [A_27a: $tType,V0f: A_27a > $o] :
      ( ( c_2Ebool_2E_3F @ A_27a @ V0f )
    <=> ? [V1x: A_27a] : ( V0f @ V1x ) ) ).

thf(thm_2Emergesort_2Estable__def,axiom,
    ! [A_27a: $tType,V0R: A_27a > A_27a > $o,V1l1: tyop_2Elist_2Elist @ A_27a,V2l2: tyop_2Elist_2Elist @ A_27a] :
      ( ( c_2Emergesort_2Estable @ A_27a @ V0R @ V1l1 @ V2l2 )
    <=> ! [V3p: A_27a > $o] :
          ( ! [V4x: A_27a,V5y: A_27a] :
              ( ( ( V3p @ V4x )
                & ( V3p @ V5y ) )
             => ( V0R @ V4x @ V5y ) )
         => ( ( c_2Elist_2EFILTER @ A_27a @ V3p @ V1l1 )
            = ( c_2Elist_2EFILTER @ A_27a @ V3p @ V2l2 ) ) ) ) ).

thf(thm_2Emergesort_2Esort2__def,axiom,
    ! [A_27a: $tType,V0R: A_27a > A_27a > $o,V1x: A_27a,V2y: A_27a] :
      ( ( c_2Emergesort_2Esort2 @ A_27a @ V0R @ V1x @ V2y )
      = ( c_2Ebool_2ECOND @ ( tyop_2Elist_2Elist @ A_27a ) @ ( V0R @ V1x @ V2y ) @ ( c_2Elist_2ECONS @ A_27a @ V1x @ ( c_2Elist_2ECONS @ A_27a @ V2y @ ( c_2Elist_2ENIL @ A_27a ) ) ) @ ( c_2Elist_2ECONS @ A_27a @ V2y @ ( c_2Elist_2ECONS @ A_27a @ V1x @ ( c_2Elist_2ENIL @ A_27a ) ) ) ) ) ).

thf(thm_2Emergesort_2Esort3__def,axiom,
    ! [A_27a: $tType,V0R: A_27a > A_27a > $o,V1x: A_27a,V2y: A_27a,V3z: A_27a] :
      ( ( c_2Emergesort_2Esort3 @ A_27a @ V0R @ V1x @ V2y @ V3z )
      = ( c_2Ebool_2ECOND @ ( tyop_2Elist_2Elist @ A_27a ) @ ( V0R @ V1x @ V2y ) @ ( c_2Ebool_2ECOND @ ( tyop_2Elist_2Elist @ A_27a ) @ ( V0R @ V2y @ V3z ) @ ( c_2Elist_2ECONS @ A_27a @ V1x @ ( c_2Elist_2ECONS @ A_27a @ V2y @ ( c_2Elist_2ECONS @ A_27a @ V3z @ ( c_2Elist_2ENIL @ A_27a ) ) ) ) @ ( c_2Ebool_2ECOND @ ( tyop_2Elist_2Elist @ A_27a ) @ ( V0R @ V1x @ V3z ) @ ( c_2Elist_2ECONS @ A_27a @ V1x @ ( c_2Elist_2ECONS @ A_27a @ V3z @ ( c_2Elist_2ECONS @ A_27a @ V2y @ ( c_2Elist_2ENIL @ A_27a ) ) ) ) @ ( c_2Elist_2ECONS @ A_27a @ V3z @ ( c_2Elist_2ECONS @ A_27a @ V1x @ ( c_2Elist_2ECONS @ A_27a @ V2y @ ( c_2Elist_2ENIL @ A_27a ) ) ) ) ) ) @ ( c_2Ebool_2ECOND @ ( tyop_2Elist_2Elist @ A_27a ) @ ( V0R @ V2y @ V3z ) @ ( c_2Ebool_2ECOND @ ( tyop_2Elist_2Elist @ A_27a ) @ ( V0R @ V1x @ V3z ) @ ( c_2Elist_2ECONS @ A_27a @ V2y @ ( c_2Elist_2ECONS @ A_27a @ V1x @ ( c_2Elist_2ECONS @ A_27a @ V3z @ ( c_2Elist_2ENIL @ A_27a ) ) ) ) @ ( c_2Elist_2ECONS @ A_27a @ V2y @ ( c_2Elist_2ECONS @ A_27a @ V3z @ ( c_2Elist_2ECONS @ A_27a @ V1x @ ( c_2Elist_2ENIL @ A_27a ) ) ) ) ) @ ( c_2Elist_2ECONS @ A_27a @ V3z @ ( c_2Elist_2ECONS @ A_27a @ V2y @ ( c_2Elist_2ECONS @ A_27a @ V1x @ ( c_2Elist_2ENIL @ A_27a ) ) ) ) ) ) ) ).

thf(thm_2Emergesort_2Emergesort__def,axiom,
    ! [A_27a: $tType,V0R: A_27a > A_27a > $o,V1l: tyop_2Elist_2Elist @ A_27a] :
      ( ( c_2Emergesort_2Emergesort @ A_27a @ V0R @ V1l )
      = ( c_2Emergesort_2EmergesortN @ A_27a @ V0R @ ( c_2Elist_2ELENGTH @ A_27a @ V1l ) @ V1l ) ) ).

thf(thm_2Emergesort_2Esort2__tail__def,axiom,
    ! [A_27a: $tType,V0neg: $o,V1R: A_27a > A_27a > $o,V2x: A_27a,V3y: A_27a] :
      ( ( c_2Emergesort_2Esort2__tail @ A_27a @ V0neg @ V1R @ V2x @ V3y )
      = ( c_2Ebool_2ECOND @ ( tyop_2Elist_2Elist @ A_27a ) @ ( c_2Ebool_2E_7E @ ( c_2Emin_2E_3D @ $o @ ( V1R @ V2x @ V3y ) @ V0neg ) ) @ ( c_2Elist_2ECONS @ A_27a @ V2x @ ( c_2Elist_2ECONS @ A_27a @ V3y @ ( c_2Elist_2ENIL @ A_27a ) ) ) @ ( c_2Elist_2ECONS @ A_27a @ V3y @ ( c_2Elist_2ECONS @ A_27a @ V2x @ ( c_2Elist_2ENIL @ A_27a ) ) ) ) ) ).

thf(thm_2Emergesort_2Esort3__tail__def,axiom,
    ! [A_27a: $tType,V0neg: $o,V1R: A_27a > A_27a > $o,V2x: A_27a,V3y: A_27a,V4z: A_27a] :
      ( ( c_2Emergesort_2Esort3__tail @ A_27a @ V0neg @ V1R @ V2x @ V3y @ V4z )
      = ( c_2Ebool_2ECOND @ ( tyop_2Elist_2Elist @ A_27a ) @ ( c_2Ebool_2E_7E @ ( c_2Emin_2E_3D @ $o @ ( V1R @ V2x @ V3y ) @ V0neg ) ) @ ( c_2Ebool_2ECOND @ ( tyop_2Elist_2Elist @ A_27a ) @ ( c_2Ebool_2E_7E @ ( c_2Emin_2E_3D @ $o @ ( V1R @ V3y @ V4z ) @ V0neg ) ) @ ( c_2Elist_2ECONS @ A_27a @ V2x @ ( c_2Elist_2ECONS @ A_27a @ V3y @ ( c_2Elist_2ECONS @ A_27a @ V4z @ ( c_2Elist_2ENIL @ A_27a ) ) ) ) @ ( c_2Ebool_2ECOND @ ( tyop_2Elist_2Elist @ A_27a ) @ ( c_2Ebool_2E_7E @ ( c_2Emin_2E_3D @ $o @ ( V1R @ V2x @ V4z ) @ V0neg ) ) @ ( c_2Elist_2ECONS @ A_27a @ V2x @ ( c_2Elist_2ECONS @ A_27a @ V4z @ ( c_2Elist_2ECONS @ A_27a @ V3y @ ( c_2Elist_2ENIL @ A_27a ) ) ) ) @ ( c_2Elist_2ECONS @ A_27a @ V4z @ ( c_2Elist_2ECONS @ A_27a @ V2x @ ( c_2Elist_2ECONS @ A_27a @ V3y @ ( c_2Elist_2ENIL @ A_27a ) ) ) ) ) ) @ ( c_2Ebool_2ECOND @ ( tyop_2Elist_2Elist @ A_27a ) @ ( c_2Ebool_2E_7E @ ( c_2Emin_2E_3D @ $o @ ( V1R @ V3y @ V4z ) @ V0neg ) ) @ ( c_2Ebool_2ECOND @ ( tyop_2Elist_2Elist @ A_27a ) @ ( c_2Ebool_2E_7E @ ( c_2Emin_2E_3D @ $o @ ( V1R @ V2x @ V4z ) @ V0neg ) ) @ ( c_2Elist_2ECONS @ A_27a @ V3y @ ( c_2Elist_2ECONS @ A_27a @ V2x @ ( c_2Elist_2ECONS @ A_27a @ V4z @ ( c_2Elist_2ENIL @ A_27a ) ) ) ) @ ( c_2Elist_2ECONS @ A_27a @ V3y @ ( c_2Elist_2ECONS @ A_27a @ V4z @ ( c_2Elist_2ECONS @ A_27a @ V2x @ ( c_2Elist_2ENIL @ A_27a ) ) ) ) ) @ ( c_2Elist_2ECONS @ A_27a @ V4z @ ( c_2Elist_2ECONS @ A_27a @ V3y @ ( c_2Elist_2ECONS @ A_27a @ V2x @ ( c_2Elist_2ENIL @ A_27a ) ) ) ) ) ) ) ).

thf(thm_2Emergesort_2Emergesort__tail__def,axiom,
    ! [A_27a: $tType,V0R: A_27a > A_27a > $o,V1l: tyop_2Elist_2Elist @ A_27a] :
      ( ( c_2Emergesort_2Emergesort__tail @ A_27a @ V0R @ V1l )
      = ( c_2Emergesort_2EmergesortN__tail @ A_27a @ c_2Ebool_2EF @ V0R @ ( c_2Elist_2ELENGTH @ A_27a @ V1l ) @ V1l ) ) ).

thf(thm_2Emergesort_2Emerge__ind,axiom,
    ! [A_27a: $tType,V0P: ( A_27a > A_27a > $o ) > ( tyop_2Elist_2Elist @ A_27a ) > ( tyop_2Elist_2Elist @ A_27a ) > $o] :
      ( ( ! [V1R: A_27a > A_27a > $o] : ( V0P @ V1R @ ( c_2Elist_2ENIL @ A_27a ) @ ( c_2Elist_2ENIL @ A_27a ) )
        & ! [V2R: A_27a > A_27a > $o,V3v8: A_27a,V4v9: tyop_2Elist_2Elist @ A_27a] : ( V0P @ V2R @ ( c_2Elist_2ECONS @ A_27a @ V3v8 @ V4v9 ) @ ( c_2Elist_2ENIL @ A_27a ) )
        & ! [V5R: A_27a > A_27a > $o,V6v4: A_27a,V7v5: tyop_2Elist_2Elist @ A_27a] : ( V0P @ V5R @ ( c_2Elist_2ENIL @ A_27a ) @ ( c_2Elist_2ECONS @ A_27a @ V6v4 @ V7v5 ) )
        & ! [V8R: A_27a > A_27a > $o,V9x: A_27a,V10l1: tyop_2Elist_2Elist @ A_27a,V11y: A_27a,V12l2: tyop_2Elist_2Elist @ A_27a] :
            ( ( ( ( (~) @ ( V8R @ V9x @ V11y ) )
               => ( V0P @ V8R @ ( c_2Elist_2ECONS @ A_27a @ V9x @ V10l1 ) @ V12l2 ) )
              & ( ( V8R @ V9x @ V11y )
               => ( V0P @ V8R @ V10l1 @ ( c_2Elist_2ECONS @ A_27a @ V11y @ V12l2 ) ) ) )
           => ( V0P @ V8R @ ( c_2Elist_2ECONS @ A_27a @ V9x @ V10l1 ) @ ( c_2Elist_2ECONS @ A_27a @ V11y @ V12l2 ) ) ) )
     => ! [V13v: A_27a > A_27a > $o,V14v1: tyop_2Elist_2Elist @ A_27a,V15v2: tyop_2Elist_2Elist @ A_27a] : ( V0P @ V13v @ V14v1 @ V15v2 ) ) ).

thf(thm_2Emergesort_2Emerge__def,axiom,
    ! [A_27a: $tType] :
      ( ! [V0R: A_27a > A_27a > $o] :
          ( ( c_2Emergesort_2Emerge @ A_27a @ V0R @ ( c_2Elist_2ENIL @ A_27a ) @ ( c_2Elist_2ENIL @ A_27a ) )
          = ( c_2Elist_2ENIL @ A_27a ) )
      & ! [V1v9: tyop_2Elist_2Elist @ A_27a,V2v8: A_27a,V3R: A_27a > A_27a > $o] :
          ( ( c_2Emergesort_2Emerge @ A_27a @ V3R @ ( c_2Elist_2ECONS @ A_27a @ V2v8 @ V1v9 ) @ ( c_2Elist_2ENIL @ A_27a ) )
          = ( c_2Elist_2ECONS @ A_27a @ V2v8 @ V1v9 ) )
      & ! [V4v5: tyop_2Elist_2Elist @ A_27a,V5v4: A_27a,V6R: A_27a > A_27a > $o] :
          ( ( c_2Emergesort_2Emerge @ A_27a @ V6R @ ( c_2Elist_2ENIL @ A_27a ) @ ( c_2Elist_2ECONS @ A_27a @ V5v4 @ V4v5 ) )
          = ( c_2Elist_2ECONS @ A_27a @ V5v4 @ V4v5 ) )
      & ! [V7y: A_27a,V8x: A_27a,V9l2: tyop_2Elist_2Elist @ A_27a,V10l1: tyop_2Elist_2Elist @ A_27a,V11R: A_27a > A_27a > $o] :
          ( ( c_2Emergesort_2Emerge @ A_27a @ V11R @ ( c_2Elist_2ECONS @ A_27a @ V8x @ V10l1 ) @ ( c_2Elist_2ECONS @ A_27a @ V7y @ V9l2 ) )
          = ( c_2Ebool_2ECOND @ ( tyop_2Elist_2Elist @ A_27a ) @ ( V11R @ V8x @ V7y ) @ ( c_2Elist_2ECONS @ A_27a @ V8x @ ( c_2Emergesort_2Emerge @ A_27a @ V11R @ V10l1 @ ( c_2Elist_2ECONS @ A_27a @ V7y @ V9l2 ) ) ) @ ( c_2Elist_2ECONS @ A_27a @ V7y @ ( c_2Emergesort_2Emerge @ A_27a @ V11R @ ( c_2Elist_2ECONS @ A_27a @ V8x @ V10l1 ) @ V9l2 ) ) ) ) ) ).

thf(thm_2Emergesort_2EmergesortN__ind,axiom,
    ! [A_27a: $tType,V0P: ( A_27a > A_27a > $o ) > tyop_2Enum_2Enum > ( tyop_2Elist_2Elist @ A_27a ) > $o] :
      ( ( ! [V1R: A_27a > A_27a > $o,V2l: tyop_2Elist_2Elist @ A_27a] : ( V0P @ V1R @ c_2Enum_2E0 @ V2l )
        & ! [V3R: A_27a > A_27a > $o,V4x: A_27a,V5l: tyop_2Elist_2Elist @ A_27a] : ( V0P @ V3R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) @ ( c_2Elist_2ECONS @ A_27a @ V4x @ V5l ) )
        & ! [V6R: A_27a > A_27a > $o] : ( V0P @ V6R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) @ ( c_2Elist_2ENIL @ A_27a ) )
        & ! [V7R: A_27a > A_27a > $o,V8x: A_27a,V9y: A_27a,V10l: tyop_2Elist_2Elist @ A_27a] : ( V0P @ V7R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT2 @ c_2Earithmetic_2EZERO ) ) @ ( c_2Elist_2ECONS @ A_27a @ V8x @ ( c_2Elist_2ECONS @ A_27a @ V9y @ V10l ) ) )
        & ! [V11R: A_27a > A_27a > $o,V12x: A_27a] : ( V0P @ V11R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT2 @ c_2Earithmetic_2EZERO ) ) @ ( c_2Elist_2ECONS @ A_27a @ V12x @ ( c_2Elist_2ENIL @ A_27a ) ) )
        & ! [V13R: A_27a > A_27a > $o] : ( V0P @ V13R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT2 @ c_2Earithmetic_2EZERO ) ) @ ( c_2Elist_2ENIL @ A_27a ) )
        & ! [V14R: A_27a > A_27a > $o,V15x: A_27a,V16y: A_27a,V17z: A_27a,V18l: tyop_2Elist_2Elist @ A_27a] : ( V0P @ V14R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) ) @ ( c_2Elist_2ECONS @ A_27a @ V15x @ ( c_2Elist_2ECONS @ A_27a @ V16y @ ( c_2Elist_2ECONS @ A_27a @ V17z @ V18l ) ) ) )
        & ! [V19R: A_27a > A_27a > $o,V20x: A_27a,V21y: A_27a] : ( V0P @ V19R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) ) @ ( c_2Elist_2ECONS @ A_27a @ V20x @ ( c_2Elist_2ECONS @ A_27a @ V21y @ ( c_2Elist_2ENIL @ A_27a ) ) ) )
        & ! [V22R: A_27a > A_27a > $o,V23x: A_27a] : ( V0P @ V22R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) ) @ ( c_2Elist_2ECONS @ A_27a @ V23x @ ( c_2Elist_2ENIL @ A_27a ) ) )
        & ! [V24R: A_27a > A_27a > $o] : ( V0P @ V24R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) ) @ ( c_2Elist_2ENIL @ A_27a ) )
        & ! [V25R: A_27a > A_27a > $o,V26v4: tyop_2Enum_2Enum,V27l: tyop_2Elist_2Elist @ A_27a] :
            ( ( ! [V28len1: tyop_2Enum_2Enum] :
                  ( ( ( (~) @ ( V26v4 = c_2Enum_2E0 ) )
                    & ( (~)
                      @ ( V26v4
                        = ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) ) )
                    & ( (~)
                      @ ( V26v4
                        = ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT2 @ c_2Earithmetic_2EZERO ) ) ) )
                    & ( (~)
                      @ ( V26v4
                        = ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) ) ) )
                    & ( V28len1
                      = ( c_2Earithmetic_2EDIV2 @ V26v4 ) ) )
                 => ( V0P @ V25R @ ( c_2Earithmetic_2EDIV2 @ V26v4 ) @ V27l ) )
              & ! [V29len1: tyop_2Enum_2Enum] :
                  ( ( ( (~) @ ( V26v4 = c_2Enum_2E0 ) )
                    & ( (~)
                      @ ( V26v4
                        = ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) ) )
                    & ( (~)
                      @ ( V26v4
                        = ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT2 @ c_2Earithmetic_2EZERO ) ) ) )
                    & ( (~)
                      @ ( V26v4
                        = ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) ) ) )
                    & ( V29len1
                      = ( c_2Earithmetic_2EDIV2 @ V26v4 ) ) )
                 => ( V0P @ V25R @ ( c_2Earithmetic_2E_2D @ V26v4 @ V29len1 ) @ ( c_2Elist_2EDROP @ A_27a @ V29len1 @ V27l ) ) ) )
           => ( V0P @ V25R @ V26v4 @ V27l ) ) )
     => ! [V30v: A_27a > A_27a > $o,V31v1: tyop_2Enum_2Enum,V32v2: tyop_2Elist_2Elist @ A_27a] : ( V0P @ V30v @ V31v1 @ V32v2 ) ) ).

thf(thm_2Emergesort_2EmergesortN__def,axiom,
    ! [A_27a: $tType] :
      ( ! [V0l: tyop_2Elist_2Elist @ A_27a,V1R: A_27a > A_27a > $o] :
          ( ( c_2Emergesort_2EmergesortN @ A_27a @ V1R @ c_2Enum_2E0 @ V0l )
          = ( c_2Elist_2ENIL @ A_27a ) )
      & ! [V2x: A_27a,V3l: tyop_2Elist_2Elist @ A_27a,V4R: A_27a > A_27a > $o] :
          ( ( c_2Emergesort_2EmergesortN @ A_27a @ V4R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) @ ( c_2Elist_2ECONS @ A_27a @ V2x @ V3l ) )
          = ( c_2Elist_2ECONS @ A_27a @ V2x @ ( c_2Elist_2ENIL @ A_27a ) ) )
      & ! [V5R: A_27a > A_27a > $o] :
          ( ( c_2Emergesort_2EmergesortN @ A_27a @ V5R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) @ ( c_2Elist_2ENIL @ A_27a ) )
          = ( c_2Elist_2ENIL @ A_27a ) )
      & ! [V6y: A_27a,V7x: A_27a,V8l: tyop_2Elist_2Elist @ A_27a,V9R: A_27a > A_27a > $o] :
          ( ( c_2Emergesort_2EmergesortN @ A_27a @ V9R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT2 @ c_2Earithmetic_2EZERO ) ) @ ( c_2Elist_2ECONS @ A_27a @ V7x @ ( c_2Elist_2ECONS @ A_27a @ V6y @ V8l ) ) )
          = ( c_2Emergesort_2Esort2 @ A_27a @ V9R @ V7x @ V6y ) )
      & ! [V10x: A_27a,V11R: A_27a > A_27a > $o] :
          ( ( c_2Emergesort_2EmergesortN @ A_27a @ V11R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT2 @ c_2Earithmetic_2EZERO ) ) @ ( c_2Elist_2ECONS @ A_27a @ V10x @ ( c_2Elist_2ENIL @ A_27a ) ) )
          = ( c_2Elist_2ECONS @ A_27a @ V10x @ ( c_2Elist_2ENIL @ A_27a ) ) )
      & ! [V12R: A_27a > A_27a > $o] :
          ( ( c_2Emergesort_2EmergesortN @ A_27a @ V12R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT2 @ c_2Earithmetic_2EZERO ) ) @ ( c_2Elist_2ENIL @ A_27a ) )
          = ( c_2Elist_2ENIL @ A_27a ) )
      & ! [V13z: A_27a,V14y: A_27a,V15x: A_27a,V16l: tyop_2Elist_2Elist @ A_27a,V17R: A_27a > A_27a > $o] :
          ( ( c_2Emergesort_2EmergesortN @ A_27a @ V17R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) ) @ ( c_2Elist_2ECONS @ A_27a @ V15x @ ( c_2Elist_2ECONS @ A_27a @ V14y @ ( c_2Elist_2ECONS @ A_27a @ V13z @ V16l ) ) ) )
          = ( c_2Emergesort_2Esort3 @ A_27a @ V17R @ V15x @ V14y @ V13z ) )
      & ! [V18y: A_27a,V19x: A_27a,V20R: A_27a > A_27a > $o] :
          ( ( c_2Emergesort_2EmergesortN @ A_27a @ V20R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) ) @ ( c_2Elist_2ECONS @ A_27a @ V19x @ ( c_2Elist_2ECONS @ A_27a @ V18y @ ( c_2Elist_2ENIL @ A_27a ) ) ) )
          = ( c_2Emergesort_2Esort2 @ A_27a @ V20R @ V19x @ V18y ) )
      & ! [V21x: A_27a,V22R: A_27a > A_27a > $o] :
          ( ( c_2Emergesort_2EmergesortN @ A_27a @ V22R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) ) @ ( c_2Elist_2ECONS @ A_27a @ V21x @ ( c_2Elist_2ENIL @ A_27a ) ) )
          = ( c_2Elist_2ECONS @ A_27a @ V21x @ ( c_2Elist_2ENIL @ A_27a ) ) )
      & ! [V23R: A_27a > A_27a > $o] :
          ( ( c_2Emergesort_2EmergesortN @ A_27a @ V23R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) ) @ ( c_2Elist_2ENIL @ A_27a ) )
          = ( c_2Elist_2ENIL @ A_27a ) )
      & ! [V24v4: tyop_2Enum_2Enum,V25l: tyop_2Elist_2Elist @ A_27a,V26R: A_27a > A_27a > $o] :
          ( ( c_2Emergesort_2EmergesortN @ A_27a @ V26R @ V24v4 @ V25l )
          = ( c_2Ebool_2ECOND @ ( tyop_2Elist_2Elist @ A_27a ) @ ( c_2Emin_2E_3D @ tyop_2Enum_2Enum @ V24v4 @ c_2Enum_2E0 ) @ ( c_2Elist_2ENIL @ A_27a )
            @ ( c_2Ebool_2ECOND @ ( tyop_2Elist_2Elist @ A_27a ) @ ( c_2Emin_2E_3D @ tyop_2Enum_2Enum @ V24v4 @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) )
              @ ( c_2Elist_2Elist__CASE @ A_27a @ ( tyop_2Elist_2Elist @ A_27a ) @ V25l @ ( c_2Elist_2ENIL @ A_27a )
                @ ^ [V27x: A_27a,V28l_27: tyop_2Elist_2Elist @ A_27a] : ( c_2Elist_2ECONS @ A_27a @ V27x @ ( c_2Elist_2ENIL @ A_27a ) ) )
              @ ( c_2Ebool_2ECOND @ ( tyop_2Elist_2Elist @ A_27a ) @ ( c_2Emin_2E_3D @ tyop_2Enum_2Enum @ V24v4 @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT2 @ c_2Earithmetic_2EZERO ) ) )
                @ ( c_2Elist_2Elist__CASE @ A_27a @ ( tyop_2Elist_2Elist @ A_27a ) @ V25l @ ( c_2Elist_2ENIL @ A_27a )
                  @ ^ [V29x_27: A_27a,V30v17: tyop_2Elist_2Elist @ A_27a] :
                      ( c_2Elist_2Elist__CASE @ A_27a @ ( tyop_2Elist_2Elist @ A_27a ) @ V30v17 @ ( c_2Elist_2ECONS @ A_27a @ V29x_27 @ ( c_2Elist_2ENIL @ A_27a ) )
                      @ ^ [V31y: A_27a,V32l_27_27: tyop_2Elist_2Elist @ A_27a] : ( c_2Emergesort_2Esort2 @ A_27a @ V26R @ V29x_27 @ V31y ) ) )
                @ ( c_2Ebool_2ECOND @ ( tyop_2Elist_2Elist @ A_27a ) @ ( c_2Emin_2E_3D @ tyop_2Enum_2Enum @ V24v4 @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) ) )
                  @ ( c_2Elist_2Elist__CASE @ A_27a @ ( tyop_2Elist_2Elist @ A_27a ) @ V25l @ ( c_2Elist_2ENIL @ A_27a )
                    @ ^ [V33x_27_27: A_27a,V34v25: tyop_2Elist_2Elist @ A_27a] :
                        ( c_2Elist_2Elist__CASE @ A_27a @ ( tyop_2Elist_2Elist @ A_27a ) @ V34v25 @ ( c_2Elist_2ECONS @ A_27a @ V33x_27_27 @ ( c_2Elist_2ENIL @ A_27a ) )
                        @ ^ [V35y_27: A_27a,V36v29: tyop_2Elist_2Elist @ A_27a] :
                            ( c_2Elist_2Elist__CASE @ A_27a @ ( tyop_2Elist_2Elist @ A_27a ) @ V36v29 @ ( c_2Emergesort_2Esort2 @ A_27a @ V26R @ V33x_27_27 @ V35y_27 )
                            @ ^ [V37z: A_27a,V38l_27_27_27: tyop_2Elist_2Elist @ A_27a] : ( c_2Emergesort_2Esort3 @ A_27a @ V26R @ V33x_27_27 @ V35y_27 @ V37z ) ) ) )
                  @ ( c_2Ebool_2ELET @ tyop_2Enum_2Enum @ ( tyop_2Elist_2Elist @ A_27a )
                    @ ^ [V39len1: tyop_2Enum_2Enum] : ( c_2Emergesort_2Emerge @ A_27a @ V26R @ ( c_2Emergesort_2EmergesortN @ A_27a @ V26R @ ( c_2Earithmetic_2EDIV2 @ V24v4 ) @ V25l ) @ ( c_2Emergesort_2EmergesortN @ A_27a @ V26R @ ( c_2Earithmetic_2E_2D @ V24v4 @ V39len1 ) @ ( c_2Elist_2EDROP @ A_27a @ V39len1 @ V25l ) ) )
                    @ ( c_2Earithmetic_2EDIV2 @ V24v4 ) ) ) ) ) ) ) ) ).

thf(thm_2Emergesort_2Emerge__tail__ind,axiom,
    ! [A_27a: $tType,V0P: $o > ( A_27a > A_27a > $o ) > ( tyop_2Elist_2Elist @ A_27a ) > ( tyop_2Elist_2Elist @ A_27a ) > ( tyop_2Elist_2Elist @ A_27a ) > $o] :
      ( ( ! [V1negate: $o,V2R: A_27a > A_27a > $o,V3acc: tyop_2Elist_2Elist @ A_27a] : ( V0P @ V1negate @ V2R @ ( c_2Elist_2ENIL @ A_27a ) @ ( c_2Elist_2ENIL @ A_27a ) @ V3acc )
        & ! [V4negate: $o,V5R: A_27a > A_27a > $o,V6v12: A_27a,V7v13: tyop_2Elist_2Elist @ A_27a,V8acc: tyop_2Elist_2Elist @ A_27a] : ( V0P @ V4negate @ V5R @ ( c_2Elist_2ECONS @ A_27a @ V6v12 @ V7v13 ) @ ( c_2Elist_2ENIL @ A_27a ) @ V8acc )
        & ! [V9negate: $o,V10R: A_27a > A_27a > $o,V11v8: A_27a,V12v9: tyop_2Elist_2Elist @ A_27a,V13acc: tyop_2Elist_2Elist @ A_27a] : ( V0P @ V9negate @ V10R @ ( c_2Elist_2ENIL @ A_27a ) @ ( c_2Elist_2ECONS @ A_27a @ V11v8 @ V12v9 ) @ V13acc )
        & ! [V14negate: $o,V15R: A_27a > A_27a > $o,V16x: A_27a,V17l1: tyop_2Elist_2Elist @ A_27a,V18y: A_27a,V19l2: tyop_2Elist_2Elist @ A_27a,V20acc: tyop_2Elist_2Elist @ A_27a] :
            ( ( ( ( (~)
                  @ ( (~)
                    @ ( ( V15R @ V16x @ V18y )
                      = V14negate ) ) )
               => ( V0P @ V14negate @ V15R @ ( c_2Elist_2ECONS @ A_27a @ V16x @ V17l1 ) @ V19l2 @ ( c_2Elist_2ECONS @ A_27a @ V18y @ V20acc ) ) )
              & ( ( (~)
                  @ ( ( V15R @ V16x @ V18y )
                    = V14negate ) )
               => ( V0P @ V14negate @ V15R @ V17l1 @ ( c_2Elist_2ECONS @ A_27a @ V18y @ V19l2 ) @ ( c_2Elist_2ECONS @ A_27a @ V16x @ V20acc ) ) ) )
           => ( V0P @ V14negate @ V15R @ ( c_2Elist_2ECONS @ A_27a @ V16x @ V17l1 ) @ ( c_2Elist_2ECONS @ A_27a @ V18y @ V19l2 ) @ V20acc ) ) )
     => ! [V21v: $o,V22v1: A_27a > A_27a > $o,V23v2: tyop_2Elist_2Elist @ A_27a,V24v3: tyop_2Elist_2Elist @ A_27a,V25v4: tyop_2Elist_2Elist @ A_27a] : ( V0P @ V21v @ V22v1 @ V23v2 @ V24v3 @ V25v4 ) ) ).

thf(thm_2Emergesort_2Emerge__tail__def,axiom,
    ! [A_27a: $tType] :
      ( ! [V0negate: $o,V1acc: tyop_2Elist_2Elist @ A_27a,V2R: A_27a > A_27a > $o] :
          ( ( c_2Emergesort_2Emerge__tail @ A_27a @ V0negate @ V2R @ ( c_2Elist_2ENIL @ A_27a ) @ ( c_2Elist_2ENIL @ A_27a ) @ V1acc )
          = V1acc )
      & ! [V3v13: tyop_2Elist_2Elist @ A_27a,V4v12: A_27a,V5negate: $o,V6acc: tyop_2Elist_2Elist @ A_27a,V7R: A_27a > A_27a > $o] :
          ( ( c_2Emergesort_2Emerge__tail @ A_27a @ V5negate @ V7R @ ( c_2Elist_2ECONS @ A_27a @ V4v12 @ V3v13 ) @ ( c_2Elist_2ENIL @ A_27a ) @ V6acc )
          = ( c_2Elist_2EREV @ A_27a @ ( c_2Elist_2ECONS @ A_27a @ V4v12 @ V3v13 ) @ V6acc ) )
      & ! [V8v9: tyop_2Elist_2Elist @ A_27a,V9v8: A_27a,V10negate: $o,V11acc: tyop_2Elist_2Elist @ A_27a,V12R: A_27a > A_27a > $o] :
          ( ( c_2Emergesort_2Emerge__tail @ A_27a @ V10negate @ V12R @ ( c_2Elist_2ENIL @ A_27a ) @ ( c_2Elist_2ECONS @ A_27a @ V9v8 @ V8v9 ) @ V11acc )
          = ( c_2Elist_2EREV @ A_27a @ ( c_2Elist_2ECONS @ A_27a @ V9v8 @ V8v9 ) @ V11acc ) )
      & ! [V13y: A_27a,V14x: A_27a,V15negate: $o,V16l2: tyop_2Elist_2Elist @ A_27a,V17l1: tyop_2Elist_2Elist @ A_27a,V18acc: tyop_2Elist_2Elist @ A_27a,V19R: A_27a > A_27a > $o] :
          ( ( c_2Emergesort_2Emerge__tail @ A_27a @ V15negate @ V19R @ ( c_2Elist_2ECONS @ A_27a @ V14x @ V17l1 ) @ ( c_2Elist_2ECONS @ A_27a @ V13y @ V16l2 ) @ V18acc )
          = ( c_2Ebool_2ECOND @ ( tyop_2Elist_2Elist @ A_27a ) @ ( c_2Ebool_2E_7E @ ( c_2Emin_2E_3D @ $o @ ( V19R @ V14x @ V13y ) @ V15negate ) ) @ ( c_2Emergesort_2Emerge__tail @ A_27a @ V15negate @ V19R @ V17l1 @ ( c_2Elist_2ECONS @ A_27a @ V13y @ V16l2 ) @ ( c_2Elist_2ECONS @ A_27a @ V14x @ V18acc ) ) @ ( c_2Emergesort_2Emerge__tail @ A_27a @ V15negate @ V19R @ ( c_2Elist_2ECONS @ A_27a @ V14x @ V17l1 ) @ V16l2 @ ( c_2Elist_2ECONS @ A_27a @ V13y @ V18acc ) ) ) ) ) ).

thf(thm_2Emergesort_2EmergesortN__tail__ind,axiom,
    ! [A_27a: $tType,V0P: $o > ( A_27a > A_27a > $o ) > tyop_2Enum_2Enum > ( tyop_2Elist_2Elist @ A_27a ) > $o] :
      ( ( ! [V1negate: $o,V2R: A_27a > A_27a > $o,V3l: tyop_2Elist_2Elist @ A_27a] : ( V0P @ V1negate @ V2R @ c_2Enum_2E0 @ V3l )
        & ! [V4negate: $o,V5R: A_27a > A_27a > $o,V6x: A_27a,V7l: tyop_2Elist_2Elist @ A_27a] : ( V0P @ V4negate @ V5R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) @ ( c_2Elist_2ECONS @ A_27a @ V6x @ V7l ) )
        & ! [V8negate: $o,V9R: A_27a > A_27a > $o] : ( V0P @ V8negate @ V9R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) @ ( c_2Elist_2ENIL @ A_27a ) )
        & ! [V10negate: $o,V11R: A_27a > A_27a > $o,V12x: A_27a,V13y: A_27a,V14l: tyop_2Elist_2Elist @ A_27a] : ( V0P @ V10negate @ V11R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT2 @ c_2Earithmetic_2EZERO ) ) @ ( c_2Elist_2ECONS @ A_27a @ V12x @ ( c_2Elist_2ECONS @ A_27a @ V13y @ V14l ) ) )
        & ! [V15negate: $o,V16R: A_27a > A_27a > $o,V17x: A_27a] : ( V0P @ V15negate @ V16R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT2 @ c_2Earithmetic_2EZERO ) ) @ ( c_2Elist_2ECONS @ A_27a @ V17x @ ( c_2Elist_2ENIL @ A_27a ) ) )
        & ! [V18negate: $o,V19R: A_27a > A_27a > $o] : ( V0P @ V18negate @ V19R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT2 @ c_2Earithmetic_2EZERO ) ) @ ( c_2Elist_2ENIL @ A_27a ) )
        & ! [V20negate: $o,V21R: A_27a > A_27a > $o,V22x: A_27a,V23y: A_27a,V24z: A_27a,V25l: tyop_2Elist_2Elist @ A_27a] : ( V0P @ V20negate @ V21R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) ) @ ( c_2Elist_2ECONS @ A_27a @ V22x @ ( c_2Elist_2ECONS @ A_27a @ V23y @ ( c_2Elist_2ECONS @ A_27a @ V24z @ V25l ) ) ) )
        & ! [V26negate: $o,V27R: A_27a > A_27a > $o,V28x: A_27a,V29y: A_27a] : ( V0P @ V26negate @ V27R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) ) @ ( c_2Elist_2ECONS @ A_27a @ V28x @ ( c_2Elist_2ECONS @ A_27a @ V29y @ ( c_2Elist_2ENIL @ A_27a ) ) ) )
        & ! [V30negate: $o,V31R: A_27a > A_27a > $o,V32x: A_27a] : ( V0P @ V30negate @ V31R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) ) @ ( c_2Elist_2ECONS @ A_27a @ V32x @ ( c_2Elist_2ENIL @ A_27a ) ) )
        & ! [V33negate: $o,V34R: A_27a > A_27a > $o] : ( V0P @ V33negate @ V34R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) ) @ ( c_2Elist_2ENIL @ A_27a ) )
        & ! [V35negate: $o,V36R: A_27a > A_27a > $o,V37v6: tyop_2Enum_2Enum,V38l: tyop_2Elist_2Elist @ A_27a] :
            ( ( ! [V39len1: tyop_2Enum_2Enum,V40neg: $o] :
                  ( ( ( (~) @ ( V37v6 = c_2Enum_2E0 ) )
                    & ( (~)
                      @ ( V37v6
                        = ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) ) )
                    & ( (~)
                      @ ( V37v6
                        = ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT2 @ c_2Earithmetic_2EZERO ) ) ) )
                    & ( (~)
                      @ ( V37v6
                        = ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) ) ) )
                    & ( V39len1
                      = ( c_2Earithmetic_2EDIV2 @ V37v6 ) )
                    & ( V40neg
                    <=> ( (~) @ V35negate ) ) )
                 => ( V0P @ V40neg @ V36R @ ( c_2Earithmetic_2EDIV2 @ V37v6 ) @ V38l ) )
              & ! [V41len1: tyop_2Enum_2Enum,V42neg: $o] :
                  ( ( ( (~) @ ( V37v6 = c_2Enum_2E0 ) )
                    & ( (~)
                      @ ( V37v6
                        = ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) ) )
                    & ( (~)
                      @ ( V37v6
                        = ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT2 @ c_2Earithmetic_2EZERO ) ) ) )
                    & ( (~)
                      @ ( V37v6
                        = ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) ) ) )
                    & ( V41len1
                      = ( c_2Earithmetic_2EDIV2 @ V37v6 ) )
                    & ( V42neg
                    <=> ( (~) @ V35negate ) ) )
                 => ( V0P @ V42neg @ V36R @ ( c_2Earithmetic_2E_2D @ V37v6 @ V41len1 ) @ ( c_2Elist_2EDROP @ A_27a @ V41len1 @ V38l ) ) ) )
           => ( V0P @ V35negate @ V36R @ V37v6 @ V38l ) ) )
     => ! [V43v: $o,V44v1: A_27a > A_27a > $o,V45v2: tyop_2Enum_2Enum,V46v3: tyop_2Elist_2Elist @ A_27a] : ( V0P @ V43v @ V44v1 @ V45v2 @ V46v3 ) ) ).

thf(thm_2Emergesort_2EmergesortN__tail__def,axiom,
    ! [A_27a: $tType] :
      ( ! [V0negate: $o,V1l: tyop_2Elist_2Elist @ A_27a,V2R: A_27a > A_27a > $o] :
          ( ( c_2Emergesort_2EmergesortN__tail @ A_27a @ V0negate @ V2R @ c_2Enum_2E0 @ V1l )
          = ( c_2Elist_2ENIL @ A_27a ) )
      & ! [V3x: A_27a,V4negate: $o,V5l: tyop_2Elist_2Elist @ A_27a,V6R: A_27a > A_27a > $o] :
          ( ( c_2Emergesort_2EmergesortN__tail @ A_27a @ V4negate @ V6R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) @ ( c_2Elist_2ECONS @ A_27a @ V3x @ V5l ) )
          = ( c_2Elist_2ECONS @ A_27a @ V3x @ ( c_2Elist_2ENIL @ A_27a ) ) )
      & ! [V7negate: $o,V8R: A_27a > A_27a > $o] :
          ( ( c_2Emergesort_2EmergesortN__tail @ A_27a @ V7negate @ V8R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) @ ( c_2Elist_2ENIL @ A_27a ) )
          = ( c_2Elist_2ENIL @ A_27a ) )
      & ! [V9y: A_27a,V10x: A_27a,V11negate: $o,V12l: tyop_2Elist_2Elist @ A_27a,V13R: A_27a > A_27a > $o] :
          ( ( c_2Emergesort_2EmergesortN__tail @ A_27a @ V11negate @ V13R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT2 @ c_2Earithmetic_2EZERO ) ) @ ( c_2Elist_2ECONS @ A_27a @ V10x @ ( c_2Elist_2ECONS @ A_27a @ V9y @ V12l ) ) )
          = ( c_2Emergesort_2Esort2__tail @ A_27a @ V11negate @ V13R @ V10x @ V9y ) )
      & ! [V14x: A_27a,V15negate: $o,V16R: A_27a > A_27a > $o] :
          ( ( c_2Emergesort_2EmergesortN__tail @ A_27a @ V15negate @ V16R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT2 @ c_2Earithmetic_2EZERO ) ) @ ( c_2Elist_2ECONS @ A_27a @ V14x @ ( c_2Elist_2ENIL @ A_27a ) ) )
          = ( c_2Elist_2ECONS @ A_27a @ V14x @ ( c_2Elist_2ENIL @ A_27a ) ) )
      & ! [V17negate: $o,V18R: A_27a > A_27a > $o] :
          ( ( c_2Emergesort_2EmergesortN__tail @ A_27a @ V17negate @ V18R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT2 @ c_2Earithmetic_2EZERO ) ) @ ( c_2Elist_2ENIL @ A_27a ) )
          = ( c_2Elist_2ENIL @ A_27a ) )
      & ! [V19z: A_27a,V20y: A_27a,V21x: A_27a,V22negate: $o,V23l: tyop_2Elist_2Elist @ A_27a,V24R: A_27a > A_27a > $o] :
          ( ( c_2Emergesort_2EmergesortN__tail @ A_27a @ V22negate @ V24R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) ) @ ( c_2Elist_2ECONS @ A_27a @ V21x @ ( c_2Elist_2ECONS @ A_27a @ V20y @ ( c_2Elist_2ECONS @ A_27a @ V19z @ V23l ) ) ) )
          = ( c_2Emergesort_2Esort3__tail @ A_27a @ V22negate @ V24R @ V21x @ V20y @ V19z ) )
      & ! [V25y: A_27a,V26x: A_27a,V27negate: $o,V28R: A_27a > A_27a > $o] :
          ( ( c_2Emergesort_2EmergesortN__tail @ A_27a @ V27negate @ V28R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) ) @ ( c_2Elist_2ECONS @ A_27a @ V26x @ ( c_2Elist_2ECONS @ A_27a @ V25y @ ( c_2Elist_2ENIL @ A_27a ) ) ) )
          = ( c_2Emergesort_2Esort2__tail @ A_27a @ V27negate @ V28R @ V26x @ V25y ) )
      & ! [V29x: A_27a,V30negate: $o,V31R: A_27a > A_27a > $o] :
          ( ( c_2Emergesort_2EmergesortN__tail @ A_27a @ V30negate @ V31R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) ) @ ( c_2Elist_2ECONS @ A_27a @ V29x @ ( c_2Elist_2ENIL @ A_27a ) ) )
          = ( c_2Elist_2ECONS @ A_27a @ V29x @ ( c_2Elist_2ENIL @ A_27a ) ) )
      & ! [V32negate: $o,V33R: A_27a > A_27a > $o] :
          ( ( c_2Emergesort_2EmergesortN__tail @ A_27a @ V32negate @ V33R @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) ) @ ( c_2Elist_2ENIL @ A_27a ) )
          = ( c_2Elist_2ENIL @ A_27a ) )
      & ! [V34v6: tyop_2Enum_2Enum,V35negate: $o,V36l: tyop_2Elist_2Elist @ A_27a,V37R: A_27a > A_27a > $o] :
          ( ( c_2Emergesort_2EmergesortN__tail @ A_27a @ V35negate @ V37R @ V34v6 @ V36l )
          = ( c_2Ebool_2ECOND @ ( tyop_2Elist_2Elist @ A_27a ) @ ( c_2Emin_2E_3D @ tyop_2Enum_2Enum @ V34v6 @ c_2Enum_2E0 ) @ ( c_2Elist_2ENIL @ A_27a )
            @ ( c_2Ebool_2ECOND @ ( tyop_2Elist_2Elist @ A_27a ) @ ( c_2Emin_2E_3D @ tyop_2Enum_2Enum @ V34v6 @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) )
              @ ( c_2Elist_2Elist__CASE @ A_27a @ ( tyop_2Elist_2Elist @ A_27a ) @ V36l @ ( c_2Elist_2ENIL @ A_27a )
                @ ^ [V38x: A_27a,V39l_27: tyop_2Elist_2Elist @ A_27a] : ( c_2Elist_2ECONS @ A_27a @ V38x @ ( c_2Elist_2ENIL @ A_27a ) ) )
              @ ( c_2Ebool_2ECOND @ ( tyop_2Elist_2Elist @ A_27a ) @ ( c_2Emin_2E_3D @ tyop_2Enum_2Enum @ V34v6 @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT2 @ c_2Earithmetic_2EZERO ) ) )
                @ ( c_2Elist_2Elist__CASE @ A_27a @ ( tyop_2Elist_2Elist @ A_27a ) @ V36l @ ( c_2Elist_2ENIL @ A_27a )
                  @ ^ [V40x_27: A_27a,V41v19: tyop_2Elist_2Elist @ A_27a] :
                      ( c_2Elist_2Elist__CASE @ A_27a @ ( tyop_2Elist_2Elist @ A_27a ) @ V41v19 @ ( c_2Elist_2ECONS @ A_27a @ V40x_27 @ ( c_2Elist_2ENIL @ A_27a ) )
                      @ ^ [V42y: A_27a,V43l_27_27: tyop_2Elist_2Elist @ A_27a] : ( c_2Emergesort_2Esort2__tail @ A_27a @ V35negate @ V37R @ V40x_27 @ V42y ) ) )
                @ ( c_2Ebool_2ECOND @ ( tyop_2Elist_2Elist @ A_27a ) @ ( c_2Emin_2E_3D @ tyop_2Enum_2Enum @ V34v6 @ ( c_2Earithmetic_2ENUMERAL @ ( c_2Earithmetic_2EBIT1 @ ( c_2Earithmetic_2EBIT1 @ c_2Earithmetic_2EZERO ) ) ) )
                  @ ( c_2Elist_2Elist__CASE @ A_27a @ ( tyop_2Elist_2Elist @ A_27a ) @ V36l @ ( c_2Elist_2ENIL @ A_27a )
                    @ ^ [V44x_27_27: A_27a,V45v27: tyop_2Elist_2Elist @ A_27a] :
                        ( c_2Elist_2Elist__CASE @ A_27a @ ( tyop_2Elist_2Elist @ A_27a ) @ V45v27 @ ( c_2Elist_2ECONS @ A_27a @ V44x_27_27 @ ( c_2Elist_2ENIL @ A_27a ) )
                        @ ^ [V46y_27: A_27a,V47v31: tyop_2Elist_2Elist @ A_27a] :
                            ( c_2Elist_2Elist__CASE @ A_27a @ ( tyop_2Elist_2Elist @ A_27a ) @ V47v31 @ ( c_2Emergesort_2Esort2__tail @ A_27a @ V35negate @ V37R @ V44x_27_27 @ V46y_27 )
                            @ ^ [V48z: A_27a,V49l_27_27_27: tyop_2Elist_2Elist @ A_27a] : ( c_2Emergesort_2Esort3__tail @ A_27a @ V35negate @ V37R @ V44x_27_27 @ V46y_27 @ V48z ) ) ) )
                  @ ( c_2Ebool_2ELET @ tyop_2Enum_2Enum @ ( tyop_2Elist_2Elist @ A_27a )
                    @ ^ [V50len1: tyop_2Enum_2Enum] :
                        ( c_2Ebool_2ELET @ $o @ ( tyop_2Elist_2Elist @ A_27a )
                        @ ^ [V51neg: $o] : ( c_2Emergesort_2Emerge__tail @ A_27a @ V51neg @ V37R @ ( c_2Emergesort_2EmergesortN__tail @ A_27a @ V51neg @ V37R @ ( c_2Earithmetic_2EDIV2 @ V34v6 ) @ V36l ) @ ( c_2Emergesort_2EmergesortN__tail @ A_27a @ V51neg @ V37R @ ( c_2Earithmetic_2E_2D @ V34v6 @ V50len1 ) @ ( c_2Elist_2EDROP @ A_27a @ V50len1 @ V36l ) ) @ ( c_2Elist_2ENIL @ A_27a ) )
                        @ ( c_2Ebool_2E_7E @ V35negate ) )
                    @ ( c_2Earithmetic_2EDIV2 @ V34v6 ) ) ) ) ) ) ) ) ).

thf(thm_2Emergesort_2Esort2__perm,axiom,
    ! [A_27a: $tType,V0R: A_27a > A_27a > $o,V1x: A_27a,V2y: A_27a] : ( c_2Esorting_2EPERM @ A_27a @ ( c_2Elist_2ECONS @ A_27a @ V1x @ ( c_2Elist_2ECONS @ A_27a @ V2y @ ( c_2Elist_2ENIL @ A_27a ) ) ) @ ( c_2Emergesort_2Esort2 @ A_27a @ V0R @ V1x @ V2y ) ) ).

thf(thm_2Emergesort_2Esort3__perm,axiom,
    ! [A_27a: $tType,V0R: A_27a > A_27a > $o,V1x: A_27a,V2y: A_27a,V3z: A_27a] : ( c_2Esorting_2EPERM @ A_27a @ ( c_2Elist_2ECONS @ A_27a @ V1x @ ( c_2Elist_2ECONS @ A_27a @ V2y @ ( c_2Elist_2ECONS @ A_27a @ V3z @ ( c_2Elist_2ENIL @ A_27a ) ) ) ) @ ( c_2Emergesort_2Esort3 @ A_27a @ V0R @ V1x @ V2y @ V3z ) ) ).

thf(thm_2Emergesort_2Emerge__perm,axiom,
    ! [A_27a: $tType,V0R: A_27a > A_27a > $o,V1l1: tyop_2Elist_2Elist @ A_27a,V2l2: tyop_2Elist_2Elist @ A_27a] : ( c_2Esorting_2EPERM @ A_27a @ ( c_2Elist_2EAPPEND @ A_27a @ V1l1 @ V2l2 ) @ ( c_2Emergesort_2Emerge @ A_27a @ V0R @ V1l1 @ V2l2 ) ) ).

thf(thm_2Emergesort_2EmergesortN__perm,axiom,
    ! [A_27a: $tType,V0R: A_27a > A_27a > $o,V1n: tyop_2Enum_2Enum,V2l: tyop_2Elist_2Elist @ A_27a] : ( c_2Esorting_2EPERM @ A_27a @ ( c_2Elist_2ETAKE @ A_27a @ V1n @ V2l ) @ ( c_2Emergesort_2EmergesortN @ A_27a @ V0R @ V1n @ V2l ) ) ).

thf(thm_2Emergesort_2Emergesort__perm,axiom,
    ! [A_27a: $tType,V0R: A_27a > A_27a > $o,V1l: tyop_2Elist_2Elist @ A_27a] : ( c_2Esorting_2EPERM @ A_27a @ V1l @ ( c_2Emergesort_2Emergesort @ A_27a @ V0R @ V1l ) ) ).

thf(thm_2Emergesort_2Esort2__sorted,axiom,
    ! [A_27a: $tType,V0R: A_27a > A_27a > $o,V1x: A_27a,V2y: A_27a] :
      ( ( c_2Erelation_2Etotal @ A_27a @ V0R )
     => ( c_2Esorting_2ESORTED @ A_27a @ V0R @ ( c_2Emergesort_2Esort2 @ A_27a @ V0R @ V1x @ V2y ) ) ) ).

thf(thm_2Emergesort_2Esort3__sorted,axiom,
    ! [A_27a: $tType,V0R: A_27a > A_27a > $o,V1x: A_27a,V2y: A_27a,V3z: A_27a] :
      ( ( c_2Erelation_2Etotal @ A_27a @ V0R )
     => ( c_2Esorting_2ESORTED @ A_27a @ V0R @ ( c_2Emergesort_2Esort3 @ A_27a @ V0R @ V1x @ V2y @ V3z ) ) ) ).

thf(thm_2Emergesort_2Emerge__sorted,axiom,
    ! [A_27a: $tType,V0R: A_27a > A_27a > $o,V1l1: tyop_2Elist_2Elist @ A_27a,V2l2: tyop_2Elist_2Elist @ A_27a] :
      ( ( ( c_2Erelation_2Etransitive @ A_27a @ V0R )
        & ( c_2Erelation_2Etotal @ A_27a @ V0R )
        & ( c_2Esorting_2ESORTED @ A_27a @ V0R @ V1l1 )
        & ( c_2Esorting_2ESORTED @ A_27a @ V0R @ V2l2 ) )
     => ( c_2Esorting_2ESORTED @ A_27a @ V0R @ ( c_2Emergesort_2Emerge @ A_27a @ V0R @ V1l1 @ V2l2 ) ) ) ).

thf(thm_2Emergesort_2EmergesortN__sorted,axiom,
    ! [A_27a: $tType,V0R: A_27a > A_27a > $o,V1n: tyop_2Enum_2Enum,V2l: tyop_2Elist_2Elist @ A_27a] :
      ( ( ( c_2Erelation_2Etotal @ A_27a @ V0R )
        & ( c_2Erelation_2Etransitive @ A_27a @ V0R ) )
     => ( c_2Esorting_2ESORTED @ A_27a @ V0R @ ( c_2Emergesort_2EmergesortN @ A_27a @ V0R @ V1n @ V2l ) ) ) ).

thf(thm_2Emergesort_2Emergesort__sorted,axiom,
    ! [A_27a: $tType,V0R: A_27a > A_27a > $o,V1l: tyop_2Elist_2Elist @ A_27a] :
      ( ( ( c_2Erelation_2Etransitive @ A_27a @ V0R )
        & ( c_2Erelation_2Etotal @ A_27a @ V0R ) )
     => ( c_2Esorting_2ESORTED @ A_27a @ V0R @ ( c_2Emergesort_2Emergesort @ A_27a @ V0R @ V1l ) ) ) ).

thf(thm_2Emergesort_2Estable__cong,axiom,
    ! [A_27a: $tType,V0R: A_27a > A_27a > $o,V1l1: tyop_2Elist_2Elist @ A_27a,V2l2: tyop_2Elist_2Elist @ A_27a,V3l3: tyop_2Elist_2Elist @ A_27a,V4l4: tyop_2Elist_2Elist @ A_27a] :
      ( ( ( c_2Emergesort_2Estable @ A_27a @ V0R @ V1l1 @ V2l2 )
        & ( c_2Emergesort_2Estable @ A_27a @ V0R @ V3l3 @ V4l4 ) )
     => ( c_2Emergesort_2Estable @ A_27a @ V0R @ ( c_2Elist_2EAPPEND @ A_27a @ V1l1 @ V3l3 ) @ ( c_2Elist_2EAPPEND @ A_27a @ V2l2 @ V4l4 ) ) ) ).

thf(thm_2Emergesort_2Estable__trans,axiom,
    ! [A_27a: $tType,V0R: A_27a > A_27a > $o,V1l1: tyop_2Elist_2Elist @ A_27a,V2l2: tyop_2Elist_2Elist @ A_27a,V3l3: tyop_2Elist_2Elist @ A_27a] :
      ( ( ( c_2Emergesort_2Estable @ A_27a @ V0R @ V1l1 @ V2l2 )
        & ( c_2Emergesort_2Estable @ A_27a @ V0R @ V2l2 @ V3l3 ) )
     => ( c_2Emergesort_2Estable @ A_27a @ V0R @ V1l1 @ V3l3 ) ) ).

thf(thm_2Emergesort_2Esort2__stable,axiom,
    ! [A_27a: $tType,V0R: A_27a > A_27a > $o,V1x: A_27a,V2y: A_27a] : ( c_2Emergesort_2Estable @ A_27a @ V0R @ ( c_2Elist_2ECONS @ A_27a @ V1x @ ( c_2Elist_2ECONS @ A_27a @ V2y @ ( c_2Elist_2ENIL @ A_27a ) ) ) @ ( c_2Emergesort_2Esort2 @ A_27a @ V0R @ V1x @ V2y ) ) ).

thf(thm_2Emergesort_2Esort3__stable,axiom,
    ! [A_27a: $tType,V0R: A_27a > A_27a > $o,V1x: A_27a,V2y: A_27a,V3z: A_27a] :
      ( ( ( c_2Erelation_2Etotal @ A_27a @ V0R )
        & ( c_2Erelation_2Etransitive @ A_27a @ V0R ) )
     => ( c_2Emergesort_2Estable @ A_27a @ V0R @ ( c_2Elist_2ECONS @ A_27a @ V1x @ ( c_2Elist_2ECONS @ A_27a @ V2y @ ( c_2Elist_2ECONS @ A_27a @ V3z @ ( c_2Elist_2ENIL @ A_27a ) ) ) ) @ ( c_2Emergesort_2Esort3 @ A_27a @ V0R @ V1x @ V2y @ V3z ) ) ) ).

thf(thm_2Emergesort_2Efilter__merge,axiom,
    ! [A_27a: $tType,V0P: A_27a > $o,V1R: A_27a > A_27a > $o,V2l1: tyop_2Elist_2Elist @ A_27a,V3l2: tyop_2Elist_2Elist @ A_27a] :
      ( ( ( c_2Erelation_2Etransitive @ A_27a @ V1R )
        & ! [V4x: A_27a,V5y: A_27a] :
            ( ( ( V0P @ V4x )
              & ( V0P @ V5y ) )
           => ( V1R @ V4x @ V5y ) )
        & ( c_2Esorting_2ESORTED @ A_27a @ V1R @ V2l1 ) )
     => ( ( c_2Elist_2EFILTER @ A_27a @ V0P @ ( c_2Emergesort_2Emerge @ A_27a @ V1R @ V2l1 @ V3l2 ) )
        = ( c_2Elist_2EFILTER @ A_27a @ V0P @ ( c_2Elist_2EAPPEND @ A_27a @ V2l1 @ V3l2 ) ) ) ) ).

thf(thm_2Emergesort_2Emerge__stable,axiom,
    ! [A_27a: $tType,V0R: A_27a > A_27a > $o,V1l1: tyop_2Elist_2Elist @ A_27a,V2l2: tyop_2Elist_2Elist @ A_27a] :
      ( ( ( c_2Erelation_2Etransitive @ A_27a @ V0R )
        & ( c_2Esorting_2ESORTED @ A_27a @ V0R @ V1l1 ) )
     => ( c_2Emergesort_2Estable @ A_27a @ V0R @ ( c_2Elist_2EAPPEND @ A_27a @ V1l1 @ V2l2 ) @ ( c_2Emergesort_2Emerge @ A_27a @ V0R @ V1l1 @ V2l2 ) ) ) ).

thf(thm_2Emergesort_2EmergesortN__stable,axiom,
    ! [A_27a: $tType,V0R: A_27a > A_27a > $o,V1n: tyop_2Enum_2Enum,V2l: tyop_2Elist_2Elist @ A_27a] :
      ( ( ( c_2Erelation_2Etotal @ A_27a @ V0R )
        & ( c_2Erelation_2Etransitive @ A_27a @ V0R ) )
     => ( c_2Emergesort_2Estable @ A_27a @ V0R @ ( c_2Elist_2ETAKE @ A_27a @ V1n @ V2l ) @ ( c_2Emergesort_2EmergesortN @ A_27a @ V0R @ V1n @ V2l ) ) ) ).

thf(thm_2Emergesort_2Emergesort__stable,axiom,
    ! [A_27a: $tType,V0R: A_27a > A_27a > $o,V1l: tyop_2Elist_2Elist @ A_27a] :
      ( ( ( c_2Erelation_2Etransitive @ A_27a @ V0R )
        & ( c_2Erelation_2Etotal @ A_27a @ V0R ) )
     => ( c_2Emergesort_2Estable @ A_27a @ V0R @ V1l @ ( c_2Emergesort_2Emergesort @ A_27a @ V0R @ V1l ) ) ) ).

thf(thm_2Emergesort_2Emergesort__STABLE__SORT,axiom,
    ! [A_27a: $tType,V0R: A_27a > A_27a > $o] :
      ( ( ( c_2Erelation_2Etransitive @ A_27a @ V0R )
        & ( c_2Erelation_2Etotal @ A_27a @ V0R ) )
     => ( c_2Esorting_2ESTABLE @ A_27a @ ( c_2Emergesort_2Emergesort @ A_27a ) @ V0R ) ) ).

thf(thm_2Emergesort_2Emergesort__mem,axiom,
    ! [A_27a: $tType,V0R: A_27a > A_27a > $o,V1L: tyop_2Elist_2Elist @ A_27a,V2x: A_27a] :
      ( ( c_2Ebool_2EIN @ A_27a @ V2x @ ( c_2Elist_2ELIST__TO__SET @ A_27a @ ( c_2Emergesort_2Emergesort @ A_27a @ V0R @ V1L ) ) )
      = ( c_2Ebool_2EIN @ A_27a @ V2x @ ( c_2Elist_2ELIST__TO__SET @ A_27a @ V1L ) ) ) ).

thf(thm_2Emergesort_2Esort2__tail__correct,axiom,
    ! [A_27a: $tType,V0neg: $o,V1R: A_27a > A_27a > $o,V2x: A_27a,V3y: A_27a] :
      ( ( c_2Emergesort_2Esort2__tail @ A_27a @ V0neg @ V1R @ V2x @ V3y )
      = ( c_2Ebool_2ECOND @ ( tyop_2Elist_2Elist @ A_27a ) @ V0neg @ ( c_2Elist_2EREVERSE @ A_27a @ ( c_2Emergesort_2Esort2 @ A_27a @ V1R @ V2x @ V3y ) ) @ ( c_2Emergesort_2Esort2 @ A_27a @ V1R @ V2x @ V3y ) ) ) ).

thf(thm_2Emergesort_2Esort3__tail__correct,axiom,
    ! [A_27a: $tType,V0neg: $o,V1R: A_27a > A_27a > $o,V2x: A_27a,V3y: A_27a,V4z: A_27a] :
      ( ( c_2Emergesort_2Esort3__tail @ A_27a @ V0neg @ V1R @ V2x @ V3y @ V4z )
      = ( c_2Ebool_2ECOND @ ( tyop_2Elist_2Elist @ A_27a ) @ V0neg @ ( c_2Elist_2EREVERSE @ A_27a @ ( c_2Emergesort_2Esort3 @ A_27a @ V1R @ V2x @ V3y @ V4z ) ) @ ( c_2Emergesort_2Esort3 @ A_27a @ V1R @ V2x @ V3y @ V4z ) ) ) ).

thf(thm_2Emergesort_2Emerge__tail__correct1,axiom,
    ! [A_27a: $tType,V0neg: $o,V1R: A_27a > A_27a > $o,V2l1: tyop_2Elist_2Elist @ A_27a,V3l2: tyop_2Elist_2Elist @ A_27a,V4acc: tyop_2Elist_2Elist @ A_27a] :
      ( ( V0neg = c_2Ebool_2EF )
     => ( ( c_2Emergesort_2Emerge__tail @ A_27a @ V0neg @ V1R @ V2l1 @ V3l2 @ V4acc )
        = ( c_2Elist_2EAPPEND @ A_27a @ ( c_2Elist_2EREVERSE @ A_27a @ ( c_2Emergesort_2Emerge @ A_27a @ V1R @ V2l1 @ V3l2 ) ) @ V4acc ) ) ) ).

thf(thm_2Emergesort_2Emerge__empty,axiom,
    ! [A_27a: $tType,A_27b: $tType,V0R: A_27a > A_27a > $o,V1l: tyop_2Elist_2Elist @ A_27a,V2acc: A_27b] :
      ( ( ( c_2Emergesort_2Emerge @ A_27a @ V0R @ V1l @ ( c_2Elist_2ENIL @ A_27a ) )
        = V1l )
      & ( ( c_2Emergesort_2Emerge @ A_27a @ V0R @ ( c_2Elist_2ENIL @ A_27a ) @ V1l )
        = V1l ) ) ).

thf(thm_2Emergesort_2Emerge__tail__correct2,axiom,
    ! [A_27a: $tType,V0neg: $o,V1R: A_27a > A_27a > $o,V2l1: tyop_2Elist_2Elist @ A_27a,V3l2: tyop_2Elist_2Elist @ A_27a,V4acc: tyop_2Elist_2Elist @ A_27a] :
      ( ( ( V0neg = c_2Ebool_2ET )
        & ( c_2Erelation_2Etransitive @ A_27a @ V1R )
        & ( c_2Esorting_2ESORTED @ A_27a @ V1R @ ( c_2Elist_2EREVERSE @ A_27a @ V2l1 ) )
        & ( c_2Esorting_2ESORTED @ A_27a @ V1R @ ( c_2Elist_2EREVERSE @ A_27a @ V3l2 ) ) )
     => ( ( c_2Emergesort_2Emerge__tail @ A_27a @ V0neg @ V1R @ V2l1 @ V3l2 @ V4acc )
        = ( c_2Elist_2EAPPEND @ A_27a @ ( c_2Emergesort_2Emerge @ A_27a @ V1R @ ( c_2Elist_2EREVERSE @ A_27a @ V2l1 ) @ ( c_2Elist_2EREVERSE @ A_27a @ V3l2 ) ) @ V4acc ) ) ) ).

thf(thm_2Emergesort_2EmergesortN__correct,axiom,
    ! [A_27a: $tType,V0negate: $o,V1R: A_27a > A_27a > $o,V2n: tyop_2Enum_2Enum,V3l: tyop_2Elist_2Elist @ A_27a] :
      ( ( ( c_2Erelation_2Etotal @ A_27a @ V1R )
        & ( c_2Erelation_2Etransitive @ A_27a @ V1R ) )
     => ( ( c_2Emergesort_2EmergesortN__tail @ A_27a @ V0negate @ V1R @ V2n @ V3l )
        = ( c_2Ebool_2ECOND @ ( tyop_2Elist_2Elist @ A_27a ) @ V0negate @ ( c_2Elist_2EREVERSE @ A_27a @ ( c_2Emergesort_2EmergesortN @ A_27a @ V1R @ V2n @ V3l ) ) @ ( c_2Emergesort_2EmergesortN @ A_27a @ V1R @ V2n @ V3l ) ) ) ) ).

thf(thm_2Emergesort_2Emergesort__tail__correct,axiom,
    ! [A_27a: $tType,V0R: A_27a > A_27a > $o,V1l: tyop_2Elist_2Elist @ A_27a] :
      ( ( ( c_2Erelation_2Etotal @ A_27a @ V0R )
        & ( c_2Erelation_2Etransitive @ A_27a @ V0R ) )
     => ( ( c_2Emergesort_2Emergesort__tail @ A_27a @ V0R @ V1l )
        = ( c_2Emergesort_2Emergesort @ A_27a @ V0R @ V1l ) ) ) ).

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