TPTP Problem File: SWW568_5.p

View Solutions - Solve Problem

%------------------------------------------------------------------------------
% File     : SWW568_5 : TPTP v8.2.0. Released v6.0.0.
% Domain   : Software Verification
% Problem  : Java type soundness line 317
% Version  : Especial.
% English  : 

% Refs     : [BN10]  Boehme & Nipkow (2010), Sledgehammer: Judgement Day
%          : [Bla13] Blanchette (2011), Email to Geoff Sutcliffe
% Source   : [Bla13]
% Names    : jinja_317 [Bla13]

% Status   : Theorem
% Rating   : 0.33 v7.4.0, 0.25 v7.3.0, 0.50 v7.1.0, 0.33 v6.4.0
% Syntax   : Number of formulae    :  155 (  44 unt;  52 typ;   0 def)
%            Number of atoms       :  221 (  59 equ)
%            Maximal formula atoms :    7 (   1 avg)
%            Number of connectives :  165 (  47   ~;   1   |;  11   &)
%                                         (  13 <=>;  93  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   19 (   7 avg)
%            Maximal term depth    :   10 (   3 avg)
%            Number of types       :    6 (   5 usr)
%            Number of type conns  :   62 (  30   >;  32   *;   0   +;   0  <<)
%            Number of predicates  :   12 (  11 usr;   0 prp; 1-6 aty)
%            Number of functors    :   36 (  36 usr;  17 con; 0-5 aty)
%            Number of variables   :  534 ( 501   !;   9   ?; 534   :)
%                                         (  24  !>;   0  ?*;   0  @-;   0  @+)
% SPC      : TF1_THM_EQU_NAR

% Comments : This file was generated by Isabelle (most likely Sledgehammer)
%            2011-12-13 16:19:57
%------------------------------------------------------------------------------
%----Should-be-implicit typings (10)
tff(ty_tc_Expr_Oexp,type,
    exp: $tType > $tType ).

tff(ty_tc_HOL_Obool,type,
    bool: $tType ).

tff(ty_tc_List_Olist,type,
    list: $tType > $tType ).

tff(ty_tc_Nat_Onat,type,
    nat: $tType ).

tff(ty_tc_Option_Ooption,type,
    option: $tType > $tType ).

tff(ty_tc_String_Ochar,type,
    char: $tType ).

tff(ty_tc_Type_Oty,type,
    ty: $tType ).

tff(ty_tc_Value_Oval,type,
    val: $tType ).

tff(ty_tc_fun,type,
    fun: ( $tType * $tType ) > $tType ).

tff(ty_tc_prod,type,
    product_prod: ( $tType * $tType ) > $tType ).

%----Explicit typings (42)
tff(sy_c_Conform_Ohconf,type,
    hconf: 
      !>[M: $tType] : ( ( list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,M)))))))) * fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))) ) > $o ) ).

tff(sy_c_Conform_Olconf,type,
    lconf: 
      !>[M: $tType] : ( ( list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,M)))))))) * fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))) * fun(list(char),option(val)) * fun(list(char),option(ty)) ) > $o ) ).

tff(sy_c_Expr_Oexp_OCast,type,
    cast: 
      !>[A: $tType] : ( ( list(char) * exp(A) ) > exp(A) ) ).

tff(sy_c_Expr_Oexp_OCond,type,
    cond: 
      !>[A: $tType] : ( ( exp(A) * exp(A) * exp(A) ) > exp(A) ) ).

tff(sy_c_Expr_Oexp_OFAcc,type,
    fAcc: 
      !>[A: $tType] : ( ( exp(A) * list(char) * list(char) ) > exp(A) ) ).

tff(sy_c_Expr_Oexp_OWhile,type,
    while: 
      !>[A: $tType] : ( ( exp(A) * exp(A) ) > exp(A) ) ).

tff(sy_c_Expr_Oexp_Othrow,type,
    throw: 
      !>[A: $tType] : ( exp(A) > exp(A) ) ).

tff(sy_c_JWellForm_Owf__J__mdecl,type,
    wf_J_mdecl: fun(list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))),fun(list(char),fun(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char)))))),bool))) ).

tff(sy_c_Map_Omap__add,type,
    map_add: 
      !>[A: $tType,B1: $tType] : ( ( fun(A,option(B1)) * fun(A,option(B1)) ) > fun(A,option(B1)) ) ).

tff(sy_c_Objects_Ohext,type,
    hext: ( fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))) * fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))) ) > $o ).

tff(sy_c_Product__Type_OPair,type,
    product_Pair: 
      !>[A: $tType,B1: $tType] : ( ( A * B1 ) > product_prod(A,B1) ) ).

tff(sy_c_Product__Type_Ointernal__split,type,
    produc1605651328_split: 
      !>[A: $tType,B1: $tType,C1: $tType] : ( ( fun(A,fun(B1,C1)) * product_prod(A,B1) ) > C1 ) ).

tff(sy_c_Product__Type_Oprod_Oprod__rec,type,
    product_prod_rec: 
      !>[A: $tType,B1: $tType,T3: $tType] : ( ( fun(A,fun(B1,T3)) * product_prod(A,B1) ) > T3 ) ).

tff(sy_c_SmallStep_Ored,type,
    red: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))) > fun(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),bool) ).

tff(sy_c_State_Ohp,type,
    hp: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))) > fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))) ).

tff(sy_c_Transitive__Closure_Ortrancl,type,
    transitive_rtrancl: 
      !>[A: $tType] : ( fun(product_prod(A,A),bool) > fun(product_prod(A,A),bool) ) ).

tff(sy_c_TypeRel_Ohas__field,type,
    has_field: 
      !>[M: $tType] : ( ( list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,M)))))))) * list(char) * list(char) * ty * list(char) ) > $o ) ).

tff(sy_c_TypeRel_Owiden,type,
    widen: 
      !>[M: $tType] : ( ( list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,M)))))))) * ty * ty ) > $o ) ).

tff(sy_c_TypeSafe__Mirabelle__jrcojvmxyu_Osconf,type,
    typeSa976492716_sconf: ( list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))) * fun(list(char),option(ty)) * product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))) ) > $o ).

tff(sy_c_Type_Ois__refT,type,
    is_refT: ty > $o ).

