Documentation

Mathlib.SetTheory.Cardinal.ToNat

Projection from cardinal numbers to natural numbers #

In this file we define Cardinal.toNat to be the natural projection Cardinal → ℕ, sending all infinite cardinals to zero. We also prove basic lemmas about this definition.

This function sends finite cardinals to the corresponding natural, and infinite cardinals to 0.

Equations
Instances For
    @[simp]
    theorem Cardinal.toNat_toENat (a : Cardinal.{u_1}) :
    ENat.toNat (Cardinal.toENat a) = Cardinal.toNat a
    @[simp]
    theorem Cardinal.toNat_ofENat (n : ℕ∞) :
    Cardinal.toNat n = ENat.toNat n
    @[simp]
    theorem Cardinal.toNat_natCast (n : ) :
    Cardinal.toNat n = n
    @[simp]
    theorem Cardinal.toNat_eq_zero {c : Cardinal.{u}} :
    Cardinal.toNat c = 0 c = 0 Cardinal.aleph0 c
    theorem Cardinal.toNat_ne_zero {c : Cardinal.{u}} :
    Cardinal.toNat c 0 c 0 c < Cardinal.aleph0
    @[simp]
    theorem Cardinal.toNat_pos {c : Cardinal.{u}} :
    0 < Cardinal.toNat c c 0 c < Cardinal.aleph0
    theorem Cardinal.cast_toNat_of_lt_aleph0 {c : Cardinal.{u_1}} (h : c < Cardinal.aleph0) :
    (Cardinal.toNat c) = c
    theorem Cardinal.cast_toNat_of_aleph0_le {c : Cardinal.{u_1}} (h : Cardinal.aleph0 c) :
    (Cardinal.toNat c) = 0
    theorem Cardinal.toNat_eq_iff_eq_of_lt_aleph0 {c : Cardinal.{u}} {d : Cardinal.{u}} (hc : c < Cardinal.aleph0) (hd : d < Cardinal.aleph0) :
    Cardinal.toNat c = Cardinal.toNat d c = d

    Two finite cardinals are equal iff they are equal their Cardinal.toNat projections are equal.

    theorem Cardinal.toNat_le_iff_le_of_lt_aleph0 {c : Cardinal.{u}} {d : Cardinal.{u}} (hc : c < Cardinal.aleph0) (hd : d < Cardinal.aleph0) :
    Cardinal.toNat c Cardinal.toNat d c d
    theorem Cardinal.toNat_lt_iff_lt_of_lt_aleph0 {c : Cardinal.{u}} {d : Cardinal.{u}} (hc : c < Cardinal.aleph0) (hd : d < Cardinal.aleph0) :
    Cardinal.toNat c < Cardinal.toNat d c < d
    theorem Cardinal.toNat_le_toNat {c : Cardinal.{u}} {d : Cardinal.{u}} (hcd : c d) (hd : d < Cardinal.aleph0) :
    Cardinal.toNat c Cardinal.toNat d
    @[deprecated Cardinal.toNat_le_toNat]
    theorem Cardinal.toNat_le_of_le_of_lt_aleph0 {c : Cardinal.{u}} {d : Cardinal.{u}} (hd : d < Cardinal.aleph0) (hcd : c d) :
    Cardinal.toNat c Cardinal.toNat d
    theorem Cardinal.toNat_lt_toNat {c : Cardinal.{u}} {d : Cardinal.{u}} (hcd : c < d) (hd : d < Cardinal.aleph0) :
    Cardinal.toNat c < Cardinal.toNat d
    @[deprecated Cardinal.toNat_lt_toNat]
    theorem Cardinal.toNat_lt_of_lt_of_lt_aleph0 {c : Cardinal.{u}} {d : Cardinal.{u}} (hd : d < Cardinal.aleph0) (hcd : c < d) :
    Cardinal.toNat c < Cardinal.toNat d
    @[deprecated Cardinal.toNat_natCast]
    theorem Cardinal.toNat_cast (n : ) :
    Cardinal.toNat n = n

    Alias of Cardinal.toNat_natCast.

    @[simp]
    theorem Cardinal.toNat_ofNat (n : ) [Nat.AtLeastTwo n] :
    Cardinal.toNat (OfNat.ofNat n) = OfNat.ofNat n

    toNat has a right-inverse: coercion.

    @[simp]
    theorem Cardinal.mk_toNat_of_infinite {α : Type u} [h : Infinite α] :
    Cardinal.toNat (Cardinal.mk α) = 0
    @[simp]
    theorem Cardinal.aleph0_toNat :
    Cardinal.toNat Cardinal.aleph0 = 0
    theorem Cardinal.mk_toNat_eq_card {α : Type u} [Fintype α] :
    Cardinal.toNat (Cardinal.mk α) = Fintype.card α
    theorem Cardinal.zero_toNat :
    Cardinal.toNat 0 = 0
    theorem Cardinal.one_toNat :
    Cardinal.toNat 1 = 1
    theorem Cardinal.toNat_eq_iff {c : Cardinal.{u}} {n : } (hn : n 0) :
    Cardinal.toNat c = n c = n
    theorem Cardinal.toNat_eq_ofNat {c : Cardinal.{u}} {n : } [Nat.AtLeastTwo n] :
    Cardinal.toNat c = OfNat.ofNat n c = OfNat.ofNat n

    A version of toNat_eq_iff for literals

    @[simp]
    theorem Cardinal.toNat_eq_one {c : Cardinal.{u}} :
    Cardinal.toNat c = 1 c = 1
    @[simp]
    theorem Cardinal.toNat_lift (c : Cardinal.{v}) :
    Cardinal.toNat (Cardinal.lift.{u, v} c) = Cardinal.toNat c
    theorem Cardinal.toNat_congr {α : Type u} {β : Type v} (e : α β) :
    Cardinal.toNat (Cardinal.mk α) = Cardinal.toNat (Cardinal.mk β)
    theorem Cardinal.toNat_mul (x : Cardinal.{u_1}) (y : Cardinal.{u_1}) :
    Cardinal.toNat (x * y) = Cardinal.toNat x * Cardinal.toNat y
    @[deprecated map_prod]
    theorem Cardinal.toNat_finset_prod {α : Type u} (s : Finset α) (f : αCardinal.{u_1}) :
    Cardinal.toNat (Finset.prod s fun (i : α) => f i) = Finset.prod s fun (i : α) => Cardinal.toNat (f i)
    @[simp]
    theorem Cardinal.toNat_add {c : Cardinal.{u}} {d : Cardinal.{u}} (hc : c < Cardinal.aleph0) (hd : d < Cardinal.aleph0) :
    Cardinal.toNat (c + d) = Cardinal.toNat c + Cardinal.toNat d
    @[simp]
    theorem Cardinal.toNat_lift_add_lift {a : Cardinal.{u}} {b : Cardinal.{v}} (ha : a < Cardinal.aleph0) (hb : b < Cardinal.aleph0) :
    Cardinal.toNat (Cardinal.lift.{v, u} a + Cardinal.lift.{u, v} b) = Cardinal.toNat a + Cardinal.toNat b
    @[deprecated Cardinal.toNat_lift_add_lift]
    theorem Cardinal.toNat_add_of_lt_aleph0 {a : Cardinal.{u}} {b : Cardinal.{v}} (ha : a < Cardinal.aleph0) (hb : b < Cardinal.aleph0) :
    Cardinal.toNat (Cardinal.lift.{v, u} a + Cardinal.lift.{u, v} b) = Cardinal.toNat a + Cardinal.toNat b

    Alias of Cardinal.toNat_lift_add_lift.