Documentation

Mathlib.SetTheory.Cardinal.Basic

Basic results on cardinal numbers #

We provide a collection of basic results on cardinal numbers, in particular focusing on finite/countable/small types and sets.

Main definitions #

References #

Tags #

cardinal number, cardinal arithmetic, cardinal exponentiation, aleph, Cantor's theorem, König's theorem, Konig's theorem

Lifting cardinals to a higher universe #

@[simp]
theorem Cardinal.mk_preimage_down {α : Type u} {s : Set α} :
theorem Cardinal.prod_eq_of_fintype {α : Type u} [h : Fintype α] (f : α → Cardinal.{v}) :
prod f = lift.{u, v} (∏ i : α, f i)

Basic cardinals #

@[simp]
theorem Set.Subsingleton.cardinalMk_le_one {α : Type u} {s : Set α} :

Alias of the reverse direction of Cardinal.mk_le_one_iff_set_subsingleton.

Order properties #

theorem Cardinal.sInf_eq_zero_iff {s : Set Cardinal.{u_1}} :
sInf s = 0 ↔ s = ∅ ∨ ∃ a ∈ s, a = 0
theorem Cardinal.iInf_eq_zero_iff {ι : Sort u_1} {f : ι → Cardinal.{u_2}} :
⨅ (i : ι), f i = 0 ↔ IsEmpty ι ∨ ∃ (i : ι), f i = 0
theorem Cardinal.iSup_of_empty {ι : Sort u_1} (f : ι → Cardinal.{u_2}) [IsEmpty ι] :
iSup f = 0

A variant of ciSup_of_empty but with 0 on the RHS for convenience

@[simp]
theorem Cardinal.lift_iInf {ι : Sort u_1} (f : ι → Cardinal.{v}) :
lift.{u, v} (iInf f) = ⨅ (i : ι), lift.{u, v} (f i)

Small sets of cardinals #

A set of cardinals is bounded above iff it's small, i.e. it corresponds to a usual ZFC set.

The type of cardinals in universe u is not Small.{u}. This is a version of the Burali-Forti paradox.

Bounds on suprema #

theorem Cardinal.sum_le_lift_mk_mul_iSup_lift {ι : Type u} (f : ι → Cardinal.{v}) :
sum f ≤ lift.{v, u} (mk ι) * ⨆ (i : ι), lift.{u, v} (f i)
theorem Cardinal.sum_le_lift_mk_mul_iSup {ι : Type u} (f : ι → Cardinal.{max u v}) :
sum f ≤ lift.{v, u} (mk ι) * ⨆ (i : ι), f i
theorem Cardinal.sum_le_mk_mul_iSup {ι : Type u} (f : ι → Cardinal.{u}) :
sum f ≤ mk ι * ⨆ (i : ι), f i
@[deprecated Cardinal.sum_le_lift_mk_mul_iSup (since := "2025-09-04")]
theorem Cardinal.sum_le_iSup_lift {ι : Type u} (f : ι → Cardinal.{max u v}) :
sum f ≤ lift.{v, u} (mk ι) * ⨆ (i : ι), f i

Alias of Cardinal.sum_le_lift_mk_mul_iSup.

@[deprecated Cardinal.sum_le_mk_mul_iSup (since := "2025-09-04")]
theorem Cardinal.sum_le_iSup {ι : Type u} (f : ι → Cardinal.{u}) :
sum f ≤ mk ι * ⨆ (i : ι), f i

Alias of Cardinal.sum_le_mk_mul_iSup.

The lift of a supremum is the supremum of the lifts.

theorem Cardinal.lift_iSup {ι : Type v} {f : ι → Cardinal.{w}} (hf : BddAbove (Set.range f)) :
lift.{u, w} (iSup f) = ⨆ (i : ι), lift.{u, w} (f i)

The lift of a supremum is the supremum of the lifts.

theorem Cardinal.lift_iSup_le {ι : Type v} {f : ι → Cardinal.{w}} {t : Cardinal.{max u w}} (hf : BddAbove (Set.range f)) (w : ∀ (i : ι), lift.{u, w} (f i) ≤ t) :