tff(sy_c_Type_Oty_OClass,type,
    class: list(char) > ty ).

tff(sy_c_Type_Oty_ONT,type,
    nt: ty ).

tff(sy_c_WellForm_Owf__prog,type,
    wf_prog: 
      !>[M: $tType] : ( ( fun(list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,M)))))))),fun(list(char),fun(product_prod(list(char),product_prod(list(ty),product_prod(ty,M))),bool))) * list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,M)))))))) ) > $o ) ).

tff(sy_c_WellTypeRT_OWTrt,type,
    wTrt: ( list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))) * fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))) * fun(list(char),option(ty)) * exp(list(char)) * ty ) > $o ).

tff(sy_c_aa,type,
    aa: 
      !>[A: $tType,B1: $tType] : ( ( fun(A,B1) * A ) > B1 ) ).

tff(sy_c_fFalse,type,
    fFalse: bool ).

tff(sy_c_fTrue,type,
    fTrue: bool ).

tff(sy_c_member,type,
    member: 
      !>[A: $tType] : ( ( A * fun(A,bool) ) > $o ) ).

tff(sy_c_pp,type,
    pp: bool > $o ).

tff(sy_v_C____,type,
    c: list(char) ).

tff(sy_v_D____,type,
    d: list(char) ).

tff(sy_v_E____,type,
    e: fun(list(char),option(ty)) ).

tff(sy_v_F____,type,
    f: list(char) ).

tff(sy_v_P,type,
    p: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))) ).

tff(sy_v_T____,type,
    t: ty ).

tff(sy_v_U____,type,
    u: ty ).

tff(sy_v_e_Ha____,type,
    e_a: exp(list(char)) ).

tff(sy_v_ea____,type,
    ea: exp(list(char)) ).

tff(sy_v_h_Ha____,type,
    h_a: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))) ).

tff(sy_v_ha____,type,
    ha: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))) ).

tff(sy_v_l_Ha____,type,
    l_a: fun(list(char),option(val)) ).

tff(sy_v_la____,type,
    la: fun(list(char),option(val)) ).

%----Relevant facts (100)
tff(fact_0_wte_H,axiom,
    wTrt(p,h_a,e,e_a,u) ).

tff(fact_1_has,axiom,
    has_field(product_prod(list(list(char)),exp(list(char))),p,c,f,t,d) ).

tff(fact_2_FAccRed_I4_J,axiom,
    wTrt(p,ha,e,fAcc(list(char),ea,f,d),t) ).

tff(fact_3_wt,axiom,
    wTrt(p,ha,e,fAcc(list(char),ea,f,d),t) ).

tff(fact_4_exp_Osimps_I7_J,axiom,
    ! [A: $tType,List23: list(char),List13: list(char),Exp6: exp(A),List22: list(char),List12: list(char),Exp5: exp(A)] :
      ( ( fAcc(A,Exp5,List12,List22) = fAcc(A,Exp6,List13,List23) )
    <=> ( ( Exp5 = Exp6 )
        & ( List12 = List13 )
        & ( List22 = List23 ) ) ) ).

tff(fact_5_widen__refl,axiom,
    ! [M: $tType,T1: ty,P2: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,M))))))))] : widen(M,P2,T1,T1) ).

tff(fact_6__096EX_AU_O_AP_ME_Mh_H_A_092_060turnstile_062_Ae_H_A_058_AU_A_G_AP_A_092_060turnstile_062_AU_A_092_060le_062_AClass_AC_096,axiom,
    ? [U: ty] :
      ( wTrt(p,h_a,e,e_a,U)
      & widen(product_prod(list(list(char)),exp(list(char))),p,U,class(c)) ) ).

tff(fact_7__096_B_Bthesis_O_A_I_B_BU_O_A_091_124_AP_ME_Mh_H_A_092_060turnstile_062_Ae_H_A_058_AU_059_AP_A_092_060turnstile_062_AU_A_092_060le_062_AClass_AC_A_124_093_A_061_061_062_Athesis_J_A_061_061_062_Athesis_096,axiom,
    ~ ! [U: ty] :
        ( wTrt(p,h_a,e,e_a,U)
       => ~ widen(product_prod(list(list(char)),exp(list(char))),p,U,class(c)) ) ).

tff(fact_8_assms,axiom,
    wf_prog(product_prod(list(list(char)),exp(list(char))),wf_J_mdecl,p) ).

tff(fact_9_UsubC,axiom,
    widen(product_prod(list(list(char)),exp(list(char))),p,u,class(c)) ).

tff(fact_10_WTrtFAccNT,axiom,
    ! [Ta: ty,Da: list(char),Fa: list(char),Eb: exp(list(char)),Ea: fun(list(char),option(ty)),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char)))))))))))] :
      ( wTrt(Pa,Hb,Ea,Eb,nt)
     => wTrt(Pa,Hb,Ea,fAcc(list(char),Eb,Fa,Da),Ta) ) ).

tff(fact_11_widen__trans,axiom,
    ! [A: $tType,T1: ty,U1: ty,S3: ty,P2: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,A))))))))] :
      ( widen(A,P2,S3,U1)
     => ( widen(A,P2,U1,T1)
       => widen(A,P2,S3,T1) ) ) ).

tff(fact_12_FAccRed_I2_J,axiom,
    ! [Ta: ty,Ea: fun(list(char),option(ty))] :
      ( typeSa976492716_sconf(p,Ea,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),ha,la))
     => ( wTrt(p,ha,Ea,ea,Ta)
       => ? [T2: ty] :
            ( wTrt(p,h_a,Ea,e_a,T2)
            & widen(product_prod(list(list(char)),exp(list(char))),p,T2,Ta) ) ) ) ).

tff(fact_13__096U_A_061_ANT_096,axiom,
    u = nt ).

tff(fact_14_FAccRed_I3_J,axiom,
    typeSa976492716_sconf(p,e,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),ha,la)) ).

tff(fact_15_wte,axiom,
    wTrt(p,ha,e,ea,class(c)) ).

tff(fact_16_conf,axiom,
    typeSa976492716_sconf(p,e,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),ha,la)) ).

