TPTP Problem File: SWW554_5.p
View Solutions
- Solve Problem
%------------------------------------------------------------------------------
% File : SWW554_5 : TPTP v9.0.0. Released v6.0.0.
% Domain : Software Verification
% Problem : Java type soundness line 60
% Version : Especial.
% English :
% Refs : [BN10] Boehme & Nipkow (2010), Sledgehammer: Judgement Day
% : [Bla13] Blanchette (2011), Email to Geoff Sutcliffe
% Source : [Bla13]
% Names : jinja_60 [Bla13]
% Status : Unknown
% Rating : 1.00 v6.4.0
% Syntax : Number of formulae : 173 ( 58 unt; 58 typ; 0 def)
% Number of atoms : 205 ( 140 equ)
% Maximal formula atoms : 6 ( 1 avg)
% Number of connectives : 118 ( 28 ~; 9 |; 13 &)
% ( 19 <=>; 49 =>; 0 <=; 0 <~>)
% Maximal formula depth : 14 ( 6 avg)
% Maximal term depth : 9 ( 2 avg)
% Number of types : 8 ( 7 usr)
% Number of type conns : 74 ( 34 >; 40 *; 0 +; 0 <<)
% Number of predicates : 10 ( 9 usr; 0 prp; 1-5 aty)
% Number of functors : 42 ( 42 usr; 10 con; 0-6 aty)
% Number of variables : 524 ( 465 !; 8 ?; 524 :)
% ( 51 !>; 0 ?*; 0 @-; 0 @+)
% SPC : TF1_UNK_EQU_NAR
% Comments : This file was generated by Isabelle (most likely Sledgehammer)
% 2011-12-13 16:16:17
%------------------------------------------------------------------------------
%----Should-be-implicit typings (12)
tff(ty_tc_Code__Evaluation_Oterm,type,
code_term: $tType ).
tff(ty_tc_Code__Numeral_Ocode__numeral,type,
code_code_numeral: $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 (46)
tff(sy_cl_Orderings_Otop,type,
top:
!>[A: $tType] : $o ).
tff(sy_c_COMBB,type,
combb:
!>[B: $tType,C: $tType,A: $tType] : ( ( fun(B,C) * fun(A,B) ) > fun(A,C) ) ).
tff(sy_c_COMBC,type,
combc:
!>[A: $tType,B: $tType,C: $tType] : ( ( fun(A,fun(B,C)) * B ) > fun(A,C) ) ).
tff(sy_c_COMBK,type,
combk:
!>[A: $tType,B: $tType] : ( A > fun(B,A) ) ).
tff(sy_c_COMBS,type,
combs:
!>[A: $tType,B: $tType,C: $tType] : ( ( fun(A,fun(B,C)) * fun(A,B) ) > fun(A,C) ) ).
tff(sy_c_Conform_Oconf,type,
conf:
!>[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))))) * val * ty ) > $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_Decl_Ois__type,type,
is_type:
!>[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 ) > $o ) ).
tff(sy_c_Expr_Oexp_OLAss,type,
lAss:
!>[A: $tType] : ( ( A * exp(A) ) > exp(A) ) ).
tff(sy_c_Expr_Oexp_OVal,type,
val1:
!>[A: $tType] : ( val > exp(A) ) ).
tff(sy_c_Fun_Ofun__upd,type,
fun_upd:
!>[A: $tType,B: $tType] : ( ( fun(A,B) * A * B ) > fun(A,B) ) ).
tff(sy_c_Map_Odom,type,
dom:
!>[A: $tType,B: $tType] : ( fun(A,option(B)) > fun(A,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_Map_Omap__comp,type,
map_comp:
!>[B: $tType,C: $tType,A: $tType] : ( ( fun(B,option(C)) * fun(A,option(B)) * A ) > option(C) ) ).
tff(sy_c_Objects_Otypeof__h,type,
typeof_h: ( fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))) * val ) > option(ty) ).
tff(sy_c_Option_Obind,type,
bind:
!>[A: $tType,B: $tType] : fun(option(A),fun(fun(A,option(B)),option(B))) ).
tff(sy_c_Option_Ois__none,type,
is_none:
!>[A: $tType] : ( option(A) > $o ) ).
tff(sy_c_Option_Omap,type,
map:
!>[A: $tType,B: $tType] : fun(fun(A,B),fun(option(A),option(B))) ).
tff(sy_c_Option_Ooption_ONone,type,
none:
!>[A: $tType] : option(A) ).
tff(sy_c_Option_Ooption_OSome,type,
some:
!>[A: $tType] : fun(A,option(A)) ).
tff(sy_c_Option_Ooption_Ooption__case,type,
option_case:
!>[T5: $tType,A: $tType] : ( ( T5 * fun(A,T5) ) > fun(option(A),T5) ) ).
tff(sy_c_Option_Ooption_Ooption__rec,type,
option_rec:
!>[T5: $tType,A: $tType] : ( ( T5 * fun(A,T5) * option(A) ) > T5 ) ).
tff(sy_c_Option_Oset,type,
set:
!>[A: $tType] : ( option(A) > fun(A,bool) ) ).
tff(sy_c_Orderings_Otop__class_Otop,type,
top_top:
!>[A: $tType] : A ).
tff(sy_c_Quickcheck__Exhaustive_Ocps__bind,type,
quickcheck_cps_bind:
!>[A: $tType,B: $tType] : ( ( fun(fun(A,option(list(code_term))),option(list(code_term))) * fun(A,fun(fun(B,option(list(code_term))),option(list(code_term)))) * fun(B,option(list(code_term))) ) > option(list(code_term)) ) ).
tff(sy_c_Quickcheck__Exhaustive_Ocps__plus,type,
quickcheck_cps_plus:
!>[A: $tType] : ( ( fun(fun(A,option(list(code_term))),option(list(code_term))) * fun(fun(A,option(list(code_term))),option(list(code_term))) * fun(A,option(list(code_term))) ) > option(list(code_term)) ) ).
tff(sy_c_Quickcheck__Exhaustive_Oorelse,type,
quickcheck_orelse:
!>[A: $tType] : ( ( option(A) * option(A) ) > option(A) ) ).
tff(sy_c_Quickcheck__Exhaustive_Opos__bound__cps__plus,type,
quickc665717985s_plus:
!>[A: $tType] : ( ( fun(fun(A,option(product_prod(bool,list(code_term)))),fun(code_code_numeral,option(product_prod(bool,list(code_term))))) * fun(fun(A,option(product_prod(bool,list(code_term)))),fun(code_code_numeral,option(product_prod(bool,list(code_term))))) * fun(A,option(product_prod(bool,list(code_term)))) * code_code_numeral ) > option(product_prod(bool,list(code_term))) ) ).
tff(sy_c_Quickcheck__Exhaustive_Opos__bound__cps__single,type,
quickc868703951single:
!>[A: $tType] : ( ( A * fun(A,option(product_prod(bool,list(code_term)))) * code_code_numeral ) > option(product_prod(bool,list(code_term))) ) ).
tff(sy_c_Set_OCollect,type,
collect:
!>[A: $tType] : ( fun(A,bool) > fun(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_WellTypeRT_OWTrt,type,
wTrt: ( list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))) * fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))) * fun(list(char),option(ty)) * exp(list(char)) * ty ) > $o ).
tff(sy_c_aa,type,
aa:
!>[A: $tType,B: $tType] : ( ( fun(A,B) * A ) > B ) ).
tff(sy_c_fFalse,type,
fFalse: bool ).
tff(sy_c_fNot,type,
fNot: fun(bool,bool) ).
tff(sy_c_fTrue,type,
fTrue: bool ).
tff(sy_c_fequal,type,
fequal:
!>[A: $tType] : fun(A,fun(A,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_V______,type,
v1: list(char) ).
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_la______,type,
la: fun(list(char),option(val)) ).
tff(sy_v_v______,type,
v: val ).
%----Relevant facts (100)
tff(fact_0_RedLAss_I2_J,axiom,
lconf(product_prod(list(list(char)),exp(list(char))),p,ha,la,e) ).
tff(fact_1_RedLAss_I1_J,axiom,
wTrt(p,ha,e,lAss(list(char),v1,val1(list(char),v)),t) ).
tff(fact_2_fun__upd__triv,axiom,
! [B: $tType,A: $tType,X1: A,F: fun(A,B)] : ( fun_upd(A,B,F,X1,aa(A,B,F,X1)) = F ) ).
tff(fact_3_fun__upd__upd,axiom,
! [A: $tType,B: $tType,Z1: B,Y1: B,X1: A,F: fun(A,B)] : ( fun_upd(A,B,fun_upd(A,B,F,X1,Y1),X1,Z1) = fun_upd(A,B,F,X1,Z1) ) ).
tff(fact_4_fun__upd__apply,axiom,
! [B: $tType,A: $tType,Y1: B,F: fun(A,B),X1: A,Z1: A] :
( ( ( Z1 = X1 )
=> ( aa(A,B,fun_upd(A,B,F,X1,Y1),Z1) = Y1 ) )
& ( ( Z1 != X1 )
=> ( aa(A,B,fun_upd(A,B,F,X1,Y1),Z1) = aa(A,B,F,Z1) ) ) ) ).
tff(fact_5_option_Oinject,axiom,
! [A: $tType,A5: A,A4: A] :
( ( aa(A,option(A),some(A),A4) = aa(A,option(A),some(A),A5) )
<=> ( A4 = A5 ) ) ).
tff(fact_6_map__upd__Some__unfold,axiom,
! [B: $tType,A: $tType,Y1: A,X1: B,B2: A,A4: B,M1: fun(B,option(A))] :
( ( aa(B,option(A),fun_upd(B,option(A),M1,A4,aa(A,option(A),some(A),B2)),X1) = aa(A,option(A),some(A),Y1) )
<=> ( ( ( X1 = A4 )
& ( B2 = Y1 ) )
| ( ( X1 != A4 )
& ( aa(B,option(A),M1,X1) = aa(A,option(A),some(A),Y1) ) ) ) ) ).
tff(fact_7_map__upd__triv,axiom,
! [A: $tType,B: $tType,X1: A,K: B,T3: fun(B,option(A))] :
( ( aa(B,option(A),T3,K) = aa(A,option(A),some(A),X1) )
=> ( fun_upd(B,option(A),T3,K,aa(A,option(A),some(A),X1)) = T3 ) ) ).
tff(fact_8_map__upd__eqD1,axiom,
! [A: $tType,B: $tType,Y1: B,N: fun(A,option(B)),X1: B,A4: A,M1: fun(A,option(B))] :
( ( fun_upd(A,option(B),M1,A4,aa(B,option(B),some(B),X1)) = fun_upd(A,option(B),N,A4,aa(B,option(B),some(B),Y1)) )
=> ( X1 = Y1 ) ) ).
tff(fact_9_fun__upd__idem__iff,axiom,
! [A: $tType,B: $tType,Y1: B,X1: A,F: fun(A,B)] :
( ( fun_upd(A,B,F,X1,Y1) = F )
<=> ( aa(A,B,F,X1) = Y1 ) ) ).
tff(fact_10_fun__upd__same,axiom,
! [B: $tType,A: $tType,Y1: A,X1: B,F: fun(B,A)] : ( aa(B,A,fun_upd(B,A,F,X1,Y1),X1) = Y1 ) ).
tff(fact_11_fun__upd__twist,axiom,
! [A: $tType,B: $tType,D: B,B2: B,M1: fun(A,B),C1: A,A4: A] :
( ( A4 != C1 )
=> ( fun_upd(A,B,fun_upd(A,B,M1,A4,B2),C1,D) = fun_upd(A,B,fun_upd(A,B,M1,C1,D),A4,B2) ) ) ).
tff(fact_12_fun__upd__other,axiom,
! [B: $tType,A: $tType,Y1: B,F: fun(A,B),X1: A,Z1: A] :
( ( Z1 != X1 )
=> ( aa(A,B,fun_upd(A,B,F,X1,Y1),Z1) = aa(A,B,F,Z1) ) ) ).
tff(fact_13_fun__upd__idem,axiom,
! [A: $tType,B: $tType,Y1: A,X1: B,F: fun(B,A)] :
( ( aa(B,A,F,X1) = Y1 )
=> ( fun_upd(B,A,F,X1,Y1) = F ) ) ).
tff(fact_14_fun__upd__def,axiom,
! [B: $tType,A: $tType,B2: B,F: fun(A,B),A4: A,X2: A] :
( ( ( X2 = A4 )
=> ( aa(A,B,fun_upd(A,B,F,A4,B2),X2) = B2 ) )
& ( ( X2 != A4 )
=> ( aa(A,B,fun_upd(A,B,F,A4,B2),X2) = aa(A,B,F,X2) ) ) ) ).
tff(fact_15_exp_Osimps_I6_J,axiom,
! [A: $tType,Exp2: exp(A),A5: A,Exp1: exp(A),A4: A] :
( ( lAss(A,A4,Exp1) = lAss(A,A5,Exp2) )
<=> ( ( A4 = A5 )
& ( Exp1 = Exp2 ) ) ) ).
tff(fact_16_exp_Osimps_I3_J,axiom,
! [A: $tType,Val2: val,Val1: val] :
( ( val1(A,Val1) = val1(A,Val2) )
<=> ( Val1 = Val2 ) ) ).
tff(fact_17_exp_Osimps_I74_J,axiom,
! [A: $tType,Exp: exp(A),A3: A,Val: val] : ( val1(A,Val) != lAss(A,A3,Exp) ) ).
tff(fact_18_exp_Osimps_I75_J,axiom,
! [A: $tType,Val: val,Exp: exp(A),A3: A] : ( lAss(A,A3,Exp) != val1(A,Val) ) ).
tff(fact_19_elem__set,axiom,
! [A: $tType,Xo: option(A),X1: A] :
( member(A,X1,set(A,Xo))
<=> ( Xo = aa(A,option(A),some(A),X1) ) ) ).
tff(fact_20_option_Orecs_I2_J,axiom,
! [A: $tType,B: $tType,A4: B,F2: fun(B,A),F1: A] : ( option_rec(A,B,F1,F2,aa(B,option(B),some(B),A4)) = aa(B,A,F2,A4) ) ).
tff(fact_21_is__none__code_I2_J,axiom,
! [B: $tType,X: B] : ~ is_none(B,aa(B,option(B),some(B),X)) ).
tff(fact_22_option_Osimps_I5_J,axiom,
! [A: $tType,B: $tType,A4: B,F2: fun(B,A),F1: A] : ( aa(option(B),A,option_case(A,B,F1,F2),aa(B,option(B),some(B),A4)) = aa(B,A,F2,A4) ) ).
tff(fact_23_bind__lunit,axiom,
! [A: $tType,B: $tType,F: fun(B,option(A)),X1: B] : ( aa(fun(B,option(A)),option(A),aa(option(B),fun(fun(B,option(A)),option(A)),bind(B,A),aa(B,option(B),some(B),X1)),F) = aa(B,option(A),F,X1) ) ).
tff(fact_24_bind__assoc,axiom,
! [C: $tType,A: $tType,B: $tType,G: fun(B,option(A)),F: fun(C,option(B)),X1: option(C)] : ( aa(fun(B,option(A)),option(A),aa(option(B),fun(fun(B,option(A)),option(A)),bind(B,A),aa(fun(C,option(B)),option(B),aa(option(C),fun(fun(C,option(B)),option(B)),bind(C,B),X1),F)),G) = aa(fun(C,option(A)),option(A),aa(option(C),fun(fun(C,option(A)),option(A)),bind(C,A),X1),combc(C,fun(B,option(A)),option(A),combb(option(B),fun(fun(B,option(A)),option(A)),C,bind(B,A),F),G)) ) ).
tff(fact_25_bind__runit,axiom,
! [A: $tType,X1: option(A)] : ( aa(fun(A,option(A)),option(A),aa(option(A),fun(fun(A,option(A)),option(A)),bind(A,A),X1),some(A)) = X1 ) ).
tff(fact_26_ospec,axiom,
! [A: $tType,X1: A,Pa: fun(A,bool),A1: option(A)] :
( ! [X3: A] :
( member(A,X3,set(A,A1))
=> pp(aa(A,bool,Pa,X3)) )
=> ( ( A1 = aa(A,option(A),some(A),X1) )
=> pp(aa(A,bool,Pa,X1)) ) ) ).
tff(fact_27_map__add__upd,axiom,
! [A: $tType,B: $tType,Y1: B,X1: A,G: fun(A,option(B)),F: fun(A,option(B))] : ( map_add(A,B,F,fun_upd(A,option(B),G,X1,aa(B,option(B),some(B),Y1))) = fun_upd(A,option(B),map_add(A,B,F,G),X1,aa(B,option(B),some(B),Y1)) ) ).
tff(fact_28_lconf__upd,axiom,
! [A: $tType,Va1: list(char),Ta: ty,Va: val,Ea: fun(list(char),option(ty)),Lb: fun(list(char),option(val)),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,A))))))))] :
( lconf(A,Pa,Hb,Lb,Ea)
=> ( conf(A,Pa,Hb,Va,Ta)
=> ( ( aa(list(char),option(ty),Ea,Va1) = aa(ty,option(ty),some(ty),Ta) )
=> lconf(A,Pa,Hb,fun_upd(list(char),option(val),Lb,Va1,aa(val,option(val),some(val),Va)),Ea) ) ) ) ).
tff(fact_29_lconf__upd2,axiom,
! [A: $tType,Va1: list(char),Ta: ty,Va: val,Ea: fun(list(char),option(ty)),Lb: fun(list(char),option(val)),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,A))))))))] :
( lconf(A,Pa,Hb,Lb,Ea)
=> ( conf(A,Pa,Hb,Va,Ta)
=> lconf(A,Pa,Hb,fun_upd(list(char),option(val),Lb,Va1,aa(val,option(val),some(val),Va)),fun_upd(list(char),option(ty),Ea,Va1,aa(ty,option(ty),some(ty),Ta))) ) ) ).
tff(fact_30_,axiom,
! [A: $tType,Y1: option(A),X1: option(A)] : ( quickcheck_orelse(A,X1,Y1) = aa(option(A),option(A),option_case(option(A),A,Y1,some(A)),X1) ) ).
tff(fact_31_disjE__realizer2,axiom,
! [B: $tType,A: $tType,G: fun(A,B),F: B,R1: fun(B,bool),X1: option(A),Q1: fun(A,bool),Pa: bool] :
( pp(aa(option(A),bool,option_case(bool,A,Pa,Q1),X1))
=> ( ( pp(Pa)
=> pp(aa(B,bool,R1,F)) )
=> ( ! [Q2: A] :
( pp(aa(A,bool,Q1,Q2))
=> pp(aa(B,bool,R1,aa(A,B,G,Q2))) )
=> pp(aa(B,bool,R1,aa(option(A),B,option_case(B,A,F,G),X1))) ) ) ) ).
tff(fact_32_map__comp__Some__iff,axiom,
! [C: $tType,B: $tType,A: $tType,Va: A,K: C,M2: fun(C,option(B)),M11: fun(B,option(A))] :
( ( map_comp(B,A,C,M11,M2,K) = aa(A,option(A),some(A),Va) )
<=> ? [K1: B] :
( ( aa(C,option(B),M2,K) = aa(B,option(B),some(B),K1) )
& ( aa(B,option(A),M11,K1) = aa(A,option(A),some(A),Va) ) ) ) ).
tff(fact_33_map__add__assoc,axiom,
! [B: $tType,A: $tType,M3: fun(A,option(B)),M2: fun(A,option(B)),M11: fun(A,option(B))] : ( map_add(A,B,M11,map_add(A,B,M2,M3)) = map_add(A,B,map_add(A,B,M11,M2),M3) ) ).
tff(fact_34_map__add__find__right,axiom,
! [B: $tType,A: $tType,M1: fun(B,option(A)),Xx: A,K: B,N: fun(B,option(A))] :
( ( aa(B,option(A),N,K) = aa(A,option(A),some(A),Xx) )
=> ( aa(B,option(A),map_add(B,A,M1,N),K) = aa(A,option(A),some(A),Xx) ) ) ).
tff(fact_35_map__add__def,axiom,
! [B: $tType,A: $tType,M2: fun(A,option(B)),M11: fun(A,option(B)),X2: A] : ( aa(A,option(B),map_add(A,B,M11,M2),X2) = aa(option(B),option(B),option_case(option(B),B,aa(A,option(B),M11,X2),some(B)),aa(A,option(B),M2,X2)) ) ).
tff(fact_36_map__comp__simps_I2_J,axiom,
! [B: $tType,C: $tType,A: $tType,M11: fun(A,option(C)),K2: A,K: B,M2: fun(B,option(A))] :
( ( aa(B,option(A),M2,K) = aa(A,option(A),some(A),K2) )
=> ( map_comp(A,C,B,M11,M2,K) = aa(A,option(C),M11,K2) ) ) ).
tff(fact_37_lconf__def,axiom,
! [A: $tType,Ea: fun(list(char),option(ty)),Lb: fun(list(char),option(val)),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,A))))))))] :
( lconf(A,Pa,Hb,Lb,Ea)
<=> ! [V1: list(char),V: val] :
( ( aa(list(char),option(val),Lb,V1) = aa(val,option(val),some(val),V) )
=> ? [T4: ty] :
( ( aa(list(char),option(ty),Ea,V1) = aa(ty,option(ty),some(ty),T4) )
& conf(A,Pa,Hb,V,T4) ) ) ) ).
tff(fact_38_pos__bound__cps__single__def,axiom,
! [A: $tType,Va: A,X2: fun(A,option(product_prod(bool,list(code_term)))),Xa: code_code_numeral] : ( quickc868703951single(A,Va,X2,Xa) = aa(A,option(product_prod(bool,list(code_term))),X2,Va) ) ).
tff(fact_39_pos__bound__cps__plus__def,axiom,
! [A: $tType,B2: fun(fun(A,option(product_prod(bool,list(code_term)))),fun(code_code_numeral,option(product_prod(bool,list(code_term))))),A4: fun(fun(A,option(product_prod(bool,list(code_term)))),fun(code_code_numeral,option(product_prod(bool,list(code_term))))),X2: fun(A,option(product_prod(bool,list(code_term)))),Xa: code_code_numeral] : ( quickc665717985s_plus(A,A4,B2,X2,Xa) = aa(option(product_prod(bool,list(code_term))),option(product_prod(bool,list(code_term))),option_case(option(product_prod(bool,list(code_term))),product_prod(bool,list(code_term)),aa(code_code_numeral,option(product_prod(bool,list(code_term))),aa(fun(A,option(product_prod(bool,list(code_term)))),fun(code_code_numeral,option(product_prod(bool,list(code_term)))),B2,X2),Xa),some(product_prod(bool,list(code_term)))),aa(code_code_numeral,option(product_prod(bool,list(code_term))),aa(fun(A,option(product_prod(bool,list(code_term)))),fun(code_code_numeral,option(product_prod(bool,list(code_term)))),A4,X2),Xa)) ) ).
tff(fact_40_cps__plus__def,axiom,
! [A: $tType,B2: fun(fun(A,option(list(code_term))),option(list(code_term))),A4: fun(fun(A,option(list(code_term))),option(list(code_term))),X2: fun(A,option(list(code_term)))] : ( quickcheck_cps_plus(A,A4,B2,X2) = aa(option(list(code_term)),option(list(code_term)),option_case(option(list(code_term)),list(code_term),aa(fun(A,option(list(code_term))),option(list(code_term)),B2,X2),some(list(code_term))),aa(fun(A,option(list(code_term))),option(list(code_term)),A4,X2)) ) ).
tff(fact_41_cps__bind__def,axiom,
! [B: $tType,A: $tType,F: fun(B,fun(fun(A,option(list(code_term))),option(list(code_term)))),M1: fun(fun(B,option(list(code_term))),option(list(code_term))),X2: fun(A,option(list(code_term)))] : ( quickcheck_cps_bind(B,A,M1,F,X2) = aa(fun(B,option(list(code_term))),option(list(code_term)),M1,combc(B,fun(A,option(list(code_term))),option(list(code_term)),F,X2)) ) ).
tff(fact_42_map__add__upd__left,axiom,
! [A: $tType,B: $tType,U1: B,E1: fun(A,option(B)),E2: fun(A,option(B)),M1: A] :
( ~ member(A,M1,dom(A,B,E2))
=> ( map_add(A,B,fun_upd(A,option(B),E1,M1,aa(B,option(B),some(B),U1)),E2) = fun_upd(A,option(B),map_add(A,B,E1,E2),M1,aa(B,option(B),some(B),U1)) ) ) ).
tff(fact_43_domI,axiom,
! [A: $tType,B: $tType,B2: A,A4: B,M1: fun(B,option(A))] :
( ( aa(B,option(A),M1,A4) = aa(A,option(A),some(A),B2) )
=> member(B,A4,dom(B,A,M1)) ) ).
tff(fact_44_map__add__dom__app__simps_I2_J,axiom,
! [B: $tType,A: $tType,L2: fun(A,option(B)),L1: fun(A,option(B)),M1: A] :
( ~ member(A,M1,dom(A,B,L1))
=> ( aa(A,option(B),map_add(A,B,L1,L2),M1) = aa(A,option(B),L2,M1) ) ) ).
tff(fact_45_map__add__dom__app__simps_I3_J,axiom,
! [B: $tType,A: $tType,L1: fun(A,option(B)),L2: fun(A,option(B)),M1: A] :
( ~ member(A,M1,dom(A,B,L2))
=> ( aa(A,option(B),map_add(A,B,L1,L2),M1) = aa(A,option(B),L1,M1) ) ) ).
tff(fact_46_map__add__dom__app__simps_I1_J,axiom,
! [B: $tType,A: $tType,L1: fun(A,option(B)),L2: fun(A,option(B)),M1: A] :
( member(A,M1,dom(A,B,L2))
=> ( aa(A,option(B),map_add(A,B,L1,L2),M1) = aa(A,option(B),L2,M1) ) ) ).
tff(fact_47_domD,axiom,
! [A: $tType,B: $tType,M1: fun(A,option(B)),A4: A] :
( member(A,A4,dom(A,B,M1))
=> ? [B1: B] : ( aa(A,option(B),M1,A4) = aa(B,option(B),some(B),B1) ) ) ).
tff(fact_48_WTrtVal,axiom,
! [Ea: fun(list(char),option(ty)),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,product_prod(list(list(char)),exp(list(char))))))))))),Ta: ty,Va: val,Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val)))))] :
( ( typeof_h(Hb,Va) = aa(ty,option(ty),some(ty),Ta) )
=> wTrt(Pa,Hb,Ea,val1(list(char),Va),Ta) ) ).
tff(fact_49_dom__const,axiom,
! [B: $tType,A: $tType,F: fun(A,B)] : ( dom(A,B,combb(B,option(B),A,some(B),F)) = top_top(fun(A,bool)) ) ).
tff(fact_50_typeof__conf,axiom,
! [A: $tType,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)))))))),Ta: ty,Va: val,Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val)))))] :
( ( typeof_h(Hb,Va) = aa(ty,option(ty),some(ty),Ta) )
=> conf(A,Pa,Hb,Va,Ta) ) ).
tff(fact_51_map__comp__def,axiom,
! [B: $tType,C: $tType,A: $tType,G: fun(A,option(C)),F: fun(C,option(B)),X2: A] : ( map_comp(C,B,A,F,G,X2) = aa(option(C),option(B),option_case(option(B),C,none(B),F),aa(A,option(C),G,X2)) ) ).
tff(fact_52_lconf__empty,axiom,
! [A: $tType,Ea: fun(list(char),option(ty)),Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,A))))))))] : lconf(A,Pa,Hb,combk(option(val),list(char),none(val)),Ea) ).
tff(fact_53_not__None__eq,axiom,
! [A: $tType,X1: option(A)] :
( ( X1 != none(A) )
<=> ? [Y3: A] : ( X1 = aa(A,option(A),some(A),Y3) ) ) ).
tff(fact_54_not__Some__eq,axiom,
! [A: $tType,X1: option(A)] :
( ! [Y3: A] : ( X1 != aa(A,option(A),some(A),Y3) )
<=> ( X1 = none(A) ) ) ).
tff(fact_55_map__add__None,axiom,
! [B: $tType,A: $tType,K: B,N: fun(B,option(A)),M1: fun(B,option(A))] :
( ( aa(B,option(A),map_add(B,A,M1,N),K) = none(A) )
<=> ( ( aa(B,option(A),N,K) = none(A) )
& ( aa(B,option(A),M1,K) = none(A) ) ) ) ).
tff(fact_56_bind__lzero,axiom,
! [B: $tType,A: $tType,F: fun(B,option(A))] : ( aa(fun(B,option(A)),option(A),aa(option(B),fun(fun(B,option(A)),option(A)),bind(B,A),none(B)),F) = none(A) ) ).
tff(fact_57_empty__upd__none,axiom,
! [A: $tType,B: $tType,X1: A,X2: A] : ( aa(A,option(B),fun_upd(A,option(B),combk(option(B),A,none(B)),X1,none(B)),X2) = none(B) ) ).
tff(fact_58_bind__rzero,axiom,
! [B: $tType,A: $tType,X1: option(B)] : ( aa(fun(B,option(A)),option(A),aa(option(B),fun(fun(B,option(A)),option(A)),bind(B,A),X1),combk(option(A),B,none(A))) = none(A) ) ).
tff(fact_59_map__comp__empty_I2_J,axiom,
! [A: $tType,C: $tType,B: $tType,M1: fun(A,option(C)),X2: A] : ( map_comp(C,B,A,combk(option(B),C,none(B)),M1,X2) = none(B) ) ).
tff(fact_60_map__comp__empty_I1_J,axiom,
! [A: $tType,C: $tType,B: $tType,M1: fun(C,option(B)),X2: A] : ( map_comp(C,B,A,M1,combk(option(C),A,none(C)),X2) = none(B) ) ).
tff(fact_61_dom__def,axiom,
! [A: $tType,B: $tType,M1: fun(A,option(B))] : ( dom(A,B,M1) = collect(A,combb(bool,bool,A,fNot,combc(A,option(B),bool,combb(option(B),fun(option(B),bool),A,fequal(option(B)),M1),none(B)))) ) ).
tff(fact_62_domIff,axiom,
! [A: $tType,B: $tType,M1: fun(A,option(B)),A4: A] :
( member(A,A4,dom(A,B,M1))
<=> ( aa(A,option(B),M1,A4) != none(B) ) ) ).
tff(fact_63_option_Osimps_I2_J,axiom,
! [A: $tType,A3: A] : ( none(A) != aa(A,option(A),some(A),A3) ) ).
tff(fact_64_option_Osimps_I3_J,axiom,
! [A: $tType,A3: A] : ( aa(A,option(A),some(A),A3) != none(A) ) ).
tff(fact_65_option_Osimps_I4_J,axiom,
! [B: $tType,A: $tType,F2: fun(B,A),F1: A] : ( aa(option(B),A,option_case(A,B,F1,F2),none(B)) = F1 ) ).
tff(fact_66_typeof__lit__conf,axiom,
! [A: $tType,Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,A)))))))),Ta: ty,Va: val] :
( ( typeof_h(combk(option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val)))),nat,none(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),Va) = aa(ty,option(ty),some(ty),Ta) )
=> conf(A,Pa,Hb,Va,Ta) ) ).
tff(fact_67_map__comp__simps_I1_J,axiom,
! [B: $tType,A: $tType,C: $tType,M11: fun(A,option(C)),K: B,M2: fun(B,option(A))] :
( ( aa(B,option(A),M2,K) = none(A) )
=> ( map_comp(A,C,B,M11,M2,K) = none(C) ) ) ).
tff(fact_68_empty__map__add,axiom,
! [B: $tType,A: $tType,M1: fun(A,option(B))] : ( map_add(A,B,combk(option(B),A,none(B)),M1) = M1 ) ).
tff(fact_69_map__add__empty,axiom,
! [B: $tType,A: $tType,M1: fun(A,option(B))] : ( map_add(A,B,M1,combk(option(B),A,none(B))) = M1 ) ).
tff(fact_70_is__none__def,axiom,
! [A: $tType,X1: option(A)] :
( is_none(A,X1)
<=> ( X1 = none(A) ) ) ).
tff(fact_71_is__none__code_I1_J,axiom,
! [A: $tType] : is_none(A,none(A)) ).
tff(fact_72_map__upd__nonempty,axiom,
! [A: $tType,B: $tType,X1: B,K: A,T3: fun(A,option(B))] :
~ ! [X3: A] : ( aa(A,option(B),fun_upd(A,option(B),T3,K,aa(B,option(B),some(B),X1)),X3) = none(B) ) ).
tff(fact_73_option_Orecs_I1_J,axiom,
! [B: $tType,A: $tType,F2: fun(B,A),F1: A] : ( option_rec(A,B,F1,F2,none(B)) = F1 ) ).
tff(fact_74_map__add__SomeD,axiom,
! [B: $tType,A: $tType,X1: A,K: B,N: fun(B,option(A)),M1: fun(B,option(A))] :
( ( aa(B,option(A),map_add(B,A,M1,N),K) = aa(A,option(A),some(A),X1) )
=> ( ( aa(B,option(A),N,K) = aa(A,option(A),some(A),X1) )
| ( ( aa(B,option(A),N,K) = none(A) )
& ( aa(B,option(A),M1,K) = aa(A,option(A),some(A),X1) ) ) ) ) ).
tff(fact_75_ext,axiom,
! [B: $tType,A: $tType,G: fun(A,B),F: fun(A,B)] :
( ! [X3: A] : ( aa(A,B,F,X3) = aa(A,B,G,X3) )
=> ( F = G ) ) ).
tff(fact_76_mem__def,axiom,
! [A: $tType,A1: fun(A,bool),X1: A] :
( member(A,X1,A1)
<=> pp(aa(A,bool,A1,X1)) ) ).
tff(fact_77_Collect__def,axiom,
! [A: $tType,Pa: fun(A,bool)] : ( collect(A,Pa) = Pa ) ).
tff(fact_78_map__add__Some__iff,axiom,
! [B: $tType,A: $tType,X1: A,K: B,N: fun(B,option(A)),M1: fun(B,option(A))] :
( ( aa(B,option(A),map_add(B,A,M1,N),K) = aa(A,option(A),some(A),X1) )
<=> ( ( aa(B,option(A),N,K) = aa(A,option(A),some(A),X1) )
| ( ( aa(B,option(A),N,K) = none(A) )
& ( aa(B,option(A),M1,K) = aa(A,option(A),some(A),X1) ) ) ) ) ).
tff(fact_79_map__comp__None__iff,axiom,
! [C: $tType,B: $tType,A: $tType,K: C,M2: fun(C,option(B)),M11: fun(B,option(A))] :
( ( map_comp(B,A,C,M11,M2,K) = none(A) )
<=> ( ( aa(C,option(B),M2,K) = none(B) )
| ? [K1: B] :
( ( aa(C,option(B),M2,K) = aa(B,option(B),some(B),K1) )
& ( aa(B,option(A),M11,K1) = none(A) ) ) ) ) ).
tff(fact_80_option__caseE,axiom,
! [A: $tType,X1: option(A),Q1: fun(A,bool),Pa: bool] :
( pp(aa(option(A),bool,option_case(bool,A,Pa,Q1),X1))
=> ( ( ( X1 = none(A) )
=> ~ pp(Pa) )
=> ~ ! [Y2: A] :
( ( X1 = aa(A,option(A),some(A),Y2) )
=> ~ pp(aa(A,bool,Q1,Y2)) ) ) ) ).
tff(fact_81_typeof__lit__typeof,axiom,
! [Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),Ta: ty,Va: val] :
( ( typeof_h(combk(option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val)))),nat,none(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),Va) = aa(ty,option(ty),some(ty),Ta) )
=> ( typeof_h(Hb,Va) = aa(ty,option(ty),some(ty),Ta) ) ) ).
tff(fact_82_top1I,axiom,
! [A: $tType,X1: A] : pp(aa(A,bool,top_top(fun(A,bool)),X1)) ).
tff(fact_83_UNIV__I,axiom,
! [A: $tType,X1: A] : member(A,X1,top_top(fun(A,bool))) ).
tff(fact_84_UNIV__def,axiom,
! [A: $tType] : ( top_top(fun(A,bool)) = collect(A,combk(bool,A,fTrue)) ) ).
tff(fact_85_iso__tuple__UNIV__I,axiom,
! [A: $tType,X1: A] : member(A,X1,top_top(fun(A,bool))) ).
tff(fact_86_option_Oexhaust,axiom,
! [A: $tType,Y: option(A)] :
( ( Y != none(A) )
=> ~ ! [A2: A] : ( Y != aa(A,option(A),some(A),A2) ) ) ).
tff(fact_87_typeof__lit__is__type,axiom,
! [A: $tType,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)))))))),Ta: ty,Va: val] :
( ( typeof_h(combk(option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val)))),nat,none(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),Va) = aa(ty,option(ty),some(ty),Ta) )
=> is_type(A,Pa,Ta) ) ).
tff(fact_88_top__apply,axiom,
! [B: $tType,A: $tType] :
( top(A)
=> ! [X1: B] : ( aa(B,A,top_top(fun(B,A)),X1) = top_top(A) ) ) ).
tff(fact_89_UNIV__eq__I,axiom,
! [A: $tType,A1: fun(A,bool)] :
( ! [X3: A] : member(A,X3,A1)
=> ( top_top(fun(A,bool)) = A1 ) ) ).
tff(fact_90_UNIV__witness,axiom,
! [A: $tType] :
? [X3: A] : member(A,X3,top_top(fun(A,bool))) ).
tff(fact_91_Option_Omap__def,axiom,
! [B: $tType,A: $tType,X2: fun(A,B)] : ( aa(fun(A,B),fun(option(A),option(B)),map(A,B),X2) = option_case(option(B),A,none(B),combb(B,option(B),A,some(B),X2)) ) ).
tff(fact_92_conf__def,axiom,
! [A: $tType,Ta: ty,Va: val,Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,A))))))))] :
( conf(A,Pa,Hb,Va,Ta)
<=> ? [T2: ty] :
( ( typeof_h(Hb,Va) = aa(ty,option(ty),some(ty),T2) )
& widen(A,Pa,T2,Ta) ) ) ).
tff(fact_93_option__map__eq__Some,axiom,
! [B: $tType,A: $tType,Y1: A,Xo: option(B),F: fun(B,A)] :
( ( aa(option(B),option(A),aa(fun(B,A),fun(option(B),option(A)),map(B,A),F),Xo) = aa(A,option(A),some(A),Y1) )
<=> ? [Z: B] :
( ( Xo = aa(B,option(B),some(B),Z) )
& ( aa(B,A,F,Z) = Y1 ) ) ) ).
tff(fact_94_option__map__Some,axiom,
! [A: $tType,B: $tType,X1: B,F: fun(B,A)] : ( aa(option(B),option(A),aa(fun(B,A),fun(option(B),option(A)),map(B,A),F),aa(B,option(B),some(B),X1)) = aa(A,option(A),some(A),aa(B,A,F,X1)) ) ).
tff(fact_95_option__map__is__None,axiom,
! [A: $tType,B: $tType,Opt: option(B),F: fun(B,A)] :
( ( aa(option(B),option(A),aa(fun(B,A),fun(option(B),option(A)),map(B,A),F),Opt) = none(A) )
<=> ( Opt = none(B) ) ) ).
tff(fact_96_option__map__None,axiom,
! [B: $tType,A: $tType,F: fun(B,A)] : ( aa(option(B),option(A),aa(fun(B,A),fun(option(B),option(A)),map(B,A),F),none(B)) = none(A) ) ).
tff(fact_97_dom__option__map,axiom,
! [B: $tType,C: $tType,A: $tType,M1: fun(A,option(C)),F: fun(A,fun(C,B))] : ( dom(A,B,combs(A,option(C),option(B),combb(fun(C,B),fun(option(C),option(B)),A,map(C,B),F),M1)) = dom(A,C,M1) ) ).
tff(fact_98_conf__widen,axiom,
! [A: $tType,T1: ty,Ta: ty,Va: val,Hb: fun(nat,option(product_prod(list(char),fun(product_prod(list(char),list(char)),option(val))))),Pa: list(product_prod(list(char),product_prod(list(char),product_prod(list(product_prod(list(char),ty)),list(product_prod(list(char),product_prod(list(ty),product_prod(ty,A))))))))] :
( conf(A,Pa,Hb,Va,Ta)
=> ( widen(A,Pa,Ta,T1)
=> conf(A,Pa,Hb,Va,T1) ) ) ).
tff(fact_99_widen__refl,axiom,
! [M: $tType,T: ty,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,M))))))))] : widen(M,P,T,T) ).
%----Arities (2)
tff(arity_fun___Orderings_Otop,axiom,
! [T_1: $tType,T_2: $tType] :
( top(T_2)
=> top(fun(T_1,T_2)) ) ).
tff(arity_HOL_Obool___Orderings_Otop,axiom,
top(bool) ).
%----Helper facts (12)
tff(help_pp_1_1_U,axiom,
~ pp(fFalse) ).
tff(help_pp_2_1_U,axiom,
pp(fTrue) ).
tff(help_fNot_1_1_U,axiom,
! [P: bool] :
( ~ pp(aa(bool,bool,fNot,P))
| ~ pp(P) ) ).
tff(help_fNot_2_1_U,axiom,
! [P: bool] :
( pp(P)
| pp(aa(bool,bool,fNot,P)) ) ).
tff(help_COMBB_1_1_U,axiom,
! [C: $tType,B: $tType,A: $tType,R: A,Q: fun(A,B),P: fun(B,C)] : ( aa(A,C,combb(B,C,A,P,Q),R) = aa(B,C,P,aa(A,B,Q,R)) ) ).
tff(help_COMBC_1_1_U,axiom,
! [A: $tType,C: $tType,B: $tType,R: A,Q: B,P: fun(A,fun(B,C))] : ( aa(A,C,combc(A,B,C,P,Q),R) = aa(B,C,aa(A,fun(B,C),P,R),Q) ) ).
tff(help_COMBK_1_1_U,axiom,
! [B: $tType,A: $tType,Q: B,P: A] : ( aa(B,A,combk(A,B,P),Q) = P ) ).
tff(help_COMBS_1_1_U,axiom,
! [C: $tType,B: $tType,A: $tType,R: A,Q: fun(A,B),P: fun(A,fun(B,C))] : ( aa(A,C,combs(A,B,C,P,Q),R) = aa(B,C,aa(A,fun(B,C),P,R),aa(A,B,Q,R)) ) ).
tff(help_fTrue_1_1_U,axiom,
pp(fTrue) ).
tff(help_fTrue_1_1_T,axiom,
! [P: bool] :
( ( P = fTrue )
| ( P = fFalse ) ) ).
tff(help_fequal_1_1_T,axiom,
! [A: $tType,Y: A,X: A] :
( ~ pp(aa(A,bool,aa(A,fun(A,bool),fequal(A),X),Y))
| ( X = Y ) ) ).
tff(help_fequal_2_1_T,axiom,
! [A: $tType,Y: A,X: A] :
( ( X != Y )
| pp(aa(A,bool,aa(A,fun(A,bool),fequal(A),X),Y)) ) ).
%----Conjectures (1)
tff(conj_0,conjecture,
lconf(product_prod(list(list(char)),exp(list(char))),p,ha,fun_upd(list(char),option(val),la,v1,aa(val,option(val),some(val),v)),e) ).
%------------------------------------------------------------------------------