To prove that the lift of a supremum is bounded by some cardinal t, it suffices to show that the lift of each cardinal is bounded by t.

@[simp]
theorem Cardinal.lift_iSup_le_iff {ι : Type v} {f : ι → Cardinal.{w}} (hf : BddAbove (Set.range f)) {t : Cardinal.{max u w}} :
lift.{u, w} (iSup f) ≤ t ↔ ∀ (i : ι), lift.{u, w} (f i) ≤ t
theorem Cardinal.lift_iSup_le_lift_iSup {ι : Type v} {ι' : Type v'} {f : ι → Cardinal.{w}} {f' : ι' → Cardinal.{w'}} (hf : BddAbove (Set.range f)) (hf' : BddAbove (Set.range f')) {g : ι → ι'} (h : ∀ (i : ι), lift.{w', w} (f i) ≤ lift.{w, w'} (f' (g i))) :

To prove an inequality between the lifts to a common universe of two different supremums, it suffices to show that the lift of each cardinal from the smaller supremum if bounded by the lift of some cardinal from the larger supremum.

theorem Cardinal.lift_iSup_le_lift_iSup' {ι : Type v} {ι' : Type v'} {f : ι → Cardinal.{v}} {f' : ι' → Cardinal.{v'}} (hf : BddAbove (Set.range f)) (hf' : BddAbove (Set.range f')) (g : ι → ι') (h : ∀ (i : ι), lift.{v', v} (f i) ≤ lift.{v, v'} (f' (g i))) :

A variant of lift_iSup_le_lift_iSup with universes specialized via w = v and w' = v'. This is sometimes necessary to avoid universe unification issues.

theorem Cardinal.lift_iSup_le_sum {ι : Type u} [Small.{v, u} ι] (f : ι → Cardinal.{v}) :
lift.{u, v} (⨆ (i : ι), f i) ≤ sum f

Properties about the cast from ℕ #

theorem Cardinal.nat_succ (n : ℕ) :
↑n.succ = Order.succ ↑n
theorem Cardinal.succ_natCast (n : ℕ) :
Order.succ ↑n = ↑n + 1
theorem Cardinal.natCast_add_one_le_iff {n : ℕ} {c : Cardinal.{u_1}} :
↑n + 1 ≤ c ↔ ↑n < c
theorem Cardinal.exists_finset_eq_card {α : Type u_1} {n : ℕ} (h : ↑n ≤ mk α) :
∃ (s : Finset α), n = s.card
theorem Cardinal.exists_finset_le_card (α : Type u_1) (n : ℕ) (h : ↑n ≤ mk α) :
∃ (s : Finset α), n ≤ s.card
theorem Cardinal.card_le_of {α : Type u} {n : ℕ} (H : ∀ (s : Finset α), s.card ≤ n) :
mk α ≤ ↑n
theorem Cardinal.cantor' (a : Cardinal.{u_1}) {b : Cardinal.{u_1}} (hb : 1 < b) :
a < b ^ a
@[simp]

Properties about aleph0 #

@[simp]
@[deprecated Cardinal.natCast_lt_aleph0 (since := "2026-01-21")]
theorem Cardinal.nat_lt_aleph0 (n : ℕ) :
↑n < aleph0
@[simp]
theorem Cardinal.lt_aleph0 {c : Cardinal.{u_1}} :
c < aleph0 ↔ ∃ (n : ℕ), c = ↑n
theorem Cardinal.aleph0_le {c : Cardinal.{u_1}} :
aleph0 ≤ c ↔ ∀ (n : ℕ), ↑n ≤ c
theorem Cardinal.exists_eq_natCast_of_iSup_eq {ι : Type u} [Nonempty ι] (f : ι → Cardinal.{v}) (hf : BddAbove (Set.range f)) (n : ℕ) (h : ⨆ (i : ι), f i = ↑n) :
∃ (i : ι), f i = ↑n
theorem Cardinal.mk_eq_nat_iff {α : Type u} {n : ℕ} :
mk α = ↑n ↔ Nonempty (α ≃ Fin n)
theorem Set.Finite.lt_aleph0 {α : Type u} {S : Set α} :

Alias of the reverse direction of Cardinal.lt_aleph0_iff_set_finite.