tff(fact_17_widen__null,axiom,
    ! [M: $tType,C5: list(char),P2: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,M))))))))] : widen(M,P2,nt,class(C5)) ).

tff(fact_18_IH,axiom,
    ! [Ta: ty,Ea: fun(list(char),option(ty))] :
      ( typeSa976492716_sconf(p,Ea,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),ha,la))
     => ( wTrt(p,ha,Ea,ea,Ta)
       => ? [U: ty] :
            ( wTrt(p,h_a,Ea,e_a,U)
            & widen(product_prod(list(list(char)),exp(list(char))),p,U,Ta) ) ) ) ).

tff(fact_19_WTrtFAcc,axiom,
    ! [Da: list(char),Ta: ty,Fa: list(char),Ca: list(char),Eb: exp(list(char)),Ea: fun(list(char),option(ty)),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char)))))))))))] :
      ( wTrt(Pa,Hb,Ea,Eb,class(Ca))
     => ( has_field(product_prod(list(list(char)),exp(list(char))),Pa,Ca,Fa,Ta,Da)
       => wTrt(Pa,Hb,Ea,fAcc(list(char),Eb,Fa,Da),Ta) ) ) ).

tff(fact_20_WTrt__elim__cases_I7_J,axiom,
    ! [Ta: ty,Da: list(char),Fa: list(char),Eb: exp(list(char)),Ea: fun(list(char),option(ty)),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char)))))))))))] :
      ( wTrt(Pa,Hb,Ea,fAcc(list(char),Eb,Fa,Da),Ta)
     => ( ! [C2: list(char)] :
            ( wTrt(Pa,Hb,Ea,Eb,class(C2))
           => ~ has_field(product_prod(list(list(char)),exp(list(char))),Pa,C2,Fa,Ta,Da) )
       => wTrt(Pa,Hb,Ea,Eb,nt) ) ) ).

tff(fact_21_Type_Oty_Oinject,axiom,
    ! [List2: list(char),List1: list(char)] :
      ( ( class(List1) = class(List2) )
    <=> ( List1 = List2 ) ) ).

tff(fact_22_Class__widen,axiom,
    ! [A: $tType,T1: ty,C5: list(char),P2: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,A))))))))] :
      ( widen(A,P2,class(C5),T1)
     => ? [D2: list(char)] : T1 = class(D2) ) ).

tff(fact_23_split__paired__All,axiom,
    ! [A: $tType,B1: $tType,Pa: fun(product_prod(A,B1),bool)] :
      ( ! [X11: product_prod(A,B1)] : pp(aa(product_prod(A,B1),bool,Pa,X11))
    <=> ! [A4: A,B3: B1] : pp(aa(product_prod(A,B1),bool,Pa,product_Pair(A,B1,A4,B3))) ) ).

tff(fact_24_Pair__eq,axiom,
    ! [A: $tType,B1: $tType,B6: B1,A7: A,B: B1,A1: A] :
      ( ( product_Pair(A,B1,A1,B) = product_Pair(A,B1,A7,B6) )
    <=> ( ( A1 = A7 )
        & ( B = B6 ) ) ) ).

tff(fact_25_Type_Oty_Osimps_I20_J,axiom,
    ! [List3: list(char)] : nt != class(List3) ).

tff(fact_26_Type_Oty_Osimps_I21_J,axiom,
    ! [List3: list(char)] : class(List3) != nt ).

tff(fact_27_FAccRed_I1_J,axiom,
    member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),ea,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),ha,la)),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),e_a,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),h_a,l_a))),red(p)) ).

tff(fact_28_pred__equals__eq2,axiom,
    ! [B1: $tType,A: $tType,S2: fun(product_prod(A,B1),bool),R1: fun(product_prod(A,B1),bool)] :
      ( ! [X2: A,Xa1: B1] :
          ( member(product_prod(A,B1),product_Pair(A,B1,X2,Xa1),R1)
        <=> member(product_prod(A,B1),product_Pair(A,B1,X2,Xa1),S2) )
    <=> ( R1 = S2 ) ) ).

tff(fact_29_Pair__inject,axiom,
    ! [A: $tType,B1: $tType,B5: B1,A6: A,B4: B1,A5: A] :
      ( ( product_Pair(A,B1,A5,B4) = product_Pair(A,B1,A6,B5) )
     => ~ ( ( A5 = A6 )
         => ( B4 != B5 ) ) ) ).

tff(fact_30_red__reds_OFAccRed,axiom,
    ! [Da: list(char),Fa: list(char),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))),S1: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_b: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Eb: exp(list(char))] :
      ( member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Eb,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_b,S1)),red(Pa))
     => member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),fAcc(list(char),Eb,Fa,Da),S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),fAcc(list(char),E_b,Fa,Da),S1)),red(Pa)) ) ).

tff(fact_31_prod__cases4,axiom,
    ! [A: $tType,B1: $tType,C1: $tType,D: $tType,Y1: product_prod(A,product_prod(B1,product_prod(C1,D)))] :
      ~ ! [A3: A,B2: B1,C4: C1,D1: D] : Y1 != product_Pair(A,product_prod(B1,product_prod(C1,D)),A3,product_Pair(B1,product_prod(C1,D),B2,product_Pair(C1,D,C4,D1))) ).

tff(fact_32_prod__induct4,axiom,
    ! [D: $tType,C1: $tType,B1: $tType,A: $tType,X: product_prod(A,product_prod(B1,product_prod(C1,D))),Pa: fun(product_prod(A,product_prod(B1,product_prod(C1,D))),bool)] :
      ( ! [A3: A,B2: B1,C4: C1,D1: D] : pp(aa(product_prod(A,product_prod(B1,product_prod(C1,D))),bool,Pa,product_Pair(A,product_prod(B1,product_prod(C1,D)),A3,product_Pair(B1,product_prod(C1,D),B2,product_Pair(C1,D,C4,D1)))))
     => pp(aa(product_prod(A,product_prod(B1,product_prod(C1,D))),bool,Pa,X)) ) ).

