TPTP Problem File: SWW567_5.p
View Solutions
- Solve Problem
%------------------------------------------------------------------------------
% File : SWW567_5 : TPTP v9.0.0. Released v6.0.0.
% Domain : Software Verification
% Problem : Java type soundness line 291
% Version : Especial.
% English :
% Refs : [BN10] Boehme & Nipkow (2010), Sledgehammer: Judgement Day
% : [Bla13] Blanchette (2011), Email to Geoff Sutcliffe
% Source : [Bla13]
% Names : jinja_291 [Bla13]
% Status : Theorem
% Rating : 0.00 v6.4.0
% Syntax : Number of formulae : 153 ( 37 unt; 50 typ; 0 def)
% Number of atoms : 232 ( 47 equ)
% Maximal formula atoms : 7 ( 1 avg)
% Number of connectives : 167 ( 38 ~; 0 |; 9 &)
% ( 12 <=>; 108 =>; 0 <=; 0 <~>)
% Maximal formula depth : 19 ( 8 avg)
% Maximal term depth : 15 ( 3 avg)
% Number of types : 7 ( 6 usr)
% Number of type conns : 61 ( 29 >; 32 *; 0 +; 0 <<)
% Number of predicates : 14 ( 13 usr; 0 prp; 1-5 aty)
% Number of functors : 31 ( 31 usr; 15 con; 0-5 aty)
% Number of variables : 608 ( 580 !; 6 ?; 608 :)
% ( 22 !>; 0 ?*; 0 @-; 0 @+)
% SPC : TF1_THM_EQU_NAR
% Comments : This file was generated by Isabelle (most likely Sledgehammer)
% 2011-12-13 16:19:30
%------------------------------------------------------------------------------
%----Should-be-implicit typings (11)
tff(ty_tc_Expr_Obop,type,
bop1: $tType ).
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,
val1: $tType ).
tff(ty_tc_fun,type,
fun: ( $tType * $tType ) > $tType ).
tff(ty_tc_prod,type,
product_prod: ( $tType * $tType ) > $tType ).
%----Explicit typings (39)
tff(sy_c_BigStep_Oeval,type,
eval: ( 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))))))))))) * exp(list(char)) * product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))) * exp(list(char)) * product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))) ) > $o ).
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(val1))))) ) > $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(val1))))) * fun(list(char),option(val1)) * fun(list(char),option(ty)) ) > $o ) ).
tff(sy_c_Expr_Oexp_OBinOp,type,
binOp:
!>[A: $tType] : ( ( exp(A) * bop1 * exp(A) ) > exp(A) ) ).
tff(sy_c_Expr_Oexp_OFAss,type,
fAss:
!>[A: $tType] : ( ( exp(A) * list(char) * list(char) * exp(A) ) > exp(A) ) ).
tff(sy_c_Expr_Oexp_OVal,type,
val:
!>[A: $tType] : ( val1 > exp(A) ) ).
tff(sy_c_Expr_Oexp_Othrow,type,
throw:
!>[A: $tType] : ( exp(A) > exp(A) ) ).
tff(sy_c_FunDef_Oin__rel,type,
in_rel:
!>[A: $tType,B: $tType] : ( ( fun(product_prod(A,B),bool) * A * B ) > $o ) ).
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,B: $tType] : ( ( fun(A,option(B)) * fun(A,option(B)) ) > fun(A,option(B)) ) ).
tff(sy_c_Nitpick_Orefl_H,type,
refl:
!>[A: $tType] : ( fun(product_prod(A,A),bool) > $o ) ).
tff(sy_c_Objects_Ohext,type,
hext: ( fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))) * fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))) ) > $o ).
tff(sy_c_Product__Type_OPair,type,
product_Pair:
!>[A: $tType,B: $tType] : ( ( A * B ) > product_prod(A,B) ) ).
tff(sy_c_Product__Type_Oprod_Oprod__rec,type,
product_prod_rec:
!>[A: $tType,B: $tType,T3: $tType] : ( ( fun(A,fun(B,T3)) * product_prod(A,B) ) > 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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),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(val1))))),fun(list(char),option(val1))) > fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))) ).
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_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(val1))))),fun(list(char),option(val1))) ) > $o ).
tff(sy_c_Type_Ois__refT,type,
is_refT: ty > $o ).
tff(sy_c_WWellForm_Owwf__J__mdecl,type,
wwf_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_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(val1))))) * fun(list(char),option(ty)) * exp(list(char)) * ty ) > $o ).
tff(sy_c_aa,type,
aa:
!>[A: $tType,B: $tType] : ( ( fun(A,B) * A ) > B ) ).
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_E____,type,
e: fun(list(char),option(ty)) ).
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_bop____,type,
bop: bop1 ).
tff(sy_v_e_092_060_094isub_0622_H____,type,
e_2: exp(list(char)) ).
tff(sy_v_e_092_060_094isub_0622____,type,
e_21: 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(val1))))) ).
tff(sy_v_ha____,type,
ha: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))) ).
tff(sy_v_l_Ha____,type,
l_a: fun(list(char),option(val1)) ).
tff(sy_v_la____,type,
la: fun(list(char),option(val1)) ).
tff(sy_v_v_092_060_094isub_0621____,type,
v_1: val1 ).
%----Relevant facts (100)
tff(fact_0__096P_ME_Mh_H_A_092_060turnstile_062_AVal_Av_092_060_094isub_0621_A_092_060guillemotleft_062bop_092_060guillemotright_062_Ae_092_060_094isub_0622_H_A_058_AT_096,axiom,
wTrt(p,h_a,e,binOp(list(char),val(list(char),v_1),bop,e_2),t) ).
tff(fact_1_BinOpRed2_I4_J,axiom,
wTrt(p,ha,e,binOp(list(char),val(list(char),v_1),bop,e_21),t) ).
tff(fact_2_wt,axiom,
wTrt(p,ha,e,binOp(list(char),val(list(char),v_1),bop,e_21),t) ).
tff(fact_3_exp_Osimps_I4_J,axiom,
! [A: $tType,Exp23: exp(A),Bop2: bop1,Exp13: exp(A),Exp22: exp(A),Bopa: bop1,Exp12: exp(A)] :
( ( binOp(A,Exp12,Bopa,Exp22) = binOp(A,Exp13,Bop2,Exp23) )
<=> ( ( Exp12 = Exp13 )
& ( Bopa = Bop2 )
& ( Exp22 = Exp23 ) ) ) ).
tff(fact_4_widen__refl,axiom,
! [M: $tType,T2: ty,P1: 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,P1,T2,T2) ).
tff(fact_5_exp_Osimps_I3_J,axiom,
! [A: $tType,Val2: val1,Val1: val1] :
( ( val(A,Val1) = val(A,Val2) )
<=> ( Val1 = Val2 ) ) ).
tff(fact_6_assms,axiom,
wf_prog(product_prod(list(list(char)),exp(list(char))),wf_J_mdecl,p) ).
tff(fact_7_exp_Osimps_I70_J,axiom,
! [A: $tType,Exp2: exp(A),Bop1: bop1,Exp1: exp(A),Val: val1] : ( val(A,Val) != binOp(A,Exp1,Bop1,Exp2) ) ).
tff(fact_8_exp_Osimps_I71_J,axiom,
! [A: $tType,Val: val1,Exp2: exp(A),Bop1: bop1,Exp1: exp(A)] : ( binOp(A,Exp1,Bop1,Exp2) != val(A,Val) ) ).
tff(fact_9_widen__trans,axiom,
! [A: $tType,T2: ty,U1: ty,S4: ty,P1: 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,P1,S4,U1)
=> ( widen(A,P1,U1,T2)
=> widen(A,P1,S4,T2) ) ) ).
tff(fact_10_BinOpRed2_I2_J,axiom,
! [Ta: ty,Ea1: fun(list(char),option(ty))] :
( typeSa976492716_sconf(p,Ea1,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)),ha,la))
=> ( wTrt(p,ha,Ea1,e_21,Ta)
=> ? [T1: ty] :
( wTrt(p,h_a,Ea1,e_2,T1)
& widen(product_prod(list(list(char)),exp(list(char))),p,T1,Ta) ) ) ) ).
tff(fact_11_IH,axiom,
! [Ta: ty,Ea1: fun(list(char),option(ty))] :
( typeSa976492716_sconf(p,Ea1,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)),ha,la))
=> ( wTrt(p,ha,Ea1,e_21,Ta)
=> ? [U: ty] :
( wTrt(p,h_a,Ea1,e_2,U)
& widen(product_prod(list(list(char)),exp(list(char))),p,U,Ta) ) ) ) ).
tff(fact_12_BinOpRed2_I3_J,axiom,
typeSa976492716_sconf(p,e,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)),ha,la)) ).
tff(fact_13_conf,axiom,
typeSa976492716_sconf(p,e,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)),ha,la)) ).
tff(fact_14_split__paired__All,axiom,
! [A: $tType,B: $tType,Pa: fun(product_prod(A,B),bool)] :
( ! [X11: product_prod(A,B)] : pp(aa(product_prod(A,B),bool,Pa,X11))
<=> ! [A4: A,B3: B] : pp(aa(product_prod(A,B),bool,Pa,product_Pair(A,B,A4,B3))) ) ).
tff(fact_15_Pair__eq,axiom,
! [A: $tType,B: $tType,B6: B,A7: A,B1: B,A2: A] :
( ( product_Pair(A,B,A2,B1) = product_Pair(A,B,A7,B6) )
<=> ( ( A2 = A7 )
& ( B1 = B6 ) ) ) ).
tff(fact_16_red,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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),e_21,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)),ha,la)),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),e_2,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)),h_a,l_a))),red(p)) ).
tff(fact_17_pred__equals__eq2,axiom,
! [B: $tType,A: $tType,S3: fun(product_prod(A,B),bool),R1: fun(product_prod(A,B),bool)] :
( ! [X2: A,Xa1: B] :
( member(product_prod(A,B),product_Pair(A,B,X2,Xa1),R1)
<=> member(product_prod(A,B),product_Pair(A,B,X2,Xa1),S3) )
<=> ( R1 = S3 ) ) ).
tff(fact_18_Pair__inject,axiom,
! [A: $tType,B: $tType,B5: B,A6: A,B4: B,A5: A] :
( ( product_Pair(A,B,A5,B4) = product_Pair(A,B,A6,B5) )
=> ~ ( ( A5 = A6 )
=> ( B4 != B5 ) ) ) ).
tff(fact_19_wf__prog__wwf__prog,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)))))))))))] :
( wf_prog(product_prod(list(list(char)),exp(list(char))),wf_J_mdecl,Pa)
=> wf_prog(product_prod(list(list(char)),exp(list(char))),wwf_J_mdecl,Pa) ) ).
tff(fact_20_in__rel__def,axiom,
! [B: $tType,A: $tType,Y2: B,X: A,R1: fun(product_prod(A,B),bool)] :
( in_rel(A,B,R1,X,Y2)
<=> member(product_prod(A,B),product_Pair(A,B,X,Y2),R1) ) ).
tff(fact_21_split__paired__Ex,axiom,
! [A: $tType,B: $tType,Pa: fun(product_prod(A,B),bool)] :
( ? [X11: product_prod(A,B)] : pp(aa(product_prod(A,B),bool,Pa,X11))
<=> ? [A4: A,B3: B] : pp(aa(product_prod(A,B),bool,Pa,product_Pair(A,B,A4,B3))) ) ).
tff(fact_22_Nitpick_Orefl_H__def,axiom,
! [A: $tType,R: fun(product_prod(A,A),bool)] :
( refl(A,R)
<=> ! [X2: A] : member(product_prod(A,A),product_Pair(A,A,X2,X2),R) ) ).
tff(fact_23_wf__mdecl__wwf__mdecl,axiom,
! [Md: product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char)))))),C3: list(char),P1: 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)))))))))))] :
( pp(aa(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char)))))),bool,aa(list(char),fun(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char)))))),bool),aa(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)),wf_J_mdecl,P1),C3),Md))
=> pp(aa(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char)))))),bool,aa(list(char),fun(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char)))))),bool),aa(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)),wwf_J_mdecl,P1),C3),Md)) ) ).
tff(fact_24_red__reds_OBinOpRed2,axiom,
! [Bopa: bop1,V_1: val1,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(val1))))),fun(list(char),option(val1))),E_a: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea: 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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),E_a,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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),binOp(list(char),val(list(char),V_1),Bopa,Ea),S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),binOp(list(char),val(list(char),V_1),Bopa,E_a),S1)),red(Pa)) ) ).
tff(fact_25_red__reds_OBinOpRed1,axiom,
! [E_2: exp(list(char)),Bopa: bop1,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(val1))))),fun(list(char),option(val1))),E_a: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea: 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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),E_a,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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),binOp(list(char),Ea,Bopa,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(val1))))),fun(list(char),option(val1))),binOp(list(char),E_a,Bopa,E_2),S1)),red(Pa)) ) ).
tff(fact_26_prod__cases4,axiom,
! [A: $tType,B: $tType,C1: $tType,D1: $tType,Y1: product_prod(A,product_prod(B,product_prod(C1,D1)))] :
~ ! [A3: A,B2: B,C2: C1,D2: D1] : ( Y1 != product_Pair(A,product_prod(B,product_prod(C1,D1)),A3,product_Pair(B,product_prod(C1,D1),B2,product_Pair(C1,D1,C2,D2))) ) ).
tff(fact_27_prod__induct4,axiom,
! [D1: $tType,C1: $tType,B: $tType,A: $tType,X: product_prod(A,product_prod(B,product_prod(C1,D1))),Pa: fun(product_prod(A,product_prod(B,product_prod(C1,D1))),bool)] :
( ! [A3: A,B2: B,C2: C1,D2: D1] : pp(aa(product_prod(A,product_prod(B,product_prod(C1,D1))),bool,Pa,product_Pair(A,product_prod(B,product_prod(C1,D1)),A3,product_Pair(B,product_prod(C1,D1),B2,product_Pair(C1,D1,C2,D2)))))
=> pp(aa(product_prod(A,product_prod(B,product_prod(C1,D1))),bool,Pa,X)) ) ).
tff(fact_28_prod__cases5,axiom,
! [A: $tType,B: $tType,C1: $tType,D1: $tType,E1: $tType,Y1: product_prod(A,product_prod(B,product_prod(C1,product_prod(D1,E1))))] :
~ ! [A3: A,B2: B,C2: C1,D2: D1,E2: E1] : ( Y1 != product_Pair(A,product_prod(B,product_prod(C1,product_prod(D1,E1))),A3,product_Pair(B,product_prod(C1,product_prod(D1,E1)),B2,product_Pair(C1,product_prod(D1,E1),C2,product_Pair(D1,E1,D2,E2)))) ) ).
tff(fact_29_prod__induct5,axiom,
! [E1: $tType,D1: $tType,C1: $tType,B: $tType,A: $tType,X: product_prod(A,product_prod(B,product_prod(C1,product_prod(D1,E1)))),Pa: fun(product_prod(A,product_prod(B,product_prod(C1,product_prod(D1,E1)))),bool)] :
( ! [A3: A,B2: B,C2: C1,D2: D1,E2: E1] : pp(aa(product_prod(A,product_prod(B,product_prod(C1,product_prod(D1,E1)))),bool,Pa,product_Pair(A,product_prod(B,product_prod(C1,product_prod(D1,E1))),A3,product_Pair(B,product_prod(C1,product_prod(D1,E1)),B2,product_Pair(C1,product_prod(D1,E1),C2,product_Pair(D1,E1,D2,E2))))))
=> pp(aa(product_prod(A,product_prod(B,product_prod(C1,product_prod(D1,E1)))),bool,Pa,X)) ) ).
tff(fact_30_prod__cases6,axiom,
! [A: $tType,B: $tType,C1: $tType,D1: $tType,E1: $tType,F2: $tType,Y1: product_prod(A,product_prod(B,product_prod(C1,product_prod(D1,product_prod(E1,F2)))))] :
~ ! [A3: A,B2: B,C2: C1,D2: D1,E2: E1,F3: F2] : ( Y1 != product_Pair(A,product_prod(B,product_prod(C1,product_prod(D1,product_prod(E1,F2)))),A3,product_Pair(B,product_prod(C1,product_prod(D1,product_prod(E1,F2))),B2,product_Pair(C1,product_prod(D1,product_prod(E1,F2)),C2,product_Pair(D1,product_prod(E1,F2),D2,product_Pair(E1,F2,E2,F3))))) ) ).
tff(fact_31_prod__induct6,axiom,
! [F2: $tType,E1: $tType,D1: $tType,C1: $tType,B: $tType,A: $tType,X: product_prod(A,product_prod(B,product_prod(C1,product_prod(D1,product_prod(E1,F2))))),Pa: fun(product_prod(A,product_prod(B,product_prod(C1,product_prod(D1,product_prod(E1,F2))))),bool)] :
( ! [A3: A,B2: B,C2: C1,D2: D1,E2: E1,F3: F2] : pp(aa(product_prod(A,product_prod(B,product_prod(C1,product_prod(D1,product_prod(E1,F2))))),bool,Pa,product_Pair(A,product_prod(B,product_prod(C1,product_prod(D1,product_prod(E1,F2)))),A3,product_Pair(B,product_prod(C1,product_prod(D1,product_prod(E1,F2))),B2,product_Pair(C1,product_prod(D1,product_prod(E1,F2)),C2,product_Pair(D1,product_prod(E1,F2),D2,product_Pair(E1,F2,E2,F3)))))))
=> pp(aa(product_prod(A,product_prod(B,product_prod(C1,product_prod(D1,product_prod(E1,F2))))),bool,Pa,X)) ) ).
tff(fact_32_red__preserves__hconf,axiom,
! [Ta: ty,Ea1: 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(val1)),H_b: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),E_a: exp(list(char)),Lb: fun(list(char),option(val1)),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),Ea: 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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)),Hb,Lb)),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),E_a,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)),H_b,L_b))),red(Pa))
=> ( wTrt(Pa,Hb,Ea1,Ea,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_33_red__preserves__lconf,axiom,
! [Ta: ty,Ea1: 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(val1)),H_b: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),E_a: exp(list(char)),Lb: fun(list(char),option(val1)),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),Ea: 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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)),Hb,Lb)),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),E_a,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)),H_b,L_b))),red(Pa))
=> ( wTrt(Pa,Hb,Ea1,Ea,Ta)
=> ( lconf(product_prod(list(list(char)),exp(list(char))),Pa,Hb,Lb,Ea1)
=> lconf(product_prod(list(list(char)),exp(list(char))),Pa,H_b,L_b,Ea1) ) ) ) ).
tff(fact_34_prod__induct3,axiom,
! [C1: $tType,B: $tType,A: $tType,X: product_prod(A,product_prod(B,C1)),Pa: fun(product_prod(A,product_prod(B,C1)),bool)] :
( ! [A3: A,B2: B,C2: C1] : pp(aa(product_prod(A,product_prod(B,C1)),bool,Pa,product_Pair(A,product_prod(B,C1),A3,product_Pair(B,C1,B2,C2))))
=> pp(aa(product_prod(A,product_prod(B,C1)),bool,Pa,X)) ) ).
tff(fact_35_prod__cases3,axiom,
! [A: $tType,B: $tType,C1: $tType,Y1: product_prod(A,product_prod(B,C1))] :
~ ! [A3: A,B2: B,C2: C1] : ( Y1 != product_Pair(A,product_prod(B,C1),A3,product_Pair(B,C1,B2,C2)) ) ).
tff(fact_36_red__preserves__sconf,axiom,
! [Ta: ty,Ea1: 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(val1))))),fun(list(char),option(val1))),E_a: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea: 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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),E_a,S1)),red(Pa))
=> ( wTrt(Pa,hp(S),Ea1,Ea,Ta)
=> ( typeSa976492716_sconf(Pa,Ea1,S)
=> typeSa976492716_sconf(Pa,Ea1,S1) ) ) ) ).
tff(fact_37_prod_Orecs,axiom,
! [B: $tType,A: $tType,C1: $tType,B1: C1,A2: B,F11: fun(B,fun(C1,A))] : ( product_prod_rec(B,C1,A,F11,product_Pair(B,C1,A2,B1)) = aa(C1,A,aa(B,fun(C1,A),F11,A2),B1) ) ).
tff(fact_38_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(val1)),H_b: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),E_a: exp(list(char)),Lb: fun(list(char),option(val1)),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),Ea: 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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)),Hb,Lb)),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),E_a,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)),H_b,L_b))),red(Pa))
=> hext(Hb,H_b) ) ).
tff(fact_39_red__reds_OBinOpThrow2,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(val1))))),fun(list(char),option(val1))),Ea: exp(list(char)),Bopa: bop1,V_1: val1] : 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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),binOp(list(char),val(list(char),V_1),Bopa,throw(list(char),Ea)),S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),throw(list(char),Ea),S)),red(Pa)) ).
tff(fact_40_red__lcl__add,axiom,
! [L_0: fun(list(char),option(val1)),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(val1)),H_b: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),E_a: exp(list(char)),Lb: fun(list(char),option(val1)),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),Ea: 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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)),Hb,Lb)),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),E_a,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)),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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)),Hb,map_add(list(char),val1,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(val1))))),fun(list(char),option(val1))),E_a,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)),H_b,map_add(list(char),val1,L_0,L_b)))),red(Pa)) ) ).
tff(fact_41_prod_Oexhaust,axiom,
! [A: $tType,B: $tType,Y1: product_prod(A,B)] :
~ ! [A3: A,B2: B] : ( Y1 != product_Pair(A,B,A3,B2) ) ).
tff(fact_42_exp_Osimps_I14_J,axiom,
! [A: $tType,Exp4: exp(A),Exp3: exp(A)] :
( ( throw(A,Exp3) = throw(A,Exp4) )
<=> ( Exp3 = Exp4 ) ) ).
tff(fact_43_exp_Osimps_I91_J,axiom,
! [A: $tType,Val: val1,Exp: exp(A)] : ( throw(A,Exp) != val(A,Val) ) ).
tff(fact_44_exp_Osimps_I90_J,axiom,
! [A: $tType,Exp: exp(A),Val: val1] : ( val(A,Val) != throw(A,Exp) ) ).
tff(fact_45_exp_Osimps_I112_J,axiom,
! [A: $tType,Exp: exp(A),Exp21: exp(A),Bop: bop1,Exp11: exp(A)] : ( binOp(A,Exp11,Bop,Exp21) != throw(A,Exp) ) ).
tff(fact_46_exp_Osimps_I113_J,axiom,
! [A: $tType,Exp21: exp(A),Bop: bop1,Exp11: exp(A),Exp: exp(A)] : ( throw(A,Exp) != binOp(A,Exp11,Bop,Exp21) ) ).
tff(fact_47_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(val1))))),fun(list(char),option(val1))),E_a: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea: 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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),E_a,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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),throw(list(char),Ea),S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),throw(list(char),E_a),S1)),red(Pa)) ) ).
tff(fact_48_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(val1))))),fun(list(char),option(val1))),Ea: 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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),throw(list(char),throw(list(char),Ea)),S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),throw(list(char),Ea),S)),red(Pa)) ).
tff(fact_49_red__reds_OBinOpThrow1,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(val1))))),fun(list(char),option(val1))),E_2: exp(list(char)),Bopa: bop1,Ea: 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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),binOp(list(char),throw(list(char),Ea),Bopa,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(val1))))),fun(list(char),option(val1))),throw(list(char),Ea),S)),red(Pa)) ).
tff(fact_50_hext__refl,axiom,
! [Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1)))))] : hext(Hb,Hb) ).
tff(fact_51_map__add__assoc,axiom,
! [B: $tType,A: $tType,M3: fun(A,option(B)),M2: fun(A,option(B)),M1: fun(A,option(B))] : ( map_add(A,B,M1,map_add(A,B,M2,M3)) = map_add(A,B,map_add(A,B,M1,M2),M3) ) ).
tff(fact_52_lconf__hext,axiom,
! [A: $tType,H_b: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),Ea1: fun(list(char),option(ty)),Lb: fun(list(char),option(val1)),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),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,Ea1)
=> ( hext(Hb,H_b)
=> lconf(A,Pa,H_b,Lb,Ea1) ) ) ).
tff(fact_53_WTrt__hext__mono,axiom,
! [H_b: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),Ta: ty,Ea: exp(list(char)),Ea1: fun(list(char),option(ty)),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),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,Ea1,Ea,Ta)
=> ( hext(Hb,H_b)
=> wTrt(Pa,H_b,Ea1,Ea,Ta) ) ) ).
tff(fact_54_Red__lcl__add,axiom,
! [L_0: fun(list(char),option(val1)),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(val1)),H_b: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),E_a: exp(list(char)),Lb: fun(list(char),option(val1)),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),Ea: 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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)),Hb,Lb)),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),E_a,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)),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(val1))))),fun(list(char),option(val1)))),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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)),Hb,map_add(list(char),val1,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(val1))))),fun(list(char),option(val1))),E_a,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)),H_b,map_add(list(char),val1,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(val1))))),fun(list(char),option(val1)))),red(Pa))) ) ).
tff(fact_55_hext__trans,axiom,
! [H: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),H_b: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1)))))] :
( hext(Hb,H_b)
=> ( hext(H_b,H)
=> hext(Hb,H) ) ) ).
tff(fact_56_BinOpRedsThrow2,axiom,
! [Bopa: bop1,S_2: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea: exp(list(char)),E_2: 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))))))))))),S_1: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),V_1: val1,S_0: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),E_1: 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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),E_1,S_0),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),val(list(char),V_1),S_1)),transitive_rtrancl(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),E_2,S_1),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),throw(list(char),Ea),S_2)),transitive_rtrancl(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),binOp(list(char),E_1,Bopa,E_2),S_0),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),throw(list(char),Ea),S_2)),transitive_rtrancl(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),red(Pa))) ) ) ).
tff(fact_57_BinOpRedsThrow1,axiom,
! [E_2: exp(list(char)),Bopa: bop1,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(val1))))),fun(list(char),option(val1))),E_a: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea: 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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),throw(list(char),E_a),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(val1))))),fun(list(char),option(val1)))),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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),binOp(list(char),Ea,Bopa,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(val1))))),fun(list(char),option(val1))),throw(list(char),E_a),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(val1))))),fun(list(char),option(val1)))),red(Pa))) ) ).
tff(fact_58_BinOp2Reds,axiom,
! [Bopa: bop1,V: val1,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(val1))))),fun(list(char),option(val1))),E_a: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea: 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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),E_a,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(val1))))),fun(list(char),option(val1)))),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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),binOp(list(char),val(list(char),V),Bopa,Ea),S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),binOp(list(char),val(list(char),V),Bopa,E_a),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(val1))))),fun(list(char),option(val1)))),red(Pa))) ) ).
tff(fact_59_BinOp1Reds,axiom,
! [E_2: exp(list(char)),Bopa: bop1,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(val1))))),fun(list(char),option(val1))),E_a: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea: 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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),E_a,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(val1))))),fun(list(char),option(val1)))),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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),binOp(list(char),Ea,Bopa,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(val1))))),fun(list(char),option(val1))),binOp(list(char),E_a,Bopa,E_2),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(val1))))),fun(list(char),option(val1)))),red(Pa))) ) ).
tff(fact_60_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(val1))))),fun(list(char),option(val1))),E_a: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea: 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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),E_a,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(val1))))),fun(list(char),option(val1)))),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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),throw(list(char),Ea),S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),throw(list(char),E_a),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(val1))))),fun(list(char),option(val1)))),red(Pa))) ) ).
tff(fact_61_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(val1))))),fun(list(char),option(val1))),A2: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea: 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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),throw(list(char),A2),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(val1))))),fun(list(char),option(val1)))),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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),throw(list(char),Ea),S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),throw(list(char),A2),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(val1))))),fun(list(char),option(val1)))),red(Pa))) ) ).
tff(fact_62_rtrancl_Ortrancl__refl,axiom,
! [A: $tType,R: fun(product_prod(A,A),bool),A2: A] : member(product_prod(A,A),product_Pair(A,A,A2,A2),transitive_rtrancl(A,R)) ).
tff(fact_63_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_64_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_65_converse__rtrancl__into__rtrancl,axiom,
! [A: $tType,C: A,R: fun(product_prod(A,A),bool),B1: A,A2: A] :
( member(product_prod(A,A),product_Pair(A,A,A2,B1),R)
=> ( member(product_prod(A,A),product_Pair(A,A,B1,C),transitive_rtrancl(A,R))
=> member(product_prod(A,A),product_Pair(A,A,A2,C),transitive_rtrancl(A,R)) ) ) ).
tff(fact_66_rtrancl_Ortrancl__into__rtrancl,axiom,
! [A: $tType,C: A,R: fun(product_prod(A,A),bool),B1: A,A2: A] :
( member(product_prod(A,A),product_Pair(A,A,A2,B1),transitive_rtrancl(A,R))
=> ( member(product_prod(A,A),product_Pair(A,A,B1,C),R)
=> member(product_prod(A,A),product_Pair(A,A,A2,C),transitive_rtrancl(A,R)) ) ) ).
tff(fact_67_rtrancl__trans,axiom,
! [A: $tType,C: A,R: fun(product_prod(A,A),bool),B1: A,A2: A] :
( member(product_prod(A,A),product_Pair(A,A,A2,B1),transitive_rtrancl(A,R))
=> ( member(product_prod(A,A),product_Pair(A,A,B1,C),transitive_rtrancl(A,R))
=> member(product_prod(A,A),product_Pair(A,A,A2,C),transitive_rtrancl(A,R)) ) ) ).
tff(fact_68_converse__rtranclE2,axiom,
! [B: $tType,A: $tType,R: fun(product_prod(product_prod(A,B),product_prod(A,B)),bool),Zb: B,Za: A,Xb: B,Xa: A] :
( member(product_prod(product_prod(A,B),product_prod(A,B)),product_Pair(product_prod(A,B),product_prod(A,B),product_Pair(A,B,Xa,Xb),product_Pair(A,B,Za,Zb)),transitive_rtrancl(product_prod(A,B),R))
=> ( ( product_Pair(A,B,Xa,Xb) != product_Pair(A,B,Za,Zb) )
=> ~ ! [A3: A,B2: B] :
( member(product_prod(product_prod(A,B),product_prod(A,B)),product_Pair(product_prod(A,B),product_prod(A,B),product_Pair(A,B,Xa,Xb),product_Pair(A,B,A3,B2)),R)
=> ~ member(product_prod(product_prod(A,B),product_prod(A,B)),product_Pair(product_prod(A,B),product_prod(A,B),product_Pair(A,B,A3,B2),product_Pair(A,B,Za,Zb)),transitive_rtrancl(product_prod(A,B),R)) ) ) ) ).
tff(fact_69_converse__rtrancl__induct2,axiom,
! [A: $tType,B: $tType,Pa: fun(A,fun(B,bool)),R: fun(product_prod(product_prod(A,B),product_prod(A,B)),bool),By: B,Bx: A,Ay: B,Ax: A] :
( member(product_prod(product_prod(A,B),product_prod(A,B)),product_Pair(product_prod(A,B),product_prod(A,B),product_Pair(A,B,Ax,Ay),product_Pair(A,B,Bx,By)),transitive_rtrancl(product_prod(A,B),R))
=> ( pp(aa(B,bool,aa(A,fun(B,bool),Pa,Bx),By))
=> ( ! [A3: A,B2: B,Aa: A,Ba: B] :
( member(product_prod(product_prod(A,B),product_prod(A,B)),product_Pair(product_prod(A,B),product_prod(A,B),product_Pair(A,B,A3,B2),product_Pair(A,B,Aa,Ba)),R)
=> ( member(product_prod(product_prod(A,B),product_prod(A,B)),product_Pair(product_prod(A,B),product_prod(A,B),product_Pair(A,B,Aa,Ba),product_Pair(A,B,Bx,By)),transitive_rtrancl(product_prod(A,B),R))
=> ( pp(aa(B,bool,aa(A,fun(B,bool),Pa,Aa),Ba))
=> pp(aa(B,bool,aa(A,fun(B,bool),Pa,A3),B2)) ) ) )
=> pp(aa(B,bool,aa(A,fun(B,bool),Pa,Ax),Ay)) ) ) ) ).
tff(fact_70_rtrancl__induct2,axiom,
! [A: $tType,B: $tType,Pa: fun(A,fun(B,bool)),R: fun(product_prod(product_prod(A,B),product_prod(A,B)),bool),By: B,Bx: A,Ay: B,Ax: A] :
( member(product_prod(product_prod(A,B),product_prod(A,B)),product_Pair(product_prod(A,B),product_prod(A,B),product_Pair(A,B,Ax,Ay),product_Pair(A,B,Bx,By)),transitive_rtrancl(product_prod(A,B),R))
=> ( pp(aa(B,bool,aa(A,fun(B,bool),Pa,Ax),Ay))
=> ( ! [A3: A,B2: B,Aa: A,Ba: B] :
( member(product_prod(product_prod(A,B),product_prod(A,B)),product_Pair(product_prod(A,B),product_prod(A,B),product_Pair(A,B,Ax,Ay),product_Pair(A,B,A3,B2)),transitive_rtrancl(product_prod(A,B),R))
=> ( member(product_prod(product_prod(A,B),product_prod(A,B)),product_Pair(product_prod(A,B),product_prod(A,B),product_Pair(A,B,A3,B2),product_Pair(A,B,Aa,Ba)),R)
=> ( pp(aa(B,bool,aa(A,fun(B,bool),Pa,A3),B2))
=> pp(aa(B,bool,aa(A,fun(B,bool),Pa,Aa),Ba)) ) ) )
=> pp(aa(B,bool,aa(A,fun(B,bool),Pa,Bx),By)) ) ) ) ).
tff(fact_71_rtranclE,axiom,
! [A: $tType,R: fun(product_prod(A,A),bool),B1: A,A2: A] :
( member(product_prod(A,A),product_Pair(A,A,A2,B1),transitive_rtrancl(A,R))
=> ( ( A2 != B1 )
=> ~ ! [Y: A] :
( member(product_prod(A,A),product_Pair(A,A,A2,Y),transitive_rtrancl(A,R))
=> ~ member(product_prod(A,A),product_Pair(A,A,Y,B1),R) ) ) ) ).
tff(fact_72_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_73_converse__rtrancl__induct,axiom,
! [A: $tType,Pa: fun(A,bool),R: fun(product_prod(A,A),bool),B1: A,A2: A] :
( member(product_prod(A,A),product_Pair(A,A,A2,B1),transitive_rtrancl(A,R))
=> ( pp(aa(A,bool,Pa,B1))
=> ( ! [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,B1),transitive_rtrancl(A,R))
=> ( pp(aa(A,bool,Pa,Z))
=> pp(aa(A,bool,Pa,Y)) ) ) )
=> pp(aa(A,bool,Pa,A2)) ) ) ) ).
tff(fact_74_rtrancl__induct,axiom,
! [A: $tType,Pa: fun(A,bool),R: fun(product_prod(A,A),bool),B1: A,A2: A] :
( member(product_prod(A,A),product_Pair(A,A,A2,B1),transitive_rtrancl(A,R))
=> ( pp(aa(A,bool,Pa,A2))
=> ( ! [Y: A,Z: A] :
( member(product_prod(A,A),product_Pair(A,A,A2,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,B1)) ) ) ) ).
tff(fact_75_ext,axiom,
! [B: $tType,A: $tType,G: fun(A,B),F1: fun(A,B)] :
( ! [X1: A] : ( aa(A,B,F1,X1) = aa(A,B,G,X1) )
=> ( F1 = G ) ) ).
tff(fact_76_mem__def,axiom,
! [A: $tType,A1: fun(A,bool),X: A] :
( member(A,X,A1)
<=> pp(aa(A,bool,A1,X)) ) ).
tff(fact_77_WTrtThrow,axiom,
! [Ta: ty,T_r1: ty,Ea: exp(list(char)),Ea1: fun(list(char),option(ty)),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),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,Ea1,Ea,T_r1)
=> ( is_refT(T_r1)
=> wTrt(Pa,Hb,Ea1,throw(list(char),Ea),Ta) ) ) ).
tff(fact_78_WTrt__elim__cases_I4_J,axiom,
! [Ta: ty,Ea: exp(list(char)),Ea1: fun(list(char),option(ty)),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),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,Ea1,throw(list(char),Ea),Ta)
=> ~ ! [T_r: ty] :
( wTrt(Pa,Hb,Ea1,Ea,T_r)
=> ~ is_refT(T_r) ) ) ).
tff(fact_79_FAssRedsThrow2,axiom,
! [D: list(char),F: list(char),S_2: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea: exp(list(char)),E_2: 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))))))))))),S_1: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),V: val1,S_0: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),E_1: 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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),E_1,S_0),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),val(list(char),V),S_1)),transitive_rtrancl(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),E_2,S_1),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),throw(list(char),Ea),S_2)),transitive_rtrancl(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),fAss(list(char),E_1,F,D,E_2),S_0),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),throw(list(char),Ea),S_2)),transitive_rtrancl(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),red(Pa))) ) ) ).
tff(fact_80_exp_Osimps_I8_J,axiom,
! [A: $tType,Exp23: exp(A),List23: list(char),List13: list(char),Exp13: exp(A),Exp22: exp(A),List22: list(char),List12: list(char),Exp12: exp(A)] :
( ( fAss(A,Exp12,List12,List22,Exp22) = fAss(A,Exp13,List13,List23,Exp23) )
<=> ( ( Exp12 = Exp13 )
& ( List12 = List13 )
& ( List22 = List23 )
& ( Exp22 = Exp23 ) ) ) ).
tff(fact_81_exp_Osimps_I101_J,axiom,
! [A: $tType,Exp21: exp(A),Bop: bop1,Exp11: exp(A),Exp2: exp(A),List2: list(char),List1: list(char),Exp1: exp(A)] : ( fAss(A,Exp1,List1,List2,Exp2) != binOp(A,Exp11,Bop,Exp21) ) ).
tff(fact_82_exp_Osimps_I100_J,axiom,
! [A: $tType,Exp2: exp(A),List2: list(char),List1: list(char),Exp1: exp(A),Exp21: exp(A),Bop: bop1,Exp11: exp(A)] : ( binOp(A,Exp11,Bop,Exp21) != fAss(A,Exp1,List1,List2,Exp2) ) ).
tff(fact_83_exp_Osimps_I180_J,axiom,
! [A: $tType,Exp: exp(A),Exp21: exp(A),List21: list(char),List11: list(char),Exp11: exp(A)] : ( fAss(A,Exp11,List11,List21,Exp21) != throw(A,Exp) ) ).
tff(fact_84_exp_Osimps_I181_J,axiom,
! [A: $tType,Exp21: exp(A),List21: list(char),List11: list(char),Exp11: exp(A),Exp: exp(A)] : ( throw(A,Exp) != fAss(A,Exp11,List11,List21,Exp21) ) ).
tff(fact_85_exp_Osimps_I79_J,axiom,
! [A: $tType,Val: val1,Exp2: exp(A),List2: list(char),List1: list(char),Exp1: exp(A)] : ( fAss(A,Exp1,List1,List2,Exp2) != val(A,Val) ) ).
tff(fact_86_exp_Osimps_I78_J,axiom,
! [A: $tType,Exp2: exp(A),List2: list(char),List1: list(char),Exp1: exp(A),Val: val1] : ( val(A,Val) != fAss(A,Exp1,List1,List2,Exp2) ) ).
tff(fact_87_red__reds_OFAssRed1,axiom,
! [E_2: exp(list(char)),D: list(char),F: 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(val1))))),fun(list(char),option(val1))),E_a: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea: 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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),E_a,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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),fAss(list(char),Ea,F,D,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(val1))))),fun(list(char),option(val1))),fAss(list(char),E_a,F,D,E_2),S1)),red(Pa)) ) ).
tff(fact_88_red__reds_OFAssRed2,axiom,
! [D: list(char),F: list(char),V: val1,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(val1))))),fun(list(char),option(val1))),E_a: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea: 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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),E_a,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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),fAss(list(char),val(list(char),V),F,D,Ea),S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),fAss(list(char),val(list(char),V),F,D,E_a),S1)),red(Pa)) ) ).
tff(fact_89_red__reds_OFAssThrow1,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(val1))))),fun(list(char),option(val1))),E_2: exp(list(char)),D: list(char),F: list(char),Ea: 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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),fAss(list(char),throw(list(char),Ea),F,D,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(val1))))),fun(list(char),option(val1))),throw(list(char),Ea),S)),red(Pa)) ).
tff(fact_90_FAssReds1,axiom,
! [E_2: exp(list(char)),D: list(char),F: 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(val1))))),fun(list(char),option(val1))),E_a: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea: 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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),E_a,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(val1))))),fun(list(char),option(val1)))),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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),fAss(list(char),Ea,F,D,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(val1))))),fun(list(char),option(val1))),fAss(list(char),E_a,F,D,E_2),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(val1))))),fun(list(char),option(val1)))),red(Pa))) ) ).
tff(fact_91_red__reds_OFAssThrow2,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(val1))))),fun(list(char),option(val1))),Ea: exp(list(char)),D: list(char),F: list(char),V: val1] : 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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),fAss(list(char),val(list(char),V),F,D,throw(list(char),Ea)),S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),throw(list(char),Ea),S)),red(Pa)) ).
tff(fact_92_FAssReds2,axiom,
! [D: list(char),F: list(char),V: val1,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(val1))))),fun(list(char),option(val1))),E_a: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea: 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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),E_a,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(val1))))),fun(list(char),option(val1)))),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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),fAss(list(char),val(list(char),V),F,D,Ea),S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),fAss(list(char),val(list(char),V),F,D,E_a),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(val1))))),fun(list(char),option(val1)))),red(Pa))) ) ).
tff(fact_93_FAssRedsThrow1,axiom,
! [E_2: exp(list(char)),D: list(char),F: 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(val1))))),fun(list(char),option(val1))),E_a: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea: 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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),throw(list(char),E_a),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(val1))))),fun(list(char),option(val1)))),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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),fAss(list(char),Ea,F,D,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(val1))))),fun(list(char),option(val1))),throw(list(char),E_a),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(val1))))),fun(list(char),option(val1)))),red(Pa))) ) ).
tff(fact_94_extend__eval,axiom,
! [S1: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),E_a: exp(list(char)),S2: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),E: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea: 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)))))))))))] :
( wf_prog(product_prod(list(list(char)),exp(list(char))),wwf_J_mdecl,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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),E,S2)),transitive_rtrancl(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),red(Pa)))
=> ( eval(Pa,E,S2,E_a,S1)
=> eval(Pa,Ea,S,E_a,S1) ) ) ) ).
tff(fact_95_big__by__small,axiom,
! [S1: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),E_a: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea: 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)))))))))))] :
( wf_prog(product_prod(list(list(char)),exp(list(char))),wwf_J_mdecl,Pa)
=> ( eval(Pa,Ea,S,E_a,S1)
=> 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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),E_a,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(val1))))),fun(list(char),option(val1)))),red(Pa))) ) ) ).
tff(fact_96_extend__1__eval,axiom,
! [S1: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),E_a: exp(list(char)),S2: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),E: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea: 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)))))))))))] :
( wf_prog(product_prod(list(list(char)),exp(list(char))),wwf_J_mdecl,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(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),E,S2)),red(Pa))
=> ( eval(Pa,E,S2,E_a,S1)
=> eval(Pa,Ea,S,E_a,S1) ) ) ) ).
tff(fact_97_eval__evals_OFAssThrow2,axiom,
! [D: list(char),F: list(char),S_2: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),E_a: exp(list(char)),E_2: exp(list(char)),S_1: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),V: val1,S_0: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),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)))))))))))] :
( eval(Pa,E_1,S_0,val(list(char),V),S_1)
=> ( eval(Pa,E_2,S_1,throw(list(char),E_a),S_2)
=> eval(Pa,fAss(list(char),E_1,F,D,E_2),S_0,throw(list(char),E_a),S_2) ) ) ).
tff(fact_98_eval__evals_OBinOpThrow2,axiom,
! [Bopa: bop1,S_2: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),Ea: exp(list(char)),E_2: exp(list(char)),S_1: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),V_1: val1,S_0: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),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)))))))))))] :
( eval(Pa,E_1,S_0,val(list(char),V_1),S_1)
=> ( eval(Pa,E_2,S_1,throw(list(char),Ea),S_2)
=> eval(Pa,binOp(list(char),E_1,Bopa,E_2),S_0,throw(list(char),Ea),S_2) ) ) ).
tff(fact_99_eval__cases_I2_J,axiom,
! [S1: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),E_a: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val1))))),fun(list(char),option(val1))),V: val1,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)))))))))))] :
( eval(Pa,val(list(char),V),S,E_a,S1)
=> ~ ( ( E_a = val(list(char),V) )
=> ( S1 != S ) ) ) ).
%----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,binOp(list(char),val(list(char),v_1),bop,e_2),T)
& widen(product_prod(list(list(char)),exp(list(char))),p,T,t) ) ).
%------------------------------------------------------------------------------