TPTP Problem File: SLH0039^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 : SCC_Bloemen_Sequential/0000_SCC_Bloemen_Sequential/prob_02774_095345__6460392_1 [Des23]
% Status : Theorem
% Rating : ? v8.2.0
% Syntax : Number of formulae : 1560 ( 736 unt; 279 typ; 0 def)
% Number of atoms : 3337 (2098 equ; 0 cnn)
% Maximal formula atoms : 11 ( 2 avg)
% Number of connectives : 11306 ( 440 ~; 80 |; 376 &;9309 @)
% ( 0 <=>;1101 =>; 0 <=; 0 <~>)
% Maximal formula depth : 23 ( 5 avg)
% Number of types : 16 ( 15 usr)
% Number of type conns : 1119 (1119 >; 0 *; 0 +; 0 <<)
% Number of symbols : 267 ( 264 usr; 12 con; 0-4 aty)
% Number of variables : 3568 ( 176 ^;3082 !; 310 ?;3568 :)
% SPC : TH0_THM_EQU_NAR
% Comments : This file was generated by Isabelle (most likely Sledgehammer)
% 2023-01-19 08:54:17.044
%------------------------------------------------------------------------------
% Could-be-implicit typings (15)
thf(ty_n_t__SCC____Bloemen____Sequential__Oenv__Oenv____ext_Itf__v_Mt__Product____Type__Ounit_J,type,
sCC_Bl1394983891496994913t_unit: $tType ).
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__List__Olist_It__List__Olist_It__List__Olist_Itf__v_J_J_J,type,
list_list_list_v: $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__v_J_J,type,
list_list_v: $tType ).
thf(ty_n_t__Set__Oset_It__List__Olist_Itf__v_J_J,type,
set_list_v: $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__v_J,type,
list_v: $tType ).
thf(ty_n_t__Set__Oset_Itf__v_J,type,
set_v: $tType ).
thf(ty_n_t__Num__Onum,type,
num: $tType ).
thf(ty_n_t__Nat__Onat,type,
nat: $tType ).
thf(ty_n_tf__v,type,
v: $tType ).
% Explicit typings (264)
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__v,type,
bNF_Greatest_Shift_v: set_list_v > v > set_list_v ).
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__v,type,
bNF_Greatest_Succ_v: set_list_v > list_v > set_v ).
thf(sy_c_Finite__Set_Ocard_001t__Nat__Onat,type,
finite_card_nat: set_nat > nat ).
thf(sy_c_Finite__Set_Ocard_001tf__v,type,
finite_card_v: set_v > 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__List__Olist_Itf__v_J,type,
finite_finite_list_v: set_list_v > $o ).
thf(sy_c_Finite__Set_Ofinite_001t__Nat__Onat,type,
finite_finite_nat: set_nat > $o ).
thf(sy_c_Finite__Set_Ofinite_001tf__v,type,
finite_finite_v: set_v > $o ).
thf(sy_c_Fun_Ocomp_001t__List__Olist_It__Nat__Onat_J_001t__List__Olist_It__Nat__Onat_J_001t__List__Olist_It__Nat__Onat_J,type,
comp_l7223822213492037765st_nat: ( list_nat > list_nat ) > ( list_nat > list_nat ) > list_nat > list_nat ).
thf(sy_c_Fun_Ocomp_001t__List__Olist_It__Nat__Onat_J_001t__Nat__Onat_001t__List__Olist_It__Nat__Onat_J,type,
comp_l5285636708041795445st_nat: ( list_nat > nat ) > ( list_nat > list_nat ) > list_nat > nat ).
thf(sy_c_Fun_Ocomp_001t__Nat__Onat_001_Eo_001t__Nat__Onat,type,
comp_nat_o_nat: ( nat > $o ) > ( nat > nat ) > nat > $o ).
thf(sy_c_Fun_Ocomp_001t__Nat__Onat_001t__Nat__Onat_001t__Nat__Onat,type,
comp_nat_nat_nat: ( nat > nat ) > ( nat > nat ) > nat > nat ).
thf(sy_c_Fun_Ofun__upd_001t__Nat__Onat_001t__Nat__Onat,type,
fun_upd_nat_nat: ( nat > nat ) > nat > nat > nat > nat ).
thf(sy_c_Fun_Oinj__on_001t__List__Olist_It__Nat__Onat_J_001t__List__Olist_It__Nat__Onat_J,type,
inj_on3049792774292151987st_nat: ( list_nat > list_nat ) > set_list_nat > $o ).
thf(sy_c_Fun_Oinj__on_001t__Nat__Onat_001t__Nat__Onat,type,
inj_on_nat_nat: ( nat > 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_Ominus__class_Ominus_001t__Set__Oset_It__Nat__Onat_J,type,
minus_minus_set_nat: set_nat > set_nat > set_nat ).
thf(sy_c_Groups_Omonoid_001t__List__Olist_It__List__Olist_It__Nat__Onat_J_J,type,
monoid_list_list_nat: ( list_list_nat > list_list_nat > list_list_nat ) > list_list_nat > $o ).
thf(sy_c_Groups_Omonoid_001t__List__Olist_It__List__Olist_Itf__v_J_J,type,
monoid_list_list_v: ( list_list_v > list_list_v > list_list_v ) > list_list_v > $o ).
thf(sy_c_Groups_Omonoid_001t__List__Olist_It__Nat__Onat_J,type,
monoid_list_nat: ( list_nat > list_nat > list_nat ) > list_nat > $o ).
thf(sy_c_Groups_Omonoid_001t__List__Olist_Itf__v_J,type,
monoid_list_v: ( list_v > list_v > list_v ) > list_v > $o ).
thf(sy_c_Groups_Omonoid_001t__Nat__Onat,type,
monoid_nat: ( nat > nat > nat ) > nat > $o ).
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_Osemigroup_001t__List__Olist_It__Nat__Onat_J,type,
semigroup_list_nat: ( list_nat > list_nat > list_nat ) > $o ).
thf(sy_c_Groups_Osemigroup_001t__List__Olist_Itf__v_J,type,
semigroup_list_v: ( list_v > list_v > list_v ) > $o ).
thf(sy_c_Groups_Osemigroup_001t__Nat__Onat,type,
semigroup_nat: ( nat > nat > nat ) > $o ).
thf(sy_c_Groups_Ozero__class_Ozero_001t__Nat__Onat,type,
zero_zero_nat: nat ).
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__v_J,type,
if_list_v: $o > list_v > list_v > list_v ).
thf(sy_c_If_001t__Nat__Onat,type,
if_nat: $o > nat > nat > nat ).
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__v_J,type,
inf_inf_set_v: set_v > set_v > set_v ).
thf(sy_c_Lattices_Osup__class_Osup_001t__Nat__Onat,type,
sup_sup_nat: nat > nat > nat ).
thf(sy_c_Lattices_Osup__class_Osup_001t__Set__Oset_It__Nat__Onat_J,type,
sup_sup_set_nat: set_nat > set_nat > set_nat ).
thf(sy_c_Lattices_Osup__class_Osup_001t__Set__Oset_Itf__v_J,type,
sup_sup_set_v: set_v > set_v > set_v ).
thf(sy_c_Lattices__Big_Olinorder__class_OMin_001t__Nat__Onat,type,
lattic8721135487736765967in_nat: set_nat > nat ).
thf(sy_c_Lattices__Big_Osemilattice__sup__class_OSup__fin_001t__Nat__Onat,type,
lattic1093996805478795353in_nat: set_nat > nat ).
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__v_J,type,
append_list_v: list_list_v > list_list_v > list_list_v ).
thf(sy_c_List_Oappend_001t__Nat__Onat,type,
append_nat: list_nat > list_nat > list_nat ).
thf(sy_c_List_Oappend_001tf__v,type,
append_v: list_v > list_v > list_v ).
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_Obind_001t__List__Olist_It__Nat__Onat_J_001t__Nat__Onat,type,
bind_list_nat_nat: list_list_nat > ( list_nat > list_nat ) > list_nat ).
thf(sy_c_List_Obind_001t__List__Olist_It__Nat__Onat_J_001tf__v,type,
bind_list_nat_v: list_list_nat > ( list_nat > list_v ) > list_v ).
thf(sy_c_List_Obind_001t__Nat__Onat_001t__List__Olist_It__Nat__Onat_J,type,
bind_nat_list_nat: list_nat > ( nat > list_list_nat ) > list_list_nat ).
thf(sy_c_List_Obind_001t__Nat__Onat_001t__List__Olist_Itf__v_J,type,
bind_nat_list_v: list_nat > ( nat > list_list_v ) > list_list_v ).
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_001t__Nat__Onat_001tf__v,type,
bind_nat_v: list_nat > ( nat > list_v ) > list_v ).
thf(sy_c_List_Obind_001tf__v_001t__List__Olist_It__Nat__Onat_J,type,
bind_v_list_nat: list_v > ( v > list_list_nat ) > list_list_nat ).
thf(sy_c_List_Obind_001tf__v_001t__List__Olist_Itf__v_J,type,
bind_v_list_v: list_v > ( v > list_list_v ) > list_list_v ).
thf(sy_c_List_Obind_001tf__v_001t__Nat__Onat,type,
bind_v_nat: list_v > ( v > list_nat ) > list_nat ).
thf(sy_c_List_Obind_001tf__v_001tf__v,type,
bind_v_v: list_v > ( v > list_v ) > list_v ).
thf(sy_c_List_Obutlast_001t__Nat__Onat,type,
butlast_nat: list_nat > list_nat ).
thf(sy_c_List_Obutlast_001tf__v,type,
butlast_v: list_v > list_v ).
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__v_J,type,
concat_list_v: list_list_list_v > list_list_v ).
thf(sy_c_List_Oconcat_001t__Nat__Onat,type,
concat_nat: list_list_nat > list_nat ).
thf(sy_c_List_Oconcat_001tf__v,type,
concat_v: list_list_v > list_v ).
thf(sy_c_List_Ocoset_001t__Nat__Onat,type,
coset_nat: list_nat > set_nat ).
thf(sy_c_List_Ocoset_001tf__v,type,
coset_v: list_v > set_v ).
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__v_J,type,
distinct_list_v: list_list_v > $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__v,type,
distinct_v: list_v > $o ).
thf(sy_c_List_Odistinct__adj_001t__Nat__Onat,type,
distinct_adj_nat: list_nat > $o ).
thf(sy_c_List_Odistinct__adj_001tf__v,type,
distinct_adj_v: list_v > $o ).
thf(sy_c_List_Odrop_001t__Nat__Onat,type,
drop_nat: nat > list_nat > list_nat ).
thf(sy_c_List_Odrop_001tf__v,type,
drop_v: nat > list_v > list_v ).
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__Nat__Onat,type,
filter_nat: ( nat > $o ) > list_nat > list_nat ).
thf(sy_c_List_Ofilter_001tf__v,type,
filter_v: ( v > $o ) > list_v > list_v ).
thf(sy_c_List_Ofold_001t__List__Olist_It__Nat__Onat_J_001t__List__Olist_It__Nat__Onat_J,type,
fold_l5850465621530151245st_nat: ( list_nat > list_nat > list_nat ) > list_list_nat > list_nat > list_nat ).
thf(sy_c_List_Ofold_001t__List__Olist_Itf__v_J_001t__List__Olist_Itf__v_J,type,
fold_list_v_list_v: ( list_v > list_v > list_v ) > list_list_v > list_v > list_v ).
thf(sy_c_List_Ofold_001t__Nat__Onat_001t__List__Olist_It__Nat__Onat_J,type,
fold_nat_list_nat: ( nat > list_nat > list_nat ) > list_nat > list_nat > list_nat ).
thf(sy_c_List_Ofold_001t__Nat__Onat_001t__Nat__Onat,type,
fold_nat_nat: ( nat > nat > nat ) > list_nat > nat > nat ).
thf(sy_c_List_Ofold_001t__Nat__Onat_001t__Set__Oset_It__Nat__Onat_J,type,
fold_nat_set_nat: ( nat > set_nat > set_nat ) > list_nat > set_nat > set_nat ).
thf(sy_c_List_Ofold_001tf__v_001t__List__Olist_Itf__v_J,type,
fold_v_list_v: ( v > list_v > list_v ) > list_v > list_v > list_v ).
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_Ofolding__insort__key_001t__Nat__Onat_001tf__v,type,
foldin508877545616633820_nat_v: ( nat > nat > $o ) > ( nat > nat > $o ) > set_v > ( v > 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__List__Olist_Itf__v_J_001t__List__Olist_Itf__v_J,type,
foldr_list_v_list_v: ( list_v > list_v > list_v ) > list_list_v > list_v > list_v ).
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__List__Olist_It__Nat__Onat_J,type,
gen_length_list_nat: nat > list_list_nat > nat ).
thf(sy_c_List_Ogen__length_001t__List__Olist_Itf__v_J,type,
gen_length_list_v: nat > list_list_v > 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__v,type,
gen_length_v: nat > list_v > nat ).
thf(sy_c_List_Oinsert_001t__Nat__Onat,type,
insert_nat: nat > list_nat > list_nat ).
thf(sy_c_List_Oinsert_001tf__v,type,
insert_v: v > list_v > list_v ).
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__v_J,type,
last_list_v: list_list_v > list_v ).
thf(sy_c_List_Olast_001t__Nat__Onat,type,
last_nat: list_nat > nat ).
thf(sy_c_List_Olast_001tf__v,type,
last_v: list_v > v ).
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_Osorted__key__list__of__set_001t__Nat__Onat_001tf__v,type,
sorted2884982002246595647_nat_v: ( nat > nat > $o ) > ( v > nat ) > set_v > list_v ).
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_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__v_J,type,
cons_list_v: list_v > list_list_v > list_list_v ).
thf(sy_c_List_Olist_OCons_001t__Nat__Onat,type,
cons_nat: nat > list_nat > list_nat ).
thf(sy_c_List_Olist_OCons_001tf__v,type,
cons_v: v > list_v > list_v ).
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__v_J,type,
nil_list_v: list_list_v ).
thf(sy_c_List_Olist_ONil_001t__Nat__Onat,type,
nil_nat: list_nat ).
thf(sy_c_List_Olist_ONil_001tf__v,type,
nil_v: list_v ).
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_001_Eo_001tf__v,type,
case_list_o_v: $o > ( v > list_v > $o ) > list_v > $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__v_J_J_001tf__v,type,
case_l8732251450953275674st_v_v: list_list_v > ( v > list_v > list_list_v ) > list_v > list_list_v ).
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__v_J_001tf__v,type,
case_list_list_v_v: list_v > ( v > list_v > list_v ) > list_v > list_v ).
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__v_J,type,
hd_list_v: list_list_v > list_v ).
thf(sy_c_List_Olist_Ohd_001t__Nat__Onat,type,
hd_nat: list_nat > nat ).
thf(sy_c_List_Olist_Ohd_001tf__v,type,
hd_v: list_v > v ).
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__v_J_001t__List__Olist_It__List__Olist_Itf__v_J_J,type,
map_li6834124163019790474list_v: ( list_v > list_list_v ) > list_list_v > list_list_list_v ).
thf(sy_c_List_Olist_Omap_001t__List__Olist_Itf__v_J_001t__List__Olist_Itf__v_J,type,
map_list_v_list_v: ( list_v > list_v ) > list_list_v > list_list_v ).
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__v,type,
map_nat_v: ( nat > v ) > list_nat > list_v ).
thf(sy_c_List_Olist_Omap_001tf__v_001t__Nat__Onat,type,
map_v_nat: ( v > nat ) > list_v > list_nat ).
thf(sy_c_List_Olist_Omap_001tf__v_001tf__v,type,
map_v_v: ( v > v ) > list_v > list_v ).
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__v_J,type,
set_list_v2: list_list_v > set_list_v ).
thf(sy_c_List_Olist_Oset_001t__Nat__Onat,type,
set_nat2: list_nat > set_nat ).
thf(sy_c_List_Olist_Oset_001tf__v,type,
set_v2: list_v > set_v ).
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__v,type,
size_list_v: ( v > nat ) > list_v > nat ).
thf(sy_c_List_Olist_Otl_001t__Nat__Onat,type,
tl_nat: list_nat > list_nat ).
thf(sy_c_List_Olist_Otl_001tf__v,type,
tl_v: list_v > list_v ).
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__v_J,type,
list_ex1_list_v: ( list_v > $o ) > list_list_v > $o ).
thf(sy_c_List_Olist__ex1_001t__Nat__Onat,type,
list_ex1_nat: ( nat > $o ) > list_nat > $o ).
thf(sy_c_List_Olist__ex1_001tf__v,type,
list_ex1_v: ( v > $o ) > list_v > $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__v,type,
list_ex_v: ( v > $o ) > list_v > $o ).
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__v,type,
list_update_v: list_v > nat > v > list_v ).
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__v,type,
listrelp_nat_v: ( nat > v > $o ) > list_nat > list_v > $o ).
thf(sy_c_List_Olistrelp_001tf__v_001t__Nat__Onat,type,
listrelp_v_nat: ( v > nat > $o ) > list_v > list_nat > $o ).
thf(sy_c_List_Olistrelp_001tf__v_001tf__v,type,
listrelp_v_v: ( v > v > $o ) > list_v > list_v > $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_001tf__v_001t__Nat__Onat,type,
map_ta6985047226444915118_v_nat: ( v > nat ) > list_v > list_nat > list_nat ).
thf(sy_c_List_Omaps_001t__List__Olist_It__Nat__Onat_J_001t__Nat__Onat,type,
maps_list_nat_nat: ( list_nat > list_nat ) > list_list_nat > list_nat ).
thf(sy_c_List_Omaps_001t__List__Olist_It__Nat__Onat_J_001tf__v,type,
maps_list_nat_v: ( list_nat > list_v ) > list_list_nat > list_v ).
thf(sy_c_List_Omaps_001t__Nat__Onat_001t__List__Olist_It__Nat__Onat_J,type,
maps_nat_list_nat: ( nat > list_list_nat ) > list_nat > list_list_nat ).
thf(sy_c_List_Omaps_001t__Nat__Onat_001t__List__Olist_Itf__v_J,type,
maps_nat_list_v: ( nat > list_list_v ) > list_nat > list_list_v ).
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_001t__Nat__Onat_001tf__v,type,
maps_nat_v: ( nat > list_v ) > list_nat > list_v ).
thf(sy_c_List_Omaps_001tf__v_001t__List__Olist_It__Nat__Onat_J,type,
maps_v_list_nat: ( v > list_list_nat ) > list_v > list_list_nat ).
thf(sy_c_List_Omaps_001tf__v_001t__List__Olist_Itf__v_J,type,
maps_v_list_v: ( v > list_list_v ) > list_v > list_list_v ).
thf(sy_c_List_Omaps_001tf__v_001t__Nat__Onat,type,
maps_v_nat: ( v > list_nat ) > list_v > list_nat ).
thf(sy_c_List_Omaps_001tf__v_001tf__v,type,
maps_v_v: ( v > list_v ) > list_v > list_v ).
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__v_J,type,
member_list_v: list_list_v > list_v > $o ).
thf(sy_c_List_Omember_001t__Nat__Onat,type,
member_nat: list_nat > nat > $o ).
thf(sy_c_List_Omember_001tf__v,type,
member_v: list_v > v > $o ).
thf(sy_c_List_Omin__list_001t__Nat__Onat,type,
min_list_nat: list_nat > nat ).
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__v,type,
n_lists_v: nat > list_v > list_list_v ).
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__Nat__Onat,type,
nth_nat: list_nat > nat > nat ).
thf(sy_c_List_Onth_001tf__v,type,
nth_v: list_v > nat > v ).
thf(sy_c_List_Onths_001t__Nat__Onat,type,
nths_nat: list_nat > set_nat > list_nat ).
thf(sy_c_List_Onths_001tf__v,type,
nths_v: list_v > set_nat > list_v ).
thf(sy_c_List_Onull_001t__List__Olist_It__Nat__Onat_J,type,
null_list_nat: list_list_nat > $o ).
thf(sy_c_List_Onull_001t__List__Olist_Itf__v_J,type,
null_list_v: list_list_v > $o ).
thf(sy_c_List_Onull_001t__Nat__Onat,type,
null_nat: list_nat > $o ).
thf(sy_c_List_Onull_001tf__v,type,
null_v: list_v > $o ).
thf(sy_c_List_Oord_Olexordp_001t__List__Olist_It__Nat__Onat_J,type,
lexordp_list_nat: ( list_nat > list_nat > $o ) > list_list_nat > list_list_nat > $o ).
thf(sy_c_List_Oord_Olexordp_001t__List__Olist_Itf__v_J,type,
lexordp_list_v: ( list_v > list_v > $o ) > list_list_v > list_list_v > $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__v,type,
lexordp_v: ( v > v > $o ) > list_v > list_v > $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__v,type,
lexordp_eq_v: ( v > v > $o ) > list_v > list_v > $o ).
thf(sy_c_List_Oord__class_Olexordp_001t__Nat__Onat,type,
ord_lexordp_nat: list_nat > list_nat > $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__v,type,
product_lists_v: list_list_v > list_list_v ).
thf(sy_c_List_Oremdups__adj_001t__Nat__Onat,type,
remdups_adj_nat: list_nat > list_nat ).
thf(sy_c_List_Oremdups__adj_001tf__v,type,
remdups_adj_v: list_v > list_v ).
thf(sy_c_List_Oremove1_001t__Nat__Onat,type,
remove1_nat: nat > list_nat > list_nat ).
thf(sy_c_List_Oremove1_001tf__v,type,
remove1_v: v > list_v > list_v ).
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__v_J,type,
removeAll_list_v: list_v > list_list_v > list_list_v ).
thf(sy_c_List_OremoveAll_001t__Nat__Onat,type,
removeAll_nat: nat > list_nat > list_nat ).
thf(sy_c_List_OremoveAll_001tf__v,type,
removeAll_v: v > list_v > list_v ).
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__v_J,type,
replicate_list_v: nat > list_v > list_list_v ).
thf(sy_c_List_Oreplicate_001t__Nat__Onat,type,
replicate_nat: nat > nat > list_nat ).
thf(sy_c_List_Oreplicate_001tf__v,type,
replicate_v: nat > v > list_v ).
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__v_J,type,
rev_list_v: list_list_v > list_list_v ).
thf(sy_c_List_Orev_001t__Nat__Onat,type,
rev_nat: list_nat > list_nat ).
thf(sy_c_List_Orev_001tf__v,type,
rev_v: list_v > list_v ).
thf(sy_c_List_Orotate1_001t__Nat__Onat,type,
rotate1_nat: list_nat > list_nat ).
thf(sy_c_List_Orotate1_001tf__v,type,
rotate1_v: list_v > list_v ).
thf(sy_c_List_Orotate_001t__Nat__Onat,type,
rotate_nat: nat > list_nat > list_nat ).
thf(sy_c_List_Orotate_001tf__v,type,
rotate_v: nat > list_v > list_v ).
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__v,type,
sorted_wrt_v: ( v > v > $o ) > list_v > $o ).
thf(sy_c_List_Osplice_001t__Nat__Onat,type,
splice_nat: list_nat > list_nat > list_nat ).
thf(sy_c_List_Osplice_001tf__v,type,
splice_v: list_v > list_v > list_v ).
thf(sy_c_List_Osubseqs_001t__Nat__Onat,type,
subseqs_nat: list_nat > list_list_nat ).
thf(sy_c_List_Osubseqs_001tf__v,type,
subseqs_v: list_v > list_list_v ).
thf(sy_c_List_Osuccessively_001t__Nat__Onat,type,
successively_nat: ( nat > nat > $o ) > list_nat > $o ).
thf(sy_c_List_Osuccessively_001tf__v,type,
successively_v: ( v > v > $o ) > list_v > $o ).
thf(sy_c_List_Otake_001t__Nat__Onat,type,
take_nat: nat > list_nat > list_nat ).
thf(sy_c_List_Otake_001tf__v,type,
take_v: nat > list_v > list_v ).
thf(sy_c_List_Otranspose_001t__Nat__Onat,type,
transpose_nat: list_list_nat > list_list_nat ).
thf(sy_c_List_Otranspose_001tf__v,type,
transpose_v: list_list_v > list_list_v ).
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__Nat__Onat_J,type,
size_size_list_nat: list_nat > nat ).
thf(sy_c_Nat_Osize__class_Osize_001t__List__Olist_Itf__v_J,type,
size_size_list_v: list_v > 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__Nat__Onat_J,type,
bot_bot_set_nat: set_nat ).
thf(sy_c_Orderings_Obot__class_Obot_001t__Set__Oset_Itf__v_J,type,
bot_bot_set_v: set_v ).
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__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__v_J,type,
ord_less_eq_set_v: set_v > set_v > $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_SCC__Bloemen__Sequential_Oenv_Ostack_001tf__v_001t__Product____Type__Ounit,type,
sCC_Bl8828226123343373779t_unit: sCC_Bl1394983891496994913t_unit > list_v ).
thf(sy_c_SCC__Bloemen__Sequential_Oenv_Ostack__update_001tf__v_001t__Product____Type__Ounit,type,
sCC_Bl349061681862590396t_unit: ( list_v > list_v ) > sCC_Bl1394983891496994913t_unit > sCC_Bl1394983891496994913t_unit ).
thf(sy_c_SCC__Bloemen__Sequential_Ograph_Osub__env_001tf__v_001t__Product____Type__Ounit_001t__Product____Type__Ounit,type,
sCC_Bl5768913643336123637t_unit: sCC_Bl1394983891496994913t_unit > sCC_Bl1394983891496994913t_unit > $o ).
thf(sy_c_SCC__Bloemen__Sequential_Oprecedes_001t__List__Olist_It__Nat__Onat_J,type,
sCC_Bl7466548457010542172st_nat: list_nat > list_nat > list_list_nat > $o ).
thf(sy_c_SCC__Bloemen__Sequential_Oprecedes_001t__List__Olist_Itf__v_J,type,
sCC_Bl4515391157575263389list_v: list_v > list_v > list_list_v > $o ).
thf(sy_c_SCC__Bloemen__Sequential_Oprecedes_001t__Nat__Onat,type,
sCC_Bl437264838276925772es_nat: nat > nat > list_nat > $o ).
thf(sy_c_SCC__Bloemen__Sequential_Oprecedes_001tf__v,type,
sCC_Bl4022239298816431255edes_v: v > v > list_v > $o ).
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__v_J,type,
collect_list_v: ( list_v > $o ) > set_list_v ).
thf(sy_c_Set_OCollect_001t__Nat__Onat,type,
collect_nat: ( nat > $o ) > set_nat ).
thf(sy_c_Set_OCollect_001tf__v,type,
collect_v: ( v > $o ) > set_v ).
thf(sy_c_Set_Oinsert_001t__Nat__Onat,type,
insert_nat2: nat > set_nat > set_nat ).
thf(sy_c_Set_Ois__empty_001t__Nat__Onat,type,
is_empty_nat: set_nat > $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__v,type,
the_elem_v: set_v > v ).
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_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__v_J,type,
member_list_v2: list_v > set_list_v > $o ).
thf(sy_c_member_001t__Nat__Onat,type,
member_nat2: nat > set_nat > $o ).
thf(sy_c_member_001tf__v,type,
member_v2: v > set_v > $o ).
thf(sy_v_ea____,type,
ea: sCC_Bl1394983891496994913t_unit ).
thf(sy_v_vertices,type,
vertices: set_v ).
% Relevant facts (1273)
thf(fact_0_sub__env__trans,axiom,
! [E: sCC_Bl1394983891496994913t_unit,E2: sCC_Bl1394983891496994913t_unit,E3: sCC_Bl1394983891496994913t_unit] :
( ( sCC_Bl5768913643336123637t_unit @ E @ E2 )
=> ( ( sCC_Bl5768913643336123637t_unit @ E2 @ E3 )
=> ( sCC_Bl5768913643336123637t_unit @ E @ E3 ) ) ) ).
% sub_env_trans
thf(fact_1_calculation_I3_J,axiom,
sCC_Bl5768913643336123637t_unit @ ea @ ea ).
% calculation(3)
thf(fact_2_calculation_I6_J,axiom,
( ( sCC_Bl8828226123343373779t_unit @ ea )
!= nil_v ) ).
% calculation(6)
thf(fact_3_append_Oassoc,axiom,
! [A: list_list_nat,B: list_list_nat,C: list_list_nat] :
( ( append_list_nat @ ( append_list_nat @ A @ B ) @ C )
= ( append_list_nat @ A @ ( append_list_nat @ B @ C ) ) ) ).
% append.assoc
thf(fact_4_append_Oassoc,axiom,
! [A: list_list_v,B: list_list_v,C: list_list_v] :
( ( append_list_v @ ( append_list_v @ A @ B ) @ C )
= ( append_list_v @ A @ ( append_list_v @ B @ C ) ) ) ).
% append.assoc
thf(fact_5_append_Oassoc,axiom,
! [A: list_v,B: list_v,C: list_v] :
( ( append_v @ ( append_v @ A @ B ) @ C )
= ( append_v @ A @ ( append_v @ B @ C ) ) ) ).
% append.assoc
thf(fact_6_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_7_append__assoc,axiom,
! [Xs: list_list_nat,Ys: list_list_nat,Zs: list_list_nat] :
( ( append_list_nat @ ( append_list_nat @ Xs @ Ys ) @ Zs )
= ( append_list_nat @ Xs @ ( append_list_nat @ Ys @ Zs ) ) ) ).
% append_assoc
thf(fact_8_append__assoc,axiom,
! [Xs: list_list_v,Ys: list_list_v,Zs: list_list_v] :
( ( append_list_v @ ( append_list_v @ Xs @ Ys ) @ Zs )
= ( append_list_v @ Xs @ ( append_list_v @ Ys @ Zs ) ) ) ).
% append_assoc
thf(fact_9_append__assoc,axiom,
! [Xs: list_v,Ys: list_v,Zs: list_v] :
( ( append_v @ ( append_v @ Xs @ Ys ) @ Zs )
= ( append_v @ Xs @ ( append_v @ Ys @ Zs ) ) ) ).
% append_assoc
thf(fact_10_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_11_append__same__eq,axiom,
! [Ys: list_list_nat,Xs: list_list_nat,Zs: list_list_nat] :
( ( ( append_list_nat @ Ys @ Xs )
= ( append_list_nat @ Zs @ Xs ) )
= ( Ys = Zs ) ) ).
% append_same_eq
thf(fact_12_append__same__eq,axiom,
! [Ys: list_list_v,Xs: list_list_v,Zs: list_list_v] :
( ( ( append_list_v @ Ys @ Xs )
= ( append_list_v @ Zs @ Xs ) )
= ( Ys = Zs ) ) ).
% append_same_eq
thf(fact_13_append__same__eq,axiom,
! [Ys: list_v,Xs: list_v,Zs: list_v] :
( ( ( append_v @ Ys @ Xs )
= ( append_v @ Zs @ Xs ) )
= ( Ys = Zs ) ) ).
% append_same_eq
thf(fact_14_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_15_same__append__eq,axiom,
! [Xs: list_list_nat,Ys: list_list_nat,Zs: list_list_nat] :
( ( ( append_list_nat @ Xs @ Ys )
= ( append_list_nat @ Xs @ Zs ) )
= ( Ys = Zs ) ) ).
% same_append_eq
thf(fact_16_same__append__eq,axiom,
! [Xs: list_list_v,Ys: list_list_v,Zs: list_list_v] :
( ( ( append_list_v @ Xs @ Ys )
= ( append_list_v @ Xs @ Zs ) )
= ( Ys = Zs ) ) ).
% same_append_eq
thf(fact_17_same__append__eq,axiom,
! [Xs: list_v,Ys: list_v,Zs: list_v] :
( ( ( append_v @ Xs @ Ys )
= ( append_v @ Xs @ Zs ) )
= ( Ys = Zs ) ) ).
% same_append_eq
thf(fact_18_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_19_append__eq__appendI,axiom,
! [Xs: list_list_nat,Xs1: list_list_nat,Zs: list_list_nat,Ys: list_list_nat,Us: list_list_nat] :
( ( ( append_list_nat @ Xs @ Xs1 )
= Zs )
=> ( ( Ys
= ( append_list_nat @ Xs1 @ Us ) )
=> ( ( append_list_nat @ Xs @ Ys )
= ( append_list_nat @ Zs @ Us ) ) ) ) ).
% append_eq_appendI
thf(fact_20_append__eq__appendI,axiom,
! [Xs: list_list_v,Xs1: list_list_v,Zs: list_list_v,Ys: list_list_v,Us: list_list_v] :
( ( ( append_list_v @ Xs @ Xs1 )
= Zs )
=> ( ( Ys
= ( append_list_v @ Xs1 @ Us ) )
=> ( ( append_list_v @ Xs @ Ys )
= ( append_list_v @ Zs @ Us ) ) ) ) ).
% append_eq_appendI
thf(fact_21_append__eq__appendI,axiom,
! [Xs: list_v,Xs1: list_v,Zs: list_v,Ys: list_v,Us: list_v] :
( ( ( append_v @ Xs @ Xs1 )
= Zs )
=> ( ( Ys
= ( append_v @ Xs1 @ Us ) )
=> ( ( append_v @ Xs @ Ys )
= ( append_v @ Zs @ Us ) ) ) ) ).
% append_eq_appendI
thf(fact_22_append__eq__appendI,axiom,
! [Xs: list_nat,Xs1: list_nat,Zs: list_nat,Ys: list_nat,Us: list_nat] :
( ( ( append_nat @ Xs @ Xs1 )
= Zs )
=> ( ( Ys
= ( append_nat @ Xs1 @ Us ) )
=> ( ( append_nat @ Xs @ Ys )
= ( append_nat @ Zs @ Us ) ) ) ) ).
% append_eq_appendI
thf(fact_23_append__eq__append__conv2,axiom,
! [Xs: list_list_nat,Ys: list_list_nat,Zs: list_list_nat,Ts: list_list_nat] :
( ( ( append_list_nat @ Xs @ Ys )
= ( append_list_nat @ Zs @ Ts ) )
= ( ? [Us2: list_list_nat] :
( ( ( Xs
= ( append_list_nat @ Zs @ Us2 ) )
& ( ( append_list_nat @ Us2 @ Ys )
= Ts ) )
| ( ( ( append_list_nat @ Xs @ Us2 )
= Zs )
& ( Ys
= ( append_list_nat @ Us2 @ Ts ) ) ) ) ) ) ).
% append_eq_append_conv2
thf(fact_24_append__eq__append__conv2,axiom,
! [Xs: list_list_v,Ys: list_list_v,Zs: list_list_v,Ts: list_list_v] :
( ( ( append_list_v @ Xs @ Ys )
= ( append_list_v @ Zs @ Ts ) )
= ( ? [Us2: list_list_v] :
( ( ( Xs
= ( append_list_v @ Zs @ Us2 ) )
& ( ( append_list_v @ Us2 @ Ys )
= Ts ) )
| ( ( ( append_list_v @ Xs @ Us2 )
= Zs )
& ( Ys
= ( append_list_v @ Us2 @ Ts ) ) ) ) ) ) ).
% append_eq_append_conv2
thf(fact_25_append__eq__append__conv2,axiom,
! [Xs: list_v,Ys: list_v,Zs: list_v,Ts: list_v] :
( ( ( append_v @ Xs @ Ys )
= ( append_v @ Zs @ Ts ) )
= ( ? [Us2: list_v] :
( ( ( Xs
= ( append_v @ Zs @ Us2 ) )
& ( ( append_v @ Us2 @ Ys )
= Ts ) )
| ( ( ( append_v @ Xs @ Us2 )
= Zs )
& ( Ys
= ( append_v @ Us2 @ Ts ) ) ) ) ) ) ).
% append_eq_append_conv2
thf(fact_26_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 ) )
= ( ? [Us2: list_nat] :
( ( ( Xs
= ( append_nat @ Zs @ Us2 ) )
& ( ( append_nat @ Us2 @ Ys )
= Ts ) )
| ( ( ( append_nat @ Xs @ Us2 )
= Zs )
& ( Ys
= ( append_nat @ Us2 @ Ts ) ) ) ) ) ) ).
% append_eq_append_conv2
thf(fact_27_fold__congs_I7_J,axiom,
! [R: sCC_Bl1394983891496994913t_unit,R2: sCC_Bl1394983891496994913t_unit,V: list_v,F: list_v > list_v,F2: list_v > list_v] :
( ( R = R2 )
=> ( ( ( sCC_Bl8828226123343373779t_unit @ R2 )
= V )
=> ( ! [V2: list_v] :
( ( V = V2 )
=> ( ( F @ V2 )
= ( F2 @ V2 ) ) )
=> ( ( sCC_Bl349061681862590396t_unit @ F @ R )
= ( sCC_Bl349061681862590396t_unit @ F2 @ R2 ) ) ) ) ) ).
% fold_congs(7)
thf(fact_28_unfold__congs_I7_J,axiom,
! [R: sCC_Bl1394983891496994913t_unit,R2: sCC_Bl1394983891496994913t_unit,V: list_v,F: list_v > list_v,F2: list_v > list_v] :
( ( R = R2 )
=> ( ( ( sCC_Bl8828226123343373779t_unit @ R2 )
= V )
=> ( ! [V2: list_v] :
( ( V2 = V )
=> ( ( F @ V2 )
= ( F2 @ V2 ) ) )
=> ( ( sCC_Bl349061681862590396t_unit @ F @ R )
= ( sCC_Bl349061681862590396t_unit @ F2 @ R2 ) ) ) ) ) ).
% unfold_congs(7)
thf(fact_29_precedes__append__left,axiom,
! [X: list_nat,Y: list_nat,Xs: list_list_nat,Ys: list_list_nat] :
( ( sCC_Bl7466548457010542172st_nat @ X @ Y @ Xs )
=> ( sCC_Bl7466548457010542172st_nat @ X @ Y @ ( append_list_nat @ Ys @ Xs ) ) ) ).
% precedes_append_left
thf(fact_30_precedes__append__left,axiom,
! [X: list_v,Y: list_v,Xs: list_list_v,Ys: list_list_v] :
( ( sCC_Bl4515391157575263389list_v @ X @ Y @ Xs )
=> ( sCC_Bl4515391157575263389list_v @ X @ Y @ ( append_list_v @ Ys @ Xs ) ) ) ).
% precedes_append_left
thf(fact_31_precedes__append__left,axiom,
! [X: v,Y: v,Xs: list_v,Ys: list_v] :
( ( sCC_Bl4022239298816431255edes_v @ X @ Y @ Xs )
=> ( sCC_Bl4022239298816431255edes_v @ X @ Y @ ( append_v @ Ys @ Xs ) ) ) ).
% precedes_append_left
thf(fact_32_precedes__append__left,axiom,
! [X: nat,Y: nat,Xs: list_nat,Ys: list_nat] :
( ( sCC_Bl437264838276925772es_nat @ X @ Y @ Xs )
=> ( sCC_Bl437264838276925772es_nat @ X @ Y @ ( append_nat @ Ys @ Xs ) ) ) ).
% precedes_append_left
thf(fact_33_precedes__append__right,axiom,
! [X: list_nat,Y: list_nat,Xs: list_list_nat,Ys: list_list_nat] :
( ( sCC_Bl7466548457010542172st_nat @ X @ Y @ Xs )
=> ( sCC_Bl7466548457010542172st_nat @ X @ Y @ ( append_list_nat @ Xs @ Ys ) ) ) ).
% precedes_append_right
thf(fact_34_precedes__append__right,axiom,
! [X: list_v,Y: list_v,Xs: list_list_v,Ys: list_list_v] :
( ( sCC_Bl4515391157575263389list_v @ X @ Y @ Xs )
=> ( sCC_Bl4515391157575263389list_v @ X @ Y @ ( append_list_v @ Xs @ Ys ) ) ) ).
% precedes_append_right
thf(fact_35_precedes__append__right,axiom,
! [X: v,Y: v,Xs: list_v,Ys: list_v] :
( ( sCC_Bl4022239298816431255edes_v @ X @ Y @ Xs )
=> ( sCC_Bl4022239298816431255edes_v @ X @ Y @ ( append_v @ Xs @ Ys ) ) ) ).
% precedes_append_right
thf(fact_36_precedes__append__right,axiom,
! [X: nat,Y: nat,Xs: list_nat,Ys: list_nat] :
( ( sCC_Bl437264838276925772es_nat @ X @ Y @ Xs )
=> ( sCC_Bl437264838276925772es_nat @ X @ Y @ ( append_nat @ Xs @ Ys ) ) ) ).
% precedes_append_right
thf(fact_37_append__is__Nil__conv,axiom,
! [Xs: list_list_nat,Ys: list_list_nat] :
( ( ( append_list_nat @ Xs @ Ys )
= nil_list_nat )
= ( ( Xs = nil_list_nat )
& ( Ys = nil_list_nat ) ) ) ).
% append_is_Nil_conv
thf(fact_38_append__is__Nil__conv,axiom,
! [Xs: list_list_v,Ys: list_list_v] :
( ( ( append_list_v @ Xs @ Ys )
= nil_list_v )
= ( ( Xs = nil_list_v )
& ( Ys = nil_list_v ) ) ) ).
% append_is_Nil_conv
thf(fact_39_append__is__Nil__conv,axiom,
! [Xs: list_v,Ys: list_v] :
( ( ( append_v @ Xs @ Ys )
= nil_v )
= ( ( Xs = nil_v )
& ( Ys = nil_v ) ) ) ).
% append_is_Nil_conv
thf(fact_40_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_41_Nil__is__append__conv,axiom,
! [Xs: list_list_nat,Ys: list_list_nat] :
( ( nil_list_nat
= ( append_list_nat @ Xs @ Ys ) )
= ( ( Xs = nil_list_nat )
& ( Ys = nil_list_nat ) ) ) ).
% Nil_is_append_conv
thf(fact_42_Nil__is__append__conv,axiom,
! [Xs: list_list_v,Ys: list_list_v] :
( ( nil_list_v
= ( append_list_v @ Xs @ Ys ) )
= ( ( Xs = nil_list_v )
& ( Ys = nil_list_v ) ) ) ).
% Nil_is_append_conv
thf(fact_43_Nil__is__append__conv,axiom,
! [Xs: list_v,Ys: list_v] :
( ( nil_v
= ( append_v @ Xs @ Ys ) )
= ( ( Xs = nil_v )
& ( Ys = nil_v ) ) ) ).
% Nil_is_append_conv
thf(fact_44_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_45_self__append__conv2,axiom,
! [Y: list_list_nat,Xs: list_list_nat] :
( ( Y
= ( append_list_nat @ Xs @ Y ) )
= ( Xs = nil_list_nat ) ) ).
% self_append_conv2
thf(fact_46_self__append__conv2,axiom,
! [Y: list_list_v,Xs: list_list_v] :
( ( Y
= ( append_list_v @ Xs @ Y ) )
= ( Xs = nil_list_v ) ) ).
% self_append_conv2
thf(fact_47_self__append__conv2,axiom,
! [Y: list_v,Xs: list_v] :
( ( Y
= ( append_v @ Xs @ Y ) )
= ( Xs = nil_v ) ) ).
% self_append_conv2
thf(fact_48_self__append__conv2,axiom,
! [Y: list_nat,Xs: list_nat] :
( ( Y
= ( append_nat @ Xs @ Y ) )
= ( Xs = nil_nat ) ) ).
% self_append_conv2
thf(fact_49_append__self__conv2,axiom,
! [Xs: list_list_nat,Ys: list_list_nat] :
( ( ( append_list_nat @ Xs @ Ys )
= Ys )
= ( Xs = nil_list_nat ) ) ).
% append_self_conv2
thf(fact_50_append__self__conv2,axiom,
! [Xs: list_list_v,Ys: list_list_v] :
( ( ( append_list_v @ Xs @ Ys )
= Ys )
= ( Xs = nil_list_v ) ) ).
% append_self_conv2
thf(fact_51_append__self__conv2,axiom,
! [Xs: list_v,Ys: list_v] :
( ( ( append_v @ Xs @ Ys )
= Ys )
= ( Xs = nil_v ) ) ).
% append_self_conv2
thf(fact_52_append__self__conv2,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( ( append_nat @ Xs @ Ys )
= Ys )
= ( Xs = nil_nat ) ) ).
% append_self_conv2
thf(fact_53_self__append__conv,axiom,
! [Y: list_list_nat,Ys: list_list_nat] :
( ( Y
= ( append_list_nat @ Y @ Ys ) )
= ( Ys = nil_list_nat ) ) ).
% self_append_conv
thf(fact_54_self__append__conv,axiom,
! [Y: list_list_v,Ys: list_list_v] :
( ( Y
= ( append_list_v @ Y @ Ys ) )
= ( Ys = nil_list_v ) ) ).
% self_append_conv
thf(fact_55_self__append__conv,axiom,
! [Y: list_v,Ys: list_v] :
( ( Y
= ( append_v @ Y @ Ys ) )
= ( Ys = nil_v ) ) ).
% self_append_conv
thf(fact_56_self__append__conv,axiom,
! [Y: list_nat,Ys: list_nat] :
( ( Y
= ( append_nat @ Y @ Ys ) )
= ( Ys = nil_nat ) ) ).
% self_append_conv
thf(fact_57_append__self__conv,axiom,
! [Xs: list_list_nat,Ys: list_list_nat] :
( ( ( append_list_nat @ Xs @ Ys )
= Xs )
= ( Ys = nil_list_nat ) ) ).
% append_self_conv
thf(fact_58_append__self__conv,axiom,
! [Xs: list_list_v,Ys: list_list_v] :
( ( ( append_list_v @ Xs @ Ys )
= Xs )
= ( Ys = nil_list_v ) ) ).
% append_self_conv
thf(fact_59_append__self__conv,axiom,
! [Xs: list_v,Ys: list_v] :
( ( ( append_v @ Xs @ Ys )
= Xs )
= ( Ys = nil_v ) ) ).
% append_self_conv
thf(fact_60_append__self__conv,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( ( append_nat @ Xs @ Ys )
= Xs )
= ( Ys = nil_nat ) ) ).
% append_self_conv
thf(fact_61_append__Nil2,axiom,
! [Xs: list_list_nat] :
( ( append_list_nat @ Xs @ nil_list_nat )
= Xs ) ).
% append_Nil2
thf(fact_62_append__Nil2,axiom,
! [Xs: list_list_v] :
( ( append_list_v @ Xs @ nil_list_v )
= Xs ) ).
% append_Nil2
thf(fact_63_append__Nil2,axiom,
! [Xs: list_v] :
( ( append_v @ Xs @ nil_v )
= Xs ) ).
% append_Nil2
thf(fact_64_append__Nil2,axiom,
! [Xs: list_nat] :
( ( append_nat @ Xs @ nil_nat )
= Xs ) ).
% append_Nil2
thf(fact_65_append_Oright__neutral,axiom,
! [A: list_list_nat] :
( ( append_list_nat @ A @ nil_list_nat )
= A ) ).
% append.right_neutral
thf(fact_66_append_Oright__neutral,axiom,
! [A: list_list_v] :
( ( append_list_v @ A @ nil_list_v )
= A ) ).
% append.right_neutral
thf(fact_67_append_Oright__neutral,axiom,
! [A: list_v] :
( ( append_v @ A @ nil_v )
= A ) ).
% append.right_neutral
thf(fact_68_append_Oright__neutral,axiom,
! [A: list_nat] :
( ( append_nat @ A @ nil_nat )
= A ) ).
% append.right_neutral
thf(fact_69_eq__Nil__appendI,axiom,
! [Xs: list_list_nat,Ys: list_list_nat] :
( ( Xs = Ys )
=> ( Xs
= ( append_list_nat @ nil_list_nat @ Ys ) ) ) ).
% eq_Nil_appendI
thf(fact_70_eq__Nil__appendI,axiom,
! [Xs: list_list_v,Ys: list_list_v] :
( ( Xs = Ys )
=> ( Xs
= ( append_list_v @ nil_list_v @ Ys ) ) ) ).
% eq_Nil_appendI
thf(fact_71_eq__Nil__appendI,axiom,
! [Xs: list_v,Ys: list_v] :
( ( Xs = Ys )
=> ( Xs
= ( append_v @ nil_v @ Ys ) ) ) ).
% eq_Nil_appendI
thf(fact_72_eq__Nil__appendI,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( Xs = Ys )
=> ( Xs
= ( append_nat @ nil_nat @ Ys ) ) ) ).
% eq_Nil_appendI
thf(fact_73_append_Oleft__neutral,axiom,
! [A: list_list_nat] :
( ( append_list_nat @ nil_list_nat @ A )
= A ) ).
% append.left_neutral
thf(fact_74_append_Oleft__neutral,axiom,
! [A: list_list_v] :
( ( append_list_v @ nil_list_v @ A )
= A ) ).
% append.left_neutral
thf(fact_75_append_Oleft__neutral,axiom,
! [A: list_v] :
( ( append_v @ nil_v @ A )
= A ) ).
% append.left_neutral
thf(fact_76_append_Oleft__neutral,axiom,
! [A: list_nat] :
( ( append_nat @ nil_nat @ A )
= A ) ).
% append.left_neutral
thf(fact_77_append__Nil,axiom,
! [Ys: list_list_nat] :
( ( append_list_nat @ nil_list_nat @ Ys )
= Ys ) ).
% append_Nil
thf(fact_78_append__Nil,axiom,
! [Ys: list_list_v] :
( ( append_list_v @ nil_list_v @ Ys )
= Ys ) ).
% append_Nil
thf(fact_79_append__Nil,axiom,
! [Ys: list_v] :
( ( append_v @ nil_v @ Ys )
= Ys ) ).
% append_Nil
thf(fact_80_append__Nil,axiom,
! [Ys: list_nat] :
( ( append_nat @ nil_nat @ Ys )
= Ys ) ).
% append_Nil
thf(fact_81_list__ex1__simps_I1_J,axiom,
! [P: list_nat > $o] :
~ ( list_ex1_list_nat @ P @ nil_list_nat ) ).
% list_ex1_simps(1)
thf(fact_82_list__ex1__simps_I1_J,axiom,
! [P: list_v > $o] :
~ ( list_ex1_list_v @ P @ nil_list_v ) ).
% list_ex1_simps(1)
thf(fact_83_list__ex1__simps_I1_J,axiom,
! [P: v > $o] :
~ ( list_ex1_v @ P @ nil_v ) ).
% list_ex1_simps(1)
thf(fact_84_list__ex1__simps_I1_J,axiom,
! [P: nat > $o] :
~ ( list_ex1_nat @ P @ nil_nat ) ).
% list_ex1_simps(1)
thf(fact_85_bind__simps_I1_J,axiom,
! [F: v > list_v] :
( ( bind_v_v @ nil_v @ F )
= nil_v ) ).
% bind_simps(1)
thf(fact_86_bind__simps_I1_J,axiom,
! [F: v > list_nat] :
( ( bind_v_nat @ nil_v @ F )
= nil_nat ) ).
% bind_simps(1)
thf(fact_87_bind__simps_I1_J,axiom,
! [F: nat > list_v] :
( ( bind_nat_v @ nil_nat @ F )
= nil_v ) ).
% bind_simps(1)
thf(fact_88_bind__simps_I1_J,axiom,
! [F: nat > list_nat] :
( ( bind_nat_nat @ nil_nat @ F )
= nil_nat ) ).
% bind_simps(1)
thf(fact_89_bind__simps_I1_J,axiom,
! [F: v > list_list_nat] :
( ( bind_v_list_nat @ nil_v @ F )
= nil_list_nat ) ).
% bind_simps(1)
thf(fact_90_bind__simps_I1_J,axiom,
! [F: v > list_list_v] :
( ( bind_v_list_v @ nil_v @ F )
= nil_list_v ) ).
% bind_simps(1)
thf(fact_91_bind__simps_I1_J,axiom,
! [F: nat > list_list_nat] :
( ( bind_nat_list_nat @ nil_nat @ F )
= nil_list_nat ) ).
% bind_simps(1)
thf(fact_92_bind__simps_I1_J,axiom,
! [F: nat > list_list_v] :
( ( bind_nat_list_v @ nil_nat @ F )
= nil_list_v ) ).
% bind_simps(1)
thf(fact_93_bind__simps_I1_J,axiom,
! [F: list_nat > list_v] :
( ( bind_list_nat_v @ nil_list_nat @ F )
= nil_v ) ).
% bind_simps(1)
thf(fact_94_bind__simps_I1_J,axiom,
! [F: list_nat > list_nat] :
( ( bind_list_nat_nat @ nil_list_nat @ F )
= nil_nat ) ).
% bind_simps(1)
thf(fact_95_member__rec_I2_J,axiom,
! [Y: list_nat] :
~ ( member_list_nat @ nil_list_nat @ Y ) ).
% member_rec(2)
thf(fact_96_member__rec_I2_J,axiom,
! [Y: list_v] :
~ ( member_list_v @ nil_list_v @ Y ) ).
% member_rec(2)
thf(fact_97_member__rec_I2_J,axiom,
! [Y: v] :
~ ( member_v @ nil_v @ Y ) ).
% member_rec(2)
thf(fact_98_member__rec_I2_J,axiom,
! [Y: nat] :
~ ( member_nat @ nil_nat @ Y ) ).
% member_rec(2)
thf(fact_99_append_Omonoid__axioms,axiom,
monoid_list_list_nat @ append_list_nat @ nil_list_nat ).
% append.monoid_axioms
thf(fact_100_append_Omonoid__axioms,axiom,
monoid_list_list_v @ append_list_v @ nil_list_v ).
% append.monoid_axioms
thf(fact_101_append_Omonoid__axioms,axiom,
monoid_list_v @ append_v @ nil_v ).
% append.monoid_axioms
thf(fact_102_append_Omonoid__axioms,axiom,
monoid_list_nat @ append_nat @ nil_nat ).
% append.monoid_axioms
thf(fact_103_last__appendL,axiom,
! [Ys: list_list_nat,Xs: list_list_nat] :
( ( Ys = nil_list_nat )
=> ( ( last_list_nat @ ( append_list_nat @ Xs @ Ys ) )
= ( last_list_nat @ Xs ) ) ) ).
% last_appendL
thf(fact_104_last__appendL,axiom,
! [Ys: list_list_v,Xs: list_list_v] :
( ( Ys = nil_list_v )
=> ( ( last_list_v @ ( append_list_v @ Xs @ Ys ) )
= ( last_list_v @ Xs ) ) ) ).
% last_appendL
thf(fact_105_last__appendL,axiom,
! [Ys: list_v,Xs: list_v] :
( ( Ys = nil_v )
=> ( ( last_v @ ( append_v @ Xs @ Ys ) )
= ( last_v @ Xs ) ) ) ).
% last_appendL
thf(fact_106_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_107_last__appendR,axiom,
! [Ys: list_list_nat,Xs: list_list_nat] :
( ( Ys != nil_list_nat )
=> ( ( last_list_nat @ ( append_list_nat @ Xs @ Ys ) )
= ( last_list_nat @ Ys ) ) ) ).
% last_appendR
thf(fact_108_last__appendR,axiom,
! [Ys: list_list_v,Xs: list_list_v] :
( ( Ys != nil_list_v )
=> ( ( last_list_v @ ( append_list_v @ Xs @ Ys ) )
= ( last_list_v @ Ys ) ) ) ).
% last_appendR
thf(fact_109_last__appendR,axiom,
! [Ys: list_v,Xs: list_v] :
( ( Ys != nil_v )
=> ( ( last_v @ ( append_v @ Xs @ Ys ) )
= ( last_v @ Ys ) ) ) ).
% last_appendR
thf(fact_110_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_111_gen__length__code_I1_J,axiom,
! [N: nat] :
( ( gen_length_list_nat @ N @ nil_list_nat )
= N ) ).
% gen_length_code(1)
thf(fact_112_gen__length__code_I1_J,axiom,
! [N: nat] :
( ( gen_length_list_v @ N @ nil_list_v )
= N ) ).
% gen_length_code(1)
thf(fact_113_gen__length__code_I1_J,axiom,
! [N: nat] :
( ( gen_length_v @ N @ nil_v )
= N ) ).
% gen_length_code(1)
thf(fact_114_gen__length__code_I1_J,axiom,
! [N: nat] :
( ( gen_length_nat @ N @ nil_nat )
= N ) ).
% gen_length_code(1)
thf(fact_115_maps__simps_I2_J,axiom,
! [F: v > list_v] :
( ( maps_v_v @ F @ nil_v )
= nil_v ) ).
% maps_simps(2)
thf(fact_116_maps__simps_I2_J,axiom,
! [F: v > list_nat] :
( ( maps_v_nat @ F @ nil_v )
= nil_nat ) ).
% maps_simps(2)
thf(fact_117_maps__simps_I2_J,axiom,
! [F: nat > list_v] :
( ( maps_nat_v @ F @ nil_nat )
= nil_v ) ).
% maps_simps(2)
thf(fact_118_maps__simps_I2_J,axiom,
! [F: nat > list_nat] :
( ( maps_nat_nat @ F @ nil_nat )
= nil_nat ) ).
% maps_simps(2)
thf(fact_119_maps__simps_I2_J,axiom,
! [F: v > list_list_nat] :
( ( maps_v_list_nat @ F @ nil_v )
= nil_list_nat ) ).
% maps_simps(2)
thf(fact_120_maps__simps_I2_J,axiom,
! [F: v > list_list_v] :
( ( maps_v_list_v @ F @ nil_v )
= nil_list_v ) ).
% maps_simps(2)
thf(fact_121_maps__simps_I2_J,axiom,
! [F: nat > list_list_nat] :
( ( maps_nat_list_nat @ F @ nil_nat )
= nil_list_nat ) ).
% maps_simps(2)
thf(fact_122_maps__simps_I2_J,axiom,
! [F: nat > list_list_v] :
( ( maps_nat_list_v @ F @ nil_nat )
= nil_list_v ) ).
% maps_simps(2)
thf(fact_123_maps__simps_I2_J,axiom,
! [F: list_nat > list_v] :
( ( maps_list_nat_v @ F @ nil_list_nat )
= nil_v ) ).
% maps_simps(2)
thf(fact_124_maps__simps_I2_J,axiom,
! [F: list_nat > list_nat] :
( ( maps_list_nat_nat @ F @ nil_list_nat )
= nil_nat ) ).
% maps_simps(2)
thf(fact_125_null__rec_I2_J,axiom,
null_list_nat @ nil_list_nat ).
% null_rec(2)
thf(fact_126_null__rec_I2_J,axiom,
null_list_v @ nil_list_v ).
% null_rec(2)
thf(fact_127_null__rec_I2_J,axiom,
null_v @ nil_v ).
% null_rec(2)
thf(fact_128_null__rec_I2_J,axiom,
null_nat @ nil_nat ).
% null_rec(2)
thf(fact_129_eq__Nil__null,axiom,
! [Xs: list_list_nat] :
( ( Xs = nil_list_nat )
= ( null_list_nat @ Xs ) ) ).
% eq_Nil_null
thf(fact_130_eq__Nil__null,axiom,
! [Xs: list_list_v] :
( ( Xs = nil_list_v )
= ( null_list_v @ Xs ) ) ).
% eq_Nil_null
thf(fact_131_eq__Nil__null,axiom,
! [Xs: list_v] :
( ( Xs = nil_v )
= ( null_v @ Xs ) ) ).
% eq_Nil_null
thf(fact_132_eq__Nil__null,axiom,
! [Xs: list_nat] :
( ( Xs = nil_nat )
= ( null_nat @ Xs ) ) ).
% eq_Nil_null
thf(fact_133_ord_Olexordp__append__rightI,axiom,
! [Ys: list_list_nat,Less: list_nat > list_nat > $o,Xs: list_list_nat] :
( ( Ys != nil_list_nat )
=> ( lexordp_list_nat @ Less @ Xs @ ( append_list_nat @ Xs @ Ys ) ) ) ).
% ord.lexordp_append_rightI
thf(fact_134_ord_Olexordp__append__rightI,axiom,
! [Ys: list_list_v,Less: list_v > list_v > $o,Xs: list_list_v] :
( ( Ys != nil_list_v )
=> ( lexordp_list_v @ Less @ Xs @ ( append_list_v @ Xs @ Ys ) ) ) ).
% ord.lexordp_append_rightI
thf(fact_135_ord_Olexordp__append__rightI,axiom,
! [Ys: list_v,Less: v > v > $o,Xs: list_v] :
( ( Ys != nil_v )
=> ( lexordp_v @ Less @ Xs @ ( append_v @ Xs @ Ys ) ) ) ).
% ord.lexordp_append_rightI
thf(fact_136_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_137_append1__eq__conv,axiom,
! [Xs: list_list_nat,X: list_nat,Ys: list_list_nat,Y: list_nat] :
( ( ( append_list_nat @ Xs @ ( cons_list_nat @ X @ nil_list_nat ) )
= ( append_list_nat @ Ys @ ( cons_list_nat @ Y @ nil_list_nat ) ) )
= ( ( Xs = Ys )
& ( X = Y ) ) ) ).
% append1_eq_conv
thf(fact_138_append1__eq__conv,axiom,
! [Xs: list_list_v,X: list_v,Ys: list_list_v,Y: list_v] :
( ( ( append_list_v @ Xs @ ( cons_list_v @ X @ nil_list_v ) )
= ( append_list_v @ Ys @ ( cons_list_v @ Y @ nil_list_v ) ) )
= ( ( Xs = Ys )
& ( X = Y ) ) ) ).
% append1_eq_conv
thf(fact_139_append1__eq__conv,axiom,
! [Xs: list_v,X: v,Ys: list_v,Y: v] :
( ( ( append_v @ Xs @ ( cons_v @ X @ nil_v ) )
= ( append_v @ Ys @ ( cons_v @ Y @ nil_v ) ) )
= ( ( Xs = Ys )
& ( X = Y ) ) ) ).
% append1_eq_conv
thf(fact_140_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_141_list_Oinject,axiom,
! [X21: v,X22: list_v,Y21: v,Y22: list_v] :
( ( ( cons_v @ X21 @ X22 )
= ( cons_v @ Y21 @ Y22 ) )
= ( ( X21 = Y21 )
& ( X22 = Y22 ) ) ) ).
% list.inject
thf(fact_142_list_Oinject,axiom,
! [X21: list_nat,X22: list_list_nat,Y21: list_nat,Y22: list_list_nat] :
( ( ( cons_list_nat @ X21 @ X22 )
= ( cons_list_nat @ Y21 @ Y22 ) )
= ( ( X21 = Y21 )
& ( X22 = Y22 ) ) ) ).
% list.inject
thf(fact_143_list_Oinject,axiom,
! [X21: list_v,X22: list_list_v,Y21: list_v,Y22: list_list_v] :
( ( ( cons_list_v @ X21 @ X22 )
= ( cons_list_v @ Y21 @ Y22 ) )
= ( ( X21 = Y21 )
& ( X22 = Y22 ) ) ) ).
% list.inject
thf(fact_144_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_145_ord_Olexordp__simps_I3_J,axiom,
! [Less: list_nat > list_nat > $o,X: list_nat,Xs: list_list_nat,Y: list_nat,Ys: list_list_nat] :
( ( lexordp_list_nat @ Less @ ( cons_list_nat @ X @ Xs ) @ ( cons_list_nat @ Y @ Ys ) )
= ( ( Less @ X @ Y )
| ( ~ ( Less @ Y @ X )
& ( lexordp_list_nat @ Less @ Xs @ Ys ) ) ) ) ).
% ord.lexordp_simps(3)
thf(fact_146_ord_Olexordp__simps_I3_J,axiom,
! [Less: list_v > list_v > $o,X: list_v,Xs: list_list_v,Y: list_v,Ys: list_list_v] :
( ( lexordp_list_v @ Less @ ( cons_list_v @ X @ Xs ) @ ( cons_list_v @ Y @ Ys ) )
= ( ( Less @ X @ Y )
| ( ~ ( Less @ Y @ X )
& ( lexordp_list_v @ Less @ Xs @ Ys ) ) ) ) ).
% ord.lexordp_simps(3)
thf(fact_147_ord_Olexordp__simps_I3_J,axiom,
! [Less: v > v > $o,X: v,Xs: list_v,Y: v,Ys: list_v] :
( ( lexordp_v @ Less @ ( cons_v @ X @ Xs ) @ ( cons_v @ Y @ Ys ) )
= ( ( Less @ X @ Y )
| ( ~ ( Less @ Y @ X )
& ( lexordp_v @ Less @ Xs @ Ys ) ) ) ) ).
% ord.lexordp_simps(3)
thf(fact_148_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_149_ord_Olexordp__simps_I1_J,axiom,
! [Less: list_v > list_v > $o,Ys: list_list_v] :
( ( lexordp_list_v @ Less @ nil_list_v @ Ys )
= ( Ys != nil_list_v ) ) ).
% ord.lexordp_simps(1)
thf(fact_150_ord_Olexordp__simps_I1_J,axiom,
! [Less: v > v > $o,Ys: list_v] :
( ( lexordp_v @ Less @ nil_v @ Ys )
= ( Ys != nil_v ) ) ).
% ord.lexordp_simps(1)
thf(fact_151_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_152_ord_Olexordp__simps_I2_J,axiom,
! [Less: v > v > $o,Xs: list_v] :
~ ( lexordp_v @ Less @ Xs @ nil_v ) ).
% ord.lexordp_simps(2)
thf(fact_153_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_154_bind__simps_I2_J,axiom,
! [X: nat,Xs: list_nat,F: nat > list_v] :
( ( bind_nat_v @ ( cons_nat @ X @ Xs ) @ F )
= ( append_v @ ( F @ X ) @ ( bind_nat_v @ Xs @ F ) ) ) ).
% bind_simps(2)
thf(fact_155_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_156_last__snoc,axiom,
! [Xs: list_v,X: v] :
( ( last_v @ ( append_v @ Xs @ ( cons_v @ X @ nil_v ) ) )
= X ) ).
% last_snoc
thf(fact_157_last__snoc,axiom,
! [Xs: list_nat,X: nat] :
( ( last_nat @ ( append_nat @ Xs @ ( cons_nat @ X @ nil_nat ) ) )
= X ) ).
% last_snoc
thf(fact_158_null__rec_I1_J,axiom,
! [X: nat,Xs: list_nat] :
~ ( null_nat @ ( cons_nat @ X @ Xs ) ) ).
% null_rec(1)
thf(fact_159_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_160_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_161_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_162_not__Cons__self2,axiom,
! [X: nat,Xs: list_nat] :
( ( cons_nat @ X @ Xs )
!= Xs ) ).
% not_Cons_self2
thf(fact_163_transpose_Ocases,axiom,
! [X: list_list_v] :
( ( X != nil_list_v )
=> ( ! [Xss: list_list_v] :
( X
!= ( cons_list_v @ nil_v @ Xss ) )
=> ~ ! [X2: v,Xs2: list_v,Xss: list_list_v] :
( X
!= ( cons_list_v @ ( cons_v @ X2 @ Xs2 ) @ Xss ) ) ) ) ).
% transpose.cases
thf(fact_164_transpose_Ocases,axiom,
! [X: list_list_nat] :
( ( X != nil_list_nat )
=> ( ! [Xss: list_list_nat] :
( X
!= ( cons_list_nat @ nil_nat @ Xss ) )
=> ~ ! [X2: nat,Xs2: list_nat,Xss: list_list_nat] :
( X
!= ( cons_list_nat @ ( cons_nat @ X2 @ Xs2 ) @ Xss ) ) ) ) ).
% transpose.cases
thf(fact_165_last__ConsR,axiom,
! [Xs: list_v,X: v] :
( ( Xs != nil_v )
=> ( ( last_v @ ( cons_v @ X @ Xs ) )
= ( last_v @ Xs ) ) ) ).
% last_ConsR
thf(fact_166_last__ConsR,axiom,
! [Xs: list_nat,X: nat] :
( ( Xs != nil_nat )
=> ( ( last_nat @ ( cons_nat @ X @ Xs ) )
= ( last_nat @ Xs ) ) ) ).
% last_ConsR
thf(fact_167_last__ConsL,axiom,
! [Xs: list_v,X: v] :
( ( Xs = nil_v )
=> ( ( last_v @ ( cons_v @ X @ Xs ) )
= X ) ) ).
% last_ConsL
thf(fact_168_last__ConsL,axiom,
! [Xs: list_nat,X: nat] :
( ( Xs = nil_nat )
=> ( ( last_nat @ ( cons_nat @ X @ Xs ) )
= X ) ) ).
% last_ConsL
thf(fact_169_last_Osimps,axiom,
! [Xs: list_v,X: v] :
( ( ( Xs = nil_v )
=> ( ( last_v @ ( cons_v @ X @ Xs ) )
= X ) )
& ( ( Xs != nil_v )
=> ( ( last_v @ ( cons_v @ X @ Xs ) )
= ( last_v @ Xs ) ) ) ) ).
% last.simps
thf(fact_170_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_171_ord_Olexordp_Osimps,axiom,
( lexordp_v
= ( ^ [Less2: v > v > $o,A1: list_v,A2: list_v] :
( ? [Y2: v,Ys2: list_v] :
( ( A1 = nil_v )
& ( A2
= ( cons_v @ Y2 @ Ys2 ) ) )
| ? [X3: v,Y2: v,Xs3: list_v,Ys2: list_v] :
( ( A1
= ( cons_v @ X3 @ Xs3 ) )
& ( A2
= ( cons_v @ Y2 @ Ys2 ) )
& ( Less2 @ X3 @ Y2 ) )
| ? [X3: v,Y2: v,Xs3: list_v,Ys2: list_v] :
( ( A1
= ( cons_v @ X3 @ Xs3 ) )
& ( A2
= ( cons_v @ Y2 @ Ys2 ) )
& ~ ( Less2 @ X3 @ Y2 )
& ~ ( Less2 @ Y2 @ X3 )
& ( lexordp_v @ Less2 @ Xs3 @ Ys2 ) ) ) ) ) ).
% ord.lexordp.simps
thf(fact_172_ord_Olexordp_Osimps,axiom,
( lexordp_nat
= ( ^ [Less2: nat > nat > $o,A1: list_nat,A2: list_nat] :
( ? [Y2: nat,Ys2: list_nat] :
( ( A1 = nil_nat )
& ( A2
= ( cons_nat @ Y2 @ Ys2 ) ) )
| ? [X3: nat,Y2: nat,Xs3: list_nat,Ys2: list_nat] :
( ( A1
= ( cons_nat @ X3 @ Xs3 ) )
& ( A2
= ( cons_nat @ Y2 @ Ys2 ) )
& ( Less2 @ X3 @ Y2 ) )
| ? [X3: nat,Y2: nat,Xs3: list_nat,Ys2: list_nat] :
( ( A1
= ( cons_nat @ X3 @ Xs3 ) )
& ( A2
= ( cons_nat @ Y2 @ Ys2 ) )
& ~ ( Less2 @ X3 @ Y2 )
& ~ ( Less2 @ Y2 @ X3 )
& ( lexordp_nat @ Less2 @ Xs3 @ Ys2 ) ) ) ) ) ).
% ord.lexordp.simps
thf(fact_173_ord_Olexordp_Ocases,axiom,
! [Less: v > v > $o,A12: list_v,A22: list_v] :
( ( lexordp_v @ Less @ A12 @ A22 )
=> ( ( ( A12 = nil_v )
=> ! [Y3: v,Ys3: list_v] :
( A22
!= ( cons_v @ Y3 @ Ys3 ) ) )
=> ( ! [X2: v] :
( ? [Xs2: list_v] :
( A12
= ( cons_v @ X2 @ Xs2 ) )
=> ! [Y3: v] :
( ? [Ys3: list_v] :
( A22
= ( cons_v @ Y3 @ Ys3 ) )
=> ~ ( Less @ X2 @ Y3 ) ) )
=> ~ ! [X2: v,Y3: v,Xs2: list_v] :
( ( A12
= ( cons_v @ X2 @ Xs2 ) )
=> ! [Ys3: list_v] :
( ( A22
= ( cons_v @ Y3 @ Ys3 ) )
=> ( ~ ( Less @ X2 @ Y3 )
=> ( ~ ( Less @ Y3 @ X2 )
=> ~ ( lexordp_v @ Less @ Xs2 @ Ys3 ) ) ) ) ) ) ) ) ).
% ord.lexordp.cases
thf(fact_174_ord_Olexordp_Ocases,axiom,
! [Less: nat > nat > $o,A12: list_nat,A22: list_nat] :
( ( lexordp_nat @ Less @ A12 @ A22 )
=> ( ( ( A12 = nil_nat )
=> ! [Y3: nat,Ys3: list_nat] :
( A22
!= ( cons_nat @ Y3 @ Ys3 ) ) )
=> ( ! [X2: nat] :
( ? [Xs2: list_nat] :
( A12
= ( cons_nat @ X2 @ Xs2 ) )
=> ! [Y3: nat] :
( ? [Ys3: list_nat] :
( A22
= ( cons_nat @ Y3 @ Ys3 ) )
=> ~ ( Less @ X2 @ Y3 ) ) )
=> ~ ! [X2: nat,Y3: nat,Xs2: list_nat] :
( ( A12
= ( cons_nat @ X2 @ Xs2 ) )
=> ! [Ys3: list_nat] :
( ( A22
= ( cons_nat @ Y3 @ Ys3 ) )
=> ( ~ ( Less @ X2 @ Y3 )
=> ( ~ ( Less @ Y3 @ X2 )
=> ~ ( lexordp_nat @ Less @ Xs2 @ Ys3 ) ) ) ) ) ) ) ) ).
% ord.lexordp.cases
thf(fact_175_ord_Olexordp_ONil,axiom,
! [Less: v > v > $o,Y: v,Ys: list_v] : ( lexordp_v @ Less @ nil_v @ ( cons_v @ Y @ Ys ) ) ).
% ord.lexordp.Nil
thf(fact_176_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_177_ord_Olexordp__append__left__rightI,axiom,
! [Less: v > v > $o,X: v,Y: v,Us: list_v,Xs: list_v,Ys: list_v] :
( ( Less @ X @ Y )
=> ( lexordp_v @ Less @ ( append_v @ Us @ ( cons_v @ X @ Xs ) ) @ ( append_v @ Us @ ( cons_v @ Y @ Ys ) ) ) ) ).
% ord.lexordp_append_left_rightI
thf(fact_178_ord_Olexordp__append__left__rightI,axiom,
! [Less: nat > nat > $o,X: nat,Y: nat,Us: list_nat,Xs: list_nat,Ys: list_nat] :
( ( Less @ X @ Y )
=> ( lexordp_nat @ Less @ ( append_nat @ Us @ ( cons_nat @ X @ Xs ) ) @ ( append_nat @ Us @ ( cons_nat @ Y @ Ys ) ) ) ) ).
% ord.lexordp_append_left_rightI
thf(fact_179_maps__simps_I1_J,axiom,
! [F: nat > list_v,X: nat,Xs: list_nat] :
( ( maps_nat_v @ F @ ( cons_nat @ X @ Xs ) )
= ( append_v @ ( F @ X ) @ ( maps_nat_v @ F @ Xs ) ) ) ).
% maps_simps(1)
thf(fact_180_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_181_list__nonempty__induct,axiom,
! [Xs: list_v,P: list_v > $o] :
( ( Xs != nil_v )
=> ( ! [X2: v] : ( P @ ( cons_v @ X2 @ nil_v ) )
=> ( ! [X2: v,Xs2: list_v] :
( ( Xs2 != nil_v )
=> ( ( P @ Xs2 )
=> ( P @ ( cons_v @ X2 @ Xs2 ) ) ) )
=> ( P @ Xs ) ) ) ) ).
% list_nonempty_induct
thf(fact_182_list__nonempty__induct,axiom,
! [Xs: list_nat,P: list_nat > $o] :
( ( Xs != nil_nat )
=> ( ! [X2: nat] : ( P @ ( cons_nat @ X2 @ nil_nat ) )
=> ( ! [X2: nat,Xs2: list_nat] :
( ( Xs2 != nil_nat )
=> ( ( P @ Xs2 )
=> ( P @ ( cons_nat @ X2 @ Xs2 ) ) ) )
=> ( P @ Xs ) ) ) ) ).
% list_nonempty_induct
thf(fact_183_list__induct2_H,axiom,
! [P: list_v > list_v > $o,Xs: list_v,Ys: list_v] :
( ( P @ nil_v @ nil_v )
=> ( ! [X2: v,Xs2: list_v] : ( P @ ( cons_v @ X2 @ Xs2 ) @ nil_v )
=> ( ! [Y3: v,Ys3: list_v] : ( P @ nil_v @ ( cons_v @ Y3 @ Ys3 ) )
=> ( ! [X2: v,Xs2: list_v,Y3: v,Ys3: list_v] :
( ( P @ Xs2 @ Ys3 )
=> ( P @ ( cons_v @ X2 @ Xs2 ) @ ( cons_v @ Y3 @ Ys3 ) ) )
=> ( P @ Xs @ Ys ) ) ) ) ) ).
% list_induct2'
thf(fact_184_list__induct2_H,axiom,
! [P: list_v > list_nat > $o,Xs: list_v,Ys: list_nat] :
( ( P @ nil_v @ nil_nat )
=> ( ! [X2: v,Xs2: list_v] : ( P @ ( cons_v @ X2 @ Xs2 ) @ nil_nat )
=> ( ! [Y3: nat,Ys3: list_nat] : ( P @ nil_v @ ( cons_nat @ Y3 @ Ys3 ) )
=> ( ! [X2: v,Xs2: list_v,Y3: nat,Ys3: list_nat] :
( ( P @ Xs2 @ Ys3 )
=> ( P @ ( cons_v @ X2 @ Xs2 ) @ ( cons_nat @ Y3 @ Ys3 ) ) )
=> ( P @ Xs @ Ys ) ) ) ) ) ).
% list_induct2'
thf(fact_185_list__induct2_H,axiom,
! [P: list_nat > list_v > $o,Xs: list_nat,Ys: list_v] :
( ( P @ nil_nat @ nil_v )
=> ( ! [X2: nat,Xs2: list_nat] : ( P @ ( cons_nat @ X2 @ Xs2 ) @ nil_v )
=> ( ! [Y3: v,Ys3: list_v] : ( P @ nil_nat @ ( cons_v @ Y3 @ Ys3 ) )
=> ( ! [X2: nat,Xs2: list_nat,Y3: v,Ys3: list_v] :
( ( P @ Xs2 @ Ys3 )
=> ( P @ ( cons_nat @ X2 @ Xs2 ) @ ( cons_v @ Y3 @ Ys3 ) ) )
=> ( P @ Xs @ Ys ) ) ) ) ) ).
% list_induct2'
thf(fact_186_list__induct2_H,axiom,
! [P: list_nat > list_nat > $o,Xs: list_nat,Ys: list_nat] :
( ( P @ nil_nat @ nil_nat )
=> ( ! [X2: nat,Xs2: list_nat] : ( P @ ( cons_nat @ X2 @ Xs2 ) @ nil_nat )
=> ( ! [Y3: nat,Ys3: list_nat] : ( P @ nil_nat @ ( cons_nat @ Y3 @ Ys3 ) )
=> ( ! [X2: nat,Xs2: list_nat,Y3: nat,Ys3: list_nat] :
( ( P @ Xs2 @ Ys3 )
=> ( P @ ( cons_nat @ X2 @ Xs2 ) @ ( cons_nat @ Y3 @ Ys3 ) ) )
=> ( P @ Xs @ Ys ) ) ) ) ) ).
% list_induct2'
thf(fact_187_neq__Nil__conv,axiom,
! [Xs: list_v] :
( ( Xs != nil_v )
= ( ? [Y2: v,Ys2: list_v] :
( Xs
= ( cons_v @ Y2 @ Ys2 ) ) ) ) ).
% neq_Nil_conv
thf(fact_188_neq__Nil__conv,axiom,
! [Xs: list_nat] :
( ( Xs != nil_nat )
= ( ? [Y2: nat,Ys2: list_nat] :
( Xs
= ( cons_nat @ Y2 @ Ys2 ) ) ) ) ).
% neq_Nil_conv
thf(fact_189_remdups__adj_Ocases,axiom,
! [X: list_v] :
( ( X != nil_v )
=> ( ! [X2: v] :
( X
!= ( cons_v @ X2 @ nil_v ) )
=> ~ ! [X2: v,Y3: v,Xs2: list_v] :
( X
!= ( cons_v @ X2 @ ( cons_v @ Y3 @ Xs2 ) ) ) ) ) ).
% remdups_adj.cases
thf(fact_190_remdups__adj_Ocases,axiom,
! [X: list_nat] :
( ( X != nil_nat )
=> ( ! [X2: nat] :
( X
!= ( cons_nat @ X2 @ nil_nat ) )
=> ~ ! [X2: nat,Y3: nat,Xs2: list_nat] :
( X
!= ( cons_nat @ X2 @ ( cons_nat @ Y3 @ Xs2 ) ) ) ) ) ).
% remdups_adj.cases
thf(fact_191_min__list_Ocases,axiom,
! [X: list_nat] :
( ! [X2: nat,Xs2: list_nat] :
( X
!= ( cons_nat @ X2 @ Xs2 ) )
=> ( X = nil_nat ) ) ).
% min_list.cases
thf(fact_192_list_Oexhaust,axiom,
! [Y: list_v] :
( ( Y != nil_v )
=> ~ ! [X212: v,X222: list_v] :
( Y
!= ( cons_v @ X212 @ X222 ) ) ) ).
% list.exhaust
thf(fact_193_list_Oexhaust,axiom,
! [Y: list_nat] :
( ( Y != nil_nat )
=> ~ ! [X212: nat,X222: list_nat] :
( Y
!= ( cons_nat @ X212 @ X222 ) ) ) ).
% list.exhaust
thf(fact_194_list_OdiscI,axiom,
! [List: list_v,X21: v,X22: list_v] :
( ( List
= ( cons_v @ X21 @ X22 ) )
=> ( List != nil_v ) ) ).
% list.discI
thf(fact_195_list_OdiscI,axiom,
! [List: list_nat,X21: nat,X22: list_nat] :
( ( List
= ( cons_nat @ X21 @ X22 ) )
=> ( List != nil_nat ) ) ).
% list.discI
thf(fact_196_list_Odistinct_I1_J,axiom,
! [X21: v,X22: list_v] :
( nil_v
!= ( cons_v @ X21 @ X22 ) ) ).
% list.distinct(1)
thf(fact_197_list_Odistinct_I1_J,axiom,
! [X21: nat,X22: list_nat] :
( nil_nat
!= ( cons_nat @ X21 @ X22 ) ) ).
% list.distinct(1)
thf(fact_198_append__Cons,axiom,
! [X: v,Xs: list_v,Ys: list_v] :
( ( append_v @ ( cons_v @ X @ Xs ) @ Ys )
= ( cons_v @ X @ ( append_v @ Xs @ Ys ) ) ) ).
% append_Cons
thf(fact_199_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_200_Cons__eq__appendI,axiom,
! [X: v,Xs1: list_v,Ys: list_v,Xs: list_v,Zs: list_v] :
( ( ( cons_v @ X @ Xs1 )
= Ys )
=> ( ( Xs
= ( append_v @ Xs1 @ Zs ) )
=> ( ( cons_v @ X @ Xs )
= ( append_v @ Ys @ Zs ) ) ) ) ).
% Cons_eq_appendI
thf(fact_201_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_202_precedes__in__tail,axiom,
! [X: nat,Z: nat,Y: nat,Zs: list_nat] :
( ( X != Z )
=> ( ( sCC_Bl437264838276925772es_nat @ X @ Y @ ( cons_nat @ Z @ Zs ) )
= ( sCC_Bl437264838276925772es_nat @ X @ Y @ Zs ) ) ) ).
% precedes_in_tail
thf(fact_203_ord_Olexordp__append__leftD,axiom,
! [Less: v > v > $o,Xs: list_v,Us: list_v,Vs: list_v] :
( ( lexordp_v @ Less @ ( append_v @ Xs @ Us ) @ ( append_v @ Xs @ Vs ) )
=> ( ! [A3: v] :
~ ( Less @ A3 @ A3 )
=> ( lexordp_v @ Less @ Us @ Vs ) ) ) ).
% ord.lexordp_append_leftD
thf(fact_204_ord_Olexordp__append__leftD,axiom,
! [Less: nat > nat > $o,Xs: list_nat,Us: list_nat,Vs: list_nat] :
( ( lexordp_nat @ Less @ ( append_nat @ Xs @ Us ) @ ( append_nat @ Xs @ Vs ) )
=> ( ! [A3: nat] :
~ ( Less @ A3 @ A3 )
=> ( lexordp_nat @ Less @ Us @ Vs ) ) ) ).
% ord.lexordp_append_leftD
thf(fact_205_ord_Olexordp__append__leftI,axiom,
! [Less: v > v > $o,Us: list_v,Vs: list_v,Xs: list_v] :
( ( lexordp_v @ Less @ Us @ Vs )
=> ( lexordp_v @ Less @ ( append_v @ Xs @ Us ) @ ( append_v @ Xs @ Vs ) ) ) ).
% ord.lexordp_append_leftI
thf(fact_206_ord_Olexordp__append__leftI,axiom,
! [Less: nat > nat > $o,Us: list_nat,Vs: list_nat,Xs: list_nat] :
( ( lexordp_nat @ Less @ Us @ Vs )
=> ( lexordp_nat @ Less @ ( append_nat @ Xs @ Us ) @ ( append_nat @ Xs @ Vs ) ) ) ).
% ord.lexordp_append_leftI
thf(fact_207_rev__nonempty__induct,axiom,
! [Xs: list_v,P: list_v > $o] :
( ( Xs != nil_v )
=> ( ! [X2: v] : ( P @ ( cons_v @ X2 @ nil_v ) )
=> ( ! [X2: v,Xs2: list_v] :
( ( Xs2 != nil_v )
=> ( ( P @ Xs2 )
=> ( P @ ( append_v @ Xs2 @ ( cons_v @ X2 @ nil_v ) ) ) ) )
=> ( P @ Xs ) ) ) ) ).
% rev_nonempty_induct
thf(fact_208_rev__nonempty__induct,axiom,
! [Xs: list_nat,P: list_nat > $o] :
( ( Xs != nil_nat )
=> ( ! [X2: nat] : ( P @ ( cons_nat @ X2 @ nil_nat ) )
=> ( ! [X2: nat,Xs2: list_nat] :
( ( Xs2 != nil_nat )
=> ( ( P @ Xs2 )
=> ( P @ ( append_nat @ Xs2 @ ( cons_nat @ X2 @ nil_nat ) ) ) ) )
=> ( P @ Xs ) ) ) ) ).
% rev_nonempty_induct
thf(fact_209_append__eq__Cons__conv,axiom,
! [Ys: list_v,Zs: list_v,X: v,Xs: list_v] :
( ( ( append_v @ Ys @ Zs )
= ( cons_v @ X @ Xs ) )
= ( ( ( Ys = nil_v )
& ( Zs
= ( cons_v @ X @ Xs ) ) )
| ? [Ys4: list_v] :
( ( Ys
= ( cons_v @ X @ Ys4 ) )
& ( ( append_v @ Ys4 @ Zs )
= Xs ) ) ) ) ).
% append_eq_Cons_conv
thf(fact_210_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_211_Cons__eq__append__conv,axiom,
! [X: v,Xs: list_v,Ys: list_v,Zs: list_v] :
( ( ( cons_v @ X @ Xs )
= ( append_v @ Ys @ Zs ) )
= ( ( ( Ys = nil_v )
& ( ( cons_v @ X @ Xs )
= Zs ) )
| ? [Ys4: list_v] :
( ( ( cons_v @ X @ Ys4 )
= Ys )
& ( Xs
= ( append_v @ Ys4 @ Zs ) ) ) ) ) ).
% Cons_eq_append_conv
thf(fact_212_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_213_rev__exhaust,axiom,
! [Xs: list_v] :
( ( Xs != nil_v )
=> ~ ! [Ys3: list_v,Y3: v] :
( Xs
!= ( append_v @ Ys3 @ ( cons_v @ Y3 @ nil_v ) ) ) ) ).
% rev_exhaust
thf(fact_214_rev__exhaust,axiom,
! [Xs: list_nat] :
( ( Xs != nil_nat )
=> ~ ! [Ys3: list_nat,Y3: nat] :
( Xs
!= ( append_nat @ Ys3 @ ( cons_nat @ Y3 @ nil_nat ) ) ) ) ).
% rev_exhaust
thf(fact_215_rev__induct,axiom,
! [P: list_v > $o,Xs: list_v] :
( ( P @ nil_v )
=> ( ! [X2: v,Xs2: list_v] :
( ( P @ Xs2 )
=> ( P @ ( append_v @ Xs2 @ ( cons_v @ X2 @ nil_v ) ) ) )
=> ( P @ Xs ) ) ) ).
% rev_induct
thf(fact_216_rev__induct,axiom,
! [P: list_nat > $o,Xs: list_nat] :
( ( P @ nil_nat )
=> ( ! [X2: nat,Xs2: list_nat] :
( ( P @ Xs2 )
=> ( P @ ( append_nat @ Xs2 @ ( cons_nat @ X2 @ nil_nat ) ) ) )
=> ( P @ Xs ) ) ) ).
% rev_induct
thf(fact_217_longest__common__suffix,axiom,
! [Xs: list_v,Ys: list_v] :
? [Ss: list_v,Xs4: list_v,Ys5: list_v] :
( ( Xs
= ( append_v @ Xs4 @ Ss ) )
& ( Ys
= ( append_v @ Ys5 @ Ss ) )
& ( ( Xs4 = nil_v )
| ( Ys5 = nil_v )
| ( ( last_v @ Xs4 )
!= ( last_v @ Ys5 ) ) ) ) ).
% longest_common_suffix
thf(fact_218_longest__common__suffix,axiom,
! [Xs: list_nat,Ys: list_nat] :
? [Ss: list_nat,Xs4: list_nat,Ys5: list_nat] :
( ( Xs
= ( append_nat @ Xs4 @ Ss ) )
& ( Ys
= ( append_nat @ Ys5 @ Ss ) )
& ( ( Xs4 = nil_nat )
| ( Ys5 = nil_nat )
| ( ( last_nat @ Xs4 )
!= ( last_nat @ Ys5 ) ) ) ) ).
% longest_common_suffix
thf(fact_219_last__append,axiom,
! [Ys: list_v,Xs: list_v] :
( ( ( Ys = nil_v )
=> ( ( last_v @ ( append_v @ Xs @ Ys ) )
= ( last_v @ Xs ) ) )
& ( ( Ys != nil_v )
=> ( ( last_v @ ( append_v @ Xs @ Ys ) )
= ( last_v @ Ys ) ) ) ) ).
% last_append
thf(fact_220_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_221_append__butlast__last__id,axiom,
! [Xs: list_v] :
( ( Xs != nil_v )
=> ( ( append_v @ ( butlast_v @ Xs ) @ ( cons_v @ ( last_v @ Xs ) @ nil_v ) )
= Xs ) ) ).
% append_butlast_last_id
thf(fact_222_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_223_snoc__eq__iff__butlast,axiom,
! [Xs: list_v,X: v,Ys: list_v] :
( ( ( append_v @ Xs @ ( cons_v @ X @ nil_v ) )
= Ys )
= ( ( Ys != nil_v )
& ( ( butlast_v @ Ys )
= Xs )
& ( ( last_v @ Ys )
= X ) ) ) ).
% snoc_eq_iff_butlast
thf(fact_224_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_225_insert__Nil,axiom,
! [X: v] :
( ( insert_v @ X @ nil_v )
= ( cons_v @ X @ nil_v ) ) ).
% insert_Nil
thf(fact_226_insert__Nil,axiom,
! [X: nat] :
( ( insert_nat @ X @ nil_nat )
= ( cons_nat @ X @ nil_nat ) ) ).
% insert_Nil
thf(fact_227_butlast__snoc,axiom,
! [Xs: list_v,X: v] :
( ( butlast_v @ ( append_v @ Xs @ ( cons_v @ X @ nil_v ) ) )
= Xs ) ).
% butlast_snoc
thf(fact_228_butlast__snoc,axiom,
! [Xs: list_nat,X: nat] :
( ( butlast_nat @ ( append_nat @ Xs @ ( cons_nat @ X @ nil_nat ) ) )
= Xs ) ).
% butlast_snoc
thf(fact_229_split__list__precedes,axiom,
! [Y: v,Ys: list_v,X: v,Xs: list_v] :
( ( member_v2 @ Y @ ( set_v2 @ ( append_v @ Ys @ ( cons_v @ X @ nil_v ) ) ) )
=> ( sCC_Bl4022239298816431255edes_v @ Y @ X @ ( append_v @ Ys @ ( cons_v @ X @ Xs ) ) ) ) ).
% split_list_precedes
thf(fact_230_split__list__precedes,axiom,
! [Y: nat,Ys: list_nat,X: nat,Xs: list_nat] :
( ( member_nat2 @ Y @ ( set_nat2 @ ( append_nat @ Ys @ ( cons_nat @ X @ nil_nat ) ) ) )
=> ( sCC_Bl437264838276925772es_nat @ Y @ X @ ( append_nat @ Ys @ ( cons_nat @ X @ Xs ) ) ) ) ).
% split_list_precedes
thf(fact_231_rotate1_Osimps_I2_J,axiom,
! [X: v,Xs: list_v] :
( ( rotate1_v @ ( cons_v @ X @ Xs ) )
= ( append_v @ Xs @ ( cons_v @ X @ nil_v ) ) ) ).
% rotate1.simps(2)
thf(fact_232_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_233_map__tailrec__rev_Oelims,axiom,
! [X: v > nat,Xa: list_v,Xb: list_nat,Y: list_nat] :
( ( ( map_ta6985047226444915118_v_nat @ X @ Xa @ Xb )
= Y )
=> ( ( ( Xa = nil_v )
=> ( Y != Xb ) )
=> ~ ! [A3: v,As: list_v] :
( ( Xa
= ( cons_v @ A3 @ As ) )
=> ( Y
!= ( map_ta6985047226444915118_v_nat @ X @ As @ ( cons_nat @ ( X @ A3 ) @ Xb ) ) ) ) ) ) ).
% map_tailrec_rev.elims
thf(fact_234_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 ) )
=> ~ ! [A3: nat,As: list_nat] :
( ( Xa
= ( cons_nat @ A3 @ As ) )
=> ( Y
!= ( map_ta7164188454487880599at_nat @ X @ As @ ( cons_nat @ ( X @ A3 ) @ Xb ) ) ) ) ) ) ).
% map_tailrec_rev.elims
thf(fact_235_SuccI,axiom,
! [Kl: list_v,K: v,Kl2: set_list_v] :
( ( member_list_v2 @ ( append_v @ Kl @ ( cons_v @ K @ nil_v ) ) @ Kl2 )
=> ( member_v2 @ K @ ( bNF_Greatest_Succ_v @ Kl2 @ Kl ) ) ) ).
% SuccI
thf(fact_236_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_237_rotate1__is__Nil__conv,axiom,
! [Xs: list_v] :
( ( ( rotate1_v @ Xs )
= nil_v )
= ( Xs = nil_v ) ) ).
% rotate1_is_Nil_conv
thf(fact_238_rotate1__is__Nil__conv,axiom,
! [Xs: list_nat] :
( ( ( rotate1_nat @ Xs )
= nil_nat )
= ( Xs = nil_nat ) ) ).
% rotate1_is_Nil_conv
thf(fact_239_set__rotate1,axiom,
! [Xs: list_nat] :
( ( set_nat2 @ ( rotate1_nat @ Xs ) )
= ( set_nat2 @ Xs ) ) ).
% set_rotate1
thf(fact_240_precedes__refl,axiom,
! [X: nat,Xs: list_nat] :
( ( sCC_Bl437264838276925772es_nat @ X @ X @ Xs )
= ( member_nat2 @ X @ ( set_nat2 @ Xs ) ) ) ).
% precedes_refl
thf(fact_241_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_242_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_243_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_244_in__set__butlast__appendI,axiom,
! [X: v,Xs: list_v,Ys: list_v] :
( ( ( member_v2 @ X @ ( set_v2 @ ( butlast_v @ Xs ) ) )
| ( member_v2 @ X @ ( set_v2 @ ( butlast_v @ Ys ) ) ) )
=> ( member_v2 @ X @ ( set_v2 @ ( butlast_v @ ( append_v @ Xs @ Ys ) ) ) ) ) ).
% in_set_butlast_appendI
thf(fact_245_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_246_List_Oinsert__def,axiom,
( insert_nat
= ( ^ [X3: nat,Xs3: list_nat] : ( if_list_nat @ ( member_nat2 @ X3 @ ( set_nat2 @ Xs3 ) ) @ Xs3 @ ( cons_nat @ X3 @ Xs3 ) ) ) ) ).
% List.insert_def
thf(fact_247_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_248_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_249_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_250_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_251_butlast_Osimps_I1_J,axiom,
( ( butlast_v @ nil_v )
= nil_v ) ).
% butlast.simps(1)
thf(fact_252_butlast_Osimps_I1_J,axiom,
( ( butlast_nat @ nil_nat )
= nil_nat ) ).
% butlast.simps(1)
thf(fact_253_precedes__mem_I2_J,axiom,
! [X: nat,Y: nat,Xs: list_nat] :
( ( sCC_Bl437264838276925772es_nat @ X @ Y @ Xs )
=> ( member_nat2 @ Y @ ( set_nat2 @ Xs ) ) ) ).
% precedes_mem(2)
thf(fact_254_precedes__mem_I1_J,axiom,
! [X: nat,Y: nat,Xs: list_nat] :
( ( sCC_Bl437264838276925772es_nat @ X @ Y @ Xs )
=> ( member_nat2 @ X @ ( set_nat2 @ Xs ) ) ) ).
% precedes_mem(1)
thf(fact_255_rotate1_Osimps_I1_J,axiom,
( ( rotate1_v @ nil_v )
= nil_v ) ).
% rotate1.simps(1)
thf(fact_256_rotate1_Osimps_I1_J,axiom,
( ( rotate1_nat @ nil_nat )
= nil_nat ) ).
% rotate1.simps(1)
thf(fact_257_list__ex1__iff,axiom,
( list_ex1_nat
= ( ^ [P2: nat > $o,Xs3: list_nat] :
? [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ Xs3 ) )
& ( P2 @ X3 )
& ! [Y2: nat] :
( ( ( member_nat2 @ Y2 @ ( set_nat2 @ Xs3 ) )
& ( P2 @ Y2 ) )
=> ( Y2 = X3 ) ) ) ) ) ).
% list_ex1_iff
thf(fact_258_in__set__member,axiom,
! [X: nat,Xs: list_nat] :
( ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
= ( member_nat @ Xs @ X ) ) ).
% in_set_member
thf(fact_259_split__list,axiom,
! [X: v,Xs: list_v] :
( ( member_v2 @ X @ ( set_v2 @ Xs ) )
=> ? [Ys3: list_v,Zs2: list_v] :
( Xs
= ( append_v @ Ys3 @ ( cons_v @ X @ Zs2 ) ) ) ) ).
% split_list
thf(fact_260_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_261_split__list__last,axiom,
! [X: v,Xs: list_v] :
( ( member_v2 @ X @ ( set_v2 @ Xs ) )
=> ? [Ys3: list_v,Zs2: list_v] :
( ( Xs
= ( append_v @ Ys3 @ ( cons_v @ X @ Zs2 ) ) )
& ~ ( member_v2 @ X @ ( set_v2 @ Zs2 ) ) ) ) ).
% split_list_last
thf(fact_262_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_263_split__list__prop,axiom,
! [Xs: list_v,P: v > $o] :
( ? [X4: v] :
( ( member_v2 @ X4 @ ( set_v2 @ Xs ) )
& ( P @ X4 ) )
=> ? [Ys3: list_v,X2: v] :
( ? [Zs2: list_v] :
( Xs
= ( append_v @ Ys3 @ ( cons_v @ X2 @ Zs2 ) ) )
& ( P @ X2 ) ) ) ).
% split_list_prop
thf(fact_264_split__list__prop,axiom,
! [Xs: list_nat,P: nat > $o] :
( ? [X4: nat] :
( ( member_nat2 @ X4 @ ( set_nat2 @ Xs ) )
& ( P @ X4 ) )
=> ? [Ys3: list_nat,X2: nat] :
( ? [Zs2: list_nat] :
( Xs
= ( append_nat @ Ys3 @ ( cons_nat @ X2 @ Zs2 ) ) )
& ( P @ X2 ) ) ) ).
% split_list_prop
thf(fact_265_split__list__first,axiom,
! [X: v,Xs: list_v] :
( ( member_v2 @ X @ ( set_v2 @ Xs ) )
=> ? [Ys3: list_v,Zs2: list_v] :
( ( Xs
= ( append_v @ Ys3 @ ( cons_v @ X @ Zs2 ) ) )
& ~ ( member_v2 @ X @ ( set_v2 @ Ys3 ) ) ) ) ).
% split_list_first
thf(fact_266_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_267_split__list__propE,axiom,
! [Xs: list_v,P: v > $o] :
( ? [X4: v] :
( ( member_v2 @ X4 @ ( set_v2 @ Xs ) )
& ( P @ X4 ) )
=> ~ ! [Ys3: list_v,X2: v] :
( ? [Zs2: list_v] :
( Xs
= ( append_v @ Ys3 @ ( cons_v @ X2 @ Zs2 ) ) )
=> ~ ( P @ X2 ) ) ) ).
% split_list_propE
thf(fact_268_split__list__propE,axiom,
! [Xs: list_nat,P: nat > $o] :
( ? [X4: nat] :
( ( member_nat2 @ X4 @ ( set_nat2 @ Xs ) )
& ( P @ X4 ) )
=> ~ ! [Ys3: list_nat,X2: nat] :
( ? [Zs2: list_nat] :
( Xs
= ( append_nat @ Ys3 @ ( cons_nat @ X2 @ Zs2 ) ) )
=> ~ ( P @ X2 ) ) ) ).
% split_list_propE
thf(fact_269_append__Cons__eq__iff,axiom,
! [X: v,Xs: list_v,Ys: list_v,Xs5: list_v,Ys6: list_v] :
( ~ ( member_v2 @ X @ ( set_v2 @ Xs ) )
=> ( ~ ( member_v2 @ X @ ( set_v2 @ Ys ) )
=> ( ( ( append_v @ Xs @ ( cons_v @ X @ Ys ) )
= ( append_v @ Xs5 @ ( cons_v @ X @ Ys6 ) ) )
= ( ( Xs = Xs5 )
& ( Ys = Ys6 ) ) ) ) ) ).
% append_Cons_eq_iff
thf(fact_270_append__Cons__eq__iff,axiom,
! [X: nat,Xs: list_nat,Ys: list_nat,Xs5: list_nat,Ys6: list_nat] :
( ~ ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ( ~ ( member_nat2 @ X @ ( set_nat2 @ Ys ) )
=> ( ( ( append_nat @ Xs @ ( cons_nat @ X @ Ys ) )
= ( append_nat @ Xs5 @ ( cons_nat @ X @ Ys6 ) ) )
= ( ( Xs = Xs5 )
& ( Ys = Ys6 ) ) ) ) ) ).
% append_Cons_eq_iff
thf(fact_271_in__set__conv__decomp,axiom,
! [X: v,Xs: list_v] :
( ( member_v2 @ X @ ( set_v2 @ Xs ) )
= ( ? [Ys2: list_v,Zs3: list_v] :
( Xs
= ( append_v @ Ys2 @ ( cons_v @ X @ Zs3 ) ) ) ) ) ).
% in_set_conv_decomp
thf(fact_272_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_273_split__list__last__prop,axiom,
! [Xs: list_v,P: v > $o] :
( ? [X4: v] :
( ( member_v2 @ X4 @ ( set_v2 @ Xs ) )
& ( P @ X4 ) )
=> ? [Ys3: list_v,X2: v,Zs2: list_v] :
( ( Xs
= ( append_v @ Ys3 @ ( cons_v @ X2 @ Zs2 ) ) )
& ( P @ X2 )
& ! [Xa2: v] :
( ( member_v2 @ Xa2 @ ( set_v2 @ Zs2 ) )
=> ~ ( P @ Xa2 ) ) ) ) ).
% split_list_last_prop
thf(fact_274_split__list__last__prop,axiom,
! [Xs: list_nat,P: nat > $o] :
( ? [X4: nat] :
( ( member_nat2 @ X4 @ ( set_nat2 @ Xs ) )
& ( P @ X4 ) )
=> ? [Ys3: list_nat,X2: nat,Zs2: list_nat] :
( ( Xs
= ( append_nat @ Ys3 @ ( cons_nat @ X2 @ Zs2 ) ) )
& ( P @ X2 )
& ! [Xa2: nat] :
( ( member_nat2 @ Xa2 @ ( set_nat2 @ Zs2 ) )
=> ~ ( P @ Xa2 ) ) ) ) ).
% split_list_last_prop
thf(fact_275_split__list__first__prop,axiom,
! [Xs: list_v,P: v > $o] :
( ? [X4: v] :
( ( member_v2 @ X4 @ ( set_v2 @ Xs ) )
& ( P @ X4 ) )
=> ? [Ys3: list_v,X2: v] :
( ? [Zs2: list_v] :
( Xs
= ( append_v @ Ys3 @ ( cons_v @ X2 @ Zs2 ) ) )
& ( P @ X2 )
& ! [Xa2: v] :
( ( member_v2 @ Xa2 @ ( set_v2 @ Ys3 ) )
=> ~ ( P @ Xa2 ) ) ) ) ).
% split_list_first_prop
thf(fact_276_split__list__first__prop,axiom,
! [Xs: list_nat,P: nat > $o] :
( ? [X4: nat] :
( ( member_nat2 @ X4 @ ( set_nat2 @ Xs ) )
& ( P @ X4 ) )
=> ? [Ys3: list_nat,X2: nat] :
( ? [Zs2: list_nat] :
( Xs
= ( append_nat @ Ys3 @ ( cons_nat @ X2 @ Zs2 ) ) )
& ( P @ X2 )
& ! [Xa2: nat] :
( ( member_nat2 @ Xa2 @ ( set_nat2 @ Ys3 ) )
=> ~ ( P @ Xa2 ) ) ) ) ).
% split_list_first_prop
thf(fact_277_split__list__last__propE,axiom,
! [Xs: list_v,P: v > $o] :
( ? [X4: v] :
( ( member_v2 @ X4 @ ( set_v2 @ Xs ) )
& ( P @ X4 ) )
=> ~ ! [Ys3: list_v,X2: v,Zs2: list_v] :
( ( Xs
= ( append_v @ Ys3 @ ( cons_v @ X2 @ Zs2 ) ) )
=> ( ( P @ X2 )
=> ~ ! [Xa2: v] :
( ( member_v2 @ Xa2 @ ( set_v2 @ Zs2 ) )
=> ~ ( P @ Xa2 ) ) ) ) ) ).
% split_list_last_propE
thf(fact_278_split__list__last__propE,axiom,
! [Xs: list_nat,P: nat > $o] :
( ? [X4: nat] :
( ( member_nat2 @ X4 @ ( set_nat2 @ Xs ) )
& ( P @ X4 ) )
=> ~ ! [Ys3: list_nat,X2: nat,Zs2: list_nat] :
( ( Xs
= ( append_nat @ Ys3 @ ( cons_nat @ X2 @ Zs2 ) ) )
=> ( ( P @ X2 )
=> ~ ! [Xa2: nat] :
( ( member_nat2 @ Xa2 @ ( set_nat2 @ Zs2 ) )
=> ~ ( P @ Xa2 ) ) ) ) ) ).
% split_list_last_propE
thf(fact_279_split__list__first__propE,axiom,
! [Xs: list_v,P: v > $o] :
( ? [X4: v] :
( ( member_v2 @ X4 @ ( set_v2 @ Xs ) )
& ( P @ X4 ) )
=> ~ ! [Ys3: list_v,X2: v] :
( ? [Zs2: list_v] :
( Xs
= ( append_v @ Ys3 @ ( cons_v @ X2 @ Zs2 ) ) )
=> ( ( P @ X2 )
=> ~ ! [Xa2: v] :
( ( member_v2 @ Xa2 @ ( set_v2 @ Ys3 ) )
=> ~ ( P @ Xa2 ) ) ) ) ) ).
% split_list_first_propE
thf(fact_280_split__list__first__propE,axiom,
! [Xs: list_nat,P: nat > $o] :
( ? [X4: nat] :
( ( member_nat2 @ X4 @ ( set_nat2 @ Xs ) )
& ( P @ X4 ) )
=> ~ ! [Ys3: list_nat,X2: nat] :
( ? [Zs2: list_nat] :
( Xs
= ( append_nat @ Ys3 @ ( cons_nat @ X2 @ Zs2 ) ) )
=> ( ( P @ X2 )
=> ~ ! [Xa2: nat] :
( ( member_nat2 @ Xa2 @ ( set_nat2 @ Ys3 ) )
=> ~ ( P @ Xa2 ) ) ) ) ) ).
% split_list_first_propE
thf(fact_281_in__set__conv__decomp__last,axiom,
! [X: v,Xs: list_v] :
( ( member_v2 @ X @ ( set_v2 @ Xs ) )
= ( ? [Ys2: list_v,Zs3: list_v] :
( ( Xs
= ( append_v @ Ys2 @ ( cons_v @ X @ Zs3 ) ) )
& ~ ( member_v2 @ X @ ( set_v2 @ Zs3 ) ) ) ) ) ).
% in_set_conv_decomp_last
thf(fact_282_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_283_in__set__conv__decomp__first,axiom,
! [X: v,Xs: list_v] :
( ( member_v2 @ X @ ( set_v2 @ Xs ) )
= ( ? [Ys2: list_v,Zs3: list_v] :
( ( Xs
= ( append_v @ Ys2 @ ( cons_v @ X @ Zs3 ) ) )
& ~ ( member_v2 @ X @ ( set_v2 @ Ys2 ) ) ) ) ) ).
% in_set_conv_decomp_first
thf(fact_284_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_285_split__list__last__prop__iff,axiom,
! [Xs: list_v,P: v > $o] :
( ( ? [X3: v] :
( ( member_v2 @ X3 @ ( set_v2 @ Xs ) )
& ( P @ X3 ) ) )
= ( ? [Ys2: list_v,X3: v,Zs3: list_v] :
( ( Xs
= ( append_v @ Ys2 @ ( cons_v @ X3 @ Zs3 ) ) )
& ( P @ X3 )
& ! [Y2: v] :
( ( member_v2 @ Y2 @ ( set_v2 @ Zs3 ) )
=> ~ ( P @ Y2 ) ) ) ) ) ).
% split_list_last_prop_iff
thf(fact_286_split__list__last__prop__iff,axiom,
! [Xs: list_nat,P: nat > $o] :
( ( ? [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ Xs ) )
& ( P @ X3 ) ) )
= ( ? [Ys2: list_nat,X3: nat,Zs3: list_nat] :
( ( Xs
= ( append_nat @ Ys2 @ ( cons_nat @ X3 @ Zs3 ) ) )
& ( P @ X3 )
& ! [Y2: nat] :
( ( member_nat2 @ Y2 @ ( set_nat2 @ Zs3 ) )
=> ~ ( P @ Y2 ) ) ) ) ) ).
% split_list_last_prop_iff
thf(fact_287_split__list__first__prop__iff,axiom,
! [Xs: list_v,P: v > $o] :
( ( ? [X3: v] :
( ( member_v2 @ X3 @ ( set_v2 @ Xs ) )
& ( P @ X3 ) ) )
= ( ? [Ys2: list_v,X3: v] :
( ? [Zs3: list_v] :
( Xs
= ( append_v @ Ys2 @ ( cons_v @ X3 @ Zs3 ) ) )
& ( P @ X3 )
& ! [Y2: v] :
( ( member_v2 @ Y2 @ ( set_v2 @ Ys2 ) )
=> ~ ( P @ Y2 ) ) ) ) ) ).
% split_list_first_prop_iff
thf(fact_288_split__list__first__prop__iff,axiom,
! [Xs: list_nat,P: nat > $o] :
( ( ? [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ Xs ) )
& ( P @ X3 ) ) )
= ( ? [Ys2: list_nat,X3: nat] :
( ? [Zs3: list_nat] :
( Xs
= ( append_nat @ Ys2 @ ( cons_nat @ X3 @ Zs3 ) ) )
& ( P @ X3 )
& ! [Y2: nat] :
( ( member_nat2 @ Y2 @ ( set_nat2 @ Ys2 ) )
=> ~ ( P @ Y2 ) ) ) ) ) ).
% split_list_first_prop_iff
thf(fact_289_map__tailrec__rev_Osimps_I2_J,axiom,
! [F: nat > nat,A: nat,As2: list_nat,Bs: list_nat] :
( ( map_ta7164188454487880599at_nat @ F @ ( cons_nat @ A @ As2 ) @ Bs )
= ( map_ta7164188454487880599at_nat @ F @ As2 @ ( cons_nat @ ( F @ A ) @ Bs ) ) ) ).
% map_tailrec_rev.simps(2)
thf(fact_290_last__in__set,axiom,
! [As2: list_v] :
( ( As2 != nil_v )
=> ( member_v2 @ ( last_v @ As2 ) @ ( set_v2 @ As2 ) ) ) ).
% last_in_set
thf(fact_291_last__in__set,axiom,
! [As2: list_nat] :
( ( As2 != nil_nat )
=> ( member_nat2 @ ( last_nat @ As2 ) @ ( set_nat2 @ As2 ) ) ) ).
% last_in_set
thf(fact_292_head__precedes,axiom,
! [Y: nat,X: nat,Xs: list_nat] :
( ( member_nat2 @ Y @ ( set_nat2 @ ( cons_nat @ X @ Xs ) ) )
=> ( sCC_Bl437264838276925772es_nat @ X @ Y @ ( cons_nat @ X @ Xs ) ) ) ).
% head_precedes
thf(fact_293_tail__not__precedes,axiom,
! [Y: nat,X: nat,Xs: list_nat] :
( ( sCC_Bl437264838276925772es_nat @ Y @ X @ ( cons_nat @ X @ Xs ) )
=> ( ~ ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ( X = Y ) ) ) ).
% tail_not_precedes
thf(fact_294_precedes__append__right__iff,axiom,
! [Y: v,Ys: list_v,X: v,Xs: list_v] :
( ~ ( member_v2 @ Y @ ( set_v2 @ Ys ) )
=> ( ( sCC_Bl4022239298816431255edes_v @ X @ Y @ ( append_v @ Xs @ Ys ) )
= ( sCC_Bl4022239298816431255edes_v @ X @ Y @ Xs ) ) ) ).
% precedes_append_right_iff
thf(fact_295_precedes__append__right__iff,axiom,
! [Y: nat,Ys: list_nat,X: nat,Xs: list_nat] :
( ~ ( member_nat2 @ Y @ ( set_nat2 @ Ys ) )
=> ( ( sCC_Bl437264838276925772es_nat @ X @ Y @ ( append_nat @ Xs @ Ys ) )
= ( sCC_Bl437264838276925772es_nat @ X @ Y @ Xs ) ) ) ).
% precedes_append_right_iff
thf(fact_296_precedes__append__left__iff,axiom,
! [X: v,Ys: list_v,Y: v,Xs: list_v] :
( ~ ( member_v2 @ X @ ( set_v2 @ Ys ) )
=> ( ( sCC_Bl4022239298816431255edes_v @ X @ Y @ ( append_v @ Ys @ Xs ) )
= ( sCC_Bl4022239298816431255edes_v @ X @ Y @ Xs ) ) ) ).
% precedes_append_left_iff
thf(fact_297_precedes__append__left__iff,axiom,
! [X: nat,Ys: list_nat,Y: nat,Xs: list_nat] :
( ~ ( member_nat2 @ X @ ( set_nat2 @ Ys ) )
=> ( ( sCC_Bl437264838276925772es_nat @ X @ Y @ ( append_nat @ Ys @ Xs ) )
= ( sCC_Bl437264838276925772es_nat @ X @ Y @ Xs ) ) ) ).
% precedes_append_left_iff
thf(fact_298_butlast_Osimps_I2_J,axiom,
! [Xs: list_v,X: v] :
( ( ( Xs = nil_v )
=> ( ( butlast_v @ ( cons_v @ X @ Xs ) )
= nil_v ) )
& ( ( Xs != nil_v )
=> ( ( butlast_v @ ( cons_v @ X @ Xs ) )
= ( cons_v @ X @ ( butlast_v @ Xs ) ) ) ) ) ).
% butlast.simps(2)
thf(fact_299_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_300_butlast__append,axiom,
! [Ys: list_v,Xs: list_v] :
( ( ( Ys = nil_v )
=> ( ( butlast_v @ ( append_v @ Xs @ Ys ) )
= ( butlast_v @ Xs ) ) )
& ( ( Ys != nil_v )
=> ( ( butlast_v @ ( append_v @ Xs @ Ys ) )
= ( append_v @ Xs @ ( butlast_v @ Ys ) ) ) ) ) ).
% butlast_append
thf(fact_301_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_302_precedes__def,axiom,
( sCC_Bl4022239298816431255edes_v
= ( ^ [X3: v,Y2: v,Xs3: list_v] :
? [L: list_v,R3: list_v] :
( ( Xs3
= ( append_v @ L @ ( cons_v @ X3 @ R3 ) ) )
& ( member_v2 @ Y2 @ ( set_v2 @ ( cons_v @ X3 @ R3 ) ) ) ) ) ) ).
% precedes_def
thf(fact_303_precedes__def,axiom,
( sCC_Bl437264838276925772es_nat
= ( ^ [X3: nat,Y2: nat,Xs3: list_nat] :
? [L: list_nat,R3: list_nat] :
( ( Xs3
= ( append_nat @ L @ ( cons_nat @ X3 @ R3 ) ) )
& ( member_nat2 @ Y2 @ ( set_nat2 @ ( cons_nat @ X3 @ R3 ) ) ) ) ) ) ).
% precedes_def
thf(fact_304_SuccD,axiom,
! [K: v,Kl2: set_list_v,Kl: list_v] :
( ( member_v2 @ K @ ( bNF_Greatest_Succ_v @ Kl2 @ Kl ) )
=> ( member_list_v2 @ ( append_v @ Kl @ ( cons_v @ K @ nil_v ) ) @ Kl2 ) ) ).
% SuccD
thf(fact_305_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_306_is__empty__set,axiom,
! [Xs: list_nat] :
( ( is_empty_nat @ ( set_nat2 @ Xs ) )
= ( null_nat @ Xs ) ) ).
% is_empty_set
thf(fact_307_can__select__set__list__ex1,axiom,
! [P: nat > $o,A4: list_nat] :
( ( can_select_nat @ P @ ( set_nat2 @ A4 ) )
= ( list_ex1_nat @ P @ A4 ) ) ).
% can_select_set_list_ex1
thf(fact_308_the__elem__set,axiom,
! [X: v] :
( ( the_elem_v @ ( set_v2 @ ( cons_v @ X @ nil_v ) ) )
= X ) ).
% the_elem_set
thf(fact_309_the__elem__set,axiom,
! [X: nat] :
( ( the_elem_nat @ ( set_nat2 @ ( cons_nat @ X @ nil_nat ) ) )
= X ) ).
% the_elem_set
thf(fact_310_empty__Shift,axiom,
! [Kl2: set_list_v,K: v] :
( ( member_list_v2 @ nil_v @ Kl2 )
=> ( ( member_v2 @ K @ ( bNF_Greatest_Succ_v @ Kl2 @ nil_v ) )
=> ( member_list_v2 @ nil_v @ ( bNF_Greatest_Shift_v @ Kl2 @ K ) ) ) ) ).
% empty_Shift
thf(fact_311_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_312_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_313_product__lists_Osimps_I1_J,axiom,
( ( product_lists_v @ nil_list_v )
= ( cons_list_v @ nil_v @ nil_list_v ) ) ).
% product_lists.simps(1)
thf(fact_314_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_315_subseqs_Osimps_I1_J,axiom,
( ( subseqs_v @ nil_v )
= ( cons_list_v @ nil_v @ nil_list_v ) ) ).
% subseqs.simps(1)
thf(fact_316_subseqs_Osimps_I1_J,axiom,
( ( subseqs_nat @ nil_nat )
= ( cons_list_nat @ nil_nat @ nil_list_nat ) ) ).
% subseqs.simps(1)
thf(fact_317_concat__eq__append__conv,axiom,
! [Xss2: list_list_v,Ys: list_v,Zs: list_v] :
( ( ( concat_v @ Xss2 )
= ( append_v @ Ys @ Zs ) )
= ( ( ( Xss2 = nil_list_v )
=> ( ( Ys = nil_v )
& ( Zs = nil_v ) ) )
& ( ( Xss2 != nil_list_v )
=> ? [Xss1: list_list_v,Xs3: list_v,Xs6: list_v,Xss22: list_list_v] :
( ( Xss2
= ( append_list_v @ Xss1 @ ( cons_list_v @ ( append_v @ Xs3 @ Xs6 ) @ Xss22 ) ) )
& ( Ys
= ( append_v @ ( concat_v @ Xss1 ) @ Xs3 ) )
& ( Zs
= ( append_v @ Xs6 @ ( concat_v @ Xss22 ) ) ) ) ) ) ) ).
% concat_eq_append_conv
thf(fact_318_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,Xs6: list_nat,Xss22: list_list_nat] :
( ( Xss2
= ( append_list_nat @ Xss1 @ ( cons_list_nat @ ( append_nat @ Xs3 @ Xs6 ) @ Xss22 ) ) )
& ( Ys
= ( append_nat @ ( concat_nat @ Xss1 ) @ Xs3 ) )
& ( Zs
= ( append_nat @ Xs6 @ ( concat_nat @ Xss22 ) ) ) ) ) ) ) ).
% concat_eq_append_conv
thf(fact_319_concat__eq__appendD,axiom,
! [Xss2: list_list_v,Ys: list_v,Zs: list_v] :
( ( ( concat_v @ Xss2 )
= ( append_v @ Ys @ Zs ) )
=> ( ( Xss2 != nil_list_v )
=> ? [Xss12: list_list_v,Xs2: list_v,Xs4: list_v,Xss23: list_list_v] :
( ( Xss2
= ( append_list_v @ Xss12 @ ( cons_list_v @ ( append_v @ Xs2 @ Xs4 ) @ Xss23 ) ) )
& ( Ys
= ( append_v @ ( concat_v @ Xss12 ) @ Xs2 ) )
& ( Zs
= ( append_v @ Xs4 @ ( concat_v @ Xss23 ) ) ) ) ) ) ).
% concat_eq_appendD
thf(fact_320_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,Xs4: list_nat,Xss23: list_list_nat] :
( ( Xss2
= ( append_list_nat @ Xss12 @ ( cons_list_nat @ ( append_nat @ Xs2 @ Xs4 ) @ Xss23 ) ) )
& ( Ys
= ( append_nat @ ( concat_nat @ Xss12 ) @ Xs2 ) )
& ( Zs
= ( append_nat @ Xs4 @ ( concat_nat @ Xss23 ) ) ) ) ) ) ).
% concat_eq_appendD
thf(fact_321_concat__eq__Nil__conv,axiom,
! [Xss2: list_list_v] :
( ( ( concat_v @ Xss2 )
= nil_v )
= ( ! [X3: list_v] :
( ( member_list_v2 @ X3 @ ( set_list_v2 @ Xss2 ) )
=> ( X3 = nil_v ) ) ) ) ).
% concat_eq_Nil_conv
thf(fact_322_concat__eq__Nil__conv,axiom,
! [Xss2: list_list_nat] :
( ( ( concat_nat @ Xss2 )
= nil_nat )
= ( ! [X3: list_nat] :
( ( member_list_nat2 @ X3 @ ( set_list_nat2 @ Xss2 ) )
=> ( X3 = nil_nat ) ) ) ) ).
% concat_eq_Nil_conv
thf(fact_323_Nil__eq__concat__conv,axiom,
! [Xss2: list_list_v] :
( ( nil_v
= ( concat_v @ Xss2 ) )
= ( ! [X3: list_v] :
( ( member_list_v2 @ X3 @ ( set_list_v2 @ Xss2 ) )
=> ( X3 = nil_v ) ) ) ) ).
% Nil_eq_concat_conv
thf(fact_324_Nil__eq__concat__conv,axiom,
! [Xss2: list_list_nat] :
( ( nil_nat
= ( concat_nat @ Xss2 ) )
= ( ! [X3: list_nat] :
( ( member_list_nat2 @ X3 @ ( set_list_nat2 @ Xss2 ) )
=> ( X3 = nil_nat ) ) ) ) ).
% Nil_eq_concat_conv
thf(fact_325_concat__append,axiom,
! [Xs: list_list_v,Ys: list_list_v] :
( ( concat_v @ ( append_list_v @ Xs @ Ys ) )
= ( append_v @ ( concat_v @ Xs ) @ ( concat_v @ Ys ) ) ) ).
% concat_append
thf(fact_326_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_327_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_328_concat_Osimps_I1_J,axiom,
( ( concat_v @ nil_list_v )
= nil_v ) ).
% concat.simps(1)
thf(fact_329_concat_Osimps_I1_J,axiom,
( ( concat_nat @ nil_list_nat )
= nil_nat ) ).
% concat.simps(1)
thf(fact_330_concat_Osimps_I2_J,axiom,
! [X: list_v,Xs: list_list_v] :
( ( concat_v @ ( cons_list_v @ X @ Xs ) )
= ( append_v @ X @ ( concat_v @ Xs ) ) ) ).
% concat.simps(2)
thf(fact_331_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_332_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_333_concat__conv__foldr,axiom,
( concat_v
= ( ^ [Xss3: list_list_v] : ( foldr_list_v_list_v @ append_v @ Xss3 @ nil_v ) ) ) ).
% concat_conv_foldr
thf(fact_334_concat__conv__foldr,axiom,
( concat_nat
= ( ^ [Xss3: list_list_nat] : ( foldr_6871341030409798377st_nat @ append_nat @ Xss3 @ nil_nat ) ) ) ).
% concat_conv_foldr
thf(fact_335_remove1__split,axiom,
! [A: v,Xs: list_v,Ys: list_v] :
( ( member_v2 @ A @ ( set_v2 @ Xs ) )
=> ( ( ( remove1_v @ A @ Xs )
= Ys )
= ( ? [Ls: list_v,Rs: list_v] :
( ( Xs
= ( append_v @ Ls @ ( cons_v @ A @ Rs ) ) )
& ~ ( member_v2 @ A @ ( set_v2 @ Ls ) )
& ( Ys
= ( append_v @ Ls @ Rs ) ) ) ) ) ) ).
% remove1_split
thf(fact_336_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_337_ord_Olexordp__eq__simps_I3_J,axiom,
! [Less: v > v > $o,X: v,Xs: list_v] :
~ ( lexordp_eq_v @ Less @ ( cons_v @ X @ Xs ) @ nil_v ) ).
% ord.lexordp_eq_simps(3)
thf(fact_338_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_339_listrelp_Osimps,axiom,
( listrelp_v_v
= ( ^ [R3: v > v > $o,A1: list_v,A2: list_v] :
( ( ( A1 = nil_v )
& ( A2 = nil_v ) )
| ? [X3: v,Y2: v,Xs3: list_v,Ys2: list_v] :
( ( A1
= ( cons_v @ X3 @ Xs3 ) )
& ( A2
= ( cons_v @ Y2 @ Ys2 ) )
& ( R3 @ X3 @ Y2 )
& ( listrelp_v_v @ R3 @ Xs3 @ Ys2 ) ) ) ) ) ).
% listrelp.simps
thf(fact_340_listrelp_Osimps,axiom,
( listrelp_v_nat
= ( ^ [R3: v > nat > $o,A1: list_v,A2: list_nat] :
( ( ( A1 = nil_v )
& ( A2 = nil_nat ) )
| ? [X3: v,Y2: nat,Xs3: list_v,Ys2: list_nat] :
( ( A1
= ( cons_v @ X3 @ Xs3 ) )
& ( A2
= ( cons_nat @ Y2 @ Ys2 ) )
& ( R3 @ X3 @ Y2 )
& ( listrelp_v_nat @ R3 @ Xs3 @ Ys2 ) ) ) ) ) ).
% listrelp.simps
thf(fact_341_listrelp_Osimps,axiom,
( listrelp_nat_v
= ( ^ [R3: nat > v > $o,A1: list_nat,A2: list_v] :
( ( ( A1 = nil_nat )
& ( A2 = nil_v ) )
| ? [X3: nat,Y2: v,Xs3: list_nat,Ys2: list_v] :
( ( A1
= ( cons_nat @ X3 @ Xs3 ) )
& ( A2
= ( cons_v @ Y2 @ Ys2 ) )
& ( R3 @ X3 @ Y2 )
& ( listrelp_nat_v @ R3 @ Xs3 @ Ys2 ) ) ) ) ) ).
% listrelp.simps
thf(fact_342_listrelp_Osimps,axiom,
( listrelp_nat_nat
= ( ^ [R3: nat > nat > $o,A1: list_nat,A2: list_nat] :
( ( ( A1 = nil_nat )
& ( A2 = nil_nat ) )
| ? [X3: nat,Y2: nat,Xs3: list_nat,Ys2: list_nat] :
( ( A1
= ( cons_nat @ X3 @ Xs3 ) )
& ( A2
= ( cons_nat @ Y2 @ Ys2 ) )
& ( R3 @ X3 @ Y2 )
& ( listrelp_nat_nat @ R3 @ Xs3 @ Ys2 ) ) ) ) ) ).
% listrelp.simps
thf(fact_343_listrelp_Ocases,axiom,
! [R: v > v > $o,A12: list_v,A22: list_v] :
( ( listrelp_v_v @ R @ A12 @ A22 )
=> ( ( ( A12 = nil_v )
=> ( A22 != nil_v ) )
=> ~ ! [X2: v,Y3: v,Xs2: list_v] :
( ( A12
= ( cons_v @ X2 @ Xs2 ) )
=> ! [Ys3: list_v] :
( ( A22
= ( cons_v @ Y3 @ Ys3 ) )
=> ( ( R @ X2 @ Y3 )
=> ~ ( listrelp_v_v @ R @ Xs2 @ Ys3 ) ) ) ) ) ) ).
% listrelp.cases
thf(fact_344_listrelp_Ocases,axiom,
! [R: v > nat > $o,A12: list_v,A22: list_nat] :
( ( listrelp_v_nat @ R @ A12 @ A22 )
=> ( ( ( A12 = nil_v )
=> ( A22 != nil_nat ) )
=> ~ ! [X2: v,Y3: nat,Xs2: list_v] :
( ( A12
= ( cons_v @ X2 @ Xs2 ) )
=> ! [Ys3: list_nat] :
( ( A22
= ( cons_nat @ Y3 @ Ys3 ) )
=> ( ( R @ X2 @ Y3 )
=> ~ ( listrelp_v_nat @ R @ Xs2 @ Ys3 ) ) ) ) ) ) ).
% listrelp.cases
thf(fact_345_listrelp_Ocases,axiom,
! [R: nat > v > $o,A12: list_nat,A22: list_v] :
( ( listrelp_nat_v @ R @ A12 @ A22 )
=> ( ( ( A12 = nil_nat )
=> ( A22 != nil_v ) )
=> ~ ! [X2: nat,Y3: v,Xs2: list_nat] :
( ( A12
= ( cons_nat @ X2 @ Xs2 ) )
=> ! [Ys3: list_v] :
( ( A22
= ( cons_v @ Y3 @ Ys3 ) )
=> ( ( R @ X2 @ Y3 )
=> ~ ( listrelp_nat_v @ R @ Xs2 @ Ys3 ) ) ) ) ) ) ).
% listrelp.cases
thf(fact_346_listrelp_Ocases,axiom,
! [R: nat > nat > $o,A12: list_nat,A22: list_nat] :
( ( listrelp_nat_nat @ R @ A12 @ A22 )
=> ( ( ( A12 = nil_nat )
=> ( A22 != nil_nat ) )
=> ~ ! [X2: nat,Y3: nat,Xs2: list_nat] :
( ( A12
= ( cons_nat @ X2 @ Xs2 ) )
=> ! [Ys3: list_nat] :
( ( A22
= ( cons_nat @ Y3 @ Ys3 ) )
=> ( ( R @ X2 @ Y3 )
=> ~ ( listrelp_nat_nat @ R @ Xs2 @ Ys3 ) ) ) ) ) ) ).
% listrelp.cases
thf(fact_347_rev__eq__Cons__iff,axiom,
! [Xs: list_v,Y: v,Ys: list_v] :
( ( ( rev_v @ Xs )
= ( cons_v @ Y @ Ys ) )
= ( Xs
= ( append_v @ ( rev_v @ Ys ) @ ( cons_v @ Y @ nil_v ) ) ) ) ).
% rev_eq_Cons_iff
thf(fact_348_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_349_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_350_Nil__is__rev__conv,axiom,
! [Xs: list_v] :
( ( nil_v
= ( rev_v @ Xs ) )
= ( Xs = nil_v ) ) ).
% Nil_is_rev_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_rev__is__Nil__conv,axiom,
! [Xs: list_v] :
( ( ( rev_v @ Xs )
= nil_v )
= ( Xs = nil_v ) ) ).
% rev_is_Nil_conv
thf(fact_353_rev__is__Nil__conv,axiom,
! [Xs: list_nat] :
( ( ( rev_nat @ Xs )
= nil_nat )
= ( Xs = nil_nat ) ) ).
% rev_is_Nil_conv
thf(fact_354_set__rev,axiom,
! [Xs: list_nat] :
( ( set_nat2 @ ( rev_nat @ Xs ) )
= ( set_nat2 @ Xs ) ) ).
% set_rev
thf(fact_355_rev__append,axiom,
! [Xs: list_v,Ys: list_v] :
( ( rev_v @ ( append_v @ Xs @ Ys ) )
= ( append_v @ ( rev_v @ Ys ) @ ( rev_v @ Xs ) ) ) ).
% rev_append
thf(fact_356_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_357_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_358_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_359_lexordp__eq__simps_I1_J,axiom,
! [Ys: list_nat] : ( ord_lexordp_eq_nat @ nil_nat @ Ys ) ).
% lexordp_eq_simps(1)
thf(fact_360_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_361_ord_Olexordp__eq__simps_I2_J,axiom,
! [Less: v > v > $o,Xs: list_v] :
( ( lexordp_eq_v @ Less @ Xs @ nil_v )
= ( Xs = nil_v ) ) ).
% ord.lexordp_eq_simps(2)
thf(fact_362_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_363_ord_Olexordp__eq__simps_I1_J,axiom,
! [Less: v > v > $o,Ys: list_v] : ( lexordp_eq_v @ Less @ nil_v @ Ys ) ).
% ord.lexordp_eq_simps(1)
thf(fact_364_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_365_rev__singleton__conv,axiom,
! [Xs: list_v,X: v] :
( ( ( rev_v @ Xs )
= ( cons_v @ X @ nil_v ) )
= ( Xs
= ( cons_v @ X @ nil_v ) ) ) ).
% rev_singleton_conv
thf(fact_366_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_367_singleton__rev__conv,axiom,
! [X: v,Xs: list_v] :
( ( ( cons_v @ X @ nil_v )
= ( rev_v @ Xs ) )
= ( ( cons_v @ X @ nil_v )
= Xs ) ) ).
% singleton_rev_conv
thf(fact_368_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_369_rev_Osimps_I1_J,axiom,
( ( rev_v @ nil_v )
= nil_v ) ).
% rev.simps(1)
thf(fact_370_rev_Osimps_I1_J,axiom,
( ( rev_nat @ nil_nat )
= nil_nat ) ).
% rev.simps(1)
thf(fact_371_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_372_remove1_Osimps_I1_J,axiom,
! [X: v] :
( ( remove1_v @ X @ nil_v )
= nil_v ) ).
% remove1.simps(1)
thf(fact_373_remove1_Osimps_I1_J,axiom,
! [X: nat] :
( ( remove1_nat @ X @ nil_nat )
= nil_nat ) ).
% remove1.simps(1)
thf(fact_374_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_375_remove1__idem,axiom,
! [X: nat,Xs: list_nat] :
( ~ ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ( ( remove1_nat @ X @ Xs )
= Xs ) ) ).
% remove1_idem
thf(fact_376_lexordp__eq_ONil,axiom,
! [Ys: list_nat] : ( ord_lexordp_eq_nat @ nil_nat @ Ys ) ).
% lexordp_eq.Nil
thf(fact_377_lexordp__eq__pref,axiom,
! [U: list_nat,V3: list_nat] : ( ord_lexordp_eq_nat @ U @ ( append_nat @ U @ V3 ) ) ).
% lexordp_eq_pref
thf(fact_378_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_379_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_380_ord_Olexordp__eq_ONil,axiom,
! [Less: v > v > $o,Ys: list_v] : ( lexordp_eq_v @ Less @ nil_v @ Ys ) ).
% ord.lexordp_eq.Nil
thf(fact_381_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_382_ord_Olexordp__eq__pref,axiom,
! [Less: v > v > $o,U: list_v,V3: list_v] : ( lexordp_eq_v @ Less @ U @ ( append_v @ U @ V3 ) ) ).
% ord.lexordp_eq_pref
thf(fact_383_ord_Olexordp__eq__pref,axiom,
! [Less: nat > nat > $o,U: list_nat,V3: list_nat] : ( lexordp_eq_nat @ Less @ U @ ( append_nat @ U @ V3 ) ) ).
% ord.lexordp_eq_pref
thf(fact_384_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_385_listrelp_ONil,axiom,
! [R: v > v > $o] : ( listrelp_v_v @ R @ nil_v @ nil_v ) ).
% listrelp.Nil
thf(fact_386_listrelp_ONil,axiom,
! [R: v > nat > $o] : ( listrelp_v_nat @ R @ nil_v @ nil_nat ) ).
% listrelp.Nil
thf(fact_387_listrelp_ONil,axiom,
! [R: nat > v > $o] : ( listrelp_nat_v @ R @ nil_nat @ nil_v ) ).
% listrelp.Nil
thf(fact_388_listrelp_ONil,axiom,
! [R: nat > nat > $o] : ( listrelp_nat_nat @ R @ nil_nat @ nil_nat ) ).
% listrelp.Nil
thf(fact_389_remove1__append,axiom,
! [X: v,Xs: list_v,Ys: list_v] :
( ( ( member_v2 @ X @ ( set_v2 @ Xs ) )
=> ( ( remove1_v @ X @ ( append_v @ Xs @ Ys ) )
= ( append_v @ ( remove1_v @ X @ Xs ) @ Ys ) ) )
& ( ~ ( member_v2 @ X @ ( set_v2 @ Xs ) )
=> ( ( remove1_v @ X @ ( append_v @ Xs @ Ys ) )
= ( append_v @ Xs @ ( remove1_v @ X @ Ys ) ) ) ) ) ).
% remove1_append
thf(fact_390_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_391_ord_Olexordp__eq_Ocases,axiom,
! [Less: v > v > $o,A12: list_v,A22: list_v] :
( ( lexordp_eq_v @ Less @ A12 @ A22 )
=> ( ( A12 != nil_v )
=> ( ! [X2: v] :
( ? [Xs2: list_v] :
( A12
= ( cons_v @ X2 @ Xs2 ) )
=> ! [Y3: v] :
( ? [Ys3: list_v] :
( A22
= ( cons_v @ Y3 @ Ys3 ) )
=> ~ ( Less @ X2 @ Y3 ) ) )
=> ~ ! [X2: v,Y3: v,Xs2: list_v] :
( ( A12
= ( cons_v @ X2 @ Xs2 ) )
=> ! [Ys3: list_v] :
( ( A22
= ( cons_v @ Y3 @ Ys3 ) )
=> ( ~ ( Less @ X2 @ Y3 )
=> ( ~ ( Less @ Y3 @ X2 )
=> ~ ( lexordp_eq_v @ Less @ Xs2 @ Ys3 ) ) ) ) ) ) ) ) ).
% ord.lexordp_eq.cases
thf(fact_392_ord_Olexordp__eq_Ocases,axiom,
! [Less: nat > nat > $o,A12: list_nat,A22: list_nat] :
( ( lexordp_eq_nat @ Less @ A12 @ A22 )
=> ( ( A12 != nil_nat )
=> ( ! [X2: nat] :
( ? [Xs2: list_nat] :
( A12
= ( cons_nat @ X2 @ Xs2 ) )
=> ! [Y3: nat] :
( ? [Ys3: list_nat] :
( A22
= ( cons_nat @ Y3 @ Ys3 ) )
=> ~ ( Less @ X2 @ Y3 ) ) )
=> ~ ! [X2: nat,Y3: nat,Xs2: list_nat] :
( ( A12
= ( cons_nat @ X2 @ Xs2 ) )
=> ! [Ys3: list_nat] :
( ( A22
= ( cons_nat @ Y3 @ Ys3 ) )
=> ( ~ ( Less @ X2 @ Y3 )
=> ( ~ ( Less @ Y3 @ X2 )
=> ~ ( lexordp_eq_nat @ Less @ Xs2 @ Ys3 ) ) ) ) ) ) ) ) ).
% ord.lexordp_eq.cases
thf(fact_393_ord_Olexordp__eq_Osimps,axiom,
( lexordp_eq_v
= ( ^ [Less2: v > v > $o,A1: list_v,A2: list_v] :
( ? [Ys2: list_v] :
( ( A1 = nil_v )
& ( A2 = Ys2 ) )
| ? [X3: v,Y2: v,Xs3: list_v,Ys2: list_v] :
( ( A1
= ( cons_v @ X3 @ Xs3 ) )
& ( A2
= ( cons_v @ Y2 @ Ys2 ) )
& ( Less2 @ X3 @ Y2 ) )
| ? [X3: v,Y2: v,Xs3: list_v,Ys2: list_v] :
( ( A1
= ( cons_v @ X3 @ Xs3 ) )
& ( A2
= ( cons_v @ Y2 @ Ys2 ) )
& ~ ( Less2 @ X3 @ Y2 )
& ~ ( Less2 @ Y2 @ X3 )
& ( lexordp_eq_v @ Less2 @ Xs3 @ Ys2 ) ) ) ) ) ).
% ord.lexordp_eq.simps
thf(fact_394_ord_Olexordp__eq_Osimps,axiom,
( lexordp_eq_nat
= ( ^ [Less2: nat > nat > $o,A1: list_nat,A2: list_nat] :
( ? [Ys2: list_nat] :
( ( A1 = nil_nat )
& ( A2 = Ys2 ) )
| ? [X3: nat,Y2: nat,Xs3: list_nat,Ys2: list_nat] :
( ( A1
= ( cons_nat @ X3 @ Xs3 ) )
& ( A2
= ( cons_nat @ Y2 @ Ys2 ) )
& ( Less2 @ X3 @ Y2 ) )
| ? [X3: nat,Y2: nat,Xs3: list_nat,Ys2: list_nat] :
( ( A1
= ( cons_nat @ X3 @ Xs3 ) )
& ( A2
= ( cons_nat @ Y2 @ Ys2 ) )
& ~ ( Less2 @ X3 @ Y2 )
& ~ ( Less2 @ Y2 @ X3 )
& ( lexordp_eq_nat @ Less2 @ Xs3 @ Ys2 ) ) ) ) ) ).
% ord.lexordp_eq.simps
thf(fact_395_rev_Osimps_I2_J,axiom,
! [X: v,Xs: list_v] :
( ( rev_v @ ( cons_v @ X @ Xs ) )
= ( append_v @ ( rev_v @ Xs ) @ ( cons_v @ X @ nil_v ) ) ) ).
% rev.simps(2)
thf(fact_396_rev_Osimps_I2_J,axiom,
! [X: nat,Xs: list_nat] :
( ( rev_nat @ ( cons_nat @ X @ Xs ) )
= ( append_nat @ ( rev_nat @ Xs ) @ ( cons_nat @ X @ nil_nat ) ) ) ).
% rev.simps(2)
thf(fact_397_transpose__empty,axiom,
! [Xs: list_list_v] :
( ( ( transpose_v @ Xs )
= nil_list_v )
= ( ! [X3: list_v] :
( ( member_list_v2 @ X3 @ ( set_list_v2 @ Xs ) )
=> ( X3 = nil_v ) ) ) ) ).
% transpose_empty
thf(fact_398_transpose__empty,axiom,
! [Xs: list_list_nat] :
( ( ( transpose_nat @ Xs )
= nil_list_nat )
= ( ! [X3: list_nat] :
( ( member_list_nat2 @ X3 @ ( set_list_nat2 @ Xs ) )
=> ( X3 = nil_nat ) ) ) ) ).
% transpose_empty
thf(fact_399_lexordp__eq_Osimps,axiom,
( ord_lexordp_eq_nat
= ( ^ [A1: list_nat,A2: list_nat] :
( ? [Ys2: list_nat] :
( ( A1 = nil_nat )
& ( A2 = Ys2 ) )
| ? [X3: nat,Y2: nat,Xs3: list_nat,Ys2: list_nat] :
( ( A1
= ( cons_nat @ X3 @ Xs3 ) )
& ( A2
= ( cons_nat @ Y2 @ Ys2 ) )
& ( ord_less_nat @ X3 @ Y2 ) )
| ? [X3: nat,Y2: nat,Xs3: list_nat,Ys2: list_nat] :
( ( A1
= ( cons_nat @ X3 @ Xs3 ) )
& ( A2
= ( cons_nat @ Y2 @ Ys2 ) )
& ~ ( ord_less_nat @ X3 @ Y2 )
& ~ ( ord_less_nat @ Y2 @ X3 )
& ( ord_lexordp_eq_nat @ Xs3 @ Ys2 ) ) ) ) ) ).
% lexordp_eq.simps
thf(fact_400_lexordp__eq_Ocases,axiom,
! [A12: list_nat,A22: list_nat] :
( ( ord_lexordp_eq_nat @ A12 @ A22 )
=> ( ( A12 != nil_nat )
=> ( ! [X2: nat] :
( ? [Xs2: list_nat] :
( A12
= ( cons_nat @ X2 @ Xs2 ) )
=> ! [Y3: nat] :
( ? [Ys3: list_nat] :
( A22
= ( cons_nat @ Y3 @ Ys3 ) )
=> ~ ( ord_less_nat @ X2 @ Y3 ) ) )
=> ~ ! [X2: nat,Y3: nat,Xs2: list_nat] :
( ( A12
= ( cons_nat @ X2 @ Xs2 ) )
=> ! [Ys3: list_nat] :
( ( A22
= ( cons_nat @ Y3 @ Ys3 ) )
=> ( ~ ( ord_less_nat @ X2 @ Y3 )
=> ( ~ ( ord_less_nat @ Y3 @ X2 )
=> ~ ( ord_lexordp_eq_nat @ Xs2 @ Ys3 ) ) ) ) ) ) ) ) ).
% lexordp_eq.cases
thf(fact_401_map__tailrec__rev,axiom,
( map_ta7164188454487880599at_nat
= ( ^ [F3: nat > nat,As3: list_nat] : ( append_nat @ ( rev_nat @ ( map_nat_nat @ F3 @ As3 ) ) ) ) ) ).
% map_tailrec_rev
thf(fact_402_fold__Cons__rev,axiom,
! [Xs: list_v] :
( ( fold_v_list_v @ cons_v @ Xs )
= ( append_v @ ( rev_v @ Xs ) ) ) ).
% fold_Cons_rev
thf(fact_403_fold__Cons__rev,axiom,
! [Xs: list_nat] :
( ( fold_nat_list_nat @ cons_nat @ Xs )
= ( append_nat @ ( rev_nat @ Xs ) ) ) ).
% fold_Cons_rev
thf(fact_404_map__is__Nil__conv,axiom,
! [F: v > v,Xs: list_v] :
( ( ( map_v_v @ F @ Xs )
= nil_v )
= ( Xs = nil_v ) ) ).
% map_is_Nil_conv
thf(fact_405_map__is__Nil__conv,axiom,
! [F: nat > v,Xs: list_nat] :
( ( ( map_nat_v @ F @ Xs )
= nil_v )
= ( Xs = nil_nat ) ) ).
% map_is_Nil_conv
thf(fact_406_map__is__Nil__conv,axiom,
! [F: v > nat,Xs: list_v] :
( ( ( map_v_nat @ F @ Xs )
= nil_nat )
= ( Xs = nil_v ) ) ).
% map_is_Nil_conv
thf(fact_407_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_408_Nil__is__map__conv,axiom,
! [F: v > v,Xs: list_v] :
( ( nil_v
= ( map_v_v @ F @ Xs ) )
= ( Xs = nil_v ) ) ).
% Nil_is_map_conv
thf(fact_409_Nil__is__map__conv,axiom,
! [F: nat > v,Xs: list_nat] :
( ( nil_v
= ( map_nat_v @ F @ Xs ) )
= ( Xs = nil_nat ) ) ).
% Nil_is_map_conv
thf(fact_410_Nil__is__map__conv,axiom,
! [F: v > nat,Xs: list_v] :
( ( nil_nat
= ( map_v_nat @ F @ Xs ) )
= ( Xs = nil_v ) ) ).
% Nil_is_map_conv
thf(fact_411_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_412_list_Omap__disc__iff,axiom,
! [F: v > v,A: list_v] :
( ( ( map_v_v @ F @ A )
= nil_v )
= ( A = nil_v ) ) ).
% list.map_disc_iff
thf(fact_413_list_Omap__disc__iff,axiom,
! [F: nat > v,A: list_nat] :
( ( ( map_nat_v @ F @ A )
= nil_v )
= ( A = nil_nat ) ) ).
% list.map_disc_iff
thf(fact_414_list_Omap__disc__iff,axiom,
! [F: v > nat,A: list_v] :
( ( ( map_v_nat @ F @ A )
= nil_nat )
= ( A = nil_v ) ) ).
% list.map_disc_iff
thf(fact_415_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_416_map__eq__conv,axiom,
! [F: nat > nat,Xs: list_nat,G: nat > nat] :
( ( ( map_nat_nat @ F @ Xs )
= ( map_nat_nat @ G @ Xs ) )
= ( ! [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ Xs ) )
=> ( ( F @ X3 )
= ( G @ X3 ) ) ) ) ) ).
% map_eq_conv
thf(fact_417_map__append,axiom,
! [F: v > v,Xs: list_v,Ys: list_v] :
( ( map_v_v @ F @ ( append_v @ Xs @ Ys ) )
= ( append_v @ ( map_v_v @ F @ Xs ) @ ( map_v_v @ F @ Ys ) ) ) ).
% map_append
thf(fact_418_map__append,axiom,
! [F: v > nat,Xs: list_v,Ys: list_v] :
( ( map_v_nat @ F @ ( append_v @ Xs @ Ys ) )
= ( append_nat @ ( map_v_nat @ F @ Xs ) @ ( map_v_nat @ F @ Ys ) ) ) ).
% map_append
thf(fact_419_map__append,axiom,
! [F: nat > v,Xs: list_nat,Ys: list_nat] :
( ( map_nat_v @ F @ ( append_nat @ Xs @ Ys ) )
= ( append_v @ ( map_nat_v @ F @ Xs ) @ ( map_nat_v @ F @ Ys ) ) ) ).
% map_append
thf(fact_420_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_421_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_422_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_423_map__eq__map__tailrec,axiom,
map_nat_nat = map_tailrec_nat_nat ).
% map_eq_map_tailrec
thf(fact_424_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_425_list_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.simps(9)
thf(fact_426_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 ) )
=> ? [Z3: nat,Zs2: list_nat] :
( ( Ys
= ( cons_nat @ Z3 @ Zs2 ) )
& ( X
= ( F @ Z3 ) )
& ( Xs
= ( map_nat_nat @ F @ Zs2 ) ) ) ) ).
% Cons_eq_map_D
thf(fact_427_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 ) )
=> ? [Z3: nat,Zs2: list_nat] :
( ( Xs
= ( cons_nat @ Z3 @ Zs2 ) )
& ( ( F @ Z3 )
= Y )
& ( ( map_nat_nat @ F @ Zs2 )
= Ys ) ) ) ).
% map_eq_Cons_D
thf(fact_428_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 ) )
= ( ? [Z4: nat,Zs3: list_nat] :
( ( Ys
= ( cons_nat @ Z4 @ Zs3 ) )
& ( X
= ( F @ Z4 ) )
& ( Xs
= ( map_nat_nat @ F @ Zs3 ) ) ) ) ) ).
% Cons_eq_map_conv
thf(fact_429_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 ) )
= ( ? [Z4: nat,Zs3: list_nat] :
( ( Xs
= ( cons_nat @ Z4 @ Zs3 ) )
& ( ( F @ Z4 )
= Y )
& ( ( map_nat_nat @ F @ Zs3 )
= Ys ) ) ) ) ).
% map_eq_Cons_conv
thf(fact_430_list_Osimps_I8_J,axiom,
! [F: v > v] :
( ( map_v_v @ F @ nil_v )
= nil_v ) ).
% list.simps(8)
thf(fact_431_list_Osimps_I8_J,axiom,
! [F: v > nat] :
( ( map_v_nat @ F @ nil_v )
= nil_nat ) ).
% list.simps(8)
thf(fact_432_list_Osimps_I8_J,axiom,
! [F: nat > v] :
( ( map_nat_v @ F @ nil_nat )
= nil_v ) ).
% list.simps(8)
thf(fact_433_list_Osimps_I8_J,axiom,
! [F: nat > nat] :
( ( map_nat_nat @ F @ nil_nat )
= nil_nat ) ).
% list.simps(8)
thf(fact_434_list_Omap__cong,axiom,
! [X: list_nat,Ya: list_nat,F: nat > nat,G: nat > nat] :
( ( X = Ya )
=> ( ! [Z3: nat] :
( ( member_nat2 @ Z3 @ ( set_nat2 @ Ya ) )
=> ( ( F @ Z3 )
= ( G @ Z3 ) ) )
=> ( ( map_nat_nat @ F @ X )
= ( map_nat_nat @ G @ Ya ) ) ) ) ).
% list.map_cong
thf(fact_435_list_Omap__cong0,axiom,
! [X: list_nat,F: nat > nat,G: nat > nat] :
( ! [Z3: nat] :
( ( member_nat2 @ Z3 @ ( set_nat2 @ X ) )
=> ( ( F @ Z3 )
= ( G @ Z3 ) ) )
=> ( ( map_nat_nat @ F @ X )
= ( map_nat_nat @ G @ X ) ) ) ).
% list.map_cong0
thf(fact_436_list_Oinj__map__strong,axiom,
! [X: list_nat,Xa: list_nat,F: nat > nat,Fa: nat > nat] :
( ! [Z3: nat,Za: nat] :
( ( member_nat2 @ Z3 @ ( set_nat2 @ X ) )
=> ( ( member_nat2 @ Za @ ( set_nat2 @ Xa ) )
=> ( ( ( F @ Z3 )
= ( Fa @ Za ) )
=> ( Z3 = Za ) ) ) )
=> ( ( ( map_nat_nat @ F @ X )
= ( map_nat_nat @ Fa @ Xa ) )
=> ( X = Xa ) ) ) ).
% list.inj_map_strong
thf(fact_437_list_Omap__ident__strong,axiom,
! [T: list_nat,F: nat > nat] :
( ! [Z3: nat] :
( ( member_nat2 @ Z3 @ ( set_nat2 @ T ) )
=> ( ( F @ Z3 )
= Z3 ) )
=> ( ( map_nat_nat @ F @ T )
= T ) ) ).
% list.map_ident_strong
thf(fact_438_map__ext,axiom,
! [Xs: list_nat,F: nat > nat,G: nat > nat] :
( ! [X2: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Xs ) )
=> ( ( F @ X2 )
= ( G @ X2 ) ) )
=> ( ( map_nat_nat @ F @ Xs )
= ( map_nat_nat @ G @ Xs ) ) ) ).
% map_ext
thf(fact_439_map__idI,axiom,
! [Xs: list_nat,F: nat > nat] :
( ! [X2: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Xs ) )
=> ( ( F @ X2 )
= X2 ) )
=> ( ( map_nat_nat @ F @ Xs )
= Xs ) ) ).
% map_idI
thf(fact_440_map__cong,axiom,
! [Xs: list_nat,Ys: list_nat,F: nat > nat,G: nat > nat] :
( ( Xs = Ys )
=> ( ! [X2: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Ys ) )
=> ( ( F @ X2 )
= ( G @ X2 ) ) )
=> ( ( map_nat_nat @ F @ Xs )
= ( map_nat_nat @ G @ Ys ) ) ) ) ).
% map_cong
thf(fact_441_ex__map__conv,axiom,
! [Ys: list_nat,F: nat > nat] :
( ( ? [Xs3: list_nat] :
( Ys
= ( map_nat_nat @ F @ Xs3 ) ) )
= ( ! [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ Ys ) )
=> ? [Y2: nat] :
( X3
= ( F @ Y2 ) ) ) ) ) ).
% ex_map_conv
thf(fact_442_append__eq__map__conv,axiom,
! [Ys: list_v,Zs: list_v,F: v > v,Xs: list_v] :
( ( ( append_v @ Ys @ Zs )
= ( map_v_v @ F @ Xs ) )
= ( ? [Us2: list_v,Vs2: list_v] :
( ( Xs
= ( append_v @ Us2 @ Vs2 ) )
& ( Ys
= ( map_v_v @ F @ Us2 ) )
& ( Zs
= ( map_v_v @ F @ Vs2 ) ) ) ) ) ).
% append_eq_map_conv
thf(fact_443_append__eq__map__conv,axiom,
! [Ys: list_v,Zs: list_v,F: nat > v,Xs: list_nat] :
( ( ( append_v @ Ys @ Zs )
= ( map_nat_v @ F @ Xs ) )
= ( ? [Us2: list_nat,Vs2: list_nat] :
( ( Xs
= ( append_nat @ Us2 @ Vs2 ) )
& ( Ys
= ( map_nat_v @ F @ Us2 ) )
& ( Zs
= ( map_nat_v @ F @ Vs2 ) ) ) ) ) ).
% append_eq_map_conv
thf(fact_444_append__eq__map__conv,axiom,
! [Ys: list_nat,Zs: list_nat,F: v > nat,Xs: list_v] :
( ( ( append_nat @ Ys @ Zs )
= ( map_v_nat @ F @ Xs ) )
= ( ? [Us2: list_v,Vs2: list_v] :
( ( Xs
= ( append_v @ Us2 @ Vs2 ) )
& ( Ys
= ( map_v_nat @ F @ Us2 ) )
& ( Zs
= ( map_v_nat @ F @ Vs2 ) ) ) ) ) ).
% append_eq_map_conv
thf(fact_445_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 ) )
= ( ? [Us2: list_nat,Vs2: list_nat] :
( ( Xs
= ( append_nat @ Us2 @ Vs2 ) )
& ( Ys
= ( map_nat_nat @ F @ Us2 ) )
& ( Zs
= ( map_nat_nat @ F @ Vs2 ) ) ) ) ) ).
% append_eq_map_conv
thf(fact_446_map__eq__append__conv,axiom,
! [F: v > v,Xs: list_v,Ys: list_v,Zs: list_v] :
( ( ( map_v_v @ F @ Xs )
= ( append_v @ Ys @ Zs ) )
= ( ? [Us2: list_v,Vs2: list_v] :
( ( Xs
= ( append_v @ Us2 @ Vs2 ) )
& ( Ys
= ( map_v_v @ F @ Us2 ) )
& ( Zs
= ( map_v_v @ F @ Vs2 ) ) ) ) ) ).
% map_eq_append_conv
thf(fact_447_map__eq__append__conv,axiom,
! [F: nat > v,Xs: list_nat,Ys: list_v,Zs: list_v] :
( ( ( map_nat_v @ F @ Xs )
= ( append_v @ Ys @ Zs ) )
= ( ? [Us2: list_nat,Vs2: list_nat] :
( ( Xs
= ( append_nat @ Us2 @ Vs2 ) )
& ( Ys
= ( map_nat_v @ F @ Us2 ) )
& ( Zs
= ( map_nat_v @ F @ Vs2 ) ) ) ) ) ).
% map_eq_append_conv
thf(fact_448_map__eq__append__conv,axiom,
! [F: v > nat,Xs: list_v,Ys: list_nat,Zs: list_nat] :
( ( ( map_v_nat @ F @ Xs )
= ( append_nat @ Ys @ Zs ) )
= ( ? [Us2: list_v,Vs2: list_v] :
( ( Xs
= ( append_v @ Us2 @ Vs2 ) )
& ( Ys
= ( map_v_nat @ F @ Us2 ) )
& ( Zs
= ( map_v_nat @ F @ Vs2 ) ) ) ) ) ).
% map_eq_append_conv
thf(fact_449_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 ) )
= ( ? [Us2: list_nat,Vs2: list_nat] :
( ( Xs
= ( append_nat @ Us2 @ Vs2 ) )
& ( Ys
= ( map_nat_nat @ F @ Us2 ) )
& ( Zs
= ( map_nat_nat @ F @ Vs2 ) ) ) ) ) ).
% map_eq_append_conv
thf(fact_450_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_451_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_452_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_453_last__map,axiom,
! [Xs: list_v,F: v > nat] :
( ( Xs != nil_v )
=> ( ( last_nat @ ( map_v_nat @ F @ Xs ) )
= ( F @ ( last_v @ Xs ) ) ) ) ).
% last_map
thf(fact_454_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_455_fold__append__concat__rev,axiom,
! [Xss2: list_list_v] :
( ( fold_list_v_list_v @ append_v @ Xss2 )
= ( append_v @ ( concat_v @ ( rev_list_v @ Xss2 ) ) ) ) ).
% fold_append_concat_rev
thf(fact_456_fold__append__concat__rev,axiom,
! [Xss2: list_list_nat] :
( ( fold_l5850465621530151245st_nat @ append_nat @ Xss2 )
= ( append_nat @ ( concat_nat @ ( rev_list_nat @ Xss2 ) ) ) ) ).
% fold_append_concat_rev
thf(fact_457_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_458_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_459_transpose_Osimps_I2_J,axiom,
! [Xss2: list_list_v] :
( ( transpose_v @ ( cons_list_v @ nil_v @ Xss2 ) )
= ( transpose_v @ Xss2 ) ) ).
% transpose.simps(2)
thf(fact_460_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_461_rev__conv__fold,axiom,
( rev_v
= ( ^ [Xs3: list_v] : ( fold_v_list_v @ cons_v @ Xs3 @ nil_v ) ) ) ).
% rev_conv_fold
thf(fact_462_rev__conv__fold,axiom,
( rev_nat
= ( ^ [Xs3: list_nat] : ( fold_nat_list_nat @ cons_nat @ Xs3 @ nil_nat ) ) ) ).
% rev_conv_fold
thf(fact_463_lexordp__iff,axiom,
( ord_lexordp_nat
= ( ^ [Xs3: list_nat,Ys2: list_nat] :
( ? [X3: nat,Vs2: list_nat] :
( Ys2
= ( append_nat @ Xs3 @ ( cons_nat @ X3 @ Vs2 ) ) )
| ? [Us2: list_nat,A5: nat,B2: nat,Vs2: list_nat,Ws: list_nat] :
( ( ord_less_nat @ A5 @ B2 )
& ( Xs3
= ( append_nat @ Us2 @ ( cons_nat @ A5 @ Vs2 ) ) )
& ( Ys2
= ( append_nat @ Us2 @ ( cons_nat @ B2 @ Ws ) ) ) ) ) ) ) ).
% lexordp_iff
thf(fact_464_lexordp__append__left__rightI,axiom,
! [X: nat,Y: nat,Us: list_nat,Xs: list_nat,Ys: list_nat] :
( ( ord_less_nat @ X @ Y )
=> ( ord_lexordp_nat @ ( append_nat @ Us @ ( cons_nat @ X @ Xs ) ) @ ( append_nat @ Us @ ( cons_nat @ Y @ Ys ) ) ) ) ).
% lexordp_append_left_rightI
thf(fact_465_lexordp_Ocases,axiom,
! [A12: list_nat,A22: list_nat] :
( ( ord_lexordp_nat @ A12 @ A22 )
=> ( ( ( A12 = nil_nat )
=> ! [Y3: nat,Ys3: list_nat] :
( A22
!= ( cons_nat @ Y3 @ Ys3 ) ) )
=> ( ! [X2: nat] :
( ? [Xs2: list_nat] :
( A12
= ( cons_nat @ X2 @ Xs2 ) )
=> ! [Y3: nat] :
( ? [Ys3: list_nat] :
( A22
= ( cons_nat @ Y3 @ Ys3 ) )
=> ~ ( ord_less_nat @ X2 @ Y3 ) ) )
=> ~ ! [X2: nat,Y3: nat,Xs2: list_nat] :
( ( A12
= ( cons_nat @ X2 @ Xs2 ) )
=> ! [Ys3: list_nat] :
( ( A22
= ( cons_nat @ Y3 @ Ys3 ) )
=> ( ~ ( ord_less_nat @ X2 @ Y3 )
=> ( ~ ( ord_less_nat @ Y3 @ X2 )
=> ~ ( ord_lexordp_nat @ Xs2 @ Ys3 ) ) ) ) ) ) ) ) ).
% lexordp.cases
thf(fact_466_lexordp_Osimps,axiom,
( ord_lexordp_nat
= ( ^ [A1: list_nat,A2: list_nat] :
( ? [Y2: nat,Ys2: list_nat] :
( ( A1 = nil_nat )
& ( A2
= ( cons_nat @ Y2 @ Ys2 ) ) )
| ? [X3: nat,Y2: nat,Xs3: list_nat,Ys2: list_nat] :
( ( A1
= ( cons_nat @ X3 @ Xs3 ) )
& ( A2
= ( cons_nat @ Y2 @ Ys2 ) )
& ( ord_less_nat @ X3 @ Y2 ) )
| ? [X3: nat,Y2: nat,Xs3: list_nat,Ys2: list_nat] :
( ( A1
= ( cons_nat @ X3 @ Xs3 ) )
& ( A2
= ( cons_nat @ Y2 @ Ys2 ) )
& ~ ( ord_less_nat @ X3 @ Y2 )
& ~ ( ord_less_nat @ Y2 @ X3 )
& ( ord_lexordp_nat @ Xs3 @ Ys2 ) ) ) ) ) ).
% lexordp.simps
thf(fact_467_lexordp__simps_I2_J,axiom,
! [Xs: list_nat] :
~ ( ord_lexordp_nat @ Xs @ nil_nat ) ).
% lexordp_simps(2)
thf(fact_468_lexordp__simps_I1_J,axiom,
! [Ys: list_nat] :
( ( ord_lexordp_nat @ nil_nat @ Ys )
= ( Ys != nil_nat ) ) ).
% lexordp_simps(1)
thf(fact_469_lexordp__simps_I3_J,axiom,
! [X: nat,Xs: list_nat,Y: nat,Ys: list_nat] :
( ( ord_lexordp_nat @ ( cons_nat @ X @ Xs ) @ ( cons_nat @ Y @ Ys ) )
= ( ( ord_less_nat @ X @ Y )
| ( ~ ( ord_less_nat @ Y @ X )
& ( ord_lexordp_nat @ Xs @ Ys ) ) ) ) ).
% lexordp_simps(3)
thf(fact_470_lexordp__irreflexive,axiom,
! [Xs: list_nat] :
( ! [X2: nat] :
~ ( ord_less_nat @ X2 @ X2 )
=> ~ ( ord_lexordp_nat @ Xs @ Xs ) ) ).
% lexordp_irreflexive
thf(fact_471_lexordp__append__leftI,axiom,
! [Us: list_nat,Vs: list_nat,Xs: list_nat] :
( ( ord_lexordp_nat @ Us @ Vs )
=> ( ord_lexordp_nat @ ( append_nat @ Xs @ Us ) @ ( append_nat @ Xs @ Vs ) ) ) ).
% lexordp_append_leftI
thf(fact_472_append_Osemigroup__axioms,axiom,
semigroup_list_v @ append_v ).
% append.semigroup_axioms
thf(fact_473_append_Osemigroup__axioms,axiom,
semigroup_list_nat @ append_nat ).
% append.semigroup_axioms
thf(fact_474_lexordp_OCons,axiom,
! [X: nat,Y: nat,Xs: list_nat,Ys: list_nat] :
( ( ord_less_nat @ X @ Y )
=> ( ord_lexordp_nat @ ( cons_nat @ X @ Xs ) @ ( cons_nat @ Y @ Ys ) ) ) ).
% lexordp.Cons
thf(fact_475_lexordp_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_nat @ Xs @ Ys )
=> ( ord_lexordp_nat @ ( cons_nat @ X @ Xs ) @ ( cons_nat @ Y @ Ys ) ) ) ) ) ).
% lexordp.Cons_eq
thf(fact_476_lexordp__append__leftD,axiom,
! [Xs: list_nat,Us: list_nat,Vs: list_nat] :
( ( ord_lexordp_nat @ ( append_nat @ Xs @ Us ) @ ( append_nat @ Xs @ Vs ) )
=> ( ! [A3: nat] :
~ ( ord_less_nat @ A3 @ A3 )
=> ( ord_lexordp_nat @ Us @ Vs ) ) ) ).
% lexordp_append_leftD
thf(fact_477_lexordp_ONil,axiom,
! [Y: nat,Ys: list_nat] : ( ord_lexordp_nat @ nil_nat @ ( cons_nat @ Y @ Ys ) ) ).
% lexordp.Nil
thf(fact_478_lexordp__append__rightI,axiom,
! [Ys: list_nat,Xs: list_nat] :
( ( Ys != nil_nat )
=> ( ord_lexordp_nat @ Xs @ ( append_nat @ Xs @ Ys ) ) ) ).
% lexordp_append_rightI
thf(fact_479_lexordp__induct,axiom,
! [Xs: list_nat,Ys: list_nat,P: list_nat > list_nat > $o] :
( ( ord_lexordp_nat @ Xs @ Ys )
=> ( ! [Y3: nat,Ys3: list_nat] : ( P @ nil_nat @ ( cons_nat @ Y3 @ Ys3 ) )
=> ( ! [X2: nat,Xs2: list_nat,Y3: nat,Ys3: list_nat] :
( ( ord_less_nat @ X2 @ Y3 )
=> ( P @ ( cons_nat @ X2 @ Xs2 ) @ ( cons_nat @ Y3 @ Ys3 ) ) )
=> ( ! [X2: nat,Xs2: list_nat,Ys3: list_nat] :
( ( ord_lexordp_nat @ Xs2 @ Ys3 )
=> ( ( P @ Xs2 @ Ys3 )
=> ( P @ ( cons_nat @ X2 @ Xs2 ) @ ( cons_nat @ X2 @ Ys3 ) ) ) )
=> ( P @ Xs @ Ys ) ) ) ) ) ).
% lexordp_induct
thf(fact_480_lexordp__cases,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( ord_lexordp_nat @ Xs @ Ys )
=> ( ( ( Xs = nil_nat )
=> ! [Y3: nat,Ys5: list_nat] :
( Ys
!= ( cons_nat @ Y3 @ Ys5 ) ) )
=> ( ! [X2: nat] :
( ? [Xs4: list_nat] :
( Xs
= ( cons_nat @ X2 @ Xs4 ) )
=> ! [Y3: nat] :
( ? [Ys5: list_nat] :
( Ys
= ( cons_nat @ Y3 @ Ys5 ) )
=> ~ ( ord_less_nat @ X2 @ Y3 ) ) )
=> ~ ! [X2: nat,Xs4: list_nat] :
( ( Xs
= ( cons_nat @ X2 @ Xs4 ) )
=> ! [Ys5: list_nat] :
( ( Ys
= ( cons_nat @ X2 @ Ys5 ) )
=> ~ ( ord_lexordp_nat @ Xs4 @ Ys5 ) ) ) ) ) ) ).
% lexordp_cases
thf(fact_481_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_482_set__union,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( set_nat2 @ ( union_nat @ Xs @ Ys ) )
= ( sup_sup_set_nat @ ( set_nat2 @ Xs ) @ ( set_nat2 @ Ys ) ) ) ).
% set_union
thf(fact_483_map__fun__upd,axiom,
! [Y: nat,Xs: list_nat,F: nat > nat,V3: nat] :
( ~ ( member_nat2 @ Y @ ( set_nat2 @ Xs ) )
=> ( ( map_nat_nat @ ( fun_upd_nat_nat @ F @ Y @ V3 ) @ Xs )
= ( map_nat_nat @ F @ Xs ) ) ) ).
% map_fun_upd
thf(fact_484_remdups__adj__append__two,axiom,
! [Xs: list_v,X: v,Y: v] :
( ( remdups_adj_v @ ( append_v @ Xs @ ( cons_v @ X @ ( cons_v @ Y @ nil_v ) ) ) )
= ( append_v @ ( remdups_adj_v @ ( append_v @ Xs @ ( cons_v @ X @ nil_v ) ) ) @ ( if_list_v @ ( X = Y ) @ nil_v @ ( cons_v @ Y @ nil_v ) ) ) ) ).
% remdups_adj_append_two
thf(fact_485_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_486_splice_Oelims,axiom,
! [X: list_v,Xa: list_v,Y: list_v] :
( ( ( splice_v @ X @ Xa )
= Y )
=> ( ( ( X = nil_v )
=> ( Y != Xa ) )
=> ~ ! [X2: v,Xs2: list_v] :
( ( X
= ( cons_v @ X2 @ Xs2 ) )
=> ( Y
!= ( cons_v @ X2 @ ( splice_v @ Xa @ Xs2 ) ) ) ) ) ) ).
% splice.elims
thf(fact_487_splice_Oelims,axiom,
! [X: list_nat,Xa: list_nat,Y: list_nat] :
( ( ( splice_nat @ X @ Xa )
= Y )
=> ( ( ( X = nil_nat )
=> ( Y != Xa ) )
=> ~ ! [X2: nat,Xs2: list_nat] :
( ( X
= ( cons_nat @ X2 @ Xs2 ) )
=> ( Y
!= ( cons_nat @ X2 @ ( splice_nat @ Xa @ Xs2 ) ) ) ) ) ) ).
% splice.elims
thf(fact_488_List_Omap_Ocomp,axiom,
! [F: nat > nat,G: nat > nat] :
( ( comp_l7223822213492037765st_nat @ ( map_nat_nat @ F ) @ ( map_nat_nat @ G ) )
= ( map_nat_nat @ ( comp_nat_nat_nat @ F @ G ) ) ) ).
% List.map.comp
thf(fact_489_map__comp__map,axiom,
! [F: nat > nat,G: nat > nat] :
( ( comp_l7223822213492037765st_nat @ ( map_nat_nat @ F ) @ ( map_nat_nat @ G ) )
= ( map_nat_nat @ ( comp_nat_nat_nat @ F @ G ) ) ) ).
% map_comp_map
thf(fact_490_list_Omap__comp,axiom,
! [G: nat > nat,F: nat > nat,V3: list_nat] :
( ( map_nat_nat @ G @ ( map_nat_nat @ F @ V3 ) )
= ( map_nat_nat @ ( comp_nat_nat_nat @ G @ F ) @ V3 ) ) ).
% list.map_comp
thf(fact_491_List_Omap_Ocompositionality,axiom,
! [F: nat > nat,G: nat > nat,List: list_nat] :
( ( map_nat_nat @ F @ ( map_nat_nat @ G @ List ) )
= ( map_nat_nat @ ( comp_nat_nat_nat @ F @ G ) @ List ) ) ).
% List.map.compositionality
thf(fact_492_map__map,axiom,
! [F: nat > nat,G: nat > nat,Xs: list_nat] :
( ( map_nat_nat @ F @ ( map_nat_nat @ G @ Xs ) )
= ( map_nat_nat @ ( comp_nat_nat_nat @ F @ G ) @ Xs ) ) ).
% map_map
thf(fact_493_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_494_append__eq__append__conv,axiom,
! [Xs: list_v,Ys: list_v,Us: list_v,Vs: list_v] :
( ( ( ( size_size_list_v @ Xs )
= ( size_size_list_v @ Ys ) )
| ( ( size_size_list_v @ Us )
= ( size_size_list_v @ Vs ) ) )
=> ( ( ( append_v @ Xs @ Us )
= ( append_v @ Ys @ Vs ) )
= ( ( Xs = Ys )
& ( Us = Vs ) ) ) ) ).
% append_eq_append_conv
thf(fact_495_append__eq__append__conv,axiom,
! [Xs: list_nat,Ys: list_nat,Us: list_nat,Vs: list_nat] :
( ( ( ( size_size_list_nat @ Xs )
= ( size_size_list_nat @ Ys ) )
| ( ( size_size_list_nat @ Us )
= ( size_size_list_nat @ Vs ) ) )
=> ( ( ( append_nat @ Xs @ Us )
= ( append_nat @ Ys @ Vs ) )
= ( ( Xs = Ys )
& ( Us = Vs ) ) ) ) ).
% append_eq_append_conv
thf(fact_496_length__rev,axiom,
! [Xs: list_nat] :
( ( size_size_list_nat @ ( rev_nat @ Xs ) )
= ( size_size_list_nat @ Xs ) ) ).
% length_rev
thf(fact_497_remdups__adj__Nil__iff,axiom,
! [Xs: list_v] :
( ( ( remdups_adj_v @ Xs )
= nil_v )
= ( Xs = nil_v ) ) ).
% remdups_adj_Nil_iff
thf(fact_498_remdups__adj__Nil__iff,axiom,
! [Xs: list_nat] :
( ( ( remdups_adj_nat @ Xs )
= nil_nat )
= ( Xs = nil_nat ) ) ).
% remdups_adj_Nil_iff
thf(fact_499_remdups__adj__set,axiom,
! [Xs: list_nat] :
( ( set_nat2 @ ( remdups_adj_nat @ Xs ) )
= ( set_nat2 @ Xs ) ) ).
% remdups_adj_set
thf(fact_500_length__rotate1,axiom,
! [Xs: list_nat] :
( ( size_size_list_nat @ ( rotate1_nat @ Xs ) )
= ( size_size_list_nat @ Xs ) ) ).
% length_rotate1
thf(fact_501_split__Nil__iff,axiom,
! [Xs: list_v,Ys: list_v] :
( ( ( splice_v @ Xs @ Ys )
= nil_v )
= ( ( Xs = nil_v )
& ( Ys = nil_v ) ) ) ).
% split_Nil_iff
thf(fact_502_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_503_splice__Nil2,axiom,
! [Xs: list_v] :
( ( splice_v @ Xs @ nil_v )
= Xs ) ).
% splice_Nil2
thf(fact_504_splice__Nil2,axiom,
! [Xs: list_nat] :
( ( splice_nat @ Xs @ nil_nat )
= Xs ) ).
% splice_Nil2
thf(fact_505_last__remdups__adj,axiom,
! [Xs: list_nat] :
( ( last_nat @ ( remdups_adj_nat @ Xs ) )
= ( last_nat @ Xs ) ) ).
% last_remdups_adj
thf(fact_506_set__append,axiom,
! [Xs: list_v,Ys: list_v] :
( ( set_v2 @ ( append_v @ Xs @ Ys ) )
= ( sup_sup_set_v @ ( set_v2 @ Xs ) @ ( set_v2 @ Ys ) ) ) ).
% set_append
thf(fact_507_set__append,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( set_nat2 @ ( append_nat @ Xs @ Ys ) )
= ( sup_sup_set_nat @ ( set_nat2 @ Xs ) @ ( set_nat2 @ Ys ) ) ) ).
% set_append
thf(fact_508_Ex__list__of__length,axiom,
! [N: nat] :
? [Xs2: list_nat] :
( ( size_size_list_nat @ Xs2 )
= N ) ).
% Ex_list_of_length
thf(fact_509_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_510_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_511_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_512_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_513_remdups__adj_Osimps_I1_J,axiom,
( ( remdups_adj_v @ nil_v )
= nil_v ) ).
% remdups_adj.simps(1)
thf(fact_514_remdups__adj_Osimps_I1_J,axiom,
( ( remdups_adj_nat @ nil_nat )
= nil_nat ) ).
% remdups_adj.simps(1)
thf(fact_515_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_516_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_517_splice_Osimps_I1_J,axiom,
! [Ys: list_v] :
( ( splice_v @ nil_v @ Ys )
= Ys ) ).
% splice.simps(1)
thf(fact_518_splice_Osimps_I1_J,axiom,
! [Ys: list_nat] :
( ( splice_nat @ nil_nat @ Ys )
= Ys ) ).
% splice.simps(1)
thf(fact_519_list__induct3,axiom,
! [Xs: list_v,Ys: list_v,Zs: list_v,P: list_v > list_v > list_v > $o] :
( ( ( size_size_list_v @ Xs )
= ( size_size_list_v @ Ys ) )
=> ( ( ( size_size_list_v @ Ys )
= ( size_size_list_v @ Zs ) )
=> ( ( P @ nil_v @ nil_v @ nil_v )
=> ( ! [X2: v,Xs2: list_v,Y3: v,Ys3: list_v,Z3: v,Zs2: list_v] :
( ( ( size_size_list_v @ Xs2 )
= ( size_size_list_v @ Ys3 ) )
=> ( ( ( size_size_list_v @ Ys3 )
= ( size_size_list_v @ Zs2 ) )
=> ( ( P @ Xs2 @ Ys3 @ Zs2 )
=> ( P @ ( cons_v @ X2 @ Xs2 ) @ ( cons_v @ Y3 @ Ys3 ) @ ( cons_v @ Z3 @ Zs2 ) ) ) ) )
=> ( P @ Xs @ Ys @ Zs ) ) ) ) ) ).
% list_induct3
thf(fact_520_list__induct3,axiom,
! [Xs: list_v,Ys: list_v,Zs: list_nat,P: list_v > list_v > list_nat > $o] :
( ( ( size_size_list_v @ Xs )
= ( size_size_list_v @ Ys ) )
=> ( ( ( size_size_list_v @ Ys )
= ( size_size_list_nat @ Zs ) )
=> ( ( P @ nil_v @ nil_v @ nil_nat )
=> ( ! [X2: v,Xs2: list_v,Y3: v,Ys3: list_v,Z3: nat,Zs2: list_nat] :
( ( ( size_size_list_v @ Xs2 )
= ( size_size_list_v @ Ys3 ) )
=> ( ( ( size_size_list_v @ Ys3 )
= ( size_size_list_nat @ Zs2 ) )
=> ( ( P @ Xs2 @ Ys3 @ Zs2 )
=> ( P @ ( cons_v @ X2 @ Xs2 ) @ ( cons_v @ Y3 @ Ys3 ) @ ( cons_nat @ Z3 @ Zs2 ) ) ) ) )
=> ( P @ Xs @ Ys @ Zs ) ) ) ) ) ).
% list_induct3
thf(fact_521_list__induct3,axiom,
! [Xs: list_v,Ys: list_nat,Zs: list_v,P: list_v > list_nat > list_v > $o] :
( ( ( size_size_list_v @ Xs )
= ( size_size_list_nat @ Ys ) )
=> ( ( ( size_size_list_nat @ Ys )
= ( size_size_list_v @ Zs ) )
=> ( ( P @ nil_v @ nil_nat @ nil_v )
=> ( ! [X2: v,Xs2: list_v,Y3: nat,Ys3: list_nat,Z3: v,Zs2: list_v] :
( ( ( size_size_list_v @ Xs2 )
= ( size_size_list_nat @ Ys3 ) )
=> ( ( ( size_size_list_nat @ Ys3 )
= ( size_size_list_v @ Zs2 ) )
=> ( ( P @ Xs2 @ Ys3 @ Zs2 )
=> ( P @ ( cons_v @ X2 @ Xs2 ) @ ( cons_nat @ Y3 @ Ys3 ) @ ( cons_v @ Z3 @ Zs2 ) ) ) ) )
=> ( P @ Xs @ Ys @ Zs ) ) ) ) ) ).
% list_induct3
thf(fact_522_list__induct3,axiom,
! [Xs: list_v,Ys: list_nat,Zs: list_nat,P: list_v > list_nat > list_nat > $o] :
( ( ( size_size_list_v @ Xs )
= ( size_size_list_nat @ Ys ) )
=> ( ( ( size_size_list_nat @ Ys )
= ( size_size_list_nat @ Zs ) )
=> ( ( P @ nil_v @ nil_nat @ nil_nat )
=> ( ! [X2: v,Xs2: list_v,Y3: nat,Ys3: list_nat,Z3: nat,Zs2: list_nat] :
( ( ( size_size_list_v @ Xs2 )
= ( size_size_list_nat @ Ys3 ) )
=> ( ( ( size_size_list_nat @ Ys3 )
= ( size_size_list_nat @ Zs2 ) )
=> ( ( P @ Xs2 @ Ys3 @ Zs2 )
=> ( P @ ( cons_v @ X2 @ Xs2 ) @ ( cons_nat @ Y3 @ Ys3 ) @ ( cons_nat @ Z3 @ Zs2 ) ) ) ) )
=> ( P @ Xs @ Ys @ Zs ) ) ) ) ) ).
% list_induct3
thf(fact_523_list__induct3,axiom,
! [Xs: list_nat,Ys: list_v,Zs: list_v,P: list_nat > list_v > list_v > $o] :
( ( ( size_size_list_nat @ Xs )
= ( size_size_list_v @ Ys ) )
=> ( ( ( size_size_list_v @ Ys )
= ( size_size_list_v @ Zs ) )
=> ( ( P @ nil_nat @ nil_v @ nil_v )
=> ( ! [X2: nat,Xs2: list_nat,Y3: v,Ys3: list_v,Z3: v,Zs2: list_v] :
( ( ( size_size_list_nat @ Xs2 )
= ( size_size_list_v @ Ys3 ) )
=> ( ( ( size_size_list_v @ Ys3 )
= ( size_size_list_v @ Zs2 ) )
=> ( ( P @ Xs2 @ Ys3 @ Zs2 )
=> ( P @ ( cons_nat @ X2 @ Xs2 ) @ ( cons_v @ Y3 @ Ys3 ) @ ( cons_v @ Z3 @ Zs2 ) ) ) ) )
=> ( P @ Xs @ Ys @ Zs ) ) ) ) ) ).
% list_induct3
thf(fact_524_list__induct3,axiom,
! [Xs: list_nat,Ys: list_v,Zs: list_nat,P: list_nat > list_v > list_nat > $o] :
( ( ( size_size_list_nat @ Xs )
= ( size_size_list_v @ Ys ) )
=> ( ( ( size_size_list_v @ Ys )
= ( size_size_list_nat @ Zs ) )
=> ( ( P @ nil_nat @ nil_v @ nil_nat )
=> ( ! [X2: nat,Xs2: list_nat,Y3: v,Ys3: list_v,Z3: nat,Zs2: list_nat] :
( ( ( size_size_list_nat @ Xs2 )
= ( size_size_list_v @ Ys3 ) )
=> ( ( ( size_size_list_v @ Ys3 )
= ( size_size_list_nat @ Zs2 ) )
=> ( ( P @ Xs2 @ Ys3 @ Zs2 )
=> ( P @ ( cons_nat @ X2 @ Xs2 ) @ ( cons_v @ Y3 @ Ys3 ) @ ( cons_nat @ Z3 @ Zs2 ) ) ) ) )
=> ( P @ Xs @ Ys @ Zs ) ) ) ) ) ).
% list_induct3
thf(fact_525_list__induct3,axiom,
! [Xs: list_nat,Ys: list_nat,Zs: list_v,P: list_nat > list_nat > list_v > $o] :
( ( ( size_size_list_nat @ Xs )
= ( size_size_list_nat @ Ys ) )
=> ( ( ( size_size_list_nat @ Ys )
= ( size_size_list_v @ Zs ) )
=> ( ( P @ nil_nat @ nil_nat @ nil_v )
=> ( ! [X2: nat,Xs2: list_nat,Y3: nat,Ys3: list_nat,Z3: v,Zs2: list_v] :
( ( ( size_size_list_nat @ Xs2 )
= ( size_size_list_nat @ Ys3 ) )
=> ( ( ( size_size_list_nat @ Ys3 )
= ( size_size_list_v @ Zs2 ) )
=> ( ( P @ Xs2 @ Ys3 @ Zs2 )
=> ( P @ ( cons_nat @ X2 @ Xs2 ) @ ( cons_nat @ Y3 @ Ys3 ) @ ( cons_v @ Z3 @ Zs2 ) ) ) ) )
=> ( P @ Xs @ Ys @ Zs ) ) ) ) ) ).
% list_induct3
thf(fact_526_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 )
=> ( ! [X2: nat,Xs2: list_nat,Y3: nat,Ys3: list_nat,Z3: 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 @ X2 @ Xs2 ) @ ( cons_nat @ Y3 @ Ys3 ) @ ( cons_nat @ Z3 @ Zs2 ) ) ) ) )
=> ( P @ Xs @ Ys @ Zs ) ) ) ) ) ).
% list_induct3
thf(fact_527_list__induct2,axiom,
! [Xs: list_v,Ys: list_v,P: list_v > list_v > $o] :
( ( ( size_size_list_v @ Xs )
= ( size_size_list_v @ Ys ) )
=> ( ( P @ nil_v @ nil_v )
=> ( ! [X2: v,Xs2: list_v,Y3: v,Ys3: list_v] :
( ( ( size_size_list_v @ Xs2 )
= ( size_size_list_v @ Ys3 ) )
=> ( ( P @ Xs2 @ Ys3 )
=> ( P @ ( cons_v @ X2 @ Xs2 ) @ ( cons_v @ Y3 @ Ys3 ) ) ) )
=> ( P @ Xs @ Ys ) ) ) ) ).
% list_induct2
thf(fact_528_list__induct2,axiom,
! [Xs: list_v,Ys: list_nat,P: list_v > list_nat > $o] :
( ( ( size_size_list_v @ Xs )
= ( size_size_list_nat @ Ys ) )
=> ( ( P @ nil_v @ nil_nat )
=> ( ! [X2: v,Xs2: list_v,Y3: nat,Ys3: list_nat] :
( ( ( size_size_list_v @ Xs2 )
= ( size_size_list_nat @ Ys3 ) )
=> ( ( P @ Xs2 @ Ys3 )
=> ( P @ ( cons_v @ X2 @ Xs2 ) @ ( cons_nat @ Y3 @ Ys3 ) ) ) )
=> ( P @ Xs @ Ys ) ) ) ) ).
% list_induct2
thf(fact_529_list__induct2,axiom,
! [Xs: list_nat,Ys: list_v,P: list_nat > list_v > $o] :
( ( ( size_size_list_nat @ Xs )
= ( size_size_list_v @ Ys ) )
=> ( ( P @ nil_nat @ nil_v )
=> ( ! [X2: nat,Xs2: list_nat,Y3: v,Ys3: list_v] :
( ( ( size_size_list_nat @ Xs2 )
= ( size_size_list_v @ Ys3 ) )
=> ( ( P @ Xs2 @ Ys3 )
=> ( P @ ( cons_nat @ X2 @ Xs2 ) @ ( cons_v @ Y3 @ Ys3 ) ) ) )
=> ( P @ Xs @ Ys ) ) ) ) ).
% list_induct2
thf(fact_530_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 )
=> ( ! [X2: nat,Xs2: list_nat,Y3: nat,Ys3: list_nat] :
( ( ( size_size_list_nat @ Xs2 )
= ( size_size_list_nat @ Ys3 ) )
=> ( ( P @ Xs2 @ Ys3 )
=> ( P @ ( cons_nat @ X2 @ Xs2 ) @ ( cons_nat @ Y3 @ Ys3 ) ) ) )
=> ( P @ Xs @ Ys ) ) ) ) ).
% list_induct2
thf(fact_531_remdups__adj_Oelims,axiom,
! [X: list_v,Y: list_v] :
( ( ( remdups_adj_v @ X )
= Y )
=> ( ( ( X = nil_v )
=> ( Y != nil_v ) )
=> ( ! [X2: v] :
( ( X
= ( cons_v @ X2 @ nil_v ) )
=> ( Y
!= ( cons_v @ X2 @ nil_v ) ) )
=> ~ ! [X2: v,Y3: v,Xs2: list_v] :
( ( X
= ( cons_v @ X2 @ ( cons_v @ Y3 @ Xs2 ) ) )
=> ~ ( ( ( X2 = Y3 )
=> ( Y
= ( remdups_adj_v @ ( cons_v @ X2 @ Xs2 ) ) ) )
& ( ( X2 != Y3 )
=> ( Y
= ( cons_v @ X2 @ ( remdups_adj_v @ ( cons_v @ Y3 @ Xs2 ) ) ) ) ) ) ) ) ) ) ).
% remdups_adj.elims
thf(fact_532_remdups__adj_Oelims,axiom,
! [X: list_nat,Y: list_nat] :
( ( ( remdups_adj_nat @ X )
= Y )
=> ( ( ( X = nil_nat )
=> ( Y != nil_nat ) )
=> ( ! [X2: nat] :
( ( X
= ( cons_nat @ X2 @ nil_nat ) )
=> ( Y
!= ( cons_nat @ X2 @ nil_nat ) ) )
=> ~ ! [X2: nat,Y3: nat,Xs2: list_nat] :
( ( X
= ( cons_nat @ X2 @ ( cons_nat @ Y3 @ Xs2 ) ) )
=> ~ ( ( ( X2 = Y3 )
=> ( Y
= ( remdups_adj_nat @ ( cons_nat @ X2 @ Xs2 ) ) ) )
& ( ( X2 != Y3 )
=> ( Y
= ( cons_nat @ X2 @ ( remdups_adj_nat @ ( cons_nat @ Y3 @ Xs2 ) ) ) ) ) ) ) ) ) ) ).
% remdups_adj.elims
thf(fact_533_remdups__adj_Osimps_I2_J,axiom,
! [X: v] :
( ( remdups_adj_v @ ( cons_v @ X @ nil_v ) )
= ( cons_v @ X @ nil_v ) ) ).
% remdups_adj.simps(2)
thf(fact_534_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_535_same__length__different,axiom,
! [Xs: list_v,Ys: list_v] :
( ( Xs != Ys )
=> ( ( ( size_size_list_v @ Xs )
= ( size_size_list_v @ Ys ) )
=> ? [Pre: list_v,X2: v,Xs4: list_v,Y3: v,Ys5: list_v] :
( ( X2 != Y3 )
& ( Xs
= ( append_v @ Pre @ ( append_v @ ( cons_v @ X2 @ nil_v ) @ Xs4 ) ) )
& ( Ys
= ( append_v @ Pre @ ( append_v @ ( cons_v @ Y3 @ nil_v ) @ Ys5 ) ) ) ) ) ) ).
% same_length_different
thf(fact_536_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,X2: nat,Xs4: list_nat,Y3: nat,Ys5: list_nat] :
( ( X2 != Y3 )
& ( Xs
= ( append_nat @ Pre @ ( append_nat @ ( cons_nat @ X2 @ nil_nat ) @ Xs4 ) ) )
& ( Ys
= ( append_nat @ Pre @ ( append_nat @ ( cons_nat @ Y3 @ nil_nat ) @ Ys5 ) ) ) ) ) ) ).
% same_length_different
thf(fact_537_Sup__fin_Oset__eq__fold,axiom,
! [X: nat,Xs: list_nat] :
( ( lattic1093996805478795353in_nat @ ( set_nat2 @ ( cons_nat @ X @ Xs ) ) )
= ( fold_nat_nat @ sup_sup_nat @ Xs @ X ) ) ).
% Sup_fin.set_eq_fold
thf(fact_538_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_539_remdups__adj__append_H,axiom,
! [Xs: list_v,Ys: list_v] :
( ( ( Xs = nil_v )
| ( Ys = nil_v )
| ( ( last_v @ Xs )
!= ( hd_v @ Ys ) ) )
=> ( ( remdups_adj_v @ ( append_v @ Xs @ Ys ) )
= ( append_v @ ( remdups_adj_v @ Xs ) @ ( remdups_adj_v @ Ys ) ) ) ) ).
% remdups_adj_append'
thf(fact_540_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_541_remdups__adj__append,axiom,
! [Xs_1: list_v,X: v,Xs_2: list_v] :
( ( remdups_adj_v @ ( append_v @ Xs_1 @ ( cons_v @ X @ Xs_2 ) ) )
= ( append_v @ ( remdups_adj_v @ ( append_v @ Xs_1 @ ( cons_v @ X @ nil_v ) ) ) @ ( tl_v @ ( remdups_adj_v @ ( cons_v @ X @ Xs_2 ) ) ) ) ) ).
% remdups_adj_append
thf(fact_542_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_543_length__Suc__conv__rev,axiom,
! [Xs: list_v,N: nat] :
( ( ( size_size_list_v @ Xs )
= ( suc @ N ) )
= ( ? [Y2: v,Ys2: list_v] :
( ( Xs
= ( append_v @ Ys2 @ ( cons_v @ Y2 @ nil_v ) ) )
& ( ( size_size_list_v @ Ys2 )
= N ) ) ) ) ).
% length_Suc_conv_rev
thf(fact_544_length__Suc__conv__rev,axiom,
! [Xs: list_nat,N: nat] :
( ( ( size_size_list_nat @ Xs )
= ( suc @ N ) )
= ( ? [Y2: nat,Ys2: list_nat] :
( ( Xs
= ( append_nat @ Ys2 @ ( cons_nat @ Y2 @ nil_nat ) ) )
& ( ( size_size_list_nat @ Ys2 )
= N ) ) ) ) ).
% length_Suc_conv_rev
thf(fact_545_length__append__singleton,axiom,
! [Xs: list_v,X: v] :
( ( size_size_list_v @ ( append_v @ Xs @ ( cons_v @ X @ nil_v ) ) )
= ( suc @ ( size_size_list_v @ Xs ) ) ) ).
% length_append_singleton
thf(fact_546_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_547_hd__remdups__adj,axiom,
! [Xs: list_nat] :
( ( hd_nat @ ( remdups_adj_nat @ Xs ) )
= ( hd_nat @ Xs ) ) ).
% hd_remdups_adj
thf(fact_548_hd__append2,axiom,
! [Xs: list_v,Ys: list_v] :
( ( Xs != nil_v )
=> ( ( hd_v @ ( append_v @ Xs @ Ys ) )
= ( hd_v @ Xs ) ) ) ).
% hd_append2
thf(fact_549_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_550_tl__append2,axiom,
! [Xs: list_v,Ys: list_v] :
( ( Xs != nil_v )
=> ( ( tl_v @ ( append_v @ Xs @ Ys ) )
= ( append_v @ ( tl_v @ Xs ) @ Ys ) ) ) ).
% tl_append2
thf(fact_551_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_552_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_553_butlast__rev,axiom,
! [Xs: list_nat] :
( ( butlast_nat @ ( rev_nat @ Xs ) )
= ( rev_nat @ ( tl_nat @ Xs ) ) ) ).
% butlast_rev
thf(fact_554_hd__Cons__tl,axiom,
! [Xs: list_v] :
( ( Xs != nil_v )
=> ( ( cons_v @ ( hd_v @ Xs ) @ ( tl_v @ Xs ) )
= Xs ) ) ).
% hd_Cons_tl
thf(fact_555_hd__Cons__tl,axiom,
! [Xs: list_nat] :
( ( Xs != nil_nat )
=> ( ( cons_nat @ ( hd_nat @ Xs ) @ ( tl_nat @ Xs ) )
= Xs ) ) ).
% hd_Cons_tl
thf(fact_556_list_Ocollapse,axiom,
! [List: list_v] :
( ( List != nil_v )
=> ( ( cons_v @ ( hd_v @ List ) @ ( tl_v @ List ) )
= List ) ) ).
% list.collapse
thf(fact_557_list_Ocollapse,axiom,
! [List: list_nat] :
( ( List != nil_nat )
=> ( ( cons_nat @ ( hd_nat @ List ) @ ( tl_nat @ List ) )
= List ) ) ).
% list.collapse
thf(fact_558_list_Oexhaust__sel,axiom,
! [List: list_v] :
( ( List != nil_v )
=> ( List
= ( cons_v @ ( hd_v @ List ) @ ( tl_v @ List ) ) ) ) ).
% list.exhaust_sel
thf(fact_559_list_Oexhaust__sel,axiom,
! [List: list_nat] :
( ( List != nil_nat )
=> ( List
= ( cons_nat @ ( hd_nat @ List ) @ ( tl_nat @ List ) ) ) ) ).
% list.exhaust_sel
thf(fact_560_list_Oexpand,axiom,
! [List: list_v,List2: list_v] :
( ( ( List = nil_v )
= ( List2 = nil_v ) )
=> ( ( ( List != nil_v )
=> ( ( List2 != nil_v )
=> ( ( ( hd_v @ List )
= ( hd_v @ List2 ) )
& ( ( tl_v @ List )
= ( tl_v @ List2 ) ) ) ) )
=> ( List = List2 ) ) ) ).
% list.expand
thf(fact_561_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_562_list_Osel_I1_J,axiom,
! [X21: nat,X22: list_nat] :
( ( hd_nat @ ( cons_nat @ X21 @ X22 ) )
= X21 ) ).
% list.sel(1)
thf(fact_563_list_Osel_I3_J,axiom,
! [X21: nat,X22: list_nat] :
( ( tl_nat @ ( cons_nat @ X21 @ X22 ) )
= X22 ) ).
% list.sel(3)
thf(fact_564_list_Osel_I2_J,axiom,
( ( tl_v @ nil_v )
= nil_v ) ).
% list.sel(2)
thf(fact_565_list_Osel_I2_J,axiom,
( ( tl_nat @ nil_nat )
= nil_nat ) ).
% list.sel(2)
thf(fact_566_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_567_butlast__tl,axiom,
! [Xs: list_nat] :
( ( butlast_nat @ ( tl_nat @ Xs ) )
= ( tl_nat @ ( butlast_nat @ Xs ) ) ) ).
% butlast_tl
thf(fact_568_hd__concat,axiom,
! [Xs: list_list_v] :
( ( Xs != nil_list_v )
=> ( ( ( hd_list_v @ Xs )
!= nil_v )
=> ( ( hd_v @ ( concat_v @ Xs ) )
= ( hd_v @ ( hd_list_v @ Xs ) ) ) ) ) ).
% hd_concat
thf(fact_569_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_570_rotate1__hd__tl,axiom,
! [Xs: list_v] :
( ( Xs != nil_v )
=> ( ( rotate1_v @ Xs )
= ( append_v @ ( tl_v @ Xs ) @ ( cons_v @ ( hd_v @ Xs ) @ nil_v ) ) ) ) ).
% rotate1_hd_tl
thf(fact_571_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_572_list_Oset__sel_I1_J,axiom,
! [A: list_v] :
( ( A != nil_v )
=> ( member_v2 @ ( hd_v @ A ) @ ( set_v2 @ A ) ) ) ).
% list.set_sel(1)
thf(fact_573_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_574_hd__in__set,axiom,
! [Xs: list_v] :
( ( Xs != nil_v )
=> ( member_v2 @ ( hd_v @ Xs ) @ ( set_v2 @ Xs ) ) ) ).
% hd_in_set
thf(fact_575_hd__in__set,axiom,
! [Xs: list_nat] :
( ( Xs != nil_nat )
=> ( member_nat2 @ ( hd_nat @ Xs ) @ ( set_nat2 @ Xs ) ) ) ).
% hd_in_set
thf(fact_576_Nil__tl,axiom,
! [Xs: list_v] :
( ( nil_v
= ( tl_v @ Xs ) )
= ( ( Xs = nil_v )
| ? [X3: v] :
( Xs
= ( cons_v @ X3 @ nil_v ) ) ) ) ).
% Nil_tl
thf(fact_577_Nil__tl,axiom,
! [Xs: list_nat] :
( ( nil_nat
= ( tl_nat @ Xs ) )
= ( ( Xs = nil_nat )
| ? [X3: nat] :
( Xs
= ( cons_nat @ X3 @ nil_nat ) ) ) ) ).
% Nil_tl
thf(fact_578_tl__Nil,axiom,
! [Xs: list_v] :
( ( ( tl_v @ Xs )
= nil_v )
= ( ( Xs = nil_v )
| ? [X3: v] :
( Xs
= ( cons_v @ X3 @ nil_v ) ) ) ) ).
% tl_Nil
thf(fact_579_tl__Nil,axiom,
! [Xs: list_nat] :
( ( ( tl_nat @ Xs )
= nil_nat )
= ( ( Xs = nil_nat )
| ? [X3: nat] :
( Xs
= ( cons_nat @ X3 @ nil_nat ) ) ) ) ).
% tl_Nil
thf(fact_580_hd__map,axiom,
! [Xs: list_v,F: v > nat] :
( ( Xs != nil_v )
=> ( ( hd_nat @ ( map_v_nat @ F @ Xs ) )
= ( F @ ( hd_v @ Xs ) ) ) ) ).
% hd_map
thf(fact_581_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_582_list_Omap__sel_I1_J,axiom,
! [A: list_v,F: v > nat] :
( ( A != nil_v )
=> ( ( hd_nat @ ( map_v_nat @ F @ A ) )
= ( F @ ( hd_v @ A ) ) ) ) ).
% list.map_sel(1)
thf(fact_583_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_584_list_Oset__sel_I2_J,axiom,
! [A: list_v,X: v] :
( ( A != nil_v )
=> ( ( member_v2 @ X @ ( set_v2 @ ( tl_v @ A ) ) )
=> ( member_v2 @ X @ ( set_v2 @ A ) ) ) ) ).
% list.set_sel(2)
thf(fact_585_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_586_hd__append,axiom,
! [Xs: list_v,Ys: list_v] :
( ( ( Xs = nil_v )
=> ( ( hd_v @ ( append_v @ Xs @ Ys ) )
= ( hd_v @ Ys ) ) )
& ( ( Xs != nil_v )
=> ( ( hd_v @ ( append_v @ Xs @ Ys ) )
= ( hd_v @ Xs ) ) ) ) ).
% hd_append
thf(fact_587_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_588_longest__common__prefix,axiom,
! [Xs: list_v,Ys: list_v] :
? [Ps: list_v,Xs4: list_v,Ys5: list_v] :
( ( Xs
= ( append_v @ Ps @ Xs4 ) )
& ( Ys
= ( append_v @ Ps @ Ys5 ) )
& ( ( Xs4 = nil_v )
| ( Ys5 = nil_v )
| ( ( hd_v @ Xs4 )
!= ( hd_v @ Ys5 ) ) ) ) ).
% longest_common_prefix
thf(fact_589_longest__common__prefix,axiom,
! [Xs: list_nat,Ys: list_nat] :
? [Ps: list_nat,Xs4: list_nat,Ys5: list_nat] :
( ( Xs
= ( append_nat @ Ps @ Xs4 ) )
& ( Ys
= ( append_nat @ Ps @ Ys5 ) )
& ( ( Xs4 = nil_nat )
| ( Ys5 = nil_nat )
| ( ( hd_nat @ Xs4 )
!= ( hd_nat @ Ys5 ) ) ) ) ).
% longest_common_prefix
thf(fact_590_list_Omap__sel_I2_J,axiom,
! [A: list_v,F: v > nat] :
( ( A != nil_v )
=> ( ( tl_nat @ ( map_v_nat @ F @ A ) )
= ( map_v_nat @ F @ ( tl_v @ A ) ) ) ) ).
% list.map_sel(2)
thf(fact_591_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_592_tl__append__if,axiom,
! [Xs: list_v,Ys: list_v] :
( ( ( Xs = nil_v )
=> ( ( tl_v @ ( append_v @ Xs @ Ys ) )
= ( tl_v @ Ys ) ) )
& ( ( Xs != nil_v )
=> ( ( tl_v @ ( append_v @ Xs @ Ys ) )
= ( append_v @ ( tl_v @ Xs ) @ Ys ) ) ) ) ).
% tl_append_if
thf(fact_593_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_594_Suc__length__conv,axiom,
! [N: nat,Xs: list_nat] :
( ( ( suc @ N )
= ( size_size_list_nat @ Xs ) )
= ( ? [Y2: nat,Ys2: list_nat] :
( ( Xs
= ( cons_nat @ Y2 @ Ys2 ) )
& ( ( size_size_list_nat @ Ys2 )
= N ) ) ) ) ).
% Suc_length_conv
thf(fact_595_length__Suc__conv,axiom,
! [Xs: list_nat,N: nat] :
( ( ( size_size_list_nat @ Xs )
= ( suc @ N ) )
= ( ? [Y2: nat,Ys2: list_nat] :
( ( Xs
= ( cons_nat @ Y2 @ Ys2 ) )
& ( ( size_size_list_nat @ Ys2 )
= N ) ) ) ) ).
% length_Suc_conv
thf(fact_596_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_597_hd__Nil__eq__last,axiom,
( ( hd_v @ nil_v )
= ( last_v @ nil_v ) ) ).
% hd_Nil_eq_last
thf(fact_598_hd__Nil__eq__last,axiom,
( ( hd_nat @ nil_nat )
= ( last_nat @ nil_nat ) ) ).
% hd_Nil_eq_last
thf(fact_599_last__tl,axiom,
! [Xs: list_v] :
( ( ( Xs = nil_v )
| ( ( tl_v @ Xs )
!= nil_v ) )
=> ( ( last_v @ ( tl_v @ Xs ) )
= ( last_v @ Xs ) ) ) ).
% last_tl
thf(fact_600_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_601_hd__rev,axiom,
! [Xs: list_nat] :
( ( hd_nat @ ( rev_nat @ Xs ) )
= ( last_nat @ Xs ) ) ).
% hd_rev
thf(fact_602_last__rev,axiom,
! [Xs: list_nat] :
( ( last_nat @ ( rev_nat @ Xs ) )
= ( hd_nat @ Xs ) ) ).
% last_rev
thf(fact_603_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_604_n__lists__Nil,axiom,
! [N: nat] :
( ( ( N = zero_zero_nat )
=> ( ( n_lists_v @ N @ nil_v )
= ( cons_list_v @ nil_v @ nil_list_v ) ) )
& ( ( N != zero_zero_nat )
=> ( ( n_lists_v @ N @ nil_v )
= nil_list_v ) ) ) ).
% n_lists_Nil
thf(fact_605_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_606_distinct__adj__append__iff,axiom,
! [Xs: list_v,Ys: list_v] :
( ( distinct_adj_v @ ( append_v @ Xs @ Ys ) )
= ( ( distinct_adj_v @ Xs )
& ( distinct_adj_v @ Ys )
& ( ( Xs = nil_v )
| ( Ys = nil_v )
| ( ( last_v @ Xs )
!= ( hd_v @ Ys ) ) ) ) ) ).
% distinct_adj_append_iff
thf(fact_607_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_608_n__lists_Osimps_I1_J,axiom,
! [Xs: list_v] :
( ( n_lists_v @ zero_zero_nat @ Xs )
= ( cons_list_v @ nil_v @ nil_list_v ) ) ).
% n_lists.simps(1)
thf(fact_609_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_610_not__gr__zero,axiom,
! [N: nat] :
( ( ~ ( ord_less_nat @ zero_zero_nat @ N ) )
= ( N = zero_zero_nat ) ) ).
% not_gr_zero
thf(fact_611_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_612_length__0__conv,axiom,
! [Xs: list_v] :
( ( ( size_size_list_v @ Xs )
= zero_zero_nat )
= ( Xs = nil_v ) ) ).
% length_0_conv
thf(fact_613_length__0__conv,axiom,
! [Xs: list_nat] :
( ( ( size_size_list_nat @ Xs )
= zero_zero_nat )
= ( Xs = nil_nat ) ) ).
% length_0_conv
thf(fact_614_length__greater__0__conv,axiom,
! [Xs: list_v] :
( ( ord_less_nat @ zero_zero_nat @ ( size_size_list_v @ Xs ) )
= ( Xs != nil_v ) ) ).
% length_greater_0_conv
thf(fact_615_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_616_zero__reorient,axiom,
! [X: nat] :
( ( zero_zero_nat = X )
= ( X = zero_zero_nat ) ) ).
% zero_reorient
thf(fact_617_gr__zeroI,axiom,
! [N: nat] :
( ( N != zero_zero_nat )
=> ( ord_less_nat @ zero_zero_nat @ N ) ) ).
% gr_zeroI
thf(fact_618_not__less__zero,axiom,
! [N: nat] :
~ ( ord_less_nat @ N @ zero_zero_nat ) ).
% not_less_zero
thf(fact_619_gr__implies__not__zero,axiom,
! [M: nat,N: nat] :
( ( ord_less_nat @ M @ N )
=> ( N != zero_zero_nat ) ) ).
% gr_implies_not_zero
thf(fact_620_zero__less__iff__neq__zero,axiom,
! [N: nat] :
( ( ord_less_nat @ zero_zero_nat @ N )
= ( N != zero_zero_nat ) ) ).
% zero_less_iff_neq_zero
thf(fact_621_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_622_distinct__adj__Nil,axiom,
distinct_adj_v @ nil_v ).
% distinct_adj_Nil
thf(fact_623_distinct__adj__Nil,axiom,
distinct_adj_nat @ nil_nat ).
% distinct_adj_Nil
thf(fact_624_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_625_distinct__adj__appendD1,axiom,
! [Xs: list_v,Ys: list_v] :
( ( distinct_adj_v @ ( append_v @ Xs @ Ys ) )
=> ( distinct_adj_v @ Xs ) ) ).
% distinct_adj_appendD1
thf(fact_626_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_627_distinct__adj__appendD2,axiom,
! [Xs: list_v,Ys: list_v] :
( ( distinct_adj_v @ ( append_v @ Xs @ Ys ) )
=> ( distinct_adj_v @ Ys ) ) ).
% distinct_adj_appendD2
thf(fact_628_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_629_list_Osize_I3_J,axiom,
( ( size_size_list_v @ nil_v )
= zero_zero_nat ) ).
% list.size(3)
thf(fact_630_list_Osize_I3_J,axiom,
( ( size_size_list_nat @ nil_nat )
= zero_zero_nat ) ).
% list.size(3)
thf(fact_631_distinct__adj__singleton,axiom,
! [X: v] : ( distinct_adj_v @ ( cons_v @ X @ nil_v ) ) ).
% distinct_adj_singleton
thf(fact_632_distinct__adj__singleton,axiom,
! [X: nat] : ( distinct_adj_nat @ ( cons_nat @ X @ nil_nat ) ) ).
% distinct_adj_singleton
thf(fact_633_length__code,axiom,
( size_size_list_nat
= ( gen_length_nat @ zero_zero_nat ) ) ).
% length_code
thf(fact_634_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_635_distinct__adj__Cons,axiom,
! [X: v,Xs: list_v] :
( ( distinct_adj_v @ ( cons_v @ X @ Xs ) )
= ( ( Xs = nil_v )
| ( ( X
!= ( hd_v @ Xs ) )
& ( distinct_adj_v @ Xs ) ) ) ) ).
% distinct_adj_Cons
thf(fact_636_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_637_Nitpick_Osize__list__simp_I2_J,axiom,
( size_size_list_v
= ( ^ [Xs3: list_v] : ( if_nat @ ( Xs3 = nil_v ) @ zero_zero_nat @ ( suc @ ( size_size_list_v @ ( tl_v @ Xs3 ) ) ) ) ) ) ).
% Nitpick.size_list_simp(2)
thf(fact_638_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_639_remdups__adj__singleton__iff,axiom,
! [Xs: list_v] :
( ( ( size_size_list_v @ ( remdups_adj_v @ Xs ) )
= ( suc @ zero_zero_nat ) )
= ( ( Xs != nil_v )
& ( Xs
= ( replicate_v @ ( size_size_list_v @ Xs ) @ ( hd_v @ Xs ) ) ) ) ) ).
% remdups_adj_singleton_iff
thf(fact_640_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_641_remdups__adj__length__ge1,axiom,
! [Xs: list_v] :
( ( Xs != nil_v )
=> ( ord_less_eq_nat @ ( suc @ zero_zero_nat ) @ ( size_size_list_v @ ( remdups_adj_v @ Xs ) ) ) ) ).
% remdups_adj_length_ge1
thf(fact_642_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_643_take__Suc,axiom,
! [Xs: list_v,N: nat] :
( ( Xs != nil_v )
=> ( ( take_v @ ( suc @ N ) @ Xs )
= ( cons_v @ ( hd_v @ Xs ) @ ( take_v @ N @ ( tl_v @ Xs ) ) ) ) ) ).
% take_Suc
thf(fact_644_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_645_nths__singleton,axiom,
! [A4: set_nat,X: v] :
( ( ( member_nat2 @ zero_zero_nat @ A4 )
=> ( ( nths_v @ ( cons_v @ X @ nil_v ) @ A4 )
= ( cons_v @ X @ nil_v ) ) )
& ( ~ ( member_nat2 @ zero_zero_nat @ A4 )
=> ( ( nths_v @ ( cons_v @ X @ nil_v ) @ A4 )
= nil_v ) ) ) ).
% nths_singleton
thf(fact_646_nths__singleton,axiom,
! [A4: set_nat,X: nat] :
( ( ( member_nat2 @ zero_zero_nat @ A4 )
=> ( ( nths_nat @ ( cons_nat @ X @ nil_nat ) @ A4 )
= ( cons_nat @ X @ nil_nat ) ) )
& ( ~ ( member_nat2 @ zero_zero_nat @ A4 )
=> ( ( nths_nat @ ( cons_nat @ X @ nil_nat ) @ A4 )
= nil_nat ) ) ) ).
% nths_singleton
thf(fact_647_le__zero__eq,axiom,
! [N: nat] :
( ( ord_less_eq_nat @ N @ zero_zero_nat )
= ( N = zero_zero_nat ) ) ).
% le_zero_eq
thf(fact_648_length__replicate,axiom,
! [N: nat,X: nat] :
( ( size_size_list_nat @ ( replicate_nat @ N @ X ) )
= N ) ).
% length_replicate
thf(fact_649_concat__replicate__trivial,axiom,
! [I: nat] :
( ( concat_v @ ( replicate_list_v @ I @ nil_v ) )
= nil_v ) ).
% concat_replicate_trivial
thf(fact_650_concat__replicate__trivial,axiom,
! [I: nat] :
( ( concat_nat @ ( replicate_list_nat @ I @ nil_nat ) )
= nil_nat ) ).
% concat_replicate_trivial
thf(fact_651_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_652_nths__nil,axiom,
! [A4: set_nat] :
( ( nths_v @ nil_v @ A4 )
= nil_v ) ).
% nths_nil
thf(fact_653_nths__nil,axiom,
! [A4: set_nat] :
( ( nths_nat @ nil_nat @ A4 )
= nil_nat ) ).
% nths_nil
thf(fact_654_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_655_take__eq__Nil2,axiom,
! [N: nat,Xs: list_v] :
( ( nil_v
= ( take_v @ N @ Xs ) )
= ( ( N = zero_zero_nat )
| ( Xs = nil_v ) ) ) ).
% take_eq_Nil2
thf(fact_656_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_657_take__eq__Nil,axiom,
! [N: nat,Xs: list_v] :
( ( ( take_v @ N @ Xs )
= nil_v )
= ( ( N = zero_zero_nat )
| ( Xs = nil_v ) ) ) ).
% take_eq_Nil
thf(fact_658_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_659_take0,axiom,
( ( take_v @ zero_zero_nat )
= ( ^ [Xs3: list_v] : nil_v ) ) ).
% take0
thf(fact_660_take0,axiom,
( ( take_nat @ zero_zero_nat )
= ( ^ [Xs3: list_nat] : nil_nat ) ) ).
% take0
thf(fact_661_replicate__empty,axiom,
! [N: nat,X: v] :
( ( ( replicate_v @ N @ X )
= nil_v )
= ( N = zero_zero_nat ) ) ).
% replicate_empty
thf(fact_662_replicate__empty,axiom,
! [N: nat,X: nat] :
( ( ( replicate_nat @ N @ X )
= nil_nat )
= ( N = zero_zero_nat ) ) ).
% replicate_empty
thf(fact_663_empty__replicate,axiom,
! [N: nat,X: v] :
( ( nil_v
= ( replicate_v @ N @ X ) )
= ( N = zero_zero_nat ) ) ).
% empty_replicate
thf(fact_664_empty__replicate,axiom,
! [N: nat,X: nat] :
( ( nil_nat
= ( replicate_nat @ N @ X ) )
= ( N = zero_zero_nat ) ) ).
% empty_replicate
thf(fact_665_Ball__set__replicate,axiom,
! [N: nat,A: nat,P: nat > $o] :
( ( ! [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ ( replicate_nat @ N @ A ) ) )
=> ( P @ X3 ) ) )
= ( ( P @ A )
| ( N = zero_zero_nat ) ) ) ).
% Ball_set_replicate
thf(fact_666_Bex__set__replicate,axiom,
! [N: nat,A: nat,P: nat > $o] :
( ( ? [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ ( replicate_nat @ N @ A ) ) )
& ( P @ X3 ) ) )
= ( ( P @ A )
& ( N != zero_zero_nat ) ) ) ).
% Bex_set_replicate
thf(fact_667_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_668_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_669_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_670_hd__replicate,axiom,
! [N: nat,X: nat] :
( ( N != zero_zero_nat )
=> ( ( hd_nat @ ( replicate_nat @ N @ X ) )
= X ) ) ).
% hd_replicate
thf(fact_671_last__replicate,axiom,
! [N: nat,X: nat] :
( ( N != zero_zero_nat )
=> ( ( last_nat @ ( replicate_nat @ N @ X ) )
= X ) ) ).
% last_replicate
thf(fact_672_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_673_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_674_take__equalityI,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ! [I2: nat] :
( ( take_nat @ I2 @ Xs )
= ( take_nat @ I2 @ Ys ) )
=> ( Xs = Ys ) ) ).
% take_equalityI
thf(fact_675_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_676_take__Nil,axiom,
! [N: nat] :
( ( take_v @ N @ nil_v )
= nil_v ) ).
% take_Nil
thf(fact_677_take__Nil,axiom,
! [N: nat] :
( ( take_nat @ N @ nil_nat )
= nil_nat ) ).
% take_Nil
thf(fact_678_append__replicate__commute,axiom,
! [N: nat,X: v,K: nat] :
( ( append_v @ ( replicate_v @ N @ X ) @ ( replicate_v @ K @ X ) )
= ( append_v @ ( replicate_v @ K @ X ) @ ( replicate_v @ N @ X ) ) ) ).
% append_replicate_commute
thf(fact_679_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_680_zero__le,axiom,
! [X: nat] : ( ord_less_eq_nat @ zero_zero_nat @ X ) ).
% zero_le
thf(fact_681_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_682_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_683_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_684_take__0,axiom,
! [Xs: list_v] :
( ( take_v @ zero_zero_nat @ Xs )
= nil_v ) ).
% take_0
thf(fact_685_take__0,axiom,
! [Xs: list_nat] :
( ( take_nat @ zero_zero_nat @ Xs )
= nil_nat ) ).
% take_0
thf(fact_686_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_687_replicate__Suc,axiom,
! [N: nat,X: nat] :
( ( replicate_nat @ ( suc @ N ) @ X )
= ( cons_nat @ X @ ( replicate_nat @ N @ X ) ) ) ).
% replicate_Suc
thf(fact_688_replicate__0,axiom,
! [X: v] :
( ( replicate_v @ zero_zero_nat @ X )
= nil_v ) ).
% replicate_0
thf(fact_689_replicate__0,axiom,
! [X: nat] :
( ( replicate_nat @ zero_zero_nat @ X )
= nil_nat ) ).
% replicate_0
thf(fact_690_replicate__length__same,axiom,
! [Xs: list_nat,X: nat] :
( ! [X2: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Xs ) )
=> ( X2 = X ) )
=> ( ( replicate_nat @ ( size_size_list_nat @ Xs ) @ X )
= Xs ) ) ).
% replicate_length_same
thf(fact_691_replicate__eqI,axiom,
! [Xs: list_nat,N: nat,X: nat] :
( ( ( size_size_list_nat @ Xs )
= N )
=> ( ! [Y3: nat] :
( ( member_nat2 @ Y3 @ ( set_nat2 @ Xs ) )
=> ( Y3 = X ) )
=> ( Xs
= ( replicate_nat @ N @ X ) ) ) ) ).
% replicate_eqI
thf(fact_692_replicate__app__Cons__same,axiom,
! [N: nat,X: v,Xs: list_v] :
( ( append_v @ ( replicate_v @ N @ X ) @ ( cons_v @ X @ Xs ) )
= ( cons_v @ X @ ( append_v @ ( replicate_v @ N @ X ) @ Xs ) ) ) ).
% replicate_app_Cons_same
thf(fact_693_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_694_comm__append__are__replicate,axiom,
! [Xs: list_v,Ys: list_v] :
( ( ( append_v @ Xs @ Ys )
= ( append_v @ Ys @ Xs ) )
=> ? [M2: nat,N2: nat,Zs2: list_v] :
( ( ( concat_v @ ( replicate_list_v @ M2 @ Zs2 ) )
= Xs )
& ( ( concat_v @ ( replicate_list_v @ N2 @ Zs2 ) )
= Ys ) ) ) ).
% comm_append_are_replicate
thf(fact_695_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_696_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_697_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_698_nths__all,axiom,
! [Xs: list_nat,I3: set_nat] :
( ! [I2: nat] :
( ( ord_less_nat @ I2 @ ( size_size_list_nat @ Xs ) )
=> ( member_nat2 @ I2 @ I3 ) )
=> ( ( nths_nat @ Xs @ I3 )
= Xs ) ) ).
% nths_all
thf(fact_699_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_700_replicate__append__same,axiom,
! [I: nat,X: v] :
( ( append_v @ ( replicate_v @ I @ X ) @ ( cons_v @ X @ nil_v ) )
= ( cons_v @ X @ ( replicate_v @ I @ X ) ) ) ).
% replicate_append_same
thf(fact_701_replicate__append__same,axiom,
! [I: nat,X: nat] :
( ( append_nat @ ( replicate_nat @ I @ X ) @ ( cons_nat @ X @ nil_nat ) )
= ( cons_nat @ X @ ( replicate_nat @ I @ X ) ) ) ).
% replicate_append_same
thf(fact_702_Suc__le__length__iff,axiom,
! [N: nat,Xs: list_nat] :
( ( ord_less_eq_nat @ ( suc @ N ) @ ( size_size_list_nat @ Xs ) )
= ( ? [X3: nat,Ys2: list_nat] :
( ( Xs
= ( cons_nat @ X3 @ Ys2 ) )
& ( ord_less_eq_nat @ N @ ( size_size_list_nat @ Ys2 ) ) ) ) ) ).
% Suc_le_length_iff
thf(fact_703_remdups__adj__replicate,axiom,
! [N: nat,X: v] :
( ( ( N = zero_zero_nat )
=> ( ( remdups_adj_v @ ( replicate_v @ N @ X ) )
= nil_v ) )
& ( ( N != zero_zero_nat )
=> ( ( remdups_adj_v @ ( replicate_v @ N @ X ) )
= ( cons_v @ X @ nil_v ) ) ) ) ).
% remdups_adj_replicate
thf(fact_704_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_705_remdups__adj__singleton,axiom,
! [Xs: list_v,X: v] :
( ( ( remdups_adj_v @ Xs )
= ( cons_v @ X @ nil_v ) )
=> ( Xs
= ( replicate_v @ ( size_size_list_v @ Xs ) @ X ) ) ) ).
% remdups_adj_singleton
thf(fact_706_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_707_take__hd__drop,axiom,
! [N: nat,Xs: list_v] :
( ( ord_less_nat @ N @ ( size_size_list_v @ Xs ) )
=> ( ( append_v @ ( take_v @ N @ Xs ) @ ( cons_v @ ( hd_v @ ( drop_v @ N @ Xs ) ) @ nil_v ) )
= ( take_v @ ( suc @ N ) @ Xs ) ) ) ).
% take_hd_drop
thf(fact_708_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_709_take__Suc__conv__app__nth,axiom,
! [I: nat,Xs: list_v] :
( ( ord_less_nat @ I @ ( size_size_list_v @ Xs ) )
=> ( ( take_v @ ( suc @ I ) @ Xs )
= ( append_v @ ( take_v @ I @ Xs ) @ ( cons_v @ ( nth_v @ Xs @ I ) @ nil_v ) ) ) ) ).
% take_Suc_conv_app_nth
thf(fact_710_take__Suc__conv__app__nth,axiom,
! [I: nat,Xs: list_nat] :
( ( ord_less_nat @ I @ ( size_size_list_nat @ Xs ) )
=> ( ( take_nat @ ( suc @ I ) @ Xs )
= ( append_nat @ ( take_nat @ I @ Xs ) @ ( cons_nat @ ( nth_nat @ Xs @ I ) @ nil_nat ) ) ) ) ).
% take_Suc_conv_app_nth
thf(fact_711_card__set__1__iff__replicate,axiom,
! [Xs: list_v] :
( ( ( finite_card_v @ ( set_v2 @ Xs ) )
= ( suc @ zero_zero_nat ) )
= ( ( Xs != nil_v )
& ? [X3: v] :
( Xs
= ( replicate_v @ ( size_size_list_v @ Xs ) @ X3 ) ) ) ) ).
% card_set_1_iff_replicate
thf(fact_712_card__set__1__iff__replicate,axiom,
! [Xs: list_nat] :
( ( ( finite_card_nat @ ( set_nat2 @ Xs ) )
= ( suc @ zero_zero_nat ) )
= ( ( Xs != nil_nat )
& ? [X3: nat] :
( Xs
= ( replicate_nat @ ( size_size_list_nat @ Xs ) @ X3 ) ) ) ) ).
% card_set_1_iff_replicate
thf(fact_713_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_714_successively__append__iff,axiom,
! [P: v > v > $o,Xs: list_v,Ys: list_v] :
( ( successively_v @ P @ ( append_v @ Xs @ Ys ) )
= ( ( successively_v @ P @ Xs )
& ( successively_v @ P @ Ys )
& ( ( Xs = nil_v )
| ( Ys = nil_v )
| ( P @ ( last_v @ Xs ) @ ( hd_v @ Ys ) ) ) ) ) ).
% successively_append_iff
thf(fact_715_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_716_drop0,axiom,
( ( drop_nat @ zero_zero_nat )
= ( ^ [X3: list_nat] : X3 ) ) ).
% drop0
thf(fact_717_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_718_nth__Cons__0,axiom,
! [X: nat,Xs: list_nat] :
( ( nth_nat @ ( cons_nat @ X @ Xs ) @ zero_zero_nat )
= X ) ).
% nth_Cons_0
thf(fact_719_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_720_nth__take,axiom,
! [I: nat,N: nat,Xs: list_nat] :
( ( ord_less_nat @ I @ N )
=> ( ( nth_nat @ ( take_nat @ N @ Xs ) @ I )
= ( nth_nat @ Xs @ I ) ) ) ).
% nth_take
thf(fact_721_nth__replicate,axiom,
! [I: nat,N: nat,X: nat] :
( ( ord_less_nat @ I @ N )
=> ( ( nth_nat @ ( replicate_nat @ N @ X ) @ I )
= X ) ) ).
% nth_replicate
thf(fact_722_append__take__drop__id,axiom,
! [N: nat,Xs: list_v] :
( ( append_v @ ( take_v @ N @ Xs ) @ ( drop_v @ N @ Xs ) )
= Xs ) ).
% append_take_drop_id
thf(fact_723_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_724_nth__append__length,axiom,
! [Xs: list_v,X: v,Ys: list_v] :
( ( nth_v @ ( append_v @ Xs @ ( cons_v @ X @ Ys ) ) @ ( size_size_list_v @ Xs ) )
= X ) ).
% nth_append_length
thf(fact_725_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_726_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_727_drop__eq__Nil2,axiom,
! [N: nat,Xs: list_v] :
( ( nil_v
= ( drop_v @ N @ Xs ) )
= ( ord_less_eq_nat @ ( size_size_list_v @ Xs ) @ N ) ) ).
% drop_eq_Nil2
thf(fact_728_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_729_drop__eq__Nil,axiom,
! [N: nat,Xs: list_v] :
( ( ( drop_v @ N @ Xs )
= nil_v )
= ( ord_less_eq_nat @ ( size_size_list_v @ Xs ) @ N ) ) ).
% drop_eq_Nil
thf(fact_730_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_731_drop__all,axiom,
! [Xs: list_v,N: nat] :
( ( ord_less_eq_nat @ ( size_size_list_v @ Xs ) @ N )
=> ( ( drop_v @ N @ Xs )
= nil_v ) ) ).
% drop_all
thf(fact_732_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_733_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_734_drop__0,axiom,
! [Xs: list_nat] :
( ( drop_nat @ zero_zero_nat @ Xs )
= Xs ) ).
% drop_0
thf(fact_735_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_736_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_737_subset__code_I1_J,axiom,
! [Xs: list_nat,B3: set_nat] :
( ( ord_less_eq_set_nat @ ( set_nat2 @ Xs ) @ B3 )
= ( ! [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ Xs ) )
=> ( member_nat2 @ X3 @ B3 ) ) ) ) ).
% subset_code(1)
thf(fact_738_tl__drop,axiom,
! [N: nat,Xs: list_nat] :
( ( tl_nat @ ( drop_nat @ N @ Xs ) )
= ( drop_nat @ N @ ( tl_nat @ Xs ) ) ) ).
% tl_drop
thf(fact_739_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_740_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_741_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_742_drop__Nil,axiom,
! [N: nat] :
( ( drop_v @ N @ nil_v )
= nil_v ) ).
% drop_Nil
thf(fact_743_drop__Nil,axiom,
! [N: nat] :
( ( drop_nat @ N @ nil_nat )
= nil_nat ) ).
% drop_Nil
thf(fact_744_successively_Oelims_I3_J,axiom,
! [X: nat > nat > $o,Xa: list_nat] :
( ~ ( successively_nat @ X @ Xa )
=> ~ ! [X2: nat,Y3: nat,Xs2: list_nat] :
( ( Xa
= ( cons_nat @ X2 @ ( cons_nat @ Y3 @ Xs2 ) ) )
=> ( ( X @ X2 @ Y3 )
& ( successively_nat @ X @ ( cons_nat @ Y3 @ Xs2 ) ) ) ) ) ).
% successively.elims(3)
thf(fact_745_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_746_successively_Osimps_I1_J,axiom,
! [P: v > v > $o] : ( successively_v @ P @ nil_v ) ).
% successively.simps(1)
thf(fact_747_successively_Osimps_I1_J,axiom,
! [P: nat > nat > $o] : ( successively_nat @ P @ nil_nat ) ).
% successively.simps(1)
thf(fact_748_successively__cong,axiom,
! [Xs: list_nat,P: nat > nat > $o,Q: nat > nat > $o,Ys: list_nat] :
( ! [X2: nat,Y3: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Xs ) )
=> ( ( member_nat2 @ Y3 @ ( set_nat2 @ Xs ) )
=> ( ( P @ X2 @ Y3 )
= ( Q @ X2 @ Y3 ) ) ) )
=> ( ( Xs = Ys )
=> ( ( successively_nat @ P @ Xs )
= ( successively_nat @ Q @ Ys ) ) ) ) ).
% successively_cong
thf(fact_749_successively__mono,axiom,
! [P: nat > nat > $o,Xs: list_nat,Q: nat > nat > $o] :
( ( successively_nat @ P @ Xs )
=> ( ! [X2: nat,Y3: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Xs ) )
=> ( ( member_nat2 @ Y3 @ ( set_nat2 @ Xs ) )
=> ( ( P @ X2 @ Y3 )
=> ( Q @ X2 @ Y3 ) ) ) )
=> ( successively_nat @ Q @ Xs ) ) ) ).
% successively_mono
thf(fact_750_drop__butlast,axiom,
! [N: nat,Xs: list_nat] :
( ( drop_nat @ N @ ( butlast_nat @ Xs ) )
= ( butlast_nat @ ( drop_nat @ N @ Xs ) ) ) ).
% drop_butlast
thf(fact_751_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_752_Cons__nth__drop__Suc,axiom,
! [I: nat,Xs: list_nat] :
( ( ord_less_nat @ I @ ( size_size_list_nat @ Xs ) )
=> ( ( cons_nat @ ( nth_nat @ Xs @ I ) @ ( drop_nat @ ( suc @ I ) @ Xs ) )
= ( drop_nat @ I @ Xs ) ) ) ).
% Cons_nth_drop_Suc
thf(fact_753_list__eq__iff__nth__eq,axiom,
( ( ^ [Y4: list_nat,Z5: list_nat] : ( Y4 = Z5 ) )
= ( ^ [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_754_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_755_nth__equalityI,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( ( size_size_list_nat @ Xs )
= ( size_size_list_nat @ Ys ) )
=> ( ! [I2: nat] :
( ( ord_less_nat @ I2 @ ( size_size_list_nat @ Xs ) )
=> ( ( nth_nat @ Xs @ I2 )
= ( nth_nat @ Ys @ I2 ) ) )
=> ( Xs = Ys ) ) ) ).
% nth_equalityI
thf(fact_756_drop__Suc,axiom,
! [N: nat,Xs: list_nat] :
( ( drop_nat @ ( suc @ N ) @ Xs )
= ( drop_nat @ N @ ( tl_nat @ Xs ) ) ) ).
% drop_Suc
thf(fact_757_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_758_successively_Osimps_I2_J,axiom,
! [P: v > v > $o,X: v] : ( successively_v @ P @ ( cons_v @ X @ nil_v ) ) ).
% successively.simps(2)
thf(fact_759_successively_Osimps_I2_J,axiom,
! [P: nat > nat > $o,X: nat] : ( successively_nat @ P @ ( cons_nat @ X @ nil_nat ) ) ).
% successively.simps(2)
thf(fact_760_successively_Oelims_I1_J,axiom,
! [X: v > v > $o,Xa: list_v,Y: $o] :
( ( ( successively_v @ X @ Xa )
= Y )
=> ( ( ( Xa = nil_v )
=> ~ Y )
=> ( ( ? [X2: v] :
( Xa
= ( cons_v @ X2 @ nil_v ) )
=> ~ Y )
=> ~ ! [X2: v,Y3: v,Xs2: list_v] :
( ( Xa
= ( cons_v @ X2 @ ( cons_v @ Y3 @ Xs2 ) ) )
=> ( Y
= ( ~ ( ( X @ X2 @ Y3 )
& ( successively_v @ X @ ( cons_v @ Y3 @ Xs2 ) ) ) ) ) ) ) ) ) ).
% successively.elims(1)
thf(fact_761_successively_Oelims_I1_J,axiom,
! [X: nat > nat > $o,Xa: list_nat,Y: $o] :
( ( ( successively_nat @ X @ Xa )
= Y )
=> ( ( ( Xa = nil_nat )
=> ~ Y )
=> ( ( ? [X2: nat] :
( Xa
= ( cons_nat @ X2 @ nil_nat ) )
=> ~ Y )
=> ~ ! [X2: nat,Y3: nat,Xs2: list_nat] :
( ( Xa
= ( cons_nat @ X2 @ ( cons_nat @ Y3 @ Xs2 ) ) )
=> ( Y
= ( ~ ( ( X @ X2 @ Y3 )
& ( successively_nat @ X @ ( cons_nat @ Y3 @ Xs2 ) ) ) ) ) ) ) ) ) ).
% successively.elims(1)
thf(fact_762_successively_Oelims_I2_J,axiom,
! [X: v > v > $o,Xa: list_v] :
( ( successively_v @ X @ Xa )
=> ( ( Xa != nil_v )
=> ( ! [X2: v] :
( Xa
!= ( cons_v @ X2 @ nil_v ) )
=> ~ ! [X2: v,Y3: v,Xs2: list_v] :
( ( Xa
= ( cons_v @ X2 @ ( cons_v @ Y3 @ Xs2 ) ) )
=> ~ ( ( X @ X2 @ Y3 )
& ( successively_v @ X @ ( cons_v @ Y3 @ Xs2 ) ) ) ) ) ) ) ).
% successively.elims(2)
thf(fact_763_successively_Oelims_I2_J,axiom,
! [X: nat > nat > $o,Xa: list_nat] :
( ( successively_nat @ X @ Xa )
=> ( ( Xa != nil_nat )
=> ( ! [X2: nat] :
( Xa
!= ( cons_nat @ X2 @ nil_nat ) )
=> ~ ! [X2: nat,Y3: nat,Xs2: list_nat] :
( ( Xa
= ( cons_nat @ X2 @ ( cons_nat @ Y3 @ Xs2 ) ) )
=> ~ ( ( X @ X2 @ Y3 )
& ( successively_nat @ X @ ( cons_nat @ Y3 @ Xs2 ) ) ) ) ) ) ) ).
% successively.elims(2)
thf(fact_764_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_765_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_766_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_767_successively__remdups__adj__iff,axiom,
! [Xs: list_nat,P: nat > nat > $o] :
( ! [X2: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Xs ) )
=> ( P @ X2 @ X2 ) )
=> ( ( successively_nat @ P @ ( remdups_adj_nat @ Xs ) )
= ( successively_nat @ P @ Xs ) ) ) ).
% successively_remdups_adj_iff
thf(fact_768_id__take__nth__drop,axiom,
! [I: nat,Xs: list_v] :
( ( ord_less_nat @ I @ ( size_size_list_v @ Xs ) )
=> ( Xs
= ( append_v @ ( take_v @ I @ Xs ) @ ( cons_v @ ( nth_v @ Xs @ I ) @ ( drop_v @ ( suc @ I ) @ Xs ) ) ) ) ) ).
% id_take_nth_drop
thf(fact_769_id__take__nth__drop,axiom,
! [I: nat,Xs: list_nat] :
( ( ord_less_nat @ I @ ( size_size_list_nat @ Xs ) )
=> ( Xs
= ( append_nat @ ( take_nat @ I @ Xs ) @ ( cons_nat @ ( nth_nat @ Xs @ I ) @ ( drop_nat @ ( suc @ I ) @ Xs ) ) ) ) ) ).
% id_take_nth_drop
thf(fact_770_all__set__conv__all__nth,axiom,
! [Xs: list_nat,P: nat > $o] :
( ( ! [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ Xs ) )
=> ( P @ X3 ) ) )
= ( ! [I4: nat] :
( ( ord_less_nat @ I4 @ ( size_size_list_nat @ Xs ) )
=> ( P @ ( nth_nat @ Xs @ I4 ) ) ) ) ) ).
% all_set_conv_all_nth
thf(fact_771_all__nth__imp__all__set,axiom,
! [Xs: list_nat,P: nat > $o,X: nat] :
( ! [I2: nat] :
( ( ord_less_nat @ I2 @ ( size_size_list_nat @ Xs ) )
=> ( P @ ( nth_nat @ Xs @ I2 ) ) )
=> ( ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ( P @ X ) ) ) ).
% all_nth_imp_all_set
thf(fact_772_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_773_list__ball__nth,axiom,
! [N: nat,Xs: list_nat,P: nat > $o] :
( ( ord_less_nat @ N @ ( size_size_list_nat @ Xs ) )
=> ( ! [X2: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Xs ) )
=> ( P @ X2 ) )
=> ( P @ ( nth_nat @ Xs @ N ) ) ) ) ).
% list_ball_nth
thf(fact_774_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_775_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_776_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_777_hd__conv__nth,axiom,
! [Xs: list_v] :
( ( Xs != nil_v )
=> ( ( hd_v @ Xs )
= ( nth_v @ Xs @ zero_zero_nat ) ) ) ).
% hd_conv_nth
thf(fact_778_hd__conv__nth,axiom,
! [Xs: list_nat] :
( ( Xs != nil_nat )
=> ( ( hd_nat @ Xs )
= ( nth_nat @ Xs @ zero_zero_nat ) ) ) ).
% hd_conv_nth
thf(fact_779_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_780_append__eq__conv__conj,axiom,
! [Xs: list_v,Ys: list_v,Zs: list_v] :
( ( ( append_v @ Xs @ Ys )
= Zs )
= ( ( Xs
= ( take_v @ ( size_size_list_v @ Xs ) @ Zs ) )
& ( Ys
= ( drop_v @ ( size_size_list_v @ Xs ) @ Zs ) ) ) ) ).
% append_eq_conv_conj
thf(fact_781_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_782_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_783_successively__Cons,axiom,
! [P: v > v > $o,X: v,Xs: list_v] :
( ( successively_v @ P @ ( cons_v @ X @ Xs ) )
= ( ( Xs = nil_v )
| ( ( P @ X @ ( hd_v @ Xs ) )
& ( successively_v @ P @ Xs ) ) ) ) ).
% successively_Cons
thf(fact_784_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_785_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 ) )
=> ( ! [I2: nat] :
( ( ord_less_nat @ I2 @ K )
=> ( ( nth_nat @ Xs @ I2 )
= ( nth_nat @ Ys @ I2 ) ) )
=> ( ( take_nat @ K @ Xs )
= ( take_nat @ K @ Ys ) ) ) ) ) ).
% nth_take_lemma
thf(fact_786_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_787_remdups__adj__adjacent,axiom,
! [I: nat,Xs: list_nat] :
( ( ord_less_nat @ ( suc @ I ) @ ( size_size_list_nat @ ( remdups_adj_nat @ Xs ) ) )
=> ( ( nth_nat @ ( remdups_adj_nat @ Xs ) @ I )
!= ( nth_nat @ ( remdups_adj_nat @ Xs ) @ ( suc @ I ) ) ) ) ).
% remdups_adj_adjacent
thf(fact_788_append__eq__append__conv__if,axiom,
! [Xs_1: list_v,Xs_2: list_v,Ys_1: list_v,Ys_2: list_v] :
( ( ( append_v @ Xs_1 @ Xs_2 )
= ( append_v @ Ys_1 @ Ys_2 ) )
= ( ( ( ord_less_eq_nat @ ( size_size_list_v @ Xs_1 ) @ ( size_size_list_v @ Ys_1 ) )
=> ( ( Xs_1
= ( take_v @ ( size_size_list_v @ Xs_1 ) @ Ys_1 ) )
& ( Xs_2
= ( append_v @ ( drop_v @ ( size_size_list_v @ Xs_1 ) @ Ys_1 ) @ Ys_2 ) ) ) )
& ( ~ ( ord_less_eq_nat @ ( size_size_list_v @ Xs_1 ) @ ( size_size_list_v @ Ys_1 ) )
=> ( ( ( take_v @ ( size_size_list_v @ Ys_1 ) @ Xs_1 )
= Ys_1 )
& ( ( append_v @ ( drop_v @ ( size_size_list_v @ Ys_1 ) @ Xs_1 ) @ Xs_2 )
= Ys_2 ) ) ) ) ) ).
% append_eq_append_conv_if
thf(fact_789_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_790_upd__conv__take__nth__drop,axiom,
! [I: nat,Xs: list_v,A: v] :
( ( ord_less_nat @ I @ ( size_size_list_v @ Xs ) )
=> ( ( list_update_v @ Xs @ I @ A )
= ( append_v @ ( take_v @ I @ Xs ) @ ( cons_v @ A @ ( drop_v @ ( suc @ I ) @ Xs ) ) ) ) ) ).
% upd_conv_take_nth_drop
thf(fact_791_upd__conv__take__nth__drop,axiom,
! [I: nat,Xs: list_nat,A: nat] :
( ( ord_less_nat @ I @ ( size_size_list_nat @ Xs ) )
=> ( ( list_update_nat @ Xs @ I @ A )
= ( append_nat @ ( take_nat @ I @ Xs ) @ ( cons_nat @ A @ ( drop_nat @ ( suc @ I ) @ Xs ) ) ) ) ) ).
% upd_conv_take_nth_drop
thf(fact_792_comm__append__is__replicate,axiom,
! [Xs: list_v,Ys: list_v] :
( ( Xs != nil_v )
=> ( ( Ys != nil_v )
=> ( ( ( append_v @ Xs @ Ys )
= ( append_v @ Ys @ Xs ) )
=> ? [N2: nat,Zs2: list_v] :
( ( ord_less_nat @ one_one_nat @ N2 )
& ( ( concat_v @ ( replicate_list_v @ N2 @ Zs2 ) )
= ( append_v @ Xs @ Ys ) ) ) ) ) ) ).
% comm_append_is_replicate
thf(fact_793_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_794_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_795_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_796_list__update__nonempty,axiom,
! [Xs: list_v,K: nat,X: v] :
( ( ( list_update_v @ Xs @ K @ X )
= nil_v )
= ( Xs = nil_v ) ) ).
% list_update_nonempty
thf(fact_797_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_798_length__list__update,axiom,
! [Xs: list_nat,I: nat,X: nat] :
( ( size_size_list_nat @ ( list_update_nat @ Xs @ I @ X ) )
= ( size_size_list_nat @ Xs ) ) ).
% length_list_update
thf(fact_799_nth__list__update__neq,axiom,
! [I: nat,J: nat,Xs: list_nat,X: nat] :
( ( I != J )
=> ( ( nth_nat @ ( list_update_nat @ Xs @ I @ X ) @ J )
= ( nth_nat @ Xs @ J ) ) ) ).
% nth_list_update_neq
thf(fact_800_list__update__id,axiom,
! [Xs: list_nat,I: nat] :
( ( list_update_nat @ Xs @ I @ ( nth_nat @ Xs @ I ) )
= Xs ) ).
% list_update_id
thf(fact_801_list__update__beyond,axiom,
! [Xs: list_nat,I: nat,X: nat] :
( ( ord_less_eq_nat @ ( size_size_list_nat @ Xs ) @ I )
=> ( ( list_update_nat @ Xs @ I @ X )
= Xs ) ) ).
% list_update_beyond
thf(fact_802_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_803_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_804_list__update__length,axiom,
! [Xs: list_v,X: v,Ys: list_v,Y: v] :
( ( list_update_v @ ( append_v @ Xs @ ( cons_v @ X @ Ys ) ) @ ( size_size_list_v @ Xs ) @ Y )
= ( append_v @ Xs @ ( cons_v @ Y @ Ys ) ) ) ).
% list_update_length
thf(fact_805_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_806_nth__list__update__eq,axiom,
! [I: nat,Xs: list_nat,X: nat] :
( ( ord_less_nat @ I @ ( size_size_list_nat @ Xs ) )
=> ( ( nth_nat @ ( list_update_nat @ Xs @ I @ X ) @ I )
= X ) ) ).
% nth_list_update_eq
thf(fact_807_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_808_set__swap,axiom,
! [I: nat,Xs: list_nat,J: nat] :
( ( ord_less_nat @ I @ ( size_size_list_nat @ Xs ) )
=> ( ( ord_less_nat @ J @ ( size_size_list_nat @ Xs ) )
=> ( ( set_nat2 @ ( list_update_nat @ ( list_update_nat @ Xs @ I @ ( nth_nat @ Xs @ J ) ) @ J @ ( nth_nat @ Xs @ I ) ) )
= ( set_nat2 @ Xs ) ) ) ) ).
% set_swap
thf(fact_809_set__update__subsetI,axiom,
! [Xs: list_nat,A4: set_nat,X: nat,I: nat] :
( ( ord_less_eq_set_nat @ ( set_nat2 @ Xs ) @ A4 )
=> ( ( member_nat2 @ X @ A4 )
=> ( ord_less_eq_set_nat @ ( set_nat2 @ ( list_update_nat @ Xs @ I @ X ) ) @ A4 ) ) ) ).
% set_update_subsetI
thf(fact_810_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_811_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_812_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_813_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_814_one__reorient,axiom,
! [X: nat] :
( ( one_one_nat = X )
= ( X = one_one_nat ) ) ).
% one_reorient
thf(fact_815_sorted__wrt__mono__rel,axiom,
! [Xs: list_nat,P: nat > nat > $o,Q: nat > nat > $o] :
( ! [X2: nat,Y3: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Xs ) )
=> ( ( member_nat2 @ Y3 @ ( set_nat2 @ Xs ) )
=> ( ( P @ X2 @ Y3 )
=> ( Q @ X2 @ Y3 ) ) ) )
=> ( ( sorted_wrt_nat @ P @ Xs )
=> ( sorted_wrt_nat @ Q @ Xs ) ) ) ).
% sorted_wrt_mono_rel
thf(fact_816_sorted__wrt_Osimps_I1_J,axiom,
! [P: v > v > $o] : ( sorted_wrt_v @ P @ nil_v ) ).
% sorted_wrt.simps(1)
thf(fact_817_sorted__wrt_Osimps_I1_J,axiom,
! [P: nat > nat > $o] : ( sorted_wrt_nat @ P @ nil_nat ) ).
% sorted_wrt.simps(1)
thf(fact_818_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_819_list__update_Osimps_I1_J,axiom,
! [I: nat,V3: v] :
( ( list_update_v @ nil_v @ I @ V3 )
= nil_v ) ).
% list_update.simps(1)
thf(fact_820_list__update_Osimps_I1_J,axiom,
! [I: nat,V3: nat] :
( ( list_update_nat @ nil_nat @ I @ V3 )
= nil_nat ) ).
% list_update.simps(1)
thf(fact_821_list__update__code_I1_J,axiom,
! [I: nat,Y: v] :
( ( list_update_v @ nil_v @ I @ Y )
= nil_v ) ).
% list_update_code(1)
thf(fact_822_list__update__code_I1_J,axiom,
! [I: nat,Y: nat] :
( ( list_update_nat @ nil_nat @ I @ Y )
= nil_nat ) ).
% list_update_code(1)
thf(fact_823_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_824_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_825_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_826_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_827_sorted0,axiom,
sorted_wrt_nat @ ord_less_eq_nat @ nil_nat ).
% sorted0
thf(fact_828_strict__sorted__simps_I1_J,axiom,
sorted_wrt_nat @ ord_less_nat @ nil_nat ).
% strict_sorted_simps(1)
thf(fact_829_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_830_sorted__wrt1,axiom,
! [P: v > v > $o,X: v] : ( sorted_wrt_v @ P @ ( cons_v @ X @ nil_v ) ) ).
% sorted_wrt1
thf(fact_831_sorted__wrt1,axiom,
! [P: nat > nat > $o,X: nat] : ( sorted_wrt_nat @ P @ ( cons_nat @ X @ nil_nat ) ) ).
% sorted_wrt1
thf(fact_832_sorted__wrt__less__idx,axiom,
! [Ns: list_nat,I: nat] :
( ( sorted_wrt_nat @ ord_less_nat @ Ns )
=> ( ( ord_less_nat @ I @ ( size_size_list_nat @ Ns ) )
=> ( ord_less_eq_nat @ I @ ( nth_nat @ Ns @ I ) ) ) ) ).
% sorted_wrt_less_idx
thf(fact_833_sorted__wrt__append,axiom,
! [P: v > v > $o,Xs: list_v,Ys: list_v] :
( ( sorted_wrt_v @ P @ ( append_v @ Xs @ Ys ) )
= ( ( sorted_wrt_v @ P @ Xs )
& ( sorted_wrt_v @ P @ Ys )
& ! [X3: v] :
( ( member_v2 @ X3 @ ( set_v2 @ Xs ) )
=> ! [Y2: v] :
( ( member_v2 @ Y2 @ ( set_v2 @ Ys ) )
=> ( P @ X3 @ Y2 ) ) ) ) ) ).
% sorted_wrt_append
thf(fact_834_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 )
& ! [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ Xs ) )
=> ! [Y2: nat] :
( ( member_nat2 @ Y2 @ ( set_nat2 @ Ys ) )
=> ( P @ X3 @ Y2 ) ) ) ) ) ).
% sorted_wrt_append
thf(fact_835_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_836_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_837_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_838_sorted__replicate,axiom,
! [N: nat,X: nat] : ( sorted_wrt_nat @ ord_less_eq_nat @ ( replicate_nat @ N @ X ) ) ).
% sorted_replicate
thf(fact_839_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_840_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_841_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_842_successively__iff__sorted__wrt__strong,axiom,
! [Xs: list_nat,P: nat > nat > $o] :
( ! [X2: nat,Y3: nat,Z3: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Xs ) )
=> ( ( member_nat2 @ Y3 @ ( set_nat2 @ Xs ) )
=> ( ( member_nat2 @ Z3 @ ( set_nat2 @ Xs ) )
=> ( ( P @ X2 @ Y3 )
=> ( ( P @ Y3 @ Z3 )
=> ( P @ X2 @ Z3 ) ) ) ) ) )
=> ( ( successively_nat @ P @ Xs )
= ( sorted_wrt_nat @ P @ Xs ) ) ) ).
% successively_iff_sorted_wrt_strong
thf(fact_843_list__update__code_I3_J,axiom,
! [X: nat,Xs: list_nat,I: nat,Y: nat] :
( ( list_update_nat @ ( cons_nat @ X @ Xs ) @ ( suc @ I ) @ Y )
= ( cons_nat @ X @ ( list_update_nat @ Xs @ I @ Y ) ) ) ).
% list_update_code(3)
thf(fact_844_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_845_sorted1,axiom,
! [X: nat] : ( sorted_wrt_nat @ ord_less_eq_nat @ ( cons_nat @ X @ nil_nat ) ) ).
% sorted1
thf(fact_846_sorted__simps_I2_J,axiom,
! [X: nat,Ys: list_nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ ( cons_nat @ X @ Ys ) )
= ( ! [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ Ys ) )
=> ( ord_less_eq_nat @ X @ X3 ) )
& ( sorted_wrt_nat @ ord_less_eq_nat @ Ys ) ) ) ).
% sorted_simps(2)
thf(fact_847_strict__sorted__simps_I2_J,axiom,
! [X: nat,Ys: list_nat] :
( ( sorted_wrt_nat @ ord_less_nat @ ( cons_nat @ X @ Ys ) )
= ( ! [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ Ys ) )
=> ( ord_less_nat @ X @ X3 ) )
& ( sorted_wrt_nat @ ord_less_nat @ Ys ) ) ) ).
% strict_sorted_simps(2)
thf(fact_848_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 )
& ! [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ Xs ) )
=> ! [Y2: nat] :
( ( member_nat2 @ Y2 @ ( set_nat2 @ Ys ) )
=> ( ord_less_eq_nat @ X3 @ Y2 ) ) ) ) ) ).
% sorted_append
thf(fact_849_sorted__wrt__nth__less,axiom,
! [P: nat > nat > $o,Xs: list_nat,I: nat,J: nat] :
( ( sorted_wrt_nat @ P @ Xs )
=> ( ( ord_less_nat @ I @ J )
=> ( ( ord_less_nat @ J @ ( size_size_list_nat @ Xs ) )
=> ( P @ ( nth_nat @ Xs @ I ) @ ( nth_nat @ Xs @ J ) ) ) ) ) ).
% sorted_wrt_nth_less
thf(fact_850_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_851_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_852_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_853_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_854_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_855_list__update__append1,axiom,
! [I: nat,Xs: list_v,Ys: list_v,X: v] :
( ( ord_less_nat @ I @ ( size_size_list_v @ Xs ) )
=> ( ( list_update_v @ ( append_v @ Xs @ Ys ) @ I @ X )
= ( append_v @ ( list_update_v @ Xs @ I @ X ) @ Ys ) ) ) ).
% list_update_append1
thf(fact_856_list__update__append1,axiom,
! [I: nat,Xs: list_nat,Ys: list_nat,X: nat] :
( ( ord_less_nat @ I @ ( size_size_list_nat @ Xs ) )
=> ( ( list_update_nat @ ( append_nat @ Xs @ Ys ) @ I @ X )
= ( append_nat @ ( list_update_nat @ Xs @ I @ X ) @ Ys ) ) ) ).
% list_update_append1
thf(fact_857_nth__list__update,axiom,
! [I: nat,Xs: list_nat,J: nat,X: nat] :
( ( ord_less_nat @ I @ ( size_size_list_nat @ Xs ) )
=> ( ( ( I = J )
=> ( ( nth_nat @ ( list_update_nat @ Xs @ I @ X ) @ J )
= X ) )
& ( ( I != J )
=> ( ( nth_nat @ ( list_update_nat @ Xs @ I @ X ) @ J )
= ( nth_nat @ Xs @ J ) ) ) ) ) ).
% nth_list_update
thf(fact_858_list__update__same__conv,axiom,
! [I: nat,Xs: list_nat,X: nat] :
( ( ord_less_nat @ I @ ( size_size_list_nat @ Xs ) )
=> ( ( ( list_update_nat @ Xs @ I @ X )
= Xs )
= ( ( nth_nat @ Xs @ I )
= X ) ) ) ).
% list_update_same_conv
thf(fact_859_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_860_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_861_sorted__nth__mono,axiom,
! [Xs: list_nat,I: nat,J: nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ Xs )
=> ( ( ord_less_eq_nat @ I @ J )
=> ( ( ord_less_nat @ J @ ( size_size_list_nat @ Xs ) )
=> ( ord_less_eq_nat @ ( nth_nat @ Xs @ I ) @ ( nth_nat @ Xs @ J ) ) ) ) ) ).
% sorted_nth_mono
thf(fact_862_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_863_rotate1__fixpoint__card,axiom,
! [Xs: list_v] :
( ( ( rotate1_v @ Xs )
= Xs )
=> ( ( Xs = nil_v )
| ( ( finite_card_v @ ( set_v2 @ Xs ) )
= one_one_nat ) ) ) ).
% rotate1_fixpoint_card
thf(fact_864_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_865_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_866_sorted__rev__nth__mono,axiom,
! [Xs: list_nat,I: nat,J: nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ ( rev_nat @ Xs ) )
=> ( ( ord_less_eq_nat @ I @ J )
=> ( ( ord_less_nat @ J @ ( size_size_list_nat @ Xs ) )
=> ( ord_less_eq_nat @ ( nth_nat @ Xs @ J ) @ ( nth_nat @ Xs @ I ) ) ) ) ) ).
% sorted_rev_nth_mono
thf(fact_867_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_868_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_869_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_870_last__list__update,axiom,
! [Xs: list_v,K: nat,X: v] :
( ( Xs != nil_v )
=> ( ( ( K
= ( minus_minus_nat @ ( size_size_list_v @ Xs ) @ one_one_nat ) )
=> ( ( last_v @ ( list_update_v @ Xs @ K @ X ) )
= X ) )
& ( ( K
!= ( minus_minus_nat @ ( size_size_list_v @ Xs ) @ one_one_nat ) )
=> ( ( last_v @ ( list_update_v @ Xs @ K @ X ) )
= ( last_v @ Xs ) ) ) ) ) ).
% last_list_update
thf(fact_871_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_872_cancel__comm__monoid__add__class_Odiff__cancel,axiom,
! [A: nat] :
( ( minus_minus_nat @ A @ A )
= zero_zero_nat ) ).
% cancel_comm_monoid_add_class.diff_cancel
thf(fact_873_diff__zero,axiom,
! [A: nat] :
( ( minus_minus_nat @ A @ zero_zero_nat )
= A ) ).
% diff_zero
thf(fact_874_zero__diff,axiom,
! [A: nat] :
( ( minus_minus_nat @ zero_zero_nat @ A )
= zero_zero_nat ) ).
% zero_diff
thf(fact_875_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_876_drop__replicate,axiom,
! [I: nat,K: nat,X: nat] :
( ( drop_nat @ I @ ( replicate_nat @ K @ X ) )
= ( replicate_nat @ ( minus_minus_nat @ K @ I ) @ X ) ) ).
% drop_replicate
thf(fact_877_take__append,axiom,
! [N: nat,Xs: list_v,Ys: list_v] :
( ( take_v @ N @ ( append_v @ Xs @ Ys ) )
= ( append_v @ ( take_v @ N @ Xs ) @ ( take_v @ ( minus_minus_nat @ N @ ( size_size_list_v @ Xs ) ) @ Ys ) ) ) ).
% take_append
thf(fact_878_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_879_drop__append,axiom,
! [N: nat,Xs: list_v,Ys: list_v] :
( ( drop_v @ N @ ( append_v @ Xs @ Ys ) )
= ( append_v @ ( drop_v @ N @ Xs ) @ ( drop_v @ ( minus_minus_nat @ N @ ( size_size_list_v @ Xs ) ) @ Ys ) ) ) ).
% drop_append
thf(fact_880_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_881_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_882_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_883_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_884_diff__right__commute,axiom,
! [A: nat,C: nat,B: nat] :
( ( minus_minus_nat @ ( minus_minus_nat @ A @ C ) @ B )
= ( minus_minus_nat @ ( minus_minus_nat @ A @ B ) @ C ) ) ).
% diff_right_commute
thf(fact_885_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_886_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_887_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_888_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_889_nth__append,axiom,
! [N: nat,Xs: list_v,Ys: list_v] :
( ( ( ord_less_nat @ N @ ( size_size_list_v @ Xs ) )
=> ( ( nth_v @ ( append_v @ Xs @ Ys ) @ N )
= ( nth_v @ Xs @ N ) ) )
& ( ~ ( ord_less_nat @ N @ ( size_size_list_v @ Xs ) )
=> ( ( nth_v @ ( append_v @ Xs @ Ys ) @ N )
= ( nth_v @ Ys @ ( minus_minus_nat @ N @ ( size_size_list_v @ Xs ) ) ) ) ) ) ).
% nth_append
thf(fact_890_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_891_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_892_list__update__append,axiom,
! [N: nat,Xs: list_v,Ys: list_v,X: v] :
( ( ( ord_less_nat @ N @ ( size_size_list_v @ Xs ) )
=> ( ( list_update_v @ ( append_v @ Xs @ Ys ) @ N @ X )
= ( append_v @ ( list_update_v @ Xs @ N @ X ) @ Ys ) ) )
& ( ~ ( ord_less_nat @ N @ ( size_size_list_v @ Xs ) )
=> ( ( list_update_v @ ( append_v @ Xs @ Ys ) @ N @ X )
= ( append_v @ Xs @ ( list_update_v @ Ys @ ( minus_minus_nat @ N @ ( size_size_list_v @ Xs ) ) @ X ) ) ) ) ) ).
% list_update_append
thf(fact_893_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_894_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_895_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_896_rev__drop,axiom,
! [I: nat,Xs: list_nat] :
( ( rev_nat @ ( drop_nat @ I @ Xs ) )
= ( take_nat @ ( minus_minus_nat @ ( size_size_list_nat @ Xs ) @ I ) @ ( rev_nat @ Xs ) ) ) ).
% rev_drop
thf(fact_897_rev__take,axiom,
! [I: nat,Xs: list_nat] :
( ( rev_nat @ ( take_nat @ I @ Xs ) )
= ( drop_nat @ ( minus_minus_nat @ ( size_size_list_nat @ Xs ) @ I ) @ ( rev_nat @ Xs ) ) ) ).
% rev_take
thf(fact_898_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_899_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_900_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_901_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_902_take__Cons_H,axiom,
! [N: nat,X: v,Xs: list_v] :
( ( ( N = zero_zero_nat )
=> ( ( take_v @ N @ ( cons_v @ X @ Xs ) )
= nil_v ) )
& ( ( N != zero_zero_nat )
=> ( ( take_v @ N @ ( cons_v @ X @ Xs ) )
= ( cons_v @ X @ ( take_v @ ( minus_minus_nat @ N @ one_one_nat ) @ Xs ) ) ) ) ) ).
% take_Cons'
thf(fact_903_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_904_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_905_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_906_last__conv__nth,axiom,
! [Xs: list_v] :
( ( Xs != nil_v )
=> ( ( last_v @ Xs )
= ( nth_v @ Xs @ ( minus_minus_nat @ ( size_size_list_v @ Xs ) @ one_one_nat ) ) ) ) ).
% last_conv_nth
thf(fact_907_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_908_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_909_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_910_drop__Cons__numeral,axiom,
! [V3: num,X: nat,Xs: list_nat] :
( ( drop_nat @ ( numeral_numeral_nat @ V3 ) @ ( cons_nat @ X @ Xs ) )
= ( drop_nat @ ( minus_minus_nat @ ( numeral_numeral_nat @ V3 ) @ one_one_nat ) @ Xs ) ) ).
% drop_Cons_numeral
thf(fact_911_nth__drop,axiom,
! [N: nat,Xs: list_nat,I: nat] :
( ( ord_less_eq_nat @ N @ ( size_size_list_nat @ Xs ) )
=> ( ( nth_nat @ ( drop_nat @ N @ Xs ) @ I )
= ( nth_nat @ Xs @ ( plus_plus_nat @ N @ I ) ) ) ) ).
% nth_drop
thf(fact_912_take__Cons__numeral,axiom,
! [V3: num,X: nat,Xs: list_nat] :
( ( take_nat @ ( numeral_numeral_nat @ V3 ) @ ( cons_nat @ X @ Xs ) )
= ( cons_nat @ X @ ( take_nat @ ( minus_minus_nat @ ( numeral_numeral_nat @ V3 ) @ one_one_nat ) @ Xs ) ) ) ).
% take_Cons_numeral
thf(fact_913_add__right__cancel,axiom,
! [B: nat,A: nat,C: nat] :
( ( ( plus_plus_nat @ B @ A )
= ( plus_plus_nat @ C @ A ) )
= ( B = C ) ) ).
% add_right_cancel
thf(fact_914_add__left__cancel,axiom,
! [A: nat,B: nat,C: nat] :
( ( ( plus_plus_nat @ A @ B )
= ( plus_plus_nat @ A @ C ) )
= ( B = C ) ) ).
% add_left_cancel
thf(fact_915_add__le__cancel__right,axiom,
! [A: nat,C: nat,B: nat] :
( ( ord_less_eq_nat @ ( plus_plus_nat @ A @ C ) @ ( plus_plus_nat @ B @ C ) )
= ( ord_less_eq_nat @ A @ B ) ) ).
% add_le_cancel_right
thf(fact_916_add__le__cancel__left,axiom,
! [C: nat,A: nat,B: nat] :
( ( ord_less_eq_nat @ ( plus_plus_nat @ C @ A ) @ ( plus_plus_nat @ C @ B ) )
= ( ord_less_eq_nat @ A @ B ) ) ).
% add_le_cancel_left
thf(fact_917_add_Oright__neutral,axiom,
! [A: nat] :
( ( plus_plus_nat @ A @ zero_zero_nat )
= A ) ).
% add.right_neutral
thf(fact_918_add__cancel__left__left,axiom,
! [B: nat,A: nat] :
( ( ( plus_plus_nat @ B @ A )
= A )
= ( B = zero_zero_nat ) ) ).
% add_cancel_left_left
thf(fact_919_add__cancel__left__right,axiom,
! [A: nat,B: nat] :
( ( ( plus_plus_nat @ A @ B )
= A )
= ( B = zero_zero_nat ) ) ).
% add_cancel_left_right
thf(fact_920_add__cancel__right__left,axiom,
! [A: nat,B: nat] :
( ( A
= ( plus_plus_nat @ B @ A ) )
= ( B = zero_zero_nat ) ) ).
% add_cancel_right_left
thf(fact_921_add__cancel__right__right,axiom,
! [A: nat,B: nat] :
( ( A
= ( plus_plus_nat @ A @ B ) )
= ( B = zero_zero_nat ) ) ).
% add_cancel_right_right
thf(fact_922_add__eq__0__iff__both__eq__0,axiom,
! [X: nat,Y: nat] :
( ( ( plus_plus_nat @ X @ Y )
= zero_zero_nat )
= ( ( X = zero_zero_nat )
& ( Y = zero_zero_nat ) ) ) ).
% add_eq_0_iff_both_eq_0
thf(fact_923_zero__eq__add__iff__both__eq__0,axiom,
! [X: nat,Y: nat] :
( ( zero_zero_nat
= ( plus_plus_nat @ X @ Y ) )
= ( ( X = zero_zero_nat )
& ( Y = zero_zero_nat ) ) ) ).
% zero_eq_add_iff_both_eq_0
thf(fact_924_add__0,axiom,
! [A: nat] :
( ( plus_plus_nat @ zero_zero_nat @ A )
= A ) ).
% add_0
thf(fact_925_add__less__cancel__left,axiom,
! [C: nat,A: nat,B: nat] :
( ( ord_less_nat @ ( plus_plus_nat @ C @ A ) @ ( plus_plus_nat @ C @ B ) )
= ( ord_less_nat @ A @ B ) ) ).
% add_less_cancel_left
thf(fact_926_add__less__cancel__right,axiom,
! [A: nat,C: nat,B: nat] :
( ( ord_less_nat @ ( plus_plus_nat @ A @ C ) @ ( plus_plus_nat @ B @ C ) )
= ( ord_less_nat @ A @ B ) ) ).
% add_less_cancel_right
thf(fact_927_add__diff__cancel__left,axiom,
! [C: nat,A: nat,B: nat] :
( ( minus_minus_nat @ ( plus_plus_nat @ C @ A ) @ ( plus_plus_nat @ C @ B ) )
= ( minus_minus_nat @ A @ B ) ) ).
% add_diff_cancel_left
thf(fact_928_add__diff__cancel__left_H,axiom,
! [A: nat,B: nat] :
( ( minus_minus_nat @ ( plus_plus_nat @ A @ B ) @ A )
= B ) ).
% add_diff_cancel_left'
thf(fact_929_add__diff__cancel__right,axiom,
! [A: nat,C: nat,B: nat] :
( ( minus_minus_nat @ ( plus_plus_nat @ A @ C ) @ ( plus_plus_nat @ B @ C ) )
= ( minus_minus_nat @ A @ B ) ) ).
% add_diff_cancel_right
thf(fact_930_add__diff__cancel__right_H,axiom,
! [A: nat,B: nat] :
( ( minus_minus_nat @ ( plus_plus_nat @ A @ B ) @ B )
= A ) ).
% add_diff_cancel_right'
thf(fact_931_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_932_add__le__same__cancel1,axiom,
! [B: nat,A: nat] :
( ( ord_less_eq_nat @ ( plus_plus_nat @ B @ A ) @ B )
= ( ord_less_eq_nat @ A @ zero_zero_nat ) ) ).
% add_le_same_cancel1
thf(fact_933_add__le__same__cancel2,axiom,
! [A: nat,B: nat] :
( ( ord_less_eq_nat @ ( plus_plus_nat @ A @ B ) @ B )
= ( ord_less_eq_nat @ A @ zero_zero_nat ) ) ).
% add_le_same_cancel2
thf(fact_934_le__add__same__cancel1,axiom,
! [A: nat,B: nat] :
( ( ord_less_eq_nat @ A @ ( plus_plus_nat @ A @ B ) )
= ( ord_less_eq_nat @ zero_zero_nat @ B ) ) ).
% le_add_same_cancel1
thf(fact_935_le__add__same__cancel2,axiom,
! [A: nat,B: nat] :
( ( ord_less_eq_nat @ A @ ( plus_plus_nat @ B @ A ) )
= ( ord_less_eq_nat @ zero_zero_nat @ B ) ) ).
% le_add_same_cancel2
thf(fact_936_less__add__same__cancel2,axiom,
! [A: nat,B: nat] :
( ( ord_less_nat @ A @ ( plus_plus_nat @ B @ A ) )
= ( ord_less_nat @ zero_zero_nat @ B ) ) ).
% less_add_same_cancel2
thf(fact_937_less__add__same__cancel1,axiom,
! [A: nat,B: nat] :
( ( ord_less_nat @ A @ ( plus_plus_nat @ A @ B ) )
= ( ord_less_nat @ zero_zero_nat @ B ) ) ).
% less_add_same_cancel1
thf(fact_938_add__less__same__cancel2,axiom,
! [A: nat,B: nat] :
( ( ord_less_nat @ ( plus_plus_nat @ A @ B ) @ B )
= ( ord_less_nat @ A @ zero_zero_nat ) ) ).
% add_less_same_cancel2
thf(fact_939_add__less__same__cancel1,axiom,
! [B: nat,A: nat] :
( ( ord_less_nat @ ( plus_plus_nat @ B @ A ) @ B )
= ( ord_less_nat @ A @ zero_zero_nat ) ) ).
% add_less_same_cancel1
thf(fact_940_diff__add__zero,axiom,
! [A: nat,B: nat] :
( ( minus_minus_nat @ A @ ( plus_plus_nat @ A @ B ) )
= zero_zero_nat ) ).
% diff_add_zero
thf(fact_941_length__append,axiom,
! [Xs: list_v,Ys: list_v] :
( ( size_size_list_v @ ( append_v @ Xs @ Ys ) )
= ( plus_plus_nat @ ( size_size_list_v @ Xs ) @ ( size_size_list_v @ Ys ) ) ) ).
% length_append
thf(fact_942_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_943_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_944_nth__append__length__plus,axiom,
! [Xs: list_v,Ys: list_v,N: nat] :
( ( nth_v @ ( append_v @ Xs @ Ys ) @ ( plus_plus_nat @ ( size_size_list_v @ Xs ) @ N ) )
= ( nth_v @ Ys @ N ) ) ).
% nth_append_length_plus
thf(fact_945_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_946_nth__Cons__numeral,axiom,
! [X: nat,Xs: list_nat,V3: num] :
( ( nth_nat @ ( cons_nat @ X @ Xs ) @ ( numeral_numeral_nat @ V3 ) )
= ( nth_nat @ Xs @ ( minus_minus_nat @ ( numeral_numeral_nat @ V3 ) @ one_one_nat ) ) ) ).
% nth_Cons_numeral
thf(fact_947_add__implies__diff,axiom,
! [C: nat,B: nat,A: nat] :
( ( ( plus_plus_nat @ C @ B )
= A )
=> ( C
= ( minus_minus_nat @ A @ B ) ) ) ).
% add_implies_diff
thf(fact_948_max__add__distrib__left,axiom,
! [X: nat,Y: nat,Z: nat] :
( ( plus_plus_nat @ ( ord_max_nat @ X @ Y ) @ Z )
= ( ord_max_nat @ ( plus_plus_nat @ X @ Z ) @ ( plus_plus_nat @ Y @ Z ) ) ) ).
% max_add_distrib_left
thf(fact_949_max__add__distrib__right,axiom,
! [X: nat,Y: nat,Z: nat] :
( ( plus_plus_nat @ X @ ( ord_max_nat @ Y @ Z ) )
= ( ord_max_nat @ ( plus_plus_nat @ X @ Y ) @ ( plus_plus_nat @ X @ Z ) ) ) ).
% max_add_distrib_right
thf(fact_950_diff__diff__eq,axiom,
! [A: nat,B: nat,C: nat] :
( ( minus_minus_nat @ ( minus_minus_nat @ A @ B ) @ C )
= ( minus_minus_nat @ A @ ( plus_plus_nat @ B @ C ) ) ) ).
% diff_diff_eq
thf(fact_951_add__mono__thms__linordered__field_I5_J,axiom,
! [I: nat,J: nat,K: nat,L2: nat] :
( ( ( ord_less_nat @ I @ J )
& ( ord_less_nat @ K @ L2 ) )
=> ( ord_less_nat @ ( plus_plus_nat @ I @ K ) @ ( plus_plus_nat @ J @ L2 ) ) ) ).
% add_mono_thms_linordered_field(5)
thf(fact_952_add__mono__thms__linordered__field_I2_J,axiom,
! [I: nat,J: nat,K: nat,L2: nat] :
( ( ( I = J )
& ( ord_less_nat @ K @ L2 ) )
=> ( ord_less_nat @ ( plus_plus_nat @ I @ K ) @ ( plus_plus_nat @ J @ L2 ) ) ) ).
% add_mono_thms_linordered_field(2)
thf(fact_953_add__mono__thms__linordered__field_I1_J,axiom,
! [I: nat,J: nat,K: nat,L2: nat] :
( ( ( ord_less_nat @ I @ J )
& ( K = L2 ) )
=> ( ord_less_nat @ ( plus_plus_nat @ I @ K ) @ ( plus_plus_nat @ J @ L2 ) ) ) ).
% add_mono_thms_linordered_field(1)
thf(fact_954_add__strict__mono,axiom,
! [A: nat,B: nat,C: nat,D: nat] :
( ( ord_less_nat @ A @ B )
=> ( ( ord_less_nat @ C @ D )
=> ( ord_less_nat @ ( plus_plus_nat @ A @ C ) @ ( plus_plus_nat @ B @ D ) ) ) ) ).
% add_strict_mono
thf(fact_955_add__strict__left__mono,axiom,
! [A: nat,B: nat,C: nat] :
( ( ord_less_nat @ A @ B )
=> ( ord_less_nat @ ( plus_plus_nat @ C @ A ) @ ( plus_plus_nat @ C @ B ) ) ) ).
% add_strict_left_mono
thf(fact_956_add__strict__right__mono,axiom,
! [A: nat,B: nat,C: nat] :
( ( ord_less_nat @ A @ B )
=> ( ord_less_nat @ ( plus_plus_nat @ A @ C ) @ ( plus_plus_nat @ B @ C ) ) ) ).
% add_strict_right_mono
thf(fact_957_add__less__imp__less__left,axiom,
! [C: nat,A: nat,B: nat] :
( ( ord_less_nat @ ( plus_plus_nat @ C @ A ) @ ( plus_plus_nat @ C @ B ) )
=> ( ord_less_nat @ A @ B ) ) ).
% add_less_imp_less_left
thf(fact_958_add__less__imp__less__right,axiom,
! [A: nat,C: nat,B: nat] :
( ( ord_less_nat @ ( plus_plus_nat @ A @ C ) @ ( plus_plus_nat @ B @ C ) )
=> ( ord_less_nat @ A @ B ) ) ).
% add_less_imp_less_right
thf(fact_959_add__right__imp__eq,axiom,
! [B: nat,A: nat,C: nat] :
( ( ( plus_plus_nat @ B @ A )
= ( plus_plus_nat @ C @ A ) )
=> ( B = C ) ) ).
% add_right_imp_eq
thf(fact_960_add__left__imp__eq,axiom,
! [A: nat,B: nat,C: nat] :
( ( ( plus_plus_nat @ A @ B )
= ( plus_plus_nat @ A @ C ) )
=> ( B = C ) ) ).
% add_left_imp_eq
thf(fact_961_add_Oleft__commute,axiom,
! [B: nat,A: nat,C: nat] :
( ( plus_plus_nat @ B @ ( plus_plus_nat @ A @ C ) )
= ( plus_plus_nat @ A @ ( plus_plus_nat @ B @ C ) ) ) ).
% add.left_commute
thf(fact_962_add_Ocommute,axiom,
( plus_plus_nat
= ( ^ [A5: nat,B2: nat] : ( plus_plus_nat @ B2 @ A5 ) ) ) ).
% add.commute
thf(fact_963_add_Oassoc,axiom,
! [A: nat,B: nat,C: nat] :
( ( plus_plus_nat @ ( plus_plus_nat @ A @ B ) @ C )
= ( plus_plus_nat @ A @ ( plus_plus_nat @ B @ C ) ) ) ).
% add.assoc
thf(fact_964_group__cancel_Oadd2,axiom,
! [B3: nat,K: nat,B: nat,A: nat] :
( ( B3
= ( plus_plus_nat @ K @ B ) )
=> ( ( plus_plus_nat @ A @ B3 )
= ( plus_plus_nat @ K @ ( plus_plus_nat @ A @ B ) ) ) ) ).
% group_cancel.add2
thf(fact_965_group__cancel_Oadd1,axiom,
! [A4: nat,K: nat,A: nat,B: nat] :
( ( A4
= ( plus_plus_nat @ K @ A ) )
=> ( ( plus_plus_nat @ A4 @ B )
= ( plus_plus_nat @ K @ ( plus_plus_nat @ A @ B ) ) ) ) ).
% group_cancel.add1
thf(fact_966_add__mono__thms__linordered__semiring_I4_J,axiom,
! [I: nat,J: nat,K: nat,L2: nat] :
( ( ( I = J )
& ( K = L2 ) )
=> ( ( plus_plus_nat @ I @ K )
= ( plus_plus_nat @ J @ L2 ) ) ) ).
% add_mono_thms_linordered_semiring(4)
thf(fact_967_ab__semigroup__add__class_Oadd__ac_I1_J,axiom,
! [A: nat,B: nat,C: nat] :
( ( plus_plus_nat @ ( plus_plus_nat @ A @ B ) @ C )
= ( plus_plus_nat @ A @ ( plus_plus_nat @ B @ C ) ) ) ).
% ab_semigroup_add_class.add_ac(1)
thf(fact_968_add_Ocomm__neutral,axiom,
! [A: nat] :
( ( plus_plus_nat @ A @ zero_zero_nat )
= A ) ).
% add.comm_neutral
thf(fact_969_comm__monoid__add__class_Oadd__0,axiom,
! [A: nat] :
( ( plus_plus_nat @ zero_zero_nat @ A )
= A ) ).
% comm_monoid_add_class.add_0
thf(fact_970_add_Osemigroup__axioms,axiom,
semigroup_nat @ plus_plus_nat ).
% add.semigroup_axioms
thf(fact_971_add__mono__thms__linordered__semiring_I3_J,axiom,
! [I: nat,J: nat,K: nat,L2: nat] :
( ( ( ord_less_eq_nat @ I @ J )
& ( K = L2 ) )
=> ( ord_less_eq_nat @ ( plus_plus_nat @ I @ K ) @ ( plus_plus_nat @ J @ L2 ) ) ) ).
% add_mono_thms_linordered_semiring(3)
thf(fact_972_add__mono__thms__linordered__semiring_I2_J,axiom,
! [I: nat,J: nat,K: nat,L2: nat] :
( ( ( I = J )
& ( ord_less_eq_nat @ K @ L2 ) )
=> ( ord_less_eq_nat @ ( plus_plus_nat @ I @ K ) @ ( plus_plus_nat @ J @ L2 ) ) ) ).
% add_mono_thms_linordered_semiring(2)
thf(fact_973_add__mono__thms__linordered__semiring_I1_J,axiom,
! [I: nat,J: nat,K: nat,L2: nat] :
( ( ( ord_less_eq_nat @ I @ J )
& ( ord_less_eq_nat @ K @ L2 ) )
=> ( ord_less_eq_nat @ ( plus_plus_nat @ I @ K ) @ ( plus_plus_nat @ J @ L2 ) ) ) ).
% add_mono_thms_linordered_semiring(1)
thf(fact_974_add__mono,axiom,
! [A: nat,B: nat,C: nat,D: nat] :
( ( ord_less_eq_nat @ A @ B )
=> ( ( ord_less_eq_nat @ C @ D )
=> ( ord_less_eq_nat @ ( plus_plus_nat @ A @ C ) @ ( plus_plus_nat @ B @ D ) ) ) ) ).
% add_mono
thf(fact_975_add__left__mono,axiom,
! [A: nat,B: nat,C: nat] :
( ( ord_less_eq_nat @ A @ B )
=> ( ord_less_eq_nat @ ( plus_plus_nat @ C @ A ) @ ( plus_plus_nat @ C @ B ) ) ) ).
% add_left_mono
thf(fact_976_less__eqE,axiom,
! [A: nat,B: nat] :
( ( ord_less_eq_nat @ A @ B )
=> ~ ! [C2: nat] :
( B
!= ( plus_plus_nat @ A @ C2 ) ) ) ).
% less_eqE
thf(fact_977_add__right__mono,axiom,
! [A: nat,B: nat,C: nat] :
( ( ord_less_eq_nat @ A @ B )
=> ( ord_less_eq_nat @ ( plus_plus_nat @ A @ C ) @ ( plus_plus_nat @ B @ C ) ) ) ).
% add_right_mono
thf(fact_978_le__iff__add,axiom,
( ord_less_eq_nat
= ( ^ [A5: nat,B2: nat] :
? [C3: nat] :
( B2
= ( plus_plus_nat @ A5 @ C3 ) ) ) ) ).
% le_iff_add
thf(fact_979_add__le__imp__le__left,axiom,
! [C: nat,A: nat,B: nat] :
( ( ord_less_eq_nat @ ( plus_plus_nat @ C @ A ) @ ( plus_plus_nat @ C @ B ) )
=> ( ord_less_eq_nat @ A @ B ) ) ).
% add_le_imp_le_left
thf(fact_980_add__le__imp__le__right,axiom,
! [A: nat,C: nat,B: nat] :
( ( ord_less_eq_nat @ ( plus_plus_nat @ A @ C ) @ ( plus_plus_nat @ B @ C ) )
=> ( ord_less_eq_nat @ A @ B ) ) ).
% add_le_imp_le_right
thf(fact_981_add__decreasing,axiom,
! [A: nat,C: nat,B: nat] :
( ( ord_less_eq_nat @ A @ zero_zero_nat )
=> ( ( ord_less_eq_nat @ C @ B )
=> ( ord_less_eq_nat @ ( plus_plus_nat @ A @ C ) @ B ) ) ) ).
% add_decreasing
thf(fact_982_add__increasing,axiom,
! [A: nat,B: nat,C: nat] :
( ( ord_less_eq_nat @ zero_zero_nat @ A )
=> ( ( ord_less_eq_nat @ B @ C )
=> ( ord_less_eq_nat @ B @ ( plus_plus_nat @ A @ C ) ) ) ) ).
% add_increasing
thf(fact_983_add__decreasing2,axiom,
! [C: nat,A: nat,B: nat] :
( ( ord_less_eq_nat @ C @ zero_zero_nat )
=> ( ( ord_less_eq_nat @ A @ B )
=> ( ord_less_eq_nat @ ( plus_plus_nat @ A @ C ) @ B ) ) ) ).
% add_decreasing2
thf(fact_984_add__increasing2,axiom,
! [C: nat,B: nat,A: nat] :
( ( ord_less_eq_nat @ zero_zero_nat @ C )
=> ( ( ord_less_eq_nat @ B @ A )
=> ( ord_less_eq_nat @ B @ ( plus_plus_nat @ A @ C ) ) ) ) ).
% add_increasing2
thf(fact_985_add__nonneg__nonneg,axiom,
! [A: nat,B: nat] :
( ( ord_less_eq_nat @ zero_zero_nat @ A )
=> ( ( ord_less_eq_nat @ zero_zero_nat @ B )
=> ( ord_less_eq_nat @ zero_zero_nat @ ( plus_plus_nat @ A @ B ) ) ) ) ).
% add_nonneg_nonneg
thf(fact_986_add__nonpos__nonpos,axiom,
! [A: nat,B: nat] :
( ( ord_less_eq_nat @ A @ zero_zero_nat )
=> ( ( ord_less_eq_nat @ B @ zero_zero_nat )
=> ( ord_less_eq_nat @ ( plus_plus_nat @ A @ B ) @ zero_zero_nat ) ) ) ).
% add_nonpos_nonpos
thf(fact_987_add__nonneg__eq__0__iff,axiom,
! [X: nat,Y: nat] :
( ( ord_less_eq_nat @ zero_zero_nat @ X )
=> ( ( ord_less_eq_nat @ zero_zero_nat @ Y )
=> ( ( ( plus_plus_nat @ X @ Y )
= zero_zero_nat )
= ( ( X = zero_zero_nat )
& ( Y = zero_zero_nat ) ) ) ) ) ).
% add_nonneg_eq_0_iff
thf(fact_988_add__nonpos__eq__0__iff,axiom,
! [X: nat,Y: nat] :
( ( ord_less_eq_nat @ X @ zero_zero_nat )
=> ( ( ord_less_eq_nat @ Y @ zero_zero_nat )
=> ( ( ( plus_plus_nat @ X @ Y )
= zero_zero_nat )
= ( ( X = zero_zero_nat )
& ( Y = zero_zero_nat ) ) ) ) ) ).
% add_nonpos_eq_0_iff
thf(fact_989_add__less__le__mono,axiom,
! [A: nat,B: nat,C: nat,D: nat] :
( ( ord_less_nat @ A @ B )
=> ( ( ord_less_eq_nat @ C @ D )
=> ( ord_less_nat @ ( plus_plus_nat @ A @ C ) @ ( plus_plus_nat @ B @ D ) ) ) ) ).
% add_less_le_mono
thf(fact_990_add__le__less__mono,axiom,
! [A: nat,B: nat,C: nat,D: nat] :
( ( ord_less_eq_nat @ A @ B )
=> ( ( ord_less_nat @ C @ D )
=> ( ord_less_nat @ ( plus_plus_nat @ A @ C ) @ ( plus_plus_nat @ B @ D ) ) ) ) ).
% add_le_less_mono
thf(fact_991_add__mono__thms__linordered__field_I3_J,axiom,
! [I: nat,J: nat,K: nat,L2: nat] :
( ( ( ord_less_nat @ I @ J )
& ( ord_less_eq_nat @ K @ L2 ) )
=> ( ord_less_nat @ ( plus_plus_nat @ I @ K ) @ ( plus_plus_nat @ J @ L2 ) ) ) ).
% add_mono_thms_linordered_field(3)
thf(fact_992_add__mono__thms__linordered__field_I4_J,axiom,
! [I: nat,J: nat,K: nat,L2: nat] :
( ( ( ord_less_eq_nat @ I @ J )
& ( ord_less_nat @ K @ L2 ) )
=> ( ord_less_nat @ ( plus_plus_nat @ I @ K ) @ ( plus_plus_nat @ J @ L2 ) ) ) ).
% add_mono_thms_linordered_field(4)
thf(fact_993_pos__add__strict,axiom,
! [A: nat,B: nat,C: nat] :
( ( ord_less_nat @ zero_zero_nat @ A )
=> ( ( ord_less_nat @ B @ C )
=> ( ord_less_nat @ B @ ( plus_plus_nat @ A @ C ) ) ) ) ).
% pos_add_strict
thf(fact_994_canonically__ordered__monoid__add__class_OlessE,axiom,
! [A: nat,B: nat] :
( ( ord_less_nat @ A @ B )
=> ~ ! [C2: nat] :
( ( B
= ( plus_plus_nat @ A @ C2 ) )
=> ( C2 = zero_zero_nat ) ) ) ).
% canonically_ordered_monoid_add_class.lessE
thf(fact_995_add__pos__pos,axiom,
! [A: nat,B: nat] :
( ( ord_less_nat @ zero_zero_nat @ A )
=> ( ( ord_less_nat @ zero_zero_nat @ B )
=> ( ord_less_nat @ zero_zero_nat @ ( plus_plus_nat @ A @ B ) ) ) ) ).
% add_pos_pos
thf(fact_996_add__neg__neg,axiom,
! [A: nat,B: nat] :
( ( ord_less_nat @ A @ zero_zero_nat )
=> ( ( ord_less_nat @ B @ zero_zero_nat )
=> ( ord_less_nat @ ( plus_plus_nat @ A @ B ) @ zero_zero_nat ) ) ) ).
% add_neg_neg
thf(fact_997_diff__add,axiom,
! [A: nat,B: nat] :
( ( ord_less_eq_nat @ A @ B )
=> ( ( plus_plus_nat @ ( minus_minus_nat @ B @ A ) @ A )
= B ) ) ).
% diff_add
thf(fact_998_le__add__diff,axiom,
! [A: nat,B: nat,C: nat] :
( ( ord_less_eq_nat @ A @ B )
=> ( ord_less_eq_nat @ C @ ( minus_minus_nat @ ( plus_plus_nat @ B @ C ) @ A ) ) ) ).
% le_add_diff
thf(fact_999_ordered__cancel__comm__monoid__diff__class_Ole__diff__conv2,axiom,
! [A: nat,B: nat,C: nat] :
( ( ord_less_eq_nat @ A @ B )
=> ( ( ord_less_eq_nat @ C @ ( minus_minus_nat @ B @ A ) )
= ( ord_less_eq_nat @ ( plus_plus_nat @ C @ A ) @ B ) ) ) ).
% ordered_cancel_comm_monoid_diff_class.le_diff_conv2
thf(fact_1000_ordered__cancel__comm__monoid__diff__class_Oadd__diff__assoc,axiom,
! [A: nat,B: nat,C: nat] :
( ( ord_less_eq_nat @ A @ B )
=> ( ( plus_plus_nat @ C @ ( minus_minus_nat @ B @ A ) )
= ( minus_minus_nat @ ( plus_plus_nat @ C @ B ) @ A ) ) ) ).
% ordered_cancel_comm_monoid_diff_class.add_diff_assoc
thf(fact_1001_ordered__cancel__comm__monoid__diff__class_Odiff__add__assoc,axiom,
! [A: nat,B: nat,C: nat] :
( ( ord_less_eq_nat @ A @ B )
=> ( ( minus_minus_nat @ ( plus_plus_nat @ C @ B ) @ A )
= ( plus_plus_nat @ C @ ( minus_minus_nat @ B @ A ) ) ) ) ).
% ordered_cancel_comm_monoid_diff_class.diff_add_assoc
thf(fact_1002_ordered__cancel__comm__monoid__diff__class_Oadd__diff__assoc2,axiom,
! [A: nat,B: nat,C: nat] :
( ( ord_less_eq_nat @ A @ B )
=> ( ( plus_plus_nat @ ( minus_minus_nat @ B @ A ) @ C )
= ( minus_minus_nat @ ( plus_plus_nat @ B @ C ) @ A ) ) ) ).
% ordered_cancel_comm_monoid_diff_class.add_diff_assoc2
thf(fact_1003_ordered__cancel__comm__monoid__diff__class_Odiff__add__assoc2,axiom,
! [A: nat,B: nat,C: nat] :
( ( ord_less_eq_nat @ A @ B )
=> ( ( minus_minus_nat @ ( plus_plus_nat @ B @ C ) @ A )
= ( plus_plus_nat @ ( minus_minus_nat @ B @ A ) @ C ) ) ) ).
% ordered_cancel_comm_monoid_diff_class.diff_add_assoc2
thf(fact_1004_ordered__cancel__comm__monoid__diff__class_Odiff__diff__right,axiom,
! [A: nat,B: nat,C: nat] :
( ( ord_less_eq_nat @ A @ B )
=> ( ( minus_minus_nat @ C @ ( minus_minus_nat @ B @ A ) )
= ( minus_minus_nat @ ( plus_plus_nat @ C @ A ) @ B ) ) ) ).
% ordered_cancel_comm_monoid_diff_class.diff_diff_right
thf(fact_1005_ordered__cancel__comm__monoid__diff__class_Oadd__diff__inverse,axiom,
! [A: nat,B: nat] :
( ( ord_less_eq_nat @ A @ B )
=> ( ( plus_plus_nat @ A @ ( minus_minus_nat @ B @ A ) )
= B ) ) ).
% ordered_cancel_comm_monoid_diff_class.add_diff_inverse
thf(fact_1006_ordered__cancel__comm__monoid__diff__class_Ole__imp__diff__is__add,axiom,
! [A: nat,B: nat,C: nat] :
( ( ord_less_eq_nat @ A @ B )
=> ( ( ord_less_eq_nat @ A @ B )
=> ( ( ( minus_minus_nat @ B @ A )
= C )
= ( B
= ( plus_plus_nat @ C @ A ) ) ) ) ) ).
% ordered_cancel_comm_monoid_diff_class.le_imp_diff_is_add
thf(fact_1007_replicate__add,axiom,
! [N: nat,M: nat,X: v] :
( ( replicate_v @ ( plus_plus_nat @ N @ M ) @ X )
= ( append_v @ ( replicate_v @ N @ X ) @ ( replicate_v @ M @ X ) ) ) ).
% replicate_add
thf(fact_1008_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_1009_add_Omonoid__axioms,axiom,
monoid_nat @ plus_plus_nat @ zero_zero_nat ).
% add.monoid_axioms
thf(fact_1010_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_1011_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_1012_add__neg__nonpos,axiom,
! [A: nat,B: nat] :
( ( ord_less_nat @ A @ zero_zero_nat )
=> ( ( ord_less_eq_nat @ B @ zero_zero_nat )
=> ( ord_less_nat @ ( plus_plus_nat @ A @ B ) @ zero_zero_nat ) ) ) ).
% add_neg_nonpos
thf(fact_1013_add__nonneg__pos,axiom,
! [A: nat,B: nat] :
( ( ord_less_eq_nat @ zero_zero_nat @ A )
=> ( ( ord_less_nat @ zero_zero_nat @ B )
=> ( ord_less_nat @ zero_zero_nat @ ( plus_plus_nat @ A @ B ) ) ) ) ).
% add_nonneg_pos
thf(fact_1014_add__nonpos__neg,axiom,
! [A: nat,B: nat] :
( ( ord_less_eq_nat @ A @ zero_zero_nat )
=> ( ( ord_less_nat @ B @ zero_zero_nat )
=> ( ord_less_nat @ ( plus_plus_nat @ A @ B ) @ zero_zero_nat ) ) ) ).
% add_nonpos_neg
thf(fact_1015_add__pos__nonneg,axiom,
! [A: nat,B: nat] :
( ( ord_less_nat @ zero_zero_nat @ A )
=> ( ( ord_less_eq_nat @ zero_zero_nat @ B )
=> ( ord_less_nat @ zero_zero_nat @ ( plus_plus_nat @ A @ B ) ) ) ) ).
% add_pos_nonneg
thf(fact_1016_add__strict__increasing,axiom,
! [A: nat,B: nat,C: nat] :
( ( ord_less_nat @ zero_zero_nat @ A )
=> ( ( ord_less_eq_nat @ B @ C )
=> ( ord_less_nat @ B @ ( plus_plus_nat @ A @ C ) ) ) ) ).
% add_strict_increasing
thf(fact_1017_add__strict__increasing2,axiom,
! [A: nat,B: nat,C: nat] :
( ( ord_less_eq_nat @ zero_zero_nat @ A )
=> ( ( ord_less_nat @ B @ C )
=> ( ord_less_nat @ B @ ( plus_plus_nat @ A @ C ) ) ) ) ).
% add_strict_increasing2
thf(fact_1018_take__add,axiom,
! [I: nat,J: nat,Xs: list_v] :
( ( take_v @ ( plus_plus_nat @ I @ J ) @ Xs )
= ( append_v @ ( take_v @ I @ Xs ) @ ( take_v @ J @ ( drop_v @ I @ Xs ) ) ) ) ).
% take_add
thf(fact_1019_take__add,axiom,
! [I: nat,J: nat,Xs: list_nat] :
( ( take_nat @ ( plus_plus_nat @ I @ J ) @ Xs )
= ( append_nat @ ( take_nat @ I @ Xs ) @ ( take_nat @ J @ ( drop_nat @ I @ Xs ) ) ) ) ).
% take_add
thf(fact_1020_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_1021_Nitpick_Osize__list__simp_I1_J,axiom,
( size_list_v
= ( ^ [F3: v > nat,Xs3: list_v] : ( if_nat @ ( Xs3 = nil_v ) @ zero_zero_nat @ ( suc @ ( plus_plus_nat @ ( F3 @ ( hd_v @ Xs3 ) ) @ ( size_list_v @ F3 @ ( tl_v @ Xs3 ) ) ) ) ) ) ) ).
% Nitpick.size_list_simp(1)
thf(fact_1022_Nitpick_Osize__list__simp_I1_J,axiom,
( size_list_nat
= ( ^ [F3: nat > nat,Xs3: list_nat] : ( if_nat @ ( Xs3 = nil_nat ) @ zero_zero_nat @ ( suc @ ( plus_plus_nat @ ( F3 @ ( hd_nat @ Xs3 ) ) @ ( size_list_nat @ F3 @ ( tl_nat @ Xs3 ) ) ) ) ) ) ) ).
% Nitpick.size_list_simp(1)
thf(fact_1023_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_1024_sorted__list__of__set_Ofinite__set__strict__sorted,axiom,
! [A4: set_nat] :
( ( finite_finite_nat @ A4 )
=> ~ ! [L3: list_nat] :
( ( sorted_wrt_nat @ ord_less_nat @ L3 )
=> ( ( ( set_nat2 @ L3 )
= A4 )
=> ( ( size_size_list_nat @ L3 )
!= ( finite_card_nat @ A4 ) ) ) ) ) ).
% sorted_list_of_set.finite_set_strict_sorted
thf(fact_1025_vfin,axiom,
finite_finite_v @ vertices ).
% vfin
thf(fact_1026_List_Ofinite__set,axiom,
! [Xs: list_nat] : ( finite_finite_nat @ ( set_nat2 @ Xs ) ) ).
% List.finite_set
thf(fact_1027_List_Ofinite__set,axiom,
! [Xs: list_v] : ( finite_finite_v @ ( set_v2 @ Xs ) ) ).
% List.finite_set
thf(fact_1028_size__list__map,axiom,
! [F: nat > nat,G: nat > nat,Xs: list_nat] :
( ( size_list_nat @ F @ ( map_nat_nat @ G @ Xs ) )
= ( size_list_nat @ ( comp_nat_nat_nat @ F @ G ) @ Xs ) ) ).
% size_list_map
thf(fact_1029_size__list__append,axiom,
! [F: v > nat,Xs: list_v,Ys: list_v] :
( ( size_list_v @ F @ ( append_v @ Xs @ Ys ) )
= ( plus_plus_nat @ ( size_list_v @ F @ Xs ) @ ( size_list_v @ F @ Ys ) ) ) ).
% size_list_append
thf(fact_1030_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_1031_finite__list,axiom,
! [A4: set_nat] :
( ( finite_finite_nat @ A4 )
=> ? [Xs2: list_nat] :
( ( set_nat2 @ Xs2 )
= A4 ) ) ).
% finite_list
thf(fact_1032_finite__list,axiom,
! [A4: set_v] :
( ( finite_finite_v @ A4 )
=> ? [Xs2: list_v] :
( ( set_v2 @ Xs2 )
= A4 ) ) ).
% finite_list
thf(fact_1033_list_Osize__gen__o__map,axiom,
! [F: nat > nat,G: nat > nat] :
( ( comp_l5285636708041795445st_nat @ ( size_list_nat @ F ) @ ( map_nat_nat @ G ) )
= ( size_list_nat @ ( comp_nat_nat_nat @ F @ G ) ) ) ).
% list.size_gen_o_map
thf(fact_1034_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_1035_list_Osize__gen_I1_J,axiom,
! [X: v > nat] :
( ( size_list_v @ X @ nil_v )
= zero_zero_nat ) ).
% list.size_gen(1)
thf(fact_1036_list_Osize__gen_I1_J,axiom,
! [X: nat > nat] :
( ( size_list_nat @ X @ nil_nat )
= zero_zero_nat ) ).
% list.size_gen(1)
thf(fact_1037_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_1038_size__list__pointwise,axiom,
! [Xs: list_nat,F: nat > nat,G: nat > nat] :
( ! [X2: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Xs ) )
=> ( ord_less_eq_nat @ ( F @ X2 ) @ ( G @ X2 ) ) )
=> ( ord_less_eq_nat @ ( size_list_nat @ F @ Xs ) @ ( size_list_nat @ G @ Xs ) ) ) ).
% size_list_pointwise
thf(fact_1039_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_1040_folding__insort__key_Ofinite__set__strict__sorted,axiom,
! [Less_eq: nat > nat > $o,Less: nat > nat > $o,S: set_v,F: v > nat,A4: set_v] :
( ( foldin508877545616633820_nat_v @ Less_eq @ Less @ S @ F )
=> ( ( ord_less_eq_set_v @ A4 @ S )
=> ( ( finite_finite_v @ A4 )
=> ~ ! [L3: list_v] :
( ( sorted_wrt_nat @ Less @ ( map_v_nat @ F @ L3 ) )
=> ( ( ( set_v2 @ L3 )
= A4 )
=> ( ( size_size_list_v @ L3 )
!= ( finite_card_v @ A4 ) ) ) ) ) ) ) ).
% folding_insort_key.finite_set_strict_sorted
thf(fact_1041_folding__insort__key_Ofinite__set__strict__sorted,axiom,
! [Less_eq: nat > nat > $o,Less: nat > nat > $o,S: set_nat,F: nat > nat,A4: set_nat] :
( ( foldin8133931898133206727at_nat @ Less_eq @ Less @ S @ F )
=> ( ( ord_less_eq_set_nat @ A4 @ S )
=> ( ( finite_finite_nat @ A4 )
=> ~ ! [L3: list_nat] :
( ( sorted_wrt_nat @ Less @ ( map_nat_nat @ F @ L3 ) )
=> ( ( ( set_nat2 @ L3 )
= A4 )
=> ( ( size_size_list_nat @ L3 )
!= ( finite_card_nat @ A4 ) ) ) ) ) ) ) ).
% folding_insort_key.finite_set_strict_sorted
thf(fact_1042_sorted__list__of__set_Osorted__key__list__of__set__unique,axiom,
! [A4: set_nat,L2: list_nat] :
( ( finite_finite_nat @ A4 )
=> ( ( ( sorted_wrt_nat @ ord_less_nat @ L2 )
& ( ( set_nat2 @ L2 )
= A4 )
& ( ( size_size_list_nat @ L2 )
= ( finite_card_nat @ A4 ) ) )
= ( ( linord2614967742042102400et_nat @ A4 )
= L2 ) ) ) ).
% sorted_list_of_set.sorted_key_list_of_set_unique
thf(fact_1043_sorted__list__of__set_Ofold__insort__key_Oinfinite,axiom,
! [A4: set_nat] :
( ~ ( finite_finite_nat @ A4 )
=> ( ( linord2614967742042102400et_nat @ A4 )
= nil_nat ) ) ).
% sorted_list_of_set.fold_insort_key.infinite
thf(fact_1044_sorted__list__of__set_Oset__sorted__key__list__of__set,axiom,
! [A4: set_nat] :
( ( finite_finite_nat @ A4 )
=> ( ( set_nat2 @ ( linord2614967742042102400et_nat @ A4 ) )
= A4 ) ) ).
% sorted_list_of_set.set_sorted_key_list_of_set
thf(fact_1045_sorted__list__of__set_Olength__sorted__key__list__of__set,axiom,
! [A4: set_nat] :
( ( size_size_list_nat @ ( linord2614967742042102400et_nat @ A4 ) )
= ( finite_card_nat @ A4 ) ) ).
% sorted_list_of_set.length_sorted_key_list_of_set
thf(fact_1046_sorted__list__of__set_Osorted__key__list__of__set__inject,axiom,
! [A4: set_nat,B3: set_nat] :
( ( ( linord2614967742042102400et_nat @ A4 )
= ( linord2614967742042102400et_nat @ B3 ) )
=> ( ( finite_finite_nat @ A4 )
=> ( ( finite_finite_nat @ B3 )
=> ( A4 = B3 ) ) ) ) ).
% sorted_list_of_set.sorted_key_list_of_set_inject
thf(fact_1047_sorted__list__of__set_Osorted__sorted__key__list__of__set,axiom,
! [A4: set_nat] : ( sorted_wrt_nat @ ord_less_eq_nat @ ( linord2614967742042102400et_nat @ A4 ) ) ).
% sorted_list_of_set.sorted_sorted_key_list_of_set
thf(fact_1048_sorted__list__of__set_Ostrict__sorted__key__list__of__set,axiom,
! [A4: set_nat] : ( sorted_wrt_nat @ ord_less_nat @ ( linord2614967742042102400et_nat @ A4 ) ) ).
% sorted_list_of_set.strict_sorted_key_list_of_set
thf(fact_1049_folding__insort__key_Osorted__key__list__of__set__unique,axiom,
! [Less_eq: nat > nat > $o,Less: nat > nat > $o,S: set_v,F: v > nat,A4: set_v,L2: list_v] :
( ( foldin508877545616633820_nat_v @ Less_eq @ Less @ S @ F )
=> ( ( ord_less_eq_set_v @ A4 @ S )
=> ( ( finite_finite_v @ A4 )
=> ( ( ( sorted_wrt_nat @ Less @ ( map_v_nat @ F @ L2 ) )
& ( ( set_v2 @ L2 )
= A4 )
& ( ( size_size_list_v @ L2 )
= ( finite_card_v @ A4 ) ) )
= ( ( sorted2884982002246595647_nat_v @ Less_eq @ F @ A4 )
= L2 ) ) ) ) ) ).
% folding_insort_key.sorted_key_list_of_set_unique
thf(fact_1050_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,A4: set_nat,L2: list_nat] :
( ( foldin8133931898133206727at_nat @ Less_eq @ Less @ S @ F )
=> ( ( ord_less_eq_set_nat @ A4 @ S )
=> ( ( finite_finite_nat @ A4 )
=> ( ( ( sorted_wrt_nat @ Less @ ( map_nat_nat @ F @ L2 ) )
& ( ( set_nat2 @ L2 )
= A4 )
& ( ( size_size_list_nat @ L2 )
= ( finite_card_nat @ A4 ) ) )
= ( ( sorted5905597674102116260at_nat @ Less_eq @ F @ A4 )
= L2 ) ) ) ) ) ).
% folding_insort_key.sorted_key_list_of_set_unique
thf(fact_1051_rotate__drop__take,axiom,
( rotate_v
= ( ^ [N3: nat,Xs3: list_v] : ( append_v @ ( drop_v @ ( modulo_modulo_nat @ N3 @ ( size_size_list_v @ Xs3 ) ) @ Xs3 ) @ ( take_v @ ( modulo_modulo_nat @ N3 @ ( size_size_list_v @ Xs3 ) ) @ Xs3 ) ) ) ) ).
% rotate_drop_take
thf(fact_1052_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_1053_rotate__is__Nil__conv,axiom,
! [N: nat,Xs: list_v] :
( ( ( rotate_v @ N @ Xs )
= nil_v )
= ( Xs = nil_v ) ) ).
% rotate_is_Nil_conv
thf(fact_1054_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_1055_set__rotate,axiom,
! [N: nat,Xs: list_nat] :
( ( set_nat2 @ ( rotate_nat @ N @ Xs ) )
= ( set_nat2 @ Xs ) ) ).
% set_rotate
thf(fact_1056_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_1057_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_1058_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_1059_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_1060_rotate__append,axiom,
! [L2: list_v,Q2: list_v] :
( ( rotate_v @ ( size_size_list_v @ L2 ) @ ( append_v @ L2 @ Q2 ) )
= ( append_v @ Q2 @ L2 ) ) ).
% rotate_append
thf(fact_1061_rotate__append,axiom,
! [L2: list_nat,Q2: list_nat] :
( ( rotate_nat @ ( size_size_list_nat @ L2 ) @ ( append_nat @ L2 @ Q2 ) )
= ( append_nat @ Q2 @ L2 ) ) ).
% rotate_append
thf(fact_1062_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_1063_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_1064_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,A4: set_nat] :
( ( foldin8133931898133206727at_nat @ Less_eq @ Less @ S @ F )
=> ( ( ord_less_eq_set_nat @ A4 @ S )
=> ( sorted_wrt_nat @ Less @ ( map_nat_nat @ F @ ( sorted5905597674102116260at_nat @ Less_eq @ F @ A4 ) ) ) ) ) ).
% folding_insort_key.strict_sorted_key_list_of_set
thf(fact_1065_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,A4: set_nat] :
( ( foldin8133931898133206727at_nat @ Less_eq @ Less @ S @ F )
=> ( ( ord_less_eq_set_nat @ A4 @ S )
=> ( sorted_wrt_nat @ Less_eq @ ( map_nat_nat @ F @ ( sorted5905597674102116260at_nat @ Less_eq @ F @ A4 ) ) ) ) ) ).
% folding_insort_key.sorted_sorted_key_list_of_set
thf(fact_1066_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_1067_hd__rotate__conv__nth,axiom,
! [Xs: list_v,N: nat] :
( ( Xs != nil_v )
=> ( ( hd_v @ ( rotate_v @ N @ Xs ) )
= ( nth_v @ Xs @ ( modulo_modulo_nat @ N @ ( size_size_list_v @ Xs ) ) ) ) ) ).
% hd_rotate_conv_nth
thf(fact_1068_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_1069_nth__sorted__list__of__set__greaterThanLessThan,axiom,
! [N: nat,J: nat,I: nat] :
( ( ord_less_nat @ N @ ( minus_minus_nat @ J @ ( suc @ I ) ) )
=> ( ( nth_nat @ ( linord2614967742042102400et_nat @ ( set_or5834768355832116004an_nat @ I @ J ) ) @ N )
= ( suc @ ( plus_plus_nat @ I @ N ) ) ) ) ).
% nth_sorted_list_of_set_greaterThanLessThan
thf(fact_1070_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_1071_distinct__rev,axiom,
! [Xs: list_nat] :
( ( distinct_nat @ ( rev_nat @ Xs ) )
= ( distinct_nat @ Xs ) ) ).
% distinct_rev
thf(fact_1072_distinct__rotate,axiom,
! [N: nat,Xs: list_nat] :
( ( distinct_nat @ ( rotate_nat @ N @ Xs ) )
= ( distinct_nat @ Xs ) ) ).
% distinct_rotate
thf(fact_1073_distinct1__rotate,axiom,
! [Xs: list_nat] :
( ( distinct_nat @ ( rotate1_nat @ Xs ) )
= ( distinct_nat @ Xs ) ) ).
% distinct1_rotate
thf(fact_1074_distinct__insert,axiom,
! [X: nat,Xs: list_nat] :
( ( distinct_nat @ ( insert_nat @ X @ Xs ) )
= ( distinct_nat @ Xs ) ) ).
% distinct_insert
thf(fact_1075_distinct__union,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( distinct_nat @ ( union_nat @ Xs @ Ys ) )
= ( distinct_nat @ Ys ) ) ).
% distinct_union
thf(fact_1076_distinct__swap,axiom,
! [I: nat,Xs: list_nat,J: nat] :
( ( ord_less_nat @ I @ ( size_size_list_nat @ Xs ) )
=> ( ( ord_less_nat @ J @ ( size_size_list_nat @ Xs ) )
=> ( ( distinct_nat @ ( list_update_nat @ ( list_update_nat @ Xs @ I @ ( nth_nat @ Xs @ J ) ) @ J @ ( nth_nat @ Xs @ I ) ) )
= ( distinct_nat @ Xs ) ) ) ) ).
% distinct_swap
thf(fact_1077_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_1078_distinct__singleton,axiom,
! [X: v] : ( distinct_v @ ( cons_v @ X @ nil_v ) ) ).
% distinct_singleton
thf(fact_1079_distinct__singleton,axiom,
! [X: nat] : ( distinct_nat @ ( cons_nat @ X @ nil_nat ) ) ).
% distinct_singleton
thf(fact_1080_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_1081_distinct__drop,axiom,
! [Xs: list_nat,I: nat] :
( ( distinct_nat @ Xs )
=> ( distinct_nat @ ( drop_nat @ I @ Xs ) ) ) ).
% distinct_drop
thf(fact_1082_distinct__butlast,axiom,
! [Xs: list_nat] :
( ( distinct_nat @ Xs )
=> ( distinct_nat @ ( butlast_nat @ Xs ) ) ) ).
% distinct_butlast
thf(fact_1083_distinct__remove1,axiom,
! [Xs: list_nat,X: nat] :
( ( distinct_nat @ Xs )
=> ( distinct_nat @ ( remove1_nat @ X @ Xs ) ) ) ).
% distinct_remove1
thf(fact_1084_distinct__nthsI,axiom,
! [Xs: list_nat,I3: set_nat] :
( ( distinct_nat @ Xs )
=> ( distinct_nat @ ( nths_nat @ Xs @ I3 ) ) ) ).
% distinct_nthsI
thf(fact_1085_precedes__antisym,axiom,
! [X: nat,Y: nat,Xs: list_nat] :
( ( sCC_Bl437264838276925772es_nat @ X @ Y @ Xs )
=> ( ( sCC_Bl437264838276925772es_nat @ Y @ X @ Xs )
=> ( ( distinct_nat @ Xs )
=> ( X = Y ) ) ) ) ).
% precedes_antisym
thf(fact_1086_precedes__trans,axiom,
! [X: nat,Y: nat,Xs: list_nat,Z: nat] :
( ( sCC_Bl437264838276925772es_nat @ X @ Y @ Xs )
=> ( ( sCC_Bl437264838276925772es_nat @ Y @ Z @ Xs )
=> ( ( distinct_nat @ Xs )
=> ( sCC_Bl437264838276925772es_nat @ X @ Z @ Xs ) ) ) ) ).
% precedes_trans
thf(fact_1087_distinct_Osimps_I1_J,axiom,
distinct_v @ nil_v ).
% distinct.simps(1)
thf(fact_1088_distinct_Osimps_I1_J,axiom,
distinct_nat @ nil_nat ).
% distinct.simps(1)
thf(fact_1089_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_1090_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_1091_distinct__product__lists,axiom,
! [Xss2: list_list_nat] :
( ! [X2: list_nat] :
( ( member_list_nat2 @ X2 @ ( set_list_nat2 @ Xss2 ) )
=> ( distinct_nat @ X2 ) )
=> ( distinct_list_nat @ ( product_lists_nat @ Xss2 ) ) ) ).
% distinct_product_lists
thf(fact_1092_remdups__adj__distinct,axiom,
! [Xs: list_nat] :
( ( distinct_nat @ Xs )
=> ( ( remdups_adj_nat @ Xs )
= Xs ) ) ).
% remdups_adj_distinct
thf(fact_1093_distinct__tl,axiom,
! [Xs: list_nat] :
( ( distinct_nat @ Xs )
=> ( distinct_nat @ ( tl_nat @ Xs ) ) ) ).
% distinct_tl
thf(fact_1094_distinct__take,axiom,
! [Xs: list_nat,I: nat] :
( ( distinct_nat @ Xs )
=> ( distinct_nat @ ( take_nat @ I @ Xs ) ) ) ).
% distinct_take
thf(fact_1095_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_1096_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_1097_sorted__list__of__set_Odistinct__sorted__key__list__of__set,axiom,
! [A4: set_nat] : ( distinct_nat @ ( linord2614967742042102400et_nat @ A4 ) ) ).
% sorted_list_of_set.distinct_sorted_key_list_of_set
thf(fact_1098_sorted__list__of__set__greaterThanLessThan,axiom,
! [I: nat,J: nat] :
( ( ord_less_nat @ ( suc @ I ) @ J )
=> ( ( linord2614967742042102400et_nat @ ( set_or5834768355832116004an_nat @ I @ J ) )
= ( cons_nat @ ( suc @ I ) @ ( linord2614967742042102400et_nat @ ( set_or5834768355832116004an_nat @ ( suc @ I ) @ J ) ) ) ) ) ).
% sorted_list_of_set_greaterThanLessThan
thf(fact_1099_finite__distinct__list,axiom,
! [A4: set_nat] :
( ( finite_finite_nat @ A4 )
=> ? [Xs2: list_nat] :
( ( ( set_nat2 @ Xs2 )
= A4 )
& ( distinct_nat @ Xs2 ) ) ) ).
% finite_distinct_list
thf(fact_1100_finite__distinct__list,axiom,
! [A4: set_v] :
( ( finite_finite_v @ A4 )
=> ? [Xs2: list_v] :
( ( ( set_v2 @ Xs2 )
= A4 )
& ( distinct_v @ Xs2 ) ) ) ).
% finite_distinct_list
thf(fact_1101_strict__sorted__iff,axiom,
! [L2: list_nat] :
( ( sorted_wrt_nat @ ord_less_nat @ L2 )
= ( ( sorted_wrt_nat @ ord_less_eq_nat @ L2 )
& ( distinct_nat @ L2 ) ) ) ).
% strict_sorted_iff
thf(fact_1102_not__distinct__decomp,axiom,
! [Ws2: list_v] :
( ~ ( distinct_v @ Ws2 )
=> ? [Xs2: list_v,Ys3: list_v,Zs2: list_v,Y3: v] :
( Ws2
= ( append_v @ Xs2 @ ( append_v @ ( cons_v @ Y3 @ nil_v ) @ ( append_v @ Ys3 @ ( append_v @ ( cons_v @ Y3 @ nil_v ) @ Zs2 ) ) ) ) ) ) ).
% not_distinct_decomp
thf(fact_1103_not__distinct__decomp,axiom,
! [Ws2: list_nat] :
( ~ ( distinct_nat @ Ws2 )
=> ? [Xs2: list_nat,Ys3: list_nat,Zs2: list_nat,Y3: nat] :
( Ws2
= ( append_nat @ Xs2 @ ( append_nat @ ( cons_nat @ Y3 @ nil_nat ) @ ( append_nat @ Ys3 @ ( append_nat @ ( cons_nat @ Y3 @ nil_nat ) @ Zs2 ) ) ) ) ) ) ).
% not_distinct_decomp
thf(fact_1104_not__distinct__conv__prefix,axiom,
! [As2: list_v] :
( ( ~ ( distinct_v @ As2 ) )
= ( ? [Xs3: list_v,Y2: v,Ys2: list_v] :
( ( member_v2 @ Y2 @ ( set_v2 @ Xs3 ) )
& ( distinct_v @ Xs3 )
& ( As2
= ( append_v @ Xs3 @ ( cons_v @ Y2 @ Ys2 ) ) ) ) ) ) ).
% not_distinct_conv_prefix
thf(fact_1105_not__distinct__conv__prefix,axiom,
! [As2: list_nat] :
( ( ~ ( distinct_nat @ As2 ) )
= ( ? [Xs3: list_nat,Y2: nat,Ys2: list_nat] :
( ( member_nat2 @ Y2 @ ( set_nat2 @ Xs3 ) )
& ( distinct_nat @ Xs3 )
& ( As2
= ( append_nat @ Xs3 @ ( cons_nat @ Y2 @ Ys2 ) ) ) ) ) ) ).
% not_distinct_conv_prefix
thf(fact_1106_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_1107_distinct__card,axiom,
! [Xs: list_nat] :
( ( distinct_nat @ Xs )
=> ( ( finite_card_nat @ ( set_nat2 @ Xs ) )
= ( size_size_list_nat @ Xs ) ) ) ).
% distinct_card
thf(fact_1108_card__distinct,axiom,
! [Xs: list_nat] :
( ( ( finite_card_nat @ ( set_nat2 @ Xs ) )
= ( size_size_list_nat @ Xs ) )
=> ( distinct_nat @ Xs ) ) ).
% card_distinct
thf(fact_1109_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_1110_nth__eq__iff__index__eq,axiom,
! [Xs: list_nat,I: nat,J: nat] :
( ( distinct_nat @ Xs )
=> ( ( ord_less_nat @ I @ ( size_size_list_nat @ Xs ) )
=> ( ( ord_less_nat @ J @ ( size_size_list_nat @ Xs ) )
=> ( ( ( nth_nat @ Xs @ I )
= ( nth_nat @ Xs @ J ) )
= ( I = J ) ) ) ) ) ).
% nth_eq_iff_index_eq
thf(fact_1111_finite__sorted__distinct__unique,axiom,
! [A4: set_nat] :
( ( finite_finite_nat @ A4 )
=> ? [X2: list_nat] :
( ( ( set_nat2 @ X2 )
= A4 )
& ( sorted_wrt_nat @ ord_less_eq_nat @ X2 )
& ( distinct_nat @ X2 )
& ! [Y5: list_nat] :
( ( ( ( set_nat2 @ Y5 )
= A4 )
& ( sorted_wrt_nat @ ord_less_eq_nat @ Y5 )
& ( distinct_nat @ Y5 ) )
=> ( Y5 = X2 ) ) ) ) ).
% finite_sorted_distinct_unique
thf(fact_1112_distinct__Ex1,axiom,
! [Xs: list_nat,X: nat] :
( ( distinct_nat @ Xs )
=> ( ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ? [X2: nat] :
( ( ord_less_nat @ X2 @ ( size_size_list_nat @ Xs ) )
& ( ( nth_nat @ Xs @ X2 )
= X )
& ! [Y5: nat] :
( ( ( ord_less_nat @ Y5 @ ( size_size_list_nat @ Xs ) )
& ( ( nth_nat @ Xs @ Y5 )
= X ) )
=> ( Y5 = X2 ) ) ) ) ) ).
% distinct_Ex1
thf(fact_1113_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_1114_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,A4: set_nat] :
( ( foldin8133931898133206727at_nat @ Less_eq @ Less @ S @ F )
=> ( ( ord_less_eq_set_nat @ A4 @ S )
=> ( distinct_nat @ ( map_nat_nat @ F @ ( sorted5905597674102116260at_nat @ Less_eq @ F @ A4 ) ) ) ) ) ).
% folding_insort_key.distinct_sorted_key_list_of_set
thf(fact_1115_nth__sorted__list__of__set__greaterThanAtMost,axiom,
! [N: nat,J: nat,I: nat] :
( ( ord_less_nat @ N @ ( minus_minus_nat @ J @ I ) )
=> ( ( nth_nat @ ( linord2614967742042102400et_nat @ ( set_or6659071591806873216st_nat @ I @ J ) ) @ N )
= ( suc @ ( plus_plus_nat @ I @ N ) ) ) ) ).
% nth_sorted_list_of_set_greaterThanAtMost
thf(fact_1116_nths__empty,axiom,
! [Xs: list_v] :
( ( nths_v @ Xs @ bot_bot_set_nat )
= nil_v ) ).
% nths_empty
thf(fact_1117_nths__empty,axiom,
! [Xs: list_nat] :
( ( nths_nat @ Xs @ bot_bot_set_nat )
= nil_nat ) ).
% nths_empty
thf(fact_1118_set__empty2,axiom,
! [Xs: list_v] :
( ( bot_bot_set_v
= ( set_v2 @ Xs ) )
= ( Xs = nil_v ) ) ).
% set_empty2
thf(fact_1119_set__empty2,axiom,
! [Xs: list_nat] :
( ( bot_bot_set_nat
= ( set_nat2 @ Xs ) )
= ( Xs = nil_nat ) ) ).
% set_empty2
thf(fact_1120_set__empty,axiom,
! [Xs: list_v] :
( ( ( set_v2 @ Xs )
= bot_bot_set_v )
= ( Xs = nil_v ) ) ).
% set_empty
thf(fact_1121_set__empty,axiom,
! [Xs: list_nat] :
( ( ( set_nat2 @ Xs )
= bot_bot_set_nat )
= ( Xs = nil_nat ) ) ).
% set_empty
thf(fact_1122_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_1123_sorted__list__of__set_Osorted__key__list__of__set__eq__Nil__iff,axiom,
! [A4: set_nat] :
( ( finite_finite_nat @ A4 )
=> ( ( ( linord2614967742042102400et_nat @ A4 )
= nil_nat )
= ( A4 = bot_bot_set_nat ) ) ) ).
% sorted_list_of_set.sorted_key_list_of_set_eq_Nil_iff
thf(fact_1124_empty__set,axiom,
( bot_bot_set_v
= ( set_v2 @ nil_v ) ) ).
% empty_set
thf(fact_1125_empty__set,axiom,
( bot_bot_set_nat
= ( set_nat2 @ nil_nat ) ) ).
% empty_set
thf(fact_1126_sorted__list__of__set__greaterThanAtMost,axiom,
! [I: nat,J: nat] :
( ( ord_less_eq_nat @ ( suc @ I ) @ J )
=> ( ( linord2614967742042102400et_nat @ ( set_or6659071591806873216st_nat @ I @ J ) )
= ( cons_nat @ ( suc @ I ) @ ( linord2614967742042102400et_nat @ ( set_or6659071591806873216st_nat @ ( suc @ I ) @ J ) ) ) ) ) ).
% sorted_list_of_set_greaterThanAtMost
thf(fact_1127_set__update__distinct,axiom,
! [Xs: list_nat,N: nat,X: nat] :
( ( distinct_nat @ Xs )
=> ( ( ord_less_nat @ N @ ( size_size_list_nat @ Xs ) )
=> ( ( set_nat2 @ ( list_update_nat @ Xs @ N @ X ) )
= ( insert_nat2 @ X @ ( minus_minus_set_nat @ ( set_nat2 @ Xs ) @ ( insert_nat2 @ ( nth_nat @ Xs @ N ) @ bot_bot_set_nat ) ) ) ) ) ) ).
% set_update_distinct
thf(fact_1128_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_1129_list_Osimps_I15_J,axiom,
! [X21: nat,X22: list_nat] :
( ( set_nat2 @ ( cons_nat @ X21 @ X22 ) )
= ( insert_nat2 @ X21 @ ( set_nat2 @ X22 ) ) ) ).
% list.simps(15)
thf(fact_1130_List_Oset__insert,axiom,
! [X: nat,Xs: list_nat] :
( ( set_nat2 @ ( insert_nat @ X @ Xs ) )
= ( insert_nat2 @ X @ ( set_nat2 @ Xs ) ) ) ).
% List.set_insert
thf(fact_1131_set__replicate,axiom,
! [N: nat,X: nat] :
( ( N != zero_zero_nat )
=> ( ( set_nat2 @ ( replicate_nat @ N @ X ) )
= ( insert_nat2 @ X @ bot_bot_set_nat ) ) ) ).
% set_replicate
thf(fact_1132_distinct__append,axiom,
! [Xs: list_v,Ys: list_v] :
( ( distinct_v @ ( append_v @ Xs @ Ys ) )
= ( ( distinct_v @ Xs )
& ( distinct_v @ Ys )
& ( ( inf_inf_set_v @ ( set_v2 @ Xs ) @ ( set_v2 @ Ys ) )
= bot_bot_set_v ) ) ) ).
% distinct_append
thf(fact_1133_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_1134_set__remove1__eq,axiom,
! [Xs: list_nat,X: nat] :
( ( distinct_nat @ Xs )
=> ( ( set_nat2 @ ( remove1_nat @ X @ Xs ) )
= ( minus_minus_set_nat @ ( set_nat2 @ Xs ) @ ( insert_nat2 @ X @ bot_bot_set_nat ) ) ) ) ).
% set_remove1_eq
thf(fact_1135_union__set__fold,axiom,
! [Xs: list_nat,A4: set_nat] :
( ( sup_sup_set_nat @ ( set_nat2 @ Xs ) @ A4 )
= ( fold_nat_set_nat @ insert_nat2 @ Xs @ A4 ) ) ).
% union_set_fold
thf(fact_1136_set__update__subset__insert,axiom,
! [Xs: list_nat,I: nat,X: nat] : ( ord_less_eq_set_nat @ ( set_nat2 @ ( list_update_nat @ Xs @ I @ X ) ) @ ( insert_nat2 @ X @ ( set_nat2 @ Xs ) ) ) ).
% set_update_subset_insert
thf(fact_1137_set__replicate__Suc,axiom,
! [N: nat,X: nat] :
( ( set_nat2 @ ( replicate_nat @ ( suc @ N ) @ X ) )
= ( insert_nat2 @ X @ bot_bot_set_nat ) ) ).
% set_replicate_Suc
thf(fact_1138_set__replicate__conv__if,axiom,
! [N: nat,X: nat] :
( ( ( N = zero_zero_nat )
=> ( ( set_nat2 @ ( replicate_nat @ N @ X ) )
= bot_bot_set_nat ) )
& ( ( N != zero_zero_nat )
=> ( ( set_nat2 @ ( replicate_nat @ N @ X ) )
= ( insert_nat2 @ X @ bot_bot_set_nat ) ) ) ) ).
% set_replicate_conv_if
thf(fact_1139_sorted__list__of__set_Osorted__key__list__of__set__remove,axiom,
! [A4: set_nat,X: nat] :
( ( finite_finite_nat @ A4 )
=> ( ( linord2614967742042102400et_nat @ ( minus_minus_set_nat @ A4 @ ( insert_nat2 @ X @ bot_bot_set_nat ) ) )
= ( remove1_nat @ X @ ( linord2614967742042102400et_nat @ A4 ) ) ) ) ).
% sorted_list_of_set.sorted_key_list_of_set_remove
thf(fact_1140_distinct__list__update,axiom,
! [Xs: list_nat,A: nat,I: nat] :
( ( distinct_nat @ Xs )
=> ( ~ ( member_nat2 @ A @ ( minus_minus_set_nat @ ( set_nat2 @ Xs ) @ ( insert_nat2 @ ( nth_nat @ Xs @ I ) @ bot_bot_set_nat ) ) )
=> ( distinct_nat @ ( list_update_nat @ Xs @ I @ A ) ) ) ) ).
% distinct_list_update
thf(fact_1141_set__take__disj__set__drop__if__distinct,axiom,
! [Vs: list_nat,I: nat,J: nat] :
( ( distinct_nat @ Vs )
=> ( ( ord_less_eq_nat @ I @ J )
=> ( ( inf_inf_set_nat @ ( set_nat2 @ ( take_nat @ I @ Vs ) ) @ ( set_nat2 @ ( drop_nat @ J @ Vs ) ) )
= bot_bot_set_nat ) ) ) ).
% set_take_disj_set_drop_if_distinct
thf(fact_1142_distinct__concat__iff,axiom,
! [Xs: list_list_v] :
( ( distinct_v @ ( concat_v @ Xs ) )
= ( ( distinct_list_v @ ( removeAll_list_v @ nil_v @ Xs ) )
& ! [Ys2: list_v] :
( ( member_list_v2 @ Ys2 @ ( set_list_v2 @ Xs ) )
=> ( distinct_v @ Ys2 ) )
& ! [Ys2: list_v,Zs3: list_v] :
( ( ( member_list_v2 @ Ys2 @ ( set_list_v2 @ Xs ) )
& ( member_list_v2 @ Zs3 @ ( set_list_v2 @ Xs ) )
& ( Ys2 != Zs3 ) )
=> ( ( inf_inf_set_v @ ( set_v2 @ Ys2 ) @ ( set_v2 @ Zs3 ) )
= bot_bot_set_v ) ) ) ) ).
% distinct_concat_iff
thf(fact_1143_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_1144_removeAll__id,axiom,
! [X: nat,Xs: list_nat] :
( ~ ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ( ( removeAll_nat @ X @ Xs )
= Xs ) ) ).
% removeAll_id
thf(fact_1145_removeAll__append,axiom,
! [X: v,Xs: list_v,Ys: list_v] :
( ( removeAll_v @ X @ ( append_v @ Xs @ Ys ) )
= ( append_v @ ( removeAll_v @ X @ Xs ) @ ( removeAll_v @ X @ Ys ) ) ) ).
% removeAll_append
thf(fact_1146_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_1147_set__removeAll,axiom,
! [X: nat,Xs: list_nat] :
( ( set_nat2 @ ( removeAll_nat @ X @ Xs ) )
= ( minus_minus_set_nat @ ( set_nat2 @ Xs ) @ ( insert_nat2 @ X @ bot_bot_set_nat ) ) ) ).
% set_removeAll
thf(fact_1148_distinct__removeAll,axiom,
! [Xs: list_nat,X: nat] :
( ( distinct_nat @ Xs )
=> ( distinct_nat @ ( removeAll_nat @ X @ Xs ) ) ) ).
% distinct_removeAll
thf(fact_1149_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_1150_removeAll_Osimps_I1_J,axiom,
! [X: v] :
( ( removeAll_v @ X @ nil_v )
= nil_v ) ).
% removeAll.simps(1)
thf(fact_1151_removeAll_Osimps_I1_J,axiom,
! [X: nat] :
( ( removeAll_nat @ X @ nil_nat )
= nil_nat ) ).
% removeAll.simps(1)
thf(fact_1152_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_1153_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_1154_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_1155_minus__set__fold,axiom,
! [A4: set_nat,Xs: list_nat] :
( ( minus_minus_set_nat @ A4 @ ( set_nat2 @ Xs ) )
= ( fold_nat_set_nat @ remove_nat @ Xs @ A4 ) ) ).
% minus_set_fold
thf(fact_1156_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_1157_sorted__list__of__set__nonempty,axiom,
! [A4: set_nat] :
( ( finite_finite_nat @ A4 )
=> ( ( A4 != bot_bot_set_nat )
=> ( ( linord2614967742042102400et_nat @ A4 )
= ( cons_nat @ ( lattic8721135487736765967in_nat @ A4 ) @ ( linord2614967742042102400et_nat @ ( minus_minus_set_nat @ A4 @ ( insert_nat2 @ ( lattic8721135487736765967in_nat @ A4 ) @ bot_bot_set_nat ) ) ) ) ) ) ) ).
% sorted_list_of_set_nonempty
thf(fact_1158_subset__code_I2_J,axiom,
! [A4: set_nat,Ys: list_nat] :
( ( ord_less_eq_set_nat @ A4 @ ( coset_nat @ Ys ) )
= ( ! [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ Ys ) )
=> ~ ( member_nat2 @ X3 @ A4 ) ) ) ) ).
% subset_code(2)
thf(fact_1159_subset__code_I3_J,axiom,
~ ( ord_less_eq_set_v @ ( coset_v @ nil_v ) @ ( set_v2 @ nil_v ) ) ).
% subset_code(3)
thf(fact_1160_subset__code_I3_J,axiom,
~ ( ord_less_eq_set_nat @ ( coset_nat @ nil_nat ) @ ( set_nat2 @ nil_nat ) ) ).
% subset_code(3)
thf(fact_1161_min__list__Min,axiom,
! [Xs: list_nat] :
( ( Xs != nil_nat )
=> ( ( min_list_nat @ Xs )
= ( lattic8721135487736765967in_nat @ ( set_nat2 @ Xs ) ) ) ) ).
% min_list_Min
thf(fact_1162_map__sorted__distinct__set__unique,axiom,
! [F: nat > nat,Xs: list_nat,Ys: list_nat] :
( ( inj_on_nat_nat @ F @ ( sup_sup_set_nat @ ( set_nat2 @ Xs ) @ ( set_nat2 @ Ys ) ) )
=> ( ( sorted_wrt_nat @ ord_less_eq_nat @ ( map_nat_nat @ F @ Xs ) )
=> ( ( distinct_nat @ ( map_nat_nat @ F @ Xs ) )
=> ( ( sorted_wrt_nat @ ord_less_eq_nat @ ( map_nat_nat @ F @ Ys ) )
=> ( ( distinct_nat @ ( map_nat_nat @ F @ Ys ) )
=> ( ( ( set_nat2 @ Xs )
= ( set_nat2 @ Ys ) )
=> ( Xs = Ys ) ) ) ) ) ) ) ).
% map_sorted_distinct_set_unique
thf(fact_1163_distinct__map,axiom,
! [F: nat > nat,Xs: list_nat] :
( ( distinct_nat @ ( map_nat_nat @ F @ Xs ) )
= ( ( distinct_nat @ Xs )
& ( inj_on_nat_nat @ F @ ( set_nat2 @ Xs ) ) ) ) ).
% distinct_map
thf(fact_1164_inj__on__map__eq__map,axiom,
! [F: nat > nat,Xs: list_nat,Ys: list_nat] :
( ( inj_on_nat_nat @ F @ ( sup_sup_set_nat @ ( set_nat2 @ Xs ) @ ( set_nat2 @ Ys ) ) )
=> ( ( ( map_nat_nat @ F @ Xs )
= ( map_nat_nat @ F @ Ys ) )
= ( Xs = Ys ) ) ) ).
% inj_on_map_eq_map
thf(fact_1165_map__inj__on,axiom,
! [F: nat > nat,Xs: list_nat,Ys: list_nat] :
( ( ( map_nat_nat @ F @ Xs )
= ( map_nat_nat @ F @ Ys ) )
=> ( ( inj_on_nat_nat @ F @ ( sup_sup_set_nat @ ( set_nat2 @ Xs ) @ ( set_nat2 @ Ys ) ) )
=> ( Xs = Ys ) ) ) ).
% map_inj_on
thf(fact_1166_inj__on__Cons1,axiom,
! [X: nat,A4: set_list_nat] : ( inj_on3049792774292151987st_nat @ ( cons_nat @ X ) @ A4 ) ).
% inj_on_Cons1
thf(fact_1167_distinct__adj__map__iff,axiom,
! [F: nat > nat,Xs: list_nat] :
( ( inj_on_nat_nat @ F @ ( set_nat2 @ Xs ) )
=> ( ( distinct_adj_nat @ ( map_nat_nat @ F @ Xs ) )
= ( distinct_adj_nat @ Xs ) ) ) ).
% distinct_adj_map_iff
thf(fact_1168_distinct__adj__mapI,axiom,
! [Xs: list_nat,F: nat > nat] :
( ( distinct_adj_nat @ Xs )
=> ( ( inj_on_nat_nat @ F @ ( set_nat2 @ Xs ) )
=> ( distinct_adj_nat @ ( map_nat_nat @ F @ Xs ) ) ) ) ).
% distinct_adj_mapI
thf(fact_1169_inj__on__nth,axiom,
! [Xs: list_nat,I3: set_nat] :
( ( distinct_nat @ Xs )
=> ( ! [X2: nat] :
( ( member_nat2 @ X2 @ I3 )
=> ( ord_less_nat @ X2 @ ( size_size_list_nat @ Xs ) ) )
=> ( inj_on_nat_nat @ ( nth_nat @ Xs ) @ I3 ) ) ) ).
% inj_on_nth
thf(fact_1170_map__removeAll__inj__on,axiom,
! [F: nat > nat,X: nat,Xs: list_nat] :
( ( inj_on_nat_nat @ F @ ( insert_nat2 @ X @ ( set_nat2 @ Xs ) ) )
=> ( ( map_nat_nat @ F @ ( removeAll_nat @ X @ Xs ) )
= ( removeAll_nat @ ( F @ X ) @ ( map_nat_nat @ F @ Xs ) ) ) ) ).
% map_removeAll_inj_on
thf(fact_1171_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_1172_map__upt__eqI,axiom,
! [Xs: list_nat,N: nat,M: nat,F: nat > nat] :
( ( ( size_size_list_nat @ Xs )
= ( minus_minus_nat @ N @ M ) )
=> ( ! [I2: nat] :
( ( ord_less_nat @ I2 @ ( size_size_list_nat @ Xs ) )
=> ( ( nth_nat @ Xs @ I2 )
= ( F @ ( plus_plus_nat @ M @ I2 ) ) ) )
=> ( ( map_nat_nat @ F @ ( upt @ M @ N ) )
= Xs ) ) ) ).
% map_upt_eqI
thf(fact_1173_tl__upt,axiom,
! [M: nat,N: nat] :
( ( tl_nat @ ( upt @ M @ N ) )
= ( upt @ ( suc @ M ) @ N ) ) ).
% tl_upt
thf(fact_1174_hd__upt,axiom,
! [I: nat,J: nat] :
( ( ord_less_nat @ I @ J )
=> ( ( hd_nat @ ( upt @ I @ J ) )
= I ) ) ).
% hd_upt
thf(fact_1175_drop__upt,axiom,
! [M: nat,I: nat,J: nat] :
( ( drop_nat @ M @ ( upt @ I @ J ) )
= ( upt @ ( plus_plus_nat @ I @ M ) @ J ) ) ).
% drop_upt
thf(fact_1176_take__upt,axiom,
! [I: nat,M: nat,N: nat] :
( ( ord_less_eq_nat @ ( plus_plus_nat @ I @ M ) @ N )
=> ( ( take_nat @ M @ ( upt @ I @ N ) )
= ( upt @ I @ ( plus_plus_nat @ I @ M ) ) ) ) ).
% take_upt
thf(fact_1177_upt__conv__Nil,axiom,
! [J: nat,I: nat] :
( ( ord_less_eq_nat @ J @ I )
=> ( ( upt @ I @ J )
= nil_nat ) ) ).
% upt_conv_Nil
thf(fact_1178_length__upt,axiom,
! [I: nat,J: nat] :
( ( size_size_list_nat @ ( upt @ I @ J ) )
= ( minus_minus_nat @ J @ I ) ) ).
% length_upt
thf(fact_1179_last__upt,axiom,
! [I: nat,J: nat] :
( ( ord_less_nat @ I @ J )
=> ( ( last_nat @ ( upt @ I @ J ) )
= ( minus_minus_nat @ J @ one_one_nat ) ) ) ).
% last_upt
thf(fact_1180_upt__eq__Nil__conv,axiom,
! [I: nat,J: nat] :
( ( ( upt @ I @ J )
= nil_nat )
= ( ( J = zero_zero_nat )
| ( ord_less_eq_nat @ J @ I ) ) ) ).
% upt_eq_Nil_conv
thf(fact_1181_nth__upt,axiom,
! [I: nat,K: nat,J: nat] :
( ( ord_less_nat @ ( plus_plus_nat @ I @ K ) @ J )
=> ( ( nth_nat @ ( upt @ I @ J ) @ K )
= ( plus_plus_nat @ I @ K ) ) ) ).
% nth_upt
thf(fact_1182_distinct__upt,axiom,
! [I: nat,J: nat] : ( distinct_nat @ ( upt @ I @ J ) ) ).
% distinct_upt
thf(fact_1183_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_1184_greaterThanAtMost__upt,axiom,
( set_or6659071591806873216st_nat
= ( ^ [N3: nat,M4: nat] : ( set_nat2 @ ( upt @ ( suc @ N3 ) @ ( suc @ M4 ) ) ) ) ) ).
% greaterThanAtMost_upt
thf(fact_1185_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_1186_upt__add__eq__append,axiom,
! [I: nat,J: nat,K: nat] :
( ( ord_less_eq_nat @ I @ J )
=> ( ( upt @ I @ ( plus_plus_nat @ J @ K ) )
= ( append_nat @ ( upt @ I @ J ) @ ( upt @ J @ ( plus_plus_nat @ J @ K ) ) ) ) ) ).
% upt_add_eq_append
thf(fact_1187_sorted__wrt__upt,axiom,
! [M: nat,N: nat] : ( sorted_wrt_nat @ ord_less_nat @ ( upt @ M @ N ) ) ).
% sorted_wrt_upt
thf(fact_1188_sorted__upt,axiom,
! [M: nat,N: nat] : ( sorted_wrt_nat @ ord_less_eq_nat @ ( upt @ M @ N ) ) ).
% sorted_upt
thf(fact_1189_upt__0,axiom,
! [I: nat] :
( ( upt @ I @ zero_zero_nat )
= nil_nat ) ).
% upt_0
thf(fact_1190_greaterThanLessThan__upt,axiom,
( set_or5834768355832116004an_nat
= ( ^ [N3: nat,M4: nat] : ( set_nat2 @ ( upt @ ( suc @ N3 ) @ M4 ) ) ) ) ).
% greaterThanLessThan_upt
thf(fact_1191_upt__conv__Cons,axiom,
! [I: nat,J: nat] :
( ( ord_less_nat @ I @ J )
=> ( ( upt @ I @ J )
= ( cons_nat @ I @ ( upt @ ( suc @ I ) @ J ) ) ) ) ).
% upt_conv_Cons
thf(fact_1192_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_1193_upt__Suc,axiom,
! [I: nat,J: nat] :
( ( ( ord_less_eq_nat @ I @ J )
=> ( ( upt @ I @ ( suc @ J ) )
= ( append_nat @ ( upt @ I @ J ) @ ( cons_nat @ J @ nil_nat ) ) ) )
& ( ~ ( ord_less_eq_nat @ I @ J )
=> ( ( upt @ I @ ( suc @ J ) )
= nil_nat ) ) ) ).
% upt_Suc
thf(fact_1194_upt__Suc__append,axiom,
! [I: nat,J: nat] :
( ( ord_less_eq_nat @ I @ J )
=> ( ( upt @ I @ ( suc @ J ) )
= ( append_nat @ ( upt @ I @ J ) @ ( cons_nat @ J @ nil_nat ) ) ) ) ).
% upt_Suc_append
thf(fact_1195_nth__map__upt,axiom,
! [I: nat,N: nat,M: nat,F: nat > nat] :
( ( ord_less_nat @ I @ ( minus_minus_nat @ N @ M ) )
=> ( ( nth_nat @ ( map_nat_nat @ F @ ( upt @ M @ N ) ) @ I )
= ( F @ ( plus_plus_nat @ M @ I ) ) ) ) ).
% nth_map_upt
thf(fact_1196_upt__eq__Cons__conv,axiom,
! [I: nat,J: nat,X: nat,Xs: list_nat] :
( ( ( upt @ I @ J )
= ( cons_nat @ X @ Xs ) )
= ( ( ord_less_nat @ I @ J )
& ( I = X )
& ( ( upt @ ( plus_plus_nat @ I @ one_one_nat ) @ J )
= Xs ) ) ) ).
% upt_eq_Cons_conv
thf(fact_1197_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_1198_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_1199_nths__upt__eq__take,axiom,
! [L2: list_nat,N: nat] :
( ( nths_nat @ L2 @ ( set_ord_lessThan_nat @ N ) )
= ( take_nat @ N @ L2 ) ) ).
% nths_upt_eq_take
thf(fact_1200_atLeast__upt,axiom,
( set_ord_lessThan_nat
= ( ^ [N3: nat] : ( set_nat2 @ ( upt @ zero_zero_nat @ N3 ) ) ) ) ).
% atLeast_upt
thf(fact_1201_atMost__upto,axiom,
( set_ord_atMost_nat
= ( ^ [N3: nat] : ( set_nat2 @ ( upt @ zero_zero_nat @ ( suc @ N3 ) ) ) ) ) ).
% atMost_upto
thf(fact_1202_transpose__rectangle,axiom,
! [Xs: list_list_nat,N: nat] :
( ( ( Xs = nil_list_nat )
=> ( N = zero_zero_nat ) )
=> ( ! [I2: nat] :
( ( ord_less_nat @ I2 @ ( size_s3023201423986296836st_nat @ Xs ) )
=> ( ( size_size_list_nat @ ( nth_list_nat @ Xs @ I2 ) )
= 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_1203_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_1204_map__ident,axiom,
( ( map_nat_nat
@ ^ [X3: nat] : X3 )
= ( ^ [Xs3: list_nat] : Xs3 ) ) ).
% map_ident
thf(fact_1205_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_1206_list__ex__simps_I2_J,axiom,
! [P: v > $o] :
~ ( list_ex_v @ P @ nil_v ) ).
% list_ex_simps(2)
thf(fact_1207_list__ex__simps_I2_J,axiom,
! [P: nat > $o] :
~ ( list_ex_nat @ P @ nil_nat ) ).
% list_ex_simps(2)
thf(fact_1208_list__ex__append,axiom,
! [P: v > $o,Xs: list_v,Ys: list_v] :
( ( list_ex_v @ P @ ( append_v @ Xs @ Ys ) )
= ( ( list_ex_v @ P @ Xs )
| ( list_ex_v @ P @ Ys ) ) ) ).
% list_ex_append
thf(fact_1209_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_1210_concat__map__singleton,axiom,
! [F: nat > nat,Xs: list_nat] :
( ( concat_nat
@ ( map_nat_list_nat
@ ^ [X3: nat] : ( cons_nat @ ( F @ X3 ) @ nil_nat )
@ Xs ) )
= ( map_nat_nat @ F @ Xs ) ) ).
% concat_map_singleton
thf(fact_1211_finite__lists__distinct__length__eq,axiom,
! [A4: set_v,N: nat] :
( ( finite_finite_v @ A4 )
=> ( finite_finite_list_v
@ ( collect_list_v
@ ^ [Xs3: list_v] :
( ( ( size_size_list_v @ Xs3 )
= N )
& ( distinct_v @ Xs3 )
& ( ord_less_eq_set_v @ ( set_v2 @ Xs3 ) @ A4 ) ) ) ) ) ).
% finite_lists_distinct_length_eq
thf(fact_1212_finite__lists__distinct__length__eq,axiom,
! [A4: set_nat,N: nat] :
( ( finite_finite_nat @ A4 )
=> ( 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 ) @ A4 ) ) ) ) ) ).
% finite_lists_distinct_length_eq
thf(fact_1213_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_1214_map__replicate__trivial,axiom,
! [X: nat,I: nat] :
( ( map_nat_nat
@ ^ [I4: nat] : X
@ ( upt @ zero_zero_nat @ I ) )
= ( replicate_nat @ I @ X ) ) ).
% map_replicate_trivial
thf(fact_1215_sorted__map,axiom,
! [F: nat > nat,Xs: list_nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ ( map_nat_nat @ F @ Xs ) )
= ( sorted_wrt_nat
@ ^ [X3: nat,Y2: nat] : ( ord_less_eq_nat @ ( F @ X3 ) @ ( F @ Y2 ) )
@ Xs ) ) ).
% sorted_map
thf(fact_1216_successively__map,axiom,
! [P: nat > nat > $o,F: nat > nat,Xs: list_nat] :
( ( successively_nat @ P @ ( map_nat_nat @ F @ Xs ) )
= ( successively_nat
@ ^ [X3: nat,Y2: nat] : ( P @ ( F @ X3 ) @ ( F @ Y2 ) )
@ Xs ) ) ).
% successively_map
thf(fact_1217_sorted__wrt__map,axiom,
! [R4: nat > nat > $o,F: nat > nat,Xs: list_nat] :
( ( sorted_wrt_nat @ R4 @ ( map_nat_nat @ F @ Xs ) )
= ( sorted_wrt_nat
@ ^ [X3: nat,Y2: nat] : ( R4 @ ( F @ X3 ) @ ( F @ Y2 ) )
@ Xs ) ) ).
% sorted_wrt_map
thf(fact_1218_list_Omap__ident,axiom,
! [T: list_nat] :
( ( map_nat_nat
@ ^ [X3: nat] : X3
@ T )
= T ) ).
% list.map_ident
thf(fact_1219_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_1220_map__replicate__const,axiom,
! [K: nat,Lst: list_nat] :
( ( map_nat_nat
@ ^ [X3: nat] : K
@ Lst )
= ( replicate_nat @ ( size_size_list_nat @ Lst ) @ K ) ) ).
% map_replicate_const
thf(fact_1221_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_1222_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_1223_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
@ ^ [X3: nat] : ( map_li7225945977422193158st_nat @ ( cons_nat @ X3 ) @ ( product_lists_nat @ Xss2 ) )
@ Xs ) ) ) ).
% product_lists.simps(2)
thf(fact_1224_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
@ ^ [Y2: nat] : ( cons_nat @ Y2 @ Ys2 )
@ Xs )
@ ( n_lists_nat @ N @ Xs ) ) ) ) ).
% n_lists.simps(2)
thf(fact_1225_Succ__def,axiom,
( bNF_Greatest_Succ_v
= ( ^ [Kl3: set_list_v,Kl4: list_v] :
( collect_v
@ ^ [K2: v] : ( member_list_v2 @ ( append_v @ Kl4 @ ( cons_v @ K2 @ nil_v ) ) @ Kl3 ) ) ) ) ).
% Succ_def
thf(fact_1226_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_1227_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_1228_nths__Cons,axiom,
! [X: v,L2: list_v,A4: set_nat] :
( ( nths_v @ ( cons_v @ X @ L2 ) @ A4 )
= ( append_v @ ( if_list_v @ ( member_nat2 @ zero_zero_nat @ A4 ) @ ( cons_v @ X @ nil_v ) @ nil_v )
@ ( nths_v @ L2
@ ( collect_nat
@ ^ [J2: nat] : ( member_nat2 @ ( suc @ J2 ) @ A4 ) ) ) ) ) ).
% nths_Cons
thf(fact_1229_nths__Cons,axiom,
! [X: nat,L2: list_nat,A4: set_nat] :
( ( nths_nat @ ( cons_nat @ X @ L2 ) @ A4 )
= ( append_nat @ ( if_list_nat @ ( member_nat2 @ zero_zero_nat @ A4 ) @ ( cons_nat @ X @ nil_nat ) @ nil_nat )
@ ( nths_nat @ L2
@ ( collect_nat
@ ^ [J2: nat] : ( member_nat2 @ ( suc @ J2 ) @ A4 ) ) ) ) ) ).
% nths_Cons
thf(fact_1230_tl__def,axiom,
( tl_v
= ( case_list_list_v_v @ nil_v
@ ^ [X213: v,X223: list_v] : X223 ) ) ).
% tl_def
thf(fact_1231_tl__def,axiom,
( tl_nat
= ( case_l2340614614379431832at_nat @ nil_nat
@ ^ [X213: nat,X223: list_nat] : X223 ) ) ).
% tl_def
thf(fact_1232_finite__lists__length__le,axiom,
! [A4: set_v,N: nat] :
( ( finite_finite_v @ A4 )
=> ( finite_finite_list_v
@ ( collect_list_v
@ ^ [Xs3: list_v] :
( ( ord_less_eq_set_v @ ( set_v2 @ Xs3 ) @ A4 )
& ( ord_less_eq_nat @ ( size_size_list_v @ Xs3 ) @ N ) ) ) ) ) ).
% finite_lists_length_le
thf(fact_1233_finite__lists__length__le,axiom,
! [A4: set_nat,N: nat] :
( ( finite_finite_nat @ A4 )
=> ( finite8100373058378681591st_nat
@ ( collect_list_nat
@ ^ [Xs3: list_nat] :
( ( ord_less_eq_set_nat @ ( set_nat2 @ Xs3 ) @ A4 )
& ( ord_less_eq_nat @ ( size_size_list_nat @ Xs3 ) @ N ) ) ) ) ) ).
% finite_lists_length_le
thf(fact_1234_finite__lists__length__eq,axiom,
! [A4: set_v,N: nat] :
( ( finite_finite_v @ A4 )
=> ( finite_finite_list_v
@ ( collect_list_v
@ ^ [Xs3: list_v] :
( ( ord_less_eq_set_v @ ( set_v2 @ Xs3 ) @ A4 )
& ( ( size_size_list_v @ Xs3 )
= N ) ) ) ) ) ).
% finite_lists_length_eq
thf(fact_1235_finite__lists__length__eq,axiom,
! [A4: set_nat,N: nat] :
( ( finite_finite_nat @ A4 )
=> ( finite8100373058378681591st_nat
@ ( collect_list_nat
@ ^ [Xs3: list_nat] :
( ( ord_less_eq_set_nat @ ( set_nat2 @ Xs3 ) @ A4 )
& ( ( size_size_list_nat @ Xs3 )
= N ) ) ) ) ) ).
% finite_lists_length_eq
thf(fact_1236_list__ex__cong,axiom,
! [Xs: list_nat,Ys: list_nat,F: nat > $o,G: nat > $o] :
( ( Xs = Ys )
=> ( ! [X2: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Ys ) )
=> ( ( F @ X2 )
= ( G @ X2 ) ) )
=> ( ( list_ex_nat @ F @ Xs )
= ( list_ex_nat @ G @ Ys ) ) ) ) ).
% list_ex_cong
thf(fact_1237_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_1238_tl__append,axiom,
! [Xs: list_v,Ys: list_v] :
( ( tl_v @ ( append_v @ Xs @ Ys ) )
= ( case_list_list_v_v @ ( tl_v @ Ys )
@ ^ [Z4: v,Zs3: list_v] : ( append_v @ Zs3 @ Ys )
@ Xs ) ) ).
% tl_append
thf(fact_1239_tl__append,axiom,
! [Xs: list_nat,Ys: list_nat] :
( ( tl_nat @ ( append_nat @ Xs @ Ys ) )
= ( case_l2340614614379431832at_nat @ ( tl_nat @ Ys )
@ ^ [Z4: nat,Zs3: list_nat] : ( append_nat @ Zs3 @ Ys )
@ Xs ) ) ).
% tl_append
thf(fact_1240_insort__insert__triv,axiom,
! [X: nat,Xs: list_nat] :
( ( member_nat2 @ X @ ( set_nat2 @ Xs ) )
=> ( ( linord1921536354676448932at_nat
@ ^ [X3: nat] : X3
@ X
@ Xs )
= Xs ) ) ).
% insort_insert_triv
thf(fact_1241_nths__append,axiom,
! [L2: list_v,L4: list_v,A4: set_nat] :
( ( nths_v @ ( append_v @ L2 @ L4 ) @ A4 )
= ( append_v @ ( nths_v @ L2 @ A4 )
@ ( nths_v @ L4
@ ( collect_nat
@ ^ [J2: nat] : ( member_nat2 @ ( plus_plus_nat @ J2 @ ( size_size_list_v @ L2 ) ) @ A4 ) ) ) ) ) ).
% nths_append
thf(fact_1242_nths__append,axiom,
! [L2: list_nat,L4: list_nat,A4: set_nat] :
( ( nths_nat @ ( append_nat @ L2 @ L4 ) @ A4 )
= ( append_nat @ ( nths_nat @ L2 @ A4 )
@ ( nths_nat @ L4
@ ( collect_nat
@ ^ [J2: nat] : ( member_nat2 @ ( plus_plus_nat @ J2 @ ( size_size_list_nat @ L2 ) ) @ A4 ) ) ) ) ) ).
% nths_append
thf(fact_1243_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_1244_set__insort__insert,axiom,
! [X: nat,Xs: list_nat] :
( ( set_nat2
@ ( linord1921536354676448932at_nat
@ ^ [X3: nat] : X3
@ X
@ Xs ) )
= ( insert_nat2 @ X @ ( set_nat2 @ Xs ) ) ) ).
% set_insort_insert
thf(fact_1245_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_1246_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_1247_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_1248_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_1249_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
@ ^ [X3: nat] : X3
@ X
@ Xs ) ) ) ).
% sorted_insort_insert
thf(fact_1250_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_1251_sorted__wrt__rev,axiom,
! [P: nat > nat > $o,Xs: list_nat] :
( ( sorted_wrt_nat @ P @ ( rev_nat @ Xs ) )
= ( sorted_wrt_nat
@ ^ [X3: nat,Y2: nat] : ( P @ Y2 @ X3 )
@ Xs ) ) ).
% sorted_wrt_rev
thf(fact_1252_sorted__wrt__true,axiom,
! [Xs: list_nat] :
( sorted_wrt_nat
@ ^ [Uu: nat,Uv: nat] : $true
@ Xs ) ).
% sorted_wrt_true
thf(fact_1253_list_Odisc__eq__case_I1_J,axiom,
! [List: list_v] :
( ( List = nil_v )
= ( case_list_o_v @ $true
@ ^ [Uu: v,Uv: list_v] : $false
@ List ) ) ).
% list.disc_eq_case(1)
thf(fact_1254_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_1255_list_Odisc__eq__case_I2_J,axiom,
! [List: list_v] :
( ( List != nil_v )
= ( case_list_o_v @ $false
@ ^ [Uu: v,Uv: list_v] : $true
@ List ) ) ).
% list.disc_eq_case(2)
thf(fact_1256_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_1257_remdups__adj__Cons,axiom,
! [X: v,Xs: list_v] :
( ( remdups_adj_v @ ( cons_v @ X @ Xs ) )
= ( case_list_list_v_v @ ( cons_v @ X @ nil_v )
@ ^ [Y2: v,Xs3: list_v] : ( if_list_v @ ( X = Y2 ) @ ( cons_v @ Y2 @ Xs3 ) @ ( cons_v @ X @ ( cons_v @ Y2 @ Xs3 ) ) )
@ ( remdups_adj_v @ Xs ) ) ) ).
% remdups_adj_Cons
thf(fact_1258_remdups__adj__Cons,axiom,
! [X: nat,Xs: list_nat] :
( ( remdups_adj_nat @ ( cons_nat @ X @ Xs ) )
= ( case_l2340614614379431832at_nat @ ( cons_nat @ X @ nil_nat )
@ ^ [Y2: nat,Xs3: list_nat] : ( if_list_nat @ ( X = Y2 ) @ ( cons_nat @ Y2 @ Xs3 ) @ ( cons_nat @ X @ ( cons_nat @ Y2 @ Xs3 ) ) )
@ ( remdups_adj_nat @ Xs ) ) ) ).
% remdups_adj_Cons
thf(fact_1259_transpose_Osimps_I3_J,axiom,
! [X: v,Xs: list_v,Xss2: list_list_v] :
( ( transpose_v @ ( cons_list_v @ ( cons_v @ X @ Xs ) @ Xss2 ) )
= ( cons_list_v
@ ( cons_v @ X
@ ( concat_v
@ ( map_list_v_list_v
@ ( case_list_list_v_v @ nil_v
@ ^ [H: v,T2: list_v] : ( cons_v @ H @ nil_v ) )
@ Xss2 ) ) )
@ ( transpose_v
@ ( cons_list_v @ Xs
@ ( concat_list_v
@ ( map_li6834124163019790474list_v
@ ( case_l8732251450953275674st_v_v @ nil_list_v
@ ^ [H: v,T2: list_v] : ( cons_list_v @ T2 @ nil_list_v ) )
@ Xss2 ) ) ) ) ) ) ).
% transpose.simps(3)
thf(fact_1260_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_1261_transpose_Oelims,axiom,
! [X: list_list_v,Y: list_list_v] :
( ( ( transpose_v @ X )
= Y )
=> ( ( ( X = nil_list_v )
=> ( Y != nil_list_v ) )
=> ( ! [Xss: list_list_v] :
( ( X
= ( cons_list_v @ nil_v @ Xss ) )
=> ( Y
!= ( transpose_v @ Xss ) ) )
=> ~ ! [X2: v,Xs2: list_v,Xss: list_list_v] :
( ( X
= ( cons_list_v @ ( cons_v @ X2 @ Xs2 ) @ Xss ) )
=> ( Y
!= ( cons_list_v
@ ( cons_v @ X2
@ ( concat_v
@ ( map_list_v_list_v
@ ( case_list_list_v_v @ nil_v
@ ^ [H: v,T2: list_v] : ( cons_v @ H @ nil_v ) )
@ Xss ) ) )
@ ( transpose_v
@ ( cons_list_v @ Xs2
@ ( concat_list_v
@ ( map_li6834124163019790474list_v
@ ( case_l8732251450953275674st_v_v @ nil_list_v
@ ^ [H: v,T2: list_v] : ( cons_list_v @ T2 @ nil_list_v ) )
@ Xss ) ) ) ) ) ) ) ) ) ) ).
% transpose.elims
thf(fact_1262_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 ) ) )
=> ~ ! [X2: nat,Xs2: list_nat,Xss: list_list_nat] :
( ( X
= ( cons_list_nat @ ( cons_nat @ X2 @ Xs2 ) @ Xss ) )
=> ( Y
!= ( cons_list_nat
@ ( cons_nat @ X2
@ ( 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_1263_nth__nth__transpose__sorted,axiom,
! [Xs: list_list_nat,I: nat,J: nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ ( rev_nat @ ( map_list_nat_nat @ size_size_list_nat @ Xs ) ) )
=> ( ( ord_less_nat @ I @ ( size_s3023201423986296836st_nat @ ( transpose_nat @ Xs ) ) )
=> ( ( ord_less_nat @ J
@ ( size_s3023201423986296836st_nat
@ ( filter_list_nat
@ ^ [Ys2: list_nat] : ( ord_less_nat @ I @ ( size_size_list_nat @ Ys2 ) )
@ Xs ) ) )
=> ( ( nth_nat @ ( nth_list_nat @ ( transpose_nat @ Xs ) @ I ) @ J )
= ( nth_nat @ ( nth_list_nat @ Xs @ J ) @ I ) ) ) ) ) ).
% nth_nth_transpose_sorted
thf(fact_1264_transpose__column,axiom,
! [Xs: list_list_nat,I: nat] :
( ( sorted_wrt_nat @ ord_less_eq_nat @ ( rev_nat @ ( map_list_nat_nat @ size_size_list_nat @ Xs ) ) )
=> ( ( ord_less_nat @ I @ ( size_s3023201423986296836st_nat @ Xs ) )
=> ( ( map_list_nat_nat
@ ^ [Ys2: list_nat] : ( nth_nat @ Ys2 @ I )
@ ( filter_list_nat
@ ^ [Ys2: list_nat] : ( ord_less_nat @ I @ ( size_size_list_nat @ Ys2 ) )
@ ( transpose_nat @ Xs ) ) )
= ( nth_list_nat @ Xs @ I ) ) ) ) ).
% transpose_column
thf(fact_1265_filter__True,axiom,
! [Xs: list_nat,P: nat > $o] :
( ! [X2: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Xs ) )
=> ( P @ X2 ) )
=> ( ( filter_nat @ P @ Xs )
= Xs ) ) ).
% filter_True
thf(fact_1266_filter__append,axiom,
! [P: v > $o,Xs: list_v,Ys: list_v] :
( ( filter_v @ P @ ( append_v @ Xs @ Ys ) )
= ( append_v @ ( filter_v @ P @ Xs ) @ ( filter_v @ P @ Ys ) ) ) ).
% filter_append
thf(fact_1267_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_1268_set__filter,axiom,
! [P: nat > $o,Xs: list_nat] :
( ( set_nat2 @ ( filter_nat @ P @ Xs ) )
= ( collect_nat
@ ^ [X3: nat] :
( ( member_nat2 @ X3 @ ( set_nat2 @ Xs ) )
& ( P @ X3 ) ) ) ) ).
% set_filter
thf(fact_1269_filter__False,axiom,
! [Xs: list_v,P: v > $o] :
( ! [X2: v] :
( ( member_v2 @ X2 @ ( set_v2 @ Xs ) )
=> ~ ( P @ X2 ) )
=> ( ( filter_v @ P @ Xs )
= nil_v ) ) ).
% filter_False
thf(fact_1270_filter__False,axiom,
! [Xs: list_nat,P: nat > $o] :
( ! [X2: nat] :
( ( member_nat2 @ X2 @ ( set_nat2 @ Xs ) )
=> ~ ( P @ X2 ) )
=> ( ( filter_nat @ P @ Xs )
= nil_nat ) ) ).
% filter_False
thf(fact_1271_length__filter__map,axiom,
! [P: nat > $o,F: nat > nat,Xs: list_nat] :
( ( size_size_list_nat @ ( filter_nat @ P @ ( map_nat_nat @ F @ Xs ) ) )
= ( size_size_list_nat @ ( filter_nat @ ( comp_nat_o_nat @ P @ F ) @ Xs ) ) ) ).
% length_filter_map
thf(fact_1272_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
% Helper facts (7)
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__v_J_T,axiom,
! [X: list_v,Y: list_v] :
( ( if_list_v @ $false @ X @ Y )
= Y ) ).
thf(help_If_1_1_If_001t__List__Olist_Itf__v_J_T,axiom,
! [X: list_v,Y: list_v] :
( ( if_list_v @ $true @ X @ Y )
= X ) ).
thf(help_If_3_1_If_001t__List__Olist_It__Nat__Onat_J_T,axiom,
! [P: $o] :
( ( P = $true )
| ( P = $false ) ) ).
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 ) ).
% Conjectures (1)
thf(conj_0,conjecture,
? [Ns2: list_v] :
( ( sCC_Bl8828226123343373779t_unit @ ea )
= ( append_v @ Ns2 @ ( sCC_Bl8828226123343373779t_unit @ ea ) ) ) ).
%------------------------------------------------------------------------------