tff(fact_33_prod__cases5,axiom,
    ! [A: $tType,B1: $tType,C1: $tType,D: $tType,E: $tType,Y1: product_prod(A,product_prod(B1,product_prod(C1,product_prod(D,E))))] :
      ~ ! [A3: A,B2: B1,C4: C1,D1: D,E1: E] : Y1 != product_Pair(A,product_prod(B1,product_prod(C1,product_prod(D,E))),A3,product_Pair(B1,product_prod(C1,product_prod(D,E)),B2,product_Pair(C1,product_prod(D,E),C4,product_Pair(D,E,D1,E1)))) ).

tff(fact_34_prod__induct5,axiom,
    ! [E: $tType,D: $tType,C1: $tType,B1: $tType,A: $tType,X: product_prod(A,product_prod(B1,product_prod(C1,product_prod(D,E)))),Pa: fun(product_prod(A,product_prod(B1,product_prod(C1,product_prod(D,E)))),bool)] :
      ( ! [A3: A,B2: B1,C4: C1,D1: D,E1: E] : pp(aa(product_prod(A,product_prod(B1,product_prod(C1,product_prod(D,E)))),bool,Pa,product_Pair(A,product_prod(B1,product_prod(C1,product_prod(D,E))),A3,product_Pair(B1,product_prod(C1,product_prod(D,E)),B2,product_Pair(C1,product_prod(D,E),C4,product_Pair(D,E,D1,E1))))))
     => pp(aa(product_prod(A,product_prod(B1,product_prod(C1,product_prod(D,E)))),bool,Pa,X)) ) ).

tff(fact_35_prod__cases6,axiom,
    ! [A: $tType,B1: $tType,C1: $tType,D: $tType,E: $tType,F: $tType,Y1: product_prod(A,product_prod(B1,product_prod(C1,product_prod(D,product_prod(E,F)))))] :
      ~ ! [A3: A,B2: B1,C4: C1,D1: D,E1: E,F2: F] : Y1 != product_Pair(A,product_prod(B1,product_prod(C1,product_prod(D,product_prod(E,F)))),A3,product_Pair(B1,product_prod(C1,product_prod(D,product_prod(E,F))),B2,product_Pair(C1,product_prod(D,product_prod(E,F)),C4,product_Pair(D,product_prod(E,F),D1,product_Pair(E,F,E1,F2))))) ).

tff(fact_36_prod__induct6,axiom,
    ! [F: $tType,E: $tType,D: $tType,C1: $tType,B1: $tType,A: $tType,X: product_prod(A,product_prod(B1,product_prod(C1,product_prod(D,product_prod(E,F))))),Pa: fun(product_prod(A,product_prod(B1,product_prod(C1,product_prod(D,product_prod(E,F))))),bool)] :
      ( ! [A3: A,B2: B1,C4: C1,D1: D,E1: E,F2: F] : pp(aa(product_prod(A,product_prod(B1,product_prod(C1,product_prod(D,product_prod(E,F))))),bool,Pa,product_Pair(A,product_prod(B1,product_prod(C1,product_prod(D,product_prod(E,F)))),A3,product_Pair(B1,product_prod(C1,product_prod(D,product_prod(E,F))),B2,product_Pair(C1,product_prod(D,product_prod(E,F)),C4,product_Pair(D,product_prod(E,F),D1,product_Pair(E,F,E1,F2)))))))
     => pp(aa(product_prod(A,product_prod(B1,product_prod(C1,product_prod(D,product_prod(E,F))))),bool,Pa,X)) ) ).

tff(fact_37_split__paired__Ex,axiom,
    ! [A: $tType,B1: $tType,Pa: fun(product_prod(A,B1),bool)] :
      ( ? [X11: product_prod(A,B1)] : pp(aa(product_prod(A,B1),bool,Pa,X11))
    <=> ? [A4: A,B3: B1] : pp(aa(product_prod(A,B1),bool,Pa,product_Pair(A,B1,A4,B3))) ) ).

tff(fact_38_red__preserves__hconf,axiom,
    ! [Ta: ty,Ea: fun(list(char),option(ty)),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))),L_b: fun(list(char),option(val)),H_b: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),E_b: exp(list(char)),Lb: fun(list(char),option(val)),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),Eb: exp(list(char))] :
      ( member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Eb,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),Hb,Lb)),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_b,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),H_b,L_b))),red(Pa))
     => ( wTrt(Pa,Hb,Ea,Eb,Ta)
       => ( hconf(product_prod(list(list(char)),exp(list(char))),Pa,Hb)
         => hconf(product_prod(list(list(char)),exp(list(char))),Pa,H_b) ) ) ) ).

tff(fact_39_red__preserves__lconf,axiom,
    ! [Ta: ty,Ea: fun(list(char),option(ty)),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))),L_b: fun(list(char),option(val)),H_b: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),E_b: exp(list(char)),Lb: fun(list(char),option(val)),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),Eb: exp(list(char))] :
      ( member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Eb,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),Hb,Lb)),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_b,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),H_b,L_b))),red(Pa))
     => ( wTrt(Pa,Hb,Ea,Eb,Ta)
       => ( lconf(product_prod(list(list(char)),exp(list(char))),Pa,Hb,Lb,Ea)
         => lconf(product_prod(list(list(char)),exp(list(char))),Pa,H_b,L_b,Ea) ) ) ) ).

tff(fact_40_prod__induct3,axiom,
    ! [C1: $tType,B1: $tType,A: $tType,X: product_prod(A,product_prod(B1,C1)),Pa: fun(product_prod(A,product_prod(B1,C1)),bool)] :
      ( ! [A3: A,B2: B1,C4: C1] : pp(aa(product_prod(A,product_prod(B1,C1)),bool,Pa,product_Pair(A,product_prod(B1,C1),A3,product_Pair(B1,C1,B2,C4))))
     => pp(aa(product_prod(A,product_prod(B1,C1)),bool,Pa,X)) ) ).

tff(fact_41_prod__cases3,axiom,
    ! [A: $tType,B1: $tType,C1: $tType,Y1: product_prod(A,product_prod(B1,C1))] :
      ~ ! [A3: A,B2: B1,C4: C1] : Y1 != product_Pair(A,product_prod(B1,C1),A3,product_Pair(B1,C1,B2,C4)) ).

