TPTP Problem File: SWW565_5.p
View Solutions
- Solve Problem
%------------------------------------------------------------------------------
% File : SWW565_5 : TPTP v8.2.0. Released v6.0.0.
% Domain : Software Verification
% Problem : Java type soundness line 265
% Version : Especial.
% English :
% Refs : [BN10] Boehme & Nipkow (2010), Sledgehammer: Judgement Day
% : [Bla13] Blanchette (2011), Email to Geoff Sutcliffe
% Source : [Bla13]
% Names : jinja_265 [Bla13]
% Status : Unknown
% Rating : 1.00 v6.4.0
% Syntax : Number of formulae : 155 ( 47 unt; 52 typ; 0 def)
% Number of atoms : 233 ( 62 equ)
% Maximal formula atoms : 11 ( 1 avg)
% Number of connectives : 173 ( 43 ~; 2 |; 9 &)
% ( 10 <=>; 109 =>; 0 <=; 0 <~>)
% Maximal formula depth : 19 ( 8 avg)
% Maximal term depth : 10 ( 3 avg)
% Number of types : 7 ( 6 usr)
% Number of type conns : 61 ( 28 >; 33 *; 0 +; 0 <<)
% Number of predicates : 11 ( 10 usr; 0 prp; 1-5 aty)
% Number of functors : 36 ( 36 usr; 18 con; 0-5 aty)
% Number of variables : 535 ( 506 !; 8 ?; 535 :)
% ( 21 !>; 0 ?*; 0 @-; 0 @+)
% SPC : TF1_UNK_EQU_NAR
% Comments : This file was generated by Isabelle (most likely Sledgehammer)
% 2011-12-13 16:19:11
%------------------------------------------------------------------------------
%----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,
val: $tType ).
tff(ty_tc_fun,type,
fun: ( $tType * $tType ) > $tType ).
tff(ty_tc_prod,type,
product_prod: ( $tType * $tType ) > $tType ).
%----Explicit typings (41)
tff(sy_c_Conform_Ohconf,type,
hconf:
!>[M: $tType] : ( ( list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,M)))))))) * fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))) ) > $o ) ).
tff(sy_c_Conform_Olconf,type,
lconf:
!>[M: $tType] : ( ( list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,M)))))))) * fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))) * fun(list(char),option(val)) * fun(list(char),option(ty)) ) > $o ) ).
tff(sy_c_Expr_Obop_OAdd,type,
add: bop1 ).
tff(sy_c_Expr_Obop_OEq,type,
c_Expr_Obop_OEq: bop1 ).
tff(sy_c_Expr_Obop_Obop__case,type,
bop_case:
!>[T: $tType] : ( ( T * T * bop1 ) > T ) ).
tff(sy_c_Expr_Obop_Obop__rec,type,
bop_rec:
!>[T: $tType] : ( ( T * T * bop1 ) > T ) ).
tff(sy_c_Expr_Oexp_OBinOp,type,
binOp:
!>[A1: $tType] : ( ( exp(A1) * bop1 * exp(A1) ) > exp(A1) ) ).
tff(sy_c_Expr_Oexp_OTryCatch,type,
tryCatch:
!>[A1: $tType] : ( ( exp(A1) * list(char) * A1 * exp(A1) ) > exp(A1) ) ).
tff(sy_c_Expr_Oexp_OVal,type,
val1:
!>[A1: $tType] : ( val > exp(A1) ) ).
tff(sy_c_Expr_Oexp_Othrow,type,
throw:
!>[A1: $tType] : ( exp(A1) > exp(A1) ) ).
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:
!>[A1: $tType,B1: $tType] : ( ( fun(A1,option(B1)) * fun(A1,option(B1)) ) > fun(A1,option(B1)) ) ).
tff(sy_c_Objects_Ohext,type,
hext: ( fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))) * fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))) ) > $o ).
tff(sy_c_Product__Type_OPair,type,
product_Pair:
!>[A1: $tType,B1: $tType] : ( ( A1 * B1 ) > product_prod(A1,B1) ) ).
tff(sy_c_Product__Type_Oprod_Oprod__rec,type,
product_prod_rec:
!>[A1: $tType,B1: $tType,T: $tType] : ( ( fun(A1,fun(B1,T)) * product_prod(A1,B1) ) > T ) ).
tff(sy_c_SmallStep_Ored,type,
red: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))) > fun(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),bool) ).
tff(sy_c_State_Ohp,type,
hp: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))) > fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))) ).
tff(sy_c_Transitive__Closure_Ortrancl,type,
transitive_rtrancl:
!>[A1: $tType] : ( fun(product_prod(A1,A1),bool) > fun(product_prod(A1,A1),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(val))))),fun(list(char),option(val))) ) > $o ).
tff(sy_c_Type_Oty_OBoolean,type,
boolean: ty ).
tff(sy_c_Type_Oty_OInteger,type,
integer: ty ).
tff(sy_c_WellForm_Owf__prog,type,
wf_prog:
!>[M: $tType] : ( ( fun(list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,M)))))))),fun(list(char),fun(product_prod(list(char),product_prod(list(ty),product_prod(ty,M))),bool))) * list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,M)))))))) ) > $o ) ).
tff(sy_c_WellTypeRT_OWTrt,type,
wTrt: ( list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))) * fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))) * fun(list(char),option(ty)) * exp(list(char)) * ty ) > $o ).
tff(sy_c_WellType_OWT,type,
wt: ( 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)) * exp(list(char)) * ty ) > $o ).
tff(sy_c_aa,type,
aa:
!>[A1: $tType,B1: $tType] : ( ( fun(A1,B1) * A1 ) > B1 ) ).
tff(sy_c_fFalse,type,
fFalse: bool ).
tff(sy_c_fTrue,type,
fTrue: bool ).
tff(sy_c_member,type,
member:
!>[A1: $tType] : ( ( A1 * fun(A1,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_0621_H____,type,
e_1: exp(list(char)) ).
tff(sy_v_e_092_060_094isub_0621____,type,
e_11: exp(list(char)) ).
tff(sy_v_e_092_060_094isub_0622____,type,
e_2: exp(list(char)) ).
tff(sy_v_h_Ha____,type,
h_a: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))) ).
tff(sy_v_ha____,type,
ha: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))) ).
tff(sy_v_l_Ha____,type,
l_a: fun(list(char),option(val)) ).
tff(sy_v_la____,type,
la: fun(list(char),option(val)) ).
%----Relevant facts (100)
tff(fact_0__096bop_A_061_AAdd_096,axiom,
bop = add ).
tff(fact_1__096P_ME_Mh_H_A_092_060turnstile_062_Ae_092_060_094isub_0622_A_058_AInteger_096,axiom,
wTrt(p,h_a,e,e_2,integer) ).
tff(fact_2__096T_A_061_AInteger_096,axiom,
t = integer ).
tff(fact_3__096EX_AU_O_AP_ME_Mh_H_A_092_060turnstile_062_Ae_092_060_094isub_0621_H_A_058_AU_A_G_AP_A_092_060turnstile_062_AU_A_092_060le_062_AInteger_096,axiom,
? [U1: ty] :
( wTrt(p,h_a,e,e_1,U1)
& widen(product_prod(list(list(char)),exp(list(char))),p,U1,integer) ) ).
tff(fact_4_wt_092_060_094isub_0622,axiom,
wTrt(p,ha,e,e_2,integer) ).
tff(fact_5_wt,axiom,
wTrt(p,ha,e,binOp(list(char),e_11,bop,e_2),t) ).
tff(fact_6_exp_Osimps_I4_J,axiom,
! [A1: $tType,Exp23: exp(A1),Bop2: bop1,Exp13: exp(A1),Exp22: exp(A1),Bopa: bop1,Exp12: exp(A1)] :
( ( binOp(A1,Exp12,Bopa,Exp22) = binOp(A1,Exp13,Bop2,Exp23) )
<=> ( ( Exp12 = Exp13 )
& ( Bopa = Bop2 )
& ( Exp22 = Exp23 ) ) ) ).
tff(fact_7_assms,axiom,
wf_prog(product_prod(list(list(char)),exp(list(char))),wf_J_mdecl,p) ).
tff(fact_8_BinOpRed1_I4_J,axiom,
wTrt(p,ha,e,binOp(list(char),e_11,bop,e_2),t) ).
tff(fact_9_wt_092_060_094isub_0621,axiom,
wTrt(p,ha,e,e_11,integer) ).
tff(fact_10_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(val))))),fun(list(char),option(val)),ha,la))
=> ( wTrt(p,ha,Ea1,e_11,Ta)
=> ? [U1: ty] :
( wTrt(p,h_a,Ea1,e_1,U1)
& widen(product_prod(list(list(char)),exp(list(char))),p,U1,Ta) ) ) ) ).
tff(fact_11_WTrtBinOpAdd,axiom,
! [E_2: exp(list(char)),E_1: 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(val))))),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char)))))))))))] :
( wTrt(Pa,Hb,Ea1,E_1,integer)
=> ( wTrt(Pa,Hb,Ea1,E_2,integer)
=> wTrt(Pa,Hb,Ea1,binOp(list(char),E_1,add,E_2),integer) ) ) ).
tff(fact_12_conf,axiom,
typeSa976492716_sconf(p,e,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),ha,la)) ).
tff(fact_13_WTrtBinOpEq,axiom,
! [T_2: ty,E_2: exp(list(char)),T_1: ty,E_1: 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(val))))),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char)))))))))))] :
( wTrt(Pa,Hb,Ea1,E_1,T_1)
=> ( wTrt(Pa,Hb,Ea1,E_2,T_2)
=> wTrt(Pa,Hb,Ea1,binOp(list(char),E_1,c_Expr_Obop_OEq,E_2),boolean) ) ) ).
tff(fact_14_BinOpRed1_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(val))))),fun(list(char),option(val)),ha,la))
=> ( wTrt(p,ha,Ea1,e_11,Ta)
=> ? [T2: ty] :
( wTrt(p,h_a,Ea1,e_1,T2)
& widen(product_prod(list(list(char)),exp(list(char))),p,T2,Ta) ) ) ) ).
tff(fact_15_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(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),e_11,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),ha,la)),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),e_1,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),h_a,l_a))),red(p)) ).
tff(fact_16_BinOpRed1_I3_J,axiom,
typeSa976492716_sconf(p,e,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),ha,la)) ).
tff(fact_17_bop_Osimps_I1_J,axiom,
c_Expr_Obop_OEq != add ).
tff(fact_18_bop_Osimps_I2_J,axiom,
add != c_Expr_Obop_OEq ).
tff(fact_19_bop_Oexhaust,axiom,
! [Y1: bop1] :
( ( Y1 != c_Expr_Obop_OEq )
=> ( Y1 = add ) ) ).
tff(fact_20_WTrt__elim__cases_I9_J,axiom,
! [Ta: ty,E_2: exp(list(char)),Bopa: bop1,E_1: 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(val))))),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char)))))))))))] :
( wTrt(Pa,Hb,Ea1,binOp(list(char),E_1,Bopa,E_2),Ta)
=> ( ( ( Ta = boolean )
=> ( ? [T_11: ty] : wTrt(Pa,Hb,Ea1,E_1,T_11)
=> ( ? [X12: ty] : wTrt(Pa,Hb,Ea1,E_2,X12)
=> ( Bopa != c_Expr_Obop_OEq ) ) ) )
=> ~ ( ( Ta = integer )
=> ( wTrt(Pa,Hb,Ea1,E_1,integer)
=> ( wTrt(Pa,Hb,Ea1,E_2,integer)
=> ( Bopa != add ) ) ) ) ) ) ).
tff(fact_21_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(val))))),fun(list(char),option(val))),E_a: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),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(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Ea,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_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(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),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(val))))),fun(list(char),option(val))),binOp(list(char),E_a,Bopa,E_2),S1)),red(Pa)) ) ).
tff(fact_22_widen__refl,axiom,
! [M: $tType,T1: 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,T1,T1) ).
tff(fact_23_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(val)),H_b: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),E_a: exp(list(char)),Lb: fun(list(char),option(val)),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),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(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Ea,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),Hb,Lb)),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_a,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),H_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_24_split__paired__All,axiom,
! [A1: $tType,B1: $tType,Pa: fun(product_prod(A1,B1),bool)] :
( ! [X11: product_prod(A1,B1)] : pp(aa(product_prod(A1,B1),bool,Pa,X11))
<=> ! [A6: A1,B3: B1] : pp(aa(product_prod(A1,B1),bool,Pa,product_Pair(A1,B1,A6,B3))) ) ).
tff(fact_25_Pair__eq,axiom,
! [A1: $tType,B1: $tType,B6: B1,A3: A1,B: B1,A: A1] :
( ( product_Pair(A1,B1,A,B) = product_Pair(A1,B1,A3,B6) )
<=> ( ( A = A3 )
& ( B = B6 ) ) ) ).
tff(fact_26_Type_Oty_Osimps_I10_J,axiom,
boolean != integer ).
tff(fact_27_Type_Oty_Osimps_I11_J,axiom,
integer != boolean ).
tff(fact_28_Pair__inject,axiom,
! [A1: $tType,B1: $tType,B5: B1,A2: A1,B4: B1,A7: A1] :
( ( product_Pair(A1,B1,A7,B4) = product_Pair(A1,B1,A2,B5) )
=> ~ ( ( A7 = A2 )
=> ( B4 != B5 ) ) ) ).
tff(fact_29_widen__trans,axiom,
! [A1: $tType,T1: ty,U: ty,S3: 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,A1))))))))] :
( widen(A1,P1,S3,U)
=> ( widen(A1,P1,U,T1)
=> widen(A1,P1,S3,T1) ) ) ).
tff(fact_30_prod__cases4,axiom,
! [A1: $tType,B1: $tType,C2: $tType,D: $tType,Y1: product_prod(A1,product_prod(B1,product_prod(C2,D)))] :
~ ! [A5: A1,B2: B1,C3: C2,D1: D] : Y1 != product_Pair(A1,product_prod(B1,product_prod(C2,D)),A5,product_Pair(B1,product_prod(C2,D),B2,product_Pair(C2,D,C3,D1))) ).
tff(fact_31_prod__induct4,axiom,
! [D: $tType,C2: $tType,B1: $tType,A1: $tType,X: product_prod(A1,product_prod(B1,product_prod(C2,D))),Pa: fun(product_prod(A1,product_prod(B1,product_prod(C2,D))),bool)] :
( ! [A5: A1,B2: B1,C3: C2,D1: D] : pp(aa(product_prod(A1,product_prod(B1,product_prod(C2,D))),bool,Pa,product_Pair(A1,product_prod(B1,product_prod(C2,D)),A5,product_Pair(B1,product_prod(C2,D),B2,product_Pair(C2,D,C3,D1)))))
=> pp(aa(product_prod(A1,product_prod(B1,product_prod(C2,D))),bool,Pa,X)) ) ).
tff(fact_32_prod__cases5,axiom,
! [A1: $tType,B1: $tType,C2: $tType,D: $tType,E: $tType,Y1: product_prod(A1,product_prod(B1,product_prod(C2,product_prod(D,E))))] :
~ ! [A5: A1,B2: B1,C3: C2,D1: D,E1: E] : Y1 != product_Pair(A1,product_prod(B1,product_prod(C2,product_prod(D,E))),A5,product_Pair(B1,product_prod(C2,product_prod(D,E)),B2,product_Pair(C2,product_prod(D,E),C3,product_Pair(D,E,D1,E1)))) ).
tff(fact_33_prod__induct5,axiom,
! [E: $tType,D: $tType,C2: $tType,B1: $tType,A1: $tType,X: product_prod(A1,product_prod(B1,product_prod(C2,product_prod(D,E)))),Pa: fun(product_prod(A1,product_prod(B1,product_prod(C2,product_prod(D,E)))),bool)] :
( ! [A5: A1,B2: B1,C3: C2,D1: D,E1: E] : pp(aa(product_prod(A1,product_prod(B1,product_prod(C2,product_prod(D,E)))),bool,Pa,product_Pair(A1,product_prod(B1,product_prod(C2,product_prod(D,E))),A5,product_Pair(B1,product_prod(C2,product_prod(D,E)),B2,product_Pair(C2,product_prod(D,E),C3,product_Pair(D,E,D1,E1))))))
=> pp(aa(product_prod(A1,product_prod(B1,product_prod(C2,product_prod(D,E)))),bool,Pa,X)) ) ).
tff(fact_34_prod__cases6,axiom,
! [A1: $tType,B1: $tType,C2: $tType,D: $tType,E: $tType,F: $tType,Y1: product_prod(A1,product_prod(B1,product_prod(C2,product_prod(D,product_prod(E,F)))))] :
~ ! [A5: A1,B2: B1,C3: C2,D1: D,E1: E,F3: F] : Y1 != product_Pair(A1,product_prod(B1,product_prod(C2,product_prod(D,product_prod(E,F)))),A5,product_Pair(B1,product_prod(C2,product_prod(D,product_prod(E,F))),B2,product_Pair(C2,product_prod(D,product_prod(E,F)),C3,product_Pair(D,product_prod(E,F),D1,product_Pair(E,F,E1,F3))))) ).
tff(fact_35_prod__induct6,axiom,
! [F: $tType,E: $tType,D: $tType,C2: $tType,B1: $tType,A1: $tType,X: product_prod(A1,product_prod(B1,product_prod(C2,product_prod(D,product_prod(E,F))))),Pa: fun(product_prod(A1,product_prod(B1,product_prod(C2,product_prod(D,product_prod(E,F))))),bool)] :
( ! [A5: A1,B2: B1,C3: C2,D1: D,E1: E,F3: F] : pp(aa(product_prod(A1,product_prod(B1,product_prod(C2,product_prod(D,product_prod(E,F))))),bool,Pa,product_Pair(A1,product_prod(B1,product_prod(C2,product_prod(D,product_prod(E,F)))),A5,product_Pair(B1,product_prod(C2,product_prod(D,product_prod(E,F))),B2,product_Pair(C2,product_prod(D,product_prod(E,F)),C3,product_Pair(D,product_prod(E,F),D1,product_Pair(E,F,E1,F3)))))))
=> pp(aa(product_prod(A1,product_prod(B1,product_prod(C2,product_prod(D,product_prod(E,F))))),bool,Pa,X)) ) ).
tff(fact_36_split__paired__Ex,axiom,
! [A1: $tType,B1: $tType,Pa: fun(product_prod(A1,B1),bool)] :
( ? [X11: product_prod(A1,B1)] : pp(aa(product_prod(A1,B1),bool,Pa,X11))
<=> ? [A6: A1,B3: B1] : pp(aa(product_prod(A1,B1),bool,Pa,product_Pair(A1,B1,A6,B3))) ) ).
tff(fact_37_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(val)),H_b: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),E_a: exp(list(char)),Lb: fun(list(char),option(val)),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),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(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Ea,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),Hb,Lb)),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_a,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),H_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_38_prod__induct3,axiom,
! [C2: $tType,B1: $tType,A1: $tType,X: product_prod(A1,product_prod(B1,C2)),Pa: fun(product_prod(A1,product_prod(B1,C2)),bool)] :
( ! [A5: A1,B2: B1,C3: C2] : pp(aa(product_prod(A1,product_prod(B1,C2)),bool,Pa,product_Pair(A1,product_prod(B1,C2),A5,product_Pair(B1,C2,B2,C3))))
=> pp(aa(product_prod(A1,product_prod(B1,C2)),bool,Pa,X)) ) ).
tff(fact_39_prod__cases3,axiom,
! [A1: $tType,B1: $tType,C2: $tType,Y1: product_prod(A1,product_prod(B1,C2))] :
~ ! [A5: A1,B2: B1,C3: C2] : Y1 != product_Pair(A1,product_prod(B1,C2),A5,product_Pair(B1,C2,B2,C3)) ).
tff(fact_40_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(val))))),fun(list(char),option(val))),E_a: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),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(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Ea,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_a,S1)),red(Pa))
=> ( wTrt(Pa,hp(S),Ea1,Ea,Ta)
=> ( typeSa976492716_sconf(Pa,Ea1,S)
=> typeSa976492716_sconf(Pa,Ea1,S1) ) ) ) ).
tff(fact_41_prod_Orecs,axiom,
! [B1: $tType,A1: $tType,C2: $tType,B: C2,A: B1,F11: fun(B1,fun(C2,A1))] : product_prod_rec(B1,C2,A1,F11,product_Pair(B1,C2,A,B)) = aa(C2,A1,aa(B1,fun(C2,A1),F11,A),B) ).
tff(fact_42_bop_Osimps_I3_J,axiom,
! [T: $tType,F2: T,F1: T] : bop_case(T,F1,F2,c_Expr_Obop_OEq) = F1 ).
tff(fact_43_bop_Orecs_I1_J,axiom,
! [T: $tType,F2: T,F1: T] : bop_rec(T,F1,F2,c_Expr_Obop_OEq) = F1 ).
tff(fact_44_bop_Osimps_I4_J,axiom,
! [T: $tType,F2: T,F1: T] : bop_case(T,F1,F2,add) = F2 ).
tff(fact_45_bop_Orecs_I2_J,axiom,
! [T: $tType,F2: T,F1: T] : bop_rec(T,F1,F2,add) = F2 ).
tff(fact_46_red__hext__incr,axiom,
! [Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))),L_b: fun(list(char),option(val)),H_b: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),E_a: exp(list(char)),Lb: fun(list(char),option(val)),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),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(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Ea,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),Hb,Lb)),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_a,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),H_b,L_b))),red(Pa))
=> hext(Hb,H_b) ) ).
tff(fact_47_WT__elim__cases_I9_J,axiom,
! [Ta: ty,E_2: exp(list(char)),Bopa: bop1,E_1: exp(list(char)),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)))))))))))] :
( wt(Pa,Ea1,binOp(list(char),E_1,Bopa,E_2),Ta)
=> ( ( ( Ta = boolean )
=> ! [T_11: ty] :
( wt(Pa,Ea1,E_1,T_11)
=> ! [T_21: ty] :
( wt(Pa,Ea1,E_2,T_21)
=> ( ( widen(product_prod(list(list(char)),exp(list(char))),Pa,T_11,T_21)
| widen(product_prod(list(list(char)),exp(list(char))),Pa,T_21,T_11) )
=> ( Bopa != c_Expr_Obop_OEq ) ) ) ) )
=> ~ ( ( Ta = integer )
=> ( wt(Pa,Ea1,E_1,integer)
=> ( wt(Pa,Ea1,E_2,integer)
=> ( Bopa != add ) ) ) ) ) ) ).
tff(fact_48_red__lcl__add,axiom,
! [L_0: fun(list(char),option(val)),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))),L_b: fun(list(char),option(val)),H_b: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),E_a: exp(list(char)),Lb: fun(list(char),option(val)),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),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(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Ea,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),Hb,Lb)),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_a,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),H_b,L_b))),red(Pa))
=> member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Ea,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),Hb,map_add(list(char),val,L_0,Lb))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_a,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),H_b,map_add(list(char),val,L_0,L_b)))),red(Pa)) ) ).
tff(fact_49_pred__equals__eq2,axiom,
! [B1: $tType,A1: $tType,S2: fun(product_prod(A1,B1),bool),R1: fun(product_prod(A1,B1),bool)] :
( ! [X1: A1,Xa1: B1] :
( member(product_prod(A1,B1),product_Pair(A1,B1,X1,Xa1),R1)
<=> member(product_prod(A1,B1),product_Pair(A1,B1,X1,Xa1),S2) )
<=> ( R1 = S2 ) ) ).
tff(fact_50_WTBinOpAdd,axiom,
! [E_2: exp(list(char)),E_1: exp(list(char)),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)))))))))))] :
( wt(Pa,Ea1,E_1,integer)
=> ( wt(Pa,Ea1,E_2,integer)
=> wt(Pa,Ea1,binOp(list(char),E_1,add,E_2),integer) ) ) ).
tff(fact_51_WTBinOpEq,axiom,
! [T_2: ty,E_2: exp(list(char)),T_1: ty,E_1: exp(list(char)),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)))))))))))] :
( wt(Pa,Ea1,E_1,T_1)
=> ( wt(Pa,Ea1,E_2,T_2)
=> ( ( widen(product_prod(list(list(char)),exp(list(char))),Pa,T_1,T_2)
| widen(product_prod(list(list(char)),exp(list(char))),Pa,T_2,T_1) )
=> wt(Pa,Ea1,binOp(list(char),E_1,c_Expr_Obop_OEq,E_2),boolean) ) ) ) ).
tff(fact_52_WT__implies__WTrt,axiom,
! [Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),Ta: ty,Ea: exp(list(char)),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)))))))))))] :
( wt(Pa,Ea1,Ea,Ta)
=> wTrt(Pa,Hb,Ea1,Ea,Ta) ) ).
tff(fact_53_WTrt__hext__mono,axiom,
! [H_b: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),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(val))))),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char)))))))))))] :
( wTrt(Pa,Hb,Ea1,Ea,Ta)
=> ( hext(Hb,H_b)
=> wTrt(Pa,H_b,Ea1,Ea,Ta) ) ) ).
tff(fact_54_hext__refl,axiom,
! [Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val)))))] : hext(Hb,Hb) ).
tff(fact_55_map__add__assoc,axiom,
! [B1: $tType,A1: $tType,M3: fun(A1,option(B1)),M2: fun(A1,option(B1)),M1: fun(A1,option(B1))] : map_add(A1,B1,M1,map_add(A1,B1,M2,M3)) = map_add(A1,B1,map_add(A1,B1,M1,M2),M3) ).
tff(fact_56_lconf__hext,axiom,
! [A1: $tType,H_b: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),Ea1: fun(list(char),option(ty)),Lb: fun(list(char),option(val)),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,A1))))))))] :
( lconf(A1,Pa,Hb,Lb,Ea1)
=> ( hext(Hb,H_b)
=> lconf(A1,Pa,H_b,Lb,Ea1) ) ) ).
tff(fact_57_Red__lcl__add,axiom,
! [L_0: fun(list(char),option(val)),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))),L_b: fun(list(char),option(val)),H_b: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),E_a: exp(list(char)),Lb: fun(list(char),option(val)),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),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(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Ea,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),Hb,Lb)),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_a,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),H_b,L_b))),transitive_rtrancl(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),red(Pa)))
=> member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Ea,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),Hb,map_add(list(char),val,L_0,Lb))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_a,product_Pair(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)),H_b,map_add(list(char),val,L_0,L_b)))),transitive_rtrancl(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),red(Pa))) ) ).
tff(fact_58_hext__trans,axiom,
! [H: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),H_b: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val)))))] :
( hext(Hb,H_b)
=> ( hext(H_b,H)
=> hext(Hb,H) ) ) ).
tff(fact_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(val))))),fun(list(char),option(val))),E_a: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),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(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Ea,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_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(val))))),fun(list(char),option(val)))),red(Pa)))
=> member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),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(val))))),fun(list(char),option(val))),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(val))))),fun(list(char),option(val)))),red(Pa))) ) ).
tff(fact_60_rtrancl_Ortrancl__refl,axiom,
! [A1: $tType,R: fun(product_prod(A1,A1),bool),A: A1] : member(product_prod(A1,A1),product_Pair(A1,A1,A,A),transitive_rtrancl(A1,R)) ).
tff(fact_61_rtrancl__idemp,axiom,
! [A1: $tType,R: fun(product_prod(A1,A1),bool)] : transitive_rtrancl(A1,transitive_rtrancl(A1,R)) = transitive_rtrancl(A1,R) ).
tff(fact_62_r__into__rtrancl,axiom,
! [A1: $tType,R: fun(product_prod(A1,A1),bool),P: product_prod(A1,A1)] :
( member(product_prod(A1,A1),P,R)
=> member(product_prod(A1,A1),P,transitive_rtrancl(A1,R)) ) ).
tff(fact_63_converse__rtrancl__into__rtrancl,axiom,
! [A1: $tType,C1: A1,R: fun(product_prod(A1,A1),bool),B: A1,A: A1] :
( member(product_prod(A1,A1),product_Pair(A1,A1,A,B),R)
=> ( member(product_prod(A1,A1),product_Pair(A1,A1,B,C1),transitive_rtrancl(A1,R))
=> member(product_prod(A1,A1),product_Pair(A1,A1,A,C1),transitive_rtrancl(A1,R)) ) ) ).
tff(fact_64_rtrancl_Ortrancl__into__rtrancl,axiom,
! [A1: $tType,C1: A1,R: fun(product_prod(A1,A1),bool),B: A1,A: A1] :
( member(product_prod(A1,A1),product_Pair(A1,A1,A,B),transitive_rtrancl(A1,R))
=> ( member(product_prod(A1,A1),product_Pair(A1,A1,B,C1),R)
=> member(product_prod(A1,A1),product_Pair(A1,A1,A,C1),transitive_rtrancl(A1,R)) ) ) ).
tff(fact_65_rtrancl__trans,axiom,
! [A1: $tType,C1: A1,R: fun(product_prod(A1,A1),bool),B: A1,A: A1] :
( member(product_prod(A1,A1),product_Pair(A1,A1,A,B),transitive_rtrancl(A1,R))
=> ( member(product_prod(A1,A1),product_Pair(A1,A1,B,C1),transitive_rtrancl(A1,R))
=> member(product_prod(A1,A1),product_Pair(A1,A1,A,C1),transitive_rtrancl(A1,R)) ) ) ).
tff(fact_66_rtrancl__induct2,axiom,
! [A1: $tType,B1: $tType,Pa: fun(A1,fun(B1,bool)),R: fun(product_prod(product_prod(A1,B1),product_prod(A1,B1)),bool),By: B1,Bx: A1,Ay: B1,Ax: A1] :
( member(product_prod(product_prod(A1,B1),product_prod(A1,B1)),product_Pair(product_prod(A1,B1),product_prod(A1,B1),product_Pair(A1,B1,Ax,Ay),product_Pair(A1,B1,Bx,By)),transitive_rtrancl(product_prod(A1,B1),R))
=> ( pp(aa(B1,bool,aa(A1,fun(B1,bool),Pa,Ax),Ay))
=> ( ! [A5: A1,B2: B1,Aa: A1,Ba: B1] :
( member(product_prod(product_prod(A1,B1),product_prod(A1,B1)),product_Pair(product_prod(A1,B1),product_prod(A1,B1),product_Pair(A1,B1,Ax,Ay),product_Pair(A1,B1,A5,B2)),transitive_rtrancl(product_prod(A1,B1),R))
=> ( member(product_prod(product_prod(A1,B1),product_prod(A1,B1)),product_Pair(product_prod(A1,B1),product_prod(A1,B1),product_Pair(A1,B1,A5,B2),product_Pair(A1,B1,Aa,Ba)),R)
=> ( pp(aa(B1,bool,aa(A1,fun(B1,bool),Pa,A5),B2))
=> pp(aa(B1,bool,aa(A1,fun(B1,bool),Pa,Aa),Ba)) ) ) )
=> pp(aa(B1,bool,aa(A1,fun(B1,bool),Pa,Bx),By)) ) ) ) ).
tff(fact_67_converse__rtrancl__induct2,axiom,
! [A1: $tType,B1: $tType,Pa: fun(A1,fun(B1,bool)),R: fun(product_prod(product_prod(A1,B1),product_prod(A1,B1)),bool),By: B1,Bx: A1,Ay: B1,Ax: A1] :
( member(product_prod(product_prod(A1,B1),product_prod(A1,B1)),product_Pair(product_prod(A1,B1),product_prod(A1,B1),product_Pair(A1,B1,Ax,Ay),product_Pair(A1,B1,Bx,By)),transitive_rtrancl(product_prod(A1,B1),R))
=> ( pp(aa(B1,bool,aa(A1,fun(B1,bool),Pa,Bx),By))
=> ( ! [A5: A1,B2: B1,Aa: A1,Ba: B1] :
( member(product_prod(product_prod(A1,B1),product_prod(A1,B1)),product_Pair(product_prod(A1,B1),product_prod(A1,B1),product_Pair(A1,B1,A5,B2),product_Pair(A1,B1,Aa,Ba)),R)
=> ( member(product_prod(product_prod(A1,B1),product_prod(A1,B1)),product_Pair(product_prod(A1,B1),product_prod(A1,B1),product_Pair(A1,B1,Aa,Ba),product_Pair(A1,B1,Bx,By)),transitive_rtrancl(product_prod(A1,B1),R))
=> ( pp(aa(B1,bool,aa(A1,fun(B1,bool),Pa,Aa),Ba))
=> pp(aa(B1,bool,aa(A1,fun(B1,bool),Pa,A5),B2)) ) ) )
=> pp(aa(B1,bool,aa(A1,fun(B1,bool),Pa,Ax),Ay)) ) ) ) ).
tff(fact_68_converse__rtranclE2,axiom,
! [B1: $tType,A1: $tType,R: fun(product_prod(product_prod(A1,B1),product_prod(A1,B1)),bool),Zb: B1,Za: A1,Xb: B1,Xa: A1] :
( member(product_prod(product_prod(A1,B1),product_prod(A1,B1)),product_Pair(product_prod(A1,B1),product_prod(A1,B1),product_Pair(A1,B1,Xa,Xb),product_Pair(A1,B1,Za,Zb)),transitive_rtrancl(product_prod(A1,B1),R))
=> ( ( product_Pair(A1,B1,Xa,Xb) != product_Pair(A1,B1,Za,Zb) )
=> ~ ! [A5: A1,B2: B1] :
( member(product_prod(product_prod(A1,B1),product_prod(A1,B1)),product_Pair(product_prod(A1,B1),product_prod(A1,B1),product_Pair(A1,B1,Xa,Xb),product_Pair(A1,B1,A5,B2)),R)
=> ~ member(product_prod(product_prod(A1,B1),product_prod(A1,B1)),product_Pair(product_prod(A1,B1),product_prod(A1,B1),product_Pair(A1,B1,A5,B2),product_Pair(A1,B1,Za,Zb)),transitive_rtrancl(product_prod(A1,B1),R)) ) ) ) ).
tff(fact_69_rtranclE,axiom,
! [A1: $tType,R: fun(product_prod(A1,A1),bool),B: A1,A: A1] :
( member(product_prod(A1,A1),product_Pair(A1,A1,A,B),transitive_rtrancl(A1,R))
=> ( ( A != B )
=> ~ ! [Y: A1] :
( member(product_prod(A1,A1),product_Pair(A1,A1,A,Y),transitive_rtrancl(A1,R))
=> ~ member(product_prod(A1,A1),product_Pair(A1,A1,Y,B),R) ) ) ) ).
tff(fact_70_converse__rtranclE,axiom,
! [A1: $tType,R: fun(product_prod(A1,A1),bool),Z1: A1,X: A1] :
( member(product_prod(A1,A1),product_Pair(A1,A1,X,Z1),transitive_rtrancl(A1,R))
=> ( ( X != Z1 )
=> ~ ! [Y: A1] :
( member(product_prod(A1,A1),product_Pair(A1,A1,X,Y),R)
=> ~ member(product_prod(A1,A1),product_Pair(A1,A1,Y,Z1),transitive_rtrancl(A1,R)) ) ) ) ).
tff(fact_71_converse__rtrancl__induct,axiom,
! [A1: $tType,Pa: fun(A1,bool),R: fun(product_prod(A1,A1),bool),B: A1,A: A1] :
( member(product_prod(A1,A1),product_Pair(A1,A1,A,B),transitive_rtrancl(A1,R))
=> ( pp(aa(A1,bool,Pa,B))
=> ( ! [Y: A1,Z: A1] :
( member(product_prod(A1,A1),product_Pair(A1,A1,Y,Z),R)
=> ( member(product_prod(A1,A1),product_Pair(A1,A1,Z,B),transitive_rtrancl(A1,R))
=> ( pp(aa(A1,bool,Pa,Z))
=> pp(aa(A1,bool,Pa,Y)) ) ) )
=> pp(aa(A1,bool,Pa,A)) ) ) ) ).
tff(fact_72_rtrancl__induct,axiom,
! [A1: $tType,Pa: fun(A1,bool),R: fun(product_prod(A1,A1),bool),B: A1,A: A1] :
( member(product_prod(A1,A1),product_Pair(A1,A1,A,B),transitive_rtrancl(A1,R))
=> ( pp(aa(A1,bool,Pa,A))
=> ( ! [Y: A1,Z: A1] :
( member(product_prod(A1,A1),product_Pair(A1,A1,A,Y),transitive_rtrancl(A1,R))
=> ( member(product_prod(A1,A1),product_Pair(A1,A1,Y,Z),R)
=> ( pp(aa(A1,bool,Pa,Y))
=> pp(aa(A1,bool,Pa,Z)) ) ) )
=> pp(aa(A1,bool,Pa,B)) ) ) ) ).
tff(fact_73_BinOp2Reds,axiom,
! [Bopa: bop1,V: val,Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))),S1: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_a: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),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(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Ea,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_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(val))))),fun(list(char),option(val)))),red(Pa)))
=> member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),binOp(list(char),val1(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(val))))),fun(list(char),option(val))),binOp(list(char),val1(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(val))))),fun(list(char),option(val)))),red(Pa))) ) ).
tff(fact_74_exp_Osimps_I3_J,axiom,
! [A1: $tType,Val2: val,Val1: val] :
( ( val1(A1,Val1) = val1(A1,Val2) )
<=> ( Val1 = Val2 ) ) ).
tff(fact_75_mem__def,axiom,
! [A1: $tType,A4: fun(A1,bool),X: A1] :
( member(A1,X,A4)
<=> pp(aa(A1,bool,A4,X)) ) ).
tff(fact_76_exp_Osimps_I70_J,axiom,
! [A1: $tType,Exp21: exp(A1),Bop1: bop1,Exp11: exp(A1),Val: val] : val1(A1,Val) != binOp(A1,Exp11,Bop1,Exp21) ).
tff(fact_77_exp_Osimps_I71_J,axiom,
! [A1: $tType,Val: val,Exp21: exp(A1),Bop1: bop1,Exp11: exp(A1)] : binOp(A1,Exp11,Bop1,Exp21) != val1(A1,Val) ).
tff(fact_78_red__reds_OBinOpRed2,axiom,
! [Bopa: bop1,V_1: val,Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))),S1: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_a: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),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(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Ea,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_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(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),binOp(list(char),val1(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(val))))),fun(list(char),option(val))),binOp(list(char),val1(list(char),V_1),Bopa,E_a),S1)),red(Pa)) ) ).
tff(fact_79_BinOpRedsThrow2,axiom,
! [Bopa: bop1,S_2: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),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(val))))),fun(list(char),option(val))),V_1: val,S_0: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),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(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),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(val))))),fun(list(char),option(val))),val1(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(val))))),fun(list(char),option(val)))),red(Pa)))
=> ( member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),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(val))))),fun(list(char),option(val))),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(val))))),fun(list(char),option(val)))),red(Pa)))
=> member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),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(val))))),fun(list(char),option(val))),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(val))))),fun(list(char),option(val)))),red(Pa))) ) ) ).
tff(fact_80_TryRedsVal,axiom,
! [E_2: exp(list(char)),V1: list(char),C: list(char),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))),S1: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),V: val,S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),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(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Ea,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),val1(list(char),V),S1)),transitive_rtrancl(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),red(Pa)))
=> member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),tryCatch(list(char),Ea,C,V1,E_2),S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),val1(list(char),V),S1)),transitive_rtrancl(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),red(Pa))) ) ).
tff(fact_81_exp_Osimps_I14_J,axiom,
! [A1: $tType,Exp5: exp(A1),Exp4: exp(A1)] :
( ( throw(A1,Exp4) = throw(A1,Exp5) )
<=> ( Exp4 = Exp5 ) ) ).
tff(fact_82_exp_Osimps_I15_J,axiom,
! [A1: $tType,Exp23: exp(A1),A3: A1,List2: list(char),Exp13: exp(A1),Exp22: exp(A1),A: A1,List1: list(char),Exp12: exp(A1)] :
( ( tryCatch(A1,Exp12,List1,A,Exp22) = tryCatch(A1,Exp13,List2,A3,Exp23) )
<=> ( ( Exp12 = Exp13 )
& ( List1 = List2 )
& ( A = A3 )
& ( Exp22 = Exp23 ) ) ) ).
tff(fact_83_exp_Osimps_I93_J,axiom,
! [A1: $tType,Val: val,Exp21: exp(A1),A2: A1,List: list(char),Exp11: exp(A1)] : tryCatch(A1,Exp11,List,A2,Exp21) != val1(A1,Val) ).
tff(fact_84_exp_Osimps_I92_J,axiom,
! [A1: $tType,Exp21: exp(A1),A2: A1,List: list(char),Exp11: exp(A1),Val: val] : val1(A1,Val) != tryCatch(A1,Exp11,List,A2,Exp21) ).
tff(fact_85_exp_Osimps_I91_J,axiom,
! [A1: $tType,Val: val,Exp: exp(A1)] : throw(A1,Exp) != val1(A1,Val) ).
tff(fact_86_exp_Osimps_I90_J,axiom,
! [A1: $tType,Exp: exp(A1),Val: val] : val1(A1,Val) != throw(A1,Exp) ).
tff(fact_87_exp_Osimps_I115_J,axiom,
! [A1: $tType,Exp2: exp(A1),Bop: bop1,Exp1: exp(A1),Exp21: exp(A1),A2: A1,List: list(char),Exp11: exp(A1)] : tryCatch(A1,Exp11,List,A2,Exp21) != binOp(A1,Exp1,Bop,Exp2) ).
tff(fact_88_exp_Osimps_I114_J,axiom,
! [A1: $tType,Exp21: exp(A1),A2: A1,List: list(char),Exp11: exp(A1),Exp2: exp(A1),Bop: bop1,Exp1: exp(A1)] : binOp(A1,Exp1,Bop,Exp2) != tryCatch(A1,Exp11,List,A2,Exp21) ).
tff(fact_89_exp_Osimps_I224_J,axiom,
! [A1: $tType,Exp21: exp(A1),A2: A1,List: list(char),Exp11: exp(A1),Exp3: exp(A1)] : throw(A1,Exp3) != tryCatch(A1,Exp11,List,A2,Exp21) ).
tff(fact_90_exp_Osimps_I225_J,axiom,
! [A1: $tType,Exp3: exp(A1),Exp21: exp(A1),A2: A1,List: list(char),Exp11: exp(A1)] : tryCatch(A1,Exp11,List,A2,Exp21) != throw(A1,Exp3) ).
tff(fact_91_exp_Osimps_I112_J,axiom,
! [A1: $tType,Exp: exp(A1),Exp2: exp(A1),Bop: bop1,Exp1: exp(A1)] : binOp(A1,Exp1,Bop,Exp2) != throw(A1,Exp) ).
tff(fact_92_exp_Osimps_I113_J,axiom,
! [A1: $tType,Exp2: exp(A1),Bop: bop1,Exp1: exp(A1),Exp: exp(A1)] : throw(A1,Exp) != binOp(A1,Exp1,Bop,Exp2) ).
tff(fact_93_red__reds_OThrowRed,axiom,
! [Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))),S1: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_a: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),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(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Ea,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_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(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),throw(list(char),Ea),S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),throw(list(char),E_a),S1)),red(Pa)) ) ).
tff(fact_94_red__reds_OThrowThrow,axiom,
! [Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),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(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),throw(list(char),throw(list(char),Ea)),S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),throw(list(char),Ea),S)),red(Pa)) ).
tff(fact_95_red__reds_OTryRed,axiom,
! [E_2: exp(list(char)),V1: list(char),C: list(char),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))),S1: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_a: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),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(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Ea,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_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(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),tryCatch(list(char),Ea,C,V1,E_2),S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),tryCatch(list(char),E_a,C,V1,E_2),S1)),red(Pa)) ) ).
tff(fact_96_ThrowReds,axiom,
! [Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))),S1: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_a: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),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(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Ea,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_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(val))))),fun(list(char),option(val)))),red(Pa)))
=> member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),throw(list(char),Ea),S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),throw(list(char),E_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(val))))),fun(list(char),option(val)))),red(Pa))) ) ).
tff(fact_97_ThrowRedsThrow,axiom,
! [Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))),S1: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),A: exp(list(char)),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),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(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),Ea,S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),throw(list(char),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(val))))),fun(list(char),option(val)))),red(Pa)))
=> member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),throw(list(char),Ea),S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),throw(list(char),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(val))))),fun(list(char),option(val)))),red(Pa))) ) ).
tff(fact_98_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(val))))),fun(list(char),option(val))),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(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),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(val))))),fun(list(char),option(val))),throw(list(char),Ea),S)),red(Pa)) ).
tff(fact_99_red__reds_ORedTry,axiom,
! [Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))),S: product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),E_2: exp(list(char)),V1: list(char),C: list(char),V: val] : member(product_prod(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))))),product_Pair(product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_prod(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val)))),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),tryCatch(list(char),val1(list(char),V),C,V1,E_2),S),product_Pair(exp(list(char)),product_prod(fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),fun(list(char),option(val))),val1(list(char),V),S)),red(Pa)) ).
%----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,
wTrt(p,h_a,e,binOp(list(char),e_1,bop,e_2),t) ).
%------------------------------------------------------------------------------