Extended natural numbers form a complete linear order #
This instance is not in Data.ENat.Basic to avoid dependency on Finsets.
We also restate some lemmas about WithTop for ENat to have versions that use Nat.cast instead
of WithTop.some.
@[implicit_reducible]
@[implicit_reducible]
theorem
ENat.coe_iInf
{ι : Sort u_1}
{f : ι → ℕ}
[Nonempty ι]
:
↑(⨅ (i : ι), f i) = ⨅ (i : ι), ↑(f i)
@[simp]
@[simp]
@[simp]
theorem
ENat.exists_eq_iSup_of_lt_top
{ι : Sort u_1}
{f : ι → ℕ∞}
[Nonempty ι]
(h : ⨆ (i : ι), f i < ⊤)
:
∃ (i : ι), f i = ⨆ (i : ι), f i
theorem
ENat.exists_eq_iInf
{ι : Sort u_1}
[Nonempty ι]
(f : ι → ℕ∞)
:
∃ (a : ι), f a = ⨅ (x : ι), f x
theorem
ENat.iSup_mul
{ι : Sort u_2}
(f : ι → ℕ∞)
(a : ℕ∞)
:
(⨆ (i : ι), f i) * a = ⨆ (i : ι), f i * a
theorem
ENat.mul_iInf
{ι : Sort u_2}
{f : ι → ℕ∞}
{a : ℕ∞}
[Nonempty ι]
:
a * ⨅ (i : ι), f i = ⨅ (i : ι), a * f i
theorem
ENat.iInf_mul
{ι : Sort u_2}
{f : ι → ℕ∞}
{a : ℕ∞}
[Nonempty ι]
:
(⨅ (i : ι), f i) * a = ⨅ (i : ι), f i * a
theorem
ENat.mul_iInf'
{ι : Sort u_2}
{f : ι → ℕ∞}
{a : ℕ∞}
(h₀ : a = 0 → Nonempty ι)
:
a * ⨅ (i : ι), f i = ⨅ (i : ι), a * f i
A version of mul_iInf with a slightly more general hypothesis.
theorem
ENat.iInf_mul'
{ι : Sort u_2}
{f : ι → ℕ∞}
{a : ℕ∞}
(h₀ : a = 0 → Nonempty ι)
:
(⨅ (i : ι), f i) * a = ⨅ (i : ι), f i * a
A version of iInf_mul with a slightly more general hypothesis.
theorem
ENat.mul_iInf_of_ne
{ι : Sort u_2}
{f : ι → ℕ∞}
{a : ℕ∞}
(ha₀ : a ≠ 0)
:
a * ⨅ (i : ι), f i = ⨅ (i : ι), a * f i
If a ≠ 0, then right multiplication by a maps infimum to infimum.
See also ENat.iInf_mul that assumes [Nonempty ι] but does not require a ≠ 0.
theorem
ENat.iInf_mul_of_ne
{ι : Sort u_2}
{f : ι → ℕ∞}
{a : ℕ∞}
(ha₀ : a ≠ 0)
:
(⨅ (i : ι), f i) * a = ⨅ (i : ι), f i * a
If a ≠ 0, then right multiplication by a maps infimum to infimum.
See also ENat.iInf_mul that assumes [Nonempty ι] but does not require a ≠ 0.
theorem
ENat.add_iSup
{ι : Sort u_2}
{a : ℕ∞}
[Nonempty ι]
(f : ι → ℕ∞)
:
a + ⨆ (i : ι), f i = ⨆ (i : ι), a + f i
theorem
ENat.iSup_add
{ι : Sort u_2}
{a : ℕ∞}
[Nonempty ι]
(f : ι → ℕ∞)
:
(⨆ (i : ι), f i) + a = ⨆ (i : ι), f i + a
theorem
ENat.add_biSup'
{ι : Sort u_2}
{a : ℕ∞}
{p : ι → Prop}
(h : ∃ (i : ι), p i)
(f : ι → ℕ∞)
:
a + ⨆ (i : ι), ⨆ (_ : p i), f i = ⨆ (i : ι), ⨆ (_ : p i), a + f i
theorem
ENat.biSup_add'
{ι : Sort u_2}
{a : ℕ∞}
{p : ι → Prop}
(h : ∃ (i : ι), p i)
(f : ι → ℕ∞)
:
(⨆ (i : ι), ⨆ (_ : p i), f i) + a = ⨆ (i : ι), ⨆ (_ : p i), f i + a
theorem
ENat.iSup_add_iSup_of_monotone
{ι : Type u_4}
[Preorder ι]
[IsDirectedOrder ι]
{f g : ι → ℕ∞}
(hf : Monotone f)
(hg : Monotone g)
:
theorem
ENat.smul_iSup
{ι : Sort u_2}
{R : Type u_4}
[SMul R ℕ∞]
[IsScalarTower R ℕ∞ ℕ∞]
(f : ι → ℕ∞)
(c : R)
:
c • ⨆ (i : ι), f i = ⨆ (i : ι), c • f i
theorem
ENat.smul_sSup
{R : Type u_4}
[SMul R ℕ∞]
[IsScalarTower R ℕ∞ ℕ∞]
(s : Set ℕ∞)
(c : R)
:
c • sSup s = ⨆ a ∈ s, c • a
theorem
ENat.sub_iSup
{ι : Sort u_2}
{f : ι → ℕ∞}
{a : ℕ∞}
[Nonempty ι]
(ha : a ≠ ⊤)
:
a - ⨆ (i : ι), f i = ⨅ (i : ι), a - f i
theorem
ENat.iInf_add_iInf_of_monotone
{ι : Type u_4}
[Preorder ι]
[IsCodirectedOrder ι]
{f g : ι → ℕ∞}
(hf : Monotone f)
(hg : Monotone g)
:
theorem
ENat.add_iInf₂
{ι : Sort u_2}
{a : ℕ∞}
{κ : ι → Sort u_4}
(f : (i : ι) → κ i → ℕ∞)
:
a + ⨅ (i : ι), ⨅ (j : κ i), f i j = ⨅ (i : ι), ⨅ (j : κ i), a + f i j
theorem
ENat.iInf₂_add
{ι : Sort u_2}
{a : ℕ∞}
{κ : ι → Sort u_4}
(f : (i : ι) → κ i → ℕ∞)
:
(⨅ (i : ι), ⨅ (j : κ i), f i j) + a = ⨅ (i : ι), ⨅ (j : κ i), f i j + a