tff(fact_42_red__preserves__sconf,axiom,
    ! [Ta: ty,Ea: fun(list(char),option(ty)),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))),S1: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_b: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Eb: exp(list(char))] :
      ( member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Eb,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_b,S1)),red(Pa))
     => ( wTrt(Pa,hp(S),Ea,Eb,Ta)
       => ( typeSa976492716_sconf(Pa,Ea,S)
         => typeSa976492716_sconf(Pa,Ea,S1) ) ) ) ).

tff(fact_43_prod_Orecs,axiom,
    ! [B1: $tType,A: $tType,C1: $tType,B: C1,A1: B1,F1: fun(B1,fun(C1,A))] : product_prod_rec(B1,C1,A,F1,product_Pair(B1,C1,A1,B)) = aa(C1,A,aa(B1,fun(C1,A),F1,A1),B) ).

tff(fact_44_red__hext__incr,axiom,
    ! [Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))),L_b: fun(list(char),option(val)),H_b: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),E_b: exp(list(char)),Lb: fun(list(char),option(val)),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),Eb: exp(list(char))] :
      ( member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Eb,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),Hb,Lb)),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_b,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),H_b,L_b))),red(Pa))
     => hext(Hb,H_b) ) ).

tff(fact_45_is__refT__def,axiom,
    ! [Ta: ty] :
      ( is_refT(Ta)
    <=> ( ( Ta = nt )
        | ? [C3: list(char)] : Ta = class(C3) ) ) ).

tff(fact_46_WTrt__hext__mono,axiom,
    ! [H_b: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),Ta: ty,Eb: exp(list(char)),Ea: fun(list(char),option(ty)),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char)))))))))))] :
      ( wTrt(Pa,Hb,Ea,Eb,Ta)
     => ( hext(Hb,H_b)
       => wTrt(Pa,H_b,Ea,Eb,Ta) ) ) ).

tff(fact_47_refTE,axiom,
    ! [T1: ty] :
      ( is_refT(T1)
     => ( ( T1 != nt )
       => ~ ! [C2: list(char)] : T1 != class(C2) ) ) ).

tff(fact_48_hext__refl,axiom,
    ! [Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val)))))] : hext(Hb,Hb) ).

tff(fact_49_lconf__hext,axiom,
    ! [A: $tType,H_b: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),Ea: fun(list(char),option(ty)),Lb: fun(list(char),option(val)),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,A))))))))] :
      ( lconf(A,Pa,Hb,Lb,Ea)
     => ( hext(Hb,H_b)
       => lconf(A,Pa,H_b,Lb,Ea) ) ) ).

tff(fact_50_red__lcl__add,axiom,
    ! [L_0: fun(list(char),option(val)),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))),L_b: fun(list(char),option(val)),H_b: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),E_b: exp(list(char)),Lb: fun(list(char),option(val)),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),Eb: exp(list(char))] :
      ( member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Eb,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),Hb,Lb)),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_b,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),H_b,L_b))),red(Pa))
     => member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Eb,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),Hb,map_add(list(char),val,L_0,Lb))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_b,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),H_b,map_add(list(char),val,L_0,L_b)))),red(Pa)) ) ).

tff(fact_51_hext__trans,axiom,
    ! [H: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),H_b: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val)))))] :
      ( hext(Hb,H_b)
     => ( hext(H_b,H)
       => hext(Hb,H) ) ) ).

tff(fact_52_map__add__assoc,axiom,
    ! [B1: $tType,A: $tType,M3: fun(A,option(B1)),M2: fun(A,option(B1)),M1: fun(A,option(B1))] : map_add(A,B1,M1,map_add(A,B1,M2,M3)) = map_add(A,B1,map_add(A,B1,M1,M2),M3) ).

tff(fact_53_Red__lcl__add,axiom,
    ! [L_0: fun(list(char),option(val)),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))),L_b: fun(list(char),option(val)),H_b: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),E_b: exp(list(char)),Lb: fun(list(char),option(val)),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),Eb: exp(list(char))] :
      ( member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Eb,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),Hb,Lb)),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_b,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),H_b,L_b))),transitive_rtrancl(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),red(Pa)))
     => member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Eb,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),Hb,map_add(list(char),val,L_0,Lb))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_b,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),H_b,map_add(list(char),val,L_0,L_b)))),transitive_rtrancl(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),red(Pa))) ) ).

tff(fact_54_prod_Oexhaust,axiom,
    ! [A: $tType,B1: $tType,Y1: product_prod(A,B1)] :
      ~ ! [A3: A,B2: B1] : Y1 != product_Pair(A,B1,A3,B2) ).

tff(fact_55_PairE,axiom,
    ! [A: $tType,B1: $tType,P1: product_prod(A,B1)] :
      ~ ! [X1: A,Y: B1] : P1 != product_Pair(A,B1,X1,Y) ).

tff(fact_56_FAccReds,axiom,
    ! [Da: list(char),Fa: list(char),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))),S1: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_b: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Eb: exp(list(char))] :
      ( member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Eb,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_b,S1)),transitive_rtrancl(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),red(Pa)))
     => member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),fAcc(list(char),Eb,Fa,Da),S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),fAcc(list(char),E_b,Fa,Da),S1)),transitive_rtrancl(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),red(Pa))) ) ).

tff(fact_57_rtrancl_Ortrancl__refl,axiom,
    ! [A: $tType,R: fun(product_prod(A,A),bool),A1: A] : member(product_prod(A,A),product_Pair(A,A,A1,A1),transitive_rtrancl(A,R)) ).

tff(fact_58_rtrancl__idemp,axiom,
    ! [A: $tType,R: fun(product_prod(A,A),bool)] : transitive_rtrancl(A,transitive_rtrancl(A,R)) = transitive_rtrancl(A,R) ).

tff(fact_59_r__into__rtrancl,axiom,
    ! [A: $tType,R: fun(product_prod(A,A),bool),P: product_prod(A,A)] :
      ( member(product_prod(A,A),P,R)
     => member(product_prod(A,A),P,transitive_rtrancl(A,R)) ) ).

tff(fact_60_converse__rtrancl__into__rtrancl,axiom,
    ! [A: $tType,C: A,R: fun(product_prod(A,A),bool),B: A,A1: A] :
      ( member(product_prod(A,A),product_Pair(A,A,A1,B),R)
     => ( member(product_prod(A,A),product_Pair(A,A,B,C),transitive_rtrancl(A,R))
       => member(product_prod(A,A),product_Pair(A,A,A1,C),transitive_rtrancl(A,R)) ) ) ).

