TPTP Problem File: SLH0948^1.p
View Solutions
- Solve Problem
%------------------------------------------------------------------------------
% File : SLH0000^1 : TPTP v8.2.0. Released v8.2.0.
% Domain : Archive of Formal Proofs
% Problem :
% Version : Especial.
% English :
% Refs : [Des23] Desharnais (2023), Email to Geoff Sutcliffe
% Source : [Des23]
% Names : Real_Time_Deque/0021_Idle_Proof/prob_00008_000143__6608986_1 [Des23]
% Status : Theorem
% Rating : ? v8.2.0
% Syntax : Number of formulae : 1601 ( 618 unt; 309 typ; 0 def)
% Number of atoms : 3646 (2099 equ; 0 cnn)
% Maximal formula atoms : 18 ( 2 avg)
% Number of connectives : 13609 ( 552 ~; 70 |; 440 &;11108 @)
% ( 0 <=>;1439 =>; 0 <=; 0 <~>)
% Maximal formula depth : 23 ( 6 avg)
% Number of types : 18 ( 17 usr)
% Number of type conns : 1267 (1267 >; 0 *; 0 +; 0 <<)
% Number of symbols : 295 ( 292 usr; 14 con; 0-4 aty)
% Number of variables : 4061 ( 301 ^;3410 !; 350 ?;4061 :)
% SPC : TH0_THM_EQU_NAR
% Comments : This file was generated by Isabelle (most likely Sledgehammer)
% 2023-01-19 15:48:32.057
%------------------------------------------------------------------------------
% Could-be-implicit typings (17)
thf(ty_n_t__List__Olist_It__List__Olist_It__List__Olist_It__Nat__Onat_J_J_J,type,
list_list_list_nat: $tType ).
thf(ty_n_t__Set__Oset_It__List__Olist_It__List__Olist_It__Nat__Onat_J_J_J,type,
set_list_list_nat: $tType ).
thf(ty_n_t__List__Olist_It__List__Olist_It__List__Olist_Itf__a_J_J_J,type,
list_list_list_a: $tType ).
thf(ty_n_t__Set__Oset_It__List__Olist_It__List__Olist_Itf__a_J_J_J,type,
set_list_list_a: $tType ).
thf(ty_n_t__List__Olist_It__List__Olist_It__Nat__Onat_J_J,type,
list_list_nat: $tType ).
thf(ty_n_t__Set__Oset_It__List__Olist_It__Nat__Onat_J_J,type,
set_list_nat: $tType ).
thf(ty_n_t__List__Olist_It__Set__Oset_It__Nat__Onat_J_J,type,
list_set_nat: $tType ).
thf(ty_n_t__List__Olist_It__List__Olist_Itf__a_J_J,type,
list_list_a: $tType ).
thf(ty_n_t__Set__Oset_It__List__Olist_Itf__a_J_J,type,
set_list_a: $tType ).
thf(ty_n_t__List__Olist_It__Nat__Onat_J,type,
list_nat: $tType ).
thf(ty_n_t__Set__Oset_It__Nat__Onat_J,type,
set_nat: $tType ).
thf(ty_n_t__List__Olist_Itf__a_J,type,
list_a: $tType ).
thf(ty_n_t__Idle__Oidle_Itf__a_J,type,
idle_a: $tType ).
thf(ty_n_t__Set__Oset_Itf__a_J,type,
set_a: $tType ).
thf(ty_n_t__Num__Onum,type,
num: $tType ).
thf(ty_n_t__Nat__Onat,type,
nat: $tType ).
thf(ty_n_tf__a,type,
a: $tType ).
% Explicit typings (292)
thf(sy_c_BNF__Greatest__Fixpoint_OShift_001t__List__Olist_It__Nat__Onat_J,type,
bNF_Gr9051742241863529473st_nat: set_list_list_nat > list_nat > set_list_list_nat ).
thf(sy_c_BNF__Greatest__Fixpoint_OShift_001t__List__Olist_Itf__a_J,type,
bNF_Gr7042794125918077091list_a: set_list_list_a > list_a > set_list_list_a ).
thf(sy_c_BNF__Greatest__Fixpoint_OShift_001t__Nat__Onat,type,
bNF_Gr1872714664788909425ft_nat: set_list_nat > nat > set_list_nat ).
thf(sy_c_BNF__Greatest__Fixpoint_OShift_001tf__a,type,
bNF_Greatest_Shift_a: set_list_a > a > set_list_a ).
thf(sy_c_BNF__Greatest__Fixpoint_OSucc_001t__List__Olist_It__Nat__Onat_J,type,
bNF_Gr3053708287304744325st_nat: set_list_list_nat > list_list_nat > set_list_nat ).
thf(sy_c_BNF__Greatest__Fixpoint_OSucc_001t__List__Olist_Itf__a_J,type,
bNF_Gr4634511371912843295list_a: set_list_list_a > list_list_a > set_list_a ).
thf(sy_c_BNF__Greatest__Fixpoint_OSucc_001t__Nat__Onat,type,
bNF_Gr6352880689984616693cc_nat: set_list_nat > list_nat > set_nat ).
thf(sy_c_BNF__Greatest__Fixpoint_OSucc_001tf__a,type,
bNF_Greatest_Succ_a: set_list_a > list_a > set_a ).
thf(sy_c_Binomial_Obinomial,type,
binomial: nat > nat > nat ).
thf(sy_c_Finite__Set_Ocard_001t__List__Olist_It__Nat__Onat_J,type,
finite_card_list_nat: set_list_nat > nat ).
thf(sy_c_Finite__Set_Ocard_001t__Nat__Onat,type,
finite_card_nat: set_nat > nat ).
thf(sy_c_Finite__Set_Ofinite_001t__List__Olist_It__Nat__Onat_J,type,
finite8100373058378681591st_nat: set_list_nat > $o ).
thf(sy_c_Finite__Set_Ofinite_001t__Nat__Onat,type,
finite_finite_nat: set_nat > $o ).
thf(sy_c_Groups_Ominus__class_Ominus_001t__Nat__Onat,type,
minus_minus_nat: nat > nat > nat ).
thf(sy_c_Groups_Oone__class_Oone_001t__Nat__Onat,type,
one_one_nat: nat ).
thf(sy_c_Groups_Oplus__class_Oplus_001t__Nat__Onat,type,
plus_plus_nat: nat > nat > nat ).
thf(sy_c_Groups_Ozero__class_Ozero_001t__Nat__Onat,type,
zero_zero_nat: nat ).
thf(sy_c_Groups__List_Omonoid__add__class_Osum__list_001t__Nat__Onat,type,
groups4561878855575611511st_nat: list_nat > nat ).
thf(sy_c_Idle_Opush_001tf__a,type,
push_a: a > idle_a > idle_a ).
thf(sy_c_Idle__Aux_Olist_001tf__a,type,
idle_list_a: idle_a > list_a ).
thf(sy_c_If_001t__List__Olist_It__List__Olist_It__Nat__Onat_J_J,type,
if_list_list_nat: $o > list_list_nat > list_list_nat > list_list_nat ).
thf(sy_c_If_001t__List__Olist_It__List__Olist_Itf__a_J_J,type,
if_list_list_a: $o > list_list_a > list_list_a > list_list_a ).
thf(sy_c_If_001t__List__Olist_It__Nat__Onat_J,type,
if_list_nat: $o > list_nat > list_nat > list_nat ).
thf(sy_c_If_001t__List__Olist_Itf__a_J,type,
if_list_a: $o > list_a > list_a > list_a ).
thf(sy_c_If_001t__Nat__Onat,type,
if_nat: $o > nat > nat > nat ).
thf(sy_c_If_001tf__a,type,
if_a: $o > a > a > a ).
thf(sy_c_Lattices_Oinf__class_Oinf_001t__Set__Oset_It__List__Olist_It__Nat__Onat_J_J,type,
inf_inf_set_list_nat: set_list_nat > set_list_nat > set_list_nat ).
thf(sy_c_Lattices_Oinf__class_Oinf_001t__Set__Oset_It__List__Olist_Itf__a_J_J,type,
inf_inf_set_list_a: set_list_a > set_list_a > set_list_a ).
thf(sy_c_Lattices_Oinf__class_Oinf_001t__Set__Oset_It__Nat__Onat_J,type,
inf_inf_set_nat: set_nat > set_nat > set_nat ).
thf(sy_c_Lattices_Oinf__class_Oinf_001t__Set__Oset_Itf__a_J,type,
inf_inf_set_a: set_a > set_a > set_a ).
thf(sy_c_List_OListMem_001t__List__Olist_It__Nat__Onat_J,type,
listMem_list_nat: list_nat > list_list_nat > $o ).
thf(sy_c_List_OListMem_001t__List__Olist_Itf__a_J,type,
listMem_list_a: list_a > list_list_a > $o ).
thf(sy_c_List_OListMem_001t__Nat__Onat,type,
listMem_nat: nat > list_nat > $o ).
thf(sy_c_List_OListMem_001tf__a,type,
listMem_a: a > list_a > $o ).
thf(sy_c_List_Oappend_001t__List__Olist_It__Nat__Onat_J,type,
append_list_nat: list_list_nat > list_list_nat > list_list_nat ).
thf(sy_c_List_Oappend_001t__List__Olist_Itf__a_J,type,
append_list_a: list_list_a > list_list_a > list_list_a ).
thf(sy_c_List_Oappend_001t__Nat__Onat,type,
append_nat: list_nat > list_nat > list_nat ).
thf(sy_c_List_Oappend_001tf__a,type,
append_a: list_a > list_a > list_a ).
thf(sy_c_List_Oarg__min__list_001t__Nat__Onat_001t__Nat__Onat,type,
arg_min_list_nat_nat: ( nat > nat ) > list_nat > nat ).
thf(sy_c_List_Oarg__min__list_001tf__a_001t__Nat__Onat,type,
arg_min_list_a_nat: ( a > nat ) > list_a > a ).
thf(sy_c_List_Obind_001t__Nat__Onat_001t__Nat__Onat,type,
bind_nat_nat: list_nat > ( nat > list_nat ) > list_nat ).
thf(sy_c_List_Obind_001tf__a_001t__Nat__Onat,type,
bind_a_nat: list_a > ( a > list_nat ) > list_nat ).
thf(sy_c_List_Obutlast_001t__List__Olist_It__Nat__Onat_J,type,
butlast_list_nat: list_list_nat > list_list_nat ).
thf(sy_c_List_Obutlast_001t__List__Olist_Itf__a_J,type,
butlast_list_a: list_list_a > list_list_a ).
thf(sy_c_List_Obutlast_001t__Nat__Onat,type,
butlast_nat: list_nat > list_nat ).
thf(sy_c_List_Obutlast_001tf__a,type,
butlast_a: list_a > list_a ).
thf(sy_c_List_Ocan__select_001t__List__Olist_It__Nat__Onat_J,type,
can_select_list_nat: ( list_nat > $o ) > set_list_nat > $o ).
thf(sy_c_List_Ocan__select_001t__List__Olist_Itf__a_J,type,
can_select_list_a: ( list_a > $o ) > set_list_a > $o ).
thf(sy_c_List_Ocan__select_001t__Nat__Onat,type,
can_select_nat: ( nat > $o ) > set_nat > $o ).
thf(sy_c_List_Oconcat_001t__List__Olist_It__Nat__Onat_J,type,
concat_list_nat: list_list_list_nat > list_list_nat ).
thf(sy_c_List_Oconcat_001t__List__Olist_Itf__a_J,type,
concat_list_a: list_list_list_a > list_list_a ).
thf(sy_c_List_Oconcat_001t__Nat__Onat,type,
concat_nat: list_list_nat > list_nat ).
thf(sy_c_List_Oconcat_001tf__a,type,
concat_a: list_list_a > list_a ).
thf(sy_c_List_Ocoset_001t__List__Olist_It__Nat__Onat_J,type,
coset_list_nat: list_list_nat > set_list_nat ).
thf(sy_c_List_Ocoset_001t__List__Olist_Itf__a_J,type,
coset_list_a: list_list_a > set_list_a ).
thf(sy_c_List_Ocoset_001t__Nat__Onat,type,
coset_nat: list_nat > set_nat ).
thf(sy_c_List_Odistinct_001t__List__Olist_It__Nat__Onat_J,type,
distinct_list_nat: list_list_nat > $o ).
thf(sy_c_List_Odistinct_001t__List__Olist_Itf__a_J,type,
distinct_list_a: list_list_a > $o ).
thf(sy_c_List_Odistinct_001t__Nat__Onat,type,
distinct_nat: list_nat > $o ).
thf(sy_c_List_Odistinct_001t__Set__Oset_It__Nat__Onat_J,type,
distinct_set_nat: list_set_nat > $o ).
thf(sy_c_List_Odistinct_001tf__a,type,
distinct_a: list_a > $o ).
thf(sy_c_List_Odistinct__adj_001t__Nat__Onat,type,
distinct_adj_nat: list_nat > $o ).
thf(sy_c_List_Odistinct__adj_001tf__a,type,
distinct_adj_a: list_a > $o ).
thf(sy_c_List_OdropWhile_001t__List__Olist_It__Nat__Onat_J,type,
dropWhile_list_nat: ( list_nat > $o ) > list_list_nat > list_list_nat ).
thf(sy_c_List_OdropWhile_001t__List__Olist_Itf__a_J,type,
dropWhile_list_a: ( list_a > $o ) > list_list_a > list_list_a ).
thf(sy_c_List_OdropWhile_001t__Nat__Onat,type,
dropWhile_nat: ( nat > $o ) > list_nat > list_nat ).
thf(sy_c_List_OdropWhile_001tf__a,type,
dropWhile_a: ( a > $o ) > list_a > list_a ).
thf(sy_c_List_Odrop_001t__List__Olist_It__Nat__Onat_J,type,
drop_list_nat: nat > list_list_nat > list_list_nat ).
thf(sy_c_List_Odrop_001t__List__Olist_Itf__a_J,type,
drop_list_a: nat > list_list_a > list_list_a ).
thf(sy_c_List_Odrop_001t__Nat__Onat,type,
drop_nat: nat > list_nat > list_nat ).
thf(sy_c_List_Odrop_001tf__a,type,
drop_a: nat > list_a > list_a ).
thf(sy_c_List_Ofilter_001t__List__Olist_It__Nat__Onat_J,type,
filter_list_nat: ( list_nat > $o ) > list_list_nat > list_list_nat ).
thf(sy_c_List_Ofilter_001t__List__Olist_Itf__a_J,type,
filter_list_a: ( list_a > $o ) > list_list_a > list_list_a ).
thf(sy_c_List_Ofilter_001t__Nat__Onat,type,
filter_nat: ( nat > $o ) > list_nat > list_nat ).
thf(sy_c_List_Ofilter_001tf__a,type,
filter_a: ( a > $o ) > list_a > list_a ).
thf(sy_c_List_Ofolding__insort__key_001t__Nat__Onat_001t__List__Olist_It__Nat__Onat_J,type,
foldin951631548397865559st_nat: ( nat > nat > $o ) > ( nat > nat > $o ) > set_list_nat > ( list_nat > nat ) > $o ).
thf(sy_c_List_Ofolding__insort__key_001t__Nat__Onat_001t__Nat__Onat,type,
foldin8133931898133206727at_nat: ( nat > nat > $o ) > ( nat > nat > $o ) > set_nat > ( nat > nat ) > $o ).
thf(sy_c_List_Ofoldr_001t__List__Olist_It__Nat__Onat_J_001t__List__Olist_It__Nat__Onat_J,type,
foldr_6871341030409798377st_nat: ( list_nat > list_nat > list_nat ) > list_list_nat > list_nat > list_nat ).
thf(sy_c_List_Ofoldr_001t__List__Olist_It__Nat__Onat_J_001t__Nat__Onat,type,
foldr_list_nat_nat: ( list_nat > nat > nat ) > list_list_nat > nat > nat ).
thf(sy_c_List_Ofoldr_001t__Nat__Onat_001t__List__Olist_It__Nat__Onat_J,type,
foldr_nat_list_nat: ( nat > list_nat > list_nat ) > list_nat > list_nat > list_nat ).
thf(sy_c_List_Ofoldr_001t__Nat__Onat_001t__Nat__Onat,type,
foldr_nat_nat: ( nat > nat > nat ) > list_nat > nat > nat ).
thf(sy_c_List_Ogen__length_001t__Nat__Onat,type,
gen_length_nat: nat > list_nat > nat ).
thf(sy_c_List_Ogen__length_001tf__a,type,
gen_length_a: nat > list_a > nat ).
thf(sy_c_List_Oinsert_001t__List__Olist_It__Nat__Onat_J,type,
insert_list_nat: list_nat > list_list_nat > list_list_nat ).
thf(sy_c_List_Oinsert_001t__List__Olist_Itf__a_J,type,
insert_list_a: list_a > list_list_a > list_list_a ).
thf(sy_c_List_Oinsert_001t__Nat__Onat,type,
insert_nat: nat > list_nat > list_nat ).
thf(sy_c_List_Oinsert_001tf__a,type,
insert_a: a > list_a > list_a ).
thf(sy_c_List_Olast_001t__List__Olist_It__Nat__Onat_J,type,
last_list_nat: list_list_nat > list_nat ).
thf(sy_c_List_Olast_001t__List__Olist_Itf__a_J,type,
last_list_a: list_list_a > list_a ).
thf(sy_c_List_Olast_001t__Nat__Onat,type,
last_nat: list_nat > nat ).
thf(sy_c_List_Olast_001tf__a,type,
last_a: list_a > a ).
thf(sy_c_List_Olinorder_Osorted__key__list__of__set_001t__Nat__Onat_001t__List__Olist_It__Nat__Onat_J,type,
sorted4005134659417452724st_nat: ( nat > nat > $o ) > ( list_nat > nat ) > set_list_nat > list_list_nat ).
thf(sy_c_List_Olinorder_Osorted__key__list__of__set_001t__Nat__Onat_001t__Nat__Onat,type,
sorted5905597674102116260at_nat: ( nat > nat > $o ) > ( nat > nat ) > set_nat > list_nat ).
thf(sy_c_List_Olinorder__class_Oinsort__insert__key_001t__Nat__Onat_001t__Nat__Onat,type,
linord1921536354676448932at_nat: ( nat > nat ) > nat > list_nat > list_nat ).
thf(sy_c_List_Olinorder__class_Oinsort__key_001t__List__Olist_It__Nat__Onat_J_001t__Nat__Onat,type,
linord5978504541935096237at_nat: ( list_nat > nat ) > list_nat > list_list_nat > list_list_nat ).
thf(sy_c_List_Olinorder__class_Oinsort__key_001t__List__Olist_Itf__a_J_001t__Nat__Onat,type,
linord6128634311322234009_a_nat: ( list_a > nat ) > list_a > list_list_a > list_list_a ).
thf(sy_c_List_Olinorder__class_Oinsort__key_001t__Nat__Onat_001t__Nat__Onat,type,
linord8961336180081300637at_nat: ( nat > nat ) > nat > list_nat > list_nat ).
thf(sy_c_List_Olinorder__class_Oinsort__key_001tf__a_001t__Nat__Onat,type,
linord5190936543458658835_a_nat: ( a > nat ) > a > list_a > list_a ).
thf(sy_c_List_Olinorder__class_Osort__key_001t__Nat__Onat_001t__Nat__Onat,type,
linord738340561235409698at_nat: ( nat > nat ) > list_nat > list_nat ).
thf(sy_c_List_Olinorder__class_Osorted__key__list__of__set_001t__Nat__Onat_001t__Nat__Onat,type,
linord1089935798310486446at_nat: ( nat > nat ) > set_nat > list_nat ).
thf(sy_c_List_Olinorder__class_Osorted__list__of__set_001t__Nat__Onat,type,
linord2614967742042102400et_nat: set_nat > list_nat ).
thf(sy_c_List_Olist_OCons_001t__List__Olist_It__Nat__Onat_J,type,
cons_list_nat: list_nat > list_list_nat > list_list_nat ).
thf(sy_c_List_Olist_OCons_001t__List__Olist_Itf__a_J,type,
cons_list_a: list_a > list_list_a > list_list_a ).
thf(sy_c_List_Olist_OCons_001t__Nat__Onat,type,
cons_nat: nat > list_nat > list_nat ).
thf(sy_c_List_Olist_OCons_001tf__a,type,
cons_a: a > list_a > list_a ).
thf(sy_c_List_Olist_ONil_001t__List__Olist_It__Nat__Onat_J,type,
nil_list_nat: list_list_nat ).
thf(sy_c_List_Olist_ONil_001t__List__Olist_Itf__a_J,type,
nil_list_a: list_list_a ).
thf(sy_c_List_Olist_ONil_001t__Nat__Onat,type,
nil_nat: list_nat ).
thf(sy_c_List_Olist_ONil_001tf__a,type,
nil_a: list_a ).
thf(sy_c_List_Olist_Ocase__list_001_Eo_001t__Nat__Onat,type,
case_list_o_nat: $o > ( nat > list_nat > $o ) > list_nat > $o ).
thf(sy_c_List_Olist_Ocase__list_001t__List__Olist_It__List__Olist_It__Nat__Onat_J_J_001t__Nat__Onat,type,
case_l3331202209248957608at_nat: list_list_nat > ( nat > list_nat > list_list_nat ) > list_nat > list_list_nat ).
thf(sy_c_List_Olist_Ocase__list_001t__List__Olist_It__List__Olist_Itf__a_J_J_001tf__a,type,
case_l8408404631611421914st_a_a: list_list_a > ( a > list_a > list_list_a ) > list_a > list_list_a ).
thf(sy_c_List_Olist_Ocase__list_001t__List__Olist_It__Nat__Onat_J_001t__Nat__Onat,type,
case_l2340614614379431832at_nat: list_nat > ( nat > list_nat > list_nat ) > list_nat > list_nat ).
thf(sy_c_List_Olist_Ocase__list_001t__List__Olist_Itf__a_J_001tf__a,type,
case_list_list_a_a: list_a > ( a > list_a > list_a ) > list_a > list_a ).
thf(sy_c_List_Olist_Ohd_001t__List__Olist_It__Nat__Onat_J,type,
hd_list_nat: list_list_nat > list_nat ).
thf(sy_c_List_Olist_Ohd_001t__List__Olist_Itf__a_J,type,
hd_list_a: list_list_a > list_a ).
thf(sy_c_List_Olist_Ohd_001t__Nat__Onat,type,
hd_nat: list_nat > nat ).
thf(sy_c_List_Olist_Ohd_001tf__a,type,
hd_a: list_a > a ).
thf(sy_c_List_Olist_Omap_001t__List__Olist_It__Nat__Onat_J_001t__List__Olist_It__List__Olist_It__Nat__Onat_J_J,type,
map_li960784813134754710st_nat: ( list_nat > list_list_nat ) > list_list_nat > list_list_list_nat ).
thf(sy_c_List_Olist_Omap_001t__List__Olist_It__Nat__Onat_J_001t__List__Olist_It__Nat__Onat_J,type,
map_li7225945977422193158st_nat: ( list_nat > list_nat ) > list_list_nat > list_list_nat ).
thf(sy_c_List_Olist_Omap_001t__List__Olist_It__Nat__Onat_J_001t__Nat__Onat,type,
map_list_nat_nat: ( list_nat > nat ) > list_list_nat > list_nat ).
thf(sy_c_List_Olist_Omap_001t__List__Olist_It__Nat__Onat_J_001t__Set__Oset_It__Nat__Onat_J,type,
map_list_nat_set_nat: ( list_nat > set_nat ) > list_list_nat > list_set_nat ).
thf(sy_c_List_Olist_Omap_001t__List__Olist_Itf__a_J_001t__List__Olist_It__List__Olist_Itf__a_J_J,type,
map_li5729356230488778442list_a: ( list_a > list_list_a ) > list_list_a > list_list_list_a ).
thf(sy_c_List_Olist_Omap_001t__List__Olist_Itf__a_J_001t__List__Olist_Itf__a_J,type,
map_list_a_list_a: ( list_a > list_a ) > list_list_a > list_list_a ).
thf(sy_c_List_Olist_Omap_001t__List__Olist_Itf__a_J_001t__Nat__Onat,type,
map_list_a_nat: ( list_a > nat ) > list_list_a > list_nat ).
thf(sy_c_List_Olist_Omap_001t__List__Olist_Itf__a_J_001tf__a,type,
map_list_a_a: ( list_a > a ) > list_list_a > list_a ).
thf(sy_c_List_Olist_Omap_001t__Nat__Onat_001t__List__Olist_It__List__Olist_It__Nat__Onat_J_J,type,
map_na6205611841492582150st_nat: ( nat > list_list_nat ) > list_nat > list_list_list_nat ).
thf(sy_c_List_Olist_Omap_001t__Nat__Onat_001t__List__Olist_It__Nat__Onat_J,type,
map_nat_list_nat: ( nat > list_nat ) > list_nat > list_list_nat ).
thf(sy_c_List_Olist_Omap_001t__Nat__Onat_001t__Nat__Onat,type,
map_nat_nat: ( nat > nat ) > list_nat > list_nat ).
thf(sy_c_List_Olist_Omap_001t__Nat__Onat_001tf__a,type,
map_nat_a: ( nat > a ) > list_nat > list_a ).
thf(sy_c_List_Olist_Omap_001tf__a_001t__List__Olist_It__List__Olist_Itf__a_J_J,type,
map_a_list_list_a: ( a > list_list_a ) > list_a > list_list_list_a ).
thf(sy_c_List_Olist_Omap_001tf__a_001t__List__Olist_Itf__a_J,type,
map_a_list_a: ( a > list_a ) > list_a > list_list_a ).
thf(sy_c_List_Olist_Omap_001tf__a_001t__Nat__Onat,type,
map_a_nat: ( a > nat ) > list_a > list_nat ).
thf(sy_c_List_Olist_Omap_001tf__a_001tf__a,type,
map_a_a: ( a > a ) > list_a > list_a ).
thf(sy_c_List_Olist_Orec__list_001t__List__Olist_It__Nat__Onat_J_001t__Nat__Onat,type,
rec_li7516600145284979816at_nat: list_nat > ( nat > list_nat > list_nat > list_nat ) > list_nat > list_nat ).
thf(sy_c_List_Olist_Oset_001t__List__Olist_It__Nat__Onat_J,type,
set_list_nat2: list_list_nat > set_list_nat ).
thf(sy_c_List_Olist_Oset_001t__List__Olist_Itf__a_J,type,
set_list_a2: list_list_a > set_list_a ).
thf(sy_c_List_Olist_Oset_001t__Nat__Onat,type,
set_nat2: list_nat > set_nat ).
thf(sy_c_List_Olist_Oset_001tf__a,type,
set_a2: list_a > set_a ).
thf(sy_c_List_Olist_Osize__list_001t__List__Olist_It__Nat__Onat_J,type,
size_list_list_nat: ( list_nat > nat ) > list_list_nat > nat ).
thf(sy_c_List_Olist_Osize__list_001t__List__Olist_Itf__a_J,type,
size_list_list_a: ( list_a > nat ) > list_list_a > nat ).
thf(sy_c_List_Olist_Osize__list_001t__Nat__Onat,type,
size_list_nat: ( nat > nat ) > list_nat > nat ).
thf(sy_c_List_Olist_Osize__list_001tf__a,type,
size_list_a: ( a > nat ) > list_a > nat ).
thf(sy_c_List_Olist_Otl_001t__List__Olist_It__Nat__Onat_J,type,
tl_list_nat: list_list_nat > list_list_nat ).
thf(sy_c_List_Olist_Otl_001t__List__Olist_Itf__a_J,type,
tl_list_a: list_list_a > list_list_a ).
thf(sy_c_List_Olist_Otl_001t__Nat__Onat,type,
tl_nat: list_nat > list_nat ).
thf(sy_c_List_Olist_Otl_001tf__a,type,
tl_a: list_a > list_a ).
thf(sy_c_List_Olist__ex1_001t__List__Olist_It__Nat__Onat_J,type,
list_ex1_list_nat: ( list_nat > $o ) > list_list_nat > $o ).
thf(sy_c_List_Olist__ex1_001t__List__Olist_Itf__a_J,type,
list_ex1_list_a: ( list_a > $o ) > list_list_a > $o ).
thf(sy_c_List_Olist__ex1_001t__Nat__Onat,type,
list_ex1_nat: ( nat > $o ) > list_nat > $o ).
thf(sy_c_List_Olist__ex_001t__List__Olist_It__Nat__Onat_J,type,
list_ex_list_nat: ( list_nat > $o ) > list_list_nat > $o ).
thf(sy_c_List_Olist__ex_001t__List__Olist_Itf__a_J,type,
list_ex_list_a: ( list_a > $o ) > list_list_a > $o ).
thf(sy_c_List_Olist__ex_001t__Nat__Onat,type,
list_ex_nat: ( nat > $o ) > list_nat > $o ).
thf(sy_c_List_Olist__ex_001tf__a,type,
list_ex_a: ( a > $o ) > list_a > $o ).
thf(sy_c_List_Olist__update_001t__List__Olist_It__Nat__Onat_J,type,
list_update_list_nat: list_list_nat > nat > list_nat > list_list_nat ).
thf(sy_c_List_Olist__update_001t__List__Olist_Itf__a_J,type,
list_update_list_a: list_list_a > nat > list_a > list_list_a ).
thf(sy_c_List_Olist__update_001t__Nat__Onat,type,
list_update_nat: list_nat > nat > nat > list_nat ).
thf(sy_c_List_Olist__update_001tf__a,type,
list_update_a: list_a > nat > a > list_a ).
thf(sy_c_List_Olistrelp_001t__Nat__Onat_001t__Nat__Onat,type,
listrelp_nat_nat: ( nat > nat > $o ) > list_nat > list_nat > $o ).
thf(sy_c_List_Olistrelp_001t__Nat__Onat_001tf__a,type,
listrelp_nat_a: ( nat > a > $o ) > list_nat > list_a > $o ).
thf(sy_c_List_Olistrelp_001tf__a_001t__Nat__Onat,type,
listrelp_a_nat: ( a > nat > $o ) > list_a > list_nat > $o ).
thf(sy_c_List_Olistrelp_001tf__a_001tf__a,type,
listrelp_a_a: ( a > a > $o ) > list_a > list_a > $o ).
thf(sy_c_List_Omap__tailrec_001t__Nat__Onat_001t__Nat__Onat,type,
map_tailrec_nat_nat: ( nat > nat ) > list_nat > list_nat ).
thf(sy_c_List_Omap__tailrec__rev_001t__Nat__Onat_001t__Nat__Onat,type,
map_ta7164188454487880599at_nat: ( nat > nat ) > list_nat > list_nat > list_nat ).
thf(sy_c_List_Omap__tailrec__rev_001t__Nat__Onat_001tf__a,type,
map_ta3519391893248468727_nat_a: ( nat > a ) > list_nat > list_a > list_a ).
thf(sy_c_List_Omap__tailrec__rev_001tf__a_001t__Nat__Onat,type,
map_ta8710832428924958105_a_nat: ( a > nat ) > list_a > list_nat > list_nat ).
thf(sy_c_List_Omap__tailrec__rev_001tf__a_001tf__a,type,
map_tailrec_rev_a_a: ( a > a ) > list_a > list_a > list_a ).
thf(sy_c_List_Omaps_001t__Nat__Onat_001t__Nat__Onat,type,
maps_nat_nat: ( nat > list_nat ) > list_nat > list_nat ).
thf(sy_c_List_Omaps_001tf__a_001t__Nat__Onat,type,
maps_a_nat: ( a > list_nat ) > list_a > list_nat ).
thf(sy_c_List_Omember_001t__List__Olist_It__Nat__Onat_J,type,
member_list_nat: list_list_nat > list_nat > $o ).
thf(sy_c_List_Omember_001t__List__Olist_Itf__a_J,type,
member_list_a: list_list_a > list_a > $o ).
thf(sy_c_List_Omember_001t__Nat__Onat,type,
member_nat: list_nat > nat > $o ).
thf(sy_c_List_Omember_001tf__a,type,
member_a: list_a > a > $o ).
thf(sy_c_List_On__lists_001t__Nat__Onat,type,
n_lists_nat: nat > list_nat > list_list_nat ).
thf(sy_c_List_On__lists_001tf__a,type,
n_lists_a: nat > list_a > list_list_a ).
thf(sy_c_List_Onth_001t__List__Olist_It__Nat__Onat_J,type,
nth_list_nat: list_list_nat > nat > list_nat ).
thf(sy_c_List_Onth_001t__List__Olist_Itf__a_J,type,
nth_list_a: list_list_a > nat > list_a ).
thf(sy_c_List_Onth_001t__Nat__Onat,type,
nth_nat: list_nat > nat > nat ).
thf(sy_c_List_Onth_001tf__a,type,
nth_a: list_a > nat > a ).
thf(sy_c_List_Onths_001t__List__Olist_It__Nat__Onat_J,type,
nths_list_nat: list_list_nat > set_nat > list_list_nat ).
thf(sy_c_List_Onths_001t__List__Olist_Itf__a_J,type,
nths_list_a: list_list_a > set_nat > list_list_a ).
thf(sy_c_List_Onths_001t__Nat__Onat,type,
nths_nat: list_nat > set_nat > list_nat ).
thf(sy_c_List_Onths_001tf__a,type,
nths_a: list_a > set_nat > list_a ).
thf(sy_c_List_Onull_001t__Nat__Onat,type,
null_nat: list_nat > $o ).
thf(sy_c_List_Onull_001tf__a,type,
null_a: list_a > $o ).
thf(sy_c_List_Oord_Olexordp_001t__Nat__Onat,type,
lexordp_nat: ( nat > nat > $o ) > list_nat > list_nat > $o ).
thf(sy_c_List_Oord_Olexordp_001tf__a,type,
lexordp_a: ( a > a > $o ) > list_a > list_a > $o ).
thf(sy_c_List_Oord_Olexordp__eq_001t__Nat__Onat,type,
lexordp_eq_nat: ( nat > nat > $o ) > list_nat > list_nat > $o ).
thf(sy_c_List_Oord_Olexordp__eq_001tf__a,type,
lexordp_eq_a: ( a > a > $o ) > list_a > list_a > $o ).
thf(sy_c_List_Oord__class_Olexordp__eq_001t__Nat__Onat,type,
ord_lexordp_eq_nat: list_nat > list_nat > $o ).
thf(sy_c_List_Oproduct__lists_001t__Nat__Onat,type,
product_lists_nat: list_list_nat > list_list_nat ).
thf(sy_c_List_Oproduct__lists_001tf__a,type,
product_lists_a: list_list_a > list_list_a ).
thf(sy_c_List_Oremdups__adj_001t__List__Olist_It__Nat__Onat_J,type,
remdups_adj_list_nat: list_list_nat > list_list_nat ).
thf(sy_c_List_Oremdups__adj_001t__List__Olist_Itf__a_J,type,
remdups_adj_list_a: list_list_a > list_list_a ).
thf(sy_c_List_Oremdups__adj_001t__Nat__Onat,type,
remdups_adj_nat: list_nat > list_nat ).
thf(sy_c_List_Oremdups__adj_001tf__a,type,
remdups_adj_a: list_a > list_a ).
thf(sy_c_List_Oremdups__adj__rel_001t__Nat__Onat,type,
remdups_adj_rel_nat: list_nat > list_nat > $o ).
thf(sy_c_List_Oremdups__adj__rel_001tf__a,type,
remdups_adj_rel_a: list_a > list_a > $o ).
thf(sy_c_List_Oremove1_001t__List__Olist_It__Nat__Onat_J,type,
remove1_list_nat: list_nat > list_list_nat > list_list_nat ).
thf(sy_c_List_Oremove1_001t__List__Olist_Itf__a_J,type,
remove1_list_a: list_a > list_list_a > list_list_a ).
thf(sy_c_List_Oremove1_001t__Nat__Onat,type,
remove1_nat: nat > list_nat > list_nat ).
thf(sy_c_List_Oremove1_001tf__a,type,
remove1_a: a > list_a > list_a ).
thf(sy_c_List_OremoveAll_001t__List__Olist_It__Nat__Onat_J,type,
removeAll_list_nat: list_nat > list_list_nat > list_list_nat ).
thf(sy_c_List_OremoveAll_001t__List__Olist_Itf__a_J,type,
removeAll_list_a: list_a > list_list_a > list_list_a ).
thf(sy_c_List_OremoveAll_001t__Nat__Onat,type,
removeAll_nat: nat > list_nat > list_nat ).
thf(sy_c_List_OremoveAll_001tf__a,type,
removeAll_a: a > list_a > list_a ).
thf(sy_c_List_Oreplicate_001t__List__Olist_It__Nat__Onat_J,type,
replicate_list_nat: nat > list_nat > list_list_nat ).
thf(sy_c_List_Oreplicate_001t__List__Olist_Itf__a_J,type,
replicate_list_a: nat > list_a > list_list_a ).
thf(sy_c_List_Oreplicate_001t__Nat__Onat,type,
replicate_nat: nat > nat > list_nat ).
thf(sy_c_List_Oreplicate_001tf__a,type,
replicate_a: nat > a > list_a ).
thf(sy_c_List_Orev_001t__List__Olist_It__Nat__Onat_J,type,
rev_list_nat: list_list_nat > list_list_nat ).
thf(sy_c_List_Orev_001t__List__Olist_Itf__a_J,type,
rev_list_a: list_list_a > list_list_a ).
thf(sy_c_List_Orev_001t__Nat__Onat,type,
rev_nat: list_nat > list_nat ).
thf(sy_c_List_Orev_001tf__a,type,
rev_a: list_a > list_a ).
thf(sy_c_List_Orotate1_001t__List__Olist_It__Nat__Onat_J,type,
rotate1_list_nat: list_list_nat > list_list_nat ).
thf(sy_c_List_Orotate1_001t__Nat__Onat,type,
rotate1_nat: list_nat > list_nat ).
thf(sy_c_List_Orotate1_001tf__a,type,
rotate1_a: list_a > list_a ).
thf(sy_c_List_Orotate_001t__Nat__Onat,type,
rotate_nat: nat > list_nat > list_nat ).
thf(sy_c_List_Oshuffles_001t__List__Olist_It__Nat__Onat_J,type,
shuffles_list_nat: list_list_nat > list_list_nat > set_list_list_nat ).
thf(sy_c_List_Oshuffles_001t__List__Olist_Itf__a_J,type,
shuffles_list_a: list_list_a > list_list_a > set_list_list_a ).
thf(sy_c_List_Oshuffles_001t__Nat__Onat,type,
shuffles_nat: list_nat > list_nat > set_list_nat ).
thf(sy_c_List_Oshuffles_001tf__a,type,
shuffles_a: list_a > list_a > set_list_a ).
thf(sy_c_List_Osorted__wrt_001t__List__Olist_It__Nat__Onat_J,type,
sorted_wrt_list_nat: ( list_nat > list_nat > $o ) > list_list_nat > $o ).
thf(sy_c_List_Osorted__wrt_001t__List__Olist_Itf__a_J,type,
sorted_wrt_list_a: ( list_a > list_a > $o ) > list_list_a > $o ).
thf(sy_c_List_Osorted__wrt_001t__Nat__Onat,type,
sorted_wrt_nat: ( nat > nat > $o ) > list_nat > $o ).
thf(sy_c_List_Osorted__wrt_001tf__a,type,
sorted_wrt_a: ( a > a > $o ) > list_a > $o ).
thf(sy_c_List_Osplice_001t__Nat__Onat,type,
splice_nat: list_nat > list_nat > list_nat ).
thf(sy_c_List_Osplice_001tf__a,type,
splice_a: list_a > list_a > list_a ).
thf(sy_c_List_Osubseqs_001t__Nat__Onat,type,
subseqs_nat: list_nat > list_list_nat ).
thf(sy_c_List_Osubseqs_001tf__a,type,
subseqs_a: list_a > list_list_a ).
thf(sy_c_List_Osuccessively_001t__List__Olist_It__Nat__Onat_J,type,
succes2524082786233489485st_nat: ( list_nat > list_nat > $o ) > list_list_nat > $o ).
thf(sy_c_List_Osuccessively_001t__List__Olist_Itf__a_J,type,
successively_list_a: ( list_a > list_a > $o ) > list_list_a > $o ).
thf(sy_c_List_Osuccessively_001t__Nat__Onat,type,
successively_nat: ( nat > nat > $o ) > list_nat > $o ).
thf(sy_c_List_Osuccessively_001tf__a,type,
successively_a: ( a > a > $o ) > list_a > $o ).
thf(sy_c_List_OtakeWhile_001t__List__Olist_It__Nat__Onat_J,type,
takeWhile_list_nat: ( list_nat > $o ) > list_list_nat > list_list_nat ).
thf(sy_c_List_OtakeWhile_001t__List__Olist_Itf__a_J,type,
takeWhile_list_a: ( list_a > $o ) > list_list_a > list_list_a ).
thf(sy_c_List_OtakeWhile_001t__Nat__Onat,type,
takeWhile_nat: ( nat > $o ) > list_nat > list_nat ).
thf(sy_c_List_OtakeWhile_001tf__a,type,
takeWhile_a: ( a > $o ) > list_a > list_a ).
thf(sy_c_List_Otake_001t__List__Olist_It__Nat__Onat_J,type,
take_list_nat: nat > list_list_nat > list_list_nat ).
thf(sy_c_List_Otake_001t__List__Olist_Itf__a_J,type,
take_list_a: nat > list_list_a > list_list_a ).
thf(sy_c_List_Otake_001t__Nat__Onat,type,
take_nat: nat > list_nat > list_nat ).
thf(sy_c_List_Otake_001tf__a,type,
take_a: nat > list_a > list_a ).
thf(sy_c_List_Otranspose_001t__Nat__Onat,type,
transpose_nat: list_list_nat > list_list_nat ).
thf(sy_c_List_Otranspose_001tf__a,type,
transpose_a: list_list_a > list_list_a ).
thf(sy_c_List_Otranspose__rel_001t__Nat__Onat,type,
transpose_rel_nat: list_list_nat > list_list_nat > $o ).
thf(sy_c_List_Otranspose__rel_001tf__a,type,
transpose_rel_a: list_list_a > list_list_a > $o ).
thf(sy_c_List_Ounion_001t__Nat__Onat,type,
union_nat: list_nat > list_nat > list_nat ).
thf(sy_c_List_Oupt,type,
upt: nat > nat > list_nat ).
thf(sy_c_Nat_OSuc,type,
suc: nat > nat ).
thf(sy_c_Nat_Osize__class_Osize_001t__List__Olist_It__List__Olist_It__Nat__Onat_J_J,type,
size_s3023201423986296836st_nat: list_list_nat > nat ).
thf(sy_c_Nat_Osize__class_Osize_001t__List__Olist_It__List__Olist_Itf__a_J_J,type,
size_s349497388124573686list_a: list_list_a > nat ).
thf(sy_c_Nat_Osize__class_Osize_001t__List__Olist_It__Nat__Onat_J,type,
size_size_list_nat: list_nat > nat ).
thf(sy_c_Nat_Osize__class_Osize_001t__List__Olist_Itf__a_J,type,
size_size_list_a: list_a > nat ).
thf(sy_c_Num_Onumeral__class_Onumeral_001t__Nat__Onat,type,
numeral_numeral_nat: num > nat ).
thf(sy_c_Orderings_Obot__class_Obot_001t__Set__Oset_It__List__Olist_It__Nat__Onat_J_J,type,
bot_bot_set_list_nat: set_list_nat ).
thf(sy_c_Orderings_Obot__class_Obot_001t__Set__Oset_It__List__Olist_Itf__a_J_J,type,
bot_bot_set_list_a: set_list_a ).
thf(sy_c_Orderings_Obot__class_Obot_001t__Set__Oset_It__Nat__Onat_J,type,
bot_bot_set_nat: set_nat ).
thf(sy_c_Orderings_Obot__class_Obot_001t__Set__Oset_Itf__a_J,type,
bot_bot_set_a: set_a ).
thf(sy_c_Orderings_Oord__class_Oless_001t__Nat__Onat,type,
ord_less_nat: nat > nat > $o ).
thf(sy_c_Orderings_Oord__class_Oless__eq_001t__Nat__Onat,type,
ord_less_eq_nat: nat > nat > $o ).
thf(sy_c_Orderings_Oord__class_Oless__eq_001t__Set__Oset_It__List__Olist_It__Nat__Onat_J_J,type,
ord_le6045566169113846134st_nat: set_list_nat > set_list_nat > $o ).
thf(sy_c_Orderings_Oord__class_Oless__eq_001t__Set__Oset_It__List__Olist_Itf__a_J_J,type,
ord_le8861187494160871172list_a: set_list_a > set_list_a > $o ).
thf(sy_c_Orderings_Oord__class_Oless__eq_001t__Set__Oset_It__Nat__Onat_J,type,
ord_less_eq_set_nat: set_nat > set_nat > $o ).
thf(sy_c_Orderings_Oord__class_Oless__eq_001t__Set__Oset_Itf__a_J,type,
ord_less_eq_set_a: set_a > set_a > $o ).
thf(sy_c_Orderings_Oord__class_Omax_001t__Nat__Onat,type,
ord_max_nat: nat > nat > nat ).
thf(sy_c_Rings_Omodulo__class_Omodulo_001t__Nat__Onat,type,
modulo_modulo_nat: nat > nat > nat ).
thf(sy_c_Set_OCollect_001t__List__Olist_It__Nat__Onat_J,type,
collect_list_nat: ( list_nat > $o ) > set_list_nat ).
thf(sy_c_Set_OCollect_001t__List__Olist_Itf__a_J,type,
collect_list_a: ( list_a > $o ) > set_list_a ).
thf(sy_c_Set_OCollect_001t__Nat__Onat,type,
collect_nat: ( nat > $o ) > set_nat ).
thf(sy_c_Set_OCollect_001tf__a,type,
collect_a: ( a > $o ) > set_a ).
thf(sy_c_Set_Ois__empty_001t__Nat__Onat,type,
is_empty_nat: set_nat > $o ).
thf(sy_c_Set_Ois__empty_001tf__a,type,
is_empty_a: set_a > $o ).
thf(sy_c_Set_Oremove_001t__Nat__Onat,type,
remove_nat: nat > set_nat > set_nat ).
thf(sy_c_Set_Othe__elem_001t__Nat__Onat,type,
the_elem_nat: set_nat > nat ).
thf(sy_c_Set_Othe__elem_001tf__a,type,
the_elem_a: set_a > a ).
thf(sy_c_Set__Interval_Oord__class_OatLeastLessThan_001t__Nat__Onat,type,
set_or4665077453230672383an_nat: nat > nat > set_nat ).
thf(sy_c_Set__Interval_Oord__class_OatMost_001t__Nat__Onat,type,
set_ord_atMost_nat: nat > set_nat ).
thf(sy_c_Set__Interval_Oord__class_OgreaterThanAtMost_001t__Nat__Onat,type,
set_or6659071591806873216st_nat: nat > nat > set_nat ).
thf(sy_c_Set__Interval_Oord__class_OgreaterThanLessThan_001t__Nat__Onat,type,
set_or5834768355832116004an_nat: nat > nat > set_nat ).
thf(sy_c_Set__Interval_Oord__class_OlessThan_001t__Nat__Onat,type,
set_ord_lessThan_nat: nat > set_nat ).
thf(sy_c_Wellfounded_Oaccp_001t__List__Olist_It__List__Olist_It__Nat__Onat_J_J,type,
accp_list_list_nat: ( list_list_nat > list_list_nat > $o ) > list_list_nat > $o ).
thf(sy_c_Wellfounded_Oaccp_001t__List__Olist_It__List__Olist_Itf__a_J_J,type,
accp_list_list_a: ( list_list_a > list_list_a > $o ) > list_list_a > $o ).
thf(sy_c_Wellfounded_Oaccp_001t__List__Olist_It__Nat__Onat_J,type,
accp_list_nat: ( list_nat > list_nat > $o ) > list_nat > $o ).
thf(sy_c_Wellfounded_Oaccp_001t__List__Olist_Itf__a_J,type,
accp_list_a: ( list_a > list_a > $o ) > list_a > $o ).
thf(sy_c_member_001t__List__Olist_It__List__Olist_It__Nat__Onat_J_J,type,
member_list_list_nat: list_list_nat > set_list_list_nat > $o ).
thf(sy_c_member_001t__List__Olist_It__List__Olist_Itf__a_J_J,type,
member_list_list_a: list_list_a > set_list_list_a > $o ).
thf(sy_c_member_001t__List__Olist_It__Nat__Onat_J,type,
member_list_nat2: list_nat > set_list_nat > $o ).
thf(sy_c_member_001t__List__Olist_Itf__a_J,type,
member_list_a2: list_a > set_list_a > $o ).
thf(sy_c_member_001t__Nat__Onat,type,
member_nat2: nat > set_nat > $o ).
thf(sy_c_member_001tf__a,type,
member_a2: a > set_a > $o ).
thf(sy_v_idle,type,
idle: idle_a ).
thf(sy_v_x,type,
x: a ).
% Relevant facts (1278)
thf(fact_0_list_Oinject,axiom,
! [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_1_list_Oinject,axiom,
! [X21: nat,X22: list_nat,Y21: nat,Y22: list_nat] :
( ( ( cons_nat @ X21 @ X22 )
= ( cons_nat @ Y21 @ Y22 ) )
= ( ( X21 = Y21 )
& ( X22 = Y22 ) ) ) ).
% list.inject
thf(fact_2_not__Cons__self2,axiom,
! [X: a,Xs: list_a] :
( ( cons_a @ X @ Xs )
!= Xs ) ).
% not_Cons_self2
thf(fact_3_not__Cons__self2,axiom,
! [X: nat,Xs: list_nat] :
( ( cons_nat @ X @ Xs )
!= Xs ) ).
% not_Cons_self2
thf(fact_4_member__rec_I1_J,axiom,
! [X: a,Xs: list_a,Y: a] :
( ( member_a @ ( cons_a @ X @ Xs ) @ Y )
= ( ( X = Y )
| ( member_a @ Xs @ Y ) ) ) ).
% member_rec(1)
thf(fact_5_member__rec_I1_J,axiom,
! [X: nat,Xs: list_nat,Y: nat] :
( ( member_nat @ ( cons_nat @ X @ Xs ) @ Y )
= ( ( X = Y )
| ( member_nat @ Xs @ Y ) ) ) ).
% member_rec(1)
thf(fact_6_ShiftD,axiom,
! [Kl: list_a,Kl2: set_list_a,K: a] :
( ( member_list_a2 @ Kl @ ( bNF_Greatest_Shift_a @ Kl2 @ K ) )
=> ( member_list_a2 @ ( cons_a @ K @ Kl ) @ Kl2 ) ) ).
% ShiftD
thf(fact_7_ShiftD,axiom,
! [Kl: list_nat,Kl2: set_list_nat,K: nat] :
( ( member_list_nat2 @ Kl @ ( bNF_Gr1872714664788909425ft_nat @ Kl2 @ K ) )
=> ( member_list_nat2 @ ( cons_nat @ K @ Kl ) @ Kl2 ) ) ).
% ShiftD
thf(fact_8_null__rec_I1_J,axiom,
! [X: a,Xs: list_a] :
~ ( null_a @ ( cons_a @ X @ Xs ) ) ).
% null_rec(1)
thf(fact_9_null__rec_I1_J,axiom,
! [X: nat,Xs: list_nat] :
~ ( null_nat @ ( cons_nat @ X @ Xs ) ) ).
% null_rec(1)
thf(fact_10_list__ex__simps_I1_J,axiom,
! [P: a > $o,X: a,Xs: list_a] :
( ( list_ex_a @ P @ ( cons_a @ X @ Xs ) )
= ( ( P @ X )
| ( list_ex_a @ P @ Xs ) ) ) ).
% list_ex_simps(1)
thf(fact_11_list__ex__simps_I1_J,axiom,
! [P: nat > $o,X: nat,Xs: list_nat] :
( ( list_ex_nat @ P @ ( cons_nat @ X @ Xs ) )
= ( ( P @ X )
| ( list_ex_nat @ P @ Xs ) ) ) ).
% list_ex_simps(1)
thf(fact_12_elem,axiom,
! [X: a,Xs: list_a] : ( listMem_a @ X @ ( cons_a @ X @ Xs ) ) ).
% elem
thf(fact_13_elem,axiom,
! [X: nat,Xs: list_nat] : ( listMem_nat @ X @ ( cons_nat @ X @ Xs ) ) ).
% elem
thf(fact_14_ListMem_Ocases,axiom,
! [A1: a,A2: list_a] :
( ( listMem_a @ A1 @ A2 )
=> ( ! [Xs2: list_a] :
( A2
!= ( cons_a @ A1 @ Xs2 ) )
=> ~ ! [Xs2: list_a] :
( ? [Y2: a] :
( A2
= ( cons_a @ Y2 @ Xs2 ) )
=> ~ ( listMem_a @ A1 @ Xs2 ) ) ) ) ).
% ListMem.cases
thf(fact_15_ListMem_Ocases,axiom,
! [A1: nat,A2: list_nat] :
( ( listMem_nat @ A1 @ A2 )
=> ( ! [Xs2: list_nat] :
( A2
!= ( cons_nat @ A1 @ Xs2 ) )
=> ~ ! [Xs2: list_nat] :
( ? [Y2: nat] :
( A2
= ( cons_nat @ Y2 @ Xs2 ) )
=> ~ ( listMem_nat @ A1 @ Xs2 ) ) ) ) ).
% ListMem.cases
thf(fact_16_ListMem_Osimps,axiom,
( listMem_a
= ( ^ [A12: a,A22: list_a] :
( ? [X2: a,Xs3: list_a] :
( ( A12 = X2 )
& ( A22
= ( cons_a @ X2 @ Xs3 ) ) )
| ? [X2: a,Xs3: list_a,Y3: a] :
( ( A12 = X2 )
& ( A22
= ( cons_a @ Y3 @ Xs3 ) )
& ( listMem_a @ X2 @ Xs3 ) ) ) ) ) ).
% ListMem.simps
thf(fact_17_ListMem_Osimps,axiom,
( listMem_nat
= ( ^ [A12: nat,A22: list_nat] :
( ? [X2: nat,Xs3: list_nat] :
( ( A12 = X2 )
& ( A22
= ( cons_nat @ X2 @ Xs3 ) ) )
| ? [X2: nat,Xs3: list_nat,Y3: nat] :
( ( A12 = X2 )
& ( A22
= ( cons_nat @ Y3 @ Xs3 ) )
& ( listMem_nat @ X2 @ Xs3 ) ) ) ) ) ).
% ListMem.simps
thf(fact_18_insert,axiom,
! [X: a,Xs: list_a,Y: a] :
( ( listMem_a @ X @ Xs )
=> ( listMem_a @ X @ ( cons_a @ Y @ Xs ) ) ) ).
% insert
thf(fact_19_insert,axiom,
! [X: nat,Xs: list_nat,Y: nat] :
( ( listMem_nat @ X @ Xs )
=> ( listMem_nat @ X @ ( cons_nat @ Y @ Xs ) ) ) ).
% insert
thf(fact_20_Succ__Shift,axiom,
! [Kl2: set_list_nat,K: nat,Kl: list_nat] :
( ( bNF_Gr6352880689984616693cc_nat @ ( bNF_Gr1872714664788909425ft_nat @ Kl2 @ K ) @ Kl )
= ( bNF_Gr6352880689984616693cc_nat @ Kl2 @ ( cons_nat @ K @ Kl ) ) ) ).
% Succ_Shift
thf(fact_21_Succ__Shift,axiom,
! [Kl2: set_list_a,K: a,Kl: list_a] :
( ( bNF_Greatest_Succ_a @ ( bNF_Greatest_Shift_a @ Kl2 @ K ) @ Kl )
= ( bNF_Greatest_Succ_a @ Kl2 @ ( cons_a @ K @ Kl ) ) ) ).
% Succ_Shift
thf(fact_22_map__tailrec__rev_Osimps_I2_J,axiom,
! [F: a > a,A: a,As: list_a,Bs: list_a] :
( ( map_tailrec_rev_a_a @ F @ ( cons_a @ A @ As ) @ Bs )
= ( map_tailrec_rev_a_a @ F @ As @ ( cons_a @ ( F @ A ) @ Bs ) ) ) ).
% map_tailrec_rev.simps(2)
thf(fact_23_map__tailrec__rev_Osimps_I2_J,axiom,
! [F: a > nat,A: a,As: list_a,Bs: list_nat] :
( ( map_ta8710832428924958105_a_nat @ F @ ( cons_a @ A @ As ) @ Bs )
= ( map_ta8710832428924958105_a_nat @ F @ As @ ( cons_nat @ ( F @ A ) @ Bs ) ) ) ).
% map_tailrec_rev.simps(2)
thf(fact_24_map__tailrec__rev_Osimps_I2_J,axiom,
! [F: nat > a,A: nat,As: list_nat,Bs: list_a] :
( ( map_ta3519391893248468727_nat_a @ F @ ( cons_nat @ A @ As ) @ Bs )
= ( map_ta3519391893248468727_nat_a @ F @ As @ ( cons_a @ ( F @ A ) @ Bs ) ) ) ).
% map_tailrec_rev.simps(2)
thf(fact_25_map__tailrec__rev_Osimps_I2_J,axiom,
! [F: nat > nat,A: nat,As: list_nat,Bs: list_nat] :
( ( map_ta7164188454487880599at_nat @ F @ ( cons_nat @ A @ As ) @ Bs )
= ( map_ta7164188454487880599at_nat @ F @ As @ ( cons_nat @ ( F @ A ) @ Bs ) ) ) ).
% map_tailrec_rev.simps(2)
thf(fact_26_ord_Olexordp__eq__simps_I4_J,axiom,
! [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_27_ord_Olexordp__eq__simps_I4_J,axiom,
! [Less: nat > nat > $o,X: nat,Xs: list_nat,Y: nat,Ys: list_nat] :
( ( lexordp_eq_nat @ Less @ ( cons_nat @ X @ Xs ) @ ( cons_nat @ Y @ Ys ) )
= ( ( Less @ X @ Y )
| ( ~ ( Less @ Y @ X )
& ( lexordp_eq_nat @ Less @ Xs @ Ys ) ) ) ) ).
% ord.lexordp_eq_simps(4)
thf(fact_28_listrelp_OCons,axiom,
! [R: a > a > $o,X: a,Y: a,Xs: list_a,Ys: list_a] :
( ( R @ X @ Y )
=> ( ( listrelp_a_a @ R @ Xs @ Ys )
=> ( listrelp_a_a @ R @ ( cons_a @ X @ Xs ) @ ( cons_a @ Y @ Ys ) ) ) ) ).
% listrelp.Cons
thf(fact_29_listrelp_OCons,axiom,
! [R: a > nat > $o,X: a,Y: nat,Xs: list_a,Ys: list_nat] :
( ( R @ X @ Y )
=> ( ( listrelp_a_nat @ R @ Xs @ Ys )
=> ( listrelp_a_nat @ R @ ( cons_a @ X @ Xs ) @ ( cons_nat @ Y @ Ys ) ) ) ) ).
% listrelp.Cons
thf(fact_30_listrelp_OCons,axiom,
! [R: nat > a > $o,X: nat,Y: a,Xs: list_nat,Ys: list_a] :
( ( R @ X @ Y )
=> ( ( listrelp_nat_a @ R @ Xs @ Ys )
=> ( listrelp_nat_a @ R @ ( cons_nat @ X @ Xs ) @ ( cons_a @ Y @ Ys ) ) ) ) ).
% listrelp.Cons
thf(fact_31_listrelp_OCons,axiom,
! [R: nat > nat > $o,X: nat,Y: nat,Xs: list_nat,Ys: list_nat] :
( ( R @ X @ Y )
=> ( ( listrelp_nat_nat @ R @ Xs @ Ys )
=> ( listrelp_nat_nat @ R @ ( cons_nat @ X @ Xs ) @ ( cons_nat @ Y @ Ys ) ) ) ) ).
% listrelp.Cons
thf(fact_32_member__rec_I2_J,axiom,
! [Y: a] :
~ ( member_a @ nil_a @ Y ) ).
% member_rec(2)
thf(fact_33_member__rec_I2_J,axiom,
! [Y: nat] :
~ ( member_nat @ nil_nat @ Y ) ).
% member_rec(2)
thf(fact_34_distinct__adj__Cons__Cons,axiom,
! [X: a,Y: a,Xs: list_a] :
( ( distinct_adj_a @ ( cons_a @ X @ ( cons_a @ Y @ Xs ) ) )
= ( ( X != Y )
& ( distinct_adj_a @ ( cons_a @ Y @ Xs ) ) ) ) ).
% distinct_adj_Cons_Cons
thf(fact_35_distinct__adj__Cons__Cons,axiom,
! [X: nat,Y: nat,Xs: list_nat] :
( ( distinct_adj_nat @ ( cons_nat @ X @ ( cons_nat @ Y @ Xs ) ) )
= ( ( X != Y )
& ( distinct_adj_nat @ ( cons_nat @ Y @ Xs ) ) ) ) ).
% distinct_adj_Cons_Cons
thf(fact_36_list__ex__simps_I2_J,axiom,
! [P: a > $o] :
~ ( list_ex_a @ P @ nil_a ) ).
% list_ex_simps(2)
thf(fact_37_list__ex__simps_I2_J,axiom,
! [P: nat > $o] :
~ ( list_ex_nat @ P @ nil_nat ) ).
% list_ex_simps(2)
thf(fact_38_ord_Olexordp__simps_I3_J,axiom,
! [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_39_ord_Olexordp__simps_I3_J,axiom,
! [Less: nat > nat > $o,X: nat,Xs: list_nat,Y: nat,Ys: list_nat] :
( ( lexordp_nat @ Less @ ( cons_nat @ X @ Xs ) @ ( cons_nat @ Y @ Ys ) )
= ( ( Less @ X @ Y )
| ( ~ ( Less @ Y @ X )
& ( lexordp_nat @ Less @ Xs @ Ys ) ) ) ) ).
% ord.lexordp_simps(3)
thf(fact_40_in__set__member,axiom,
! [X: list_nat,Xs: list_list_nat] :
( ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
= ( member_list_nat @ Xs @ X ) ) ).
% in_set_member
thf(fact_41_in__set__member,axiom,
! [X: list_a,Xs: list_list_a] :
( ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
= ( member_list_a @ Xs @ X ) ) ).
% in_set_member
thf(fact_42_in__set__member,axiom,
! [X: a,Xs: list_a] :
( ( member_a2 @ X @ ( set_a2 @ Xs ) )
= ( member_a @ Xs @ X ) ) ).
% in_set_member
thf(fact_43_in__set__member,axiom,
! [X: nat,Xs: list_nat] :
( ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
= ( member_nat @ Xs @ X ) ) ).
% in_set_member
thf(fact_44_null__rec_I2_J,axiom,
null_a @ nil_a ).
% null_rec(2)
thf(fact_45_null__rec_I2_J,axiom,
null_nat @ nil_nat ).
% null_rec(2)
thf(fact_46_eq__Nil__null,axiom,
! [Xs: list_a] :
( ( Xs = nil_a )
= ( null_a @ Xs ) ) ).
% eq_Nil_null
thf(fact_47_eq__Nil__null,axiom,
! [Xs: list_nat] :
( ( Xs = nil_nat )
= ( null_nat @ Xs ) ) ).
% eq_Nil_null
thf(fact_48_ord_Olexordp__simps_I2_J,axiom,
! [Less: nat > nat > $o,Xs: list_nat] :
~ ( lexordp_nat @ Less @ Xs @ nil_nat ) ).
% ord.lexordp_simps(2)
thf(fact_49_ord_Olexordp__simps_I1_J,axiom,
! [Less: nat > nat > $o,Ys: list_nat] :
( ( lexordp_nat @ Less @ nil_nat @ Ys )
= ( Ys != nil_nat ) ) ).
% ord.lexordp_simps(1)
thf(fact_50_ord_Olexordp__eq__simps_I2_J,axiom,
! [Less: nat > nat > $o,Xs: list_nat] :
( ( lexordp_eq_nat @ Less @ Xs @ nil_nat )
= ( Xs = nil_nat ) ) ).
% ord.lexordp_eq_simps(2)
thf(fact_51_ord_Olexordp__eq__simps_I1_J,axiom,
! [Less: nat > nat > $o,Ys: list_nat] : ( lexordp_eq_nat @ Less @ nil_nat @ Ys ) ).
% ord.lexordp_eq_simps(1)
thf(fact_52_ord_Olexordp__eq__simps_I3_J,axiom,
! [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_53_ord_Olexordp__eq__simps_I3_J,axiom,
! [Less: nat > nat > $o,X: nat,Xs: list_nat] :
~ ( lexordp_eq_nat @ Less @ ( cons_nat @ X @ Xs ) @ nil_nat ) ).
% ord.lexordp_eq_simps(3)
thf(fact_54_listrelp_ONil,axiom,
! [R: nat > nat > $o] : ( listrelp_nat_nat @ R @ nil_nat @ nil_nat ) ).
% listrelp.Nil
thf(fact_55_ord_Olexordp__eq_ONil,axiom,
! [Less: nat > nat > $o,Ys: list_nat] : ( lexordp_eq_nat @ Less @ nil_nat @ Ys ) ).
% ord.lexordp_eq.Nil
thf(fact_56_distinct__adj__Nil,axiom,
distinct_adj_nat @ nil_nat ).
% distinct_adj_Nil
thf(fact_57_transpose_Ocases,axiom,
! [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_58_transpose_Ocases,axiom,
! [X: list_list_nat] :
( ( X != nil_list_nat )
=> ( ! [Xss: list_list_nat] :
( X
!= ( cons_list_nat @ nil_nat @ Xss ) )
=> ~ ! [X3: nat,Xs2: list_nat,Xss: list_list_nat] :
( X
!= ( cons_list_nat @ ( cons_nat @ X3 @ Xs2 ) @ Xss ) ) ) ) ).
% transpose.cases
thf(fact_59_ord_Olexordp_Osimps,axiom,
( lexordp_a
= ( ^ [Less2: a > a > $o,A12: list_a,A22: list_a] :
( ? [Y3: a,Ys2: list_a] :
( ( A12 = nil_a )
& ( A22
= ( cons_a @ Y3 @ Ys2 ) ) )
| ? [X2: a,Y3: a,Xs3: list_a,Ys2: list_a] :
( ( A12
= ( cons_a @ X2 @ Xs3 ) )
& ( A22
= ( cons_a @ Y3 @ Ys2 ) )
& ( Less2 @ X2 @ Y3 ) )
| ? [X2: a,Y3: a,Xs3: list_a,Ys2: list_a] :
( ( A12
= ( cons_a @ X2 @ Xs3 ) )
& ( A22
= ( cons_a @ Y3 @ Ys2 ) )
& ~ ( Less2 @ X2 @ Y3 )
& ~ ( Less2 @ Y3 @ X2 )
& ( lexordp_a @ Less2 @ Xs3 @ Ys2 ) ) ) ) ) ).
% ord.lexordp.simps
thf(fact_60_ord_Olexordp_Osimps,axiom,
( lexordp_nat
= ( ^ [Less2: nat > nat > $o,A12: list_nat,A22: list_nat] :
( ? [Y3: nat,Ys2: list_nat] :
( ( A12 = nil_nat )
& ( A22
= ( cons_nat @ Y3 @ Ys2 ) ) )
| ? [X2: nat,Y3: nat,Xs3: list_nat,Ys2: list_nat] :
( ( A12
= ( cons_nat @ X2 @ Xs3 ) )
& ( A22
= ( cons_nat @ Y3 @ Ys2 ) )
& ( Less2 @ X2 @ Y3 ) )
| ? [X2: nat,Y3: nat,Xs3: list_nat,Ys2: list_nat] :
( ( A12
= ( cons_nat @ X2 @ Xs3 ) )
& ( A22
= ( cons_nat @ Y3 @ Ys2 ) )
& ~ ( Less2 @ X2 @ Y3 )
& ~ ( Less2 @ Y3 @ X2 )
& ( lexordp_nat @ Less2 @ Xs3 @ Ys2 ) ) ) ) ) ).
% ord.lexordp.simps
thf(fact_61_ord_Olexordp_Ocases,axiom,
! [Less: a > a > $o,A1: list_a,A2: list_a] :
( ( lexordp_a @ Less @ A1 @ A2 )
=> ( ( ( A1 = nil_a )
=> ! [Y2: a,Ys3: list_a] :
( A2
!= ( cons_a @ Y2 @ Ys3 ) ) )
=> ( ! [X3: a] :
( ? [Xs2: list_a] :
( A1
= ( cons_a @ X3 @ Xs2 ) )
=> ! [Y2: a] :
( ? [Ys3: list_a] :
( A2
= ( cons_a @ Y2 @ Ys3 ) )
=> ~ ( Less @ X3 @ Y2 ) ) )
=> ~ ! [X3: a,Y2: a,Xs2: list_a] :
( ( A1
= ( cons_a @ X3 @ Xs2 ) )
=> ! [Ys3: list_a] :
( ( A2
= ( cons_a @ Y2 @ Ys3 ) )
=> ( ~ ( Less @ X3 @ Y2 )
=> ( ~ ( Less @ Y2 @ X3 )
=> ~ ( lexordp_a @ Less @ Xs2 @ Ys3 ) ) ) ) ) ) ) ) ).
% ord.lexordp.cases
thf(fact_62_ord_Olexordp_Ocases,axiom,
! [Less: nat > nat > $o,A1: list_nat,A2: list_nat] :
( ( lexordp_nat @ Less @ A1 @ A2 )
=> ( ( ( A1 = nil_nat )
=> ! [Y2: nat,Ys3: list_nat] :
( A2
!= ( cons_nat @ Y2 @ Ys3 ) ) )
=> ( ! [X3: nat] :
( ? [Xs2: list_nat] :
( A1
= ( cons_nat @ X3 @ Xs2 ) )
=> ! [Y2: nat] :
( ? [Ys3: list_nat] :
( A2
= ( cons_nat @ Y2 @ Ys3 ) )
=> ~ ( Less @ X3 @ Y2 ) ) )
=> ~ ! [X3: nat,Y2: nat,Xs2: list_nat] :
( ( A1
= ( cons_nat @ X3 @ Xs2 ) )
=> ! [Ys3: list_nat] :
( ( A2
= ( cons_nat @ Y2 @ Ys3 ) )
=> ( ~ ( Less @ X3 @ Y2 )
=> ( ~ ( Less @ Y2 @ X3 )
=> ~ ( lexordp_nat @ Less @ Xs2 @ Ys3 ) ) ) ) ) ) ) ) ).
% ord.lexordp.cases
thf(fact_63_ord_Olexordp_ONil,axiom,
! [Less: a > a > $o,Y: a,Ys: list_a] : ( lexordp_a @ Less @ nil_a @ ( cons_a @ Y @ Ys ) ) ).
% ord.lexordp.Nil
thf(fact_64_ord_Olexordp_ONil,axiom,
! [Less: nat > nat > $o,Y: nat,Ys: list_nat] : ( lexordp_nat @ Less @ nil_nat @ ( cons_nat @ Y @ Ys ) ) ).
% ord.lexordp.Nil
thf(fact_65_mem__Collect__eq,axiom,
! [A: list_a,P: list_a > $o] :
( ( member_list_a2 @ A @ ( collect_list_a @ P ) )
= ( P @ A ) ) ).
% mem_Collect_eq
thf(fact_66_mem__Collect__eq,axiom,
! [A: list_nat,P: list_nat > $o] :
( ( member_list_nat2 @ A @ ( collect_list_nat @ P ) )
= ( P @ A ) ) ).
% mem_Collect_eq
thf(fact_67_Collect__mem__eq,axiom,
! [A3: set_list_a] :
( ( collect_list_a
@ ^ [X2: list_a] : ( member_list_a2 @ X2 @ A3 ) )
= A3 ) ).
% Collect_mem_eq
thf(fact_68_Collect__mem__eq,axiom,
! [A3: set_list_nat] :
( ( collect_list_nat
@ ^ [X2: list_nat] : ( member_list_nat2 @ X2 @ A3 ) )
= A3 ) ).
% Collect_mem_eq
thf(fact_69_Collect__cong,axiom,
! [P: list_nat > $o,Q: list_nat > $o] :
( ! [X3: list_nat] :
( ( P @ X3 )
= ( Q @ X3 ) )
=> ( ( collect_list_nat @ P )
= ( collect_list_nat @ Q ) ) ) ).
% Collect_cong
thf(fact_70_distinct__adj__singleton,axiom,
! [X: a] : ( distinct_adj_a @ ( cons_a @ X @ nil_a ) ) ).
% distinct_adj_singleton
thf(fact_71_distinct__adj__singleton,axiom,
! [X: nat] : ( distinct_adj_nat @ ( cons_nat @ X @ nil_nat ) ) ).
% distinct_adj_singleton
thf(fact_72_ord_Olexordp__eq_Osimps,axiom,
( lexordp_eq_a
= ( ^ [Less2: a > a > $o,A12: list_a,A22: list_a] :
( ? [Ys2: list_a] :
( ( A12 = nil_a )
& ( A22 = Ys2 ) )
| ? [X2: a,Y3: a,Xs3: list_a,Ys2: list_a] :
( ( A12
= ( cons_a @ X2 @ Xs3 ) )
& ( A22
= ( cons_a @ Y3 @ Ys2 ) )
& ( Less2 @ X2 @ Y3 ) )
| ? [X2: a,Y3: a,Xs3: list_a,Ys2: list_a] :
( ( A12
= ( cons_a @ X2 @ Xs3 ) )
& ( A22
= ( cons_a @ Y3 @ Ys2 ) )
& ~ ( Less2 @ X2 @ Y3 )
& ~ ( Less2 @ Y3 @ X2 )
& ( lexordp_eq_a @ Less2 @ Xs3 @ Ys2 ) ) ) ) ) ).
% ord.lexordp_eq.simps
thf(fact_73_ord_Olexordp__eq_Osimps,axiom,
( lexordp_eq_nat
= ( ^ [Less2: nat > nat > $o,A12: list_nat,A22: list_nat] :
( ? [Ys2: list_nat] :
( ( A12 = nil_nat )
& ( A22 = Ys2 ) )
| ? [X2: nat,Y3: nat,Xs3: list_nat,Ys2: list_nat] :
( ( A12
= ( cons_nat @ X2 @ Xs3 ) )
& ( A22
= ( cons_nat @ Y3 @ Ys2 ) )
& ( Less2 @ X2 @ Y3 ) )
| ? [X2: nat,Y3: nat,Xs3: list_nat,Ys2: list_nat] :
( ( A12
= ( cons_nat @ X2 @ Xs3 ) )
& ( A22
= ( cons_nat @ Y3 @ Ys2 ) )
& ~ ( Less2 @ X2 @ Y3 )
& ~ ( Less2 @ Y3 @ X2 )
& ( lexordp_eq_nat @ Less2 @ Xs3 @ Ys2 ) ) ) ) ) ).
% ord.lexordp_eq.simps
thf(fact_74_ord_Olexordp__eq_Ocases,axiom,
! [Less: a > a > $o,A1: list_a,A2: list_a] :
( ( lexordp_eq_a @ Less @ A1 @ A2 )
=> ( ( A1 != nil_a )
=> ( ! [X3: a] :
( ? [Xs2: list_a] :
( A1
= ( cons_a @ X3 @ Xs2 ) )
=> ! [Y2: a] :
( ? [Ys3: list_a] :
( A2
= ( cons_a @ Y2 @ Ys3 ) )
=> ~ ( Less @ X3 @ Y2 ) ) )
=> ~ ! [X3: a,Y2: a,Xs2: list_a] :
( ( A1
= ( cons_a @ X3 @ Xs2 ) )
=> ! [Ys3: list_a] :
( ( A2
= ( cons_a @ Y2 @ Ys3 ) )
=> ( ~ ( Less @ X3 @ Y2 )
=> ( ~ ( Less @ Y2 @ X3 )
=> ~ ( lexordp_eq_a @ Less @ Xs2 @ Ys3 ) ) ) ) ) ) ) ) ).
% ord.lexordp_eq.cases
thf(fact_75_ord_Olexordp__eq_Ocases,axiom,
! [Less: nat > nat > $o,A1: list_nat,A2: list_nat] :
( ( lexordp_eq_nat @ Less @ A1 @ A2 )
=> ( ( A1 != nil_nat )
=> ( ! [X3: nat] :
( ? [Xs2: list_nat] :
( A1
= ( cons_nat @ X3 @ Xs2 ) )
=> ! [Y2: nat] :
( ? [Ys3: list_nat] :
( A2
= ( cons_nat @ Y2 @ Ys3 ) )
=> ~ ( Less @ X3 @ Y2 ) ) )
=> ~ ! [X3: nat,Y2: nat,Xs2: list_nat] :
( ( A1
= ( cons_nat @ X3 @ Xs2 ) )
=> ! [Ys3: list_nat] :
( ( A2
= ( cons_nat @ Y2 @ Ys3 ) )
=> ( ~ ( Less @ X3 @ Y2 )
=> ( ~ ( Less @ Y2 @ X3 )
=> ~ ( lexordp_eq_nat @ Less @ Xs2 @ Ys3 ) ) ) ) ) ) ) ) ).
% ord.lexordp_eq.cases
thf(fact_76_listrelp_Osimps,axiom,
( listrelp_a_a
= ( ^ [R2: a > a > $o,A12: list_a,A22: list_a] :
( ( ( A12 = nil_a )
& ( A22 = nil_a ) )
| ? [X2: a,Y3: a,Xs3: list_a,Ys2: list_a] :
( ( A12
= ( cons_a @ X2 @ Xs3 ) )
& ( A22
= ( cons_a @ Y3 @ Ys2 ) )
& ( R2 @ X2 @ Y3 )
& ( listrelp_a_a @ R2 @ Xs3 @ Ys2 ) ) ) ) ) ).
% listrelp.simps
thf(fact_77_listrelp_Osimps,axiom,
( listrelp_a_nat
= ( ^ [R2: a > nat > $o,A12: list_a,A22: list_nat] :
( ( ( A12 = nil_a )
& ( A22 = nil_nat ) )
| ? [X2: a,Y3: nat,Xs3: list_a,Ys2: list_nat] :
( ( A12
= ( cons_a @ X2 @ Xs3 ) )
& ( A22
= ( cons_nat @ Y3 @ Ys2 ) )
& ( R2 @ X2 @ Y3 )
& ( listrelp_a_nat @ R2 @ Xs3 @ Ys2 ) ) ) ) ) ).
% listrelp.simps
thf(fact_78_listrelp_Osimps,axiom,
( listrelp_nat_a
= ( ^ [R2: nat > a > $o,A12: list_nat,A22: list_a] :
( ( ( A12 = nil_nat )
& ( A22 = nil_a ) )
| ? [X2: nat,Y3: a,Xs3: list_nat,Ys2: list_a] :
( ( A12
= ( cons_nat @ X2 @ Xs3 ) )
& ( A22
= ( cons_a @ Y3 @ Ys2 ) )
& ( R2 @ X2 @ Y3 )
& ( listrelp_nat_a @ R2 @ Xs3 @ Ys2 ) ) ) ) ) ).
% listrelp.simps
thf(fact_79_listrelp_Osimps,axiom,
( listrelp_nat_nat
= ( ^ [R2: nat > nat > $o,A12: list_nat,A22: list_nat] :
( ( ( A12 = nil_nat )
& ( A22 = nil_nat ) )
| ? [X2: nat,Y3: nat,Xs3: list_nat,Ys2: list_nat] :
( ( A12
= ( cons_nat @ X2 @ Xs3 ) )
& ( A22
= ( cons_nat @ Y3 @ Ys2 ) )
& ( R2 @ X2 @ Y3 )
& ( listrelp_nat_nat @ R2 @ Xs3 @ Ys2 ) ) ) ) ) ).
% listrelp.simps
thf(fact_80_listrelp_Ocases,axiom,
! [R: a > a > $o,A1: list_a,A2: list_a] :
( ( listrelp_a_a @ R @ A1 @ A2 )
=> ( ( ( A1 = nil_a )
=> ( A2 != nil_a ) )
=> ~ ! [X3: a,Y2: a,Xs2: list_a] :
( ( A1
= ( cons_a @ X3 @ Xs2 ) )
=> ! [Ys3: list_a] :
( ( A2
= ( cons_a @ Y2 @ Ys3 ) )
=> ( ( R @ X3 @ Y2 )
=> ~ ( listrelp_a_a @ R @ Xs2 @ Ys3 ) ) ) ) ) ) ).
% listrelp.cases
thf(fact_81_listrelp_Ocases,axiom,
! [R: a > nat > $o,A1: list_a,A2: list_nat] :
( ( listrelp_a_nat @ R @ A1 @ A2 )
=> ( ( ( A1 = nil_a )
=> ( A2 != nil_nat ) )
=> ~ ! [X3: a,Y2: nat,Xs2: list_a] :
( ( A1
= ( cons_a @ X3 @ Xs2 ) )
=> ! [Ys3: list_nat] :
( ( A2
= ( cons_nat @ Y2 @ Ys3 ) )
=> ( ( R @ X3 @ Y2 )
=> ~ ( listrelp_a_nat @ R @ Xs2 @ Ys3 ) ) ) ) ) ) ).
% listrelp.cases
thf(fact_82_listrelp_Ocases,axiom,
! [R: nat > a > $o,A1: list_nat,A2: list_a] :
( ( listrelp_nat_a @ R @ A1 @ A2 )
=> ( ( ( A1 = nil_nat )
=> ( A2 != nil_a ) )
=> ~ ! [X3: nat,Y2: a,Xs2: list_nat] :
( ( A1
= ( cons_nat @ X3 @ Xs2 ) )
=> ! [Ys3: list_a] :
( ( A2
= ( cons_a @ Y2 @ Ys3 ) )
=> ( ( R @ X3 @ Y2 )
=> ~ ( listrelp_nat_a @ R @ Xs2 @ Ys3 ) ) ) ) ) ) ).
% listrelp.cases
thf(fact_83_listrelp_Ocases,axiom,
! [R: nat > nat > $o,A1: list_nat,A2: list_nat] :
( ( listrelp_nat_nat @ R @ A1 @ A2 )
=> ( ( ( A1 = nil_nat )
=> ( A2 != nil_nat ) )
=> ~ ! [X3: nat,Y2: nat,Xs2: list_nat] :
( ( A1
= ( cons_nat @ X3 @ Xs2 ) )
=> ! [Ys3: list_nat] :
( ( A2
= ( cons_nat @ Y2 @ Ys3 ) )
=> ( ( R @ X3 @ Y2 )
=> ~ ( listrelp_nat_nat @ R @ Xs2 @ Ys3 ) ) ) ) ) ) ).
% listrelp.cases
thf(fact_84_map__tailrec__rev_Oelims,axiom,
! [X: a > a,Xa: list_a,Xb: list_a,Y: list_a] :
( ( ( map_tailrec_rev_a_a @ X @ Xa @ Xb )
= Y )
=> ( ( ( Xa = nil_a )
=> ( Y != Xb ) )
=> ~ ! [A4: a,As2: list_a] :
( ( Xa
= ( cons_a @ A4 @ As2 ) )
=> ( Y
!= ( map_tailrec_rev_a_a @ X @ As2 @ ( cons_a @ ( X @ A4 ) @ Xb ) ) ) ) ) ) ).
% map_tailrec_rev.elims
thf(fact_85_map__tailrec__rev_Oelims,axiom,
! [X: a > nat,Xa: list_a,Xb: list_nat,Y: list_nat] :
( ( ( map_ta8710832428924958105_a_nat @ X @ Xa @ Xb )
= Y )
=> ( ( ( Xa = nil_a )
=> ( Y != Xb ) )
=> ~ ! [A4: a,As2: list_a] :
( ( Xa
= ( cons_a @ A4 @ As2 ) )
=> ( Y
!= ( map_ta8710832428924958105_a_nat @ X @ As2 @ ( cons_nat @ ( X @ A4 ) @ Xb ) ) ) ) ) ) ).
% map_tailrec_rev.elims
thf(fact_86_map__tailrec__rev_Oelims,axiom,
! [X: nat > a,Xa: list_nat,Xb: list_a,Y: list_a] :
( ( ( map_ta3519391893248468727_nat_a @ X @ Xa @ Xb )
= Y )
=> ( ( ( Xa = nil_nat )
=> ( Y != Xb ) )
=> ~ ! [A4: nat,As2: list_nat] :
( ( Xa
= ( cons_nat @ A4 @ As2 ) )
=> ( Y
!= ( map_ta3519391893248468727_nat_a @ X @ As2 @ ( cons_a @ ( X @ A4 ) @ Xb ) ) ) ) ) ) ).
% map_tailrec_rev.elims
thf(fact_87_map__tailrec__rev_Oelims,axiom,
! [X: nat > nat,Xa: list_nat,Xb: list_nat,Y: list_nat] :
( ( ( map_ta7164188454487880599at_nat @ X @ Xa @ Xb )
= Y )
=> ( ( ( Xa = nil_nat )
=> ( Y != Xb ) )
=> ~ ! [A4: nat,As2: list_nat] :
( ( Xa
= ( cons_nat @ A4 @ As2 ) )
=> ( Y
!= ( map_ta7164188454487880599at_nat @ X @ As2 @ ( cons_nat @ ( X @ A4 ) @ Xb ) ) ) ) ) ) ).
% map_tailrec_rev.elims
thf(fact_88_list_Oset__intros_I2_J,axiom,
! [Y: list_nat,X22: list_list_nat,X21: list_nat] :
( ( member_list_nat2 @ Y @ ( set_list_nat2 @ X22 ) )
=> ( member_list_nat2 @ Y @ ( set_list_nat2 @ ( cons_list_nat @ X21 @ X22 ) ) ) ) ).
% list.set_intros(2)
thf(fact_89_list_Oset__intros_I2_J,axiom,
! [Y: list_a,X22: list_list_a,X21: list_a] :
( ( member_list_a2 @ Y @ ( set_list_a2 @ X22 ) )
=> ( member_list_a2 @ Y @ ( set_list_a2 @ ( cons_list_a @ X21 @ X22 ) ) ) ) ).
% list.set_intros(2)
thf(fact_90_list_Oset__intros_I2_J,axiom,
! [Y: a,X22: list_a,X21: a] :
( ( member_a2 @ Y @ ( set_a2 @ X22 ) )
=> ( member_a2 @ Y @ ( set_a2 @ ( cons_a @ X21 @ X22 ) ) ) ) ).
% list.set_intros(2)
thf(fact_91_list_Oset__intros_I2_J,axiom,
! [Y: nat,X22: list_nat,X21: nat] :
( ( member_nat2 @ Y @ ( set_nat2 @ X22 ) )
=> ( member_nat2 @ Y @ ( set_nat2 @ ( cons_nat @ X21 @ X22 ) ) ) ) ).
% list.set_intros(2)
thf(fact_92_list_Oset__intros_I1_J,axiom,
! [X21: list_nat,X22: list_list_nat] : ( member_list_nat2 @ X21 @ ( set_list_nat2 @ ( cons_list_nat @ X21 @ X22 ) ) ) ).
% list.set_intros(1)
thf(fact_93_list_Oset__intros_I1_J,axiom,
! [X21: list_a,X22: list_list_a] : ( member_list_a2 @ X21 @ ( set_list_a2 @ ( cons_list_a @ X21 @ X22 ) ) ) ).
% list.set_intros(1)
thf(fact_94_list_Oset__intros_I1_J,axiom,
! [X21: a,X22: list_a] : ( member_a2 @ X21 @ ( set_a2 @ ( cons_a @ X21 @ X22 ) ) ) ).
% list.set_intros(1)
thf(fact_95_list_Oset__intros_I1_J,axiom,
! [X21: nat,X22: list_nat] : ( member_nat2 @ X21 @ ( set_nat2 @ ( cons_nat @ X21 @ X22 ) ) ) ).
% list.set_intros(1)
thf(fact_96_list_Oset__cases,axiom,
! [E: list_nat,A: list_list_nat] :
( ( member_list_nat2 @ E @ ( set_list_nat2 @ A ) )
=> ( ! [Z2: list_list_nat] :
( A
!= ( cons_list_nat @ E @ Z2 ) )
=> ~ ! [Z1: list_nat,Z2: list_list_nat] :
( ( A
= ( cons_list_nat @ Z1 @ Z2 ) )
=> ~ ( member_list_nat2 @ E @ ( set_list_nat2 @ Z2 ) ) ) ) ) ).
% list.set_cases
thf(fact_97_list_Oset__cases,axiom,
! [E: list_a,A: list_list_a] :
( ( member_list_a2 @ E @ ( set_list_a2 @ A ) )
=> ( ! [Z2: list_list_a] :
( A
!= ( cons_list_a @ E @ Z2 ) )
=> ~ ! [Z1: list_a,Z2: list_list_a] :
( ( A
= ( cons_list_a @ Z1 @ Z2 ) )
=> ~ ( member_list_a2 @ E @ ( set_list_a2 @ Z2 ) ) ) ) ) ).
% list.set_cases
thf(fact_98_list_Oset__cases,axiom,
! [E: a,A: list_a] :
( ( member_a2 @ E @ ( set_a2 @ A ) )
=> ( ! [Z2: list_a] :
( A
!= ( cons_a @ E @ Z2 ) )
=> ~ ! [Z1: a,Z2: list_a] :
( ( A
= ( cons_a @ Z1 @ Z2 ) )
=> ~ ( member_a2 @ E @ ( set_a2 @ Z2 ) ) ) ) ) ).
% list.set_cases
thf(fact_99_list_Oset__cases,axiom,
! [E: nat,A: list_nat] :
( ( member_nat2 @ E @ ( set_nat2 @ A ) )
=> ( ! [Z2: list_nat] :
( A
!= ( cons_nat @ E @ Z2 ) )
=> ~ ! [Z1: nat,Z2: list_nat] :
( ( A
= ( cons_nat @ Z1 @ Z2 ) )
=> ~ ( member_nat2 @ E @ ( set_nat2 @ Z2 ) ) ) ) ) ).
% list.set_cases
thf(fact_100_set__ConsD,axiom,
! [Y: list_nat,X: list_nat,Xs: list_list_nat] :
( ( member_list_nat2 @ Y @ ( set_list_nat2 @ ( cons_list_nat @ X @ Xs ) ) )
=> ( ( Y = X )
| ( member_list_nat2 @ Y @ ( set_list_nat2 @ Xs ) ) ) ) ).
% set_ConsD
thf(fact_101_set__ConsD,axiom,
! [Y: list_a,X: list_a,Xs: list_list_a] :
( ( member_list_a2 @ Y @ ( set_list_a2 @ ( cons_list_a @ X @ Xs ) ) )
=> ( ( Y = X )
| ( member_list_a2 @ Y @ ( set_list_a2 @ Xs ) ) ) ) ).
% set_ConsD
thf(fact_102_set__ConsD,axiom,
! [Y: a,X: a,Xs: list_a] :
( ( member_a2 @ Y @ ( set_a2 @ ( cons_a @ X @ Xs ) ) )
=> ( ( Y = X )
| ( member_a2 @ Y @ ( set_a2 @ Xs ) ) ) ) ).
% set_ConsD
thf(fact_103_set__ConsD,axiom,
! [Y: nat,X: nat,Xs: list_nat] :
( ( member_nat2 @ Y @ ( set_nat2 @ ( cons_nat @ X @ Xs ) ) )
=> ( ( Y = X )
| ( member_nat2 @ Y @ ( set_nat2 @ Xs ) ) ) ) ).
% set_ConsD
thf(fact_104_list_Odistinct_I1_J,axiom,
! [X21: a,X22: list_a] :
( nil_a
!= ( cons_a @ X21 @ X22 ) ) ).
% list.distinct(1)
thf(fact_105_list_Odistinct_I1_J,axiom,
! [X21: nat,X22: list_nat] :
( nil_nat
!= ( cons_nat @ X21 @ X22 ) ) ).
% list.distinct(1)
thf(fact_106_list_OdiscI,axiom,
! [List: list_a,X21: a,X22: list_a] :
( ( List
= ( cons_a @ X21 @ X22 ) )
=> ( List != nil_a ) ) ).
% list.discI
thf(fact_107_list_OdiscI,axiom,
! [List: list_nat,X21: nat,X22: list_nat] :
( ( List
= ( cons_nat @ X21 @ X22 ) )
=> ( List != nil_nat ) ) ).
% list.discI
thf(fact_108_list_Oexhaust,axiom,
! [Y: list_a] :
( ( Y != nil_a )
=> ~ ! [X212: a,X222: list_a] :
( Y
!= ( cons_a @ X212 @ X222 ) ) ) ).
% list.exhaust
thf(fact_109_list_Oexhaust,axiom,
! [Y: list_nat] :
( ( Y != nil_nat )
=> ~ ! [X212: nat,X222: list_nat] :
( Y
!= ( cons_nat @ X212 @ X222 ) ) ) ).
% list.exhaust
thf(fact_110_min__list_Ocases,axiom,
! [X: list_nat] :
( ! [X3: nat,Xs2: list_nat] :
( X
!= ( cons_nat @ X3 @ Xs2 ) )
=> ( X = nil_nat ) ) ).
% min_list.cases
thf(fact_111_remdups__adj_Ocases,axiom,
! [X: list_a] :
( ( X != nil_a )
=> ( ! [X3: a] :
( X
!= ( cons_a @ X3 @ nil_a ) )
=> ~ ! [X3: a,Y2: a,Xs2: list_a] :
( X
!= ( cons_a @ X3 @ ( cons_a @ Y2 @ Xs2 ) ) ) ) ) ).
% remdups_adj.cases
thf(fact_112_remdups__adj_Ocases,axiom,
! [X: list_nat] :
( ( X != nil_nat )
=> ( ! [X3: nat] :
( X
!= ( cons_nat @ X3 @ nil_nat ) )
=> ~ ! [X3: nat,Y2: nat,Xs2: list_nat] :
( X
!= ( cons_nat @ X3 @ ( cons_nat @ Y2 @ Xs2 ) ) ) ) ) ).
% remdups_adj.cases
thf(fact_113_neq__Nil__conv,axiom,
! [Xs: list_a] :
( ( Xs != nil_a )
= ( ? [Y3: a,Ys2: list_a] :
( Xs
= ( cons_a @ Y3 @ Ys2 ) ) ) ) ).
% neq_Nil_conv
thf(fact_114_neq__Nil__conv,axiom,
! [Xs: list_nat] :
( ( Xs != nil_nat )
= ( ? [Y3: nat,Ys2: list_nat] :
( Xs
= ( cons_nat @ Y3 @ Ys2 ) ) ) ) ).
% neq_Nil_conv
thf(fact_115_list__induct2_H,axiom,
! [P: list_a > list_a > $o,Xs: list_a,Ys: list_a] :
( ( P @ nil_a @ nil_a )
=> ( ! [X3: a,Xs2: list_a] : ( P @ ( cons_a @ X3 @ Xs2 ) @ nil_a )
=> ( ! [Y2: a,Ys3: list_a] : ( P @ nil_a @ ( cons_a @ Y2 @ Ys3 ) )
=> ( ! [X3: a,Xs2: list_a,Y2: a,Ys3: list_a] :
( ( P @ Xs2 @ Ys3 )
=> ( P @ ( cons_a @ X3 @ Xs2 ) @ ( cons_a @ Y2 @ Ys3 ) ) )
=> ( P @ Xs @ Ys ) ) ) ) ) ).
% list_induct2'
thf(fact_116_list__induct2_H,axiom,
! [P: list_a > list_nat > $o,Xs: list_a,Ys: list_nat] :
( ( P @ nil_a @ nil_nat )
=> ( ! [X3: a,Xs2: list_a] : ( P @ ( cons_a @ X3 @ Xs2 ) @ nil_nat )
=> ( ! [Y2: nat,Ys3: list_nat] : ( P @ nil_a @ ( cons_nat @ Y2 @ Ys3 ) )
=> ( ! [X3: a,Xs2: list_a,Y2: nat,Ys3: list_nat] :
( ( P @ Xs2 @ Ys3 )
=> ( P @ ( cons_a @ X3 @ Xs2 ) @ ( cons_nat @ Y2 @ Ys3 ) ) )
=> ( P @ Xs @ Ys ) ) ) ) ) ).
% list_induct2'
thf(fact_117_list__induct2_H,axiom,
! [P: list_nat > list_a > $o,Xs: list_nat,Ys: list_a] :
( ( P @ nil_nat @ nil_a )
=> ( ! [X3: nat,Xs2: list_nat] : ( P @ ( cons_nat @ X3 @ Xs2 ) @ nil_a )
=> ( ! [Y2: a,Ys3: list_a] : ( P @ nil_nat @ ( cons_a @ Y2 @ Ys3 ) )
=> ( ! [X3: nat,Xs2: list_nat,Y2: a,Ys3: list_a] :
( ( P @ Xs2 @ Ys3 )
=> ( P @ ( cons_nat @ X3 @ Xs2 ) @ ( cons_a @ Y2 @ Ys3 ) ) )
=> ( P @ Xs @ Ys ) ) ) ) ) ).
% list_induct2'
thf(fact_118_list__induct2_H,axiom,
! [P: list_nat > list_nat > $o,Xs: list_nat,Ys: list_nat] :
( ( P @ nil_nat @ nil_nat )
=> ( ! [X3: nat,Xs2: list_nat] : ( P @ ( cons_nat @ X3 @ Xs2 ) @ nil_nat )
=> ( ! [Y2: nat,Ys3: list_nat] : ( P @ nil_nat @ ( cons_nat @ Y2 @ Ys3 ) )
=> ( ! [X3: nat,Xs2: list_nat,Y2: nat,Ys3: list_nat] :
( ( P @ Xs2 @ Ys3 )
=> ( P @ ( cons_nat @ X3 @ Xs2 ) @ ( cons_nat @ Y2 @ Ys3 ) ) )
=> ( P @ Xs @ Ys ) ) ) ) ) ).
% list_induct2'
thf(fact_119_list__nonempty__induct,axiom,
! [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_120_list__nonempty__induct,axiom,
! [Xs: list_nat,P: list_nat > $o] :
( ( Xs != nil_nat )
=> ( ! [X3: nat] : ( P @ ( cons_nat @ X3 @ nil_nat ) )
=> ( ! [X3: nat,Xs2: list_nat] :
( ( Xs2 != nil_nat )
=> ( ( P @ Xs2 )
=> ( P @ ( cons_nat @ X3 @ Xs2 ) ) ) )
=> ( P @ Xs ) ) ) ) ).
% list_nonempty_induct
thf(fact_121_empty__Shift,axiom,
! [Kl2: set_list_list_nat,K: list_nat] :
( ( member_list_list_nat @ nil_list_nat @ Kl2 )
=> ( ( member_list_nat2 @ K @ ( bNF_Gr3053708287304744325st_nat @ Kl2 @ nil_list_nat ) )
=> ( member_list_list_nat @ nil_list_nat @ ( bNF_Gr9051742241863529473st_nat @ Kl2 @ K ) ) ) ) ).
% empty_Shift
thf(fact_122_empty__Shift,axiom,
! [Kl2: set_list_list_a,K: list_a] :
( ( member_list_list_a @ nil_list_a @ Kl2 )
=> ( ( member_list_a2 @ K @ ( bNF_Gr4634511371912843295list_a @ Kl2 @ nil_list_a ) )
=> ( member_list_list_a @ nil_list_a @ ( bNF_Gr7042794125918077091list_a @ Kl2 @ K ) ) ) ) ).
% empty_Shift
thf(fact_123_empty__Shift,axiom,
! [Kl2: set_list_nat,K: nat] :
( ( member_list_nat2 @ nil_nat @ Kl2 )
=> ( ( member_nat2 @ K @ ( bNF_Gr6352880689984616693cc_nat @ Kl2 @ nil_nat ) )
=> ( member_list_nat2 @ nil_nat @ ( bNF_Gr1872714664788909425ft_nat @ Kl2 @ K ) ) ) ) ).
% empty_Shift
thf(fact_124_empty__Shift,axiom,
! [Kl2: set_list_a,K: a] :
( ( member_list_a2 @ nil_a @ Kl2 )
=> ( ( member_a2 @ K @ ( bNF_Greatest_Succ_a @ Kl2 @ nil_a ) )
=> ( member_list_a2 @ nil_a @ ( bNF_Greatest_Shift_a @ Kl2 @ K ) ) ) ) ).
% empty_Shift
thf(fact_125_list__ex__cong,axiom,
! [Xs: list_list_nat,Ys: list_list_nat,F: list_nat > $o,G: list_nat > $o] :
( ( Xs = Ys )
=> ( ! [X3: list_nat] :
( ( member_list_nat2 @ X3 @ ( set_list_nat2 @ Ys ) )
=> ( ( F @ X3 )
= ( G @ X3 ) ) )
=> ( ( list_ex_list_nat @ F @ Xs )
= ( list_ex_list_nat @ G @ Ys ) ) ) ) ).
% list_ex_cong
thf(fact_126_list__ex__cong,axiom,
! [Xs: list_list_a,Ys: list_list_a,F: list_a > $o,G: list_a > $o] :
( ( Xs = Ys )
=> ( ! [X3: list_a] :
( ( member_list_a2 @ X3 @ ( set_list_a2 @ Ys ) )
=> ( ( F @ X3 )
= ( G @ X3 ) ) )
=> ( ( list_ex_list_a @ F @ Xs )
= ( list_ex_list_a @ G @ Ys ) ) ) ) ).
% list_ex_cong
thf(fact_127_list__ex__cong,axiom,
! [Xs: list_a,Ys: list_a,F: a > $o,G: a > $o] :
( ( Xs = Ys )
=> ( ! [X3: a] :
( ( member_a2 @ X3 @ ( set_a2 @ Ys ) )
=> ( ( F @ X3 )
= ( G @ X3 ) ) )
=> ( ( list_ex_a @ F @ Xs )
= ( list_ex_a @ G @ Ys ) ) ) ) ).
% list_ex_cong
thf(fact_128_list__ex__cong,axiom,
! [Xs: list_nat,Ys: list_nat,F: nat > $o,G: nat > $o] :
( ( Xs = Ys )
=> ( ! [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ Ys ) )
=> ( ( F @ X3 )
= ( G @ X3 ) ) )
=> ( ( list_ex_nat @ F @ Xs )
= ( list_ex_nat @ G @ Ys ) ) ) ) ).
% list_ex_cong
thf(fact_129_ord_Olexordp_OCons,axiom,
! [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_130_ord_Olexordp_OCons,axiom,
! [Less: nat > nat > $o,X: nat,Y: nat,Xs: list_nat,Ys: list_nat] :
( ( Less @ X @ Y )
=> ( lexordp_nat @ Less @ ( cons_nat @ X @ Xs ) @ ( cons_nat @ Y @ Ys ) ) ) ).
% ord.lexordp.Cons
thf(fact_131_ord_Olexordp_OCons__eq,axiom,
! [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_132_ord_Olexordp_OCons__eq,axiom,
! [Less: nat > nat > $o,X: nat,Y: nat,Xs: list_nat,Ys: list_nat] :
( ~ ( Less @ X @ Y )
=> ( ~ ( Less @ Y @ X )
=> ( ( lexordp_nat @ Less @ Xs @ Ys )
=> ( lexordp_nat @ Less @ ( cons_nat @ X @ Xs ) @ ( cons_nat @ Y @ Ys ) ) ) ) ) ).
% ord.lexordp.Cons_eq
thf(fact_133_distinct__adj__ConsD,axiom,
! [X: a,Xs: list_a] :
( ( distinct_adj_a @ ( cons_a @ X @ Xs ) )
=> ( distinct_adj_a @ Xs ) ) ).
% distinct_adj_ConsD
thf(fact_134_distinct__adj__ConsD,axiom,
! [X: nat,Xs: list_nat] :
( ( distinct_adj_nat @ ( cons_nat @ X @ Xs ) )
=> ( distinct_adj_nat @ Xs ) ) ).
% distinct_adj_ConsD
thf(fact_135_ListMem__iff,axiom,
( listMem_list_nat
= ( ^ [X2: list_nat,Xs3: list_list_nat] : ( member_list_nat2 @ X2 @ ( set_list_nat2 @ Xs3 ) ) ) ) ).
% ListMem_iff
thf(fact_136_ListMem__iff,axiom,
( listMem_list_a
= ( ^ [X2: list_a,Xs3: list_list_a] : ( member_list_a2 @ X2 @ ( set_list_a2 @ Xs3 ) ) ) ) ).
% ListMem_iff
thf(fact_137_ListMem__iff,axiom,
( listMem_a
= ( ^ [X2: a,Xs3: list_a] : ( member_a2 @ X2 @ ( set_a2 @ Xs3 ) ) ) ) ).
% ListMem_iff
thf(fact_138_ListMem__iff,axiom,
( listMem_nat
= ( ^ [X2: nat,Xs3: list_nat] : ( member_nat2 @ X2 @ ( set_nat2 @ Xs3 ) ) ) ) ).
% ListMem_iff
thf(fact_139_ord_Olexordp__eq_OCons,axiom,
! [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_140_ord_Olexordp__eq_OCons,axiom,
! [Less: nat > nat > $o,X: nat,Y: nat,Xs: list_nat,Ys: list_nat] :
( ( Less @ X @ Y )
=> ( lexordp_eq_nat @ Less @ ( cons_nat @ X @ Xs ) @ ( cons_nat @ Y @ Ys ) ) ) ).
% ord.lexordp_eq.Cons
thf(fact_141_ord_Olexordp__eq_OCons__eq,axiom,
! [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_142_ord_Olexordp__eq_OCons__eq,axiom,
! [Less: nat > nat > $o,X: nat,Y: nat,Xs: list_nat,Ys: list_nat] :
( ~ ( Less @ X @ Y )
=> ( ~ ( Less @ Y @ X )
=> ( ( lexordp_eq_nat @ Less @ Xs @ Ys )
=> ( lexordp_eq_nat @ Less @ ( cons_nat @ X @ Xs ) @ ( cons_nat @ Y @ Ys ) ) ) ) ) ).
% ord.lexordp_eq.Cons_eq
thf(fact_143_is__empty__set,axiom,
! [Xs: list_a] :
( ( is_empty_a @ ( set_a2 @ Xs ) )
= ( null_a @ Xs ) ) ).
% is_empty_set
thf(fact_144_is__empty__set,axiom,
! [Xs: list_nat] :
( ( is_empty_nat @ ( set_nat2 @ Xs ) )
= ( null_nat @ Xs ) ) ).
% is_empty_set
thf(fact_145_the__elem__set,axiom,
! [X: a] :
( ( the_elem_a @ ( set_a2 @ ( cons_a @ X @ nil_a ) ) )
= X ) ).
% the_elem_set
thf(fact_146_the__elem__set,axiom,
! [X: nat] :
( ( the_elem_nat @ ( set_nat2 @ ( cons_nat @ X @ nil_nat ) ) )
= X ) ).
% the_elem_set
thf(fact_147_not__in__set__insert,axiom,
! [X: list_nat,Xs: list_list_nat] :
( ~ ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
=> ( ( insert_list_nat @ X @ Xs )
= ( cons_list_nat @ X @ Xs ) ) ) ).
% not_in_set_insert
thf(fact_148_not__in__set__insert,axiom,
! [X: list_a,Xs: list_list_a] :
( ~ ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
=> ( ( insert_list_a @ X @ Xs )
= ( cons_list_a @ X @ Xs ) ) ) ).
% not_in_set_insert
thf(fact_149_not__in__set__insert,axiom,
! [X: a,Xs: list_a] :
( ~ ( member_a2 @ X @ ( set_a2 @ Xs ) )
=> ( ( insert_a @ X @ Xs )
= ( cons_a @ X @ Xs ) ) ) ).
% not_in_set_insert
thf(fact_150_not__in__set__insert,axiom,
! [X: nat,Xs: list_nat] :
( ~ ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ( ( insert_nat @ X @ Xs )
= ( cons_nat @ X @ Xs ) ) ) ).
% not_in_set_insert
thf(fact_151_insert__Nil,axiom,
! [X: a] :
( ( insert_a @ X @ nil_a )
= ( cons_a @ X @ nil_a ) ) ).
% insert_Nil
thf(fact_152_insert__Nil,axiom,
! [X: nat] :
( ( insert_nat @ X @ nil_nat )
= ( cons_nat @ X @ nil_nat ) ) ).
% insert_Nil
thf(fact_153_list__ex1__simps_I1_J,axiom,
! [P: nat > $o] :
~ ( list_ex1_nat @ P @ nil_nat ) ).
% list_ex1_simps(1)
thf(fact_154_List_Oinsert__def,axiom,
( insert_list_nat
= ( ^ [X2: list_nat,Xs3: list_list_nat] : ( if_list_list_nat @ ( member_list_nat2 @ X2 @ ( set_list_nat2 @ Xs3 ) ) @ Xs3 @ ( cons_list_nat @ X2 @ Xs3 ) ) ) ) ).
% List.insert_def
thf(fact_155_List_Oinsert__def,axiom,
( insert_list_a
= ( ^ [X2: list_a,Xs3: list_list_a] : ( if_list_list_a @ ( member_list_a2 @ X2 @ ( set_list_a2 @ Xs3 ) ) @ Xs3 @ ( cons_list_a @ X2 @ Xs3 ) ) ) ) ).
% List.insert_def
thf(fact_156_List_Oinsert__def,axiom,
( insert_a
= ( ^ [X2: a,Xs3: list_a] : ( if_list_a @ ( member_a2 @ X2 @ ( set_a2 @ Xs3 ) ) @ Xs3 @ ( cons_a @ X2 @ Xs3 ) ) ) ) ).
% List.insert_def
thf(fact_157_List_Oinsert__def,axiom,
( insert_nat
= ( ^ [X2: nat,Xs3: list_nat] : ( if_list_nat @ ( member_nat2 @ X2 @ ( set_nat2 @ Xs3 ) ) @ Xs3 @ ( cons_nat @ X2 @ Xs3 ) ) ) ) ).
% List.insert_def
thf(fact_158_bind__simps_I1_J,axiom,
! [F: nat > list_nat] :
( ( bind_nat_nat @ nil_nat @ F )
= nil_nat ) ).
% bind_simps(1)
thf(fact_159_SuccD,axiom,
! [K: list_nat,Kl2: set_list_list_nat,Kl: list_list_nat] :
( ( member_list_nat2 @ K @ ( bNF_Gr3053708287304744325st_nat @ Kl2 @ Kl ) )
=> ( member_list_list_nat @ ( append_list_nat @ Kl @ ( cons_list_nat @ K @ nil_list_nat ) ) @ Kl2 ) ) ).
% SuccD
thf(fact_160_SuccD,axiom,
! [K: list_a,Kl2: set_list_list_a,Kl: list_list_a] :
( ( member_list_a2 @ K @ ( bNF_Gr4634511371912843295list_a @ Kl2 @ Kl ) )
=> ( member_list_list_a @ ( append_list_a @ Kl @ ( cons_list_a @ K @ nil_list_a ) ) @ Kl2 ) ) ).
% SuccD
thf(fact_161_SuccD,axiom,
! [K: a,Kl2: set_list_a,Kl: list_a] :
( ( member_a2 @ K @ ( bNF_Greatest_Succ_a @ Kl2 @ Kl ) )
=> ( member_list_a2 @ ( append_a @ Kl @ ( cons_a @ K @ nil_a ) ) @ Kl2 ) ) ).
% SuccD
thf(fact_162_SuccD,axiom,
! [K: nat,Kl2: set_list_nat,Kl: list_nat] :
( ( member_nat2 @ K @ ( bNF_Gr6352880689984616693cc_nat @ Kl2 @ Kl ) )
=> ( member_list_nat2 @ ( append_nat @ Kl @ ( cons_nat @ K @ nil_nat ) ) @ Kl2 ) ) ).
% SuccD
thf(fact_163_SuccI,axiom,
! [Kl: list_list_nat,K: list_nat,Kl2: set_list_list_nat] :
( ( member_list_list_nat @ ( append_list_nat @ Kl @ ( cons_list_nat @ K @ nil_list_nat ) ) @ Kl2 )
=> ( member_list_nat2 @ K @ ( bNF_Gr3053708287304744325st_nat @ Kl2 @ Kl ) ) ) ).
% SuccI
thf(fact_164_SuccI,axiom,
! [Kl: list_list_a,K: list_a,Kl2: set_list_list_a] :
( ( member_list_list_a @ ( append_list_a @ Kl @ ( cons_list_a @ K @ nil_list_a ) ) @ Kl2 )
=> ( member_list_a2 @ K @ ( bNF_Gr4634511371912843295list_a @ Kl2 @ Kl ) ) ) ).
% SuccI
thf(fact_165_SuccI,axiom,
! [Kl: list_a,K: a,Kl2: set_list_a] :
( ( member_list_a2 @ ( append_a @ Kl @ ( cons_a @ K @ nil_a ) ) @ Kl2 )
=> ( member_a2 @ K @ ( bNF_Greatest_Succ_a @ Kl2 @ Kl ) ) ) ).
% SuccI
thf(fact_166_SuccI,axiom,
! [Kl: list_nat,K: nat,Kl2: set_list_nat] :
( ( member_list_nat2 @ ( append_nat @ Kl @ ( cons_nat @ K @ nil_nat ) ) @ Kl2 )
=> ( member_nat2 @ K @ ( bNF_Gr6352880689984616693cc_nat @ Kl2 @ Kl ) ) ) ).
% SuccI
thf(fact_167_same__append__eq,axiom,
! [Xs: list_nat,Ys: list_nat,Zs: list_nat] :
( ( ( append_nat @ Xs @ Ys )
= ( append_nat @ Xs @ Zs ) )
= ( Ys = Zs ) ) ).
% same_append_eq
thf(fact_168_append__same__eq,axiom,
! [Ys: list_nat,Xs: list_nat,Zs: list_nat] :
( ( ( append_nat @ Ys @ Xs )
= ( append_nat @ Zs @ Xs ) )
= ( Ys = Zs ) ) ).
% append_same_eq
thf(fact_169_append__assoc,axiom,
! [Xs: list_nat,Ys: list_nat,Zs: list_nat] :
( ( append_nat @ ( append_nat @ Xs @ Ys ) @ Zs )
= ( append_nat @ Xs @ ( append_nat @ Ys @ Zs ) ) ) ).
% append_assoc
thf(fact_170_append_Oassoc,axiom,
! [A: list_nat,B: list_nat,C: list_nat] :
( ( append_nat @ ( append_nat @ A @ B ) @ C )
= ( append_nat @ A @ ( append_nat @ B @ C ) ) ) ).
% append.assoc
thf(fact_171_append__is__Nil__conv,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( ( append_nat @ Xs @ Ys )
= nil_nat )
= ( ( Xs = nil_nat )
& ( Ys = nil_nat ) ) ) ).
% append_is_Nil_conv
thf(fact_172_Nil__is__append__conv,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( nil_nat
= ( append_nat @ Xs @ Ys ) )
= ( ( Xs = nil_nat )
& ( Ys = nil_nat ) ) ) ).
% Nil_is_append_conv
thf(fact_173_self__append__conv2,axiom,
! [Y: list_nat,Xs: list_nat] :
( ( Y
= ( append_nat @ Xs @ Y ) )
= ( Xs = nil_nat ) ) ).
% self_append_conv2
thf(fact_174_append__self__conv2,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( ( append_nat @ Xs @ Ys )
= Ys )
= ( Xs = nil_nat ) ) ).
% append_self_conv2
thf(fact_175_self__append__conv,axiom,
! [Y: list_nat,Ys: list_nat] :
( ( Y
= ( append_nat @ Y @ Ys ) )
= ( Ys = nil_nat ) ) ).
% self_append_conv
thf(fact_176_append__self__conv,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( ( append_nat @ Xs @ Ys )
= Xs )
= ( Ys = nil_nat ) ) ).
% append_self_conv
thf(fact_177_append__Nil2,axiom,
! [Xs: list_nat] :
( ( append_nat @ Xs @ nil_nat )
= Xs ) ).
% append_Nil2
thf(fact_178_append_Oright__neutral,axiom,
! [A: list_nat] :
( ( append_nat @ A @ nil_nat )
= A ) ).
% append.right_neutral
thf(fact_179_list__ex__append,axiom,
! [P: nat > $o,Xs: list_nat,Ys: list_nat] :
( ( list_ex_nat @ P @ ( append_nat @ Xs @ Ys ) )
= ( ( list_ex_nat @ P @ Xs )
| ( list_ex_nat @ P @ Ys ) ) ) ).
% list_ex_append
thf(fact_180_list__ex__append,axiom,
! [P: a > $o,Xs: list_a,Ys: list_a] :
( ( list_ex_a @ P @ ( append_a @ Xs @ Ys ) )
= ( ( list_ex_a @ P @ Xs )
| ( list_ex_a @ P @ Ys ) ) ) ).
% list_ex_append
thf(fact_181_in__set__insert,axiom,
! [X: list_nat,Xs: list_list_nat] :
( ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
=> ( ( insert_list_nat @ X @ Xs )
= Xs ) ) ).
% in_set_insert
thf(fact_182_in__set__insert,axiom,
! [X: list_a,Xs: list_list_a] :
( ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
=> ( ( insert_list_a @ X @ Xs )
= Xs ) ) ).
% in_set_insert
thf(fact_183_in__set__insert,axiom,
! [X: nat,Xs: list_nat] :
( ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ( ( insert_nat @ X @ Xs )
= Xs ) ) ).
% in_set_insert
thf(fact_184_append1__eq__conv,axiom,
! [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_185_append1__eq__conv,axiom,
! [Xs: list_nat,X: nat,Ys: list_nat,Y: nat] :
( ( ( append_nat @ Xs @ ( cons_nat @ X @ nil_nat ) )
= ( append_nat @ Ys @ ( cons_nat @ Y @ nil_nat ) ) )
= ( ( Xs = Ys )
& ( X = Y ) ) ) ).
% append1_eq_conv
thf(fact_186_bind__simps_I2_J,axiom,
! [X: a,Xs: list_a,F: a > list_nat] :
( ( bind_a_nat @ ( cons_a @ X @ Xs ) @ F )
= ( append_nat @ ( F @ X ) @ ( bind_a_nat @ Xs @ F ) ) ) ).
% bind_simps(2)
thf(fact_187_bind__simps_I2_J,axiom,
! [X: nat,Xs: list_nat,F: nat > list_nat] :
( ( bind_nat_nat @ ( cons_nat @ X @ Xs ) @ F )
= ( append_nat @ ( F @ X ) @ ( bind_nat_nat @ Xs @ F ) ) ) ).
% bind_simps(2)
thf(fact_188_append__eq__append__conv2,axiom,
! [Xs: list_nat,Ys: list_nat,Zs: list_nat,Ts: list_nat] :
( ( ( append_nat @ Xs @ Ys )
= ( append_nat @ Zs @ Ts ) )
= ( ? [Us: list_nat] :
( ( ( Xs
= ( append_nat @ Zs @ Us ) )
& ( ( append_nat @ Us @ Ys )
= Ts ) )
| ( ( ( append_nat @ Xs @ Us )
= Zs )
& ( Ys
= ( append_nat @ Us @ Ts ) ) ) ) ) ) ).
% append_eq_append_conv2
thf(fact_189_append__eq__appendI,axiom,
! [Xs: list_nat,Xs1: list_nat,Zs: list_nat,Ys: list_nat,Us2: list_nat] :
( ( ( append_nat @ Xs @ Xs1 )
= Zs )
=> ( ( Ys
= ( append_nat @ Xs1 @ Us2 ) )
=> ( ( append_nat @ Xs @ Ys )
= ( append_nat @ Zs @ Us2 ) ) ) ) ).
% append_eq_appendI
thf(fact_190_Cons__eq__appendI,axiom,
! [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_191_Cons__eq__appendI,axiom,
! [X: nat,Xs1: list_nat,Ys: list_nat,Xs: list_nat,Zs: list_nat] :
( ( ( cons_nat @ X @ Xs1 )
= Ys )
=> ( ( Xs
= ( append_nat @ Xs1 @ Zs ) )
=> ( ( cons_nat @ X @ Xs )
= ( append_nat @ Ys @ Zs ) ) ) ) ).
% Cons_eq_appendI
thf(fact_192_append__Cons,axiom,
! [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_193_append__Cons,axiom,
! [X: nat,Xs: list_nat,Ys: list_nat] :
( ( append_nat @ ( cons_nat @ X @ Xs ) @ Ys )
= ( cons_nat @ X @ ( append_nat @ Xs @ Ys ) ) ) ).
% append_Cons
thf(fact_194_eq__Nil__appendI,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( Xs = Ys )
=> ( Xs
= ( append_nat @ nil_nat @ Ys ) ) ) ).
% eq_Nil_appendI
thf(fact_195_append_Oleft__neutral,axiom,
! [A: list_nat] :
( ( append_nat @ nil_nat @ A )
= A ) ).
% append.left_neutral
thf(fact_196_append__Nil,axiom,
! [Ys: list_nat] :
( ( append_nat @ nil_nat @ Ys )
= Ys ) ).
% append_Nil
thf(fact_197_ord_Olexordp__append__leftI,axiom,
! [Less: nat > nat > $o,Us2: list_nat,Vs: list_nat,Xs: list_nat] :
( ( lexordp_nat @ Less @ Us2 @ Vs )
=> ( lexordp_nat @ Less @ ( append_nat @ Xs @ Us2 ) @ ( append_nat @ Xs @ Vs ) ) ) ).
% ord.lexordp_append_leftI
thf(fact_198_ord_Olexordp__append__leftD,axiom,
! [Less: nat > nat > $o,Xs: list_nat,Us2: list_nat,Vs: list_nat] :
( ( lexordp_nat @ Less @ ( append_nat @ Xs @ Us2 ) @ ( append_nat @ Xs @ Vs ) )
=> ( ! [A4: nat] :
~ ( Less @ A4 @ A4 )
=> ( lexordp_nat @ Less @ Us2 @ Vs ) ) ) ).
% ord.lexordp_append_leftD
thf(fact_199_distinct__adj__appendD2,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( distinct_adj_nat @ ( append_nat @ Xs @ Ys ) )
=> ( distinct_adj_nat @ Ys ) ) ).
% distinct_adj_appendD2
thf(fact_200_distinct__adj__appendD1,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( distinct_adj_nat @ ( append_nat @ Xs @ Ys ) )
=> ( distinct_adj_nat @ Xs ) ) ).
% distinct_adj_appendD1
thf(fact_201_ord_Olexordp__eq__pref,axiom,
! [Less: nat > nat > $o,U: list_nat,V: list_nat] : ( lexordp_eq_nat @ Less @ U @ ( append_nat @ U @ V ) ) ).
% ord.lexordp_eq_pref
thf(fact_202_rev__induct,axiom,
! [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_203_rev__induct,axiom,
! [P: list_nat > $o,Xs: list_nat] :
( ( P @ nil_nat )
=> ( ! [X3: nat,Xs2: list_nat] :
( ( P @ Xs2 )
=> ( P @ ( append_nat @ Xs2 @ ( cons_nat @ X3 @ nil_nat ) ) ) )
=> ( P @ Xs ) ) ) ).
% rev_induct
thf(fact_204_rev__exhaust,axiom,
! [Xs: list_a] :
( ( Xs != nil_a )
=> ~ ! [Ys3: list_a,Y2: a] :
( Xs
!= ( append_a @ Ys3 @ ( cons_a @ Y2 @ nil_a ) ) ) ) ).
% rev_exhaust
thf(fact_205_rev__exhaust,axiom,
! [Xs: list_nat] :
( ( Xs != nil_nat )
=> ~ ! [Ys3: list_nat,Y2: nat] :
( Xs
!= ( append_nat @ Ys3 @ ( cons_nat @ Y2 @ nil_nat ) ) ) ) ).
% rev_exhaust
thf(fact_206_Cons__eq__append__conv,axiom,
! [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 ) )
| ? [Ys4: list_a] :
( ( ( cons_a @ X @ Ys4 )
= Ys )
& ( Xs
= ( append_a @ Ys4 @ Zs ) ) ) ) ) ).
% Cons_eq_append_conv
thf(fact_207_Cons__eq__append__conv,axiom,
! [X: nat,Xs: list_nat,Ys: list_nat,Zs: list_nat] :
( ( ( cons_nat @ X @ Xs )
= ( append_nat @ Ys @ Zs ) )
= ( ( ( Ys = nil_nat )
& ( ( cons_nat @ X @ Xs )
= Zs ) )
| ? [Ys4: list_nat] :
( ( ( cons_nat @ X @ Ys4 )
= Ys )
& ( Xs
= ( append_nat @ Ys4 @ Zs ) ) ) ) ) ).
% Cons_eq_append_conv
thf(fact_208_append__eq__Cons__conv,axiom,
! [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 ) ) )
| ? [Ys4: list_a] :
( ( Ys
= ( cons_a @ X @ Ys4 ) )
& ( ( append_a @ Ys4 @ Zs )
= Xs ) ) ) ) ).
% append_eq_Cons_conv
thf(fact_209_append__eq__Cons__conv,axiom,
! [Ys: list_nat,Zs: list_nat,X: nat,Xs: list_nat] :
( ( ( append_nat @ Ys @ Zs )
= ( cons_nat @ X @ Xs ) )
= ( ( ( Ys = nil_nat )
& ( Zs
= ( cons_nat @ X @ Xs ) ) )
| ? [Ys4: list_nat] :
( ( Ys
= ( cons_nat @ X @ Ys4 ) )
& ( ( append_nat @ Ys4 @ Zs )
= Xs ) ) ) ) ).
% append_eq_Cons_conv
thf(fact_210_rev__nonempty__induct,axiom,
! [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_211_rev__nonempty__induct,axiom,
! [Xs: list_nat,P: list_nat > $o] :
( ( Xs != nil_nat )
=> ( ! [X3: nat] : ( P @ ( cons_nat @ X3 @ nil_nat ) )
=> ( ! [X3: nat,Xs2: list_nat] :
( ( Xs2 != nil_nat )
=> ( ( P @ Xs2 )
=> ( P @ ( append_nat @ Xs2 @ ( cons_nat @ X3 @ nil_nat ) ) ) ) )
=> ( P @ Xs ) ) ) ) ).
% rev_nonempty_induct
thf(fact_212_split__list,axiom,
! [X: list_nat,Xs: list_list_nat] :
( ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
=> ? [Ys3: list_list_nat,Zs2: list_list_nat] :
( Xs
= ( append_list_nat @ Ys3 @ ( cons_list_nat @ X @ Zs2 ) ) ) ) ).
% split_list
thf(fact_213_split__list,axiom,
! [X: list_a,Xs: list_list_a] :
( ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
=> ? [Ys3: list_list_a,Zs2: list_list_a] :
( Xs
= ( append_list_a @ Ys3 @ ( cons_list_a @ X @ Zs2 ) ) ) ) ).
% split_list
thf(fact_214_split__list,axiom,
! [X: a,Xs: list_a] :
( ( member_a2 @ X @ ( set_a2 @ Xs ) )
=> ? [Ys3: list_a,Zs2: list_a] :
( Xs
= ( append_a @ Ys3 @ ( cons_a @ X @ Zs2 ) ) ) ) ).
% split_list
thf(fact_215_split__list,axiom,
! [X: nat,Xs: list_nat] :
( ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ? [Ys3: list_nat,Zs2: list_nat] :
( Xs
= ( append_nat @ Ys3 @ ( cons_nat @ X @ Zs2 ) ) ) ) ).
% split_list
thf(fact_216_split__list__last,axiom,
! [X: list_nat,Xs: list_list_nat] :
( ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
=> ? [Ys3: list_list_nat,Zs2: list_list_nat] :
( ( Xs
= ( append_list_nat @ Ys3 @ ( cons_list_nat @ X @ Zs2 ) ) )
& ~ ( member_list_nat2 @ X @ ( set_list_nat2 @ Zs2 ) ) ) ) ).
% split_list_last
thf(fact_217_split__list__last,axiom,
! [X: list_a,Xs: list_list_a] :
( ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
=> ? [Ys3: list_list_a,Zs2: list_list_a] :
( ( Xs
= ( append_list_a @ Ys3 @ ( cons_list_a @ X @ Zs2 ) ) )
& ~ ( member_list_a2 @ X @ ( set_list_a2 @ Zs2 ) ) ) ) ).
% split_list_last
thf(fact_218_split__list__last,axiom,
! [X: a,Xs: list_a] :
( ( member_a2 @ X @ ( set_a2 @ Xs ) )
=> ? [Ys3: list_a,Zs2: list_a] :
( ( Xs
= ( append_a @ Ys3 @ ( cons_a @ X @ Zs2 ) ) )
& ~ ( member_a2 @ X @ ( set_a2 @ Zs2 ) ) ) ) ).
% split_list_last
thf(fact_219_split__list__last,axiom,
! [X: nat,Xs: list_nat] :
( ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ? [Ys3: list_nat,Zs2: list_nat] :
( ( Xs
= ( append_nat @ Ys3 @ ( cons_nat @ X @ Zs2 ) ) )
& ~ ( member_nat2 @ X @ ( set_nat2 @ Zs2 ) ) ) ) ).
% split_list_last
thf(fact_220_split__list__prop,axiom,
! [Xs: list_a,P: a > $o] :
( ? [X4: a] :
( ( member_a2 @ X4 @ ( set_a2 @ Xs ) )
& ( P @ X4 ) )
=> ? [Ys3: list_a,X3: a] :
( ? [Zs2: list_a] :
( Xs
= ( append_a @ Ys3 @ ( cons_a @ X3 @ Zs2 ) ) )
& ( P @ X3 ) ) ) ).
% split_list_prop
thf(fact_221_split__list__prop,axiom,
! [Xs: list_nat,P: nat > $o] :
( ? [X4: nat] :
( ( member_nat2 @ X4 @ ( set_nat2 @ Xs ) )
& ( P @ X4 ) )
=> ? [Ys3: list_nat,X3: nat] :
( ? [Zs2: list_nat] :
( Xs
= ( append_nat @ Ys3 @ ( cons_nat @ X3 @ Zs2 ) ) )
& ( P @ X3 ) ) ) ).
% split_list_prop
thf(fact_222_split__list__first,axiom,
! [X: list_nat,Xs: list_list_nat] :
( ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
=> ? [Ys3: list_list_nat,Zs2: list_list_nat] :
( ( Xs
= ( append_list_nat @ Ys3 @ ( cons_list_nat @ X @ Zs2 ) ) )
& ~ ( member_list_nat2 @ X @ ( set_list_nat2 @ Ys3 ) ) ) ) ).
% split_list_first
thf(fact_223_split__list__first,axiom,
! [X: list_a,Xs: list_list_a] :
( ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
=> ? [Ys3: list_list_a,Zs2: list_list_a] :
( ( Xs
= ( append_list_a @ Ys3 @ ( cons_list_a @ X @ Zs2 ) ) )
& ~ ( member_list_a2 @ X @ ( set_list_a2 @ Ys3 ) ) ) ) ).
% split_list_first
thf(fact_224_split__list__first,axiom,
! [X: a,Xs: list_a] :
( ( member_a2 @ X @ ( set_a2 @ Xs ) )
=> ? [Ys3: list_a,Zs2: list_a] :
( ( Xs
= ( append_a @ Ys3 @ ( cons_a @ X @ Zs2 ) ) )
& ~ ( member_a2 @ X @ ( set_a2 @ Ys3 ) ) ) ) ).
% split_list_first
thf(fact_225_split__list__first,axiom,
! [X: nat,Xs: list_nat] :
( ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ? [Ys3: list_nat,Zs2: list_nat] :
( ( Xs
= ( append_nat @ Ys3 @ ( cons_nat @ X @ Zs2 ) ) )
& ~ ( member_nat2 @ X @ ( set_nat2 @ Ys3 ) ) ) ) ).
% split_list_first
thf(fact_226_split__list__propE,axiom,
! [Xs: list_a,P: a > $o] :
( ? [X4: a] :
( ( member_a2 @ X4 @ ( set_a2 @ Xs ) )
& ( P @ X4 ) )
=> ~ ! [Ys3: list_a,X3: a] :
( ? [Zs2: list_a] :
( Xs
= ( append_a @ Ys3 @ ( cons_a @ X3 @ Zs2 ) ) )
=> ~ ( P @ X3 ) ) ) ).
% split_list_propE
thf(fact_227_split__list__propE,axiom,
! [Xs: list_nat,P: nat > $o] :
( ? [X4: nat] :
( ( member_nat2 @ X4 @ ( set_nat2 @ Xs ) )
& ( P @ X4 ) )
=> ~ ! [Ys3: list_nat,X3: nat] :
( ? [Zs2: list_nat] :
( Xs
= ( append_nat @ Ys3 @ ( cons_nat @ X3 @ Zs2 ) ) )
=> ~ ( P @ X3 ) ) ) ).
% split_list_propE
thf(fact_228_append__Cons__eq__iff,axiom,
! [X: list_nat,Xs: list_list_nat,Ys: list_list_nat,Xs4: list_list_nat,Ys5: list_list_nat] :
( ~ ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
=> ( ~ ( member_list_nat2 @ X @ ( set_list_nat2 @ Ys ) )
=> ( ( ( append_list_nat @ Xs @ ( cons_list_nat @ X @ Ys ) )
= ( append_list_nat @ Xs4 @ ( cons_list_nat @ X @ Ys5 ) ) )
= ( ( Xs = Xs4 )
& ( Ys = Ys5 ) ) ) ) ) ).
% append_Cons_eq_iff
thf(fact_229_append__Cons__eq__iff,axiom,
! [X: list_a,Xs: list_list_a,Ys: list_list_a,Xs4: list_list_a,Ys5: list_list_a] :
( ~ ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
=> ( ~ ( member_list_a2 @ X @ ( set_list_a2 @ Ys ) )
=> ( ( ( append_list_a @ Xs @ ( cons_list_a @ X @ Ys ) )
= ( append_list_a @ Xs4 @ ( cons_list_a @ X @ Ys5 ) ) )
= ( ( Xs = Xs4 )
& ( Ys = Ys5 ) ) ) ) ) ).
% append_Cons_eq_iff
thf(fact_230_append__Cons__eq__iff,axiom,
! [X: a,Xs: list_a,Ys: list_a,Xs4: list_a,Ys5: list_a] :
( ~ ( member_a2 @ X @ ( set_a2 @ Xs ) )
=> ( ~ ( member_a2 @ X @ ( set_a2 @ Ys ) )
=> ( ( ( append_a @ Xs @ ( cons_a @ X @ Ys ) )
= ( append_a @ Xs4 @ ( cons_a @ X @ Ys5 ) ) )
= ( ( Xs = Xs4 )
& ( Ys = Ys5 ) ) ) ) ) ).
% append_Cons_eq_iff
thf(fact_231_append__Cons__eq__iff,axiom,
! [X: nat,Xs: list_nat,Ys: list_nat,Xs4: list_nat,Ys5: list_nat] :
( ~ ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ( ~ ( member_nat2 @ X @ ( set_nat2 @ Ys ) )
=> ( ( ( append_nat @ Xs @ ( cons_nat @ X @ Ys ) )
= ( append_nat @ Xs4 @ ( cons_nat @ X @ Ys5 ) ) )
= ( ( Xs = Xs4 )
& ( Ys = Ys5 ) ) ) ) ) ).
% append_Cons_eq_iff
thf(fact_232_in__set__conv__decomp,axiom,
! [X: list_nat,Xs: list_list_nat] :
( ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
= ( ? [Ys2: list_list_nat,Zs3: list_list_nat] :
( Xs
= ( append_list_nat @ Ys2 @ ( cons_list_nat @ X @ Zs3 ) ) ) ) ) ).
% in_set_conv_decomp
thf(fact_233_in__set__conv__decomp,axiom,
! [X: list_a,Xs: list_list_a] :
( ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
= ( ? [Ys2: list_list_a,Zs3: list_list_a] :
( Xs
= ( append_list_a @ Ys2 @ ( cons_list_a @ X @ Zs3 ) ) ) ) ) ).
% in_set_conv_decomp
thf(fact_234_in__set__conv__decomp,axiom,
! [X: a,Xs: list_a] :
( ( member_a2 @ X @ ( set_a2 @ Xs ) )
= ( ? [Ys2: list_a,Zs3: list_a] :
( Xs
= ( append_a @ Ys2 @ ( cons_a @ X @ Zs3 ) ) ) ) ) ).
% in_set_conv_decomp
thf(fact_235_in__set__conv__decomp,axiom,
! [X: nat,Xs: list_nat] :
( ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
= ( ? [Ys2: list_nat,Zs3: list_nat] :
( Xs
= ( append_nat @ Ys2 @ ( cons_nat @ X @ Zs3 ) ) ) ) ) ).
% in_set_conv_decomp
thf(fact_236_split__list__last__prop,axiom,
! [Xs: list_a,P: a > $o] :
( ? [X4: a] :
( ( member_a2 @ X4 @ ( set_a2 @ Xs ) )
& ( P @ X4 ) )
=> ? [Ys3: list_a,X3: a,Zs2: list_a] :
( ( Xs
= ( append_a @ Ys3 @ ( cons_a @ X3 @ Zs2 ) ) )
& ( P @ X3 )
& ! [Xa2: a] :
( ( member_a2 @ Xa2 @ ( set_a2 @ Zs2 ) )
=> ~ ( P @ Xa2 ) ) ) ) ).
% split_list_last_prop
thf(fact_237_split__list__last__prop,axiom,
! [Xs: list_nat,P: nat > $o] :
( ? [X4: nat] :
( ( member_nat2 @ X4 @ ( set_nat2 @ Xs ) )
& ( P @ X4 ) )
=> ? [Ys3: list_nat,X3: nat,Zs2: list_nat] :
( ( Xs
= ( append_nat @ Ys3 @ ( cons_nat @ X3 @ Zs2 ) ) )
& ( P @ X3 )
& ! [Xa2: nat] :
( ( member_nat2 @ Xa2 @ ( set_nat2 @ Zs2 ) )
=> ~ ( P @ Xa2 ) ) ) ) ).
% split_list_last_prop
thf(fact_238_split__list__first__prop,axiom,
! [Xs: list_a,P: a > $o] :
( ? [X4: a] :
( ( member_a2 @ X4 @ ( set_a2 @ Xs ) )
& ( P @ X4 ) )
=> ? [Ys3: list_a,X3: a] :
( ? [Zs2: list_a] :
( Xs
= ( append_a @ Ys3 @ ( cons_a @ X3 @ Zs2 ) ) )
& ( P @ X3 )
& ! [Xa2: a] :
( ( member_a2 @ Xa2 @ ( set_a2 @ Ys3 ) )
=> ~ ( P @ Xa2 ) ) ) ) ).
% split_list_first_prop
thf(fact_239_split__list__first__prop,axiom,
! [Xs: list_nat,P: nat > $o] :
( ? [X4: nat] :
( ( member_nat2 @ X4 @ ( set_nat2 @ Xs ) )
& ( P @ X4 ) )
=> ? [Ys3: list_nat,X3: nat] :
( ? [Zs2: list_nat] :
( Xs
= ( append_nat @ Ys3 @ ( cons_nat @ X3 @ Zs2 ) ) )
& ( P @ X3 )
& ! [Xa2: nat] :
( ( member_nat2 @ Xa2 @ ( set_nat2 @ Ys3 ) )
=> ~ ( P @ Xa2 ) ) ) ) ).
% split_list_first_prop
thf(fact_240_split__list__last__propE,axiom,
! [Xs: list_a,P: a > $o] :
( ? [X4: a] :
( ( member_a2 @ X4 @ ( set_a2 @ Xs ) )
& ( P @ X4 ) )
=> ~ ! [Ys3: list_a,X3: a,Zs2: list_a] :
( ( Xs
= ( append_a @ Ys3 @ ( cons_a @ X3 @ Zs2 ) ) )
=> ( ( P @ X3 )
=> ~ ! [Xa2: a] :
( ( member_a2 @ Xa2 @ ( set_a2 @ Zs2 ) )
=> ~ ( P @ Xa2 ) ) ) ) ) ).
% split_list_last_propE
thf(fact_241_split__list__last__propE,axiom,
! [Xs: list_nat,P: nat > $o] :
( ? [X4: nat] :
( ( member_nat2 @ X4 @ ( set_nat2 @ Xs ) )
& ( P @ X4 ) )
=> ~ ! [Ys3: list_nat,X3: nat,Zs2: list_nat] :
( ( Xs
= ( append_nat @ Ys3 @ ( cons_nat @ X3 @ Zs2 ) ) )
=> ( ( P @ X3 )
=> ~ ! [Xa2: nat] :
( ( member_nat2 @ Xa2 @ ( set_nat2 @ Zs2 ) )
=> ~ ( P @ Xa2 ) ) ) ) ) ).
% split_list_last_propE
thf(fact_242_split__list__first__propE,axiom,
! [Xs: list_a,P: a > $o] :
( ? [X4: a] :
( ( member_a2 @ X4 @ ( set_a2 @ Xs ) )
& ( P @ X4 ) )
=> ~ ! [Ys3: list_a,X3: a] :
( ? [Zs2: list_a] :
( Xs
= ( append_a @ Ys3 @ ( cons_a @ X3 @ Zs2 ) ) )
=> ( ( P @ X3 )
=> ~ ! [Xa2: a] :
( ( member_a2 @ Xa2 @ ( set_a2 @ Ys3 ) )
=> ~ ( P @ Xa2 ) ) ) ) ) ).
% split_list_first_propE
thf(fact_243_split__list__first__propE,axiom,
! [Xs: list_nat,P: nat > $o] :
( ? [X4: nat] :
( ( member_nat2 @ X4 @ ( set_nat2 @ Xs ) )
& ( P @ X4 ) )
=> ~ ! [Ys3: list_nat,X3: nat] :
( ? [Zs2: list_nat] :
( Xs
= ( append_nat @ Ys3 @ ( cons_nat @ X3 @ Zs2 ) ) )
=> ( ( P @ X3 )
=> ~ ! [Xa2: nat] :
( ( member_nat2 @ Xa2 @ ( set_nat2 @ Ys3 ) )
=> ~ ( P @ Xa2 ) ) ) ) ) ).
% split_list_first_propE
thf(fact_244_in__set__conv__decomp__last,axiom,
! [X: list_nat,Xs: list_list_nat] :
( ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
= ( ? [Ys2: list_list_nat,Zs3: list_list_nat] :
( ( Xs
= ( append_list_nat @ Ys2 @ ( cons_list_nat @ X @ Zs3 ) ) )
& ~ ( member_list_nat2 @ X @ ( set_list_nat2 @ Zs3 ) ) ) ) ) ).
% in_set_conv_decomp_last
thf(fact_245_in__set__conv__decomp__last,axiom,
! [X: list_a,Xs: list_list_a] :
( ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
= ( ? [Ys2: list_list_a,Zs3: list_list_a] :
( ( Xs
= ( append_list_a @ Ys2 @ ( cons_list_a @ X @ Zs3 ) ) )
& ~ ( member_list_a2 @ X @ ( set_list_a2 @ Zs3 ) ) ) ) ) ).
% in_set_conv_decomp_last
thf(fact_246_in__set__conv__decomp__last,axiom,
! [X: a,Xs: list_a] :
( ( member_a2 @ X @ ( set_a2 @ Xs ) )
= ( ? [Ys2: list_a,Zs3: list_a] :
( ( Xs
= ( append_a @ Ys2 @ ( cons_a @ X @ Zs3 ) ) )
& ~ ( member_a2 @ X @ ( set_a2 @ Zs3 ) ) ) ) ) ).
% in_set_conv_decomp_last
thf(fact_247_in__set__conv__decomp__last,axiom,
! [X: nat,Xs: list_nat] :
( ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
= ( ? [Ys2: list_nat,Zs3: list_nat] :
( ( Xs
= ( append_nat @ Ys2 @ ( cons_nat @ X @ Zs3 ) ) )
& ~ ( member_nat2 @ X @ ( set_nat2 @ Zs3 ) ) ) ) ) ).
% in_set_conv_decomp_last
thf(fact_248_in__set__conv__decomp__first,axiom,
! [X: list_nat,Xs: list_list_nat] :
( ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
= ( ? [Ys2: list_list_nat,Zs3: list_list_nat] :
( ( Xs
= ( append_list_nat @ Ys2 @ ( cons_list_nat @ X @ Zs3 ) ) )
& ~ ( member_list_nat2 @ X @ ( set_list_nat2 @ Ys2 ) ) ) ) ) ).
% in_set_conv_decomp_first
thf(fact_249_in__set__conv__decomp__first,axiom,
! [X: list_a,Xs: list_list_a] :
( ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
= ( ? [Ys2: list_list_a,Zs3: list_list_a] :
( ( Xs
= ( append_list_a @ Ys2 @ ( cons_list_a @ X @ Zs3 ) ) )
& ~ ( member_list_a2 @ X @ ( set_list_a2 @ Ys2 ) ) ) ) ) ).
% in_set_conv_decomp_first
thf(fact_250_in__set__conv__decomp__first,axiom,
! [X: a,Xs: list_a] :
( ( member_a2 @ X @ ( set_a2 @ Xs ) )
= ( ? [Ys2: list_a,Zs3: list_a] :
( ( Xs
= ( append_a @ Ys2 @ ( cons_a @ X @ Zs3 ) ) )
& ~ ( member_a2 @ X @ ( set_a2 @ Ys2 ) ) ) ) ) ).
% in_set_conv_decomp_first
thf(fact_251_in__set__conv__decomp__first,axiom,
! [X: nat,Xs: list_nat] :
( ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
= ( ? [Ys2: list_nat,Zs3: list_nat] :
( ( Xs
= ( append_nat @ Ys2 @ ( cons_nat @ X @ Zs3 ) ) )
& ~ ( member_nat2 @ X @ ( set_nat2 @ Ys2 ) ) ) ) ) ).
% in_set_conv_decomp_first
thf(fact_252_split__list__last__prop__iff,axiom,
! [Xs: list_a,P: a > $o] :
( ( ? [X2: a] :
( ( member_a2 @ X2 @ ( set_a2 @ Xs ) )
& ( P @ X2 ) ) )
= ( ? [Ys2: list_a,X2: a,Zs3: list_a] :
( ( Xs
= ( append_a @ Ys2 @ ( cons_a @ X2 @ Zs3 ) ) )
& ( P @ X2 )
& ! [Y3: a] :
( ( member_a2 @ Y3 @ ( set_a2 @ Zs3 ) )
=> ~ ( P @ Y3 ) ) ) ) ) ).
% split_list_last_prop_iff
thf(fact_253_split__list__last__prop__iff,axiom,
! [Xs: list_nat,P: nat > $o] :
( ( ? [X2: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Xs ) )
& ( P @ X2 ) ) )
= ( ? [Ys2: list_nat,X2: nat,Zs3: list_nat] :
( ( Xs
= ( append_nat @ Ys2 @ ( cons_nat @ X2 @ Zs3 ) ) )
& ( P @ X2 )
& ! [Y3: nat] :
( ( member_nat2 @ Y3 @ ( set_nat2 @ Zs3 ) )
=> ~ ( P @ Y3 ) ) ) ) ) ).
% split_list_last_prop_iff
thf(fact_254_split__list__first__prop__iff,axiom,
! [Xs: list_a,P: a > $o] :
( ( ? [X2: a] :
( ( member_a2 @ X2 @ ( set_a2 @ Xs ) )
& ( P @ X2 ) ) )
= ( ? [Ys2: list_a,X2: a] :
( ? [Zs3: list_a] :
( Xs
= ( append_a @ Ys2 @ ( cons_a @ X2 @ Zs3 ) ) )
& ( P @ X2 )
& ! [Y3: a] :
( ( member_a2 @ Y3 @ ( set_a2 @ Ys2 ) )
=> ~ ( P @ Y3 ) ) ) ) ) ).
% split_list_first_prop_iff
thf(fact_255_split__list__first__prop__iff,axiom,
! [Xs: list_nat,P: nat > $o] :
( ( ? [X2: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Xs ) )
& ( P @ X2 ) ) )
= ( ? [Ys2: list_nat,X2: nat] :
( ? [Zs3: list_nat] :
( Xs
= ( append_nat @ Ys2 @ ( cons_nat @ X2 @ Zs3 ) ) )
& ( P @ X2 )
& ! [Y3: nat] :
( ( member_nat2 @ Y3 @ ( set_nat2 @ Ys2 ) )
=> ~ ( P @ Y3 ) ) ) ) ) ).
% split_list_first_prop_iff
thf(fact_256_ord_Olexordp__append__left__rightI,axiom,
! [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_257_ord_Olexordp__append__left__rightI,axiom,
! [Less: nat > nat > $o,X: nat,Y: nat,Us2: list_nat,Xs: list_nat,Ys: list_nat] :
( ( Less @ X @ Y )
=> ( lexordp_nat @ Less @ ( append_nat @ Us2 @ ( cons_nat @ X @ Xs ) ) @ ( append_nat @ Us2 @ ( cons_nat @ Y @ Ys ) ) ) ) ).
% ord.lexordp_append_left_rightI
thf(fact_258_ord_Olexordp__append__rightI,axiom,
! [Ys: list_nat,Less: nat > nat > $o,Xs: list_nat] :
( ( Ys != nil_nat )
=> ( lexordp_nat @ Less @ Xs @ ( append_nat @ Xs @ Ys ) ) ) ).
% ord.lexordp_append_rightI
thf(fact_259_list__ex1__iff,axiom,
( list_ex1_list_nat
= ( ^ [P2: list_nat > $o,Xs3: list_list_nat] :
? [X2: list_nat] :
( ( member_list_nat2 @ X2 @ ( set_list_nat2 @ Xs3 ) )
& ( P2 @ X2 )
& ! [Y3: list_nat] :
( ( ( member_list_nat2 @ Y3 @ ( set_list_nat2 @ Xs3 ) )
& ( P2 @ Y3 ) )
=> ( Y3 = X2 ) ) ) ) ) ).
% list_ex1_iff
thf(fact_260_list__ex1__iff,axiom,
( list_ex1_list_a
= ( ^ [P2: list_a > $o,Xs3: list_list_a] :
? [X2: list_a] :
( ( member_list_a2 @ X2 @ ( set_list_a2 @ Xs3 ) )
& ( P2 @ X2 )
& ! [Y3: list_a] :
( ( ( member_list_a2 @ Y3 @ ( set_list_a2 @ Xs3 ) )
& ( P2 @ Y3 ) )
=> ( Y3 = X2 ) ) ) ) ) ).
% list_ex1_iff
thf(fact_261_list__ex1__iff,axiom,
( list_ex1_nat
= ( ^ [P2: nat > $o,Xs3: list_nat] :
? [X2: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Xs3 ) )
& ( P2 @ X2 )
& ! [Y3: nat] :
( ( ( member_nat2 @ Y3 @ ( set_nat2 @ Xs3 ) )
& ( P2 @ Y3 ) )
=> ( Y3 = X2 ) ) ) ) ) ).
% list_ex1_iff
thf(fact_262_can__select__set__list__ex1,axiom,
! [P: nat > $o,A3: list_nat] :
( ( can_select_nat @ P @ ( set_nat2 @ A3 ) )
= ( list_ex1_nat @ P @ A3 ) ) ).
% can_select_set_list_ex1
thf(fact_263_product__lists_Osimps_I1_J,axiom,
( ( product_lists_nat @ nil_list_nat )
= ( cons_list_nat @ nil_nat @ nil_list_nat ) ) ).
% product_lists.simps(1)
thf(fact_264_subseqs_Osimps_I1_J,axiom,
( ( subseqs_nat @ nil_nat )
= ( cons_list_nat @ nil_nat @ nil_list_nat ) ) ).
% subseqs.simps(1)
thf(fact_265_maps__simps_I1_J,axiom,
! [F: a > list_nat,X: a,Xs: list_a] :
( ( maps_a_nat @ F @ ( cons_a @ X @ Xs ) )
= ( append_nat @ ( F @ X ) @ ( maps_a_nat @ F @ Xs ) ) ) ).
% maps_simps(1)
thf(fact_266_maps__simps_I1_J,axiom,
! [F: nat > list_nat,X: nat,Xs: list_nat] :
( ( maps_nat_nat @ F @ ( cons_nat @ X @ Xs ) )
= ( append_nat @ ( F @ X ) @ ( maps_nat_nat @ F @ Xs ) ) ) ).
% maps_simps(1)
thf(fact_267_concat__eq__append__conv,axiom,
! [Xss2: list_list_nat,Ys: list_nat,Zs: list_nat] :
( ( ( concat_nat @ Xss2 )
= ( append_nat @ Ys @ Zs ) )
= ( ( ( Xss2 = nil_list_nat )
=> ( ( Ys = nil_nat )
& ( Zs = nil_nat ) ) )
& ( ( Xss2 != nil_list_nat )
=> ? [Xss1: list_list_nat,Xs3: list_nat,Xs5: list_nat,Xss22: list_list_nat] :
( ( Xss2
= ( append_list_nat @ Xss1 @ ( cons_list_nat @ ( append_nat @ Xs3 @ Xs5 ) @ Xss22 ) ) )
& ( Ys
= ( append_nat @ ( concat_nat @ Xss1 ) @ Xs3 ) )
& ( Zs
= ( append_nat @ Xs5 @ ( concat_nat @ Xss22 ) ) ) ) ) ) ) ).
% concat_eq_append_conv
thf(fact_268_butlast__snoc,axiom,
! [Xs: list_a,X: a] :
( ( butlast_a @ ( append_a @ Xs @ ( cons_a @ X @ nil_a ) ) )
= Xs ) ).
% butlast_snoc
thf(fact_269_butlast__snoc,axiom,
! [Xs: list_nat,X: nat] :
( ( butlast_nat @ ( append_nat @ Xs @ ( cons_nat @ X @ nil_nat ) ) )
= Xs ) ).
% butlast_snoc
thf(fact_270_rotate1_Osimps_I2_J,axiom,
! [X: a,Xs: list_a] :
( ( rotate1_a @ ( cons_a @ X @ Xs ) )
= ( append_a @ Xs @ ( cons_a @ X @ nil_a ) ) ) ).
% rotate1.simps(2)
thf(fact_271_rotate1_Osimps_I2_J,axiom,
! [X: nat,Xs: list_nat] :
( ( rotate1_nat @ ( cons_nat @ X @ Xs ) )
= ( append_nat @ Xs @ ( cons_nat @ X @ nil_nat ) ) ) ).
% rotate1.simps(2)
thf(fact_272_last__snoc,axiom,
! [Xs: list_a,X: a] :
( ( last_a @ ( append_a @ Xs @ ( cons_a @ X @ nil_a ) ) )
= X ) ).
% last_snoc
thf(fact_273_last__snoc,axiom,
! [Xs: list_nat,X: nat] :
( ( last_nat @ ( append_nat @ Xs @ ( cons_nat @ X @ nil_nat ) ) )
= X ) ).
% last_snoc
thf(fact_274_concat__eq__appendD,axiom,
! [Xss2: list_list_nat,Ys: list_nat,Zs: list_nat] :
( ( ( concat_nat @ Xss2 )
= ( append_nat @ Ys @ Zs ) )
=> ( ( Xss2 != nil_list_nat )
=> ? [Xss12: list_list_nat,Xs2: list_nat,Xs6: list_nat,Xss23: list_list_nat] :
( ( Xss2
= ( append_list_nat @ Xss12 @ ( cons_list_nat @ ( append_nat @ Xs2 @ Xs6 ) @ Xss23 ) ) )
& ( Ys
= ( append_nat @ ( concat_nat @ Xss12 ) @ Xs2 ) )
& ( Zs
= ( append_nat @ Xs6 @ ( concat_nat @ Xss23 ) ) ) ) ) ) ).
% concat_eq_appendD
thf(fact_275_remove1__split,axiom,
! [A: list_nat,Xs: list_list_nat,Ys: list_list_nat] :
( ( member_list_nat2 @ A @ ( set_list_nat2 @ Xs ) )
=> ( ( ( remove1_list_nat @ A @ Xs )
= Ys )
= ( ? [Ls: list_list_nat,Rs: list_list_nat] :
( ( Xs
= ( append_list_nat @ Ls @ ( cons_list_nat @ A @ Rs ) ) )
& ~ ( member_list_nat2 @ A @ ( set_list_nat2 @ Ls ) )
& ( Ys
= ( append_list_nat @ Ls @ Rs ) ) ) ) ) ) ).
% remove1_split
thf(fact_276_remove1__split,axiom,
! [A: list_a,Xs: list_list_a,Ys: list_list_a] :
( ( member_list_a2 @ A @ ( set_list_a2 @ Xs ) )
=> ( ( ( remove1_list_a @ A @ Xs )
= Ys )
= ( ? [Ls: list_list_a,Rs: list_list_a] :
( ( Xs
= ( append_list_a @ Ls @ ( cons_list_a @ A @ Rs ) ) )
& ~ ( member_list_a2 @ A @ ( set_list_a2 @ Ls ) )
& ( Ys
= ( append_list_a @ Ls @ Rs ) ) ) ) ) ) ).
% remove1_split
thf(fact_277_remove1__split,axiom,
! [A: a,Xs: list_a,Ys: list_a] :
( ( member_a2 @ A @ ( set_a2 @ Xs ) )
=> ( ( ( remove1_a @ A @ Xs )
= Ys )
= ( ? [Ls: list_a,Rs: list_a] :
( ( Xs
= ( append_a @ Ls @ ( cons_a @ A @ Rs ) ) )
& ~ ( member_a2 @ A @ ( set_a2 @ Ls ) )
& ( Ys
= ( append_a @ Ls @ Rs ) ) ) ) ) ) ).
% remove1_split
thf(fact_278_remove1__split,axiom,
! [A: nat,Xs: list_nat,Ys: list_nat] :
( ( member_nat2 @ A @ ( set_nat2 @ Xs ) )
=> ( ( ( remove1_nat @ A @ Xs )
= Ys )
= ( ? [Ls: list_nat,Rs: list_nat] :
( ( Xs
= ( append_nat @ Ls @ ( cons_nat @ A @ Rs ) ) )
& ~ ( member_nat2 @ A @ ( set_nat2 @ Ls ) )
& ( Ys
= ( append_nat @ Ls @ Rs ) ) ) ) ) ) ).
% remove1_split
thf(fact_279_Nil__eq__concat__conv,axiom,
! [Xss2: list_list_nat] :
( ( nil_nat
= ( concat_nat @ Xss2 ) )
= ( ! [X2: list_nat] :
( ( member_list_nat2 @ X2 @ ( set_list_nat2 @ Xss2 ) )
=> ( X2 = nil_nat ) ) ) ) ).
% Nil_eq_concat_conv
thf(fact_280_concat__eq__Nil__conv,axiom,
! [Xss2: list_list_nat] :
( ( ( concat_nat @ Xss2 )
= nil_nat )
= ( ! [X2: list_nat] :
( ( member_list_nat2 @ X2 @ ( set_list_nat2 @ Xss2 ) )
=> ( X2 = nil_nat ) ) ) ) ).
% concat_eq_Nil_conv
thf(fact_281_in__set__remove1,axiom,
! [A: list_nat,B: list_nat,Xs: list_list_nat] :
( ( A != B )
=> ( ( member_list_nat2 @ A @ ( set_list_nat2 @ ( remove1_list_nat @ B @ Xs ) ) )
= ( member_list_nat2 @ A @ ( set_list_nat2 @ Xs ) ) ) ) ).
% in_set_remove1
thf(fact_282_in__set__remove1,axiom,
! [A: list_a,B: list_a,Xs: list_list_a] :
( ( A != B )
=> ( ( member_list_a2 @ A @ ( set_list_a2 @ ( remove1_list_a @ B @ Xs ) ) )
= ( member_list_a2 @ A @ ( set_list_a2 @ Xs ) ) ) ) ).
% in_set_remove1
thf(fact_283_in__set__remove1,axiom,
! [A: nat,B: nat,Xs: list_nat] :
( ( A != B )
=> ( ( member_nat2 @ A @ ( set_nat2 @ ( remove1_nat @ B @ Xs ) ) )
= ( member_nat2 @ A @ ( set_nat2 @ Xs ) ) ) ) ).
% in_set_remove1
thf(fact_284_rotate1__is__Nil__conv,axiom,
! [Xs: list_nat] :
( ( ( rotate1_nat @ Xs )
= nil_nat )
= ( Xs = nil_nat ) ) ).
% rotate1_is_Nil_conv
thf(fact_285_set__rotate1,axiom,
! [Xs: list_nat] :
( ( set_nat2 @ ( rotate1_nat @ Xs ) )
= ( set_nat2 @ Xs ) ) ).
% set_rotate1
thf(fact_286_last__appendL,axiom,
! [Ys: list_nat,Xs: list_nat] :
( ( Ys = nil_nat )
=> ( ( last_nat @ ( append_nat @ Xs @ Ys ) )
= ( last_nat @ Xs ) ) ) ).
% last_appendL
thf(fact_287_last__appendR,axiom,
! [Ys: list_nat,Xs: list_nat] :
( ( Ys != nil_nat )
=> ( ( last_nat @ ( append_nat @ Xs @ Ys ) )
= ( last_nat @ Ys ) ) ) ).
% last_appendR
thf(fact_288_concat__append,axiom,
! [Xs: list_list_nat,Ys: list_list_nat] :
( ( concat_nat @ ( append_list_nat @ Xs @ Ys ) )
= ( append_nat @ ( concat_nat @ Xs ) @ ( concat_nat @ Ys ) ) ) ).
% concat_append
thf(fact_289_append__butlast__last__id,axiom,
! [Xs: list_a] :
( ( Xs != nil_a )
=> ( ( append_a @ ( butlast_a @ Xs ) @ ( cons_a @ ( last_a @ Xs ) @ nil_a ) )
= Xs ) ) ).
% append_butlast_last_id
thf(fact_290_append__butlast__last__id,axiom,
! [Xs: list_nat] :
( ( Xs != nil_nat )
=> ( ( append_nat @ ( butlast_nat @ Xs ) @ ( cons_nat @ ( last_nat @ Xs ) @ nil_nat ) )
= Xs ) ) ).
% append_butlast_last_id
thf(fact_291_subseqs__refl,axiom,
! [Xs: list_nat] : ( member_list_nat2 @ Xs @ ( set_list_nat2 @ ( subseqs_nat @ Xs ) ) ) ).
% subseqs_refl
thf(fact_292_subseqs__refl,axiom,
! [Xs: list_a] : ( member_list_a2 @ Xs @ ( set_list_a2 @ ( subseqs_a @ Xs ) ) ) ).
% subseqs_refl
thf(fact_293_can__select__def,axiom,
( can_select_list_nat
= ( ^ [P2: list_nat > $o,A5: set_list_nat] :
? [X2: list_nat] :
( ( member_list_nat2 @ X2 @ A5 )
& ( P2 @ X2 )
& ! [Y3: list_nat] :
( ( ( member_list_nat2 @ Y3 @ A5 )
& ( P2 @ Y3 ) )
=> ( Y3 = X2 ) ) ) ) ) ).
% can_select_def
thf(fact_294_can__select__def,axiom,
( can_select_list_a
= ( ^ [P2: list_a > $o,A5: set_list_a] :
? [X2: list_a] :
( ( member_list_a2 @ X2 @ A5 )
& ( P2 @ X2 )
& ! [Y3: list_a] :
( ( ( member_list_a2 @ Y3 @ A5 )
& ( P2 @ Y3 ) )
=> ( Y3 = X2 ) ) ) ) ) ).
% can_select_def
thf(fact_295_remove1_Osimps_I2_J,axiom,
! [X: a,Y: a,Xs: list_a] :
( ( ( X = Y )
=> ( ( remove1_a @ X @ ( cons_a @ Y @ Xs ) )
= Xs ) )
& ( ( X != Y )
=> ( ( remove1_a @ X @ ( cons_a @ Y @ Xs ) )
= ( cons_a @ Y @ ( remove1_a @ X @ Xs ) ) ) ) ) ).
% remove1.simps(2)
thf(fact_296_remove1_Osimps_I2_J,axiom,
! [X: nat,Y: nat,Xs: list_nat] :
( ( ( X = Y )
=> ( ( remove1_nat @ X @ ( cons_nat @ Y @ Xs ) )
= Xs ) )
& ( ( X != Y )
=> ( ( remove1_nat @ X @ ( cons_nat @ Y @ Xs ) )
= ( cons_nat @ Y @ ( remove1_nat @ X @ Xs ) ) ) ) ) ).
% remove1.simps(2)
thf(fact_297_butlast_Osimps_I1_J,axiom,
( ( butlast_nat @ nil_nat )
= nil_nat ) ).
% butlast.simps(1)
thf(fact_298_remove1_Osimps_I1_J,axiom,
! [X: nat] :
( ( remove1_nat @ X @ nil_nat )
= nil_nat ) ).
% remove1.simps(1)
thf(fact_299_remove1__idem,axiom,
! [X: list_nat,Xs: list_list_nat] :
( ~ ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
=> ( ( remove1_list_nat @ X @ Xs )
= Xs ) ) ).
% remove1_idem
thf(fact_300_remove1__idem,axiom,
! [X: list_a,Xs: list_list_a] :
( ~ ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
=> ( ( remove1_list_a @ X @ Xs )
= Xs ) ) ).
% remove1_idem
thf(fact_301_remove1__idem,axiom,
! [X: nat,Xs: list_nat] :
( ~ ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ( ( remove1_nat @ X @ Xs )
= Xs ) ) ).
% remove1_idem
thf(fact_302_in__set__butlastD,axiom,
! [X: list_nat,Xs: list_list_nat] :
( ( member_list_nat2 @ X @ ( set_list_nat2 @ ( butlast_list_nat @ Xs ) ) )
=> ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) ) ) ).
% in_set_butlastD
thf(fact_303_in__set__butlastD,axiom,
! [X: list_a,Xs: list_list_a] :
( ( member_list_a2 @ X @ ( set_list_a2 @ ( butlast_list_a @ Xs ) ) )
=> ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) ) ) ).
% in_set_butlastD
thf(fact_304_in__set__butlastD,axiom,
! [X: nat,Xs: list_nat] :
( ( member_nat2 @ X @ ( set_nat2 @ ( butlast_nat @ Xs ) ) )
=> ( member_nat2 @ X @ ( set_nat2 @ Xs ) ) ) ).
% in_set_butlastD
thf(fact_305_notin__set__remove1,axiom,
! [X: list_nat,Xs: list_list_nat,Y: list_nat] :
( ~ ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
=> ~ ( member_list_nat2 @ X @ ( set_list_nat2 @ ( remove1_list_nat @ Y @ Xs ) ) ) ) ).
% notin_set_remove1
thf(fact_306_notin__set__remove1,axiom,
! [X: list_a,Xs: list_list_a,Y: list_a] :
( ~ ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
=> ~ ( member_list_a2 @ X @ ( set_list_a2 @ ( remove1_list_a @ Y @ Xs ) ) ) ) ).
% notin_set_remove1
thf(fact_307_notin__set__remove1,axiom,
! [X: nat,Xs: list_nat,Y: nat] :
( ~ ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ~ ( member_nat2 @ X @ ( set_nat2 @ ( remove1_nat @ Y @ Xs ) ) ) ) ).
% notin_set_remove1
thf(fact_308_rotate1_Osimps_I1_J,axiom,
( ( rotate1_nat @ nil_nat )
= nil_nat ) ).
% rotate1.simps(1)
thf(fact_309_snoc__eq__iff__butlast,axiom,
! [Xs: list_a,X: a,Ys: list_a] :
( ( ( append_a @ Xs @ ( cons_a @ X @ nil_a ) )
= Ys )
= ( ( Ys != nil_a )
& ( ( butlast_a @ Ys )
= Xs )
& ( ( last_a @ Ys )
= X ) ) ) ).
% snoc_eq_iff_butlast
thf(fact_310_snoc__eq__iff__butlast,axiom,
! [Xs: list_nat,X: nat,Ys: list_nat] :
( ( ( append_nat @ Xs @ ( cons_nat @ X @ nil_nat ) )
= Ys )
= ( ( Ys != nil_nat )
& ( ( butlast_nat @ Ys )
= Xs )
& ( ( last_nat @ Ys )
= X ) ) ) ).
% snoc_eq_iff_butlast
thf(fact_311_Cons__in__subseqsD,axiom,
! [Y: a,Ys: list_a,Xs: list_a] :
( ( member_list_a2 @ ( cons_a @ Y @ Ys ) @ ( set_list_a2 @ ( subseqs_a @ Xs ) ) )
=> ( member_list_a2 @ Ys @ ( set_list_a2 @ ( subseqs_a @ Xs ) ) ) ) ).
% Cons_in_subseqsD
thf(fact_312_Cons__in__subseqsD,axiom,
! [Y: nat,Ys: list_nat,Xs: list_nat] :
( ( member_list_nat2 @ ( cons_nat @ Y @ Ys ) @ ( set_list_nat2 @ ( subseqs_nat @ Xs ) ) )
=> ( member_list_nat2 @ Ys @ ( set_list_nat2 @ ( subseqs_nat @ Xs ) ) ) ) ).
% Cons_in_subseqsD
thf(fact_313_last__ConsR,axiom,
! [Xs: list_a,X: a] :
( ( Xs != nil_a )
=> ( ( last_a @ ( cons_a @ X @ Xs ) )
= ( last_a @ Xs ) ) ) ).
% last_ConsR
thf(fact_314_last__ConsR,axiom,
! [Xs: list_nat,X: nat] :
( ( Xs != nil_nat )
=> ( ( last_nat @ ( cons_nat @ X @ Xs ) )
= ( last_nat @ Xs ) ) ) ).
% last_ConsR
thf(fact_315_last__ConsL,axiom,
! [Xs: list_a,X: a] :
( ( Xs = nil_a )
=> ( ( last_a @ ( cons_a @ X @ Xs ) )
= X ) ) ).
% last_ConsL
thf(fact_316_last__ConsL,axiom,
! [Xs: list_nat,X: nat] :
( ( Xs = nil_nat )
=> ( ( last_nat @ ( cons_nat @ X @ Xs ) )
= X ) ) ).
% last_ConsL
thf(fact_317_last_Osimps,axiom,
! [Xs: list_a,X: a] :
( ( ( Xs = nil_a )
=> ( ( last_a @ ( cons_a @ X @ Xs ) )
= X ) )
& ( ( Xs != nil_a )
=> ( ( last_a @ ( cons_a @ X @ Xs ) )
= ( last_a @ Xs ) ) ) ) ).
% last.simps
thf(fact_318_last_Osimps,axiom,
! [Xs: list_nat,X: nat] :
( ( ( Xs = nil_nat )
=> ( ( last_nat @ ( cons_nat @ X @ Xs ) )
= X ) )
& ( ( Xs != nil_nat )
=> ( ( last_nat @ ( cons_nat @ X @ Xs ) )
= ( last_nat @ Xs ) ) ) ) ).
% last.simps
thf(fact_319_last__in__set,axiom,
! [As: list_list_nat] :
( ( As != nil_list_nat )
=> ( member_list_nat2 @ ( last_list_nat @ As ) @ ( set_list_nat2 @ As ) ) ) ).
% last_in_set
thf(fact_320_last__in__set,axiom,
! [As: list_list_a] :
( ( As != nil_list_a )
=> ( member_list_a2 @ ( last_list_a @ As ) @ ( set_list_a2 @ As ) ) ) ).
% last_in_set
thf(fact_321_last__in__set,axiom,
! [As: list_nat] :
( ( As != nil_nat )
=> ( member_nat2 @ ( last_nat @ As ) @ ( set_nat2 @ As ) ) ) ).
% last_in_set
thf(fact_322_last__append,axiom,
! [Ys: list_nat,Xs: list_nat] :
( ( ( Ys = nil_nat )
=> ( ( last_nat @ ( append_nat @ Xs @ Ys ) )
= ( last_nat @ Xs ) ) )
& ( ( Ys != nil_nat )
=> ( ( last_nat @ ( append_nat @ Xs @ Ys ) )
= ( last_nat @ Ys ) ) ) ) ).
% last_append
thf(fact_323_longest__common__suffix,axiom,
! [Xs: list_nat,Ys: list_nat] :
? [Ss: list_nat,Xs6: list_nat,Ys6: list_nat] :
( ( Xs
= ( append_nat @ Xs6 @ Ss ) )
& ( Ys
= ( append_nat @ Ys6 @ Ss ) )
& ( ( Xs6 = nil_nat )
| ( Ys6 = nil_nat )
| ( ( last_nat @ Xs6 )
!= ( last_nat @ Ys6 ) ) ) ) ).
% longest_common_suffix
thf(fact_324_concat_Osimps_I1_J,axiom,
( ( concat_nat @ nil_list_nat )
= nil_nat ) ).
% concat.simps(1)
thf(fact_325_butlast_Osimps_I2_J,axiom,
! [Xs: list_a,X: a] :
( ( ( Xs = nil_a )
=> ( ( butlast_a @ ( cons_a @ X @ Xs ) )
= nil_a ) )
& ( ( Xs != nil_a )
=> ( ( butlast_a @ ( cons_a @ X @ Xs ) )
= ( cons_a @ X @ ( butlast_a @ Xs ) ) ) ) ) ).
% butlast.simps(2)
thf(fact_326_butlast_Osimps_I2_J,axiom,
! [Xs: list_nat,X: nat] :
( ( ( Xs = nil_nat )
=> ( ( butlast_nat @ ( cons_nat @ X @ Xs ) )
= nil_nat ) )
& ( ( Xs != nil_nat )
=> ( ( butlast_nat @ ( cons_nat @ X @ Xs ) )
= ( cons_nat @ X @ ( butlast_nat @ Xs ) ) ) ) ) ).
% butlast.simps(2)
thf(fact_327_concat_Osimps_I2_J,axiom,
! [X: list_nat,Xs: list_list_nat] :
( ( concat_nat @ ( cons_list_nat @ X @ Xs ) )
= ( append_nat @ X @ ( concat_nat @ Xs ) ) ) ).
% concat.simps(2)
thf(fact_328_butlast__append,axiom,
! [Ys: list_nat,Xs: list_nat] :
( ( ( Ys = nil_nat )
=> ( ( butlast_nat @ ( append_nat @ Xs @ Ys ) )
= ( butlast_nat @ Xs ) ) )
& ( ( Ys != nil_nat )
=> ( ( butlast_nat @ ( append_nat @ Xs @ Ys ) )
= ( append_nat @ Xs @ ( butlast_nat @ Ys ) ) ) ) ) ).
% butlast_append
thf(fact_329_remove1__append,axiom,
! [X: list_nat,Xs: list_list_nat,Ys: list_list_nat] :
( ( ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
=> ( ( remove1_list_nat @ X @ ( append_list_nat @ Xs @ Ys ) )
= ( append_list_nat @ ( remove1_list_nat @ X @ Xs ) @ Ys ) ) )
& ( ~ ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
=> ( ( remove1_list_nat @ X @ ( append_list_nat @ Xs @ Ys ) )
= ( append_list_nat @ Xs @ ( remove1_list_nat @ X @ Ys ) ) ) ) ) ).
% remove1_append
thf(fact_330_remove1__append,axiom,
! [X: list_a,Xs: list_list_a,Ys: list_list_a] :
( ( ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
=> ( ( remove1_list_a @ X @ ( append_list_a @ Xs @ Ys ) )
= ( append_list_a @ ( remove1_list_a @ X @ Xs ) @ Ys ) ) )
& ( ~ ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
=> ( ( remove1_list_a @ X @ ( append_list_a @ Xs @ Ys ) )
= ( append_list_a @ Xs @ ( remove1_list_a @ X @ Ys ) ) ) ) ) ).
% remove1_append
thf(fact_331_remove1__append,axiom,
! [X: nat,Xs: list_nat,Ys: list_nat] :
( ( ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ( ( remove1_nat @ X @ ( append_nat @ Xs @ Ys ) )
= ( append_nat @ ( remove1_nat @ X @ Xs ) @ Ys ) ) )
& ( ~ ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ( ( remove1_nat @ X @ ( append_nat @ Xs @ Ys ) )
= ( append_nat @ Xs @ ( remove1_nat @ X @ Ys ) ) ) ) ) ).
% remove1_append
thf(fact_332_in__set__butlast__appendI,axiom,
! [X: list_nat,Xs: list_list_nat,Ys: list_list_nat] :
( ( ( member_list_nat2 @ X @ ( set_list_nat2 @ ( butlast_list_nat @ Xs ) ) )
| ( member_list_nat2 @ X @ ( set_list_nat2 @ ( butlast_list_nat @ Ys ) ) ) )
=> ( member_list_nat2 @ X @ ( set_list_nat2 @ ( butlast_list_nat @ ( append_list_nat @ Xs @ Ys ) ) ) ) ) ).
% in_set_butlast_appendI
thf(fact_333_in__set__butlast__appendI,axiom,
! [X: list_a,Xs: list_list_a,Ys: list_list_a] :
( ( ( member_list_a2 @ X @ ( set_list_a2 @ ( butlast_list_a @ Xs ) ) )
| ( member_list_a2 @ X @ ( set_list_a2 @ ( butlast_list_a @ Ys ) ) ) )
=> ( member_list_a2 @ X @ ( set_list_a2 @ ( butlast_list_a @ ( append_list_a @ Xs @ Ys ) ) ) ) ) ).
% in_set_butlast_appendI
thf(fact_334_in__set__butlast__appendI,axiom,
! [X: nat,Xs: list_nat,Ys: list_nat] :
( ( ( member_nat2 @ X @ ( set_nat2 @ ( butlast_nat @ Xs ) ) )
| ( member_nat2 @ X @ ( set_nat2 @ ( butlast_nat @ Ys ) ) ) )
=> ( member_nat2 @ X @ ( set_nat2 @ ( butlast_nat @ ( append_nat @ Xs @ Ys ) ) ) ) ) ).
% in_set_butlast_appendI
thf(fact_335_maps__simps_I2_J,axiom,
! [F: nat > list_nat] :
( ( maps_nat_nat @ F @ nil_nat )
= nil_nat ) ).
% maps_simps(2)
thf(fact_336_distinct__adj__append__iff,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( distinct_adj_nat @ ( append_nat @ Xs @ Ys ) )
= ( ( distinct_adj_nat @ Xs )
& ( distinct_adj_nat @ Ys )
& ( ( Xs = nil_nat )
| ( Ys = nil_nat )
| ( ( last_nat @ Xs )
!= ( hd_nat @ Ys ) ) ) ) ) ).
% distinct_adj_append_iff
thf(fact_337_concat__conv__foldr,axiom,
( concat_nat
= ( ^ [Xss3: list_list_nat] : ( foldr_6871341030409798377st_nat @ append_nat @ Xss3 @ nil_nat ) ) ) ).
% concat_conv_foldr
thf(fact_338_lexordp__eq__simps_I3_J,axiom,
! [X: nat,Xs: list_nat] :
~ ( ord_lexordp_eq_nat @ ( cons_nat @ X @ Xs ) @ nil_nat ) ).
% lexordp_eq_simps(3)
thf(fact_339_rev__eq__Cons__iff,axiom,
! [Xs: list_a,Y: a,Ys: list_a] :
( ( ( rev_a @ Xs )
= ( cons_a @ Y @ Ys ) )
= ( Xs
= ( append_a @ ( rev_a @ Ys ) @ ( cons_a @ Y @ nil_a ) ) ) ) ).
% rev_eq_Cons_iff
thf(fact_340_rev__eq__Cons__iff,axiom,
! [Xs: list_nat,Y: nat,Ys: list_nat] :
( ( ( rev_nat @ Xs )
= ( cons_nat @ Y @ Ys ) )
= ( Xs
= ( append_nat @ ( rev_nat @ Ys ) @ ( cons_nat @ Y @ nil_nat ) ) ) ) ).
% rev_eq_Cons_iff
thf(fact_341_distinct__adj__Cons,axiom,
! [X: a,Xs: list_a] :
( ( distinct_adj_a @ ( cons_a @ X @ Xs ) )
= ( ( Xs = nil_a )
| ( ( X
!= ( hd_a @ Xs ) )
& ( distinct_adj_a @ Xs ) ) ) ) ).
% distinct_adj_Cons
thf(fact_342_distinct__adj__Cons,axiom,
! [X: nat,Xs: list_nat] :
( ( distinct_adj_nat @ ( cons_nat @ X @ Xs ) )
= ( ( Xs = nil_nat )
| ( ( X
!= ( hd_nat @ Xs ) )
& ( distinct_adj_nat @ Xs ) ) ) ) ).
% distinct_adj_Cons
thf(fact_343_remdups__adj__append__two,axiom,
! [Xs: list_a,X: a,Y: a] :
( ( remdups_adj_a @ ( append_a @ Xs @ ( cons_a @ X @ ( cons_a @ Y @ nil_a ) ) ) )
= ( append_a @ ( remdups_adj_a @ ( append_a @ Xs @ ( cons_a @ X @ nil_a ) ) ) @ ( if_list_a @ ( X = Y ) @ nil_a @ ( cons_a @ Y @ nil_a ) ) ) ) ).
% remdups_adj_append_two
thf(fact_344_remdups__adj__append__two,axiom,
! [Xs: list_nat,X: nat,Y: nat] :
( ( remdups_adj_nat @ ( append_nat @ Xs @ ( cons_nat @ X @ ( cons_nat @ Y @ nil_nat ) ) ) )
= ( append_nat @ ( remdups_adj_nat @ ( append_nat @ Xs @ ( cons_nat @ X @ nil_nat ) ) ) @ ( if_list_nat @ ( X = Y ) @ nil_nat @ ( cons_nat @ Y @ nil_nat ) ) ) ) ).
% remdups_adj_append_two
thf(fact_345_splice_Oelims,axiom,
! [X: list_a,Xa: list_a,Y: list_a] :
( ( ( splice_a @ X @ Xa )
= Y )
=> ( ( ( X = nil_a )
=> ( Y != Xa ) )
=> ~ ! [X3: a,Xs2: list_a] :
( ( X
= ( cons_a @ X3 @ Xs2 ) )
=> ( Y
!= ( cons_a @ X3 @ ( splice_a @ Xa @ Xs2 ) ) ) ) ) ) ).
% splice.elims
thf(fact_346_splice_Oelims,axiom,
! [X: list_nat,Xa: list_nat,Y: list_nat] :
( ( ( splice_nat @ X @ Xa )
= Y )
=> ( ( ( X = nil_nat )
=> ( Y != Xa ) )
=> ~ ! [X3: nat,Xs2: list_nat] :
( ( X
= ( cons_nat @ X3 @ Xs2 ) )
=> ( Y
!= ( cons_nat @ X3 @ ( splice_nat @ Xa @ Xs2 ) ) ) ) ) ) ).
% splice.elims
thf(fact_347_same__length__different,axiom,
! [Xs: list_a,Ys: list_a] :
( ( Xs != Ys )
=> ( ( ( size_size_list_a @ Xs )
= ( size_size_list_a @ Ys ) )
=> ? [Pre: list_a,X3: a,Xs6: list_a,Y2: a,Ys6: list_a] :
( ( X3 != Y2 )
& ( Xs
= ( append_a @ Pre @ ( append_a @ ( cons_a @ X3 @ nil_a ) @ Xs6 ) ) )
& ( Ys
= ( append_a @ Pre @ ( append_a @ ( cons_a @ Y2 @ nil_a ) @ Ys6 ) ) ) ) ) ) ).
% same_length_different
thf(fact_348_same__length__different,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( Xs != Ys )
=> ( ( ( size_size_list_nat @ Xs )
= ( size_size_list_nat @ Ys ) )
=> ? [Pre: list_nat,X3: nat,Xs6: list_nat,Y2: nat,Ys6: list_nat] :
( ( X3 != Y2 )
& ( Xs
= ( append_nat @ Pre @ ( append_nat @ ( cons_nat @ X3 @ nil_nat ) @ Xs6 ) ) )
& ( Ys
= ( append_nat @ Pre @ ( append_nat @ ( cons_nat @ Y2 @ nil_nat ) @ Ys6 ) ) ) ) ) ) ).
% same_length_different
thf(fact_349_append__eq__append__conv,axiom,
! [Xs: list_nat,Ys: list_nat,Us2: list_nat,Vs: list_nat] :
( ( ( ( size_size_list_nat @ Xs )
= ( size_size_list_nat @ Ys ) )
| ( ( size_size_list_nat @ Us2 )
= ( size_size_list_nat @ Vs ) ) )
=> ( ( ( append_nat @ Xs @ Us2 )
= ( append_nat @ Ys @ Vs ) )
= ( ( Xs = Ys )
& ( Us2 = Vs ) ) ) ) ).
% append_eq_append_conv
thf(fact_350_rev__is__Nil__conv,axiom,
! [Xs: list_nat] :
( ( ( rev_nat @ Xs )
= nil_nat )
= ( Xs = nil_nat ) ) ).
% rev_is_Nil_conv
thf(fact_351_Nil__is__rev__conv,axiom,
! [Xs: list_nat] :
( ( nil_nat
= ( rev_nat @ Xs ) )
= ( Xs = nil_nat ) ) ).
% Nil_is_rev_conv
thf(fact_352_set__rev,axiom,
! [Xs: list_nat] :
( ( set_nat2 @ ( rev_nat @ Xs ) )
= ( set_nat2 @ Xs ) ) ).
% set_rev
thf(fact_353_length__rev,axiom,
! [Xs: list_nat] :
( ( size_size_list_nat @ ( rev_nat @ Xs ) )
= ( size_size_list_nat @ Xs ) ) ).
% length_rev
thf(fact_354_rev__append,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( rev_nat @ ( append_nat @ Xs @ Ys ) )
= ( append_nat @ ( rev_nat @ Ys ) @ ( rev_nat @ Xs ) ) ) ).
% rev_append
thf(fact_355_remdups__adj__Nil__iff,axiom,
! [Xs: list_nat] :
( ( ( remdups_adj_nat @ Xs )
= nil_nat )
= ( Xs = nil_nat ) ) ).
% remdups_adj_Nil_iff
thf(fact_356_remdups__adj__set,axiom,
! [Xs: list_nat] :
( ( set_nat2 @ ( remdups_adj_nat @ Xs ) )
= ( set_nat2 @ Xs ) ) ).
% remdups_adj_set
thf(fact_357_length__concat__rev,axiom,
! [Xs: list_list_nat] :
( ( size_size_list_nat @ ( concat_nat @ ( rev_list_nat @ Xs ) ) )
= ( size_size_list_nat @ ( concat_nat @ Xs ) ) ) ).
% length_concat_rev
thf(fact_358_lexordp__eq__simps_I1_J,axiom,
! [Ys: list_nat] : ( ord_lexordp_eq_nat @ nil_nat @ Ys ) ).
% lexordp_eq_simps(1)
thf(fact_359_lexordp__eq__simps_I2_J,axiom,
! [Xs: list_nat] :
( ( ord_lexordp_eq_nat @ Xs @ nil_nat )
= ( Xs = nil_nat ) ) ).
% lexordp_eq_simps(2)
thf(fact_360_length__rotate1,axiom,
! [Xs: list_nat] :
( ( size_size_list_nat @ ( rotate1_nat @ Xs ) )
= ( size_size_list_nat @ Xs ) ) ).
% length_rotate1
thf(fact_361_hd__remdups__adj,axiom,
! [Xs: list_nat] :
( ( hd_nat @ ( remdups_adj_nat @ Xs ) )
= ( hd_nat @ Xs ) ) ).
% hd_remdups_adj
thf(fact_362_split__Nil__iff,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( ( splice_nat @ Xs @ Ys )
= nil_nat )
= ( ( Xs = nil_nat )
& ( Ys = nil_nat ) ) ) ).
% split_Nil_iff
thf(fact_363_splice__Nil2,axiom,
! [Xs: list_nat] :
( ( splice_nat @ Xs @ nil_nat )
= Xs ) ).
% splice_Nil2
thf(fact_364_last__remdups__adj,axiom,
! [Xs: list_nat] :
( ( last_nat @ ( remdups_adj_nat @ Xs ) )
= ( last_nat @ Xs ) ) ).
% last_remdups_adj
thf(fact_365_list__ex__rev,axiom,
! [P: nat > $o,Xs: list_nat] :
( ( list_ex_nat @ P @ ( rev_nat @ Xs ) )
= ( list_ex_nat @ P @ Xs ) ) ).
% list_ex_rev
thf(fact_366_list__ex__rev,axiom,
! [P: a > $o,Xs: list_a] :
( ( list_ex_a @ P @ ( rev_a @ Xs ) )
= ( list_ex_a @ P @ Xs ) ) ).
% list_ex_rev
thf(fact_367_rev__singleton__conv,axiom,
! [Xs: list_a,X: a] :
( ( ( rev_a @ Xs )
= ( cons_a @ X @ nil_a ) )
= ( Xs
= ( cons_a @ X @ nil_a ) ) ) ).
% rev_singleton_conv
thf(fact_368_rev__singleton__conv,axiom,
! [Xs: list_nat,X: nat] :
( ( ( rev_nat @ Xs )
= ( cons_nat @ X @ nil_nat ) )
= ( Xs
= ( cons_nat @ X @ nil_nat ) ) ) ).
% rev_singleton_conv
thf(fact_369_singleton__rev__conv,axiom,
! [X: a,Xs: list_a] :
( ( ( cons_a @ X @ nil_a )
= ( rev_a @ Xs ) )
= ( ( cons_a @ X @ nil_a )
= Xs ) ) ).
% singleton_rev_conv
thf(fact_370_singleton__rev__conv,axiom,
! [X: nat,Xs: list_nat] :
( ( ( cons_nat @ X @ nil_nat )
= ( rev_nat @ Xs ) )
= ( ( cons_nat @ X @ nil_nat )
= Xs ) ) ).
% singleton_rev_conv
thf(fact_371_hd__append2,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( Xs != nil_nat )
=> ( ( hd_nat @ ( append_nat @ Xs @ Ys ) )
= ( hd_nat @ Xs ) ) ) ).
% hd_append2
thf(fact_372_hd__rev,axiom,
! [Xs: list_nat] :
( ( hd_nat @ ( rev_nat @ Xs ) )
= ( last_nat @ Xs ) ) ).
% hd_rev
thf(fact_373_last__rev,axiom,
! [Xs: list_nat] :
( ( last_nat @ ( rev_nat @ Xs ) )
= ( hd_nat @ Xs ) ) ).
% last_rev
thf(fact_374_neq__if__length__neq,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( ( size_size_list_nat @ Xs )
!= ( size_size_list_nat @ Ys ) )
=> ( Xs != Ys ) ) ).
% neq_if_length_neq
thf(fact_375_Ex__list__of__length,axiom,
! [N: nat] :
? [Xs2: list_nat] :
( ( size_size_list_nat @ Xs2 )
= N ) ).
% Ex_list_of_length
thf(fact_376_in__set__product__lists__length,axiom,
! [Xs: list_a,Xss2: list_list_a] :
( ( member_list_a2 @ Xs @ ( set_list_a2 @ ( product_lists_a @ Xss2 ) ) )
=> ( ( size_size_list_a @ Xs )
= ( size_s349497388124573686list_a @ Xss2 ) ) ) ).
% in_set_product_lists_length
thf(fact_377_in__set__product__lists__length,axiom,
! [Xs: list_nat,Xss2: list_list_nat] :
( ( member_list_nat2 @ Xs @ ( set_list_nat2 @ ( product_lists_nat @ Xss2 ) ) )
=> ( ( size_size_list_nat @ Xs )
= ( size_s3023201423986296836st_nat @ Xss2 ) ) ) ).
% in_set_product_lists_length
thf(fact_378_rev_Osimps_I1_J,axiom,
( ( rev_nat @ nil_nat )
= nil_nat ) ).
% rev.simps(1)
thf(fact_379_list_Osel_I1_J,axiom,
! [X21: a,X22: list_a] :
( ( hd_a @ ( cons_a @ X21 @ X22 ) )
= X21 ) ).
% list.sel(1)
thf(fact_380_list_Osel_I1_J,axiom,
! [X21: nat,X22: list_nat] :
( ( hd_nat @ ( cons_nat @ X21 @ X22 ) )
= X21 ) ).
% list.sel(1)
thf(fact_381_remdups__adj_Osimps_I3_J,axiom,
! [X: a,Y: a,Xs: list_a] :
( ( ( X = Y )
=> ( ( remdups_adj_a @ ( cons_a @ X @ ( cons_a @ Y @ Xs ) ) )
= ( remdups_adj_a @ ( cons_a @ X @ Xs ) ) ) )
& ( ( X != Y )
=> ( ( remdups_adj_a @ ( cons_a @ X @ ( cons_a @ Y @ Xs ) ) )
= ( cons_a @ X @ ( remdups_adj_a @ ( cons_a @ Y @ Xs ) ) ) ) ) ) ).
% remdups_adj.simps(3)
thf(fact_382_remdups__adj_Osimps_I3_J,axiom,
! [X: nat,Y: nat,Xs: list_nat] :
( ( ( X = Y )
=> ( ( remdups_adj_nat @ ( cons_nat @ X @ ( cons_nat @ Y @ Xs ) ) )
= ( remdups_adj_nat @ ( cons_nat @ X @ Xs ) ) ) )
& ( ( X != Y )
=> ( ( remdups_adj_nat @ ( cons_nat @ X @ ( cons_nat @ Y @ Xs ) ) )
= ( cons_nat @ X @ ( remdups_adj_nat @ ( cons_nat @ Y @ Xs ) ) ) ) ) ) ).
% remdups_adj.simps(3)
thf(fact_383_remdups__adj_Osimps_I1_J,axiom,
( ( remdups_adj_nat @ nil_nat )
= nil_nat ) ).
% remdups_adj.simps(1)
thf(fact_384_lexordp__eq_ONil,axiom,
! [Ys: list_nat] : ( ord_lexordp_eq_nat @ nil_nat @ Ys ) ).
% lexordp_eq.Nil
thf(fact_385_lexordp__eq__pref,axiom,
! [U: list_nat,V: list_nat] : ( ord_lexordp_eq_nat @ U @ ( append_nat @ U @ V ) ) ).
% lexordp_eq_pref
thf(fact_386_remdups__adj__append_H,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( ( Xs = nil_nat )
| ( Ys = nil_nat )
| ( ( last_nat @ Xs )
!= ( hd_nat @ Ys ) ) )
=> ( ( remdups_adj_nat @ ( append_nat @ Xs @ Ys ) )
= ( append_nat @ ( remdups_adj_nat @ Xs ) @ ( remdups_adj_nat @ Ys ) ) ) ) ).
% remdups_adj_append'
thf(fact_387_hd__concat,axiom,
! [Xs: list_list_nat] :
( ( Xs != nil_list_nat )
=> ( ( ( hd_list_nat @ Xs )
!= nil_nat )
=> ( ( hd_nat @ ( concat_nat @ Xs ) )
= ( hd_nat @ ( hd_list_nat @ Xs ) ) ) ) ) ).
% hd_concat
thf(fact_388_splice_Osimps_I2_J,axiom,
! [X: a,Xs: list_a,Ys: list_a] :
( ( splice_a @ ( cons_a @ X @ Xs ) @ Ys )
= ( cons_a @ X @ ( splice_a @ Ys @ Xs ) ) ) ).
% splice.simps(2)
thf(fact_389_splice_Osimps_I2_J,axiom,
! [X: nat,Xs: list_nat,Ys: list_nat] :
( ( splice_nat @ ( cons_nat @ X @ Xs ) @ Ys )
= ( cons_nat @ X @ ( splice_nat @ Ys @ Xs ) ) ) ).
% splice.simps(2)
thf(fact_390_splice_Osimps_I1_J,axiom,
! [Ys: list_nat] :
( ( splice_nat @ nil_nat @ Ys )
= Ys ) ).
% splice.simps(1)
thf(fact_391_list__induct2,axiom,
! [Xs: list_a,Ys: list_a,P: list_a > list_a > $o] :
( ( ( size_size_list_a @ Xs )
= ( size_size_list_a @ Ys ) )
=> ( ( P @ nil_a @ nil_a )
=> ( ! [X3: a,Xs2: list_a,Y2: a,Ys3: list_a] :
( ( ( size_size_list_a @ Xs2 )
= ( size_size_list_a @ Ys3 ) )
=> ( ( P @ Xs2 @ Ys3 )
=> ( P @ ( cons_a @ X3 @ Xs2 ) @ ( cons_a @ Y2 @ Ys3 ) ) ) )
=> ( P @ Xs @ Ys ) ) ) ) ).
% list_induct2
thf(fact_392_list__induct2,axiom,
! [Xs: list_a,Ys: list_nat,P: list_a > list_nat > $o] :
( ( ( size_size_list_a @ Xs )
= ( size_size_list_nat @ Ys ) )
=> ( ( P @ nil_a @ nil_nat )
=> ( ! [X3: a,Xs2: list_a,Y2: nat,Ys3: list_nat] :
( ( ( size_size_list_a @ Xs2 )
= ( size_size_list_nat @ Ys3 ) )
=> ( ( P @ Xs2 @ Ys3 )
=> ( P @ ( cons_a @ X3 @ Xs2 ) @ ( cons_nat @ Y2 @ Ys3 ) ) ) )
=> ( P @ Xs @ Ys ) ) ) ) ).
% list_induct2
thf(fact_393_list__induct2,axiom,
! [Xs: list_nat,Ys: list_a,P: list_nat > list_a > $o] :
( ( ( size_size_list_nat @ Xs )
= ( size_size_list_a @ Ys ) )
=> ( ( P @ nil_nat @ nil_a )
=> ( ! [X3: nat,Xs2: list_nat,Y2: a,Ys3: list_a] :
( ( ( size_size_list_nat @ Xs2 )
= ( size_size_list_a @ Ys3 ) )
=> ( ( P @ Xs2 @ Ys3 )
=> ( P @ ( cons_nat @ X3 @ Xs2 ) @ ( cons_a @ Y2 @ Ys3 ) ) ) )
=> ( P @ Xs @ Ys ) ) ) ) ).
% list_induct2
thf(fact_394_list__induct2,axiom,
! [Xs: list_nat,Ys: list_nat,P: list_nat > list_nat > $o] :
( ( ( size_size_list_nat @ Xs )
= ( size_size_list_nat @ Ys ) )
=> ( ( P @ nil_nat @ nil_nat )
=> ( ! [X3: nat,Xs2: list_nat,Y2: nat,Ys3: list_nat] :
( ( ( size_size_list_nat @ Xs2 )
= ( size_size_list_nat @ Ys3 ) )
=> ( ( P @ Xs2 @ Ys3 )
=> ( P @ ( cons_nat @ X3 @ Xs2 ) @ ( cons_nat @ Y2 @ Ys3 ) ) ) )
=> ( P @ Xs @ Ys ) ) ) ) ).
% list_induct2
thf(fact_395_list__induct3,axiom,
! [Xs: list_a,Ys: list_a,Zs: list_a,P: list_a > list_a > list_a > $o] :
( ( ( size_size_list_a @ Xs )
= ( size_size_list_a @ Ys ) )
=> ( ( ( size_size_list_a @ Ys )
= ( size_size_list_a @ Zs ) )
=> ( ( P @ nil_a @ nil_a @ nil_a )
=> ( ! [X3: a,Xs2: list_a,Y2: a,Ys3: list_a,Z: a,Zs2: list_a] :
( ( ( size_size_list_a @ Xs2 )
= ( size_size_list_a @ Ys3 ) )
=> ( ( ( size_size_list_a @ Ys3 )
= ( size_size_list_a @ Zs2 ) )
=> ( ( P @ Xs2 @ Ys3 @ Zs2 )
=> ( P @ ( cons_a @ X3 @ Xs2 ) @ ( cons_a @ Y2 @ Ys3 ) @ ( cons_a @ Z @ Zs2 ) ) ) ) )
=> ( P @ Xs @ Ys @ Zs ) ) ) ) ) ).
% list_induct3
thf(fact_396_list__induct3,axiom,
! [Xs: list_a,Ys: list_a,Zs: list_nat,P: list_a > list_a > list_nat > $o] :
( ( ( size_size_list_a @ Xs )
= ( size_size_list_a @ Ys ) )
=> ( ( ( size_size_list_a @ Ys )
= ( size_size_list_nat @ Zs ) )
=> ( ( P @ nil_a @ nil_a @ nil_nat )
=> ( ! [X3: a,Xs2: list_a,Y2: a,Ys3: list_a,Z: nat,Zs2: list_nat] :
( ( ( size_size_list_a @ Xs2 )
= ( size_size_list_a @ Ys3 ) )
=> ( ( ( size_size_list_a @ Ys3 )
= ( size_size_list_nat @ Zs2 ) )
=> ( ( P @ Xs2 @ Ys3 @ Zs2 )
=> ( P @ ( cons_a @ X3 @ Xs2 ) @ ( cons_a @ Y2 @ Ys3 ) @ ( cons_nat @ Z @ Zs2 ) ) ) ) )
=> ( P @ Xs @ Ys @ Zs ) ) ) ) ) ).
% list_induct3
thf(fact_397_list__induct3,axiom,
! [Xs: list_a,Ys: list_nat,Zs: list_a,P: list_a > list_nat > list_a > $o] :
( ( ( size_size_list_a @ Xs )
= ( size_size_list_nat @ Ys ) )
=> ( ( ( size_size_list_nat @ Ys )
= ( size_size_list_a @ Zs ) )
=> ( ( P @ nil_a @ nil_nat @ nil_a )
=> ( ! [X3: a,Xs2: list_a,Y2: nat,Ys3: list_nat,Z: a,Zs2: list_a] :
( ( ( size_size_list_a @ Xs2 )
= ( size_size_list_nat @ Ys3 ) )
=> ( ( ( size_size_list_nat @ Ys3 )
= ( size_size_list_a @ Zs2 ) )
=> ( ( P @ Xs2 @ Ys3 @ Zs2 )
=> ( P @ ( cons_a @ X3 @ Xs2 ) @ ( cons_nat @ Y2 @ Ys3 ) @ ( cons_a @ Z @ Zs2 ) ) ) ) )
=> ( P @ Xs @ Ys @ Zs ) ) ) ) ) ).
% list_induct3
thf(fact_398_list__induct3,axiom,
! [Xs: list_a,Ys: list_nat,Zs: list_nat,P: list_a > list_nat > list_nat > $o] :
( ( ( size_size_list_a @ Xs )
= ( size_size_list_nat @ Ys ) )
=> ( ( ( size_size_list_nat @ Ys )
= ( size_size_list_nat @ Zs ) )
=> ( ( P @ nil_a @ nil_nat @ nil_nat )
=> ( ! [X3: a,Xs2: list_a,Y2: nat,Ys3: list_nat,Z: nat,Zs2: list_nat] :
( ( ( size_size_list_a @ Xs2 )
= ( size_size_list_nat @ Ys3 ) )
=> ( ( ( size_size_list_nat @ Ys3 )
= ( size_size_list_nat @ Zs2 ) )
=> ( ( P @ Xs2 @ Ys3 @ Zs2 )
=> ( P @ ( cons_a @ X3 @ Xs2 ) @ ( cons_nat @ Y2 @ Ys3 ) @ ( cons_nat @ Z @ Zs2 ) ) ) ) )
=> ( P @ Xs @ Ys @ Zs ) ) ) ) ) ).
% list_induct3
thf(fact_399_list__induct3,axiom,
! [Xs: list_nat,Ys: list_a,Zs: list_a,P: list_nat > list_a > list_a > $o] :
( ( ( size_size_list_nat @ Xs )
= ( size_size_list_a @ Ys ) )
=> ( ( ( size_size_list_a @ Ys )
= ( size_size_list_a @ Zs ) )
=> ( ( P @ nil_nat @ nil_a @ nil_a )
=> ( ! [X3: nat,Xs2: list_nat,Y2: a,Ys3: list_a,Z: a,Zs2: list_a] :
( ( ( size_size_list_nat @ Xs2 )
= ( size_size_list_a @ Ys3 ) )
=> ( ( ( size_size_list_a @ Ys3 )
= ( size_size_list_a @ Zs2 ) )
=> ( ( P @ Xs2 @ Ys3 @ Zs2 )
=> ( P @ ( cons_nat @ X3 @ Xs2 ) @ ( cons_a @ Y2 @ Ys3 ) @ ( cons_a @ Z @ Zs2 ) ) ) ) )
=> ( P @ Xs @ Ys @ Zs ) ) ) ) ) ).
% list_induct3
thf(fact_400_list__induct3,axiom,
! [Xs: list_nat,Ys: list_a,Zs: list_nat,P: list_nat > list_a > list_nat > $o] :
( ( ( size_size_list_nat @ Xs )
= ( size_size_list_a @ Ys ) )
=> ( ( ( size_size_list_a @ Ys )
= ( size_size_list_nat @ Zs ) )
=> ( ( P @ nil_nat @ nil_a @ nil_nat )
=> ( ! [X3: nat,Xs2: list_nat,Y2: a,Ys3: list_a,Z: nat,Zs2: list_nat] :
( ( ( size_size_list_nat @ Xs2 )
= ( size_size_list_a @ Ys3 ) )
=> ( ( ( size_size_list_a @ Ys3 )
= ( size_size_list_nat @ Zs2 ) )
=> ( ( P @ Xs2 @ Ys3 @ Zs2 )
=> ( P @ ( cons_nat @ X3 @ Xs2 ) @ ( cons_a @ Y2 @ Ys3 ) @ ( cons_nat @ Z @ Zs2 ) ) ) ) )
=> ( P @ Xs @ Ys @ Zs ) ) ) ) ) ).
% list_induct3
thf(fact_401_list__induct3,axiom,
! [Xs: list_nat,Ys: list_nat,Zs: list_a,P: list_nat > list_nat > list_a > $o] :
( ( ( size_size_list_nat @ Xs )
= ( size_size_list_nat @ Ys ) )
=> ( ( ( size_size_list_nat @ Ys )
= ( size_size_list_a @ Zs ) )
=> ( ( P @ nil_nat @ nil_nat @ nil_a )
=> ( ! [X3: nat,Xs2: list_nat,Y2: nat,Ys3: list_nat,Z: a,Zs2: list_a] :
( ( ( size_size_list_nat @ Xs2 )
= ( size_size_list_nat @ Ys3 ) )
=> ( ( ( size_size_list_nat @ Ys3 )
= ( size_size_list_a @ Zs2 ) )
=> ( ( P @ Xs2 @ Ys3 @ Zs2 )
=> ( P @ ( cons_nat @ X3 @ Xs2 ) @ ( cons_nat @ Y2 @ Ys3 ) @ ( cons_a @ Z @ Zs2 ) ) ) ) )
=> ( P @ Xs @ Ys @ Zs ) ) ) ) ) ).
% list_induct3
thf(fact_402_list__induct3,axiom,
! [Xs: list_nat,Ys: list_nat,Zs: list_nat,P: list_nat > list_nat > list_nat > $o] :
( ( ( size_size_list_nat @ Xs )
= ( size_size_list_nat @ Ys ) )
=> ( ( ( size_size_list_nat @ Ys )
= ( size_size_list_nat @ Zs ) )
=> ( ( P @ nil_nat @ nil_nat @ nil_nat )
=> ( ! [X3: nat,Xs2: list_nat,Y2: nat,Ys3: list_nat,Z: nat,Zs2: list_nat] :
( ( ( size_size_list_nat @ Xs2 )
= ( size_size_list_nat @ Ys3 ) )
=> ( ( ( size_size_list_nat @ Ys3 )
= ( size_size_list_nat @ Zs2 ) )
=> ( ( P @ Xs2 @ Ys3 @ Zs2 )
=> ( P @ ( cons_nat @ X3 @ Xs2 ) @ ( cons_nat @ Y2 @ Ys3 ) @ ( cons_nat @ Z @ Zs2 ) ) ) ) )
=> ( P @ Xs @ Ys @ Zs ) ) ) ) ) ).
% list_induct3
thf(fact_403_hd__in__set,axiom,
! [Xs: list_list_nat] :
( ( Xs != nil_list_nat )
=> ( member_list_nat2 @ ( hd_list_nat @ Xs ) @ ( set_list_nat2 @ Xs ) ) ) ).
% hd_in_set
thf(fact_404_hd__in__set,axiom,
! [Xs: list_list_a] :
( ( Xs != nil_list_a )
=> ( member_list_a2 @ ( hd_list_a @ Xs ) @ ( set_list_a2 @ Xs ) ) ) ).
% hd_in_set
thf(fact_405_hd__in__set,axiom,
! [Xs: list_nat] :
( ( Xs != nil_nat )
=> ( member_nat2 @ ( hd_nat @ Xs ) @ ( set_nat2 @ Xs ) ) ) ).
% hd_in_set
thf(fact_406_list_Oset__sel_I1_J,axiom,
! [A: list_list_nat] :
( ( A != nil_list_nat )
=> ( member_list_nat2 @ ( hd_list_nat @ A ) @ ( set_list_nat2 @ A ) ) ) ).
% list.set_sel(1)
thf(fact_407_list_Oset__sel_I1_J,axiom,
! [A: list_list_a] :
( ( A != nil_list_a )
=> ( member_list_a2 @ ( hd_list_a @ A ) @ ( set_list_a2 @ A ) ) ) ).
% list.set_sel(1)
thf(fact_408_list_Oset__sel_I1_J,axiom,
! [A: list_nat] :
( ( A != nil_nat )
=> ( member_nat2 @ ( hd_nat @ A ) @ ( set_nat2 @ A ) ) ) ).
% list.set_sel(1)
thf(fact_409_longest__common__prefix,axiom,
! [Xs: list_nat,Ys: list_nat] :
? [Ps: list_nat,Xs6: list_nat,Ys6: list_nat] :
( ( Xs
= ( append_nat @ Ps @ Xs6 ) )
& ( Ys
= ( append_nat @ Ps @ Ys6 ) )
& ( ( Xs6 = nil_nat )
| ( Ys6 = nil_nat )
| ( ( hd_nat @ Xs6 )
!= ( hd_nat @ Ys6 ) ) ) ) ).
% longest_common_prefix
thf(fact_410_hd__append,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( ( Xs = nil_nat )
=> ( ( hd_nat @ ( append_nat @ Xs @ Ys ) )
= ( hd_nat @ Ys ) ) )
& ( ( Xs != nil_nat )
=> ( ( hd_nat @ ( append_nat @ Xs @ Ys ) )
= ( hd_nat @ Xs ) ) ) ) ).
% hd_append
thf(fact_411_remdups__adj_Osimps_I2_J,axiom,
! [X: a] :
( ( remdups_adj_a @ ( cons_a @ X @ nil_a ) )
= ( cons_a @ X @ nil_a ) ) ).
% remdups_adj.simps(2)
thf(fact_412_remdups__adj_Osimps_I2_J,axiom,
! [X: nat] :
( ( remdups_adj_nat @ ( cons_nat @ X @ nil_nat ) )
= ( cons_nat @ X @ nil_nat ) ) ).
% remdups_adj.simps(2)
thf(fact_413_remdups__adj_Oelims,axiom,
! [X: list_a,Y: list_a] :
( ( ( remdups_adj_a @ X )
= Y )
=> ( ( ( X = nil_a )
=> ( Y != nil_a ) )
=> ( ! [X3: a] :
( ( X
= ( cons_a @ X3 @ nil_a ) )
=> ( Y
!= ( cons_a @ X3 @ nil_a ) ) )
=> ~ ! [X3: a,Y2: a,Xs2: list_a] :
( ( X
= ( cons_a @ X3 @ ( cons_a @ Y2 @ Xs2 ) ) )
=> ~ ( ( ( X3 = Y2 )
=> ( Y
= ( remdups_adj_a @ ( cons_a @ X3 @ Xs2 ) ) ) )
& ( ( X3 != Y2 )
=> ( Y
= ( cons_a @ X3 @ ( remdups_adj_a @ ( cons_a @ Y2 @ Xs2 ) ) ) ) ) ) ) ) ) ) ).
% remdups_adj.elims
thf(fact_414_remdups__adj_Oelims,axiom,
! [X: list_nat,Y: list_nat] :
( ( ( remdups_adj_nat @ X )
= Y )
=> ( ( ( X = nil_nat )
=> ( Y != nil_nat ) )
=> ( ! [X3: nat] :
( ( X
= ( cons_nat @ X3 @ nil_nat ) )
=> ( Y
!= ( cons_nat @ X3 @ nil_nat ) ) )
=> ~ ! [X3: nat,Y2: nat,Xs2: list_nat] :
( ( X
= ( cons_nat @ X3 @ ( cons_nat @ Y2 @ Xs2 ) ) )
=> ~ ( ( ( X3 = Y2 )
=> ( Y
= ( remdups_adj_nat @ ( cons_nat @ X3 @ Xs2 ) ) ) )
& ( ( X3 != Y2 )
=> ( Y
= ( cons_nat @ X3 @ ( remdups_adj_nat @ ( cons_nat @ Y2 @ Xs2 ) ) ) ) ) ) ) ) ) ) ).
% remdups_adj.elims
thf(fact_415_hd__Nil__eq__last,axiom,
( ( hd_nat @ nil_nat )
= ( last_nat @ nil_nat ) ) ).
% hd_Nil_eq_last
thf(fact_416_rev__app__single,axiom,
! [Xs: list_a,X: a] :
( ( append_a @ ( rev_a @ Xs ) @ ( cons_a @ X @ nil_a ) )
= ( rev_a @ ( cons_a @ X @ Xs ) ) ) ).
% rev_app_single
thf(fact_417_rev__app__single,axiom,
! [Xs: list_nat,X: nat] :
( ( append_nat @ ( rev_nat @ Xs ) @ ( cons_nat @ X @ nil_nat ) )
= ( rev_nat @ ( cons_nat @ X @ Xs ) ) ) ).
% rev_app_single
thf(fact_418_app__rev,axiom,
! [As: list_nat,Bs: list_nat,Cs: list_nat,Ds: list_nat] :
( ( ( append_nat @ As @ ( rev_nat @ Bs ) )
= ( append_nat @ Cs @ ( rev_nat @ Ds ) ) )
=> ( ( append_nat @ Bs @ ( rev_nat @ As ) )
= ( append_nat @ Ds @ ( rev_nat @ Cs ) ) ) ) ).
% app_rev
thf(fact_419_cons__hd,axiom,
! [X: a,Xs: list_a,Ys: list_a] :
( ( ( cons_a @ X @ Xs )
= Ys )
=> ( X
= ( hd_a @ Ys ) ) ) ).
% cons_hd
thf(fact_420_cons__hd,axiom,
! [X: nat,Xs: list_nat,Ys: list_nat] :
( ( ( cons_nat @ X @ Xs )
= Ys )
=> ( X
= ( hd_nat @ Ys ) ) ) ).
% cons_hd
thf(fact_421_rotate1__hd__tl,axiom,
! [Xs: list_a] :
( ( Xs != nil_a )
=> ( ( rotate1_a @ Xs )
= ( append_a @ ( tl_a @ Xs ) @ ( cons_a @ ( hd_a @ Xs ) @ nil_a ) ) ) ) ).
% rotate1_hd_tl
thf(fact_422_rotate1__hd__tl,axiom,
! [Xs: list_nat] :
( ( Xs != nil_nat )
=> ( ( rotate1_nat @ Xs )
= ( append_nat @ ( tl_nat @ Xs ) @ ( cons_nat @ ( hd_nat @ Xs ) @ nil_nat ) ) ) ) ).
% rotate1_hd_tl
thf(fact_423_length__n__lists__elem,axiom,
! [Ys: list_a,N: nat,Xs: list_a] :
( ( member_list_a2 @ Ys @ ( set_list_a2 @ ( n_lists_a @ N @ Xs ) ) )
=> ( ( size_size_list_a @ Ys )
= N ) ) ).
% length_n_lists_elem
thf(fact_424_length__n__lists__elem,axiom,
! [Ys: list_nat,N: nat,Xs: list_nat] :
( ( member_list_nat2 @ Ys @ ( set_list_nat2 @ ( n_lists_nat @ N @ Xs ) ) )
=> ( ( size_size_list_nat @ Ys )
= N ) ) ).
% length_n_lists_elem
thf(fact_425_successively__append__iff,axiom,
! [P: nat > nat > $o,Xs: list_nat,Ys: list_nat] :
( ( successively_nat @ P @ ( append_nat @ Xs @ Ys ) )
= ( ( successively_nat @ P @ Xs )
& ( successively_nat @ P @ Ys )
& ( ( Xs = nil_nat )
| ( Ys = nil_nat )
| ( P @ ( last_nat @ Xs ) @ ( hd_nat @ Ys ) ) ) ) ) ).
% successively_append_iff
thf(fact_426_transpose__empty,axiom,
! [Xs: list_list_nat] :
( ( ( transpose_nat @ Xs )
= nil_list_nat )
= ( ! [X2: list_nat] :
( ( member_list_nat2 @ X2 @ ( set_list_nat2 @ Xs ) )
=> ( X2 = nil_nat ) ) ) ) ).
% transpose_empty
thf(fact_427_tl__append2,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( Xs != nil_nat )
=> ( ( tl_nat @ ( append_nat @ Xs @ Ys ) )
= ( append_nat @ ( tl_nat @ Xs ) @ Ys ) ) ) ).
% tl_append2
thf(fact_428_remdups__adj__Cons__alt,axiom,
! [X: a,Xs: list_a] :
( ( cons_a @ X @ ( tl_a @ ( remdups_adj_a @ ( cons_a @ X @ Xs ) ) ) )
= ( remdups_adj_a @ ( cons_a @ X @ Xs ) ) ) ).
% remdups_adj_Cons_alt
thf(fact_429_remdups__adj__Cons__alt,axiom,
! [X: nat,Xs: list_nat] :
( ( cons_nat @ X @ ( tl_nat @ ( remdups_adj_nat @ ( cons_nat @ X @ Xs ) ) ) )
= ( remdups_adj_nat @ ( cons_nat @ X @ Xs ) ) ) ).
% remdups_adj_Cons_alt
thf(fact_430_butlast__rev,axiom,
! [Xs: list_nat] :
( ( butlast_nat @ ( rev_nat @ Xs ) )
= ( rev_nat @ ( tl_nat @ Xs ) ) ) ).
% butlast_rev
thf(fact_431_list_Ocollapse,axiom,
! [List: list_a] :
( ( List != nil_a )
=> ( ( cons_a @ ( hd_a @ List ) @ ( tl_a @ List ) )
= List ) ) ).
% list.collapse
thf(fact_432_list_Ocollapse,axiom,
! [List: list_nat] :
( ( List != nil_nat )
=> ( ( cons_nat @ ( hd_nat @ List ) @ ( tl_nat @ List ) )
= List ) ) ).
% list.collapse
thf(fact_433_hd__Cons__tl,axiom,
! [Xs: list_a] :
( ( Xs != nil_a )
=> ( ( cons_a @ ( hd_a @ Xs ) @ ( tl_a @ Xs ) )
= Xs ) ) ).
% hd_Cons_tl
thf(fact_434_hd__Cons__tl,axiom,
! [Xs: list_nat] :
( ( Xs != nil_nat )
=> ( ( cons_nat @ ( hd_nat @ Xs ) @ ( tl_nat @ Xs ) )
= Xs ) ) ).
% hd_Cons_tl
thf(fact_435_cons__tl,axiom,
! [X: a,Xs: list_a,Ys: list_a] :
( ( ( cons_a @ X @ Xs )
= Ys )
=> ( Xs
= ( tl_a @ Ys ) ) ) ).
% cons_tl
thf(fact_436_cons__tl,axiom,
! [X: nat,Xs: list_nat,Ys: list_nat] :
( ( ( cons_nat @ X @ Xs )
= Ys )
=> ( Xs
= ( tl_nat @ Ys ) ) ) ).
% cons_tl
thf(fact_437_list_Osel_I3_J,axiom,
! [X21: a,X22: list_a] :
( ( tl_a @ ( cons_a @ X21 @ X22 ) )
= X22 ) ).
% list.sel(3)
thf(fact_438_list_Osel_I3_J,axiom,
! [X21: nat,X22: list_nat] :
( ( tl_nat @ ( cons_nat @ X21 @ X22 ) )
= X22 ) ).
% list.sel(3)
thf(fact_439_list_Osel_I2_J,axiom,
( ( tl_nat @ nil_nat )
= nil_nat ) ).
% list.sel(2)
thf(fact_440_successively_Oelims_I3_J,axiom,
! [X: a > a > $o,Xa: list_a] :
( ~ ( successively_a @ X @ Xa )
=> ~ ! [X3: a,Y2: a,Xs2: list_a] :
( ( Xa
= ( cons_a @ X3 @ ( cons_a @ Y2 @ Xs2 ) ) )
=> ( ( X @ X3 @ Y2 )
& ( successively_a @ X @ ( cons_a @ Y2 @ Xs2 ) ) ) ) ) ).
% successively.elims(3)
thf(fact_441_successively_Oelims_I3_J,axiom,
! [X: nat > nat > $o,Xa: list_nat] :
( ~ ( successively_nat @ X @ Xa )
=> ~ ! [X3: nat,Y2: nat,Xs2: list_nat] :
( ( Xa
= ( cons_nat @ X3 @ ( cons_nat @ Y2 @ Xs2 ) ) )
=> ( ( X @ X3 @ Y2 )
& ( successively_nat @ X @ ( cons_nat @ Y2 @ Xs2 ) ) ) ) ) ).
% successively.elims(3)
thf(fact_442_successively_Osimps_I3_J,axiom,
! [P: a > a > $o,X: a,Y: a,Xs: list_a] :
( ( successively_a @ P @ ( cons_a @ X @ ( cons_a @ Y @ Xs ) ) )
= ( ( P @ X @ Y )
& ( successively_a @ P @ ( cons_a @ Y @ Xs ) ) ) ) ).
% successively.simps(3)
thf(fact_443_successively_Osimps_I3_J,axiom,
! [P: nat > nat > $o,X: nat,Y: nat,Xs: list_nat] :
( ( successively_nat @ P @ ( cons_nat @ X @ ( cons_nat @ Y @ Xs ) ) )
= ( ( P @ X @ Y )
& ( successively_nat @ P @ ( cons_nat @ Y @ Xs ) ) ) ) ).
% successively.simps(3)
thf(fact_444_successively_Osimps_I1_J,axiom,
! [P: nat > nat > $o] : ( successively_nat @ P @ nil_nat ) ).
% successively.simps(1)
thf(fact_445_successively__cong,axiom,
! [Xs: list_list_nat,P: list_nat > list_nat > $o,Q: list_nat > list_nat > $o,Ys: list_list_nat] :
( ! [X3: list_nat,Y2: list_nat] :
( ( member_list_nat2 @ X3 @ ( set_list_nat2 @ Xs ) )
=> ( ( member_list_nat2 @ Y2 @ ( set_list_nat2 @ Xs ) )
=> ( ( P @ X3 @ Y2 )
= ( Q @ X3 @ Y2 ) ) ) )
=> ( ( Xs = Ys )
=> ( ( succes2524082786233489485st_nat @ P @ Xs )
= ( succes2524082786233489485st_nat @ Q @ Ys ) ) ) ) ).
% successively_cong
thf(fact_446_successively__cong,axiom,
! [Xs: list_list_a,P: list_a > list_a > $o,Q: list_a > list_a > $o,Ys: list_list_a] :
( ! [X3: list_a,Y2: list_a] :
( ( member_list_a2 @ X3 @ ( set_list_a2 @ Xs ) )
=> ( ( member_list_a2 @ Y2 @ ( set_list_a2 @ Xs ) )
=> ( ( P @ X3 @ Y2 )
= ( Q @ X3 @ Y2 ) ) ) )
=> ( ( Xs = Ys )
=> ( ( successively_list_a @ P @ Xs )
= ( successively_list_a @ Q @ Ys ) ) ) ) ).
% successively_cong
thf(fact_447_successively__cong,axiom,
! [Xs: list_nat,P: nat > nat > $o,Q: nat > nat > $o,Ys: list_nat] :
( ! [X3: nat,Y2: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ Xs ) )
=> ( ( member_nat2 @ Y2 @ ( set_nat2 @ Xs ) )
=> ( ( P @ X3 @ Y2 )
= ( Q @ X3 @ Y2 ) ) ) )
=> ( ( Xs = Ys )
=> ( ( successively_nat @ P @ Xs )
= ( successively_nat @ Q @ Ys ) ) ) ) ).
% successively_cong
thf(fact_448_successively__mono,axiom,
! [P: list_nat > list_nat > $o,Xs: list_list_nat,Q: list_nat > list_nat > $o] :
( ( succes2524082786233489485st_nat @ P @ Xs )
=> ( ! [X3: list_nat,Y2: list_nat] :
( ( member_list_nat2 @ X3 @ ( set_list_nat2 @ Xs ) )
=> ( ( member_list_nat2 @ Y2 @ ( set_list_nat2 @ Xs ) )
=> ( ( P @ X3 @ Y2 )
=> ( Q @ X3 @ Y2 ) ) ) )
=> ( succes2524082786233489485st_nat @ Q @ Xs ) ) ) ).
% successively_mono
thf(fact_449_successively__mono,axiom,
! [P: list_a > list_a > $o,Xs: list_list_a,Q: list_a > list_a > $o] :
( ( successively_list_a @ P @ Xs )
=> ( ! [X3: list_a,Y2: list_a] :
( ( member_list_a2 @ X3 @ ( set_list_a2 @ Xs ) )
=> ( ( member_list_a2 @ Y2 @ ( set_list_a2 @ Xs ) )
=> ( ( P @ X3 @ Y2 )
=> ( Q @ X3 @ Y2 ) ) ) )
=> ( successively_list_a @ Q @ Xs ) ) ) ).
% successively_mono
thf(fact_450_successively__mono,axiom,
! [P: nat > nat > $o,Xs: list_nat,Q: nat > nat > $o] :
( ( successively_nat @ P @ Xs )
=> ( ! [X3: nat,Y2: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ Xs ) )
=> ( ( member_nat2 @ Y2 @ ( set_nat2 @ Xs ) )
=> ( ( P @ X3 @ Y2 )
=> ( Q @ X3 @ Y2 ) ) ) )
=> ( successively_nat @ Q @ Xs ) ) ) ).
% successively_mono
thf(fact_451_butlast__tl,axiom,
! [Xs: list_nat] :
( ( butlast_nat @ ( tl_nat @ Xs ) )
= ( tl_nat @ ( butlast_nat @ Xs ) ) ) ).
% butlast_tl
thf(fact_452_tl__Nil,axiom,
! [Xs: list_a] :
( ( ( tl_a @ Xs )
= nil_a )
= ( ( Xs = nil_a )
| ? [X2: a] :
( Xs
= ( cons_a @ X2 @ nil_a ) ) ) ) ).
% tl_Nil
thf(fact_453_tl__Nil,axiom,
! [Xs: list_nat] :
( ( ( tl_nat @ Xs )
= nil_nat )
= ( ( Xs = nil_nat )
| ? [X2: nat] :
( Xs
= ( cons_nat @ X2 @ nil_nat ) ) ) ) ).
% tl_Nil
thf(fact_454_Nil__tl,axiom,
! [Xs: list_a] :
( ( nil_a
= ( tl_a @ Xs ) )
= ( ( Xs = nil_a )
| ? [X2: a] :
( Xs
= ( cons_a @ X2 @ nil_a ) ) ) ) ).
% Nil_tl
thf(fact_455_Nil__tl,axiom,
! [Xs: list_nat] :
( ( nil_nat
= ( tl_nat @ Xs ) )
= ( ( Xs = nil_nat )
| ? [X2: nat] :
( Xs
= ( cons_nat @ X2 @ nil_nat ) ) ) ) ).
% Nil_tl
thf(fact_456_list_Oset__sel_I2_J,axiom,
! [A: list_list_nat,X: list_nat] :
( ( A != nil_list_nat )
=> ( ( member_list_nat2 @ X @ ( set_list_nat2 @ ( tl_list_nat @ A ) ) )
=> ( member_list_nat2 @ X @ ( set_list_nat2 @ A ) ) ) ) ).
% list.set_sel(2)
thf(fact_457_list_Oset__sel_I2_J,axiom,
! [A: list_list_a,X: list_a] :
( ( A != nil_list_a )
=> ( ( member_list_a2 @ X @ ( set_list_a2 @ ( tl_list_a @ A ) ) )
=> ( member_list_a2 @ X @ ( set_list_a2 @ A ) ) ) ) ).
% list.set_sel(2)
thf(fact_458_list_Oset__sel_I2_J,axiom,
! [A: list_nat,X: nat] :
( ( A != nil_nat )
=> ( ( member_nat2 @ X @ ( set_nat2 @ ( tl_nat @ A ) ) )
=> ( member_nat2 @ X @ ( set_nat2 @ A ) ) ) ) ).
% list.set_sel(2)
thf(fact_459_tl__append__if,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( ( Xs = nil_nat )
=> ( ( tl_nat @ ( append_nat @ Xs @ Ys ) )
= ( tl_nat @ Ys ) ) )
& ( ( Xs != nil_nat )
=> ( ( tl_nat @ ( append_nat @ Xs @ Ys ) )
= ( append_nat @ ( tl_nat @ Xs ) @ Ys ) ) ) ) ).
% tl_append_if
thf(fact_460_list_Oexpand,axiom,
! [List: list_nat,List2: list_nat] :
( ( ( List = nil_nat )
= ( List2 = nil_nat ) )
=> ( ( ( List != nil_nat )
=> ( ( List2 != nil_nat )
=> ( ( ( hd_nat @ List )
= ( hd_nat @ List2 ) )
& ( ( tl_nat @ List )
= ( tl_nat @ List2 ) ) ) ) )
=> ( List = List2 ) ) ) ).
% list.expand
thf(fact_461_last__tl,axiom,
! [Xs: list_nat] :
( ( ( Xs = nil_nat )
| ( ( tl_nat @ Xs )
!= nil_nat ) )
=> ( ( last_nat @ ( tl_nat @ Xs ) )
= ( last_nat @ Xs ) ) ) ).
% last_tl
thf(fact_462_successively_Osimps_I2_J,axiom,
! [P: a > a > $o,X: a] : ( successively_a @ P @ ( cons_a @ X @ nil_a ) ) ).
% successively.simps(2)
thf(fact_463_successively_Osimps_I2_J,axiom,
! [P: nat > nat > $o,X: nat] : ( successively_nat @ P @ ( cons_nat @ X @ nil_nat ) ) ).
% successively.simps(2)
thf(fact_464_successively_Oelims_I1_J,axiom,
! [X: a > a > $o,Xa: list_a,Y: $o] :
( ( ( successively_a @ X @ Xa )
= Y )
=> ( ( ( Xa = nil_a )
=> ~ Y )
=> ( ( ? [X3: a] :
( Xa
= ( cons_a @ X3 @ nil_a ) )
=> ~ Y )
=> ~ ! [X3: a,Y2: a,Xs2: list_a] :
( ( Xa
= ( cons_a @ X3 @ ( cons_a @ Y2 @ Xs2 ) ) )
=> ( Y
= ( ~ ( ( X @ X3 @ Y2 )
& ( successively_a @ X @ ( cons_a @ Y2 @ Xs2 ) ) ) ) ) ) ) ) ) ).
% successively.elims(1)
thf(fact_465_successively_Oelims_I1_J,axiom,
! [X: nat > nat > $o,Xa: list_nat,Y: $o] :
( ( ( successively_nat @ X @ Xa )
= Y )
=> ( ( ( Xa = nil_nat )
=> ~ Y )
=> ( ( ? [X3: nat] :
( Xa
= ( cons_nat @ X3 @ nil_nat ) )
=> ~ Y )
=> ~ ! [X3: nat,Y2: nat,Xs2: list_nat] :
( ( Xa
= ( cons_nat @ X3 @ ( cons_nat @ Y2 @ Xs2 ) ) )
=> ( Y
= ( ~ ( ( X @ X3 @ Y2 )
& ( successively_nat @ X @ ( cons_nat @ Y2 @ Xs2 ) ) ) ) ) ) ) ) ) ).
% successively.elims(1)
thf(fact_466_successively_Oelims_I2_J,axiom,
! [X: a > a > $o,Xa: list_a] :
( ( successively_a @ X @ Xa )
=> ( ( Xa != nil_a )
=> ( ! [X3: a] :
( Xa
!= ( cons_a @ X3 @ nil_a ) )
=> ~ ! [X3: a,Y2: a,Xs2: list_a] :
( ( Xa
= ( cons_a @ X3 @ ( cons_a @ Y2 @ Xs2 ) ) )
=> ~ ( ( X @ X3 @ Y2 )
& ( successively_a @ X @ ( cons_a @ Y2 @ Xs2 ) ) ) ) ) ) ) ).
% successively.elims(2)
thf(fact_467_successively_Oelims_I2_J,axiom,
! [X: nat > nat > $o,Xa: list_nat] :
( ( successively_nat @ X @ Xa )
=> ( ( Xa != nil_nat )
=> ( ! [X3: nat] :
( Xa
!= ( cons_nat @ X3 @ nil_nat ) )
=> ~ ! [X3: nat,Y2: nat,Xs2: list_nat] :
( ( Xa
= ( cons_nat @ X3 @ ( cons_nat @ Y2 @ Xs2 ) ) )
=> ~ ( ( X @ X3 @ Y2 )
& ( successively_nat @ X @ ( cons_nat @ Y2 @ Xs2 ) ) ) ) ) ) ) ).
% successively.elims(2)
thf(fact_468_successively__remdups__adj__iff,axiom,
! [Xs: list_list_nat,P: list_nat > list_nat > $o] :
( ! [X3: list_nat] :
( ( member_list_nat2 @ X3 @ ( set_list_nat2 @ Xs ) )
=> ( P @ X3 @ X3 ) )
=> ( ( succes2524082786233489485st_nat @ P @ ( remdups_adj_list_nat @ Xs ) )
= ( succes2524082786233489485st_nat @ P @ Xs ) ) ) ).
% successively_remdups_adj_iff
thf(fact_469_successively__remdups__adj__iff,axiom,
! [Xs: list_list_a,P: list_a > list_a > $o] :
( ! [X3: list_a] :
( ( member_list_a2 @ X3 @ ( set_list_a2 @ Xs ) )
=> ( P @ X3 @ X3 ) )
=> ( ( successively_list_a @ P @ ( remdups_adj_list_a @ Xs ) )
= ( successively_list_a @ P @ Xs ) ) ) ).
% successively_remdups_adj_iff
thf(fact_470_successively__remdups__adj__iff,axiom,
! [Xs: list_nat,P: nat > nat > $o] :
( ! [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ Xs ) )
=> ( P @ X3 @ X3 ) )
=> ( ( successively_nat @ P @ ( remdups_adj_nat @ Xs ) )
= ( successively_nat @ P @ Xs ) ) ) ).
% successively_remdups_adj_iff
thf(fact_471_transpose_Osimps_I2_J,axiom,
! [Xss2: list_list_nat] :
( ( transpose_nat @ ( cons_list_nat @ nil_nat @ Xss2 ) )
= ( transpose_nat @ Xss2 ) ) ).
% transpose.simps(2)
thf(fact_472_list_Oexhaust__sel,axiom,
! [List: list_a] :
( ( List != nil_a )
=> ( List
= ( cons_a @ ( hd_a @ List ) @ ( tl_a @ List ) ) ) ) ).
% list.exhaust_sel
thf(fact_473_list_Oexhaust__sel,axiom,
! [List: list_nat] :
( ( List != nil_nat )
=> ( List
= ( cons_nat @ ( hd_nat @ List ) @ ( tl_nat @ List ) ) ) ) ).
% list.exhaust_sel
thf(fact_474_successively__Cons,axiom,
! [P: a > a > $o,X: a,Xs: list_a] :
( ( successively_a @ P @ ( cons_a @ X @ Xs ) )
= ( ( Xs = nil_a )
| ( ( P @ X @ ( hd_a @ Xs ) )
& ( successively_a @ P @ Xs ) ) ) ) ).
% successively_Cons
thf(fact_475_successively__Cons,axiom,
! [P: nat > nat > $o,X: nat,Xs: list_nat] :
( ( successively_nat @ P @ ( cons_nat @ X @ Xs ) )
= ( ( Xs = nil_nat )
| ( ( P @ X @ ( hd_nat @ Xs ) )
& ( successively_nat @ P @ Xs ) ) ) ) ).
% successively_Cons
thf(fact_476_rev__tl__hd,axiom,
! [Xs: list_a] :
( ( Xs != nil_a )
=> ( ( append_a @ ( rev_a @ ( tl_a @ Xs ) ) @ ( cons_a @ ( hd_a @ Xs ) @ nil_a ) )
= ( rev_a @ Xs ) ) ) ).
% rev_tl_hd
thf(fact_477_rev__tl__hd,axiom,
! [Xs: list_nat] :
( ( Xs != nil_nat )
=> ( ( append_nat @ ( rev_nat @ ( tl_nat @ Xs ) ) @ ( cons_nat @ ( hd_nat @ Xs ) @ nil_nat ) )
= ( rev_nat @ Xs ) ) ) ).
% rev_tl_hd
thf(fact_478_remdups__adj__append,axiom,
! [Xs_1: list_a,X: a,Xs_2: list_a] :
( ( remdups_adj_a @ ( append_a @ Xs_1 @ ( cons_a @ X @ Xs_2 ) ) )
= ( append_a @ ( remdups_adj_a @ ( append_a @ Xs_1 @ ( cons_a @ X @ nil_a ) ) ) @ ( tl_a @ ( remdups_adj_a @ ( cons_a @ X @ Xs_2 ) ) ) ) ) ).
% remdups_adj_append
thf(fact_479_remdups__adj__append,axiom,
! [Xs_1: list_nat,X: nat,Xs_2: list_nat] :
( ( remdups_adj_nat @ ( append_nat @ Xs_1 @ ( cons_nat @ X @ Xs_2 ) ) )
= ( append_nat @ ( remdups_adj_nat @ ( append_nat @ Xs_1 @ ( cons_nat @ X @ nil_nat ) ) ) @ ( tl_nat @ ( remdups_adj_nat @ ( cons_nat @ X @ Xs_2 ) ) ) ) ) ).
% remdups_adj_append
thf(fact_480_n__lists__Nil,axiom,
! [N: nat] :
( ( ( N = zero_zero_nat )
=> ( ( n_lists_nat @ N @ nil_nat )
= ( cons_list_nat @ nil_nat @ nil_list_nat ) ) )
& ( ( N != zero_zero_nat )
=> ( ( n_lists_nat @ N @ nil_nat )
= nil_list_nat ) ) ) ).
% n_lists_Nil
thf(fact_481_n__lists_Osimps_I1_J,axiom,
! [Xs: list_nat] :
( ( n_lists_nat @ zero_zero_nat @ Xs )
= ( cons_list_nat @ nil_nat @ nil_list_nat ) ) ).
% n_lists.simps(1)
thf(fact_482_Cons__in__shuffles__iff,axiom,
! [Z3: a,Zs: list_a,Xs: list_a,Ys: list_a] :
( ( member_list_a2 @ ( cons_a @ Z3 @ Zs ) @ ( shuffles_a @ Xs @ Ys ) )
= ( ( ( Xs != nil_a )
& ( ( hd_a @ Xs )
= Z3 )
& ( member_list_a2 @ Zs @ ( shuffles_a @ ( tl_a @ Xs ) @ Ys ) ) )
| ( ( Ys != nil_a )
& ( ( hd_a @ Ys )
= Z3 )
& ( member_list_a2 @ Zs @ ( shuffles_a @ Xs @ ( tl_a @ Ys ) ) ) ) ) ) ).
% Cons_in_shuffles_iff
thf(fact_483_Cons__in__shuffles__iff,axiom,
! [Z3: nat,Zs: list_nat,Xs: list_nat,Ys: list_nat] :
( ( member_list_nat2 @ ( cons_nat @ Z3 @ Zs ) @ ( shuffles_nat @ Xs @ Ys ) )
= ( ( ( Xs != nil_nat )
& ( ( hd_nat @ Xs )
= Z3 )
& ( member_list_nat2 @ Zs @ ( shuffles_nat @ ( tl_nat @ Xs ) @ Ys ) ) )
| ( ( Ys != nil_nat )
& ( ( hd_nat @ Ys )
= Z3 )
& ( member_list_nat2 @ Zs @ ( shuffles_nat @ Xs @ ( tl_nat @ Ys ) ) ) ) ) ) ).
% Cons_in_shuffles_iff
thf(fact_484_length__one__hd,axiom,
! [Xs: list_a] :
( ( ( size_size_list_a @ Xs )
= one_one_nat )
=> ( Xs
= ( cons_a @ ( hd_a @ Xs ) @ nil_a ) ) ) ).
% length_one_hd
thf(fact_485_length__one__hd,axiom,
! [Xs: list_nat] :
( ( ( size_size_list_nat @ Xs )
= one_one_nat )
=> ( Xs
= ( cons_nat @ ( hd_nat @ Xs ) @ nil_nat ) ) ) ).
% length_one_hd
thf(fact_486_Nil__in__shuffles,axiom,
! [Xs: list_a,Ys: list_a] :
( ( member_list_a2 @ nil_a @ ( shuffles_a @ Xs @ Ys ) )
= ( ( Xs = nil_a )
& ( Ys = nil_a ) ) ) ).
% Nil_in_shuffles
thf(fact_487_Nil__in__shuffles,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( member_list_nat2 @ nil_nat @ ( shuffles_nat @ Xs @ Ys ) )
= ( ( Xs = nil_nat )
& ( Ys = nil_nat ) ) ) ).
% Nil_in_shuffles
thf(fact_488_splice__in__shuffles,axiom,
! [Xs: list_nat,Ys: list_nat] : ( member_list_nat2 @ ( splice_nat @ Xs @ Ys ) @ ( shuffles_nat @ Xs @ Ys ) ) ).
% splice_in_shuffles
thf(fact_489_splice__in__shuffles,axiom,
! [Xs: list_a,Ys: list_a] : ( member_list_a2 @ ( splice_a @ Xs @ Ys ) @ ( shuffles_a @ Xs @ Ys ) ) ).
% splice_in_shuffles
thf(fact_490_length__0__conv,axiom,
! [Xs: list_nat] :
( ( ( size_size_list_nat @ Xs )
= zero_zero_nat )
= ( Xs = nil_nat ) ) ).
% length_0_conv
thf(fact_491_Cons__in__shuffles__rightI,axiom,
! [Zs: list_a,Xs: list_a,Ys: list_a,Z3: a] :
( ( member_list_a2 @ Zs @ ( shuffles_a @ Xs @ Ys ) )
=> ( member_list_a2 @ ( cons_a @ Z3 @ Zs ) @ ( shuffles_a @ Xs @ ( cons_a @ Z3 @ Ys ) ) ) ) ).
% Cons_in_shuffles_rightI
thf(fact_492_Cons__in__shuffles__rightI,axiom,
! [Zs: list_nat,Xs: list_nat,Ys: list_nat,Z3: nat] :
( ( member_list_nat2 @ Zs @ ( shuffles_nat @ Xs @ Ys ) )
=> ( member_list_nat2 @ ( cons_nat @ Z3 @ Zs ) @ ( shuffles_nat @ Xs @ ( cons_nat @ Z3 @ Ys ) ) ) ) ).
% Cons_in_shuffles_rightI
thf(fact_493_Cons__in__shuffles__leftI,axiom,
! [Zs: list_a,Xs: list_a,Ys: list_a,Z3: a] :
( ( member_list_a2 @ Zs @ ( shuffles_a @ Xs @ Ys ) )
=> ( member_list_a2 @ ( cons_a @ Z3 @ Zs ) @ ( shuffles_a @ ( cons_a @ Z3 @ Xs ) @ Ys ) ) ) ).
% Cons_in_shuffles_leftI
thf(fact_494_Cons__in__shuffles__leftI,axiom,
! [Zs: list_nat,Xs: list_nat,Ys: list_nat,Z3: nat] :
( ( member_list_nat2 @ Zs @ ( shuffles_nat @ Xs @ Ys ) )
=> ( member_list_nat2 @ ( cons_nat @ Z3 @ Zs ) @ ( shuffles_nat @ ( cons_nat @ Z3 @ Xs ) @ Ys ) ) ) ).
% Cons_in_shuffles_leftI
thf(fact_495_Nil__in__shufflesI,axiom,
! [Xs: list_a,Ys: list_a] :
( ( Xs = nil_a )
=> ( ( Ys = nil_a )
=> ( member_list_a2 @ nil_a @ ( shuffles_a @ Xs @ Ys ) ) ) ) ).
% Nil_in_shufflesI
thf(fact_496_Nil__in__shufflesI,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( Xs = nil_nat )
=> ( ( Ys = nil_nat )
=> ( member_list_nat2 @ nil_nat @ ( shuffles_nat @ Xs @ Ys ) ) ) ) ).
% Nil_in_shufflesI
thf(fact_497_shufflesE,axiom,
! [Zs: list_a,Xs: list_a,Ys: list_a] :
( ( member_list_a2 @ Zs @ ( shuffles_a @ Xs @ Ys ) )
=> ( ( ( Zs = Xs )
=> ( Ys != nil_a ) )
=> ( ( ( Zs = Ys )
=> ( Xs != nil_a ) )
=> ( ! [X3: a,Xs6: list_a] :
( ( Xs
= ( cons_a @ X3 @ Xs6 ) )
=> ! [Z: a,Zs4: list_a] :
( ( Zs
= ( cons_a @ Z @ Zs4 ) )
=> ( ( X3 = Z )
=> ~ ( member_list_a2 @ Zs4 @ ( shuffles_a @ Xs6 @ Ys ) ) ) ) )
=> ~ ! [Y2: a,Ys6: list_a] :
( ( Ys
= ( cons_a @ Y2 @ Ys6 ) )
=> ! [Z: a,Zs4: list_a] :
( ( Zs
= ( cons_a @ Z @ Zs4 ) )
=> ( ( Y2 = Z )
=> ~ ( member_list_a2 @ Zs4 @ ( shuffles_a @ Xs @ Ys6 ) ) ) ) ) ) ) ) ) ).
% shufflesE
thf(fact_498_shufflesE,axiom,
! [Zs: list_nat,Xs: list_nat,Ys: list_nat] :
( ( member_list_nat2 @ Zs @ ( shuffles_nat @ Xs @ Ys ) )
=> ( ( ( Zs = Xs )
=> ( Ys != nil_nat ) )
=> ( ( ( Zs = Ys )
=> ( Xs != nil_nat ) )
=> ( ! [X3: nat,Xs6: list_nat] :
( ( Xs
= ( cons_nat @ X3 @ Xs6 ) )
=> ! [Z: nat,Zs4: list_nat] :
( ( Zs
= ( cons_nat @ Z @ Zs4 ) )
=> ( ( X3 = Z )
=> ~ ( member_list_nat2 @ Zs4 @ ( shuffles_nat @ Xs6 @ Ys ) ) ) ) )
=> ~ ! [Y2: nat,Ys6: list_nat] :
( ( Ys
= ( cons_nat @ Y2 @ Ys6 ) )
=> ! [Z: nat,Zs4: list_nat] :
( ( Zs
= ( cons_nat @ Z @ Zs4 ) )
=> ( ( Y2 = Z )
=> ~ ( member_list_nat2 @ Zs4 @ ( shuffles_nat @ Xs @ Ys6 ) ) ) ) ) ) ) ) ) ).
% shufflesE
thf(fact_499_list_Osize_I3_J,axiom,
( ( size_size_list_nat @ nil_nat )
= zero_zero_nat ) ).
% list.size(3)
thf(fact_500_length__code,axiom,
( size_size_list_nat
= ( gen_length_nat @ zero_zero_nat ) ) ).
% length_code
thf(fact_501_last__drop__rev,axiom,
! [Xs: list_a] :
( ( Xs != nil_a )
=> ( ( cons_a @ ( last_a @ Xs ) @ ( drop_a @ one_one_nat @ ( rev_a @ Xs ) ) )
= ( rev_a @ Xs ) ) ) ).
% last_drop_rev
thf(fact_502_last__drop__rev,axiom,
! [Xs: list_nat] :
( ( Xs != nil_nat )
=> ( ( cons_nat @ ( last_nat @ Xs ) @ ( drop_nat @ one_one_nat @ ( rev_nat @ Xs ) ) )
= ( rev_nat @ Xs ) ) ) ).
% last_drop_rev
thf(fact_503_take__last,axiom,
! [Xs: list_a] :
( ( Xs != nil_a )
=> ( ( take_a @ one_one_nat @ ( rev_a @ Xs ) )
= ( cons_a @ ( last_a @ Xs ) @ nil_a ) ) ) ).
% take_last
thf(fact_504_take__last,axiom,
! [Xs: list_nat] :
( ( Xs != nil_nat )
=> ( ( take_nat @ one_one_nat @ ( rev_nat @ Xs ) )
= ( cons_nat @ ( last_nat @ Xs ) @ nil_nat ) ) ) ).
% take_last
thf(fact_505_nths__singleton,axiom,
! [A3: set_nat,X: a] :
( ( ( member_nat2 @ zero_zero_nat @ A3 )
=> ( ( nths_a @ ( cons_a @ X @ nil_a ) @ A3 )
= ( cons_a @ X @ nil_a ) ) )
& ( ~ ( member_nat2 @ zero_zero_nat @ A3 )
=> ( ( nths_a @ ( cons_a @ X @ nil_a ) @ A3 )
= nil_a ) ) ) ).
% nths_singleton
thf(fact_506_nths__singleton,axiom,
! [A3: set_nat,X: nat] :
( ( ( member_nat2 @ zero_zero_nat @ A3 )
=> ( ( nths_nat @ ( cons_nat @ X @ nil_nat ) @ A3 )
= ( cons_nat @ X @ nil_nat ) ) )
& ( ~ ( member_nat2 @ zero_zero_nat @ A3 )
=> ( ( nths_nat @ ( cons_nat @ X @ nil_nat ) @ A3 )
= nil_nat ) ) ) ).
% nths_singleton
thf(fact_507_length__remove1,axiom,
! [X: list_nat,Xs: list_list_nat] :
( ( ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
=> ( ( size_s3023201423986296836st_nat @ ( remove1_list_nat @ X @ Xs ) )
= ( minus_minus_nat @ ( size_s3023201423986296836st_nat @ Xs ) @ one_one_nat ) ) )
& ( ~ ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
=> ( ( size_s3023201423986296836st_nat @ ( remove1_list_nat @ X @ Xs ) )
= ( size_s3023201423986296836st_nat @ Xs ) ) ) ) ).
% length_remove1
thf(fact_508_length__remove1,axiom,
! [X: list_a,Xs: list_list_a] :
( ( ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
=> ( ( size_s349497388124573686list_a @ ( remove1_list_a @ X @ Xs ) )
= ( minus_minus_nat @ ( size_s349497388124573686list_a @ Xs ) @ one_one_nat ) ) )
& ( ~ ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
=> ( ( size_s349497388124573686list_a @ ( remove1_list_a @ X @ Xs ) )
= ( size_s349497388124573686list_a @ Xs ) ) ) ) ).
% length_remove1
thf(fact_509_length__remove1,axiom,
! [X: nat,Xs: list_nat] :
( ( ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ( ( size_size_list_nat @ ( remove1_nat @ X @ Xs ) )
= ( minus_minus_nat @ ( size_size_list_nat @ Xs ) @ one_one_nat ) ) )
& ( ~ ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ( ( size_size_list_nat @ ( remove1_nat @ X @ Xs ) )
= ( size_size_list_nat @ Xs ) ) ) ) ).
% length_remove1
thf(fact_510_rotate1__length01,axiom,
! [Xs: list_nat] :
( ( ord_less_eq_nat @ ( size_size_list_nat @ Xs ) @ one_one_nat )
=> ( ( rotate1_nat @ Xs )
= Xs ) ) ).
% rotate1_length01
thf(fact_511_drop0,axiom,
( ( drop_nat @ zero_zero_nat )
= ( ^ [X2: list_nat] : X2 ) ) ).
% drop0
thf(fact_512_nths__nil,axiom,
! [A3: set_nat] :
( ( nths_nat @ nil_nat @ A3 )
= nil_nat ) ).
% nths_nil
thf(fact_513_take__eq__Nil2,axiom,
! [N: nat,Xs: list_nat] :
( ( nil_nat
= ( take_nat @ N @ Xs ) )
= ( ( N = zero_zero_nat )
| ( Xs = nil_nat ) ) ) ).
% take_eq_Nil2
thf(fact_514_take__eq__Nil,axiom,
! [N: nat,Xs: list_nat] :
( ( ( take_nat @ N @ Xs )
= nil_nat )
= ( ( N = zero_zero_nat )
| ( Xs = nil_nat ) ) ) ).
% take_eq_Nil
thf(fact_515_take0,axiom,
( ( take_nat @ zero_zero_nat )
= ( ^ [Xs3: list_nat] : nil_nat ) ) ).
% take0
thf(fact_516_take__all,axiom,
! [Xs: list_nat,N: nat] :
( ( ord_less_eq_nat @ ( size_size_list_nat @ Xs ) @ N )
=> ( ( take_nat @ N @ Xs )
= Xs ) ) ).
% take_all
thf(fact_517_take__all__iff,axiom,
! [N: nat,Xs: list_nat] :
( ( ( take_nat @ N @ Xs )
= Xs )
= ( ord_less_eq_nat @ ( size_size_list_nat @ Xs ) @ N ) ) ).
% take_all_iff
thf(fact_518_length__drop,axiom,
! [N: nat,Xs: list_nat] :
( ( size_size_list_nat @ ( drop_nat @ N @ Xs ) )
= ( minus_minus_nat @ ( size_size_list_nat @ Xs ) @ N ) ) ).
% length_drop
thf(fact_519_append__take__drop__id,axiom,
! [N: nat,Xs: list_nat] :
( ( append_nat @ ( take_nat @ N @ Xs ) @ ( drop_nat @ N @ Xs ) )
= Xs ) ).
% append_take_drop_id
thf(fact_520_drop__all,axiom,
! [Xs: list_nat,N: nat] :
( ( ord_less_eq_nat @ ( size_size_list_nat @ Xs ) @ N )
=> ( ( drop_nat @ N @ Xs )
= nil_nat ) ) ).
% drop_all
thf(fact_521_drop__eq__Nil,axiom,
! [N: nat,Xs: list_nat] :
( ( ( drop_nat @ N @ Xs )
= nil_nat )
= ( ord_less_eq_nat @ ( size_size_list_nat @ Xs ) @ N ) ) ).
% drop_eq_Nil
thf(fact_522_drop__eq__Nil2,axiom,
! [N: nat,Xs: list_nat] :
( ( nil_nat
= ( drop_nat @ N @ Xs ) )
= ( ord_less_eq_nat @ ( size_size_list_nat @ Xs ) @ N ) ) ).
% drop_eq_Nil2
thf(fact_523_take__append,axiom,
! [N: nat,Xs: list_nat,Ys: list_nat] :
( ( take_nat @ N @ ( append_nat @ Xs @ Ys ) )
= ( append_nat @ ( take_nat @ N @ Xs ) @ ( take_nat @ ( minus_minus_nat @ N @ ( size_size_list_nat @ Xs ) ) @ Ys ) ) ) ).
% take_append
thf(fact_524_drop__append,axiom,
! [N: nat,Xs: list_nat,Ys: list_nat] :
( ( drop_nat @ N @ ( append_nat @ Xs @ Ys ) )
= ( append_nat @ ( drop_nat @ N @ Xs ) @ ( drop_nat @ ( minus_minus_nat @ N @ ( size_size_list_nat @ Xs ) ) @ Ys ) ) ) ).
% drop_append
thf(fact_525_length__tl,axiom,
! [Xs: list_nat] :
( ( size_size_list_nat @ ( tl_nat @ Xs ) )
= ( minus_minus_nat @ ( size_size_list_nat @ Xs ) @ one_one_nat ) ) ).
% length_tl
thf(fact_526_length__butlast,axiom,
! [Xs: list_nat] :
( ( size_size_list_nat @ ( butlast_nat @ Xs ) )
= ( minus_minus_nat @ ( size_size_list_nat @ Xs ) @ one_one_nat ) ) ).
% length_butlast
thf(fact_527_append__eq__conv__conj,axiom,
! [Xs: list_nat,Ys: list_nat,Zs: list_nat] :
( ( ( append_nat @ Xs @ Ys )
= Zs )
= ( ( Xs
= ( take_nat @ ( size_size_list_nat @ Xs ) @ Zs ) )
& ( Ys
= ( drop_nat @ ( size_size_list_nat @ Xs ) @ Zs ) ) ) ) ).
% append_eq_conv_conj
thf(fact_528_drop__take,axiom,
! [N: nat,M: nat,Xs: list_nat] :
( ( drop_nat @ N @ ( take_nat @ M @ Xs ) )
= ( take_nat @ ( minus_minus_nat @ M @ N ) @ ( drop_nat @ N @ Xs ) ) ) ).
% drop_take
thf(fact_529_take__equalityI,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ! [I: nat] :
( ( take_nat @ I @ Xs )
= ( take_nat @ I @ Ys ) )
=> ( Xs = Ys ) ) ).
% take_equalityI
thf(fact_530_drop__rev,axiom,
! [N: nat,Xs: list_nat] :
( ( drop_nat @ N @ ( rev_nat @ Xs ) )
= ( rev_nat @ ( take_nat @ ( minus_minus_nat @ ( size_size_list_nat @ Xs ) @ N ) @ Xs ) ) ) ).
% drop_rev
thf(fact_531_rev__drop,axiom,
! [I2: nat,Xs: list_nat] :
( ( rev_nat @ ( drop_nat @ I2 @ Xs ) )
= ( take_nat @ ( minus_minus_nat @ ( size_size_list_nat @ Xs ) @ I2 ) @ ( rev_nat @ Xs ) ) ) ).
% rev_drop
thf(fact_532_rev__take,axiom,
! [I2: nat,Xs: list_nat] :
( ( rev_nat @ ( take_nat @ I2 @ Xs ) )
= ( drop_nat @ ( minus_minus_nat @ ( size_size_list_nat @ Xs ) @ I2 ) @ ( rev_nat @ Xs ) ) ) ).
% rev_take
thf(fact_533_take__rev,axiom,
! [N: nat,Xs: list_nat] :
( ( take_nat @ N @ ( rev_nat @ Xs ) )
= ( rev_nat @ ( drop_nat @ ( minus_minus_nat @ ( size_size_list_nat @ Xs ) @ N ) @ Xs ) ) ) ).
% take_rev
thf(fact_534_append__eq__append__conv__if,axiom,
! [Xs_1: list_nat,Xs_2: list_nat,Ys_1: list_nat,Ys_2: list_nat] :
( ( ( append_nat @ Xs_1 @ Xs_2 )
= ( append_nat @ Ys_1 @ Ys_2 ) )
= ( ( ( ord_less_eq_nat @ ( size_size_list_nat @ Xs_1 ) @ ( size_size_list_nat @ Ys_1 ) )
=> ( ( Xs_1
= ( take_nat @ ( size_size_list_nat @ Xs_1 ) @ Ys_1 ) )
& ( Xs_2
= ( append_nat @ ( drop_nat @ ( size_size_list_nat @ Xs_1 ) @ Ys_1 ) @ Ys_2 ) ) ) )
& ( ~ ( ord_less_eq_nat @ ( size_size_list_nat @ Xs_1 ) @ ( size_size_list_nat @ Ys_1 ) )
=> ( ( ( take_nat @ ( size_size_list_nat @ Ys_1 ) @ Xs_1 )
= Ys_1 )
& ( ( append_nat @ ( drop_nat @ ( size_size_list_nat @ Ys_1 ) @ Xs_1 ) @ Xs_2 )
= Ys_2 ) ) ) ) ) ).
% append_eq_append_conv_if
thf(fact_535_butlast__take,axiom,
! [N: nat,Xs: list_nat] :
( ( ord_less_eq_nat @ N @ ( size_size_list_nat @ Xs ) )
=> ( ( butlast_nat @ ( take_nat @ N @ Xs ) )
= ( take_nat @ ( minus_minus_nat @ N @ one_one_nat ) @ Xs ) ) ) ).
% butlast_take
thf(fact_536_tl__take,axiom,
! [N: nat,Xs: list_nat] :
( ( tl_nat @ ( take_nat @ N @ Xs ) )
= ( take_nat @ ( minus_minus_nat @ N @ one_one_nat ) @ ( tl_nat @ Xs ) ) ) ).
% tl_take
thf(fact_537_take__Nil,axiom,
! [N: nat] :
( ( take_nat @ N @ nil_nat )
= nil_nat ) ).
% take_Nil
thf(fact_538_in__set__takeD,axiom,
! [X: list_nat,N: nat,Xs: list_list_nat] :
( ( member_list_nat2 @ X @ ( set_list_nat2 @ ( take_list_nat @ N @ Xs ) ) )
=> ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) ) ) ).
% in_set_takeD
thf(fact_539_in__set__takeD,axiom,
! [X: list_a,N: nat,Xs: list_list_a] :
( ( member_list_a2 @ X @ ( set_list_a2 @ ( take_list_a @ N @ Xs ) ) )
=> ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) ) ) ).
% in_set_takeD
thf(fact_540_in__set__takeD,axiom,
! [X: nat,N: nat,Xs: list_nat] :
( ( member_nat2 @ X @ ( set_nat2 @ ( take_nat @ N @ Xs ) ) )
=> ( member_nat2 @ X @ ( set_nat2 @ Xs ) ) ) ).
% in_set_takeD
thf(fact_541_drop__0,axiom,
! [Xs: list_nat] :
( ( drop_nat @ zero_zero_nat @ Xs )
= Xs ) ).
% drop_0
thf(fact_542_drop__Nil,axiom,
! [N: nat] :
( ( drop_nat @ N @ nil_nat )
= nil_nat ) ).
% drop_Nil
thf(fact_543_in__set__dropD,axiom,
! [X: list_nat,N: nat,Xs: list_list_nat] :
( ( member_list_nat2 @ X @ ( set_list_nat2 @ ( drop_list_nat @ N @ Xs ) ) )
=> ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) ) ) ).
% in_set_dropD
thf(fact_544_in__set__dropD,axiom,
! [X: list_a,N: nat,Xs: list_list_a] :
( ( member_list_a2 @ X @ ( set_list_a2 @ ( drop_list_a @ N @ Xs ) ) )
=> ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) ) ) ).
% in_set_dropD
thf(fact_545_in__set__dropD,axiom,
! [X: nat,N: nat,Xs: list_nat] :
( ( member_nat2 @ X @ ( set_nat2 @ ( drop_nat @ N @ Xs ) ) )
=> ( member_nat2 @ X @ ( set_nat2 @ Xs ) ) ) ).
% in_set_dropD
thf(fact_546_tl__drop,axiom,
! [N: nat,Xs: list_nat] :
( ( tl_nat @ ( drop_nat @ N @ Xs ) )
= ( drop_nat @ N @ ( tl_nat @ Xs ) ) ) ).
% tl_drop
thf(fact_547_drop__butlast,axiom,
! [N: nat,Xs: list_nat] :
( ( drop_nat @ N @ ( butlast_nat @ Xs ) )
= ( butlast_nat @ ( drop_nat @ N @ Xs ) ) ) ).
% drop_butlast
thf(fact_548_drop__Cons_H,axiom,
! [N: nat,X: a,Xs: list_a] :
( ( ( N = zero_zero_nat )
=> ( ( drop_a @ N @ ( cons_a @ X @ Xs ) )
= ( cons_a @ X @ Xs ) ) )
& ( ( N != zero_zero_nat )
=> ( ( drop_a @ N @ ( cons_a @ X @ Xs ) )
= ( drop_a @ ( minus_minus_nat @ N @ one_one_nat ) @ Xs ) ) ) ) ).
% drop_Cons'
thf(fact_549_drop__Cons_H,axiom,
! [N: nat,X: nat,Xs: list_nat] :
( ( ( N = zero_zero_nat )
=> ( ( drop_nat @ N @ ( cons_nat @ X @ Xs ) )
= ( cons_nat @ X @ Xs ) ) )
& ( ( N != zero_zero_nat )
=> ( ( drop_nat @ N @ ( cons_nat @ X @ Xs ) )
= ( drop_nat @ ( minus_minus_nat @ N @ one_one_nat ) @ Xs ) ) ) ) ).
% drop_Cons'
thf(fact_550_in__set__nthsD,axiom,
! [X: list_nat,Xs: list_list_nat,I3: set_nat] :
( ( member_list_nat2 @ X @ ( set_list_nat2 @ ( nths_list_nat @ Xs @ I3 ) ) )
=> ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) ) ) ).
% in_set_nthsD
thf(fact_551_in__set__nthsD,axiom,
! [X: list_a,Xs: list_list_a,I3: set_nat] :
( ( member_list_a2 @ X @ ( set_list_a2 @ ( nths_list_a @ Xs @ I3 ) ) )
=> ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) ) ) ).
% in_set_nthsD
thf(fact_552_in__set__nthsD,axiom,
! [X: nat,Xs: list_nat,I3: set_nat] :
( ( member_nat2 @ X @ ( set_nat2 @ ( nths_nat @ Xs @ I3 ) ) )
=> ( member_nat2 @ X @ ( set_nat2 @ Xs ) ) ) ).
% in_set_nthsD
thf(fact_553_notin__set__nthsI,axiom,
! [X: list_nat,Xs: list_list_nat,I3: set_nat] :
( ~ ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
=> ~ ( member_list_nat2 @ X @ ( set_list_nat2 @ ( nths_list_nat @ Xs @ I3 ) ) ) ) ).
% notin_set_nthsI
thf(fact_554_notin__set__nthsI,axiom,
! [X: list_a,Xs: list_list_a,I3: set_nat] :
( ~ ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
=> ~ ( member_list_a2 @ X @ ( set_list_a2 @ ( nths_list_a @ Xs @ I3 ) ) ) ) ).
% notin_set_nthsI
thf(fact_555_notin__set__nthsI,axiom,
! [X: nat,Xs: list_nat,I3: set_nat] :
( ~ ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ~ ( member_nat2 @ X @ ( set_nat2 @ ( nths_nat @ Xs @ I3 ) ) ) ) ).
% notin_set_nthsI
thf(fact_556_butlast__conv__take,axiom,
( butlast_nat
= ( ^ [Xs3: list_nat] : ( take_nat @ ( minus_minus_nat @ ( size_size_list_nat @ Xs3 ) @ one_one_nat ) @ Xs3 ) ) ) ).
% butlast_conv_take
thf(fact_557_take__Cons_H,axiom,
! [N: nat,X: a,Xs: list_a] :
( ( ( N = zero_zero_nat )
=> ( ( take_a @ N @ ( cons_a @ X @ Xs ) )
= nil_a ) )
& ( ( N != zero_zero_nat )
=> ( ( take_a @ N @ ( cons_a @ X @ Xs ) )
= ( cons_a @ X @ ( take_a @ ( minus_minus_nat @ N @ one_one_nat ) @ Xs ) ) ) ) ) ).
% take_Cons'
thf(fact_558_take__Cons_H,axiom,
! [N: nat,X: nat,Xs: list_nat] :
( ( ( N = zero_zero_nat )
=> ( ( take_nat @ N @ ( cons_nat @ X @ Xs ) )
= nil_nat ) )
& ( ( N != zero_zero_nat )
=> ( ( take_nat @ N @ ( cons_nat @ X @ Xs ) )
= ( cons_nat @ X @ ( take_nat @ ( minus_minus_nat @ N @ one_one_nat ) @ Xs ) ) ) ) ) ).
% take_Cons'
thf(fact_559_take__0,axiom,
! [Xs: list_nat] :
( ( take_nat @ zero_zero_nat @ Xs )
= nil_nat ) ).
% take_0
thf(fact_560_impossible__Cons,axiom,
! [Xs: list_a,Ys: list_a,X: a] :
( ( ord_less_eq_nat @ ( size_size_list_a @ Xs ) @ ( size_size_list_a @ Ys ) )
=> ( Xs
!= ( cons_a @ X @ Ys ) ) ) ).
% impossible_Cons
thf(fact_561_impossible__Cons,axiom,
! [Xs: list_nat,Ys: list_nat,X: nat] :
( ( ord_less_eq_nat @ ( size_size_list_nat @ Xs ) @ ( size_size_list_nat @ Ys ) )
=> ( Xs
!= ( cons_nat @ X @ Ys ) ) ) ).
% impossible_Cons
thf(fact_562_remdups__adj__length,axiom,
! [Xs: list_nat] : ( ord_less_eq_nat @ ( size_size_list_nat @ ( remdups_adj_nat @ Xs ) ) @ ( size_size_list_nat @ Xs ) ) ).
% remdups_adj_length
thf(fact_563_gen__length__code_I1_J,axiom,
! [N: nat] :
( ( gen_length_nat @ N @ nil_nat )
= N ) ).
% gen_length_code(1)
thf(fact_564_take__last__length,axiom,
! [Xs: list_a] :
( ( ( take_a @ ( suc @ zero_zero_nat ) @ ( rev_a @ Xs ) )
= ( cons_a @ ( last_a @ Xs ) @ nil_a ) )
=> ( ord_less_eq_nat @ ( suc @ zero_zero_nat ) @ ( size_size_list_a @ Xs ) ) ) ).
% take_last_length
thf(fact_565_take__last__length,axiom,
! [Xs: list_nat] :
( ( ( take_nat @ ( suc @ zero_zero_nat ) @ ( rev_nat @ Xs ) )
= ( cons_nat @ ( last_nat @ Xs ) @ nil_nat ) )
=> ( ord_less_eq_nat @ ( suc @ zero_zero_nat ) @ ( size_size_list_nat @ Xs ) ) ) ).
% take_last_length
thf(fact_566_hd__drop__1,axiom,
! [Xs: list_a] :
( ( Xs != nil_a )
=> ( ( cons_a @ ( hd_a @ Xs ) @ ( drop_a @ ( suc @ zero_zero_nat ) @ Xs ) )
= Xs ) ) ).
% hd_drop_1
thf(fact_567_hd__drop__1,axiom,
! [Xs: list_nat] :
( ( Xs != nil_nat )
=> ( ( cons_nat @ ( hd_nat @ Xs ) @ ( drop_nat @ ( suc @ zero_zero_nat ) @ Xs ) )
= Xs ) ) ).
% hd_drop_1
thf(fact_568_take__hd,axiom,
! [Xs: list_a] :
( ( Xs != nil_a )
=> ( ( take_a @ ( suc @ zero_zero_nat ) @ Xs )
= ( cons_a @ ( hd_a @ Xs ) @ nil_a ) ) ) ).
% take_hd
thf(fact_569_take__hd,axiom,
! [Xs: list_nat] :
( ( Xs != nil_nat )
=> ( ( take_nat @ ( suc @ zero_zero_nat ) @ Xs )
= ( cons_nat @ ( hd_nat @ Xs ) @ nil_nat ) ) ) ).
% take_hd
thf(fact_570_take__Suc,axiom,
! [Xs: list_a,N: nat] :
( ( Xs != nil_a )
=> ( ( take_a @ ( suc @ N ) @ Xs )
= ( cons_a @ ( hd_a @ Xs ) @ ( take_a @ N @ ( tl_a @ Xs ) ) ) ) ) ).
% take_Suc
thf(fact_571_take__Suc,axiom,
! [Xs: list_nat,N: nat] :
( ( Xs != nil_nat )
=> ( ( take_nat @ ( suc @ N ) @ Xs )
= ( cons_nat @ ( hd_nat @ Xs ) @ ( take_nat @ N @ ( tl_nat @ Xs ) ) ) ) ) ).
% take_Suc
thf(fact_572_last__list__update,axiom,
! [Xs: list_nat,K: nat,X: nat] :
( ( Xs != nil_nat )
=> ( ( ( K
= ( minus_minus_nat @ ( size_size_list_nat @ Xs ) @ one_one_nat ) )
=> ( ( last_nat @ ( list_update_nat @ Xs @ K @ X ) )
= X ) )
& ( ( K
!= ( minus_minus_nat @ ( size_size_list_nat @ Xs ) @ one_one_nat ) )
=> ( ( last_nat @ ( list_update_nat @ Xs @ K @ X ) )
= ( last_nat @ Xs ) ) ) ) ) ).
% last_list_update
thf(fact_573_take__hd_H,axiom,
! [Ys: list_a,X: a,Xs: list_a] :
( ( Ys != nil_a )
=> ( ( ( take_a @ ( size_size_list_a @ Ys ) @ ( cons_a @ X @ Xs ) )
= ( take_a @ ( suc @ ( size_size_list_a @ Xs ) ) @ Ys ) )
=> ( ( hd_a @ Ys )
= X ) ) ) ).
% take_hd'
thf(fact_574_take__hd_H,axiom,
! [Ys: list_nat,X: nat,Xs: list_nat] :
( ( Ys != nil_nat )
=> ( ( ( take_nat @ ( size_size_list_nat @ Ys ) @ ( cons_nat @ X @ Xs ) )
= ( take_nat @ ( suc @ ( size_size_list_nat @ Xs ) ) @ Ys ) )
=> ( ( hd_nat @ Ys )
= X ) ) ) ).
% take_hd'
thf(fact_575_list__update__nonempty,axiom,
! [Xs: list_nat,K: nat,X: nat] :
( ( ( list_update_nat @ Xs @ K @ X )
= nil_nat )
= ( Xs = nil_nat ) ) ).
% list_update_nonempty
thf(fact_576_length__list__update,axiom,
! [Xs: list_nat,I2: nat,X: nat] :
( ( size_size_list_nat @ ( list_update_nat @ Xs @ I2 @ X ) )
= ( size_size_list_nat @ Xs ) ) ).
% length_list_update
thf(fact_577_take__Suc__Cons,axiom,
! [N: nat,X: a,Xs: list_a] :
( ( take_a @ ( suc @ N ) @ ( cons_a @ X @ Xs ) )
= ( cons_a @ X @ ( take_a @ N @ Xs ) ) ) ).
% take_Suc_Cons
thf(fact_578_take__Suc__Cons,axiom,
! [N: nat,X: nat,Xs: list_nat] :
( ( take_nat @ ( suc @ N ) @ ( cons_nat @ X @ Xs ) )
= ( cons_nat @ X @ ( take_nat @ N @ Xs ) ) ) ).
% take_Suc_Cons
thf(fact_579_drop__Suc__Cons,axiom,
! [N: nat,X: a,Xs: list_a] :
( ( drop_a @ ( suc @ N ) @ ( cons_a @ X @ Xs ) )
= ( drop_a @ N @ Xs ) ) ).
% drop_Suc_Cons
thf(fact_580_drop__Suc__Cons,axiom,
! [N: nat,X: nat,Xs: list_nat] :
( ( drop_nat @ ( suc @ N ) @ ( cons_nat @ X @ Xs ) )
= ( drop_nat @ N @ Xs ) ) ).
% drop_Suc_Cons
thf(fact_581_list__update__beyond,axiom,
! [Xs: list_nat,I2: nat,X: nat] :
( ( ord_less_eq_nat @ ( size_size_list_nat @ Xs ) @ I2 )
=> ( ( list_update_nat @ Xs @ I2 @ X )
= Xs ) ) ).
% list_update_beyond
thf(fact_582_take__update__cancel,axiom,
! [N: nat,M: nat,Xs: list_nat,Y: nat] :
( ( ord_less_eq_nat @ N @ M )
=> ( ( take_nat @ N @ ( list_update_nat @ Xs @ M @ Y ) )
= ( take_nat @ N @ Xs ) ) ) ).
% take_update_cancel
thf(fact_583_list__update__length,axiom,
! [Xs: list_a,X: a,Ys: list_a,Y: a] :
( ( list_update_a @ ( append_a @ Xs @ ( cons_a @ X @ Ys ) ) @ ( size_size_list_a @ Xs ) @ Y )
= ( append_a @ Xs @ ( cons_a @ Y @ Ys ) ) ) ).
% list_update_length
thf(fact_584_list__update__length,axiom,
! [Xs: list_nat,X: nat,Ys: list_nat,Y: nat] :
( ( list_update_nat @ ( append_nat @ Xs @ ( cons_nat @ X @ Ys ) ) @ ( size_size_list_nat @ Xs ) @ Y )
= ( append_nat @ Xs @ ( cons_nat @ Y @ Ys ) ) ) ).
% list_update_length
thf(fact_585_list__update__code_I3_J,axiom,
! [X: a,Xs: list_a,I2: nat,Y: a] :
( ( list_update_a @ ( cons_a @ X @ Xs ) @ ( suc @ I2 ) @ Y )
= ( cons_a @ X @ ( list_update_a @ Xs @ I2 @ Y ) ) ) ).
% list_update_code(3)
thf(fact_586_list__update__code_I3_J,axiom,
! [X: nat,Xs: list_nat,I2: nat,Y: nat] :
( ( list_update_nat @ ( cons_nat @ X @ Xs ) @ ( suc @ I2 ) @ Y )
= ( cons_nat @ X @ ( list_update_nat @ Xs @ I2 @ Y ) ) ) ).
% list_update_code(3)
thf(fact_587_list__update_Osimps_I1_J,axiom,
! [I2: nat,V: nat] :
( ( list_update_nat @ nil_nat @ I2 @ V )
= nil_nat ) ).
% list_update.simps(1)
thf(fact_588_list__update__code_I1_J,axiom,
! [I2: nat,Y: nat] :
( ( list_update_nat @ nil_nat @ I2 @ Y )
= nil_nat ) ).
% list_update_code(1)
thf(fact_589_take__update__swap,axiom,
! [M: nat,Xs: list_nat,N: nat,X: nat] :
( ( take_nat @ M @ ( list_update_nat @ Xs @ N @ X ) )
= ( list_update_nat @ ( take_nat @ M @ Xs ) @ N @ X ) ) ).
% take_update_swap
thf(fact_590_list__update__code_I2_J,axiom,
! [X: a,Xs: list_a,Y: a] :
( ( list_update_a @ ( cons_a @ X @ Xs ) @ zero_zero_nat @ Y )
= ( cons_a @ Y @ Xs ) ) ).
% list_update_code(2)
thf(fact_591_list__update__code_I2_J,axiom,
! [X: nat,Xs: list_nat,Y: nat] :
( ( list_update_nat @ ( cons_nat @ X @ Xs ) @ zero_zero_nat @ Y )
= ( cons_nat @ Y @ Xs ) ) ).
% list_update_code(2)
thf(fact_592_length__Cons,axiom,
! [X: a,Xs: list_a] :
( ( size_size_list_a @ ( cons_a @ X @ Xs ) )
= ( suc @ ( size_size_list_a @ Xs ) ) ) ).
% length_Cons
thf(fact_593_length__Cons,axiom,
! [X: nat,Xs: list_nat] :
( ( size_size_list_nat @ ( cons_nat @ X @ Xs ) )
= ( suc @ ( size_size_list_nat @ Xs ) ) ) ).
% length_Cons
thf(fact_594_length__Suc__conv,axiom,
! [Xs: list_a,N: nat] :
( ( ( size_size_list_a @ Xs )
= ( suc @ N ) )
= ( ? [Y3: a,Ys2: list_a] :
( ( Xs
= ( cons_a @ Y3 @ Ys2 ) )
& ( ( size_size_list_a @ Ys2 )
= N ) ) ) ) ).
% length_Suc_conv
thf(fact_595_length__Suc__conv,axiom,
! [Xs: list_nat,N: nat] :
( ( ( size_size_list_nat @ Xs )
= ( suc @ N ) )
= ( ? [Y3: nat,Ys2: list_nat] :
( ( Xs
= ( cons_nat @ Y3 @ Ys2 ) )
& ( ( size_size_list_nat @ Ys2 )
= N ) ) ) ) ).
% length_Suc_conv
thf(fact_596_Suc__length__conv,axiom,
! [N: nat,Xs: list_a] :
( ( ( suc @ N )
= ( size_size_list_a @ Xs ) )
= ( ? [Y3: a,Ys2: list_a] :
( ( Xs
= ( cons_a @ Y3 @ Ys2 ) )
& ( ( size_size_list_a @ Ys2 )
= N ) ) ) ) ).
% Suc_length_conv
thf(fact_597_Suc__length__conv,axiom,
! [N: nat,Xs: list_nat] :
( ( ( suc @ N )
= ( size_size_list_nat @ Xs ) )
= ( ? [Y3: nat,Ys2: list_nat] :
( ( Xs
= ( cons_nat @ Y3 @ Ys2 ) )
& ( ( size_size_list_nat @ Ys2 )
= N ) ) ) ) ).
% Suc_length_conv
thf(fact_598_take__tl,axiom,
! [N: nat,Xs: list_nat] :
( ( take_nat @ N @ ( tl_nat @ Xs ) )
= ( tl_nat @ ( take_nat @ ( suc @ N ) @ Xs ) ) ) ).
% take_tl
thf(fact_599_drop__Suc,axiom,
! [N: nat,Xs: list_nat] :
( ( drop_nat @ ( suc @ N ) @ Xs )
= ( drop_nat @ N @ ( tl_nat @ Xs ) ) ) ).
% drop_Suc
thf(fact_600_gen__length__code_I2_J,axiom,
! [N: nat,X: a,Xs: list_a] :
( ( gen_length_a @ N @ ( cons_a @ X @ Xs ) )
= ( gen_length_a @ ( suc @ N ) @ Xs ) ) ).
% gen_length_code(2)
thf(fact_601_gen__length__code_I2_J,axiom,
! [N: nat,X: nat,Xs: list_nat] :
( ( gen_length_nat @ N @ ( cons_nat @ X @ Xs ) )
= ( gen_length_nat @ ( suc @ N ) @ Xs ) ) ).
% gen_length_code(2)
thf(fact_602_Suc__le__length__iff,axiom,
! [N: nat,Xs: list_a] :
( ( ord_less_eq_nat @ ( suc @ N ) @ ( size_size_list_a @ Xs ) )
= ( ? [X2: a,Ys2: list_a] :
( ( Xs
= ( cons_a @ X2 @ Ys2 ) )
& ( ord_less_eq_nat @ N @ ( size_size_list_a @ Ys2 ) ) ) ) ) ).
% Suc_le_length_iff
thf(fact_603_Suc__le__length__iff,axiom,
! [N: nat,Xs: list_nat] :
( ( ord_less_eq_nat @ ( suc @ N ) @ ( size_size_list_nat @ Xs ) )
= ( ? [X2: nat,Ys2: list_nat] :
( ( Xs
= ( cons_nat @ X2 @ Ys2 ) )
& ( ord_less_eq_nat @ N @ ( size_size_list_nat @ Ys2 ) ) ) ) ) ).
% Suc_le_length_iff
thf(fact_604_drop__update__swap,axiom,
! [M: nat,N: nat,Xs: list_nat,X: nat] :
( ( ord_less_eq_nat @ M @ N )
=> ( ( drop_nat @ M @ ( list_update_nat @ Xs @ N @ X ) )
= ( list_update_nat @ ( drop_nat @ M @ Xs ) @ ( minus_minus_nat @ N @ M ) @ X ) ) ) ).
% drop_update_swap
thf(fact_605_length__append__singleton,axiom,
! [Xs: list_a,X: a] :
( ( size_size_list_a @ ( append_a @ Xs @ ( cons_a @ X @ nil_a ) ) )
= ( suc @ ( size_size_list_a @ Xs ) ) ) ).
% length_append_singleton
thf(fact_606_length__append__singleton,axiom,
! [Xs: list_nat,X: nat] :
( ( size_size_list_nat @ ( append_nat @ Xs @ ( cons_nat @ X @ nil_nat ) ) )
= ( suc @ ( size_size_list_nat @ Xs ) ) ) ).
% length_append_singleton
thf(fact_607_length__Suc__conv__rev,axiom,
! [Xs: list_a,N: nat] :
( ( ( size_size_list_a @ Xs )
= ( suc @ N ) )
= ( ? [Y3: a,Ys2: list_a] :
( ( Xs
= ( append_a @ Ys2 @ ( cons_a @ Y3 @ nil_a ) ) )
& ( ( size_size_list_a @ Ys2 )
= N ) ) ) ) ).
% length_Suc_conv_rev
thf(fact_608_length__Suc__conv__rev,axiom,
! [Xs: list_nat,N: nat] :
( ( ( size_size_list_nat @ Xs )
= ( suc @ N ) )
= ( ? [Y3: nat,Ys2: list_nat] :
( ( Xs
= ( append_nat @ Ys2 @ ( cons_nat @ Y3 @ nil_nat ) ) )
& ( ( size_size_list_nat @ Ys2 )
= N ) ) ) ) ).
% length_Suc_conv_rev
thf(fact_609_butlast__list__update,axiom,
! [K: nat,Xs: list_nat,X: nat] :
( ( ( K
= ( minus_minus_nat @ ( size_size_list_nat @ Xs ) @ one_one_nat ) )
=> ( ( butlast_nat @ ( list_update_nat @ Xs @ K @ X ) )
= ( butlast_nat @ Xs ) ) )
& ( ( K
!= ( minus_minus_nat @ ( size_size_list_nat @ Xs ) @ one_one_nat ) )
=> ( ( butlast_nat @ ( list_update_nat @ Xs @ K @ X ) )
= ( list_update_nat @ ( butlast_nat @ Xs ) @ K @ X ) ) ) ) ).
% butlast_list_update
thf(fact_610_remdups__adj__length__ge1,axiom,
! [Xs: list_nat] :
( ( Xs != nil_nat )
=> ( ord_less_eq_nat @ ( suc @ zero_zero_nat ) @ ( size_size_list_nat @ ( remdups_adj_nat @ Xs ) ) ) ) ).
% remdups_adj_length_ge1
thf(fact_611_Nitpick_Osize__list__simp_I2_J,axiom,
( size_size_list_nat
= ( ^ [Xs3: list_nat] : ( if_nat @ ( Xs3 = nil_nat ) @ zero_zero_nat @ ( suc @ ( size_size_list_nat @ ( tl_nat @ Xs3 ) ) ) ) ) ) ).
% Nitpick.size_list_simp(2)
thf(fact_612_take__hd__drop,axiom,
! [N: nat,Xs: list_a] :
( ( ord_less_nat @ N @ ( size_size_list_a @ Xs ) )
=> ( ( append_a @ ( take_a @ N @ Xs ) @ ( cons_a @ ( hd_a @ ( drop_a @ N @ Xs ) ) @ nil_a ) )
= ( take_a @ ( suc @ N ) @ Xs ) ) ) ).
% take_hd_drop
thf(fact_613_take__hd__drop,axiom,
! [N: nat,Xs: list_nat] :
( ( ord_less_nat @ N @ ( size_size_list_nat @ Xs ) )
=> ( ( append_nat @ ( take_nat @ N @ Xs ) @ ( cons_nat @ ( hd_nat @ ( drop_nat @ N @ Xs ) ) @ nil_nat ) )
= ( take_nat @ ( suc @ N ) @ Xs ) ) ) ).
% take_hd_drop
thf(fact_614_upd__conv__take__nth__drop,axiom,
! [I2: nat,Xs: list_a,A: a] :
( ( ord_less_nat @ I2 @ ( size_size_list_a @ Xs ) )
=> ( ( list_update_a @ Xs @ I2 @ A )
= ( append_a @ ( take_a @ I2 @ Xs ) @ ( cons_a @ A @ ( drop_a @ ( suc @ I2 ) @ Xs ) ) ) ) ) ).
% upd_conv_take_nth_drop
thf(fact_615_upd__conv__take__nth__drop,axiom,
! [I2: nat,Xs: list_nat,A: nat] :
( ( ord_less_nat @ I2 @ ( size_size_list_nat @ Xs ) )
=> ( ( list_update_nat @ Xs @ I2 @ A )
= ( append_nat @ ( take_nat @ I2 @ Xs ) @ ( cons_nat @ A @ ( drop_nat @ ( suc @ I2 ) @ Xs ) ) ) ) ) ).
% upd_conv_take_nth_drop
thf(fact_616_hd__drop,axiom,
! [N: nat,Xs: list_a] :
( ( ord_less_nat @ N @ ( size_size_list_a @ Xs ) )
=> ( ( cons_a @ ( hd_a @ ( drop_a @ N @ Xs ) ) @ ( drop_a @ ( suc @ N ) @ Xs ) )
= ( drop_a @ N @ Xs ) ) ) ).
% hd_drop
thf(fact_617_hd__drop,axiom,
! [N: nat,Xs: list_nat] :
( ( ord_less_nat @ N @ ( size_size_list_nat @ Xs ) )
=> ( ( cons_nat @ ( hd_nat @ ( drop_nat @ N @ Xs ) ) @ ( drop_nat @ ( suc @ N ) @ Xs ) )
= ( drop_nat @ N @ Xs ) ) ) ).
% hd_drop
thf(fact_618_remdups__adj__singleton__iff,axiom,
! [Xs: list_nat] :
( ( ( size_size_list_nat @ ( remdups_adj_nat @ Xs ) )
= ( suc @ zero_zero_nat ) )
= ( ( Xs != nil_nat )
& ( Xs
= ( replicate_nat @ ( size_size_list_nat @ Xs ) @ ( hd_nat @ Xs ) ) ) ) ) ).
% remdups_adj_singleton_iff
thf(fact_619_length__replicate,axiom,
! [N: nat,X: nat] :
( ( size_size_list_nat @ ( replicate_nat @ N @ X ) )
= N ) ).
% length_replicate
thf(fact_620_concat__replicate__trivial,axiom,
! [I2: nat] :
( ( concat_nat @ ( replicate_list_nat @ I2 @ nil_nat ) )
= nil_nat ) ).
% concat_replicate_trivial
thf(fact_621_replicate__empty,axiom,
! [N: nat,X: nat] :
( ( ( replicate_nat @ N @ X )
= nil_nat )
= ( N = zero_zero_nat ) ) ).
% replicate_empty
thf(fact_622_empty__replicate,axiom,
! [N: nat,X: nat] :
( ( nil_nat
= ( replicate_nat @ N @ X ) )
= ( N = zero_zero_nat ) ) ).
% empty_replicate
thf(fact_623_in__set__replicate,axiom,
! [X: list_nat,N: nat,Y: list_nat] :
( ( member_list_nat2 @ X @ ( set_list_nat2 @ ( replicate_list_nat @ N @ Y ) ) )
= ( ( X = Y )
& ( N != zero_zero_nat ) ) ) ).
% in_set_replicate
thf(fact_624_in__set__replicate,axiom,
! [X: list_a,N: nat,Y: list_a] :
( ( member_list_a2 @ X @ ( set_list_a2 @ ( replicate_list_a @ N @ Y ) ) )
= ( ( X = Y )
& ( N != zero_zero_nat ) ) ) ).
% in_set_replicate
thf(fact_625_in__set__replicate,axiom,
! [X: nat,N: nat,Y: nat] :
( ( member_nat2 @ X @ ( set_nat2 @ ( replicate_nat @ N @ Y ) ) )
= ( ( X = Y )
& ( N != zero_zero_nat ) ) ) ).
% in_set_replicate
thf(fact_626_Bex__set__replicate,axiom,
! [N: nat,A: nat,P: nat > $o] :
( ( ? [X2: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ ( replicate_nat @ N @ A ) ) )
& ( P @ X2 ) ) )
= ( ( P @ A )
& ( N != zero_zero_nat ) ) ) ).
% Bex_set_replicate
thf(fact_627_Ball__set__replicate,axiom,
! [N: nat,A: nat,P: nat > $o] :
( ( ! [X2: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ ( replicate_nat @ N @ A ) ) )
=> ( P @ X2 ) ) )
= ( ( P @ A )
| ( N = zero_zero_nat ) ) ) ).
% Ball_set_replicate
thf(fact_628_lexordp__eq__simps_I4_J,axiom,
! [X: nat,Xs: list_nat,Y: nat,Ys: list_nat] :
( ( ord_lexordp_eq_nat @ ( cons_nat @ X @ Xs ) @ ( cons_nat @ Y @ Ys ) )
= ( ( ord_less_nat @ X @ Y )
| ( ~ ( ord_less_nat @ Y @ X )
& ( ord_lexordp_eq_nat @ Xs @ Ys ) ) ) ) ).
% lexordp_eq_simps(4)
thf(fact_629_hd__replicate,axiom,
! [N: nat,X: nat] :
( ( N != zero_zero_nat )
=> ( ( hd_nat @ ( replicate_nat @ N @ X ) )
= X ) ) ).
% hd_replicate
thf(fact_630_drop__update__cancel,axiom,
! [N: nat,M: nat,Xs: list_nat,X: nat] :
( ( ord_less_nat @ N @ M )
=> ( ( drop_nat @ M @ ( list_update_nat @ Xs @ N @ X ) )
= ( drop_nat @ M @ Xs ) ) ) ).
% drop_update_cancel
thf(fact_631_drop__replicate,axiom,
! [I2: nat,K: nat,X: nat] :
( ( drop_nat @ I2 @ ( replicate_nat @ K @ X ) )
= ( replicate_nat @ ( minus_minus_nat @ K @ I2 ) @ X ) ) ).
% drop_replicate
thf(fact_632_last__replicate,axiom,
! [N: nat,X: nat] :
( ( N != zero_zero_nat )
=> ( ( last_nat @ ( replicate_nat @ N @ X ) )
= X ) ) ).
% last_replicate
thf(fact_633_length__greater__0__conv,axiom,
! [Xs: list_nat] :
( ( ord_less_nat @ zero_zero_nat @ ( size_size_list_nat @ Xs ) )
= ( Xs != nil_nat ) ) ).
% length_greater_0_conv
thf(fact_634_hd__take,axiom,
! [J: nat,Xs: list_nat] :
( ( ord_less_nat @ zero_zero_nat @ J )
=> ( ( hd_nat @ ( take_nat @ J @ Xs ) )
= ( hd_nat @ Xs ) ) ) ).
% hd_take
thf(fact_635_last__drop,axiom,
! [N: nat,Xs: list_nat] :
( ( ord_less_nat @ N @ ( size_size_list_nat @ Xs ) )
=> ( ( last_nat @ ( drop_nat @ N @ Xs ) )
= ( last_nat @ Xs ) ) ) ).
% last_drop
thf(fact_636_tl__replicate,axiom,
! [N: nat,X: nat] :
( ( tl_nat @ ( replicate_nat @ N @ X ) )
= ( replicate_nat @ ( minus_minus_nat @ N @ one_one_nat ) @ X ) ) ).
% tl_replicate
thf(fact_637_append__replicate__commute,axiom,
! [N: nat,X: nat,K: nat] :
( ( append_nat @ ( replicate_nat @ N @ X ) @ ( replicate_nat @ K @ X ) )
= ( append_nat @ ( replicate_nat @ K @ X ) @ ( replicate_nat @ N @ X ) ) ) ).
% append_replicate_commute
thf(fact_638_length__induct,axiom,
! [P: list_nat > $o,Xs: list_nat] :
( ! [Xs2: list_nat] :
( ! [Ys7: list_nat] :
( ( ord_less_nat @ ( size_size_list_nat @ Ys7 ) @ ( size_size_list_nat @ Xs2 ) )
=> ( P @ Ys7 ) )
=> ( P @ Xs2 ) )
=> ( P @ Xs ) ) ).
% length_induct
thf(fact_639_Cons__replicate__eq,axiom,
! [X: a,Xs: list_a,N: nat,Y: a] :
( ( ( cons_a @ X @ Xs )
= ( replicate_a @ N @ Y ) )
= ( ( X = Y )
& ( ord_less_nat @ zero_zero_nat @ N )
& ( Xs
= ( replicate_a @ ( minus_minus_nat @ N @ one_one_nat ) @ X ) ) ) ) ).
% Cons_replicate_eq
thf(fact_640_Cons__replicate__eq,axiom,
! [X: nat,Xs: list_nat,N: nat,Y: nat] :
( ( ( cons_nat @ X @ Xs )
= ( replicate_nat @ N @ Y ) )
= ( ( X = Y )
& ( ord_less_nat @ zero_zero_nat @ N )
& ( Xs
= ( replicate_nat @ ( minus_minus_nat @ N @ one_one_nat ) @ X ) ) ) ) ).
% Cons_replicate_eq
thf(fact_641_comm__append__is__replicate,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( Xs != nil_nat )
=> ( ( Ys != nil_nat )
=> ( ( ( append_nat @ Xs @ Ys )
= ( append_nat @ Ys @ Xs ) )
=> ? [N2: nat,Zs2: list_nat] :
( ( ord_less_nat @ one_one_nat @ N2 )
& ( ( concat_nat @ ( replicate_list_nat @ N2 @ Zs2 ) )
= ( append_nat @ Xs @ Ys ) ) ) ) ) ) ).
% comm_append_is_replicate
thf(fact_642_replicate__Suc,axiom,
! [N: nat,X: a] :
( ( replicate_a @ ( suc @ N ) @ X )
= ( cons_a @ X @ ( replicate_a @ N @ X ) ) ) ).
% replicate_Suc
thf(fact_643_replicate__Suc,axiom,
! [N: nat,X: nat] :
( ( replicate_nat @ ( suc @ N ) @ X )
= ( cons_nat @ X @ ( replicate_nat @ N @ X ) ) ) ).
% replicate_Suc
thf(fact_644_replicate__0,axiom,
! [X: nat] :
( ( replicate_nat @ zero_zero_nat @ X )
= nil_nat ) ).
% replicate_0
thf(fact_645_replicate__length__same,axiom,
! [Xs: list_nat,X: nat] :
( ! [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ Xs ) )
=> ( X3 = X ) )
=> ( ( replicate_nat @ ( size_size_list_nat @ Xs ) @ X )
= Xs ) ) ).
% replicate_length_same
thf(fact_646_replicate__eqI,axiom,
! [Xs: list_list_nat,N: nat,X: list_nat] :
( ( ( size_s3023201423986296836st_nat @ Xs )
= N )
=> ( ! [Y2: list_nat] :
( ( member_list_nat2 @ Y2 @ ( set_list_nat2 @ Xs ) )
=> ( Y2 = X ) )
=> ( Xs
= ( replicate_list_nat @ N @ X ) ) ) ) ).
% replicate_eqI
thf(fact_647_replicate__eqI,axiom,
! [Xs: list_list_a,N: nat,X: list_a] :
( ( ( size_s349497388124573686list_a @ Xs )
= N )
=> ( ! [Y2: list_a] :
( ( member_list_a2 @ Y2 @ ( set_list_a2 @ Xs ) )
=> ( Y2 = X ) )
=> ( Xs
= ( replicate_list_a @ N @ X ) ) ) ) ).
% replicate_eqI
thf(fact_648_replicate__eqI,axiom,
! [Xs: list_nat,N: nat,X: nat] :
( ( ( size_size_list_nat @ Xs )
= N )
=> ( ! [Y2: nat] :
( ( member_nat2 @ Y2 @ ( set_nat2 @ Xs ) )
=> ( Y2 = X ) )
=> ( Xs
= ( replicate_nat @ N @ X ) ) ) ) ).
% replicate_eqI
thf(fact_649_replicate__app__Cons__same,axiom,
! [N: nat,X: a,Xs: list_a] :
( ( append_a @ ( replicate_a @ N @ X ) @ ( cons_a @ X @ Xs ) )
= ( cons_a @ X @ ( append_a @ ( replicate_a @ N @ X ) @ Xs ) ) ) ).
% replicate_app_Cons_same
thf(fact_650_replicate__app__Cons__same,axiom,
! [N: nat,X: nat,Xs: list_nat] :
( ( append_nat @ ( replicate_nat @ N @ X ) @ ( cons_nat @ X @ Xs ) )
= ( cons_nat @ X @ ( append_nat @ ( replicate_nat @ N @ X ) @ Xs ) ) ) ).
% replicate_app_Cons_same
thf(fact_651_comm__append__are__replicate,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( ( append_nat @ Xs @ Ys )
= ( append_nat @ Ys @ Xs ) )
=> ? [M2: nat,N2: nat,Zs2: list_nat] :
( ( ( concat_nat @ ( replicate_list_nat @ M2 @ Zs2 ) )
= Xs )
& ( ( concat_nat @ ( replicate_list_nat @ N2 @ Zs2 ) )
= Ys ) ) ) ).
% comm_append_are_replicate
thf(fact_652_lexordp__eq_OCons,axiom,
! [X: nat,Y: nat,Xs: list_nat,Ys: list_nat] :
( ( ord_less_nat @ X @ Y )
=> ( ord_lexordp_eq_nat @ ( cons_nat @ X @ Xs ) @ ( cons_nat @ Y @ Ys ) ) ) ).
% lexordp_eq.Cons
thf(fact_653_lexordp__eq_OCons__eq,axiom,
! [X: nat,Y: nat,Xs: list_nat,Ys: list_nat] :
( ~ ( ord_less_nat @ X @ Y )
=> ( ~ ( ord_less_nat @ Y @ X )
=> ( ( ord_lexordp_eq_nat @ Xs @ Ys )
=> ( ord_lexordp_eq_nat @ ( cons_nat @ X @ Xs ) @ ( cons_nat @ Y @ Ys ) ) ) ) ) ).
% lexordp_eq.Cons_eq
thf(fact_654_nths__all,axiom,
! [Xs: list_nat,I3: set_nat] :
( ! [I: nat] :
( ( ord_less_nat @ I @ ( size_size_list_nat @ Xs ) )
=> ( member_nat2 @ I @ I3 ) )
=> ( ( nths_nat @ Xs @ I3 )
= Xs ) ) ).
% nths_all
thf(fact_655_replicate__append__same,axiom,
! [I2: nat,X: a] :
( ( append_a @ ( replicate_a @ I2 @ X ) @ ( cons_a @ X @ nil_a ) )
= ( cons_a @ X @ ( replicate_a @ I2 @ X ) ) ) ).
% replicate_append_same
thf(fact_656_replicate__append__same,axiom,
! [I2: nat,X: nat] :
( ( append_nat @ ( replicate_nat @ I2 @ X ) @ ( cons_nat @ X @ nil_nat ) )
= ( cons_nat @ X @ ( replicate_nat @ I2 @ X ) ) ) ).
% replicate_append_same
thf(fact_657_length__pos__if__in__set,axiom,
! [X: list_nat,Xs: list_list_nat] :
( ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
=> ( ord_less_nat @ zero_zero_nat @ ( size_s3023201423986296836st_nat @ Xs ) ) ) ).
% length_pos_if_in_set
thf(fact_658_length__pos__if__in__set,axiom,
! [X: list_a,Xs: list_list_a] :
( ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
=> ( ord_less_nat @ zero_zero_nat @ ( size_s349497388124573686list_a @ Xs ) ) ) ).
% length_pos_if_in_set
thf(fact_659_length__pos__if__in__set,axiom,
! [X: nat,Xs: list_nat] :
( ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ( ord_less_nat @ zero_zero_nat @ ( size_size_list_nat @ Xs ) ) ) ).
% length_pos_if_in_set
thf(fact_660_set__update__memI,axiom,
! [N: nat,Xs: list_list_nat,X: list_nat] :
( ( ord_less_nat @ N @ ( size_s3023201423986296836st_nat @ Xs ) )
=> ( member_list_nat2 @ X @ ( set_list_nat2 @ ( list_update_list_nat @ Xs @ N @ X ) ) ) ) ).
% set_update_memI
thf(fact_661_set__update__memI,axiom,
! [N: nat,Xs: list_list_a,X: list_a] :
( ( ord_less_nat @ N @ ( size_s349497388124573686list_a @ Xs ) )
=> ( member_list_a2 @ X @ ( set_list_a2 @ ( list_update_list_a @ Xs @ N @ X ) ) ) ) ).
% set_update_memI
thf(fact_662_set__update__memI,axiom,
! [N: nat,Xs: list_nat,X: nat] :
( ( ord_less_nat @ N @ ( size_size_list_nat @ Xs ) )
=> ( member_nat2 @ X @ ( set_nat2 @ ( list_update_nat @ Xs @ N @ X ) ) ) ) ).
% set_update_memI
thf(fact_663_lexordp__eq_Ocases,axiom,
! [A1: list_nat,A2: list_nat] :
( ( ord_lexordp_eq_nat @ A1 @ A2 )
=> ( ( A1 != nil_nat )
=> ( ! [X3: nat] :
( ? [Xs2: list_nat] :
( A1
= ( cons_nat @ X3 @ Xs2 ) )
=> ! [Y2: nat] :
( ? [Ys3: list_nat] :
( A2
= ( cons_nat @ Y2 @ Ys3 ) )
=> ~ ( ord_less_nat @ X3 @ Y2 ) ) )
=> ~ ! [X3: nat,Y2: nat,Xs2: list_nat] :
( ( A1
= ( cons_nat @ X3 @ Xs2 ) )
=> ! [Ys3: list_nat] :
( ( A2
= ( cons_nat @ Y2 @ Ys3 ) )
=> ( ~ ( ord_less_nat @ X3 @ Y2 )
=> ( ~ ( ord_less_nat @ Y2 @ X3 )
=> ~ ( ord_lexordp_eq_nat @ Xs2 @ Ys3 ) ) ) ) ) ) ) ) ).
% lexordp_eq.cases
thf(fact_664_lexordp__eq_Osimps,axiom,
( ord_lexordp_eq_nat
= ( ^ [A12: list_nat,A22: list_nat] :
( ? [Ys2: list_nat] :
( ( A12 = nil_nat )
& ( A22 = Ys2 ) )
| ? [X2: nat,Y3: nat,Xs3: list_nat,Ys2: list_nat] :
( ( A12
= ( cons_nat @ X2 @ Xs3 ) )
& ( A22
= ( cons_nat @ Y3 @ Ys2 ) )
& ( ord_less_nat @ X2 @ Y3 ) )
| ? [X2: nat,Y3: nat,Xs3: list_nat,Ys2: list_nat] :
( ( A12
= ( cons_nat @ X2 @ Xs3 ) )
& ( A22
= ( cons_nat @ Y3 @ Ys2 ) )
& ~ ( ord_less_nat @ X2 @ Y3 )
& ~ ( ord_less_nat @ Y3 @ X2 )
& ( ord_lexordp_eq_nat @ Xs3 @ Ys2 ) ) ) ) ) ).
% lexordp_eq.simps
thf(fact_665_list__update__append1,axiom,
! [I2: nat,Xs: list_nat,Ys: list_nat,X: nat] :
( ( ord_less_nat @ I2 @ ( size_size_list_nat @ Xs ) )
=> ( ( list_update_nat @ ( append_nat @ Xs @ Ys ) @ I2 @ X )
= ( append_nat @ ( list_update_nat @ Xs @ I2 @ X ) @ Ys ) ) ) ).
% list_update_append1
thf(fact_666_take__butlast,axiom,
! [N: nat,Xs: list_nat] :
( ( ord_less_nat @ N @ ( size_size_list_nat @ Xs ) )
=> ( ( take_nat @ N @ ( butlast_nat @ Xs ) )
= ( take_nat @ N @ Xs ) ) ) ).
% take_butlast
thf(fact_667_remdups__adj__replicate,axiom,
! [N: nat,X: a] :
( ( ( N = zero_zero_nat )
=> ( ( remdups_adj_a @ ( replicate_a @ N @ X ) )
= nil_a ) )
& ( ( N != zero_zero_nat )
=> ( ( remdups_adj_a @ ( replicate_a @ N @ X ) )
= ( cons_a @ X @ nil_a ) ) ) ) ).
% remdups_adj_replicate
thf(fact_668_remdups__adj__replicate,axiom,
! [N: nat,X: nat] :
( ( ( N = zero_zero_nat )
=> ( ( remdups_adj_nat @ ( replicate_nat @ N @ X ) )
= nil_nat ) )
& ( ( N != zero_zero_nat )
=> ( ( remdups_adj_nat @ ( replicate_nat @ N @ X ) )
= ( cons_nat @ X @ nil_nat ) ) ) ) ).
% remdups_adj_replicate
thf(fact_669_remdups__adj__singleton,axiom,
! [Xs: list_a,X: a] :
( ( ( remdups_adj_a @ Xs )
= ( cons_a @ X @ nil_a ) )
=> ( Xs
= ( replicate_a @ ( size_size_list_a @ Xs ) @ X ) ) ) ).
% remdups_adj_singleton
thf(fact_670_remdups__adj__singleton,axiom,
! [Xs: list_nat,X: nat] :
( ( ( remdups_adj_nat @ Xs )
= ( cons_nat @ X @ nil_nat ) )
=> ( Xs
= ( replicate_nat @ ( size_size_list_nat @ Xs ) @ X ) ) ) ).
% remdups_adj_singleton
thf(fact_671_list__update__append,axiom,
! [N: nat,Xs: list_nat,Ys: list_nat,X: nat] :
( ( ( ord_less_nat @ N @ ( size_size_list_nat @ Xs ) )
=> ( ( list_update_nat @ ( append_nat @ Xs @ Ys ) @ N @ X )
= ( append_nat @ ( list_update_nat @ Xs @ N @ X ) @ Ys ) ) )
& ( ~ ( ord_less_nat @ N @ ( size_size_list_nat @ Xs ) )
=> ( ( list_update_nat @ ( append_nat @ Xs @ Ys ) @ N @ X )
= ( append_nat @ Xs @ ( list_update_nat @ Ys @ ( minus_minus_nat @ N @ ( size_size_list_nat @ Xs ) ) @ X ) ) ) ) ) ).
% list_update_append
thf(fact_672_rev__update,axiom,
! [K: nat,Xs: list_nat,Y: nat] :
( ( ord_less_nat @ K @ ( size_size_list_nat @ Xs ) )
=> ( ( rev_nat @ ( list_update_nat @ Xs @ K @ Y ) )
= ( list_update_nat @ ( rev_nat @ Xs ) @ ( minus_minus_nat @ ( minus_minus_nat @ ( size_size_list_nat @ Xs ) @ K ) @ one_one_nat ) @ Y ) ) ) ).
% rev_update
thf(fact_673_id__take__nth__drop,axiom,
! [I2: nat,Xs: list_a] :
( ( ord_less_nat @ I2 @ ( size_size_list_a @ Xs ) )
=> ( Xs
= ( append_a @ ( take_a @ I2 @ Xs ) @ ( cons_a @ ( nth_a @ Xs @ I2 ) @ ( drop_a @ ( suc @ I2 ) @ Xs ) ) ) ) ) ).
% id_take_nth_drop
thf(fact_674_id__take__nth__drop,axiom,
! [I2: nat,Xs: list_nat] :
( ( ord_less_nat @ I2 @ ( size_size_list_nat @ Xs ) )
=> ( Xs
= ( append_nat @ ( take_nat @ I2 @ Xs ) @ ( cons_nat @ ( nth_nat @ Xs @ I2 ) @ ( drop_nat @ ( suc @ I2 ) @ Xs ) ) ) ) ) ).
% id_take_nth_drop
thf(fact_675_take__Suc__conv__app__nth,axiom,
! [I2: nat,Xs: list_a] :
( ( ord_less_nat @ I2 @ ( size_size_list_a @ Xs ) )
=> ( ( take_a @ ( suc @ I2 ) @ Xs )
= ( append_a @ ( take_a @ I2 @ Xs ) @ ( cons_a @ ( nth_a @ Xs @ I2 ) @ nil_a ) ) ) ) ).
% take_Suc_conv_app_nth
thf(fact_676_take__Suc__conv__app__nth,axiom,
! [I2: nat,Xs: list_nat] :
( ( ord_less_nat @ I2 @ ( size_size_list_nat @ Xs ) )
=> ( ( take_nat @ ( suc @ I2 ) @ Xs )
= ( append_nat @ ( take_nat @ I2 @ Xs ) @ ( cons_nat @ ( nth_nat @ Xs @ I2 ) @ nil_nat ) ) ) ) ).
% take_Suc_conv_app_nth
thf(fact_677_card__set__1__iff__replicate,axiom,
! [Xs: list_list_nat] :
( ( ( finite_card_list_nat @ ( set_list_nat2 @ Xs ) )
= ( suc @ zero_zero_nat ) )
= ( ( Xs != nil_list_nat )
& ? [X2: list_nat] :
( Xs
= ( replicate_list_nat @ ( size_s3023201423986296836st_nat @ Xs ) @ X2 ) ) ) ) ).
% card_set_1_iff_replicate
thf(fact_678_card__set__1__iff__replicate,axiom,
! [Xs: list_nat] :
( ( ( finite_card_nat @ ( set_nat2 @ Xs ) )
= ( suc @ zero_zero_nat ) )
= ( ( Xs != nil_nat )
& ? [X2: nat] :
( Xs
= ( replicate_nat @ ( size_size_list_nat @ Xs ) @ X2 ) ) ) ) ).
% card_set_1_iff_replicate
thf(fact_679_nth__Cons__pos,axiom,
! [N: nat,X: a,Xs: list_a] :
( ( ord_less_nat @ zero_zero_nat @ N )
=> ( ( nth_a @ ( cons_a @ X @ Xs ) @ N )
= ( nth_a @ Xs @ ( minus_minus_nat @ N @ one_one_nat ) ) ) ) ).
% nth_Cons_pos
thf(fact_680_nth__Cons__pos,axiom,
! [N: nat,X: nat,Xs: list_nat] :
( ( ord_less_nat @ zero_zero_nat @ N )
=> ( ( nth_nat @ ( cons_nat @ X @ Xs ) @ N )
= ( nth_nat @ Xs @ ( minus_minus_nat @ N @ one_one_nat ) ) ) ) ).
% nth_Cons_pos
thf(fact_681_drop__Cons__numeral,axiom,
! [V: num,X: a,Xs: list_a] :
( ( drop_a @ ( numeral_numeral_nat @ V ) @ ( cons_a @ X @ Xs ) )
= ( drop_a @ ( minus_minus_nat @ ( numeral_numeral_nat @ V ) @ one_one_nat ) @ Xs ) ) ).
% drop_Cons_numeral
thf(fact_682_drop__Cons__numeral,axiom,
! [V: num,X: nat,Xs: list_nat] :
( ( drop_nat @ ( numeral_numeral_nat @ V ) @ ( cons_nat @ X @ Xs ) )
= ( drop_nat @ ( minus_minus_nat @ ( numeral_numeral_nat @ V ) @ one_one_nat ) @ Xs ) ) ).
% drop_Cons_numeral
thf(fact_683_nth__list__update__neq,axiom,
! [I2: nat,J: nat,Xs: list_nat,X: nat] :
( ( I2 != J )
=> ( ( nth_nat @ ( list_update_nat @ Xs @ I2 @ X ) @ J )
= ( nth_nat @ Xs @ J ) ) ) ).
% nth_list_update_neq
thf(fact_684_list__update__id,axiom,
! [Xs: list_nat,I2: nat] :
( ( list_update_nat @ Xs @ I2 @ ( nth_nat @ Xs @ I2 ) )
= Xs ) ).
% list_update_id
thf(fact_685_nth__Cons__Suc,axiom,
! [X: a,Xs: list_a,N: nat] :
( ( nth_a @ ( cons_a @ X @ Xs ) @ ( suc @ N ) )
= ( nth_a @ Xs @ N ) ) ).
% nth_Cons_Suc
thf(fact_686_nth__Cons__Suc,axiom,
! [X: nat,Xs: list_nat,N: nat] :
( ( nth_nat @ ( cons_nat @ X @ Xs ) @ ( suc @ N ) )
= ( nth_nat @ Xs @ N ) ) ).
% nth_Cons_Suc
thf(fact_687_nth__Cons__0,axiom,
! [X: a,Xs: list_a] :
( ( nth_a @ ( cons_a @ X @ Xs ) @ zero_zero_nat )
= X ) ).
% nth_Cons_0
thf(fact_688_nth__Cons__0,axiom,
! [X: nat,Xs: list_nat] :
( ( nth_nat @ ( cons_nat @ X @ Xs ) @ zero_zero_nat )
= X ) ).
% nth_Cons_0
thf(fact_689_nth__take,axiom,
! [I2: nat,N: nat,Xs: list_nat] :
( ( ord_less_nat @ I2 @ N )
=> ( ( nth_nat @ ( take_nat @ N @ Xs ) @ I2 )
= ( nth_nat @ Xs @ I2 ) ) ) ).
% nth_take
thf(fact_690_nth__replicate,axiom,
! [I2: nat,N: nat,X: nat] :
( ( ord_less_nat @ I2 @ N )
=> ( ( nth_nat @ ( replicate_nat @ N @ X ) @ I2 )
= X ) ) ).
% nth_replicate
thf(fact_691_nth__append__length,axiom,
! [Xs: list_a,X: a,Ys: list_a] :
( ( nth_a @ ( append_a @ Xs @ ( cons_a @ X @ Ys ) ) @ ( size_size_list_a @ Xs ) )
= X ) ).
% nth_append_length
thf(fact_692_nth__append__length,axiom,
! [Xs: list_nat,X: nat,Ys: list_nat] :
( ( nth_nat @ ( append_nat @ Xs @ ( cons_nat @ X @ Ys ) ) @ ( size_size_list_nat @ Xs ) )
= X ) ).
% nth_append_length
thf(fact_693_nth__list__update__eq,axiom,
! [I2: nat,Xs: list_nat,X: nat] :
( ( ord_less_nat @ I2 @ ( size_size_list_nat @ Xs ) )
=> ( ( nth_nat @ ( list_update_nat @ Xs @ I2 @ X ) @ I2 )
= X ) ) ).
% nth_list_update_eq
thf(fact_694_nth__Cons__numeral,axiom,
! [X: a,Xs: list_a,V: num] :
( ( nth_a @ ( cons_a @ X @ Xs ) @ ( numeral_numeral_nat @ V ) )
= ( nth_a @ Xs @ ( minus_minus_nat @ ( numeral_numeral_nat @ V ) @ one_one_nat ) ) ) ).
% nth_Cons_numeral
thf(fact_695_nth__Cons__numeral,axiom,
! [X: nat,Xs: list_nat,V: num] :
( ( nth_nat @ ( cons_nat @ X @ Xs ) @ ( numeral_numeral_nat @ V ) )
= ( nth_nat @ Xs @ ( minus_minus_nat @ ( numeral_numeral_nat @ V ) @ one_one_nat ) ) ) ).
% nth_Cons_numeral
thf(fact_696_take__Cons__numeral,axiom,
! [V: num,X: a,Xs: list_a] :
( ( take_a @ ( numeral_numeral_nat @ V ) @ ( cons_a @ X @ Xs ) )
= ( cons_a @ X @ ( take_a @ ( minus_minus_nat @ ( numeral_numeral_nat @ V ) @ one_one_nat ) @ Xs ) ) ) ).
% take_Cons_numeral
thf(fact_697_take__Cons__numeral,axiom,
! [V: num,X: nat,Xs: list_nat] :
( ( take_nat @ ( numeral_numeral_nat @ V ) @ ( cons_nat @ X @ Xs ) )
= ( cons_nat @ X @ ( take_nat @ ( minus_minus_nat @ ( numeral_numeral_nat @ V ) @ one_one_nat ) @ Xs ) ) ) ).
% take_Cons_numeral
thf(fact_698_set__swap,axiom,
! [I2: nat,Xs: list_nat,J: nat] :
( ( ord_less_nat @ I2 @ ( size_size_list_nat @ Xs ) )
=> ( ( ord_less_nat @ J @ ( size_size_list_nat @ Xs ) )
=> ( ( set_nat2 @ ( list_update_nat @ ( list_update_nat @ Xs @ I2 @ ( nth_nat @ Xs @ J ) ) @ J @ ( nth_nat @ Xs @ I2 ) ) )
= ( set_nat2 @ Xs ) ) ) ) ).
% set_swap
thf(fact_699_list__eq__iff__nth__eq,axiom,
( ( ^ [Y4: list_nat,Z4: list_nat] : ( Y4 = Z4 ) )
= ( ^ [Xs3: list_nat,Ys2: list_nat] :
( ( ( size_size_list_nat @ Xs3 )
= ( size_size_list_nat @ Ys2 ) )
& ! [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_size_list_nat @ Xs3 ) )
=> ( ( nth_nat @ Xs3 @ I4 )
= ( nth_nat @ Ys2 @ I4 ) ) ) ) ) ) ).
% list_eq_iff_nth_eq
thf(fact_700_Skolem__list__nth,axiom,
! [K: nat,P: nat > nat > $o] :
( ( ! [I4: nat] :
( ( ord_less_nat @ I4 @ K )
=> ? [X5: nat] : ( P @ I4 @ X5 ) ) )
= ( ? [Xs3: list_nat] :
( ( ( size_size_list_nat @ Xs3 )
= K )
& ! [I4: nat] :
( ( ord_less_nat @ I4 @ K )
=> ( P @ I4 @ ( nth_nat @ Xs3 @ I4 ) ) ) ) ) ) ).
% Skolem_list_nth
thf(fact_701_nth__equalityI,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( ( size_size_list_nat @ Xs )
= ( size_size_list_nat @ Ys ) )
=> ( ! [I: nat] :
( ( ord_less_nat @ I @ ( size_size_list_nat @ Xs ) )
=> ( ( nth_nat @ Xs @ I )
= ( nth_nat @ Ys @ I ) ) )
=> ( Xs = Ys ) ) ) ).
% nth_equalityI
thf(fact_702_nth__via__drop,axiom,
! [N: nat,Xs: list_a,Y: a,Ys: list_a] :
( ( ( drop_a @ N @ Xs )
= ( cons_a @ Y @ Ys ) )
=> ( ( nth_a @ Xs @ N )
= Y ) ) ).
% nth_via_drop
thf(fact_703_nth__via__drop,axiom,
! [N: nat,Xs: list_nat,Y: nat,Ys: list_nat] :
( ( ( drop_nat @ N @ Xs )
= ( cons_nat @ Y @ Ys ) )
=> ( ( nth_nat @ Xs @ N )
= Y ) ) ).
% nth_via_drop
thf(fact_704_all__set__conv__all__nth,axiom,
! [Xs: list_nat,P: nat > $o] :
( ( ! [X2: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Xs ) )
=> ( P @ X2 ) ) )
= ( ! [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_size_list_nat @ Xs ) )
=> ( P @ ( nth_nat @ Xs @ I4 ) ) ) ) ) ).
% all_set_conv_all_nth
thf(fact_705_all__nth__imp__all__set,axiom,
! [Xs: list_list_nat,P: list_nat > $o,X: list_nat] :
( ! [I: nat] :
( ( ord_less_nat @ I @ ( size_s3023201423986296836st_nat @ Xs ) )
=> ( P @ ( nth_list_nat @ Xs @ I ) ) )
=> ( ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
=> ( P @ X ) ) ) ).
% all_nth_imp_all_set
thf(fact_706_all__nth__imp__all__set,axiom,
! [Xs: list_list_a,P: list_a > $o,X: list_a] :
( ! [I: nat] :
( ( ord_less_nat @ I @ ( size_s349497388124573686list_a @ Xs ) )
=> ( P @ ( nth_list_a @ Xs @ I ) ) )
=> ( ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
=> ( P @ X ) ) ) ).
% all_nth_imp_all_set
thf(fact_707_all__nth__imp__all__set,axiom,
! [Xs: list_nat,P: nat > $o,X: nat] :
( ! [I: nat] :
( ( ord_less_nat @ I @ ( size_size_list_nat @ Xs ) )
=> ( P @ ( nth_nat @ Xs @ I ) ) )
=> ( ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ( P @ X ) ) ) ).
% all_nth_imp_all_set
thf(fact_708_in__set__conv__nth,axiom,
! [X: list_nat,Xs: list_list_nat] :
( ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
= ( ? [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_s3023201423986296836st_nat @ Xs ) )
& ( ( nth_list_nat @ Xs @ I4 )
= X ) ) ) ) ).
% in_set_conv_nth
thf(fact_709_in__set__conv__nth,axiom,
! [X: list_a,Xs: list_list_a] :
( ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
= ( ? [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_s349497388124573686list_a @ Xs ) )
& ( ( nth_list_a @ Xs @ I4 )
= X ) ) ) ) ).
% in_set_conv_nth
thf(fact_710_in__set__conv__nth,axiom,
! [X: nat,Xs: list_nat] :
( ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
= ( ? [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_size_list_nat @ Xs ) )
& ( ( nth_nat @ Xs @ I4 )
= X ) ) ) ) ).
% in_set_conv_nth
thf(fact_711_list__ball__nth,axiom,
! [N: nat,Xs: list_nat,P: nat > $o] :
( ( ord_less_nat @ N @ ( size_size_list_nat @ Xs ) )
=> ( ! [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ Xs ) )
=> ( P @ X3 ) )
=> ( P @ ( nth_nat @ Xs @ N ) ) ) ) ).
% list_ball_nth
thf(fact_712_nth__mem,axiom,
! [N: nat,Xs: list_list_nat] :
( ( ord_less_nat @ N @ ( size_s3023201423986296836st_nat @ Xs ) )
=> ( member_list_nat2 @ ( nth_list_nat @ Xs @ N ) @ ( set_list_nat2 @ Xs ) ) ) ).
% nth_mem
thf(fact_713_nth__mem,axiom,
! [N: nat,Xs: list_list_a] :
( ( ord_less_nat @ N @ ( size_s349497388124573686list_a @ Xs ) )
=> ( member_list_a2 @ ( nth_list_a @ Xs @ N ) @ ( set_list_a2 @ Xs ) ) ) ).
% nth_mem
thf(fact_714_nth__mem,axiom,
! [N: nat,Xs: list_nat] :
( ( ord_less_nat @ N @ ( size_size_list_nat @ Xs ) )
=> ( member_nat2 @ ( nth_nat @ Xs @ N ) @ ( set_nat2 @ Xs ) ) ) ).
% nth_mem
thf(fact_715_card__length,axiom,
! [Xs: list_list_nat] : ( ord_less_eq_nat @ ( finite_card_list_nat @ ( set_list_nat2 @ Xs ) ) @ ( size_s3023201423986296836st_nat @ Xs ) ) ).
% card_length
thf(fact_716_card__length,axiom,
! [Xs: list_nat] : ( ord_less_eq_nat @ ( finite_card_nat @ ( set_nat2 @ Xs ) ) @ ( size_size_list_nat @ Xs ) ) ).
% card_length
thf(fact_717_hd__conv__nth,axiom,
! [Xs: list_nat] :
( ( Xs != nil_nat )
=> ( ( hd_nat @ Xs )
= ( nth_nat @ Xs @ zero_zero_nat ) ) ) ).
% hd_conv_nth
thf(fact_718_nth__list__update,axiom,
! [I2: nat,Xs: list_nat,J: nat,X: nat] :
( ( ord_less_nat @ I2 @ ( size_size_list_nat @ Xs ) )
=> ( ( ( I2 = J )
=> ( ( nth_nat @ ( list_update_nat @ Xs @ I2 @ X ) @ J )
= X ) )
& ( ( I2 != J )
=> ( ( nth_nat @ ( list_update_nat @ Xs @ I2 @ X ) @ J )
= ( nth_nat @ Xs @ J ) ) ) ) ) ).
% nth_list_update
thf(fact_719_list__update__same__conv,axiom,
! [I2: nat,Xs: list_nat,X: nat] :
( ( ord_less_nat @ I2 @ ( size_size_list_nat @ Xs ) )
=> ( ( ( list_update_nat @ Xs @ I2 @ X )
= Xs )
= ( ( nth_nat @ Xs @ I2 )
= X ) ) ) ).
% list_update_same_conv
thf(fact_720_nth__butlast,axiom,
! [N: nat,Xs: list_nat] :
( ( ord_less_nat @ N @ ( size_size_list_nat @ ( butlast_nat @ Xs ) ) )
=> ( ( nth_nat @ ( butlast_nat @ Xs ) @ N )
= ( nth_nat @ Xs @ N ) ) ) ).
% nth_butlast
thf(fact_721_list__ex__length,axiom,
( list_ex_a
= ( ^ [P2: a > $o,Xs3: list_a] :
? [N3: nat] :
( ( ord_less_nat @ N3 @ ( size_size_list_a @ Xs3 ) )
& ( P2 @ ( nth_a @ Xs3 @ N3 ) ) ) ) ) ).
% list_ex_length
thf(fact_722_list__ex__length,axiom,
( list_ex_nat
= ( ^ [P2: nat > $o,Xs3: list_nat] :
? [N3: nat] :
( ( ord_less_nat @ N3 @ ( size_size_list_nat @ Xs3 ) )
& ( P2 @ ( nth_nat @ Xs3 @ N3 ) ) ) ) ) ).
% list_ex_length
thf(fact_723_nth__Cons_H,axiom,
! [N: nat,X: a,Xs: list_a] :
( ( ( N = zero_zero_nat )
=> ( ( nth_a @ ( cons_a @ X @ Xs ) @ N )
= X ) )
& ( ( N != zero_zero_nat )
=> ( ( nth_a @ ( cons_a @ X @ Xs ) @ N )
= ( nth_a @ Xs @ ( minus_minus_nat @ N @ one_one_nat ) ) ) ) ) ).
% nth_Cons'
thf(fact_724_nth__Cons_H,axiom,
! [N: nat,X: nat,Xs: list_nat] :
( ( ( N = zero_zero_nat )
=> ( ( nth_nat @ ( cons_nat @ X @ Xs ) @ N )
= X ) )
& ( ( N != zero_zero_nat )
=> ( ( nth_nat @ ( cons_nat @ X @ Xs ) @ N )
= ( nth_nat @ Xs @ ( minus_minus_nat @ N @ one_one_nat ) ) ) ) ) ).
% nth_Cons'
thf(fact_725_nth__append,axiom,
! [N: nat,Xs: list_nat,Ys: list_nat] :
( ( ( ord_less_nat @ N @ ( size_size_list_nat @ Xs ) )
=> ( ( nth_nat @ ( append_nat @ Xs @ Ys ) @ N )
= ( nth_nat @ Xs @ N ) ) )
& ( ~ ( ord_less_nat @ N @ ( size_size_list_nat @ Xs ) )
=> ( ( nth_nat @ ( append_nat @ Xs @ Ys ) @ N )
= ( nth_nat @ Ys @ ( minus_minus_nat @ N @ ( size_size_list_nat @ Xs ) ) ) ) ) ) ).
% nth_append
thf(fact_726_nth__take__lemma,axiom,
! [K: nat,Xs: list_nat,Ys: list_nat] :
( ( ord_less_eq_nat @ K @ ( size_size_list_nat @ Xs ) )
=> ( ( ord_less_eq_nat @ K @ ( size_size_list_nat @ Ys ) )
=> ( ! [I: nat] :
( ( ord_less_nat @ I @ K )
=> ( ( nth_nat @ Xs @ I )
= ( nth_nat @ Ys @ I ) ) )
=> ( ( take_nat @ K @ Xs )
= ( take_nat @ K @ Ys ) ) ) ) ) ).
% nth_take_lemma
thf(fact_727_nth__tl,axiom,
! [N: nat,Xs: list_nat] :
( ( ord_less_nat @ N @ ( size_size_list_nat @ ( tl_nat @ Xs ) ) )
=> ( ( nth_nat @ ( tl_nat @ Xs ) @ N )
= ( nth_nat @ Xs @ ( suc @ N ) ) ) ) ).
% nth_tl
thf(fact_728_remdups__adj__adjacent,axiom,
! [I2: nat,Xs: list_nat] :
( ( ord_less_nat @ ( suc @ I2 ) @ ( size_size_list_nat @ ( remdups_adj_nat @ Xs ) ) )
=> ( ( nth_nat @ ( remdups_adj_nat @ Xs ) @ I2 )
!= ( nth_nat @ ( remdups_adj_nat @ Xs ) @ ( suc @ I2 ) ) ) ) ).
% remdups_adj_adjacent
thf(fact_729_hd__drop__conv__nth,axiom,
! [N: nat,Xs: list_nat] :
( ( ord_less_nat @ N @ ( size_size_list_nat @ Xs ) )
=> ( ( hd_nat @ ( drop_nat @ N @ Xs ) )
= ( nth_nat @ Xs @ N ) ) ) ).
% hd_drop_conv_nth
thf(fact_730_rotate1__fixpoint__card,axiom,
! [Xs: list_nat] :
( ( ( rotate1_nat @ Xs )
= Xs )
=> ( ( Xs = nil_nat )
| ( ( finite_card_nat @ ( set_nat2 @ Xs ) )
= one_one_nat ) ) ) ).
% rotate1_fixpoint_card
thf(fact_731_rotate1__fixpoint__card,axiom,
! [Xs: list_list_nat] :
( ( ( rotate1_list_nat @ Xs )
= Xs )
=> ( ( Xs = nil_list_nat )
| ( ( finite_card_list_nat @ ( set_list_nat2 @ Xs ) )
= one_one_nat ) ) ) ).
% rotate1_fixpoint_card
thf(fact_732_nth__equal__first__eq,axiom,
! [X: list_nat,Xs: list_list_nat,N: nat] :
( ~ ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
=> ( ( ord_less_eq_nat @ N @ ( size_s3023201423986296836st_nat @ Xs ) )
=> ( ( ( nth_list_nat @ ( cons_list_nat @ X @ Xs ) @ N )
= X )
= ( N = zero_zero_nat ) ) ) ) ).
% nth_equal_first_eq
thf(fact_733_nth__equal__first__eq,axiom,
! [X: list_a,Xs: list_list_a,N: nat] :
( ~ ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
=> ( ( ord_less_eq_nat @ N @ ( size_s349497388124573686list_a @ Xs ) )
=> ( ( ( nth_list_a @ ( cons_list_a @ X @ Xs ) @ N )
= X )
= ( N = zero_zero_nat ) ) ) ) ).
% nth_equal_first_eq
thf(fact_734_nth__equal__first__eq,axiom,
! [X: a,Xs: list_a,N: nat] :
( ~ ( member_a2 @ X @ ( set_a2 @ Xs ) )
=> ( ( ord_less_eq_nat @ N @ ( size_size_list_a @ Xs ) )
=> ( ( ( nth_a @ ( cons_a @ X @ Xs ) @ N )
= X )
= ( N = zero_zero_nat ) ) ) ) ).
% nth_equal_first_eq
thf(fact_735_nth__equal__first__eq,axiom,
! [X: nat,Xs: list_nat,N: nat] :
( ~ ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ( ( ord_less_eq_nat @ N @ ( size_size_list_nat @ Xs ) )
=> ( ( ( nth_nat @ ( cons_nat @ X @ Xs ) @ N )
= X )
= ( N = zero_zero_nat ) ) ) ) ).
% nth_equal_first_eq
thf(fact_736_nth__non__equal__first__eq,axiom,
! [X: a,Y: a,Xs: list_a,N: nat] :
( ( X != Y )
=> ( ( ( nth_a @ ( cons_a @ X @ Xs ) @ N )
= Y )
= ( ( ( nth_a @ Xs @ ( minus_minus_nat @ N @ one_one_nat ) )
= Y )
& ( ord_less_nat @ zero_zero_nat @ N ) ) ) ) ).
% nth_non_equal_first_eq
thf(fact_737_nth__non__equal__first__eq,axiom,
! [X: nat,Y: nat,Xs: list_nat,N: nat] :
( ( X != Y )
=> ( ( ( nth_nat @ ( cons_nat @ X @ Xs ) @ N )
= Y )
= ( ( ( nth_nat @ Xs @ ( minus_minus_nat @ N @ one_one_nat ) )
= Y )
& ( ord_less_nat @ zero_zero_nat @ N ) ) ) ) ).
% nth_non_equal_first_eq
thf(fact_738_Cons__nth__drop__Suc,axiom,
! [I2: nat,Xs: list_a] :
( ( ord_less_nat @ I2 @ ( size_size_list_a @ Xs ) )
=> ( ( cons_a @ ( nth_a @ Xs @ I2 ) @ ( drop_a @ ( suc @ I2 ) @ Xs ) )
= ( drop_a @ I2 @ Xs ) ) ) ).
% Cons_nth_drop_Suc
thf(fact_739_Cons__nth__drop__Suc,axiom,
! [I2: nat,Xs: list_nat] :
( ( ord_less_nat @ I2 @ ( size_size_list_nat @ Xs ) )
=> ( ( cons_nat @ ( nth_nat @ Xs @ I2 ) @ ( drop_nat @ ( suc @ I2 ) @ Xs ) )
= ( drop_nat @ I2 @ Xs ) ) ) ).
% Cons_nth_drop_Suc
thf(fact_740_rev__nth,axiom,
! [N: nat,Xs: list_nat] :
( ( ord_less_nat @ N @ ( size_size_list_nat @ Xs ) )
=> ( ( nth_nat @ ( rev_nat @ Xs ) @ N )
= ( nth_nat @ Xs @ ( minus_minus_nat @ ( size_size_list_nat @ Xs ) @ ( suc @ N ) ) ) ) ) ).
% rev_nth
thf(fact_741_last__conv__nth,axiom,
! [Xs: list_nat] :
( ( Xs != nil_nat )
=> ( ( last_nat @ Xs )
= ( nth_nat @ Xs @ ( minus_minus_nat @ ( size_size_list_nat @ Xs ) @ one_one_nat ) ) ) ) ).
% last_conv_nth
thf(fact_742_sorted__rev__iff__nth__mono,axiom,
! [Xs: list_nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ ( rev_nat @ Xs ) )
= ( ! [I4: nat,J2: nat] :
( ( ord_less_eq_nat @ I4 @ J2 )
=> ( ( ord_less_nat @ J2 @ ( size_size_list_nat @ Xs ) )
=> ( ord_less_eq_nat @ ( nth_nat @ Xs @ J2 ) @ ( nth_nat @ Xs @ I4 ) ) ) ) ) ) ).
% sorted_rev_iff_nth_mono
thf(fact_743_sorted__rev__nth__mono,axiom,
! [Xs: list_nat,I2: nat,J: nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ ( rev_nat @ Xs ) )
=> ( ( ord_less_eq_nat @ I2 @ J )
=> ( ( ord_less_nat @ J @ ( size_size_list_nat @ Xs ) )
=> ( ord_less_eq_nat @ ( nth_nat @ Xs @ J ) @ ( nth_nat @ Xs @ I2 ) ) ) ) ) ).
% sorted_rev_nth_mono
thf(fact_744_sorted__rev__iff__nth__Suc,axiom,
! [Xs: list_nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ ( rev_nat @ Xs ) )
= ( ! [I4: nat] :
( ( ord_less_nat @ ( suc @ I4 ) @ ( size_size_list_nat @ Xs ) )
=> ( ord_less_eq_nat @ ( nth_nat @ Xs @ ( suc @ I4 ) ) @ ( nth_nat @ Xs @ I4 ) ) ) ) ) ).
% sorted_rev_iff_nth_Suc
thf(fact_745_nth__drop,axiom,
! [N: nat,Xs: list_nat,I2: nat] :
( ( ord_less_eq_nat @ N @ ( size_size_list_nat @ Xs ) )
=> ( ( nth_nat @ ( drop_nat @ N @ Xs ) @ I2 )
= ( nth_nat @ Xs @ ( plus_plus_nat @ N @ I2 ) ) ) ) ).
% nth_drop
thf(fact_746_nth__rotate1,axiom,
! [N: nat,Xs: list_nat] :
( ( ord_less_nat @ N @ ( size_size_list_nat @ Xs ) )
=> ( ( nth_nat @ ( rotate1_nat @ Xs ) @ N )
= ( nth_nat @ Xs @ ( modulo_modulo_nat @ ( suc @ N ) @ ( size_size_list_nat @ Xs ) ) ) ) ) ).
% nth_rotate1
thf(fact_747_drop__drop,axiom,
! [N: nat,M: nat,Xs: list_nat] :
( ( drop_nat @ N @ ( drop_nat @ M @ Xs ) )
= ( drop_nat @ ( plus_plus_nat @ N @ M ) @ Xs ) ) ).
% drop_drop
thf(fact_748_length__append,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( size_size_list_nat @ ( append_nat @ Xs @ Ys ) )
= ( plus_plus_nat @ ( size_size_list_nat @ Xs ) @ ( size_size_list_nat @ Ys ) ) ) ).
% length_append
thf(fact_749_length__splice,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( size_size_list_nat @ ( splice_nat @ Xs @ Ys ) )
= ( plus_plus_nat @ ( size_size_list_nat @ Xs ) @ ( size_size_list_nat @ Ys ) ) ) ).
% length_splice
thf(fact_750_nth__append__length__plus,axiom,
! [Xs: list_nat,Ys: list_nat,N: nat] :
( ( nth_nat @ ( append_nat @ Xs @ Ys ) @ ( plus_plus_nat @ ( size_size_list_nat @ Xs ) @ N ) )
= ( nth_nat @ Ys @ N ) ) ).
% nth_append_length_plus
thf(fact_751_subset__code_I1_J,axiom,
! [Xs: list_list_nat,B2: set_list_nat] :
( ( ord_le6045566169113846134st_nat @ ( set_list_nat2 @ Xs ) @ B2 )
= ( ! [X2: list_nat] :
( ( member_list_nat2 @ X2 @ ( set_list_nat2 @ Xs ) )
=> ( member_list_nat2 @ X2 @ B2 ) ) ) ) ).
% subset_code(1)
thf(fact_752_subset__code_I1_J,axiom,
! [Xs: list_list_a,B2: set_list_a] :
( ( ord_le8861187494160871172list_a @ ( set_list_a2 @ Xs ) @ B2 )
= ( ! [X2: list_a] :
( ( member_list_a2 @ X2 @ ( set_list_a2 @ Xs ) )
=> ( member_list_a2 @ X2 @ B2 ) ) ) ) ).
% subset_code(1)
thf(fact_753_subset__code_I1_J,axiom,
! [Xs: list_nat,B2: set_nat] :
( ( ord_less_eq_set_nat @ ( set_nat2 @ Xs ) @ B2 )
= ( ! [X2: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Xs ) )
=> ( member_nat2 @ X2 @ B2 ) ) ) ) ).
% subset_code(1)
thf(fact_754_sorted__wrt_Osimps_I1_J,axiom,
! [P: nat > nat > $o] : ( sorted_wrt_nat @ P @ nil_nat ) ).
% sorted_wrt.simps(1)
thf(fact_755_sorted__wrt__mono__rel,axiom,
! [Xs: list_list_nat,P: list_nat > list_nat > $o,Q: list_nat > list_nat > $o] :
( ! [X3: list_nat,Y2: list_nat] :
( ( member_list_nat2 @ X3 @ ( set_list_nat2 @ Xs ) )
=> ( ( member_list_nat2 @ Y2 @ ( set_list_nat2 @ Xs ) )
=> ( ( P @ X3 @ Y2 )
=> ( Q @ X3 @ Y2 ) ) ) )
=> ( ( sorted_wrt_list_nat @ P @ Xs )
=> ( sorted_wrt_list_nat @ Q @ Xs ) ) ) ).
% sorted_wrt_mono_rel
thf(fact_756_sorted__wrt__mono__rel,axiom,
! [Xs: list_list_a,P: list_a > list_a > $o,Q: list_a > list_a > $o] :
( ! [X3: list_a,Y2: list_a] :
( ( member_list_a2 @ X3 @ ( set_list_a2 @ Xs ) )
=> ( ( member_list_a2 @ Y2 @ ( set_list_a2 @ Xs ) )
=> ( ( P @ X3 @ Y2 )
=> ( Q @ X3 @ Y2 ) ) ) )
=> ( ( sorted_wrt_list_a @ P @ Xs )
=> ( sorted_wrt_list_a @ Q @ Xs ) ) ) ).
% sorted_wrt_mono_rel
thf(fact_757_sorted__wrt__mono__rel,axiom,
! [Xs: list_nat,P: nat > nat > $o,Q: nat > nat > $o] :
( ! [X3: nat,Y2: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ Xs ) )
=> ( ( member_nat2 @ Y2 @ ( set_nat2 @ Xs ) )
=> ( ( P @ X3 @ Y2 )
=> ( Q @ X3 @ Y2 ) ) ) )
=> ( ( sorted_wrt_nat @ P @ Xs )
=> ( sorted_wrt_nat @ Q @ Xs ) ) ) ).
% sorted_wrt_mono_rel
thf(fact_758_sorted__wrt__take,axiom,
! [F: nat > nat > $o,Xs: list_nat,N: nat] :
( ( sorted_wrt_nat @ F @ Xs )
=> ( sorted_wrt_nat @ F @ ( take_nat @ N @ Xs ) ) ) ).
% sorted_wrt_take
thf(fact_759_successively__if__sorted__wrt,axiom,
! [P: nat > nat > $o,Xs: list_nat] :
( ( sorted_wrt_nat @ P @ Xs )
=> ( successively_nat @ P @ Xs ) ) ).
% successively_if_sorted_wrt
thf(fact_760_sorted__wrt__drop,axiom,
! [F: nat > nat > $o,Xs: list_nat,N: nat] :
( ( sorted_wrt_nat @ F @ Xs )
=> ( sorted_wrt_nat @ F @ ( drop_nat @ N @ Xs ) ) ) ).
% sorted_wrt_drop
thf(fact_761_strict__sorted__imp__sorted,axiom,
! [Xs: list_nat] :
( ( sorted_wrt_nat @ ord_less_nat @ Xs )
=> ( sorted_wrt_nat @ ord_less_eq_nat @ Xs ) ) ).
% strict_sorted_imp_sorted
thf(fact_762_sorted2,axiom,
! [X: nat,Y: nat,Zs: list_nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ ( cons_nat @ X @ ( cons_nat @ Y @ Zs ) ) )
= ( ( ord_less_eq_nat @ X @ Y )
& ( sorted_wrt_nat @ ord_less_eq_nat @ ( cons_nat @ Y @ Zs ) ) ) ) ).
% sorted2
thf(fact_763_sorted0,axiom,
sorted_wrt_nat @ ord_less_eq_nat @ nil_nat ).
% sorted0
thf(fact_764_strict__sorted__simps_I1_J,axiom,
sorted_wrt_nat @ ord_less_nat @ nil_nat ).
% strict_sorted_simps(1)
thf(fact_765_strict__sorted__equal,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( sorted_wrt_nat @ ord_less_nat @ Xs )
=> ( ( sorted_wrt_nat @ ord_less_nat @ Ys )
=> ( ( ( set_nat2 @ Ys )
= ( set_nat2 @ Xs ) )
=> ( Ys = Xs ) ) ) ) ).
% strict_sorted_equal
thf(fact_766_sorted__wrt1,axiom,
! [P: a > a > $o,X: a] : ( sorted_wrt_a @ P @ ( cons_a @ X @ nil_a ) ) ).
% sorted_wrt1
thf(fact_767_sorted__wrt1,axiom,
! [P: nat > nat > $o,X: nat] : ( sorted_wrt_nat @ P @ ( cons_nat @ X @ nil_nat ) ) ).
% sorted_wrt1
thf(fact_768_sorted__wrt__less__idx,axiom,
! [Ns: list_nat,I2: nat] :
( ( sorted_wrt_nat @ ord_less_nat @ Ns )
=> ( ( ord_less_nat @ I2 @ ( size_size_list_nat @ Ns ) )
=> ( ord_less_eq_nat @ I2 @ ( nth_nat @ Ns @ I2 ) ) ) ) ).
% sorted_wrt_less_idx
thf(fact_769_sorted__wrt__append,axiom,
! [P: nat > nat > $o,Xs: list_nat,Ys: list_nat] :
( ( sorted_wrt_nat @ P @ ( append_nat @ Xs @ Ys ) )
= ( ( sorted_wrt_nat @ P @ Xs )
& ( sorted_wrt_nat @ P @ Ys )
& ! [X2: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Xs ) )
=> ! [Y3: nat] :
( ( member_nat2 @ Y3 @ ( set_nat2 @ Ys ) )
=> ( P @ X2 @ Y3 ) ) ) ) ) ).
% sorted_wrt_append
thf(fact_770_sorted__take,axiom,
! [Xs: list_nat,N: nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ Xs )
=> ( sorted_wrt_nat @ ord_less_eq_nat @ ( take_nat @ N @ Xs ) ) ) ).
% sorted_take
thf(fact_771_sorted__drop,axiom,
! [Xs: list_nat,N: nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ Xs )
=> ( sorted_wrt_nat @ ord_less_eq_nat @ ( drop_nat @ N @ Xs ) ) ) ).
% sorted_drop
thf(fact_772_sorted__replicate,axiom,
! [N: nat,X: nat] : ( sorted_wrt_nat @ ord_less_eq_nat @ ( replicate_nat @ N @ X ) ) ).
% sorted_replicate
thf(fact_773_sorted__tl,axiom,
! [Xs: list_nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ Xs )
=> ( sorted_wrt_nat @ ord_less_eq_nat @ ( tl_nat @ Xs ) ) ) ).
% sorted_tl
thf(fact_774_sorted__remdups__adj,axiom,
! [Xs: list_nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ Xs )
=> ( sorted_wrt_nat @ ord_less_eq_nat @ ( remdups_adj_nat @ Xs ) ) ) ).
% sorted_remdups_adj
thf(fact_775_sorted__remove1,axiom,
! [Xs: list_nat,A: nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ Xs )
=> ( sorted_wrt_nat @ ord_less_eq_nat @ ( remove1_nat @ A @ Xs ) ) ) ).
% sorted_remove1
thf(fact_776_sorted__nths,axiom,
! [Xs: list_nat,I3: set_nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ Xs )
=> ( sorted_wrt_nat @ ord_less_eq_nat @ ( nths_nat @ Xs @ I3 ) ) ) ).
% sorted_nths
thf(fact_777_successively__iff__sorted__wrt__strong,axiom,
! [Xs: list_list_nat,P: list_nat > list_nat > $o] :
( ! [X3: list_nat,Y2: list_nat,Z: list_nat] :
( ( member_list_nat2 @ X3 @ ( set_list_nat2 @ Xs ) )
=> ( ( member_list_nat2 @ Y2 @ ( set_list_nat2 @ Xs ) )
=> ( ( member_list_nat2 @ Z @ ( set_list_nat2 @ Xs ) )
=> ( ( P @ X3 @ Y2 )
=> ( ( P @ Y2 @ Z )
=> ( P @ X3 @ Z ) ) ) ) ) )
=> ( ( succes2524082786233489485st_nat @ P @ Xs )
= ( sorted_wrt_list_nat @ P @ Xs ) ) ) ).
% successively_iff_sorted_wrt_strong
thf(fact_778_successively__iff__sorted__wrt__strong,axiom,
! [Xs: list_list_a,P: list_a > list_a > $o] :
( ! [X3: list_a,Y2: list_a,Z: list_a] :
( ( member_list_a2 @ X3 @ ( set_list_a2 @ Xs ) )
=> ( ( member_list_a2 @ Y2 @ ( set_list_a2 @ Xs ) )
=> ( ( member_list_a2 @ Z @ ( set_list_a2 @ Xs ) )
=> ( ( P @ X3 @ Y2 )
=> ( ( P @ Y2 @ Z )
=> ( P @ X3 @ Z ) ) ) ) ) )
=> ( ( successively_list_a @ P @ Xs )
= ( sorted_wrt_list_a @ P @ Xs ) ) ) ).
% successively_iff_sorted_wrt_strong
thf(fact_779_successively__iff__sorted__wrt__strong,axiom,
! [Xs: list_nat,P: nat > nat > $o] :
( ! [X3: nat,Y2: nat,Z: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ Xs ) )
=> ( ( member_nat2 @ Y2 @ ( set_nat2 @ Xs ) )
=> ( ( member_nat2 @ Z @ ( set_nat2 @ Xs ) )
=> ( ( P @ X3 @ Y2 )
=> ( ( P @ Y2 @ Z )
=> ( P @ X3 @ Z ) ) ) ) ) )
=> ( ( successively_nat @ P @ Xs )
= ( sorted_wrt_nat @ P @ Xs ) ) ) ).
% successively_iff_sorted_wrt_strong
thf(fact_780_set__subset__Cons,axiom,
! [Xs: list_a,X: a] : ( ord_less_eq_set_a @ ( set_a2 @ Xs ) @ ( set_a2 @ ( cons_a @ X @ Xs ) ) ) ).
% set_subset_Cons
thf(fact_781_set__subset__Cons,axiom,
! [Xs: list_nat,X: nat] : ( ord_less_eq_set_nat @ ( set_nat2 @ Xs ) @ ( set_nat2 @ ( cons_nat @ X @ Xs ) ) ) ).
% set_subset_Cons
thf(fact_782_set__take__subset,axiom,
! [N: nat,Xs: list_nat] : ( ord_less_eq_set_nat @ ( set_nat2 @ ( take_nat @ N @ Xs ) ) @ ( set_nat2 @ Xs ) ) ).
% set_take_subset
thf(fact_783_replicate__add,axiom,
! [N: nat,M: nat,X: nat] :
( ( replicate_nat @ ( plus_plus_nat @ N @ M ) @ X )
= ( append_nat @ ( replicate_nat @ N @ X ) @ ( replicate_nat @ M @ X ) ) ) ).
% replicate_add
thf(fact_784_set__drop__subset,axiom,
! [N: nat,Xs: list_nat] : ( ord_less_eq_set_nat @ ( set_nat2 @ ( drop_nat @ N @ Xs ) ) @ ( set_nat2 @ Xs ) ) ).
% set_drop_subset
thf(fact_785_length__shuffles,axiom,
! [Zs: list_a,Xs: list_a,Ys: list_a] :
( ( member_list_a2 @ Zs @ ( shuffles_a @ Xs @ Ys ) )
=> ( ( size_size_list_a @ Zs )
= ( plus_plus_nat @ ( size_size_list_a @ Xs ) @ ( size_size_list_a @ Ys ) ) ) ) ).
% length_shuffles
thf(fact_786_length__shuffles,axiom,
! [Zs: list_nat,Xs: list_nat,Ys: list_nat] :
( ( member_list_nat2 @ Zs @ ( shuffles_nat @ Xs @ Ys ) )
=> ( ( size_size_list_nat @ Zs )
= ( plus_plus_nat @ ( size_size_list_nat @ Xs ) @ ( size_size_list_nat @ Ys ) ) ) ) ).
% length_shuffles
thf(fact_787_set__update__subsetI,axiom,
! [Xs: list_list_nat,A3: set_list_nat,X: list_nat,I2: nat] :
( ( ord_le6045566169113846134st_nat @ ( set_list_nat2 @ Xs ) @ A3 )
=> ( ( member_list_nat2 @ X @ A3 )
=> ( ord_le6045566169113846134st_nat @ ( set_list_nat2 @ ( list_update_list_nat @ Xs @ I2 @ X ) ) @ A3 ) ) ) ).
% set_update_subsetI
thf(fact_788_set__update__subsetI,axiom,
! [Xs: list_list_a,A3: set_list_a,X: list_a,I2: nat] :
( ( ord_le8861187494160871172list_a @ ( set_list_a2 @ Xs ) @ A3 )
=> ( ( member_list_a2 @ X @ A3 )
=> ( ord_le8861187494160871172list_a @ ( set_list_a2 @ ( list_update_list_a @ Xs @ I2 @ X ) ) @ A3 ) ) ) ).
% set_update_subsetI
thf(fact_789_set__update__subsetI,axiom,
! [Xs: list_nat,A3: set_nat,X: nat,I2: nat] :
( ( ord_less_eq_set_nat @ ( set_nat2 @ Xs ) @ A3 )
=> ( ( member_nat2 @ X @ A3 )
=> ( ord_less_eq_set_nat @ ( set_nat2 @ ( list_update_nat @ Xs @ I2 @ X ) ) @ A3 ) ) ) ).
% set_update_subsetI
thf(fact_790_take__drop,axiom,
! [N: nat,M: nat,Xs: list_nat] :
( ( take_nat @ N @ ( drop_nat @ M @ Xs ) )
= ( drop_nat @ M @ ( take_nat @ ( plus_plus_nat @ N @ M ) @ Xs ) ) ) ).
% take_drop
thf(fact_791_set__remove1__subset,axiom,
! [X: nat,Xs: list_nat] : ( ord_less_eq_set_nat @ ( set_nat2 @ ( remove1_nat @ X @ Xs ) ) @ ( set_nat2 @ Xs ) ) ).
% set_remove1_subset
thf(fact_792_set__nths__subset,axiom,
! [Xs: list_nat,I3: set_nat] : ( ord_less_eq_set_nat @ ( set_nat2 @ ( nths_nat @ Xs @ I3 ) ) @ ( set_nat2 @ Xs ) ) ).
% set_nths_subset
thf(fact_793_sorted1,axiom,
! [X: nat] : ( sorted_wrt_nat @ ord_less_eq_nat @ ( cons_nat @ X @ nil_nat ) ) ).
% sorted1
thf(fact_794_sorted__simps_I2_J,axiom,
! [X: nat,Ys: list_nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ ( cons_nat @ X @ Ys ) )
= ( ! [X2: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Ys ) )
=> ( ord_less_eq_nat @ X @ X2 ) )
& ( sorted_wrt_nat @ ord_less_eq_nat @ Ys ) ) ) ).
% sorted_simps(2)
thf(fact_795_strict__sorted__simps_I2_J,axiom,
! [X: nat,Ys: list_nat] :
( ( sorted_wrt_nat @ ord_less_nat @ ( cons_nat @ X @ Ys ) )
= ( ! [X2: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Ys ) )
=> ( ord_less_nat @ X @ X2 ) )
& ( sorted_wrt_nat @ ord_less_nat @ Ys ) ) ) ).
% strict_sorted_simps(2)
thf(fact_796_sorted__append,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ ( append_nat @ Xs @ Ys ) )
= ( ( sorted_wrt_nat @ ord_less_eq_nat @ Xs )
& ( sorted_wrt_nat @ ord_less_eq_nat @ Ys )
& ! [X2: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Xs ) )
=> ! [Y3: nat] :
( ( member_nat2 @ Y3 @ ( set_nat2 @ Ys ) )
=> ( ord_less_eq_nat @ X2 @ Y3 ) ) ) ) ) ).
% sorted_append
thf(fact_797_sorted__wrt01,axiom,
! [Xs: list_nat,P: nat > nat > $o] :
( ( ord_less_eq_nat @ ( size_size_list_nat @ Xs ) @ one_one_nat )
=> ( sorted_wrt_nat @ P @ Xs ) ) ).
% sorted_wrt01
thf(fact_798_sorted__wrt__iff__nth__less,axiom,
( sorted_wrt_nat
= ( ^ [P2: nat > nat > $o,Xs3: list_nat] :
! [I4: nat,J2: nat] :
( ( ord_less_nat @ I4 @ J2 )
=> ( ( ord_less_nat @ J2 @ ( size_size_list_nat @ Xs3 ) )
=> ( P2 @ ( nth_nat @ Xs3 @ I4 ) @ ( nth_nat @ Xs3 @ J2 ) ) ) ) ) ) ).
% sorted_wrt_iff_nth_less
thf(fact_799_sorted__wrt__nth__less,axiom,
! [P: nat > nat > $o,Xs: list_nat,I2: nat,J: nat] :
( ( sorted_wrt_nat @ P @ Xs )
=> ( ( ord_less_nat @ I2 @ J )
=> ( ( ord_less_nat @ J @ ( size_size_list_nat @ Xs ) )
=> ( P @ ( nth_nat @ Xs @ I2 ) @ ( nth_nat @ Xs @ J ) ) ) ) ) ).
% sorted_wrt_nth_less
thf(fact_800_gen__length__def,axiom,
( gen_length_nat
= ( ^ [N3: nat,Xs3: list_nat] : ( plus_plus_nat @ N3 @ ( size_size_list_nat @ Xs3 ) ) ) ) ).
% gen_length_def
thf(fact_801_sorted__butlast,axiom,
! [Xs: list_nat] :
( ( Xs != nil_nat )
=> ( ( sorted_wrt_nat @ ord_less_eq_nat @ Xs )
=> ( sorted_wrt_nat @ ord_less_eq_nat @ ( butlast_nat @ Xs ) ) ) ) ).
% sorted_butlast
thf(fact_802_set__take__subset__set__take,axiom,
! [M: nat,N: nat,Xs: list_nat] :
( ( ord_less_eq_nat @ M @ N )
=> ( ord_less_eq_set_nat @ ( set_nat2 @ ( take_nat @ M @ Xs ) ) @ ( set_nat2 @ ( take_nat @ N @ Xs ) ) ) ) ).
% set_take_subset_set_take
thf(fact_803_set__drop__subset__set__drop,axiom,
! [N: nat,M: nat,Xs: list_nat] :
( ( ord_less_eq_nat @ N @ M )
=> ( ord_less_eq_set_nat @ ( set_nat2 @ ( drop_nat @ M @ Xs ) ) @ ( set_nat2 @ ( drop_nat @ N @ Xs ) ) ) ) ).
% set_drop_subset_set_drop
thf(fact_804_take__add,axiom,
! [I2: nat,J: nat,Xs: list_nat] :
( ( take_nat @ ( plus_plus_nat @ I2 @ J ) @ Xs )
= ( append_nat @ ( take_nat @ I2 @ Xs ) @ ( take_nat @ J @ ( drop_nat @ I2 @ Xs ) ) ) ) ).
% take_add
thf(fact_805_sorted01,axiom,
! [Xs: list_nat] :
( ( ord_less_eq_nat @ ( size_size_list_nat @ Xs ) @ one_one_nat )
=> ( sorted_wrt_nat @ ord_less_eq_nat @ Xs ) ) ).
% sorted01
thf(fact_806_sorted__iff__nth__mono__less,axiom,
! [Xs: list_nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ Xs )
= ( ! [I4: nat,J2: nat] :
( ( ord_less_nat @ I4 @ J2 )
=> ( ( ord_less_nat @ J2 @ ( size_size_list_nat @ Xs ) )
=> ( ord_less_eq_nat @ ( nth_nat @ Xs @ I4 ) @ ( nth_nat @ Xs @ J2 ) ) ) ) ) ) ).
% sorted_iff_nth_mono_less
thf(fact_807_list_Osize_I4_J,axiom,
! [X21: a,X22: list_a] :
( ( size_size_list_a @ ( cons_a @ X21 @ X22 ) )
= ( plus_plus_nat @ ( size_size_list_a @ X22 ) @ ( suc @ zero_zero_nat ) ) ) ).
% list.size(4)
thf(fact_808_list_Osize_I4_J,axiom,
! [X21: nat,X22: list_nat] :
( ( size_size_list_nat @ ( cons_nat @ X21 @ X22 ) )
= ( plus_plus_nat @ ( size_size_list_nat @ X22 ) @ ( suc @ zero_zero_nat ) ) ) ).
% list.size(4)
thf(fact_809_sorted__iff__nth__Suc,axiom,
! [Xs: list_nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ Xs )
= ( ! [I4: nat] :
( ( ord_less_nat @ ( suc @ I4 ) @ ( size_size_list_nat @ Xs ) )
=> ( ord_less_eq_nat @ ( nth_nat @ Xs @ I4 ) @ ( nth_nat @ Xs @ ( suc @ I4 ) ) ) ) ) ) ).
% sorted_iff_nth_Suc
thf(fact_810_sorted__iff__nth__mono,axiom,
! [Xs: list_nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ Xs )
= ( ! [I4: nat,J2: nat] :
( ( ord_less_eq_nat @ I4 @ J2 )
=> ( ( ord_less_nat @ J2 @ ( size_size_list_nat @ Xs ) )
=> ( ord_less_eq_nat @ ( nth_nat @ Xs @ I4 ) @ ( nth_nat @ Xs @ J2 ) ) ) ) ) ) ).
% sorted_iff_nth_mono
thf(fact_811_sorted__nth__mono,axiom,
! [Xs: list_nat,I2: nat,J: nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ Xs )
=> ( ( ord_less_eq_nat @ I2 @ J )
=> ( ( ord_less_nat @ J @ ( size_size_list_nat @ Xs ) )
=> ( ord_less_eq_nat @ ( nth_nat @ Xs @ I2 ) @ ( nth_nat @ Xs @ J ) ) ) ) ) ).
% sorted_nth_mono
thf(fact_812_Nitpick_Osize__list__simp_I1_J,axiom,
( size_list_nat
= ( ^ [F2: nat > nat,Xs3: list_nat] : ( if_nat @ ( Xs3 = nil_nat ) @ zero_zero_nat @ ( suc @ ( plus_plus_nat @ ( F2 @ ( hd_nat @ Xs3 ) ) @ ( size_list_nat @ F2 @ ( tl_nat @ Xs3 ) ) ) ) ) ) ) ).
% Nitpick.size_list_simp(1)
thf(fact_813_foldr__max__sorted,axiom,
! [Xs: list_nat,Y: nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ ( rev_nat @ Xs ) )
=> ( ( ( Xs = nil_nat )
=> ( ( foldr_nat_nat @ ord_max_nat @ Xs @ Y )
= Y ) )
& ( ( Xs != nil_nat )
=> ( ( foldr_nat_nat @ ord_max_nat @ Xs @ Y )
= ( ord_max_nat @ ( nth_nat @ Xs @ zero_zero_nat ) @ Y ) ) ) ) ) ).
% foldr_max_sorted
thf(fact_814_rotate__drop__take,axiom,
( rotate_nat
= ( ^ [N3: nat,Xs3: list_nat] : ( append_nat @ ( drop_nat @ ( modulo_modulo_nat @ N3 @ ( size_size_list_nat @ Xs3 ) ) @ Xs3 ) @ ( take_nat @ ( modulo_modulo_nat @ N3 @ ( size_size_list_nat @ Xs3 ) ) @ Xs3 ) ) ) ) ).
% rotate_drop_take
thf(fact_815_hd__rotate__conv__nth,axiom,
! [Xs: list_nat,N: nat] :
( ( Xs != nil_nat )
=> ( ( hd_nat @ ( rotate_nat @ N @ Xs ) )
= ( nth_nat @ Xs @ ( modulo_modulo_nat @ N @ ( size_size_list_nat @ Xs ) ) ) ) ) ).
% hd_rotate_conv_nth
thf(fact_816_rotate__is__Nil__conv,axiom,
! [N: nat,Xs: list_nat] :
( ( ( rotate_nat @ N @ Xs )
= nil_nat )
= ( Xs = nil_nat ) ) ).
% rotate_is_Nil_conv
thf(fact_817_set__rotate,axiom,
! [N: nat,Xs: list_nat] :
( ( set_nat2 @ ( rotate_nat @ N @ Xs ) )
= ( set_nat2 @ Xs ) ) ).
% set_rotate
thf(fact_818_length__rotate,axiom,
! [N: nat,Xs: list_nat] :
( ( size_size_list_nat @ ( rotate_nat @ N @ Xs ) )
= ( size_size_list_nat @ Xs ) ) ).
% length_rotate
thf(fact_819_size__list__append,axiom,
! [F: nat > nat,Xs: list_nat,Ys: list_nat] :
( ( size_list_nat @ F @ ( append_nat @ Xs @ Ys ) )
= ( plus_plus_nat @ ( size_list_nat @ F @ Xs ) @ ( size_list_nat @ F @ Ys ) ) ) ).
% size_list_append
thf(fact_820_rotate__length01,axiom,
! [Xs: list_nat,N: nat] :
( ( ord_less_eq_nat @ ( size_size_list_nat @ Xs ) @ one_one_nat )
=> ( ( rotate_nat @ N @ Xs )
= Xs ) ) ).
% rotate_length01
thf(fact_821_rotate__id,axiom,
! [N: nat,Xs: list_nat] :
( ( ( modulo_modulo_nat @ N @ ( size_size_list_nat @ Xs ) )
= zero_zero_nat )
=> ( ( rotate_nat @ N @ Xs )
= Xs ) ) ).
% rotate_id
thf(fact_822_rotate__append,axiom,
! [L: list_nat,Q2: list_nat] :
( ( rotate_nat @ ( size_size_list_nat @ L ) @ ( append_nat @ L @ Q2 ) )
= ( append_nat @ Q2 @ L ) ) ).
% rotate_append
thf(fact_823_rotate__conv__mod,axiom,
( rotate_nat
= ( ^ [N3: nat,Xs3: list_nat] : ( rotate_nat @ ( modulo_modulo_nat @ N3 @ ( size_size_list_nat @ Xs3 ) ) @ Xs3 ) ) ) ).
% rotate_conv_mod
thf(fact_824_list_Osize__gen_I1_J,axiom,
! [X: nat > nat] :
( ( size_list_nat @ X @ nil_nat )
= zero_zero_nat ) ).
% list.size_gen(1)
thf(fact_825_size__list__estimation,axiom,
! [X: list_nat,Xs: list_list_nat,Y: nat,F: list_nat > nat] :
( ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
=> ( ( ord_less_nat @ Y @ ( F @ X ) )
=> ( ord_less_nat @ Y @ ( size_list_list_nat @ F @ Xs ) ) ) ) ).
% size_list_estimation
thf(fact_826_size__list__estimation,axiom,
! [X: list_a,Xs: list_list_a,Y: nat,F: list_a > nat] :
( ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
=> ( ( ord_less_nat @ Y @ ( F @ X ) )
=> ( ord_less_nat @ Y @ ( size_list_list_a @ F @ Xs ) ) ) ) ).
% size_list_estimation
thf(fact_827_size__list__estimation,axiom,
! [X: nat,Xs: list_nat,Y: nat,F: nat > nat] :
( ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ( ( ord_less_nat @ Y @ ( F @ X ) )
=> ( ord_less_nat @ Y @ ( size_list_nat @ F @ Xs ) ) ) ) ).
% size_list_estimation
thf(fact_828_size__list__estimation_H,axiom,
! [X: list_nat,Xs: list_list_nat,Y: nat,F: list_nat > nat] :
( ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
=> ( ( ord_less_eq_nat @ Y @ ( F @ X ) )
=> ( ord_less_eq_nat @ Y @ ( size_list_list_nat @ F @ Xs ) ) ) ) ).
% size_list_estimation'
thf(fact_829_size__list__estimation_H,axiom,
! [X: list_a,Xs: list_list_a,Y: nat,F: list_a > nat] :
( ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
=> ( ( ord_less_eq_nat @ Y @ ( F @ X ) )
=> ( ord_less_eq_nat @ Y @ ( size_list_list_a @ F @ Xs ) ) ) ) ).
% size_list_estimation'
thf(fact_830_size__list__estimation_H,axiom,
! [X: nat,Xs: list_nat,Y: nat,F: nat > nat] :
( ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ( ( ord_less_eq_nat @ Y @ ( F @ X ) )
=> ( ord_less_eq_nat @ Y @ ( size_list_nat @ F @ Xs ) ) ) ) ).
% size_list_estimation'
thf(fact_831_size__list__pointwise,axiom,
! [Xs: list_list_nat,F: list_nat > nat,G: list_nat > nat] :
( ! [X3: list_nat] :
( ( member_list_nat2 @ X3 @ ( set_list_nat2 @ Xs ) )
=> ( ord_less_eq_nat @ ( F @ X3 ) @ ( G @ X3 ) ) )
=> ( ord_less_eq_nat @ ( size_list_list_nat @ F @ Xs ) @ ( size_list_list_nat @ G @ Xs ) ) ) ).
% size_list_pointwise
thf(fact_832_size__list__pointwise,axiom,
! [Xs: list_list_a,F: list_a > nat,G: list_a > nat] :
( ! [X3: list_a] :
( ( member_list_a2 @ X3 @ ( set_list_a2 @ Xs ) )
=> ( ord_less_eq_nat @ ( F @ X3 ) @ ( G @ X3 ) ) )
=> ( ord_less_eq_nat @ ( size_list_list_a @ F @ Xs ) @ ( size_list_list_a @ G @ Xs ) ) ) ).
% size_list_pointwise
thf(fact_833_size__list__pointwise,axiom,
! [Xs: list_nat,F: nat > nat,G: nat > nat] :
( ! [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ Xs ) )
=> ( ord_less_eq_nat @ ( F @ X3 ) @ ( G @ X3 ) ) )
=> ( ord_less_eq_nat @ ( size_list_nat @ F @ Xs ) @ ( size_list_nat @ G @ Xs ) ) ) ).
% size_list_pointwise
thf(fact_834_rotate__rev,axiom,
! [N: nat,Xs: list_nat] :
( ( rotate_nat @ N @ ( rev_nat @ Xs ) )
= ( rev_nat @ ( rotate_nat @ ( minus_minus_nat @ ( size_size_list_nat @ Xs ) @ ( modulo_modulo_nat @ N @ ( size_size_list_nat @ Xs ) ) ) @ Xs ) ) ) ).
% rotate_rev
thf(fact_835_nth__rotate,axiom,
! [N: nat,Xs: list_nat,M: nat] :
( ( ord_less_nat @ N @ ( size_size_list_nat @ Xs ) )
=> ( ( nth_nat @ ( rotate_nat @ M @ Xs ) @ N )
= ( nth_nat @ Xs @ ( modulo_modulo_nat @ ( plus_plus_nat @ M @ N ) @ ( size_size_list_nat @ Xs ) ) ) ) ) ).
% nth_rotate
thf(fact_836_length__transpose__sorted,axiom,
! [Xs: list_list_nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ ( rev_nat @ ( map_list_nat_nat @ size_size_list_nat @ Xs ) ) )
=> ( ( ( Xs = nil_list_nat )
=> ( ( size_s3023201423986296836st_nat @ ( transpose_nat @ Xs ) )
= zero_zero_nat ) )
& ( ( Xs != nil_list_nat )
=> ( ( size_s3023201423986296836st_nat @ ( transpose_nat @ Xs ) )
= ( size_size_list_nat @ ( nth_list_nat @ Xs @ zero_zero_nat ) ) ) ) ) ) ).
% length_transpose_sorted
thf(fact_837_sorted__list__of__set_Ofinite__set__strict__sorted,axiom,
! [A3: set_nat] :
( ( finite_finite_nat @ A3 )
=> ~ ! [L2: list_nat] :
( ( sorted_wrt_nat @ ord_less_nat @ L2 )
=> ( ( ( set_nat2 @ L2 )
= A3 )
=> ( ( size_size_list_nat @ L2 )
!= ( finite_card_nat @ A3 ) ) ) ) ) ).
% sorted_list_of_set.finite_set_strict_sorted
thf(fact_838_subset__code_I3_J,axiom,
~ ( ord_less_eq_set_nat @ ( coset_nat @ nil_nat ) @ ( set_nat2 @ nil_nat ) ) ).
% subset_code(3)
thf(fact_839_distinct__swap,axiom,
! [I2: nat,Xs: list_nat,J: nat] :
( ( ord_less_nat @ I2 @ ( size_size_list_nat @ Xs ) )
=> ( ( ord_less_nat @ J @ ( size_size_list_nat @ Xs ) )
=> ( ( distinct_nat @ ( list_update_nat @ ( list_update_nat @ Xs @ I2 @ ( nth_nat @ Xs @ J ) ) @ J @ ( nth_nat @ Xs @ I2 ) ) )
= ( distinct_nat @ Xs ) ) ) ) ).
% distinct_swap
thf(fact_840_List_Ofinite__set,axiom,
! [Xs: list_nat] : ( finite_finite_nat @ ( set_nat2 @ Xs ) ) ).
% List.finite_set
thf(fact_841_map__is__Nil__conv,axiom,
! [F: nat > nat,Xs: list_nat] :
( ( ( map_nat_nat @ F @ Xs )
= nil_nat )
= ( Xs = nil_nat ) ) ).
% map_is_Nil_conv
thf(fact_842_Nil__is__map__conv,axiom,
! [F: nat > nat,Xs: list_nat] :
( ( nil_nat
= ( map_nat_nat @ F @ Xs ) )
= ( Xs = nil_nat ) ) ).
% Nil_is_map_conv
thf(fact_843_list_Omap__disc__iff,axiom,
! [F: nat > nat,A: list_nat] :
( ( ( map_nat_nat @ F @ A )
= nil_nat )
= ( A = nil_nat ) ) ).
% list.map_disc_iff
thf(fact_844_map__eq__conv,axiom,
! [F: nat > nat,Xs: list_nat,G: nat > nat] :
( ( ( map_nat_nat @ F @ Xs )
= ( map_nat_nat @ G @ Xs ) )
= ( ! [X2: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Xs ) )
=> ( ( F @ X2 )
= ( G @ X2 ) ) ) ) ) ).
% map_eq_conv
thf(fact_845_length__map,axiom,
! [F: nat > nat,Xs: list_nat] :
( ( size_size_list_nat @ ( map_nat_nat @ F @ Xs ) )
= ( size_size_list_nat @ Xs ) ) ).
% length_map
thf(fact_846_map__append,axiom,
! [F: nat > nat,Xs: list_nat,Ys: list_nat] :
( ( map_nat_nat @ F @ ( append_nat @ Xs @ Ys ) )
= ( append_nat @ ( map_nat_nat @ F @ Xs ) @ ( map_nat_nat @ F @ Ys ) ) ) ).
% map_append
thf(fact_847_map__replicate,axiom,
! [F: nat > nat,N: nat,X: nat] :
( ( map_nat_nat @ F @ ( replicate_nat @ N @ X ) )
= ( replicate_nat @ N @ ( F @ X ) ) ) ).
% map_replicate
thf(fact_848_distinct__rev,axiom,
! [Xs: list_nat] :
( ( distinct_nat @ ( rev_nat @ Xs ) )
= ( distinct_nat @ Xs ) ) ).
% distinct_rev
thf(fact_849_distinct__rotate,axiom,
! [N: nat,Xs: list_nat] :
( ( distinct_nat @ ( rotate_nat @ N @ Xs ) )
= ( distinct_nat @ Xs ) ) ).
% distinct_rotate
thf(fact_850_distinct1__rotate,axiom,
! [Xs: list_nat] :
( ( distinct_nat @ ( rotate1_nat @ Xs ) )
= ( distinct_nat @ Xs ) ) ).
% distinct1_rotate
thf(fact_851_distinct__insert,axiom,
! [X: nat,Xs: list_nat] :
( ( distinct_nat @ ( insert_nat @ X @ Xs ) )
= ( distinct_nat @ Xs ) ) ).
% distinct_insert
thf(fact_852_nth__map,axiom,
! [N: nat,Xs: list_nat,F: nat > nat] :
( ( ord_less_nat @ N @ ( size_size_list_nat @ Xs ) )
=> ( ( nth_nat @ ( map_nat_nat @ F @ Xs ) @ N )
= ( F @ ( nth_nat @ Xs @ N ) ) ) ) ).
% nth_map
thf(fact_853_rotate__map,axiom,
! [N: nat,F: nat > nat,Xs: list_nat] :
( ( rotate_nat @ N @ ( map_nat_nat @ F @ Xs ) )
= ( map_nat_nat @ F @ ( rotate_nat @ N @ Xs ) ) ) ).
% rotate_map
thf(fact_854_map__eq__imp__length__eq,axiom,
! [F: nat > nat,Xs: list_nat,G: nat > nat,Ys: list_nat] :
( ( ( map_nat_nat @ F @ Xs )
= ( map_nat_nat @ G @ Ys ) )
=> ( ( size_size_list_nat @ Xs )
= ( size_size_list_nat @ Ys ) ) ) ).
% map_eq_imp_length_eq
thf(fact_855_finite__sorted__distinct__unique,axiom,
! [A3: set_nat] :
( ( finite_finite_nat @ A3 )
=> ? [X3: list_nat] :
( ( ( set_nat2 @ X3 )
= A3 )
& ( sorted_wrt_nat @ ord_less_eq_nat @ X3 )
& ( distinct_nat @ X3 )
& ! [Y5: list_nat] :
( ( ( ( set_nat2 @ Y5 )
= A3 )
& ( sorted_wrt_nat @ ord_less_eq_nat @ Y5 )
& ( distinct_nat @ Y5 ) )
=> ( Y5 = X3 ) ) ) ) ).
% finite_sorted_distinct_unique
thf(fact_856_distinct__drop,axiom,
! [Xs: list_nat,I2: nat] :
( ( distinct_nat @ Xs )
=> ( distinct_nat @ ( drop_nat @ I2 @ Xs ) ) ) ).
% distinct_drop
thf(fact_857_distinct__tl,axiom,
! [Xs: list_nat] :
( ( distinct_nat @ Xs )
=> ( distinct_nat @ ( tl_nat @ Xs ) ) ) ).
% distinct_tl
thf(fact_858_finite__list,axiom,
! [A3: set_nat] :
( ( finite_finite_nat @ A3 )
=> ? [Xs2: list_nat] :
( ( set_nat2 @ Xs2 )
= A3 ) ) ).
% finite_list
thf(fact_859_remdups__adj__distinct,axiom,
! [Xs: list_nat] :
( ( distinct_nat @ Xs )
=> ( ( remdups_adj_nat @ Xs )
= Xs ) ) ).
% remdups_adj_distinct
thf(fact_860_distinct__product__lists,axiom,
! [Xss2: list_list_nat] :
( ! [X3: list_nat] :
( ( member_list_nat2 @ X3 @ ( set_list_nat2 @ Xss2 ) )
=> ( distinct_nat @ X3 ) )
=> ( distinct_list_nat @ ( product_lists_nat @ Xss2 ) ) ) ).
% distinct_product_lists
thf(fact_861_map__butlast,axiom,
! [F: nat > nat,Xs: list_nat] :
( ( map_nat_nat @ F @ ( butlast_nat @ Xs ) )
= ( butlast_nat @ ( map_nat_nat @ F @ Xs ) ) ) ).
% map_butlast
thf(fact_862_nths__map,axiom,
! [F: nat > nat,Xs: list_nat,I3: set_nat] :
( ( nths_nat @ ( map_nat_nat @ F @ Xs ) @ I3 )
= ( map_nat_nat @ F @ ( nths_nat @ Xs @ I3 ) ) ) ).
% nths_map
thf(fact_863_distinct__adj__mapD,axiom,
! [F: nat > nat,Xs: list_nat] :
( ( distinct_adj_nat @ ( map_nat_nat @ F @ Xs ) )
=> ( distinct_adj_nat @ Xs ) ) ).
% distinct_adj_mapD
thf(fact_864_distinct__remove1,axiom,
! [Xs: list_nat,X: nat] :
( ( distinct_nat @ Xs )
=> ( distinct_nat @ ( remove1_nat @ X @ Xs ) ) ) ).
% distinct_remove1
thf(fact_865_distinct__butlast,axiom,
! [Xs: list_nat] :
( ( distinct_nat @ Xs )
=> ( distinct_nat @ ( butlast_nat @ Xs ) ) ) ).
% distinct_butlast
thf(fact_866_distinct__nthsI,axiom,
! [Xs: list_nat,I3: set_nat] :
( ( distinct_nat @ Xs )
=> ( distinct_nat @ ( nths_nat @ Xs @ I3 ) ) ) ).
% distinct_nthsI
thf(fact_867_rotate1__map,axiom,
! [F: nat > nat,Xs: list_nat] :
( ( rotate1_nat @ ( map_nat_nat @ F @ Xs ) )
= ( map_nat_nat @ F @ ( rotate1_nat @ Xs ) ) ) ).
% rotate1_map
thf(fact_868_map__eq__Cons__conv,axiom,
! [F: a > a,Xs: list_a,Y: a,Ys: list_a] :
( ( ( map_a_a @ F @ Xs )
= ( cons_a @ Y @ Ys ) )
= ( ? [Z5: a,Zs3: list_a] :
( ( Xs
= ( cons_a @ Z5 @ Zs3 ) )
& ( ( F @ Z5 )
= Y )
& ( ( map_a_a @ F @ Zs3 )
= Ys ) ) ) ) ).
% map_eq_Cons_conv
thf(fact_869_map__eq__Cons__conv,axiom,
! [F: nat > a,Xs: list_nat,Y: a,Ys: list_a] :
( ( ( map_nat_a @ F @ Xs )
= ( cons_a @ Y @ Ys ) )
= ( ? [Z5: nat,Zs3: list_nat] :
( ( Xs
= ( cons_nat @ Z5 @ Zs3 ) )
& ( ( F @ Z5 )
= Y )
& ( ( map_nat_a @ F @ Zs3 )
= Ys ) ) ) ) ).
% map_eq_Cons_conv
thf(fact_870_map__eq__Cons__conv,axiom,
! [F: a > nat,Xs: list_a,Y: nat,Ys: list_nat] :
( ( ( map_a_nat @ F @ Xs )
= ( cons_nat @ Y @ Ys ) )
= ( ? [Z5: a,Zs3: list_a] :
( ( Xs
= ( cons_a @ Z5 @ Zs3 ) )
& ( ( F @ Z5 )
= Y )
& ( ( map_a_nat @ F @ Zs3 )
= Ys ) ) ) ) ).
% map_eq_Cons_conv
thf(fact_871_map__eq__Cons__conv,axiom,
! [F: nat > nat,Xs: list_nat,Y: nat,Ys: list_nat] :
( ( ( map_nat_nat @ F @ Xs )
= ( cons_nat @ Y @ Ys ) )
= ( ? [Z5: nat,Zs3: list_nat] :
( ( Xs
= ( cons_nat @ Z5 @ Zs3 ) )
& ( ( F @ Z5 )
= Y )
& ( ( map_nat_nat @ F @ Zs3 )
= Ys ) ) ) ) ).
% map_eq_Cons_conv
thf(fact_872_Cons__eq__map__conv,axiom,
! [X: a,Xs: list_a,F: a > a,Ys: list_a] :
( ( ( cons_a @ X @ Xs )
= ( map_a_a @ F @ Ys ) )
= ( ? [Z5: a,Zs3: list_a] :
( ( Ys
= ( cons_a @ Z5 @ Zs3 ) )
& ( X
= ( F @ Z5 ) )
& ( Xs
= ( map_a_a @ F @ Zs3 ) ) ) ) ) ).
% Cons_eq_map_conv
thf(fact_873_Cons__eq__map__conv,axiom,
! [X: a,Xs: list_a,F: nat > a,Ys: list_nat] :
( ( ( cons_a @ X @ Xs )
= ( map_nat_a @ F @ Ys ) )
= ( ? [Z5: nat,Zs3: list_nat] :
( ( Ys
= ( cons_nat @ Z5 @ Zs3 ) )
& ( X
= ( F @ Z5 ) )
& ( Xs
= ( map_nat_a @ F @ Zs3 ) ) ) ) ) ).
% Cons_eq_map_conv
thf(fact_874_Cons__eq__map__conv,axiom,
! [X: nat,Xs: list_nat,F: a > nat,Ys: list_a] :
( ( ( cons_nat @ X @ Xs )
= ( map_a_nat @ F @ Ys ) )
= ( ? [Z5: a,Zs3: list_a] :
( ( Ys
= ( cons_a @ Z5 @ Zs3 ) )
& ( X
= ( F @ Z5 ) )
& ( Xs
= ( map_a_nat @ F @ Zs3 ) ) ) ) ) ).
% Cons_eq_map_conv
thf(fact_875_Cons__eq__map__conv,axiom,
! [X: nat,Xs: list_nat,F: nat > nat,Ys: list_nat] :
( ( ( cons_nat @ X @ Xs )
= ( map_nat_nat @ F @ Ys ) )
= ( ? [Z5: nat,Zs3: list_nat] :
( ( Ys
= ( cons_nat @ Z5 @ Zs3 ) )
& ( X
= ( F @ Z5 ) )
& ( Xs
= ( map_nat_nat @ F @ Zs3 ) ) ) ) ) ).
% Cons_eq_map_conv
thf(fact_876_map__eq__Cons__D,axiom,
! [F: a > a,Xs: list_a,Y: a,Ys: list_a] :
( ( ( map_a_a @ F @ Xs )
= ( cons_a @ Y @ Ys ) )
=> ? [Z: a,Zs2: list_a] :
( ( Xs
= ( cons_a @ Z @ Zs2 ) )
& ( ( F @ Z )
= Y )
& ( ( map_a_a @ F @ Zs2 )
= Ys ) ) ) ).
% map_eq_Cons_D
thf(fact_877_map__eq__Cons__D,axiom,
! [F: nat > a,Xs: list_nat,Y: a,Ys: list_a] :
( ( ( map_nat_a @ F @ Xs )
= ( cons_a @ Y @ Ys ) )
=> ? [Z: nat,Zs2: list_nat] :
( ( Xs
= ( cons_nat @ Z @ Zs2 ) )
& ( ( F @ Z )
= Y )
& ( ( map_nat_a @ F @ Zs2 )
= Ys ) ) ) ).
% map_eq_Cons_D
thf(fact_878_map__eq__Cons__D,axiom,
! [F: a > nat,Xs: list_a,Y: nat,Ys: list_nat] :
( ( ( map_a_nat @ F @ Xs )
= ( cons_nat @ Y @ Ys ) )
=> ? [Z: a,Zs2: list_a] :
( ( Xs
= ( cons_a @ Z @ Zs2 ) )
& ( ( F @ Z )
= Y )
& ( ( map_a_nat @ F @ Zs2 )
= Ys ) ) ) ).
% map_eq_Cons_D
thf(fact_879_map__eq__Cons__D,axiom,
! [F: nat > nat,Xs: list_nat,Y: nat,Ys: list_nat] :
( ( ( map_nat_nat @ F @ Xs )
= ( cons_nat @ Y @ Ys ) )
=> ? [Z: nat,Zs2: list_nat] :
( ( Xs
= ( cons_nat @ Z @ Zs2 ) )
& ( ( F @ Z )
= Y )
& ( ( map_nat_nat @ F @ Zs2 )
= Ys ) ) ) ).
% map_eq_Cons_D
thf(fact_880_Cons__eq__map__D,axiom,
! [X: a,Xs: list_a,F: a > a,Ys: list_a] :
( ( ( cons_a @ X @ Xs )
= ( map_a_a @ F @ Ys ) )
=> ? [Z: a,Zs2: list_a] :
( ( Ys
= ( cons_a @ Z @ Zs2 ) )
& ( X
= ( F @ Z ) )
& ( Xs
= ( map_a_a @ F @ Zs2 ) ) ) ) ).
% Cons_eq_map_D
thf(fact_881_Cons__eq__map__D,axiom,
! [X: a,Xs: list_a,F: nat > a,Ys: list_nat] :
( ( ( cons_a @ X @ Xs )
= ( map_nat_a @ F @ Ys ) )
=> ? [Z: nat,Zs2: list_nat] :
( ( Ys
= ( cons_nat @ Z @ Zs2 ) )
& ( X
= ( F @ Z ) )
& ( Xs
= ( map_nat_a @ F @ Zs2 ) ) ) ) ).
% Cons_eq_map_D
thf(fact_882_Cons__eq__map__D,axiom,
! [X: nat,Xs: list_nat,F: a > nat,Ys: list_a] :
( ( ( cons_nat @ X @ Xs )
= ( map_a_nat @ F @ Ys ) )
=> ? [Z: a,Zs2: list_a] :
( ( Ys
= ( cons_a @ Z @ Zs2 ) )
& ( X
= ( F @ Z ) )
& ( Xs
= ( map_a_nat @ F @ Zs2 ) ) ) ) ).
% Cons_eq_map_D
thf(fact_883_Cons__eq__map__D,axiom,
! [X: nat,Xs: list_nat,F: nat > nat,Ys: list_nat] :
( ( ( cons_nat @ X @ Xs )
= ( map_nat_nat @ F @ Ys ) )
=> ? [Z: nat,Zs2: list_nat] :
( ( Ys
= ( cons_nat @ Z @ Zs2 ) )
& ( X
= ( F @ Z ) )
& ( Xs
= ( map_nat_nat @ F @ Zs2 ) ) ) ) ).
% Cons_eq_map_D
thf(fact_884_List_Olist_Osimps_I9_J,axiom,
! [F: a > a,X21: a,X22: list_a] :
( ( map_a_a @ F @ ( cons_a @ X21 @ X22 ) )
= ( cons_a @ ( F @ X21 ) @ ( map_a_a @ F @ X22 ) ) ) ).
% List.list.simps(9)
thf(fact_885_List_Olist_Osimps_I9_J,axiom,
! [F: a > nat,X21: a,X22: list_a] :
( ( map_a_nat @ F @ ( cons_a @ X21 @ X22 ) )
= ( cons_nat @ ( F @ X21 ) @ ( map_a_nat @ F @ X22 ) ) ) ).
% List.list.simps(9)
thf(fact_886_List_Olist_Osimps_I9_J,axiom,
! [F: nat > a,X21: nat,X22: list_nat] :
( ( map_nat_a @ F @ ( cons_nat @ X21 @ X22 ) )
= ( cons_a @ ( F @ X21 ) @ ( map_nat_a @ F @ X22 ) ) ) ).
% List.list.simps(9)
thf(fact_887_List_Olist_Osimps_I9_J,axiom,
! [F: nat > nat,X21: nat,X22: list_nat] :
( ( map_nat_nat @ F @ ( cons_nat @ X21 @ X22 ) )
= ( cons_nat @ ( F @ X21 ) @ ( map_nat_nat @ F @ X22 ) ) ) ).
% List.list.simps(9)
thf(fact_888_List_Olist_Osimps_I8_J,axiom,
! [F: nat > nat] :
( ( map_nat_nat @ F @ nil_nat )
= nil_nat ) ).
% List.list.simps(8)
thf(fact_889_ex__map__conv,axiom,
! [Ys: list_nat,F: nat > nat] :
( ( ? [Xs3: list_nat] :
( Ys
= ( map_nat_nat @ F @ Xs3 ) ) )
= ( ! [X2: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Ys ) )
=> ? [Y3: nat] :
( X2
= ( F @ Y3 ) ) ) ) ) ).
% ex_map_conv
thf(fact_890_map__cong,axiom,
! [Xs: list_nat,Ys: list_nat,F: nat > nat,G: nat > nat] :
( ( Xs = Ys )
=> ( ! [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ Ys ) )
=> ( ( F @ X3 )
= ( G @ X3 ) ) )
=> ( ( map_nat_nat @ F @ Xs )
= ( map_nat_nat @ G @ Ys ) ) ) ) ).
% map_cong
thf(fact_891_map__idI,axiom,
! [Xs: list_list_nat,F: list_nat > list_nat] :
( ! [X3: list_nat] :
( ( member_list_nat2 @ X3 @ ( set_list_nat2 @ Xs ) )
=> ( ( F @ X3 )
= X3 ) )
=> ( ( map_li7225945977422193158st_nat @ F @ Xs )
= Xs ) ) ).
% map_idI
thf(fact_892_map__idI,axiom,
! [Xs: list_list_a,F: list_a > list_a] :
( ! [X3: list_a] :
( ( member_list_a2 @ X3 @ ( set_list_a2 @ Xs ) )
=> ( ( F @ X3 )
= X3 ) )
=> ( ( map_list_a_list_a @ F @ Xs )
= Xs ) ) ).
% map_idI
thf(fact_893_map__idI,axiom,
! [Xs: list_nat,F: nat > nat] :
( ! [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ Xs ) )
=> ( ( F @ X3 )
= X3 ) )
=> ( ( map_nat_nat @ F @ Xs )
= Xs ) ) ).
% map_idI
thf(fact_894_map__ext,axiom,
! [Xs: list_nat,F: nat > nat,G: nat > nat] :
( ! [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ Xs ) )
=> ( ( F @ X3 )
= ( G @ X3 ) ) )
=> ( ( map_nat_nat @ F @ Xs )
= ( map_nat_nat @ G @ Xs ) ) ) ).
% map_ext
thf(fact_895_list_Omap__ident__strong,axiom,
! [T: list_list_nat,F: list_nat > list_nat] :
( ! [Z: list_nat] :
( ( member_list_nat2 @ Z @ ( set_list_nat2 @ T ) )
=> ( ( F @ Z )
= Z ) )
=> ( ( map_li7225945977422193158st_nat @ F @ T )
= T ) ) ).
% list.map_ident_strong
thf(fact_896_list_Omap__ident__strong,axiom,
! [T: list_list_a,F: list_a > list_a] :
( ! [Z: list_a] :
( ( member_list_a2 @ Z @ ( set_list_a2 @ T ) )
=> ( ( F @ Z )
= Z ) )
=> ( ( map_list_a_list_a @ F @ T )
= T ) ) ).
% list.map_ident_strong
thf(fact_897_list_Omap__ident__strong,axiom,
! [T: list_nat,F: nat > nat] :
( ! [Z: nat] :
( ( member_nat2 @ Z @ ( set_nat2 @ T ) )
=> ( ( F @ Z )
= Z ) )
=> ( ( map_nat_nat @ F @ T )
= T ) ) ).
% list.map_ident_strong
thf(fact_898_list_Oinj__map__strong,axiom,
! [X: list_nat,Xa: list_nat,F: nat > nat,Fa: nat > nat] :
( ! [Z: nat,Za: nat] :
( ( member_nat2 @ Z @ ( set_nat2 @ X ) )
=> ( ( member_nat2 @ Za @ ( set_nat2 @ Xa ) )
=> ( ( ( F @ Z )
= ( Fa @ Za ) )
=> ( Z = Za ) ) ) )
=> ( ( ( map_nat_nat @ F @ X )
= ( map_nat_nat @ Fa @ Xa ) )
=> ( X = Xa ) ) ) ).
% list.inj_map_strong
thf(fact_899_list_Omap__cong0,axiom,
! [X: list_nat,F: nat > nat,G: nat > nat] :
( ! [Z: nat] :
( ( member_nat2 @ Z @ ( set_nat2 @ X ) )
=> ( ( F @ Z )
= ( G @ Z ) ) )
=> ( ( map_nat_nat @ F @ X )
= ( map_nat_nat @ G @ X ) ) ) ).
% list.map_cong0
thf(fact_900_list_Omap__cong,axiom,
! [X: list_nat,Ya: list_nat,F: nat > nat,G: nat > nat] :
( ( X = Ya )
=> ( ! [Z: nat] :
( ( member_nat2 @ Z @ ( set_nat2 @ Ya ) )
=> ( ( F @ Z )
= ( G @ Z ) ) )
=> ( ( map_nat_nat @ F @ X )
= ( map_nat_nat @ G @ Ya ) ) ) ) ).
% list.map_cong
thf(fact_901_distinct__length__2__or__more,axiom,
! [A: a,B: a,Xs: list_a] :
( ( distinct_a @ ( cons_a @ A @ ( cons_a @ B @ Xs ) ) )
= ( ( A != B )
& ( distinct_a @ ( cons_a @ A @ Xs ) )
& ( distinct_a @ ( cons_a @ B @ Xs ) ) ) ) ).
% distinct_length_2_or_more
thf(fact_902_distinct__length__2__or__more,axiom,
! [A: nat,B: nat,Xs: list_nat] :
( ( distinct_nat @ ( cons_nat @ A @ ( cons_nat @ B @ Xs ) ) )
= ( ( A != B )
& ( distinct_nat @ ( cons_nat @ A @ Xs ) )
& ( distinct_nat @ ( cons_nat @ B @ Xs ) ) ) ) ).
% distinct_length_2_or_more
thf(fact_903_distinct_Osimps_I1_J,axiom,
distinct_nat @ nil_nat ).
% distinct.simps(1)
thf(fact_904_map__eq__append__conv,axiom,
! [F: nat > nat,Xs: list_nat,Ys: list_nat,Zs: list_nat] :
( ( ( map_nat_nat @ F @ Xs )
= ( append_nat @ Ys @ Zs ) )
= ( ? [Us: list_nat,Vs2: list_nat] :
( ( Xs
= ( append_nat @ Us @ Vs2 ) )
& ( Ys
= ( map_nat_nat @ F @ Us ) )
& ( Zs
= ( map_nat_nat @ F @ Vs2 ) ) ) ) ) ).
% map_eq_append_conv
thf(fact_905_append__eq__map__conv,axiom,
! [Ys: list_nat,Zs: list_nat,F: nat > nat,Xs: list_nat] :
( ( ( append_nat @ Ys @ Zs )
= ( map_nat_nat @ F @ Xs ) )
= ( ? [Us: list_nat,Vs2: list_nat] :
( ( Xs
= ( append_nat @ Us @ Vs2 ) )
& ( Ys
= ( map_nat_nat @ F @ Us ) )
& ( Zs
= ( map_nat_nat @ F @ Vs2 ) ) ) ) ) ).
% append_eq_map_conv
thf(fact_906_finite__distinct__list,axiom,
! [A3: set_nat] :
( ( finite_finite_nat @ A3 )
=> ? [Xs2: list_nat] :
( ( ( set_nat2 @ Xs2 )
= A3 )
& ( distinct_nat @ Xs2 ) ) ) ).
% finite_distinct_list
thf(fact_907_sorted__list__of__set_Odistinct__if__distinct__map,axiom,
! [Xs: list_nat] :
( ( distinct_nat @ Xs )
=> ( distinct_nat @ Xs ) ) ).
% sorted_list_of_set.distinct_if_distinct_map
thf(fact_908_map__concat,axiom,
! [F: nat > nat,Xs: list_list_nat] :
( ( map_nat_nat @ F @ ( concat_nat @ Xs ) )
= ( concat_nat @ ( map_li7225945977422193158st_nat @ ( map_nat_nat @ F ) @ Xs ) ) ) ).
% map_concat
thf(fact_909_transpose__map__map,axiom,
! [F: nat > nat,Xs: list_list_nat] :
( ( transpose_nat @ ( map_li7225945977422193158st_nat @ ( map_nat_nat @ F ) @ Xs ) )
= ( map_li7225945977422193158st_nat @ ( map_nat_nat @ F ) @ ( transpose_nat @ Xs ) ) ) ).
% transpose_map_map
thf(fact_910_map__update,axiom,
! [F: nat > nat,Xs: list_nat,K: nat,Y: nat] :
( ( map_nat_nat @ F @ ( list_update_nat @ Xs @ K @ Y ) )
= ( list_update_nat @ ( map_nat_nat @ F @ Xs ) @ K @ ( F @ Y ) ) ) ).
% map_update
thf(fact_911_map__tl,axiom,
! [F: nat > nat,Xs: list_nat] :
( ( map_nat_nat @ F @ ( tl_nat @ Xs ) )
= ( tl_nat @ ( map_nat_nat @ F @ Xs ) ) ) ).
% map_tl
thf(fact_912_distinct__take,axiom,
! [Xs: list_nat,I2: nat] :
( ( distinct_nat @ Xs )
=> ( distinct_nat @ ( take_nat @ I2 @ Xs ) ) ) ).
% distinct_take
thf(fact_913_drop__map,axiom,
! [N: nat,F: nat > nat,Xs: list_nat] :
( ( drop_nat @ N @ ( map_nat_nat @ F @ Xs ) )
= ( map_nat_nat @ F @ ( drop_nat @ N @ Xs ) ) ) ).
% drop_map
thf(fact_914_rev__map,axiom,
! [F: nat > nat,Xs: list_nat] :
( ( rev_nat @ ( map_nat_nat @ F @ Xs ) )
= ( map_nat_nat @ F @ ( rev_nat @ Xs ) ) ) ).
% rev_map
thf(fact_915_take__map,axiom,
! [N: nat,F: nat > nat,Xs: list_nat] :
( ( take_nat @ N @ ( map_nat_nat @ F @ Xs ) )
= ( map_nat_nat @ F @ ( take_nat @ N @ Xs ) ) ) ).
% take_map
thf(fact_916_distinct__singleton,axiom,
! [X: a] : ( distinct_a @ ( cons_a @ X @ nil_a ) ) ).
% distinct_singleton
thf(fact_917_distinct__singleton,axiom,
! [X: nat] : ( distinct_nat @ ( cons_nat @ X @ nil_nat ) ) ).
% distinct_singleton
thf(fact_918_distinct_Osimps_I2_J,axiom,
! [X: list_nat,Xs: list_list_nat] :
( ( distinct_list_nat @ ( cons_list_nat @ X @ Xs ) )
= ( ~ ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
& ( distinct_list_nat @ Xs ) ) ) ).
% distinct.simps(2)
thf(fact_919_distinct_Osimps_I2_J,axiom,
! [X: list_a,Xs: list_list_a] :
( ( distinct_list_a @ ( cons_list_a @ X @ Xs ) )
= ( ~ ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
& ( distinct_list_a @ Xs ) ) ) ).
% distinct.simps(2)
thf(fact_920_distinct_Osimps_I2_J,axiom,
! [X: a,Xs: list_a] :
( ( distinct_a @ ( cons_a @ X @ Xs ) )
= ( ~ ( member_a2 @ X @ ( set_a2 @ Xs ) )
& ( distinct_a @ Xs ) ) ) ).
% distinct.simps(2)
thf(fact_921_distinct_Osimps_I2_J,axiom,
! [X: nat,Xs: list_nat] :
( ( distinct_nat @ ( cons_nat @ X @ Xs ) )
= ( ~ ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
& ( distinct_nat @ Xs ) ) ) ).
% distinct.simps(2)
thf(fact_922_hd__map,axiom,
! [Xs: list_nat,F: nat > nat] :
( ( Xs != nil_nat )
=> ( ( hd_nat @ ( map_nat_nat @ F @ Xs ) )
= ( F @ ( hd_nat @ Xs ) ) ) ) ).
% hd_map
thf(fact_923_list_Omap__sel_I1_J,axiom,
! [A: list_nat,F: nat > nat] :
( ( A != nil_nat )
=> ( ( hd_nat @ ( map_nat_nat @ F @ A ) )
= ( F @ ( hd_nat @ A ) ) ) ) ).
% list.map_sel(1)
thf(fact_924_list_Omap__sel_I2_J,axiom,
! [A: list_nat,F: nat > nat] :
( ( A != nil_nat )
=> ( ( tl_nat @ ( map_nat_nat @ F @ A ) )
= ( map_nat_nat @ F @ ( tl_nat @ A ) ) ) ) ).
% list.map_sel(2)
thf(fact_925_last__map,axiom,
! [Xs: list_nat,F: nat > nat] :
( ( Xs != nil_nat )
=> ( ( last_nat @ ( map_nat_nat @ F @ Xs ) )
= ( F @ ( last_nat @ Xs ) ) ) ) ).
% last_map
thf(fact_926_map__eq__map__tailrec,axiom,
map_nat_nat = map_tailrec_nat_nat ).
% map_eq_map_tailrec
thf(fact_927_finite__maxlen,axiom,
! [M3: set_list_nat] :
( ( finite8100373058378681591st_nat @ M3 )
=> ? [N2: nat] :
! [X4: list_nat] :
( ( member_list_nat2 @ X4 @ M3 )
=> ( ord_less_nat @ ( size_size_list_nat @ X4 ) @ N2 ) ) ) ).
% finite_maxlen
thf(fact_928_subseqs__distinctD,axiom,
! [Ys: list_a,Xs: list_a] :
( ( member_list_a2 @ Ys @ ( set_list_a2 @ ( subseqs_a @ Xs ) ) )
=> ( ( distinct_a @ Xs )
=> ( distinct_a @ Ys ) ) ) ).
% subseqs_distinctD
thf(fact_929_subseqs__distinctD,axiom,
! [Ys: list_nat,Xs: list_nat] :
( ( member_list_nat2 @ Ys @ ( set_list_nat2 @ ( subseqs_nat @ Xs ) ) )
=> ( ( distinct_nat @ Xs )
=> ( distinct_nat @ Ys ) ) ) ).
% subseqs_distinctD
thf(fact_930_strict__sorted__iff,axiom,
! [L: list_nat] :
( ( sorted_wrt_nat @ ord_less_nat @ L )
= ( ( sorted_wrt_nat @ ord_less_eq_nat @ L )
& ( distinct_nat @ L ) ) ) ).
% strict_sorted_iff
thf(fact_931_map__equality__iff,axiom,
! [F: nat > nat,Xs: list_nat,G: nat > nat,Ys: list_nat] :
( ( ( map_nat_nat @ F @ Xs )
= ( map_nat_nat @ G @ Ys ) )
= ( ( ( size_size_list_nat @ Xs )
= ( size_size_list_nat @ Ys ) )
& ! [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_size_list_nat @ Ys ) )
=> ( ( F @ ( nth_nat @ Xs @ I4 ) )
= ( G @ ( nth_nat @ Ys @ I4 ) ) ) ) ) ) ).
% map_equality_iff
thf(fact_932_not__distinct__decomp,axiom,
! [Ws: list_a] :
( ~ ( distinct_a @ Ws )
=> ? [Xs2: list_a,Ys3: list_a,Zs2: list_a,Y2: a] :
( Ws
= ( append_a @ Xs2 @ ( append_a @ ( cons_a @ Y2 @ nil_a ) @ ( append_a @ Ys3 @ ( append_a @ ( cons_a @ Y2 @ nil_a ) @ Zs2 ) ) ) ) ) ) ).
% not_distinct_decomp
thf(fact_933_not__distinct__decomp,axiom,
! [Ws: list_nat] :
( ~ ( distinct_nat @ Ws )
=> ? [Xs2: list_nat,Ys3: list_nat,Zs2: list_nat,Y2: nat] :
( Ws
= ( append_nat @ Xs2 @ ( append_nat @ ( cons_nat @ Y2 @ nil_nat ) @ ( append_nat @ Ys3 @ ( append_nat @ ( cons_nat @ Y2 @ nil_nat ) @ Zs2 ) ) ) ) ) ) ).
% not_distinct_decomp
thf(fact_934_not__distinct__conv__prefix,axiom,
! [As: list_list_nat] :
( ( ~ ( distinct_list_nat @ As ) )
= ( ? [Xs3: list_list_nat,Y3: list_nat,Ys2: list_list_nat] :
( ( member_list_nat2 @ Y3 @ ( set_list_nat2 @ Xs3 ) )
& ( distinct_list_nat @ Xs3 )
& ( As
= ( append_list_nat @ Xs3 @ ( cons_list_nat @ Y3 @ Ys2 ) ) ) ) ) ) ).
% not_distinct_conv_prefix
thf(fact_935_not__distinct__conv__prefix,axiom,
! [As: list_list_a] :
( ( ~ ( distinct_list_a @ As ) )
= ( ? [Xs3: list_list_a,Y3: list_a,Ys2: list_list_a] :
( ( member_list_a2 @ Y3 @ ( set_list_a2 @ Xs3 ) )
& ( distinct_list_a @ Xs3 )
& ( As
= ( append_list_a @ Xs3 @ ( cons_list_a @ Y3 @ Ys2 ) ) ) ) ) ) ).
% not_distinct_conv_prefix
thf(fact_936_not__distinct__conv__prefix,axiom,
! [As: list_a] :
( ( ~ ( distinct_a @ As ) )
= ( ? [Xs3: list_a,Y3: a,Ys2: list_a] :
( ( member_a2 @ Y3 @ ( set_a2 @ Xs3 ) )
& ( distinct_a @ Xs3 )
& ( As
= ( append_a @ Xs3 @ ( cons_a @ Y3 @ Ys2 ) ) ) ) ) ) ).
% not_distinct_conv_prefix
thf(fact_937_not__distinct__conv__prefix,axiom,
! [As: list_nat] :
( ( ~ ( distinct_nat @ As ) )
= ( ? [Xs3: list_nat,Y3: nat,Ys2: list_nat] :
( ( member_nat2 @ Y3 @ ( set_nat2 @ Xs3 ) )
& ( distinct_nat @ Xs3 )
& ( As
= ( append_nat @ Xs3 @ ( cons_nat @ Y3 @ Ys2 ) ) ) ) ) ) ).
% not_distinct_conv_prefix
thf(fact_938_sorted__distinct__set__unique,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ Xs )
=> ( ( distinct_nat @ Xs )
=> ( ( sorted_wrt_nat @ ord_less_eq_nat @ Ys )
=> ( ( distinct_nat @ Ys )
=> ( ( ( set_nat2 @ Xs )
= ( set_nat2 @ Ys ) )
=> ( Xs = Ys ) ) ) ) ) ) ).
% sorted_distinct_set_unique
thf(fact_939_card__distinct,axiom,
! [Xs: list_list_nat] :
( ( ( finite_card_list_nat @ ( set_list_nat2 @ Xs ) )
= ( size_s3023201423986296836st_nat @ Xs ) )
=> ( distinct_list_nat @ Xs ) ) ).
% card_distinct
thf(fact_940_card__distinct,axiom,
! [Xs: list_nat] :
( ( ( finite_card_nat @ ( set_nat2 @ Xs ) )
= ( size_size_list_nat @ Xs ) )
=> ( distinct_nat @ Xs ) ) ).
% card_distinct
thf(fact_941_distinct__card,axiom,
! [Xs: list_list_nat] :
( ( distinct_list_nat @ Xs )
=> ( ( finite_card_list_nat @ ( set_list_nat2 @ Xs ) )
= ( size_s3023201423986296836st_nat @ Xs ) ) ) ).
% distinct_card
thf(fact_942_distinct__card,axiom,
! [Xs: list_nat] :
( ( distinct_nat @ Xs )
=> ( ( finite_card_nat @ ( set_nat2 @ Xs ) )
= ( size_size_list_nat @ Xs ) ) ) ).
% distinct_card
thf(fact_943_nth__eq__iff__index__eq,axiom,
! [Xs: list_nat,I2: nat,J: nat] :
( ( distinct_nat @ Xs )
=> ( ( ord_less_nat @ I2 @ ( size_size_list_nat @ Xs ) )
=> ( ( ord_less_nat @ J @ ( size_size_list_nat @ Xs ) )
=> ( ( ( nth_nat @ Xs @ I2 )
= ( nth_nat @ Xs @ J ) )
= ( I2 = J ) ) ) ) ) ).
% nth_eq_iff_index_eq
thf(fact_944_distinct__conv__nth,axiom,
( distinct_nat
= ( ^ [Xs3: list_nat] :
! [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_size_list_nat @ Xs3 ) )
=> ! [J2: nat] :
( ( ord_less_nat @ J2 @ ( size_size_list_nat @ Xs3 ) )
=> ( ( I4 != J2 )
=> ( ( nth_nat @ Xs3 @ I4 )
!= ( nth_nat @ Xs3 @ J2 ) ) ) ) ) ) ) ).
% distinct_conv_nth
thf(fact_945_sorted__map__remove1,axiom,
! [F: nat > nat,Xs: list_nat,X: nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ ( map_nat_nat @ F @ Xs ) )
=> ( sorted_wrt_nat @ ord_less_eq_nat @ ( map_nat_nat @ F @ ( remove1_nat @ X @ Xs ) ) ) ) ).
% sorted_map_remove1
thf(fact_946_map__tailrec__rev,axiom,
( map_ta7164188454487880599at_nat
= ( ^ [F2: nat > nat,As3: list_nat] : ( append_nat @ ( rev_nat @ ( map_nat_nat @ F2 @ As3 ) ) ) ) ) ).
% map_tailrec_rev
thf(fact_947_subset__code_I2_J,axiom,
! [A3: set_list_nat,Ys: list_list_nat] :
( ( ord_le6045566169113846134st_nat @ A3 @ ( coset_list_nat @ Ys ) )
= ( ! [X2: list_nat] :
( ( member_list_nat2 @ X2 @ ( set_list_nat2 @ Ys ) )
=> ~ ( member_list_nat2 @ X2 @ A3 ) ) ) ) ).
% subset_code(2)
thf(fact_948_subset__code_I2_J,axiom,
! [A3: set_list_a,Ys: list_list_a] :
( ( ord_le8861187494160871172list_a @ A3 @ ( coset_list_a @ Ys ) )
= ( ! [X2: list_a] :
( ( member_list_a2 @ X2 @ ( set_list_a2 @ Ys ) )
=> ~ ( member_list_a2 @ X2 @ A3 ) ) ) ) ).
% subset_code(2)
thf(fact_949_subset__code_I2_J,axiom,
! [A3: set_nat,Ys: list_nat] :
( ( ord_less_eq_set_nat @ A3 @ ( coset_nat @ Ys ) )
= ( ! [X2: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Ys ) )
=> ~ ( member_nat2 @ X2 @ A3 ) ) ) ) ).
% subset_code(2)
thf(fact_950_distinct__Ex1,axiom,
! [Xs: list_list_nat,X: list_nat] :
( ( distinct_list_nat @ Xs )
=> ( ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
=> ? [X3: nat] :
( ( ord_less_nat @ X3 @ ( size_s3023201423986296836st_nat @ Xs ) )
& ( ( nth_list_nat @ Xs @ X3 )
= X )
& ! [Y5: nat] :
( ( ( ord_less_nat @ Y5 @ ( size_s3023201423986296836st_nat @ Xs ) )
& ( ( nth_list_nat @ Xs @ Y5 )
= X ) )
=> ( Y5 = X3 ) ) ) ) ) ).
% distinct_Ex1
thf(fact_951_distinct__Ex1,axiom,
! [Xs: list_list_a,X: list_a] :
( ( distinct_list_a @ Xs )
=> ( ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
=> ? [X3: nat] :
( ( ord_less_nat @ X3 @ ( size_s349497388124573686list_a @ Xs ) )
& ( ( nth_list_a @ Xs @ X3 )
= X )
& ! [Y5: nat] :
( ( ( ord_less_nat @ Y5 @ ( size_s349497388124573686list_a @ Xs ) )
& ( ( nth_list_a @ Xs @ Y5 )
= X ) )
=> ( Y5 = X3 ) ) ) ) ) ).
% distinct_Ex1
thf(fact_952_distinct__Ex1,axiom,
! [Xs: list_nat,X: nat] :
( ( distinct_nat @ Xs )
=> ( ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ? [X3: nat] :
( ( ord_less_nat @ X3 @ ( size_size_list_nat @ Xs ) )
& ( ( nth_nat @ Xs @ X3 )
= X )
& ! [Y5: nat] :
( ( ( ord_less_nat @ Y5 @ ( size_size_list_nat @ Xs ) )
& ( ( nth_nat @ Xs @ Y5 )
= X ) )
=> ( Y5 = X3 ) ) ) ) ) ).
% distinct_Ex1
thf(fact_953_sorted__transpose,axiom,
! [Xs: list_list_nat] : ( sorted_wrt_nat @ ord_less_eq_nat @ ( rev_nat @ ( map_list_nat_nat @ size_size_list_nat @ ( transpose_nat @ Xs ) ) ) ) ).
% sorted_transpose
thf(fact_954_folding__insort__key_Ofinite__set__strict__sorted,axiom,
! [Less_eq: nat > nat > $o,Less: nat > nat > $o,S: set_list_nat,F: list_nat > nat,A3: set_list_nat] :
( ( foldin951631548397865559st_nat @ Less_eq @ Less @ S @ F )
=> ( ( ord_le6045566169113846134st_nat @ A3 @ S )
=> ( ( finite8100373058378681591st_nat @ A3 )
=> ~ ! [L2: list_list_nat] :
( ( sorted_wrt_nat @ Less @ ( map_list_nat_nat @ F @ L2 ) )
=> ( ( ( set_list_nat2 @ L2 )
= A3 )
=> ( ( size_s3023201423986296836st_nat @ L2 )
!= ( finite_card_list_nat @ A3 ) ) ) ) ) ) ) ).
% folding_insort_key.finite_set_strict_sorted
thf(fact_955_folding__insort__key_Ofinite__set__strict__sorted,axiom,
! [Less_eq: nat > nat > $o,Less: nat > nat > $o,S: set_nat,F: nat > nat,A3: set_nat] :
( ( foldin8133931898133206727at_nat @ Less_eq @ Less @ S @ F )
=> ( ( ord_less_eq_set_nat @ A3 @ S )
=> ( ( finite_finite_nat @ A3 )
=> ~ ! [L2: list_nat] :
( ( sorted_wrt_nat @ Less @ ( map_nat_nat @ F @ L2 ) )
=> ( ( ( set_nat2 @ L2 )
= A3 )
=> ( ( size_size_list_nat @ L2 )
!= ( finite_card_nat @ A3 ) ) ) ) ) ) ) ).
% folding_insort_key.finite_set_strict_sorted
thf(fact_956_distinct__union,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( distinct_nat @ ( union_nat @ Xs @ Ys ) )
= ( distinct_nat @ Ys ) ) ).
% distinct_union
thf(fact_957_sorted__list__of__set_Osorted__key__list__of__set__unique,axiom,
! [A3: set_nat,L: list_nat] :
( ( finite_finite_nat @ A3 )
=> ( ( ( sorted_wrt_nat @ ord_less_nat @ L )
& ( ( set_nat2 @ L )
= A3 )
& ( ( size_size_list_nat @ L )
= ( finite_card_nat @ A3 ) ) )
= ( ( linord2614967742042102400et_nat @ A3 )
= L ) ) ) ).
% sorted_list_of_set.sorted_key_list_of_set_unique
thf(fact_958_sorted__insort__insert__key,axiom,
! [F: nat > nat,Xs: list_nat,X: nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ ( map_nat_nat @ F @ Xs ) )
=> ( sorted_wrt_nat @ ord_less_eq_nat @ ( map_nat_nat @ F @ ( linord1921536354676448932at_nat @ F @ X @ Xs ) ) ) ) ).
% sorted_insort_insert_key
thf(fact_959_sorted__list__of__set_Ofold__insort__key_Oinfinite,axiom,
! [A3: set_nat] :
( ~ ( finite_finite_nat @ A3 )
=> ( ( linord2614967742042102400et_nat @ A3 )
= nil_nat ) ) ).
% sorted_list_of_set.fold_insort_key.infinite
thf(fact_960_sorted__list__of__set_Oset__sorted__key__list__of__set,axiom,
! [A3: set_nat] :
( ( finite_finite_nat @ A3 )
=> ( ( set_nat2 @ ( linord2614967742042102400et_nat @ A3 ) )
= A3 ) ) ).
% sorted_list_of_set.set_sorted_key_list_of_set
thf(fact_961_sorted__list__of__set_Olength__sorted__key__list__of__set,axiom,
! [A3: set_nat] :
( ( size_size_list_nat @ ( linord2614967742042102400et_nat @ A3 ) )
= ( finite_card_nat @ A3 ) ) ).
% sorted_list_of_set.length_sorted_key_list_of_set
thf(fact_962_sorted__list__of__set_Osorted__key__list__of__set__inject,axiom,
! [A3: set_nat,B2: set_nat] :
( ( ( linord2614967742042102400et_nat @ A3 )
= ( linord2614967742042102400et_nat @ B2 ) )
=> ( ( finite_finite_nat @ A3 )
=> ( ( finite_finite_nat @ B2 )
=> ( A3 = B2 ) ) ) ) ).
% sorted_list_of_set.sorted_key_list_of_set_inject
thf(fact_963_sorted__list__of__set_Odistinct__sorted__key__list__of__set,axiom,
! [A3: set_nat] : ( distinct_nat @ ( linord2614967742042102400et_nat @ A3 ) ) ).
% sorted_list_of_set.distinct_sorted_key_list_of_set
thf(fact_964_sorted__list__of__set_Osorted__sorted__key__list__of__set,axiom,
! [A3: set_nat] : ( sorted_wrt_nat @ ord_less_eq_nat @ ( linord2614967742042102400et_nat @ A3 ) ) ).
% sorted_list_of_set.sorted_sorted_key_list_of_set
thf(fact_965_sorted__list__of__set_Ostrict__sorted__key__list__of__set,axiom,
! [A3: set_nat] : ( sorted_wrt_nat @ ord_less_nat @ ( linord2614967742042102400et_nat @ A3 ) ) ).
% sorted_list_of_set.strict_sorted_key_list_of_set
thf(fact_966_folding__insort__key_Odistinct__if__distinct__map,axiom,
! [Less_eq: nat > nat > $o,Less: nat > nat > $o,S: set_nat,F: nat > nat,Xs: list_nat] :
( ( foldin8133931898133206727at_nat @ Less_eq @ Less @ S @ F )
=> ( ( distinct_nat @ ( map_nat_nat @ F @ Xs ) )
=> ( distinct_nat @ Xs ) ) ) ).
% folding_insort_key.distinct_if_distinct_map
thf(fact_967_distinct__set__subseqs,axiom,
! [Xs: list_nat] :
( ( distinct_nat @ Xs )
=> ( distinct_set_nat @ ( map_list_nat_set_nat @ set_nat2 @ ( subseqs_nat @ Xs ) ) ) ) ).
% distinct_set_subseqs
thf(fact_968_sorted__list__of__set_Oidem__if__sorted__distinct,axiom,
! [Xs: list_nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ Xs )
=> ( ( distinct_nat @ Xs )
=> ( ( linord2614967742042102400et_nat @ ( set_nat2 @ Xs ) )
= Xs ) ) ) ).
% sorted_list_of_set.idem_if_sorted_distinct
thf(fact_969_folding__insort__key_Osorted__key__list__of__set__unique,axiom,
! [Less_eq: nat > nat > $o,Less: nat > nat > $o,S: set_list_nat,F: list_nat > nat,A3: set_list_nat,L: list_list_nat] :
( ( foldin951631548397865559st_nat @ Less_eq @ Less @ S @ F )
=> ( ( ord_le6045566169113846134st_nat @ A3 @ S )
=> ( ( finite8100373058378681591st_nat @ A3 )
=> ( ( ( sorted_wrt_nat @ Less @ ( map_list_nat_nat @ F @ L ) )
& ( ( set_list_nat2 @ L )
= A3 )
& ( ( size_s3023201423986296836st_nat @ L )
= ( finite_card_list_nat @ A3 ) ) )
= ( ( sorted4005134659417452724st_nat @ Less_eq @ F @ A3 )
= L ) ) ) ) ) ).
% folding_insort_key.sorted_key_list_of_set_unique
thf(fact_970_folding__insort__key_Osorted__key__list__of__set__unique,axiom,
! [Less_eq: nat > nat > $o,Less: nat > nat > $o,S: set_nat,F: nat > nat,A3: set_nat,L: list_nat] :
( ( foldin8133931898133206727at_nat @ Less_eq @ Less @ S @ F )
=> ( ( ord_less_eq_set_nat @ A3 @ S )
=> ( ( finite_finite_nat @ A3 )
=> ( ( ( sorted_wrt_nat @ Less @ ( map_nat_nat @ F @ L ) )
& ( ( set_nat2 @ L )
= A3 )
& ( ( size_size_list_nat @ L )
= ( finite_card_nat @ A3 ) ) )
= ( ( sorted5905597674102116260at_nat @ Less_eq @ F @ A3 )
= L ) ) ) ) ) ).
% folding_insort_key.sorted_key_list_of_set_unique
thf(fact_971_folding__insort__key_Oidem__if__sorted__distinct,axiom,
! [Less_eq: nat > nat > $o,Less: nat > nat > $o,S: set_nat,F: nat > nat,Xs: list_nat] :
( ( foldin8133931898133206727at_nat @ Less_eq @ Less @ S @ F )
=> ( ( ord_less_eq_set_nat @ ( set_nat2 @ Xs ) @ S )
=> ( ( sorted_wrt_nat @ Less_eq @ ( map_nat_nat @ F @ Xs ) )
=> ( ( distinct_nat @ Xs )
=> ( ( sorted5905597674102116260at_nat @ Less_eq @ F @ ( set_nat2 @ Xs ) )
= Xs ) ) ) ) ) ).
% folding_insort_key.idem_if_sorted_distinct
thf(fact_972_nth__sorted__list__of__set__greaterThanLessThan,axiom,
! [N: nat,J: nat,I2: nat] :
( ( ord_less_nat @ N @ ( minus_minus_nat @ J @ ( suc @ I2 ) ) )
=> ( ( nth_nat @ ( linord2614967742042102400et_nat @ ( set_or5834768355832116004an_nat @ I2 @ J ) ) @ N )
= ( suc @ ( plus_plus_nat @ I2 @ N ) ) ) ) ).
% nth_sorted_list_of_set_greaterThanLessThan
thf(fact_973_sorted__list__of__set__greaterThanLessThan,axiom,
! [I2: nat,J: nat] :
( ( ord_less_nat @ ( suc @ I2 ) @ J )
=> ( ( linord2614967742042102400et_nat @ ( set_or5834768355832116004an_nat @ I2 @ J ) )
= ( cons_nat @ ( suc @ I2 ) @ ( linord2614967742042102400et_nat @ ( set_or5834768355832116004an_nat @ ( suc @ I2 ) @ J ) ) ) ) ) ).
% sorted_list_of_set_greaterThanLessThan
thf(fact_974_folding__insort__key_Odistinct__sorted__key__list__of__set,axiom,
! [Less_eq: nat > nat > $o,Less: nat > nat > $o,S: set_nat,F: nat > nat,A3: set_nat] :
( ( foldin8133931898133206727at_nat @ Less_eq @ Less @ S @ F )
=> ( ( ord_less_eq_set_nat @ A3 @ S )
=> ( distinct_nat @ ( map_nat_nat @ F @ ( sorted5905597674102116260at_nat @ Less_eq @ F @ A3 ) ) ) ) ) ).
% folding_insort_key.distinct_sorted_key_list_of_set
thf(fact_975_folding__insort__key_Ostrict__sorted__key__list__of__set,axiom,
! [Less_eq: nat > nat > $o,Less: nat > nat > $o,S: set_nat,F: nat > nat,A3: set_nat] :
( ( foldin8133931898133206727at_nat @ Less_eq @ Less @ S @ F )
=> ( ( ord_less_eq_set_nat @ A3 @ S )
=> ( sorted_wrt_nat @ Less @ ( map_nat_nat @ F @ ( sorted5905597674102116260at_nat @ Less_eq @ F @ A3 ) ) ) ) ) ).
% folding_insort_key.strict_sorted_key_list_of_set
thf(fact_976_folding__insort__key_Osorted__sorted__key__list__of__set,axiom,
! [Less_eq: nat > nat > $o,Less: nat > nat > $o,S: set_nat,F: nat > nat,A3: set_nat] :
( ( foldin8133931898133206727at_nat @ Less_eq @ Less @ S @ F )
=> ( ( ord_less_eq_set_nat @ A3 @ S )
=> ( sorted_wrt_nat @ Less_eq @ ( map_nat_nat @ F @ ( sorted5905597674102116260at_nat @ Less_eq @ F @ A3 ) ) ) ) ) ).
% folding_insort_key.sorted_sorted_key_list_of_set
thf(fact_977_nth__sorted__list__of__set__greaterThanAtMost,axiom,
! [N: nat,J: nat,I2: nat] :
( ( ord_less_nat @ N @ ( minus_minus_nat @ J @ I2 ) )
=> ( ( nth_nat @ ( linord2614967742042102400et_nat @ ( set_or6659071591806873216st_nat @ I2 @ J ) ) @ N )
= ( suc @ ( plus_plus_nat @ I2 @ N ) ) ) ) ).
% nth_sorted_list_of_set_greaterThanAtMost
thf(fact_978_nths__empty,axiom,
! [Xs: list_nat] :
( ( nths_nat @ Xs @ bot_bot_set_nat )
= nil_nat ) ).
% nths_empty
thf(fact_979_set__empty2,axiom,
! [Xs: list_nat] :
( ( bot_bot_set_nat
= ( set_nat2 @ Xs ) )
= ( Xs = nil_nat ) ) ).
% set_empty2
thf(fact_980_set__empty,axiom,
! [Xs: list_nat] :
( ( ( set_nat2 @ Xs )
= bot_bot_set_nat )
= ( Xs = nil_nat ) ) ).
% set_empty
thf(fact_981_sorted__list__of__set_Osorted__key__list__of__set__empty,axiom,
( ( linord2614967742042102400et_nat @ bot_bot_set_nat )
= nil_nat ) ).
% sorted_list_of_set.sorted_key_list_of_set_empty
thf(fact_982_sorted__list__of__set_Osorted__key__list__of__set__eq__Nil__iff,axiom,
! [A3: set_nat] :
( ( finite_finite_nat @ A3 )
=> ( ( ( linord2614967742042102400et_nat @ A3 )
= nil_nat )
= ( A3 = bot_bot_set_nat ) ) ) ).
% sorted_list_of_set.sorted_key_list_of_set_eq_Nil_iff
thf(fact_983_empty__set,axiom,
( bot_bot_set_nat
= ( set_nat2 @ nil_nat ) ) ).
% empty_set
thf(fact_984_sorted__list__of__set__greaterThanAtMost,axiom,
! [I2: nat,J: nat] :
( ( ord_less_eq_nat @ ( suc @ I2 ) @ J )
=> ( ( linord2614967742042102400et_nat @ ( set_or6659071591806873216st_nat @ I2 @ J ) )
= ( cons_nat @ ( suc @ I2 ) @ ( linord2614967742042102400et_nat @ ( set_or6659071591806873216st_nat @ ( suc @ I2 ) @ J ) ) ) ) ) ).
% sorted_list_of_set_greaterThanAtMost
thf(fact_985_distinct__concat,axiom,
! [Xs: list_list_a] :
( ( distinct_list_a @ Xs )
=> ( ! [Ys3: list_a] :
( ( member_list_a2 @ Ys3 @ ( set_list_a2 @ Xs ) )
=> ( distinct_a @ Ys3 ) )
=> ( ! [Ys3: list_a,Zs2: list_a] :
( ( member_list_a2 @ Ys3 @ ( set_list_a2 @ Xs ) )
=> ( ( member_list_a2 @ Zs2 @ ( set_list_a2 @ Xs ) )
=> ( ( Ys3 != Zs2 )
=> ( ( inf_inf_set_a @ ( set_a2 @ Ys3 ) @ ( set_a2 @ Zs2 ) )
= bot_bot_set_a ) ) ) )
=> ( distinct_a @ ( concat_a @ Xs ) ) ) ) ) ).
% distinct_concat
thf(fact_986_distinct__concat,axiom,
! [Xs: list_list_nat] :
( ( distinct_list_nat @ Xs )
=> ( ! [Ys3: list_nat] :
( ( member_list_nat2 @ Ys3 @ ( set_list_nat2 @ Xs ) )
=> ( distinct_nat @ Ys3 ) )
=> ( ! [Ys3: list_nat,Zs2: list_nat] :
( ( member_list_nat2 @ Ys3 @ ( set_list_nat2 @ Xs ) )
=> ( ( member_list_nat2 @ Zs2 @ ( set_list_nat2 @ Xs ) )
=> ( ( Ys3 != Zs2 )
=> ( ( inf_inf_set_nat @ ( set_nat2 @ Ys3 ) @ ( set_nat2 @ Zs2 ) )
= bot_bot_set_nat ) ) ) )
=> ( distinct_nat @ ( concat_nat @ Xs ) ) ) ) ) ).
% distinct_concat
thf(fact_987_set__take__disj__set__drop__if__distinct,axiom,
! [Vs: list_nat,I2: nat,J: nat] :
( ( distinct_nat @ Vs )
=> ( ( ord_less_eq_nat @ I2 @ J )
=> ( ( inf_inf_set_nat @ ( set_nat2 @ ( take_nat @ I2 @ Vs ) ) @ ( set_nat2 @ ( drop_nat @ J @ Vs ) ) )
= bot_bot_set_nat ) ) ) ).
% set_take_disj_set_drop_if_distinct
thf(fact_988_distinct__append,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( distinct_nat @ ( append_nat @ Xs @ Ys ) )
= ( ( distinct_nat @ Xs )
& ( distinct_nat @ Ys )
& ( ( inf_inf_set_nat @ ( set_nat2 @ Xs ) @ ( set_nat2 @ Ys ) )
= bot_bot_set_nat ) ) ) ).
% distinct_append
thf(fact_989_distinct__disjoint__shuffles,axiom,
! [Xs: list_a,Ys: list_a,Zs: list_a] :
( ( distinct_a @ Xs )
=> ( ( distinct_a @ Ys )
=> ( ( ( inf_inf_set_a @ ( set_a2 @ Xs ) @ ( set_a2 @ Ys ) )
= bot_bot_set_a )
=> ( ( member_list_a2 @ Zs @ ( shuffles_a @ Xs @ Ys ) )
=> ( distinct_a @ Zs ) ) ) ) ) ).
% distinct_disjoint_shuffles
thf(fact_990_distinct__disjoint__shuffles,axiom,
! [Xs: list_nat,Ys: list_nat,Zs: list_nat] :
( ( distinct_nat @ Xs )
=> ( ( distinct_nat @ Ys )
=> ( ( ( inf_inf_set_nat @ ( set_nat2 @ Xs ) @ ( set_nat2 @ Ys ) )
= bot_bot_set_nat )
=> ( ( member_list_nat2 @ Zs @ ( shuffles_nat @ Xs @ Ys ) )
=> ( distinct_nat @ Zs ) ) ) ) ) ).
% distinct_disjoint_shuffles
thf(fact_991_distinct__concat__iff,axiom,
! [Xs: list_list_a] :
( ( distinct_a @ ( concat_a @ Xs ) )
= ( ( distinct_list_a @ ( removeAll_list_a @ nil_a @ Xs ) )
& ! [Ys2: list_a] :
( ( member_list_a2 @ Ys2 @ ( set_list_a2 @ Xs ) )
=> ( distinct_a @ Ys2 ) )
& ! [Ys2: list_a,Zs3: list_a] :
( ( ( member_list_a2 @ Ys2 @ ( set_list_a2 @ Xs ) )
& ( member_list_a2 @ Zs3 @ ( set_list_a2 @ Xs ) )
& ( Ys2 != Zs3 ) )
=> ( ( inf_inf_set_a @ ( set_a2 @ Ys2 ) @ ( set_a2 @ Zs3 ) )
= bot_bot_set_a ) ) ) ) ).
% distinct_concat_iff
thf(fact_992_distinct__concat__iff,axiom,
! [Xs: list_list_nat] :
( ( distinct_nat @ ( concat_nat @ Xs ) )
= ( ( distinct_list_nat @ ( removeAll_list_nat @ nil_nat @ Xs ) )
& ! [Ys2: list_nat] :
( ( member_list_nat2 @ Ys2 @ ( set_list_nat2 @ Xs ) )
=> ( distinct_nat @ Ys2 ) )
& ! [Ys2: list_nat,Zs3: list_nat] :
( ( ( member_list_nat2 @ Ys2 @ ( set_list_nat2 @ Xs ) )
& ( member_list_nat2 @ Zs3 @ ( set_list_nat2 @ Xs ) )
& ( Ys2 != Zs3 ) )
=> ( ( inf_inf_set_nat @ ( set_nat2 @ Ys2 ) @ ( set_nat2 @ Zs3 ) )
= bot_bot_set_nat ) ) ) ) ).
% distinct_concat_iff
thf(fact_993_upt__rec__numeral,axiom,
! [M: num,N: num] :
( ( ( ord_less_nat @ ( numeral_numeral_nat @ M ) @ ( numeral_numeral_nat @ N ) )
=> ( ( upt @ ( numeral_numeral_nat @ M ) @ ( numeral_numeral_nat @ N ) )
= ( cons_nat @ ( numeral_numeral_nat @ M ) @ ( upt @ ( suc @ ( numeral_numeral_nat @ M ) ) @ ( numeral_numeral_nat @ N ) ) ) ) )
& ( ~ ( ord_less_nat @ ( numeral_numeral_nat @ M ) @ ( numeral_numeral_nat @ N ) )
=> ( ( upt @ ( numeral_numeral_nat @ M ) @ ( numeral_numeral_nat @ N ) )
= nil_nat ) ) ) ).
% upt_rec_numeral
thf(fact_994_map__upt__eqI,axiom,
! [Xs: list_nat,N: nat,M: nat,F: nat > nat] :
( ( ( size_size_list_nat @ Xs )
= ( minus_minus_nat @ N @ M ) )
=> ( ! [I: nat] :
( ( ord_less_nat @ I @ ( size_size_list_nat @ Xs ) )
=> ( ( nth_nat @ Xs @ I )
= ( F @ ( plus_plus_nat @ M @ I ) ) ) )
=> ( ( map_nat_nat @ F @ ( upt @ M @ N ) )
= Xs ) ) ) ).
% map_upt_eqI
thf(fact_995_tl__upt,axiom,
! [M: nat,N: nat] :
( ( tl_nat @ ( upt @ M @ N ) )
= ( upt @ ( suc @ M ) @ N ) ) ).
% tl_upt
thf(fact_996_hd__upt,axiom,
! [I2: nat,J: nat] :
( ( ord_less_nat @ I2 @ J )
=> ( ( hd_nat @ ( upt @ I2 @ J ) )
= I2 ) ) ).
% hd_upt
thf(fact_997_drop__upt,axiom,
! [M: nat,I2: nat,J: nat] :
( ( drop_nat @ M @ ( upt @ I2 @ J ) )
= ( upt @ ( plus_plus_nat @ I2 @ M ) @ J ) ) ).
% drop_upt
thf(fact_998_removeAll__id,axiom,
! [X: list_nat,Xs: list_list_nat] :
( ~ ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
=> ( ( removeAll_list_nat @ X @ Xs )
= Xs ) ) ).
% removeAll_id
thf(fact_999_removeAll__id,axiom,
! [X: list_a,Xs: list_list_a] :
( ~ ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
=> ( ( removeAll_list_a @ X @ Xs )
= Xs ) ) ).
% removeAll_id
thf(fact_1000_removeAll__id,axiom,
! [X: nat,Xs: list_nat] :
( ~ ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ( ( removeAll_nat @ X @ Xs )
= Xs ) ) ).
% removeAll_id
thf(fact_1001_removeAll__append,axiom,
! [X: nat,Xs: list_nat,Ys: list_nat] :
( ( removeAll_nat @ X @ ( append_nat @ Xs @ Ys ) )
= ( append_nat @ ( removeAll_nat @ X @ Xs ) @ ( removeAll_nat @ X @ Ys ) ) ) ).
% removeAll_append
thf(fact_1002_take__upt,axiom,
! [I2: nat,M: nat,N: nat] :
( ( ord_less_eq_nat @ ( plus_plus_nat @ I2 @ M ) @ N )
=> ( ( take_nat @ M @ ( upt @ I2 @ N ) )
= ( upt @ I2 @ ( plus_plus_nat @ I2 @ M ) ) ) ) ).
% take_upt
thf(fact_1003_upt__conv__Nil,axiom,
! [J: nat,I2: nat] :
( ( ord_less_eq_nat @ J @ I2 )
=> ( ( upt @ I2 @ J )
= nil_nat ) ) ).
% upt_conv_Nil
thf(fact_1004_length__upt,axiom,
! [I2: nat,J: nat] :
( ( size_size_list_nat @ ( upt @ I2 @ J ) )
= ( minus_minus_nat @ J @ I2 ) ) ).
% length_upt
thf(fact_1005_last__upt,axiom,
! [I2: nat,J: nat] :
( ( ord_less_nat @ I2 @ J )
=> ( ( last_nat @ ( upt @ I2 @ J ) )
= ( minus_minus_nat @ J @ one_one_nat ) ) ) ).
% last_upt
thf(fact_1006_upt__eq__Nil__conv,axiom,
! [I2: nat,J: nat] :
( ( ( upt @ I2 @ J )
= nil_nat )
= ( ( J = zero_zero_nat )
| ( ord_less_eq_nat @ J @ I2 ) ) ) ).
% upt_eq_Nil_conv
thf(fact_1007_nth__upt,axiom,
! [I2: nat,K: nat,J: nat] :
( ( ord_less_nat @ ( plus_plus_nat @ I2 @ K ) @ J )
=> ( ( nth_nat @ ( upt @ I2 @ J ) @ K )
= ( plus_plus_nat @ I2 @ K ) ) ) ).
% nth_upt
thf(fact_1008_map__Suc__upt,axiom,
! [M: nat,N: nat] :
( ( map_nat_nat @ suc @ ( upt @ M @ N ) )
= ( upt @ ( suc @ M ) @ ( suc @ N ) ) ) ).
% map_Suc_upt
thf(fact_1009_distinct__upt,axiom,
! [I2: nat,J: nat] : ( distinct_nat @ ( upt @ I2 @ J ) ) ).
% distinct_upt
thf(fact_1010_distinct__removeAll,axiom,
! [Xs: list_nat,X: nat] :
( ( distinct_nat @ Xs )
=> ( distinct_nat @ ( removeAll_nat @ X @ Xs ) ) ) ).
% distinct_removeAll
thf(fact_1011_removeAll_Osimps_I1_J,axiom,
! [X: nat] :
( ( removeAll_nat @ X @ nil_nat )
= nil_nat ) ).
% removeAll.simps(1)
thf(fact_1012_upt__0,axiom,
! [I2: nat] :
( ( upt @ I2 @ zero_zero_nat )
= nil_nat ) ).
% upt_0
thf(fact_1013_removeAll_Osimps_I2_J,axiom,
! [X: a,Y: a,Xs: list_a] :
( ( ( X = Y )
=> ( ( removeAll_a @ X @ ( cons_a @ Y @ Xs ) )
= ( removeAll_a @ X @ Xs ) ) )
& ( ( X != Y )
=> ( ( removeAll_a @ X @ ( cons_a @ Y @ Xs ) )
= ( cons_a @ Y @ ( removeAll_a @ X @ Xs ) ) ) ) ) ).
% removeAll.simps(2)
thf(fact_1014_removeAll_Osimps_I2_J,axiom,
! [X: nat,Y: nat,Xs: list_nat] :
( ( ( X = Y )
=> ( ( removeAll_nat @ X @ ( cons_nat @ Y @ Xs ) )
= ( removeAll_nat @ X @ Xs ) ) )
& ( ( X != Y )
=> ( ( removeAll_nat @ X @ ( cons_nat @ Y @ Xs ) )
= ( cons_nat @ Y @ ( removeAll_nat @ X @ Xs ) ) ) ) ) ).
% removeAll.simps(2)
thf(fact_1015_upt__add__eq__append,axiom,
! [I2: nat,J: nat,K: nat] :
( ( ord_less_eq_nat @ I2 @ J )
=> ( ( upt @ I2 @ ( plus_plus_nat @ J @ K ) )
= ( append_nat @ ( upt @ I2 @ J ) @ ( upt @ J @ ( plus_plus_nat @ J @ K ) ) ) ) ) ).
% upt_add_eq_append
thf(fact_1016_upt__conv__Cons__Cons,axiom,
! [M: nat,N: nat,Ns: list_nat,Q2: nat] :
( ( ( cons_nat @ M @ ( cons_nat @ N @ Ns ) )
= ( upt @ M @ Q2 ) )
= ( ( cons_nat @ N @ Ns )
= ( upt @ ( suc @ M ) @ Q2 ) ) ) ).
% upt_conv_Cons_Cons
thf(fact_1017_sorted__wrt__upt,axiom,
! [M: nat,N: nat] : ( sorted_wrt_nat @ ord_less_nat @ ( upt @ M @ N ) ) ).
% sorted_wrt_upt
thf(fact_1018_sorted__upt,axiom,
! [M: nat,N: nat] : ( sorted_wrt_nat @ ord_less_eq_nat @ ( upt @ M @ N ) ) ).
% sorted_upt
thf(fact_1019_greaterThanAtMost__upt,axiom,
( set_or6659071591806873216st_nat
= ( ^ [N3: nat,M4: nat] : ( set_nat2 @ ( upt @ ( suc @ N3 ) @ ( suc @ M4 ) ) ) ) ) ).
% greaterThanAtMost_upt
thf(fact_1020_greaterThanLessThan__upt,axiom,
( set_or5834768355832116004an_nat
= ( ^ [N3: nat,M4: nat] : ( set_nat2 @ ( upt @ ( suc @ N3 ) @ M4 ) ) ) ) ).
% greaterThanLessThan_upt
thf(fact_1021_length__removeAll__less__eq,axiom,
! [X: nat,Xs: list_nat] : ( ord_less_eq_nat @ ( size_size_list_nat @ ( removeAll_nat @ X @ Xs ) ) @ ( size_size_list_nat @ Xs ) ) ).
% length_removeAll_less_eq
thf(fact_1022_distinct__remove1__removeAll,axiom,
! [Xs: list_nat,X: nat] :
( ( distinct_nat @ Xs )
=> ( ( remove1_nat @ X @ Xs )
= ( removeAll_nat @ X @ Xs ) ) ) ).
% distinct_remove1_removeAll
thf(fact_1023_upt__rec,axiom,
( upt
= ( ^ [I4: nat,J2: nat] : ( if_list_nat @ ( ord_less_nat @ I4 @ J2 ) @ ( cons_nat @ I4 @ ( upt @ ( suc @ I4 ) @ J2 ) ) @ nil_nat ) ) ) ).
% upt_rec
thf(fact_1024_upt__conv__Cons,axiom,
! [I2: nat,J: nat] :
( ( ord_less_nat @ I2 @ J )
=> ( ( upt @ I2 @ J )
= ( cons_nat @ I2 @ ( upt @ ( suc @ I2 ) @ J ) ) ) ) ).
% upt_conv_Cons
thf(fact_1025_upt__Suc__append,axiom,
! [I2: nat,J: nat] :
( ( ord_less_eq_nat @ I2 @ J )
=> ( ( upt @ I2 @ ( suc @ J ) )
= ( append_nat @ ( upt @ I2 @ J ) @ ( cons_nat @ J @ nil_nat ) ) ) ) ).
% upt_Suc_append
thf(fact_1026_upt__Suc,axiom,
! [I2: nat,J: nat] :
( ( ( ord_less_eq_nat @ I2 @ J )
=> ( ( upt @ I2 @ ( suc @ J ) )
= ( append_nat @ ( upt @ I2 @ J ) @ ( cons_nat @ J @ nil_nat ) ) ) )
& ( ~ ( ord_less_eq_nat @ I2 @ J )
=> ( ( upt @ I2 @ ( suc @ J ) )
= nil_nat ) ) ) ).
% upt_Suc
thf(fact_1027_remove__code_I1_J,axiom,
! [X: nat,Xs: list_nat] :
( ( remove_nat @ X @ ( set_nat2 @ Xs ) )
= ( set_nat2 @ ( removeAll_nat @ X @ Xs ) ) ) ).
% remove_code(1)
thf(fact_1028_nth__map__upt,axiom,
! [I2: nat,N: nat,M: nat,F: nat > nat] :
( ( ord_less_nat @ I2 @ ( minus_minus_nat @ N @ M ) )
=> ( ( nth_nat @ ( map_nat_nat @ F @ ( upt @ M @ N ) ) @ I2 )
= ( F @ ( plus_plus_nat @ M @ I2 ) ) ) ) ).
% nth_map_upt
thf(fact_1029_length__removeAll__less,axiom,
! [X: list_nat,Xs: list_list_nat] :
( ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
=> ( ord_less_nat @ ( size_s3023201423986296836st_nat @ ( removeAll_list_nat @ X @ Xs ) ) @ ( size_s3023201423986296836st_nat @ Xs ) ) ) ).
% length_removeAll_less
thf(fact_1030_length__removeAll__less,axiom,
! [X: list_a,Xs: list_list_a] :
( ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
=> ( ord_less_nat @ ( size_s349497388124573686list_a @ ( removeAll_list_a @ X @ Xs ) ) @ ( size_s349497388124573686list_a @ Xs ) ) ) ).
% length_removeAll_less
thf(fact_1031_length__removeAll__less,axiom,
! [X: nat,Xs: list_nat] :
( ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ( ord_less_nat @ ( size_size_list_nat @ ( removeAll_nat @ X @ Xs ) ) @ ( size_size_list_nat @ Xs ) ) ) ).
% length_removeAll_less
thf(fact_1032_upt__eq__Cons__conv,axiom,
! [I2: nat,J: nat,X: nat,Xs: list_nat] :
( ( ( upt @ I2 @ J )
= ( cons_nat @ X @ Xs ) )
= ( ( ord_less_nat @ I2 @ J )
& ( I2 = X )
& ( ( upt @ ( plus_plus_nat @ I2 @ one_one_nat ) @ J )
= Xs ) ) ) ).
% upt_eq_Cons_conv
thf(fact_1033_sorted__list__of__set__atMost__Suc,axiom,
! [K: nat] :
( ( linord2614967742042102400et_nat @ ( set_ord_atMost_nat @ ( suc @ K ) ) )
= ( append_nat @ ( linord2614967742042102400et_nat @ ( set_ord_atMost_nat @ K ) ) @ ( cons_nat @ ( suc @ K ) @ nil_nat ) ) ) ).
% sorted_list_of_set_atMost_Suc
thf(fact_1034_sorted__list__of__set__lessThan__Suc,axiom,
! [K: nat] :
( ( linord2614967742042102400et_nat @ ( set_ord_lessThan_nat @ ( suc @ K ) ) )
= ( append_nat @ ( linord2614967742042102400et_nat @ ( set_ord_lessThan_nat @ K ) ) @ ( cons_nat @ K @ nil_nat ) ) ) ).
% sorted_list_of_set_lessThan_Suc
thf(fact_1035_transpose__rectangle,axiom,
! [Xs: list_list_nat,N: nat] :
( ( ( Xs = nil_list_nat )
=> ( N = zero_zero_nat ) )
=> ( ! [I: nat] :
( ( ord_less_nat @ I @ ( size_s3023201423986296836st_nat @ Xs ) )
=> ( ( size_size_list_nat @ ( nth_list_nat @ Xs @ I ) )
= N ) )
=> ( ( transpose_nat @ Xs )
= ( map_nat_list_nat
@ ^ [I4: nat] :
( map_nat_nat
@ ^ [J2: nat] : ( nth_nat @ ( nth_list_nat @ Xs @ J2 ) @ I4 )
@ ( upt @ zero_zero_nat @ ( size_s3023201423986296836st_nat @ Xs ) ) )
@ ( upt @ zero_zero_nat @ N ) ) ) ) ) ).
% transpose_rectangle
thf(fact_1036_map__ident,axiom,
( ( map_nat_nat
@ ^ [X2: nat] : X2 )
= ( ^ [Xs3: list_nat] : Xs3 ) ) ).
% map_ident
thf(fact_1037_nths__upt__eq__take,axiom,
! [L: list_nat,N: nat] :
( ( nths_nat @ L @ ( set_ord_lessThan_nat @ N ) )
= ( take_nat @ N @ L ) ) ).
% nths_upt_eq_take
thf(fact_1038_concat__map__singleton,axiom,
! [F: nat > nat,Xs: list_nat] :
( ( concat_nat
@ ( map_nat_list_nat
@ ^ [X2: nat] : ( cons_nat @ ( F @ X2 ) @ nil_nat )
@ Xs ) )
= ( map_nat_nat @ F @ Xs ) ) ).
% concat_map_singleton
thf(fact_1039_finite__lists__distinct__length__eq,axiom,
! [A3: set_nat,N: nat] :
( ( finite_finite_nat @ A3 )
=> ( finite8100373058378681591st_nat
@ ( collect_list_nat
@ ^ [Xs3: list_nat] :
( ( ( size_size_list_nat @ Xs3 )
= N )
& ( distinct_nat @ Xs3 )
& ( ord_less_eq_set_nat @ ( set_nat2 @ Xs3 ) @ A3 ) ) ) ) ) ).
% finite_lists_distinct_length_eq
thf(fact_1040_n__lists_Osimps_I2_J,axiom,
! [N: nat,Xs: list_a] :
( ( n_lists_a @ ( suc @ N ) @ Xs )
= ( concat_list_a
@ ( map_li5729356230488778442list_a
@ ^ [Ys2: list_a] :
( map_a_list_a
@ ^ [Y3: a] : ( cons_a @ Y3 @ Ys2 )
@ Xs )
@ ( n_lists_a @ N @ Xs ) ) ) ) ).
% n_lists.simps(2)
thf(fact_1041_n__lists_Osimps_I2_J,axiom,
! [N: nat,Xs: list_nat] :
( ( n_lists_nat @ ( suc @ N ) @ Xs )
= ( concat_list_nat
@ ( map_li960784813134754710st_nat
@ ^ [Ys2: list_nat] :
( map_nat_list_nat
@ ^ [Y3: nat] : ( cons_nat @ Y3 @ Ys2 )
@ Xs )
@ ( n_lists_nat @ N @ Xs ) ) ) ) ).
% n_lists.simps(2)
thf(fact_1042_sorted__wrt__map,axiom,
! [R3: nat > nat > $o,F: nat > nat,Xs: list_nat] :
( ( sorted_wrt_nat @ R3 @ ( map_nat_nat @ F @ Xs ) )
= ( sorted_wrt_nat
@ ^ [X2: nat,Y3: nat] : ( R3 @ ( F @ X2 ) @ ( F @ Y3 ) )
@ Xs ) ) ).
% sorted_wrt_map
thf(fact_1043_sorted__map,axiom,
! [F: nat > nat,Xs: list_nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ ( map_nat_nat @ F @ Xs ) )
= ( sorted_wrt_nat
@ ^ [X2: nat,Y3: nat] : ( ord_less_eq_nat @ ( F @ X2 ) @ ( F @ Y3 ) )
@ Xs ) ) ).
% sorted_map
thf(fact_1044_map__replicate__const,axiom,
! [K: nat,Lst: list_nat] :
( ( map_nat_nat
@ ^ [X2: nat] : K
@ Lst )
= ( replicate_nat @ ( size_size_list_nat @ Lst ) @ K ) ) ).
% map_replicate_const
thf(fact_1045_map__replicate__trivial,axiom,
! [X: nat,I2: nat] :
( ( map_nat_nat
@ ^ [I4: nat] : X
@ ( upt @ zero_zero_nat @ I2 ) )
= ( replicate_nat @ I2 @ X ) ) ).
% map_replicate_trivial
thf(fact_1046_map__decr__upt,axiom,
! [M: nat,N: nat] :
( ( map_nat_nat
@ ^ [N3: nat] : ( minus_minus_nat @ N3 @ ( suc @ zero_zero_nat ) )
@ ( upt @ ( suc @ M ) @ ( suc @ N ) ) )
= ( upt @ M @ N ) ) ).
% map_decr_upt
thf(fact_1047_list_Omap__ident,axiom,
! [T: list_nat] :
( ( map_nat_nat
@ ^ [X2: nat] : X2
@ T )
= T ) ).
% list.map_ident
thf(fact_1048_successively__map,axiom,
! [P: nat > nat > $o,F: nat > nat,Xs: list_nat] :
( ( successively_nat @ P @ ( map_nat_nat @ F @ Xs ) )
= ( successively_nat
@ ^ [X2: nat,Y3: nat] : ( P @ ( F @ X2 ) @ ( F @ Y3 ) )
@ Xs ) ) ).
% successively_map
thf(fact_1049_map__add__upt,axiom,
! [N: nat,M: nat] :
( ( map_nat_nat
@ ^ [I4: nat] : ( plus_plus_nat @ I4 @ N )
@ ( upt @ zero_zero_nat @ M ) )
= ( upt @ N @ ( plus_plus_nat @ M @ N ) ) ) ).
% map_add_upt
thf(fact_1050_atLeast__upt,axiom,
( set_ord_lessThan_nat
= ( ^ [N3: nat] : ( set_nat2 @ ( upt @ zero_zero_nat @ N3 ) ) ) ) ).
% atLeast_upt
thf(fact_1051_list_Odisc__eq__case_I2_J,axiom,
! [List: list_nat] :
( ( List != nil_nat )
= ( case_list_o_nat @ $false
@ ^ [Uu: nat,Uv: list_nat] : $true
@ List ) ) ).
% list.disc_eq_case(2)
thf(fact_1052_list_Odisc__eq__case_I1_J,axiom,
! [List: list_nat] :
( ( List = nil_nat )
= ( case_list_o_nat @ $true
@ ^ [Uu: nat,Uv: list_nat] : $false
@ List ) ) ).
% list.disc_eq_case(1)
thf(fact_1053_tl__def,axiom,
( tl_nat
= ( case_l2340614614379431832at_nat @ nil_nat
@ ^ [X213: nat,X223: list_nat] : X223 ) ) ).
% tl_def
thf(fact_1054_Succ__def,axiom,
( bNF_Gr3053708287304744325st_nat
= ( ^ [Kl3: set_list_list_nat,Kl4: list_list_nat] :
( collect_list_nat
@ ^ [K2: list_nat] : ( member_list_list_nat @ ( append_list_nat @ Kl4 @ ( cons_list_nat @ K2 @ nil_list_nat ) ) @ Kl3 ) ) ) ) ).
% Succ_def
thf(fact_1055_Succ__def,axiom,
( bNF_Greatest_Succ_a
= ( ^ [Kl3: set_list_a,Kl4: list_a] :
( collect_a
@ ^ [K2: a] : ( member_list_a2 @ ( append_a @ Kl4 @ ( cons_a @ K2 @ nil_a ) ) @ Kl3 ) ) ) ) ).
% Succ_def
thf(fact_1056_Succ__def,axiom,
( bNF_Gr6352880689984616693cc_nat
= ( ^ [Kl3: set_list_nat,Kl4: list_nat] :
( collect_nat
@ ^ [K2: nat] : ( member_list_nat2 @ ( append_nat @ Kl4 @ ( cons_nat @ K2 @ nil_nat ) ) @ Kl3 ) ) ) ) ).
% Succ_def
thf(fact_1057_remdups__adj__Cons,axiom,
! [X: a,Xs: list_a] :
( ( remdups_adj_a @ ( cons_a @ X @ Xs ) )
= ( case_list_list_a_a @ ( cons_a @ X @ nil_a )
@ ^ [Y3: a,Xs3: list_a] : ( if_list_a @ ( X = Y3 ) @ ( cons_a @ Y3 @ Xs3 ) @ ( cons_a @ X @ ( cons_a @ Y3 @ Xs3 ) ) )
@ ( remdups_adj_a @ Xs ) ) ) ).
% remdups_adj_Cons
thf(fact_1058_remdups__adj__Cons,axiom,
! [X: nat,Xs: list_nat] :
( ( remdups_adj_nat @ ( cons_nat @ X @ Xs ) )
= ( case_l2340614614379431832at_nat @ ( cons_nat @ X @ nil_nat )
@ ^ [Y3: nat,Xs3: list_nat] : ( if_list_nat @ ( X = Y3 ) @ ( cons_nat @ Y3 @ Xs3 ) @ ( cons_nat @ X @ ( cons_nat @ Y3 @ Xs3 ) ) )
@ ( remdups_adj_nat @ Xs ) ) ) ).
% remdups_adj_Cons
thf(fact_1059_map__rec,axiom,
( map_nat_nat
= ( ^ [F2: nat > nat] :
( rec_li7516600145284979816at_nat @ nil_nat
@ ^ [X2: nat,Uu: list_nat] : ( cons_nat @ ( F2 @ X2 ) ) ) ) ) ).
% map_rec
thf(fact_1060_Shift__def,axiom,
( bNF_Gr1872714664788909425ft_nat
= ( ^ [Kl3: set_list_nat,K2: nat] :
( collect_list_nat
@ ^ [Kl4: list_nat] : ( member_list_nat2 @ ( cons_nat @ K2 @ Kl4 ) @ Kl3 ) ) ) ) ).
% Shift_def
thf(fact_1061_Shift__def,axiom,
( bNF_Greatest_Shift_a
= ( ^ [Kl3: set_list_a,K2: a] :
( collect_list_a
@ ^ [Kl4: list_a] : ( member_list_a2 @ ( cons_a @ K2 @ Kl4 ) @ Kl3 ) ) ) ) ).
% Shift_def
thf(fact_1062_arg__min__list_Osimps_I2_J,axiom,
! [F: a > nat,X: a,Y: a,Zs: list_a] :
( ( arg_min_list_a_nat @ F @ ( cons_a @ X @ ( cons_a @ Y @ Zs ) ) )
= ( if_a @ ( ord_less_eq_nat @ ( F @ X ) @ ( F @ ( arg_min_list_a_nat @ F @ ( cons_a @ Y @ Zs ) ) ) ) @ X @ ( arg_min_list_a_nat @ F @ ( cons_a @ Y @ Zs ) ) ) ) ).
% arg_min_list.simps(2)
thf(fact_1063_arg__min__list_Osimps_I2_J,axiom,
! [F: nat > nat,X: nat,Y: nat,Zs: list_nat] :
( ( arg_min_list_nat_nat @ F @ ( cons_nat @ X @ ( cons_nat @ Y @ Zs ) ) )
= ( if_nat @ ( ord_less_eq_nat @ ( F @ X ) @ ( F @ ( arg_min_list_nat_nat @ F @ ( cons_nat @ Y @ Zs ) ) ) ) @ X @ ( arg_min_list_nat_nat @ F @ ( cons_nat @ Y @ Zs ) ) ) ) ).
% arg_min_list.simps(2)
thf(fact_1064_insort__insert__triv,axiom,
! [X: nat,Xs: list_nat] :
( ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ( ( linord1921536354676448932at_nat
@ ^ [X2: nat] : X2
@ X
@ Xs )
= Xs ) ) ).
% insort_insert_triv
thf(fact_1065_sorted__insort__insert,axiom,
! [Xs: list_nat,X: nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ Xs )
=> ( sorted_wrt_nat @ ord_less_eq_nat
@ ( linord1921536354676448932at_nat
@ ^ [X2: nat] : X2
@ X
@ Xs ) ) ) ).
% sorted_insort_insert
thf(fact_1066_nths__append,axiom,
! [L: list_nat,L3: list_nat,A3: set_nat] :
( ( nths_nat @ ( append_nat @ L @ L3 ) @ A3 )
= ( append_nat @ ( nths_nat @ L @ A3 )
@ ( nths_nat @ L3
@ ( collect_nat
@ ^ [J2: nat] : ( member_nat2 @ ( plus_plus_nat @ J2 @ ( size_size_list_nat @ L ) ) @ A3 ) ) ) ) ) ).
% nths_append
thf(fact_1067_sorted__wrt__true,axiom,
! [Xs: list_nat] :
( sorted_wrt_nat
@ ^ [Uu: nat,Uv: nat] : $true
@ Xs ) ).
% sorted_wrt_true
thf(fact_1068_subset__Collect__iff,axiom,
! [B2: set_list_a,A3: set_list_a,P: list_a > $o] :
( ( ord_le8861187494160871172list_a @ B2 @ A3 )
=> ( ( ord_le8861187494160871172list_a @ B2
@ ( collect_list_a
@ ^ [X2: list_a] :
( ( member_list_a2 @ X2 @ A3 )
& ( P @ X2 ) ) ) )
= ( ! [X2: list_a] :
( ( member_list_a2 @ X2 @ B2 )
=> ( P @ X2 ) ) ) ) ) ).
% subset_Collect_iff
thf(fact_1069_subset__Collect__iff,axiom,
! [B2: set_list_nat,A3: set_list_nat,P: list_nat > $o] :
( ( ord_le6045566169113846134st_nat @ B2 @ A3 )
=> ( ( ord_le6045566169113846134st_nat @ B2
@ ( collect_list_nat
@ ^ [X2: list_nat] :
( ( member_list_nat2 @ X2 @ A3 )
& ( P @ X2 ) ) ) )
= ( ! [X2: list_nat] :
( ( member_list_nat2 @ X2 @ B2 )
=> ( P @ X2 ) ) ) ) ) ).
% subset_Collect_iff
thf(fact_1070_subset__CollectI,axiom,
! [B2: set_list_a,A3: set_list_a,Q: list_a > $o,P: list_a > $o] :
( ( ord_le8861187494160871172list_a @ B2 @ A3 )
=> ( ! [X3: list_a] :
( ( member_list_a2 @ X3 @ B2 )
=> ( ( Q @ X3 )
=> ( P @ X3 ) ) )
=> ( ord_le8861187494160871172list_a
@ ( collect_list_a
@ ^ [X2: list_a] :
( ( member_list_a2 @ X2 @ B2 )
& ( Q @ X2 ) ) )
@ ( collect_list_a
@ ^ [X2: list_a] :
( ( member_list_a2 @ X2 @ A3 )
& ( P @ X2 ) ) ) ) ) ) ).
% subset_CollectI
thf(fact_1071_subset__CollectI,axiom,
! [B2: set_list_nat,A3: set_list_nat,Q: list_nat > $o,P: list_nat > $o] :
( ( ord_le6045566169113846134st_nat @ B2 @ A3 )
=> ( ! [X3: list_nat] :
( ( member_list_nat2 @ X3 @ B2 )
=> ( ( Q @ X3 )
=> ( P @ X3 ) ) )
=> ( ord_le6045566169113846134st_nat
@ ( collect_list_nat
@ ^ [X2: list_nat] :
( ( member_list_nat2 @ X2 @ B2 )
& ( Q @ X2 ) ) )
@ ( collect_list_nat
@ ^ [X2: list_nat] :
( ( member_list_nat2 @ X2 @ A3 )
& ( P @ X2 ) ) ) ) ) ) ).
% subset_CollectI
thf(fact_1072_length__nths,axiom,
! [Xs: list_nat,I3: set_nat] :
( ( size_size_list_nat @ ( nths_nat @ Xs @ I3 ) )
= ( finite_card_nat
@ ( collect_nat
@ ^ [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_size_list_nat @ Xs ) )
& ( member_nat2 @ I4 @ I3 ) ) ) ) ) ).
% length_nths
thf(fact_1073_drop__eq__nths,axiom,
( drop_nat
= ( ^ [N3: nat,Xs3: list_nat] : ( nths_nat @ Xs3 @ ( collect_nat @ ( ord_less_eq_nat @ N3 ) ) ) ) ) ).
% drop_eq_nths
thf(fact_1074_tl__append,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( tl_nat @ ( append_nat @ Xs @ Ys ) )
= ( case_l2340614614379431832at_nat @ ( tl_nat @ Ys )
@ ^ [Z5: nat,Zs3: list_nat] : ( append_nat @ Zs3 @ Ys )
@ Xs ) ) ).
% tl_append
thf(fact_1075_sorted__wrt__rev,axiom,
! [P: nat > nat > $o,Xs: list_nat] :
( ( sorted_wrt_nat @ P @ ( rev_nat @ Xs ) )
= ( sorted_wrt_nat
@ ^ [X2: nat,Y3: nat] : ( P @ Y3 @ X2 )
@ Xs ) ) ).
% sorted_wrt_rev
thf(fact_1076_length__transpose,axiom,
! [Xs: list_list_nat] :
( ( size_s3023201423986296836st_nat @ ( transpose_nat @ Xs ) )
= ( foldr_list_nat_nat
@ ^ [Xs3: list_nat] : ( ord_max_nat @ ( size_size_list_nat @ Xs3 ) )
@ Xs
@ zero_zero_nat ) ) ).
% length_transpose
thf(fact_1077_product__lists_Osimps_I2_J,axiom,
! [Xs: list_a,Xss2: list_list_a] :
( ( product_lists_a @ ( cons_list_a @ Xs @ Xss2 ) )
= ( concat_list_a
@ ( map_a_list_list_a
@ ^ [X2: a] : ( map_list_a_list_a @ ( cons_a @ X2 ) @ ( product_lists_a @ Xss2 ) )
@ Xs ) ) ) ).
% product_lists.simps(2)
thf(fact_1078_product__lists_Osimps_I2_J,axiom,
! [Xs: list_nat,Xss2: list_list_nat] :
( ( product_lists_nat @ ( cons_list_nat @ Xs @ Xss2 ) )
= ( concat_list_nat
@ ( map_na6205611841492582150st_nat
@ ^ [X2: nat] : ( map_li7225945977422193158st_nat @ ( cons_nat @ X2 ) @ ( product_lists_nat @ Xss2 ) )
@ Xs ) ) ) ).
% product_lists.simps(2)
thf(fact_1079_list_Osize__gen_I2_J,axiom,
! [X: a > nat,X21: a,X22: list_a] :
( ( size_list_a @ X @ ( cons_a @ X21 @ X22 ) )
= ( plus_plus_nat @ ( plus_plus_nat @ ( X @ X21 ) @ ( size_list_a @ X @ X22 ) ) @ ( suc @ zero_zero_nat ) ) ) ).
% list.size_gen(2)
thf(fact_1080_list_Osize__gen_I2_J,axiom,
! [X: nat > nat,X21: nat,X22: list_nat] :
( ( size_list_nat @ X @ ( cons_nat @ X21 @ X22 ) )
= ( plus_plus_nat @ ( plus_plus_nat @ ( X @ X21 ) @ ( size_list_nat @ X @ X22 ) ) @ ( suc @ zero_zero_nat ) ) ) ).
% list.size_gen(2)
thf(fact_1081_subseqs_Osimps_I2_J,axiom,
! [X: a,Xs: list_a] :
( ( subseqs_a @ ( cons_a @ X @ Xs ) )
= ( append_list_a @ ( map_list_a_list_a @ ( cons_a @ X ) @ ( subseqs_a @ Xs ) ) @ ( subseqs_a @ Xs ) ) ) ).
% subseqs.simps(2)
thf(fact_1082_subseqs_Osimps_I2_J,axiom,
! [X: nat,Xs: list_nat] :
( ( subseqs_nat @ ( cons_nat @ X @ Xs ) )
= ( append_list_nat @ ( map_li7225945977422193158st_nat @ ( cons_nat @ X ) @ ( subseqs_nat @ Xs ) ) @ ( subseqs_nat @ Xs ) ) ) ).
% subseqs.simps(2)
thf(fact_1083_map__upt__Suc,axiom,
! [F: nat > a,N: nat] :
( ( map_nat_a @ F @ ( upt @ zero_zero_nat @ ( suc @ N ) ) )
= ( cons_a @ ( F @ zero_zero_nat )
@ ( map_nat_a
@ ^ [I4: nat] : ( F @ ( suc @ I4 ) )
@ ( upt @ zero_zero_nat @ N ) ) ) ) ).
% map_upt_Suc
thf(fact_1084_map__upt__Suc,axiom,
! [F: nat > nat,N: nat] :
( ( map_nat_nat @ F @ ( upt @ zero_zero_nat @ ( suc @ N ) ) )
= ( cons_nat @ ( F @ zero_zero_nat )
@ ( map_nat_nat
@ ^ [I4: nat] : ( F @ ( suc @ I4 ) )
@ ( upt @ zero_zero_nat @ N ) ) ) ) ).
% map_upt_Suc
thf(fact_1085_map__nth,axiom,
! [Xs: list_nat] :
( ( map_nat_nat @ ( nth_nat @ Xs ) @ ( upt @ zero_zero_nat @ ( size_size_list_nat @ Xs ) ) )
= Xs ) ).
% map_nth
thf(fact_1086_finite__lists__length__eq,axiom,
! [A3: set_nat,N: nat] :
( ( finite_finite_nat @ A3 )
=> ( finite8100373058378681591st_nat
@ ( collect_list_nat
@ ^ [Xs3: list_nat] :
( ( ord_less_eq_set_nat @ ( set_nat2 @ Xs3 ) @ A3 )
& ( ( size_size_list_nat @ Xs3 )
= N ) ) ) ) ) ).
% finite_lists_length_eq
thf(fact_1087_set__n__lists,axiom,
! [N: nat,Xs: list_nat] :
( ( set_list_nat2 @ ( n_lists_nat @ N @ Xs ) )
= ( collect_list_nat
@ ^ [Ys2: list_nat] :
( ( ( size_size_list_nat @ Ys2 )
= N )
& ( ord_less_eq_set_nat @ ( set_nat2 @ Ys2 ) @ ( set_nat2 @ Xs ) ) ) ) ) ).
% set_n_lists
thf(fact_1088_nths__Cons,axiom,
! [X: a,L: list_a,A3: set_nat] :
( ( nths_a @ ( cons_a @ X @ L ) @ A3 )
= ( append_a @ ( if_list_a @ ( member_nat2 @ zero_zero_nat @ A3 ) @ ( cons_a @ X @ nil_a ) @ nil_a )
@ ( nths_a @ L
@ ( collect_nat
@ ^ [J2: nat] : ( member_nat2 @ ( suc @ J2 ) @ A3 ) ) ) ) ) ).
% nths_Cons
thf(fact_1089_nths__Cons,axiom,
! [X: nat,L: list_nat,A3: set_nat] :
( ( nths_nat @ ( cons_nat @ X @ L ) @ A3 )
= ( append_nat @ ( if_list_nat @ ( member_nat2 @ zero_zero_nat @ A3 ) @ ( cons_nat @ X @ nil_nat ) @ nil_nat )
@ ( nths_nat @ L
@ ( collect_nat
@ ^ [J2: nat] : ( member_nat2 @ ( suc @ J2 ) @ A3 ) ) ) ) ) ).
% nths_Cons
thf(fact_1090_finite__lists__length__le,axiom,
! [A3: set_nat,N: nat] :
( ( finite_finite_nat @ A3 )
=> ( finite8100373058378681591st_nat
@ ( collect_list_nat
@ ^ [Xs3: list_nat] :
( ( ord_less_eq_set_nat @ ( set_nat2 @ Xs3 ) @ A3 )
& ( ord_less_eq_nat @ ( size_size_list_nat @ Xs3 ) @ N ) ) ) ) ) ).
% finite_lists_length_le
thf(fact_1091_atMost__upto,axiom,
( set_ord_atMost_nat
= ( ^ [N3: nat] : ( set_nat2 @ ( upt @ zero_zero_nat @ ( suc @ N3 ) ) ) ) ) ).
% atMost_upto
thf(fact_1092_transpose_Oelims,axiom,
! [X: list_list_a,Y: list_list_a] :
( ( ( transpose_a @ X )
= Y )
=> ( ( ( X = nil_list_a )
=> ( Y != nil_list_a ) )
=> ( ! [Xss: list_list_a] :
( ( X
= ( cons_list_a @ nil_a @ Xss ) )
=> ( Y
!= ( transpose_a @ Xss ) ) )
=> ~ ! [X3: a,Xs2: list_a,Xss: list_list_a] :
( ( X
= ( cons_list_a @ ( cons_a @ X3 @ Xs2 ) @ Xss ) )
=> ( Y
!= ( cons_list_a
@ ( cons_a @ X3
@ ( concat_a
@ ( map_list_a_list_a
@ ( case_list_list_a_a @ nil_a
@ ^ [H: a,T2: list_a] : ( cons_a @ H @ nil_a ) )
@ Xss ) ) )
@ ( transpose_a
@ ( cons_list_a @ Xs2
@ ( concat_list_a
@ ( map_li5729356230488778442list_a
@ ( case_l8408404631611421914st_a_a @ nil_list_a
@ ^ [H: a,T2: list_a] : ( cons_list_a @ T2 @ nil_list_a ) )
@ Xss ) ) ) ) ) ) ) ) ) ) ).
% transpose.elims
thf(fact_1093_transpose_Oelims,axiom,
! [X: list_list_nat,Y: list_list_nat] :
( ( ( transpose_nat @ X )
= Y )
=> ( ( ( X = nil_list_nat )
=> ( Y != nil_list_nat ) )
=> ( ! [Xss: list_list_nat] :
( ( X
= ( cons_list_nat @ nil_nat @ Xss ) )
=> ( Y
!= ( transpose_nat @ Xss ) ) )
=> ~ ! [X3: nat,Xs2: list_nat,Xss: list_list_nat] :
( ( X
= ( cons_list_nat @ ( cons_nat @ X3 @ Xs2 ) @ Xss ) )
=> ( Y
!= ( cons_list_nat
@ ( cons_nat @ X3
@ ( concat_nat
@ ( map_li7225945977422193158st_nat
@ ( case_l2340614614379431832at_nat @ nil_nat
@ ^ [H: nat,T2: list_nat] : ( cons_nat @ H @ nil_nat ) )
@ Xss ) ) )
@ ( transpose_nat
@ ( cons_list_nat @ Xs2
@ ( concat_list_nat
@ ( map_li960784813134754710st_nat
@ ( case_l3331202209248957608at_nat @ nil_list_nat
@ ^ [H: nat,T2: list_nat] : ( cons_list_nat @ T2 @ nil_list_nat ) )
@ Xss ) ) ) ) ) ) ) ) ) ) ).
% transpose.elims
thf(fact_1094_transpose_Osimps_I3_J,axiom,
! [X: a,Xs: list_a,Xss2: list_list_a] :
( ( transpose_a @ ( cons_list_a @ ( cons_a @ X @ Xs ) @ Xss2 ) )
= ( cons_list_a
@ ( cons_a @ X
@ ( concat_a
@ ( map_list_a_list_a
@ ( case_list_list_a_a @ nil_a
@ ^ [H: a,T2: list_a] : ( cons_a @ H @ nil_a ) )
@ Xss2 ) ) )
@ ( transpose_a
@ ( cons_list_a @ Xs
@ ( concat_list_a
@ ( map_li5729356230488778442list_a
@ ( case_l8408404631611421914st_a_a @ nil_list_a
@ ^ [H: a,T2: list_a] : ( cons_list_a @ T2 @ nil_list_a ) )
@ Xss2 ) ) ) ) ) ) ).
% transpose.simps(3)
thf(fact_1095_transpose_Osimps_I3_J,axiom,
! [X: nat,Xs: list_nat,Xss2: list_list_nat] :
( ( transpose_nat @ ( cons_list_nat @ ( cons_nat @ X @ Xs ) @ Xss2 ) )
= ( cons_list_nat
@ ( cons_nat @ X
@ ( concat_nat
@ ( map_li7225945977422193158st_nat
@ ( case_l2340614614379431832at_nat @ nil_nat
@ ^ [H: nat,T2: list_nat] : ( cons_nat @ H @ nil_nat ) )
@ Xss2 ) ) )
@ ( transpose_nat
@ ( cons_list_nat @ Xs
@ ( concat_list_nat
@ ( map_li960784813134754710st_nat
@ ( case_l3331202209248957608at_nat @ nil_list_nat
@ ^ [H: nat,T2: list_nat] : ( cons_list_nat @ T2 @ nil_list_nat ) )
@ Xss2 ) ) ) ) ) ) ).
% transpose.simps(3)
thf(fact_1096_nth__nth__transpose__sorted,axiom,
! [Xs: list_list_nat,I2: nat,J: nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ ( rev_nat @ ( map_list_nat_nat @ size_size_list_nat @ Xs ) ) )
=> ( ( ord_less_nat @ I2 @ ( size_s3023201423986296836st_nat @ ( transpose_nat @ Xs ) ) )
=> ( ( ord_less_nat @ J
@ ( size_s3023201423986296836st_nat
@ ( filter_list_nat
@ ^ [Ys2: list_nat] : ( ord_less_nat @ I2 @ ( size_size_list_nat @ Ys2 ) )
@ Xs ) ) )
=> ( ( nth_nat @ ( nth_list_nat @ ( transpose_nat @ Xs ) @ I2 ) @ J )
= ( nth_nat @ ( nth_list_nat @ Xs @ J ) @ I2 ) ) ) ) ) ).
% nth_nth_transpose_sorted
thf(fact_1097_transpose__column,axiom,
! [Xs: list_list_nat,I2: nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ ( rev_nat @ ( map_list_nat_nat @ size_size_list_nat @ Xs ) ) )
=> ( ( ord_less_nat @ I2 @ ( size_s3023201423986296836st_nat @ Xs ) )
=> ( ( map_list_nat_nat
@ ^ [Ys2: list_nat] : ( nth_nat @ Ys2 @ I2 )
@ ( filter_list_nat
@ ^ [Ys2: list_nat] : ( ord_less_nat @ I2 @ ( size_size_list_nat @ Ys2 ) )
@ ( transpose_nat @ Xs ) ) )
= ( nth_list_nat @ Xs @ I2 ) ) ) ) ).
% transpose_column
thf(fact_1098_transpose__column__length,axiom,
! [Xs: list_list_nat,I2: nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ ( rev_nat @ ( map_list_nat_nat @ size_size_list_nat @ Xs ) ) )
=> ( ( ord_less_nat @ I2 @ ( size_s3023201423986296836st_nat @ Xs ) )
=> ( ( size_s3023201423986296836st_nat
@ ( filter_list_nat
@ ^ [Ys2: list_nat] : ( ord_less_nat @ I2 @ ( size_size_list_nat @ Ys2 ) )
@ ( transpose_nat @ Xs ) ) )
= ( size_size_list_nat @ ( nth_list_nat @ Xs @ I2 ) ) ) ) ) ).
% transpose_column_length
thf(fact_1099_filter__True,axiom,
! [Xs: list_nat,P: nat > $o] :
( ! [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ Xs ) )
=> ( P @ X3 ) )
=> ( ( filter_nat @ P @ Xs )
= Xs ) ) ).
% filter_True
thf(fact_1100_filter__append,axiom,
! [P: nat > $o,Xs: list_nat,Ys: list_nat] :
( ( filter_nat @ P @ ( append_nat @ Xs @ Ys ) )
= ( append_nat @ ( filter_nat @ P @ Xs ) @ ( filter_nat @ P @ Ys ) ) ) ).
% filter_append
thf(fact_1101_set__filter,axiom,
! [P: list_a > $o,Xs: list_list_a] :
( ( set_list_a2 @ ( filter_list_a @ P @ Xs ) )
= ( collect_list_a
@ ^ [X2: list_a] :
( ( member_list_a2 @ X2 @ ( set_list_a2 @ Xs ) )
& ( P @ X2 ) ) ) ) ).
% set_filter
thf(fact_1102_set__filter,axiom,
! [P: list_nat > $o,Xs: list_list_nat] :
( ( set_list_nat2 @ ( filter_list_nat @ P @ Xs ) )
= ( collect_list_nat
@ ^ [X2: list_nat] :
( ( member_list_nat2 @ X2 @ ( set_list_nat2 @ Xs ) )
& ( P @ X2 ) ) ) ) ).
% set_filter
thf(fact_1103_set__filter,axiom,
! [P: nat > $o,Xs: list_nat] :
( ( set_nat2 @ ( filter_nat @ P @ Xs ) )
= ( collect_nat
@ ^ [X2: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Xs ) )
& ( P @ X2 ) ) ) ) ).
% set_filter
thf(fact_1104_filter__False,axiom,
! [Xs: list_nat,P: nat > $o] :
( ! [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ Xs ) )
=> ~ ( P @ X3 ) )
=> ( ( filter_nat @ P @ Xs )
= nil_nat ) ) ).
% filter_False
thf(fact_1105_distinct__map__filter,axiom,
! [F: nat > nat,Xs: list_nat,P: nat > $o] :
( ( distinct_nat @ ( map_nat_nat @ F @ Xs ) )
=> ( distinct_nat @ ( map_nat_nat @ F @ ( filter_nat @ P @ Xs ) ) ) ) ).
% distinct_map_filter
thf(fact_1106_empty__filter__conv,axiom,
! [P: nat > $o,Xs: list_nat] :
( ( nil_nat
= ( filter_nat @ P @ Xs ) )
= ( ! [X2: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Xs ) )
=> ~ ( P @ X2 ) ) ) ) ).
% empty_filter_conv
thf(fact_1107_filter__empty__conv,axiom,
! [P: nat > $o,Xs: list_nat] :
( ( ( filter_nat @ P @ Xs )
= nil_nat )
= ( ! [X2: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Xs ) )
=> ~ ( P @ X2 ) ) ) ) ).
% filter_empty_conv
thf(fact_1108_filter__is__subset,axiom,
! [P: nat > $o,Xs: list_nat] : ( ord_less_eq_set_nat @ ( set_nat2 @ ( filter_nat @ P @ Xs ) ) @ ( set_nat2 @ Xs ) ) ).
% filter_is_subset
thf(fact_1109_sum__length__filter__compl,axiom,
! [P: nat > $o,Xs: list_nat] :
( ( plus_plus_nat @ ( size_size_list_nat @ ( filter_nat @ P @ Xs ) )
@ ( size_size_list_nat
@ ( filter_nat
@ ^ [X2: nat] :
~ ( P @ X2 )
@ Xs ) ) )
= ( size_size_list_nat @ Xs ) ) ).
% sum_length_filter_compl
thf(fact_1110_sorted__same,axiom,
! [G: list_nat > nat,Xs: list_nat] :
( sorted_wrt_nat @ ord_less_eq_nat
@ ( filter_nat
@ ^ [X2: nat] :
( X2
= ( G @ Xs ) )
@ Xs ) ) ).
% sorted_same
thf(fact_1111_filter__id__conv,axiom,
! [P: nat > $o,Xs: list_nat] :
( ( ( filter_nat @ P @ Xs )
= Xs )
= ( ! [X2: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Xs ) )
=> ( P @ X2 ) ) ) ) ).
% filter_id_conv
thf(fact_1112_filter__cong,axiom,
! [Xs: list_list_nat,Ys: list_list_nat,P: list_nat > $o,Q: list_nat > $o] :
( ( Xs = Ys )
=> ( ! [X3: list_nat] :
( ( member_list_nat2 @ X3 @ ( set_list_nat2 @ Ys ) )
=> ( ( P @ X3 )
= ( Q @ X3 ) ) )
=> ( ( filter_list_nat @ P @ Xs )
= ( filter_list_nat @ Q @ Ys ) ) ) ) ).
% filter_cong
thf(fact_1113_filter__cong,axiom,
! [Xs: list_list_a,Ys: list_list_a,P: list_a > $o,Q: list_a > $o] :
( ( Xs = Ys )
=> ( ! [X3: list_a] :
( ( member_list_a2 @ X3 @ ( set_list_a2 @ Ys ) )
=> ( ( P @ X3 )
= ( Q @ X3 ) ) )
=> ( ( filter_list_a @ P @ Xs )
= ( filter_list_a @ Q @ Ys ) ) ) ) ).
% filter_cong
thf(fact_1114_filter__cong,axiom,
! [Xs: list_nat,Ys: list_nat,P: nat > $o,Q: nat > $o] :
( ( Xs = Ys )
=> ( ! [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ Ys ) )
=> ( ( P @ X3 )
= ( Q @ X3 ) ) )
=> ( ( filter_nat @ P @ Xs )
= ( filter_nat @ Q @ Ys ) ) ) ) ).
% filter_cong
thf(fact_1115_partition__in__shuffles,axiom,
! [Xs: list_nat,P: nat > $o] :
( member_list_nat2 @ Xs
@ ( shuffles_nat @ ( filter_nat @ P @ Xs )
@ ( filter_nat
@ ^ [X2: nat] :
~ ( P @ X2 )
@ Xs ) ) ) ).
% partition_in_shuffles
thf(fact_1116_partition__in__shuffles,axiom,
! [Xs: list_a,P: a > $o] :
( member_list_a2 @ Xs
@ ( shuffles_a @ ( filter_a @ P @ Xs )
@ ( filter_a
@ ^ [X2: a] :
~ ( P @ X2 )
@ Xs ) ) ) ).
% partition_in_shuffles
thf(fact_1117_distinct__filter,axiom,
! [Xs: list_nat,P: nat > $o] :
( ( distinct_nat @ Xs )
=> ( distinct_nat @ ( filter_nat @ P @ Xs ) ) ) ).
% distinct_filter
thf(fact_1118_inter__set__filter,axiom,
! [A3: set_list_nat,Xs: list_list_nat] :
( ( inf_inf_set_list_nat @ A3 @ ( set_list_nat2 @ Xs ) )
= ( set_list_nat2
@ ( filter_list_nat
@ ^ [X2: list_nat] : ( member_list_nat2 @ X2 @ A3 )
@ Xs ) ) ) ).
% inter_set_filter
thf(fact_1119_inter__set__filter,axiom,
! [A3: set_list_a,Xs: list_list_a] :
( ( inf_inf_set_list_a @ A3 @ ( set_list_a2 @ Xs ) )
= ( set_list_a2
@ ( filter_list_a
@ ^ [X2: list_a] : ( member_list_a2 @ X2 @ A3 )
@ Xs ) ) ) ).
% inter_set_filter
thf(fact_1120_inter__set__filter,axiom,
! [A3: set_nat,Xs: list_nat] :
( ( inf_inf_set_nat @ A3 @ ( set_nat2 @ Xs ) )
= ( set_nat2
@ ( filter_nat
@ ^ [X2: nat] : ( member_nat2 @ X2 @ A3 )
@ Xs ) ) ) ).
% inter_set_filter
thf(fact_1121_sorted__wrt__filter,axiom,
! [F: nat > nat > $o,Xs: list_nat,P: nat > $o] :
( ( sorted_wrt_nat @ F @ Xs )
=> ( sorted_wrt_nat @ F @ ( filter_nat @ P @ Xs ) ) ) ).
% sorted_wrt_filter
thf(fact_1122_length__filter__le,axiom,
! [P: nat > $o,Xs: list_nat] : ( ord_less_eq_nat @ ( size_size_list_nat @ ( filter_nat @ P @ Xs ) ) @ ( size_size_list_nat @ Xs ) ) ).
% length_filter_le
thf(fact_1123_filter_Osimps_I2_J,axiom,
! [P: a > $o,X: a,Xs: list_a] :
( ( ( P @ X )
=> ( ( filter_a @ P @ ( cons_a @ X @ Xs ) )
= ( cons_a @ X @ ( filter_a @ P @ Xs ) ) ) )
& ( ~ ( P @ X )
=> ( ( filter_a @ P @ ( cons_a @ X @ Xs ) )
= ( filter_a @ P @ Xs ) ) ) ) ).
% filter.simps(2)
thf(fact_1124_filter_Osimps_I2_J,axiom,
! [P: nat > $o,X: nat,Xs: list_nat] :
( ( ( P @ X )
=> ( ( filter_nat @ P @ ( cons_nat @ X @ Xs ) )
= ( cons_nat @ X @ ( filter_nat @ P @ Xs ) ) ) )
& ( ~ ( P @ X )
=> ( ( filter_nat @ P @ ( cons_nat @ X @ Xs ) )
= ( filter_nat @ P @ Xs ) ) ) ) ).
% filter.simps(2)
thf(fact_1125_filter_Osimps_I1_J,axiom,
! [P: nat > $o] :
( ( filter_nat @ P @ nil_nat )
= nil_nat ) ).
% filter.simps(1)
thf(fact_1126_filter__replicate,axiom,
! [P: nat > $o,X: nat,N: nat] :
( ( ( P @ X )
=> ( ( filter_nat @ P @ ( replicate_nat @ N @ X ) )
= ( replicate_nat @ N @ X ) ) )
& ( ~ ( P @ X )
=> ( ( filter_nat @ P @ ( replicate_nat @ N @ X ) )
= nil_nat ) ) ) ).
% filter_replicate
thf(fact_1127_replicate__length__filter,axiom,
! [X: nat,Xs: list_nat] :
( ( replicate_nat
@ ( size_size_list_nat
@ ( filter_nat
@ ( ^ [Y4: nat,Z4: nat] : ( Y4 = Z4 )
@ X )
@ Xs ) )
@ X )
= ( filter_nat
@ ( ^ [Y4: nat,Z4: nat] : ( Y4 = Z4 )
@ X )
@ Xs ) ) ).
% replicate_length_filter
thf(fact_1128_length__filter__less,axiom,
! [X: list_nat,Xs: list_list_nat,P: list_nat > $o] :
( ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
=> ( ~ ( P @ X )
=> ( ord_less_nat @ ( size_s3023201423986296836st_nat @ ( filter_list_nat @ P @ Xs ) ) @ ( size_s3023201423986296836st_nat @ Xs ) ) ) ) ).
% length_filter_less
thf(fact_1129_length__filter__less,axiom,
! [X: list_a,Xs: list_list_a,P: list_a > $o] :
( ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
=> ( ~ ( P @ X )
=> ( ord_less_nat @ ( size_s349497388124573686list_a @ ( filter_list_a @ P @ Xs ) ) @ ( size_s349497388124573686list_a @ Xs ) ) ) ) ).
% length_filter_less
thf(fact_1130_length__filter__less,axiom,
! [X: nat,Xs: list_nat,P: nat > $o] :
( ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ( ~ ( P @ X )
=> ( ord_less_nat @ ( size_size_list_nat @ ( filter_nat @ P @ Xs ) ) @ ( size_size_list_nat @ Xs ) ) ) ) ).
% length_filter_less
thf(fact_1131_filter__eq__Cons__iff,axiom,
! [P: a > $o,Ys: list_a,X: a,Xs: list_a] :
( ( ( filter_a @ P @ Ys )
= ( cons_a @ X @ Xs ) )
= ( ? [Us: list_a,Vs2: list_a] :
( ( Ys
= ( append_a @ Us @ ( cons_a @ X @ Vs2 ) ) )
& ! [X2: a] :
( ( member_a2 @ X2 @ ( set_a2 @ Us ) )
=> ~ ( P @ X2 ) )
& ( P @ X )
& ( Xs
= ( filter_a @ P @ Vs2 ) ) ) ) ) ).
% filter_eq_Cons_iff
thf(fact_1132_filter__eq__Cons__iff,axiom,
! [P: nat > $o,Ys: list_nat,X: nat,Xs: list_nat] :
( ( ( filter_nat @ P @ Ys )
= ( cons_nat @ X @ Xs ) )
= ( ? [Us: list_nat,Vs2: list_nat] :
( ( Ys
= ( append_nat @ Us @ ( cons_nat @ X @ Vs2 ) ) )
& ! [X2: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Us ) )
=> ~ ( P @ X2 ) )
& ( P @ X )
& ( Xs
= ( filter_nat @ P @ Vs2 ) ) ) ) ) ).
% filter_eq_Cons_iff
thf(fact_1133_Cons__eq__filter__iff,axiom,
! [X: a,Xs: list_a,P: a > $o,Ys: list_a] :
( ( ( cons_a @ X @ Xs )
= ( filter_a @ P @ Ys ) )
= ( ? [Us: list_a,Vs2: list_a] :
( ( Ys
= ( append_a @ Us @ ( cons_a @ X @ Vs2 ) ) )
& ! [X2: a] :
( ( member_a2 @ X2 @ ( set_a2 @ Us ) )
=> ~ ( P @ X2 ) )
& ( P @ X )
& ( Xs
= ( filter_a @ P @ Vs2 ) ) ) ) ) ).
% Cons_eq_filter_iff
thf(fact_1134_Cons__eq__filter__iff,axiom,
! [X: nat,Xs: list_nat,P: nat > $o,Ys: list_nat] :
( ( ( cons_nat @ X @ Xs )
= ( filter_nat @ P @ Ys ) )
= ( ? [Us: list_nat,Vs2: list_nat] :
( ( Ys
= ( append_nat @ Us @ ( cons_nat @ X @ Vs2 ) ) )
& ! [X2: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Us ) )
=> ~ ( P @ X2 ) )
& ( P @ X )
& ( Xs
= ( filter_nat @ P @ Vs2 ) ) ) ) ) ).
% Cons_eq_filter_iff
thf(fact_1135_filter__eq__ConsD,axiom,
! [P: a > $o,Ys: list_a,X: a,Xs: list_a] :
( ( ( filter_a @ P @ Ys )
= ( cons_a @ X @ Xs ) )
=> ? [Us3: list_a,Vs3: list_a] :
( ( Ys
= ( append_a @ Us3 @ ( cons_a @ X @ Vs3 ) ) )
& ! [X4: a] :
( ( member_a2 @ X4 @ ( set_a2 @ Us3 ) )
=> ~ ( P @ X4 ) )
& ( P @ X )
& ( Xs
= ( filter_a @ P @ Vs3 ) ) ) ) ).
% filter_eq_ConsD
thf(fact_1136_filter__eq__ConsD,axiom,
! [P: nat > $o,Ys: list_nat,X: nat,Xs: list_nat] :
( ( ( filter_nat @ P @ Ys )
= ( cons_nat @ X @ Xs ) )
=> ? [Us3: list_nat,Vs3: list_nat] :
( ( Ys
= ( append_nat @ Us3 @ ( cons_nat @ X @ Vs3 ) ) )
& ! [X4: nat] :
( ( member_nat2 @ X4 @ ( set_nat2 @ Us3 ) )
=> ~ ( P @ X4 ) )
& ( P @ X )
& ( Xs
= ( filter_nat @ P @ Vs3 ) ) ) ) ).
% filter_eq_ConsD
thf(fact_1137_Cons__eq__filterD,axiom,
! [X: a,Xs: list_a,P: a > $o,Ys: list_a] :
( ( ( cons_a @ X @ Xs )
= ( filter_a @ P @ Ys ) )
=> ? [Us3: list_a,Vs3: list_a] :
( ( Ys
= ( append_a @ Us3 @ ( cons_a @ X @ Vs3 ) ) )
& ! [X4: a] :
( ( member_a2 @ X4 @ ( set_a2 @ Us3 ) )
=> ~ ( P @ X4 ) )
& ( P @ X )
& ( Xs
= ( filter_a @ P @ Vs3 ) ) ) ) ).
% Cons_eq_filterD
thf(fact_1138_Cons__eq__filterD,axiom,
! [X: nat,Xs: list_nat,P: nat > $o,Ys: list_nat] :
( ( ( cons_nat @ X @ Xs )
= ( filter_nat @ P @ Ys ) )
=> ? [Us3: list_nat,Vs3: list_nat] :
( ( Ys
= ( append_nat @ Us3 @ ( cons_nat @ X @ Vs3 ) ) )
& ! [X4: nat] :
( ( member_nat2 @ X4 @ ( set_nat2 @ Us3 ) )
=> ~ ( P @ X4 ) )
& ( P @ X )
& ( Xs
= ( filter_nat @ P @ Vs3 ) ) ) ) ).
% Cons_eq_filterD
thf(fact_1139_sorted__filter,axiom,
! [F: nat > nat,Xs: list_nat,P: nat > $o] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ ( map_nat_nat @ F @ Xs ) )
=> ( sorted_wrt_nat @ ord_less_eq_nat @ ( map_nat_nat @ F @ ( filter_nat @ P @ Xs ) ) ) ) ).
% sorted_filter
thf(fact_1140_sorted__map__same,axiom,
! [F: nat > nat,G: list_nat > nat,Xs: list_nat] :
( sorted_wrt_nat @ ord_less_eq_nat
@ ( map_nat_nat @ F
@ ( filter_nat
@ ^ [X2: nat] :
( ( F @ X2 )
= ( G @ Xs ) )
@ Xs ) ) ) ).
% sorted_map_same
thf(fact_1141_length__filter__conv__card,axiom,
! [P3: nat > $o,Xs: list_nat] :
( ( size_size_list_nat @ ( filter_nat @ P3 @ Xs ) )
= ( finite_card_nat
@ ( collect_nat
@ ^ [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_size_list_nat @ Xs ) )
& ( P3 @ ( nth_nat @ Xs @ I4 ) ) ) ) ) ) ).
% length_filter_conv_card
thf(fact_1142_filter__in__nths,axiom,
! [Xs: list_list_nat,S2: set_nat] :
( ( distinct_list_nat @ Xs )
=> ( ( filter_list_nat
@ ^ [X2: list_nat] : ( member_list_nat2 @ X2 @ ( set_list_nat2 @ ( nths_list_nat @ Xs @ S2 ) ) )
@ Xs )
= ( nths_list_nat @ Xs @ S2 ) ) ) ).
% filter_in_nths
thf(fact_1143_filter__in__nths,axiom,
! [Xs: list_list_a,S2: set_nat] :
( ( distinct_list_a @ Xs )
=> ( ( filter_list_a
@ ^ [X2: list_a] : ( member_list_a2 @ X2 @ ( set_list_a2 @ ( nths_list_a @ Xs @ S2 ) ) )
@ Xs )
= ( nths_list_a @ Xs @ S2 ) ) ) ).
% filter_in_nths
thf(fact_1144_filter__in__nths,axiom,
! [Xs: list_nat,S2: set_nat] :
( ( distinct_nat @ Xs )
=> ( ( filter_nat
@ ^ [X2: nat] : ( member_nat2 @ X2 @ ( set_nat2 @ ( nths_nat @ Xs @ S2 ) ) )
@ Xs )
= ( nths_nat @ Xs @ S2 ) ) ) ).
% filter_in_nths
thf(fact_1145_filter__shuffles__disjoint1_I2_J,axiom,
! [Xs: list_list_nat,Ys: list_list_nat,Zs: list_list_nat] :
( ( ( inf_inf_set_list_nat @ ( set_list_nat2 @ Xs ) @ ( set_list_nat2 @ Ys ) )
= bot_bot_set_list_nat )
=> ( ( member_list_list_nat @ Zs @ ( shuffles_list_nat @ Xs @ Ys ) )
=> ( ( filter_list_nat
@ ^ [X2: list_nat] :
~ ( member_list_nat2 @ X2 @ ( set_list_nat2 @ Xs ) )
@ Zs )
= Ys ) ) ) ).
% filter_shuffles_disjoint1(2)
thf(fact_1146_filter__shuffles__disjoint1_I2_J,axiom,
! [Xs: list_list_a,Ys: list_list_a,Zs: list_list_a] :
( ( ( inf_inf_set_list_a @ ( set_list_a2 @ Xs ) @ ( set_list_a2 @ Ys ) )
= bot_bot_set_list_a )
=> ( ( member_list_list_a @ Zs @ ( shuffles_list_a @ Xs @ Ys ) )
=> ( ( filter_list_a
@ ^ [X2: list_a] :
~ ( member_list_a2 @ X2 @ ( set_list_a2 @ Xs ) )
@ Zs )
= Ys ) ) ) ).
% filter_shuffles_disjoint1(2)
thf(fact_1147_filter__shuffles__disjoint1_I2_J,axiom,
! [Xs: list_a,Ys: list_a,Zs: list_a] :
( ( ( inf_inf_set_a @ ( set_a2 @ Xs ) @ ( set_a2 @ Ys ) )
= bot_bot_set_a )
=> ( ( member_list_a2 @ Zs @ ( shuffles_a @ Xs @ Ys ) )
=> ( ( filter_a
@ ^ [X2: a] :
~ ( member_a2 @ X2 @ ( set_a2 @ Xs ) )
@ Zs )
= Ys ) ) ) ).
% filter_shuffles_disjoint1(2)
thf(fact_1148_filter__shuffles__disjoint1_I2_J,axiom,
! [Xs: list_nat,Ys: list_nat,Zs: list_nat] :
( ( ( inf_inf_set_nat @ ( set_nat2 @ Xs ) @ ( set_nat2 @ Ys ) )
= bot_bot_set_nat )
=> ( ( member_list_nat2 @ Zs @ ( shuffles_nat @ Xs @ Ys ) )
=> ( ( filter_nat
@ ^ [X2: nat] :
~ ( member_nat2 @ X2 @ ( set_nat2 @ Xs ) )
@ Zs )
= Ys ) ) ) ).
% filter_shuffles_disjoint1(2)
thf(fact_1149_filter__shuffles__disjoint1_I1_J,axiom,
! [Xs: list_list_nat,Ys: list_list_nat,Zs: list_list_nat] :
( ( ( inf_inf_set_list_nat @ ( set_list_nat2 @ Xs ) @ ( set_list_nat2 @ Ys ) )
= bot_bot_set_list_nat )
=> ( ( member_list_list_nat @ Zs @ ( shuffles_list_nat @ Xs @ Ys ) )
=> ( ( filter_list_nat
@ ^ [X2: list_nat] : ( member_list_nat2 @ X2 @ ( set_list_nat2 @ Xs ) )
@ Zs )
= Xs ) ) ) ).
% filter_shuffles_disjoint1(1)
thf(fact_1150_filter__shuffles__disjoint1_I1_J,axiom,
! [Xs: list_list_a,Ys: list_list_a,Zs: list_list_a] :
( ( ( inf_inf_set_list_a @ ( set_list_a2 @ Xs ) @ ( set_list_a2 @ Ys ) )
= bot_bot_set_list_a )
=> ( ( member_list_list_a @ Zs @ ( shuffles_list_a @ Xs @ Ys ) )
=> ( ( filter_list_a
@ ^ [X2: list_a] : ( member_list_a2 @ X2 @ ( set_list_a2 @ Xs ) )
@ Zs )
= Xs ) ) ) ).
% filter_shuffles_disjoint1(1)
thf(fact_1151_filter__shuffles__disjoint1_I1_J,axiom,
! [Xs: list_a,Ys: list_a,Zs: list_a] :
( ( ( inf_inf_set_a @ ( set_a2 @ Xs ) @ ( set_a2 @ Ys ) )
= bot_bot_set_a )
=> ( ( member_list_a2 @ Zs @ ( shuffles_a @ Xs @ Ys ) )
=> ( ( filter_a
@ ^ [X2: a] : ( member_a2 @ X2 @ ( set_a2 @ Xs ) )
@ Zs )
= Xs ) ) ) ).
% filter_shuffles_disjoint1(1)
thf(fact_1152_filter__shuffles__disjoint1_I1_J,axiom,
! [Xs: list_nat,Ys: list_nat,Zs: list_nat] :
( ( ( inf_inf_set_nat @ ( set_nat2 @ Xs ) @ ( set_nat2 @ Ys ) )
= bot_bot_set_nat )
=> ( ( member_list_nat2 @ Zs @ ( shuffles_nat @ Xs @ Ys ) )
=> ( ( filter_nat
@ ^ [X2: nat] : ( member_nat2 @ X2 @ ( set_nat2 @ Xs ) )
@ Zs )
= Xs ) ) ) ).
% filter_shuffles_disjoint1(1)
thf(fact_1153_filter__shuffles__disjoint2_I2_J,axiom,
! [Xs: list_list_nat,Ys: list_list_nat,Zs: list_list_nat] :
( ( ( inf_inf_set_list_nat @ ( set_list_nat2 @ Xs ) @ ( set_list_nat2 @ Ys ) )
= bot_bot_set_list_nat )
=> ( ( member_list_list_nat @ Zs @ ( shuffles_list_nat @ Xs @ Ys ) )
=> ( ( filter_list_nat
@ ^ [X2: list_nat] :
~ ( member_list_nat2 @ X2 @ ( set_list_nat2 @ Ys ) )
@ Zs )
= Xs ) ) ) ).
% filter_shuffles_disjoint2(2)
thf(fact_1154_filter__shuffles__disjoint2_I2_J,axiom,
! [Xs: list_list_a,Ys: list_list_a,Zs: list_list_a] :
( ( ( inf_inf_set_list_a @ ( set_list_a2 @ Xs ) @ ( set_list_a2 @ Ys ) )
= bot_bot_set_list_a )
=> ( ( member_list_list_a @ Zs @ ( shuffles_list_a @ Xs @ Ys ) )
=> ( ( filter_list_a
@ ^ [X2: list_a] :
~ ( member_list_a2 @ X2 @ ( set_list_a2 @ Ys ) )
@ Zs )
= Xs ) ) ) ).
% filter_shuffles_disjoint2(2)
thf(fact_1155_filter__shuffles__disjoint2_I2_J,axiom,
! [Xs: list_a,Ys: list_a,Zs: list_a] :
( ( ( inf_inf_set_a @ ( set_a2 @ Xs ) @ ( set_a2 @ Ys ) )
= bot_bot_set_a )
=> ( ( member_list_a2 @ Zs @ ( shuffles_a @ Xs @ Ys ) )
=> ( ( filter_a
@ ^ [X2: a] :
~ ( member_a2 @ X2 @ ( set_a2 @ Ys ) )
@ Zs )
= Xs ) ) ) ).
% filter_shuffles_disjoint2(2)
thf(fact_1156_filter__shuffles__disjoint2_I2_J,axiom,
! [Xs: list_nat,Ys: list_nat,Zs: list_nat] :
( ( ( inf_inf_set_nat @ ( set_nat2 @ Xs ) @ ( set_nat2 @ Ys ) )
= bot_bot_set_nat )
=> ( ( member_list_nat2 @ Zs @ ( shuffles_nat @ Xs @ Ys ) )
=> ( ( filter_nat
@ ^ [X2: nat] :
~ ( member_nat2 @ X2 @ ( set_nat2 @ Ys ) )
@ Zs )
= Xs ) ) ) ).
% filter_shuffles_disjoint2(2)
thf(fact_1157_filter__shuffles__disjoint2_I1_J,axiom,
! [Xs: list_list_nat,Ys: list_list_nat,Zs: list_list_nat] :
( ( ( inf_inf_set_list_nat @ ( set_list_nat2 @ Xs ) @ ( set_list_nat2 @ Ys ) )
= bot_bot_set_list_nat )
=> ( ( member_list_list_nat @ Zs @ ( shuffles_list_nat @ Xs @ Ys ) )
=> ( ( filter_list_nat
@ ^ [X2: list_nat] : ( member_list_nat2 @ X2 @ ( set_list_nat2 @ Ys ) )
@ Zs )
= Ys ) ) ) ).
% filter_shuffles_disjoint2(1)
thf(fact_1158_filter__shuffles__disjoint2_I1_J,axiom,
! [Xs: list_list_a,Ys: list_list_a,Zs: list_list_a] :
( ( ( inf_inf_set_list_a @ ( set_list_a2 @ Xs ) @ ( set_list_a2 @ Ys ) )
= bot_bot_set_list_a )
=> ( ( member_list_list_a @ Zs @ ( shuffles_list_a @ Xs @ Ys ) )
=> ( ( filter_list_a
@ ^ [X2: list_a] : ( member_list_a2 @ X2 @ ( set_list_a2 @ Ys ) )
@ Zs )
= Ys ) ) ) ).
% filter_shuffles_disjoint2(1)
thf(fact_1159_filter__shuffles__disjoint2_I1_J,axiom,
! [Xs: list_a,Ys: list_a,Zs: list_a] :
( ( ( inf_inf_set_a @ ( set_a2 @ Xs ) @ ( set_a2 @ Ys ) )
= bot_bot_set_a )
=> ( ( member_list_a2 @ Zs @ ( shuffles_a @ Xs @ Ys ) )
=> ( ( filter_a
@ ^ [X2: a] : ( member_a2 @ X2 @ ( set_a2 @ Ys ) )
@ Zs )
= Ys ) ) ) ).
% filter_shuffles_disjoint2(1)
thf(fact_1160_filter__shuffles__disjoint2_I1_J,axiom,
! [Xs: list_nat,Ys: list_nat,Zs: list_nat] :
( ( ( inf_inf_set_nat @ ( set_nat2 @ Xs ) @ ( set_nat2 @ Ys ) )
= bot_bot_set_nat )
=> ( ( member_list_nat2 @ Zs @ ( shuffles_nat @ Xs @ Ys ) )
=> ( ( filter_nat
@ ^ [X2: nat] : ( member_nat2 @ X2 @ ( set_nat2 @ Ys ) )
@ Zs )
= Ys ) ) ) ).
% filter_shuffles_disjoint2(1)
thf(fact_1161_filter__eq__nths,axiom,
( filter_nat
= ( ^ [P2: nat > $o,Xs3: list_nat] :
( nths_nat @ Xs3
@ ( collect_nat
@ ^ [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_size_list_nat @ Xs3 ) )
& ( P2 @ ( nth_nat @ Xs3 @ I4 ) ) ) ) ) ) ) ).
% filter_eq_nths
thf(fact_1162_transpose__aux__max,axiom,
! [Xs: list_nat,Xss2: list_list_nat] :
( ( ord_max_nat @ ( suc @ ( size_size_list_nat @ Xs ) )
@ ( foldr_list_nat_nat
@ ^ [Xs3: list_nat] : ( ord_max_nat @ ( size_size_list_nat @ Xs3 ) )
@ Xss2
@ zero_zero_nat ) )
= ( suc
@ ( ord_max_nat @ ( size_size_list_nat @ Xs )
@ ( foldr_list_nat_nat
@ ^ [X2: list_nat] : ( ord_max_nat @ ( minus_minus_nat @ ( size_size_list_nat @ X2 ) @ ( suc @ zero_zero_nat ) ) )
@ ( filter_list_nat
@ ^ [Ys2: list_nat] : ( Ys2 != nil_nat )
@ Xss2 )
@ zero_zero_nat ) ) ) ) ).
% transpose_aux_max
thf(fact_1163_distinct__length__filter,axiom,
! [Xs: list_list_nat,P: list_nat > $o] :
( ( distinct_list_nat @ Xs )
=> ( ( size_s3023201423986296836st_nat @ ( filter_list_nat @ P @ Xs ) )
= ( finite_card_list_nat @ ( inf_inf_set_list_nat @ ( collect_list_nat @ P ) @ ( set_list_nat2 @ Xs ) ) ) ) ) ).
% distinct_length_filter
thf(fact_1164_distinct__length__filter,axiom,
! [Xs: list_nat,P: nat > $o] :
( ( distinct_nat @ Xs )
=> ( ( size_size_list_nat @ ( filter_nat @ P @ Xs ) )
= ( finite_card_nat @ ( inf_inf_set_nat @ ( collect_nat @ P ) @ ( set_nat2 @ Xs ) ) ) ) ) ).
% distinct_length_filter
thf(fact_1165_transpose__max__length,axiom,
! [Xs: list_list_nat] :
( ( foldr_list_nat_nat
@ ^ [Xs3: list_nat] : ( ord_max_nat @ ( size_size_list_nat @ Xs3 ) )
@ ( transpose_nat @ Xs )
@ zero_zero_nat )
= ( size_s3023201423986296836st_nat
@ ( filter_list_nat
@ ^ [X2: list_nat] : ( X2 != nil_nat )
@ Xs ) ) ) ).
% transpose_max_length
thf(fact_1166_transpose__aux__filter__tail,axiom,
! [Xss2: list_list_nat] :
( ( concat_list_nat
@ ( map_li960784813134754710st_nat
@ ( case_l3331202209248957608at_nat @ nil_list_nat
@ ^ [H: nat,T2: list_nat] : ( cons_list_nat @ T2 @ nil_list_nat ) )
@ Xss2 ) )
= ( map_li7225945977422193158st_nat @ tl_nat
@ ( filter_list_nat
@ ^ [Ys2: list_nat] : ( Ys2 != nil_nat )
@ Xss2 ) ) ) ).
% transpose_aux_filter_tail
thf(fact_1167_transpose__aux__filter__head,axiom,
! [Xss2: list_list_a] :
( ( concat_a
@ ( map_list_a_list_a
@ ( case_list_list_a_a @ nil_a
@ ^ [H: a,T2: list_a] : ( cons_a @ H @ nil_a ) )
@ Xss2 ) )
= ( map_list_a_a @ hd_a
@ ( filter_list_a
@ ^ [Ys2: list_a] : ( Ys2 != nil_a )
@ Xss2 ) ) ) ).
% transpose_aux_filter_head
thf(fact_1168_transpose__aux__filter__head,axiom,
! [Xss2: list_list_nat] :
( ( concat_nat
@ ( map_li7225945977422193158st_nat
@ ( case_l2340614614379431832at_nat @ nil_nat
@ ^ [H: nat,T2: list_nat] : ( cons_nat @ H @ nil_nat ) )
@ Xss2 ) )
= ( map_list_nat_nat @ hd_nat
@ ( filter_list_nat
@ ^ [Ys2: list_nat] : ( Ys2 != nil_nat )
@ Xss2 ) ) ) ).
% transpose_aux_filter_head
thf(fact_1169_nth__transpose,axiom,
! [I2: nat,Xs: list_list_nat] :
( ( ord_less_nat @ I2 @ ( size_s3023201423986296836st_nat @ ( transpose_nat @ Xs ) ) )
=> ( ( nth_list_nat @ ( transpose_nat @ Xs ) @ I2 )
= ( map_list_nat_nat
@ ^ [Xs3: list_nat] : ( nth_nat @ Xs3 @ I2 )
@ ( filter_list_nat
@ ^ [Ys2: list_nat] : ( ord_less_nat @ I2 @ ( size_size_list_nat @ Ys2 ) )
@ Xs ) ) ) ) ).
% nth_transpose
thf(fact_1170_transpose_Opsimps_I3_J,axiom,
! [X: a,Xs: list_a,Xss2: list_list_a] :
( ( accp_list_list_a @ transpose_rel_a @ ( cons_list_a @ ( cons_a @ X @ Xs ) @ Xss2 ) )
=> ( ( transpose_a @ ( cons_list_a @ ( cons_a @ X @ Xs ) @ Xss2 ) )
= ( cons_list_a
@ ( cons_a @ X
@ ( concat_a
@ ( map_list_a_list_a
@ ( case_list_list_a_a @ nil_a
@ ^ [H: a,T2: list_a] : ( cons_a @ H @ nil_a ) )
@ Xss2 ) ) )
@ ( transpose_a
@ ( cons_list_a @ Xs
@ ( concat_list_a
@ ( map_li5729356230488778442list_a
@ ( case_l8408404631611421914st_a_a @ nil_list_a
@ ^ [H: a,T2: list_a] : ( cons_list_a @ T2 @ nil_list_a ) )
@ Xss2 ) ) ) ) ) ) ) ).
% transpose.psimps(3)
thf(fact_1171_transpose_Opsimps_I3_J,axiom,
! [X: nat,Xs: list_nat,Xss2: list_list_nat] :
( ( accp_list_list_nat @ transpose_rel_nat @ ( cons_list_nat @ ( cons_nat @ X @ Xs ) @ Xss2 ) )
=> ( ( transpose_nat @ ( cons_list_nat @ ( cons_nat @ X @ Xs ) @ Xss2 ) )
= ( cons_list_nat
@ ( cons_nat @ X
@ ( concat_nat
@ ( map_li7225945977422193158st_nat
@ ( case_l2340614614379431832at_nat @ nil_nat
@ ^ [H: nat,T2: list_nat] : ( cons_nat @ H @ nil_nat ) )
@ Xss2 ) ) )
@ ( transpose_nat
@ ( cons_list_nat @ Xs
@ ( concat_list_nat
@ ( map_li960784813134754710st_nat
@ ( case_l3331202209248957608at_nat @ nil_list_nat
@ ^ [H: nat,T2: list_nat] : ( cons_list_nat @ T2 @ nil_list_nat ) )
@ Xss2 ) ) ) ) ) ) ) ).
% transpose.psimps(3)
thf(fact_1172_transpose__transpose,axiom,
! [Xs: list_list_nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ ( rev_nat @ ( map_list_nat_nat @ size_size_list_nat @ Xs ) ) )
=> ( ( transpose_nat @ ( transpose_nat @ Xs ) )
= ( takeWhile_list_nat
@ ^ [X2: list_nat] : ( X2 != nil_nat )
@ Xs ) ) ) ).
% transpose_transpose
thf(fact_1173_takeWhile__eq__all__conv,axiom,
! [P: nat > $o,Xs: list_nat] :
( ( ( takeWhile_nat @ P @ Xs )
= Xs )
= ( ! [X2: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Xs ) )
=> ( P @ X2 ) ) ) ) ).
% takeWhile_eq_all_conv
thf(fact_1174_takeWhile__append1,axiom,
! [X: list_nat,Xs: list_list_nat,P: list_nat > $o,Ys: list_list_nat] :
( ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
=> ( ~ ( P @ X )
=> ( ( takeWhile_list_nat @ P @ ( append_list_nat @ Xs @ Ys ) )
= ( takeWhile_list_nat @ P @ Xs ) ) ) ) ).
% takeWhile_append1
thf(fact_1175_takeWhile__append1,axiom,
! [X: list_a,Xs: list_list_a,P: list_a > $o,Ys: list_list_a] :
( ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
=> ( ~ ( P @ X )
=> ( ( takeWhile_list_a @ P @ ( append_list_a @ Xs @ Ys ) )
= ( takeWhile_list_a @ P @ Xs ) ) ) ) ).
% takeWhile_append1
thf(fact_1176_takeWhile__append1,axiom,
! [X: nat,Xs: list_nat,P: nat > $o,Ys: list_nat] :
( ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ( ~ ( P @ X )
=> ( ( takeWhile_nat @ P @ ( append_nat @ Xs @ Ys ) )
= ( takeWhile_nat @ P @ Xs ) ) ) ) ).
% takeWhile_append1
thf(fact_1177_takeWhile__append2,axiom,
! [Xs: list_list_nat,P: list_nat > $o,Ys: list_list_nat] :
( ! [X3: list_nat] :
( ( member_list_nat2 @ X3 @ ( set_list_nat2 @ Xs ) )
=> ( P @ X3 ) )
=> ( ( takeWhile_list_nat @ P @ ( append_list_nat @ Xs @ Ys ) )
= ( append_list_nat @ Xs @ ( takeWhile_list_nat @ P @ Ys ) ) ) ) ).
% takeWhile_append2
thf(fact_1178_takeWhile__append2,axiom,
! [Xs: list_list_a,P: list_a > $o,Ys: list_list_a] :
( ! [X3: list_a] :
( ( member_list_a2 @ X3 @ ( set_list_a2 @ Xs ) )
=> ( P @ X3 ) )
=> ( ( takeWhile_list_a @ P @ ( append_list_a @ Xs @ Ys ) )
= ( append_list_a @ Xs @ ( takeWhile_list_a @ P @ Ys ) ) ) ) ).
% takeWhile_append2
thf(fact_1179_takeWhile__append2,axiom,
! [Xs: list_nat,P: nat > $o,Ys: list_nat] :
( ! [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ Xs ) )
=> ( P @ X3 ) )
=> ( ( takeWhile_nat @ P @ ( append_nat @ Xs @ Ys ) )
= ( append_nat @ Xs @ ( takeWhile_nat @ P @ Ys ) ) ) ) ).
% takeWhile_append2
thf(fact_1180_takeWhile__replicate,axiom,
! [P: nat > $o,X: nat,N: nat] :
( ( ( P @ X )
=> ( ( takeWhile_nat @ P @ ( replicate_nat @ N @ X ) )
= ( replicate_nat @ N @ X ) ) )
& ( ~ ( P @ X )
=> ( ( takeWhile_nat @ P @ ( replicate_nat @ N @ X ) )
= nil_nat ) ) ) ).
% takeWhile_replicate
thf(fact_1181_takeWhile__eq__Nil__iff,axiom,
! [P: nat > $o,Xs: list_nat] :
( ( ( takeWhile_nat @ P @ Xs )
= nil_nat )
= ( ( Xs = nil_nat )
| ~ ( P @ ( hd_nat @ Xs ) ) ) ) ).
% takeWhile_eq_Nil_iff
thf(fact_1182_transpose_Opsimps_I2_J,axiom,
! [Xss2: list_list_nat] :
( ( accp_list_list_nat @ transpose_rel_nat @ ( cons_list_nat @ nil_nat @ Xss2 ) )
=> ( ( transpose_nat @ ( cons_list_nat @ nil_nat @ Xss2 ) )
= ( transpose_nat @ Xss2 ) ) ) ).
% transpose.psimps(2)
thf(fact_1183_takeWhile_Osimps_I1_J,axiom,
! [P: nat > $o] :
( ( takeWhile_nat @ P @ nil_nat )
= nil_nat ) ).
% takeWhile.simps(1)
thf(fact_1184_takeWhile__eq__take,axiom,
( takeWhile_nat
= ( ^ [P2: nat > $o,Xs3: list_nat] : ( take_nat @ ( size_size_list_nat @ ( takeWhile_nat @ P2 @ Xs3 ) ) @ Xs3 ) ) ) ).
% takeWhile_eq_take
thf(fact_1185_sorted__takeWhile,axiom,
! [Xs: list_nat,P: nat > $o] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ Xs )
=> ( sorted_wrt_nat @ ord_less_eq_nat @ ( takeWhile_nat @ P @ Xs ) ) ) ).
% sorted_takeWhile
thf(fact_1186_takeWhile__tail,axiom,
! [P: a > $o,X: a,Xs: list_a,L: list_a] :
( ~ ( P @ X )
=> ( ( takeWhile_a @ P @ ( append_a @ Xs @ ( cons_a @ X @ L ) ) )
= ( takeWhile_a @ P @ Xs ) ) ) ).
% takeWhile_tail
thf(fact_1187_takeWhile__tail,axiom,
! [P: nat > $o,X: nat,Xs: list_nat,L: list_nat] :
( ~ ( P @ X )
=> ( ( takeWhile_nat @ P @ ( append_nat @ Xs @ ( cons_nat @ X @ L ) ) )
= ( takeWhile_nat @ P @ Xs ) ) ) ).
% takeWhile_tail
thf(fact_1188_length__takeWhile__le,axiom,
! [P: nat > $o,Xs: list_nat] : ( ord_less_eq_nat @ ( size_size_list_nat @ ( takeWhile_nat @ P @ Xs ) ) @ ( size_size_list_nat @ Xs ) ) ).
% length_takeWhile_le
thf(fact_1189_takeWhile_Osimps_I2_J,axiom,
! [P: a > $o,X: a,Xs: list_a] :
( ( ( P @ X )
=> ( ( takeWhile_a @ P @ ( cons_a @ X @ Xs ) )
= ( cons_a @ X @ ( takeWhile_a @ P @ Xs ) ) ) )
& ( ~ ( P @ X )
=> ( ( takeWhile_a @ P @ ( cons_a @ X @ Xs ) )
= nil_a ) ) ) ).
% takeWhile.simps(2)
thf(fact_1190_takeWhile_Osimps_I2_J,axiom,
! [P: nat > $o,X: nat,Xs: list_nat] :
( ( ( P @ X )
=> ( ( takeWhile_nat @ P @ ( cons_nat @ X @ Xs ) )
= ( cons_nat @ X @ ( takeWhile_nat @ P @ Xs ) ) ) )
& ( ~ ( P @ X )
=> ( ( takeWhile_nat @ P @ ( cons_nat @ X @ Xs ) )
= nil_nat ) ) ) ).
% takeWhile.simps(2)
thf(fact_1191_distinct__takeWhile,axiom,
! [Xs: list_nat,P: nat > $o] :
( ( distinct_nat @ Xs )
=> ( distinct_nat @ ( takeWhile_nat @ P @ Xs ) ) ) ).
% distinct_takeWhile
thf(fact_1192_set__takeWhileD,axiom,
! [X: list_nat,P: list_nat > $o,Xs: list_list_nat] :
( ( member_list_nat2 @ X @ ( set_list_nat2 @ ( takeWhile_list_nat @ P @ Xs ) ) )
=> ( ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
& ( P @ X ) ) ) ).
% set_takeWhileD
thf(fact_1193_set__takeWhileD,axiom,
! [X: list_a,P: list_a > $o,Xs: list_list_a] :
( ( member_list_a2 @ X @ ( set_list_a2 @ ( takeWhile_list_a @ P @ Xs ) ) )
=> ( ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
& ( P @ X ) ) ) ).
% set_takeWhileD
thf(fact_1194_set__takeWhileD,axiom,
! [X: nat,P: nat > $o,Xs: list_nat] :
( ( member_nat2 @ X @ ( set_nat2 @ ( takeWhile_nat @ P @ Xs ) ) )
=> ( ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
& ( P @ X ) ) ) ).
% set_takeWhileD
thf(fact_1195_takeWhile__cong,axiom,
! [L: list_list_nat,K: list_list_nat,P: list_nat > $o,Q: list_nat > $o] :
( ( L = K )
=> ( ! [X3: list_nat] :
( ( member_list_nat2 @ X3 @ ( set_list_nat2 @ L ) )
=> ( ( P @ X3 )
= ( Q @ X3 ) ) )
=> ( ( takeWhile_list_nat @ P @ L )
= ( takeWhile_list_nat @ Q @ K ) ) ) ) ).
% takeWhile_cong
thf(fact_1196_takeWhile__cong,axiom,
! [L: list_list_a,K: list_list_a,P: list_a > $o,Q: list_a > $o] :
( ( L = K )
=> ( ! [X3: list_a] :
( ( member_list_a2 @ X3 @ ( set_list_a2 @ L ) )
=> ( ( P @ X3 )
= ( Q @ X3 ) ) )
=> ( ( takeWhile_list_a @ P @ L )
= ( takeWhile_list_a @ Q @ K ) ) ) ) ).
% takeWhile_cong
thf(fact_1197_takeWhile__cong,axiom,
! [L: list_nat,K: list_nat,P: nat > $o,Q: nat > $o] :
( ( L = K )
=> ( ! [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ L ) )
=> ( ( P @ X3 )
= ( Q @ X3 ) ) )
=> ( ( takeWhile_nat @ P @ L )
= ( takeWhile_nat @ Q @ K ) ) ) ) ).
% takeWhile_cong
thf(fact_1198_nth__length__takeWhile,axiom,
! [P: nat > $o,Xs: list_nat] :
( ( ord_less_nat @ ( size_size_list_nat @ ( takeWhile_nat @ P @ Xs ) ) @ ( size_size_list_nat @ Xs ) )
=> ~ ( P @ ( nth_nat @ Xs @ ( size_size_list_nat @ ( takeWhile_nat @ P @ Xs ) ) ) ) ) ).
% nth_length_takeWhile
thf(fact_1199_takeWhile__nth,axiom,
! [J: nat,P: nat > $o,Xs: list_nat] :
( ( ord_less_nat @ J @ ( size_size_list_nat @ ( takeWhile_nat @ P @ Xs ) ) )
=> ( ( nth_nat @ ( takeWhile_nat @ P @ Xs ) @ J )
= ( nth_nat @ Xs @ J ) ) ) ).
% takeWhile_nth
thf(fact_1200_takeWhile__not__last,axiom,
! [Xs: list_nat] :
( ( distinct_nat @ Xs )
=> ( ( takeWhile_nat
@ ^ [Y3: nat] :
( Y3
!= ( last_nat @ Xs ) )
@ Xs )
= ( butlast_nat @ Xs ) ) ) ).
% takeWhile_not_last
thf(fact_1201_length__takeWhile__less__P__nth,axiom,
! [J: nat,P: nat > $o,Xs: list_nat] :
( ! [I: nat] :
( ( ord_less_nat @ I @ J )
=> ( P @ ( nth_nat @ Xs @ I ) ) )
=> ( ( ord_less_eq_nat @ J @ ( size_size_list_nat @ Xs ) )
=> ( ord_less_eq_nat @ J @ ( size_size_list_nat @ ( takeWhile_nat @ P @ Xs ) ) ) ) ) ).
% length_takeWhile_less_P_nth
thf(fact_1202_takeWhile__eq__take__P__nth,axiom,
! [N: nat,Xs: list_nat,P: nat > $o] :
( ! [I: nat] :
( ( ord_less_nat @ I @ N )
=> ( ( ord_less_nat @ I @ ( size_size_list_nat @ Xs ) )
=> ( P @ ( nth_nat @ Xs @ I ) ) ) )
=> ( ( ( ord_less_nat @ N @ ( size_size_list_nat @ Xs ) )
=> ~ ( P @ ( nth_nat @ Xs @ N ) ) )
=> ( ( takeWhile_nat @ P @ Xs )
= ( take_nat @ N @ Xs ) ) ) ) ).
% takeWhile_eq_take_P_nth
thf(fact_1203_transpose_Opinduct,axiom,
! [A0: list_list_a,P: list_list_a > $o] :
( ( accp_list_list_a @ transpose_rel_a @ A0 )
=> ( ( ( accp_list_list_a @ transpose_rel_a @ nil_list_a )
=> ( P @ nil_list_a ) )
=> ( ! [Xss: list_list_a] :
( ( accp_list_list_a @ transpose_rel_a @ ( cons_list_a @ nil_a @ Xss ) )
=> ( ( P @ Xss )
=> ( P @ ( cons_list_a @ nil_a @ Xss ) ) ) )
=> ( ! [X3: a,Xs2: list_a,Xss: list_list_a] :
( ( accp_list_list_a @ transpose_rel_a @ ( cons_list_a @ ( cons_a @ X3 @ Xs2 ) @ Xss ) )
=> ( ( P
@ ( cons_list_a @ Xs2
@ ( concat_list_a
@ ( map_li5729356230488778442list_a
@ ( case_l8408404631611421914st_a_a @ nil_list_a
@ ^ [H: a,T2: list_a] : ( cons_list_a @ T2 @ nil_list_a ) )
@ Xss ) ) ) )
=> ( P @ ( cons_list_a @ ( cons_a @ X3 @ Xs2 ) @ Xss ) ) ) )
=> ( P @ A0 ) ) ) ) ) ).
% transpose.pinduct
thf(fact_1204_transpose_Opinduct,axiom,
! [A0: list_list_nat,P: list_list_nat > $o] :
( ( accp_list_list_nat @ transpose_rel_nat @ A0 )
=> ( ( ( accp_list_list_nat @ transpose_rel_nat @ nil_list_nat )
=> ( P @ nil_list_nat ) )
=> ( ! [Xss: list_list_nat] :
( ( accp_list_list_nat @ transpose_rel_nat @ ( cons_list_nat @ nil_nat @ Xss ) )
=> ( ( P @ Xss )
=> ( P @ ( cons_list_nat @ nil_nat @ Xss ) ) ) )
=> ( ! [X3: nat,Xs2: list_nat,Xss: list_list_nat] :
( ( accp_list_list_nat @ transpose_rel_nat @ ( cons_list_nat @ ( cons_nat @ X3 @ Xs2 ) @ Xss ) )
=> ( ( P
@ ( cons_list_nat @ Xs2
@ ( concat_list_nat
@ ( map_li960784813134754710st_nat
@ ( case_l3331202209248957608at_nat @ nil_list_nat
@ ^ [H: nat,T2: list_nat] : ( cons_list_nat @ T2 @ nil_list_nat ) )
@ Xss ) ) ) )
=> ( P @ ( cons_list_nat @ ( cons_nat @ X3 @ Xs2 ) @ Xss ) ) ) )
=> ( P @ A0 ) ) ) ) ) ).
% transpose.pinduct
thf(fact_1205_filter__equals__takeWhile__sorted__rev,axiom,
! [F: nat > nat,Xs: list_nat,T: nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ ( rev_nat @ ( map_nat_nat @ F @ Xs ) ) )
=> ( ( filter_nat
@ ^ [X2: nat] : ( ord_less_nat @ T @ ( F @ X2 ) )
@ Xs )
= ( takeWhile_nat
@ ^ [X2: nat] : ( ord_less_nat @ T @ ( F @ X2 ) )
@ Xs ) ) ) ).
% filter_equals_takeWhile_sorted_rev
thf(fact_1206_remdups__adj_Opelims,axiom,
! [X: list_a,Y: list_a] :
( ( ( remdups_adj_a @ X )
= Y )
=> ( ( accp_list_a @ remdups_adj_rel_a @ X )
=> ( ( ( X = nil_a )
=> ( ( Y = nil_a )
=> ~ ( accp_list_a @ remdups_adj_rel_a @ nil_a ) ) )
=> ( ! [X3: a] :
( ( X
= ( cons_a @ X3 @ nil_a ) )
=> ( ( Y
= ( cons_a @ X3 @ nil_a ) )
=> ~ ( accp_list_a @ remdups_adj_rel_a @ ( cons_a @ X3 @ nil_a ) ) ) )
=> ~ ! [X3: a,Y2: a,Xs2: list_a] :
( ( X
= ( cons_a @ X3 @ ( cons_a @ Y2 @ Xs2 ) ) )
=> ( ( ( ( X3 = Y2 )
=> ( Y
= ( remdups_adj_a @ ( cons_a @ X3 @ Xs2 ) ) ) )
& ( ( X3 != Y2 )
=> ( Y
= ( cons_a @ X3 @ ( remdups_adj_a @ ( cons_a @ Y2 @ Xs2 ) ) ) ) ) )
=> ~ ( accp_list_a @ remdups_adj_rel_a @ ( cons_a @ X3 @ ( cons_a @ Y2 @ Xs2 ) ) ) ) ) ) ) ) ) ).
% remdups_adj.pelims
thf(fact_1207_remdups__adj_Opelims,axiom,
! [X: list_nat,Y: list_nat] :
( ( ( remdups_adj_nat @ X )
= Y )
=> ( ( accp_list_nat @ remdups_adj_rel_nat @ X )
=> ( ( ( X = nil_nat )
=> ( ( Y = nil_nat )
=> ~ ( accp_list_nat @ remdups_adj_rel_nat @ nil_nat ) ) )
=> ( ! [X3: nat] :
( ( X
= ( cons_nat @ X3 @ nil_nat ) )
=> ( ( Y
= ( cons_nat @ X3 @ nil_nat ) )
=> ~ ( accp_list_nat @ remdups_adj_rel_nat @ ( cons_nat @ X3 @ nil_nat ) ) ) )
=> ~ ! [X3: nat,Y2: nat,Xs2: list_nat] :
( ( X
= ( cons_nat @ X3 @ ( cons_nat @ Y2 @ Xs2 ) ) )
=> ( ( ( ( X3 = Y2 )
=> ( Y
= ( remdups_adj_nat @ ( cons_nat @ X3 @ Xs2 ) ) ) )
& ( ( X3 != Y2 )
=> ( Y
= ( cons_nat @ X3 @ ( remdups_adj_nat @ ( cons_nat @ Y2 @ Xs2 ) ) ) ) ) )
=> ~ ( accp_list_nat @ remdups_adj_rel_nat @ ( cons_nat @ X3 @ ( cons_nat @ Y2 @ Xs2 ) ) ) ) ) ) ) ) ) ).
% remdups_adj.pelims
thf(fact_1208_insort__key__remove1,axiom,
! [A: list_nat,Xs: list_list_nat,F: list_nat > nat] :
( ( member_list_nat2 @ A @ ( set_list_nat2 @ Xs ) )
=> ( ( sorted_wrt_nat @ ord_less_eq_nat @ ( map_list_nat_nat @ F @ Xs ) )
=> ( ( ( hd_list_nat
@ ( filter_list_nat
@ ^ [X2: list_nat] :
( ( F @ A )
= ( F @ X2 ) )
@ Xs ) )
= A )
=> ( ( linord5978504541935096237at_nat @ F @ A @ ( remove1_list_nat @ A @ Xs ) )
= Xs ) ) ) ) ).
% insort_key_remove1
thf(fact_1209_insort__key__remove1,axiom,
! [A: list_a,Xs: list_list_a,F: list_a > nat] :
( ( member_list_a2 @ A @ ( set_list_a2 @ Xs ) )
=> ( ( sorted_wrt_nat @ ord_less_eq_nat @ ( map_list_a_nat @ F @ Xs ) )
=> ( ( ( hd_list_a
@ ( filter_list_a
@ ^ [X2: list_a] :
( ( F @ A )
= ( F @ X2 ) )
@ Xs ) )
= A )
=> ( ( linord6128634311322234009_a_nat @ F @ A @ ( remove1_list_a @ A @ Xs ) )
= Xs ) ) ) ) ).
% insort_key_remove1
thf(fact_1210_insort__key__remove1,axiom,
! [A: nat,Xs: list_nat,F: nat > nat] :
( ( member_nat2 @ A @ ( set_nat2 @ Xs ) )
=> ( ( sorted_wrt_nat @ ord_less_eq_nat @ ( map_nat_nat @ F @ Xs ) )
=> ( ( ( hd_nat
@ ( filter_nat
@ ^ [X2: nat] :
( ( F @ A )
= ( F @ X2 ) )
@ Xs ) )
= A )
=> ( ( linord8961336180081300637at_nat @ F @ A @ ( remove1_nat @ A @ Xs ) )
= Xs ) ) ) ) ).
% insort_key_remove1
thf(fact_1211_insort__key_Osimps_I2_J,axiom,
! [F: a > nat,X: a,Y: a,Ys: list_a] :
( ( ( ord_less_eq_nat @ ( F @ X ) @ ( F @ Y ) )
=> ( ( linord5190936543458658835_a_nat @ F @ X @ ( cons_a @ Y @ Ys ) )
= ( cons_a @ X @ ( cons_a @ Y @ Ys ) ) ) )
& ( ~ ( ord_less_eq_nat @ ( F @ X ) @ ( F @ Y ) )
=> ( ( linord5190936543458658835_a_nat @ F @ X @ ( cons_a @ Y @ Ys ) )
= ( cons_a @ Y @ ( linord5190936543458658835_a_nat @ F @ X @ Ys ) ) ) ) ) ).
% insort_key.simps(2)
thf(fact_1212_insort__key_Osimps_I2_J,axiom,
! [F: nat > nat,X: nat,Y: nat,Ys: list_nat] :
( ( ( ord_less_eq_nat @ ( F @ X ) @ ( F @ Y ) )
=> ( ( linord8961336180081300637at_nat @ F @ X @ ( cons_nat @ Y @ Ys ) )
= ( cons_nat @ X @ ( cons_nat @ Y @ Ys ) ) ) )
& ( ~ ( ord_less_eq_nat @ ( F @ X ) @ ( F @ Y ) )
=> ( ( linord8961336180081300637at_nat @ F @ X @ ( cons_nat @ Y @ Ys ) )
= ( cons_nat @ Y @ ( linord8961336180081300637at_nat @ F @ X @ Ys ) ) ) ) ) ).
% insort_key.simps(2)
thf(fact_1213_sorted__insort,axiom,
! [X: nat,Xs: list_nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat
@ ( linord8961336180081300637at_nat
@ ^ [X2: nat] : X2
@ X
@ Xs ) )
= ( sorted_wrt_nat @ ord_less_eq_nat @ Xs ) ) ).
% sorted_insort
thf(fact_1214_insort__insert__insort,axiom,
! [X: nat,Xs: list_nat] :
( ~ ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ( ( linord1921536354676448932at_nat
@ ^ [X2: nat] : X2
@ X
@ Xs )
= ( linord8961336180081300637at_nat
@ ^ [X2: nat] : X2
@ X
@ Xs ) ) ) ).
% insort_insert_insort
thf(fact_1215_insort__is__Cons,axiom,
! [Xs: list_a,F: a > nat,A: a] :
( ! [X3: a] :
( ( member_a2 @ X3 @ ( set_a2 @ Xs ) )
=> ( ord_less_eq_nat @ ( F @ A ) @ ( F @ X3 ) ) )
=> ( ( linord5190936543458658835_a_nat @ F @ A @ Xs )
= ( cons_a @ A @ Xs ) ) ) ).
% insort_is_Cons
thf(fact_1216_insort__is__Cons,axiom,
! [Xs: list_nat,F: nat > nat,A: nat] :
( ! [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ Xs ) )
=> ( ord_less_eq_nat @ ( F @ A ) @ ( F @ X3 ) ) )
=> ( ( linord8961336180081300637at_nat @ F @ A @ Xs )
= ( cons_nat @ A @ Xs ) ) ) ).
% insort_is_Cons
thf(fact_1217_sorted__insort__key,axiom,
! [F: nat > nat,X: nat,Xs: list_nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ ( map_nat_nat @ F @ ( linord8961336180081300637at_nat @ F @ X @ Xs ) ) )
= ( sorted_wrt_nat @ ord_less_eq_nat @ ( map_nat_nat @ F @ Xs ) ) ) ).
% sorted_insort_key
thf(fact_1218_filter__insort,axiom,
! [F: nat > nat,Xs: list_nat,P: nat > $o,X: nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ ( map_nat_nat @ F @ Xs ) )
=> ( ( P @ X )
=> ( ( filter_nat @ P @ ( linord8961336180081300637at_nat @ F @ X @ Xs ) )
= ( linord8961336180081300637at_nat @ F @ X @ ( filter_nat @ P @ Xs ) ) ) ) ) ).
% filter_insort
thf(fact_1219_insort__remove1,axiom,
! [A: nat,Xs: list_nat] :
( ( member_nat2 @ A @ ( set_nat2 @ Xs ) )
=> ( ( sorted_wrt_nat @ ord_less_eq_nat @ Xs )
=> ( ( linord8961336180081300637at_nat
@ ^ [X2: nat] : X2
@ A
@ ( remove1_nat @ A @ Xs ) )
= Xs ) ) ) ).
% insort_remove1
thf(fact_1220_sorted__insort__is__snoc,axiom,
! [Xs: list_nat,A: nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ Xs )
=> ( ! [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ Xs ) )
=> ( ord_less_eq_nat @ X3 @ A ) )
=> ( ( linord8961336180081300637at_nat
@ ^ [X2: nat] : X2
@ A
@ Xs )
= ( append_nat @ Xs @ ( cons_nat @ A @ nil_nat ) ) ) ) ) ).
% sorted_insort_is_snoc
thf(fact_1221_sorted__list__of__set__def,axiom,
( linord2614967742042102400et_nat
= ( linord1089935798310486446at_nat
@ ^ [X2: nat] : X2 ) ) ).
% sorted_list_of_set_def
thf(fact_1222_takeWhile__neq__rev,axiom,
! [Xs: list_list_nat,X: list_nat] :
( ( distinct_list_nat @ Xs )
=> ( ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
=> ( ( takeWhile_list_nat
@ ^ [Y3: list_nat] : ( Y3 != X )
@ ( rev_list_nat @ Xs ) )
= ( rev_list_nat
@ ( tl_list_nat
@ ( dropWhile_list_nat
@ ^ [Y3: list_nat] : ( Y3 != X )
@ Xs ) ) ) ) ) ) ).
% takeWhile_neq_rev
thf(fact_1223_takeWhile__neq__rev,axiom,
! [Xs: list_list_a,X: list_a] :
( ( distinct_list_a @ Xs )
=> ( ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
=> ( ( takeWhile_list_a
@ ^ [Y3: list_a] : ( Y3 != X )
@ ( rev_list_a @ Xs ) )
= ( rev_list_a
@ ( tl_list_a
@ ( dropWhile_list_a
@ ^ [Y3: list_a] : ( Y3 != X )
@ Xs ) ) ) ) ) ) ).
% takeWhile_neq_rev
thf(fact_1224_takeWhile__neq__rev,axiom,
! [Xs: list_nat,X: nat] :
( ( distinct_nat @ Xs )
=> ( ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ( ( takeWhile_nat
@ ^ [Y3: nat] : ( Y3 != X )
@ ( rev_nat @ Xs ) )
= ( rev_nat
@ ( tl_nat
@ ( dropWhile_nat
@ ^ [Y3: nat] : ( Y3 != X )
@ Xs ) ) ) ) ) ) ).
% takeWhile_neq_rev
thf(fact_1225_dropWhile__eq__Nil__conv,axiom,
! [P: nat > $o,Xs: list_nat] :
( ( ( dropWhile_nat @ P @ Xs )
= nil_nat )
= ( ! [X2: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Xs ) )
=> ( P @ X2 ) ) ) ) ).
% dropWhile_eq_Nil_conv
thf(fact_1226_dropWhile__append1,axiom,
! [X: list_nat,Xs: list_list_nat,P: list_nat > $o,Ys: list_list_nat] :
( ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
=> ( ~ ( P @ X )
=> ( ( dropWhile_list_nat @ P @ ( append_list_nat @ Xs @ Ys ) )
= ( append_list_nat @ ( dropWhile_list_nat @ P @ Xs ) @ Ys ) ) ) ) ).
% dropWhile_append1
thf(fact_1227_dropWhile__append1,axiom,
! [X: list_a,Xs: list_list_a,P: list_a > $o,Ys: list_list_a] :
( ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
=> ( ~ ( P @ X )
=> ( ( dropWhile_list_a @ P @ ( append_list_a @ Xs @ Ys ) )
= ( append_list_a @ ( dropWhile_list_a @ P @ Xs ) @ Ys ) ) ) ) ).
% dropWhile_append1
thf(fact_1228_dropWhile__append1,axiom,
! [X: nat,Xs: list_nat,P: nat > $o,Ys: list_nat] :
( ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ( ~ ( P @ X )
=> ( ( dropWhile_nat @ P @ ( append_nat @ Xs @ Ys ) )
= ( append_nat @ ( dropWhile_nat @ P @ Xs ) @ Ys ) ) ) ) ).
% dropWhile_append1
thf(fact_1229_dropWhile__append2,axiom,
! [Xs: list_list_nat,P: list_nat > $o,Ys: list_list_nat] :
( ! [X3: list_nat] :
( ( member_list_nat2 @ X3 @ ( set_list_nat2 @ Xs ) )
=> ( P @ X3 ) )
=> ( ( dropWhile_list_nat @ P @ ( append_list_nat @ Xs @ Ys ) )
= ( dropWhile_list_nat @ P @ Ys ) ) ) ).
% dropWhile_append2
thf(fact_1230_dropWhile__append2,axiom,
! [Xs: list_list_a,P: list_a > $o,Ys: list_list_a] :
( ! [X3: list_a] :
( ( member_list_a2 @ X3 @ ( set_list_a2 @ Xs ) )
=> ( P @ X3 ) )
=> ( ( dropWhile_list_a @ P @ ( append_list_a @ Xs @ Ys ) )
= ( dropWhile_list_a @ P @ Ys ) ) ) ).
% dropWhile_append2
thf(fact_1231_dropWhile__append2,axiom,
! [Xs: list_nat,P: nat > $o,Ys: list_nat] :
( ! [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ Xs ) )
=> ( P @ X3 ) )
=> ( ( dropWhile_nat @ P @ ( append_nat @ Xs @ Ys ) )
= ( dropWhile_nat @ P @ Ys ) ) ) ).
% dropWhile_append2
thf(fact_1232_dropWhile__replicate,axiom,
! [P: nat > $o,X: nat,N: nat] :
( ( ( P @ X )
=> ( ( dropWhile_nat @ P @ ( replicate_nat @ N @ X ) )
= nil_nat ) )
& ( ~ ( P @ X )
=> ( ( dropWhile_nat @ P @ ( replicate_nat @ N @ X ) )
= ( replicate_nat @ N @ X ) ) ) ) ).
% dropWhile_replicate
thf(fact_1233_takeWhile__dropWhile__id,axiom,
! [P: nat > $o,Xs: list_nat] :
( ( append_nat @ ( takeWhile_nat @ P @ Xs ) @ ( dropWhile_nat @ P @ Xs ) )
= Xs ) ).
% takeWhile_dropWhile_id
thf(fact_1234_set__dropWhileD,axiom,
! [X: list_nat,P: list_nat > $o,Xs: list_list_nat] :
( ( member_list_nat2 @ X @ ( set_list_nat2 @ ( dropWhile_list_nat @ P @ Xs ) ) )
=> ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) ) ) ).
% set_dropWhileD
thf(fact_1235_set__dropWhileD,axiom,
! [X: list_a,P: list_a > $o,Xs: list_list_a] :
( ( member_list_a2 @ X @ ( set_list_a2 @ ( dropWhile_list_a @ P @ Xs ) ) )
=> ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) ) ) ).
% set_dropWhileD
thf(fact_1236_set__dropWhileD,axiom,
! [X: nat,P: nat > $o,Xs: list_nat] :
( ( member_nat2 @ X @ ( set_nat2 @ ( dropWhile_nat @ P @ Xs ) ) )
=> ( member_nat2 @ X @ ( set_nat2 @ Xs ) ) ) ).
% set_dropWhileD
thf(fact_1237_dropWhile__cong,axiom,
! [L: list_list_nat,K: list_list_nat,P: list_nat > $o,Q: list_nat > $o] :
( ( L = K )
=> ( ! [X3: list_nat] :
( ( member_list_nat2 @ X3 @ ( set_list_nat2 @ L ) )
=> ( ( P @ X3 )
= ( Q @ X3 ) ) )
=> ( ( dropWhile_list_nat @ P @ L )
= ( dropWhile_list_nat @ Q @ K ) ) ) ) ).
% dropWhile_cong
thf(fact_1238_dropWhile__cong,axiom,
! [L: list_list_a,K: list_list_a,P: list_a > $o,Q: list_a > $o] :
( ( L = K )
=> ( ! [X3: list_a] :
( ( member_list_a2 @ X3 @ ( set_list_a2 @ L ) )
=> ( ( P @ X3 )
= ( Q @ X3 ) ) )
=> ( ( dropWhile_list_a @ P @ L )
= ( dropWhile_list_a @ Q @ K ) ) ) ) ).
% dropWhile_cong
thf(fact_1239_dropWhile__cong,axiom,
! [L: list_nat,K: list_nat,P: nat > $o,Q: nat > $o] :
( ( L = K )
=> ( ! [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ L ) )
=> ( ( P @ X3 )
= ( Q @ X3 ) ) )
=> ( ( dropWhile_nat @ P @ L )
= ( dropWhile_nat @ Q @ K ) ) ) ) ).
% dropWhile_cong
thf(fact_1240_distinct__dropWhile,axiom,
! [Xs: list_nat,P: nat > $o] :
( ( distinct_nat @ Xs )
=> ( distinct_nat @ ( dropWhile_nat @ P @ Xs ) ) ) ).
% distinct_dropWhile
thf(fact_1241_length__dropWhile__le,axiom,
! [P: nat > $o,Xs: list_nat] : ( ord_less_eq_nat @ ( size_size_list_nat @ ( dropWhile_nat @ P @ Xs ) ) @ ( size_size_list_nat @ Xs ) ) ).
% length_dropWhile_le
thf(fact_1242_dropWhile__append3,axiom,
! [P: a > $o,Y: a,Xs: list_a,Ys: list_a] :
( ~ ( P @ Y )
=> ( ( dropWhile_a @ P @ ( append_a @ Xs @ ( cons_a @ Y @ Ys ) ) )
= ( append_a @ ( dropWhile_a @ P @ Xs ) @ ( cons_a @ Y @ Ys ) ) ) ) ).
% dropWhile_append3
thf(fact_1243_dropWhile__append3,axiom,
! [P: nat > $o,Y: nat,Xs: list_nat,Ys: list_nat] :
( ~ ( P @ Y )
=> ( ( dropWhile_nat @ P @ ( append_nat @ Xs @ ( cons_nat @ Y @ Ys ) ) )
= ( append_nat @ ( dropWhile_nat @ P @ Xs ) @ ( cons_nat @ Y @ Ys ) ) ) ) ).
% dropWhile_append3
thf(fact_1244_sorted__dropWhile,axiom,
! [Xs: list_nat,P: nat > $o] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ Xs )
=> ( sorted_wrt_nat @ ord_less_eq_nat @ ( dropWhile_nat @ P @ Xs ) ) ) ).
% sorted_dropWhile
thf(fact_1245_dropWhile_Osimps_I2_J,axiom,
! [P: a > $o,X: a,Xs: list_a] :
( ( ( P @ X )
=> ( ( dropWhile_a @ P @ ( cons_a @ X @ Xs ) )
= ( dropWhile_a @ P @ Xs ) ) )
& ( ~ ( P @ X )
=> ( ( dropWhile_a @ P @ ( cons_a @ X @ Xs ) )
= ( cons_a @ X @ Xs ) ) ) ) ).
% dropWhile.simps(2)
thf(fact_1246_dropWhile_Osimps_I2_J,axiom,
! [P: nat > $o,X: nat,Xs: list_nat] :
( ( ( P @ X )
=> ( ( dropWhile_nat @ P @ ( cons_nat @ X @ Xs ) )
= ( dropWhile_nat @ P @ Xs ) ) )
& ( ~ ( P @ X )
=> ( ( dropWhile_nat @ P @ ( cons_nat @ X @ Xs ) )
= ( cons_nat @ X @ Xs ) ) ) ) ).
% dropWhile.simps(2)
thf(fact_1247_dropWhile_Osimps_I1_J,axiom,
! [P: nat > $o] :
( ( dropWhile_nat @ P @ nil_nat )
= nil_nat ) ).
% dropWhile.simps(1)
thf(fact_1248_dropWhile__last,axiom,
! [X: list_nat,Xs: list_list_nat,P: list_nat > $o] :
( ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
=> ( ~ ( P @ X )
=> ( ( last_list_nat @ ( dropWhile_list_nat @ P @ Xs ) )
= ( last_list_nat @ Xs ) ) ) ) ).
% dropWhile_last
thf(fact_1249_dropWhile__last,axiom,
! [X: list_a,Xs: list_list_a,P: list_a > $o] :
( ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
=> ( ~ ( P @ X )
=> ( ( last_list_a @ ( dropWhile_list_a @ P @ Xs ) )
= ( last_list_a @ Xs ) ) ) ) ).
% dropWhile_last
thf(fact_1250_dropWhile__last,axiom,
! [X: nat,Xs: list_nat,P: nat > $o] :
( ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ( ~ ( P @ X )
=> ( ( last_nat @ ( dropWhile_nat @ P @ Xs ) )
= ( last_nat @ Xs ) ) ) ) ).
% dropWhile_last
thf(fact_1251_dropWhile__eq__self__iff,axiom,
! [P: nat > $o,Xs: list_nat] :
( ( ( dropWhile_nat @ P @ Xs )
= Xs )
= ( ( Xs = nil_nat )
| ~ ( P @ ( hd_nat @ Xs ) ) ) ) ).
% dropWhile_eq_self_iff
thf(fact_1252_hd__dropWhile,axiom,
! [P: nat > $o,Xs: list_nat] :
( ( ( dropWhile_nat @ P @ Xs )
!= nil_nat )
=> ~ ( P @ ( hd_nat @ ( dropWhile_nat @ P @ Xs ) ) ) ) ).
% hd_dropWhile
thf(fact_1253_remdups__adj__Cons_H,axiom,
! [X: a,Xs: list_a] :
( ( remdups_adj_a @ ( cons_a @ X @ Xs ) )
= ( cons_a @ X
@ ( remdups_adj_a
@ ( dropWhile_a
@ ^ [Y3: a] : ( Y3 = X )
@ Xs ) ) ) ) ).
% remdups_adj_Cons'
thf(fact_1254_remdups__adj__Cons_H,axiom,
! [X: nat,Xs: list_nat] :
( ( remdups_adj_nat @ ( cons_nat @ X @ Xs ) )
= ( cons_nat @ X
@ ( remdups_adj_nat
@ ( dropWhile_nat
@ ^ [Y3: nat] : ( Y3 = X )
@ Xs ) ) ) ) ).
% remdups_adj_Cons'
thf(fact_1255_dropWhile__eq__Cons__conv,axiom,
! [P: a > $o,Xs: list_a,Y: a,Ys: list_a] :
( ( ( dropWhile_a @ P @ Xs )
= ( cons_a @ Y @ Ys ) )
= ( ( Xs
= ( append_a @ ( takeWhile_a @ P @ Xs ) @ ( cons_a @ Y @ Ys ) ) )
& ~ ( P @ Y ) ) ) ).
% dropWhile_eq_Cons_conv
thf(fact_1256_dropWhile__eq__Cons__conv,axiom,
! [P: nat > $o,Xs: list_nat,Y: nat,Ys: list_nat] :
( ( ( dropWhile_nat @ P @ Xs )
= ( cons_nat @ Y @ Ys ) )
= ( ( Xs
= ( append_nat @ ( takeWhile_nat @ P @ Xs ) @ ( cons_nat @ Y @ Ys ) ) )
& ~ ( P @ Y ) ) ) ).
% dropWhile_eq_Cons_conv
thf(fact_1257_takeWhile__eq__filter,axiom,
! [P: list_nat > $o,Xs: list_list_nat] :
( ! [X3: list_nat] :
( ( member_list_nat2 @ X3 @ ( set_list_nat2 @ ( dropWhile_list_nat @ P @ Xs ) ) )
=> ~ ( P @ X3 ) )
=> ( ( takeWhile_list_nat @ P @ Xs )
= ( filter_list_nat @ P @ Xs ) ) ) ).
% takeWhile_eq_filter
thf(fact_1258_takeWhile__eq__filter,axiom,
! [P: list_a > $o,Xs: list_list_a] :
( ! [X3: list_a] :
( ( member_list_a2 @ X3 @ ( set_list_a2 @ ( dropWhile_list_a @ P @ Xs ) ) )
=> ~ ( P @ X3 ) )
=> ( ( takeWhile_list_a @ P @ Xs )
= ( filter_list_a @ P @ Xs ) ) ) ).
% takeWhile_eq_filter
thf(fact_1259_takeWhile__eq__filter,axiom,
! [P: nat > $o,Xs: list_nat] :
( ! [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ ( dropWhile_nat @ P @ Xs ) ) )
=> ~ ( P @ X3 ) )
=> ( ( takeWhile_nat @ P @ Xs )
= ( filter_nat @ P @ Xs ) ) ) ).
% takeWhile_eq_filter
thf(fact_1260_dropWhile__eq__drop,axiom,
( dropWhile_nat
= ( ^ [P2: nat > $o,Xs3: list_nat] : ( drop_nat @ ( size_size_list_nat @ ( takeWhile_nat @ P2 @ Xs3 ) ) @ Xs3 ) ) ) ).
% dropWhile_eq_drop
thf(fact_1261_remdups__adj__append__dropWhile,axiom,
! [Xs: list_a,Y: a,Ys: list_a] :
( ( remdups_adj_a @ ( append_a @ Xs @ ( cons_a @ Y @ Ys ) ) )
= ( append_a @ ( remdups_adj_a @ ( append_a @ Xs @ ( cons_a @ Y @ nil_a ) ) )
@ ( remdups_adj_a
@ ( dropWhile_a
@ ^ [X2: a] : ( X2 = Y )
@ Ys ) ) ) ) ).
% remdups_adj_append_dropWhile
thf(fact_1262_remdups__adj__append__dropWhile,axiom,
! [Xs: list_nat,Y: nat,Ys: list_nat] :
( ( remdups_adj_nat @ ( append_nat @ Xs @ ( cons_nat @ Y @ Ys ) ) )
= ( append_nat @ ( remdups_adj_nat @ ( append_nat @ Xs @ ( cons_nat @ Y @ nil_nat ) ) )
@ ( remdups_adj_nat
@ ( dropWhile_nat
@ ^ [X2: nat] : ( X2 = Y )
@ Ys ) ) ) ) ).
% remdups_adj_append_dropWhile
thf(fact_1263_remdups__adj__append_H_H,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( Xs != nil_nat )
=> ( ( remdups_adj_nat @ ( append_nat @ Xs @ Ys ) )
= ( append_nat @ ( remdups_adj_nat @ Xs )
@ ( remdups_adj_nat
@ ( dropWhile_nat
@ ^ [Y3: nat] :
( Y3
= ( last_nat @ Xs ) )
@ Ys ) ) ) ) ) ).
% remdups_adj_append''
thf(fact_1264_tl__remdups__adj,axiom,
! [Ys: list_nat] :
( ( Ys != nil_nat )
=> ( ( tl_nat @ ( remdups_adj_nat @ Ys ) )
= ( remdups_adj_nat
@ ( dropWhile_nat
@ ^ [X2: nat] :
( X2
= ( hd_nat @ Ys ) )
@ ( tl_nat @ Ys ) ) ) ) ) ).
% tl_remdups_adj
thf(fact_1265_dropWhile__nth,axiom,
! [J: nat,P: nat > $o,Xs: list_nat] :
( ( ord_less_nat @ J @ ( size_size_list_nat @ ( dropWhile_nat @ P @ Xs ) ) )
=> ( ( nth_nat @ ( dropWhile_nat @ P @ Xs ) @ J )
= ( nth_nat @ Xs @ ( plus_plus_nat @ J @ ( size_size_list_nat @ ( takeWhile_nat @ P @ Xs ) ) ) ) ) ) ).
% dropWhile_nth
thf(fact_1266_dropWhile__neq__rev,axiom,
! [Xs: list_list_nat,X: list_nat] :
( ( distinct_list_nat @ Xs )
=> ( ( member_list_nat2 @ X @ ( set_list_nat2 @ Xs ) )
=> ( ( dropWhile_list_nat
@ ^ [Y3: list_nat] : ( Y3 != X )
@ ( rev_list_nat @ Xs ) )
= ( cons_list_nat @ X
@ ( rev_list_nat
@ ( takeWhile_list_nat
@ ^ [Y3: list_nat] : ( Y3 != X )
@ Xs ) ) ) ) ) ) ).
% dropWhile_neq_rev
thf(fact_1267_dropWhile__neq__rev,axiom,
! [Xs: list_list_a,X: list_a] :
( ( distinct_list_a @ Xs )
=> ( ( member_list_a2 @ X @ ( set_list_a2 @ Xs ) )
=> ( ( dropWhile_list_a
@ ^ [Y3: list_a] : ( Y3 != X )
@ ( rev_list_a @ Xs ) )
= ( cons_list_a @ X
@ ( rev_list_a
@ ( takeWhile_list_a
@ ^ [Y3: list_a] : ( Y3 != X )
@ Xs ) ) ) ) ) ) ).
% dropWhile_neq_rev
thf(fact_1268_dropWhile__neq__rev,axiom,
! [Xs: list_a,X: a] :
( ( distinct_a @ Xs )
=> ( ( member_a2 @ X @ ( set_a2 @ Xs ) )
=> ( ( dropWhile_a
@ ^ [Y3: a] : ( Y3 != X )
@ ( rev_a @ Xs ) )
= ( cons_a @ X
@ ( rev_a
@ ( takeWhile_a
@ ^ [Y3: a] : ( Y3 != X )
@ Xs ) ) ) ) ) ) ).
% dropWhile_neq_rev
thf(fact_1269_dropWhile__neq__rev,axiom,
! [Xs: list_nat,X: nat] :
( ( distinct_nat @ Xs )
=> ( ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ( ( dropWhile_nat
@ ^ [Y3: nat] : ( Y3 != X )
@ ( rev_nat @ Xs ) )
= ( cons_nat @ X
@ ( rev_nat
@ ( takeWhile_nat
@ ^ [Y3: nat] : ( Y3 != X )
@ Xs ) ) ) ) ) ) ).
% dropWhile_neq_rev
thf(fact_1270_sort__key__def,axiom,
( linord738340561235409698at_nat
= ( ^ [F2: nat > nat,Xs3: list_nat] : ( foldr_nat_list_nat @ ( linord8961336180081300637at_nat @ F2 ) @ Xs3 @ nil_nat ) ) ) ).
% sort_key_def
thf(fact_1271_sort__upt,axiom,
! [M: nat,N: nat] :
( ( linord738340561235409698at_nat
@ ^ [X2: nat] : X2
@ ( upt @ M @ N ) )
= ( upt @ M @ N ) ) ).
% sort_upt
thf(fact_1272_card__length__sum__list__rec,axiom,
! [M: nat,N4: nat] :
( ( ord_less_eq_nat @ one_one_nat @ M )
=> ( ( finite_card_list_nat
@ ( collect_list_nat
@ ^ [L4: list_nat] :
( ( ( size_size_list_nat @ L4 )
= M )
& ( ( groups4561878855575611511st_nat @ L4 )
= N4 ) ) ) )
= ( plus_plus_nat
@ ( finite_card_list_nat
@ ( collect_list_nat
@ ^ [L4: list_nat] :
( ( ( size_size_list_nat @ L4 )
= ( minus_minus_nat @ M @ one_one_nat ) )
& ( ( groups4561878855575611511st_nat @ L4 )
= N4 ) ) ) )
@ ( finite_card_list_nat
@ ( collect_list_nat
@ ^ [L4: list_nat] :
( ( ( size_size_list_nat @ L4 )
= M )
& ( ( plus_plus_nat @ ( groups4561878855575611511st_nat @ L4 ) @ one_one_nat )
= N4 ) ) ) ) ) ) ) ).
% card_length_sum_list_rec
thf(fact_1273_sorted__list__of__set__range,axiom,
! [M: nat,N: nat] :
( ( linord2614967742042102400et_nat @ ( set_or4665077453230672383an_nat @ M @ N ) )
= ( upt @ M @ N ) ) ).
% sorted_list_of_set_range
thf(fact_1274_atLeastLessThan__upt,axiom,
( set_or4665077453230672383an_nat
= ( ^ [I4: nat,J2: nat] : ( set_nat2 @ ( upt @ I4 @ J2 ) ) ) ) ).
% atLeastLessThan_upt
thf(fact_1275_all__nat__less__eq,axiom,
! [N: nat,P: nat > $o] :
( ( ! [M4: nat] :
( ( ord_less_nat @ M4 @ N )
=> ( P @ M4 ) ) )
= ( ! [X2: nat] :
( ( member_nat2 @ X2 @ ( set_or4665077453230672383an_nat @ zero_zero_nat @ N ) )
=> ( P @ X2 ) ) ) ) ).
% all_nat_less_eq
thf(fact_1276_ex__nat__less__eq,axiom,
! [N: nat,P: nat > $o] :
( ( ? [M4: nat] :
( ( ord_less_nat @ M4 @ N )
& ( P @ M4 ) ) )
= ( ? [X2: nat] :
( ( member_nat2 @ X2 @ ( set_or4665077453230672383an_nat @ zero_zero_nat @ N ) )
& ( P @ X2 ) ) ) ) ).
% ex_nat_less_eq
thf(fact_1277_card__length__sum__list,axiom,
! [M: nat,N4: nat] :
( ( finite_card_list_nat
@ ( collect_list_nat
@ ^ [L4: list_nat] :
( ( ( size_size_list_nat @ L4 )
= M )
& ( ( groups4561878855575611511st_nat @ L4 )
= N4 ) ) ) )
= ( binomial @ ( minus_minus_nat @ ( plus_plus_nat @ N4 @ M ) @ one_one_nat ) @ N4 ) ) ).
% card_length_sum_list
% Helper facts (13)
thf(help_If_2_1_If_001tf__a_T,axiom,
! [X: a,Y: a] :
( ( if_a @ $false @ X @ Y )
= Y ) ).
thf(help_If_1_1_If_001tf__a_T,axiom,
! [X: a,Y: a] :
( ( if_a @ $true @ X @ Y )
= X ) ).
thf(help_If_2_1_If_001t__Nat__Onat_T,axiom,
! [X: nat,Y: nat] :
( ( if_nat @ $false @ X @ Y )
= Y ) ).
thf(help_If_1_1_If_001t__Nat__Onat_T,axiom,
! [X: nat,Y: nat] :
( ( if_nat @ $true @ X @ Y )
= X ) ).
thf(help_If_2_1_If_001t__List__Olist_Itf__a_J_T,axiom,
! [X: list_a,Y: list_a] :
( ( if_list_a @ $false @ X @ Y )
= Y ) ).
thf(help_If_1_1_If_001t__List__Olist_Itf__a_J_T,axiom,
! [X: list_a,Y: list_a] :
( ( if_list_a @ $true @ X @ Y )
= X ) ).
thf(help_If_2_1_If_001t__List__Olist_It__Nat__Onat_J_T,axiom,
! [X: list_nat,Y: list_nat] :
( ( if_list_nat @ $false @ X @ Y )
= Y ) ).
thf(help_If_1_1_If_001t__List__Olist_It__Nat__Onat_J_T,axiom,
! [X: list_nat,Y: list_nat] :
( ( if_list_nat @ $true @ X @ Y )
= X ) ).
thf(help_If_2_1_If_001t__List__Olist_It__List__Olist_Itf__a_J_J_T,axiom,
! [X: list_list_a,Y: list_list_a] :
( ( if_list_list_a @ $false @ X @ Y )
= Y ) ).
thf(help_If_1_1_If_001t__List__Olist_It__List__Olist_Itf__a_J_J_T,axiom,
! [X: list_list_a,Y: list_list_a] :
( ( if_list_list_a @ $true @ X @ Y )
= X ) ).
thf(help_If_3_1_If_001t__List__Olist_It__List__Olist_It__Nat__Onat_J_J_T,axiom,
! [P: $o] :
( ( P = $true )
| ( P = $false ) ) ).
thf(help_If_2_1_If_001t__List__Olist_It__List__Olist_It__Nat__Onat_J_J_T,axiom,
! [X: list_list_nat,Y: list_list_nat] :
( ( if_list_list_nat @ $false @ X @ Y )
= Y ) ).
thf(help_If_1_1_If_001t__List__Olist_It__List__Olist_It__Nat__Onat_J_J_T,axiom,
! [X: list_list_nat,Y: list_list_nat] :
( ( if_list_list_nat @ $true @ X @ Y )
= X ) ).
% Conjectures (1)
thf(conj_0,conjecture,
( ( idle_list_a @ ( push_a @ x @ idle ) )
= ( cons_a @ x @ ( idle_list_a @ idle ) ) ) ).
%------------------------------------------------------------------------------