topology.algebra.order.monotone_convergence
⟷
Mathlib.Topology.Algebra.Order.MonotoneConvergence
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -222,7 +222,7 @@ instance [Preorder α] [Preorder β] [TopologicalSpace α] [TopologicalSpace β]
by
constructor
rintro ⟨a, b⟩ s h
- rw [isLUB_prod, ← range_restrict, ← range_restrict] at h
+ rw [isLUB_prod, ← range_restrict, ← range_restrict] at h
have A : tendsto (fun x : s => (x : α × β).1) at_top (𝓝 a) :=
tendsto_atTop_isLUB (monotone_fst.restrict s) h.1
have B : tendsto (fun x : s => (x : α × β).2) at_top (𝓝 b) :=
@@ -238,7 +238,7 @@ instance {ι : Type _} {α : ι → Type _} [∀ i, Preorder (α i)] [∀ i, Top
[∀ i, SupConvergenceClass (α i)] : SupConvergenceClass (∀ i, α i) :=
by
refine' ⟨fun f s h => _⟩
- simp only [isLUB_pi, ← range_restrict] at h
+ simp only [isLUB_pi, ← range_restrict] at h
exact tendsto_pi_nhds.2 fun i => tendsto_atTop_isLUB ((monotone_eval _).restrict _) (h i)
instance {ι : Type _} {α : ι → Type _} [∀ i, Preorder (α i)] [∀ i, TopologicalSpace (α i)]
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,7 +3,7 @@ Copyright (c) 2021 Heather Macbeth. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Heather Macbeth, Yury Kudryashov
-/
-import Mathbin.Topology.Order.Basic
+import Topology.Order.Basic
#align_import topology.algebra.order.monotone_convergence from "leanprover-community/mathlib"@"50832daea47b195a48b5b33b1c8b2162c48c3afc"
mathlib commit https://github.com/leanprover-community/mathlib/commit/63721b2c3eba6c325ecf8ae8cca27155a4f6306f
@@ -245,18 +245,18 @@ instance {ι : Type _} {α : ι → Type _} [∀ i, Preorder (α i)] [∀ i, Top
[∀ i, InfConvergenceClass (α i)] : InfConvergenceClass (∀ i, α i) :=
show InfConvergenceClass (∀ i, (α i)ᵒᵈ)ᵒᵈ from OrderDual.infConvergenceClass
-#print Pi.Sup_convergence_class' /-
-instance Pi.Sup_convergence_class' {ι : Type _} [Preorder α] [TopologicalSpace α]
+#print Pi.supConvergenceClass' /-
+instance Pi.supConvergenceClass' {ι : Type _} [Preorder α] [TopologicalSpace α]
[SupConvergenceClass α] : SupConvergenceClass (ι → α) :=
Pi.supConvergenceClass
-#align pi.Sup_convergence_class' Pi.Sup_convergence_class'
+#align pi.Sup_convergence_class' Pi.supConvergenceClass'
-/
-#print Pi.Inf_convergence_class' /-
-instance Pi.Inf_convergence_class' {ι : Type _} [Preorder α] [TopologicalSpace α]
+#print Pi.infConvergenceClass' /-
+instance Pi.infConvergenceClass' {ι : Type _} [Preorder α] [TopologicalSpace α]
[InfConvergenceClass α] : InfConvergenceClass (ι → α) :=
Pi.infConvergenceClass
-#align pi.Inf_convergence_class' Pi.Inf_convergence_class'
+#align pi.Inf_convergence_class' Pi.infConvergenceClass'
-/
#print tendsto_of_monotone /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,14 +2,11 @@
Copyright (c) 2021 Heather Macbeth. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Heather Macbeth, Yury Kudryashov
-
-! This file was ported from Lean 3 source module topology.algebra.order.monotone_convergence
-! leanprover-community/mathlib commit 50832daea47b195a48b5b33b1c8b2162c48c3afc
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Topology.Order.Basic
+#align_import topology.algebra.order.monotone_convergence from "leanprover-community/mathlib"@"50832daea47b195a48b5b33b1c8b2162c48c3afc"
+
/-!
# Bounded monotone sequences converge
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -147,16 +147,20 @@ section Csupr
variable [ConditionallyCompleteLattice α] [SupConvergenceClass α] {f : ι → α} {a : α}
+#print tendsto_atTop_ciSup /-
theorem tendsto_atTop_ciSup (h_mono : Monotone f) (hbdd : BddAbove <| range f) :
Tendsto f atTop (𝓝 (⨆ i, f i)) :=
by
cases isEmpty_or_nonempty ι
exacts [tendsto_of_is_empty, tendsto_atTop_isLUB h_mono (isLUB_ciSup hbdd)]
#align tendsto_at_top_csupr tendsto_atTop_ciSup
+-/
+#print tendsto_atBot_ciSup /-
theorem tendsto_atBot_ciSup (h_anti : Antitone f) (hbdd : BddAbove <| range f) :
Tendsto f atBot (𝓝 (⨆ i, f i)) := by convert tendsto_atTop_ciSup h_anti.dual hbdd.dual
#align tendsto_at_bot_csupr tendsto_atBot_ciSup
+-/
end Csupr
@@ -164,13 +168,17 @@ section Cinfi
variable [ConditionallyCompleteLattice α] [InfConvergenceClass α] {f : ι → α} {a : α}
+#print tendsto_atBot_ciInf /-
theorem tendsto_atBot_ciInf (h_mono : Monotone f) (hbdd : BddBelow <| range f) :
Tendsto f atBot (𝓝 (⨅ i, f i)) := by convert tendsto_atTop_ciSup h_mono.dual hbdd.dual
#align tendsto_at_bot_cinfi tendsto_atBot_ciInf
+-/
+#print tendsto_atTop_ciInf /-
theorem tendsto_atTop_ciInf (h_anti : Antitone f) (hbdd : BddBelow <| range f) :
Tendsto f atTop (𝓝 (⨅ i, f i)) := by convert tendsto_atBot_ciSup h_anti.dual hbdd.dual
#align tendsto_at_top_cinfi tendsto_atTop_ciInf
+-/
end Cinfi
@@ -178,13 +186,17 @@ section iSup
variable [CompleteLattice α] [SupConvergenceClass α] {f : ι → α} {a : α}
+#print tendsto_atTop_iSup /-
theorem tendsto_atTop_iSup (h_mono : Monotone f) : Tendsto f atTop (𝓝 (⨆ i, f i)) :=
tendsto_atTop_ciSup h_mono (OrderTop.bddAbove _)
#align tendsto_at_top_supr tendsto_atTop_iSup
+-/
+#print tendsto_atBot_iSup /-
theorem tendsto_atBot_iSup (h_anti : Antitone f) : Tendsto f atBot (𝓝 (⨆ i, f i)) :=
tendsto_atBot_ciSup h_anti (OrderTop.bddAbove _)
#align tendsto_at_bot_supr tendsto_atBot_iSup
+-/
end iSup
@@ -192,13 +204,17 @@ section iInf
variable [CompleteLattice α] [InfConvergenceClass α] {f : ι → α} {a : α}
+#print tendsto_atBot_iInf /-
theorem tendsto_atBot_iInf (h_mono : Monotone f) : Tendsto f atBot (𝓝 (⨅ i, f i)) :=
tendsto_atBot_ciInf h_mono (OrderBot.bddBelow _)
#align tendsto_at_bot_infi tendsto_atBot_iInf
+-/
+#print tendsto_atTop_iInf /-
theorem tendsto_atTop_iInf (h_anti : Antitone f) : Tendsto f atTop (𝓝 (⨅ i, f i)) :=
tendsto_atTop_ciInf h_anti (OrderBot.bddBelow _)
#align tendsto_at_top_infi tendsto_atTop_iInf
+-/
end iInf
@@ -246,13 +262,16 @@ instance Pi.Inf_convergence_class' {ι : Type _} [Preorder α] [TopologicalSpace
#align pi.Inf_convergence_class' Pi.Inf_convergence_class'
-/
+#print tendsto_of_monotone /-
theorem tendsto_of_monotone {ι α : Type _} [Preorder ι] [TopologicalSpace α]
[ConditionallyCompleteLinearOrder α] [OrderTopology α] {f : ι → α} (h_mono : Monotone f) :
Tendsto f atTop atTop ∨ ∃ l, Tendsto f atTop (𝓝 l) :=
if H : BddAbove (range f) then Or.inr ⟨_, tendsto_atTop_ciSup h_mono H⟩
else Or.inl <| tendsto_atTop_atTop_of_monotone' h_mono H
#align tendsto_of_monotone tendsto_of_monotone
+-/
+#print tendsto_iff_tendsto_subseq_of_monotone /-
theorem tendsto_iff_tendsto_subseq_of_monotone {ι₁ ι₂ α : Type _} [SemilatticeSup ι₁] [Preorder ι₂]
[Nonempty ι₁] [TopologicalSpace α] [ConditionallyCompleteLinearOrder α] [OrderTopology α]
[NoMaxOrder α] {f : ι₂ → α} {φ : ι₁ → ι₂} {l : α} (hf : Monotone f)
@@ -264,6 +283,7 @@ theorem tendsto_iff_tendsto_subseq_of_monotone {ι₁ ι₂ α : Type _} [Semila
· exact (not_tendsto_atTop_of_tendsto_nhds h (h'.comp hg)).elim
· rwa [tendsto_nhds_unique h (hl'.comp hg)]
#align tendsto_iff_tendsto_subseq_of_monotone tendsto_iff_tendsto_subseq_of_monotone
+-/
/-! The next family of results, such as `is_lub_of_tendsto_at_top` and `supr_eq_of_tendsto`, are
converses to the standard fact that bounded monotone functions converge. They state, that if a
@@ -274,31 +294,40 @@ Related theorems above (`is_lub.is_lub_of_tendsto`, `is_glb.is_glb_of_tendsto` e
when `f x` tends to `a` as `x` tends to some point `b` in the domain. -/
+#print Monotone.ge_of_tendsto /-
theorem Monotone.ge_of_tendsto [TopologicalSpace α] [Preorder α] [OrderClosedTopology α]
[SemilatticeSup β] {f : β → α} {a : α} (hf : Monotone f) (ha : Tendsto f atTop (𝓝 a)) (b : β) :
f b ≤ a :=
haveI : Nonempty β := Nonempty.intro b
ge_of_tendsto ha ((eventually_ge_at_top b).mono fun _ hxy => hf hxy)
#align monotone.ge_of_tendsto Monotone.ge_of_tendsto
+-/
+#print Monotone.le_of_tendsto /-
theorem Monotone.le_of_tendsto [TopologicalSpace α] [Preorder α] [OrderClosedTopology α]
[SemilatticeInf β] {f : β → α} {a : α} (hf : Monotone f) (ha : Tendsto f atBot (𝓝 a)) (b : β) :
a ≤ f b :=
hf.dual.ge_of_tendsto ha b
#align monotone.le_of_tendsto Monotone.le_of_tendsto
+-/
+#print Antitone.le_of_tendsto /-
theorem Antitone.le_of_tendsto [TopologicalSpace α] [Preorder α] [OrderClosedTopology α]
[SemilatticeSup β] {f : β → α} {a : α} (hf : Antitone f) (ha : Tendsto f atTop (𝓝 a)) (b : β) :
a ≤ f b :=
hf.dual_right.ge_of_tendsto ha b
#align antitone.le_of_tendsto Antitone.le_of_tendsto
+-/
+#print Antitone.ge_of_tendsto /-
theorem Antitone.ge_of_tendsto [TopologicalSpace α] [Preorder α] [OrderClosedTopology α]
[SemilatticeInf β] {f : β → α} {a : α} (hf : Antitone f) (ha : Tendsto f atBot (𝓝 a)) (b : β) :
f b ≤ a :=
hf.dual_right.le_of_tendsto ha b
#align antitone.ge_of_tendsto Antitone.ge_of_tendsto
+-/
+#print isLUB_of_tendsto_atTop /-
theorem isLUB_of_tendsto_atTop [TopologicalSpace α] [Preorder α] [OrderClosedTopology α]
[Nonempty β] [SemilatticeSup β] {f : β → α} {a : α} (hf : Monotone f)
(ha : Tendsto f atTop (𝓝 a)) : IsLUB (Set.range f) a :=
@@ -308,37 +337,49 @@ theorem isLUB_of_tendsto_atTop [TopologicalSpace α] [Preorder α] [OrderClosedT
exact hf.ge_of_tendsto ha b
· exact fun _ hb => le_of_tendsto' ha fun x => hb (Set.mem_range_self x)
#align is_lub_of_tendsto_at_top isLUB_of_tendsto_atTop
+-/
+#print isGLB_of_tendsto_atBot /-
theorem isGLB_of_tendsto_atBot [TopologicalSpace α] [Preorder α] [OrderClosedTopology α]
[Nonempty β] [SemilatticeInf β] {f : β → α} {a : α} (hf : Monotone f)
(ha : Tendsto f atBot (𝓝 a)) : IsGLB (Set.range f) a :=
@isLUB_of_tendsto_atTop αᵒᵈ βᵒᵈ _ _ _ _ _ _ _ hf.dual ha
#align is_glb_of_tendsto_at_bot isGLB_of_tendsto_atBot
+-/
+#print isLUB_of_tendsto_atBot /-
theorem isLUB_of_tendsto_atBot [TopologicalSpace α] [Preorder α] [OrderClosedTopology α]
[Nonempty β] [SemilatticeInf β] {f : β → α} {a : α} (hf : Antitone f)
(ha : Tendsto f atBot (𝓝 a)) : IsLUB (Set.range f) a :=
@isLUB_of_tendsto_atTop α βᵒᵈ _ _ _ _ _ _ _ hf.dual_left ha
#align is_lub_of_tendsto_at_bot isLUB_of_tendsto_atBot
+-/
+#print isGLB_of_tendsto_atTop /-
theorem isGLB_of_tendsto_atTop [TopologicalSpace α] [Preorder α] [OrderClosedTopology α]
[Nonempty β] [SemilatticeSup β] {f : β → α} {a : α} (hf : Antitone f)
(ha : Tendsto f atTop (𝓝 a)) : IsGLB (Set.range f) a :=
@isGLB_of_tendsto_atBot α βᵒᵈ _ _ _ _ _ _ _ hf.dual_left ha
#align is_glb_of_tendsto_at_top isGLB_of_tendsto_atTop
+-/
+#print iSup_eq_of_tendsto /-
theorem iSup_eq_of_tendsto {α β} [TopologicalSpace α] [CompleteLinearOrder α] [OrderTopology α]
[Nonempty β] [SemilatticeSup β] {f : β → α} {a : α} (hf : Monotone f) :
Tendsto f atTop (𝓝 a) → iSup f = a :=
tendsto_nhds_unique (tendsto_atTop_iSup hf)
#align supr_eq_of_tendsto iSup_eq_of_tendsto
+-/
+#print iInf_eq_of_tendsto /-
theorem iInf_eq_of_tendsto {α} [TopologicalSpace α] [CompleteLinearOrder α] [OrderTopology α]
[Nonempty β] [SemilatticeSup β] {f : β → α} {a : α} (hf : Antitone f) :
Tendsto f atTop (𝓝 a) → iInf f = a :=
tendsto_nhds_unique (tendsto_atTop_iInf hf)
#align infi_eq_of_tendsto iInf_eq_of_tendsto
+-/
+#print iSup_eq_iSup_subseq_of_monotone /-
theorem iSup_eq_iSup_subseq_of_monotone {ι₁ ι₂ α : Type _} [Preorder ι₂] [CompleteLattice α]
{l : Filter ι₁} [l.ne_bot] {f : ι₂ → α} {φ : ι₁ → ι₂} (hf : Monotone f)
(hφ : Tendsto φ l atTop) : (⨆ i, f i) = ⨆ i, f (φ i) :=
@@ -347,10 +388,13 @@ theorem iSup_eq_iSup_subseq_of_monotone {ι₁ ι₂ α : Type _} [Preorder ι
Exists.imp (fun j (hj : i ≤ φ j) => hf hj) (hφ.Eventually <| eventually_ge_atTop i).exists)
(iSup_mono' fun i => ⟨φ i, le_rfl⟩)
#align supr_eq_supr_subseq_of_monotone iSup_eq_iSup_subseq_of_monotone
+-/
+#print iInf_eq_iInf_subseq_of_monotone /-
theorem iInf_eq_iInf_subseq_of_monotone {ι₁ ι₂ α : Type _} [Preorder ι₂] [CompleteLattice α]
{l : Filter ι₁} [l.ne_bot] {f : ι₂ → α} {φ : ι₁ → ι₂} (hf : Monotone f)
(hφ : Tendsto φ l atBot) : (⨅ i, f i) = ⨅ i, f (φ i) :=
iSup_eq_iSup_subseq_of_monotone hf.dual hφ
#align infi_eq_infi_subseq_of_monotone iInf_eq_iInf_subseq_of_monotone
+-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -151,7 +151,7 @@ theorem tendsto_atTop_ciSup (h_mono : Monotone f) (hbdd : BddAbove <| range f) :
Tendsto f atTop (𝓝 (⨆ i, f i)) :=
by
cases isEmpty_or_nonempty ι
- exacts[tendsto_of_is_empty, tendsto_atTop_isLUB h_mono (isLUB_ciSup hbdd)]
+ exacts [tendsto_of_is_empty, tendsto_atTop_isLUB h_mono (isLUB_ciSup hbdd)]
#align tendsto_at_top_csupr tendsto_atTop_ciSup
theorem tendsto_atBot_ciSup (h_anti : Antitone f) (hbdd : BddAbove <| range f) :
@@ -209,7 +209,7 @@ instance [Preorder α] [Preorder β] [TopologicalSpace α] [TopologicalSpace β]
by
constructor
rintro ⟨a, b⟩ s h
- rw [isLUB_prod, ← range_restrict, ← range_restrict] at h
+ rw [isLUB_prod, ← range_restrict, ← range_restrict] at h
have A : tendsto (fun x : s => (x : α × β).1) at_top (𝓝 a) :=
tendsto_atTop_isLUB (monotone_fst.restrict s) h.1
have B : tendsto (fun x : s => (x : α × β).2) at_top (𝓝 b) :=
@@ -225,7 +225,7 @@ instance {ι : Type _} {α : ι → Type _} [∀ i, Preorder (α i)] [∀ i, Top
[∀ i, SupConvergenceClass (α i)] : SupConvergenceClass (∀ i, α i) :=
by
refine' ⟨fun f s h => _⟩
- simp only [isLUB_pi, ← range_restrict] at h
+ simp only [isLUB_pi, ← range_restrict] at h
exact tendsto_pi_nhds.2 fun i => tendsto_atTop_isLUB ((monotone_eval _).restrict _) (h i)
instance {ι : Type _} {α : ι → Type _} [∀ i, Preorder (α i)] [∀ i, TopologicalSpace (α i)]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -36,7 +36,7 @@ monotone convergence
open Filter Set Function
-open Filter Topology Classical
+open scoped Filter Topology Classical
variable {α β : Type _}
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -147,12 +147,6 @@ section Csupr
variable [ConditionallyCompleteLattice α] [SupConvergenceClass α] {f : ι → α} {a : α}
-/- warning: tendsto_at_top_csupr -> tendsto_atTop_ciSup is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLattice.{u1} α] [_inst_4 : SupConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) _inst_2] {f : ι -> α}, (Monotone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) f) -> (BddAbove.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) (Set.range.{u1, succ u2} α ι f)) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atTop.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (iSup.{u1, succ u2} α (ConditionallyCompleteLattice.toHasSup.{u1} α _inst_3) ι (fun (i : ι) => f i))))
-but is expected to have type
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLattice.{u1} α] [_inst_4 : SupConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) _inst_2] {f : ι -> α}, (Monotone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) f) -> (BddAbove.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) (Set.range.{u1, succ u2} α ι f)) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atTop.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (iSup.{u1, succ u2} α (ConditionallyCompleteLattice.toSupSet.{u1} α _inst_3) ι (fun (i : ι) => f i))))
-Case conversion may be inaccurate. Consider using '#align tendsto_at_top_csupr tendsto_atTop_ciSupₓ'. -/
theorem tendsto_atTop_ciSup (h_mono : Monotone f) (hbdd : BddAbove <| range f) :
Tendsto f atTop (𝓝 (⨆ i, f i)) :=
by
@@ -160,12 +154,6 @@ theorem tendsto_atTop_ciSup (h_mono : Monotone f) (hbdd : BddAbove <| range f) :
exacts[tendsto_of_is_empty, tendsto_atTop_isLUB h_mono (isLUB_ciSup hbdd)]
#align tendsto_at_top_csupr tendsto_atTop_ciSup
-/- warning: tendsto_at_bot_csupr -> tendsto_atBot_ciSup is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLattice.{u1} α] [_inst_4 : SupConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) _inst_2] {f : ι -> α}, (Antitone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) f) -> (BddAbove.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) (Set.range.{u1, succ u2} α ι f)) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atBot.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (iSup.{u1, succ u2} α (ConditionallyCompleteLattice.toHasSup.{u1} α _inst_3) ι (fun (i : ι) => f i))))
-but is expected to have type
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLattice.{u1} α] [_inst_4 : SupConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) _inst_2] {f : ι -> α}, (Antitone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) f) -> (BddAbove.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) (Set.range.{u1, succ u2} α ι f)) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atBot.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (iSup.{u1, succ u2} α (ConditionallyCompleteLattice.toSupSet.{u1} α _inst_3) ι (fun (i : ι) => f i))))
-Case conversion may be inaccurate. Consider using '#align tendsto_at_bot_csupr tendsto_atBot_ciSupₓ'. -/
theorem tendsto_atBot_ciSup (h_anti : Antitone f) (hbdd : BddAbove <| range f) :
Tendsto f atBot (𝓝 (⨆ i, f i)) := by convert tendsto_atTop_ciSup h_anti.dual hbdd.dual
#align tendsto_at_bot_csupr tendsto_atBot_ciSup
@@ -176,22 +164,10 @@ section Cinfi
variable [ConditionallyCompleteLattice α] [InfConvergenceClass α] {f : ι → α} {a : α}
-/- warning: tendsto_at_bot_cinfi -> tendsto_atBot_ciInf is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLattice.{u1} α] [_inst_4 : InfConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) _inst_2] {f : ι -> α}, (Monotone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) f) -> (BddBelow.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) (Set.range.{u1, succ u2} α ι f)) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atBot.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (iInf.{u1, succ u2} α (ConditionallyCompleteLattice.toHasInf.{u1} α _inst_3) ι (fun (i : ι) => f i))))
-but is expected to have type
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLattice.{u1} α] [_inst_4 : InfConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) _inst_2] {f : ι -> α}, (Monotone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) f) -> (BddBelow.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) (Set.range.{u1, succ u2} α ι f)) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atBot.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (iInf.{u1, succ u2} α (ConditionallyCompleteLattice.toInfSet.{u1} α _inst_3) ι (fun (i : ι) => f i))))
-Case conversion may be inaccurate. Consider using '#align tendsto_at_bot_cinfi tendsto_atBot_ciInfₓ'. -/
theorem tendsto_atBot_ciInf (h_mono : Monotone f) (hbdd : BddBelow <| range f) :
Tendsto f atBot (𝓝 (⨅ i, f i)) := by convert tendsto_atTop_ciSup h_mono.dual hbdd.dual
#align tendsto_at_bot_cinfi tendsto_atBot_ciInf
-/- warning: tendsto_at_top_cinfi -> tendsto_atTop_ciInf is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLattice.{u1} α] [_inst_4 : InfConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) _inst_2] {f : ι -> α}, (Antitone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) f) -> (BddBelow.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) (Set.range.{u1, succ u2} α ι f)) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atTop.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (iInf.{u1, succ u2} α (ConditionallyCompleteLattice.toHasInf.{u1} α _inst_3) ι (fun (i : ι) => f i))))
-but is expected to have type
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLattice.{u1} α] [_inst_4 : InfConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) _inst_2] {f : ι -> α}, (Antitone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) f) -> (BddBelow.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) (Set.range.{u1, succ u2} α ι f)) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atTop.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (iInf.{u1, succ u2} α (ConditionallyCompleteLattice.toInfSet.{u1} α _inst_3) ι (fun (i : ι) => f i))))
-Case conversion may be inaccurate. Consider using '#align tendsto_at_top_cinfi tendsto_atTop_ciInfₓ'. -/
theorem tendsto_atTop_ciInf (h_anti : Antitone f) (hbdd : BddBelow <| range f) :
Tendsto f atTop (𝓝 (⨅ i, f i)) := by convert tendsto_atBot_ciSup h_anti.dual hbdd.dual
#align tendsto_at_top_cinfi tendsto_atTop_ciInf
@@ -202,22 +178,10 @@ section iSup
variable [CompleteLattice α] [SupConvergenceClass α] {f : ι → α} {a : α}
-/- warning: tendsto_at_top_supr -> tendsto_atTop_iSup is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : CompleteLattice.{u1} α] [_inst_4 : SupConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) _inst_2] {f : ι -> α}, (Monotone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) f) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atTop.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (iSup.{u1, succ u2} α (ConditionallyCompleteLattice.toHasSup.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_3)) ι (fun (i : ι) => f i))))
-but is expected to have type
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : CompleteLattice.{u1} α] [_inst_4 : SupConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) _inst_2] {f : ι -> α}, (Monotone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) f) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atTop.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (iSup.{u1, succ u2} α (ConditionallyCompleteLattice.toSupSet.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_3)) ι (fun (i : ι) => f i))))
-Case conversion may be inaccurate. Consider using '#align tendsto_at_top_supr tendsto_atTop_iSupₓ'. -/
theorem tendsto_atTop_iSup (h_mono : Monotone f) : Tendsto f atTop (𝓝 (⨆ i, f i)) :=
tendsto_atTop_ciSup h_mono (OrderTop.bddAbove _)
#align tendsto_at_top_supr tendsto_atTop_iSup
-/- warning: tendsto_at_bot_supr -> tendsto_atBot_iSup is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : CompleteLattice.{u1} α] [_inst_4 : SupConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) _inst_2] {f : ι -> α}, (Antitone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) f) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atBot.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (iSup.{u1, succ u2} α (ConditionallyCompleteLattice.toHasSup.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_3)) ι (fun (i : ι) => f i))))
-but is expected to have type
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : CompleteLattice.{u1} α] [_inst_4 : SupConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) _inst_2] {f : ι -> α}, (Antitone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) f) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atBot.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (iSup.{u1, succ u2} α (ConditionallyCompleteLattice.toSupSet.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_3)) ι (fun (i : ι) => f i))))
-Case conversion may be inaccurate. Consider using '#align tendsto_at_bot_supr tendsto_atBot_iSupₓ'. -/
theorem tendsto_atBot_iSup (h_anti : Antitone f) : Tendsto f atBot (𝓝 (⨆ i, f i)) :=
tendsto_atBot_ciSup h_anti (OrderTop.bddAbove _)
#align tendsto_at_bot_supr tendsto_atBot_iSup
@@ -228,22 +192,10 @@ section iInf
variable [CompleteLattice α] [InfConvergenceClass α] {f : ι → α} {a : α}
-/- warning: tendsto_at_bot_infi -> tendsto_atBot_iInf is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : CompleteLattice.{u1} α] [_inst_4 : InfConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) _inst_2] {f : ι -> α}, (Monotone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) f) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atBot.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (iInf.{u1, succ u2} α (ConditionallyCompleteLattice.toHasInf.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_3)) ι (fun (i : ι) => f i))))
-but is expected to have type
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : CompleteLattice.{u1} α] [_inst_4 : InfConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) _inst_2] {f : ι -> α}, (Monotone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) f) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atBot.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (iInf.{u1, succ u2} α (ConditionallyCompleteLattice.toInfSet.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_3)) ι (fun (i : ι) => f i))))
-Case conversion may be inaccurate. Consider using '#align tendsto_at_bot_infi tendsto_atBot_iInfₓ'. -/
theorem tendsto_atBot_iInf (h_mono : Monotone f) : Tendsto f atBot (𝓝 (⨅ i, f i)) :=
tendsto_atBot_ciInf h_mono (OrderBot.bddBelow _)
#align tendsto_at_bot_infi tendsto_atBot_iInf
-/- warning: tendsto_at_top_infi -> tendsto_atTop_iInf is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : CompleteLattice.{u1} α] [_inst_4 : InfConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) _inst_2] {f : ι -> α}, (Antitone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) f) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atTop.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (iInf.{u1, succ u2} α (ConditionallyCompleteLattice.toHasInf.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_3)) ι (fun (i : ι) => f i))))
-but is expected to have type
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : CompleteLattice.{u1} α] [_inst_4 : InfConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) _inst_2] {f : ι -> α}, (Antitone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) f) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atTop.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (iInf.{u1, succ u2} α (ConditionallyCompleteLattice.toInfSet.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_3)) ι (fun (i : ι) => f i))))
-Case conversion may be inaccurate. Consider using '#align tendsto_at_top_infi tendsto_atTop_iInfₓ'. -/
theorem tendsto_atTop_iInf (h_anti : Antitone f) : Tendsto f atTop (𝓝 (⨅ i, f i)) :=
tendsto_atTop_ciInf h_anti (OrderBot.bddBelow _)
#align tendsto_at_top_infi tendsto_atTop_iInf
@@ -294,12 +246,6 @@ instance Pi.Inf_convergence_class' {ι : Type _} [Preorder α] [TopologicalSpace
#align pi.Inf_convergence_class' Pi.Inf_convergence_class'
-/
-/- warning: tendsto_of_monotone -> tendsto_of_monotone is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : Preorder.{u1} ι] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : ConditionallyCompleteLinearOrder.{u2} α] [_inst_4 : OrderTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (SemilatticeInf.toPartialOrder.{u2} α (Lattice.toSemilatticeInf.{u2} α (ConditionallyCompleteLattice.toLattice.{u2} α (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u2} α _inst_3)))))] {f : ι -> α}, (Monotone.{u1, u2} ι α _inst_1 (PartialOrder.toPreorder.{u2} α (SemilatticeInf.toPartialOrder.{u2} α (Lattice.toSemilatticeInf.{u2} α (ConditionallyCompleteLattice.toLattice.{u2} α (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u2} α _inst_3))))) f) -> (Or (Filter.Tendsto.{u1, u2} ι α f (Filter.atTop.{u1} ι _inst_1) (Filter.atTop.{u2} α (PartialOrder.toPreorder.{u2} α (SemilatticeInf.toPartialOrder.{u2} α (Lattice.toSemilatticeInf.{u2} α (ConditionallyCompleteLattice.toLattice.{u2} α (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u2} α _inst_3))))))) (Exists.{succ u2} α (fun (l : α) => Filter.Tendsto.{u1, u2} ι α f (Filter.atTop.{u1} ι _inst_1) (nhds.{u2} α _inst_2 l))))
-but is expected to have type
- forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLinearOrder.{u1} α] [_inst_4 : OrderTopology.{u1} α _inst_2 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u1} α _inst_3)))))] {f : ι -> α}, (Monotone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u1} α _inst_3))))) f) -> (Or (Filter.Tendsto.{u2, u1} ι α f (Filter.atTop.{u2} ι _inst_1) (Filter.atTop.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u1} α _inst_3))))))) (Exists.{succ u1} α (fun (l : α) => Filter.Tendsto.{u2, u1} ι α f (Filter.atTop.{u2} ι _inst_1) (nhds.{u1} α _inst_2 l))))
-Case conversion may be inaccurate. Consider using '#align tendsto_of_monotone tendsto_of_monotoneₓ'. -/
theorem tendsto_of_monotone {ι α : Type _} [Preorder ι] [TopologicalSpace α]
[ConditionallyCompleteLinearOrder α] [OrderTopology α] {f : ι → α} (h_mono : Monotone f) :
Tendsto f atTop atTop ∨ ∃ l, Tendsto f atTop (𝓝 l) :=
@@ -307,12 +253,6 @@ theorem tendsto_of_monotone {ι α : Type _} [Preorder ι] [TopologicalSpace α]
else Or.inl <| tendsto_atTop_atTop_of_monotone' h_mono H
#align tendsto_of_monotone tendsto_of_monotone
-/- warning: tendsto_iff_tendsto_subseq_of_monotone -> tendsto_iff_tendsto_subseq_of_monotone is a dubious translation:
-lean 3 declaration is
- forall {ι₁ : Type.{u1}} {ι₂ : Type.{u2}} {α : Type.{u3}} [_inst_1 : SemilatticeSup.{u1} ι₁] [_inst_2 : Preorder.{u2} ι₂] [_inst_3 : Nonempty.{succ u1} ι₁] [_inst_4 : TopologicalSpace.{u3} α] [_inst_5 : ConditionallyCompleteLinearOrder.{u3} α] [_inst_6 : OrderTopology.{u3} α _inst_4 (PartialOrder.toPreorder.{u3} α (SemilatticeInf.toPartialOrder.{u3} α (Lattice.toSemilatticeInf.{u3} α (ConditionallyCompleteLattice.toLattice.{u3} α (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u3} α _inst_5)))))] [_inst_7 : NoMaxOrder.{u3} α (Preorder.toHasLt.{u3} α (PartialOrder.toPreorder.{u3} α (SemilatticeInf.toPartialOrder.{u3} α (Lattice.toSemilatticeInf.{u3} α (ConditionallyCompleteLattice.toLattice.{u3} α (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u3} α _inst_5))))))] {f : ι₂ -> α} {φ : ι₁ -> ι₂} {l : α}, (Monotone.{u2, u3} ι₂ α _inst_2 (PartialOrder.toPreorder.{u3} α (SemilatticeInf.toPartialOrder.{u3} α (Lattice.toSemilatticeInf.{u3} α (ConditionallyCompleteLattice.toLattice.{u3} α (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u3} α _inst_5))))) f) -> (Filter.Tendsto.{u1, u2} ι₁ ι₂ φ (Filter.atTop.{u1} ι₁ (PartialOrder.toPreorder.{u1} ι₁ (SemilatticeSup.toPartialOrder.{u1} ι₁ _inst_1))) (Filter.atTop.{u2} ι₂ _inst_2)) -> (Iff (Filter.Tendsto.{u2, u3} ι₂ α f (Filter.atTop.{u2} ι₂ _inst_2) (nhds.{u3} α _inst_4 l)) (Filter.Tendsto.{u1, u3} ι₁ α (Function.comp.{succ u1, succ u2, succ u3} ι₁ ι₂ α f φ) (Filter.atTop.{u1} ι₁ (PartialOrder.toPreorder.{u1} ι₁ (SemilatticeSup.toPartialOrder.{u1} ι₁ _inst_1))) (nhds.{u3} α _inst_4 l)))
-but is expected to have type
- forall {ι₁ : Type.{u3}} {ι₂ : Type.{u2}} {α : Type.{u1}} [_inst_1 : SemilatticeSup.{u3} ι₁] [_inst_2 : Preorder.{u2} ι₂] [_inst_3 : Nonempty.{succ u3} ι₁] [_inst_4 : TopologicalSpace.{u1} α] [_inst_5 : ConditionallyCompleteLinearOrder.{u1} α] [_inst_6 : OrderTopology.{u1} α _inst_4 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u1} α _inst_5)))))] [_inst_7 : NoMaxOrder.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u1} α _inst_5))))))] {f : ι₂ -> α} {φ : ι₁ -> ι₂} {l : α}, (Monotone.{u2, u1} ι₂ α _inst_2 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u1} α _inst_5))))) f) -> (Filter.Tendsto.{u3, u2} ι₁ ι₂ φ (Filter.atTop.{u3} ι₁ (PartialOrder.toPreorder.{u3} ι₁ (SemilatticeSup.toPartialOrder.{u3} ι₁ _inst_1))) (Filter.atTop.{u2} ι₂ _inst_2)) -> (Iff (Filter.Tendsto.{u2, u1} ι₂ α f (Filter.atTop.{u2} ι₂ _inst_2) (nhds.{u1} α _inst_4 l)) (Filter.Tendsto.{u3, u1} ι₁ α (Function.comp.{succ u3, succ u2, succ u1} ι₁ ι₂ α f φ) (Filter.atTop.{u3} ι₁ (PartialOrder.toPreorder.{u3} ι₁ (SemilatticeSup.toPartialOrder.{u3} ι₁ _inst_1))) (nhds.{u1} α _inst_4 l)))
-Case conversion may be inaccurate. Consider using '#align tendsto_iff_tendsto_subseq_of_monotone tendsto_iff_tendsto_subseq_of_monotoneₓ'. -/
theorem tendsto_iff_tendsto_subseq_of_monotone {ι₁ ι₂ α : Type _} [SemilatticeSup ι₁] [Preorder ι₂]
[Nonempty ι₁] [TopologicalSpace α] [ConditionallyCompleteLinearOrder α] [OrderTopology α]
[NoMaxOrder α] {f : ι₂ → α} {φ : ι₁ → ι₂} {l : α} (hf : Monotone f)
@@ -334,12 +274,6 @@ Related theorems above (`is_lub.is_lub_of_tendsto`, `is_glb.is_glb_of_tendsto` e
when `f x` tends to `a` as `x` tends to some point `b` in the domain. -/
-/- warning: monotone.ge_of_tendsto -> Monotone.ge_of_tendsto is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Preorder.{u1} α] [_inst_3 : OrderClosedTopology.{u1} α _inst_1 _inst_2] [_inst_4 : SemilatticeSup.{u2} β] {f : β -> α} {a : α}, (Monotone.{u2, u1} β α (PartialOrder.toPreorder.{u2} β (SemilatticeSup.toPartialOrder.{u2} β _inst_4)) _inst_2 f) -> (Filter.Tendsto.{u2, u1} β α f (Filter.atTop.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeSup.toPartialOrder.{u2} β _inst_4))) (nhds.{u1} α _inst_1 a)) -> (forall (b : β), LE.le.{u1} α (Preorder.toHasLe.{u1} α _inst_2) (f b) a)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : Preorder.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_1 _inst_2] [_inst_4 : SemilatticeSup.{u1} β] {f : β -> α} {a : α}, (Monotone.{u1, u2} β α (PartialOrder.toPreorder.{u1} β (SemilatticeSup.toPartialOrder.{u1} β _inst_4)) _inst_2 f) -> (Filter.Tendsto.{u1, u2} β α f (Filter.atTop.{u1} β (PartialOrder.toPreorder.{u1} β (SemilatticeSup.toPartialOrder.{u1} β _inst_4))) (nhds.{u2} α _inst_1 a)) -> (forall (b : β), LE.le.{u2} α (Preorder.toLE.{u2} α _inst_2) (f b) a)
-Case conversion may be inaccurate. Consider using '#align monotone.ge_of_tendsto Monotone.ge_of_tendstoₓ'. -/
theorem Monotone.ge_of_tendsto [TopologicalSpace α] [Preorder α] [OrderClosedTopology α]
[SemilatticeSup β] {f : β → α} {a : α} (hf : Monotone f) (ha : Tendsto f atTop (𝓝 a)) (b : β) :
f b ≤ a :=
@@ -347,48 +281,24 @@ theorem Monotone.ge_of_tendsto [TopologicalSpace α] [Preorder α] [OrderClosedT
ge_of_tendsto ha ((eventually_ge_at_top b).mono fun _ hxy => hf hxy)
#align monotone.ge_of_tendsto Monotone.ge_of_tendsto
-/- warning: monotone.le_of_tendsto -> Monotone.le_of_tendsto is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Preorder.{u1} α] [_inst_3 : OrderClosedTopology.{u1} α _inst_1 _inst_2] [_inst_4 : SemilatticeInf.{u2} β] {f : β -> α} {a : α}, (Monotone.{u2, u1} β α (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β _inst_4)) _inst_2 f) -> (Filter.Tendsto.{u2, u1} β α f (Filter.atBot.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β _inst_4))) (nhds.{u1} α _inst_1 a)) -> (forall (b : β), LE.le.{u1} α (Preorder.toHasLe.{u1} α _inst_2) a (f b))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : Preorder.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_1 _inst_2] [_inst_4 : SemilatticeInf.{u1} β] {f : β -> α} {a : α}, (Monotone.{u1, u2} β α (PartialOrder.toPreorder.{u1} β (SemilatticeInf.toPartialOrder.{u1} β _inst_4)) _inst_2 f) -> (Filter.Tendsto.{u1, u2} β α f (Filter.atBot.{u1} β (PartialOrder.toPreorder.{u1} β (SemilatticeInf.toPartialOrder.{u1} β _inst_4))) (nhds.{u2} α _inst_1 a)) -> (forall (b : β), LE.le.{u2} α (Preorder.toLE.{u2} α _inst_2) a (f b))
-Case conversion may be inaccurate. Consider using '#align monotone.le_of_tendsto Monotone.le_of_tendstoₓ'. -/
theorem Monotone.le_of_tendsto [TopologicalSpace α] [Preorder α] [OrderClosedTopology α]
[SemilatticeInf β] {f : β → α} {a : α} (hf : Monotone f) (ha : Tendsto f atBot (𝓝 a)) (b : β) :
a ≤ f b :=
hf.dual.ge_of_tendsto ha b
#align monotone.le_of_tendsto Monotone.le_of_tendsto
-/- warning: antitone.le_of_tendsto -> Antitone.le_of_tendsto is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Preorder.{u1} α] [_inst_3 : OrderClosedTopology.{u1} α _inst_1 _inst_2] [_inst_4 : SemilatticeSup.{u2} β] {f : β -> α} {a : α}, (Antitone.{u2, u1} β α (PartialOrder.toPreorder.{u2} β (SemilatticeSup.toPartialOrder.{u2} β _inst_4)) _inst_2 f) -> (Filter.Tendsto.{u2, u1} β α f (Filter.atTop.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeSup.toPartialOrder.{u2} β _inst_4))) (nhds.{u1} α _inst_1 a)) -> (forall (b : β), LE.le.{u1} α (Preorder.toHasLe.{u1} α _inst_2) a (f b))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : Preorder.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_1 _inst_2] [_inst_4 : SemilatticeSup.{u1} β] {f : β -> α} {a : α}, (Antitone.{u1, u2} β α (PartialOrder.toPreorder.{u1} β (SemilatticeSup.toPartialOrder.{u1} β _inst_4)) _inst_2 f) -> (Filter.Tendsto.{u1, u2} β α f (Filter.atTop.{u1} β (PartialOrder.toPreorder.{u1} β (SemilatticeSup.toPartialOrder.{u1} β _inst_4))) (nhds.{u2} α _inst_1 a)) -> (forall (b : β), LE.le.{u2} α (Preorder.toLE.{u2} α _inst_2) a (f b))
-Case conversion may be inaccurate. Consider using '#align antitone.le_of_tendsto Antitone.le_of_tendstoₓ'. -/
theorem Antitone.le_of_tendsto [TopologicalSpace α] [Preorder α] [OrderClosedTopology α]
[SemilatticeSup β] {f : β → α} {a : α} (hf : Antitone f) (ha : Tendsto f atTop (𝓝 a)) (b : β) :
a ≤ f b :=
hf.dual_right.ge_of_tendsto ha b
#align antitone.le_of_tendsto Antitone.le_of_tendsto
-/- warning: antitone.ge_of_tendsto -> Antitone.ge_of_tendsto is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Preorder.{u1} α] [_inst_3 : OrderClosedTopology.{u1} α _inst_1 _inst_2] [_inst_4 : SemilatticeInf.{u2} β] {f : β -> α} {a : α}, (Antitone.{u2, u1} β α (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β _inst_4)) _inst_2 f) -> (Filter.Tendsto.{u2, u1} β α f (Filter.atBot.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β _inst_4))) (nhds.{u1} α _inst_1 a)) -> (forall (b : β), LE.le.{u1} α (Preorder.toHasLe.{u1} α _inst_2) (f b) a)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : Preorder.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_1 _inst_2] [_inst_4 : SemilatticeInf.{u1} β] {f : β -> α} {a : α}, (Antitone.{u1, u2} β α (PartialOrder.toPreorder.{u1} β (SemilatticeInf.toPartialOrder.{u1} β _inst_4)) _inst_2 f) -> (Filter.Tendsto.{u1, u2} β α f (Filter.atBot.{u1} β (PartialOrder.toPreorder.{u1} β (SemilatticeInf.toPartialOrder.{u1} β _inst_4))) (nhds.{u2} α _inst_1 a)) -> (forall (b : β), LE.le.{u2} α (Preorder.toLE.{u2} α _inst_2) (f b) a)
-Case conversion may be inaccurate. Consider using '#align antitone.ge_of_tendsto Antitone.ge_of_tendstoₓ'. -/
theorem Antitone.ge_of_tendsto [TopologicalSpace α] [Preorder α] [OrderClosedTopology α]
[SemilatticeInf β] {f : β → α} {a : α} (hf : Antitone f) (ha : Tendsto f atBot (𝓝 a)) (b : β) :
f b ≤ a :=
hf.dual_right.le_of_tendsto ha b
#align antitone.ge_of_tendsto Antitone.ge_of_tendsto
-/- warning: is_lub_of_tendsto_at_top -> isLUB_of_tendsto_atTop is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Preorder.{u1} α] [_inst_3 : OrderClosedTopology.{u1} α _inst_1 _inst_2] [_inst_4 : Nonempty.{succ u2} β] [_inst_5 : SemilatticeSup.{u2} β] {f : β -> α} {a : α}, (Monotone.{u2, u1} β α (PartialOrder.toPreorder.{u2} β (SemilatticeSup.toPartialOrder.{u2} β _inst_5)) _inst_2 f) -> (Filter.Tendsto.{u2, u1} β α f (Filter.atTop.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeSup.toPartialOrder.{u2} β _inst_5))) (nhds.{u1} α _inst_1 a)) -> (IsLUB.{u1} α _inst_2 (Set.range.{u1, succ u2} α β f) a)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : Preorder.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_1 _inst_2] [_inst_4 : Nonempty.{succ u1} β] [_inst_5 : SemilatticeSup.{u1} β] {f : β -> α} {a : α}, (Monotone.{u1, u2} β α (PartialOrder.toPreorder.{u1} β (SemilatticeSup.toPartialOrder.{u1} β _inst_5)) _inst_2 f) -> (Filter.Tendsto.{u1, u2} β α f (Filter.atTop.{u1} β (PartialOrder.toPreorder.{u1} β (SemilatticeSup.toPartialOrder.{u1} β _inst_5))) (nhds.{u2} α _inst_1 a)) -> (IsLUB.{u2} α _inst_2 (Set.range.{u2, succ u1} α β f) a)
-Case conversion may be inaccurate. Consider using '#align is_lub_of_tendsto_at_top isLUB_of_tendsto_atTopₓ'. -/
theorem isLUB_of_tendsto_atTop [TopologicalSpace α] [Preorder α] [OrderClosedTopology α]
[Nonempty β] [SemilatticeSup β] {f : β → α} {a : α} (hf : Monotone f)
(ha : Tendsto f atTop (𝓝 a)) : IsLUB (Set.range f) a :=
@@ -399,72 +309,36 @@ theorem isLUB_of_tendsto_atTop [TopologicalSpace α] [Preorder α] [OrderClosedT
· exact fun _ hb => le_of_tendsto' ha fun x => hb (Set.mem_range_self x)
#align is_lub_of_tendsto_at_top isLUB_of_tendsto_atTop
-/- warning: is_glb_of_tendsto_at_bot -> isGLB_of_tendsto_atBot is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Preorder.{u1} α] [_inst_3 : OrderClosedTopology.{u1} α _inst_1 _inst_2] [_inst_4 : Nonempty.{succ u2} β] [_inst_5 : SemilatticeInf.{u2} β] {f : β -> α} {a : α}, (Monotone.{u2, u1} β α (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β _inst_5)) _inst_2 f) -> (Filter.Tendsto.{u2, u1} β α f (Filter.atBot.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β _inst_5))) (nhds.{u1} α _inst_1 a)) -> (IsGLB.{u1} α _inst_2 (Set.range.{u1, succ u2} α β f) a)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : Preorder.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_1 _inst_2] [_inst_4 : Nonempty.{succ u1} β] [_inst_5 : SemilatticeInf.{u1} β] {f : β -> α} {a : α}, (Monotone.{u1, u2} β α (PartialOrder.toPreorder.{u1} β (SemilatticeInf.toPartialOrder.{u1} β _inst_5)) _inst_2 f) -> (Filter.Tendsto.{u1, u2} β α f (Filter.atBot.{u1} β (PartialOrder.toPreorder.{u1} β (SemilatticeInf.toPartialOrder.{u1} β _inst_5))) (nhds.{u2} α _inst_1 a)) -> (IsGLB.{u2} α _inst_2 (Set.range.{u2, succ u1} α β f) a)
-Case conversion may be inaccurate. Consider using '#align is_glb_of_tendsto_at_bot isGLB_of_tendsto_atBotₓ'. -/
theorem isGLB_of_tendsto_atBot [TopologicalSpace α] [Preorder α] [OrderClosedTopology α]
[Nonempty β] [SemilatticeInf β] {f : β → α} {a : α} (hf : Monotone f)
(ha : Tendsto f atBot (𝓝 a)) : IsGLB (Set.range f) a :=
@isLUB_of_tendsto_atTop αᵒᵈ βᵒᵈ _ _ _ _ _ _ _ hf.dual ha
#align is_glb_of_tendsto_at_bot isGLB_of_tendsto_atBot
-/- warning: is_lub_of_tendsto_at_bot -> isLUB_of_tendsto_atBot is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Preorder.{u1} α] [_inst_3 : OrderClosedTopology.{u1} α _inst_1 _inst_2] [_inst_4 : Nonempty.{succ u2} β] [_inst_5 : SemilatticeInf.{u2} β] {f : β -> α} {a : α}, (Antitone.{u2, u1} β α (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β _inst_5)) _inst_2 f) -> (Filter.Tendsto.{u2, u1} β α f (Filter.atBot.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β _inst_5))) (nhds.{u1} α _inst_1 a)) -> (IsLUB.{u1} α _inst_2 (Set.range.{u1, succ u2} α β f) a)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : Preorder.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_1 _inst_2] [_inst_4 : Nonempty.{succ u1} β] [_inst_5 : SemilatticeInf.{u1} β] {f : β -> α} {a : α}, (Antitone.{u1, u2} β α (PartialOrder.toPreorder.{u1} β (SemilatticeInf.toPartialOrder.{u1} β _inst_5)) _inst_2 f) -> (Filter.Tendsto.{u1, u2} β α f (Filter.atBot.{u1} β (PartialOrder.toPreorder.{u1} β (SemilatticeInf.toPartialOrder.{u1} β _inst_5))) (nhds.{u2} α _inst_1 a)) -> (IsLUB.{u2} α _inst_2 (Set.range.{u2, succ u1} α β f) a)
-Case conversion may be inaccurate. Consider using '#align is_lub_of_tendsto_at_bot isLUB_of_tendsto_atBotₓ'. -/
theorem isLUB_of_tendsto_atBot [TopologicalSpace α] [Preorder α] [OrderClosedTopology α]
[Nonempty β] [SemilatticeInf β] {f : β → α} {a : α} (hf : Antitone f)
(ha : Tendsto f atBot (𝓝 a)) : IsLUB (Set.range f) a :=
@isLUB_of_tendsto_atTop α βᵒᵈ _ _ _ _ _ _ _ hf.dual_left ha
#align is_lub_of_tendsto_at_bot isLUB_of_tendsto_atBot
-/- warning: is_glb_of_tendsto_at_top -> isGLB_of_tendsto_atTop is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Preorder.{u1} α] [_inst_3 : OrderClosedTopology.{u1} α _inst_1 _inst_2] [_inst_4 : Nonempty.{succ u2} β] [_inst_5 : SemilatticeSup.{u2} β] {f : β -> α} {a : α}, (Antitone.{u2, u1} β α (PartialOrder.toPreorder.{u2} β (SemilatticeSup.toPartialOrder.{u2} β _inst_5)) _inst_2 f) -> (Filter.Tendsto.{u2, u1} β α f (Filter.atTop.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeSup.toPartialOrder.{u2} β _inst_5))) (nhds.{u1} α _inst_1 a)) -> (IsGLB.{u1} α _inst_2 (Set.range.{u1, succ u2} α β f) a)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : Preorder.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_1 _inst_2] [_inst_4 : Nonempty.{succ u1} β] [_inst_5 : SemilatticeSup.{u1} β] {f : β -> α} {a : α}, (Antitone.{u1, u2} β α (PartialOrder.toPreorder.{u1} β (SemilatticeSup.toPartialOrder.{u1} β _inst_5)) _inst_2 f) -> (Filter.Tendsto.{u1, u2} β α f (Filter.atTop.{u1} β (PartialOrder.toPreorder.{u1} β (SemilatticeSup.toPartialOrder.{u1} β _inst_5))) (nhds.{u2} α _inst_1 a)) -> (IsGLB.{u2} α _inst_2 (Set.range.{u2, succ u1} α β f) a)
-Case conversion may be inaccurate. Consider using '#align is_glb_of_tendsto_at_top isGLB_of_tendsto_atTopₓ'. -/
theorem isGLB_of_tendsto_atTop [TopologicalSpace α] [Preorder α] [OrderClosedTopology α]
[Nonempty β] [SemilatticeSup β] {f : β → α} {a : α} (hf : Antitone f)
(ha : Tendsto f atTop (𝓝 a)) : IsGLB (Set.range f) a :=
@isGLB_of_tendsto_atBot α βᵒᵈ _ _ _ _ _ _ _ hf.dual_left ha
#align is_glb_of_tendsto_at_top isGLB_of_tendsto_atTop
-/- warning: supr_eq_of_tendsto -> iSup_eq_of_tendsto is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : CompleteLinearOrder.{u1} α] [_inst_3 : OrderTopology.{u1} α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α (CompleteLinearOrder.toCompleteLattice.{u1} α _inst_2))))] [_inst_4 : Nonempty.{succ u2} β] [_inst_5 : SemilatticeSup.{u2} β] {f : β -> α} {a : α}, (Monotone.{u2, u1} β α (PartialOrder.toPreorder.{u2} β (SemilatticeSup.toPartialOrder.{u2} β _inst_5)) (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α (CompleteLinearOrder.toCompleteLattice.{u1} α _inst_2)))) f) -> (Filter.Tendsto.{u2, u1} β α f (Filter.atTop.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeSup.toPartialOrder.{u2} β _inst_5))) (nhds.{u1} α _inst_1 a)) -> (Eq.{succ u1} α (iSup.{u1, succ u2} α (ConditionallyCompleteLattice.toHasSup.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α (CompleteLinearOrder.toCompleteLattice.{u1} α _inst_2))) β f) a)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : CompleteLinearOrder.{u2} α] [_inst_3 : OrderTopology.{u2} α _inst_1 (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α (CompleteLinearOrder.toCompleteLattice.{u2} α _inst_2))))] [_inst_4 : Nonempty.{succ u1} β] [_inst_5 : SemilatticeSup.{u1} β] {f : β -> α} {a : α}, (Monotone.{u1, u2} β α (PartialOrder.toPreorder.{u1} β (SemilatticeSup.toPartialOrder.{u1} β _inst_5)) (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α (CompleteLinearOrder.toCompleteLattice.{u2} α _inst_2)))) f) -> (Filter.Tendsto.{u1, u2} β α f (Filter.atTop.{u1} β (PartialOrder.toPreorder.{u1} β (SemilatticeSup.toPartialOrder.{u1} β _inst_5))) (nhds.{u2} α _inst_1 a)) -> (Eq.{succ u2} α (iSup.{u2, succ u1} α (ConditionallyCompleteLattice.toSupSet.{u2} α (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u2} α (ConditionallyCompleteLinearOrderBot.toConditionallyCompleteLinearOrder.{u2} α (CompleteLinearOrder.toConditionallyCompleteLinearOrderBot.{u2} α _inst_2)))) β f) a)
-Case conversion may be inaccurate. Consider using '#align supr_eq_of_tendsto iSup_eq_of_tendstoₓ'. -/
theorem iSup_eq_of_tendsto {α β} [TopologicalSpace α] [CompleteLinearOrder α] [OrderTopology α]
[Nonempty β] [SemilatticeSup β] {f : β → α} {a : α} (hf : Monotone f) :
Tendsto f atTop (𝓝 a) → iSup f = a :=
tendsto_nhds_unique (tendsto_atTop_iSup hf)
#align supr_eq_of_tendsto iSup_eq_of_tendsto
-/- warning: infi_eq_of_tendsto -> iInf_eq_of_tendsto is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : CompleteLinearOrder.{u2} α] [_inst_3 : OrderTopology.{u2} α _inst_1 (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α (CompleteLinearOrder.toCompleteLattice.{u2} α _inst_2))))] [_inst_4 : Nonempty.{succ u1} β] [_inst_5 : SemilatticeSup.{u1} β] {f : β -> α} {a : α}, (Antitone.{u1, u2} β α (PartialOrder.toPreorder.{u1} β (SemilatticeSup.toPartialOrder.{u1} β _inst_5)) (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α (CompleteLinearOrder.toCompleteLattice.{u2} α _inst_2)))) f) -> (Filter.Tendsto.{u1, u2} β α f (Filter.atTop.{u1} β (PartialOrder.toPreorder.{u1} β (SemilatticeSup.toPartialOrder.{u1} β _inst_5))) (nhds.{u2} α _inst_1 a)) -> (Eq.{succ u2} α (iInf.{u2, succ u1} α (ConditionallyCompleteLattice.toHasInf.{u2} α (CompleteLattice.toConditionallyCompleteLattice.{u2} α (CompleteLinearOrder.toCompleteLattice.{u2} α _inst_2))) β f) a)
-but is expected to have type
- forall {β : Type.{u1}} {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : CompleteLinearOrder.{u2} α] [_inst_3 : OrderTopology.{u2} α _inst_1 (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α (CompleteLinearOrder.toCompleteLattice.{u2} α _inst_2))))] [_inst_4 : Nonempty.{succ u1} β] [_inst_5 : SemilatticeSup.{u1} β] {f : β -> α} {a : α}, (Antitone.{u1, u2} β α (PartialOrder.toPreorder.{u1} β (SemilatticeSup.toPartialOrder.{u1} β _inst_5)) (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α (CompleteLinearOrder.toCompleteLattice.{u2} α _inst_2)))) f) -> (Filter.Tendsto.{u1, u2} β α f (Filter.atTop.{u1} β (PartialOrder.toPreorder.{u1} β (SemilatticeSup.toPartialOrder.{u1} β _inst_5))) (nhds.{u2} α _inst_1 a)) -> (Eq.{succ u2} α (iInf.{u2, succ u1} α (ConditionallyCompleteLattice.toInfSet.{u2} α (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u2} α (ConditionallyCompleteLinearOrderBot.toConditionallyCompleteLinearOrder.{u2} α (CompleteLinearOrder.toConditionallyCompleteLinearOrderBot.{u2} α _inst_2)))) β f) a)
-Case conversion may be inaccurate. Consider using '#align infi_eq_of_tendsto iInf_eq_of_tendstoₓ'. -/
theorem iInf_eq_of_tendsto {α} [TopologicalSpace α] [CompleteLinearOrder α] [OrderTopology α]
[Nonempty β] [SemilatticeSup β] {f : β → α} {a : α} (hf : Antitone f) :
Tendsto f atTop (𝓝 a) → iInf f = a :=
tendsto_nhds_unique (tendsto_atTop_iInf hf)
#align infi_eq_of_tendsto iInf_eq_of_tendsto
-/- warning: supr_eq_supr_subseq_of_monotone -> iSup_eq_iSup_subseq_of_monotone is a dubious translation:
-lean 3 declaration is
- forall {ι₁ : Type.{u1}} {ι₂ : Type.{u2}} {α : Type.{u3}} [_inst_1 : Preorder.{u2} ι₂] [_inst_2 : CompleteLattice.{u3} α] {l : Filter.{u1} ι₁} [_inst_3 : Filter.NeBot.{u1} ι₁ l] {f : ι₂ -> α} {φ : ι₁ -> ι₂}, (Monotone.{u2, u3} ι₂ α _inst_1 (PartialOrder.toPreorder.{u3} α (CompleteSemilatticeInf.toPartialOrder.{u3} α (CompleteLattice.toCompleteSemilatticeInf.{u3} α _inst_2))) f) -> (Filter.Tendsto.{u1, u2} ι₁ ι₂ φ l (Filter.atTop.{u2} ι₂ _inst_1)) -> (Eq.{succ u3} α (iSup.{u3, succ u2} α (ConditionallyCompleteLattice.toHasSup.{u3} α (CompleteLattice.toConditionallyCompleteLattice.{u3} α _inst_2)) ι₂ (fun (i : ι₂) => f i)) (iSup.{u3, succ u1} α (ConditionallyCompleteLattice.toHasSup.{u3} α (CompleteLattice.toConditionallyCompleteLattice.{u3} α _inst_2)) ι₁ (fun (i : ι₁) => f (φ i))))
-but is expected to have type
- forall {ι₁ : Type.{u3}} {ι₂ : Type.{u2}} {α : Type.{u1}} [_inst_1 : Preorder.{u2} ι₂] [_inst_2 : CompleteLattice.{u1} α] {l : Filter.{u3} ι₁} [_inst_3 : Filter.NeBot.{u3} ι₁ l] {f : ι₂ -> α} {φ : ι₁ -> ι₂}, (Monotone.{u2, u1} ι₂ α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_2))) f) -> (Filter.Tendsto.{u3, u2} ι₁ ι₂ φ l (Filter.atTop.{u2} ι₂ _inst_1)) -> (Eq.{succ u1} α (iSup.{u1, succ u2} α (ConditionallyCompleteLattice.toSupSet.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_2)) ι₂ (fun (i : ι₂) => f i)) (iSup.{u1, succ u3} α (ConditionallyCompleteLattice.toSupSet.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_2)) ι₁ (fun (i : ι₁) => f (φ i))))
-Case conversion may be inaccurate. Consider using '#align supr_eq_supr_subseq_of_monotone iSup_eq_iSup_subseq_of_monotoneₓ'. -/
theorem iSup_eq_iSup_subseq_of_monotone {ι₁ ι₂ α : Type _} [Preorder ι₂] [CompleteLattice α]
{l : Filter ι₁} [l.ne_bot] {f : ι₂ → α} {φ : ι₁ → ι₂} (hf : Monotone f)
(hφ : Tendsto φ l atTop) : (⨆ i, f i) = ⨆ i, f (φ i) :=
@@ -474,12 +348,6 @@ theorem iSup_eq_iSup_subseq_of_monotone {ι₁ ι₂ α : Type _} [Preorder ι
(iSup_mono' fun i => ⟨φ i, le_rfl⟩)
#align supr_eq_supr_subseq_of_monotone iSup_eq_iSup_subseq_of_monotone
-/- warning: infi_eq_infi_subseq_of_monotone -> iInf_eq_iInf_subseq_of_monotone is a dubious translation:
-lean 3 declaration is
- forall {ι₁ : Type.{u1}} {ι₂ : Type.{u2}} {α : Type.{u3}} [_inst_1 : Preorder.{u2} ι₂] [_inst_2 : CompleteLattice.{u3} α] {l : Filter.{u1} ι₁} [_inst_3 : Filter.NeBot.{u1} ι₁ l] {f : ι₂ -> α} {φ : ι₁ -> ι₂}, (Monotone.{u2, u3} ι₂ α _inst_1 (PartialOrder.toPreorder.{u3} α (CompleteSemilatticeInf.toPartialOrder.{u3} α (CompleteLattice.toCompleteSemilatticeInf.{u3} α _inst_2))) f) -> (Filter.Tendsto.{u1, u2} ι₁ ι₂ φ l (Filter.atBot.{u2} ι₂ _inst_1)) -> (Eq.{succ u3} α (iInf.{u3, succ u2} α (ConditionallyCompleteLattice.toHasInf.{u3} α (CompleteLattice.toConditionallyCompleteLattice.{u3} α _inst_2)) ι₂ (fun (i : ι₂) => f i)) (iInf.{u3, succ u1} α (ConditionallyCompleteLattice.toHasInf.{u3} α (CompleteLattice.toConditionallyCompleteLattice.{u3} α _inst_2)) ι₁ (fun (i : ι₁) => f (φ i))))
-but is expected to have type
- forall {ι₁ : Type.{u3}} {ι₂ : Type.{u2}} {α : Type.{u1}} [_inst_1 : Preorder.{u2} ι₂] [_inst_2 : CompleteLattice.{u1} α] {l : Filter.{u3} ι₁} [_inst_3 : Filter.NeBot.{u3} ι₁ l] {f : ι₂ -> α} {φ : ι₁ -> ι₂}, (Monotone.{u2, u1} ι₂ α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_2))) f) -> (Filter.Tendsto.{u3, u2} ι₁ ι₂ φ l (Filter.atBot.{u2} ι₂ _inst_1)) -> (Eq.{succ u1} α (iInf.{u1, succ u2} α (ConditionallyCompleteLattice.toInfSet.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_2)) ι₂ (fun (i : ι₂) => f i)) (iInf.{u1, succ u3} α (ConditionallyCompleteLattice.toInfSet.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_2)) ι₁ (fun (i : ι₁) => f (φ i))))
-Case conversion may be inaccurate. Consider using '#align infi_eq_infi_subseq_of_monotone iInf_eq_iInf_subseq_of_monotoneₓ'. -/
theorem iInf_eq_iInf_subseq_of_monotone {ι₁ ι₂ α : Type _} [Preorder ι₂] [CompleteLattice α]
{l : Filter ι₁} [l.ne_bot] {f : ι₂ → α} {φ : ι₁ → ι₂} (hf : Monotone f)
(hφ : Tendsto φ l atBot) : (⨅ i, f i) = ⨅ i, f (φ i) :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -263,8 +263,7 @@ instance [Preorder α] [Preorder β] [TopologicalSpace α] [TopologicalSpace β]
have B : tendsto (fun x : s => (x : α × β).2) at_top (𝓝 b) :=
tendsto_atTop_isLUB (monotone_snd.restrict s) h.2
convert A.prod_mk_nhds B
- ext1 ⟨⟨x, y⟩, h⟩
- rfl
+ ext1 ⟨⟨x, y⟩, h⟩; rfl
instance [Preorder α] [Preorder β] [TopologicalSpace α] [TopologicalSpace β] [InfConvergenceClass α]
[InfConvergenceClass β] : InfConvergenceClass (α × β) :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -310,7 +310,7 @@ theorem tendsto_of_monotone {ι α : Type _} [Preorder ι] [TopologicalSpace α]
/- warning: tendsto_iff_tendsto_subseq_of_monotone -> tendsto_iff_tendsto_subseq_of_monotone is a dubious translation:
lean 3 declaration is
- forall {ι₁ : Type.{u1}} {ι₂ : Type.{u2}} {α : Type.{u3}} [_inst_1 : SemilatticeSup.{u1} ι₁] [_inst_2 : Preorder.{u2} ι₂] [_inst_3 : Nonempty.{succ u1} ι₁] [_inst_4 : TopologicalSpace.{u3} α] [_inst_5 : ConditionallyCompleteLinearOrder.{u3} α] [_inst_6 : OrderTopology.{u3} α _inst_4 (PartialOrder.toPreorder.{u3} α (SemilatticeInf.toPartialOrder.{u3} α (Lattice.toSemilatticeInf.{u3} α (ConditionallyCompleteLattice.toLattice.{u3} α (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u3} α _inst_5)))))] [_inst_7 : NoMaxOrder.{u3} α (Preorder.toLT.{u3} α (PartialOrder.toPreorder.{u3} α (SemilatticeInf.toPartialOrder.{u3} α (Lattice.toSemilatticeInf.{u3} α (ConditionallyCompleteLattice.toLattice.{u3} α (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u3} α _inst_5))))))] {f : ι₂ -> α} {φ : ι₁ -> ι₂} {l : α}, (Monotone.{u2, u3} ι₂ α _inst_2 (PartialOrder.toPreorder.{u3} α (SemilatticeInf.toPartialOrder.{u3} α (Lattice.toSemilatticeInf.{u3} α (ConditionallyCompleteLattice.toLattice.{u3} α (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u3} α _inst_5))))) f) -> (Filter.Tendsto.{u1, u2} ι₁ ι₂ φ (Filter.atTop.{u1} ι₁ (PartialOrder.toPreorder.{u1} ι₁ (SemilatticeSup.toPartialOrder.{u1} ι₁ _inst_1))) (Filter.atTop.{u2} ι₂ _inst_2)) -> (Iff (Filter.Tendsto.{u2, u3} ι₂ α f (Filter.atTop.{u2} ι₂ _inst_2) (nhds.{u3} α _inst_4 l)) (Filter.Tendsto.{u1, u3} ι₁ α (Function.comp.{succ u1, succ u2, succ u3} ι₁ ι₂ α f φ) (Filter.atTop.{u1} ι₁ (PartialOrder.toPreorder.{u1} ι₁ (SemilatticeSup.toPartialOrder.{u1} ι₁ _inst_1))) (nhds.{u3} α _inst_4 l)))
+ forall {ι₁ : Type.{u1}} {ι₂ : Type.{u2}} {α : Type.{u3}} [_inst_1 : SemilatticeSup.{u1} ι₁] [_inst_2 : Preorder.{u2} ι₂] [_inst_3 : Nonempty.{succ u1} ι₁] [_inst_4 : TopologicalSpace.{u3} α] [_inst_5 : ConditionallyCompleteLinearOrder.{u3} α] [_inst_6 : OrderTopology.{u3} α _inst_4 (PartialOrder.toPreorder.{u3} α (SemilatticeInf.toPartialOrder.{u3} α (Lattice.toSemilatticeInf.{u3} α (ConditionallyCompleteLattice.toLattice.{u3} α (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u3} α _inst_5)))))] [_inst_7 : NoMaxOrder.{u3} α (Preorder.toHasLt.{u3} α (PartialOrder.toPreorder.{u3} α (SemilatticeInf.toPartialOrder.{u3} α (Lattice.toSemilatticeInf.{u3} α (ConditionallyCompleteLattice.toLattice.{u3} α (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u3} α _inst_5))))))] {f : ι₂ -> α} {φ : ι₁ -> ι₂} {l : α}, (Monotone.{u2, u3} ι₂ α _inst_2 (PartialOrder.toPreorder.{u3} α (SemilatticeInf.toPartialOrder.{u3} α (Lattice.toSemilatticeInf.{u3} α (ConditionallyCompleteLattice.toLattice.{u3} α (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u3} α _inst_5))))) f) -> (Filter.Tendsto.{u1, u2} ι₁ ι₂ φ (Filter.atTop.{u1} ι₁ (PartialOrder.toPreorder.{u1} ι₁ (SemilatticeSup.toPartialOrder.{u1} ι₁ _inst_1))) (Filter.atTop.{u2} ι₂ _inst_2)) -> (Iff (Filter.Tendsto.{u2, u3} ι₂ α f (Filter.atTop.{u2} ι₂ _inst_2) (nhds.{u3} α _inst_4 l)) (Filter.Tendsto.{u1, u3} ι₁ α (Function.comp.{succ u1, succ u2, succ u3} ι₁ ι₂ α f φ) (Filter.atTop.{u1} ι₁ (PartialOrder.toPreorder.{u1} ι₁ (SemilatticeSup.toPartialOrder.{u1} ι₁ _inst_1))) (nhds.{u3} α _inst_4 l)))
but is expected to have type
forall {ι₁ : Type.{u3}} {ι₂ : Type.{u2}} {α : Type.{u1}} [_inst_1 : SemilatticeSup.{u3} ι₁] [_inst_2 : Preorder.{u2} ι₂] [_inst_3 : Nonempty.{succ u3} ι₁] [_inst_4 : TopologicalSpace.{u1} α] [_inst_5 : ConditionallyCompleteLinearOrder.{u1} α] [_inst_6 : OrderTopology.{u1} α _inst_4 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u1} α _inst_5)))))] [_inst_7 : NoMaxOrder.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u1} α _inst_5))))))] {f : ι₂ -> α} {φ : ι₁ -> ι₂} {l : α}, (Monotone.{u2, u1} ι₂ α _inst_2 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u1} α _inst_5))))) f) -> (Filter.Tendsto.{u3, u2} ι₁ ι₂ φ (Filter.atTop.{u3} ι₁ (PartialOrder.toPreorder.{u3} ι₁ (SemilatticeSup.toPartialOrder.{u3} ι₁ _inst_1))) (Filter.atTop.{u2} ι₂ _inst_2)) -> (Iff (Filter.Tendsto.{u2, u1} ι₂ α f (Filter.atTop.{u2} ι₂ _inst_2) (nhds.{u1} α _inst_4 l)) (Filter.Tendsto.{u3, u1} ι₁ α (Function.comp.{succ u3, succ u2, succ u1} ι₁ ι₂ α f φ) (Filter.atTop.{u3} ι₁ (PartialOrder.toPreorder.{u3} ι₁ (SemilatticeSup.toPartialOrder.{u3} ι₁ _inst_1))) (nhds.{u1} α _inst_4 l)))
Case conversion may be inaccurate. Consider using '#align tendsto_iff_tendsto_subseq_of_monotone tendsto_iff_tendsto_subseq_of_monotoneₓ'. -/
@@ -337,7 +337,7 @@ when `f x` tends to `a` as `x` tends to some point `b` in the domain. -/
/- warning: monotone.ge_of_tendsto -> Monotone.ge_of_tendsto is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Preorder.{u1} α] [_inst_3 : OrderClosedTopology.{u1} α _inst_1 _inst_2] [_inst_4 : SemilatticeSup.{u2} β] {f : β -> α} {a : α}, (Monotone.{u2, u1} β α (PartialOrder.toPreorder.{u2} β (SemilatticeSup.toPartialOrder.{u2} β _inst_4)) _inst_2 f) -> (Filter.Tendsto.{u2, u1} β α f (Filter.atTop.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeSup.toPartialOrder.{u2} β _inst_4))) (nhds.{u1} α _inst_1 a)) -> (forall (b : β), LE.le.{u1} α (Preorder.toLE.{u1} α _inst_2) (f b) a)
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Preorder.{u1} α] [_inst_3 : OrderClosedTopology.{u1} α _inst_1 _inst_2] [_inst_4 : SemilatticeSup.{u2} β] {f : β -> α} {a : α}, (Monotone.{u2, u1} β α (PartialOrder.toPreorder.{u2} β (SemilatticeSup.toPartialOrder.{u2} β _inst_4)) _inst_2 f) -> (Filter.Tendsto.{u2, u1} β α f (Filter.atTop.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeSup.toPartialOrder.{u2} β _inst_4))) (nhds.{u1} α _inst_1 a)) -> (forall (b : β), LE.le.{u1} α (Preorder.toHasLe.{u1} α _inst_2) (f b) a)
but is expected to have type
forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : Preorder.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_1 _inst_2] [_inst_4 : SemilatticeSup.{u1} β] {f : β -> α} {a : α}, (Monotone.{u1, u2} β α (PartialOrder.toPreorder.{u1} β (SemilatticeSup.toPartialOrder.{u1} β _inst_4)) _inst_2 f) -> (Filter.Tendsto.{u1, u2} β α f (Filter.atTop.{u1} β (PartialOrder.toPreorder.{u1} β (SemilatticeSup.toPartialOrder.{u1} β _inst_4))) (nhds.{u2} α _inst_1 a)) -> (forall (b : β), LE.le.{u2} α (Preorder.toLE.{u2} α _inst_2) (f b) a)
Case conversion may be inaccurate. Consider using '#align monotone.ge_of_tendsto Monotone.ge_of_tendstoₓ'. -/
@@ -350,7 +350,7 @@ theorem Monotone.ge_of_tendsto [TopologicalSpace α] [Preorder α] [OrderClosedT
/- warning: monotone.le_of_tendsto -> Monotone.le_of_tendsto is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Preorder.{u1} α] [_inst_3 : OrderClosedTopology.{u1} α _inst_1 _inst_2] [_inst_4 : SemilatticeInf.{u2} β] {f : β -> α} {a : α}, (Monotone.{u2, u1} β α (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β _inst_4)) _inst_2 f) -> (Filter.Tendsto.{u2, u1} β α f (Filter.atBot.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β _inst_4))) (nhds.{u1} α _inst_1 a)) -> (forall (b : β), LE.le.{u1} α (Preorder.toLE.{u1} α _inst_2) a (f b))
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Preorder.{u1} α] [_inst_3 : OrderClosedTopology.{u1} α _inst_1 _inst_2] [_inst_4 : SemilatticeInf.{u2} β] {f : β -> α} {a : α}, (Monotone.{u2, u1} β α (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β _inst_4)) _inst_2 f) -> (Filter.Tendsto.{u2, u1} β α f (Filter.atBot.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β _inst_4))) (nhds.{u1} α _inst_1 a)) -> (forall (b : β), LE.le.{u1} α (Preorder.toHasLe.{u1} α _inst_2) a (f b))
but is expected to have type
forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : Preorder.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_1 _inst_2] [_inst_4 : SemilatticeInf.{u1} β] {f : β -> α} {a : α}, (Monotone.{u1, u2} β α (PartialOrder.toPreorder.{u1} β (SemilatticeInf.toPartialOrder.{u1} β _inst_4)) _inst_2 f) -> (Filter.Tendsto.{u1, u2} β α f (Filter.atBot.{u1} β (PartialOrder.toPreorder.{u1} β (SemilatticeInf.toPartialOrder.{u1} β _inst_4))) (nhds.{u2} α _inst_1 a)) -> (forall (b : β), LE.le.{u2} α (Preorder.toLE.{u2} α _inst_2) a (f b))
Case conversion may be inaccurate. Consider using '#align monotone.le_of_tendsto Monotone.le_of_tendstoₓ'. -/
@@ -362,7 +362,7 @@ theorem Monotone.le_of_tendsto [TopologicalSpace α] [Preorder α] [OrderClosedT
/- warning: antitone.le_of_tendsto -> Antitone.le_of_tendsto is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Preorder.{u1} α] [_inst_3 : OrderClosedTopology.{u1} α _inst_1 _inst_2] [_inst_4 : SemilatticeSup.{u2} β] {f : β -> α} {a : α}, (Antitone.{u2, u1} β α (PartialOrder.toPreorder.{u2} β (SemilatticeSup.toPartialOrder.{u2} β _inst_4)) _inst_2 f) -> (Filter.Tendsto.{u2, u1} β α f (Filter.atTop.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeSup.toPartialOrder.{u2} β _inst_4))) (nhds.{u1} α _inst_1 a)) -> (forall (b : β), LE.le.{u1} α (Preorder.toLE.{u1} α _inst_2) a (f b))
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Preorder.{u1} α] [_inst_3 : OrderClosedTopology.{u1} α _inst_1 _inst_2] [_inst_4 : SemilatticeSup.{u2} β] {f : β -> α} {a : α}, (Antitone.{u2, u1} β α (PartialOrder.toPreorder.{u2} β (SemilatticeSup.toPartialOrder.{u2} β _inst_4)) _inst_2 f) -> (Filter.Tendsto.{u2, u1} β α f (Filter.atTop.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeSup.toPartialOrder.{u2} β _inst_4))) (nhds.{u1} α _inst_1 a)) -> (forall (b : β), LE.le.{u1} α (Preorder.toHasLe.{u1} α _inst_2) a (f b))
but is expected to have type
forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : Preorder.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_1 _inst_2] [_inst_4 : SemilatticeSup.{u1} β] {f : β -> α} {a : α}, (Antitone.{u1, u2} β α (PartialOrder.toPreorder.{u1} β (SemilatticeSup.toPartialOrder.{u1} β _inst_4)) _inst_2 f) -> (Filter.Tendsto.{u1, u2} β α f (Filter.atTop.{u1} β (PartialOrder.toPreorder.{u1} β (SemilatticeSup.toPartialOrder.{u1} β _inst_4))) (nhds.{u2} α _inst_1 a)) -> (forall (b : β), LE.le.{u2} α (Preorder.toLE.{u2} α _inst_2) a (f b))
Case conversion may be inaccurate. Consider using '#align antitone.le_of_tendsto Antitone.le_of_tendstoₓ'. -/
@@ -374,7 +374,7 @@ theorem Antitone.le_of_tendsto [TopologicalSpace α] [Preorder α] [OrderClosedT
/- warning: antitone.ge_of_tendsto -> Antitone.ge_of_tendsto is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Preorder.{u1} α] [_inst_3 : OrderClosedTopology.{u1} α _inst_1 _inst_2] [_inst_4 : SemilatticeInf.{u2} β] {f : β -> α} {a : α}, (Antitone.{u2, u1} β α (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β _inst_4)) _inst_2 f) -> (Filter.Tendsto.{u2, u1} β α f (Filter.atBot.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β _inst_4))) (nhds.{u1} α _inst_1 a)) -> (forall (b : β), LE.le.{u1} α (Preorder.toLE.{u1} α _inst_2) (f b) a)
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Preorder.{u1} α] [_inst_3 : OrderClosedTopology.{u1} α _inst_1 _inst_2] [_inst_4 : SemilatticeInf.{u2} β] {f : β -> α} {a : α}, (Antitone.{u2, u1} β α (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β _inst_4)) _inst_2 f) -> (Filter.Tendsto.{u2, u1} β α f (Filter.atBot.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeInf.toPartialOrder.{u2} β _inst_4))) (nhds.{u1} α _inst_1 a)) -> (forall (b : β), LE.le.{u1} α (Preorder.toHasLe.{u1} α _inst_2) (f b) a)
but is expected to have type
forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : Preorder.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_1 _inst_2] [_inst_4 : SemilatticeInf.{u1} β] {f : β -> α} {a : α}, (Antitone.{u1, u2} β α (PartialOrder.toPreorder.{u1} β (SemilatticeInf.toPartialOrder.{u1} β _inst_4)) _inst_2 f) -> (Filter.Tendsto.{u1, u2} β α f (Filter.atBot.{u1} β (PartialOrder.toPreorder.{u1} β (SemilatticeInf.toPartialOrder.{u1} β _inst_4))) (nhds.{u2} α _inst_1 a)) -> (forall (b : β), LE.le.{u2} α (Preorder.toLE.{u2} α _inst_2) (f b) a)
Case conversion may be inaccurate. Consider using '#align antitone.ge_of_tendsto Antitone.ge_of_tendstoₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/e3fb84046afd187b710170887195d50bada934ee
@@ -147,28 +147,28 @@ section Csupr
variable [ConditionallyCompleteLattice α] [SupConvergenceClass α] {f : ι → α} {a : α}
-/- warning: tendsto_at_top_csupr -> tendsto_atTop_csupᵢ is a dubious translation:
+/- warning: tendsto_at_top_csupr -> tendsto_atTop_ciSup is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLattice.{u1} α] [_inst_4 : SupConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) _inst_2] {f : ι -> α}, (Monotone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) f) -> (BddAbove.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) (Set.range.{u1, succ u2} α ι f)) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atTop.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (supᵢ.{u1, succ u2} α (ConditionallyCompleteLattice.toHasSup.{u1} α _inst_3) ι (fun (i : ι) => f i))))
+ forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLattice.{u1} α] [_inst_4 : SupConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) _inst_2] {f : ι -> α}, (Monotone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) f) -> (BddAbove.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) (Set.range.{u1, succ u2} α ι f)) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atTop.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (iSup.{u1, succ u2} α (ConditionallyCompleteLattice.toHasSup.{u1} α _inst_3) ι (fun (i : ι) => f i))))
but is expected to have type
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLattice.{u1} α] [_inst_4 : SupConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) _inst_2] {f : ι -> α}, (Monotone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) f) -> (BddAbove.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) (Set.range.{u1, succ u2} α ι f)) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atTop.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (supᵢ.{u1, succ u2} α (ConditionallyCompleteLattice.toSupSet.{u1} α _inst_3) ι (fun (i : ι) => f i))))
-Case conversion may be inaccurate. Consider using '#align tendsto_at_top_csupr tendsto_atTop_csupᵢₓ'. -/
-theorem tendsto_atTop_csupᵢ (h_mono : Monotone f) (hbdd : BddAbove <| range f) :
+ forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLattice.{u1} α] [_inst_4 : SupConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) _inst_2] {f : ι -> α}, (Monotone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) f) -> (BddAbove.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) (Set.range.{u1, succ u2} α ι f)) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atTop.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (iSup.{u1, succ u2} α (ConditionallyCompleteLattice.toSupSet.{u1} α _inst_3) ι (fun (i : ι) => f i))))
+Case conversion may be inaccurate. Consider using '#align tendsto_at_top_csupr tendsto_atTop_ciSupₓ'. -/
+theorem tendsto_atTop_ciSup (h_mono : Monotone f) (hbdd : BddAbove <| range f) :
Tendsto f atTop (𝓝 (⨆ i, f i)) :=
by
cases isEmpty_or_nonempty ι
- exacts[tendsto_of_is_empty, tendsto_atTop_isLUB h_mono (isLUB_csupᵢ hbdd)]
-#align tendsto_at_top_csupr tendsto_atTop_csupᵢ
+ exacts[tendsto_of_is_empty, tendsto_atTop_isLUB h_mono (isLUB_ciSup hbdd)]
+#align tendsto_at_top_csupr tendsto_atTop_ciSup
-/- warning: tendsto_at_bot_csupr -> tendsto_atBot_csupᵢ is a dubious translation:
+/- warning: tendsto_at_bot_csupr -> tendsto_atBot_ciSup is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLattice.{u1} α] [_inst_4 : SupConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) _inst_2] {f : ι -> α}, (Antitone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) f) -> (BddAbove.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) (Set.range.{u1, succ u2} α ι f)) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atBot.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (supᵢ.{u1, succ u2} α (ConditionallyCompleteLattice.toHasSup.{u1} α _inst_3) ι (fun (i : ι) => f i))))
+ forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLattice.{u1} α] [_inst_4 : SupConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) _inst_2] {f : ι -> α}, (Antitone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) f) -> (BddAbove.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) (Set.range.{u1, succ u2} α ι f)) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atBot.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (iSup.{u1, succ u2} α (ConditionallyCompleteLattice.toHasSup.{u1} α _inst_3) ι (fun (i : ι) => f i))))
but is expected to have type
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLattice.{u1} α] [_inst_4 : SupConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) _inst_2] {f : ι -> α}, (Antitone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) f) -> (BddAbove.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) (Set.range.{u1, succ u2} α ι f)) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atBot.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (supᵢ.{u1, succ u2} α (ConditionallyCompleteLattice.toSupSet.{u1} α _inst_3) ι (fun (i : ι) => f i))))
-Case conversion may be inaccurate. Consider using '#align tendsto_at_bot_csupr tendsto_atBot_csupᵢₓ'. -/
-theorem tendsto_atBot_csupᵢ (h_anti : Antitone f) (hbdd : BddAbove <| range f) :
- Tendsto f atBot (𝓝 (⨆ i, f i)) := by convert tendsto_atTop_csupᵢ h_anti.dual hbdd.dual
-#align tendsto_at_bot_csupr tendsto_atBot_csupᵢ
+ forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLattice.{u1} α] [_inst_4 : SupConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) _inst_2] {f : ι -> α}, (Antitone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) f) -> (BddAbove.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) (Set.range.{u1, succ u2} α ι f)) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atBot.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (iSup.{u1, succ u2} α (ConditionallyCompleteLattice.toSupSet.{u1} α _inst_3) ι (fun (i : ι) => f i))))
+Case conversion may be inaccurate. Consider using '#align tendsto_at_bot_csupr tendsto_atBot_ciSupₓ'. -/
+theorem tendsto_atBot_ciSup (h_anti : Antitone f) (hbdd : BddAbove <| range f) :
+ Tendsto f atBot (𝓝 (⨆ i, f i)) := by convert tendsto_atTop_ciSup h_anti.dual hbdd.dual
+#align tendsto_at_bot_csupr tendsto_atBot_ciSup
end Csupr
@@ -176,79 +176,79 @@ section Cinfi
variable [ConditionallyCompleteLattice α] [InfConvergenceClass α] {f : ι → α} {a : α}
-/- warning: tendsto_at_bot_cinfi -> tendsto_atBot_cinfᵢ is a dubious translation:
+/- warning: tendsto_at_bot_cinfi -> tendsto_atBot_ciInf is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLattice.{u1} α] [_inst_4 : InfConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) _inst_2] {f : ι -> α}, (Monotone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) f) -> (BddBelow.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) (Set.range.{u1, succ u2} α ι f)) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atBot.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (infᵢ.{u1, succ u2} α (ConditionallyCompleteLattice.toHasInf.{u1} α _inst_3) ι (fun (i : ι) => f i))))
+ forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLattice.{u1} α] [_inst_4 : InfConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) _inst_2] {f : ι -> α}, (Monotone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) f) -> (BddBelow.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) (Set.range.{u1, succ u2} α ι f)) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atBot.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (iInf.{u1, succ u2} α (ConditionallyCompleteLattice.toHasInf.{u1} α _inst_3) ι (fun (i : ι) => f i))))
but is expected to have type
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLattice.{u1} α] [_inst_4 : InfConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) _inst_2] {f : ι -> α}, (Monotone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) f) -> (BddBelow.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) (Set.range.{u1, succ u2} α ι f)) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atBot.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (infᵢ.{u1, succ u2} α (ConditionallyCompleteLattice.toInfSet.{u1} α _inst_3) ι (fun (i : ι) => f i))))
-Case conversion may be inaccurate. Consider using '#align tendsto_at_bot_cinfi tendsto_atBot_cinfᵢₓ'. -/
-theorem tendsto_atBot_cinfᵢ (h_mono : Monotone f) (hbdd : BddBelow <| range f) :
- Tendsto f atBot (𝓝 (⨅ i, f i)) := by convert tendsto_atTop_csupᵢ h_mono.dual hbdd.dual
-#align tendsto_at_bot_cinfi tendsto_atBot_cinfᵢ
+ forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLattice.{u1} α] [_inst_4 : InfConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) _inst_2] {f : ι -> α}, (Monotone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) f) -> (BddBelow.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) (Set.range.{u1, succ u2} α ι f)) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atBot.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (iInf.{u1, succ u2} α (ConditionallyCompleteLattice.toInfSet.{u1} α _inst_3) ι (fun (i : ι) => f i))))
+Case conversion may be inaccurate. Consider using '#align tendsto_at_bot_cinfi tendsto_atBot_ciInfₓ'. -/
+theorem tendsto_atBot_ciInf (h_mono : Monotone f) (hbdd : BddBelow <| range f) :
+ Tendsto f atBot (𝓝 (⨅ i, f i)) := by convert tendsto_atTop_ciSup h_mono.dual hbdd.dual
+#align tendsto_at_bot_cinfi tendsto_atBot_ciInf
-/- warning: tendsto_at_top_cinfi -> tendsto_atTop_cinfᵢ is a dubious translation:
+/- warning: tendsto_at_top_cinfi -> tendsto_atTop_ciInf is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLattice.{u1} α] [_inst_4 : InfConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) _inst_2] {f : ι -> α}, (Antitone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) f) -> (BddBelow.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) (Set.range.{u1, succ u2} α ι f)) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atTop.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (infᵢ.{u1, succ u2} α (ConditionallyCompleteLattice.toHasInf.{u1} α _inst_3) ι (fun (i : ι) => f i))))
+ forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLattice.{u1} α] [_inst_4 : InfConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) _inst_2] {f : ι -> α}, (Antitone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) f) -> (BddBelow.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) (Set.range.{u1, succ u2} α ι f)) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atTop.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (iInf.{u1, succ u2} α (ConditionallyCompleteLattice.toHasInf.{u1} α _inst_3) ι (fun (i : ι) => f i))))
but is expected to have type
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLattice.{u1} α] [_inst_4 : InfConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) _inst_2] {f : ι -> α}, (Antitone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) f) -> (BddBelow.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) (Set.range.{u1, succ u2} α ι f)) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atTop.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (infᵢ.{u1, succ u2} α (ConditionallyCompleteLattice.toInfSet.{u1} α _inst_3) ι (fun (i : ι) => f i))))
-Case conversion may be inaccurate. Consider using '#align tendsto_at_top_cinfi tendsto_atTop_cinfᵢₓ'. -/
-theorem tendsto_atTop_cinfᵢ (h_anti : Antitone f) (hbdd : BddBelow <| range f) :
- Tendsto f atTop (𝓝 (⨅ i, f i)) := by convert tendsto_atBot_csupᵢ h_anti.dual hbdd.dual
-#align tendsto_at_top_cinfi tendsto_atTop_cinfᵢ
+ forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLattice.{u1} α] [_inst_4 : InfConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) _inst_2] {f : ι -> α}, (Antitone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) f) -> (BddBelow.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) (Set.range.{u1, succ u2} α ι f)) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atTop.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (iInf.{u1, succ u2} α (ConditionallyCompleteLattice.toInfSet.{u1} α _inst_3) ι (fun (i : ι) => f i))))
+Case conversion may be inaccurate. Consider using '#align tendsto_at_top_cinfi tendsto_atTop_ciInfₓ'. -/
+theorem tendsto_atTop_ciInf (h_anti : Antitone f) (hbdd : BddBelow <| range f) :
+ Tendsto f atTop (𝓝 (⨅ i, f i)) := by convert tendsto_atBot_ciSup h_anti.dual hbdd.dual
+#align tendsto_at_top_cinfi tendsto_atTop_ciInf
end Cinfi
-section supᵢ
+section iSup
variable [CompleteLattice α] [SupConvergenceClass α] {f : ι → α} {a : α}
-/- warning: tendsto_at_top_supr -> tendsto_atTop_supᵢ is a dubious translation:
+/- warning: tendsto_at_top_supr -> tendsto_atTop_iSup is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : CompleteLattice.{u1} α] [_inst_4 : SupConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) _inst_2] {f : ι -> α}, (Monotone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) f) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atTop.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (supᵢ.{u1, succ u2} α (ConditionallyCompleteLattice.toHasSup.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_3)) ι (fun (i : ι) => f i))))
+ forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : CompleteLattice.{u1} α] [_inst_4 : SupConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) _inst_2] {f : ι -> α}, (Monotone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) f) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atTop.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (iSup.{u1, succ u2} α (ConditionallyCompleteLattice.toHasSup.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_3)) ι (fun (i : ι) => f i))))
but is expected to have type
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : CompleteLattice.{u1} α] [_inst_4 : SupConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) _inst_2] {f : ι -> α}, (Monotone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) f) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atTop.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (supᵢ.{u1, succ u2} α (ConditionallyCompleteLattice.toSupSet.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_3)) ι (fun (i : ι) => f i))))
-Case conversion may be inaccurate. Consider using '#align tendsto_at_top_supr tendsto_atTop_supᵢₓ'. -/
-theorem tendsto_atTop_supᵢ (h_mono : Monotone f) : Tendsto f atTop (𝓝 (⨆ i, f i)) :=
- tendsto_atTop_csupᵢ h_mono (OrderTop.bddAbove _)
-#align tendsto_at_top_supr tendsto_atTop_supᵢ
+ forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : CompleteLattice.{u1} α] [_inst_4 : SupConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) _inst_2] {f : ι -> α}, (Monotone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) f) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atTop.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (iSup.{u1, succ u2} α (ConditionallyCompleteLattice.toSupSet.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_3)) ι (fun (i : ι) => f i))))
+Case conversion may be inaccurate. Consider using '#align tendsto_at_top_supr tendsto_atTop_iSupₓ'. -/
+theorem tendsto_atTop_iSup (h_mono : Monotone f) : Tendsto f atTop (𝓝 (⨆ i, f i)) :=
+ tendsto_atTop_ciSup h_mono (OrderTop.bddAbove _)
+#align tendsto_at_top_supr tendsto_atTop_iSup
-/- warning: tendsto_at_bot_supr -> tendsto_atBot_supᵢ is a dubious translation:
+/- warning: tendsto_at_bot_supr -> tendsto_atBot_iSup is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : CompleteLattice.{u1} α] [_inst_4 : SupConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) _inst_2] {f : ι -> α}, (Antitone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) f) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atBot.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (supᵢ.{u1, succ u2} α (ConditionallyCompleteLattice.toHasSup.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_3)) ι (fun (i : ι) => f i))))
+ forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : CompleteLattice.{u1} α] [_inst_4 : SupConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) _inst_2] {f : ι -> α}, (Antitone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) f) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atBot.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (iSup.{u1, succ u2} α (ConditionallyCompleteLattice.toHasSup.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_3)) ι (fun (i : ι) => f i))))
but is expected to have type
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : CompleteLattice.{u1} α] [_inst_4 : SupConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) _inst_2] {f : ι -> α}, (Antitone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) f) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atBot.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (supᵢ.{u1, succ u2} α (ConditionallyCompleteLattice.toSupSet.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_3)) ι (fun (i : ι) => f i))))
-Case conversion may be inaccurate. Consider using '#align tendsto_at_bot_supr tendsto_atBot_supᵢₓ'. -/
-theorem tendsto_atBot_supᵢ (h_anti : Antitone f) : Tendsto f atBot (𝓝 (⨆ i, f i)) :=
- tendsto_atBot_csupᵢ h_anti (OrderTop.bddAbove _)
-#align tendsto_at_bot_supr tendsto_atBot_supᵢ
+ forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : CompleteLattice.{u1} α] [_inst_4 : SupConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) _inst_2] {f : ι -> α}, (Antitone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) f) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atBot.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (iSup.{u1, succ u2} α (ConditionallyCompleteLattice.toSupSet.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_3)) ι (fun (i : ι) => f i))))
+Case conversion may be inaccurate. Consider using '#align tendsto_at_bot_supr tendsto_atBot_iSupₓ'. -/
+theorem tendsto_atBot_iSup (h_anti : Antitone f) : Tendsto f atBot (𝓝 (⨆ i, f i)) :=
+ tendsto_atBot_ciSup h_anti (OrderTop.bddAbove _)
+#align tendsto_at_bot_supr tendsto_atBot_iSup
-end supᵢ
+end iSup
-section infᵢ
+section iInf
variable [CompleteLattice α] [InfConvergenceClass α] {f : ι → α} {a : α}
-/- warning: tendsto_at_bot_infi -> tendsto_atBot_infᵢ is a dubious translation:
+/- warning: tendsto_at_bot_infi -> tendsto_atBot_iInf is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : CompleteLattice.{u1} α] [_inst_4 : InfConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) _inst_2] {f : ι -> α}, (Monotone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) f) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atBot.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (infᵢ.{u1, succ u2} α (ConditionallyCompleteLattice.toHasInf.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_3)) ι (fun (i : ι) => f i))))
+ forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : CompleteLattice.{u1} α] [_inst_4 : InfConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) _inst_2] {f : ι -> α}, (Monotone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) f) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atBot.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (iInf.{u1, succ u2} α (ConditionallyCompleteLattice.toHasInf.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_3)) ι (fun (i : ι) => f i))))
but is expected to have type
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : CompleteLattice.{u1} α] [_inst_4 : InfConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) _inst_2] {f : ι -> α}, (Monotone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) f) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atBot.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (infᵢ.{u1, succ u2} α (ConditionallyCompleteLattice.toInfSet.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_3)) ι (fun (i : ι) => f i))))
-Case conversion may be inaccurate. Consider using '#align tendsto_at_bot_infi tendsto_atBot_infᵢₓ'. -/
-theorem tendsto_atBot_infᵢ (h_mono : Monotone f) : Tendsto f atBot (𝓝 (⨅ i, f i)) :=
- tendsto_atBot_cinfᵢ h_mono (OrderBot.bddBelow _)
-#align tendsto_at_bot_infi tendsto_atBot_infᵢ
+ forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : CompleteLattice.{u1} α] [_inst_4 : InfConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) _inst_2] {f : ι -> α}, (Monotone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) f) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atBot.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (iInf.{u1, succ u2} α (ConditionallyCompleteLattice.toInfSet.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_3)) ι (fun (i : ι) => f i))))
+Case conversion may be inaccurate. Consider using '#align tendsto_at_bot_infi tendsto_atBot_iInfₓ'. -/
+theorem tendsto_atBot_iInf (h_mono : Monotone f) : Tendsto f atBot (𝓝 (⨅ i, f i)) :=
+ tendsto_atBot_ciInf h_mono (OrderBot.bddBelow _)
+#align tendsto_at_bot_infi tendsto_atBot_iInf
-/- warning: tendsto_at_top_infi -> tendsto_atTop_infᵢ is a dubious translation:
+/- warning: tendsto_at_top_infi -> tendsto_atTop_iInf is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : CompleteLattice.{u1} α] [_inst_4 : InfConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) _inst_2] {f : ι -> α}, (Antitone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) f) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atTop.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (infᵢ.{u1, succ u2} α (ConditionallyCompleteLattice.toHasInf.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_3)) ι (fun (i : ι) => f i))))
+ forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : CompleteLattice.{u1} α] [_inst_4 : InfConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) _inst_2] {f : ι -> α}, (Antitone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) f) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atTop.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (iInf.{u1, succ u2} α (ConditionallyCompleteLattice.toHasInf.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_3)) ι (fun (i : ι) => f i))))
but is expected to have type
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : CompleteLattice.{u1} α] [_inst_4 : InfConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) _inst_2] {f : ι -> α}, (Antitone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) f) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atTop.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (infᵢ.{u1, succ u2} α (ConditionallyCompleteLattice.toInfSet.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_3)) ι (fun (i : ι) => f i))))
-Case conversion may be inaccurate. Consider using '#align tendsto_at_top_infi tendsto_atTop_infᵢₓ'. -/
-theorem tendsto_atTop_infᵢ (h_anti : Antitone f) : Tendsto f atTop (𝓝 (⨅ i, f i)) :=
- tendsto_atTop_cinfᵢ h_anti (OrderBot.bddBelow _)
-#align tendsto_at_top_infi tendsto_atTop_infᵢ
+ forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : CompleteLattice.{u1} α] [_inst_4 : InfConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) _inst_2] {f : ι -> α}, (Antitone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) f) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atTop.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (iInf.{u1, succ u2} α (ConditionallyCompleteLattice.toInfSet.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_3)) ι (fun (i : ι) => f i))))
+Case conversion may be inaccurate. Consider using '#align tendsto_at_top_infi tendsto_atTop_iInfₓ'. -/
+theorem tendsto_atTop_iInf (h_anti : Antitone f) : Tendsto f atTop (𝓝 (⨅ i, f i)) :=
+ tendsto_atTop_ciInf h_anti (OrderBot.bddBelow _)
+#align tendsto_at_top_infi tendsto_atTop_iInf
-end infᵢ
+end iInf
end
@@ -304,7 +304,7 @@ Case conversion may be inaccurate. Consider using '#align tendsto_of_monotone te
theorem tendsto_of_monotone {ι α : Type _} [Preorder ι] [TopologicalSpace α]
[ConditionallyCompleteLinearOrder α] [OrderTopology α] {f : ι → α} (h_mono : Monotone f) :
Tendsto f atTop atTop ∨ ∃ l, Tendsto f atTop (𝓝 l) :=
- if H : BddAbove (range f) then Or.inr ⟨_, tendsto_atTop_csupᵢ h_mono H⟩
+ if H : BddAbove (range f) then Or.inr ⟨_, tendsto_atTop_ciSup h_mono H⟩
else Or.inl <| tendsto_atTop_atTop_of_monotone' h_mono H
#align tendsto_of_monotone tendsto_of_monotone
@@ -436,54 +436,54 @@ theorem isGLB_of_tendsto_atTop [TopologicalSpace α] [Preorder α] [OrderClosedT
@isGLB_of_tendsto_atBot α βᵒᵈ _ _ _ _ _ _ _ hf.dual_left ha
#align is_glb_of_tendsto_at_top isGLB_of_tendsto_atTop
-/- warning: supr_eq_of_tendsto -> supᵢ_eq_of_tendsto is a dubious translation:
+/- warning: supr_eq_of_tendsto -> iSup_eq_of_tendsto is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : CompleteLinearOrder.{u1} α] [_inst_3 : OrderTopology.{u1} α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α (CompleteLinearOrder.toCompleteLattice.{u1} α _inst_2))))] [_inst_4 : Nonempty.{succ u2} β] [_inst_5 : SemilatticeSup.{u2} β] {f : β -> α} {a : α}, (Monotone.{u2, u1} β α (PartialOrder.toPreorder.{u2} β (SemilatticeSup.toPartialOrder.{u2} β _inst_5)) (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α (CompleteLinearOrder.toCompleteLattice.{u1} α _inst_2)))) f) -> (Filter.Tendsto.{u2, u1} β α f (Filter.atTop.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeSup.toPartialOrder.{u2} β _inst_5))) (nhds.{u1} α _inst_1 a)) -> (Eq.{succ u1} α (supᵢ.{u1, succ u2} α (ConditionallyCompleteLattice.toHasSup.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α (CompleteLinearOrder.toCompleteLattice.{u1} α _inst_2))) β f) a)
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : CompleteLinearOrder.{u1} α] [_inst_3 : OrderTopology.{u1} α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α (CompleteLinearOrder.toCompleteLattice.{u1} α _inst_2))))] [_inst_4 : Nonempty.{succ u2} β] [_inst_5 : SemilatticeSup.{u2} β] {f : β -> α} {a : α}, (Monotone.{u2, u1} β α (PartialOrder.toPreorder.{u2} β (SemilatticeSup.toPartialOrder.{u2} β _inst_5)) (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α (CompleteLinearOrder.toCompleteLattice.{u1} α _inst_2)))) f) -> (Filter.Tendsto.{u2, u1} β α f (Filter.atTop.{u2} β (PartialOrder.toPreorder.{u2} β (SemilatticeSup.toPartialOrder.{u2} β _inst_5))) (nhds.{u1} α _inst_1 a)) -> (Eq.{succ u1} α (iSup.{u1, succ u2} α (ConditionallyCompleteLattice.toHasSup.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α (CompleteLinearOrder.toCompleteLattice.{u1} α _inst_2))) β f) a)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : CompleteLinearOrder.{u2} α] [_inst_3 : OrderTopology.{u2} α _inst_1 (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α (CompleteLinearOrder.toCompleteLattice.{u2} α _inst_2))))] [_inst_4 : Nonempty.{succ u1} β] [_inst_5 : SemilatticeSup.{u1} β] {f : β -> α} {a : α}, (Monotone.{u1, u2} β α (PartialOrder.toPreorder.{u1} β (SemilatticeSup.toPartialOrder.{u1} β _inst_5)) (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α (CompleteLinearOrder.toCompleteLattice.{u2} α _inst_2)))) f) -> (Filter.Tendsto.{u1, u2} β α f (Filter.atTop.{u1} β (PartialOrder.toPreorder.{u1} β (SemilatticeSup.toPartialOrder.{u1} β _inst_5))) (nhds.{u2} α _inst_1 a)) -> (Eq.{succ u2} α (supᵢ.{u2, succ u1} α (ConditionallyCompleteLattice.toSupSet.{u2} α (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u2} α (ConditionallyCompleteLinearOrderBot.toConditionallyCompleteLinearOrder.{u2} α (CompleteLinearOrder.toConditionallyCompleteLinearOrderBot.{u2} α _inst_2)))) β f) a)
-Case conversion may be inaccurate. Consider using '#align supr_eq_of_tendsto supᵢ_eq_of_tendstoₓ'. -/
-theorem supᵢ_eq_of_tendsto {α β} [TopologicalSpace α] [CompleteLinearOrder α] [OrderTopology α]
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : CompleteLinearOrder.{u2} α] [_inst_3 : OrderTopology.{u2} α _inst_1 (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α (CompleteLinearOrder.toCompleteLattice.{u2} α _inst_2))))] [_inst_4 : Nonempty.{succ u1} β] [_inst_5 : SemilatticeSup.{u1} β] {f : β -> α} {a : α}, (Monotone.{u1, u2} β α (PartialOrder.toPreorder.{u1} β (SemilatticeSup.toPartialOrder.{u1} β _inst_5)) (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α (CompleteLinearOrder.toCompleteLattice.{u2} α _inst_2)))) f) -> (Filter.Tendsto.{u1, u2} β α f (Filter.atTop.{u1} β (PartialOrder.toPreorder.{u1} β (SemilatticeSup.toPartialOrder.{u1} β _inst_5))) (nhds.{u2} α _inst_1 a)) -> (Eq.{succ u2} α (iSup.{u2, succ u1} α (ConditionallyCompleteLattice.toSupSet.{u2} α (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u2} α (ConditionallyCompleteLinearOrderBot.toConditionallyCompleteLinearOrder.{u2} α (CompleteLinearOrder.toConditionallyCompleteLinearOrderBot.{u2} α _inst_2)))) β f) a)
+Case conversion may be inaccurate. Consider using '#align supr_eq_of_tendsto iSup_eq_of_tendstoₓ'. -/
+theorem iSup_eq_of_tendsto {α β} [TopologicalSpace α] [CompleteLinearOrder α] [OrderTopology α]
[Nonempty β] [SemilatticeSup β] {f : β → α} {a : α} (hf : Monotone f) :
- Tendsto f atTop (𝓝 a) → supᵢ f = a :=
- tendsto_nhds_unique (tendsto_atTop_supᵢ hf)
-#align supr_eq_of_tendsto supᵢ_eq_of_tendsto
+ Tendsto f atTop (𝓝 a) → iSup f = a :=
+ tendsto_nhds_unique (tendsto_atTop_iSup hf)
+#align supr_eq_of_tendsto iSup_eq_of_tendsto
-/- warning: infi_eq_of_tendsto -> infᵢ_eq_of_tendsto is a dubious translation:
+/- warning: infi_eq_of_tendsto -> iInf_eq_of_tendsto is a dubious translation:
lean 3 declaration is
- forall {β : Type.{u1}} {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : CompleteLinearOrder.{u2} α] [_inst_3 : OrderTopology.{u2} α _inst_1 (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α (CompleteLinearOrder.toCompleteLattice.{u2} α _inst_2))))] [_inst_4 : Nonempty.{succ u1} β] [_inst_5 : SemilatticeSup.{u1} β] {f : β -> α} {a : α}, (Antitone.{u1, u2} β α (PartialOrder.toPreorder.{u1} β (SemilatticeSup.toPartialOrder.{u1} β _inst_5)) (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α (CompleteLinearOrder.toCompleteLattice.{u2} α _inst_2)))) f) -> (Filter.Tendsto.{u1, u2} β α f (Filter.atTop.{u1} β (PartialOrder.toPreorder.{u1} β (SemilatticeSup.toPartialOrder.{u1} β _inst_5))) (nhds.{u2} α _inst_1 a)) -> (Eq.{succ u2} α (infᵢ.{u2, succ u1} α (ConditionallyCompleteLattice.toHasInf.{u2} α (CompleteLattice.toConditionallyCompleteLattice.{u2} α (CompleteLinearOrder.toCompleteLattice.{u2} α _inst_2))) β f) a)
+ forall {β : Type.{u1}} {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : CompleteLinearOrder.{u2} α] [_inst_3 : OrderTopology.{u2} α _inst_1 (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α (CompleteLinearOrder.toCompleteLattice.{u2} α _inst_2))))] [_inst_4 : Nonempty.{succ u1} β] [_inst_5 : SemilatticeSup.{u1} β] {f : β -> α} {a : α}, (Antitone.{u1, u2} β α (PartialOrder.toPreorder.{u1} β (SemilatticeSup.toPartialOrder.{u1} β _inst_5)) (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α (CompleteLinearOrder.toCompleteLattice.{u2} α _inst_2)))) f) -> (Filter.Tendsto.{u1, u2} β α f (Filter.atTop.{u1} β (PartialOrder.toPreorder.{u1} β (SemilatticeSup.toPartialOrder.{u1} β _inst_5))) (nhds.{u2} α _inst_1 a)) -> (Eq.{succ u2} α (iInf.{u2, succ u1} α (ConditionallyCompleteLattice.toHasInf.{u2} α (CompleteLattice.toConditionallyCompleteLattice.{u2} α (CompleteLinearOrder.toCompleteLattice.{u2} α _inst_2))) β f) a)
but is expected to have type
- forall {β : Type.{u1}} {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : CompleteLinearOrder.{u2} α] [_inst_3 : OrderTopology.{u2} α _inst_1 (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α (CompleteLinearOrder.toCompleteLattice.{u2} α _inst_2))))] [_inst_4 : Nonempty.{succ u1} β] [_inst_5 : SemilatticeSup.{u1} β] {f : β -> α} {a : α}, (Antitone.{u1, u2} β α (PartialOrder.toPreorder.{u1} β (SemilatticeSup.toPartialOrder.{u1} β _inst_5)) (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α (CompleteLinearOrder.toCompleteLattice.{u2} α _inst_2)))) f) -> (Filter.Tendsto.{u1, u2} β α f (Filter.atTop.{u1} β (PartialOrder.toPreorder.{u1} β (SemilatticeSup.toPartialOrder.{u1} β _inst_5))) (nhds.{u2} α _inst_1 a)) -> (Eq.{succ u2} α (infᵢ.{u2, succ u1} α (ConditionallyCompleteLattice.toInfSet.{u2} α (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u2} α (ConditionallyCompleteLinearOrderBot.toConditionallyCompleteLinearOrder.{u2} α (CompleteLinearOrder.toConditionallyCompleteLinearOrderBot.{u2} α _inst_2)))) β f) a)
-Case conversion may be inaccurate. Consider using '#align infi_eq_of_tendsto infᵢ_eq_of_tendstoₓ'. -/
-theorem infᵢ_eq_of_tendsto {α} [TopologicalSpace α] [CompleteLinearOrder α] [OrderTopology α]
+ forall {β : Type.{u1}} {α : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : CompleteLinearOrder.{u2} α] [_inst_3 : OrderTopology.{u2} α _inst_1 (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α (CompleteLinearOrder.toCompleteLattice.{u2} α _inst_2))))] [_inst_4 : Nonempty.{succ u1} β] [_inst_5 : SemilatticeSup.{u1} β] {f : β -> α} {a : α}, (Antitone.{u1, u2} β α (PartialOrder.toPreorder.{u1} β (SemilatticeSup.toPartialOrder.{u1} β _inst_5)) (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α (CompleteLinearOrder.toCompleteLattice.{u2} α _inst_2)))) f) -> (Filter.Tendsto.{u1, u2} β α f (Filter.atTop.{u1} β (PartialOrder.toPreorder.{u1} β (SemilatticeSup.toPartialOrder.{u1} β _inst_5))) (nhds.{u2} α _inst_1 a)) -> (Eq.{succ u2} α (iInf.{u2, succ u1} α (ConditionallyCompleteLattice.toInfSet.{u2} α (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u2} α (ConditionallyCompleteLinearOrderBot.toConditionallyCompleteLinearOrder.{u2} α (CompleteLinearOrder.toConditionallyCompleteLinearOrderBot.{u2} α _inst_2)))) β f) a)
+Case conversion may be inaccurate. Consider using '#align infi_eq_of_tendsto iInf_eq_of_tendstoₓ'. -/
+theorem iInf_eq_of_tendsto {α} [TopologicalSpace α] [CompleteLinearOrder α] [OrderTopology α]
[Nonempty β] [SemilatticeSup β] {f : β → α} {a : α} (hf : Antitone f) :
- Tendsto f atTop (𝓝 a) → infᵢ f = a :=
- tendsto_nhds_unique (tendsto_atTop_infᵢ hf)
-#align infi_eq_of_tendsto infᵢ_eq_of_tendsto
+ Tendsto f atTop (𝓝 a) → iInf f = a :=
+ tendsto_nhds_unique (tendsto_atTop_iInf hf)
+#align infi_eq_of_tendsto iInf_eq_of_tendsto
-/- warning: supr_eq_supr_subseq_of_monotone -> supᵢ_eq_supᵢ_subseq_of_monotone is a dubious translation:
+/- warning: supr_eq_supr_subseq_of_monotone -> iSup_eq_iSup_subseq_of_monotone is a dubious translation:
lean 3 declaration is
- forall {ι₁ : Type.{u1}} {ι₂ : Type.{u2}} {α : Type.{u3}} [_inst_1 : Preorder.{u2} ι₂] [_inst_2 : CompleteLattice.{u3} α] {l : Filter.{u1} ι₁} [_inst_3 : Filter.NeBot.{u1} ι₁ l] {f : ι₂ -> α} {φ : ι₁ -> ι₂}, (Monotone.{u2, u3} ι₂ α _inst_1 (PartialOrder.toPreorder.{u3} α (CompleteSemilatticeInf.toPartialOrder.{u3} α (CompleteLattice.toCompleteSemilatticeInf.{u3} α _inst_2))) f) -> (Filter.Tendsto.{u1, u2} ι₁ ι₂ φ l (Filter.atTop.{u2} ι₂ _inst_1)) -> (Eq.{succ u3} α (supᵢ.{u3, succ u2} α (ConditionallyCompleteLattice.toHasSup.{u3} α (CompleteLattice.toConditionallyCompleteLattice.{u3} α _inst_2)) ι₂ (fun (i : ι₂) => f i)) (supᵢ.{u3, succ u1} α (ConditionallyCompleteLattice.toHasSup.{u3} α (CompleteLattice.toConditionallyCompleteLattice.{u3} α _inst_2)) ι₁ (fun (i : ι₁) => f (φ i))))
+ forall {ι₁ : Type.{u1}} {ι₂ : Type.{u2}} {α : Type.{u3}} [_inst_1 : Preorder.{u2} ι₂] [_inst_2 : CompleteLattice.{u3} α] {l : Filter.{u1} ι₁} [_inst_3 : Filter.NeBot.{u1} ι₁ l] {f : ι₂ -> α} {φ : ι₁ -> ι₂}, (Monotone.{u2, u3} ι₂ α _inst_1 (PartialOrder.toPreorder.{u3} α (CompleteSemilatticeInf.toPartialOrder.{u3} α (CompleteLattice.toCompleteSemilatticeInf.{u3} α _inst_2))) f) -> (Filter.Tendsto.{u1, u2} ι₁ ι₂ φ l (Filter.atTop.{u2} ι₂ _inst_1)) -> (Eq.{succ u3} α (iSup.{u3, succ u2} α (ConditionallyCompleteLattice.toHasSup.{u3} α (CompleteLattice.toConditionallyCompleteLattice.{u3} α _inst_2)) ι₂ (fun (i : ι₂) => f i)) (iSup.{u3, succ u1} α (ConditionallyCompleteLattice.toHasSup.{u3} α (CompleteLattice.toConditionallyCompleteLattice.{u3} α _inst_2)) ι₁ (fun (i : ι₁) => f (φ i))))
but is expected to have type
- forall {ι₁ : Type.{u3}} {ι₂ : Type.{u2}} {α : Type.{u1}} [_inst_1 : Preorder.{u2} ι₂] [_inst_2 : CompleteLattice.{u1} α] {l : Filter.{u3} ι₁} [_inst_3 : Filter.NeBot.{u3} ι₁ l] {f : ι₂ -> α} {φ : ι₁ -> ι₂}, (Monotone.{u2, u1} ι₂ α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_2))) f) -> (Filter.Tendsto.{u3, u2} ι₁ ι₂ φ l (Filter.atTop.{u2} ι₂ _inst_1)) -> (Eq.{succ u1} α (supᵢ.{u1, succ u2} α (ConditionallyCompleteLattice.toSupSet.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_2)) ι₂ (fun (i : ι₂) => f i)) (supᵢ.{u1, succ u3} α (ConditionallyCompleteLattice.toSupSet.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_2)) ι₁ (fun (i : ι₁) => f (φ i))))
-Case conversion may be inaccurate. Consider using '#align supr_eq_supr_subseq_of_monotone supᵢ_eq_supᵢ_subseq_of_monotoneₓ'. -/
-theorem supᵢ_eq_supᵢ_subseq_of_monotone {ι₁ ι₂ α : Type _} [Preorder ι₂] [CompleteLattice α]
+ forall {ι₁ : Type.{u3}} {ι₂ : Type.{u2}} {α : Type.{u1}} [_inst_1 : Preorder.{u2} ι₂] [_inst_2 : CompleteLattice.{u1} α] {l : Filter.{u3} ι₁} [_inst_3 : Filter.NeBot.{u3} ι₁ l] {f : ι₂ -> α} {φ : ι₁ -> ι₂}, (Monotone.{u2, u1} ι₂ α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_2))) f) -> (Filter.Tendsto.{u3, u2} ι₁ ι₂ φ l (Filter.atTop.{u2} ι₂ _inst_1)) -> (Eq.{succ u1} α (iSup.{u1, succ u2} α (ConditionallyCompleteLattice.toSupSet.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_2)) ι₂ (fun (i : ι₂) => f i)) (iSup.{u1, succ u3} α (ConditionallyCompleteLattice.toSupSet.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_2)) ι₁ (fun (i : ι₁) => f (φ i))))
+Case conversion may be inaccurate. Consider using '#align supr_eq_supr_subseq_of_monotone iSup_eq_iSup_subseq_of_monotoneₓ'. -/
+theorem iSup_eq_iSup_subseq_of_monotone {ι₁ ι₂ α : Type _} [Preorder ι₂] [CompleteLattice α]
{l : Filter ι₁} [l.ne_bot] {f : ι₂ → α} {φ : ι₁ → ι₂} (hf : Monotone f)
(hφ : Tendsto φ l atTop) : (⨆ i, f i) = ⨆ i, f (φ i) :=
le_antisymm
- (supᵢ_mono' fun i =>
+ (iSup_mono' fun i =>
Exists.imp (fun j (hj : i ≤ φ j) => hf hj) (hφ.Eventually <| eventually_ge_atTop i).exists)
- (supᵢ_mono' fun i => ⟨φ i, le_rfl⟩)
-#align supr_eq_supr_subseq_of_monotone supᵢ_eq_supᵢ_subseq_of_monotone
+ (iSup_mono' fun i => ⟨φ i, le_rfl⟩)
+#align supr_eq_supr_subseq_of_monotone iSup_eq_iSup_subseq_of_monotone
-/- warning: infi_eq_infi_subseq_of_monotone -> infᵢ_eq_infᵢ_subseq_of_monotone is a dubious translation:
+/- warning: infi_eq_infi_subseq_of_monotone -> iInf_eq_iInf_subseq_of_monotone is a dubious translation:
lean 3 declaration is
- forall {ι₁ : Type.{u1}} {ι₂ : Type.{u2}} {α : Type.{u3}} [_inst_1 : Preorder.{u2} ι₂] [_inst_2 : CompleteLattice.{u3} α] {l : Filter.{u1} ι₁} [_inst_3 : Filter.NeBot.{u1} ι₁ l] {f : ι₂ -> α} {φ : ι₁ -> ι₂}, (Monotone.{u2, u3} ι₂ α _inst_1 (PartialOrder.toPreorder.{u3} α (CompleteSemilatticeInf.toPartialOrder.{u3} α (CompleteLattice.toCompleteSemilatticeInf.{u3} α _inst_2))) f) -> (Filter.Tendsto.{u1, u2} ι₁ ι₂ φ l (Filter.atBot.{u2} ι₂ _inst_1)) -> (Eq.{succ u3} α (infᵢ.{u3, succ u2} α (ConditionallyCompleteLattice.toHasInf.{u3} α (CompleteLattice.toConditionallyCompleteLattice.{u3} α _inst_2)) ι₂ (fun (i : ι₂) => f i)) (infᵢ.{u3, succ u1} α (ConditionallyCompleteLattice.toHasInf.{u3} α (CompleteLattice.toConditionallyCompleteLattice.{u3} α _inst_2)) ι₁ (fun (i : ι₁) => f (φ i))))
+ forall {ι₁ : Type.{u1}} {ι₂ : Type.{u2}} {α : Type.{u3}} [_inst_1 : Preorder.{u2} ι₂] [_inst_2 : CompleteLattice.{u3} α] {l : Filter.{u1} ι₁} [_inst_3 : Filter.NeBot.{u1} ι₁ l] {f : ι₂ -> α} {φ : ι₁ -> ι₂}, (Monotone.{u2, u3} ι₂ α _inst_1 (PartialOrder.toPreorder.{u3} α (CompleteSemilatticeInf.toPartialOrder.{u3} α (CompleteLattice.toCompleteSemilatticeInf.{u3} α _inst_2))) f) -> (Filter.Tendsto.{u1, u2} ι₁ ι₂ φ l (Filter.atBot.{u2} ι₂ _inst_1)) -> (Eq.{succ u3} α (iInf.{u3, succ u2} α (ConditionallyCompleteLattice.toHasInf.{u3} α (CompleteLattice.toConditionallyCompleteLattice.{u3} α _inst_2)) ι₂ (fun (i : ι₂) => f i)) (iInf.{u3, succ u1} α (ConditionallyCompleteLattice.toHasInf.{u3} α (CompleteLattice.toConditionallyCompleteLattice.{u3} α _inst_2)) ι₁ (fun (i : ι₁) => f (φ i))))
but is expected to have type
- forall {ι₁ : Type.{u3}} {ι₂ : Type.{u2}} {α : Type.{u1}} [_inst_1 : Preorder.{u2} ι₂] [_inst_2 : CompleteLattice.{u1} α] {l : Filter.{u3} ι₁} [_inst_3 : Filter.NeBot.{u3} ι₁ l] {f : ι₂ -> α} {φ : ι₁ -> ι₂}, (Monotone.{u2, u1} ι₂ α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_2))) f) -> (Filter.Tendsto.{u3, u2} ι₁ ι₂ φ l (Filter.atBot.{u2} ι₂ _inst_1)) -> (Eq.{succ u1} α (infᵢ.{u1, succ u2} α (ConditionallyCompleteLattice.toInfSet.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_2)) ι₂ (fun (i : ι₂) => f i)) (infᵢ.{u1, succ u3} α (ConditionallyCompleteLattice.toInfSet.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_2)) ι₁ (fun (i : ι₁) => f (φ i))))
-Case conversion may be inaccurate. Consider using '#align infi_eq_infi_subseq_of_monotone infᵢ_eq_infᵢ_subseq_of_monotoneₓ'. -/
-theorem infᵢ_eq_infᵢ_subseq_of_monotone {ι₁ ι₂ α : Type _} [Preorder ι₂] [CompleteLattice α]
+ forall {ι₁ : Type.{u3}} {ι₂ : Type.{u2}} {α : Type.{u1}} [_inst_1 : Preorder.{u2} ι₂] [_inst_2 : CompleteLattice.{u1} α] {l : Filter.{u3} ι₁} [_inst_3 : Filter.NeBot.{u3} ι₁ l] {f : ι₂ -> α} {φ : ι₁ -> ι₂}, (Monotone.{u2, u1} ι₂ α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_2))) f) -> (Filter.Tendsto.{u3, u2} ι₁ ι₂ φ l (Filter.atBot.{u2} ι₂ _inst_1)) -> (Eq.{succ u1} α (iInf.{u1, succ u2} α (ConditionallyCompleteLattice.toInfSet.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_2)) ι₂ (fun (i : ι₂) => f i)) (iInf.{u1, succ u3} α (ConditionallyCompleteLattice.toInfSet.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_2)) ι₁ (fun (i : ι₁) => f (φ i))))
+Case conversion may be inaccurate. Consider using '#align infi_eq_infi_subseq_of_monotone iInf_eq_iInf_subseq_of_monotoneₓ'. -/
+theorem iInf_eq_iInf_subseq_of_monotone {ι₁ ι₂ α : Type _} [Preorder ι₂] [CompleteLattice α]
{l : Filter ι₁} [l.ne_bot] {f : ι₂ → α} {φ : ι₁ → ι₂} (hf : Monotone f)
(hφ : Tendsto φ l atBot) : (⨅ i, f i) = ⨅ i, f (φ i) :=
- supᵢ_eq_supᵢ_subseq_of_monotone hf.dual hφ
-#align infi_eq_infi_subseq_of_monotone infᵢ_eq_infᵢ_subseq_of_monotone
+ iSup_eq_iSup_subseq_of_monotone hf.dual hφ
+#align infi_eq_infi_subseq_of_monotone iInf_eq_iInf_subseq_of_monotone
mathlib commit https://github.com/leanprover-community/mathlib/commit/ddec54a71a0dd025c05445d467f1a2b7d586a3ba
@@ -147,28 +147,28 @@ section Csupr
variable [ConditionallyCompleteLattice α] [SupConvergenceClass α] {f : ι → α} {a : α}
-/- warning: tendsto_at_top_csupr -> tendsto_atTop_csupr is a dubious translation:
+/- warning: tendsto_at_top_csupr -> tendsto_atTop_csupᵢ is a dubious translation:
lean 3 declaration is
forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLattice.{u1} α] [_inst_4 : SupConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) _inst_2] {f : ι -> α}, (Monotone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) f) -> (BddAbove.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) (Set.range.{u1, succ u2} α ι f)) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atTop.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (supᵢ.{u1, succ u2} α (ConditionallyCompleteLattice.toHasSup.{u1} α _inst_3) ι (fun (i : ι) => f i))))
but is expected to have type
forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLattice.{u1} α] [_inst_4 : SupConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) _inst_2] {f : ι -> α}, (Monotone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) f) -> (BddAbove.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) (Set.range.{u1, succ u2} α ι f)) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atTop.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (supᵢ.{u1, succ u2} α (ConditionallyCompleteLattice.toSupSet.{u1} α _inst_3) ι (fun (i : ι) => f i))))
-Case conversion may be inaccurate. Consider using '#align tendsto_at_top_csupr tendsto_atTop_csuprₓ'. -/
-theorem tendsto_atTop_csupr (h_mono : Monotone f) (hbdd : BddAbove <| range f) :
+Case conversion may be inaccurate. Consider using '#align tendsto_at_top_csupr tendsto_atTop_csupᵢₓ'. -/
+theorem tendsto_atTop_csupᵢ (h_mono : Monotone f) (hbdd : BddAbove <| range f) :
Tendsto f atTop (𝓝 (⨆ i, f i)) :=
by
cases isEmpty_or_nonempty ι
exacts[tendsto_of_is_empty, tendsto_atTop_isLUB h_mono (isLUB_csupᵢ hbdd)]
-#align tendsto_at_top_csupr tendsto_atTop_csupr
+#align tendsto_at_top_csupr tendsto_atTop_csupᵢ
-/- warning: tendsto_at_bot_csupr -> tendsto_atBot_csupr is a dubious translation:
+/- warning: tendsto_at_bot_csupr -> tendsto_atBot_csupᵢ is a dubious translation:
lean 3 declaration is
forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLattice.{u1} α] [_inst_4 : SupConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) _inst_2] {f : ι -> α}, (Antitone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) f) -> (BddAbove.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) (Set.range.{u1, succ u2} α ι f)) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atBot.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (supᵢ.{u1, succ u2} α (ConditionallyCompleteLattice.toHasSup.{u1} α _inst_3) ι (fun (i : ι) => f i))))
but is expected to have type
forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLattice.{u1} α] [_inst_4 : SupConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) _inst_2] {f : ι -> α}, (Antitone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) f) -> (BddAbove.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) (Set.range.{u1, succ u2} α ι f)) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atBot.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (supᵢ.{u1, succ u2} α (ConditionallyCompleteLattice.toSupSet.{u1} α _inst_3) ι (fun (i : ι) => f i))))
-Case conversion may be inaccurate. Consider using '#align tendsto_at_bot_csupr tendsto_atBot_csuprₓ'. -/
-theorem tendsto_atBot_csupr (h_anti : Antitone f) (hbdd : BddAbove <| range f) :
- Tendsto f atBot (𝓝 (⨆ i, f i)) := by convert tendsto_atTop_csupr h_anti.dual hbdd.dual
-#align tendsto_at_bot_csupr tendsto_atBot_csupr
+Case conversion may be inaccurate. Consider using '#align tendsto_at_bot_csupr tendsto_atBot_csupᵢₓ'. -/
+theorem tendsto_atBot_csupᵢ (h_anti : Antitone f) (hbdd : BddAbove <| range f) :
+ Tendsto f atBot (𝓝 (⨆ i, f i)) := by convert tendsto_atTop_csupᵢ h_anti.dual hbdd.dual
+#align tendsto_at_bot_csupr tendsto_atBot_csupᵢ
end Csupr
@@ -176,25 +176,25 @@ section Cinfi
variable [ConditionallyCompleteLattice α] [InfConvergenceClass α] {f : ι → α} {a : α}
-/- warning: tendsto_at_bot_cinfi -> tendsto_atBot_cinfi is a dubious translation:
+/- warning: tendsto_at_bot_cinfi -> tendsto_atBot_cinfᵢ is a dubious translation:
lean 3 declaration is
forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLattice.{u1} α] [_inst_4 : InfConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) _inst_2] {f : ι -> α}, (Monotone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) f) -> (BddBelow.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) (Set.range.{u1, succ u2} α ι f)) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atBot.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (infᵢ.{u1, succ u2} α (ConditionallyCompleteLattice.toHasInf.{u1} α _inst_3) ι (fun (i : ι) => f i))))
but is expected to have type
forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLattice.{u1} α] [_inst_4 : InfConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) _inst_2] {f : ι -> α}, (Monotone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) f) -> (BddBelow.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) (Set.range.{u1, succ u2} α ι f)) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atBot.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (infᵢ.{u1, succ u2} α (ConditionallyCompleteLattice.toInfSet.{u1} α _inst_3) ι (fun (i : ι) => f i))))
-Case conversion may be inaccurate. Consider using '#align tendsto_at_bot_cinfi tendsto_atBot_cinfiₓ'. -/
-theorem tendsto_atBot_cinfi (h_mono : Monotone f) (hbdd : BddBelow <| range f) :
- Tendsto f atBot (𝓝 (⨅ i, f i)) := by convert tendsto_atTop_csupr h_mono.dual hbdd.dual
-#align tendsto_at_bot_cinfi tendsto_atBot_cinfi
+Case conversion may be inaccurate. Consider using '#align tendsto_at_bot_cinfi tendsto_atBot_cinfᵢₓ'. -/
+theorem tendsto_atBot_cinfᵢ (h_mono : Monotone f) (hbdd : BddBelow <| range f) :
+ Tendsto f atBot (𝓝 (⨅ i, f i)) := by convert tendsto_atTop_csupᵢ h_mono.dual hbdd.dual
+#align tendsto_at_bot_cinfi tendsto_atBot_cinfᵢ
-/- warning: tendsto_at_top_cinfi -> tendsto_atTop_cinfi is a dubious translation:
+/- warning: tendsto_at_top_cinfi -> tendsto_atTop_cinfᵢ is a dubious translation:
lean 3 declaration is
forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLattice.{u1} α] [_inst_4 : InfConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) _inst_2] {f : ι -> α}, (Antitone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) f) -> (BddBelow.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) (Set.range.{u1, succ u2} α ι f)) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atTop.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (infᵢ.{u1, succ u2} α (ConditionallyCompleteLattice.toHasInf.{u1} α _inst_3) ι (fun (i : ι) => f i))))
but is expected to have type
forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : ConditionallyCompleteLattice.{u1} α] [_inst_4 : InfConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) _inst_2] {f : ι -> α}, (Antitone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) f) -> (BddBelow.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α _inst_3)))) (Set.range.{u1, succ u2} α ι f)) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atTop.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (infᵢ.{u1, succ u2} α (ConditionallyCompleteLattice.toInfSet.{u1} α _inst_3) ι (fun (i : ι) => f i))))
-Case conversion may be inaccurate. Consider using '#align tendsto_at_top_cinfi tendsto_atTop_cinfiₓ'. -/
-theorem tendsto_atTop_cinfi (h_anti : Antitone f) (hbdd : BddBelow <| range f) :
- Tendsto f atTop (𝓝 (⨅ i, f i)) := by convert tendsto_atBot_csupr h_anti.dual hbdd.dual
-#align tendsto_at_top_cinfi tendsto_atTop_cinfi
+Case conversion may be inaccurate. Consider using '#align tendsto_at_top_cinfi tendsto_atTop_cinfᵢₓ'. -/
+theorem tendsto_atTop_cinfᵢ (h_anti : Antitone f) (hbdd : BddBelow <| range f) :
+ Tendsto f atTop (𝓝 (⨅ i, f i)) := by convert tendsto_atBot_csupᵢ h_anti.dual hbdd.dual
+#align tendsto_at_top_cinfi tendsto_atTop_cinfᵢ
end Cinfi
@@ -209,7 +209,7 @@ but is expected to have type
forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : CompleteLattice.{u1} α] [_inst_4 : SupConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) _inst_2] {f : ι -> α}, (Monotone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) f) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atTop.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (supᵢ.{u1, succ u2} α (ConditionallyCompleteLattice.toSupSet.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_3)) ι (fun (i : ι) => f i))))
Case conversion may be inaccurate. Consider using '#align tendsto_at_top_supr tendsto_atTop_supᵢₓ'. -/
theorem tendsto_atTop_supᵢ (h_mono : Monotone f) : Tendsto f atTop (𝓝 (⨆ i, f i)) :=
- tendsto_atTop_csupr h_mono (OrderTop.bddAbove _)
+ tendsto_atTop_csupᵢ h_mono (OrderTop.bddAbove _)
#align tendsto_at_top_supr tendsto_atTop_supᵢ
/- warning: tendsto_at_bot_supr -> tendsto_atBot_supᵢ is a dubious translation:
@@ -219,7 +219,7 @@ but is expected to have type
forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : CompleteLattice.{u1} α] [_inst_4 : SupConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) _inst_2] {f : ι -> α}, (Antitone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) f) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atBot.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (supᵢ.{u1, succ u2} α (ConditionallyCompleteLattice.toSupSet.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_3)) ι (fun (i : ι) => f i))))
Case conversion may be inaccurate. Consider using '#align tendsto_at_bot_supr tendsto_atBot_supᵢₓ'. -/
theorem tendsto_atBot_supᵢ (h_anti : Antitone f) : Tendsto f atBot (𝓝 (⨆ i, f i)) :=
- tendsto_atBot_csupr h_anti (OrderTop.bddAbove _)
+ tendsto_atBot_csupᵢ h_anti (OrderTop.bddAbove _)
#align tendsto_at_bot_supr tendsto_atBot_supᵢ
end supᵢ
@@ -235,7 +235,7 @@ but is expected to have type
forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : CompleteLattice.{u1} α] [_inst_4 : InfConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) _inst_2] {f : ι -> α}, (Monotone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) f) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atBot.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (infᵢ.{u1, succ u2} α (ConditionallyCompleteLattice.toInfSet.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_3)) ι (fun (i : ι) => f i))))
Case conversion may be inaccurate. Consider using '#align tendsto_at_bot_infi tendsto_atBot_infᵢₓ'. -/
theorem tendsto_atBot_infᵢ (h_mono : Monotone f) : Tendsto f atBot (𝓝 (⨅ i, f i)) :=
- tendsto_atBot_cinfi h_mono (OrderBot.bddBelow _)
+ tendsto_atBot_cinfᵢ h_mono (OrderBot.bddBelow _)
#align tendsto_at_bot_infi tendsto_atBot_infᵢ
/- warning: tendsto_at_top_infi -> tendsto_atTop_infᵢ is a dubious translation:
@@ -245,7 +245,7 @@ but is expected to have type
forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : Preorder.{u2} ι] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : CompleteLattice.{u1} α] [_inst_4 : InfConvergenceClass.{u1} α (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) _inst_2] {f : ι -> α}, (Antitone.{u2, u1} ι α _inst_1 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_3))) f) -> (Filter.Tendsto.{u2, u1} ι α f (Filter.atTop.{u2} ι _inst_1) (nhds.{u1} α _inst_2 (infᵢ.{u1, succ u2} α (ConditionallyCompleteLattice.toInfSet.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_3)) ι (fun (i : ι) => f i))))
Case conversion may be inaccurate. Consider using '#align tendsto_at_top_infi tendsto_atTop_infᵢₓ'. -/
theorem tendsto_atTop_infᵢ (h_anti : Antitone f) : Tendsto f atTop (𝓝 (⨅ i, f i)) :=
- tendsto_atTop_cinfi h_anti (OrderBot.bddBelow _)
+ tendsto_atTop_cinfᵢ h_anti (OrderBot.bddBelow _)
#align tendsto_at_top_infi tendsto_atTop_infᵢ
end infᵢ
@@ -304,7 +304,7 @@ Case conversion may be inaccurate. Consider using '#align tendsto_of_monotone te
theorem tendsto_of_monotone {ι α : Type _} [Preorder ι] [TopologicalSpace α]
[ConditionallyCompleteLinearOrder α] [OrderTopology α] {f : ι → α} (h_mono : Monotone f) :
Tendsto f atTop atTop ∨ ∃ l, Tendsto f atTop (𝓝 l) :=
- if H : BddAbove (range f) then Or.inr ⟨_, tendsto_atTop_csupr h_mono H⟩
+ if H : BddAbove (range f) then Or.inr ⟨_, tendsto_atTop_csupᵢ h_mono H⟩
else Or.inl <| tendsto_atTop_atTop_of_monotone' h_mono H
#align tendsto_of_monotone tendsto_of_monotone
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
open Classical
(#11199)
We remove all but one open Classical
s, instead preferring to use open scoped Classical
. The only real side-effect this led to is moving a couple declarations to use Exists.choose
instead of Classical.choose
.
The first few commits are explicitly labelled regex replaces for ease of review.
@@ -30,7 +30,8 @@ monotone convergence
open Filter Set Function
-open Filter Topology Classical
+open scoped Classical
+open Filter Topology
variable {α β : Type*}
@@ -244,6 +244,12 @@ theorem tendsto_iff_tendsto_subseq_of_monotone {ι₁ ι₂ α : Type*} [Semilat
· rwa [tendsto_nhds_unique h (hl'.comp hg)]
#align tendsto_iff_tendsto_subseq_of_monotone tendsto_iff_tendsto_subseq_of_monotone
+theorem tendsto_iff_tendsto_subseq_of_antitone {ι₁ ι₂ α : Type*} [SemilatticeSup ι₁] [Preorder ι₂]
+ [Nonempty ι₁] [TopologicalSpace α] [ConditionallyCompleteLinearOrder α] [OrderTopology α]
+ [NoMinOrder α] {f : ι₂ → α} {φ : ι₁ → ι₂} {l : α} (hf : Antitone f)
+ (hg : Tendsto φ atTop atTop) : Tendsto f atTop (𝓝 l) ↔ Tendsto (f ∘ φ) atTop (𝓝 l) :=
+ tendsto_iff_tendsto_subseq_of_monotone (α := αᵒᵈ) hf hg
+
/-! The next family of results, such as `isLUB_of_tendsto_atTop` and `iSup_eq_of_tendsto`, are
converses to the standard fact that bounded monotone functions converge. They state, that if a
monotone function `f` tends to `a` along `Filter.atTop`, then that value `a` is a least upper bound
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -190,7 +190,7 @@ instance Prod.supConvergenceClass
have B : Tendsto (fun x : s => (x : α × β).2) atTop (𝓝 b) :=
tendsto_atTop_isLUB (monotone_snd.restrict s) h.2
convert A.prod_mk_nhds B
- -- porting note: previously required below to close
+ -- Porting note: previously required below to close
-- ext1 ⟨⟨x, y⟩, h⟩
-- rfl
refine
s (#10762)
I replaced a few "terminal" refine/refine'
s with exact
.
The strategy was very simple-minded: essentially any refine
whose following line had smaller indentation got replaced by exact
and then I cleaned up the mess.
This PR certainly leaves some further terminal refine
s, but maybe the current change is beneficial.
@@ -74,7 +74,7 @@ instance (priority := 100) LinearOrder.supConvergenceClass [TopologicalSpace α]
refine' ⟨fun a s ha => tendsto_order.2 ⟨fun b hb => _, fun b hb => _⟩⟩
· rcases ha.exists_between hb with ⟨c, hcs, bc, bca⟩
lift c to s using hcs
- refine' (eventually_ge_atTop c).mono fun x hx => bc.trans_le hx
+ exact (eventually_ge_atTop c).mono fun x hx => bc.trans_le hx
· exact eventually_of_forall fun x => (ha.1 x.2).trans_lt hb
#align linear_order.Sup_convergence_class LinearOrder.supConvergenceClass
have
, replace
and suffices
(#10640)
No changes to tactic file, it's just boring fixes throughout the library.
This follows on from #6964.
Co-authored-by: sgouezel <sebastien.gouezel@univ-rennes1.fr> Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
@@ -94,8 +94,8 @@ variable [Preorder α] [SupConvergenceClass α] {f : ι → α} {a : α}
theorem tendsto_atTop_isLUB (h_mono : Monotone f) (ha : IsLUB (Set.range f) a) :
Tendsto f atTop (𝓝 a) := by
- suffices : Tendsto (rangeFactorization f) atTop atTop
- exact (SupConvergenceClass.tendsto_coe_atTop_isLUB _ _ ha).comp this
+ suffices Tendsto (rangeFactorization f) atTop atTop from
+ (SupConvergenceClass.tendsto_coe_atTop_isLUB _ _ ha).comp this
exact h_mono.rangeFactorization.tendsto_atTop_atTop fun b => b.2.imp fun a ha => ha.ge
#align tendsto_at_top_is_lub tendsto_atTop_isLUB
@@ -227,6 +227,12 @@ theorem tendsto_of_monotone {ι α : Type*} [Preorder ι] [TopologicalSpace α]
else Or.inl <| tendsto_atTop_atTop_of_monotone' h_mono H
#align tendsto_of_monotone tendsto_of_monotone
+theorem tendsto_of_antitone {ι α : Type*} [Preorder ι] [TopologicalSpace α]
+ [ConditionallyCompleteLinearOrder α] [OrderTopology α] {f : ι → α} (h_mono : Antitone f) :
+ Tendsto f atTop atBot ∨ ∃ l, Tendsto f atTop (𝓝 l) :=
+ @tendsto_of_monotone ι αᵒᵈ _ _ _ _ _ h_mono
+#align tendsto_of_antitone tendsto_of_antitone
+
theorem tendsto_iff_tendsto_subseq_of_monotone {ι₁ ι₂ α : Type*} [SemilatticeSup ι₁] [Preorder ι₂]
[Nonempty ι₁] [TopologicalSpace α] [ConditionallyCompleteLinearOrder α] [OrderTopology α]
[NoMaxOrder α] {f : ι₂ → α} {φ : ι₁ → ι₂} {l : α} (hf : Monotone f)
@@ -319,8 +319,22 @@ theorem iSup_eq_iSup_subseq_of_monotone {ι₁ ι₂ α : Type*} [Preorder ι₂
(iSup_mono' fun i => ⟨φ i, le_rfl⟩)
#align supr_eq_supr_subseq_of_monotone iSup_eq_iSup_subseq_of_monotone
+theorem iSup_eq_iSup_subseq_of_antitone {ι₁ ι₂ α : Type*} [Preorder ι₂] [CompleteLattice α]
+ {l : Filter ι₁} [l.NeBot] {f : ι₂ → α} {φ : ι₁ → ι₂} (hf : Antitone f)
+ (hφ : Tendsto φ l atBot) : ⨆ i, f i = ⨆ i, f (φ i) :=
+ le_antisymm
+ (iSup_mono' fun i =>
+ Exists.imp (fun j (hj : φ j ≤ i) => hf hj) (hφ.eventually <| eventually_le_atBot i).exists)
+ (iSup_mono' fun i => ⟨φ i, le_rfl⟩)
+#align supr_eq_supr_subseq_of_antitone iSup_eq_iSup_subseq_of_antitone
+
theorem iInf_eq_iInf_subseq_of_monotone {ι₁ ι₂ α : Type*} [Preorder ι₂] [CompleteLattice α]
{l : Filter ι₁} [l.NeBot] {f : ι₂ → α} {φ : ι₁ → ι₂} (hf : Monotone f)
(hφ : Tendsto φ l atBot) : ⨅ i, f i = ⨅ i, f (φ i) :=
iSup_eq_iSup_subseq_of_monotone hf.dual hφ
#align infi_eq_infi_subseq_of_monotone iInf_eq_iInf_subseq_of_monotone
+
+theorem iInf_eq_iInf_subseq_of_antitone {ι₁ ι₂ α : Type*} [Preorder ι₂] [CompleteLattice α]
+ {l : Filter ι₁} [l.NeBot] {f : ι₂ → α} {φ : ι₁ → ι₂} (hf : Antitone f)
+ (hφ : Tendsto φ l atTop) : ⨅ i, f i = ⨅ i, f (φ i) :=
+ iSup_eq_iSup_subseq_of_antitone hf.dual hφ
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -32,7 +32,7 @@ open Filter Set Function
open Filter Topology Classical
-variable {α β : Type _}
+variable {α β : Type*}
/-- We say that `α` is a `SupConvergenceClass` if the following holds. Let `f : ι → α` be a
monotone function, let `a : α` be a least upper bound of `Set.range f`. Then `f x` tends to `𝓝 a`
@@ -40,7 +40,7 @@ monotone function, let `a : α` be a least upper bound of `Set.range f`. Then `f
`f = CoeTC.coe` in the definition, then prove it for any `f` in `tendsto_atTop_isLUB`.
This property holds for linear orders with order topology as well as their products. -/
-class SupConvergenceClass (α : Type _) [Preorder α] [TopologicalSpace α] : Prop where
+class SupConvergenceClass (α : Type*) [Preorder α] [TopologicalSpace α] : Prop where
/-- proof that a monotone function tends to `𝓝 a` as `x → ∞` -/
tendsto_coe_atTop_isLUB :
∀ (a : α) (s : Set α), IsLUB s a → Tendsto (CoeTC.coe : s → α) atTop (𝓝 a)
@@ -52,7 +52,7 @@ as `x → -∞` (formally, at the filter `Filter.atBot`). We require this for `
`f = CoeTC.coe` in the definition, then prove it for any `f` in `tendsto_atBot_isGLB`.
This property holds for linear orders with order topology as well as their products. -/
-class InfConvergenceClass (α : Type _) [Preorder α] [TopologicalSpace α] : Prop where
+class InfConvergenceClass (α : Type*) [Preorder α] [TopologicalSpace α] : Prop where
/-- proof that a monotone function tends to `𝓝 a` as `x → -∞`-/
tendsto_coe_atBot_isGLB :
∀ (a : α) (s : Set α), IsGLB s a → Tendsto (CoeTC.coe : s → α) atBot (𝓝 a)
@@ -86,7 +86,7 @@ instance (priority := 100) LinearOrder.infConvergenceClass [TopologicalSpace α]
section
-variable {ι : Type _} [Preorder ι] [TopologicalSpace α]
+variable {ι : Type*} [Preorder ι] [TopologicalSpace α]
section IsLUB
@@ -199,35 +199,35 @@ instance [Preorder α] [Preorder β] [TopologicalSpace α] [TopologicalSpace β]
show InfConvergenceClass (αᵒᵈ × βᵒᵈ)ᵒᵈ from OrderDual.infConvergenceClass
instance Pi.supConvergenceClass
- {ι : Type _} {α : ι → Type _} [∀ i, Preorder (α i)] [∀ i, TopologicalSpace (α i)]
+ {ι : Type*} {α : ι → Type*} [∀ i, Preorder (α i)] [∀ i, TopologicalSpace (α i)]
[∀ i, SupConvergenceClass (α i)] : SupConvergenceClass (∀ i, α i) := by
refine' ⟨fun f s h => _⟩
simp only [isLUB_pi, ← range_restrict] at h
exact tendsto_pi_nhds.2 fun i => tendsto_atTop_isLUB ((monotone_eval _).restrict _) (h i)
instance Pi.infConvergenceClass
- {ι : Type _} {α : ι → Type _} [∀ i, Preorder (α i)] [∀ i, TopologicalSpace (α i)]
+ {ι : Type*} {α : ι → Type*} [∀ i, Preorder (α i)] [∀ i, TopologicalSpace (α i)]
[∀ i, InfConvergenceClass (α i)] : InfConvergenceClass (∀ i, α i) :=
show InfConvergenceClass (∀ i, (α i)ᵒᵈ)ᵒᵈ from OrderDual.infConvergenceClass
-instance Pi.supConvergenceClass' {ι : Type _} [Preorder α] [TopologicalSpace α]
+instance Pi.supConvergenceClass' {ι : Type*} [Preorder α] [TopologicalSpace α]
[SupConvergenceClass α] : SupConvergenceClass (ι → α) :=
supConvergenceClass
#align pi.Sup_convergence_class' Pi.supConvergenceClass'
-instance Pi.infConvergenceClass' {ι : Type _} [Preorder α] [TopologicalSpace α]
+instance Pi.infConvergenceClass' {ι : Type*} [Preorder α] [TopologicalSpace α]
[InfConvergenceClass α] : InfConvergenceClass (ι → α) :=
Pi.infConvergenceClass
#align pi.Inf_convergence_class' Pi.infConvergenceClass'
-theorem tendsto_of_monotone {ι α : Type _} [Preorder ι] [TopologicalSpace α]
+theorem tendsto_of_monotone {ι α : Type*} [Preorder ι] [TopologicalSpace α]
[ConditionallyCompleteLinearOrder α] [OrderTopology α] {f : ι → α} (h_mono : Monotone f) :
Tendsto f atTop atTop ∨ ∃ l, Tendsto f atTop (𝓝 l) :=
if H : BddAbove (range f) then Or.inr ⟨_, tendsto_atTop_ciSup h_mono H⟩
else Or.inl <| tendsto_atTop_atTop_of_monotone' h_mono H
#align tendsto_of_monotone tendsto_of_monotone
-theorem tendsto_iff_tendsto_subseq_of_monotone {ι₁ ι₂ α : Type _} [SemilatticeSup ι₁] [Preorder ι₂]
+theorem tendsto_iff_tendsto_subseq_of_monotone {ι₁ ι₂ α : Type*} [SemilatticeSup ι₁] [Preorder ι₂]
[Nonempty ι₁] [TopologicalSpace α] [ConditionallyCompleteLinearOrder α] [OrderTopology α]
[NoMaxOrder α] {f : ι₂ → α} {φ : ι₁ → ι₂} {l : α} (hf : Monotone f)
(hg : Tendsto φ atTop atTop) : Tendsto f atTop (𝓝 l) ↔ Tendsto (f ∘ φ) atTop (𝓝 l) := by
@@ -310,7 +310,7 @@ theorem iInf_eq_of_tendsto {α} [TopologicalSpace α] [CompleteLinearOrder α] [
tendsto_nhds_unique (tendsto_atTop_iInf hf)
#align infi_eq_of_tendsto iInf_eq_of_tendsto
-theorem iSup_eq_iSup_subseq_of_monotone {ι₁ ι₂ α : Type _} [Preorder ι₂] [CompleteLattice α]
+theorem iSup_eq_iSup_subseq_of_monotone {ι₁ ι₂ α : Type*} [Preorder ι₂] [CompleteLattice α]
{l : Filter ι₁} [l.NeBot] {f : ι₂ → α} {φ : ι₁ → ι₂} (hf : Monotone f)
(hφ : Tendsto φ l atTop) : ⨆ i, f i = ⨆ i, f (φ i) :=
le_antisymm
@@ -319,7 +319,7 @@ theorem iSup_eq_iSup_subseq_of_monotone {ι₁ ι₂ α : Type _} [Preorder ι
(iSup_mono' fun i => ⟨φ i, le_rfl⟩)
#align supr_eq_supr_subseq_of_monotone iSup_eq_iSup_subseq_of_monotone
-theorem iInf_eq_iInf_subseq_of_monotone {ι₁ ι₂ α : Type _} [Preorder ι₂] [CompleteLattice α]
+theorem iInf_eq_iInf_subseq_of_monotone {ι₁ ι₂ α : Type*} [Preorder ι₂] [CompleteLattice α]
{l : Filter ι₁} [l.NeBot] {f : ι₂ → α} {φ : ι₁ → ι₂} (hf : Monotone f)
(hφ : Tendsto φ l atBot) : ⨅ i, f i = ⨅ i, f (φ i) :=
iSup_eq_iSup_subseq_of_monotone hf.dual hφ
@@ -179,8 +179,9 @@ end iInf
end
-instance supConvergenceClassProd [Preorder α] [Preorder β] [TopologicalSpace α] [TopologicalSpace β]
- [SupConvergenceClass α] [SupConvergenceClass β] : SupConvergenceClass (α × β) := by
+instance Prod.supConvergenceClass
+ [Preorder α] [Preorder β] [TopologicalSpace α] [TopologicalSpace β]
+ [SupConvergenceClass α] [SupConvergenceClass β] : SupConvergenceClass (α × β) := by
constructor
rintro ⟨a, b⟩ s h
rw [isLUB_prod, ← range_restrict, ← range_restrict] at h
@@ -209,15 +210,15 @@ instance Pi.infConvergenceClass
[∀ i, InfConvergenceClass (α i)] : InfConvergenceClass (∀ i, α i) :=
show InfConvergenceClass (∀ i, (α i)ᵒᵈ)ᵒᵈ from OrderDual.infConvergenceClass
-instance Pi.Sup_convergence_class' {ι : Type _} [Preorder α] [TopologicalSpace α]
+instance Pi.supConvergenceClass' {ι : Type _} [Preorder α] [TopologicalSpace α]
[SupConvergenceClass α] : SupConvergenceClass (ι → α) :=
supConvergenceClass
-#align pi.Sup_convergence_class' Pi.Sup_convergence_class'
+#align pi.Sup_convergence_class' Pi.supConvergenceClass'
-instance Pi.Inf_convergence_class' {ι : Type _} [Preorder α] [TopologicalSpace α]
+instance Pi.infConvergenceClass' {ι : Type _} [Preorder α] [TopologicalSpace α]
[InfConvergenceClass α] : InfConvergenceClass (ι → α) :=
Pi.infConvergenceClass
-#align pi.Inf_convergence_class' Pi.Inf_convergence_class'
+#align pi.Inf_convergence_class' Pi.infConvergenceClass'
theorem tendsto_of_monotone {ι α : Type _} [Preorder ι] [TopologicalSpace α]
[ConditionallyCompleteLinearOrder α] [OrderTopology α] {f : ι → α} (h_mono : Monotone f) :
@@ -245,7 +245,6 @@ for the range of `f`.
Related theorems above (`IsLUB.isLUB_of_tendsto`, `IsGLB.isGLB_of_tendsto` etc) cover the case
when `f x` tends to `a` as `x` tends to some point `b` in the domain. -/
-set_option autoImplicit false
theorem Monotone.ge_of_tendsto [TopologicalSpace α] [Preorder α] [OrderClosedTopology α]
[SemilatticeSup β] {f : β → α} {a : α} (hf : Monotone f) (ha : Tendsto f atTop (𝓝 a)) (b : β) :
f b ≤ a :=
@@ -2,14 +2,11 @@
Copyright (c) 2021 Heather Macbeth. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Heather Macbeth, Yury Kudryashov
-
-! This file was ported from Lean 3 source module topology.algebra.order.monotone_convergence
-! leanprover-community/mathlib commit 4c19a16e4b705bf135cf9a80ac18fcc99c438514
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Topology.Order.Basic
+#align_import topology.algebra.order.monotone_convergence from "leanprover-community/mathlib"@"4c19a16e4b705bf135cf9a80ac18fcc99c438514"
+
/-!
# Bounded monotone sequences converge
@@ -315,7 +315,7 @@ theorem iInf_eq_of_tendsto {α} [TopologicalSpace α] [CompleteLinearOrder α] [
theorem iSup_eq_iSup_subseq_of_monotone {ι₁ ι₂ α : Type _} [Preorder ι₂] [CompleteLattice α]
{l : Filter ι₁} [l.NeBot] {f : ι₂ → α} {φ : ι₁ → ι₂} (hf : Monotone f)
- (hφ : Tendsto φ l atTop) : (⨆ i, f i) = ⨆ i, f (φ i) :=
+ (hφ : Tendsto φ l atTop) : ⨆ i, f i = ⨆ i, f (φ i) :=
le_antisymm
(iSup_mono' fun i =>
Exists.imp (fun j (hj : i ≤ φ j) => hf hj) (hφ.eventually <| eventually_ge_atTop i).exists)
@@ -324,6 +324,6 @@ theorem iSup_eq_iSup_subseq_of_monotone {ι₁ ι₂ α : Type _} [Preorder ι
theorem iInf_eq_iInf_subseq_of_monotone {ι₁ ι₂ α : Type _} [Preorder ι₂] [CompleteLattice α]
{l : Filter ι₁} [l.NeBot] {f : ι₂ → α} {φ : ι₁ → ι₂} (hf : Monotone f)
- (hφ : Tendsto φ l atBot) : (⨅ i, f i) = ⨅ i, f (φ i) :=
+ (hφ : Tendsto φ l atBot) : ⨅ i, f i = ⨅ i, f (φ i) :=
iSup_eq_iSup_subseq_of_monotone hf.dual hφ
#align infi_eq_infi_subseq_of_monotone iInf_eq_iInf_subseq_of_monotone
@@ -129,7 +129,7 @@ variable [ConditionallyCompleteLattice α] [SupConvergenceClass α] {f : ι →
theorem tendsto_atTop_ciSup (h_mono : Monotone f) (hbdd : BddAbove <| range f) :
Tendsto f atTop (𝓝 (⨆ i, f i)) := by
cases isEmpty_or_nonempty ι
- exacts[tendsto_of_isEmpty, tendsto_atTop_isLUB h_mono (isLUB_ciSup hbdd)]
+ exacts [tendsto_of_isEmpty, tendsto_atTop_isLUB h_mono (isLUB_ciSup hbdd)]
#align tendsto_at_top_csupr tendsto_atTop_ciSup
theorem tendsto_atBot_ciSup (h_anti : Antitone f) (hbdd : BddAbove <| range f) :
sSup
/iSup
(#3938)
As discussed on Zulip
supₛ
→ sSup
infₛ
→ sInf
supᵢ
→ iSup
infᵢ
→ iInf
bsupₛ
→ bsSup
binfₛ
→ bsInf
bsupᵢ
→ biSup
binfᵢ
→ biInf
csupₛ
→ csSup
cinfₛ
→ csInf
csupᵢ
→ ciSup
cinfᵢ
→ ciInf
unionₛ
→ sUnion
interₛ
→ sInter
unionᵢ
→ iUnion
interᵢ
→ iInter
bunionₛ
→ bsUnion
binterₛ
→ bsInter
bunionᵢ
→ biUnion
binterᵢ
→ biInter
Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>
@@ -122,63 +122,63 @@ theorem tendsto_atTop_isGLB (h_anti : Antitone f) (ha : IsGLB (Set.range f) a) :
end IsGLB
-section Csupᵢ
+section CiSup
variable [ConditionallyCompleteLattice α] [SupConvergenceClass α] {f : ι → α} {a : α}
-theorem tendsto_atTop_csupᵢ (h_mono : Monotone f) (hbdd : BddAbove <| range f) :
+theorem tendsto_atTop_ciSup (h_mono : Monotone f) (hbdd : BddAbove <| range f) :
Tendsto f atTop (𝓝 (⨆ i, f i)) := by
cases isEmpty_or_nonempty ι
- exacts[tendsto_of_isEmpty, tendsto_atTop_isLUB h_mono (isLUB_csupᵢ hbdd)]
-#align tendsto_at_top_csupr tendsto_atTop_csupᵢ
+ exacts[tendsto_of_isEmpty, tendsto_atTop_isLUB h_mono (isLUB_ciSup hbdd)]
+#align tendsto_at_top_csupr tendsto_atTop_ciSup
-theorem tendsto_atBot_csupᵢ (h_anti : Antitone f) (hbdd : BddAbove <| range f) :
- Tendsto f atBot (𝓝 (⨆ i, f i)) := by convert tendsto_atTop_csupᵢ h_anti.dual hbdd.dual using 1
-#align tendsto_at_bot_csupr tendsto_atBot_csupᵢ
+theorem tendsto_atBot_ciSup (h_anti : Antitone f) (hbdd : BddAbove <| range f) :
+ Tendsto f atBot (𝓝 (⨆ i, f i)) := by convert tendsto_atTop_ciSup h_anti.dual hbdd.dual using 1
+#align tendsto_at_bot_csupr tendsto_atBot_ciSup
-end Csupᵢ
+end CiSup
-section Cinfᵢ
+section CiInf
variable [ConditionallyCompleteLattice α] [InfConvergenceClass α] {f : ι → α} {a : α}
-theorem tendsto_atBot_cinfᵢ (h_mono : Monotone f) (hbdd : BddBelow <| range f) :
- Tendsto f atBot (𝓝 (⨅ i, f i)) := by convert tendsto_atTop_csupᵢ h_mono.dual hbdd.dual using 1
-#align tendsto_at_bot_cinfi tendsto_atBot_cinfᵢ
+theorem tendsto_atBot_ciInf (h_mono : Monotone f) (hbdd : BddBelow <| range f) :
+ Tendsto f atBot (𝓝 (⨅ i, f i)) := by convert tendsto_atTop_ciSup h_mono.dual hbdd.dual using 1
+#align tendsto_at_bot_cinfi tendsto_atBot_ciInf
-theorem tendsto_atTop_cinfᵢ (h_anti : Antitone f) (hbdd : BddBelow <| range f) :
- Tendsto f atTop (𝓝 (⨅ i, f i)) := by convert tendsto_atBot_csupᵢ h_anti.dual hbdd.dual using 1
-#align tendsto_at_top_cinfi tendsto_atTop_cinfᵢ
+theorem tendsto_atTop_ciInf (h_anti : Antitone f) (hbdd : BddBelow <| range f) :
+ Tendsto f atTop (𝓝 (⨅ i, f i)) := by convert tendsto_atBot_ciSup h_anti.dual hbdd.dual using 1
+#align tendsto_at_top_cinfi tendsto_atTop_ciInf
-end Cinfᵢ
+end CiInf
-section supᵢ
+section iSup
variable [CompleteLattice α] [SupConvergenceClass α] {f : ι → α} {a : α}
-theorem tendsto_atTop_supᵢ (h_mono : Monotone f) : Tendsto f atTop (𝓝 (⨆ i, f i)) :=
- tendsto_atTop_csupᵢ h_mono (OrderTop.bddAbove _)
-#align tendsto_at_top_supr tendsto_atTop_supᵢ
+theorem tendsto_atTop_iSup (h_mono : Monotone f) : Tendsto f atTop (𝓝 (⨆ i, f i)) :=
+ tendsto_atTop_ciSup h_mono (OrderTop.bddAbove _)
+#align tendsto_at_top_supr tendsto_atTop_iSup
-theorem tendsto_atBot_supᵢ (h_anti : Antitone f) : Tendsto f atBot (𝓝 (⨆ i, f i)) :=
- tendsto_atBot_csupᵢ h_anti (OrderTop.bddAbove _)
-#align tendsto_at_bot_supr tendsto_atBot_supᵢ
+theorem tendsto_atBot_iSup (h_anti : Antitone f) : Tendsto f atBot (𝓝 (⨆ i, f i)) :=
+ tendsto_atBot_ciSup h_anti (OrderTop.bddAbove _)
+#align tendsto_at_bot_supr tendsto_atBot_iSup
-end supᵢ
+end iSup
-section infᵢ
+section iInf
variable [CompleteLattice α] [InfConvergenceClass α] {f : ι → α} {a : α}
-theorem tendsto_atBot_infᵢ (h_mono : Monotone f) : Tendsto f atBot (𝓝 (⨅ i, f i)) :=
- tendsto_atBot_cinfᵢ h_mono (OrderBot.bddBelow _)
-#align tendsto_at_bot_infi tendsto_atBot_infᵢ
+theorem tendsto_atBot_iInf (h_mono : Monotone f) : Tendsto f atBot (𝓝 (⨅ i, f i)) :=
+ tendsto_atBot_ciInf h_mono (OrderBot.bddBelow _)
+#align tendsto_at_bot_infi tendsto_atBot_iInf
-theorem tendsto_atTop_infᵢ (h_anti : Antitone f) : Tendsto f atTop (𝓝 (⨅ i, f i)) :=
- tendsto_atTop_cinfᵢ h_anti (OrderBot.bddBelow _)
-#align tendsto_at_top_infi tendsto_atTop_infᵢ
+theorem tendsto_atTop_iInf (h_anti : Antitone f) : Tendsto f atTop (𝓝 (⨅ i, f i)) :=
+ tendsto_atTop_ciInf h_anti (OrderBot.bddBelow _)
+#align tendsto_at_top_infi tendsto_atTop_iInf
-end infᵢ
+end iInf
end
@@ -225,7 +225,7 @@ instance Pi.Inf_convergence_class' {ι : Type _} [Preorder α] [TopologicalSpace
theorem tendsto_of_monotone {ι α : Type _} [Preorder ι] [TopologicalSpace α]
[ConditionallyCompleteLinearOrder α] [OrderTopology α] {f : ι → α} (h_mono : Monotone f) :
Tendsto f atTop atTop ∨ ∃ l, Tendsto f atTop (𝓝 l) :=
- if H : BddAbove (range f) then Or.inr ⟨_, tendsto_atTop_csupᵢ h_mono H⟩
+ if H : BddAbove (range f) then Or.inr ⟨_, tendsto_atTop_ciSup h_mono H⟩
else Or.inl <| tendsto_atTop_atTop_of_monotone' h_mono H
#align tendsto_of_monotone tendsto_of_monotone
@@ -240,7 +240,7 @@ theorem tendsto_iff_tendsto_subseq_of_monotone {ι₁ ι₂ α : Type _} [Semila
· rwa [tendsto_nhds_unique h (hl'.comp hg)]
#align tendsto_iff_tendsto_subseq_of_monotone tendsto_iff_tendsto_subseq_of_monotone
-/-! The next family of results, such as `isLUB_of_tendsto_atTop` and `supᵢ_eq_of_tendsto`, are
+/-! The next family of results, such as `isLUB_of_tendsto_atTop` and `iSup_eq_of_tendsto`, are
converses to the standard fact that bounded monotone functions converge. They state, that if a
monotone function `f` tends to `a` along `Filter.atTop`, then that value `a` is a least upper bound
for the range of `f`.
@@ -301,29 +301,29 @@ theorem isGLB_of_tendsto_atTop [TopologicalSpace α] [Preorder α] [OrderClosedT
@isGLB_of_tendsto_atBot α βᵒᵈ _ _ _ _ _ _ _ hf.dual_left ha
#align is_glb_of_tendsto_at_top isGLB_of_tendsto_atTop
-theorem supᵢ_eq_of_tendsto {α β} [TopologicalSpace α] [CompleteLinearOrder α] [OrderTopology α]
+theorem iSup_eq_of_tendsto {α β} [TopologicalSpace α] [CompleteLinearOrder α] [OrderTopology α]
[Nonempty β] [SemilatticeSup β] {f : β → α} {a : α} (hf : Monotone f) :
- Tendsto f atTop (𝓝 a) → supᵢ f = a :=
- tendsto_nhds_unique (tendsto_atTop_supᵢ hf)
-#align supr_eq_of_tendsto supᵢ_eq_of_tendsto
+ Tendsto f atTop (𝓝 a) → iSup f = a :=
+ tendsto_nhds_unique (tendsto_atTop_iSup hf)
+#align supr_eq_of_tendsto iSup_eq_of_tendsto
-theorem infᵢ_eq_of_tendsto {α} [TopologicalSpace α] [CompleteLinearOrder α] [OrderTopology α]
+theorem iInf_eq_of_tendsto {α} [TopologicalSpace α] [CompleteLinearOrder α] [OrderTopology α]
[Nonempty β] [SemilatticeSup β] {f : β → α} {a : α} (hf : Antitone f) :
- Tendsto f atTop (𝓝 a) → infᵢ f = a :=
- tendsto_nhds_unique (tendsto_atTop_infᵢ hf)
-#align infi_eq_of_tendsto infᵢ_eq_of_tendsto
+ Tendsto f atTop (𝓝 a) → iInf f = a :=
+ tendsto_nhds_unique (tendsto_atTop_iInf hf)
+#align infi_eq_of_tendsto iInf_eq_of_tendsto
-theorem supᵢ_eq_supᵢ_subseq_of_monotone {ι₁ ι₂ α : Type _} [Preorder ι₂] [CompleteLattice α]
+theorem iSup_eq_iSup_subseq_of_monotone {ι₁ ι₂ α : Type _} [Preorder ι₂] [CompleteLattice α]
{l : Filter ι₁} [l.NeBot] {f : ι₂ → α} {φ : ι₁ → ι₂} (hf : Monotone f)
(hφ : Tendsto φ l atTop) : (⨆ i, f i) = ⨆ i, f (φ i) :=
le_antisymm
- (supᵢ_mono' fun i =>
+ (iSup_mono' fun i =>
Exists.imp (fun j (hj : i ≤ φ j) => hf hj) (hφ.eventually <| eventually_ge_atTop i).exists)
- (supᵢ_mono' fun i => ⟨φ i, le_rfl⟩)
-#align supr_eq_supr_subseq_of_monotone supᵢ_eq_supᵢ_subseq_of_monotone
+ (iSup_mono' fun i => ⟨φ i, le_rfl⟩)
+#align supr_eq_supr_subseq_of_monotone iSup_eq_iSup_subseq_of_monotone
-theorem infᵢ_eq_infᵢ_subseq_of_monotone {ι₁ ι₂ α : Type _} [Preorder ι₂] [CompleteLattice α]
+theorem iInf_eq_iInf_subseq_of_monotone {ι₁ ι₂ α : Type _} [Preorder ι₂] [CompleteLattice α]
{l : Filter ι₁} [l.NeBot] {f : ι₂ → α} {φ : ι₁ → ι₂} (hf : Monotone f)
(hφ : Tendsto φ l atBot) : (⨅ i, f i) = ⨅ i, f (φ i) :=
- supᵢ_eq_supᵢ_subseq_of_monotone hf.dual hφ
-#align infi_eq_infi_subseq_of_monotone infᵢ_eq_infᵢ_subseq_of_monotone
+ iSup_eq_iSup_subseq_of_monotone hf.dual hφ
+#align infi_eq_infi_subseq_of_monotone iInf_eq_iInf_subseq_of_monotone
congr!
and convert
(#2606)
congr!
, convert
, and convert_to
to control parts of the congruence algorithm, in particular transparency settings when applying congruence lemmas.congr!
now applies congruence lemmas with reducible transparency by default. This prevents it from unfolding definitions when applying congruence lemmas. It also now tries both the LHS-biased and RHS-biased simp congruence lemmas, with a configuration option to set which it should try first.HEq
congruence lemma generator that gives each hypothesis access to the proofs of previous hypotheses. This means that if you have an equality ⊢ ⟨a, x⟩ = ⟨b, y⟩
of sigma types, congr!
turns this into goals ⊢ a = b
and ⊢ a = b → HEq x y
(note that congr!
will also auto-introduce a = b
for you in the second goal). This congruence lemma generator applies to more cases than the simp congruence lemma generator does.congr!
(and hence convert
) are more careful about applying lemmas that don't force definitions to unfold. There were a number of cases in mathlib where the implementation of congr
was being abused to unfold definitions.set_option trace.congr! true
you can see what congr!
sees when it is deciding on congruence lemmas.convert_to
to do using 1
when there is no using
clause, to match its documentation.Note that congr!
is more capable than congr
at finding a way to equate left-hand sides and right-hand sides, so you will frequently need to limit its depth with a using
clause. However, there is also a new heuristic to prevent considering unlikely-to-be-provable type equalities (controlled by the typeEqs
option), which can help limit the depth automatically.
There is also a predefined configuration that you can invoke with, for example, convert (config := .unfoldSameFun) h
, that causes it to behave more like congr
, including using default transparency when unfolding.
@@ -103,7 +103,7 @@ theorem tendsto_atTop_isLUB (h_mono : Monotone f) (ha : IsLUB (Set.range f) a) :
#align tendsto_at_top_is_lub tendsto_atTop_isLUB
theorem tendsto_atBot_isLUB (h_anti : Antitone f) (ha : IsLUB (Set.range f) a) :
- Tendsto f atBot (𝓝 a) := by convert tendsto_atTop_isLUB h_anti.dual_left ha
+ Tendsto f atBot (𝓝 a) := by convert tendsto_atTop_isLUB h_anti.dual_left ha using 1
#align tendsto_at_bot_is_lub tendsto_atBot_isLUB
end IsLUB
@@ -113,11 +113,11 @@ section IsGLB
variable [Preorder α] [InfConvergenceClass α] {f : ι → α} {a : α}
theorem tendsto_atBot_isGLB (h_mono : Monotone f) (ha : IsGLB (Set.range f) a) :
- Tendsto f atBot (𝓝 a) := by convert tendsto_atTop_isLUB h_mono.dual ha.dual
+ Tendsto f atBot (𝓝 a) := by convert tendsto_atTop_isLUB h_mono.dual ha.dual using 1
#align tendsto_at_bot_is_glb tendsto_atBot_isGLB
theorem tendsto_atTop_isGLB (h_anti : Antitone f) (ha : IsGLB (Set.range f) a) :
- Tendsto f atTop (𝓝 a) := by convert tendsto_atBot_isLUB h_anti.dual ha.dual
+ Tendsto f atTop (𝓝 a) := by convert tendsto_atBot_isLUB h_anti.dual ha.dual using 1
#align tendsto_at_top_is_glb tendsto_atTop_isGLB
end IsGLB
@@ -133,7 +133,7 @@ theorem tendsto_atTop_csupᵢ (h_mono : Monotone f) (hbdd : BddAbove <| range f)
#align tendsto_at_top_csupr tendsto_atTop_csupᵢ
theorem tendsto_atBot_csupᵢ (h_anti : Antitone f) (hbdd : BddAbove <| range f) :
- Tendsto f atBot (𝓝 (⨆ i, f i)) := by convert tendsto_atTop_csupᵢ h_anti.dual hbdd.dual
+ Tendsto f atBot (𝓝 (⨆ i, f i)) := by convert tendsto_atTop_csupᵢ h_anti.dual hbdd.dual using 1
#align tendsto_at_bot_csupr tendsto_atBot_csupᵢ
end Csupᵢ
@@ -143,11 +143,11 @@ section Cinfᵢ
variable [ConditionallyCompleteLattice α] [InfConvergenceClass α] {f : ι → α} {a : α}
theorem tendsto_atBot_cinfᵢ (h_mono : Monotone f) (hbdd : BddBelow <| range f) :
- Tendsto f atBot (𝓝 (⨅ i, f i)) := by convert tendsto_atTop_csupᵢ h_mono.dual hbdd.dual
+ Tendsto f atBot (𝓝 (⨅ i, f i)) := by convert tendsto_atTop_csupᵢ h_mono.dual hbdd.dual using 1
#align tendsto_at_bot_cinfi tendsto_atBot_cinfᵢ
theorem tendsto_atTop_cinfᵢ (h_anti : Antitone f) (hbdd : BddBelow <| range f) :
- Tendsto f atTop (𝓝 (⨅ i, f i)) := by convert tendsto_atBot_csupᵢ h_anti.dual hbdd.dual
+ Tendsto f atTop (𝓝 (⨅ i, f i)) := by convert tendsto_atBot_csupᵢ h_anti.dual hbdd.dual using 1
#align tendsto_at_top_cinfi tendsto_atTop_cinfᵢ
end Cinfᵢ
API changes:
HasSum.sum_range_add
, sum_add_tsum_nat_add'
, and tsum_eq_zero_add'
. We had these (or stronger) results for topological groups. These versions works for monoids.tendsto_atTop_csupr
to tendsto_atTop_csupᵢ
, tendsto_atBot_csupr
to tendsto_atBot_csupᵢ
, tendsto_atBot_cinfi
to tendsto_atBot_cinfᵢ
, and tendsto_atTop_cinfi
to tendsto_atTop_cinfᵢ
.T5Space ENNReal
.ENNReal.nhdsWithin_Ioi_one_neBot
, ENNReal.nhdsWithin_Ioi_nat_neBot
, ENNReal.nhdsWithin_Ioi_ofNat_nebot
, and ENNReal.nhdsWithin_Iio_neBot
.ENNReal.hasBasis_nhds_of_ne_top
and ENNReal.hasBasis_nhds_of_ne_top'
.ENNReal.binfᵢ_le_nhds
and ENNReal.tendsto_nhds_of_Icc
.Real.nnabs
instead of nnnorm
to avoid dependency on analysis.normed.group.basic
(forward-port of leanprover-community/mathlib#18562).ENNReal.tsum_eq_limsup_sum_nat
.ENNReal.tsum_comp_le_tsum_of_injective
, ENNReal.tsum_le_tsum_comp_of_surjective
, use them to golf some proofs.ENNReal.tsum_bunionᵢ_le_tsum
, ENNReal.tsum_unionᵢ_le_tsum
. We had versions of these lemmas for finite collections. The proofs for infinite collections are simpler.Most of these changes were done to fix some long proofs: it was easier for me (@urkud) to add supporting lemmas and golf the proof than to fix the original code.
Co-authored-by: Yury G. Kudryashov <urkud@urkud.name> Co-authored-by: Yury Kudryashov <urkud@urkud.name>
@@ -122,46 +122,46 @@ theorem tendsto_atTop_isGLB (h_anti : Antitone f) (ha : IsGLB (Set.range f) a) :
end IsGLB
-section Csupr
+section Csupᵢ
variable [ConditionallyCompleteLattice α] [SupConvergenceClass α] {f : ι → α} {a : α}
-theorem tendsto_atTop_csupr (h_mono : Monotone f) (hbdd : BddAbove <| range f) :
+theorem tendsto_atTop_csupᵢ (h_mono : Monotone f) (hbdd : BddAbove <| range f) :
Tendsto f atTop (𝓝 (⨆ i, f i)) := by
cases isEmpty_or_nonempty ι
exacts[tendsto_of_isEmpty, tendsto_atTop_isLUB h_mono (isLUB_csupᵢ hbdd)]
-#align tendsto_at_top_csupr tendsto_atTop_csupr
+#align tendsto_at_top_csupr tendsto_atTop_csupᵢ
-theorem tendsto_atBot_csupr (h_anti : Antitone f) (hbdd : BddAbove <| range f) :
- Tendsto f atBot (𝓝 (⨆ i, f i)) := by convert tendsto_atTop_csupr h_anti.dual hbdd.dual
-#align tendsto_at_bot_csupr tendsto_atBot_csupr
+theorem tendsto_atBot_csupᵢ (h_anti : Antitone f) (hbdd : BddAbove <| range f) :
+ Tendsto f atBot (𝓝 (⨆ i, f i)) := by convert tendsto_atTop_csupᵢ h_anti.dual hbdd.dual
+#align tendsto_at_bot_csupr tendsto_atBot_csupᵢ
-end Csupr
+end Csupᵢ
-section Cinfi
+section Cinfᵢ
variable [ConditionallyCompleteLattice α] [InfConvergenceClass α] {f : ι → α} {a : α}
-theorem tendsto_atBot_cinfi (h_mono : Monotone f) (hbdd : BddBelow <| range f) :
- Tendsto f atBot (𝓝 (⨅ i, f i)) := by convert tendsto_atTop_csupr h_mono.dual hbdd.dual
-#align tendsto_at_bot_cinfi tendsto_atBot_cinfi
+theorem tendsto_atBot_cinfᵢ (h_mono : Monotone f) (hbdd : BddBelow <| range f) :
+ Tendsto f atBot (𝓝 (⨅ i, f i)) := by convert tendsto_atTop_csupᵢ h_mono.dual hbdd.dual
+#align tendsto_at_bot_cinfi tendsto_atBot_cinfᵢ
-theorem tendsto_atTop_cinfi (h_anti : Antitone f) (hbdd : BddBelow <| range f) :
- Tendsto f atTop (𝓝 (⨅ i, f i)) := by convert tendsto_atBot_csupr h_anti.dual hbdd.dual
-#align tendsto_at_top_cinfi tendsto_atTop_cinfi
+theorem tendsto_atTop_cinfᵢ (h_anti : Antitone f) (hbdd : BddBelow <| range f) :
+ Tendsto f atTop (𝓝 (⨅ i, f i)) := by convert tendsto_atBot_csupᵢ h_anti.dual hbdd.dual
+#align tendsto_at_top_cinfi tendsto_atTop_cinfᵢ
-end Cinfi
+end Cinfᵢ
section supᵢ
variable [CompleteLattice α] [SupConvergenceClass α] {f : ι → α} {a : α}
theorem tendsto_atTop_supᵢ (h_mono : Monotone f) : Tendsto f atTop (𝓝 (⨆ i, f i)) :=
- tendsto_atTop_csupr h_mono (OrderTop.bddAbove _)
+ tendsto_atTop_csupᵢ h_mono (OrderTop.bddAbove _)
#align tendsto_at_top_supr tendsto_atTop_supᵢ
theorem tendsto_atBot_supᵢ (h_anti : Antitone f) : Tendsto f atBot (𝓝 (⨆ i, f i)) :=
- tendsto_atBot_csupr h_anti (OrderTop.bddAbove _)
+ tendsto_atBot_csupᵢ h_anti (OrderTop.bddAbove _)
#align tendsto_at_bot_supr tendsto_atBot_supᵢ
end supᵢ
@@ -171,11 +171,11 @@ section infᵢ
variable [CompleteLattice α] [InfConvergenceClass α] {f : ι → α} {a : α}
theorem tendsto_atBot_infᵢ (h_mono : Monotone f) : Tendsto f atBot (𝓝 (⨅ i, f i)) :=
- tendsto_atBot_cinfi h_mono (OrderBot.bddBelow _)
+ tendsto_atBot_cinfᵢ h_mono (OrderBot.bddBelow _)
#align tendsto_at_bot_infi tendsto_atBot_infᵢ
theorem tendsto_atTop_infᵢ (h_anti : Antitone f) : Tendsto f atTop (𝓝 (⨅ i, f i)) :=
- tendsto_atTop_cinfi h_anti (OrderBot.bddBelow _)
+ tendsto_atTop_cinfᵢ h_anti (OrderBot.bddBelow _)
#align tendsto_at_top_infi tendsto_atTop_infᵢ
end infᵢ
@@ -225,7 +225,7 @@ instance Pi.Inf_convergence_class' {ι : Type _} [Preorder α] [TopologicalSpace
theorem tendsto_of_monotone {ι α : Type _} [Preorder ι] [TopologicalSpace α]
[ConditionallyCompleteLinearOrder α] [OrderTopology α] {f : ι → α} (h_mono : Monotone f) :
Tendsto f atTop atTop ∨ ∃ l, Tendsto f atTop (𝓝 l) :=
- if H : BddAbove (range f) then Or.inr ⟨_, tendsto_atTop_csupr h_mono H⟩
+ if H : BddAbove (range f) then Or.inr ⟨_, tendsto_atTop_csupᵢ h_mono H⟩
else Or.inl <| tendsto_atTop_atTop_of_monotone' h_mono H
#align tendsto_of_monotone tendsto_of_monotone
import Mathlib.Tactic.LibrarySearch
is often useful to include while porting a theory file, but should be deleted before committing.
This PR cleans up some cases where it did not get deleted:
@@ -9,7 +9,6 @@ Authors: Heather Macbeth, Yury Kudryashov
! if you have ported upstream changes.
-/
import Mathlib.Topology.Order.Basic
-import Mathlib.Tactic.LibrarySearch
/-!
# Bounded monotone sequences converge
port of topology.algebra.order.monotone_convergence
Co-authored-by: Moritz Doll <moritz.doll@googlemail.com> Co-authored-by: Johan Commelin <johan@commelin.net>
The unported dependencies are