tff(fact_61_rtrancl_Ortrancl__into__rtrancl,axiom,
    ! [A: $tType,C: A,R: fun(product_prod(A,A),bool),B: A,A1: A] :
      ( member(product_prod(A,A),product_Pair(A,A,A1,B),transitive_rtrancl(A,R))
     => ( member(product_prod(A,A),product_Pair(A,A,B,C),R)
       => member(product_prod(A,A),product_Pair(A,A,A1,C),transitive_rtrancl(A,R)) ) ) ).

tff(fact_62_rtrancl__trans,axiom,
    ! [A: $tType,C: A,R: fun(product_prod(A,A),bool),B: A,A1: A] :
      ( member(product_prod(A,A),product_Pair(A,A,A1,B),transitive_rtrancl(A,R))
     => ( member(product_prod(A,A),product_Pair(A,A,B,C),transitive_rtrancl(A,R))
       => member(product_prod(A,A),product_Pair(A,A,A1,C),transitive_rtrancl(A,R)) ) ) ).

tff(fact_63_converse__rtranclE2,axiom,
    ! [B1: $tType,A: $tType,R: fun(product_prod(product_prod(A,B1),product_prod(A,B1)),bool),Zb: B1,Za: A,Xb: B1,Xa: A] :
      ( member(product_prod(product_prod(A,B1),product_prod(A,B1)),product_Pair(product_prod(A,B1),product_prod(A,B1),product_Pair(A,B1,Xa,Xb),product_Pair(A,B1,Za,Zb)),transitive_rtrancl(product_prod(A,B1),R))
     => ( ( product_Pair(A,B1,Xa,Xb) != product_Pair(A,B1,Za,Zb) )
       => ~ ! [A3: A,B2: B1] :
              ( member(product_prod(product_prod(A,B1),product_prod(A,B1)),product_Pair(product_prod(A,B1),product_prod(A,B1),product_Pair(A,B1,Xa,Xb),product_Pair(A,B1,A3,B2)),R)
             => ~ member(product_prod(product_prod(A,B1),product_prod(A,B1)),product_Pair(product_prod(A,B1),product_prod(A,B1),product_Pair(A,B1,A3,B2),product_Pair(A,B1,Za,Zb)),transitive_rtrancl(product_prod(A,B1),R)) ) ) ) ).

tff(fact_64_converse__rtrancl__induct2,axiom,
    ! [A: $tType,B1: $tType,Pa: fun(A,fun(B1,bool)),R: fun(product_prod(product_prod(A,B1),product_prod(A,B1)),bool),By: B1,Bx: A,Ay: B1,Ax: A] :
      ( member(product_prod(product_prod(A,B1),product_prod(A,B1)),product_Pair(product_prod(A,B1),product_prod(A,B1),product_Pair(A,B1,Ax,Ay),product_Pair(A,B1,Bx,By)),transitive_rtrancl(product_prod(A,B1),R))
     => ( pp(aa(B1,bool,aa(A,fun(B1,bool),Pa,Bx),By))
       => ( ! [A3: A,B2: B1,Aa: A,Ba: B1] :
              ( member(product_prod(product_prod(A,B1),product_prod(A,B1)),product_Pair(product_prod(A,B1),product_prod(A,B1),product_Pair(A,B1,A3,B2),product_Pair(A,B1,Aa,Ba)),R)
             => ( member(product_prod(product_prod(A,B1),product_prod(A,B1)),product_Pair(product_prod(A,B1),product_prod(A,B1),product_Pair(A,B1,Aa,Ba),product_Pair(A,B1,Bx,By)),transitive_rtrancl(product_prod(A,B1),R))
               => ( pp(aa(B1,bool,aa(A,fun(B1,bool),Pa,Aa),Ba))
                 => pp(aa(B1,bool,aa(A,fun(B1,bool),Pa,A3),B2)) ) ) )
         => pp(aa(B1,bool,aa(A,fun(B1,bool),Pa,Ax),Ay)) ) ) ) ).

tff(fact_65_rtrancl__induct2,axiom,
    ! [A: $tType,B1: $tType,Pa: fun(A,fun(B1,bool)),R: fun(product_prod(product_prod(A,B1),product_prod(A,B1)),bool),By: B1,Bx: A,Ay: B1,Ax: A] :
      ( member(product_prod(product_prod(A,B1),product_prod(A,B1)),product_Pair(product_prod(A,B1),product_prod(A,B1),product_Pair(A,B1,Ax,Ay),product_Pair(A,B1,Bx,By)),transitive_rtrancl(product_prod(A,B1),R))
     => ( pp(aa(B1,bool,aa(A,fun(B1,bool),Pa,Ax),Ay))
       => ( ! [A3: A,B2: B1,Aa: A,Ba: B1] :
              ( member(product_prod(product_prod(A,B1),product_prod(A,B1)),product_Pair(product_prod(A,B1),product_prod(A,B1),product_Pair(A,B1,Ax,Ay),product_Pair(A,B1,A3,B2)),transitive_rtrancl(product_prod(A,B1),R))
             => ( member(product_prod(product_prod(A,B1),product_prod(A,B1)),product_Pair(product_prod(A,B1),product_prod(A,B1),product_Pair(A,B1,A3,B2),product_Pair(A,B1,Aa,Ba)),R)
               => ( pp(aa(B1,bool,aa(A,fun(B1,bool),Pa,A3),B2))
                 => pp(aa(B1,bool,aa(A,fun(B1,bool),Pa,Aa),Ba)) ) ) )
         => pp(aa(B1,bool,aa(A,fun(B1,bool),Pa,Bx),By)) ) ) ) ).

tff(fact_66_rtranclE,axiom,
    ! [A: $tType,R: fun(product_prod(A,A),bool),B: A,A1: A] :
      ( member(product_prod(A,A),product_Pair(A,A,A1,B),transitive_rtrancl(A,R))
     => ( ( A1 != B )
       => ~ ! [Y: A] :
              ( member(product_prod(A,A),product_Pair(A,A,A1,Y),transitive_rtrancl(A,R))
             => ~ member(product_prod(A,A),product_Pair(A,A,Y,B),R) ) ) ) ).