@[simp]
theorem Cardinal.lt_aleph0_iff_subtype_finite {α : Type u} {p : α → Prop} :
mk { x : α // p x } < aleph0 ↔ {x : α | p x}.Finite
@[simp]
theorem Cardinal.mk_le_aleph0 {α : Type u} [Countable α] :

Alias of the reverse direction of Cardinal.le_aleph0_iff_set_countable.

@[simp]
theorem Cardinal.le_aleph0_iff_subtype_countable {α : Type u} {p : α → Prop} :
mk { x : α // p x } ≤ aleph0 ↔ {x : α | p x}.Countable
@[simp]
theorem Cardinal.aleph0_lt_mk {α : Type u} [Uncountable α] :
theorem Cardinal.add_lt_aleph0 {a b : Cardinal.{u_1}} (ha : a < aleph0) (hb : b < aleph0) :
a + b < aleph0

See also Cardinal.nsmul_lt_aleph0_iff_of_ne_zero if you already have n ≠ 0.

See also Cardinal.nsmul_lt_aleph0_iff for a hypothesis-free version.

theorem Cardinal.mul_lt_aleph0 {a b : Cardinal.{u_1}} (ha : a < aleph0) (hb : b < aleph0) :
a * b < aleph0
theorem Cardinal.power_lt_aleph0 {a b : Cardinal.{u_1}} (ha : a < aleph0) (hb : b < aleph0) :
a ^ b < aleph0
@[simp]
theorem Cardinal.mk_lt_aleph0 {α : Type u} [Finite α] :
@[simp]
theorem Cardinal.aleph0_le_mk (α : Type u) [Infinite α] :
@[simp]
theorem Cardinal.mk_eq_aleph0 (α : Type u_1) [Countable α] [Infinite α] :
@[simp]
theorem Cardinal.nat_mul_aleph0 {n : ℕ} (hn : n ≠ 0) :
@[simp]
theorem Cardinal.aleph0_mul_nat {n : ℕ} (hn : n ≠ 0) :
@[simp]
theorem Cardinal.add_le_aleph0 {c₁ c₂ : Cardinal.{u_1}} :
c₁ + c₂ ≤ aleph0 ↔ c₁ ≤ aleph0 ∧ c₂ ≤ aleph0
@[simp]
@[simp]
theorem Cardinal.exists_nat_eq_of_le_nat {c : Cardinal.{u_1}} {n : ℕ} (h : c ≤ ↑n) :
∃ m ≤ n, c = ↑m

Cardinalities of basic sets and types #

@[simp]
theorem Cardinal.mk_additive {α : Type u} :
mk (Additive α) = mk α
@[simp]
@[simp]
theorem Cardinal.mk_mulOpposite {α : Type u} :
@[simp]
theorem Cardinal.mk_addOpposite {α : Type u} :
theorem Cardinal.mk_singleton {α : Type u} (x : α) :
mk ↑{x} = 1
@[simp]
theorem Cardinal.mk_vector (α : Type u) (n : ℕ) :
mk (List.Vector α n) = mk α ^ n
theorem Cardinal.mk_list_eq_sum_pow (α : Type u) :
mk (List α) = sum fun (n : ℕ) => mk α ^ n
theorem Cardinal.sum_zero_pow :
(sum fun (n : ℕ) => 0 ^ n) = 1
theorem Cardinal.mk_quot_le {α : Type u} {r : α → α → Prop} :
mk (Quot r) ≤ mk α
theorem Cardinal.mk_quotient_le {α : Type u} {s : Setoid α} :
mk (Quotient s) ≤ mk α
theorem Cardinal.mk_subtype_le_of_subset {α : Type u} {p q : α → Prop} (h : ∀ ⦃x : α⦄, p x → q x) :
theorem Cardinal.mk_le_mk_of_subset {α : Type u_1} {s t : Set α} (h : s ⊆ t) :
mk ↑s ≤ mk ↑t
@[deprecated Cardinal.mk_eq_zero (since := "2026-01-31")]
theorem Cardinal.mk_emptyCollection (α : Type u) :
mk ↑∅ = 0
theorem Cardinal.mk_set_eq_zero_iff {α : Type u} {s : Set α} :
mk ↑s = 0 ↔ s = ∅
@[deprecated Cardinal.mk_set_eq_zero_iff (since := "2026-01-31")]
theorem Cardinal.mk_emptyCollection_iff {α : Type u} {s : Set α} :
mk ↑s = 0 ↔ s = ∅

Alias of Cardinal.mk_set_eq_zero_iff.

theorem Cardinal.mk_set_ne_zero_iff {α : Type u} {s : Set α} :
mk ↑s ≠ 0 ↔ s.Nonempty
@[simp]
theorem Cardinal.mk_univ {α : Type u} :
mk ↑Set.univ = mk α
@[simp]
theorem Cardinal.mk_setProd {α β : Type u} (s : Set α) (t : Set β) :
mk ↑(s ×ˢ t) = mk ↑s * mk ↑t
theorem Cardinal.mk_image_le {α β : Type u} {f : α → β} {s : Set α} :
mk ↑(f '' s) ≤ mk ↑s
theorem Cardinal.mk_image2_le {α β γ : Type u} {f : α → β → γ} {s : Set α} {t : Set β} :
mk ↑(Set.image2 f s t) ≤ mk ↑s * mk ↑t
theorem Cardinal.mk_image_le_lift {α : Type u} {β : Type v} {f : α → β} {s : Set α} :
lift.{u, v} (mk ↑(f '' s)) ≤ lift.{v, u} (mk ↑s)
theorem Cardinal.mk_range_le {α β : Type u} {f : α → β} :
mk ↑(Set.range f) ≤ mk α
theorem Cardinal.mk_range_le_lift {α : Type u} {β : Type v} {f : α → β} :
theorem Cardinal.mk_range_eq {α β : Type u} (f : α → β) (h : Function.Injective f) :
mk ↑(Set.range f) = mk α
theorem Cardinal.mk_range_eq_of_injective {α : Type u} {β : Type v} {f : α → β} (hf : Function.Injective f) :
@[deprecated Cardinal.mk_range_eq_of_injective (since := "2026-01-06")]
theorem Cardinal.mk_range_eq_lift {α : Type u} {β : Type v} {f : α → β} (hf : Function.Injective f) :
theorem Cardinal.lift_mk_le_lift_mk_of_injective {α : Type u} {β : Type v} {f : α → β} (hf : Function.Injective f) :
theorem Cardinal.lift_mk_le_lift_mk_of_surjective {α : Type u} {β : Type v} {f : α → β} (hf : Function.Surjective f) :
theorem Cardinal.mk_image_eq_of_injOn {α β : Type u} (f : α → β) (s : Set α) (h : Set.InjOn f s) :
mk ↑(f '' s) = mk ↑s
theorem Cardinal.mk_image_eq_of_injOn_lift {α : Type u} {β : Type v} (f : α → β) (s : Set α) (h : Set.InjOn f s) :
lift.{u, v} (mk ↑(f '' s)) = lift.{v, u} (mk ↑s)
theorem Cardinal.mk_image_eq {α β : Type u} {f : α → β} {s : Set α} (hf : Function.Injective f) :
mk ↑(f '' s) = mk ↑s
theorem Cardinal.mk_image_eq_lift {α : Type u} {β : Type v} (f : α → β) (s : Set α) (h : Function.Injective f) :
lift.{u, v} (mk ↑(f '' s)) = lift.{v, u} (mk ↑s)
@[simp]
theorem Cardinal.mk_image_embedding_lift {α : Type u} {β : Type v} (f : α ↪ β) (s : Set α) :
lift.{u, v} (mk ↑(⇑f '' s)) = lift.{v, u} (mk ↑s)
@[simp]
theorem Cardinal.mk_image_embedding {α β : Type u} (f : α ↪ β) (s : Set α) :
mk ↑(⇑f '' s) = mk ↑s
theorem Cardinal.iSup_mk_le_mk_iUnion {α : Type u} {ι : Type v} {f : ι → Set α} :
⨆ (i : ι), mk ↑(f i) ≤ mk ↑(⋃ (i : ι), f i)
theorem Cardinal.mk_iUnion_le_sum_mk {α ι : Type u} {f : ι → Set α} :
mk ↑(⋃ (i : ι), f i) ≤ sum fun (i : ι) => mk ↑(f i)
theorem Cardinal.mk_iUnion_le_sum_mk_lift {α : Type u} {ι : Type v} {f : ι → Set α} :
lift.{v, u} (mk ↑(⋃ (i : ι), f i)) ≤ sum fun (i : ι) => mk ↑(f i)
theorem Cardinal.mk_iUnion_eq_sum_mk {α ι : Type u} {f : ι → Set α} (h : Pairwise (Function.onFun Disjoint f)) :
mk ↑(⋃ (i : ι), f i) = sum fun (i : ι) => mk ↑(f i)
theorem Cardinal.mk_iUnion_eq_sum_mk_lift {α : Type u} {ι : Type v} {f : ι → Set α} (h : Pairwise (Function.onFun Disjoint f)) :
lift.{v, u} (mk ↑(⋃ (i : ι), f i)) = sum fun (i : ι) => mk ↑(f i)
theorem Cardinal.mk_iUnion_le {α ι : Type u} (f : ι → Set α) :
mk ↑(⋃ (i : ι), f i) ≤ mk ι * ⨆ (i : ι), mk ↑(f i)
theorem Cardinal.mk_iUnion_le_lift {α : Type u} {ι : Type v} (f : ι → Set α) :
lift.{v, u} (mk ↑(⋃ (i : ι), f i)) ≤ lift.{u, v} (mk ι) * ⨆ (i : ι), lift.{v, u} (mk ↑(f i))
theorem Cardinal.mk_sUnion_le {α : Type u} (A : Set (Set α)) :
mk ↑(⋃₀ A) ≤ mk ↑A * ⨆ (s : ↑A), mk ↑↑s
theorem Cardinal.mk_biUnion_le {ι α : Type u} (A : ι → Set α) (s : Set ι) :
mk ↑(⋃ x ∈ s, A x) ≤ mk ↑s * ⨆ (x : ↑s), mk ↑(A ↑x)
theorem Cardinal.mk_biUnion_le_lift {α : Type u} {ι : Type v} (A : ι → Set α) (s : Set ι) :
lift.{v, u} (mk ↑(⋃ x ∈ s, A x)) ≤ lift.{u, v} (mk ↑s) * ⨆ (x : ↑s), lift.{v, u} (mk ↑(A ↑x))
theorem Cardinal.finset_card_lt_aleph0 {α : Type u} (s : Finset α) :
mk ↑↑s < aleph0
theorem Cardinal.mk_set_eq_nat_iff_finset {α : Type u_1} {s : Set α} {n : ℕ} :
mk ↑s = ↑n ↔ ∃ (t : Finset α), ↑t = s ∧ t.card = n
theorem Cardinal.mk_eq_nat_iff_finset {α : Type u} {n : ℕ} :
mk α = ↑n ↔ ∃ (t : Finset α), ↑t = Set.univ ∧ t.card = n
theorem Cardinal.mk_eq_nat_iff_fintype {α : Type u} {n : ℕ} :
mk α = ↑n ↔ ∃ (h : Fintype α), Fintype.card α = n
theorem Cardinal.mk_set_eq_one_iff {α : Type u} {s : Set α} :
mk ↑s = 1 ↔ ∃ (x : α), s = {x}
theorem Cardinal.mk_union_add_mk_inter {α : Type u} {S T : Set α} :
mk ↑(S ∪ T) + mk ↑(S ∩ T) = mk ↑S + mk ↑T
theorem Cardinal.mk_union_le {α : Type u} (S T : Set α) :
mk ↑(S ∪ T) ≤ mk ↑S + mk ↑T

The cardinality of a union is at most the sum of the cardinalities of the two sets.

theorem Cardinal.mk_union_of_disjoint {α : Type u} {S T : Set α} (H : Disjoint S T) :
mk ↑(S ∪ T) = mk ↑S + mk ↑T
theorem Cardinal.mk_insert {α : Type u} {s : Set α} {a : α} (h : a ∉ s) :
mk ↑(insert a s) = mk ↑s + 1
theorem Cardinal.mk_insert_le {α : Type u} {s : Set α} {a : α} :
mk ↑(insert a s) ≤ mk ↑s + 1
theorem Cardinal.mk_sum_compl {α : Type u_1} (s : Set α) :
mk ↑s + mk ↑sᶜ = mk α
theorem Cardinal.mk_le_iff_forall_finset_subset_card_le {α : Type u} {n : ℕ} {t : Set α} :
mk ↑t ≤ ↑n ↔ ∀ (s : Finset α), ↑s ⊆ t → s.card ≤ n
theorem Cardinal.mk_subtype_mono {α : Type u} {p q : α → Prop} (h : ∀ (x : α), p x → q x) :
mk { x : α // p x } ≤ mk { x : α // q x }
theorem Cardinal.card_lt_card_of_right_finite {α : Type u} {A B : Set α} (hfin : B.Finite) (hlt : A ⊂ B) :
mk ↑A < mk ↑B
theorem Cardinal.card_lt_card_of_left_finite {α : Type u} {A B : Set α} (hfin : A.Finite) (hlt : A ⊂ B) :
mk ↑A < mk ↑B
theorem Cardinal.le_mk_diff_add_mk {α : Type u} (S T : Set α) :
mk ↑S ≤ mk ↑(S \ T) + mk ↑T
theorem Cardinal.mk_diff_add_mk {α : Type u} {S T : Set α} (h : T ⊆ S) :
mk ↑(S \ T) + mk ↑T = mk ↑S
theorem Cardinal.diff_nonempty_of_mk_lt_mk {α : Type u} {S T : Set α} (h : mk ↑S < mk ↑T) :
(T \ S).Nonempty
theorem Cardinal.compl_nonempty_of_mk_lt_mk {α : Type u} {S : Set α} (h : mk ↑S < mk α) :
theorem Cardinal.mk_union_le_aleph0 {α : Type u_1} {P Q : Set α} :
mk ↑(P ∪ Q) ≤ aleph0 ↔ mk ↑P ≤ aleph0 ∧ mk ↑Q ≤ aleph0
theorem Cardinal.mk_sep {α : Type u} (s : Set α) (t : α → Prop) :
mk ↑{x : α | x ∈ s ∧ t x} = mk ↑{x : ↑s | t ↑x}
theorem Cardinal.mk_preimage_of_injective_lift {α : Type u} {β : Type v} (f : α → β) (s : Set β) (h : Function.Injective f) :
theorem Cardinal.mk_preimage_of_subset_range_lift {α : Type u} {β : Type v} (f : α → β) (s : Set β) (h : s ⊆ Set.range f) :
theorem Cardinal.mk_preimage_of_injective_of_subset_range_lift {α : Type u} {β : Type v} (f : α → β) (s : Set β) (h : Function.Injective f) (h2 : s ⊆ Set.range f) :
lift.{v, u} (mk ↑(f ⁻¹' s)) = lift.{u, v} (mk ↑s)
theorem Cardinal.mk_preimage_of_injective_of_subset_range {α β : Type u} (f : α → β) (s : Set β) (h : Function.Injective f) (h2 : s ⊆ Set.range f) :
mk ↑(f ⁻¹' s) = mk ↑s
@[simp]
theorem Cardinal.mk_preimage_equiv_lift {α : Type u} {β : Type v} (f : α ≃ β) (s : Set β) :
lift.{v, u} (mk ↑(⇑f ⁻¹' s)) = lift.{u, v} (mk ↑s)
@[simp]
theorem Cardinal.mk_preimage_equiv {α β : Type u} (f : α ≃ β) (s : Set β) :
mk ↑(⇑f ⁻¹' s) = mk ↑s
theorem Cardinal.mk_preimage_of_injective {α β : Type u} (f : α → β) (s : Set β) (h : Function.Injective f) :
mk ↑(f ⁻¹' s) ≤ mk ↑s
theorem Cardinal.mk_preimage_of_subset_range {α β : Type u} (f : α → β) (s : Set β) (h : s ⊆ Set.range f) :
mk ↑s ≤ mk ↑(f ⁻¹' s)
theorem Cardinal.mk_subset_ge_of_subset_image_lift {α : Type u} {β : Type v} (f : α → β) {s : Set α} {t : Set β} (h : t ⊆ f '' s) :
lift.{u, v} (mk ↑t) ≤ lift.{v, u} (mk ↑{x : α | x ∈ s ∧ f x ∈ t})
theorem Cardinal.mk_subset_ge_of_subset_image {α β : Type u} (f : α → β) {s : Set α} {t : Set β} (h : t ⊆ f '' s) :
mk ↑t ≤ mk ↑{x : α | x ∈ s ∧ f x ∈ t}
theorem Cardinal.le_mk_iff_exists_subset {c : Cardinal.{u}} {α : Type u} {s : Set α} :
c ≤ mk ↑s ↔ ∃ p ⊆ s, mk ↑p = c
@[simp]
theorem Cardinal.mk_range_inl {α : Type u} {β : Type v} :
@[simp]
theorem Cardinal.mk_range_inr {α : Type u} {β : Type v} :
theorem Cardinal.two_le_iff {α : Type u} :
2 ≤ mk α ↔ ∃ (x : α) (y : α), x ≠ y
theorem Cardinal.two_le_iff' {α : Type u} (x : α) :
2 ≤ mk α ↔ ∃ (y : α), y ≠ x
theorem Cardinal.mk_eq_two_iff {α : Type u} :
mk α = 2 ↔ ∃ (x : α) (y : α), x ≠ y ∧ {x, y} = Set.univ
theorem Cardinal.mk_eq_two_iff' {α : Type u} (x : α) :
mk α = 2 ↔ ∃! y : α, y ≠ x
theorem Cardinal.exists_notMem_of_length_lt {α : Type u_1} (l : List α) (h : ↑l.length < mk α) :
∃ (z : α), z ∉ l
theorem Cardinal.exists_ne_ne_of_three_le {α : Type u_1} (h : 3 ≤ mk α) (x y : α) :
∃ (z : α), z ≠ x ∧ z ≠ y
@[deprecated Cardinal.exists_ne_ne_of_three_le (since := "2026-02-17")]
theorem Cardinal.three_le {α : Type u_1} (h : 3 ≤ mk α) (x y : α) :
∃ (z : α), z ≠ x ∧ z ≠ y

Alias of Cardinal.exists_ne_ne_of_three_le.

powerlt operation #

noncomputable def Cardinal.powerlt (a b : Cardinal.{u}) :

The function a ^< b, defined as the supremum of a ^ c for c < b.

Equations
Instances For

    The function a ^< b, defined as the supremum of a ^ c for c < b.

    Equations
    Instances For
      theorem Cardinal.le_powerlt {b c : Cardinal.{u}} (a : Cardinal.{u}) (h : c < b) :
      a ^ c ≤ a ^< b
      theorem Cardinal.powerlt_le {a b c : Cardinal.{u}} :
      a ^< b ≤ c ↔ ∀ x < b, a ^ x ≤ c
      theorem Cardinal.powerlt_le_powerlt_left {a b c : Cardinal.{u_1}} (h : b ≤ c) :
      a ^< b ≤ a ^< c
      theorem Cardinal.powerlt_succ {a b : Cardinal.{u_1}} (h : a ≠ 0) :
      a ^< Order.succ b = a ^ b
      theorem Cardinal.powerlt_min {a b c : Cardinal.{u_1}} :
      a ^< min b c = min (a ^< b) (a ^< c)
      theorem Cardinal.powerlt_max {a b c : Cardinal.{u_1}} :
      a ^< max b c = max (a ^< b) (a ^< c)
      theorem Cardinal.zero_powerlt {a : Cardinal.{u_1}} (h : a ≠ 0) :
      0 ^< a = 1
      @[simp]
      theorem WellFounded.cardinalMk_subtype_lt_min_compl_le {α : Type u} {r : α → α → Prop} (wf : WellFounded r) {s : Set α} (hs : sᶜ.Nonempty) :
      Cardinal.mk { x : α // r x (wf.min sᶜ hs) } ≤ Cardinal.mk ↑s

      The cardinality of a set is an upper-bound for the amount of elements before the set's mex (minimum excluded value)