TPTP Problem File: DAT232^1.p
View Solutions
- Solve Problem
%------------------------------------------------------------------------------
% File : DAT232^1 : TPTP v9.0.0. Released v7.0.0.
% Domain : Data Structures
% Problem : Red-black trees 415
% Version : [Bla16] axioms : Especial.
% English :
% Refs : [RB15] Reynolds & Blanchette (2015), A Decision Procedure for
% : [Bla16] Blanchette (2016), Email to Geoff Sutcliffe
% Source : [Bla16]
% Names : rbt_impl__415.p [Bla16]
% Status : Theorem
% Rating : 0.00 v8.1.0, 0.25 v7.5.0, 0.00 v7.2.0, 0.25 v7.1.0
% Syntax : Number of formulae : 331 ( 112 unt; 72 typ; 0 def)
% Number of atoms : 854 ( 326 equ; 0 cnn)
% Maximal formula atoms : 13 ( 3 avg)
% Number of connectives : 4737 ( 168 ~; 28 |; 111 &;4120 @)
% ( 0 <=>; 310 =>; 0 <=; 0 <~>)
% Maximal formula depth : 23 ( 8 avg)
% Number of types : 4 ( 3 usr)
% Number of type conns : 258 ( 258 >; 0 *; 0 +; 0 <<)
% Number of symbols : 70 ( 69 usr; 20 con; 0-7 aty)
% Number of variables : 1191 ( 23 ^;1000 !; 108 ?;1191 :)
% ( 60 !>; 0 ?*; 0 @-; 0 @+)
% SPC : TH1_THM_EQU_NAR
% Comments : This file was generated by Isabelle (most likely Sledgehammer)
% 2016-07-13 14:41:06.898
%------------------------------------------------------------------------------
%----Could-be-implicit typings (9)
thf(ty_t_RBT__Impl__Mirabelle__msmaddcmtr_Ocolor,type,
rBT_Im1923302023_color: $tType ).
thf(ty_t_RBT__Impl__Mirabelle__msmaddcmtr_Orbt,type,
rBT_Im246033960le_rbt: $tType > $tType > $tType ).
thf(ty_t_Product__Type_Oprod,type,
product_prod: $tType > $tType > $tType ).
thf(ty_t_Option_Ooption,type,
option: $tType > $tType ).
thf(ty_t_List_Olist,type,
list: $tType > $tType ).
thf(ty_t_Set_Oset,type,
set: $tType > $tType ).
thf(ty_t_itself,type,
itself: $tType > $tType ).
thf(ty_tf_b,type,
b: $tType ).
thf(ty_tf_a,type,
a: $tType ).
%----Explicit typings (63)
thf(sy_cl_HOL_Otype,type,
type:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Orderings_Oorder,type,
order:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_c_Fun_Oinj__on,type,
inj_on:
!>[A: $tType,B: $tType] : ( ( A > B ) > ( set @ A ) > $o ) ).
thf(sy_c_List_Oappend,type,
append:
!>[A: $tType] : ( ( list @ A ) > ( list @ A ) > ( list @ A ) ) ).
thf(sy_c_List_Obind,type,
bind:
!>[A: $tType,B: $tType] : ( ( list @ A ) > ( A > ( list @ B ) ) > ( list @ B ) ) ).
thf(sy_c_List_Odistinct,type,
distinct:
!>[A: $tType] : ( ( list @ A ) > $o ) ).
thf(sy_c_List_Oextract,type,
extract:
!>[A: $tType] : ( ( A > $o ) > ( list @ A ) > ( option @ ( product_prod @ ( list @ A ) @ ( product_prod @ A @ ( list @ A ) ) ) ) ) ).
thf(sy_c_List_Olist_OCons,type,
cons:
!>[A: $tType] : ( A > ( list @ A ) > ( list @ A ) ) ).
thf(sy_c_List_Olist_ONil,type,
nil:
!>[A: $tType] : ( list @ A ) ).
thf(sy_c_List_Olist_Oset,type,
set2:
!>[A: $tType] : ( ( list @ A ) > ( set @ A ) ) ).
thf(sy_c_List_Olistrel1,type,
listrel1:
!>[A: $tType] : ( ( set @ ( product_prod @ A @ A ) ) > ( set @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) ) ) ).
thf(sy_c_List_Oord_Olexordp,type,
lexordp:
!>[A: $tType] : ( ( A > A > $o ) > ( list @ A ) > ( list @ A ) > $o ) ).
thf(sy_c_List_Oord_Olexordp__eq,type,
lexordp_eq:
!>[A: $tType] : ( ( A > A > $o ) > ( list @ A ) > ( list @ A ) > $o ) ).
thf(sy_c_List_Oproduct__lists,type,
product_lists:
!>[A: $tType] : ( ( list @ ( list @ A ) ) > ( list @ ( list @ A ) ) ) ).
thf(sy_c_List_Osublists,type,
sublists:
!>[A: $tType] : ( ( list @ A ) > ( list @ ( list @ A ) ) ) ).
thf(sy_c_List_Ounion,type,
union:
!>[A: $tType] : ( ( list @ A ) > ( list @ A ) > ( list @ A ) ) ).
thf(sy_c_Map_Odom,type,
dom:
!>[A: $tType,B: $tType] : ( ( A > ( option @ B ) ) > ( set @ A ) ) ).
thf(sy_c_Map_Omap__of,type,
map_of:
!>[A: $tType,B: $tType] : ( ( list @ ( product_prod @ A @ B ) ) > A > ( option @ B ) ) ).
thf(sy_c_Option_Ooption_ONone,type,
none:
!>[A: $tType] : ( option @ A ) ).
thf(sy_c_Option_Ooption_OSome,type,
some:
!>[A: $tType] : ( A > ( option @ A ) ) ).
thf(sy_c_Orderings_Oord__class_Oless,type,
ord_less:
!>[A: $tType] : ( A > A > $o ) ).
thf(sy_c_Orderings_Oorder_Ostrict__mono,type,
strict_mono:
!>[A: $tType,B: $tType] : ( ( A > A > $o ) > ( A > B ) > $o ) ).
thf(sy_c_Product__Type_OPair,type,
product_Pair:
!>[A: $tType,B: $tType] : ( A > B > ( product_prod @ A @ B ) ) ).
thf(sy_c_Pure_Otype,type,
type2:
!>[A: $tType] : ( itself @ A ) ).
thf(sy_c_RBT__Impl__Mirabelle__msmaddcmtr_Ocolor_OB,type,
rBT_Impl_Mirabelle_B: rBT_Im1923302023_color ).
thf(sy_c_RBT__Impl__Mirabelle__msmaddcmtr_Ocolor_OR,type,
rBT_Impl_Mirabelle_R: rBT_Im1923302023_color ).
thf(sy_c_RBT__Impl__Mirabelle__msmaddcmtr_Ocolor__of,type,
rBT_Im1805589839lor_of:
!>[A: $tType,B: $tType] : ( ( rBT_Im246033960le_rbt @ A @ B ) > rBT_Im1923302023_color ) ).
thf(sy_c_RBT__Impl__Mirabelle__msmaddcmtr_Oentries,type,
rBT_Im954575269ntries:
!>[A: $tType,B: $tType] : ( ( rBT_Im246033960le_rbt @ A @ B ) > ( list @ ( product_prod @ A @ B ) ) ) ).
thf(sy_c_RBT__Impl__Mirabelle__msmaddcmtr_Oinv1,type,
rBT_Im1040612427e_inv1:
!>[A: $tType,B: $tType] : ( ( rBT_Im246033960le_rbt @ A @ B ) > $o ) ).
thf(sy_c_RBT__Impl__Mirabelle__msmaddcmtr_Oinv2,type,
rBT_Im1040612428e_inv2:
!>[A: $tType,B: $tType] : ( ( rBT_Im246033960le_rbt @ A @ B ) > $o ) ).
thf(sy_c_RBT__Impl__Mirabelle__msmaddcmtr_Okeys,type,
rBT_Im380146495e_keys:
!>[A: $tType,B: $tType] : ( ( rBT_Im246033960le_rbt @ A @ B ) > ( list @ A ) ) ).
thf(sy_c_RBT__Impl__Mirabelle__msmaddcmtr_Oord_Ois__rbt,type,
rBT_Im862805236is_rbt:
!>[A: $tType,B: $tType] : ( ( A > A > $o ) > ( rBT_Im246033960le_rbt @ A @ B ) > $o ) ).
thf(sy_c_RBT__Impl__Mirabelle__msmaddcmtr_Oord_Orbt__greater,type,
rBT_Im1259024060reater:
!>[A: $tType,B: $tType] : ( ( A > A > $o ) > A > ( rBT_Im246033960le_rbt @ A @ B ) > $o ) ).
thf(sy_c_RBT__Impl__Mirabelle__msmaddcmtr_Oord_Orbt__less,type,
rBT_Im2075124343t_less:
!>[A: $tType,B: $tType] : ( ( A > A > $o ) > A > ( rBT_Im246033960le_rbt @ A @ B ) > $o ) ).
thf(sy_c_RBT__Impl__Mirabelle__msmaddcmtr_Oord_Orbt__lookup,type,
rBT_Im35466040lookup:
!>[A: $tType,B: $tType] : ( ( A > A > $o ) > ( rBT_Im246033960le_rbt @ A @ B ) > A > ( option @ B ) ) ).
thf(sy_c_RBT__Impl__Mirabelle__msmaddcmtr_Oord_Orbt__sorted,type,
rBT_Im759614907sorted:
!>[A: $tType,B: $tType] : ( ( A > A > $o ) > ( rBT_Im246033960le_rbt @ A @ B ) > $o ) ).
thf(sy_c_RBT__Impl__Mirabelle__msmaddcmtr_Orbt_OBranch,type,
rBT_Im480247531Branch:
!>[A: $tType,B: $tType] : ( rBT_Im1923302023_color > ( rBT_Im246033960le_rbt @ A @ B ) > A > B > ( rBT_Im246033960le_rbt @ A @ B ) > ( rBT_Im246033960le_rbt @ A @ B ) ) ).
thf(sy_c_RBT__Impl__Mirabelle__msmaddcmtr_Orbt_OEmpty,type,
rBT_Im418718756_Empty:
!>[A: $tType,B: $tType] : ( rBT_Im246033960le_rbt @ A @ B ) ).
thf(sy_c_Set_OCollect,type,
collect:
!>[A: $tType] : ( ( A > $o ) > ( set @ A ) ) ).
thf(sy_c_Set_Othe__elem,type,
the_elem:
!>[A: $tType] : ( ( set @ A ) > A ) ).
thf(sy_c_Set__Interval_Oord_OgreaterThan,type,
set_greaterThan:
!>[A: $tType] : ( ( A > A > $o ) > A > ( set @ A ) ) ).
thf(sy_c_Set__Interval_Oord_OlessThan,type,
set_lessThan:
!>[A: $tType] : ( ( A > A > $o ) > A > ( set @ A ) ) ).
thf(sy_c_Transitive__Closure_Oacyclic,type,
transitive_acyclic:
!>[A: $tType] : ( ( set @ ( product_prod @ A @ A ) ) > $o ) ).
thf(sy_c_member,type,
member:
!>[A: $tType] : ( A > ( set @ A ) > $o ) ).
thf(sy_v_b____,type,
b2: rBT_Im246033960le_rbt @ a @ b ).
thf(sy_v_c____,type,
c: rBT_Im246033960le_rbt @ a @ b ).
thf(sy_v_k,type,
k: a ).
thf(sy_v_l,type,
l: rBT_Im246033960le_rbt @ a @ b ).
thf(sy_v_less,type,
less: a > a > $o ).
thf(sy_v_r,type,
r: rBT_Im246033960le_rbt @ a @ b ).
thf(sy_v_s____,type,
s: b ).
thf(sy_v_t____,type,
t: b ).
thf(sy_v_va____,type,
va: rBT_Im246033960le_rbt @ a @ b ).
thf(sy_v_vb____,type,
vb: a ).
thf(sy_v_vc____,type,
vc: rBT_Im246033960le_rbt @ a @ b ).
thf(sy_v_vd____,type,
vd: rBT_Im246033960le_rbt @ a @ b ).
thf(sy_v_ve____,type,
ve: a ).
thf(sy_v_vf____,type,
vf: rBT_Im246033960le_rbt @ a @ b ).
thf(sy_v_vg____,type,
vg: b ).
thf(sy_v_vii____,type,
vii: b ).
thf(sy_v_x____,type,
x: a ).
thf(sy_v_y____,type,
y: a ).
thf(sy_v_z____,type,
z: a ).
%----Relevant facts (255)
thf(fact_0_local_Oantisym__conv3,axiom,
! [Y: a,X: a] :
( ~ ( less @ Y @ X )
=> ( ( ~ ( less @ X @ Y ) )
= ( X = Y ) ) ) ).
% local.antisym_conv3
thf(fact_1_local_Odual__order_Oasym,axiom,
! [B2: a,A2: a] :
( ( less @ B2 @ A2 )
=> ~ ( less @ A2 @ B2 ) ) ).
% local.dual_order.asym
thf(fact_2_local_Odual__order_Ostrict__implies__not__eq,axiom,
! [B2: a,A2: a] :
( ( less @ B2 @ A2 )
=> ( A2 != B2 ) ) ).
% local.dual_order.strict_implies_not_eq
thf(fact_3_local_Odual__order_Ostrict__trans,axiom,
! [B2: a,A2: a,C: a] :
( ( less @ B2 @ A2 )
=> ( ( less @ C @ B2 )
=> ( less @ C @ A2 ) ) ) ).
% local.dual_order.strict_trans
thf(fact_4_local_Oless__asym,axiom,
! [X: a,Y: a] :
( ( less @ X @ Y )
=> ~ ( less @ Y @ X ) ) ).
% local.less_asym
thf(fact_5_local_Oless__asym_H,axiom,
! [A2: a,B2: a] :
( ( less @ A2 @ B2 )
=> ~ ( less @ B2 @ A2 ) ) ).
% local.less_asym'
thf(fact_6_local_Oless__imp__neq,axiom,
! [X: a,Y: a] :
( ( less @ X @ Y )
=> ( X != Y ) ) ).
% local.less_imp_neq
thf(fact_7_local_Oless__imp__not__eq,axiom,
! [X: a,Y: a] :
( ( less @ X @ Y )
=> ( X != Y ) ) ).
% local.less_imp_not_eq
thf(fact_8_local_Oless__imp__not__eq2,axiom,
! [X: a,Y: a] :
( ( less @ X @ Y )
=> ( Y != X ) ) ).
% local.less_imp_not_eq2
thf(fact_9_local_Oless__imp__not__less,axiom,
! [X: a,Y: a] :
( ( less @ X @ Y )
=> ~ ( less @ Y @ X ) ) ).
% local.less_imp_not_less
thf(fact_10_local_Oless__imp__triv,axiom,
! [X: a,Y: a,P: $o] :
( ( less @ X @ Y )
=> ( ( less @ Y @ X )
=> P ) ) ).
% local.less_imp_triv
thf(fact_11_local_Oless__irrefl,axiom,
! [X: a] :
~ ( less @ X @ X ) ).
% local.less_irrefl
thf(fact_12_local_Oless__linear,axiom,
! [X: a,Y: a] :
( ( less @ X @ Y )
| ( X = Y )
| ( less @ Y @ X ) ) ).
% local.less_linear
thf(fact_13_local_Oless__not__sym,axiom,
! [X: a,Y: a] :
( ( less @ X @ Y )
=> ~ ( less @ Y @ X ) ) ).
% local.less_not_sym
thf(fact_14_local_Oless__trans,axiom,
! [X: a,Y: a,Z: a] :
( ( less @ X @ Y )
=> ( ( less @ Y @ Z )
=> ( less @ X @ Z ) ) ) ).
% local.less_trans
thf(fact_15_local_Olinorder__cases,axiom,
! [X: a,Y: a] :
( ~ ( less @ X @ Y )
=> ( ( X != Y )
=> ( less @ Y @ X ) ) ) ).
% local.linorder_cases
thf(fact_16_local_OneqE,axiom,
! [X: a,Y: a] :
( ( X != Y )
=> ( ~ ( less @ X @ Y )
=> ( less @ Y @ X ) ) ) ).
% local.neqE
thf(fact_17_local_Oneq__iff,axiom,
! [X: a,Y: a] :
( ( X != Y )
= ( ( less @ X @ Y )
| ( less @ Y @ X ) ) ) ).
% local.neq_iff
thf(fact_18_local_Onot__less__iff__gr__or__eq,axiom,
! [X: a,Y: a] :
( ( ~ ( less @ X @ Y ) )
= ( ( less @ Y @ X )
| ( X = Y ) ) ) ).
% local.not_less_iff_gr_or_eq
thf(fact_19_local_Oord__eq__less__trans,axiom,
! [A2: a,B2: a,C: a] :
( ( A2 = B2 )
=> ( ( less @ B2 @ C )
=> ( less @ A2 @ C ) ) ) ).
% local.ord_eq_less_trans
thf(fact_20_local_Oord__less__eq__trans,axiom,
! [A2: a,B2: a,C: a] :
( ( less @ A2 @ B2 )
=> ( ( B2 = C )
=> ( less @ A2 @ C ) ) ) ).
% local.ord_less_eq_trans
thf(fact_21_local_Oorder_Oasym,axiom,
! [A2: a,B2: a] :
( ( less @ A2 @ B2 )
=> ~ ( less @ B2 @ A2 ) ) ).
% local.order.asym
thf(fact_22_local_Oorder_Oirrefl,axiom,
! [A2: a] :
~ ( less @ A2 @ A2 ) ).
% local.order.irrefl
thf(fact_23_local_Oorder_Ostrict__implies__not__eq,axiom,
! [A2: a,B2: a] :
( ( less @ A2 @ B2 )
=> ( A2 != B2 ) ) ).
% local.order.strict_implies_not_eq
thf(fact_24_local_Oorder_Ostrict__trans,axiom,
! [A2: a,B2: a,C: a] :
( ( less @ A2 @ B2 )
=> ( ( less @ B2 @ C )
=> ( less @ A2 @ C ) ) ) ).
% local.order.strict_trans
thf(fact_25_assms_I2_J,axiom,
rBT_Im759614907sorted @ a @ b @ less @ r ).
% assms(2)
thf(fact_26_assms_I1_J,axiom,
rBT_Im759614907sorted @ a @ b @ less @ l ).
% assms(1)
thf(fact_27_local_Orbt__less__trans,axiom,
! [C2: $tType,X: a,T: rBT_Im246033960le_rbt @ a @ C2,Y: a] :
( ( rBT_Im2075124343t_less @ a @ C2 @ less @ X @ T )
=> ( ( less @ X @ Y )
=> ( rBT_Im2075124343t_less @ a @ C2 @ less @ Y @ T ) ) ) ).
% local.rbt_less_trans
thf(fact_28_local_Orbt__greater__trans,axiom,
! [C2: $tType,X: a,Y: a,T: rBT_Im246033960le_rbt @ a @ C2] :
( ( less @ X @ Y )
=> ( ( rBT_Im1259024060reater @ a @ C2 @ less @ Y @ T )
=> ( rBT_Im1259024060reater @ a @ C2 @ less @ X @ T ) ) ) ).
% local.rbt_greater_trans
thf(fact_29_rbt_Oinject,axiom,
! [B: $tType,A: $tType,X21: rBT_Im1923302023_color,X22: rBT_Im246033960le_rbt @ A @ B,X23: A,X24: B,X25: rBT_Im246033960le_rbt @ A @ B,Y21: rBT_Im1923302023_color,Y22: rBT_Im246033960le_rbt @ A @ B,Y23: A,Y24: B,Y25: rBT_Im246033960le_rbt @ A @ B] :
( ( ( rBT_Im480247531Branch @ A @ B @ X21 @ X22 @ X23 @ X24 @ X25 )
= ( rBT_Im480247531Branch @ A @ B @ Y21 @ Y22 @ Y23 @ Y24 @ Y25 ) )
= ( ( X21 = Y21 )
& ( X22 = Y22 )
& ( X23 = Y23 )
& ( X24 = Y24 )
& ( X25 = Y25 ) ) ) ).
% rbt.inject
thf(fact_30_assms_I3_J,axiom,
rBT_Im2075124343t_less @ a @ b @ less @ k @ l ).
% assms(3)
thf(fact_31_assms_I4_J,axiom,
rBT_Im1259024060reater @ a @ b @ less @ k @ r ).
% assms(4)
thf(fact_32_local_Orbt__sorted_Osimps_I2_J,axiom,
! [B: $tType,C: rBT_Im1923302023_color,L: rBT_Im246033960le_rbt @ a @ B,K: a,V: B,R: rBT_Im246033960le_rbt @ a @ B] :
( ( rBT_Im759614907sorted @ a @ B @ less @ ( rBT_Im480247531Branch @ a @ B @ C @ L @ K @ V @ R ) )
= ( ( rBT_Im2075124343t_less @ a @ B @ less @ K @ L )
& ( rBT_Im1259024060reater @ a @ B @ less @ K @ R )
& ( rBT_Im759614907sorted @ a @ B @ less @ L )
& ( rBT_Im759614907sorted @ a @ B @ less @ R ) ) ) ).
% local.rbt_sorted.simps(2)
thf(fact_33_local_Orbt__greater__simps_I2_J,axiom,
! [C2: $tType,K: a,C: rBT_Im1923302023_color,Lt: rBT_Im246033960le_rbt @ a @ C2,Kt: a,V: C2,Rt: rBT_Im246033960le_rbt @ a @ C2] :
( ( rBT_Im1259024060reater @ a @ C2 @ less @ K @ ( rBT_Im480247531Branch @ a @ C2 @ C @ Lt @ Kt @ V @ Rt ) )
= ( ( less @ K @ Kt )
& ( rBT_Im1259024060reater @ a @ C2 @ less @ K @ Lt )
& ( rBT_Im1259024060reater @ a @ C2 @ less @ K @ Rt ) ) ) ).
% local.rbt_greater_simps(2)
thf(fact_34_local_Ostrict__mono__eq,axiom,
! [B: $tType] :
( ( order @ B @ ( type2 @ B ) )
=> ! [F: a > B,X: a,Y: a] :
( ( strict_mono @ a @ B @ less @ F )
=> ( ( ( F @ X )
= ( F @ Y ) )
= ( X = Y ) ) ) ) ).
% local.strict_mono_eq
thf(fact_35_ord_Orbt__greater__simps_I2_J,axiom,
! [C2: $tType,A: $tType,Less: A > A > $o,K: A,C: rBT_Im1923302023_color,Lt: rBT_Im246033960le_rbt @ A @ C2,Kt: A,V: C2,Rt: rBT_Im246033960le_rbt @ A @ C2] :
( ( rBT_Im1259024060reater @ A @ C2 @ Less @ K @ ( rBT_Im480247531Branch @ A @ C2 @ C @ Lt @ Kt @ V @ Rt ) )
= ( ( Less @ K @ Kt )
& ( rBT_Im1259024060reater @ A @ C2 @ Less @ K @ Lt )
& ( rBT_Im1259024060reater @ A @ C2 @ Less @ K @ Rt ) ) ) ).
% ord.rbt_greater_simps(2)
thf(fact_36_local_Orbt__less__simps_I2_J,axiom,
! [C2: $tType,K: a,C: rBT_Im1923302023_color,Lt: rBT_Im246033960le_rbt @ a @ C2,Kt: a,V: C2,Rt: rBT_Im246033960le_rbt @ a @ C2] :
( ( rBT_Im2075124343t_less @ a @ C2 @ less @ K @ ( rBT_Im480247531Branch @ a @ C2 @ C @ Lt @ Kt @ V @ Rt ) )
= ( ( less @ Kt @ K )
& ( rBT_Im2075124343t_less @ a @ C2 @ less @ K @ Lt )
& ( rBT_Im2075124343t_less @ a @ C2 @ less @ K @ Rt ) ) ) ).
% local.rbt_less_simps(2)
thf(fact_37__C1_C,axiom,
rBT_Im2075124343t_less @ a @ b @ less @ y @ ( rBT_Im480247531Branch @ a @ b @ rBT_Impl_Mirabelle_B @ va @ vb @ vg @ vc ) ).
% "1"
thf(fact_38__092_060open_062x_A_060_Ay_A_092_060and_062_ABranch_AB_Ava_Avb_Avg_Avc_A_124_092_060guillemotleft_062_Ax_092_060close_062,axiom,
( ( less @ x @ y )
& ( rBT_Im2075124343t_less @ a @ b @ less @ x @ ( rBT_Im480247531Branch @ a @ b @ rBT_Impl_Mirabelle_B @ va @ vb @ vg @ vc ) ) ) ).
% \<open>x < y \<and> Branch B va vb vg vc |\<guillemotleft> x\<close>
thf(fact_39_local_Ois__rbt__rbt__sorted,axiom,
! [B: $tType,T: rBT_Im246033960le_rbt @ a @ B] :
( ( rBT_Im862805236is_rbt @ a @ B @ less @ T )
=> ( rBT_Im759614907sorted @ a @ B @ less @ T ) ) ).
% local.is_rbt_rbt_sorted
thf(fact_40__C5__4_Oprems_C_I4_J,axiom,
rBT_Im1259024060reater @ a @ b @ less @ x @ ( rBT_Im480247531Branch @ a @ b @ rBT_Impl_Mirabelle_R @ ( rBT_Im480247531Branch @ a @ b @ rBT_Impl_Mirabelle_R @ b2 @ y @ s @ c ) @ z @ t @ ( rBT_Im480247531Branch @ a @ b @ rBT_Impl_Mirabelle_B @ vd @ ve @ vii @ vf ) ) ).
% "5_4.prems"(4)
thf(fact_41__C5__4_Oprems_C_I2_J,axiom,
rBT_Im759614907sorted @ a @ b @ less @ ( rBT_Im480247531Branch @ a @ b @ rBT_Impl_Mirabelle_R @ ( rBT_Im480247531Branch @ a @ b @ rBT_Impl_Mirabelle_R @ b2 @ y @ s @ c ) @ z @ t @ ( rBT_Im480247531Branch @ a @ b @ rBT_Impl_Mirabelle_B @ vd @ ve @ vii @ vf ) ) ).
% "5_4.prems"(2)
thf(fact_42_ord_Orbt__sorted_Osimps_I2_J,axiom,
! [B: $tType,A: $tType,Less: A > A > $o,C: rBT_Im1923302023_color,L: rBT_Im246033960le_rbt @ A @ B,K: A,V: B,R: rBT_Im246033960le_rbt @ A @ B] :
( ( rBT_Im759614907sorted @ A @ B @ Less @ ( rBT_Im480247531Branch @ A @ B @ C @ L @ K @ V @ R ) )
= ( ( rBT_Im2075124343t_less @ A @ B @ Less @ K @ L )
& ( rBT_Im1259024060reater @ A @ B @ Less @ K @ R )
& ( rBT_Im759614907sorted @ A @ B @ Less @ L )
& ( rBT_Im759614907sorted @ A @ B @ Less @ R ) ) ) ).
% ord.rbt_sorted.simps(2)
thf(fact_43_ord_Orbt__less__simps_I2_J,axiom,
! [C2: $tType,A: $tType,Less: A > A > $o,K: A,C: rBT_Im1923302023_color,Lt: rBT_Im246033960le_rbt @ A @ C2,Kt: A,V: C2,Rt: rBT_Im246033960le_rbt @ A @ C2] :
( ( rBT_Im2075124343t_less @ A @ C2 @ Less @ K @ ( rBT_Im480247531Branch @ A @ C2 @ C @ Lt @ Kt @ V @ Rt ) )
= ( ( Less @ Kt @ K )
& ( rBT_Im2075124343t_less @ A @ C2 @ Less @ K @ Lt )
& ( rBT_Im2075124343t_less @ A @ C2 @ Less @ K @ Rt ) ) ) ).
% ord.rbt_less_simps(2)
thf(fact_44_color_Odistinct_I1_J,axiom,
rBT_Impl_Mirabelle_R != rBT_Impl_Mirabelle_B ).
% color.distinct(1)
thf(fact_45_mem__Collect__eq,axiom,
! [A: $tType,A2: A,P: A > $o] :
( ( member @ A @ A2 @ ( collect @ A @ P ) )
= ( P @ A2 ) ) ).
% mem_Collect_eq
thf(fact_46_Collect__mem__eq,axiom,
! [A: $tType,A3: set @ A] :
( ( collect @ A
@ ^ [X2: A] : ( member @ A @ X2 @ A3 ) )
= A3 ) ).
% Collect_mem_eq
thf(fact_47_Collect__cong,axiom,
! [A: $tType,P: A > $o,Q: A > $o] :
( ! [X3: A] :
( ( P @ X3 )
= ( Q @ X3 ) )
=> ( ( collect @ A @ P )
= ( collect @ A @ Q ) ) ) ).
% Collect_cong
thf(fact_48_ext,axiom,
! [B: $tType,A: $tType,F: A > B,G: A > B] :
( ! [X3: A] :
( ( F @ X3 )
= ( G @ X3 ) )
=> ( F = G ) ) ).
% ext
thf(fact_49_color_Oinduct,axiom,
! [P: rBT_Im1923302023_color > $o,Color: rBT_Im1923302023_color] :
( ( P @ rBT_Impl_Mirabelle_R )
=> ( ( P @ rBT_Impl_Mirabelle_B )
=> ( P @ Color ) ) ) ).
% color.induct
thf(fact_50_color_Oexhaust,axiom,
! [Y: rBT_Im1923302023_color] :
( ( Y != rBT_Impl_Mirabelle_R )
=> ( Y = rBT_Impl_Mirabelle_B ) ) ).
% color.exhaust
thf(fact_51_local_Olexordp__eq__antisym,axiom,
! [Xs: list @ a,Ys: list @ a] :
( ( lexordp_eq @ a @ less @ Xs @ Ys )
=> ( ( lexordp_eq @ a @ less @ Ys @ Xs )
=> ( Xs = Ys ) ) ) ).
% local.lexordp_eq_antisym
thf(fact_52_local_Olexordp__eq__trans,axiom,
! [Xs: list @ a,Ys: list @ a,Zs: list @ a] :
( ( lexordp_eq @ a @ less @ Xs @ Ys )
=> ( ( lexordp_eq @ a @ less @ Ys @ Zs )
=> ( lexordp_eq @ a @ less @ Xs @ Zs ) ) ) ).
% local.lexordp_eq_trans
thf(fact_53_local_Olexordp__eq__refl,axiom,
! [Xs: list @ a] : ( lexordp_eq @ a @ less @ Xs @ Xs ) ).
% local.lexordp_eq_refl
thf(fact_54_local_Olexordp__eq__linear,axiom,
! [Xs: list @ a,Ys: list @ a] :
( ( lexordp_eq @ a @ less @ Xs @ Ys )
| ( lexordp_eq @ a @ less @ Ys @ Xs ) ) ).
% local.lexordp_eq_linear
thf(fact_55__C5__4_Oprems_C_I1_J,axiom,
rBT_Im759614907sorted @ a @ b @ less @ ( rBT_Im480247531Branch @ a @ b @ rBT_Impl_Mirabelle_B @ va @ vb @ vg @ vc ) ).
% "5_4.prems"(1)
thf(fact_56__C5__4_Oprems_C_I3_J,axiom,
rBT_Im2075124343t_less @ a @ b @ less @ x @ ( rBT_Im480247531Branch @ a @ b @ rBT_Impl_Mirabelle_B @ va @ vb @ vg @ vc ) ).
% "5_4.prems"(3)
thf(fact_57_ord_Ois__rbt__rbt__sorted,axiom,
! [B: $tType,A: $tType,Less: A > A > $o,T: rBT_Im246033960le_rbt @ A @ B] :
( ( rBT_Im862805236is_rbt @ A @ B @ Less @ T )
=> ( rBT_Im759614907sorted @ A @ B @ Less @ T ) ) ).
% ord.is_rbt_rbt_sorted
thf(fact_58_local_OgreaterThan__def,axiom,
! [L: a] :
( ( set_greaterThan @ a @ less @ L )
= ( collect @ a @ ( less @ L ) ) ) ).
% local.greaterThan_def
thf(fact_59_local_OlessThan__def,axiom,
! [U: a] :
( ( set_lessThan @ a @ less @ U )
= ( collect @ a
@ ^ [X2: a] : ( less @ X2 @ U ) ) ) ).
% local.lessThan_def
thf(fact_60_local_OEmpty__is__rbt,axiom,
! [B: $tType] : ( rBT_Im862805236is_rbt @ a @ B @ less @ ( rBT_Im418718756_Empty @ a @ B ) ) ).
% local.Empty_is_rbt
thf(fact_61_local_Ostrict__mono__less,axiom,
! [B: $tType] :
( ( order @ B @ ( type2 @ B ) )
=> ! [F: a > B,X: a,Y: a] :
( ( strict_mono @ a @ B @ less @ F )
=> ( ( ord_less @ B @ ( F @ X ) @ ( F @ Y ) )
= ( less @ X @ Y ) ) ) ) ).
% local.strict_mono_less
thf(fact_62_local_Ostrict__mono__def,axiom,
! [B: $tType] :
( ( order @ B @ ( type2 @ B ) )
=> ! [F: a > B] :
( ( strict_mono @ a @ B @ less @ F )
= ( ! [X2: a,Y2: a] :
( ( less @ X2 @ Y2 )
=> ( ord_less @ B @ ( F @ X2 ) @ ( F @ Y2 ) ) ) ) ) ) ).
% local.strict_mono_def
thf(fact_63_local_Ostrict__monoI,axiom,
! [B: $tType] :
( ( order @ B @ ( type2 @ B ) )
=> ! [F: a > B] :
( ! [X3: a,Y3: a] :
( ( less @ X3 @ Y3 )
=> ( ord_less @ B @ ( F @ X3 ) @ ( F @ Y3 ) ) )
=> ( strict_mono @ a @ B @ less @ F ) ) ) ).
% local.strict_monoI
thf(fact_64_local_Ostrict__monoD,axiom,
! [B: $tType] :
( ( order @ B @ ( type2 @ B ) )
=> ! [F: a > B,X: a,Y: a] :
( ( strict_mono @ a @ B @ less @ F )
=> ( ( less @ X @ Y )
=> ( ord_less @ B @ ( F @ X ) @ ( F @ Y ) ) ) ) ) ).
% local.strict_monoD
thf(fact_65_local_Olexordp__eq_ONil,axiom,
! [Ys: list @ a] : ( lexordp_eq @ a @ less @ ( nil @ a ) @ Ys ) ).
% local.lexordp_eq.Nil
thf(fact_66_local_Orbt__sorted_Osimps_I1_J,axiom,
! [B: $tType] : ( rBT_Im759614907sorted @ a @ B @ less @ ( rBT_Im418718756_Empty @ a @ B ) ) ).
% local.rbt_sorted.simps(1)
thf(fact_67_local_OlessThan__iff,axiom,
! [I: a,K: a] :
( ( member @ a @ I @ ( set_lessThan @ a @ less @ K ) )
= ( less @ I @ K ) ) ).
% local.lessThan_iff
thf(fact_68_local_OgreaterThan__iff,axiom,
! [I: a,K: a] :
( ( member @ a @ I @ ( set_greaterThan @ a @ less @ K ) )
= ( less @ K @ I ) ) ).
% local.greaterThan_iff
thf(fact_69_local_Olexordp__eq__simps_I2_J,axiom,
! [Xs: list @ a] :
( ( lexordp_eq @ a @ less @ Xs @ ( nil @ a ) )
= ( Xs
= ( nil @ a ) ) ) ).
% local.lexordp_eq_simps(2)
thf(fact_70_local_Olexordp__eq__simps_I1_J,axiom,
! [Ys: list @ a] : ( lexordp_eq @ a @ less @ ( nil @ a ) @ Ys ) ).
% local.lexordp_eq_simps(1)
thf(fact_71_local_Orbt__less__simps_I1_J,axiom,
! [B: $tType,K: a] : ( rBT_Im2075124343t_less @ a @ B @ less @ K @ ( rBT_Im418718756_Empty @ a @ B ) ) ).
% local.rbt_less_simps(1)
thf(fact_72_local_Orbt__greater__simps_I1_J,axiom,
! [B: $tType,K: a] : ( rBT_Im1259024060reater @ a @ B @ less @ K @ ( rBT_Im418718756_Empty @ a @ B ) ) ).
% local.rbt_greater_simps(1)
thf(fact_73_rbt_Odistinct_I1_J,axiom,
! [B: $tType,A: $tType,X21: rBT_Im1923302023_color,X22: rBT_Im246033960le_rbt @ A @ B,X23: A,X24: B,X25: rBT_Im246033960le_rbt @ A @ B] :
( ( rBT_Im418718756_Empty @ A @ B )
!= ( rBT_Im480247531Branch @ A @ B @ X21 @ X22 @ X23 @ X24 @ X25 ) ) ).
% rbt.distinct(1)
thf(fact_74_rbt_Oinduct,axiom,
! [B: $tType,A: $tType,P: ( rBT_Im246033960le_rbt @ A @ B ) > $o,Rbt: rBT_Im246033960le_rbt @ A @ B] :
( ( P @ ( rBT_Im418718756_Empty @ A @ B ) )
=> ( ! [X1: rBT_Im1923302023_color,X26: rBT_Im246033960le_rbt @ A @ B,X32: A,X4: B,X5: rBT_Im246033960le_rbt @ A @ B] :
( ( P @ X26 )
=> ( ( P @ X5 )
=> ( P @ ( rBT_Im480247531Branch @ A @ B @ X1 @ X26 @ X32 @ X4 @ X5 ) ) ) )
=> ( P @ Rbt ) ) ) ).
% rbt.induct
thf(fact_75_rbt_Oexhaust,axiom,
! [B: $tType,A: $tType,Y: rBT_Im246033960le_rbt @ A @ B] :
( ( Y
!= ( rBT_Im418718756_Empty @ A @ B ) )
=> ~ ! [X212: rBT_Im1923302023_color,X222: rBT_Im246033960le_rbt @ A @ B,X232: A,X242: B,X252: rBT_Im246033960le_rbt @ A @ B] :
( Y
!= ( rBT_Im480247531Branch @ A @ B @ X212 @ X222 @ X232 @ X242 @ X252 ) ) ) ).
% rbt.exhaust
thf(fact_76_ord_Orbt__sorted_Osimps_I1_J,axiom,
! [B: $tType,A: $tType,Less: A > A > $o] : ( rBT_Im759614907sorted @ A @ B @ Less @ ( rBT_Im418718756_Empty @ A @ B ) ) ).
% ord.rbt_sorted.simps(1)
thf(fact_77_ord_Orbt__less__simps_I1_J,axiom,
! [B: $tType,A: $tType,Less: A > A > $o,K: A] : ( rBT_Im2075124343t_less @ A @ B @ Less @ K @ ( rBT_Im418718756_Empty @ A @ B ) ) ).
% ord.rbt_less_simps(1)
thf(fact_78_ord_Orbt__greater__simps_I1_J,axiom,
! [B: $tType,A: $tType,Less: A > A > $o,K: A] : ( rBT_Im1259024060reater @ A @ B @ Less @ K @ ( rBT_Im418718756_Empty @ A @ B ) ) ).
% ord.rbt_greater_simps(1)
thf(fact_79_ord_OEmpty__is__rbt,axiom,
! [B: $tType,A: $tType,Less: A > A > $o] : ( rBT_Im862805236is_rbt @ A @ B @ Less @ ( rBT_Im418718756_Empty @ A @ B ) ) ).
% ord.Empty_is_rbt
thf(fact_80_rbt__cases,axiom,
! [B: $tType,A: $tType,T: rBT_Im246033960le_rbt @ A @ B] :
( ( T
!= ( rBT_Im418718756_Empty @ A @ B ) )
=> ( ! [L2: rBT_Im246033960le_rbt @ A @ B,K2: A,V2: B,R2: rBT_Im246033960le_rbt @ A @ B] :
( T
!= ( rBT_Im480247531Branch @ A @ B @ rBT_Impl_Mirabelle_R @ L2 @ K2 @ V2 @ R2 ) )
=> ~ ! [L2: rBT_Im246033960le_rbt @ A @ B,K2: A,V2: B,R2: rBT_Im246033960le_rbt @ A @ B] :
( T
!= ( rBT_Im480247531Branch @ A @ B @ rBT_Impl_Mirabelle_B @ L2 @ K2 @ V2 @ R2 ) ) ) ) ).
% rbt_cases
thf(fact_81_ord_Olexordp__eq__simps_I1_J,axiom,
! [A: $tType,Less: A > A > $o,Ys: list @ A] : ( lexordp_eq @ A @ Less @ ( nil @ A ) @ Ys ) ).
% ord.lexordp_eq_simps(1)
thf(fact_82_ord_Olexordp__eq__simps_I2_J,axiom,
! [A: $tType,Less: A > A > $o,Xs: list @ A] :
( ( lexordp_eq @ A @ Less @ Xs @ ( nil @ A ) )
= ( Xs
= ( nil @ A ) ) ) ).
% ord.lexordp_eq_simps(2)
thf(fact_83_local_Olexordp__eq_Ocases,axiom,
! [A1: list @ a,A22: list @ a] :
( ( lexordp_eq @ a @ less @ A1 @ A22 )
=> ( ( ( A1
= ( nil @ a ) )
=> ! [Ys2: list @ a] : ( A22 != Ys2 ) )
=> ( ! [X3: a] :
( ? [Xs2: list @ a] :
( A1
= ( cons @ a @ X3 @ Xs2 ) )
=> ! [Y3: a] :
( ? [Ys2: list @ a] :
( A22
= ( cons @ a @ Y3 @ Ys2 ) )
=> ~ ( less @ X3 @ Y3 ) ) )
=> ~ ! [X3: a,Y3: a,Xs2: list @ a] :
( ( A1
= ( cons @ a @ X3 @ Xs2 ) )
=> ! [Ys2: list @ a] :
( ( A22
= ( cons @ a @ Y3 @ Ys2 ) )
=> ( ~ ( less @ X3 @ Y3 )
=> ( ~ ( less @ Y3 @ X3 )
=> ~ ( lexordp_eq @ a @ less @ Xs2 @ Ys2 ) ) ) ) ) ) ) ) ).
% local.lexordp_eq.cases
thf(fact_84_local_Olexordp__eq_Oinducts,axiom,
! [X12: list @ a,X27: list @ a,P: ( list @ a ) > ( list @ a ) > $o] :
( ( lexordp_eq @ a @ less @ X12 @ X27 )
=> ( ! [X1: list @ a] : ( P @ ( nil @ a ) @ X1 )
=> ( ! [X3: a,Y3: a,Xs2: list @ a,Ys2: list @ a] :
( ( less @ X3 @ Y3 )
=> ( P @ ( cons @ a @ X3 @ Xs2 ) @ ( cons @ a @ Y3 @ Ys2 ) ) )
=> ( ! [X3: a,Y3: a,Xs2: list @ a,Ys2: list @ a] :
( ~ ( less @ X3 @ Y3 )
=> ( ~ ( less @ Y3 @ X3 )
=> ( ( lexordp_eq @ a @ less @ Xs2 @ Ys2 )
=> ( ( P @ Xs2 @ Ys2 )
=> ( P @ ( cons @ a @ X3 @ Xs2 ) @ ( cons @ a @ Y3 @ Ys2 ) ) ) ) ) )
=> ( P @ X12 @ X27 ) ) ) ) ) ).
% local.lexordp_eq.inducts
thf(fact_85_local_Olexordp__eq_Osimps,axiom,
! [A1: list @ a,A22: list @ a] :
( ( lexordp_eq @ a @ less @ A1 @ A22 )
= ( ? [Ys3: list @ a] :
( ( A1
= ( nil @ a ) )
& ( A22 = Ys3 ) )
| ? [X2: a,Y2: a,Xs3: list @ a,Ys3: list @ a] :
( ( A1
= ( cons @ a @ X2 @ Xs3 ) )
& ( A22
= ( cons @ a @ Y2 @ Ys3 ) )
& ( less @ X2 @ Y2 ) )
| ? [X2: a,Y2: a,Xs3: list @ a,Ys3: list @ a] :
( ( A1
= ( cons @ a @ X2 @ Xs3 ) )
& ( A22
= ( cons @ a @ Y2 @ Ys3 ) )
& ~ ( less @ X2 @ Y2 )
& ~ ( less @ Y2 @ X2 )
& ( lexordp_eq @ a @ less @ Xs3 @ Ys3 ) ) ) ) ).
% local.lexordp_eq.simps
thf(fact_86_ord_Olexordp__eq_ONil,axiom,
! [A: $tType,Less: A > A > $o,Ys: list @ A] : ( lexordp_eq @ A @ Less @ ( nil @ A ) @ Ys ) ).
% ord.lexordp_eq.Nil
thf(fact_87_local_Olexordp__eq_OCons,axiom,
! [X: a,Y: a,Xs: list @ a,Ys: list @ a] :
( ( less @ X @ Y )
=> ( lexordp_eq @ a @ less @ ( cons @ a @ X @ Xs ) @ ( cons @ a @ Y @ Ys ) ) ) ).
% local.lexordp_eq.Cons
thf(fact_88_local_Olexordp__eq_OCons__eq,axiom,
! [X: a,Y: a,Xs: list @ a,Ys: list @ a] :
( ~ ( less @ X @ Y )
=> ( ~ ( less @ Y @ X )
=> ( ( lexordp_eq @ a @ less @ Xs @ Ys )
=> ( lexordp_eq @ a @ less @ ( cons @ a @ X @ Xs ) @ ( cons @ a @ Y @ Ys ) ) ) ) ) ).
% local.lexordp_eq.Cons_eq
thf(fact_89_list_Oinject,axiom,
! [A: $tType,X21: A,X22: list @ A,Y21: A,Y22: list @ A] :
( ( ( cons @ A @ X21 @ X22 )
= ( cons @ A @ Y21 @ Y22 ) )
= ( ( X21 = Y21 )
& ( X22 = Y22 ) ) ) ).
% list.inject
thf(fact_90_ord_Olexordp__eq__simps_I4_J,axiom,
! [A: $tType,Less: A > A > $o,X: A,Xs: list @ A,Y: A,Ys: list @ A] :
( ( lexordp_eq @ A @ Less @ ( cons @ A @ X @ Xs ) @ ( cons @ A @ Y @ Ys ) )
= ( ( Less @ X @ Y )
| ( ~ ( Less @ Y @ X )
& ( lexordp_eq @ A @ Less @ Xs @ Ys ) ) ) ) ).
% ord.lexordp_eq_simps(4)
thf(fact_91_ord_Olexordp__eq__simps_I3_J,axiom,
! [A: $tType,Less: A > A > $o,X: A,Xs: list @ A] :
~ ( lexordp_eq @ A @ Less @ ( cons @ A @ X @ Xs ) @ ( nil @ A ) ) ).
% ord.lexordp_eq_simps(3)
thf(fact_92_local_Olexordp__eq__simps_I4_J,axiom,
! [X: a,Xs: list @ a,Y: a,Ys: list @ a] :
( ( lexordp_eq @ a @ less @ ( cons @ a @ X @ Xs ) @ ( cons @ a @ Y @ Ys ) )
= ( ( less @ X @ Y )
| ( ~ ( less @ Y @ X )
& ( lexordp_eq @ a @ less @ Xs @ Ys ) ) ) ) ).
% local.lexordp_eq_simps(4)
thf(fact_93_local_Olexordp__eq__simps_I3_J,axiom,
! [X: a,Xs: list @ a] :
~ ( lexordp_eq @ a @ less @ ( cons @ a @ X @ Xs ) @ ( nil @ a ) ) ).
% local.lexordp_eq_simps(3)
thf(fact_94_map__tailrec__rev_Oinduct,axiom,
! [A: $tType,B: $tType,P: ( A > B ) > ( list @ A ) > ( list @ B ) > $o,A0: A > B,A1: list @ A,A22: list @ B] :
( ! [F2: A > B,X1: list @ B] : ( P @ F2 @ ( nil @ A ) @ X1 )
=> ( ! [F2: A > B,A4: A,As: list @ A,Bs: list @ B] :
( ( P @ F2 @ As @ ( cons @ B @ ( F2 @ A4 ) @ Bs ) )
=> ( P @ F2 @ ( cons @ A @ A4 @ As ) @ Bs ) )
=> ( P @ A0 @ A1 @ A22 ) ) ) ).
% map_tailrec_rev.induct
thf(fact_95_list__nonempty__induct,axiom,
! [A: $tType,Xs: list @ A,P: ( list @ A ) > $o] :
( ( Xs
!= ( nil @ A ) )
=> ( ! [X3: A] : ( P @ ( cons @ A @ X3 @ ( nil @ A ) ) )
=> ( ! [X3: A,Xs2: list @ A] :
( ( Xs2
!= ( nil @ A ) )
=> ( ( P @ Xs2 )
=> ( P @ ( cons @ A @ X3 @ Xs2 ) ) ) )
=> ( P @ Xs ) ) ) ) ).
% list_nonempty_induct
thf(fact_96_remdups__adj_Oinduct,axiom,
! [A: $tType,P: ( list @ A ) > $o,A0: list @ A] :
( ( P @ ( nil @ A ) )
=> ( ! [X3: A] : ( P @ ( cons @ A @ X3 @ ( nil @ A ) ) )
=> ( ! [X3: A,Y3: A,Xs2: list @ A] :
( ( ( X3 = Y3 )
=> ( P @ ( cons @ A @ X3 @ Xs2 ) ) )
=> ( ( ( X3 != Y3 )
=> ( P @ ( cons @ A @ Y3 @ Xs2 ) ) )
=> ( P @ ( cons @ A @ X3 @ ( cons @ A @ Y3 @ Xs2 ) ) ) ) )
=> ( P @ A0 ) ) ) ) ).
% remdups_adj.induct
thf(fact_97_remdups__adj_Ocases,axiom,
! [A: $tType,X: list @ A] :
( ( X
!= ( nil @ A ) )
=> ( ! [X3: A] :
( X
!= ( cons @ A @ X3 @ ( nil @ A ) ) )
=> ~ ! [X3: A,Y3: A,Xs2: list @ A] :
( X
!= ( cons @ A @ X3 @ ( cons @ A @ Y3 @ Xs2 ) ) ) ) ) ).
% remdups_adj.cases
thf(fact_98_transpose_Ocases,axiom,
! [A: $tType,X: list @ ( list @ A )] :
( ( X
!= ( nil @ ( list @ A ) ) )
=> ( ! [Xss: list @ ( list @ A )] :
( X
!= ( cons @ ( list @ A ) @ ( nil @ A ) @ Xss ) )
=> ~ ! [X3: A,Xs2: list @ A,Xss: list @ ( list @ A )] :
( X
!= ( cons @ ( list @ A ) @ ( cons @ A @ X3 @ Xs2 ) @ Xss ) ) ) ) ).
% transpose.cases
thf(fact_99_splice_Oinduct,axiom,
! [A: $tType,P: ( list @ A ) > ( list @ A ) > $o,A0: list @ A,A1: list @ A] :
( ! [X1: list @ A] : ( P @ ( nil @ A ) @ X1 )
=> ( ! [V2: A,Va: list @ A] : ( P @ ( cons @ A @ V2 @ Va ) @ ( nil @ A ) )
=> ( ! [X3: A,Xs2: list @ A,Y3: A,Ys2: list @ A] :
( ( P @ Xs2 @ Ys2 )
=> ( P @ ( cons @ A @ X3 @ Xs2 ) @ ( cons @ A @ Y3 @ Ys2 ) ) )
=> ( P @ A0 @ A1 ) ) ) ) ).
% splice.induct
thf(fact_100_list__induct2_H,axiom,
! [A: $tType,B: $tType,P: ( list @ A ) > ( list @ B ) > $o,Xs: list @ A,Ys: list @ B] :
( ( P @ ( nil @ A ) @ ( nil @ B ) )
=> ( ! [X3: A,Xs2: list @ A] : ( P @ ( cons @ A @ X3 @ Xs2 ) @ ( nil @ B ) )
=> ( ! [Y3: B,Ys2: list @ B] : ( P @ ( nil @ A ) @ ( cons @ B @ Y3 @ Ys2 ) )
=> ( ! [X3: A,Xs2: list @ A,Y3: B,Ys2: list @ B] :
( ( P @ Xs2 @ Ys2 )
=> ( P @ ( cons @ A @ X3 @ Xs2 ) @ ( cons @ B @ Y3 @ Ys2 ) ) )
=> ( P @ Xs @ Ys ) ) ) ) ) ).
% list_induct2'
thf(fact_101_neq__Nil__conv,axiom,
! [A: $tType,Xs: list @ A] :
( ( Xs
!= ( nil @ A ) )
= ( ? [Y2: A,Ys3: list @ A] :
( Xs
= ( cons @ A @ Y2 @ Ys3 ) ) ) ) ).
% neq_Nil_conv
thf(fact_102_list_Oinducts,axiom,
! [A: $tType,P: ( list @ A ) > $o,List: list @ A] :
( ( P @ ( nil @ A ) )
=> ( ! [X1: A,X26: list @ A] :
( ( P @ X26 )
=> ( P @ ( cons @ A @ X1 @ X26 ) ) )
=> ( P @ List ) ) ) ).
% list.inducts
thf(fact_103_list_Oexhaust,axiom,
! [A: $tType,Y: list @ A] :
( ( Y
!= ( nil @ A ) )
=> ~ ! [X212: A,X222: list @ A] :
( Y
!= ( cons @ A @ X212 @ X222 ) ) ) ).
% list.exhaust
thf(fact_104_list_OdiscI,axiom,
! [A: $tType,List: list @ A,X21: A,X22: list @ A] :
( ( List
= ( cons @ A @ X21 @ X22 ) )
=> ( List
!= ( nil @ A ) ) ) ).
% list.discI
thf(fact_105_list_Odistinct_I1_J,axiom,
! [A: $tType,X21: A,X22: list @ A] :
( ( nil @ A )
!= ( cons @ A @ X21 @ X22 ) ) ).
% list.distinct(1)
thf(fact_106_not__Cons__self2,axiom,
! [A: $tType,X: A,Xs: list @ A] :
( ( cons @ A @ X @ Xs )
!= Xs ) ).
% not_Cons_self2
thf(fact_107_ord_Olexordp__eq_OCons__eq,axiom,
! [A: $tType,Less: A > A > $o,X: A,Y: A,Xs: list @ A,Ys: list @ A] :
( ~ ( Less @ X @ Y )
=> ( ~ ( Less @ Y @ X )
=> ( ( lexordp_eq @ A @ Less @ Xs @ Ys )
=> ( lexordp_eq @ A @ Less @ ( cons @ A @ X @ Xs ) @ ( cons @ A @ Y @ Ys ) ) ) ) ) ).
% ord.lexordp_eq.Cons_eq
thf(fact_108_ord_Olexordp__eq_OCons,axiom,
! [A: $tType,Less: A > A > $o,X: A,Y: A,Xs: list @ A,Ys: list @ A] :
( ( Less @ X @ Y )
=> ( lexordp_eq @ A @ Less @ ( cons @ A @ X @ Xs ) @ ( cons @ A @ Y @ Ys ) ) ) ).
% ord.lexordp_eq.Cons
thf(fact_109_ord_Olexordp__eq_Oinducts,axiom,
! [A: $tType,Less: A > A > $o,X12: list @ A,X27: list @ A,P: ( list @ A ) > ( list @ A ) > $o] :
( ( lexordp_eq @ A @ Less @ X12 @ X27 )
=> ( ! [X1: list @ A] : ( P @ ( nil @ A ) @ X1 )
=> ( ! [X3: A,Y3: A,Xs2: list @ A,Ys2: list @ A] :
( ( Less @ X3 @ Y3 )
=> ( P @ ( cons @ A @ X3 @ Xs2 ) @ ( cons @ A @ Y3 @ Ys2 ) ) )
=> ( ! [X3: A,Y3: A,Xs2: list @ A,Ys2: list @ A] :
( ~ ( Less @ X3 @ Y3 )
=> ( ~ ( Less @ Y3 @ X3 )
=> ( ( lexordp_eq @ A @ Less @ Xs2 @ Ys2 )
=> ( ( P @ Xs2 @ Ys2 )
=> ( P @ ( cons @ A @ X3 @ Xs2 ) @ ( cons @ A @ Y3 @ Ys2 ) ) ) ) ) )
=> ( P @ X12 @ X27 ) ) ) ) ) ).
% ord.lexordp_eq.inducts
thf(fact_110_ord_Olexordp__eq_Osimps,axiom,
! [A: $tType] :
( ( lexordp_eq @ A )
= ( ^ [Less2: A > A > $o,A12: list @ A,A23: list @ A] :
( ? [Ys3: list @ A] :
( ( A12
= ( nil @ A ) )
& ( A23 = Ys3 ) )
| ? [X2: A,Y2: A,Xs3: list @ A,Ys3: list @ A] :
( ( A12
= ( cons @ A @ X2 @ Xs3 ) )
& ( A23
= ( cons @ A @ Y2 @ Ys3 ) )
& ( Less2 @ X2 @ Y2 ) )
| ? [X2: A,Y2: A,Xs3: list @ A,Ys3: list @ A] :
( ( A12
= ( cons @ A @ X2 @ Xs3 ) )
& ( A23
= ( cons @ A @ Y2 @ Ys3 ) )
& ~ ( Less2 @ X2 @ Y2 )
& ~ ( Less2 @ Y2 @ X2 )
& ( lexordp_eq @ A @ Less2 @ Xs3 @ Ys3 ) ) ) ) ) ).
% ord.lexordp_eq.simps
thf(fact_111_ord_Olexordp__eq_Ocases,axiom,
! [A: $tType,Less: A > A > $o,A1: list @ A,A22: list @ A] :
( ( lexordp_eq @ A @ Less @ A1 @ A22 )
=> ( ( ( A1
= ( nil @ A ) )
=> ! [Ys2: list @ A] : ( A22 != Ys2 ) )
=> ( ! [X3: A] :
( ? [Xs2: list @ A] :
( A1
= ( cons @ A @ X3 @ Xs2 ) )
=> ! [Y3: A] :
( ? [Ys2: list @ A] :
( A22
= ( cons @ A @ Y3 @ Ys2 ) )
=> ~ ( Less @ X3 @ Y3 ) ) )
=> ~ ! [X3: A,Y3: A,Xs2: list @ A] :
( ( A1
= ( cons @ A @ X3 @ Xs2 ) )
=> ! [Ys2: list @ A] :
( ( A22
= ( cons @ A @ Y3 @ Ys2 ) )
=> ( ~ ( Less @ X3 @ Y3 )
=> ( ~ ( Less @ Y3 @ X3 )
=> ~ ( lexordp_eq @ A @ Less @ Xs2 @ Ys2 ) ) ) ) ) ) ) ) ).
% ord.lexordp_eq.cases
thf(fact_112_ord_Olexordp__eq__refl,axiom,
! [A: $tType,Less: A > A > $o,Xs: list @ A] : ( lexordp_eq @ A @ Less @ Xs @ Xs ) ).
% ord.lexordp_eq_refl
thf(fact_113_local_Olexordp_ONil,axiom,
! [Y: a,Ys: list @ a] : ( lexordp @ a @ less @ ( nil @ a ) @ ( cons @ a @ Y @ Ys ) ) ).
% local.lexordp.Nil
thf(fact_114_local_Olexordp_Ocases,axiom,
! [A1: list @ a,A22: list @ a] :
( ( lexordp @ a @ less @ A1 @ A22 )
=> ( ( ( A1
= ( nil @ a ) )
=> ! [Y3: a,Ys2: list @ a] :
( A22
!= ( cons @ a @ Y3 @ Ys2 ) ) )
=> ( ! [X3: a] :
( ? [Xs2: list @ a] :
( A1
= ( cons @ a @ X3 @ Xs2 ) )
=> ! [Y3: a] :
( ? [Ys2: list @ a] :
( A22
= ( cons @ a @ Y3 @ Ys2 ) )
=> ~ ( less @ X3 @ Y3 ) ) )
=> ~ ! [X3: a,Y3: a,Xs2: list @ a] :
( ( A1
= ( cons @ a @ X3 @ Xs2 ) )
=> ! [Ys2: list @ a] :
( ( A22
= ( cons @ a @ Y3 @ Ys2 ) )
=> ( ~ ( less @ X3 @ Y3 )
=> ( ~ ( less @ Y3 @ X3 )
=> ~ ( lexordp @ a @ less @ Xs2 @ Ys2 ) ) ) ) ) ) ) ) ).
% local.lexordp.cases
thf(fact_115_local_Olexordp_Oinducts,axiom,
! [X12: list @ a,X27: list @ a,P: ( list @ a ) > ( list @ a ) > $o] :
( ( lexordp @ a @ less @ X12 @ X27 )
=> ( ! [Y3: a,Ys2: list @ a] : ( P @ ( nil @ a ) @ ( cons @ a @ Y3 @ Ys2 ) )
=> ( ! [X3: a,Y3: a,Xs2: list @ a,Ys2: list @ a] :
( ( less @ X3 @ Y3 )
=> ( P @ ( cons @ a @ X3 @ Xs2 ) @ ( cons @ a @ Y3 @ Ys2 ) ) )
=> ( ! [X3: a,Y3: a,Xs2: list @ a,Ys2: list @ a] :
( ~ ( less @ X3 @ Y3 )
=> ( ~ ( less @ Y3 @ X3 )
=> ( ( lexordp @ a @ less @ Xs2 @ Ys2 )
=> ( ( P @ Xs2 @ Ys2 )
=> ( P @ ( cons @ a @ X3 @ Xs2 ) @ ( cons @ a @ Y3 @ Ys2 ) ) ) ) ) )
=> ( P @ X12 @ X27 ) ) ) ) ) ).
% local.lexordp.inducts
thf(fact_116_local_Olexordp_Osimps,axiom,
! [A1: list @ a,A22: list @ a] :
( ( lexordp @ a @ less @ A1 @ A22 )
= ( ? [Y2: a,Ys3: list @ a] :
( ( A1
= ( nil @ a ) )
& ( A22
= ( cons @ a @ Y2 @ Ys3 ) ) )
| ? [X2: a,Y2: a,Xs3: list @ a,Ys3: list @ a] :
( ( A1
= ( cons @ a @ X2 @ Xs3 ) )
& ( A22
= ( cons @ a @ Y2 @ Ys3 ) )
& ( less @ X2 @ Y2 ) )
| ? [X2: a,Y2: a,Xs3: list @ a,Ys3: list @ a] :
( ( A1
= ( cons @ a @ X2 @ Xs3 ) )
& ( A22
= ( cons @ a @ Y2 @ Ys3 ) )
& ~ ( less @ X2 @ Y2 )
& ~ ( less @ Y2 @ X2 )
& ( lexordp @ a @ less @ Xs3 @ Ys3 ) ) ) ) ).
% local.lexordp.simps
thf(fact_117_local_Olexordp__cases,axiom,
! [Xs: list @ a,Ys: list @ a] :
( ( lexordp @ a @ less @ Xs @ Ys )
=> ( ( ( Xs
= ( nil @ a ) )
=> ! [Y3: a,Ys4: list @ a] :
( Ys
!= ( cons @ a @ Y3 @ Ys4 ) ) )
=> ( ! [X3: a] :
( ? [Xs4: list @ a] :
( Xs
= ( cons @ a @ X3 @ Xs4 ) )
=> ! [Y3: a] :
( ? [Ys4: list @ a] :
( Ys
= ( cons @ a @ Y3 @ Ys4 ) )
=> ~ ( less @ X3 @ Y3 ) ) )
=> ~ ! [X3: a,Xs4: list @ a] :
( ( Xs
= ( cons @ a @ X3 @ Xs4 ) )
=> ! [Ys4: list @ a] :
( ( Ys
= ( cons @ a @ X3 @ Ys4 ) )
=> ~ ( lexordp @ a @ less @ Xs4 @ Ys4 ) ) ) ) ) ) ).
% local.lexordp_cases
thf(fact_118_local_Olexordp__induct,axiom,
! [Xs: list @ a,Ys: list @ a,P: ( list @ a ) > ( list @ a ) > $o] :
( ( lexordp @ a @ less @ Xs @ Ys )
=> ( ! [Y3: a,Ys2: list @ a] : ( P @ ( nil @ a ) @ ( cons @ a @ Y3 @ Ys2 ) )
=> ( ! [X3: a,Xs2: list @ a,Y3: a,Ys2: list @ a] :
( ( less @ X3 @ Y3 )
=> ( P @ ( cons @ a @ X3 @ Xs2 ) @ ( cons @ a @ Y3 @ Ys2 ) ) )
=> ( ! [X3: a,Xs2: list @ a,Ys2: list @ a] :
( ( lexordp @ a @ less @ Xs2 @ Ys2 )
=> ( ( P @ Xs2 @ Ys2 )
=> ( P @ ( cons @ a @ X3 @ Xs2 ) @ ( cons @ a @ X3 @ Ys2 ) ) ) )
=> ( P @ Xs @ Ys ) ) ) ) ) ).
% local.lexordp_induct
thf(fact_119_local_Olexordp__antisym,axiom,
! [Xs: list @ a,Ys: list @ a] :
( ( lexordp @ a @ less @ Xs @ Ys )
=> ~ ( lexordp @ a @ less @ Ys @ Xs ) ) ).
% local.lexordp_antisym
thf(fact_120_local_Olexordp__irreflexive,axiom,
! [Xs: list @ a] :
( ! [X3: a] :
~ ( less @ X3 @ X3 )
=> ~ ( lexordp @ a @ less @ Xs @ Xs ) ) ).
% local.lexordp_irreflexive
thf(fact_121_local_Olexordp__irreflexive_H,axiom,
! [Xs: list @ a] :
~ ( lexordp @ a @ less @ Xs @ Xs ) ).
% local.lexordp_irreflexive'
thf(fact_122_local_Olexordp__linear,axiom,
! [Xs: list @ a,Ys: list @ a] :
( ( lexordp @ a @ less @ Xs @ Ys )
| ( Xs = Ys )
| ( lexordp @ a @ less @ Ys @ Xs ) ) ).
% local.lexordp_linear
thf(fact_123_local_Olexordp__trans,axiom,
! [Xs: list @ a,Ys: list @ a,Zs: list @ a] :
( ( lexordp @ a @ less @ Xs @ Ys )
=> ( ( lexordp @ a @ less @ Ys @ Zs )
=> ( lexordp @ a @ less @ Xs @ Zs ) ) ) ).
% local.lexordp_trans
thf(fact_124_local_Olexordp_OCons,axiom,
! [X: a,Y: a,Xs: list @ a,Ys: list @ a] :
( ( less @ X @ Y )
=> ( lexordp @ a @ less @ ( cons @ a @ X @ Xs ) @ ( cons @ a @ Y @ Ys ) ) ) ).
% local.lexordp.Cons
thf(fact_125_local_Olexordp_OCons__eq,axiom,
! [X: a,Y: a,Xs: list @ a,Ys: list @ a] :
( ~ ( less @ X @ Y )
=> ( ~ ( less @ Y @ X )
=> ( ( lexordp @ a @ less @ Xs @ Ys )
=> ( lexordp @ a @ less @ ( cons @ a @ X @ Xs ) @ ( cons @ a @ Y @ Ys ) ) ) ) ) ).
% local.lexordp.Cons_eq
thf(fact_126_local_Olexordp__conv__lexordp__eq,axiom,
! [Xs: list @ a,Ys: list @ a] :
( ( lexordp @ a @ less @ Xs @ Ys )
= ( ( lexordp_eq @ a @ less @ Xs @ Ys )
& ~ ( lexordp_eq @ a @ less @ Ys @ Xs ) ) ) ).
% local.lexordp_conv_lexordp_eq
thf(fact_127_local_Olexordp__eq__conv__lexord,axiom,
! [Xs: list @ a,Ys: list @ a] :
( ( lexordp_eq @ a @ less @ Xs @ Ys )
= ( ( Xs = Ys )
| ( lexordp @ a @ less @ Xs @ Ys ) ) ) ).
% local.lexordp_eq_conv_lexord
thf(fact_128_local_Olexordp__into__lexordp__eq,axiom,
! [Xs: list @ a,Ys: list @ a] :
( ( lexordp @ a @ less @ Xs @ Ys )
=> ( lexordp_eq @ a @ less @ Xs @ Ys ) ) ).
% local.lexordp_into_lexordp_eq
thf(fact_129_ord_Olexordp__simps_I3_J,axiom,
! [A: $tType,Less: A > A > $o,X: A,Xs: list @ A,Y: A,Ys: list @ A] :
( ( lexordp @ A @ Less @ ( cons @ A @ X @ Xs ) @ ( cons @ A @ Y @ Ys ) )
= ( ( Less @ X @ Y )
| ( ~ ( Less @ Y @ X )
& ( lexordp @ A @ Less @ Xs @ Ys ) ) ) ) ).
% ord.lexordp_simps(3)
thf(fact_130_ord_Olexordp__simps_I1_J,axiom,
! [A: $tType,Less: A > A > $o,Ys: list @ A] :
( ( lexordp @ A @ Less @ ( nil @ A ) @ Ys )
= ( Ys
!= ( nil @ A ) ) ) ).
% ord.lexordp_simps(1)
thf(fact_131_ord_Olexordp__simps_I2_J,axiom,
! [A: $tType,Less: A > A > $o,Xs: list @ A] :
~ ( lexordp @ A @ Less @ Xs @ ( nil @ A ) ) ).
% ord.lexordp_simps(2)
thf(fact_132_local_Olexordp__simps_I3_J,axiom,
! [X: a,Xs: list @ a,Y: a,Ys: list @ a] :
( ( lexordp @ a @ less @ ( cons @ a @ X @ Xs ) @ ( cons @ a @ Y @ Ys ) )
= ( ( less @ X @ Y )
| ( ~ ( less @ Y @ X )
& ( lexordp @ a @ less @ Xs @ Ys ) ) ) ) ).
% local.lexordp_simps(3)
thf(fact_133_local_Olexordp__simps_I2_J,axiom,
! [Xs: list @ a] :
~ ( lexordp @ a @ less @ Xs @ ( nil @ a ) ) ).
% local.lexordp_simps(2)
thf(fact_134_local_Olexordp__simps_I1_J,axiom,
! [Ys: list @ a] :
( ( lexordp @ a @ less @ ( nil @ a ) @ Ys )
= ( Ys
!= ( nil @ a ) ) ) ).
% local.lexordp_simps(1)
thf(fact_135_ord_Olexordp__irreflexive,axiom,
! [A: $tType,Less: A > A > $o,Xs: list @ A] :
( ! [X3: A] :
~ ( Less @ X3 @ X3 )
=> ~ ( lexordp @ A @ Less @ Xs @ Xs ) ) ).
% ord.lexordp_irreflexive
thf(fact_136_ord_Olexordp_OCons__eq,axiom,
! [A: $tType,Less: A > A > $o,X: A,Y: A,Xs: list @ A,Ys: list @ A] :
( ~ ( Less @ X @ Y )
=> ( ~ ( Less @ Y @ X )
=> ( ( lexordp @ A @ Less @ Xs @ Ys )
=> ( lexordp @ A @ Less @ ( cons @ A @ X @ Xs ) @ ( cons @ A @ Y @ Ys ) ) ) ) ) ).
% ord.lexordp.Cons_eq
thf(fact_137_ord_Olexordp_OCons,axiom,
! [A: $tType,Less: A > A > $o,X: A,Y: A,Xs: list @ A,Ys: list @ A] :
( ( Less @ X @ Y )
=> ( lexordp @ A @ Less @ ( cons @ A @ X @ Xs ) @ ( cons @ A @ Y @ Ys ) ) ) ).
% ord.lexordp.Cons
thf(fact_138_ord_Olexordp__into__lexordp__eq,axiom,
! [A: $tType,Less: A > A > $o,Xs: list @ A,Ys: list @ A] :
( ( lexordp @ A @ Less @ Xs @ Ys )
=> ( lexordp_eq @ A @ Less @ Xs @ Ys ) ) ).
% ord.lexordp_into_lexordp_eq
thf(fact_139_ord_Olexordp_ONil,axiom,
! [A: $tType,Less: A > A > $o,Y: A,Ys: list @ A] : ( lexordp @ A @ Less @ ( nil @ A ) @ ( cons @ A @ Y @ Ys ) ) ).
% ord.lexordp.Nil
thf(fact_140_ord_Olexordp_Ocases,axiom,
! [A: $tType,Less: A > A > $o,A1: list @ A,A22: list @ A] :
( ( lexordp @ A @ Less @ A1 @ A22 )
=> ( ( ( A1
= ( nil @ A ) )
=> ! [Y3: A,Ys2: list @ A] :
( A22
!= ( cons @ A @ Y3 @ Ys2 ) ) )
=> ( ! [X3: A] :
( ? [Xs2: list @ A] :
( A1
= ( cons @ A @ X3 @ Xs2 ) )
=> ! [Y3: A] :
( ? [Ys2: list @ A] :
( A22
= ( cons @ A @ Y3 @ Ys2 ) )
=> ~ ( Less @ X3 @ Y3 ) ) )
=> ~ ! [X3: A,Y3: A,Xs2: list @ A] :
( ( A1
= ( cons @ A @ X3 @ Xs2 ) )
=> ! [Ys2: list @ A] :
( ( A22
= ( cons @ A @ Y3 @ Ys2 ) )
=> ( ~ ( Less @ X3 @ Y3 )
=> ( ~ ( Less @ Y3 @ X3 )
=> ~ ( lexordp @ A @ Less @ Xs2 @ Ys2 ) ) ) ) ) ) ) ) ).
% ord.lexordp.cases
thf(fact_141_ord_Olexordp_Osimps,axiom,
! [A: $tType] :
( ( lexordp @ A )
= ( ^ [Less2: A > A > $o,A12: list @ A,A23: list @ A] :
( ? [Y2: A,Ys3: list @ A] :
( ( A12
= ( nil @ A ) )
& ( A23
= ( cons @ A @ Y2 @ Ys3 ) ) )
| ? [X2: A,Y2: A,Xs3: list @ A,Ys3: list @ A] :
( ( A12
= ( cons @ A @ X2 @ Xs3 ) )
& ( A23
= ( cons @ A @ Y2 @ Ys3 ) )
& ( Less2 @ X2 @ Y2 ) )
| ? [X2: A,Y2: A,Xs3: list @ A,Ys3: list @ A] :
( ( A12
= ( cons @ A @ X2 @ Xs3 ) )
& ( A23
= ( cons @ A @ Y2 @ Ys3 ) )
& ~ ( Less2 @ X2 @ Y2 )
& ~ ( Less2 @ Y2 @ X2 )
& ( lexordp @ A @ Less2 @ Xs3 @ Ys3 ) ) ) ) ) ).
% ord.lexordp.simps
thf(fact_142_ord_Olexordp_Oinducts,axiom,
! [A: $tType,Less: A > A > $o,X12: list @ A,X27: list @ A,P: ( list @ A ) > ( list @ A ) > $o] :
( ( lexordp @ A @ Less @ X12 @ X27 )
=> ( ! [Y3: A,Ys2: list @ A] : ( P @ ( nil @ A ) @ ( cons @ A @ Y3 @ Ys2 ) )
=> ( ! [X3: A,Y3: A,Xs2: list @ A,Ys2: list @ A] :
( ( Less @ X3 @ Y3 )
=> ( P @ ( cons @ A @ X3 @ Xs2 ) @ ( cons @ A @ Y3 @ Ys2 ) ) )
=> ( ! [X3: A,Y3: A,Xs2: list @ A,Ys2: list @ A] :
( ~ ( Less @ X3 @ Y3 )
=> ( ~ ( Less @ Y3 @ X3 )
=> ( ( lexordp @ A @ Less @ Xs2 @ Ys2 )
=> ( ( P @ Xs2 @ Ys2 )
=> ( P @ ( cons @ A @ X3 @ Xs2 ) @ ( cons @ A @ Y3 @ Ys2 ) ) ) ) ) )
=> ( P @ X12 @ X27 ) ) ) ) ) ).
% ord.lexordp.inducts
thf(fact_143_local_Olexordp__append__rightI,axiom,
! [Ys: list @ a,Xs: list @ a] :
( ( Ys
!= ( nil @ a ) )
=> ( lexordp @ a @ less @ Xs @ ( append @ a @ Xs @ Ys ) ) ) ).
% local.lexordp_append_rightI
thf(fact_144_local_Olexordp__iff,axiom,
! [Xs: list @ a,Ys: list @ a] :
( ( lexordp @ a @ less @ Xs @ Ys )
= ( ? [X2: a,Vs: list @ a] :
( Ys
= ( append @ a @ Xs @ ( cons @ a @ X2 @ Vs ) ) )
| ? [Us: list @ a,A5: a,B3: a,Vs: list @ a,Ws: list @ a] :
( ( less @ A5 @ B3 )
& ( Xs
= ( append @ a @ Us @ ( cons @ a @ A5 @ Vs ) ) )
& ( Ys
= ( append @ a @ Us @ ( cons @ a @ B3 @ Ws ) ) ) ) ) ) ).
% local.lexordp_iff
thf(fact_145_local_Olexordp__append__left__rightI,axiom,
! [X: a,Y: a,Us2: list @ a,Xs: list @ a,Ys: list @ a] :
( ( less @ X @ Y )
=> ( lexordp @ a @ less @ ( append @ a @ Us2 @ ( cons @ a @ X @ Xs ) ) @ ( append @ a @ Us2 @ ( cons @ a @ Y @ Ys ) ) ) ) ).
% local.lexordp_append_left_rightI
thf(fact_146_sublists_Osimps_I1_J,axiom,
! [A: $tType] :
( ( sublists @ A @ ( nil @ A ) )
= ( cons @ ( list @ A ) @ ( nil @ A ) @ ( nil @ ( list @ A ) ) ) ) ).
% sublists.simps(1)
thf(fact_147_local_Olexordp__append__leftI,axiom,
! [Us2: list @ a,Vs2: list @ a,Xs: list @ a] :
( ( lexordp @ a @ less @ Us2 @ Vs2 )
=> ( lexordp @ a @ less @ ( append @ a @ Xs @ Us2 ) @ ( append @ a @ Xs @ Vs2 ) ) ) ).
% local.lexordp_append_leftI
thf(fact_148_local_Olexordp__append__leftD,axiom,
! [Xs: list @ a,Us2: list @ a,Vs2: list @ a] :
( ( lexordp @ a @ less @ ( append @ a @ Xs @ Us2 ) @ ( append @ a @ Xs @ Vs2 ) )
=> ( ! [A4: a] :
~ ( less @ A4 @ A4 )
=> ( lexordp @ a @ less @ Us2 @ Vs2 ) ) ) ).
% local.lexordp_append_leftD
thf(fact_149_same__append__eq,axiom,
! [A: $tType,Xs: list @ A,Ys: list @ A,Zs: list @ A] :
( ( ( append @ A @ Xs @ Ys )
= ( append @ A @ Xs @ Zs ) )
= ( Ys = Zs ) ) ).
% same_append_eq
thf(fact_150_append__same__eq,axiom,
! [A: $tType,Ys: list @ A,Xs: list @ A,Zs: list @ A] :
( ( ( append @ A @ Ys @ Xs )
= ( append @ A @ Zs @ Xs ) )
= ( Ys = Zs ) ) ).
% append_same_eq
thf(fact_151_append__assoc,axiom,
! [A: $tType,Xs: list @ A,Ys: list @ A,Zs: list @ A] :
( ( append @ A @ ( append @ A @ Xs @ Ys ) @ Zs )
= ( append @ A @ Xs @ ( append @ A @ Ys @ Zs ) ) ) ).
% append_assoc
thf(fact_152_append__Nil2,axiom,
! [A: $tType,Xs: list @ A] :
( ( append @ A @ Xs @ ( nil @ A ) )
= Xs ) ).
% append_Nil2
thf(fact_153_append__self__conv,axiom,
! [A: $tType,Xs: list @ A,Ys: list @ A] :
( ( ( append @ A @ Xs @ Ys )
= Xs )
= ( Ys
= ( nil @ A ) ) ) ).
% append_self_conv
thf(fact_154_self__append__conv,axiom,
! [A: $tType,Xs: list @ A,Ys: list @ A] :
( ( Xs
= ( append @ A @ Xs @ Ys ) )
= ( Ys
= ( nil @ A ) ) ) ).
% self_append_conv
thf(fact_155_append__self__conv2,axiom,
! [A: $tType,Xs: list @ A,Ys: list @ A] :
( ( ( append @ A @ Xs @ Ys )
= Ys )
= ( Xs
= ( nil @ A ) ) ) ).
% append_self_conv2
thf(fact_156_self__append__conv2,axiom,
! [A: $tType,Ys: list @ A,Xs: list @ A] :
( ( Ys
= ( append @ A @ Xs @ Ys ) )
= ( Xs
= ( nil @ A ) ) ) ).
% self_append_conv2
thf(fact_157_Nil__is__append__conv,axiom,
! [A: $tType,Xs: list @ A,Ys: list @ A] :
( ( ( nil @ A )
= ( append @ A @ Xs @ Ys ) )
= ( ( Xs
= ( nil @ A ) )
& ( Ys
= ( nil @ A ) ) ) ) ).
% Nil_is_append_conv
thf(fact_158_append__is__Nil__conv,axiom,
! [A: $tType,Xs: list @ A,Ys: list @ A] :
( ( ( append @ A @ Xs @ Ys )
= ( nil @ A ) )
= ( ( Xs
= ( nil @ A ) )
& ( Ys
= ( nil @ A ) ) ) ) ).
% append_is_Nil_conv
thf(fact_159_append1__eq__conv,axiom,
! [A: $tType,Xs: list @ A,X: A,Ys: list @ A,Y: A] :
( ( ( append @ A @ Xs @ ( cons @ A @ X @ ( nil @ A ) ) )
= ( append @ A @ Ys @ ( cons @ A @ Y @ ( nil @ A ) ) ) )
= ( ( Xs = Ys )
& ( X = Y ) ) ) ).
% append1_eq_conv
thf(fact_160_ord_Olexordp__append__leftD,axiom,
! [A: $tType,Less: A > A > $o,Xs: list @ A,Us2: list @ A,Vs2: list @ A] :
( ( lexordp @ A @ Less @ ( append @ A @ Xs @ Us2 ) @ ( append @ A @ Xs @ Vs2 ) )
=> ( ! [A4: A] :
~ ( Less @ A4 @ A4 )
=> ( lexordp @ A @ Less @ Us2 @ Vs2 ) ) ) ).
% ord.lexordp_append_leftD
thf(fact_161_ord_Olexordp__append__leftI,axiom,
! [A: $tType,Less: A > A > $o,Us2: list @ A,Vs2: list @ A,Xs: list @ A] :
( ( lexordp @ A @ Less @ Us2 @ Vs2 )
=> ( lexordp @ A @ Less @ ( append @ A @ Xs @ Us2 ) @ ( append @ A @ Xs @ Vs2 ) ) ) ).
% ord.lexordp_append_leftI
thf(fact_162_append__Cons,axiom,
! [A: $tType,X: A,Xs: list @ A,Ys: list @ A] :
( ( append @ A @ ( cons @ A @ X @ Xs ) @ Ys )
= ( cons @ A @ X @ ( append @ A @ Xs @ Ys ) ) ) ).
% append_Cons
thf(fact_163_Cons__eq__appendI,axiom,
! [A: $tType,X: A,Xs1: list @ A,Ys: list @ A,Xs: list @ A,Zs: list @ A] :
( ( ( cons @ A @ X @ Xs1 )
= Ys )
=> ( ( Xs
= ( append @ A @ Xs1 @ Zs ) )
=> ( ( cons @ A @ X @ Xs )
= ( append @ A @ Ys @ Zs ) ) ) ) ).
% Cons_eq_appendI
thf(fact_164_eq__Nil__appendI,axiom,
! [A: $tType,Xs: list @ A,Ys: list @ A] :
( ( Xs = Ys )
=> ( Xs
= ( append @ A @ ( nil @ A ) @ Ys ) ) ) ).
% eq_Nil_appendI
thf(fact_165_append__Nil,axiom,
! [A: $tType,Ys: list @ A] :
( ( append @ A @ ( nil @ A ) @ Ys )
= Ys ) ).
% append_Nil
thf(fact_166_append__eq__append__conv2,axiom,
! [A: $tType,Xs: list @ A,Ys: list @ A,Zs: list @ A,Ts: list @ A] :
( ( ( append @ A @ Xs @ Ys )
= ( append @ A @ Zs @ Ts ) )
= ( ? [Us: list @ A] :
( ( ( Xs
= ( append @ A @ Zs @ Us ) )
& ( ( append @ A @ Us @ Ys )
= Ts ) )
| ( ( ( append @ A @ Xs @ Us )
= Zs )
& ( Ys
= ( append @ A @ Us @ Ts ) ) ) ) ) ) ).
% append_eq_append_conv2
thf(fact_167_append__eq__appendI,axiom,
! [A: $tType,Xs: list @ A,Xs1: list @ A,Zs: list @ A,Ys: list @ A,Us2: list @ A] :
( ( ( append @ A @ Xs @ Xs1 )
= Zs )
=> ( ( Ys
= ( append @ A @ Xs1 @ Us2 ) )
=> ( ( append @ A @ Xs @ Ys )
= ( append @ A @ Zs @ Us2 ) ) ) ) ).
% append_eq_appendI
thf(fact_168_rev__nonempty__induct,axiom,
! [A: $tType,Xs: list @ A,P: ( list @ A ) > $o] :
( ( Xs
!= ( nil @ A ) )
=> ( ! [X3: A] : ( P @ ( cons @ A @ X3 @ ( nil @ A ) ) )
=> ( ! [X3: A,Xs2: list @ A] :
( ( Xs2
!= ( nil @ A ) )
=> ( ( P @ Xs2 )
=> ( P @ ( append @ A @ Xs2 @ ( cons @ A @ X3 @ ( nil @ A ) ) ) ) ) )
=> ( P @ Xs ) ) ) ) ).
% rev_nonempty_induct
thf(fact_169_append__eq__Cons__conv,axiom,
! [A: $tType,Ys: list @ A,Zs: list @ A,X: A,Xs: list @ A] :
( ( ( append @ A @ Ys @ Zs )
= ( cons @ A @ X @ Xs ) )
= ( ( ( Ys
= ( nil @ A ) )
& ( Zs
= ( cons @ A @ X @ Xs ) ) )
| ? [Ys5: list @ A] :
( ( Ys
= ( cons @ A @ X @ Ys5 ) )
& ( ( append @ A @ Ys5 @ Zs )
= Xs ) ) ) ) ).
% append_eq_Cons_conv
thf(fact_170_Cons__eq__append__conv,axiom,
! [A: $tType,X: A,Xs: list @ A,Ys: list @ A,Zs: list @ A] :
( ( ( cons @ A @ X @ Xs )
= ( append @ A @ Ys @ Zs ) )
= ( ( ( Ys
= ( nil @ A ) )
& ( ( cons @ A @ X @ Xs )
= Zs ) )
| ? [Ys5: list @ A] :
( ( ( cons @ A @ X @ Ys5 )
= Ys )
& ( Xs
= ( append @ A @ Ys5 @ Zs ) ) ) ) ) ).
% Cons_eq_append_conv
thf(fact_171_rev__exhaust,axiom,
! [A: $tType,Xs: list @ A] :
( ( Xs
!= ( nil @ A ) )
=> ~ ! [Ys2: list @ A,Y3: A] :
( Xs
!= ( append @ A @ Ys2 @ ( cons @ A @ Y3 @ ( nil @ A ) ) ) ) ) ).
% rev_exhaust
thf(fact_172_rev__induct,axiom,
! [A: $tType,P: ( list @ A ) > $o,Xs: list @ A] :
( ( P @ ( nil @ A ) )
=> ( ! [X3: A,Xs2: list @ A] :
( ( P @ Xs2 )
=> ( P @ ( append @ A @ Xs2 @ ( cons @ A @ X3 @ ( nil @ A ) ) ) ) )
=> ( P @ Xs ) ) ) ).
% rev_induct
thf(fact_173_ord_Olexordp__append__left__rightI,axiom,
! [A: $tType,Less: A > A > $o,X: A,Y: A,Us2: list @ A,Xs: list @ A,Ys: list @ A] :
( ( Less @ X @ Y )
=> ( lexordp @ A @ Less @ ( append @ A @ Us2 @ ( cons @ A @ X @ Xs ) ) @ ( append @ A @ Us2 @ ( cons @ A @ Y @ Ys ) ) ) ) ).
% ord.lexordp_append_left_rightI
thf(fact_174_ord_Olexordp__append__rightI,axiom,
! [A: $tType,Ys: list @ A,Less: A > A > $o,Xs: list @ A] :
( ( Ys
!= ( nil @ A ) )
=> ( lexordp @ A @ Less @ Xs @ ( append @ A @ Xs @ Ys ) ) ) ).
% ord.lexordp_append_rightI
thf(fact_175_keys__simps_I2_J,axiom,
! [D: $tType,C2: $tType,C: rBT_Im1923302023_color,L: rBT_Im246033960le_rbt @ C2 @ D,K: C2,V: D,R: rBT_Im246033960le_rbt @ C2 @ D] :
( ( rBT_Im380146495e_keys @ C2 @ D @ ( rBT_Im480247531Branch @ C2 @ D @ C @ L @ K @ V @ R ) )
= ( append @ C2 @ ( rBT_Im380146495e_keys @ C2 @ D @ L ) @ ( cons @ C2 @ K @ ( rBT_Im380146495e_keys @ C2 @ D @ R ) ) ) ) ).
% keys_simps(2)
thf(fact_176_product__lists_Osimps_I1_J,axiom,
! [A: $tType] :
( ( product_lists @ A @ ( nil @ ( list @ A ) ) )
= ( cons @ ( list @ A ) @ ( nil @ A ) @ ( nil @ ( list @ A ) ) ) ) ).
% product_lists.simps(1)
thf(fact_177_bind__simps_I2_J,axiom,
! [A: $tType,B: $tType,X: B,Xs: list @ B,F: B > ( list @ A )] :
( ( bind @ B @ A @ ( cons @ B @ X @ Xs ) @ F )
= ( append @ A @ ( F @ X ) @ ( bind @ B @ A @ Xs @ F ) ) ) ).
% bind_simps(2)
thf(fact_178_bind__simps_I1_J,axiom,
! [B: $tType,A: $tType,F: B > ( list @ A )] :
( ( bind @ B @ A @ ( nil @ B ) @ F )
= ( nil @ A ) ) ).
% bind_simps(1)
thf(fact_179_keys__simps_I1_J,axiom,
! [B: $tType,A: $tType] :
( ( rBT_Im380146495e_keys @ A @ B @ ( rBT_Im418718756_Empty @ A @ B ) )
= ( nil @ A ) ) ).
% keys_simps(1)
thf(fact_180_non__empty__rbt__keys,axiom,
! [B: $tType,A: $tType,T: rBT_Im246033960le_rbt @ A @ B] :
( ( T
!= ( rBT_Im418718756_Empty @ A @ B ) )
=> ( ( rBT_Im380146495e_keys @ A @ B @ T )
!= ( nil @ A ) ) ) ).
% non_empty_rbt_keys
thf(fact_181_local_Orbt__greater__prop,axiom,
! [B: $tType,K: a,T: rBT_Im246033960le_rbt @ a @ B] :
( ( rBT_Im1259024060reater @ a @ B @ less @ K @ T )
= ( ! [X2: a] :
( ( member @ a @ X2 @ ( set2 @ a @ ( rBT_Im380146495e_keys @ a @ B @ T ) ) )
=> ( less @ K @ X2 ) ) ) ) ).
% local.rbt_greater_prop
thf(fact_182_local_Orbt__less__prop,axiom,
! [B: $tType,K: a,T: rBT_Im246033960le_rbt @ a @ B] :
( ( rBT_Im2075124343t_less @ a @ B @ less @ K @ T )
= ( ! [X2: a] :
( ( member @ a @ X2 @ ( set2 @ a @ ( rBT_Im380146495e_keys @ a @ B @ T ) ) )
=> ( less @ X2 @ K ) ) ) ) ).
% local.rbt_less_prop
thf(fact_183_local_Ostrict__mono__imp__inj__on,axiom,
! [B: $tType] :
( ( order @ B @ ( type2 @ B ) )
=> ! [F: a > B,A3: set @ a] :
( ( strict_mono @ a @ B @ less @ F )
=> ( inj_on @ a @ B @ F @ A3 ) ) ) ).
% local.strict_mono_imp_inj_on
thf(fact_184_list__bind__cong,axiom,
! [B: $tType,A: $tType,Xs: list @ A,Ys: list @ A,F: A > ( list @ B ),G: A > ( list @ B )] :
( ( Xs = Ys )
=> ( ! [X3: A] :
( ( member @ A @ X3 @ ( set2 @ A @ Xs ) )
=> ( ( F @ X3 )
= ( G @ X3 ) ) )
=> ( ( bind @ A @ B @ Xs @ F )
= ( bind @ A @ B @ Ys @ G ) ) ) ) ).
% list_bind_cong
thf(fact_185_split__list__first__prop__iff,axiom,
! [A: $tType,Xs: list @ A,P: A > $o] :
( ( ? [X2: A] :
( ( member @ A @ X2 @ ( set2 @ A @ Xs ) )
& ( P @ X2 ) ) )
= ( ? [Ys3: list @ A,X2: A] :
( ? [Zs2: list @ A] :
( Xs
= ( append @ A @ Ys3 @ ( cons @ A @ X2 @ Zs2 ) ) )
& ( P @ X2 )
& ! [Y2: A] :
( ( member @ A @ Y2 @ ( set2 @ A @ Ys3 ) )
=> ~ ( P @ Y2 ) ) ) ) ) ).
% split_list_first_prop_iff
thf(fact_186_split__list__last__prop__iff,axiom,
! [A: $tType,Xs: list @ A,P: A > $o] :
( ( ? [X2: A] :
( ( member @ A @ X2 @ ( set2 @ A @ Xs ) )
& ( P @ X2 ) ) )
= ( ? [Ys3: list @ A,X2: A,Zs2: list @ A] :
( ( Xs
= ( append @ A @ Ys3 @ ( cons @ A @ X2 @ Zs2 ) ) )
& ( P @ X2 )
& ! [Y2: A] :
( ( member @ A @ Y2 @ ( set2 @ A @ Zs2 ) )
=> ~ ( P @ Y2 ) ) ) ) ) ).
% split_list_last_prop_iff
thf(fact_187_in__set__conv__decomp__first,axiom,
! [A: $tType,X: A,Xs: list @ A] :
( ( member @ A @ X @ ( set2 @ A @ Xs ) )
= ( ? [Ys3: list @ A,Zs2: list @ A] :
( ( Xs
= ( append @ A @ Ys3 @ ( cons @ A @ X @ Zs2 ) ) )
& ~ ( member @ A @ X @ ( set2 @ A @ Ys3 ) ) ) ) ) ).
% in_set_conv_decomp_first
thf(fact_188_in__set__conv__decomp__last,axiom,
! [A: $tType,X: A,Xs: list @ A] :
( ( member @ A @ X @ ( set2 @ A @ Xs ) )
= ( ? [Ys3: list @ A,Zs2: list @ A] :
( ( Xs
= ( append @ A @ Ys3 @ ( cons @ A @ X @ Zs2 ) ) )
& ~ ( member @ A @ X @ ( set2 @ A @ Zs2 ) ) ) ) ) ).
% in_set_conv_decomp_last
thf(fact_189_split__list__first__propE,axiom,
! [A: $tType,Xs: list @ A,P: A > $o] :
( ? [X6: A] :
( ( member @ A @ X6 @ ( set2 @ A @ Xs ) )
& ( P @ X6 ) )
=> ~ ! [Ys2: list @ A,X3: A] :
( ? [Zs3: list @ A] :
( Xs
= ( append @ A @ Ys2 @ ( cons @ A @ X3 @ Zs3 ) ) )
=> ( ( P @ X3 )
=> ~ ! [Xa: A] :
( ( member @ A @ Xa @ ( set2 @ A @ Ys2 ) )
=> ~ ( P @ Xa ) ) ) ) ) ).
% split_list_first_propE
thf(fact_190_split__list__last__propE,axiom,
! [A: $tType,Xs: list @ A,P: A > $o] :
( ? [X6: A] :
( ( member @ A @ X6 @ ( set2 @ A @ Xs ) )
& ( P @ X6 ) )
=> ~ ! [Ys2: list @ A,X3: A,Zs3: list @ A] :
( ( Xs
= ( append @ A @ Ys2 @ ( cons @ A @ X3 @ Zs3 ) ) )
=> ( ( P @ X3 )
=> ~ ! [Xa: A] :
( ( member @ A @ Xa @ ( set2 @ A @ Zs3 ) )
=> ~ ( P @ Xa ) ) ) ) ) ).
% split_list_last_propE
thf(fact_191_split__list__first__prop,axiom,
! [A: $tType,Xs: list @ A,P: A > $o] :
( ? [X6: A] :
( ( member @ A @ X6 @ ( set2 @ A @ Xs ) )
& ( P @ X6 ) )
=> ? [Ys2: list @ A,X3: A] :
( ? [Zs3: list @ A] :
( Xs
= ( append @ A @ Ys2 @ ( cons @ A @ X3 @ Zs3 ) ) )
& ( P @ X3 )
& ! [Xa: A] :
( ( member @ A @ Xa @ ( set2 @ A @ Ys2 ) )
=> ~ ( P @ Xa ) ) ) ) ).
% split_list_first_prop
thf(fact_192_split__list__last__prop,axiom,
! [A: $tType,Xs: list @ A,P: A > $o] :
( ? [X6: A] :
( ( member @ A @ X6 @ ( set2 @ A @ Xs ) )
& ( P @ X6 ) )
=> ? [Ys2: list @ A,X3: A,Zs3: list @ A] :
( ( Xs
= ( append @ A @ Ys2 @ ( cons @ A @ X3 @ Zs3 ) ) )
& ( P @ X3 )
& ! [Xa: A] :
( ( member @ A @ Xa @ ( set2 @ A @ Zs3 ) )
=> ~ ( P @ Xa ) ) ) ) ).
% split_list_last_prop
thf(fact_193_in__set__conv__decomp,axiom,
! [A: $tType,X: A,Xs: list @ A] :
( ( member @ A @ X @ ( set2 @ A @ Xs ) )
= ( ? [Ys3: list @ A,Zs2: list @ A] :
( Xs
= ( append @ A @ Ys3 @ ( cons @ A @ X @ Zs2 ) ) ) ) ) ).
% in_set_conv_decomp
thf(fact_194_split__list__propE,axiom,
! [A: $tType,Xs: list @ A,P: A > $o] :
( ? [X6: A] :
( ( member @ A @ X6 @ ( set2 @ A @ Xs ) )
& ( P @ X6 ) )
=> ~ ! [Ys2: list @ A,X3: A] :
( ? [Zs3: list @ A] :
( Xs
= ( append @ A @ Ys2 @ ( cons @ A @ X3 @ Zs3 ) ) )
=> ~ ( P @ X3 ) ) ) ).
% split_list_propE
thf(fact_195_split__list__first,axiom,
! [A: $tType,X: A,Xs: list @ A] :
( ( member @ A @ X @ ( set2 @ A @ Xs ) )
=> ? [Ys2: list @ A,Zs3: list @ A] :
( ( Xs
= ( append @ A @ Ys2 @ ( cons @ A @ X @ Zs3 ) ) )
& ~ ( member @ A @ X @ ( set2 @ A @ Ys2 ) ) ) ) ).
% split_list_first
thf(fact_196_split__list__prop,axiom,
! [A: $tType,Xs: list @ A,P: A > $o] :
( ? [X6: A] :
( ( member @ A @ X6 @ ( set2 @ A @ Xs ) )
& ( P @ X6 ) )
=> ? [Ys2: list @ A,X3: A] :
( ? [Zs3: list @ A] :
( Xs
= ( append @ A @ Ys2 @ ( cons @ A @ X3 @ Zs3 ) ) )
& ( P @ X3 ) ) ) ).
% split_list_prop
thf(fact_197_split__list__last,axiom,
! [A: $tType,X: A,Xs: list @ A] :
( ( member @ A @ X @ ( set2 @ A @ Xs ) )
=> ? [Ys2: list @ A,Zs3: list @ A] :
( ( Xs
= ( append @ A @ Ys2 @ ( cons @ A @ X @ Zs3 ) ) )
& ~ ( member @ A @ X @ ( set2 @ A @ Zs3 ) ) ) ) ).
% split_list_last
thf(fact_198_split__list,axiom,
! [A: $tType,X: A,Xs: list @ A] :
( ( member @ A @ X @ ( set2 @ A @ Xs ) )
=> ? [Ys2: list @ A,Zs3: list @ A] :
( Xs
= ( append @ A @ Ys2 @ ( cons @ A @ X @ Zs3 ) ) ) ) ).
% split_list
thf(fact_199_list_Oset__cases,axiom,
! [A: $tType,E: A,A2: list @ A] :
( ( member @ A @ E @ ( set2 @ A @ A2 ) )
=> ( ! [Z2: list @ A] :
( A2
!= ( cons @ A @ E @ Z2 ) )
=> ~ ! [Z1: A,Z2: list @ A] :
( ( A2
= ( cons @ A @ Z1 @ Z2 ) )
=> ~ ( member @ A @ E @ ( set2 @ A @ Z2 ) ) ) ) ) ).
% list.set_cases
thf(fact_200_set__ConsD,axiom,
! [A: $tType,Y: A,X: A,Xs: list @ A] :
( ( member @ A @ Y @ ( set2 @ A @ ( cons @ A @ X @ Xs ) ) )
=> ( ( Y = X )
| ( member @ A @ Y @ ( set2 @ A @ Xs ) ) ) ) ).
% set_ConsD
thf(fact_201_list_Oset__intros_I1_J,axiom,
! [A: $tType,A1: A,A22: list @ A] : ( member @ A @ A1 @ ( set2 @ A @ ( cons @ A @ A1 @ A22 ) ) ) ).
% list.set_intros(1)
thf(fact_202_list_Oset__intros_I2_J,axiom,
! [A: $tType,X: A,A22: list @ A,A1: A] :
( ( member @ A @ X @ ( set2 @ A @ A22 ) )
=> ( member @ A @ X @ ( set2 @ A @ ( cons @ A @ A1 @ A22 ) ) ) ) ).
% list.set_intros(2)
thf(fact_203_ord_Orbt__less__prop,axiom,
! [B: $tType,A: $tType] :
( ( rBT_Im2075124343t_less @ A @ B )
= ( ^ [Less2: A > A > $o,K3: A,T2: rBT_Im246033960le_rbt @ A @ B] :
! [X2: A] :
( ( member @ A @ X2 @ ( set2 @ A @ ( rBT_Im380146495e_keys @ A @ B @ T2 ) ) )
=> ( Less2 @ X2 @ K3 ) ) ) ) ).
% ord.rbt_less_prop
thf(fact_204_ord_Orbt__greater__prop,axiom,
! [B: $tType,A: $tType] :
( ( rBT_Im1259024060reater @ A @ B )
= ( ^ [Less2: A > A > $o,K3: A,T2: rBT_Im246033960le_rbt @ A @ B] :
! [X2: A] :
( ( member @ A @ X2 @ ( set2 @ A @ ( rBT_Im380146495e_keys @ A @ B @ T2 ) ) )
=> ( Less2 @ K3 @ X2 ) ) ) ) ).
% ord.rbt_greater_prop
thf(fact_205_local_Odistinct__keys,axiom,
! [B: $tType,T: rBT_Im246033960le_rbt @ a @ B] :
( ( rBT_Im759614907sorted @ a @ B @ less @ T )
=> ( distinct @ a @ ( rBT_Im380146495e_keys @ a @ B @ T ) ) ) ).
% local.distinct_keys
thf(fact_206_the__elem__set,axiom,
! [A: $tType,X: A] :
( ( the_elem @ A @ ( set2 @ A @ ( cons @ A @ X @ ( nil @ A ) ) ) )
= X ) ).
% the_elem_set
thf(fact_207_ord_OgreaterThan__def,axiom,
! [A: $tType] :
( ( set_greaterThan @ A )
= ( ^ [Less2: A > A > $o,L3: A] : ( collect @ A @ ( Less2 @ L3 ) ) ) ) ).
% ord.greaterThan_def
thf(fact_208_distinct__product__lists,axiom,
! [A: $tType,Xss2: list @ ( list @ A )] :
( ! [X3: list @ A] :
( ( member @ ( list @ A ) @ X3 @ ( set2 @ ( list @ A ) @ Xss2 ) )
=> ( distinct @ A @ X3 ) )
=> ( distinct @ ( list @ A ) @ ( product_lists @ A @ Xss2 ) ) ) ).
% distinct_product_lists
thf(fact_209_distinct_Osimps_I2_J,axiom,
! [A: $tType,X: A,Xs: list @ A] :
( ( distinct @ A @ ( cons @ A @ X @ Xs ) )
= ( ~ ( member @ A @ X @ ( set2 @ A @ Xs ) )
& ( distinct @ A @ Xs ) ) ) ).
% distinct.simps(2)
thf(fact_210_distinct_Osimps_I1_J,axiom,
! [A: $tType] : ( distinct @ A @ ( nil @ A ) ) ).
% distinct.simps(1)
thf(fact_211_distinct__length__2__or__more,axiom,
! [A: $tType,A2: A,B2: A,Xs: list @ A] :
( ( distinct @ A @ ( cons @ A @ A2 @ ( cons @ A @ B2 @ Xs ) ) )
= ( ( A2 != B2 )
& ( distinct @ A @ ( cons @ A @ A2 @ Xs ) )
& ( distinct @ A @ ( cons @ A @ B2 @ Xs ) ) ) ) ).
% distinct_length_2_or_more
thf(fact_212_distinct__singleton,axiom,
! [A: $tType,X: A] : ( distinct @ A @ ( cons @ A @ X @ ( nil @ A ) ) ) ).
% distinct_singleton
thf(fact_213_not__distinct__decomp,axiom,
! [A: $tType,Ws2: list @ A] :
( ~ ( distinct @ A @ Ws2 )
=> ? [Xs2: list @ A,Ys2: list @ A,Zs3: list @ A,Y3: A] :
( Ws2
= ( append @ A @ Xs2 @ ( append @ A @ ( cons @ A @ Y3 @ ( nil @ A ) ) @ ( append @ A @ Ys2 @ ( append @ A @ ( cons @ A @ Y3 @ ( nil @ A ) ) @ Zs3 ) ) ) ) ) ) ).
% not_distinct_decomp
thf(fact_214_not__distinct__conv__prefix,axiom,
! [A: $tType,As2: list @ A] :
( ( ~ ( distinct @ A @ As2 ) )
= ( ? [Xs3: list @ A,Y2: A,Ys3: list @ A] :
( ( member @ A @ Y2 @ ( set2 @ A @ Xs3 ) )
& ( distinct @ A @ Xs3 )
& ( As2
= ( append @ A @ Xs3 @ ( cons @ A @ Y2 @ Ys3 ) ) ) ) ) ) ).
% not_distinct_conv_prefix
thf(fact_215_ord_OlessThan__iff,axiom,
! [A: $tType,I: A,Less: A > A > $o,K: A] :
( ( member @ A @ I @ ( set_lessThan @ A @ Less @ K ) )
= ( Less @ I @ K ) ) ).
% ord.lessThan_iff
thf(fact_216_ord_OgreaterThan__iff,axiom,
! [A: $tType,I: A,Less: A > A > $o,K: A] :
( ( member @ A @ I @ ( set_greaterThan @ A @ Less @ K ) )
= ( Less @ K @ I ) ) ).
% ord.greaterThan_iff
thf(fact_217_ord_OlessThan__def,axiom,
! [A: $tType] :
( ( set_lessThan @ A )
= ( ^ [Less2: A > A > $o,U2: A] :
( collect @ A
@ ^ [X2: A] : ( Less2 @ X2 @ U2 ) ) ) ) ).
% ord.lessThan_def
thf(fact_218_local_Oset__entries__inject,axiom,
! [B: $tType,T1: rBT_Im246033960le_rbt @ a @ B,T22: rBT_Im246033960le_rbt @ a @ B] :
( ( rBT_Im759614907sorted @ a @ B @ less @ T1 )
=> ( ( rBT_Im759614907sorted @ a @ B @ less @ T22 )
=> ( ( ( set2 @ ( product_prod @ a @ B ) @ ( rBT_Im954575269ntries @ a @ B @ T1 ) )
= ( set2 @ ( product_prod @ a @ B ) @ ( rBT_Im954575269ntries @ a @ B @ T22 ) ) )
= ( ( rBT_Im954575269ntries @ a @ B @ T1 )
= ( rBT_Im954575269ntries @ a @ B @ T22 ) ) ) ) ) ).
% local.set_entries_inject
thf(fact_219_distinct__union,axiom,
! [A: $tType,Xs: list @ A,Ys: list @ A] :
( ( distinct @ A @ ( union @ A @ Xs @ Ys ) )
= ( distinct @ A @ Ys ) ) ).
% distinct_union
thf(fact_220_entries_Osimps_I1_J,axiom,
! [B: $tType,A: $tType] :
( ( rBT_Im954575269ntries @ A @ B @ ( rBT_Im418718756_Empty @ A @ B ) )
= ( nil @ ( product_prod @ A @ B ) ) ) ).
% entries.simps(1)
thf(fact_221_local_Oentries__rbt__lookup,axiom,
! [B: $tType,T1: rBT_Im246033960le_rbt @ a @ B,T22: rBT_Im246033960le_rbt @ a @ B] :
( ( rBT_Im759614907sorted @ a @ B @ less @ T1 )
=> ( ( rBT_Im759614907sorted @ a @ B @ less @ T22 )
=> ( ( ( rBT_Im954575269ntries @ a @ B @ T1 )
= ( rBT_Im954575269ntries @ a @ B @ T22 ) )
= ( ( rBT_Im35466040lookup @ a @ B @ less @ T1 )
= ( rBT_Im35466040lookup @ a @ B @ less @ T22 ) ) ) ) ) ).
% local.entries_rbt_lookup
thf(fact_222_local_Oentries__eqI,axiom,
! [B: $tType,T1: rBT_Im246033960le_rbt @ a @ B,T22: rBT_Im246033960le_rbt @ a @ B] :
( ( rBT_Im759614907sorted @ a @ B @ less @ T1 )
=> ( ( rBT_Im759614907sorted @ a @ B @ less @ T22 )
=> ( ( ( rBT_Im35466040lookup @ a @ B @ less @ T1 )
= ( rBT_Im35466040lookup @ a @ B @ less @ T22 ) )
=> ( ( rBT_Im954575269ntries @ a @ B @ T1 )
= ( rBT_Im954575269ntries @ a @ B @ T22 ) ) ) ) ) ).
% local.entries_eqI
thf(fact_223_local_Orbt__lookup__from__in__tree,axiom,
! [B: $tType,T1: rBT_Im246033960le_rbt @ a @ B,T22: rBT_Im246033960le_rbt @ a @ B,K: a] :
( ( rBT_Im759614907sorted @ a @ B @ less @ T1 )
=> ( ( rBT_Im759614907sorted @ a @ B @ less @ T22 )
=> ( ! [V2: B] :
( ( member @ ( product_prod @ a @ B ) @ ( product_Pair @ a @ B @ K @ V2 ) @ ( set2 @ ( product_prod @ a @ B ) @ ( rBT_Im954575269ntries @ a @ B @ T1 ) ) )
= ( member @ ( product_prod @ a @ B ) @ ( product_Pair @ a @ B @ K @ V2 ) @ ( set2 @ ( product_prod @ a @ B ) @ ( rBT_Im954575269ntries @ a @ B @ T22 ) ) ) )
=> ( ( rBT_Im35466040lookup @ a @ B @ less @ T1 @ K )
= ( rBT_Im35466040lookup @ a @ B @ less @ T22 @ K ) ) ) ) ) ).
% local.rbt_lookup_from_in_tree
thf(fact_224_local_Orbt__lookup__keys,axiom,
! [B: $tType,T: rBT_Im246033960le_rbt @ a @ B] :
( ( rBT_Im759614907sorted @ a @ B @ less @ T )
=> ( ( dom @ a @ B @ ( rBT_Im35466040lookup @ a @ B @ less @ T ) )
= ( set2 @ a @ ( rBT_Im380146495e_keys @ a @ B @ T ) ) ) ) ).
% local.rbt_lookup_keys
thf(fact_225_entries_Osimps_I2_J,axiom,
! [B: $tType,A: $tType,Uu: rBT_Im1923302023_color,L: rBT_Im246033960le_rbt @ A @ B,K: A,V: B,R: rBT_Im246033960le_rbt @ A @ B] :
( ( rBT_Im954575269ntries @ A @ B @ ( rBT_Im480247531Branch @ A @ B @ Uu @ L @ K @ V @ R ) )
= ( append @ ( product_prod @ A @ B ) @ ( rBT_Im954575269ntries @ A @ B @ L ) @ ( cons @ ( product_prod @ A @ B ) @ ( product_Pair @ A @ B @ K @ V ) @ ( rBT_Im954575269ntries @ A @ B @ R ) ) ) ) ).
% entries.simps(2)
thf(fact_226_entry__in__tree__keys,axiom,
! [B: $tType,A: $tType,K: A,V: B,T: rBT_Im246033960le_rbt @ A @ B] :
( ( member @ ( product_prod @ A @ B ) @ ( product_Pair @ A @ B @ K @ V ) @ ( set2 @ ( product_prod @ A @ B ) @ ( rBT_Im954575269ntries @ A @ B @ T ) ) )
=> ( member @ A @ K @ ( set2 @ A @ ( rBT_Im380146495e_keys @ A @ B @ T ) ) ) ) ).
% entry_in_tree_keys
thf(fact_227_keys__entries,axiom,
! [A: $tType,B: $tType,K: A,T: rBT_Im246033960le_rbt @ A @ B] :
( ( member @ A @ K @ ( set2 @ A @ ( rBT_Im380146495e_keys @ A @ B @ T ) ) )
= ( ? [V3: B] : ( member @ ( product_prod @ A @ B ) @ ( product_Pair @ A @ B @ K @ V3 ) @ ( set2 @ ( product_prod @ A @ B ) @ ( rBT_Im954575269ntries @ A @ B @ T ) ) ) ) ) ).
% keys_entries
thf(fact_228_local_OacyclicI__order,axiom,
! [B: $tType,R: set @ ( product_prod @ B @ B ),F: B > a] :
( ! [A4: B,B4: B] :
( ( member @ ( product_prod @ B @ B ) @ ( product_Pair @ B @ B @ A4 @ B4 ) @ R )
=> ( less @ ( F @ B4 ) @ ( F @ A4 ) ) )
=> ( transitive_acyclic @ B @ R ) ) ).
% local.acyclicI_order
thf(fact_229_local_Orbt__lookup__in__tree,axiom,
! [B: $tType,T: rBT_Im246033960le_rbt @ a @ B,K: a,V: B] :
( ( rBT_Im759614907sorted @ a @ B @ less @ T )
=> ( ( ( rBT_Im35466040lookup @ a @ B @ less @ T @ K )
= ( some @ B @ V ) )
= ( member @ ( product_prod @ a @ B ) @ ( product_Pair @ a @ B @ K @ V ) @ ( set2 @ ( product_prod @ a @ B ) @ ( rBT_Im954575269ntries @ a @ B @ T ) ) ) ) ) ).
% local.rbt_lookup_in_tree
thf(fact_230_local_Orbt__lookup_Osimps_I2_J,axiom,
! [B: $tType,K: a,X: a,Uu: rBT_Im1923302023_color,L: rBT_Im246033960le_rbt @ a @ B,Y: B,R: rBT_Im246033960le_rbt @ a @ B] :
( ( ( less @ K @ X )
=> ( ( rBT_Im35466040lookup @ a @ B @ less @ ( rBT_Im480247531Branch @ a @ B @ Uu @ L @ X @ Y @ R ) @ K )
= ( rBT_Im35466040lookup @ a @ B @ less @ L @ K ) ) )
& ( ~ ( less @ K @ X )
=> ( ( ( less @ X @ K )
=> ( ( rBT_Im35466040lookup @ a @ B @ less @ ( rBT_Im480247531Branch @ a @ B @ Uu @ L @ X @ Y @ R ) @ K )
= ( rBT_Im35466040lookup @ a @ B @ less @ R @ K ) ) )
& ( ~ ( less @ X @ K )
=> ( ( rBT_Im35466040lookup @ a @ B @ less @ ( rBT_Im480247531Branch @ a @ B @ Uu @ L @ X @ Y @ R ) @ K )
= ( some @ B @ Y ) ) ) ) ) ) ).
% local.rbt_lookup.simps(2)
thf(fact_231_splice_Ocases,axiom,
! [A: $tType,X: product_prod @ ( list @ A ) @ ( list @ A )] :
( ! [Ys2: list @ A] :
( X
!= ( product_Pair @ ( list @ A ) @ ( list @ A ) @ ( nil @ A ) @ Ys2 ) )
=> ( ! [V2: A,Va: list @ A] :
( X
!= ( product_Pair @ ( list @ A ) @ ( list @ A ) @ ( cons @ A @ V2 @ Va ) @ ( nil @ A ) ) )
=> ~ ! [X3: A,Xs2: list @ A,Y3: A,Ys2: list @ A] :
( X
!= ( product_Pair @ ( list @ A ) @ ( list @ A ) @ ( cons @ A @ X3 @ Xs2 ) @ ( cons @ A @ Y3 @ Ys2 ) ) ) ) ) ).
% splice.cases
thf(fact_232_map__tailrec__rev_Ocases,axiom,
! [A: $tType,B: $tType,X: product_prod @ ( A > B ) @ ( product_prod @ ( list @ A ) @ ( list @ B ) )] :
( ! [F2: A > B,Bs: list @ B] :
( X
!= ( product_Pair @ ( A > B ) @ ( product_prod @ ( list @ A ) @ ( list @ B ) ) @ F2 @ ( product_Pair @ ( list @ A ) @ ( list @ B ) @ ( nil @ A ) @ Bs ) ) )
=> ~ ! [F2: A > B,A4: A,As: list @ A,Bs: list @ B] :
( X
!= ( product_Pair @ ( A > B ) @ ( product_prod @ ( list @ A ) @ ( list @ B ) ) @ F2 @ ( product_Pair @ ( list @ A ) @ ( list @ B ) @ ( cons @ A @ A4 @ As ) @ Bs ) ) ) ) ).
% map_tailrec_rev.cases
thf(fact_233_ord_Orbt__lookup_Osimps_I2_J,axiom,
! [A: $tType,B: $tType,Less: A > A > $o,K: A,X: A,Uu: rBT_Im1923302023_color,L: rBT_Im246033960le_rbt @ A @ B,Y: B,R: rBT_Im246033960le_rbt @ A @ B] :
( ( ( Less @ K @ X )
=> ( ( rBT_Im35466040lookup @ A @ B @ Less @ ( rBT_Im480247531Branch @ A @ B @ Uu @ L @ X @ Y @ R ) @ K )
= ( rBT_Im35466040lookup @ A @ B @ Less @ L @ K ) ) )
& ( ~ ( Less @ K @ X )
=> ( ( ( Less @ X @ K )
=> ( ( rBT_Im35466040lookup @ A @ B @ Less @ ( rBT_Im480247531Branch @ A @ B @ Uu @ L @ X @ Y @ R ) @ K )
= ( rBT_Im35466040lookup @ A @ B @ Less @ R @ K ) ) )
& ( ~ ( Less @ X @ K )
=> ( ( rBT_Im35466040lookup @ A @ B @ Less @ ( rBT_Im480247531Branch @ A @ B @ Uu @ L @ X @ Y @ R ) @ K )
= ( some @ B @ Y ) ) ) ) ) ) ).
% ord.rbt_lookup.simps(2)
thf(fact_234_local_Omap__of__entries,axiom,
! [B: $tType,T: rBT_Im246033960le_rbt @ a @ B] :
( ( rBT_Im759614907sorted @ a @ B @ less @ T )
=> ( ( map_of @ a @ B @ ( rBT_Im954575269ntries @ a @ B @ T ) )
= ( rBT_Im35466040lookup @ a @ B @ less @ T ) ) ) ).
% local.map_of_entries
thf(fact_235_local_Orbt__lookup_Osimps_I1_J,axiom,
! [B: $tType,K: a] :
( ( rBT_Im35466040lookup @ a @ B @ less @ ( rBT_Im418718756_Empty @ a @ B ) @ K )
= ( none @ B ) ) ).
% local.rbt_lookup.simps(1)
thf(fact_236_local_Orbt__lookup__Empty,axiom,
! [B: $tType] :
( ( rBT_Im35466040lookup @ a @ B @ less @ ( rBT_Im418718756_Empty @ a @ B ) )
= ( ^ [X2: a] : ( none @ B ) ) ) ).
% local.rbt_lookup_Empty
thf(fact_237_local_Orbt__lookup__rbt__less,axiom,
! [B: $tType,K: a,T: rBT_Im246033960le_rbt @ a @ B] :
( ( rBT_Im2075124343t_less @ a @ B @ less @ K @ T )
=> ( ( rBT_Im35466040lookup @ a @ B @ less @ T @ K )
= ( none @ B ) ) ) ).
% local.rbt_lookup_rbt_less
thf(fact_238_local_Orbt__lookup__rbt__greater,axiom,
! [B: $tType,K: a,T: rBT_Im246033960le_rbt @ a @ B] :
( ( rBT_Im1259024060reater @ a @ B @ less @ K @ T )
=> ( ( rBT_Im35466040lookup @ a @ B @ less @ T @ K )
= ( none @ B ) ) ) ).
% local.rbt_lookup_rbt_greater
thf(fact_239_ord_Orbt__lookup__Empty,axiom,
! [B: $tType,A: $tType,Less: A > A > $o] :
( ( rBT_Im35466040lookup @ A @ B @ Less @ ( rBT_Im418718756_Empty @ A @ B ) )
= ( ^ [X2: A] : ( none @ B ) ) ) ).
% ord.rbt_lookup_Empty
thf(fact_240_ord_Orbt__lookup_Osimps_I1_J,axiom,
! [A: $tType,B: $tType,Less: A > A > $o,K: A] :
( ( rBT_Im35466040lookup @ A @ B @ Less @ ( rBT_Im418718756_Empty @ A @ B ) @ K )
= ( none @ B ) ) ).
% ord.rbt_lookup.simps(1)
thf(fact_241_ord_Orbt__lookup__rbt__less,axiom,
! [A: $tType,B: $tType,Less: A > A > $o,K: A,T: rBT_Im246033960le_rbt @ A @ B] :
( ( rBT_Im2075124343t_less @ A @ B @ Less @ K @ T )
=> ( ( rBT_Im35466040lookup @ A @ B @ Less @ T @ K )
= ( none @ B ) ) ) ).
% ord.rbt_lookup_rbt_less
thf(fact_242_ord_Orbt__lookup__rbt__greater,axiom,
! [A: $tType,B: $tType,Less: A > A > $o,K: A,T: rBT_Im246033960le_rbt @ A @ B] :
( ( rBT_Im1259024060reater @ A @ B @ Less @ K @ T )
=> ( ( rBT_Im35466040lookup @ A @ B @ Less @ T @ K )
= ( none @ B ) ) ) ).
% ord.rbt_lookup_rbt_greater
thf(fact_243_order__class_OacyclicI__order,axiom,
! [A: $tType,B: $tType] :
( ( order @ A @ ( type2 @ A ) )
=> ! [R: set @ ( product_prod @ B @ B ),F: B > A] :
( ! [A4: B,B4: B] :
( ( member @ ( product_prod @ B @ B ) @ ( product_Pair @ B @ B @ A4 @ B4 ) @ R )
=> ( ord_less @ A @ ( F @ B4 ) @ ( F @ A4 ) ) )
=> ( transitive_acyclic @ B @ R ) ) ) ).
% order_class.acyclicI_order
thf(fact_244_dom__def,axiom,
! [B: $tType,A: $tType] :
( ( dom @ A @ B )
= ( ^ [M: A > ( option @ B )] :
( collect @ A
@ ^ [A5: A] :
( ( M @ A5 )
!= ( none @ B ) ) ) ) ) ).
% dom_def
thf(fact_245_extract__Some__iff,axiom,
! [A: $tType,P: A > $o,Xs: list @ A,Ys: list @ A,Y: A,Zs: list @ A] :
( ( ( extract @ A @ P @ Xs )
= ( some @ ( product_prod @ ( list @ A ) @ ( product_prod @ A @ ( list @ A ) ) ) @ ( product_Pair @ ( list @ A ) @ ( product_prod @ A @ ( list @ A ) ) @ Ys @ ( product_Pair @ A @ ( list @ A ) @ Y @ Zs ) ) ) )
= ( ( Xs
= ( append @ A @ Ys @ ( cons @ A @ Y @ Zs ) ) )
& ( P @ Y )
& ~ ? [X2: A] :
( ( member @ A @ X2 @ ( set2 @ A @ Ys ) )
& ( P @ X2 ) ) ) ) ).
% extract_Some_iff
thf(fact_246_extract__SomeE,axiom,
! [A: $tType,P: A > $o,Xs: list @ A,Ys: list @ A,Y: A,Zs: list @ A] :
( ( ( extract @ A @ P @ Xs )
= ( some @ ( product_prod @ ( list @ A ) @ ( product_prod @ A @ ( list @ A ) ) ) @ ( product_Pair @ ( list @ A ) @ ( product_prod @ A @ ( list @ A ) ) @ Ys @ ( product_Pair @ A @ ( list @ A ) @ Y @ Zs ) ) ) )
=> ( ( Xs
= ( append @ A @ Ys @ ( cons @ A @ Y @ Zs ) ) )
& ( P @ Y )
& ~ ? [X6: A] :
( ( member @ A @ X6 @ ( set2 @ A @ Ys ) )
& ( P @ X6 ) ) ) ) ).
% extract_SomeE
thf(fact_247_extract__Nil__code,axiom,
! [A: $tType,P: A > $o] :
( ( extract @ A @ P @ ( nil @ A ) )
= ( none @ ( product_prod @ ( list @ A ) @ ( product_prod @ A @ ( list @ A ) ) ) ) ) ).
% extract_Nil_code
thf(fact_248_extract__None__iff,axiom,
! [A: $tType,P: A > $o,Xs: list @ A] :
( ( ( extract @ A @ P @ Xs )
= ( none @ ( product_prod @ ( list @ A ) @ ( product_prod @ A @ ( list @ A ) ) ) ) )
= ( ~ ? [X2: A] :
( ( member @ A @ X2 @ ( set2 @ A @ Xs ) )
& ( P @ X2 ) ) ) ) ).
% extract_None_iff
thf(fact_249_snoc__listrel1__snoc__iff,axiom,
! [A: $tType,Xs: list @ A,X: A,Ys: list @ A,Y: A,R: set @ ( product_prod @ A @ A )] :
( ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ ( append @ A @ Xs @ ( cons @ A @ X @ ( nil @ A ) ) ) @ ( append @ A @ Ys @ ( cons @ A @ Y @ ( nil @ A ) ) ) ) @ ( listrel1 @ A @ R ) )
= ( ( ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ Xs @ Ys ) @ ( listrel1 @ A @ R ) )
& ( X = Y ) )
| ( ( Xs = Ys )
& ( member @ ( product_prod @ A @ A ) @ ( product_Pair @ A @ A @ X @ Y ) @ R ) ) ) ) ).
% snoc_listrel1_snoc_iff
thf(fact_250_local_Ois__rbt__def,axiom,
! [B: $tType,T: rBT_Im246033960le_rbt @ a @ B] :
( ( rBT_Im862805236is_rbt @ a @ B @ less @ T )
= ( ( rBT_Im1040612427e_inv1 @ a @ B @ T )
& ( rBT_Im1040612428e_inv2 @ a @ B @ T )
& ( ( rBT_Im1805589839lor_of @ a @ B @ T )
= rBT_Impl_Mirabelle_B )
& ( rBT_Im759614907sorted @ a @ B @ less @ T ) ) ) ).
% local.is_rbt_def
thf(fact_251_Cons__listrel1__Cons,axiom,
! [A: $tType,X: A,Xs: list @ A,Y: A,Ys: list @ A,R: set @ ( product_prod @ A @ A )] :
( ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ ( cons @ A @ X @ Xs ) @ ( cons @ A @ Y @ Ys ) ) @ ( listrel1 @ A @ R ) )
= ( ( ( member @ ( product_prod @ A @ A ) @ ( product_Pair @ A @ A @ X @ Y ) @ R )
& ( Xs = Ys ) )
| ( ( X = Y )
& ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ Xs @ Ys ) @ ( listrel1 @ A @ R ) ) ) ) ) ).
% Cons_listrel1_Cons
thf(fact_252_listrel1I2,axiom,
! [A: $tType,Xs: list @ A,Ys: list @ A,R: set @ ( product_prod @ A @ A ),X: A] :
( ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ Xs @ Ys ) @ ( listrel1 @ A @ R ) )
=> ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ ( cons @ A @ X @ Xs ) @ ( cons @ A @ X @ Ys ) ) @ ( listrel1 @ A @ R ) ) ) ).
% listrel1I2
thf(fact_253_append__listrel1I,axiom,
! [A: $tType,Xs: list @ A,Ys: list @ A,R: set @ ( product_prod @ A @ A ),Us2: list @ A,Vs2: list @ A] :
( ( ( ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ Xs @ Ys ) @ ( listrel1 @ A @ R ) )
& ( Us2 = Vs2 ) )
| ( ( Xs = Ys )
& ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ Us2 @ Vs2 ) @ ( listrel1 @ A @ R ) ) ) )
=> ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ ( append @ A @ Xs @ Us2 ) @ ( append @ A @ Ys @ Vs2 ) ) @ ( listrel1 @ A @ R ) ) ) ).
% append_listrel1I
thf(fact_254_not__listrel1__Nil,axiom,
! [A: $tType,Xs: list @ A,R: set @ ( product_prod @ A @ A )] :
~ ( member @ ( product_prod @ ( list @ A ) @ ( list @ A ) ) @ ( product_Pair @ ( list @ A ) @ ( list @ A ) @ Xs @ ( nil @ A ) ) @ ( listrel1 @ A @ R ) ) ).
% not_listrel1_Nil
%----Type constructors (3)
thf(tcon_fun___Orderings_Oorder,axiom,
! [A6: $tType,A7: $tType] :
( ( order @ A7 @ ( type2 @ A7 ) )
=> ( order @ ( A6 > A7 ) @ ( type2 @ ( A6 > A7 ) ) ) ) ).
thf(tcon_Set_Oset___Orderings_Oorder_1,axiom,
! [A6: $tType] : ( order @ ( set @ A6 ) @ ( type2 @ ( set @ A6 ) ) ) ).
thf(tcon_HOL_Obool___Orderings_Oorder_2,axiom,
order @ $o @ ( type2 @ $o ) ).
%----Conjectures (1)
thf(conj_0,conjecture,
( ( less @ y @ z )
& ( rBT_Im1259024060reater @ a @ b @ less @ z @ ( rBT_Im480247531Branch @ a @ b @ rBT_Impl_Mirabelle_B @ vd @ ve @ vii @ vf ) ) ) ).
%------------------------------------------------------------------------------