tff(fact_67_converse__rtranclE,axiom,
    ! [A: $tType,R: fun(product_prod(A,A),bool),Z1: A,X: A] :
      ( member(product_prod(A,A),product_Pair(A,A,X,Z1),transitive_rtrancl(A,R))
     => ( ( X != Z1 )
       => ~ ! [Y: A] :
              ( member(product_prod(A,A),product_Pair(A,A,X,Y),R)
             => ~ member(product_prod(A,A),product_Pair(A,A,Y,Z1),transitive_rtrancl(A,R)) ) ) ) ).

tff(fact_68_converse__rtrancl__induct,axiom,
    ! [A: $tType,Pa: fun(A,bool),R: fun(product_prod(A,A),bool),B: A,A1: A] :
      ( member(product_prod(A,A),product_Pair(A,A,A1,B),transitive_rtrancl(A,R))
     => ( pp(aa(A,bool,Pa,B))
       => ( ! [Y: A,Z: A] :
              ( member(product_prod(A,A),product_Pair(A,A,Y,Z),R)
             => ( member(product_prod(A,A),product_Pair(A,A,Z,B),transitive_rtrancl(A,R))
               => ( pp(aa(A,bool,Pa,Z))
                 => pp(aa(A,bool,Pa,Y)) ) ) )
         => pp(aa(A,bool,Pa,A1)) ) ) ) ).

tff(fact_69_rtrancl__induct,axiom,
    ! [A: $tType,Pa: fun(A,bool),R: fun(product_prod(A,A),bool),B: A,A1: A] :
      ( member(product_prod(A,A),product_Pair(A,A,A1,B),transitive_rtrancl(A,R))
     => ( pp(aa(A,bool,Pa,A1))
       => ( ! [Y: A,Z: A] :
              ( member(product_prod(A,A),product_Pair(A,A,A1,Y),transitive_rtrancl(A,R))
             => ( member(product_prod(A,A),product_Pair(A,A,Y,Z),R)
               => ( pp(aa(A,bool,Pa,Y))
                 => pp(aa(A,bool,Pa,Z)) ) ) )
         => pp(aa(A,bool,Pa,B)) ) ) ) ).

tff(fact_70_FAccRedsThrow,axiom,
    ! [Da: list(char),Fa: list(char),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))),S1: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),A1: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Eb: exp(list(char))] :
      ( member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Eb,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),throw(list(char),A1),S1)),transitive_rtrancl(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),red(Pa)))
     => member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),fAcc(list(char),Eb,Fa,Da),S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),throw(list(char),A1),S1)),transitive_rtrancl(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),red(Pa))) ) ).

tff(fact_71_internal__split__conv,axiom,
    ! [B1: $tType,A: $tType,C1: $tType,B: C1,A1: B1,C: fun(B1,fun(C1,A))] : produc1605651328_split(B1,C1,A,C,product_Pair(B1,C1,A1,B)) = aa(C1,A,aa(B1,fun(C1,A),C,A1),B) ).

tff(fact_72_exp_Osimps_I14_J,axiom,
    ! [A: $tType,Exp6: exp(A),Exp5: exp(A)] :
      ( ( throw(A,Exp5) = throw(A,Exp6) )
    <=> ( Exp5 = Exp6 ) ) ).

tff(fact_73_WTrtThrow,axiom,
    ! [Ta: ty,T_r1: ty,Eb: exp(list(char)),Ea: fun(list(char),option(ty)),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char)))))))))))] :
      ( wTrt(Pa,Hb,Ea,Eb,T_r1)
     => ( is_refT(T_r1)
       => wTrt(Pa,Hb,Ea,throw(list(char),Eb),Ta) ) ) ).

tff(fact_74_exp_Osimps_I167_J,axiom,
    ! [A: $tType,List21: list(char),List11: list(char),Exp: exp(A),Exp4: exp(A)] : throw(A,Exp4) != fAcc(A,Exp,List11,List21) ).

tff(fact_75_mem__def,axiom,
    ! [A: $tType,A2: fun(A,bool),X: A] :
      ( member(A,X,A2)
    <=> pp(aa(A,bool,A2,X)) ) ).

tff(fact_76_exp_Osimps_I166_J,axiom,
    ! [A: $tType,Exp4: exp(A),List21: list(char),List11: list(char),Exp: exp(A)] : fAcc(A,Exp,List11,List21) != throw(A,Exp4) ).

tff(fact_77_red__reds_OThrowRed,axiom,
    ! [Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))),S1: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_b: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Eb: exp(list(char))] :
      ( member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Eb,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_b,S1)),red(Pa))
     => member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),throw(list(char),Eb),S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),throw(list(char),E_b),S1)),red(Pa)) ) ).

tff(fact_78_red__reds_OThrowThrow,axiom,
    ! [Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Eb: exp(list(char))] : member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),throw(list(char),throw(list(char),Eb)),S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),throw(list(char),Eb),S)),red(Pa)) ).

tff(fact_79_ThrowReds,axiom,
    ! [Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))),S1: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_b: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Eb: exp(list(char))] :
      ( member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Eb,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_b,S1)),transitive_rtrancl(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),red(Pa)))
     => member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),throw(list(char),Eb),S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),throw(list(char),E_b),S1)),transitive_rtrancl(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),red(Pa))) ) ).

tff(fact_80_ThrowRedsThrow,axiom,
    ! [Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))),S1: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),A1: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Eb: exp(list(char))] :
      ( member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Eb,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),throw(list(char),A1),S1)),transitive_rtrancl(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),red(Pa)))
     => member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),throw(list(char),Eb),S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),throw(list(char),A1),S1)),transitive_rtrancl(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),red(Pa))) ) ).

tff(fact_81_red__reds_OFAccThrow,axiom,
    ! [Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Da: list(char),Fa: list(char),Eb: exp(list(char))] : member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),fAcc(list(char),throw(list(char),Eb),Fa,Da),S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),throw(list(char),Eb),S)),red(Pa)) ).

