Cardinal arithmetic #
Arithmetic operations on cardinals are defined in SetTheory/Cardinal/Order.lean
. However, proving
the important theorem c * c = c
for infinite cardinals and its corollaries requires the use of
ordinal numbers. This is done within this file.
Main statements #
Cardinal.mul_eq_max
andCardinal.add_eq_max
state that the product (resp. sum) of two infinite cardinals is just their maximum. Several variations around this fact are also given.Cardinal.mk_list_eq_mk
: whenα
is infinite,α
andList α
have the same cardinality.
Tags #
cardinal arithmetic (for infinite cardinals)
Properties of mul
#
If α
is an infinite type, then α × α
and α
have the same cardinality.
If α
and β
are infinite types, then the cardinality of α × β
is the maximum
of the cardinalities of α
and β
.
@[simp]
theorem
Cardinal.mul_lt_of_lt
{a b c : Cardinal.{u_1}}
(hc : aleph0 ≤ c)
(h1 : a < c)
(h2 : b < c)
:
theorem
Cardinal.mul_eq_max_of_aleph0_le_left
{a b : Cardinal.{u_1}}
(h : aleph0 ≤ a)
(h' : b ≠ 0)
:
theorem
Cardinal.mul_eq_max_of_aleph0_le_right
{a b : Cardinal.{u_1}}
(h' : a ≠ 0)
(h : aleph0 ≤ b)
:
Properties of add
#
If α
is an infinite type, then α ⊕ α
and α
have the same cardinality.
If α
is an infinite type, then the cardinality of α ⊕ β
is the maximum
of the cardinalities of α
and β
.
theorem
Cardinal.add_le_of_le
{a b c : Cardinal.{u_1}}
(hc : aleph0 ≤ c)
(h1 : a ≤ c)
(h2 : b ≤ c)
:
theorem
Cardinal.add_lt_of_lt
{a b c : Cardinal.{u_1}}
(hc : aleph0 ≤ c)
(h1 : a < c)
(h2 : b < c)
:
theorem
Cardinal.eq_of_add_eq_of_aleph0_le
{a b c : Cardinal.{u_1}}
(h : a + b = c)
(ha : a < c)
(hc : aleph0 ≤ c)
:
theorem
Cardinal.eq_of_add_eq_add_left
{a b c : Cardinal.{u_1}}
(h : a + b = a + c)
(ha : a < aleph0)
:
theorem
Cardinal.eq_of_add_eq_add_right
{a b c : Cardinal.{u_1}}
(h : a + b = c + b)
(hb : b < aleph0)
:
Properties of ciSup
#
theorem
Cardinal.ciSup_add
{ι : Type u}
(f : ι → Cardinal.{v})
[Nonempty ι]
(hf : BddAbove (Set.range f))
(c : Cardinal.{v})
:
theorem
Cardinal.add_ciSup
{ι : Type u}
(f : ι → Cardinal.{v})
[Nonempty ι]
(hf : BddAbove (Set.range f))
(c : Cardinal.{v})
:
theorem
Cardinal.ciSup_add_ciSup
{ι : Type u}
{ι' : Type w}
(f : ι → Cardinal.{v})
[Nonempty ι]
[Nonempty ι']
(hf : BddAbove (Set.range f))
(g : ι' → Cardinal.{v})
(hg : BddAbove (Set.range g))
:
theorem
Cardinal.ciSup_mul_ciSup
{ι : Type u}
{ι' : Type w}
(f : ι → Cardinal.{v})
(g : ι' → Cardinal.{v})
:
theorem
Cardinal.sum_eq_iSup_lift
{ι : Type u}
{f : ι → Cardinal.{max u v}}
(hι : aleph0 ≤ mk ι)
(h : lift.{v, u} (mk ι) ≤ iSup f)
:
Properties of aleph
#
@[simp]
@[simp]
Properties about power
#
theorem
Cardinal.prod_eq_two_power
{ι : Type u}
[Infinite ι]
{c : ι → Cardinal.{v}}
(h₁ : ∀ (i : ι), 2 ≤ c i)
(h₂ : ∀ (i : ι), lift.{u, v} (c i) ≤ lift.{v, u} (mk ι))
:
theorem
Cardinal.power_eq_two_power
{c₁ c₂ : Cardinal.{u_1}}
(h₁ : aleph0 ≤ c₁)
(h₂ : 2 ≤ c₂)
(h₂' : c₂ ≤ c₁)
:
Computing cardinality of various types #
theorem
Cardinal.mk_equiv_eq_arrow_of_lift_eq
{α : Type u}
{β' : Type v}
[Infinite α]
(leq : lift.{v, u} (mk α) = lift.{u, v} (mk β'))
:
theorem
Cardinal.mk_equiv_of_lift_eq
{α : Type u}
{β' : Type v}
[Infinite α]
(leq : lift.{v, u} (mk α) = lift.{u, v} (mk β'))
:
theorem
Cardinal.mk_embedding_eq_arrow_of_lift_le
{α : Type u}
{β' : Type v}
[Infinite α]
(lle : lift.{u, v} (mk β') ≤ lift.{v, u} (mk α))
:
theorem
Cardinal.mk_surjective_eq_arrow_of_lift_le
{α : Type u}
{β' : Type v}
[Infinite α]
(lle : lift.{u, v} (mk β') ≤ lift.{v, u} (mk α))
:
Properties of compl
#
theorem
Cardinal.mk_compl_eq_mk_compl_finite_lift
{α : Type u}
{β : Type v}
[Finite α]
{s : Set α}
{t : Set β}
(h1 : lift.{max v w, u} (mk α) = lift.{max u w, v} (mk β))
(h2 : lift.{max v w, u} (mk ↑s) = lift.{max u w, v} (mk ↑t))
: