File: Mathlib/SetTheory/Cardinal/ENat.lean

full_name: Cardinal.ofENat
code: /-- Coercion `ℕ∞ → Cardinal`. It sends natural numbers to natural numbers and `⊤` to `ℵ₀`.

See also `Cardinal.ofENatHom` for a bundled homomorphism version. -/
@[coe] def ofENat : ℕ∞ → Cardinal
  
goal: ℕ∞ → Cardinal.{u_1}

full_name: Cardinal.instCoeENat
code: instance : Coe ENat Cardinal 
goal: Coe ℕ∞ Cardinal.{u_1}

full_name: Cardinal.ofENat_top
code: @[simp, norm_cast] lemma ofENat_top : ofENat ⊤ = ℵ₀ 
goal: ↑⊤ = Cardinal.aleph0

full_name: Cardinal.ofENat_nat
code: @[simp, norm_cast] lemma ofENat_nat (n : ℕ) : ofENat n = n 
goal: ↑↑n = ↑n

full_name: Cardinal.ofENat_zero
code: @[simp, norm_cast] lemma ofENat_zero : ofENat 0 = 0 
goal: ↑0 = 0

full_name: Cardinal.ofENat_one
code: @[simp, norm_cast] lemma ofENat_one : ofENat 1 = 1 
goal: ↑1 = 1

full_name: Cardinal.ofENat_ofNat
code: @[simp, norm_cast] lemma ofENat_ofNat (n : ℕ) [n.AtLeastTwo] :
    ((no_index (OfNat.ofNat n : ℕ∞)) : Cardinal) = OfNat.ofNat n 
goal: ↑(OfNat.ofNat n) = OfNat.ofNat n

full_name: Cardinal.ofENat_strictMono
code: lemma ofENat_strictMono : StrictMono ofENat 
goal: StrictMono Cardinal.ofENat

full_name: Cardinal.ofENat_lt_ofENat
code: @[simp, norm_cast]
lemma ofENat_lt_ofENat {m n : ℕ∞} : (m : Cardinal) < n ↔ m < n 
goal: ↑m < ↑n ↔ m < n

full_name: Cardinal.ofENat_lt_aleph0
code: @[simp, norm_cast]
lemma ofENat_lt_aleph0 {m : ℕ∞} : (m : Cardinal) < ℵ₀ ↔ m < ⊤ 
goal: ↑m < Cardinal.aleph0 ↔ m < ⊤

full_name: Cardinal.ofENat_lt_nat
code: @[simp] lemma ofENat_lt_nat {m : ℕ∞} {n : ℕ} : ofENat m < n ↔ m < n 
goal: ↑m < ↑n ↔ m < ↑n

full_name: Cardinal.ofENat_lt_ofNat
code: @[simp] lemma ofENat_lt_ofNat {m : ℕ∞} {n : ℕ} [n.AtLeastTwo] :
    ofENat m < no_index (OfNat.ofNat n) ↔ m < OfNat.ofNat n 
goal: ↑m < OfNat.ofNat n ↔ m < OfNat.ofNat n

full_name: Cardinal.nat_lt_ofENat
code: @[simp] lemma nat_lt_ofENat {m : ℕ} {n : ℕ∞} : (m : Cardinal) < n ↔ m < n 
goal: ↑m < ↑n ↔ ↑m < n

full_name: Cardinal.ofENat_pos
code: @[simp] lemma ofENat_pos {m : ℕ∞} : 0 < (m : Cardinal) ↔ 0 < m 
goal: 0 < ↑m ↔ 0 < m

full_name: Cardinal.one_lt_ofENat
code: @[simp] lemma one_lt_ofENat {m : ℕ∞} : 1 < (m : Cardinal) ↔ 1 < m 
goal: 1 < ↑m ↔ 1 < m

full_name: Cardinal.ofNat_lt_ofENat
code: @[simp, norm_cast] lemma ofNat_lt_ofENat {m : ℕ} [m.AtLeastTwo] {n : ℕ∞} :
  no_index (OfNat.ofNat m : Cardinal) < n ↔ OfNat.ofNat m < n 
goal: OfNat.ofNat m < ↑n ↔ OfNat.ofNat m < n

full_name: Cardinal.ofENat_mono
code: lemma ofENat_mono : Monotone ofENat 
goal: Monotone Cardinal.ofENat

full_name: Cardinal.ofENat_le_ofENat
code: @[simp, norm_cast]
lemma ofENat_le_ofENat {m n : ℕ∞} : (m : Cardinal) ≤ n ↔ m ≤ n 
goal: ↑m ≤ ↑n ↔ m ≤ n

full_name: Cardinal.ofENat_le_aleph0
code: @[simp] lemma ofENat_le_aleph0 (n : ℕ∞) : ↑n ≤ ℵ₀ 
goal: ↑n ≤ Cardinal.aleph0

full_name: Cardinal.ofENat_le_nat
code: @[simp] lemma ofENat_le_nat {m : ℕ∞} {n : ℕ} : ofENat m ≤ n ↔ m ≤ n 
goal: ↑m ≤ ↑n ↔ m ≤ ↑n

full_name: Cardinal.ofENat_le_one
code: @[simp] lemma ofENat_le_one {m : ℕ∞} : ofENat m ≤ 1 ↔ m ≤ 1 
goal: ↑m ≤ 1 ↔ m ≤ 1

full_name: Cardinal.ofENat_le_ofNat
code: @[simp] lemma ofENat_le_ofNat {m : ℕ∞} {n : ℕ} [n.AtLeastTwo] :
    ofENat m ≤ no_index (OfNat.ofNat n) ↔ m ≤ OfNat.ofNat n 
goal: ↑m ≤ OfNat.ofNat n ↔ m ≤ OfNat.ofNat n

full_name: Cardinal.nat_le_ofENat
code: @[simp] lemma nat_le_ofENat {m : ℕ} {n : ℕ∞} : (m : Cardinal) ≤ n ↔ m ≤ n 
goal: ↑m ≤ ↑n ↔ ↑m ≤ n

full_name: Cardinal.one_le_ofENat
code: @[simp] lemma one_le_ofENat {n : ℕ∞} : 1 ≤ (n : Cardinal) ↔ 1 ≤ n 
goal: 1 ≤ ↑n ↔ 1 ≤ n

full_name: Cardinal.ofNat_le_ofENat
code: @[simp]
lemma ofNat_le_ofENat {m : ℕ} [m.AtLeastTwo] {n : ℕ∞} :
    no_index (OfNat.ofNat m : Cardinal) ≤ n ↔ OfNat.ofNat m ≤ n 
goal: OfNat.ofNat m ≤ ↑n ↔ OfNat.ofNat m ≤ n

full_name: Cardinal.ofENat_injective
code: lemma ofENat_injective : Injective ofENat 
goal: Function.Injective Cardinal.ofENat

full_name: Cardinal.ofENat_inj
code: @[simp, norm_cast]
lemma ofENat_inj {m n : ℕ∞} : (m : Cardinal) = n ↔ m = n 
goal: ↑m = ↑n ↔ m = n

full_name: Cardinal.ofENat_eq_nat
code: @[simp] lemma ofENat_eq_nat {m : ℕ∞} {n : ℕ} : (m : Cardinal) = n ↔ m = n 
goal: ↑m = ↑n ↔ m = ↑n

full_name: Cardinal.nat_eq_ofENat
code: @[simp] lemma nat_eq_ofENat {m : ℕ} {n : ℕ∞} : (m : Cardinal) = n ↔ m = n 
goal: ↑m = ↑n ↔ ↑m = n

full_name: Cardinal.ofENat_eq_zero
code: @[simp] lemma ofENat_eq_zero {m : ℕ∞} : (m : Cardinal) = 0 ↔ m = 0 
goal: ↑m = 0 ↔ m = 0

full_name: Cardinal.zero_eq_ofENat
code: @[simp] lemma zero_eq_ofENat {m : ℕ∞} : 0 = (m : Cardinal) ↔ m = 0 
goal: 0 = ↑m ↔ m = 0

full_name: Cardinal.ofENat_eq_one
code: @[simp] lemma ofENat_eq_one {m : ℕ∞} : (m : Cardinal) = 1 ↔ m = 1 
goal: ↑m = 1 ↔ m = 1

full_name: Cardinal.one_eq_ofENat
code: @[simp] lemma one_eq_ofENat {m : ℕ∞} : 1 = (m : Cardinal) ↔ m = 1 
goal: 1 = ↑m ↔ m = 1

full_name: Cardinal.ofENat_eq_ofNat
code: @[simp] lemma ofENat_eq_ofNat {m : ℕ∞} {n : ℕ} [n.AtLeastTwo] :
    (m : Cardinal) = no_index (OfNat.ofNat n) ↔ m = OfNat.ofNat n 
goal: ↑m = OfNat.ofNat n ↔ m = OfNat.ofNat n

full_name: Cardinal.ofNat_eq_ofENat
code: @[simp] lemma ofNat_eq_ofENat {m : ℕ} {n : ℕ∞} [m.AtLeastTwo] :
    no_index (OfNat.ofNat m) = (n : Cardinal) ↔ OfNat.ofNat m = n 
goal: OfNat.ofNat m = ↑n ↔ OfNat.ofNat m = n

full_name: Cardinal.lift_ofENat
code: @[simp, norm_cast] lemma lift_ofENat : ∀ m : ℕ∞, lift.{u, v} m = m
  
goal: Cardinal.lift.{u, v} ↑m = ↑m

full_name: Cardinal.lift_lt_ofENat
code: @[simp] lemma lift_lt_ofENat {x : Cardinal.{v}} {m : ℕ∞} : lift.{u} x < m ↔ x < m 
goal: Cardinal.lift.{u, v} x < ↑m ↔ x < ↑m

full_name: Cardinal.lift_le_ofENat
code: @[simp] lemma lift_le_ofENat {x : Cardinal.{v}} {m : ℕ∞} : lift.{u} x ≤ m ↔ x ≤ m 
goal: Cardinal.lift.{u, v} x ≤ ↑m ↔ x ≤ ↑m

full_name: Cardinal.lift_eq_ofENat
code: @[simp] lemma lift_eq_ofENat {x : Cardinal.{v}} {m : ℕ∞} : lift.{u} x = m ↔ x = m 
goal: Cardinal.lift.{u, v} x = ↑m ↔ x = ↑m

full_name: Cardinal.ofENat_lt_lift
code: @[simp] lemma ofENat_lt_lift {x : Cardinal.{v}} {m : ℕ∞} : m < lift.{u} x ↔ m < x 
goal: ↑m < Cardinal.lift.{u, v} x ↔ ↑m < x

full_name: Cardinal.ofENat_le_lift
code: @[simp] lemma ofENat_le_lift {x : Cardinal.{v}} {m : ℕ∞} : m ≤ lift.{u} x ↔ m ≤ x 
goal: ↑m ≤ Cardinal.lift.{u, v} x ↔ ↑m ≤ x

full_name: Cardinal.ofENat_eq_lift
code: @[simp] lemma ofENat_eq_lift {x : Cardinal.{v}} {m : ℕ∞} : m = lift.{u} x ↔ m = x 
goal: ↑m = Cardinal.lift.{u, v} x ↔ ↑m = x

full_name: Cardinal.range_ofENat
code: @[simp]
lemma range_ofENat : range ofENat = Iic ℵ₀ 
goal: Set.range Cardinal.ofENat = Set.Iic Cardinal.aleph0

full_name: Cardinal.instCanLiftENatOfENatLeAleph0
code: instance : CanLift Cardinal ℕ∞ (↑) (· ≤ ℵ₀) 
goal: CanLift Cardinal.{u_1} ℕ∞ Cardinal.ofENat fun x => x ≤ Cardinal.aleph0

full_name: Cardinal.toENatAux
code: /-- Unbundled version of `Cardinal.toENat`. -/
noncomputable def toENatAux : Cardinal.{u} → ℕ∞ 
goal: Cardinal.{u} → ℕ∞

full_name: Cardinal.toENatAux_nat
code: lemma toENatAux_nat (n : ℕ) : toENatAux n = n 
goal: (↑n).toENatAux = ↑n

full_name: Cardinal.toENatAux_zero
code: lemma toENatAux_zero : toENatAux 0 = 0 
goal: Cardinal.toENatAux 0 = 0

full_name: Cardinal.toENatAux_eq_top
code: lemma toENatAux_eq_top {a : Cardinal} (ha : ℵ₀ ≤ a) : toENatAux a = ⊤ 
goal: a.toENatAux = ⊤

full_name: Cardinal.toENatAux_ofENat
code: lemma toENatAux_ofENat : ∀ n : ℕ∞, toENatAux n = n
  
goal: (↑n).toENatAux = n

full_name: Cardinal.toENatAux_gc
code: lemma toENatAux_gc : GaloisConnection (↑) toENatAux 
goal: GaloisConnection Cardinal.ofENat Cardinal.toENatAux

full_name: Cardinal.toENatAux_le_nat
code: theorem toENatAux_le_nat {x : Cardinal} {n : ℕ} : toENatAux x ≤ n ↔ x ≤ n 
goal: x.toENatAux ≤ ↑n ↔ x ≤ ↑n

full_name: Cardinal.toENatAux_eq_nat
code: lemma toENatAux_eq_nat {x : Cardinal} {n : ℕ} : toENatAux x = n ↔ x = n 
goal: x.toENatAux = ↑n ↔ x = ↑n

full_name: Cardinal.toENatAux_eq_zero
code: lemma toENatAux_eq_zero {x : Cardinal} : toENatAux x = 0 ↔ x = 0 
goal: x.toENatAux = 0 ↔ x = 0

full_name: Cardinal.toENat
code: /-- Projection from cardinals to `ℕ∞`. Sends all infinite cardinals to `⊤`.

We define this function as a bundled monotone ring homomorphism. -/
noncomputable def toENat : Cardinal.{u} →+*o ℕ∞ 
goal: Cardinal.{u} →+*o ℕ∞

full_name: Cardinal.enat_gc
code: /-- The coercion `Cardinal.ofENat` and the projection `Cardinal.toENat` form a Galois connection.
See also `Cardinal.gciENat`. -/
lemma enat_gc : GaloisConnection (↑) toENat 
goal: GaloisConnection Cardinal.ofENat ⇑Cardinal.toENat

full_name: Cardinal.toENat_ofENat
code: @[simp] lemma toENat_ofENat (n : ℕ∞) : toENat n = n 
goal: Cardinal.toENat ↑n = n

full_name: Cardinal.toENat_comp_ofENat
code: @[simp] lemma toENat_comp_ofENat : toENat ∘ (↑) = id 
goal: ⇑Cardinal.toENat ∘ Cardinal.ofENat = id

full_name: Cardinal.gciENat
code: /-- The coercion `Cardinal.ofENat` and the projection `Cardinal.toENat`
form a Galois coinsertion. -/
noncomputable def gciENat : GaloisCoinsertion (↑) toENat 
goal: GaloisCoinsertion Cardinal.ofENat ⇑Cardinal.toENat

full_name: Cardinal.toENat_strictMonoOn
code: lemma toENat_strictMonoOn : StrictMonoOn toENat (Iic ℵ₀) 
goal: StrictMonoOn (⇑Cardinal.toENat) (Set.Iic Cardinal.aleph0)

full_name: Cardinal.toENat_injOn
code: lemma toENat_injOn : InjOn toENat (Iic ℵ₀) 
goal: Set.InjOn (⇑Cardinal.toENat) (Set.Iic Cardinal.aleph0)

full_name: Cardinal.ofENat_toENat_le
code: lemma ofENat_toENat_le (a : Cardinal) : ↑(toENat a) ≤ a 
goal: ↑(Cardinal.toENat a) ≤ a

full_name: Cardinal.ofENat_toENat_eq_self
code: @[simp]
lemma ofENat_toENat_eq_self {a : Cardinal} : toENat a = a ↔ a ≤ ℵ₀ 
goal: ↑(Cardinal.toENat a) = a ↔ a ≤ Cardinal.aleph0

full_name: Cardinal.toENat_nat
code: lemma toENat_nat (n : ℕ) : toENat n = n 
goal: Cardinal.toENat ↑n = ↑n

full_name: Cardinal.toENat_le_nat
code: @[simp] lemma toENat_le_nat {a : Cardinal} {n : ℕ} : toENat a ≤ n ↔ a ≤ n 
goal: Cardinal.toENat a ≤ ↑n ↔ a ≤ ↑n

full_name: Cardinal.toENat_eq_nat
code: @[simp] lemma toENat_eq_nat {a : Cardinal} {n : ℕ} : toENat a = n ↔ a = n 
goal: Cardinal.toENat a = ↑n ↔ a = ↑n

full_name: Cardinal.toENat_eq_zero
code: @[simp] lemma toENat_eq_zero {a : Cardinal} : toENat a = 0 ↔ a = 0 
goal: Cardinal.toENat a = 0 ↔ a = 0

full_name: Cardinal.toENat_le_one
code: @[simp] lemma toENat_le_one {a : Cardinal} : toENat a ≤ 1 ↔ a ≤ 1 
goal: Cardinal.toENat a ≤ 1 ↔ a ≤ 1

full_name: Cardinal.toENat_eq_one
code: @[simp] lemma toENat_eq_one {a : Cardinal} : toENat a = 1 ↔ a = 1 
goal: Cardinal.toENat a = 1 ↔ a = 1

full_name: Cardinal.toENat_le_ofNat
code: @[simp] lemma toENat_le_ofNat {a : Cardinal} {n : ℕ} [n.AtLeastTwo] :
    toENat a ≤ no_index (OfNat.ofNat n) ↔ a ≤ OfNat.ofNat n 
goal: Cardinal.toENat a ≤ OfNat.ofNat n ↔ a ≤ OfNat.ofNat n

full_name: Cardinal.toENat_eq_ofNat
code: @[simp] lemma toENat_eq_ofNat {a : Cardinal} {n : ℕ} [n.AtLeastTwo] :
    toENat a = no_index (OfNat.ofNat n) ↔ a = OfNat.ofNat n 
goal: Cardinal.toENat a = OfNat.ofNat n ↔ a = OfNat.ofNat n

full_name: Cardinal.toENat_eq_top
code: @[simp] lemma toENat_eq_top {a : Cardinal} : toENat a = ⊤ ↔ ℵ₀ ≤ a 
goal: Cardinal.toENat a = ⊤ ↔ Cardinal.aleph0 ≤ a

full_name: Cardinal.toENat_lift
code: @[simp]
theorem toENat_lift {a : Cardinal.{v}} : toENat (lift.{u} a) = toENat a 
goal: Cardinal.toENat (Cardinal.lift.{u, v} a) = Cardinal.toENat a

full_name: Cardinal.ofENat_add
code: @[simp, norm_cast]
lemma ofENat_add (m n : ℕ∞) : ofENat (m + n) = m + n 
goal: ↑(m + n) = ↑m + ↑n

full_name: Cardinal.aleph0_add_ofENat
code: @[simp] lemma aleph0_add_ofENat (m : ℕ∞) : ℵ₀ + m = ℵ₀ 
goal: Cardinal.aleph0 + ↑m = Cardinal.aleph0

full_name: Cardinal.ofENat_add_aleph0
code: @[simp] lemma ofENat_add_aleph0 (m : ℕ∞) : m + ℵ₀ = ℵ₀ 
goal: ↑m + Cardinal.aleph0 = Cardinal.aleph0

full_name: Cardinal.ofENat_mul_aleph0
code: @[simp] lemma ofENat_mul_aleph0 {m : ℕ∞} (hm : m ≠ 0) : ↑m * ℵ₀ = ℵ₀ 
goal: ↑m * Cardinal.aleph0 = Cardinal.aleph0

full_name: Cardinal.aleph0_mul_ofENat
code: @[simp] lemma aleph0_mul_ofENat {m : ℕ∞} (hm : m ≠ 0) : ℵ₀ * m = ℵ₀ 
goal: Cardinal.aleph0 * ↑m = Cardinal.aleph0

full_name: Cardinal.ofENat_mul
code: @[simp] lemma ofENat_mul (m n : ℕ∞) : ofENat (m * n) = m * n 
goal: ↑(m * n) = ↑m * ↑n

full_name: Cardinal.ofENatHom
code: /-- The coercion `Cardinal.ofENat` as a bundled homomorphism. -/
def ofENatHom : ℕ∞ →+*o Cardinal 
goal: ℕ∞ →+*o Cardinal.{u_1}