tff(fact_82_WTrt__elim__cases_I4_J,axiom,
    ! [Ta: ty,Eb: exp(list(char)),Ea: fun(list(char),option(ty)),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char)))))))))))] :
      ( wTrt(Pa,Hb,Ea,throw(list(char),Eb),Ta)
     => ~ ! [T_r: ty] :
            ( wTrt(Pa,Hb,Ea,Eb,T_r)
           => ~ is_refT(T_r) ) ) ).

tff(fact_83_WhileRedsThrow,axiom,
    ! [C: exp(list(char)),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))),S1: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Eb: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),B: exp(list(char))] :
      ( member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),B,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),throw(list(char),Eb),S1)),transitive_rtrancl(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),red(Pa)))
     => member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),while(list(char),B,C),S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),throw(list(char),Eb),S1)),transitive_rtrancl(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),red(Pa))) ) ).

tff(fact_84_exp_Osimps_I13_J,axiom,
    ! [A: $tType,Exp23: exp(A),Exp13: exp(A),Exp22: exp(A),Exp12: exp(A)] :
      ( ( while(A,Exp12,Exp22) = while(A,Exp13,Exp23) )
    <=> ( ( Exp12 = Exp13 )
        & ( Exp22 = Exp23 ) ) ) ).

tff(fact_85_exp_Osimps_I220_J,axiom,
    ! [A: $tType,Exp4: exp(A),Exp21: exp(A),Exp11: exp(A)] : while(A,Exp11,Exp21) != throw(A,Exp4) ).

tff(fact_86_exp_Osimps_I221_J,axiom,
    ! [A: $tType,Exp21: exp(A),Exp11: exp(A),Exp4: exp(A)] : throw(A,Exp4) != while(A,Exp11,Exp21) ).

tff(fact_87_exp_Osimps_I164_J,axiom,
    ! [A: $tType,Exp2: exp(A),Exp1: exp(A),List21: list(char),List11: list(char),Exp: exp(A)] : fAcc(A,Exp,List11,List21) != while(A,Exp1,Exp2) ).

tff(fact_88_exp_Osimps_I165_J,axiom,
    ! [A: $tType,List21: list(char),List11: list(char),Exp: exp(A),Exp2: exp(A),Exp1: exp(A)] : while(A,Exp1,Exp2) != fAcc(A,Exp,List11,List21) ).

tff(fact_89_CastRedsThrow,axiom,
    ! [Ca: list(char),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))),S1: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),A1: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Eb: exp(list(char))] :
      ( member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Eb,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),throw(list(char),A1),S1)),transitive_rtrancl(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),red(Pa)))
     => member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),cast(list(char),Ca,Eb),S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),throw(list(char),A1),S1)),transitive_rtrancl(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),red(Pa))) ) ).

tff(fact_90_CondRedsThrow,axiom,
    ! [E_2: exp(list(char)),E_1: exp(list(char)),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))),S1: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),A1: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Eb: exp(list(char))] :
      ( member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Eb,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),throw(list(char),A1),S1)),transitive_rtrancl(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),red(Pa)))
     => member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),cond(list(char),Eb,E_1,E_2),S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),throw(list(char),A1),S1)),transitive_rtrancl(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),red(Pa))) ) ).

tff(fact_91_exp_Osimps_I12_J,axiom,
    ! [A: $tType,Exp32: exp(A),Exp23: exp(A),Exp13: exp(A),Exp31: exp(A),Exp22: exp(A),Exp12: exp(A)] :
      ( ( cond(A,Exp12,Exp22,Exp31) = cond(A,Exp13,Exp23,Exp32) )
    <=> ( ( Exp12 = Exp13 )
        & ( Exp22 = Exp23 )
        & ( Exp31 = Exp32 ) ) ) ).

tff(fact_92_exp_Osimps_I2_J,axiom,
    ! [A: $tType,Exp6: exp(A),List2: list(char),Exp5: exp(A),List1: list(char)] :
      ( ( cast(A,List1,Exp5) = cast(A,List2,Exp6) )
    <=> ( ( List1 = List2 )
        & ( Exp5 = Exp6 ) ) ) ).

tff(fact_93_exp_Osimps_I216_J,axiom,
    ! [A: $tType,Exp4: exp(A),Exp3: exp(A),Exp21: exp(A),Exp11: exp(A)] : cond(A,Exp11,Exp21,Exp3) != throw(A,Exp4) ).

tff(fact_94_exp_Osimps_I66_J,axiom,
    ! [A: $tType,Exp4: exp(A),Exp: exp(A),List: list(char)] : cast(A,List,Exp) != throw(A,Exp4) ).

tff(fact_95_exp_Osimps_I217_J,axiom,
    ! [A: $tType,Exp3: exp(A),Exp21: exp(A),Exp11: exp(A),Exp4: exp(A)] : throw(A,Exp4) != cond(A,Exp11,Exp21,Exp3) ).

tff(fact_96_exp_Osimps_I67_J,axiom,
    ! [A: $tType,Exp: exp(A),List: list(char),Exp4: exp(A)] : throw(A,Exp4) != cast(A,List,Exp) ).

tff(fact_97_exp_Osimps_I64_J,axiom,
    ! [A: $tType,Exp2: exp(A),Exp1: exp(A),Exp: exp(A),List: list(char)] : cast(A,List,Exp) != while(A,Exp1,Exp2) ).

tff(fact_98_exp_Osimps_I65_J,axiom,
    ! [A: $tType,Exp: exp(A),List: list(char),Exp2: exp(A),Exp1: exp(A)] : while(A,Exp1,Exp2) != cast(A,List,Exp) ).

tff(fact_99_exp_Osimps_I215_J,axiom,
    ! [A: $tType,Exp3: exp(A),Exp21: exp(A),Exp11: exp(A),Exp2: exp(A),Exp1: exp(A)] : while(A,Exp1,Exp2) != cond(A,Exp11,Exp21,Exp3) ).

%----Helper facts (2)
tff(help_pp_1_1_U,axiom,
    ~ pp(fFalse) ).

tff(help_pp_2_1_U,axiom,
    pp(fTrue) ).

%----Conjectures (1)
tff(conj_0,conjecture,
    ? [T: ty] :
      ( wTrt(p,h_a,e,fAcc(list(char),e_a,f,d),T)
      & widen(product_prod(list(list(char)),exp(list(char))),p,T,t) ) ).

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