Nuprl Theory list_3

(only non hidden objects are presented)

DISPlist_length_df||== ||
ABSlist_length|| == (letrec l L = case L of [] => 0 | h::t => 1 + l t esac )
MLlist_length_unrolllet list_length_nil_unrollC = FwdMacroC `list_length_nil_unrollC` (UnfoldC `list_length` ANDTHENC letrec_unrollC ANDTHENC ReduceC ) || [] ;; let list_length_cons_unrollC = FwdMacroC `list_length_cons_unrollC` (UnfoldC `list_length` ANDTHENC letrec_unrollC ANDTHENC ReduceC ANDTHENC FoldC `list_length` ) || (h::t) ;; let list_length_unrollC = list_length_nil_unrollC ORELSEC list_length_cons_unrollC ;; add_AbReduce_conv `list_length` list_length_unrollC;;
THMlist_length_wf_natT:. || T List
MLlist_length_indlet ListLenInd i = InvImageInd1 || CompNatInd i ;;
THMlist_length_wf_intT:. || T List
THMapply_wf_list_lengthT:. L:T List. || L
THMapply_wf_list_length_natT:. L:T List. || L
THMapply_wf_list_length_intT:. L:T List. || L
THMlist_length_non_negativeT:. L:T List. || L 0
THMlength_wf_natT:. L:T List. ||L||
THMdiscrete__listT:. Discrete{T} Discrete{(T List)}
MLlength_ind_taclet LengthWFInd i = InvImageInd1 || CompNatInd i ;;
MLnull_unrolllet null_nil_unrollC = FwdMacroC `null_nil_unrollC` (UnfoldC `null` ANDTHENC ReduceC ) null([]) ;; let null_cons_unrollC = FwdMacroC `null_cons_unrollC` (UnfoldC `null` ANDTHENC ReduceC ) null(h::t) ;; let null_unrollC = null_nil_unrollC ORELSEC null_cons_unrollC ;; add_AbReduce_conv `null` null_unrollC;;
THMnull_true_lemmaT:. L:T List. null(L) = tt L = []
THMnull_false_lemmaT:. L:T List. null(L) = ff (h:T. t:T List. L = (h::t))
DISPremove_dfremove(<eq:eq:L><x:A:L><L:A list:L>)== remove(<eq><x><L>)
ABSremoveremove(eq;x;L) == (letrec remove eq x L = case L of [] => [] h::t => if eq x h then t else h::(remove eq x t) fi esac ) eq x L
MLremove_unrolllet remove_nil_unrollC = FwdMacroC `remove_nil_unrollC` (UnfoldC `remove` ANDTHENC letrec_unrollC ANDTHENC ReduceC ) remove(eq;x;[]) ;; let remove_cons_unrollC = FwdMacroC `remove_cons_unrollC` (UnfoldC `remove` ANDTHENC letrec_unrollC ANDTHENC ReduceC ANDTHENC FoldC `remove` ) remove(eq;x;(h::t)) ;; let remove_unrollC = remove_nil_unrollC ORELSEC remove_cons_unrollC ;; add_AbReduce_conv `remove` remove_unrollC;;
THMremove_wfT:. eq:T T . x:T. L:T List. remove(eq;x;L) T List
DISPfilter_dffilter(<f:T:L><L:T list:L>)== filter(<f><L>)
ABSfilterfilter(f;L) == (letrec filter f L = case L of [] => [] h::t => if f h then h::(filter f t) else filter f t fi esac ) f L
MLfilter_unrolllet filter_nil_unrollC = FwdMacroC `filter_nil_unrollC` (UnfoldC `filter` ANDTHENC letrec_unrollC ANDTHENC ReduceC ) filter(f;[]) ;; let filter_cons_unrollC = FwdMacroC `filter_cons_unrollC` (UnfoldC `filter` ANDTHENC letrec_unrollC ANDTHENC ReduceC ANDTHENC FoldC `filter` ) filter(f;(h::t)) ;; let filter_unrollC = filter_nil_unrollC ORELSEC filter_cons_unrollC ;; add_AbReduce_conv `filter` filter_unrollC;;
THMfilter_wfT:. f:T . L:T List. filter(f;L) T List
THMfilter_wf_subtypeT:. f:T . L:T List. filter(f;L) {x:T| (f x)} List
DISPis_member_df<x:T:L>(<eq:T equality:L>) <L:T list:L>== <x>(<eq>) <L>
ABSis_memberx(eq) L == (letrec is_member x eq L = case L of [] => ff h::t => if eq x h then tt else is_member x eq t fi esac ) x eq L
MLis_member_unrolllet is_member_nil_unrollC = FwdMacroC `is_member_nil_unrollC` (UnfoldC `is_member` ANDTHENC letrec_unrollC ANDTHENC ReduceC ) x(eq) [] ;; let is_member_cons_unrollC = FwdMacroC `is_member_cons_unrollC` (UnfoldC `is_member` ANDTHENC letrec_unrollC ANDTHENC ReduceC ANDTHENC FoldC `is_member` ) x(eq) (h::t) ;; let is_member_unrollC = is_member_nil_unrollC ORELSEC is_member_cons_unrollC ;; add_AbReduce_conv `is_member` is_member_unrollC;;
THMis_member_wf_nilT:. eq:T T . u:T. u(eq) []
THMcomb_for_is_member_wf_nil(T,eq,u,z.u(eq) []) T: eq:(T T ) u:T True
THMis_member_wfT:. eq:T T . x:T. L:T List. x(eq) L
THMcomb_for_is_member_wf(T,eq,x,L,z.x(eq) L) T: eq:(T T ) x:T L:T List True
THMsq_stable__is_memberT:. eq:T T . x:T. L:T List. SqStable(x(eq) L)
THMdecidable__is_memberT:. eq:T T . x:T. L:T List. Dec(x(eq) L)
THMis_member_equalities_lemmaT:. eq:{T=}. u:T. L:T List. u(eq) L (f:{T}. u(f) L)
THMis_member_equality_strengthening_lemmaT:. equiv:{T}. eq:{T=}. u:T. L:T List. u(equiv) L (v:T. (equiv u v) v(eq) L)
THMis_member_equality_weakening_lemmaT:. equiv:{T}. eq:{T=}. u:T. L:T List. u(eq) L (v:T. (equiv u v) v(equiv) L)
THMhd_is_member_lemmaT:. eq:{T}. L:T List. ||L|| 1 hd(L)(eq) L
THMnon_nil_is_memberT:. eq:{T}. L:T List. L [] T List (x:T. x(eq) L)
THMis_member_consT:. eq:{T}. t:T. L:T List. t(eq) (t::L)
DISPlist_all_df<x:element><L:T List:L>.<P:Ti:L>== <x><L>.<P>
ABSlist_allxL.P[x] == (letrec list_all L = case L of [] => True h::t => P[h] list_all t esac ) L
MLlist_all_unrolllet list_all_nil_unrollC = FwdMacroC `list_all_nil_unrollC` (UnfoldC `list_all` ANDTHENC letrec_unrollC ANDTHENC ReduceC ) x[].P[x] ;; let list_all_cons_unrollC = FwdMacroC `list_all_cons_unrollC` (UnfoldC `list_all` ANDTHENC letrec_unrollC ANDTHENC ReduceC ANDTHENC FoldC `list_all` ) x(h::t).P[x] ;; let list_all_unrollC = list_all_nil_unrollC ORELSEC list_all_cons_unrollC ;; add_AbReduce_conv `list_all` list_all_unrollC;;
THMlist_all_wfT:. P:T . L:T List. xL.P[x]
THMcomb_for_list_all_wf(T,P,L,z.xL.P[x]) T: P:(T ) L:T List True
THMlist_all_wf_nilT:. P:T . x[].P[x]
THMcomb_for_list_all_wf_nil(T,P,z.x[].P[x]) T: P:(T ) True
THMlist_all_tailT:. P:T . L:T List. x:T. x(x::L).P[x] xL.P[x]
THMsq_stable__list_allT:. P:T . L:T List. (x:T. SqStable(P[x])) SqStable(xL.P[x])
THMdecidable__list_allT:. P:T . L:T List. (x:T. Dec(P[x])) Dec(xL.P[x])
THMlist_all_of_false_falseT:. L:T List. x:T. x(x::L).False False
DISPlist_all_2_df<x:element><L:T List:L>.<P:T :L>== <x><L>.<P>
ABSlist_all_2xL.P[x] == (letrec all L = case L of [] => tt | h::t => P[h] all t esac ) L
MLlist_all_2_unrolllet list_all_2_nil_unrollC = FwdMacroC `list_all_2_nil_unrollC` (UnfoldC `list_all_2` ANDTHENC letrec_unrollC ANDTHENC ReduceC ) x[].P[x] ;; let list_all_2_cons_unrollC = FwdMacroC `list_all_2_cons_unrollC` (UnfoldC `list_all_2` ANDTHENC letrec_unrollC ANDTHENC ReduceC ANDTHENC FoldC `list_all_2` ) x(h::t).P[x] ;; let list_all_2_unrollC = list_all_2_nil_unrollC ORELSEC list_all_2_cons_unrollC ;; add_AbReduce_conv `list_all_2` list_all_2_unrollC;;
THMlist_all_2_wfT:. P:T . L:T List. xL.P[x]
THMnot_list_all_2_implies_exists_notT:. eq:{T}. P:T . L:T List. xL.P[x] (x:{x:T| x(eq) L} . P[x])
THMlist_all_iff_assert_list_all_2T:. L:T List. P:T . xL.(P[x]) xL.P[x]
THMlist_all_is_member_lemmaT:. eq:{T=}. P:T . L:T List. xL.P[x] (z:T. z(eq) L P[z])
THMlist_all_is_member_nil_lemmaT:. eq:T T . L:T List. xL.(x(eq) []) [] = L
THMlist_all_thru_andT:. P,Q:T . x,y:T. L:T List. x = y (P[x] Q[y]) (zL.P[z] zL.Q[z])
DISPlist_exists_df<x:element><L:T List:L>.<P:Ti:L>== <x><L>.<P>
ABSlist_existsxL.P[x] == (letrec list_exists L = case L of [] => False h::t => P[h] list_exists t esac ) L
MLlist_exists_unrolllet list_exists_nil_unrollC = FwdMacroC `list_exists_nil_unrollC` (UnfoldC `list_exists` ANDTHENC letrec_unrollC ANDTHENC ReduceC ) x[].P[x] ;; let list_exists_cons_unrollC = FwdMacroC `list_exists_cons_unrollC` (UnfoldC `list_exists` ANDTHENC letrec_unrollC ANDTHENC ReduceC ANDTHENC FoldC `list_exists` ) x(h::t).P[x] ;; let list_exists_unrollC = list_exists_nil_unrollC ORELSEC list_exists_cons_unrollC ;; add_AbReduce_conv `list_exists` list_exists_unrollC;;
THMlist_exists_wfT:. P:T . L:T List. xL.P[x]
THMdecidable__list_existsT:. P:T . L:T List. (x:T. Dec(P[x])) Dec(xL.P[x])
THMlist_exists_is_member_lemmaT:. eq:{T=}. P:T . L:T List. (x:T. x(eq) L P[x]) yL.P[y]
THMlist_exists_is_member_lemma1T:. eq:{T=}. P:T . x:T. L:T List. x(eq) L P[x] yL.P[y]
THMnot_list_exists_iff_list_all_notT:. P:T . L:T List. xL.P[x] xL.(P[x])
THMlist_exists_existsT:. eq:{T=}. P:T . L:T List. xL.P[x] (x:{x:T| x(eq) L} . P[x])
THMlist_all_allT:. eq:{T=}. P:T . L:T List. xL.P[x] (x:{x:T| x(eq) L} . P[x])
THMlist_all_2_allT:. P:T . L:T List. xL.P[x] xL.(P[x])
DISPlist_exists_2_df<x:element><L:T List:L>.<P:T :L>== <x><L>.<P>
ABSlist_exists_2xL.P[x] == (letrec exists L = case L of [] => ff h::t => P[h] (exists t) esac ) L
MLlist_exists_2_unrolllet list_exists_2_nil_unrollC = FwdMacroC `list_exists_2_nil_unrollC` (UnfoldC `list_exists_2` ANDTHENC letrec_unrollC ANDTHENC ReduceC ) x[].P[x] ;; let list_exists_2_cons_unrollC = FwdMacroC `list_exists_2_cons_unrollC` (UnfoldC `list_exists_2` ANDTHENC letrec_unrollC ANDTHENC ReduceC ANDTHENC FoldC `list_exists_2` ) x(h::t).P[x] ;; let list_exists_2_unrollC = list_exists_2_nil_unrollC ORELSEC list_exists_2_cons_unrollC ;; add_AbReduce_conv `list_exists_2` list_exists_2_unrollC;;
THMlist_exists_2_wfT:. P:T . L:T List. xL.P[x]
THMremove_is_memberT:. eq:{T}. x,y:T. L:T List. x(eq) remove(eq;y;L) x(eq) L
THMnot_list_all_not_iff_list_existsT:. P:T . (x:T. Dec(P[x])) (L:T List. xL.(P[x]) xL.P[x])
DISPdisjoint_dfdisjoint(<eq:equality:L><L1:List:L><L2:List:L>) == disjoint(<eq><L1><L2>)
ABSdisjointdisjoint(eq;L1;L2) == xL1.(x(eq) L2)
MLdisjoint_unrolllet disjoint_nil_unrollC = FwdMacroC `disjoint_nil_unrollC` (UnfoldC `disjoint` ANDTHENC HigherC list_all_unrollC ) disjoint(eq;[];L) ;; let disjoint_cons_unrollC = FwdMacroC `disjoint_cons_unrollC` (UnfoldC `disjoint` ANDTHENC HigherC list_all_unrollC ANDTHENC FoldC `disjoint` ) disjoint(eq;(h::t);L) ;; let disjoint_unrollC = disjoint_nil_unrollC ORELSEC disjoint_cons_unrollC ;; add_AbReduce_conv `disjoint` disjoint_unrollC ;;
THMdisjoint_wfT:. eq:T T . L1,L2:T List. disjoint(eq;L1;L2)
THMdecidable__disjointT:. eq:T T . L1,L2:T List. Dec(disjoint(eq;L1;L2))
THMdisjoint_tailT:. eq:T T . L1,L2:T List. x:T. disjoint(eq;(x::L1);L2) disjoint(eq;L1;L2)
DISPdisjoint2_dfdisjoint(<eq:equality:L><L:List:L><M:List:L>) == disjoint(<eq><L><M>)
ABSdisjoint2disjoint(eq;L;M) == (letrec disjoint2 L = case L of [] => tt h::t => if h(eq) M then ff else disjoint2 t fi esac ) L
MLdisjoint2_unrolllet disjoint2_nil_unrollC = FwdMacroC `disjoint2_nil_unrollC` (UnfoldC `disjoint2` ANDTHENC letrec_unrollC ANDTHENC ReduceC ) disjoint(eq;[];M) ;; let disjoint2_cons_unrollC = FwdMacroC `disjoint2_cons_unrollC` (UnfoldC `disjoint2` ANDTHENC letrec_unrollC ANDTHENC ReduceC ANDTHENC FoldC `disjoint2` ) disjoint(eq;(h::t);M) ;; let disjoint2_unrollC = disjoint2_nil_unrollC ORELSEC disjoint2_cons_unrollC ;;
THMdisjoint2_wfT:. eq:{T}. L,M:T List. disjoint(eq;L;M)
THMdisjoint_iff_assert_disjoint2T:. eq:{T}. L,M:T List. disjoint(eq;L;M) disjoint(eq;L;M)
THMnot_disjoint_is_member_lemmaT:. eq:{T=}. L,M:T List. disjoint(eq;L;M) (x:T. x(eq) L x(eq) M)
THMappend_nil_right_identityT:. L:T List. L @ [] = L
DISPsublist_df<L1:List:L>(<eq:Equality:L>)<L2:List:L>== <L1>(<eq>)<L2>
ABSsublistL1(eq)L2 == xL1.(x(eq) L2)
MLsublist_unrolllet sublist_nil_unrollC = FwdMacroC `sublist_nil_unrollC` (UnfoldC `sublist` ANDTHENC HigherC list_all_unrollC ) [](eq)L ;; let sublist_cons_unrollC = FwdMacroC `sublist_cons_unrollC` (UnfoldC `sublist` ANDTHENC HigherC list_all_unrollC ANDTHENC FoldC `sublist` ) (h::t)(eq)L ;; let sublist_cons_nil_unrollC = FwdMacroC `sublist_cons_unrollC` (UnfoldC `sublist` ANDTHENC HigherC is_member_unrollC ANDTHENC HigherC assert_evalC ) (h::t)(eq)[] ;; let sublist_unrollC = sublist_nil_unrollC ORELSEC sublist_cons_nil_unrollC ORELSEC sublist_cons_unrollC ;; add_AbReduce_conv `sublist` sublist_unrollC;;
THMsublist_wfT:. eq:T T . L1,L2:T List. L1(eq)L2
THMcomb_for_sublist_wf(T,eq,L1,L2,z.L1(eq)L2) T: eq:(T T ) L1:T List L2:T List True
THMsublist_wf1T:. eq:{T=}. L1,L2:T List. L1(eq)L2
THMcomb_for_sublist_wf1(T,eq,L1,L2,z.L1(eq)L2) T: eq:{T=} L1:T List L2:T List True
THMsublist_wf2T:. eq:{T}. L1,L2:T List. L1(eq)L2
THMcomb_for_sublist_wf2(T,eq,L1,L2,z.L1(eq)L2) T: eq:{T} L1:T List L2:T List True
THMdecidable__sublistT:. eq:{T}. L,M:T List. Dec(L(eq)M)
THMsublist_tailT:. Discrete{T} (eq:{T}. u:T. v:T List. v(eq)(u::v))
THMsublist_tail1T:. eq:{T=}. u:T. v:T List. v(eq)(u::v)
THMsublist_list_all_lemmaT:. EQ:{T=}. eq:{T}. L,M:T List. L(eq)M (z:T. z(EQ) L z(eq) M)
THMsublist_weakening_wrt_identityT:. Discrete{T} (eq:{T}. L,M:T List. L = M L(eq)M)
THMsublist_reflexiveT:. eq:{T=}. L:T List. L(eq)L
THMsublist_transitivityT: Discrete{T} (eq1,eq2,eq3:{T}. L1,L2,L3:T List. eq1 = eq2 eq2 = eq3 L1(eq1)L2 L2(eq2)L3 L1(eq3)L3)
THMis_member_sublist_lemmaT:. eq:{T=}. x:T. L,M:T List. x(eq) L L(eq)M x(eq) M
DISPsublist_2_df(<eq:Equality:L>)== (<eq>)
ABSsublist_2(eq) == L,M.xL.x(eq) M
MLsublist_2_unrolllet sublist_2_nil_unrollC = FwdMacroC `sublist_2_nil_unrollC` (UnfoldC `sublist_2` ANDTHENC ReduceC ) (eq) [] M ;; let sublist_2_cons_unrollC = FwdMacroC `sublist_2_cons_unrollC` (UnfoldC `sublist_2` ANDTHENC ReduceC ) (eq) (h::t) M ;; let sublist_2_cons_nil_unrollC = FwdMacroC `sublist_2_cons_unrollC` (UnfoldC `sublist_2` ANDTHENC ReduceC ) (eq) (h::t) [] ;; let sublist_2_unrollC = sublist_2_nil_unrollC ORELSEC sublist_2_cons_nil_unrollC ORELSEC sublist_2_cons_unrollC ;; add_AbReduce_conv `sublist_2` sublist_2_unrollC;;
THMsublist_2_wfT:. eq:T T . (eq) T List T List
THMapply_sublist_2_wfT:. L,M:T List. eq:T T . (eq) L M
THMapply_wf_sublist_2T:. L,M:T List. eq:T T . (eq) L M
THMsublist_iff_assert_sublist_2T: Discrete{T} (eq:{T}. L,M:T List. L(eq)M ((eq) L M))
THMsublist_iff_assert_sublist_2_xT:. L,M:T List. eq:{T=}. L(eq)M ((eq) L M)
THMsublist_of_nil_iff_nilT:. eq:{T=}. L:T List. L(eq)[] L = []
THMappend_associativeT:. L1,L2,L3:T List. L1 @ L2 @ L3 = (L1 @ L2) @ L3
THMis_member_append_lemmaT:. eq:{T=}. L:T List. x:T. x(eq) L (M,N:T List. L = M @ (x::N))
THMis_member_append_lemma1T:. eq:{T}. L:T List. x:T. x(eq) L (M,N:T List. y:T. ((eq x y)) c (L = M @ (y::N)))
THMis_member_of_append_lemmaT:. eq:{T}. L,M:T List. x:T. x(eq) (L @ M) x(eq) L x(eq) M
THMis_member_append_disjunction_lemmaT:. eq:{T}. x:T. L,M:T List. x(eq) (L @ M) x(eq) L x(eq) M
THMappend_commutes_under_is_memberT:. eq:{T}. L,M:T List. x:T. x(eq) (L @ M) x(eq) (M @ L)
THMappend_commutes_under_sublistT:. Discrete{T} (eq:{T}. L,M:T List. (L @ M)(eq)(M @ L))
THMappend_commutes_under_list_isoT:. Discrete{T} (eq:{T}. L,M:T List. (L @ M)(~eq)(M @ L))
THMappend_functionality_wrt_sublistT:. L1,L2:T List. eq1,eq2,eq3:{T}. L3,L4:T List. Discrete{T} eq1 = eq2 eq2 = eq3 L1(eq1)L2 L3(eq2)L4 {(L1 @ L3)(eq3)(L2 @ L4)}
THMappend_is_member_lemmaT:. eq:{T=}. L:T List. x:T. (M,N:T List. L = M @ (x::N)) x(eq) L
THMis_member_non_nilT:. eq:{T=}. u:T. L:T List. u(eq) L (v:T. M:T List. L = (v::M))
THMis_member_remove_lemmaT:. eq:{T=}. L:T List. x:T. x(eq) L (M,N:T List. L = M @ (x::N) remove(eq;x;L) = M @ N)
THMis_member_tailT:. eq:{T}. x:T. L:T List. x(eq) L (y:T. x(eq) (y::L))
THMis_member_equality_strengtheningT:. eq:{T=}. equiv:{T}. x:T. L:T List. x(eq) L x(equiv) L
THMappend_distributes_over_filterT:. P:T . L,M:T List. filter((x.P[x]);(L @ M)) = filter((x.P[x]);L) @ filter((x.P[x]);M)
THMis_member_filter_lemmaT:. eq:{T=}. P:T . L:T List. x:T. x(eq) filter((x.P[x]);L) P[x]
THMfilter_is_member_lemmaT:. eq:{T=}. P:T . L:T List. x:T. x(eq) L P[x] x(eq) filter((x.P[x]);L)
DISPlist_iso_df<L1:List:L>(~<eq:equality:L>)<L2:List:L>== <L1>(~<eq>)<L2>
ABSlist_isoL1(~eq)L2 == L1(eq)L2 L2(eq)L1
THMlist_iso_wfT:. eq:{T}. L1,L2:T List. L1(~eq)L2
THMcomb_for_list_iso_wf(T,eq,L1,L2,z.L1(~eq)L2) T: eq:{T} L1:T List L2:T List True
MLlist_iso_unrolllet list_iso_nil_non_nil_unrollC = FwdMacroC `list_iso_nil_non_nil_unrollC` (UnfoldC `list_iso` ANDTHENC HigherC sublist_unrollC) [](~eq)L ;; let list_iso_cons_non_nil_unrollC = FwdMacroC `list_iso_cons_non_nil_unrollC` (UnfoldC `list_iso` ANDTHENC HigherC sublist_unrollC) (u::v)(~eq)L ;; let list_iso_unrollC = list_iso_nil_non_nil_unrollC ORELSEC list_iso_cons_non_nil_unrollC ;; add_AbReduce_conv `list_iso` list_iso_unrollC;;
THMlist_iso_weakening_wrt_identityT:. Discrete{T} (eq:{T}. L,M:T List. L = M L(~eq)M)
THMlist_iso_commutativeT:. eq:{T}. L,M:T List. L(~eq)M M(~eq)L
THMlist_iso_inversionT: Discrete{T} (eq1,eq2:{T}. L,M:T List. eq1 = eq2 L(~eq1)M M(~eq2)L)
THMlist_iso_transitivityT: Discrete{T} (eq1,eq2,eq3:{T}. L1,L2,L3:T List. eq1 = eq2 eq2 = eq3 L1(~eq1)L2 L2(~eq2)L3 L1(~eq3)L3)
THMappend_functionality_wrt_list_isoT:. L1,L2:T List. eq1,eq2,eq3:{T}. L3,L4:T List. Discrete{T} eq1 = eq2 eq2 = eq3 L1(~eq1)L2 L3(~eq2)L4 {(L1 @ L3)(~eq3)(L2 @ L4)}
THMsublist_functionality_wrt_id_list_iso_idT:. L1,L2:T List. eq1,eq2:{T}. L3,L4:T List. Discrete{T} eq1 = eq2 L1(~eq1)L2 L3 = L4 (L1(eq2)L3 L2(eq2)L4)
THMsublist_functionality_wrt_id_id_list_isoT:. L1,L2:T List. eq1,eq2:{T}. L3,L4:T List. Discrete{T} eq1 = eq2 L1 = L2 {L3(~eq1)L4} {L1(eq2)L3 L2(eq2)L4}
THMsublist_functionality_wrt_id_list_iso_list_isoT:. L1,L2:T List. eq1,eq2,eq3,eq4:{T}. L3,L4:T List. Discrete{T} eq1 = eq2 eq2 = eq3 eq3 = eq4 {L1(~eq1)L2} {L3(~eq2)L4} {L1(eq3)L3 L2(eq4)L4}
THMlist_iso_functionality_wrt_id_list_iso_idT:. L1,L2:T List. eq1,eq2:{T}. L3,L4:T List. Discrete{T} eq1 = eq2 L1(~eq1)L2 L3 = L4 (L1(~eq2)L3 L2(~eq2)L4)
THMlist_iso_functionality_wrt_id_list_iso_list_isoT:. L1,L2:T List. eq1,eq2,eq3:{T}. L3,L4:T List. Discrete{T} eq1 = eq2 eq2 = eq3 L1(~eq1)L2 L3(~eq2)L4 (L1(~eq3)L3 L2(~eq3)L4)
DISPlist_iso_2_df(~<eq:equality:L>)== (~<eq>)
ABSlist_iso_2(~eq) == L,M.(eq) L M (eq) M L
THMlist_iso_2_wfT:. eq:T T . (~eq) T List T List
THMlist_iso_iff_assert_list_iso_2T: Discrete{T} (eq:{T}. L,M:T List. L(~eq)M ((~eq) L M))
THMdecidable__list_isoT:. eq:{T}. L,M:T List. Dec(L(~eq)M)
THMdecidable__equal_listT:. (x,y:T. Dec(x = y)) (L,M:T List. Dec(L = M))
THMnot_is_member_remove_lemmaT:. eq:{T=}. x,y:T. L:T List. x(eq) L (eq x y) x(eq) remove(eq;y;L)
THMremove_is_member_lemmaT:. eq:{T}. u:T. L:T List. v:T. v(eq) remove(eq;u;L) v(eq) L
THMlist_all_map_lemmaT,R:. eq:{T=}. P:R . L:T List. f:T R. xmap(f;L).P[x] (z:T. z(eq) L P[f z])
THMlist_all_append_lemmaT:. P:T . L,M:T List. x(L @ M).P[x] xL.P[x] xM.P[x]
THMlist_all_append_subtypes_lemmaT:. t1:{j}. t2:{k}. t1 T t2 T (P:T . L:t1 List. M:t2 List. x(L @ M).P[x] xL.P[x] xM.P[x])
THMlist_exists_append_lemmaT:. P:T . L,M:T List. x(L @ M).P[x] xL.P[x] xM.P[x]
THMlist_exists_is_member_append_lemmaT:. P:T . L:T List. xL.P[x] (M,N:T List. x:T. P[x] L = M @ (x::N))
THMlist_incT,R:. T R T List R List
THMlength_distributes_over_appendT:. L,M:T List. ||L @ M|| = ||L|| + ||M||
THMsingelton_append_equals_lemmaT:. a:T. R,S:T List. b:T. (a::[]) = R @ (b::S) a = b
DISPis_intersection_df<M:list:L>(<eq:equality:*>)<N:list:L>== <M>(<eq>)<N>
ABSis_intersectionL(eq)M == xL.(x(eq) M)
MLis_intersection_unrolllet is_intersectionC t = FwdMacroC `is_intersection_unrollC` (AllC[UnfoldC `is_intersection`; list_exists_unrollC; TryC is_member_unrollC; TryC (FoldC `intersection`)] ) t ;; let is_intersection_unrollC = FirstC [is_intersectionC [](eq)M; is_intersectionC (x::L)(eq)M] ;; add_AbReduce_conv `is_intersection` is_intersection_unrollC;;
THMis_intersection_wfT:. eq:{T}. L,M:T List. L(eq)M
THMdecidable__is_intersectionT:. eq:{T}. L,M:T List. Dec(L(eq)M)
THMis_intersection_implies_exists_elementT:. eq:{T=}. L,M:T List. L(eq)M (x:{x:T| x(eq) L} . x(eq) M)

the other theories