Origin Definitions Sections DiscrMathExt Doc
IF YOU CAN SEE THIS go to /sfa/Nuprl/Shared/Xindentation_hack_doc.html
DiscreteMath
Nuprl Section: DiscreteMath - Discrete Math Lessons

Selected Objects
IntroductionIntroductory Remarks
defis_one_one_corr_rel
One-one correlation as a relation
1-1-Corr x:A,y:BR(x;y) == (x:A!y:BR(x;y)) & (y:B!x:AR(x;y))
defis_list_mem
(a is a member of list xs)
a  xs == Case of xs; nil  False ; x.ys  a = x  A  (a  ys)  (recursive)
THMndiff_vs_diff
a,b:ab  (b -- a) = b-a
THMeq_int_is_eq_nsub
IsEqFun(b;i,ji=j)
THMdecidable__nat_equal
i,j:. Dec(i = j)
THMexteq_singleton_vs_intseg
a,a':a'-a = 1  ({a..a'} =ext {a:})
THMexteq_prod_family_singleton_vs_intseg
a,a':.
a'-a = 1  (B:({a..a'}Type{i}). (i:{a..a'}B(i)) =ext ({a:}B(a)))
THMexteq_sum_family_singleton_vs_intseg
a,a':.
a'-a = 1  (B:({a..a'}Type{i}). (i:{a..a'}B(i)) =ext ({a:}B(a)))
definjection_type
(the injections from A into B)
A inj B == {f:(AB)| Inj(ABf) }
defbijection_type
(the bijections from A onto B)
A bij B == {f:(AB)| Bij(ABf) }
THMinjtype_vs_inj
((A inj B))  (f:(AB). Inj(ABf))
THMinjection_type_fun
f:(A inj B). f  AB
THMinjection_type_injection
f:(A inj B). Inj(ABf)
THMinj_point_deletion
f:(A inj B), a:Af  {x:Ax = a }{y:By = f(a) }
THMinj_point_deletion_inj
f:(A inj B), a:Af  {x:Ax = a } inj {y:By = f(a) }
THMinj_from_empty_unique
(A (!(A inj B))
THMbijtype_sub_injtype
(A bij B (A inj B)
THMbijection_type_inc_inj
(A bij B (A inj B)
THMnsub_inj_lop_typing
a:b:f:(a inj b). f  (a-1) inj {x:bx = f(a-1) }
THMnsub_inj_fill_typing
a:b:j:bf:((a-1) inj {x:bx = j }).
(i.if i=a-1 j else f(i) fi)  a inj b
defsurjection_type
(the surjections from A onto B)
A onto B == {f:(AB)| Surj(ABf) }
THMbijtype_sub_surjtype
(A bij B (A onto B)
THMbijection_type_inc_surj
(A bij B (A onto B)
THMbijtype_exteq_inj_isect_surjtype
(A bij B) =ext ((A inj B)(A onto B))
COMunicomp_assoc
  h o g o f = h o g o f ...
COMinverse_function_intro
Explain inverse functions and

Def  InvFuns(ABfg) == g o f = Id & f o g = Id

COMone_one_corr_intro
One-to-One Correspondence ...
COMone_one_corr_via_inverse
One-to-One Correspondence via Inverse Functions ...
COMone_one_corr_intro_aux1
Comparison of definitional resources used. ...
COMone_one_corr_intro3
One-to-One Correspondence: equivalence of two characterizations. ...
COMcount_demo
Counting is finding a function of a certain kind. ...
deflist_to_function
A function mapping positions in a list to entries
seq:l(i) == l[i]
COMnote_on_generalization_for_induction
Not done yet.
defreplace_fn_values
(Replace values x s.t. P(x) by y in f)(i) == if P(f(i)) y else f(i) fi
defdelete_fenum_value
Special purpose operation for shrinking the domain and range of an injection simultaneously. See REMARK.
Replace value k by f(m) in f == Replace values x s.t. x=k by f(m) in f
COMdelete_fenum_value_example
let xs = [1; 3; 0; 7; 2; 4; 6; 5] in 
let v = 4 in (Replace value v by seq:xs(||xs||-1) in seq:xs){(||xs||-1)}
*
[1; 3; 0; 7; 2; 5; 6]
THMdelete_fenum_value_comp1_gen
Inj({u:P(u) }; {u:Q(u) }; f)

(m:{u:P(u) }, k:{v:Q(v) }, i:{u:P(u) & u = m }.
(f(i) = k  (Replace value k by f(m) in f)(i) = f(m {v:Q(v) & v = k })
THMdelete_fenum_value_comp2_gen
Inj({u:P(u) }; {u:Q(u) }; f)

(m:{u:P(u) }, k:{v:Q(v) }, i:{u:P(u) & u = m }.
(f(i) = k  (Replace value k by f(m) in f)(i) = f(i {v:Q(v) & v = k })
THMdelete_fenum_value_is_inj_genW
Inj({u:P(u) }; {v:Q(v) }; f)

(m:{u:P(u) }, k:{v:Q(v) }.
((Replace value k by f(m) in f {u:P(u) & u = m }{v:Q(v) & v = k }
(& Inj({u:P(u) & u = m }; {v:Q(v) & v = k };
(& Inj(Replace value k by f(m) in f))
THMdelete_fenum_value_is_inj_gen
Inj({u:P(u) }; {v:Q(v) }; f)

(m:{u:P(u) }, k:{v:Q(v) }.
(Inj({u:P(u) & u = m }; {v:Q(v) & v = k };
(Inj(Replace value k by f(m) in f))
THMdelete_fenum_value_is_fenum_gen
Bij({u:P(u) }; {v:Q(v) }; f)

(m:{u:P(u) }, k:{v:Q(v) }.
(Bij({u:P(u) & u = m }; {v:Q(v) & v = k };
(Bij(Replace value k by f(m) in f))
THMdelete_fenum_value_comp1
Inj((m+1); (k+1); f)

(i:mf(i) = k  (Replace value k by f(m) in f)(i) = f(mk)
THMdelete_fenum_value_comp2
Inj((m+1); (k+1); f)

(i:mf(i) = k  (Replace value k by f(m) in f)(i) = f(ik)
THMdelete_fenum_value_is_inj
Inj((m+1); (k+1); f Inj(mk; Replace value k by f(m) in f)
THMdelete_fenum_value_is_fenum
Bij((m+1); (k+1); f Bij(mk; Replace value k by f(m) in f)
THMfinite_inj_counter_example
(Proof Gloss)
Lemma for the pigeon-hole principle.
A finite non-injection into integers maps some two distinct arguments to the same value.
m:f:(m). Inj(mf (x:my:xf(x) = f(y))
THMinj_imp_le
(Proof Gloss)
The range of a finite injection is as big as its domain.
(f:(mk). Inj(mkf))  mk
THMinj_typing_imp_le
The range of a finite injection is as big as its domain.
((m inj k))  mk
THMinj_imp_le2
The range of a finite injection is as big as its domain.
m,k:f:(mk). Inj(mkf mk
THMpigeon_hole
(Proof Gloss)
The pigeon-hole principle
A mapping from one finite collection into a smaller collection assigns a single output to two inputs.
m,k:f:(mk). k<m  (x,y:mx  y & f(x) = f(y))
defrel_1_1
(R is a 1-1 relation)
R is 1-1 == x,x':Ay,y':BR(x,y) & R(x',y' (x = x'  y = y')
defrel_1_1_b
(R(x;y) is a 1-1 relation in x in A and y in B)
1-1 xA,yBR(x;y) == x,x':Ay,y':BR(x;y) & R(x';y' (x = x'  y = y')
THMrel_1_1_eq_rel_1_1_b
Equivalence of two forms of relational one-to-one correspondence
R:(ABProp). (R is 1-1) = (1-1 xA,yBR(x;y))
definv_funs_2
(f and g are inverse functions, i.e. they cancel each other)
InvFuns(A;B;f;g) == (x:Ag(f(x)) = x) & (y:Bf(g(y)) = y)
THMinv_funs_2_identity
InvFuns(A;A;Id;Id)
defone_one_corr_2
(types A and B are in one-to-one corresponence)
A ~ B == f:(AB), g:(BA). InvFuns(A;B;f;g)
THMone_one_corr_2_functionality_wrt_eq
A = A'  B = B'  (A ~ B) = (A' ~ B')
THMfun_with_inv2_is_inj
(Proof Gloss)
InvFuns(A;B;f;g Inj(ABf)
THMfun_with_inv2_is_surj
(Proof Gloss)
InvFuns(A;B;f;g Surj(ABf)
THMsq_stable__inv_funs_2
f:(AB), g:(BA). SqStable(InvFuns(A;B;f;g))
defcompose_iter
Iterated self-composition of a function.
f{i}(x) == if i=0 x else f(f{i-1}(x)) fi  (recursive)
defleast
(the least number i such that p(i))
least i:p(i) == if p(0) 0 else (least i:p(i+1))+1 fi  (recursive)
THMleast_characterized
Characterization of "least".
k:p:{p:(k)| i:kp(i) }.
(least i:p(i))  {i:kp(i) & (j:ip(j)) }
THMleast_characterized2
Characterization of "least".
p:{p:()| i:p(i) }. 
(least i:p(i))  {i:p(i) & (j:j<i  p(j)) }
THMleast_satisfies
The least number having a property has it.
k:p:{p:(k)| i:kp(i) }. p(least i:p(i))
THMleast_is_least
No number smaller than the least one having a property has it.
k:p:{p:(k)| i:kp(i) }, j:(least i:p(i)). p(j)
THMleast_is_least2
No number smaller than the least one having a property has it.
p:{p:()| i:p(i) }, j:(least i:p(i)). p(j)
THMleast_satisfies2
The least number having a property has it.
p:{p:()| i:p(i) }. p(least i:p(i))
THMnsub_discr_range_surj
(A Discrete)

(k:f:(kA).
({a:Ai:ka = f(i) }  Type
(f  k{a:Ai:ka = f(i) }
(& Surj(k; {a:Ai:ka = f(i) }; f))
THMnsub_discr_range_surjtype
(A Discrete)  (k:f:(kA). f  k onto {a:Ai:ka = f(i) })
THMnsub_inj_discr_range_bij
(A Discrete)

(k:f:(k inj A).
({a:Ai:ka = f(i) }  Type
(f  k{a:Ai:ka = f(i) }
(& Bij(k; {a:Ai:ka = f(i) }; f))
THMnsub_inj_discr_range_bijtype
Characterizing an injection as a bijection
(A Discrete)  (k:f:(k inj A). f  k bij {a:Ai:ka = f(i) })
THMnsub_surj_least_preimage_total_gen
Computing the inverse of a finite function
e:(BB). 
IsEqFun(B;e (a:f:(a onto B), y:B. (least x:. (f(x)) e y a)
THMnsub_surj_least_preimage_total
Computing the inverse of a finite function
f:(a onto b), y:b. (least x:f(x)=y a
THMnsub_surj_least_preimage_works_gen
e:(BB). 
IsEqFun(B;e (a:f:(a onto B), y:Bf(least x:. (f(x)) e y) = y)
THMnsub_surj_least_preimage_works
f:(a onto b), y:bf(least x:f(x)=y) = y
deffind_first_iter
find_first_iter(v.p(v); v.f(v); a)
== if p(a) a else find_first_iter(v.p(v); v.f(v); f(a)) fi
(recursive)
THMfin_plus_nat_ooc_nat
k:. (k+) ~ 
THMnat_plus_ooc_nat
There are as many positive numbers as non-negative.
 ~ 
defis_finite_type
Finite(A) == n:A ~ n
THMnsub_is_finite
k:. Finite(k)
THMooc_preserves_finiteness
(A ~ B Finite(A Finite(B)
THMno_finite_model_lemma
R:(AAProp). 
(A) & (Trans x,y:AR(x;y)) & (x:Ay:AR(x;y))

(k:f:(kA). i,j:ki<j  R(f(i);f(j)))
THMno_finite_model
(A:Type, R:(AAProp).
((A) & (Trans x,y:AR(x;y)) & (x:Ay:AR(x;y))
((x:AR(x;x))
(& Finite(A))
THMsimple_card_cross_assoc
(ABC) ~ ((AB)C)
THMbijtype_ooc_inj_isect_surjtype
(A bij B) ~ ((A inj B)(A onto B))
THMifthenelse_distr_subtype_ooc
{x:A| if b P(x) else Q(x) fi } ~ if b {x:AP(x) } else {x:AQ(x) } fi
THMcard_subset_vs_and
{x:{x:AP(x) }| Q(x) } ~ {x:AP(x) & Q(x) }
THMcard_sum_family_singleton_vs_intseg
a,a':a'-a = 1  (B:({a..a'}Type{i}). (i:{a..a'}B(i)) ~ ({a:}B(a)))
THMcard1_iff_inhabited_uniquely
(A ~ 1)  (!A)
THMcard_void_dom_fun_unit
(0A) ~ 1
THMnsub_delete
k:j:km:m = k-1  ({i:ki = j } ~ m)
THMnsub_delete_rw
k:j:k. {i:ki = j } ~ (k-1)
THMcard_nsub_inj_vs_lopped
The cardinality of injections on a finite nonempty domain in terms of injections on a domain one smaller.
The number ways to order a distinct objects from among b is b times the number of ways to order a-1 distinct objects from among b-1.
a,b:. (a inj b) ~ (b((a-1) inj (b-1)))
THMcard_prod_family_singleton_elim
(i:{a:A}B(i)) ~ B(a)
THMcard_prod_family_intseg_singleton_elim
a,a':a'-a = 1  (B:({a..a'}Type{i}). (i:{a..a'}B(i)) ~ B(a))
THMsubset_sq_remove_card
{x:AB(x) } ~ {x:AB(x) }
THMone_one_corr_2_weakening_wrt
A = B  (A ~ B)
THMcard0_iff_uninhabited
A class has zero members just when it doesn't have any.
(A ~ 0)  (A)
THMcard_sum_family_singleton_elim
B:({a:A}Type). (i:{a:A}B(i)) ~ B(a)
THMcard_sum_family_intseg_singleton_elim
a,a':a'-a = 1  (B:({a..a'}Type{i}). (i:{a..a'}B(i)) ~ B(a))
defone_one_corr_fams
One-to-one correspondence between index families of classes.
(x:AB(x)) ~ (x':A'B'(x'))
== f:(AA'), g:(A'A), F:(x:AB(x)B'(f(x))), G:(x:AB'(f(x))B(x)).
== InvFuns(A;A';f;g) & (u:A. InvFuns(B(u);B'(f(u));F(u);G(u)))
THMone_one_corr_fams_refl
(x:AB(x)) ~ (x:AB(x))
THMdecidable_vs_unique_nsub2
Dec(P (!i:2. if i=0 P else P fi)
THMleast_exists
k:P:{P:(kProp)| i:kP(i) }.
(i:k. Dec(P(i)))  ({i:kP(i) & (j:iP(j)) })
THMleast_exists2
Existence of a least number having a given property.
P:{P:(Prop)| i:P(i) }. 
(i:. Dec(P(i)))  ({i:P(i) & (j:j<i  P(j)) })
defis_one_one_corr
(function f is a one-to-one correspondence)
f is 1-1 corr == g:(BA). InvFuns(A;B;f;g)
defis_permutation
f is permutation on A == f is 1-1 corr
defunion_to_sigma
union_to_sigma(e) == InjCase(ea. <0,a>; b. <1,b>)
defsigma_to_union
sigma_to_union(e) == e/i,u. if i=0 inl(u) else inr(u) fi
definv_pair
(the inverse function pairs between A and B)
AB == {fg:((AB)(BA))| fg/f,g. InvFuns(A;B;f;g) }
THMinv_pair_iff_ooc
((AB))  (A ~ B)
deffin_enum
(the finite enumerations of A)
fin_enum(A) == k:kA
THMfactorial_via_intseg_zero
0!  
THMfactorial_via_intseg_step
k,n:k = n+1  k! = kn 
THMfactorial_via_intseg_step_rw
k:k! = k(k-1)!  
defunboundedly_infinite
(one can find any number of members of A)
Unbounded(A) == k:(k inj A)
defproductively_infinite
(there is an infinite (omega) sequence of distinct members of A)
Infinite(A) == ( inj A)
THMunboundedly_imp_productively_infinite
Infinite(A Unbounded(A)
defDedekind_infinite
Dedekind's formulation of infinite class
(A can be mapped 1-1 into a proper subpart of itself)
Dedekind-Infinite(A) == a:Af:(AA). Inj(AAf) & (x:Af(x) = a)
THMndiff_bound
b,a:b(b -- a)+a
THMeq_mem_is_ax
a,a':Ax:(a = a'). x = *
THMcomp_preserves_inj
Composing injections gives an injection.
Inj(ABg Inj(BCf Inj(ACf o g)
THMcomp_preserves_surj
Composing surjections gives a surjection.
Surj(ABg Surj(BCf Surj(ACf o g)
THMsurjection_type_surjection
f:(A onto B), a:a onto A  (B Discrete)  Surj(ABf)
THMsurjection_type_nsub_surjection
f:(a onto b). Surj(abf)
THMinv_pair_functionality_wrt_one_one_corr
(A ~ A' (B ~ B' ((AB) ~ (A'B'))
THMone_one_corr_fams_trans
One-to-one correspondence between indexed families of classes is transitive.
A:Type, A',A'':Type, B:(AType), B':(A'Type), B'':(A''Type).
(x:AB(x)) ~ (x':A'B'(x'))

(x':A'B'(x')) ~ (x'':A''B''(x''))  (x:AB(x)) ~ (x'':A''B''(x''))
THMcomp_preserves_bij
Composing bijections gives a bijection.
Bij(ABg Bij(BCf Bij(ACf o g)
THMone_one_corr_rel_vs_invfuns
Equivalence of one-one correspondence and existence of inverses
R:(ABProp). 
(1-1-Corr x:A,y:BR(x;y))

(f:(AB), g:(BA).
(InvFuns(A;B;f;g) & (x:Ay:BR(x;y y = f(x) & x = g(y)))
THMcard_split_prod_intseg_family_decbl
(x:A. Dec(P(x)))  ((x:AB(x)) ~ ((x:A st P(x)B(x))(x:A st P(x)B(x))))
THMfinite_choice
Principle of finite choice. The function can be constructed explicitly without appeal to the Axiom of Choice.
k:Q:(kAProp). (x:ky:AQ(x;y))  (f:(kA). x:kQ(x;f(x)))
THMdep_finite_choice
Principle of dependent finite choice. The function can be constructed explicitly without appeal to the Dependent Axiom of Choice.
k:B:(kType), Q:(x:kB(x)Prop).
(x:ky:B(x). Q(x;y))  (f:(x:kB(x)). x:kQ(x;f(x)))
THMinv_funs_2_sym
Being mutual inverses is symmetric.
InvFuns(A;B;f;g InvFuns(B;A;g;f)
THMinvfuns_are_surj
Mutually inverse functions are surjections.
InvFuns(A;B;f;g Surj(ABf) & Surj(BAg)
THMsurjection_type_functionality_wrt_ooc
(A ~ A' (B ~ B' ((A onto B) ~ (A' onto B'))
THMone_one_corr_fams_sym
B:(AType), B':(A'Type).
(x:AB(x)) ~ (x':A'B'(x'))  (x':A'B'(x')) ~ (x:AB(x))
THMfun_with_inv2_is_inj_rev
InvFuns(A;B;f;g Inj(BAg)
THMooc_preserves_dededkind_inf
(A ~ B Dedekind-Infinite(A Dedekind-Infinite(B)
THMinvfuns_are_inj
Mutually inverse functions are injections.
InvFuns(A;B;f;g Inj(ABf) & Inj(BAg)
THMinjection_type_functionality_wrt_ooc
(A ~ A' (B ~ B' ((A inj B) ~ (A' inj B'))
THMfun_with_inv2_is_surj_rev
InvFuns(A;B;f;g Surj(BAg)
THMone_one_corr_is_equiv_rel
EquivRel X,Y:Type. X ~ Y
THMiff_weakening_wrt_one_one_corr_2
(A ~ B (A  B)
THMinhabited_functionality_wrt_one_one_corr
(A ~ B ((A (B))
THMone_one_corr_2_functionality_wrt_one_one_corr
(A ~ A' (B ~ B' ((A ~ B (A' ~ B'))
THMone_one_corr_2_reflex
A ~ A
THMone_one_corr_2_inversion
(A ~ B (B ~ A)
THMone_one_corr_2_transitivity
(A ~ B (B ~ C (A ~ C)
COMone_one_corr_via_bijection
One-to-One Correspondence via Bijection ...
COMone_one_corr_and_bij_thm
One-to-One Correspondence: equivalence of two characterizations. ...
THMinv_funs_2_unique
A function has at most one inverse.
InvFuns(A;B;f;g InvFuns(A;B;f;h g = h
THMleft_inv_of_surj_is_right_inv
A function that cancels a surjection is also cancelled by it.
g:(BA). Surj(ABf (x:Ag(f(x)) = x (y:Bf(g(y)) = y)
THMparallel_conjunct_imp
(A  C (B  D A & B  C & D
THMfun_with_inv2_is_bij
(Proof Gloss)
InvFuns(A;B;f;g Bij(ABf)
THMfun_with_inv2_is_bij_rev
InvFuns(A;B;f;g Bij(BAg)
THMcomp_id_r_version2
f:(AB). f o Id = f  AB
THMcomp_id_l_version2
f:(AB). Id o f = f  AB
THMcomp_assoc_version2
f:(AB), g:(BC), h:(CD). h o (g o f) = (h o g) o f  AD
THMeta_conv_version2
f:(AB). (x.f(x)) = f
THMfun_with_inv_is_bij_version2
f:(AB), g:(BA). InvFuns(A;B;f;g Bij(ABf)
THMbij_imp_exists_inv_version2
Bijections have inverses.
f:(AB). Bij(ABf (g:(BA). InvFuns(A;B;f;g))
THMbij_iff_1_1_corr_version2
(f:(AB). Bij(ABf))  (A ~ B)
THMint_ooc_nat
There are as many non-negative integers as integers.
 ~ 
THMunb_inf_not_fin
Unbounded(A Finite(A)
THMinfinite_imp_nonfinite
Infinite(A Finite(A)
THMooc_preserves_unb_inf
(A ~ B Unbounded(A Unbounded(B)
THMooc_preserves_infiniteness
(A ~ B Infinite(A Infinite(B)
THMbij_iff_1_1_corr_version2a
(f:(AB). Bij(ABf))  (B ~ A)
THMnegnegelim_imp_notfin_imp_unb_inf
(P:Prop. P  P (A:Type. Finite(A Unbounded(A))
THMnsub_not_infinite
k:Infinite(k)
THMabsurd_nonfin_imp_unb_inf
(A:Type. Finite(A Unbounded(A))  (D:Type. (D (D))
THMnonfin_eqv_unb_inf_iff_negnegelim
(A:Type. Finite(A Unbounded(A))  (P:Prop. P  P)
THMabsurd_nonfinite_imp_infinite
(A:Type. Finite(A Infinite(A))  (D:Type. (D (D))
THMnot_nat_occ_natfuns
The infinite sequences of numbers cannot be paired one-to-one with the numbers themselves. (Cantor)
(() ~ )
THMcounting_is_unique
(Proof Gloss)
Any way of counting a finite class produces the same number.
(A ~ m (A ~ k m = k
THMfin_card_vs_nat_eq
a,b:. (a ~ b a = b
THMnat_not_finite
Finite()
THMpartition_type
P:(ABProp). (x:A!y:BP(x;y))  (A ~ (y:B{x:AP(x;y) }))
THMbij_imp_exists_inv2
Bijections have inverses.
f:(AB). Bij(ABf (g:(BA). InvFuns(A;B;f;g))
THMbij_iff_is_1_1_corr
Bijections and one-one correspondence functions are the same.
Bij(ABf f is 1-1 corr
THMone_one_corr_fams_if_one_one_corr_B
(x:AB(x) ~ B'(x))  (x:AB(x)) ~ (x:AB'(x))
THMone_one_corr_fams_if_bij_A
g:(A'A). Bij(A'Ag (x:AB(x)) ~ (x':A'B(g(x')))
THMone_one_corr_fams_indep_if_one_one_corr
(A ~ A' (B ~ B' (:AB) ~ (:A'B')
THMunion_functionality_wrt_one_one_corr
(A ~ A' (B ~ B' ((A+B) ~ (A'+B'))
defseq_nil
Nil(i) == i
defseq_cons
[xxs](i) == if i=0 x else xs(i-1) fi
THMcard_product_swap
(AB) ~ (BA)
THMcard_settype
Bij(AA'f (x:AB(x B'(f(x)))  ({x:AB(x) } ~ {x:A'B'(x) })
THMcard_settype_sq
Bij(AA'f (x:AB(x B'(f(x)))  ({x:AB(x) } ~ {x:A'B'(x) })
THMset_functionality_wrt_one_one_corr_n_pred2
(x:AB(x B'(x))  ({x:AB(x) } ~ {x:AB'(x) })
THMset_functionality_wrt_one_one_corr_n_pred
(x:AB(x B'(x))  ({x:AB(x) } ~ {x:AB'(x) })
THMcard_sigma
(x:AB(x)) ~ (x:A'B'(x))  ((x:AB(x)) ~ (x:A'B'(x)))
THMproduct_functionality_wrt_one_one_corr_B
B,B':(AType). (x:AB(x) ~ B'(x))  ((x:AB(x)) ~ (x:AB'(x)))
THMcard_quotient
(q:A/E{x:Aq = x  A/E }) ~ A
THMproduct_functionality_wrt_one_one_corr
(A ~ A' (B ~ B' ((AB) ~ (A'B'))
THMcard_split_prod_intseg_family
a,b:c:{a...b}, B:({a..b}Type).
(i:{a..b}B(i)) ~ ((i:{a..c}B(i))(i:{c..b}B(i)))
THMunion_sigma_inverses
InvFuns(A+B;i:2if i=0 A else B fi;union_to_sigma;sigma_to_union)
THMcard_union_swap
(A+B) ~ (B+A)
THMcard_union_vs_sigma
(A+B) ~ (i:2if i=0 A else B fi)
THMcard_split_decbl
(x:A. Dec(P(x)))  (A ~ ({x:AP(x) }+{x:AP(x) }))
THMcard_sigma_st_dom
B:(AType), P:(AProp). (i:{i:AP(i) }B(i)) ~ {v:(i:AB(i))| P(v/x,y. x) }
THMcard_split_sigma_dom_decbl
B:(AType), P:(AProp).
(i:A. Dec(P(i)))

((i:AB(i)) ~ ((i:{i:AP(i) }B(i))+(i:{i:AP(i) }B(i))))
THMcard_nsub0_union
(0+A) ~ A
THMcard_nsub0_union_2
(A+0) ~ A
THMcard_split_decbl_squash
(x:A. Dec(P(x)))  (A ~ ({x:AP(x) }+{x:AP(x) }))
THMcard_split_sum_intseg_family
a,b:c:{a...b}, B:({a..b}Type).
(i:{a..b}B(i)) ~ ((i:{a..c}B(i))+(i:{c..b}B(i)))
THMcard_split_end_sum_intseg_family
a,b:B:({a..b}Type).
a<b  ((i:{a..b}B(i)) ~ ((i:{a..(b-1)}B(i))+B(b-1)))
THMcard_pi
(x:AB(x)) ~ (x:A'B'(x))  ((x:AB(x)) ~ (x:A'B'(x)))
THMfunction_functionality_wrt_one_one_corr_B
B,B':(AType). (x:AB(x) ~ B'(x))  ((x:AB(x)) ~ (x:AB'(x)))
THMfunction_functionality_wrt_one_one_corr
(A ~ A' (B ~ B' ((AB) ~ (A'B'))
THMcard_curry_simple
(ABC) ~ (ABC)
THMcard_curry
(z:(x:AB(x))C(z)) ~ (x:Ay:B(x)C(<x,y>))
THMcard_sigma_distr
(xy:(x:AB(x))C(xy)) ~ (x:Ay:B(x)C(<x,y>))
THMintseg_void
a,b:ba  (Void ~ {a..b})
THMnsub_void
Void ~ 0
THMintseg_shift
a,b,a',b':b-a = b'-a'  ({a..b} ~ {a'..b'})
THMintseg_shift_by
a:b,c:. {a..b} ~ {(a+c)..(b+c)}
THMnsub_unit
Unit ~ 1
THMnsub_bool
 ~ 2
THMnsub_intseg
c,a:b:c = b-a  ({a..b} ~ c)
THMnsub_intseg_rw
a,b:. {a..b} ~ (b-a)
THMintiseg_intseg
a,b',b:b = b'+1  ({a...b'} ~ {a..b})
THMintiseg_intseg_plus
a:b:. {a...b} ~ {a..(b+1)}
THMnsub_intiseg_rw
a,b:. {a...b} ~ (1+b-a)
THMintseg_split
a,b:c:{a...b}. ({a..c}+{c..b}) ~ {a..b}
THMnsub_add
c,a,b:a+b = c    ((a+b) ~ c)
THMnsub_mul
a,b,c:ab = c  ((ab) ~ c)
THMnsub_mul_rw
a,b:. (ab) ~ (ab)
THMmul_assoc_from_cross_assoc
a,b,c:a(bc) = (ab)c
THMfinite_indep_sum_card
a,b:. (A ~ a (B ~ b ((AB) ~ (ab))
THMnsub_inj_factorial2
Relevant to permutation counting problems since these injections are the finite permutations.
(b inj b) ~ (b!)
THMnsub_inj_factorial_tail
Relevant to so-called permutation counting problems since these injections are the ways to order a distinct values chosen from a total of b values.
(a inj b) ~ (b!a)
THMnsub_inj_factorial
A more direct proof of this fact is in nsub inj factorial2.
(k inj k) ~ (k!)
THMcard_pi_vs_nsub_pi
The size of the general product space (whose members are functions) of a finite family of finite classes is the integer product of those classes' sizes.
a:b:(a). (i:ab(i)) ~ ( i:ab(i))
THMcard_fun_vs_nsub_exp
Corollary to card pi vs nsub pi
a,b:. (ab) ~ (ba)
THMexp_exp_reduce1
a,b,c:c(ab) = (cb)a
THMexp_exp_reduce2
a,b,c:c(ab) = (ca)b
THMcard_curry_simple2
(ABC) ~ (BAC)
THMnsub_add_rw
The size of the disjoint union of two finite classes is the sum of those classes' sizes.
a,b:. (a+b) ~ (a+b)
THMcard_sigma_vs_nsub_sigma
The size of a general sum (whose members are pairs) of a finite family of finite classes is the integer sum of those classes' sizes.
a:b:(a). (i:ab(i)) ~ ( i:ab(i))
THMinv_pair_inv
(AB) ~ (A ~ B)
THMinv_pair_inv2
((AB)) ~ (A ~ B)
defnext_nat_pair
How to step from pair to pair exhaustively
next_nat_pair(xy) == xy/x,y. if y=0 <0,x+1> else <x+1,y-1> fi
THMnext_nat_pair_not_zeroes
The zero-zero pair does not succeed any other.
xy:(). <0,0> = next_nat_pair(xy 
THMnext_nat_pair_inj
Inj(; next_nat_pair)
defprev_nat_pair
Reverses next nat pair
prev_nat_pair(xy) == xy/x,y. if x=0 <y-1,0> else <x-1,y+1> fi
THMnext_nat_pair_vs_prev_nat_pair
InvFuns(;{xy:()| xy = <0,0>   };next_nat_pair;prev_nat_pair)
defnat_to_nat_pair
(i steps of next_nat_pair from <0,0>)
nat_to_nat_pair(i) == next_nat_pair{i}(<0,0>)
THMnat_to_nat_pair_inj
Inj(; nat_to_nat_pair)
THMnat_to_nat_pair_surj
Surj(; nat_to_nat_pair)
THMnat_to_nat_pair_bij
Bij(; nat_to_nat_pair)
THMcard_nat_vs_nat_nat
The ordered pairs of natural numbers can be placed in one-to-one correspondence with the natural numbers. (Cantor)
() ~ 
THMcard_nat_vs_nat_tuple
The k-tuples of natural numbers can be placed in one-to-one correspondence with the natural numbers theselves.
k:. (k) ~ 
THMcard_nat_vs_nat_tuples
The finite nonempty sequences of natural numbers can be placed in one-one correspondence with the natural numbers themselves.
(k:k) ~ 
THMcard_nat_vs_nat_tuples_all
The finite sequences of natural numbers can be placed in one-one correspondence with the natural numbers themselves.
(k:k) ~ 
THMcompose_iter_zero
f:(AA), x:Af{0}(x) = x
THMcompose_iter_zero_id
f:(AA). f{0} = Id
THMcompose_iter_once
f:(AA). f{1} = f
THMcompose_iter_pos
f:(AA), i:x:Af{i}(x) = f(f{i-1}(x))
THMcompose_iter_point_id
f:(AA), u:Af(u) = u  (i:f{i}(u) = u)
THMcompose_iter_pos_comp
f:(AA), i:f{i} = f o f{i-1}
THMcompose_iter_id
i:. Id{i} = Id  AA
THMcompose_iter_sum
x:Af:(AA), i,j,k:k = i+j  f{i}(f{j}(x)) = f{k}(x)
THMcompose_iter_sum_comp
f:(AA), i,j,k:k = i+j  f{i} o f{j} = f{k}
THMcompose_iter_sum_rw
x:Af:(AA), k:i:{0...k}. f{k}(x) = f{i}(f{k-i}(x))
THMcompose_iter_sum_comp_rw
f:(AA), k:i:{0...k}. f{k} = f{i} o f{k-i}
THMcompose_iter_prod
x:Af:(AA), i,j,k:k = ij  f{i}{j}(x) = f{k}(x A
THMcompose_iter_prod2
x:Af:(AA), i,j:f{i}{j}(x) = f{ij}(x)
THMcompose_iter_pos2
f:(AA), i:x:Af{i}(x) = f{i-1}(f(x))
THMcompose_iter_pos_comp2
f:(AA), i:f{i} = f{i-1} o f
THMcompose_iter_injection
Iteration of an injection is an injection.
Inj(AAf (i:. Inj(AAf{i}))
THMcompose_iter_inj_cycles
A finite permutation always cycles back on each argument.
k:f:(k inj k), u:ki:f{i}(u) = u
THMiter_perm_cycles_uniform
Some positive iteration of any finite permutation is the identity function.
k:f:(k inj k). i:u:kf{i}(u) = u
THMiter_perm_cycles_uniform2
Corollary of iter perm cycles uniform.
Some positive iteration of any finite permutation is the identity function.
k:f:(k inj k). i:f{i} = Id  kk
THMcompose_iter_injection2
f:(A inj A), i:f{i A inj A
THMcompose_iter_surjection
Iteration of a surjection is a surjection.
Surj(AAf (i:. Surj(AAf{i}))
THMcompose_iter_bijection
Iteration of a bijection is a bijection.
Bij(AAf (i:. Bij(AAf{i}))
THMcompose_iter_inverses
InvFuns(A;A;f;g (i:. InvFuns(A;A;f{i};g{i}))
THMdedekind_inf_imp_inf
Dedekind-Infinite(A Infinite(A)
THMdededing_imp_unb_inf
Dedekind-Infinite(A Unbounded(A)
THMdedekind_imp_nonfin
Dedekind-Infinite(A Finite(A)
THMnsub_surj_imp_a_rev_inj_gen
e:(BB). 
IsEqFun(B;e (a:f:(a onto B). (y.least x:. (f(x)) e y B inj a)
THMnsub_surj_imp_a_rev_inj
f:(a onto b). (y.least x:f(x)=y b inj a
THMnsub_bij_least_preimage_inverse
f:(a bij a). InvFuns(a;a;f;y.least x:f(x)=y)
THMnsub_surj_imp_a_rev_inj2
((a onto b))  ((b inj a))
THMsurj_typing_imp_le
((a onto b))  ba
THMnsub_inj_exteq_nsub_surj
(k inj k) =ext (k onto k)
THMnsub_surj_exteq_nsub_bij
(k onto k) =ext (k bij k)
THMnsub_surj_ooc_nsub_bij
(k onto k) ~ (k bij k)
THMnsub_inj_exteq_nsub_bij
(k inj k) =ext (k bij k)
THMnsub_inj_ooc_nsub_bij
(k inj k) ~ (k bij k)
THMnsub_inj_ooc_nsub_surj
(k inj k) ~ (k onto k)
THMnsub_bij_ooc_invpair
(a bij a) ~ (aa)
defmsize
The size of a finite multiset.
Msize(f) ==  i:kf(i)
defsized_mset
(multisets of size k)
a {k} T == {p:(aT)| Msize(p) = k }
defboolsize
size(a)(p) == Msize(x.if p(x) 1 else 0 fi)
defsized_bool
a {k}  == {p:(a)| size(a)(p) = k }
THMcard_boolset_vs_mset
(a {k} ) ~ (a {k} 2)
THMcard_st_vs_msize
f:(a2). (i:aP(i f(i) = 1  2)  ({x:aP(x) } ~ (Msize(f)))
THMcard_st_vs_boolsize
p:(a). {x:ap(x) } ~ (size(a)(p))
THMcard_st_sized_bool
p:(a {k} ). {i:ap(i) } ~ k
defsame_range_sep
same_range_sep(AB) == f,gj:B. (i:Af(i) = j (i:Ag(i) = j)
THMsame_range_sep_eqv
EquivRel on AB, same_range_sep(AB)
THMsame_range_sep_inj_eqv
EquivRel on A inj B, same_range_sep(AB)
COMcounting_intro2
Counting Indirectly - integer ranges. ...
COMcounting_intro3
Counting Indirectly - ordered pairs ...
COMcounting_intro4
Counting Indirectly - tuples ...
THMis_list_mem_split
x,a:Ays:A List. (x  a.ys x = a  (x  ys)
THMis_list_mem_null
x:A. (x  nil)  False
deflist_member_type
xs == {a:Aa  xs }
THMchessboard_example
(AH ~ 8)  ((AH{1...8}) ~ 64)
COMcounting_intro5
Counting indirectly - dependent ordered pairs ...
COMcounting_intro6
Counting indirectly - basic forms: dependent pairs (2). Counting(dependent pairs - 1) ...
IF YOU CAN SEE THIS go to /sfa/Nuprl/Shared/Xindentation_hack_doc.html

Origin Definitions Sections DiscrMathExt Doc