topology.algebra.infinite_sum.order
⟷
Mathlib.Topology.Algebra.InfiniteSum.Order
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)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -4,9 +4,9 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl
-/
import Algebra.Order.Archimedean
-import Topology.Algebra.InfiniteSum.Basic
+import Topology.Algebra.InfiniteSum.Defs
import Topology.Algebra.Order.Field
-import Topology.Algebra.Order.MonotoneConvergence
+import Topology.Order.MonotoneConvergence
#align_import topology.algebra.infinite_sum.order from "leanprover-community/mathlib"@"f47581155c818e6361af4e4fda60d27d020c226b"
@@ -71,7 +71,7 @@ theorem le_hasSum_of_le_sum (hf : HasSum f a) (h : ∀ s, a₂ ≤ ∑ i in s, f
#align le_has_sum_of_le_sum le_hasSum_of_le_sum
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (c «expr ∉ » set.range[set.range] e) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (c «expr ∉ » set.range[set.range] e) -/
#print hasSum_le_inj /-
theorem hasSum_le_inj {g : κ → α} (e : ι → κ) (he : Injective e)
(hs : ∀ (c) (_ : c ∉ Set.range e), 0 ≤ g c) (h : ∀ i, f i ≤ g (e i)) (hf : HasSum f a₁)
@@ -98,7 +98,7 @@ theorem hasSum_le_inj {g : κ → α} (e : ι → κ) (he : Injective e)
#align has_sum_le_inj hasSum_le_inj
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (c «expr ∉ » set.range[set.range] e) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (c «expr ∉ » set.range[set.range] e) -/
#print tsum_le_tsum_of_inj /-
theorem tsum_le_tsum_of_inj {g : κ → α} (e : ι → κ) (he : Injective e)
(hs : ∀ (c) (_ : c ∉ Set.range e), 0 ≤ g c) (h : ∀ i, f i ≤ g (e i)) (hf : Summable f)
@@ -107,7 +107,7 @@ theorem tsum_le_tsum_of_inj {g : κ → α} (e : ι → κ) (he : Injective e)
#align tsum_le_tsum_of_inj tsum_le_tsum_of_inj
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (i «expr ∉ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (i «expr ∉ » s) -/
#print sum_le_hasSum /-
theorem sum_le_hasSum (s : Finset ι) (hs : ∀ (i) (_ : i ∉ s), 0 ≤ f i) (hf : HasSum f a) :
∑ i in s, f i ≤ a :=
@@ -124,7 +124,7 @@ theorem isLUB_hasSum (h : ∀ i, 0 ≤ f i) (hf : HasSum f a) :
#align is_lub_has_sum isLUB_hasSum
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (b' «expr ≠ » i) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (b' «expr ≠ » i) -/
#print le_hasSum /-
theorem le_hasSum (hf : HasSum f a) (i : ι) (hb : ∀ (b') (_ : b' ≠ i), 0 ≤ f b') : f i ≤ a :=
calc
@@ -133,7 +133,7 @@ theorem le_hasSum (hf : HasSum f a) (i : ι) (hb : ∀ (b') (_ : b' ≠ i), 0
#align le_has_sum le_hasSum
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (i «expr ∉ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (i «expr ∉ » s) -/
#print sum_le_tsum /-
theorem sum_le_tsum {f : ι → α} (s : Finset ι) (hs : ∀ (i) (_ : i ∉ s), 0 ≤ f i) (hf : Summable f) :
∑ i in s, f i ≤ ∑' i, f i :=
@@ -141,7 +141,7 @@ theorem sum_le_tsum {f : ι → α} (s : Finset ι) (hs : ∀ (i) (_ : i ∉ s),
#align sum_le_tsum sum_le_tsum
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (b' «expr ≠ » i) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (b' «expr ≠ » i) -/
#print le_tsum /-
theorem le_tsum (hf : Summable f) (i : ι) (hb : ∀ (b') (_ : b' ≠ i), 0 ≤ f b') : f i ≤ ∑' i, f i :=
le_hasSum (Summable.hasSum hf) i hb
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -81,10 +81,10 @@ theorem hasSum_le_inj {g : κ → α} (e : ι → κ) (he : Injective e)
by
refine'
(hasSum_iff_hasSum_of_ne_zero_bij (e ∘ coe) (fun c₁ c₂ hc => he hc) (fun c hc => _) _).2 hf
- · rw [mem_support] at hc
- cases' eq : partial_inv e c with i <;> rw [Eq] at hc
+ · rw [mem_support] at hc
+ cases' eq : partial_inv e c with i <;> rw [Eq] at hc
· contradiction
- · rw [partial_inv_of_injective he] at eq
+ · rw [partial_inv_of_injective he] at eq
exact ⟨⟨i, hc⟩, Eq⟩
· rintro c
simp [partial_inv_left he, Option.casesOn']
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -375,7 +375,7 @@ theorem Set.Finite.of_summable_const [LinearOrderedAddCommGroup α] [Topological
obtain ⟨n, hn⟩ := Archimedean.arch (∑' i : ι, b) hb
have : ∀ s : Finset ι, s.card ≤ n := by
intro s
- simpa [nsmul_le_nsmul_iff hb] using (H s).trans hn
+ simpa [nsmul_le_nsmul_iff_left hb] using (H s).trans hn
haveI : Fintype ι := fintypeOfFinsetCardLe n this
exact Set.finite_univ
#align finite_of_summable_const Set.Finite.of_summable_const
mathlib commit https://github.com/leanprover-community/mathlib/commit/b1abe23ae96fef89ad30d9f4362c307f72a55010
@@ -303,7 +303,7 @@ theorem tsum_eq_zero_iff (hf : Summable f) : ∑' i, f i = 0 ↔ ∀ x, f x = 0
#print tsum_ne_zero_iff /-
theorem tsum_ne_zero_iff (hf : Summable f) : ∑' i, f i ≠ 0 ↔ ∃ x, f x ≠ 0 := by
- rw [Ne.def, tsum_eq_zero_iff hf, not_forall]
+ rw [Ne.def, tsum_eq_zero_iff hf, Classical.not_forall]
#align tsum_ne_zero_iff tsum_ne_zero_iff
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -267,10 +267,10 @@ theorem hasSum_zero_iff_of_nonneg (hf : ∀ i, 0 ≤ f i) : HasSum f 0 ↔ f = 0
end OrderedAddCommGroup
-section CanonicallyOrderedAddMonoid
+section CanonicallyOrderedAddCommMonoid
-variable [CanonicallyOrderedAddMonoid α] [TopologicalSpace α] [OrderClosedTopology α] {f : ι → α}
- {a : α}
+variable [CanonicallyOrderedAddCommMonoid α] [TopologicalSpace α] [OrderClosedTopology α]
+ {f : ι → α} {a : α}
#print le_hasSum' /-
theorem le_hasSum' (hf : HasSum f a) (i : ι) : f i ≤ a :=
@@ -313,7 +313,7 @@ theorem isLUB_hasSum' (hf : HasSum f a) : IsLUB (Set.range fun s => ∑ i in s,
#align is_lub_has_sum' isLUB_hasSum'
-/
-end CanonicallyOrderedAddMonoid
+end CanonicallyOrderedAddCommMonoid
section LinearOrder
@@ -336,8 +336,9 @@ theorem hasSum_of_isLUB_of_nonneg [LinearOrderedAddCommMonoid α] [TopologicalSp
-/
#print hasSum_of_isLUB /-
-theorem hasSum_of_isLUB [CanonicallyLinearOrderedAddMonoid α] [TopologicalSpace α] [OrderTopology α]
- {f : ι → α} (b : α) (hf : IsLUB (Set.range fun s => ∑ i in s, f i) b) : HasSum f b :=
+theorem hasSum_of_isLUB [CanonicallyLinearOrderedAddCommMonoid α] [TopologicalSpace α]
+ [OrderTopology α] {f : ι → α} (b : α) (hf : IsLUB (Set.range fun s => ∑ i in s, f i) b) :
+ HasSum f b :=
tendsto_atTop_isLUB (Finset.sum_mono_set f) hf
#align has_sum_of_is_lub hasSum_of_isLUB
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,10 +3,10 @@ Copyright (c) 2017 Johannes Hölzl. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl
-/
-import Mathbin.Algebra.Order.Archimedean
-import Mathbin.Topology.Algebra.InfiniteSum.Basic
-import Mathbin.Topology.Algebra.Order.Field
-import Mathbin.Topology.Algebra.Order.MonotoneConvergence
+import Algebra.Order.Archimedean
+import Topology.Algebra.InfiniteSum.Basic
+import Topology.Algebra.Order.Field
+import Topology.Algebra.Order.MonotoneConvergence
#align_import topology.algebra.infinite_sum.order from "leanprover-community/mathlib"@"f47581155c818e6361af4e4fda60d27d020c226b"
@@ -71,7 +71,7 @@ theorem le_hasSum_of_le_sum (hf : HasSum f a) (h : ∀ s, a₂ ≤ ∑ i in s, f
#align le_has_sum_of_le_sum le_hasSum_of_le_sum
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (c «expr ∉ » set.range[set.range] e) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (c «expr ∉ » set.range[set.range] e) -/
#print hasSum_le_inj /-
theorem hasSum_le_inj {g : κ → α} (e : ι → κ) (he : Injective e)
(hs : ∀ (c) (_ : c ∉ Set.range e), 0 ≤ g c) (h : ∀ i, f i ≤ g (e i)) (hf : HasSum f a₁)
@@ -98,7 +98,7 @@ theorem hasSum_le_inj {g : κ → α} (e : ι → κ) (he : Injective e)
#align has_sum_le_inj hasSum_le_inj
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (c «expr ∉ » set.range[set.range] e) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (c «expr ∉ » set.range[set.range] e) -/
#print tsum_le_tsum_of_inj /-
theorem tsum_le_tsum_of_inj {g : κ → α} (e : ι → κ) (he : Injective e)
(hs : ∀ (c) (_ : c ∉ Set.range e), 0 ≤ g c) (h : ∀ i, f i ≤ g (e i)) (hf : Summable f)
@@ -107,7 +107,7 @@ theorem tsum_le_tsum_of_inj {g : κ → α} (e : ι → κ) (he : Injective e)
#align tsum_le_tsum_of_inj tsum_le_tsum_of_inj
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i «expr ∉ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (i «expr ∉ » s) -/
#print sum_le_hasSum /-
theorem sum_le_hasSum (s : Finset ι) (hs : ∀ (i) (_ : i ∉ s), 0 ≤ f i) (hf : HasSum f a) :
∑ i in s, f i ≤ a :=
@@ -124,7 +124,7 @@ theorem isLUB_hasSum (h : ∀ i, 0 ≤ f i) (hf : HasSum f a) :
#align is_lub_has_sum isLUB_hasSum
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (b' «expr ≠ » i) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (b' «expr ≠ » i) -/
#print le_hasSum /-
theorem le_hasSum (hf : HasSum f a) (i : ι) (hb : ∀ (b') (_ : b' ≠ i), 0 ≤ f b') : f i ≤ a :=
calc
@@ -133,7 +133,7 @@ theorem le_hasSum (hf : HasSum f a) (i : ι) (hb : ∀ (b') (_ : b' ≠ i), 0
#align le_has_sum le_hasSum
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i «expr ∉ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (i «expr ∉ » s) -/
#print sum_le_tsum /-
theorem sum_le_tsum {f : ι → α} (s : Finset ι) (hs : ∀ (i) (_ : i ∉ s), 0 ≤ f i) (hf : Summable f) :
∑ i in s, f i ≤ ∑' i, f i :=
@@ -141,7 +141,7 @@ theorem sum_le_tsum {f : ι → α} (s : Finset ι) (hs : ∀ (i) (_ : i ∉ s),
#align sum_le_tsum sum_le_tsum
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (b' «expr ≠ » i) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (b' «expr ≠ » i) -/
#print le_tsum /-
theorem le_tsum (hf : Summable f) (i : ι) (hb : ∀ (b') (_ : b' ≠ i), 0 ≤ f b') : f i ≤ ∑' i, f i :=
le_hasSum (Summable.hasSum hf) i hb
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -357,7 +357,7 @@ theorem summable_abs_iff [LinearOrderedAddCommGroup α] [UniformSpace α] [Unifo
#align summable_abs_iff summable_abs_iff
-/
-alias summable_abs_iff ↔ Summable.of_abs Summable.abs
+alias ⟨Summable.of_abs, Summable.abs⟩ := summable_abs_iff
#align summable.of_abs Summable.of_abs
#align summable.abs Summable.abs
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,17 +2,14 @@
Copyright (c) 2017 Johannes Hölzl. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl
-
-! This file was ported from Lean 3 source module topology.algebra.infinite_sum.order
-! leanprover-community/mathlib commit f47581155c818e6361af4e4fda60d27d020c226b
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Algebra.Order.Archimedean
import Mathbin.Topology.Algebra.InfiniteSum.Basic
import Mathbin.Topology.Algebra.Order.Field
import Mathbin.Topology.Algebra.Order.MonotoneConvergence
+#align_import topology.algebra.infinite_sum.order from "leanprover-community/mathlib"@"f47581155c818e6361af4e4fda60d27d020c226b"
+
/-!
# Infinite sum in an order
@@ -74,7 +71,7 @@ theorem le_hasSum_of_le_sum (hf : HasSum f a) (h : ∀ s, a₂ ≤ ∑ i in s, f
#align le_has_sum_of_le_sum le_hasSum_of_le_sum
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (c «expr ∉ » set.range[set.range] e) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (c «expr ∉ » set.range[set.range] e) -/
#print hasSum_le_inj /-
theorem hasSum_le_inj {g : κ → α} (e : ι → κ) (he : Injective e)
(hs : ∀ (c) (_ : c ∉ Set.range e), 0 ≤ g c) (h : ∀ i, f i ≤ g (e i)) (hf : HasSum f a₁)
@@ -101,7 +98,7 @@ theorem hasSum_le_inj {g : κ → α} (e : ι → κ) (he : Injective e)
#align has_sum_le_inj hasSum_le_inj
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (c «expr ∉ » set.range[set.range] e) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (c «expr ∉ » set.range[set.range] e) -/
#print tsum_le_tsum_of_inj /-
theorem tsum_le_tsum_of_inj {g : κ → α} (e : ι → κ) (he : Injective e)
(hs : ∀ (c) (_ : c ∉ Set.range e), 0 ≤ g c) (h : ∀ i, f i ≤ g (e i)) (hf : Summable f)
@@ -110,7 +107,7 @@ theorem tsum_le_tsum_of_inj {g : κ → α} (e : ι → κ) (he : Injective e)
#align tsum_le_tsum_of_inj tsum_le_tsum_of_inj
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (i «expr ∉ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i «expr ∉ » s) -/
#print sum_le_hasSum /-
theorem sum_le_hasSum (s : Finset ι) (hs : ∀ (i) (_ : i ∉ s), 0 ≤ f i) (hf : HasSum f a) :
∑ i in s, f i ≤ a :=
@@ -127,7 +124,7 @@ theorem isLUB_hasSum (h : ∀ i, 0 ≤ f i) (hf : HasSum f a) :
#align is_lub_has_sum isLUB_hasSum
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (b' «expr ≠ » i) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (b' «expr ≠ » i) -/
#print le_hasSum /-
theorem le_hasSum (hf : HasSum f a) (i : ι) (hb : ∀ (b') (_ : b' ≠ i), 0 ≤ f b') : f i ≤ a :=
calc
@@ -136,7 +133,7 @@ theorem le_hasSum (hf : HasSum f a) (i : ι) (hb : ∀ (b') (_ : b' ≠ i), 0
#align le_has_sum le_hasSum
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (i «expr ∉ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i «expr ∉ » s) -/
#print sum_le_tsum /-
theorem sum_le_tsum {f : ι → α} (s : Finset ι) (hs : ∀ (i) (_ : i ∉ s), 0 ≤ f i) (hf : Summable f) :
∑ i in s, f i ≤ ∑' i, f i :=
@@ -144,7 +141,7 @@ theorem sum_le_tsum {f : ι → α} (s : Finset ι) (hs : ∀ (i) (_ : i ∉ s),
#align sum_le_tsum sum_le_tsum
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (b' «expr ≠ » i) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (b' «expr ≠ » i) -/
#print le_tsum /-
theorem le_tsum (hf : Summable f) (i : ι) (hb : ∀ (b') (_ : b' ≠ i), 0 ≤ f b') : f i ≤ ∑' i, f i :=
le_hasSum (Summable.hasSum hf) i hb
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -75,6 +75,7 @@ theorem le_hasSum_of_le_sum (hf : HasSum f a) (h : ∀ s, a₂ ≤ ∑ i in s, f
-/
/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (c «expr ∉ » set.range[set.range] e) -/
+#print hasSum_le_inj /-
theorem hasSum_le_inj {g : κ → α} (e : ι → κ) (he : Injective e)
(hs : ∀ (c) (_ : c ∉ Set.range e), 0 ≤ g c) (h : ∀ i, f i ≤ g (e i)) (hf : HasSum f a₁)
(hg : HasSum g a₂) : a₁ ≤ a₂ :=
@@ -98,44 +99,57 @@ theorem hasSum_le_inj {g : κ → α} (e : ι → κ) (he : Injective e)
rw [this, Option.casesOn']
exact hs _ h
#align has_sum_le_inj hasSum_le_inj
+-/
/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (c «expr ∉ » set.range[set.range] e) -/
+#print tsum_le_tsum_of_inj /-
theorem tsum_le_tsum_of_inj {g : κ → α} (e : ι → κ) (he : Injective e)
(hs : ∀ (c) (_ : c ∉ Set.range e), 0 ≤ g c) (h : ∀ i, f i ≤ g (e i)) (hf : Summable f)
(hg : Summable g) : tsum f ≤ tsum g :=
hasSum_le_inj _ he hs h hf.HasSum hg.HasSum
#align tsum_le_tsum_of_inj tsum_le_tsum_of_inj
+-/
/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (i «expr ∉ » s) -/
+#print sum_le_hasSum /-
theorem sum_le_hasSum (s : Finset ι) (hs : ∀ (i) (_ : i ∉ s), 0 ≤ f i) (hf : HasSum f a) :
∑ i in s, f i ≤ a :=
ge_of_tendsto hf
(eventually_atTop.2
⟨s, fun t hst => sum_le_sum_of_subset_of_nonneg hst fun i hbt hbs => hs i hbs⟩)
#align sum_le_has_sum sum_le_hasSum
+-/
+#print isLUB_hasSum /-
theorem isLUB_hasSum (h : ∀ i, 0 ≤ f i) (hf : HasSum f a) :
IsLUB (Set.range fun s => ∑ i in s, f i) a :=
isLUB_of_tendsto_atTop (Finset.sum_mono_set_of_nonneg h) hf
#align is_lub_has_sum isLUB_hasSum
+-/
/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (b' «expr ≠ » i) -/
+#print le_hasSum /-
theorem le_hasSum (hf : HasSum f a) (i : ι) (hb : ∀ (b') (_ : b' ≠ i), 0 ≤ f b') : f i ≤ a :=
calc
f i = ∑ i in {i}, f i := Finset.sum_singleton.symm
_ ≤ a := sum_le_hasSum _ (by convert hb; simp) hf
#align le_has_sum le_hasSum
+-/
/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (i «expr ∉ » s) -/
+#print sum_le_tsum /-
theorem sum_le_tsum {f : ι → α} (s : Finset ι) (hs : ∀ (i) (_ : i ∉ s), 0 ≤ f i) (hf : Summable f) :
∑ i in s, f i ≤ ∑' i, f i :=
sum_le_hasSum s hs hf.HasSum
#align sum_le_tsum sum_le_tsum
+-/
/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (b' «expr ≠ » i) -/
+#print le_tsum /-
theorem le_tsum (hf : Summable f) (i : ι) (hb : ∀ (b') (_ : b' ≠ i), 0 ≤ f b') : f i ≤ ∑' i, f i :=
le_hasSum (Summable.hasSum hf) i hb
#align le_tsum le_tsum
+-/
#print tsum_le_tsum /-
theorem tsum_le_tsum (h : ∀ i, f i ≤ g i) (hf : Summable f) (hg : Summable g) :
@@ -157,6 +171,7 @@ theorem tsum_le_of_sum_le (hf : Summable f) (h : ∀ s, ∑ i in s, f i ≤ a₂
#align tsum_le_of_sum_le tsum_le_of_sum_le
-/
+#print tsum_le_of_sum_le' /-
theorem tsum_le_of_sum_le' (ha₂ : 0 ≤ a₂) (h : ∀ s, ∑ i in s, f i ≤ a₂) : ∑' i, f i ≤ a₂ :=
by
by_cases hf : Summable f
@@ -164,28 +179,37 @@ theorem tsum_le_of_sum_le' (ha₂ : 0 ≤ a₂) (h : ∀ s, ∑ i in s, f i ≤
· rw [tsum_eq_zero_of_not_summable hf]
exact ha₂
#align tsum_le_of_sum_le' tsum_le_of_sum_le'
+-/
+#print HasSum.nonneg /-
theorem HasSum.nonneg (h : ∀ i, 0 ≤ g i) (ha : HasSum g a) : 0 ≤ a :=
hasSum_le h hasSum_zero ha
#align has_sum.nonneg HasSum.nonneg
+-/
+#print HasSum.nonpos /-
theorem HasSum.nonpos (h : ∀ i, g i ≤ 0) (ha : HasSum g a) : a ≤ 0 :=
hasSum_le h ha hasSum_zero
#align has_sum.nonpos HasSum.nonpos
+-/
+#print tsum_nonneg /-
theorem tsum_nonneg (h : ∀ i, 0 ≤ g i) : 0 ≤ ∑' i, g i :=
by
by_cases hg : Summable g
· exact hg.has_sum.nonneg h
· simp [tsum_eq_zero_of_not_summable hg]
#align tsum_nonneg tsum_nonneg
+-/
+#print tsum_nonpos /-
theorem tsum_nonpos (h : ∀ i, f i ≤ 0) : ∑' i, f i ≤ 0 :=
by
by_cases hf : Summable f
· exact hf.has_sum.nonpos h
· simp [tsum_eq_zero_of_not_summable hf]
#align tsum_nonpos tsum_nonpos
+-/
end OrderedAddCommMonoid
@@ -194,12 +218,14 @@ section OrderedAddCommGroup
variable [OrderedAddCommGroup α] [TopologicalSpace α] [TopologicalAddGroup α]
[OrderClosedTopology α] {f g : ι → α} {a₁ a₂ : α} {i : ι}
+#print hasSum_lt /-
theorem hasSum_lt (h : f ≤ g) (hi : f i < g i) (hf : HasSum f a₁) (hg : HasSum g a₂) : a₁ < a₂ :=
by
have : update f i 0 ≤ update g i 0 := update_le_update_iff.mpr ⟨rfl.le, fun i _ => h i⟩
have : 0 - f i + a₁ ≤ 0 - g i + a₂ := hasSum_le this (hf.update i 0) (hg.update i 0)
simpa only [zero_sub, add_neg_cancel_left] using add_lt_add_of_lt_of_le hi this
#align has_sum_lt hasSum_lt
+-/
#print hasSum_strict_mono /-
@[mono]
@@ -209,10 +235,12 @@ theorem hasSum_strict_mono (hf : HasSum f a₁) (hg : HasSum g a₂) (h : f < g)
#align has_sum_strict_mono hasSum_strict_mono
-/
+#print tsum_lt_tsum /-
theorem tsum_lt_tsum (h : f ≤ g) (hi : f i < g i) (hf : Summable f) (hg : Summable g) :
∑' n, f n < ∑' n, g n :=
hasSum_lt h hi hf.HasSum hg.HasSum
#align tsum_lt_tsum tsum_lt_tsum
+-/
#print tsum_strict_mono /-
@[mono]
@@ -222,10 +250,13 @@ theorem tsum_strict_mono (hf : Summable f) (hg : Summable g) (h : f < g) : ∑'
#align tsum_strict_mono tsum_strict_mono
-/
+#print tsum_pos /-
theorem tsum_pos (hsum : Summable g) (hg : ∀ i, 0 ≤ g i) (i : ι) (hi : 0 < g i) : 0 < ∑' i, g i :=
by rw [← tsum_zero]; exact tsum_lt_tsum hg hi summable_zero hsum
#align tsum_pos tsum_pos
+-/
+#print hasSum_zero_iff_of_nonneg /-
theorem hasSum_zero_iff_of_nonneg (hf : ∀ i, 0 ≤ f i) : HasSum f 0 ↔ f = 0 :=
by
refine' ⟨fun hf' => _, _⟩
@@ -235,6 +266,7 @@ theorem hasSum_zero_iff_of_nonneg (hf : ∀ i, 0 ≤ f i) : HasSum f 0 ↔ f = 0
· rintro rfl
exact hasSum_zero
#align has_sum_zero_iff_of_nonneg hasSum_zero_iff_of_nonneg
+-/
end OrderedAddCommGroup
@@ -255,6 +287,7 @@ theorem le_tsum' (hf : Summable f) (i : ι) : f i ≤ ∑' i, f i :=
#align le_tsum' le_tsum'
-/
+#print hasSum_zero_iff /-
theorem hasSum_zero_iff : HasSum f 0 ↔ ∀ x, f x = 0 :=
by
refine' ⟨_, fun h => _⟩
@@ -263,14 +296,19 @@ theorem hasSum_zero_iff : HasSum f 0 ↔ ∀ x, f x = 0 :=
· convert hasSum_zero
exact funext h
#align has_sum_zero_iff hasSum_zero_iff
+-/
+#print tsum_eq_zero_iff /-
theorem tsum_eq_zero_iff (hf : Summable f) : ∑' i, f i = 0 ↔ ∀ x, f x = 0 := by
rw [← hasSum_zero_iff, hf.has_sum_iff]
#align tsum_eq_zero_iff tsum_eq_zero_iff
+-/
+#print tsum_ne_zero_iff /-
theorem tsum_ne_zero_iff (hf : Summable f) : ∑' i, f i ≠ 0 ↔ ∃ x, f x ≠ 0 := by
rw [Ne.def, tsum_eq_zero_iff hf, not_forall]
#align tsum_ne_zero_iff tsum_ne_zero_iff
+-/
#print isLUB_hasSum' /-
theorem isLUB_hasSum' (hf : HasSum f a) : IsLUB (Set.range fun s => ∑ i in s, f i) a :=
@@ -292,11 +330,13 @@ the existence of a least upper bound.
-/
+#print hasSum_of_isLUB_of_nonneg /-
theorem hasSum_of_isLUB_of_nonneg [LinearOrderedAddCommMonoid α] [TopologicalSpace α]
[OrderTopology α] {f : ι → α} (i : α) (h : ∀ i, 0 ≤ f i)
(hf : IsLUB (Set.range fun s => ∑ i in s, f i) i) : HasSum f i :=
tendsto_atTop_isLUB (Finset.sum_mono_set_of_nonneg h) hf
#align has_sum_of_is_lub_of_nonneg hasSum_of_isLUB_of_nonneg
+-/
#print hasSum_of_isLUB /-
theorem hasSum_of_isLUB [CanonicallyLinearOrderedAddMonoid α] [TopologicalSpace α] [OrderTopology α]
@@ -305,6 +345,7 @@ theorem hasSum_of_isLUB [CanonicallyLinearOrderedAddMonoid α] [TopologicalSpace
#align has_sum_of_is_lub hasSum_of_isLUB
-/
+#print summable_abs_iff /-
theorem summable_abs_iff [LinearOrderedAddCommGroup α] [UniformSpace α] [UniformAddGroup α]
[CompleteSpace α] {f : ι → α} : (Summable fun x => |f x|) ↔ Summable f :=
have h1 : ∀ x : {x | 0 ≤ f x}, |f x| = f x := fun x => abs_of_nonneg x.2
@@ -317,11 +358,13 @@ theorem summable_abs_iff [LinearOrderedAddCommGroup α] [UniformSpace α] [Unifo
simp only [h1, h2]
_ ↔ _ := by simp only [summable_neg_iff, summable_subtype_and_compl]
#align summable_abs_iff summable_abs_iff
+-/
alias summable_abs_iff ↔ Summable.of_abs Summable.abs
#align summable.of_abs Summable.of_abs
#align summable.abs Summable.abs
+#print Set.Finite.of_summable_const /-
--TODO: Change the conclusion to `finite ι`
theorem Set.Finite.of_summable_const [LinearOrderedAddCommGroup α] [TopologicalSpace α]
[Archimedean α] [OrderClosedTopology α] {b : α} (hb : 0 < b) (hf : Summable fun i : ι => b) :
@@ -338,9 +381,11 @@ theorem Set.Finite.of_summable_const [LinearOrderedAddCommGroup α] [Topological
haveI : Fintype ι := fintypeOfFinsetCardLe n this
exact Set.finite_univ
#align finite_of_summable_const Set.Finite.of_summable_const
+-/
end LinearOrder
+#print Summable.tendsto_atTop_of_pos /-
theorem Summable.tendsto_atTop_of_pos [LinearOrderedField α] [TopologicalSpace α] [OrderTopology α]
{f : ℕ → α} (hf : Summable f⁻¹) (hf' : ∀ n, 0 < f n) : Tendsto f atTop atTop :=
by
@@ -352,4 +397,5 @@ theorem Summable.tendsto_atTop_of_pos [LinearOrderedField α] [TopologicalSpace
rw [Set.mem_Ioi, inv_eq_one_div, one_div, Pi.inv_apply, _root_.inv_pos]
exact hf' _
#align summable.tendsto_top_of_pos Summable.tendsto_atTop_of_pos
+-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/a3e83f0fa4391c8740f7d773a7a9b74e311ae2a3
@@ -35,8 +35,8 @@ variable [Preorder α] [AddCommMonoid α] [TopologicalSpace α] [OrderClosedTopo
{f : ℕ → α} {c : α}
#print tsum_le_of_sum_range_le /-
-theorem tsum_le_of_sum_range_le (hf : Summable f) (h : ∀ n, (∑ i in range n, f i) ≤ c) :
- (∑' n, f n) ≤ c :=
+theorem tsum_le_of_sum_range_le (hf : Summable f) (h : ∀ n, ∑ i in range n, f i ≤ c) :
+ ∑' n, f n ≤ c :=
let ⟨l, hl⟩ := hf
hl.tsum_eq.symm ▸ le_of_tendsto' hl.tendsto_sum_nat h
#align tsum_le_of_sum_range_le tsum_le_of_sum_range_le
@@ -63,7 +63,7 @@ theorem hasSum_mono (hf : HasSum f a₁) (hg : HasSum g a₂) (h : f ≤ g) : a
-/
#print hasSum_le_of_sum_le /-
-theorem hasSum_le_of_sum_le (hf : HasSum f a) (h : ∀ s, (∑ i in s, f i) ≤ a₂) : a ≤ a₂ :=
+theorem hasSum_le_of_sum_le (hf : HasSum f a) (h : ∀ s, ∑ i in s, f i ≤ a₂) : a ≤ a₂ :=
le_of_tendsto' hf h
#align has_sum_le_of_sum_le hasSum_le_of_sum_le
-/
@@ -108,7 +108,7 @@ theorem tsum_le_tsum_of_inj {g : κ → α} (e : ι → κ) (he : Injective e)
/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (i «expr ∉ » s) -/
theorem sum_le_hasSum (s : Finset ι) (hs : ∀ (i) (_ : i ∉ s), 0 ≤ f i) (hf : HasSum f a) :
- (∑ i in s, f i) ≤ a :=
+ ∑ i in s, f i ≤ a :=
ge_of_tendsto hf
(eventually_atTop.2
⟨s, fun t hst => sum_le_sum_of_subset_of_nonneg hst fun i hbt hbs => hs i hbs⟩)
@@ -128,7 +128,7 @@ theorem le_hasSum (hf : HasSum f a) (i : ι) (hb : ∀ (b') (_ : b' ≠ i), 0
/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (i «expr ∉ » s) -/
theorem sum_le_tsum {f : ι → α} (s : Finset ι) (hs : ∀ (i) (_ : i ∉ s), 0 ≤ f i) (hf : Summable f) :
- (∑ i in s, f i) ≤ ∑' i, f i :=
+ ∑ i in s, f i ≤ ∑' i, f i :=
sum_le_hasSum s hs hf.HasSum
#align sum_le_tsum sum_le_tsum
@@ -139,25 +139,25 @@ theorem le_tsum (hf : Summable f) (i : ι) (hb : ∀ (b') (_ : b' ≠ i), 0 ≤
#print tsum_le_tsum /-
theorem tsum_le_tsum (h : ∀ i, f i ≤ g i) (hf : Summable f) (hg : Summable g) :
- (∑' i, f i) ≤ ∑' i, g i :=
+ ∑' i, f i ≤ ∑' i, g i :=
hasSum_le h hf.HasSum hg.HasSum
#align tsum_le_tsum tsum_le_tsum
-/
#print tsum_mono /-
@[mono]
-theorem tsum_mono (hf : Summable f) (hg : Summable g) (h : f ≤ g) : (∑' n, f n) ≤ ∑' n, g n :=
+theorem tsum_mono (hf : Summable f) (hg : Summable g) (h : f ≤ g) : ∑' n, f n ≤ ∑' n, g n :=
tsum_le_tsum h hf hg
#align tsum_mono tsum_mono
-/
#print tsum_le_of_sum_le /-
-theorem tsum_le_of_sum_le (hf : Summable f) (h : ∀ s, (∑ i in s, f i) ≤ a₂) : (∑' i, f i) ≤ a₂ :=
+theorem tsum_le_of_sum_le (hf : Summable f) (h : ∀ s, ∑ i in s, f i ≤ a₂) : ∑' i, f i ≤ a₂ :=
hasSum_le_of_sum_le hf.HasSum h
#align tsum_le_of_sum_le tsum_le_of_sum_le
-/
-theorem tsum_le_of_sum_le' (ha₂ : 0 ≤ a₂) (h : ∀ s, (∑ i in s, f i) ≤ a₂) : (∑' i, f i) ≤ a₂ :=
+theorem tsum_le_of_sum_le' (ha₂ : 0 ≤ a₂) (h : ∀ s, ∑ i in s, f i ≤ a₂) : ∑' i, f i ≤ a₂ :=
by
by_cases hf : Summable f
· exact tsum_le_of_sum_le hf h
@@ -180,7 +180,7 @@ theorem tsum_nonneg (h : ∀ i, 0 ≤ g i) : 0 ≤ ∑' i, g i :=
· simp [tsum_eq_zero_of_not_summable hg]
#align tsum_nonneg tsum_nonneg
-theorem tsum_nonpos (h : ∀ i, f i ≤ 0) : (∑' i, f i) ≤ 0 :=
+theorem tsum_nonpos (h : ∀ i, f i ≤ 0) : ∑' i, f i ≤ 0 :=
by
by_cases hf : Summable f
· exact hf.has_sum.nonpos h
@@ -210,14 +210,13 @@ theorem hasSum_strict_mono (hf : HasSum f a₁) (hg : HasSum g a₂) (h : f < g)
-/
theorem tsum_lt_tsum (h : f ≤ g) (hi : f i < g i) (hf : Summable f) (hg : Summable g) :
- (∑' n, f n) < ∑' n, g n :=
+ ∑' n, f n < ∑' n, g n :=
hasSum_lt h hi hf.HasSum hg.HasSum
#align tsum_lt_tsum tsum_lt_tsum
#print tsum_strict_mono /-
@[mono]
-theorem tsum_strict_mono (hf : Summable f) (hg : Summable g) (h : f < g) :
- (∑' n, f n) < ∑' n, g n :=
+theorem tsum_strict_mono (hf : Summable f) (hg : Summable g) (h : f < g) : ∑' n, f n < ∑' n, g n :=
let ⟨hle, i, hi⟩ := Pi.lt_def.mp h
tsum_lt_tsum hle hi hf hg
#align tsum_strict_mono tsum_strict_mono
@@ -265,11 +264,11 @@ theorem hasSum_zero_iff : HasSum f 0 ↔ ∀ x, f x = 0 :=
exact funext h
#align has_sum_zero_iff hasSum_zero_iff
-theorem tsum_eq_zero_iff (hf : Summable f) : (∑' i, f i) = 0 ↔ ∀ x, f x = 0 := by
+theorem tsum_eq_zero_iff (hf : Summable f) : ∑' i, f i = 0 ↔ ∀ x, f x = 0 := by
rw [← hasSum_zero_iff, hf.has_sum_iff]
#align tsum_eq_zero_iff tsum_eq_zero_iff
-theorem tsum_ne_zero_iff (hf : Summable f) : (∑' i, f i) ≠ 0 ↔ ∃ x, f x ≠ 0 := by
+theorem tsum_ne_zero_iff (hf : Summable f) : ∑' i, f i ≠ 0 ↔ ∃ x, f x ≠ 0 := by
rw [Ne.def, tsum_eq_zero_iff hf, not_forall]
#align tsum_ne_zero_iff tsum_ne_zero_iff
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -124,7 +124,6 @@ theorem le_hasSum (hf : HasSum f a) (i : ι) (hb : ∀ (b') (_ : b' ≠ i), 0
calc
f i = ∑ i in {i}, f i := Finset.sum_singleton.symm
_ ≤ a := sum_le_hasSum _ (by convert hb; simp) hf
-
#align le_has_sum le_hasSum
/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (i «expr ∉ » s) -/
@@ -318,7 +317,6 @@ theorem summable_abs_iff [LinearOrderedAddCommGroup α] [UniformSpace α] [Unifo
_ ↔ (Summable fun x : {x | 0 ≤ f x} => f x) ∧ Summable fun x : {x | 0 ≤ f x}ᶜ => -f x := by
simp only [h1, h2]
_ ↔ _ := by simp only [summable_neg_iff, summable_subtype_and_compl]
-
#align summable_abs_iff summable_abs_iff
alias summable_abs_iff ↔ Summable.of_abs Summable.abs
mathlib commit https://github.com/leanprover-community/mathlib/commit/31c24aa72e7b3e5ed97a8412470e904f82b81004
@@ -74,7 +74,7 @@ theorem le_hasSum_of_le_sum (hf : HasSum f a) (h : ∀ s, a₂ ≤ ∑ i in s, f
#align le_has_sum_of_le_sum le_hasSum_of_le_sum
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (c «expr ∉ » set.range[set.range] e) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (c «expr ∉ » set.range[set.range] e) -/
theorem hasSum_le_inj {g : κ → α} (e : ι → κ) (he : Injective e)
(hs : ∀ (c) (_ : c ∉ Set.range e), 0 ≤ g c) (h : ∀ i, f i ≤ g (e i)) (hf : HasSum f a₁)
(hg : HasSum g a₂) : a₁ ≤ a₂ :=
@@ -99,14 +99,14 @@ theorem hasSum_le_inj {g : κ → α} (e : ι → κ) (he : Injective e)
exact hs _ h
#align has_sum_le_inj hasSum_le_inj
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (c «expr ∉ » set.range[set.range] e) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (c «expr ∉ » set.range[set.range] e) -/
theorem tsum_le_tsum_of_inj {g : κ → α} (e : ι → κ) (he : Injective e)
(hs : ∀ (c) (_ : c ∉ Set.range e), 0 ≤ g c) (h : ∀ i, f i ≤ g (e i)) (hf : Summable f)
(hg : Summable g) : tsum f ≤ tsum g :=
hasSum_le_inj _ he hs h hf.HasSum hg.HasSum
#align tsum_le_tsum_of_inj tsum_le_tsum_of_inj
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i «expr ∉ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (i «expr ∉ » s) -/
theorem sum_le_hasSum (s : Finset ι) (hs : ∀ (i) (_ : i ∉ s), 0 ≤ f i) (hf : HasSum f a) :
(∑ i in s, f i) ≤ a :=
ge_of_tendsto hf
@@ -119,7 +119,7 @@ theorem isLUB_hasSum (h : ∀ i, 0 ≤ f i) (hf : HasSum f a) :
isLUB_of_tendsto_atTop (Finset.sum_mono_set_of_nonneg h) hf
#align is_lub_has_sum isLUB_hasSum
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (b' «expr ≠ » i) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (b' «expr ≠ » i) -/
theorem le_hasSum (hf : HasSum f a) (i : ι) (hb : ∀ (b') (_ : b' ≠ i), 0 ≤ f b') : f i ≤ a :=
calc
f i = ∑ i in {i}, f i := Finset.sum_singleton.symm
@@ -127,13 +127,13 @@ theorem le_hasSum (hf : HasSum f a) (i : ι) (hb : ∀ (b') (_ : b' ≠ i), 0
#align le_has_sum le_hasSum
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i «expr ∉ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (i «expr ∉ » s) -/
theorem sum_le_tsum {f : ι → α} (s : Finset ι) (hs : ∀ (i) (_ : i ∉ s), 0 ≤ f i) (hf : Summable f) :
(∑ i in s, f i) ≤ ∑' i, f i :=
sum_le_hasSum s hs hf.HasSum
#align sum_le_tsum sum_le_tsum
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (b' «expr ≠ » i) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (b' «expr ≠ » i) -/
theorem le_tsum (hf : Summable f) (i : ι) (hb : ∀ (b') (_ : b' ≠ i), 0 ≤ f b') : f i ≤ ∑' i, f i :=
le_hasSum (Summable.hasSum hf) i hb
#align le_tsum le_tsum
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -309,13 +309,13 @@ theorem hasSum_of_isLUB [CanonicallyLinearOrderedAddMonoid α] [TopologicalSpace
theorem summable_abs_iff [LinearOrderedAddCommGroup α] [UniformSpace α] [UniformAddGroup α]
[CompleteSpace α] {f : ι → α} : (Summable fun x => |f x|) ↔ Summable f :=
- have h1 : ∀ x : { x | 0 ≤ f x }, |f x| = f x := fun x => abs_of_nonneg x.2
- have h2 : ∀ x : { x | 0 ≤ f x }ᶜ, |f x| = -f x := fun x => abs_of_neg (not_le.1 x.2)
+ have h1 : ∀ x : {x | 0 ≤ f x}, |f x| = f x := fun x => abs_of_nonneg x.2
+ have h2 : ∀ x : {x | 0 ≤ f x}ᶜ, |f x| = -f x := fun x => abs_of_neg (not_le.1 x.2)
calc
(Summable fun x => |f x|) ↔
- (Summable fun x : { x | 0 ≤ f x } => |f x|) ∧ Summable fun x : { x | 0 ≤ f x }ᶜ => |f x| :=
+ (Summable fun x : {x | 0 ≤ f x} => |f x|) ∧ Summable fun x : {x | 0 ≤ f x}ᶜ => |f x| :=
summable_subtype_and_compl.symm
- _ ↔ (Summable fun x : { x | 0 ≤ f x } => f x) ∧ Summable fun x : { x | 0 ≤ f x }ᶜ => -f x := by
+ _ ↔ (Summable fun x : {x | 0 ≤ f x} => f x) ∧ Summable fun x : {x | 0 ≤ f x}ᶜ => -f x := by
simp only [h1, h2]
_ ↔ _ := by simp only [summable_neg_iff, summable_subtype_and_compl]
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -83,10 +83,10 @@ theorem hasSum_le_inj {g : κ → α} (e : ι → κ) (he : Injective e)
by
refine'
(hasSum_iff_hasSum_of_ne_zero_bij (e ∘ coe) (fun c₁ c₂ hc => he hc) (fun c hc => _) _).2 hf
- · rw [mem_support] at hc
- cases' eq : partial_inv e c with i <;> rw [Eq] at hc
+ · rw [mem_support] at hc
+ cases' eq : partial_inv e c with i <;> rw [Eq] at hc
· contradiction
- · rw [partial_inv_of_injective he] at eq
+ · rw [partial_inv_of_injective he] at eq
exact ⟨⟨i, hc⟩, Eq⟩
· rintro c
simp [partial_inv_left he, Option.casesOn']
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -25,7 +25,7 @@ This file provides lemmas about the interaction of infinite sums and order opera
open Finset Filter Function
-open BigOperators Classical
+open scoped BigOperators Classical
variable {ι κ α : Type _}
@@ -34,11 +34,13 @@ section Preorder
variable [Preorder α] [AddCommMonoid α] [TopologicalSpace α] [OrderClosedTopology α] [T2Space α]
{f : ℕ → α} {c : α}
+#print tsum_le_of_sum_range_le /-
theorem tsum_le_of_sum_range_le (hf : Summable f) (h : ∀ n, (∑ i in range n, f i) ≤ c) :
(∑' n, f n) ≤ c :=
let ⟨l, hl⟩ := hf
hl.tsum_eq.symm ▸ le_of_tendsto' hl.tendsto_sum_nat h
#align tsum_le_of_sum_range_le tsum_le_of_sum_range_le
+-/
end Preorder
@@ -47,22 +49,30 @@ section OrderedAddCommMonoid
variable [OrderedAddCommMonoid α] [TopologicalSpace α] [OrderClosedTopology α] {f g : ι → α}
{a a₁ a₂ : α}
+#print hasSum_le /-
theorem hasSum_le (h : ∀ i, f i ≤ g i) (hf : HasSum f a₁) (hg : HasSum g a₂) : a₁ ≤ a₂ :=
le_of_tendsto_of_tendsto' hf hg fun s => sum_le_sum fun i _ => h i
#align has_sum_le hasSum_le
+-/
+#print hasSum_mono /-
@[mono]
theorem hasSum_mono (hf : HasSum f a₁) (hg : HasSum g a₂) (h : f ≤ g) : a₁ ≤ a₂ :=
hasSum_le h hf hg
#align has_sum_mono hasSum_mono
+-/
+#print hasSum_le_of_sum_le /-
theorem hasSum_le_of_sum_le (hf : HasSum f a) (h : ∀ s, (∑ i in s, f i) ≤ a₂) : a ≤ a₂ :=
le_of_tendsto' hf h
#align has_sum_le_of_sum_le hasSum_le_of_sum_le
+-/
+#print le_hasSum_of_le_sum /-
theorem le_hasSum_of_le_sum (hf : HasSum f a) (h : ∀ s, a₂ ≤ ∑ i in s, f i) : a₂ ≤ a :=
ge_of_tendsto' hf h
#align le_has_sum_of_le_sum le_hasSum_of_le_sum
+-/
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (c «expr ∉ » set.range[set.range] e) -/
theorem hasSum_le_inj {g : κ → α} (e : ι → κ) (he : Injective e)
@@ -128,19 +138,25 @@ theorem le_tsum (hf : Summable f) (i : ι) (hb : ∀ (b') (_ : b' ≠ i), 0 ≤
le_hasSum (Summable.hasSum hf) i hb
#align le_tsum le_tsum
+#print tsum_le_tsum /-
theorem tsum_le_tsum (h : ∀ i, f i ≤ g i) (hf : Summable f) (hg : Summable g) :
(∑' i, f i) ≤ ∑' i, g i :=
hasSum_le h hf.HasSum hg.HasSum
#align tsum_le_tsum tsum_le_tsum
+-/
+#print tsum_mono /-
@[mono]
theorem tsum_mono (hf : Summable f) (hg : Summable g) (h : f ≤ g) : (∑' n, f n) ≤ ∑' n, g n :=
tsum_le_tsum h hf hg
#align tsum_mono tsum_mono
+-/
+#print tsum_le_of_sum_le /-
theorem tsum_le_of_sum_le (hf : Summable f) (h : ∀ s, (∑ i in s, f i) ≤ a₂) : (∑' i, f i) ≤ a₂ :=
hasSum_le_of_sum_le hf.HasSum h
#align tsum_le_of_sum_le tsum_le_of_sum_le
+-/
theorem tsum_le_of_sum_le' (ha₂ : 0 ≤ a₂) (h : ∀ s, (∑ i in s, f i) ≤ a₂) : (∑' i, f i) ≤ a₂ :=
by
@@ -186,23 +202,27 @@ theorem hasSum_lt (h : f ≤ g) (hi : f i < g i) (hf : HasSum f a₁) (hg : HasS
simpa only [zero_sub, add_neg_cancel_left] using add_lt_add_of_lt_of_le hi this
#align has_sum_lt hasSum_lt
+#print hasSum_strict_mono /-
@[mono]
theorem hasSum_strict_mono (hf : HasSum f a₁) (hg : HasSum g a₂) (h : f < g) : a₁ < a₂ :=
let ⟨hle, i, hi⟩ := Pi.lt_def.mp h
hasSum_lt hle hi hf hg
#align has_sum_strict_mono hasSum_strict_mono
+-/
theorem tsum_lt_tsum (h : f ≤ g) (hi : f i < g i) (hf : Summable f) (hg : Summable g) :
(∑' n, f n) < ∑' n, g n :=
hasSum_lt h hi hf.HasSum hg.HasSum
#align tsum_lt_tsum tsum_lt_tsum
+#print tsum_strict_mono /-
@[mono]
theorem tsum_strict_mono (hf : Summable f) (hg : Summable g) (h : f < g) :
(∑' n, f n) < ∑' n, g n :=
let ⟨hle, i, hi⟩ := Pi.lt_def.mp h
tsum_lt_tsum hle hi hf hg
#align tsum_strict_mono tsum_strict_mono
+-/
theorem tsum_pos (hsum : Summable g) (hg : ∀ i, 0 ≤ g i) (i : ι) (hi : 0 < g i) : 0 < ∑' i, g i :=
by rw [← tsum_zero]; exact tsum_lt_tsum hg hi summable_zero hsum
@@ -225,13 +245,17 @@ section CanonicallyOrderedAddMonoid
variable [CanonicallyOrderedAddMonoid α] [TopologicalSpace α] [OrderClosedTopology α] {f : ι → α}
{a : α}
+#print le_hasSum' /-
theorem le_hasSum' (hf : HasSum f a) (i : ι) : f i ≤ a :=
le_hasSum hf i fun _ _ => zero_le _
#align le_has_sum' le_hasSum'
+-/
+#print le_tsum' /-
theorem le_tsum' (hf : Summable f) (i : ι) : f i ≤ ∑' i, f i :=
le_tsum hf i fun _ _ => zero_le _
#align le_tsum' le_tsum'
+-/
theorem hasSum_zero_iff : HasSum f 0 ↔ ∀ x, f x = 0 :=
by
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -34,12 +34,6 @@ section Preorder
variable [Preorder α] [AddCommMonoid α] [TopologicalSpace α] [OrderClosedTopology α] [T2Space α]
{f : ℕ → α} {c : α}
-/- warning: tsum_le_of_sum_range_le -> tsum_le_of_sum_range_le is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] [_inst_2 : AddCommMonoid.{u1} α] [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : OrderClosedTopology.{u1} α _inst_3 _inst_1] [_inst_5 : T2Space.{u1} α _inst_3] {f : Nat -> α} {c : α}, (Summable.{u1, 0} α Nat _inst_2 _inst_3 f) -> (forall (n : Nat), LE.le.{u1} α (Preorder.toHasLe.{u1} α _inst_1) (Finset.sum.{u1, 0} α Nat _inst_2 (Finset.range n) (fun (i : Nat) => f i)) c) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α _inst_1) (tsum.{u1, 0} α _inst_2 _inst_3 Nat (fun (n : Nat) => f n)) c)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] [_inst_2 : AddCommMonoid.{u1} α] [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : OrderClosedTopology.{u1} α _inst_3 _inst_1] [_inst_5 : T2Space.{u1} α _inst_3] {f : Nat -> α} {c : α}, (Summable.{u1, 0} α Nat _inst_2 _inst_3 f) -> (forall (n : Nat), LE.le.{u1} α (Preorder.toLE.{u1} α _inst_1) (Finset.sum.{u1, 0} α Nat _inst_2 (Finset.range n) (fun (i : Nat) => f i)) c) -> (LE.le.{u1} α (Preorder.toLE.{u1} α _inst_1) (tsum.{u1, 0} α _inst_2 _inst_3 Nat (fun (n : Nat) => f n)) c)
-Case conversion may be inaccurate. Consider using '#align tsum_le_of_sum_range_le tsum_le_of_sum_range_leₓ'. -/
theorem tsum_le_of_sum_range_le (hf : Summable f) (h : ∀ n, (∑ i in range n, f i) ≤ c) :
(∑' n, f n) ≤ c :=
let ⟨l, hl⟩ := hf
@@ -53,53 +47,23 @@ section OrderedAddCommMonoid
variable [OrderedAddCommMonoid α] [TopologicalSpace α] [OrderClosedTopology α] {f g : ι → α}
{a a₁ a₂ : α}
-/- warning: has_sum_le -> hasSum_le is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {g : ι -> α} {a₁ : α} {a₂ : α}, (forall (i : ι), LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (f i) (g i)) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a₁) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 g a₂) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) a₁ a₂)
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {g : ι -> α} {a₁ : α} {a₂ : α}, (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (f i) (g i)) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a₁) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 g a₂) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) a₁ a₂)
-Case conversion may be inaccurate. Consider using '#align has_sum_le hasSum_leₓ'. -/
theorem hasSum_le (h : ∀ i, f i ≤ g i) (hf : HasSum f a₁) (hg : HasSum g a₂) : a₁ ≤ a₂ :=
le_of_tendsto_of_tendsto' hf hg fun s => sum_le_sum fun i _ => h i
#align has_sum_le hasSum_le
-/- warning: has_sum_mono -> hasSum_mono is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {g : ι -> α} {a₁ : α} {a₂ : α}, (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a₁) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 g a₂) -> (LE.le.{max u1 u2} (ι -> α) (Pi.hasLe.{u1, u2} ι (fun (ᾰ : ι) => α) (fun (i : ι) => Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1)))) f g) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) a₁ a₂)
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {g : ι -> α} {a₁ : α} {a₂ : α}, (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a₁) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 g a₂) -> (LE.le.{max u1 u2} (ι -> α) (Pi.hasLe.{u1, u2} ι (fun (ᾰ : ι) => α) (fun (i : ι) => Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1)))) f g) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) a₁ a₂)
-Case conversion may be inaccurate. Consider using '#align has_sum_mono hasSum_monoₓ'. -/
@[mono]
theorem hasSum_mono (hf : HasSum f a₁) (hg : HasSum g a₂) (h : f ≤ g) : a₁ ≤ a₂ :=
hasSum_le h hf hg
#align has_sum_mono hasSum_mono
-/- warning: has_sum_le_of_sum_le -> hasSum_le_of_sum_le is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a : α} {a₂ : α}, (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a) -> (forall (s : Finset.{u1} ι), LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i)) a₂) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) a a₂)
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a : α} {a₂ : α}, (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a) -> (forall (s : Finset.{u1} ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i)) a₂) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) a a₂)
-Case conversion may be inaccurate. Consider using '#align has_sum_le_of_sum_le hasSum_le_of_sum_leₓ'. -/
theorem hasSum_le_of_sum_le (hf : HasSum f a) (h : ∀ s, (∑ i in s, f i) ≤ a₂) : a ≤ a₂ :=
le_of_tendsto' hf h
#align has_sum_le_of_sum_le hasSum_le_of_sum_le
-/- warning: le_has_sum_of_le_sum -> le_hasSum_of_le_sum is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a : α} {a₂ : α}, (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a) -> (forall (s : Finset.{u1} ι), LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) a₂ (Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i))) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) a₂ a)
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a : α} {a₂ : α}, (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a) -> (forall (s : Finset.{u1} ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) a₂ (Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i))) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) a₂ a)
-Case conversion may be inaccurate. Consider using '#align le_has_sum_of_le_sum le_hasSum_of_le_sumₓ'. -/
theorem le_hasSum_of_le_sum (hf : HasSum f a) (h : ∀ s, a₂ ≤ ∑ i in s, f i) : a₂ ≤ a :=
ge_of_tendsto' hf h
#align le_has_sum_of_le_sum le_hasSum_of_le_sum
-/- warning: has_sum_le_inj -> hasSum_le_inj is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {κ : Type.{u2}} {α : Type.{u3}} [_inst_1 : OrderedAddCommMonoid.{u3} α] [_inst_2 : TopologicalSpace.{u3} α] [_inst_3 : OrderClosedTopology.{u3} α _inst_2 (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))] {f : ι -> α} {a₁ : α} {a₂ : α} {g : κ -> α} (e : ι -> κ), (Function.Injective.{succ u1, succ u2} ι κ e) -> (forall (c : κ), (Not (Membership.Mem.{u2, u2} κ (Set.{u2} κ) (Set.hasMem.{u2} κ) c (Set.range.{u2, succ u1} κ ι e))) -> (LE.le.{u3} α (Preorder.toHasLe.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))) (OfNat.ofNat.{u3} α 0 (OfNat.mk.{u3} α 0 (Zero.zero.{u3} α (AddZeroClass.toHasZero.{u3} α (AddMonoid.toAddZeroClass.{u3} α (AddCommMonoid.toAddMonoid.{u3} α (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1))))))) (g c))) -> (forall (i : ι), LE.le.{u3} α (Preorder.toHasLe.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))) (f i) (g (e i))) -> (HasSum.{u3, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1) _inst_2 f a₁) -> (HasSum.{u3, u2} α κ (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1) _inst_2 g a₂) -> (LE.le.{u3} α (Preorder.toHasLe.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))) a₁ a₂)
-but is expected to have type
- forall {ι : Type.{u3}} {κ : Type.{u2}} {α : Type.{u1}} [_inst_1 : OrderedAddCommMonoid.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : OrderClosedTopology.{u1} α _inst_2 (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))] {f : ι -> α} {a₁ : α} {a₂ : α} {g : κ -> α} (e : ι -> κ), (Function.Injective.{succ u3, succ u2} ι κ e) -> (forall (c : κ), (Not (Membership.mem.{u2, u2} κ (Set.{u2} κ) (Set.instMembershipSet.{u2} κ) c (Set.range.{u2, succ u3} κ ι e))) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (AddMonoid.toZero.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1))))) (g c))) -> (forall (i : ι), LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))) (f i) (g (e i))) -> (HasSum.{u1, u3} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) _inst_2 f a₁) -> (HasSum.{u1, u2} α κ (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) _inst_2 g a₂) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))) a₁ a₂)
-Case conversion may be inaccurate. Consider using '#align has_sum_le_inj hasSum_le_injₓ'. -/
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (c «expr ∉ » set.range[set.range] e) -/
theorem hasSum_le_inj {g : κ → α} (e : ι → κ) (he : Injective e)
(hs : ∀ (c) (_ : c ∉ Set.range e), 0 ≤ g c) (h : ∀ i, f i ≤ g (e i)) (hf : HasSum f a₁)
@@ -125,12 +89,6 @@ theorem hasSum_le_inj {g : κ → α} (e : ι → κ) (he : Injective e)
exact hs _ h
#align has_sum_le_inj hasSum_le_inj
-/- warning: tsum_le_tsum_of_inj -> tsum_le_tsum_of_inj is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {κ : Type.{u2}} {α : Type.{u3}} [_inst_1 : OrderedAddCommMonoid.{u3} α] [_inst_2 : TopologicalSpace.{u3} α] [_inst_3 : OrderClosedTopology.{u3} α _inst_2 (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))] {f : ι -> α} {g : κ -> α} (e : ι -> κ), (Function.Injective.{succ u1, succ u2} ι κ e) -> (forall (c : κ), (Not (Membership.Mem.{u2, u2} κ (Set.{u2} κ) (Set.hasMem.{u2} κ) c (Set.range.{u2, succ u1} κ ι e))) -> (LE.le.{u3} α (Preorder.toHasLe.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))) (OfNat.ofNat.{u3} α 0 (OfNat.mk.{u3} α 0 (Zero.zero.{u3} α (AddZeroClass.toHasZero.{u3} α (AddMonoid.toAddZeroClass.{u3} α (AddCommMonoid.toAddMonoid.{u3} α (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1))))))) (g c))) -> (forall (i : ι), LE.le.{u3} α (Preorder.toHasLe.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))) (f i) (g (e i))) -> (Summable.{u3, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1) _inst_2 f) -> (Summable.{u3, u2} α κ (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1) _inst_2 g) -> (LE.le.{u3} α (Preorder.toHasLe.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))) (tsum.{u3, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1) _inst_2 ι f) (tsum.{u3, u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1) _inst_2 κ g))
-but is expected to have type
- forall {ι : Type.{u3}} {κ : Type.{u2}} {α : Type.{u1}} [_inst_1 : OrderedAddCommMonoid.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : OrderClosedTopology.{u1} α _inst_2 (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))] {f : ι -> α} {g : κ -> α} (e : ι -> κ), (Function.Injective.{succ u3, succ u2} ι κ e) -> (forall (c : κ), (Not (Membership.mem.{u2, u2} κ (Set.{u2} κ) (Set.instMembershipSet.{u2} κ) c (Set.range.{u2, succ u3} κ ι e))) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (AddMonoid.toZero.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1))))) (g c))) -> (forall (i : ι), LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))) (f i) (g (e i))) -> (Summable.{u1, u3} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) _inst_2 f) -> (Summable.{u1, u2} α κ (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) _inst_2 g) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))) (tsum.{u1, u3} α (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) _inst_2 ι f) (tsum.{u1, u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) _inst_2 κ g))
-Case conversion may be inaccurate. Consider using '#align tsum_le_tsum_of_inj tsum_le_tsum_of_injₓ'. -/
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (c «expr ∉ » set.range[set.range] e) -/
theorem tsum_le_tsum_of_inj {g : κ → α} (e : ι → κ) (he : Injective e)
(hs : ∀ (c) (_ : c ∉ Set.range e), 0 ≤ g c) (h : ∀ i, f i ≤ g (e i)) (hf : Summable f)
@@ -138,12 +96,6 @@ theorem tsum_le_tsum_of_inj {g : κ → α} (e : ι → κ) (he : Injective e)
hasSum_le_inj _ he hs h hf.HasSum hg.HasSum
#align tsum_le_tsum_of_inj tsum_le_tsum_of_inj
-/- warning: sum_le_has_sum -> sum_le_hasSum is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a : α} (s : Finset.{u1} ι), (forall (i : ι), (Not (Membership.Mem.{u1, u1} ι (Finset.{u1} ι) (Finset.hasMem.{u1} ι) i s)) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) (f i))) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i)) a)
-but is expected to have type
- forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : OrderedAddCommMonoid.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : OrderClosedTopology.{u1} α _inst_2 (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))] {f : ι -> α} {a : α} (s : Finset.{u2} ι), (forall (i : ι), (Not (Membership.mem.{u2, u2} ι (Finset.{u2} ι) (Finset.instMembershipFinset.{u2} ι) i s)) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (AddMonoid.toZero.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1))))) (f i))) -> (HasSum.{u1, u2} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) _inst_2 f a) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))) (Finset.sum.{u1, u2} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) s (fun (i : ι) => f i)) a)
-Case conversion may be inaccurate. Consider using '#align sum_le_has_sum sum_le_hasSumₓ'. -/
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i «expr ∉ » s) -/
theorem sum_le_hasSum (s : Finset ι) (hs : ∀ (i) (_ : i ∉ s), 0 ≤ f i) (hf : HasSum f a) :
(∑ i in s, f i) ≤ a :=
@@ -152,23 +104,11 @@ theorem sum_le_hasSum (s : Finset ι) (hs : ∀ (i) (_ : i ∉ s), 0 ≤ f i) (h
⟨s, fun t hst => sum_le_sum_of_subset_of_nonneg hst fun i hbt hbs => hs i hbs⟩)
#align sum_le_has_sum sum_le_hasSum
-/- warning: is_lub_has_sum -> isLUB_hasSum is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a : α}, (forall (i : ι), LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) (f i)) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a) -> (IsLUB.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1)) (Set.range.{u2, succ u1} α (Finset.{u1} ι) (fun (s : Finset.{u1} ι) => Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i))) a)
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a : α}, (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))) (f i)) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a) -> (IsLUB.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1)) (Set.range.{u2, succ u1} α (Finset.{u1} ι) (fun (s : Finset.{u1} ι) => Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i))) a)
-Case conversion may be inaccurate. Consider using '#align is_lub_has_sum isLUB_hasSumₓ'. -/
theorem isLUB_hasSum (h : ∀ i, 0 ≤ f i) (hf : HasSum f a) :
IsLUB (Set.range fun s => ∑ i in s, f i) a :=
isLUB_of_tendsto_atTop (Finset.sum_mono_set_of_nonneg h) hf
#align is_lub_has_sum isLUB_hasSum
-/- warning: le_has_sum -> le_hasSum is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a : α}, (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a) -> (forall (i : ι), (forall (b' : ι), (Ne.{succ u1} ι b' i) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) (f b'))) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (f i) a))
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a : α}, (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a) -> (forall (i : ι), (forall (b' : ι), (Ne.{succ u1} ι b' i) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))) (f b'))) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (f i) a))
-Case conversion may be inaccurate. Consider using '#align le_has_sum le_hasSumₓ'. -/
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (b' «expr ≠ » i) -/
theorem le_hasSum (hf : HasSum f a) (i : ι) (hb : ∀ (b') (_ : b' ≠ i), 0 ≤ f b') : f i ≤ a :=
calc
@@ -177,67 +117,31 @@ theorem le_hasSum (hf : HasSum f a) (i : ι) (hb : ∀ (b') (_ : b' ≠ i), 0
#align le_has_sum le_hasSum
-/- warning: sum_le_tsum -> sum_le_tsum is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} (s : Finset.{u1} ι), (forall (i : ι), (Not (Membership.Mem.{u1, u1} ι (Finset.{u1} ι) (Finset.hasMem.{u1} ι) i s)) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) (f i))) -> (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i)) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i)))
-but is expected to have type
- forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : OrderedAddCommMonoid.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : OrderClosedTopology.{u1} α _inst_2 (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))] {f : ι -> α} (s : Finset.{u2} ι), (forall (i : ι), (Not (Membership.mem.{u2, u2} ι (Finset.{u2} ι) (Finset.instMembershipFinset.{u2} ι) i s)) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (AddMonoid.toZero.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1))))) (f i))) -> (Summable.{u1, u2} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) _inst_2 f) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))) (Finset.sum.{u1, u2} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) s (fun (i : ι) => f i)) (tsum.{u1, u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) _inst_2 ι (fun (i : ι) => f i)))
-Case conversion may be inaccurate. Consider using '#align sum_le_tsum sum_le_tsumₓ'. -/
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i «expr ∉ » s) -/
theorem sum_le_tsum {f : ι → α} (s : Finset ι) (hs : ∀ (i) (_ : i ∉ s), 0 ≤ f i) (hf : Summable f) :
(∑ i in s, f i) ≤ ∑' i, f i :=
sum_le_hasSum s hs hf.HasSum
#align sum_le_tsum sum_le_tsum
-/- warning: le_tsum -> le_tsum is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α}, (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f) -> (forall (i : ι), (forall (b' : ι), (Ne.{succ u1} ι b' i) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) (f b'))) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (f i) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i))))
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α}, (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f) -> (forall (i : ι), (forall (b' : ι), (Ne.{succ u1} ι b' i) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))) (f b'))) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (f i) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i))))
-Case conversion may be inaccurate. Consider using '#align le_tsum le_tsumₓ'. -/
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (b' «expr ≠ » i) -/
theorem le_tsum (hf : Summable f) (i : ι) (hb : ∀ (b') (_ : b' ≠ i), 0 ≤ f b') : f i ≤ ∑' i, f i :=
le_hasSum (Summable.hasSum hf) i hb
#align le_tsum le_tsum
-/- warning: tsum_le_tsum -> tsum_le_tsum is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {g : ι -> α}, (forall (i : ι), LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (f i) (g i)) -> (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f) -> (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 g) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i)) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => g i)))
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {g : ι -> α}, (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (f i) (g i)) -> (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f) -> (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 g) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i)) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => g i)))
-Case conversion may be inaccurate. Consider using '#align tsum_le_tsum tsum_le_tsumₓ'. -/
theorem tsum_le_tsum (h : ∀ i, f i ≤ g i) (hf : Summable f) (hg : Summable g) :
(∑' i, f i) ≤ ∑' i, g i :=
hasSum_le h hf.HasSum hg.HasSum
#align tsum_le_tsum tsum_le_tsum
-/- warning: tsum_mono -> tsum_mono is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {g : ι -> α}, (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f) -> (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 g) -> (LE.le.{max u1 u2} (ι -> α) (Pi.hasLe.{u1, u2} ι (fun (ᾰ : ι) => α) (fun (i : ι) => Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1)))) f g) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (n : ι) => f n)) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (n : ι) => g n)))
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {g : ι -> α}, (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f) -> (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 g) -> (LE.le.{max u1 u2} (ι -> α) (Pi.hasLe.{u1, u2} ι (fun (ᾰ : ι) => α) (fun (i : ι) => Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1)))) f g) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (n : ι) => f n)) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (n : ι) => g n)))
-Case conversion may be inaccurate. Consider using '#align tsum_mono tsum_monoₓ'. -/
@[mono]
theorem tsum_mono (hf : Summable f) (hg : Summable g) (h : f ≤ g) : (∑' n, f n) ≤ ∑' n, g n :=
tsum_le_tsum h hf hg
#align tsum_mono tsum_mono
-/- warning: tsum_le_of_sum_le -> tsum_le_of_sum_le is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a₂ : α}, (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f) -> (forall (s : Finset.{u1} ι), LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i)) a₂) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i)) a₂)
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a₂ : α}, (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f) -> (forall (s : Finset.{u1} ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i)) a₂) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i)) a₂)
-Case conversion may be inaccurate. Consider using '#align tsum_le_of_sum_le tsum_le_of_sum_leₓ'. -/
theorem tsum_le_of_sum_le (hf : Summable f) (h : ∀ s, (∑ i in s, f i) ≤ a₂) : (∑' i, f i) ≤ a₂ :=
hasSum_le_of_sum_le hf.HasSum h
#align tsum_le_of_sum_le tsum_le_of_sum_le
-/- warning: tsum_le_of_sum_le' -> tsum_le_of_sum_le' is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a₂ : α}, (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) a₂) -> (forall (s : Finset.{u1} ι), LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i)) a₂) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i)) a₂)
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a₂ : α}, (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))) a₂) -> (forall (s : Finset.{u1} ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i)) a₂) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i)) a₂)
-Case conversion may be inaccurate. Consider using '#align tsum_le_of_sum_le' tsum_le_of_sum_le'ₓ'. -/
theorem tsum_le_of_sum_le' (ha₂ : 0 ≤ a₂) (h : ∀ s, (∑ i in s, f i) ≤ a₂) : (∑' i, f i) ≤ a₂ :=
by
by_cases hf : Summable f
@@ -246,32 +150,14 @@ theorem tsum_le_of_sum_le' (ha₂ : 0 ≤ a₂) (h : ∀ s, (∑ i in s, f i)
exact ha₂
#align tsum_le_of_sum_le' tsum_le_of_sum_le'
-/- warning: has_sum.nonneg -> HasSum.nonneg is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {g : ι -> α} {a : α}, (forall (i : ι), LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) (g i)) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 g a) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) a)
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {g : ι -> α} {a : α}, (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))) (g i)) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 g a) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))) a)
-Case conversion may be inaccurate. Consider using '#align has_sum.nonneg HasSum.nonnegₓ'. -/
theorem HasSum.nonneg (h : ∀ i, 0 ≤ g i) (ha : HasSum g a) : 0 ≤ a :=
hasSum_le h hasSum_zero ha
#align has_sum.nonneg HasSum.nonneg
-/- warning: has_sum.nonpos -> HasSum.nonpos is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {g : ι -> α} {a : α}, (forall (i : ι), LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (g i) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1)))))))) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 g a) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) a (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))))
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {g : ι -> α} {a : α}, (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (g i) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1)))))) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 g a) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) a (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))
-Case conversion may be inaccurate. Consider using '#align has_sum.nonpos HasSum.nonposₓ'. -/
theorem HasSum.nonpos (h : ∀ i, g i ≤ 0) (ha : HasSum g a) : a ≤ 0 :=
hasSum_le h ha hasSum_zero
#align has_sum.nonpos HasSum.nonpos
-/- warning: tsum_nonneg -> tsum_nonneg is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {g : ι -> α}, (forall (i : ι), LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) (g i)) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => g i)))
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {g : ι -> α}, (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))) (g i)) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => g i)))
-Case conversion may be inaccurate. Consider using '#align tsum_nonneg tsum_nonnegₓ'. -/
theorem tsum_nonneg (h : ∀ i, 0 ≤ g i) : 0 ≤ ∑' i, g i :=
by
by_cases hg : Summable g
@@ -279,12 +165,6 @@ theorem tsum_nonneg (h : ∀ i, 0 ≤ g i) : 0 ≤ ∑' i, g i :=
· simp [tsum_eq_zero_of_not_summable hg]
#align tsum_nonneg tsum_nonneg
-/- warning: tsum_nonpos -> tsum_nonpos is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α}, (forall (i : ι), LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (f i) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1)))))))) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i)) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))))
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α}, (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (f i) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1)))))) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i)) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))
-Case conversion may be inaccurate. Consider using '#align tsum_nonpos tsum_nonposₓ'. -/
theorem tsum_nonpos (h : ∀ i, f i ≤ 0) : (∑' i, f i) ≤ 0 :=
by
by_cases hf : Summable f
@@ -299,12 +179,6 @@ section OrderedAddCommGroup
variable [OrderedAddCommGroup α] [TopologicalSpace α] [TopologicalAddGroup α]
[OrderClosedTopology α] {f g : ι → α} {a₁ a₂ : α} {i : ι}
-/- warning: has_sum_lt -> hasSum_lt is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : TopologicalAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {g : ι -> α} {a₁ : α} {a₂ : α} {i : ι}, (LE.le.{max u1 u2} (ι -> α) (Pi.hasLe.{u1, u2} ι (fun (ᾰ : ι) => α) (fun (i : ι) => Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1)))) f g) -> (LT.lt.{u2} α (Preorder.toHasLt.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (f i) (g i)) -> (HasSum.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 f a₁) -> (HasSum.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 g a₂) -> (LT.lt.{u2} α (Preorder.toHasLt.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) a₁ a₂)
-but is expected to have type
- forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : OrderedAddCommGroup.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : TopologicalAddGroup.{u1} α _inst_2 (AddCommGroup.toAddGroup.{u1} α (OrderedAddCommGroup.toAddCommGroup.{u1} α _inst_1))] [_inst_4 : OrderClosedTopology.{u1} α _inst_2 (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α _inst_1))] {f : ι -> α} {g : ι -> α} {a₁ : α} {a₂ : α} {i : ι}, (LE.le.{max u2 u1} (ι -> α) (Pi.hasLe.{u2, u1} ι (fun (ᾰ : ι) => α) (fun (i : ι) => Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α _inst_1)))) f g) -> (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α _inst_1))) (f i) (g i)) -> (HasSum.{u1, u2} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u1} α _inst_1)) _inst_2 f a₁) -> (HasSum.{u1, u2} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u1} α _inst_1)) _inst_2 g a₂) -> (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α _inst_1))) a₁ a₂)
-Case conversion may be inaccurate. Consider using '#align has_sum_lt hasSum_ltₓ'. -/
theorem hasSum_lt (h : f ≤ g) (hi : f i < g i) (hf : HasSum f a₁) (hg : HasSum g a₂) : a₁ < a₂ :=
by
have : update f i 0 ≤ update g i 0 := update_le_update_iff.mpr ⟨rfl.le, fun i _ => h i⟩
@@ -312,35 +186,17 @@ theorem hasSum_lt (h : f ≤ g) (hi : f i < g i) (hf : HasSum f a₁) (hg : HasS
simpa only [zero_sub, add_neg_cancel_left] using add_lt_add_of_lt_of_le hi this
#align has_sum_lt hasSum_lt
-/- warning: has_sum_strict_mono -> hasSum_strict_mono is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : TopologicalAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {g : ι -> α} {a₁ : α} {a₂ : α}, (HasSum.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 f a₁) -> (HasSum.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 g a₂) -> (LT.lt.{max u1 u2} (ι -> α) (Preorder.toHasLt.{max u1 u2} (ι -> α) (Pi.preorder.{u1, u2} ι (fun (ᾰ : ι) => α) (fun (i : ι) => PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1)))) f g) -> (LT.lt.{u2} α (Preorder.toHasLt.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) a₁ a₂)
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : TopologicalAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {g : ι -> α} {a₁ : α} {a₂ : α}, (HasSum.{u2, u1} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u2} α _inst_1)) _inst_2 f a₁) -> (HasSum.{u2, u1} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u2} α _inst_1)) _inst_2 g a₂) -> (LT.lt.{max u1 u2} (ι -> α) (Preorder.toLT.{max u1 u2} (ι -> α) (Pi.preorder.{u1, u2} ι (fun (ᾰ : ι) => α) (fun (i : ι) => PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1)))) f g) -> (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) a₁ a₂)
-Case conversion may be inaccurate. Consider using '#align has_sum_strict_mono hasSum_strict_monoₓ'. -/
@[mono]
theorem hasSum_strict_mono (hf : HasSum f a₁) (hg : HasSum g a₂) (h : f < g) : a₁ < a₂ :=
let ⟨hle, i, hi⟩ := Pi.lt_def.mp h
hasSum_lt hle hi hf hg
#align has_sum_strict_mono hasSum_strict_mono
-/- warning: tsum_lt_tsum -> tsum_lt_tsum is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : TopologicalAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {g : ι -> α} {i : ι}, (LE.le.{max u1 u2} (ι -> α) (Pi.hasLe.{u1, u2} ι (fun (ᾰ : ι) => α) (fun (i : ι) => Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1)))) f g) -> (LT.lt.{u2} α (Preorder.toHasLt.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (f i) (g i)) -> (Summable.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 f) -> (Summable.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 g) -> (LT.lt.{u2} α (Preorder.toHasLt.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 ι (fun (n : ι) => f n)) (tsum.{u2, u1} α (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 ι (fun (n : ι) => g n)))
-but is expected to have type
- forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : OrderedAddCommGroup.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : TopologicalAddGroup.{u1} α _inst_2 (AddCommGroup.toAddGroup.{u1} α (OrderedAddCommGroup.toAddCommGroup.{u1} α _inst_1))] [_inst_4 : OrderClosedTopology.{u1} α _inst_2 (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α _inst_1))] {f : ι -> α} {g : ι -> α} {i : ι}, (LE.le.{max u2 u1} (ι -> α) (Pi.hasLe.{u2, u1} ι (fun (ᾰ : ι) => α) (fun (i : ι) => Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α _inst_1)))) f g) -> (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α _inst_1))) (f i) (g i)) -> (Summable.{u1, u2} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u1} α _inst_1)) _inst_2 f) -> (Summable.{u1, u2} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u1} α _inst_1)) _inst_2 g) -> (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α _inst_1))) (tsum.{u1, u2} α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u1} α _inst_1)) _inst_2 ι (fun (n : ι) => f n)) (tsum.{u1, u2} α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u1} α _inst_1)) _inst_2 ι (fun (n : ι) => g n)))
-Case conversion may be inaccurate. Consider using '#align tsum_lt_tsum tsum_lt_tsumₓ'. -/
theorem tsum_lt_tsum (h : f ≤ g) (hi : f i < g i) (hf : Summable f) (hg : Summable g) :
(∑' n, f n) < ∑' n, g n :=
hasSum_lt h hi hf.HasSum hg.HasSum
#align tsum_lt_tsum tsum_lt_tsum
-/- warning: tsum_strict_mono -> tsum_strict_mono is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : TopologicalAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {g : ι -> α}, (Summable.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 f) -> (Summable.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 g) -> (LT.lt.{max u1 u2} (ι -> α) (Preorder.toHasLt.{max u1 u2} (ι -> α) (Pi.preorder.{u1, u2} ι (fun (ᾰ : ι) => α) (fun (i : ι) => PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1)))) f g) -> (LT.lt.{u2} α (Preorder.toHasLt.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 ι (fun (n : ι) => f n)) (tsum.{u2, u1} α (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 ι (fun (n : ι) => g n)))
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : TopologicalAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {g : ι -> α}, (Summable.{u2, u1} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u2} α _inst_1)) _inst_2 f) -> (Summable.{u2, u1} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u2} α _inst_1)) _inst_2 g) -> (LT.lt.{max u1 u2} (ι -> α) (Preorder.toLT.{max u1 u2} (ι -> α) (Pi.preorder.{u1, u2} ι (fun (ᾰ : ι) => α) (fun (i : ι) => PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1)))) f g) -> (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u2} α _inst_1)) _inst_2 ι (fun (n : ι) => f n)) (tsum.{u2, u1} α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u2} α _inst_1)) _inst_2 ι (fun (n : ι) => g n)))
-Case conversion may be inaccurate. Consider using '#align tsum_strict_mono tsum_strict_monoₓ'. -/
@[mono]
theorem tsum_strict_mono (hf : Summable f) (hg : Summable g) (h : f < g) :
(∑' n, f n) < ∑' n, g n :=
@@ -348,22 +204,10 @@ theorem tsum_strict_mono (hf : Summable f) (hg : Summable g) (h : f < g) :
tsum_lt_tsum hle hi hf hg
#align tsum_strict_mono tsum_strict_mono
-/- warning: tsum_pos -> tsum_pos is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : TopologicalAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))] {g : ι -> α}, (Summable.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 g) -> (forall (i : ι), LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))))))) (g i)) -> (forall (i : ι), (LT.lt.{u2} α (Preorder.toHasLt.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))))))) (g i)) -> (LT.lt.{u2} α (Preorder.toHasLt.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))))))) (tsum.{u2, u1} α (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 ι (fun (i : ι) => g i))))
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : TopologicalAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))] {g : ι -> α}, (Summable.{u2, u1} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u2} α _inst_1)) _inst_2 g) -> (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (NegZeroClass.toZero.{u2} α (SubNegZeroMonoid.toNegZeroClass.{u2} α (SubtractionMonoid.toSubNegZeroMonoid.{u2} α (SubtractionCommMonoid.toSubtractionMonoid.{u2} α (AddCommGroup.toDivisionAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))))) (g i)) -> (forall (i : ι), (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (NegZeroClass.toZero.{u2} α (SubNegZeroMonoid.toNegZeroClass.{u2} α (SubtractionMonoid.toSubNegZeroMonoid.{u2} α (SubtractionCommMonoid.toSubtractionMonoid.{u2} α (AddCommGroup.toDivisionAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))))) (g i)) -> (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (NegZeroClass.toZero.{u2} α (SubNegZeroMonoid.toNegZeroClass.{u2} α (SubtractionMonoid.toSubNegZeroMonoid.{u2} α (SubtractionCommMonoid.toSubtractionMonoid.{u2} α (AddCommGroup.toDivisionAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))))) (tsum.{u2, u1} α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u2} α _inst_1)) _inst_2 ι (fun (i : ι) => g i))))
-Case conversion may be inaccurate. Consider using '#align tsum_pos tsum_posₓ'. -/
theorem tsum_pos (hsum : Summable g) (hg : ∀ i, 0 ≤ g i) (i : ι) (hi : 0 < g i) : 0 < ∑' i, g i :=
by rw [← tsum_zero]; exact tsum_lt_tsum hg hi summable_zero hsum
#align tsum_pos tsum_pos
-/- warning: has_sum_zero_iff_of_nonneg -> hasSum_zero_iff_of_nonneg is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : TopologicalAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))] {f : ι -> α}, (forall (i : ι), LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))))))) (f i)) -> (Iff (HasSum.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 f (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))))))) (Eq.{max (succ u1) (succ u2)} (ι -> α) f (OfNat.ofNat.{max u1 u2} (ι -> α) 0 (OfNat.mk.{max u1 u2} (ι -> α) 0 (Zero.zero.{max u1 u2} (ι -> α) (Pi.instZero.{u1, u2} ι (fun (ᾰ : ι) => α) (fun (i : ι) => AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))))))))))
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {_inst_4 : ι -> α}, (forall (ᾰ : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))) (_inst_4 ᾰ)) -> (Iff (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 _inst_4 (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1)))))) (Eq.{max (succ u1) (succ u2)} (ι -> α) _inst_4 (OfNat.ofNat.{max u1 u2} (ι -> α) 0 (Zero.toOfNat0.{max u1 u2} (ι -> α) (Pi.instZero.{u1, u2} ι (fun (a._@.Mathlib.Topology.Algebra.InfiniteSum.Order._hyg.1730 : ι) => α) (fun (i : ι) => AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))))
-Case conversion may be inaccurate. Consider using '#align has_sum_zero_iff_of_nonneg hasSum_zero_iff_of_nonnegₓ'. -/
theorem hasSum_zero_iff_of_nonneg (hf : ∀ i, 0 ≤ f i) : HasSum f 0 ↔ f = 0 :=
by
refine' ⟨fun hf' => _, _⟩
@@ -381,32 +225,14 @@ section CanonicallyOrderedAddMonoid
variable [CanonicallyOrderedAddMonoid α] [TopologicalSpace α] [OrderClosedTopology α] {f : ι → α}
{a : α}
-/- warning: le_has_sum' -> le_hasSum' is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : CanonicallyOrderedAddMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))] {f : ι -> α} {a : α}, (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 f a) -> (forall (i : ι), LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))) (f i) a)
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : CanonicallyOrderedAddMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))] {f : ι -> α} {a : α}, (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 f a) -> (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))) (f i) a)
-Case conversion may be inaccurate. Consider using '#align le_has_sum' le_hasSum'ₓ'. -/
theorem le_hasSum' (hf : HasSum f a) (i : ι) : f i ≤ a :=
le_hasSum hf i fun _ _ => zero_le _
#align le_has_sum' le_hasSum'
-/- warning: le_tsum' -> le_tsum' is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : CanonicallyOrderedAddMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))] {f : ι -> α}, (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 f) -> (forall (i : ι), LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))) (f i) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 ι (fun (i : ι) => f i)))
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : CanonicallyOrderedAddMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))] {f : ι -> α}, (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 f) -> (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))) (f i) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 ι (fun (i : ι) => f i)))
-Case conversion may be inaccurate. Consider using '#align le_tsum' le_tsum'ₓ'. -/
theorem le_tsum' (hf : Summable f) (i : ι) : f i ≤ ∑' i, f i :=
le_tsum hf i fun _ _ => zero_le _
#align le_tsum' le_tsum'
-/- warning: has_sum_zero_iff -> hasSum_zero_iff is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : CanonicallyOrderedAddMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))] {f : ι -> α}, Iff (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 f (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1))))))))) (forall (x : ι), Eq.{succ u2} α (f x) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))))))))
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : CanonicallyOrderedAddMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))] {f : ι -> α}, Iff (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 f (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1))))))) (forall (x : ι), Eq.{succ u2} α (f x) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))))))
-Case conversion may be inaccurate. Consider using '#align has_sum_zero_iff hasSum_zero_iffₓ'. -/
theorem hasSum_zero_iff : HasSum f 0 ↔ ∀ x, f x = 0 :=
by
refine' ⟨_, fun h => _⟩
@@ -416,22 +242,10 @@ theorem hasSum_zero_iff : HasSum f 0 ↔ ∀ x, f x = 0 :=
exact funext h
#align has_sum_zero_iff hasSum_zero_iff
-/- warning: tsum_eq_zero_iff -> tsum_eq_zero_iff is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : CanonicallyOrderedAddMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))] {f : ι -> α}, (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 f) -> (Iff (Eq.{succ u2} α (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 ι (fun (i : ι) => f i)) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1))))))))) (forall (x : ι), Eq.{succ u2} α (f x) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1))))))))))
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : CanonicallyOrderedAddMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))] {f : ι -> α}, (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 f) -> (Iff (Eq.{succ u2} α (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 ι (fun (i : ι) => f i)) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1))))))) (forall (x : ι), Eq.{succ u2} α (f x) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1))))))))
-Case conversion may be inaccurate. Consider using '#align tsum_eq_zero_iff tsum_eq_zero_iffₓ'. -/
theorem tsum_eq_zero_iff (hf : Summable f) : (∑' i, f i) = 0 ↔ ∀ x, f x = 0 := by
rw [← hasSum_zero_iff, hf.has_sum_iff]
#align tsum_eq_zero_iff tsum_eq_zero_iff
-/- warning: tsum_ne_zero_iff -> tsum_ne_zero_iff is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : CanonicallyOrderedAddMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))] {f : ι -> α}, (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 f) -> (Iff (Ne.{succ u2} α (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 ι (fun (i : ι) => f i)) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1))))))))) (Exists.{succ u1} ι (fun (x : ι) => Ne.{succ u2} α (f x) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))))))))))
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : CanonicallyOrderedAddMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))] {f : ι -> α}, (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 f) -> (Iff (Ne.{succ u2} α (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 ι (fun (i : ι) => f i)) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1))))))) (Exists.{succ u1} ι (fun (x : ι) => Ne.{succ u2} α (f x) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))))))))
-Case conversion may be inaccurate. Consider using '#align tsum_ne_zero_iff tsum_ne_zero_iffₓ'. -/
theorem tsum_ne_zero_iff (hf : Summable f) : (∑' i, f i) ≠ 0 ↔ ∃ x, f x ≠ 0 := by
rw [Ne.def, tsum_eq_zero_iff hf, not_forall]
#align tsum_ne_zero_iff tsum_ne_zero_iff
@@ -456,12 +270,6 @@ the existence of a least upper bound.
-/
-/- warning: has_sum_of_is_lub_of_nonneg -> hasSum_of_isLUB_of_nonneg is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : LinearOrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))] {f : ι -> α} (i : α), (forall (i : ι), LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))))))) (f i)) -> (IsLUB.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1))) (Set.range.{u2, succ u1} α (Finset.{u1} ι) (fun (s : Finset.{u1} ι) => Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) s (fun (i : ι) => f i))) i) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 f i)
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : LinearOrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))] {f : ι -> α} (i : α), (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (LinearOrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))) (f i)) -> (IsLUB.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1))) (Set.range.{u2, succ u1} α (Finset.{u1} ι) (fun (s : Finset.{u1} ι) => Finset.sum.{u2, u1} α ι (LinearOrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i))) i) -> (HasSum.{u2, u1} α ι (LinearOrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f i)
-Case conversion may be inaccurate. Consider using '#align has_sum_of_is_lub_of_nonneg hasSum_of_isLUB_of_nonnegₓ'. -/
theorem hasSum_of_isLUB_of_nonneg [LinearOrderedAddCommMonoid α] [TopologicalSpace α]
[OrderTopology α] {f : ι → α} (i : α) (h : ∀ i, 0 ≤ f i)
(hf : IsLUB (Set.range fun s => ∑ i in s, f i) i) : HasSum f i :=
@@ -475,12 +283,6 @@ theorem hasSum_of_isLUB [CanonicallyLinearOrderedAddMonoid α] [TopologicalSpace
#align has_sum_of_is_lub hasSum_of_isLUB
-/
-/- warning: summable_abs_iff -> summable_abs_iff is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : LinearOrderedAddCommGroup.{u2} α] [_inst_2 : UniformSpace.{u2} α] [_inst_3 : UniformAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))] [_inst_4 : CompleteSpace.{u2} α _inst_2] {f : ι -> α}, Iff (Summable.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1))) (UniformSpace.toTopologicalSpace.{u2} α _inst_2) (fun (x : ι) => Abs.abs.{u2} α (Neg.toHasAbs.{u2} α (SubNegMonoid.toHasNeg.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1))))) (SemilatticeSup.toHasSup.{u2} α (Lattice.toSemilatticeSup.{u2} α (LinearOrder.toLattice.{u2} α (LinearOrderedAddCommGroup.toLinearOrder.{u2} α _inst_1))))) (f x))) (Summable.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1))) (UniformSpace.toTopologicalSpace.{u2} α _inst_2) f)
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : LinearOrderedAddCommGroup.{u2} α] [_inst_2 : UniformSpace.{u2} α] [_inst_3 : UniformAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))] [_inst_4 : CompleteSpace.{u2} α _inst_2] {f : ι -> α}, Iff (Summable.{u2, u1} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} α (LinearOrderedAddCommGroup.toLinearOrderedAddCancelCommMonoid.{u2} α _inst_1))) (UniformSpace.toTopologicalSpace.{u2} α _inst_2) (fun (x : ι) => Abs.abs.{u2} α (Neg.toHasAbs.{u2} α (NegZeroClass.toNeg.{u2} α (SubNegZeroMonoid.toNegZeroClass.{u2} α (SubtractionMonoid.toSubNegZeroMonoid.{u2} α (SubtractionCommMonoid.toSubtractionMonoid.{u2} α (AddCommGroup.toDivisionAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1))))))) (SemilatticeSup.toSup.{u2} α (Lattice.toSemilatticeSup.{u2} α (DistribLattice.toLattice.{u2} α (instDistribLattice.{u2} α (LinearOrderedAddCommGroup.toLinearOrder.{u2} α _inst_1)))))) (f x))) (Summable.{u2, u1} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} α (LinearOrderedAddCommGroup.toLinearOrderedAddCancelCommMonoid.{u2} α _inst_1))) (UniformSpace.toTopologicalSpace.{u2} α _inst_2) f)
-Case conversion may be inaccurate. Consider using '#align summable_abs_iff summable_abs_iffₓ'. -/
theorem summable_abs_iff [LinearOrderedAddCommGroup α] [UniformSpace α] [UniformAddGroup α]
[CompleteSpace α] {f : ι → α} : (Summable fun x => |f x|) ↔ Summable f :=
have h1 : ∀ x : { x | 0 ≤ f x }, |f x| = f x := fun x => abs_of_nonneg x.2
@@ -495,28 +297,10 @@ theorem summable_abs_iff [LinearOrderedAddCommGroup α] [UniformSpace α] [Unifo
#align summable_abs_iff summable_abs_iff
-/- warning: summable.of_abs -> Summable.of_abs is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : LinearOrderedAddCommGroup.{u2} α] [_inst_2 : UniformSpace.{u2} α] [_inst_3 : UniformAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))] [_inst_4 : CompleteSpace.{u2} α _inst_2] {f : ι -> α}, (Summable.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1))) (UniformSpace.toTopologicalSpace.{u2} α _inst_2) (fun (x : ι) => Abs.abs.{u2} α (Neg.toHasAbs.{u2} α (SubNegMonoid.toHasNeg.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1))))) (SemilatticeSup.toHasSup.{u2} α (Lattice.toSemilatticeSup.{u2} α (LinearOrder.toLattice.{u2} α (LinearOrderedAddCommGroup.toLinearOrder.{u2} α _inst_1))))) (f x))) -> (Summable.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1))) (UniformSpace.toTopologicalSpace.{u2} α _inst_2) f)
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : LinearOrderedAddCommGroup.{u2} α] [_inst_2 : UniformSpace.{u2} α] [_inst_3 : UniformAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))] [_inst_4 : CompleteSpace.{u2} α _inst_2] {f : ι -> α}, (Summable.{u2, u1} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} α (LinearOrderedAddCommGroup.toLinearOrderedAddCancelCommMonoid.{u2} α _inst_1))) (UniformSpace.toTopologicalSpace.{u2} α _inst_2) (fun (x : ι) => Abs.abs.{u2} α (Neg.toHasAbs.{u2} α (NegZeroClass.toNeg.{u2} α (SubNegZeroMonoid.toNegZeroClass.{u2} α (SubtractionMonoid.toSubNegZeroMonoid.{u2} α (SubtractionCommMonoid.toSubtractionMonoid.{u2} α (AddCommGroup.toDivisionAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1))))))) (SemilatticeSup.toSup.{u2} α (Lattice.toSemilatticeSup.{u2} α (DistribLattice.toLattice.{u2} α (instDistribLattice.{u2} α (LinearOrderedAddCommGroup.toLinearOrder.{u2} α _inst_1)))))) (f x))) -> (Summable.{u2, u1} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} α (LinearOrderedAddCommGroup.toLinearOrderedAddCancelCommMonoid.{u2} α _inst_1))) (UniformSpace.toTopologicalSpace.{u2} α _inst_2) f)
-Case conversion may be inaccurate. Consider using '#align summable.of_abs Summable.of_absₓ'. -/
-/- warning: summable.abs -> Summable.abs is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : LinearOrderedAddCommGroup.{u2} α] [_inst_2 : UniformSpace.{u2} α] [_inst_3 : UniformAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))] [_inst_4 : CompleteSpace.{u2} α _inst_2] {f : ι -> α}, (Summable.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1))) (UniformSpace.toTopologicalSpace.{u2} α _inst_2) f) -> (Summable.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1))) (UniformSpace.toTopologicalSpace.{u2} α _inst_2) (fun (x : ι) => Abs.abs.{u2} α (Neg.toHasAbs.{u2} α (SubNegMonoid.toHasNeg.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1))))) (SemilatticeSup.toHasSup.{u2} α (Lattice.toSemilatticeSup.{u2} α (LinearOrder.toLattice.{u2} α (LinearOrderedAddCommGroup.toLinearOrder.{u2} α _inst_1))))) (f x)))
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : LinearOrderedAddCommGroup.{u2} α] [_inst_2 : UniformSpace.{u2} α] [_inst_3 : UniformAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))] [_inst_4 : CompleteSpace.{u2} α _inst_2] {f : ι -> α}, (Summable.{u2, u1} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} α (LinearOrderedAddCommGroup.toLinearOrderedAddCancelCommMonoid.{u2} α _inst_1))) (UniformSpace.toTopologicalSpace.{u2} α _inst_2) f) -> (Summable.{u2, u1} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} α (LinearOrderedAddCommGroup.toLinearOrderedAddCancelCommMonoid.{u2} α _inst_1))) (UniformSpace.toTopologicalSpace.{u2} α _inst_2) (fun (x : ι) => Abs.abs.{u2} α (Neg.toHasAbs.{u2} α (NegZeroClass.toNeg.{u2} α (SubNegZeroMonoid.toNegZeroClass.{u2} α (SubtractionMonoid.toSubNegZeroMonoid.{u2} α (SubtractionCommMonoid.toSubtractionMonoid.{u2} α (AddCommGroup.toDivisionAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1))))))) (SemilatticeSup.toSup.{u2} α (Lattice.toSemilatticeSup.{u2} α (DistribLattice.toLattice.{u2} α (instDistribLattice.{u2} α (LinearOrderedAddCommGroup.toLinearOrder.{u2} α _inst_1)))))) (f x)))
-Case conversion may be inaccurate. Consider using '#align summable.abs Summable.absₓ'. -/
alias summable_abs_iff ↔ Summable.of_abs Summable.abs
#align summable.of_abs Summable.of_abs
#align summable.abs Summable.abs
-/- warning: finite_of_summable_const -> Set.Finite.of_summable_const is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : LinearOrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : Archimedean.{u2} α (OrderedCancelAddCommMonoid.toOrderedAddCommMonoid.{u2} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))] {b : α}, (LT.lt.{u2} α (Preorder.toHasLt.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))))))))) b) -> (Summable.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1))) _inst_2 (fun (i : ι) => b)) -> (Set.Finite.{u1} ι (Set.univ.{u1} ι))
-but is expected to have type
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : LinearOrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : Archimedean.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u2} α (LinearOrderedAddCommGroup.toLinearOrderedAddCancelCommMonoid.{u2} α _inst_1)))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))] {b : α}, (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (NegZeroClass.toZero.{u2} α (SubNegZeroMonoid.toNegZeroClass.{u2} α (SubtractionMonoid.toSubNegZeroMonoid.{u2} α (SubtractionCommMonoid.toSubtractionMonoid.{u2} α (AddCommGroup.toDivisionAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1))))))))) b) -> (Summable.{u2, u1} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} α (LinearOrderedAddCommGroup.toLinearOrderedAddCancelCommMonoid.{u2} α _inst_1))) _inst_2 (fun (i : ι) => b)) -> (Set.Finite.{u1} ι (Set.univ.{u1} ι))
-Case conversion may be inaccurate. Consider using '#align finite_of_summable_const Set.Finite.of_summable_constₓ'. -/
--TODO: Change the conclusion to `finite ι`
theorem Set.Finite.of_summable_const [LinearOrderedAddCommGroup α] [TopologicalSpace α]
[Archimedean α] [OrderClosedTopology α] {b : α} (hb : 0 < b) (hf : Summable fun i : ι => b) :
@@ -536,12 +320,6 @@ theorem Set.Finite.of_summable_const [LinearOrderedAddCommGroup α] [Topological
end LinearOrder
-/- warning: summable.tendsto_top_of_pos -> Summable.tendsto_atTop_of_pos is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : OrderTopology.{u1} α _inst_2 (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α (StrictOrderedRing.toOrderedAddCommGroup.{u1} α (LinearOrderedRing.toStrictOrderedRing.{u1} α (LinearOrderedCommRing.toLinearOrderedRing.{u1} α (LinearOrderedField.toLinearOrderedCommRing.{u1} α _inst_1))))))] {f : Nat -> α}, (Summable.{u1, 0} α Nat (AddCommGroup.toAddCommMonoid.{u1} α (OrderedAddCommGroup.toAddCommGroup.{u1} α (StrictOrderedRing.toOrderedAddCommGroup.{u1} α (LinearOrderedRing.toStrictOrderedRing.{u1} α (LinearOrderedCommRing.toLinearOrderedRing.{u1} α (LinearOrderedField.toLinearOrderedCommRing.{u1} α _inst_1)))))) _inst_2 (Inv.inv.{u1} (Nat -> α) (Pi.instInv.{0, u1} Nat (fun (ᾰ : Nat) => α) (fun (i : Nat) => DivInvMonoid.toHasInv.{u1} α (DivisionRing.toDivInvMonoid.{u1} α (Field.toDivisionRing.{u1} α (LinearOrderedField.toField.{u1} α _inst_1))))) f)) -> (forall (n : Nat), LT.lt.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α (StrictOrderedRing.toOrderedAddCommGroup.{u1} α (LinearOrderedRing.toStrictOrderedRing.{u1} α (LinearOrderedCommRing.toLinearOrderedRing.{u1} α (LinearOrderedField.toLinearOrderedCommRing.{u1} α _inst_1))))))) (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (DivisionRing.toRing.{u1} α (Field.toDivisionRing.{u1} α (LinearOrderedField.toField.{u1} α _inst_1))))))))))) (f n)) -> (Filter.Tendsto.{0, u1} Nat α f (Filter.atTop.{0} Nat (PartialOrder.toPreorder.{0} Nat (OrderedCancelAddCommMonoid.toPartialOrder.{0} Nat (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} Nat Nat.strictOrderedSemiring)))) (Filter.atTop.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α (StrictOrderedRing.toOrderedAddCommGroup.{u1} α (LinearOrderedRing.toStrictOrderedRing.{u1} α (LinearOrderedCommRing.toLinearOrderedRing.{u1} α (LinearOrderedField.toLinearOrderedCommRing.{u1} α _inst_1))))))))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : OrderTopology.{u1} α _inst_2 (PartialOrder.toPreorder.{u1} α (StrictOrderedRing.toPartialOrder.{u1} α (LinearOrderedRing.toStrictOrderedRing.{u1} α (LinearOrderedCommRing.toLinearOrderedRing.{u1} α (LinearOrderedField.toLinearOrderedCommRing.{u1} α _inst_1)))))] {f : Nat -> α}, (Summable.{u1, 0} α Nat (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} α (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} α (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} α (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} α (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} α (LinearOrderedField.toLinearOrderedSemifield.{u1} α _inst_1)))))) _inst_2 (Inv.inv.{u1} (Nat -> α) (Pi.instInv.{0, u1} Nat (fun (ᾰ : Nat) => α) (fun (i : Nat) => LinearOrderedField.toInv.{u1} α _inst_1)) f)) -> (forall (n : Nat), LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (StrictOrderedRing.toPartialOrder.{u1} α (LinearOrderedRing.toStrictOrderedRing.{u1} α (LinearOrderedCommRing.toLinearOrderedRing.{u1} α (LinearOrderedField.toLinearOrderedCommRing.{u1} α _inst_1)))))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (CommMonoidWithZero.toZero.{u1} α (CommGroupWithZero.toCommMonoidWithZero.{u1} α (Semifield.toCommGroupWithZero.{u1} α (LinearOrderedSemifield.toSemifield.{u1} α (LinearOrderedField.toLinearOrderedSemifield.{u1} α _inst_1))))))) (f n)) -> (Filter.Tendsto.{0, u1} Nat α f (Filter.atTop.{0} Nat (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring))) (Filter.atTop.{u1} α (PartialOrder.toPreorder.{u1} α (StrictOrderedRing.toPartialOrder.{u1} α (LinearOrderedRing.toStrictOrderedRing.{u1} α (LinearOrderedCommRing.toLinearOrderedRing.{u1} α (LinearOrderedField.toLinearOrderedCommRing.{u1} α _inst_1)))))))
-Case conversion may be inaccurate. Consider using '#align summable.tendsto_top_of_pos Summable.tendsto_atTop_of_posₓ'. -/
theorem Summable.tendsto_atTop_of_pos [LinearOrderedField α] [TopologicalSpace α] [OrderTopology α]
{f : ℕ → α} (hf : Summable f⁻¹) (hf' : ∀ n, 0 < f n) : Tendsto f atTop atTop :=
by
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -173,12 +173,7 @@ Case conversion may be inaccurate. Consider using '#align le_has_sum le_hasSum
theorem le_hasSum (hf : HasSum f a) (i : ι) (hb : ∀ (b') (_ : b' ≠ i), 0 ≤ f b') : f i ≤ a :=
calc
f i = ∑ i in {i}, f i := Finset.sum_singleton.symm
- _ ≤ a :=
- sum_le_hasSum _
- (by
- convert hb
- simp)
- hf
+ _ ≤ a := sum_le_hasSum _ (by convert hb; simp) hf
#align le_has_sum le_hasSum
@@ -360,9 +355,7 @@ but is expected to have type
forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : TopologicalAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))] {g : ι -> α}, (Summable.{u2, u1} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u2} α _inst_1)) _inst_2 g) -> (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (NegZeroClass.toZero.{u2} α (SubNegZeroMonoid.toNegZeroClass.{u2} α (SubtractionMonoid.toSubNegZeroMonoid.{u2} α (SubtractionCommMonoid.toSubtractionMonoid.{u2} α (AddCommGroup.toDivisionAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))))) (g i)) -> (forall (i : ι), (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (NegZeroClass.toZero.{u2} α (SubNegZeroMonoid.toNegZeroClass.{u2} α (SubtractionMonoid.toSubNegZeroMonoid.{u2} α (SubtractionCommMonoid.toSubtractionMonoid.{u2} α (AddCommGroup.toDivisionAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))))) (g i)) -> (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (NegZeroClass.toZero.{u2} α (SubNegZeroMonoid.toNegZeroClass.{u2} α (SubtractionMonoid.toSubNegZeroMonoid.{u2} α (SubtractionCommMonoid.toSubtractionMonoid.{u2} α (AddCommGroup.toDivisionAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))))) (tsum.{u2, u1} α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u2} α _inst_1)) _inst_2 ι (fun (i : ι) => g i))))
Case conversion may be inaccurate. Consider using '#align tsum_pos tsum_posₓ'. -/
theorem tsum_pos (hsum : Summable g) (hg : ∀ i, 0 ≤ g i) (i : ι) (hi : 0 < g i) : 0 < ∑' i, g i :=
- by
- rw [← tsum_zero]
- exact tsum_lt_tsum hg hi summable_zero hsum
+ by rw [← tsum_zero]; exact tsum_lt_tsum hg hi summable_zero hsum
#align tsum_pos tsum_pos
/- warning: has_sum_zero_iff_of_nonneg -> hasSum_zero_iff_of_nonneg is a dubious translation:
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -34,13 +34,17 @@ section Preorder
variable [Preorder α] [AddCommMonoid α] [TopologicalSpace α] [OrderClosedTopology α] [T2Space α]
{f : ℕ → α} {c : α}
-#print tsum_le_of_sum_range_le /-
+/- warning: tsum_le_of_sum_range_le -> tsum_le_of_sum_range_le is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] [_inst_2 : AddCommMonoid.{u1} α] [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : OrderClosedTopology.{u1} α _inst_3 _inst_1] [_inst_5 : T2Space.{u1} α _inst_3] {f : Nat -> α} {c : α}, (Summable.{u1, 0} α Nat _inst_2 _inst_3 f) -> (forall (n : Nat), LE.le.{u1} α (Preorder.toHasLe.{u1} α _inst_1) (Finset.sum.{u1, 0} α Nat _inst_2 (Finset.range n) (fun (i : Nat) => f i)) c) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α _inst_1) (tsum.{u1, 0} α _inst_2 _inst_3 Nat (fun (n : Nat) => f n)) c)
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] [_inst_2 : AddCommMonoid.{u1} α] [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : OrderClosedTopology.{u1} α _inst_3 _inst_1] [_inst_5 : T2Space.{u1} α _inst_3] {f : Nat -> α} {c : α}, (Summable.{u1, 0} α Nat _inst_2 _inst_3 f) -> (forall (n : Nat), LE.le.{u1} α (Preorder.toLE.{u1} α _inst_1) (Finset.sum.{u1, 0} α Nat _inst_2 (Finset.range n) (fun (i : Nat) => f i)) c) -> (LE.le.{u1} α (Preorder.toLE.{u1} α _inst_1) (tsum.{u1, 0} α _inst_2 _inst_3 Nat (fun (n : Nat) => f n)) c)
+Case conversion may be inaccurate. Consider using '#align tsum_le_of_sum_range_le tsum_le_of_sum_range_leₓ'. -/
theorem tsum_le_of_sum_range_le (hf : Summable f) (h : ∀ n, (∑ i in range n, f i) ≤ c) :
(∑' n, f n) ≤ c :=
let ⟨l, hl⟩ := hf
hl.tsum_eq.symm ▸ le_of_tendsto' hl.tendsto_sum_nat h
#align tsum_le_of_sum_range_le tsum_le_of_sum_range_le
--/
end Preorder
@@ -49,34 +53,50 @@ section OrderedAddCommMonoid
variable [OrderedAddCommMonoid α] [TopologicalSpace α] [OrderClosedTopology α] {f g : ι → α}
{a a₁ a₂ : α}
-#print hasSum_le /-
+/- warning: has_sum_le -> hasSum_le is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {g : ι -> α} {a₁ : α} {a₂ : α}, (forall (i : ι), LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (f i) (g i)) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a₁) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 g a₂) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) a₁ a₂)
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {g : ι -> α} {a₁ : α} {a₂ : α}, (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (f i) (g i)) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a₁) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 g a₂) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) a₁ a₂)
+Case conversion may be inaccurate. Consider using '#align has_sum_le hasSum_leₓ'. -/
theorem hasSum_le (h : ∀ i, f i ≤ g i) (hf : HasSum f a₁) (hg : HasSum g a₂) : a₁ ≤ a₂ :=
le_of_tendsto_of_tendsto' hf hg fun s => sum_le_sum fun i _ => h i
#align has_sum_le hasSum_le
--/
-#print hasSum_mono /-
+/- warning: has_sum_mono -> hasSum_mono is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {g : ι -> α} {a₁ : α} {a₂ : α}, (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a₁) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 g a₂) -> (LE.le.{max u1 u2} (ι -> α) (Pi.hasLe.{u1, u2} ι (fun (ᾰ : ι) => α) (fun (i : ι) => Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1)))) f g) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) a₁ a₂)
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {g : ι -> α} {a₁ : α} {a₂ : α}, (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a₁) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 g a₂) -> (LE.le.{max u1 u2} (ι -> α) (Pi.hasLe.{u1, u2} ι (fun (ᾰ : ι) => α) (fun (i : ι) => Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1)))) f g) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) a₁ a₂)
+Case conversion may be inaccurate. Consider using '#align has_sum_mono hasSum_monoₓ'. -/
@[mono]
theorem hasSum_mono (hf : HasSum f a₁) (hg : HasSum g a₂) (h : f ≤ g) : a₁ ≤ a₂ :=
hasSum_le h hf hg
#align has_sum_mono hasSum_mono
--/
-#print hasSum_le_of_sum_le /-
+/- warning: has_sum_le_of_sum_le -> hasSum_le_of_sum_le is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a : α} {a₂ : α}, (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a) -> (forall (s : Finset.{u1} ι), LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i)) a₂) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) a a₂)
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a : α} {a₂ : α}, (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a) -> (forall (s : Finset.{u1} ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i)) a₂) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) a a₂)
+Case conversion may be inaccurate. Consider using '#align has_sum_le_of_sum_le hasSum_le_of_sum_leₓ'. -/
theorem hasSum_le_of_sum_le (hf : HasSum f a) (h : ∀ s, (∑ i in s, f i) ≤ a₂) : a ≤ a₂ :=
le_of_tendsto' hf h
#align has_sum_le_of_sum_le hasSum_le_of_sum_le
--/
-#print le_hasSum_of_le_sum /-
+/- warning: le_has_sum_of_le_sum -> le_hasSum_of_le_sum is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a : α} {a₂ : α}, (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a) -> (forall (s : Finset.{u1} ι), LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) a₂ (Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i))) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) a₂ a)
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a : α} {a₂ : α}, (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a) -> (forall (s : Finset.{u1} ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) a₂ (Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i))) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) a₂ a)
+Case conversion may be inaccurate. Consider using '#align le_has_sum_of_le_sum le_hasSum_of_le_sumₓ'. -/
theorem le_hasSum_of_le_sum (hf : HasSum f a) (h : ∀ s, a₂ ≤ ∑ i in s, f i) : a₂ ≤ a :=
ge_of_tendsto' hf h
#align le_has_sum_of_le_sum le_hasSum_of_le_sum
--/
/- warning: has_sum_le_inj -> hasSum_le_inj is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {κ : Type.{u2}} {α : Type.{u3}} [_inst_1 : OrderedAddCommMonoid.{u3} α] [_inst_2 : TopologicalSpace.{u3} α] [_inst_3 : OrderClosedTopology.{u3} α _inst_2 (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))] {f : ι -> α} {a₁ : α} {a₂ : α} {g : κ -> α} (e : ι -> κ), (Function.Injective.{succ u1, succ u2} ι κ e) -> (forall (c : κ), (Not (Membership.Mem.{u2, u2} κ (Set.{u2} κ) (Set.hasMem.{u2} κ) c (Set.range.{u2, succ u1} κ ι e))) -> (LE.le.{u3} α (Preorder.toLE.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))) (OfNat.ofNat.{u3} α 0 (OfNat.mk.{u3} α 0 (Zero.zero.{u3} α (AddZeroClass.toHasZero.{u3} α (AddMonoid.toAddZeroClass.{u3} α (AddCommMonoid.toAddMonoid.{u3} α (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1))))))) (g c))) -> (forall (i : ι), LE.le.{u3} α (Preorder.toLE.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))) (f i) (g (e i))) -> (HasSum.{u3, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1) _inst_2 f a₁) -> (HasSum.{u3, u2} α κ (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1) _inst_2 g a₂) -> (LE.le.{u3} α (Preorder.toLE.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))) a₁ a₂)
+ forall {ι : Type.{u1}} {κ : Type.{u2}} {α : Type.{u3}} [_inst_1 : OrderedAddCommMonoid.{u3} α] [_inst_2 : TopologicalSpace.{u3} α] [_inst_3 : OrderClosedTopology.{u3} α _inst_2 (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))] {f : ι -> α} {a₁ : α} {a₂ : α} {g : κ -> α} (e : ι -> κ), (Function.Injective.{succ u1, succ u2} ι κ e) -> (forall (c : κ), (Not (Membership.Mem.{u2, u2} κ (Set.{u2} κ) (Set.hasMem.{u2} κ) c (Set.range.{u2, succ u1} κ ι e))) -> (LE.le.{u3} α (Preorder.toHasLe.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))) (OfNat.ofNat.{u3} α 0 (OfNat.mk.{u3} α 0 (Zero.zero.{u3} α (AddZeroClass.toHasZero.{u3} α (AddMonoid.toAddZeroClass.{u3} α (AddCommMonoid.toAddMonoid.{u3} α (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1))))))) (g c))) -> (forall (i : ι), LE.le.{u3} α (Preorder.toHasLe.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))) (f i) (g (e i))) -> (HasSum.{u3, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1) _inst_2 f a₁) -> (HasSum.{u3, u2} α κ (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1) _inst_2 g a₂) -> (LE.le.{u3} α (Preorder.toHasLe.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))) a₁ a₂)
but is expected to have type
forall {ι : Type.{u3}} {κ : Type.{u2}} {α : Type.{u1}} [_inst_1 : OrderedAddCommMonoid.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : OrderClosedTopology.{u1} α _inst_2 (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))] {f : ι -> α} {a₁ : α} {a₂ : α} {g : κ -> α} (e : ι -> κ), (Function.Injective.{succ u3, succ u2} ι κ e) -> (forall (c : κ), (Not (Membership.mem.{u2, u2} κ (Set.{u2} κ) (Set.instMembershipSet.{u2} κ) c (Set.range.{u2, succ u3} κ ι e))) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (AddMonoid.toZero.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1))))) (g c))) -> (forall (i : ι), LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))) (f i) (g (e i))) -> (HasSum.{u1, u3} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) _inst_2 f a₁) -> (HasSum.{u1, u2} α κ (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) _inst_2 g a₂) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))) a₁ a₂)
Case conversion may be inaccurate. Consider using '#align has_sum_le_inj hasSum_le_injₓ'. -/
@@ -107,7 +127,7 @@ theorem hasSum_le_inj {g : κ → α} (e : ι → κ) (he : Injective e)
/- warning: tsum_le_tsum_of_inj -> tsum_le_tsum_of_inj is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {κ : Type.{u2}} {α : Type.{u3}} [_inst_1 : OrderedAddCommMonoid.{u3} α] [_inst_2 : TopologicalSpace.{u3} α] [_inst_3 : OrderClosedTopology.{u3} α _inst_2 (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))] {f : ι -> α} {g : κ -> α} (e : ι -> κ), (Function.Injective.{succ u1, succ u2} ι κ e) -> (forall (c : κ), (Not (Membership.Mem.{u2, u2} κ (Set.{u2} κ) (Set.hasMem.{u2} κ) c (Set.range.{u2, succ u1} κ ι e))) -> (LE.le.{u3} α (Preorder.toLE.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))) (OfNat.ofNat.{u3} α 0 (OfNat.mk.{u3} α 0 (Zero.zero.{u3} α (AddZeroClass.toHasZero.{u3} α (AddMonoid.toAddZeroClass.{u3} α (AddCommMonoid.toAddMonoid.{u3} α (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1))))))) (g c))) -> (forall (i : ι), LE.le.{u3} α (Preorder.toLE.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))) (f i) (g (e i))) -> (Summable.{u3, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1) _inst_2 f) -> (Summable.{u3, u2} α κ (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1) _inst_2 g) -> (LE.le.{u3} α (Preorder.toLE.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))) (tsum.{u3, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1) _inst_2 ι f) (tsum.{u3, u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1) _inst_2 κ g))
+ forall {ι : Type.{u1}} {κ : Type.{u2}} {α : Type.{u3}} [_inst_1 : OrderedAddCommMonoid.{u3} α] [_inst_2 : TopologicalSpace.{u3} α] [_inst_3 : OrderClosedTopology.{u3} α _inst_2 (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))] {f : ι -> α} {g : κ -> α} (e : ι -> κ), (Function.Injective.{succ u1, succ u2} ι κ e) -> (forall (c : κ), (Not (Membership.Mem.{u2, u2} κ (Set.{u2} κ) (Set.hasMem.{u2} κ) c (Set.range.{u2, succ u1} κ ι e))) -> (LE.le.{u3} α (Preorder.toHasLe.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))) (OfNat.ofNat.{u3} α 0 (OfNat.mk.{u3} α 0 (Zero.zero.{u3} α (AddZeroClass.toHasZero.{u3} α (AddMonoid.toAddZeroClass.{u3} α (AddCommMonoid.toAddMonoid.{u3} α (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1))))))) (g c))) -> (forall (i : ι), LE.le.{u3} α (Preorder.toHasLe.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))) (f i) (g (e i))) -> (Summable.{u3, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1) _inst_2 f) -> (Summable.{u3, u2} α κ (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1) _inst_2 g) -> (LE.le.{u3} α (Preorder.toHasLe.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))) (tsum.{u3, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1) _inst_2 ι f) (tsum.{u3, u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1) _inst_2 κ g))
but is expected to have type
forall {ι : Type.{u3}} {κ : Type.{u2}} {α : Type.{u1}} [_inst_1 : OrderedAddCommMonoid.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : OrderClosedTopology.{u1} α _inst_2 (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))] {f : ι -> α} {g : κ -> α} (e : ι -> κ), (Function.Injective.{succ u3, succ u2} ι κ e) -> (forall (c : κ), (Not (Membership.mem.{u2, u2} κ (Set.{u2} κ) (Set.instMembershipSet.{u2} κ) c (Set.range.{u2, succ u3} κ ι e))) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (AddMonoid.toZero.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1))))) (g c))) -> (forall (i : ι), LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))) (f i) (g (e i))) -> (Summable.{u1, u3} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) _inst_2 f) -> (Summable.{u1, u2} α κ (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) _inst_2 g) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))) (tsum.{u1, u3} α (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) _inst_2 ι f) (tsum.{u1, u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) _inst_2 κ g))
Case conversion may be inaccurate. Consider using '#align tsum_le_tsum_of_inj tsum_le_tsum_of_injₓ'. -/
@@ -120,7 +140,7 @@ theorem tsum_le_tsum_of_inj {g : κ → α} (e : ι → κ) (he : Injective e)
/- warning: sum_le_has_sum -> sum_le_hasSum is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a : α} (s : Finset.{u1} ι), (forall (i : ι), (Not (Membership.Mem.{u1, u1} ι (Finset.{u1} ι) (Finset.hasMem.{u1} ι) i s)) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) (f i))) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i)) a)
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a : α} (s : Finset.{u1} ι), (forall (i : ι), (Not (Membership.Mem.{u1, u1} ι (Finset.{u1} ι) (Finset.hasMem.{u1} ι) i s)) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) (f i))) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i)) a)
but is expected to have type
forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : OrderedAddCommMonoid.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : OrderClosedTopology.{u1} α _inst_2 (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))] {f : ι -> α} {a : α} (s : Finset.{u2} ι), (forall (i : ι), (Not (Membership.mem.{u2, u2} ι (Finset.{u2} ι) (Finset.instMembershipFinset.{u2} ι) i s)) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (AddMonoid.toZero.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1))))) (f i))) -> (HasSum.{u1, u2} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) _inst_2 f a) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))) (Finset.sum.{u1, u2} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) s (fun (i : ι) => f i)) a)
Case conversion may be inaccurate. Consider using '#align sum_le_has_sum sum_le_hasSumₓ'. -/
@@ -134,7 +154,7 @@ theorem sum_le_hasSum (s : Finset ι) (hs : ∀ (i) (_ : i ∉ s), 0 ≤ f i) (h
/- warning: is_lub_has_sum -> isLUB_hasSum is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a : α}, (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) (f i)) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a) -> (IsLUB.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1)) (Set.range.{u2, succ u1} α (Finset.{u1} ι) (fun (s : Finset.{u1} ι) => Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i))) a)
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a : α}, (forall (i : ι), LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) (f i)) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a) -> (IsLUB.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1)) (Set.range.{u2, succ u1} α (Finset.{u1} ι) (fun (s : Finset.{u1} ι) => Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i))) a)
but is expected to have type
forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a : α}, (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))) (f i)) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a) -> (IsLUB.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1)) (Set.range.{u2, succ u1} α (Finset.{u1} ι) (fun (s : Finset.{u1} ι) => Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i))) a)
Case conversion may be inaccurate. Consider using '#align is_lub_has_sum isLUB_hasSumₓ'. -/
@@ -145,7 +165,7 @@ theorem isLUB_hasSum (h : ∀ i, 0 ≤ f i) (hf : HasSum f a) :
/- warning: le_has_sum -> le_hasSum is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a : α}, (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a) -> (forall (i : ι), (forall (b' : ι), (Ne.{succ u1} ι b' i) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) (f b'))) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (f i) a))
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a : α}, (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a) -> (forall (i : ι), (forall (b' : ι), (Ne.{succ u1} ι b' i) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) (f b'))) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (f i) a))
but is expected to have type
forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a : α}, (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a) -> (forall (i : ι), (forall (b' : ι), (Ne.{succ u1} ι b' i) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))) (f b'))) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (f i) a))
Case conversion may be inaccurate. Consider using '#align le_has_sum le_hasSumₓ'. -/
@@ -164,7 +184,7 @@ theorem le_hasSum (hf : HasSum f a) (i : ι) (hb : ∀ (b') (_ : b' ≠ i), 0
/- warning: sum_le_tsum -> sum_le_tsum is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} (s : Finset.{u1} ι), (forall (i : ι), (Not (Membership.Mem.{u1, u1} ι (Finset.{u1} ι) (Finset.hasMem.{u1} ι) i s)) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) (f i))) -> (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i)) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i)))
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} (s : Finset.{u1} ι), (forall (i : ι), (Not (Membership.Mem.{u1, u1} ι (Finset.{u1} ι) (Finset.hasMem.{u1} ι) i s)) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) (f i))) -> (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i)) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i)))
but is expected to have type
forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : OrderedAddCommMonoid.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : OrderClosedTopology.{u1} α _inst_2 (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))] {f : ι -> α} (s : Finset.{u2} ι), (forall (i : ι), (Not (Membership.mem.{u2, u2} ι (Finset.{u2} ι) (Finset.instMembershipFinset.{u2} ι) i s)) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (AddMonoid.toZero.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1))))) (f i))) -> (Summable.{u1, u2} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) _inst_2 f) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))) (Finset.sum.{u1, u2} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) s (fun (i : ι) => f i)) (tsum.{u1, u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) _inst_2 ι (fun (i : ι) => f i)))
Case conversion may be inaccurate. Consider using '#align sum_le_tsum sum_le_tsumₓ'. -/
@@ -176,7 +196,7 @@ theorem sum_le_tsum {f : ι → α} (s : Finset ι) (hs : ∀ (i) (_ : i ∉ s),
/- warning: le_tsum -> le_tsum is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α}, (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f) -> (forall (i : ι), (forall (b' : ι), (Ne.{succ u1} ι b' i) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) (f b'))) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (f i) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i))))
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α}, (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f) -> (forall (i : ι), (forall (b' : ι), (Ne.{succ u1} ι b' i) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) (f b'))) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (f i) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i))))
but is expected to have type
forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α}, (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f) -> (forall (i : ι), (forall (b' : ι), (Ne.{succ u1} ι b' i) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))) (f b'))) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (f i) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i))))
Case conversion may be inaccurate. Consider using '#align le_tsum le_tsumₓ'. -/
@@ -185,29 +205,41 @@ theorem le_tsum (hf : Summable f) (i : ι) (hb : ∀ (b') (_ : b' ≠ i), 0 ≤
le_hasSum (Summable.hasSum hf) i hb
#align le_tsum le_tsum
-#print tsum_le_tsum /-
+/- warning: tsum_le_tsum -> tsum_le_tsum is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {g : ι -> α}, (forall (i : ι), LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (f i) (g i)) -> (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f) -> (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 g) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i)) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => g i)))
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {g : ι -> α}, (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (f i) (g i)) -> (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f) -> (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 g) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i)) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => g i)))
+Case conversion may be inaccurate. Consider using '#align tsum_le_tsum tsum_le_tsumₓ'. -/
theorem tsum_le_tsum (h : ∀ i, f i ≤ g i) (hf : Summable f) (hg : Summable g) :
(∑' i, f i) ≤ ∑' i, g i :=
hasSum_le h hf.HasSum hg.HasSum
#align tsum_le_tsum tsum_le_tsum
--/
-#print tsum_mono /-
+/- warning: tsum_mono -> tsum_mono is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {g : ι -> α}, (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f) -> (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 g) -> (LE.le.{max u1 u2} (ι -> α) (Pi.hasLe.{u1, u2} ι (fun (ᾰ : ι) => α) (fun (i : ι) => Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1)))) f g) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (n : ι) => f n)) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (n : ι) => g n)))
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {g : ι -> α}, (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f) -> (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 g) -> (LE.le.{max u1 u2} (ι -> α) (Pi.hasLe.{u1, u2} ι (fun (ᾰ : ι) => α) (fun (i : ι) => Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1)))) f g) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (n : ι) => f n)) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (n : ι) => g n)))
+Case conversion may be inaccurate. Consider using '#align tsum_mono tsum_monoₓ'. -/
@[mono]
theorem tsum_mono (hf : Summable f) (hg : Summable g) (h : f ≤ g) : (∑' n, f n) ≤ ∑' n, g n :=
tsum_le_tsum h hf hg
#align tsum_mono tsum_mono
--/
-#print tsum_le_of_sum_le /-
+/- warning: tsum_le_of_sum_le -> tsum_le_of_sum_le is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a₂ : α}, (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f) -> (forall (s : Finset.{u1} ι), LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i)) a₂) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i)) a₂)
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a₂ : α}, (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f) -> (forall (s : Finset.{u1} ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i)) a₂) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i)) a₂)
+Case conversion may be inaccurate. Consider using '#align tsum_le_of_sum_le tsum_le_of_sum_leₓ'. -/
theorem tsum_le_of_sum_le (hf : Summable f) (h : ∀ s, (∑ i in s, f i) ≤ a₂) : (∑' i, f i) ≤ a₂ :=
hasSum_le_of_sum_le hf.HasSum h
#align tsum_le_of_sum_le tsum_le_of_sum_le
--/
/- warning: tsum_le_of_sum_le' -> tsum_le_of_sum_le' is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a₂ : α}, (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) a₂) -> (forall (s : Finset.{u1} ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i)) a₂) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i)) a₂)
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a₂ : α}, (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) a₂) -> (forall (s : Finset.{u1} ι), LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i)) a₂) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i)) a₂)
but is expected to have type
forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a₂ : α}, (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))) a₂) -> (forall (s : Finset.{u1} ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i)) a₂) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i)) a₂)
Case conversion may be inaccurate. Consider using '#align tsum_le_of_sum_le' tsum_le_of_sum_le'ₓ'. -/
@@ -221,7 +253,7 @@ theorem tsum_le_of_sum_le' (ha₂ : 0 ≤ a₂) (h : ∀ s, (∑ i in s, f i)
/- warning: has_sum.nonneg -> HasSum.nonneg is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {g : ι -> α} {a : α}, (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) (g i)) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 g a) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) a)
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {g : ι -> α} {a : α}, (forall (i : ι), LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) (g i)) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 g a) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) a)
but is expected to have type
forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {g : ι -> α} {a : α}, (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))) (g i)) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 g a) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))) a)
Case conversion may be inaccurate. Consider using '#align has_sum.nonneg HasSum.nonnegₓ'. -/
@@ -231,7 +263,7 @@ theorem HasSum.nonneg (h : ∀ i, 0 ≤ g i) (ha : HasSum g a) : 0 ≤ a :=
/- warning: has_sum.nonpos -> HasSum.nonpos is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {g : ι -> α} {a : α}, (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (g i) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1)))))))) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 g a) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) a (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))))
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {g : ι -> α} {a : α}, (forall (i : ι), LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (g i) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1)))))))) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 g a) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) a (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))))
but is expected to have type
forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {g : ι -> α} {a : α}, (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (g i) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1)))))) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 g a) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) a (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))
Case conversion may be inaccurate. Consider using '#align has_sum.nonpos HasSum.nonposₓ'. -/
@@ -241,7 +273,7 @@ theorem HasSum.nonpos (h : ∀ i, g i ≤ 0) (ha : HasSum g a) : a ≤ 0 :=
/- warning: tsum_nonneg -> tsum_nonneg is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {g : ι -> α}, (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) (g i)) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => g i)))
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {g : ι -> α}, (forall (i : ι), LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) (g i)) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => g i)))
but is expected to have type
forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {g : ι -> α}, (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))) (g i)) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => g i)))
Case conversion may be inaccurate. Consider using '#align tsum_nonneg tsum_nonnegₓ'. -/
@@ -254,7 +286,7 @@ theorem tsum_nonneg (h : ∀ i, 0 ≤ g i) : 0 ≤ ∑' i, g i :=
/- warning: tsum_nonpos -> tsum_nonpos is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α}, (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (f i) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1)))))))) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i)) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))))
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α}, (forall (i : ι), LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (f i) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1)))))))) -> (LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i)) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))))
but is expected to have type
forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α}, (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (f i) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1)))))) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i)) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))
Case conversion may be inaccurate. Consider using '#align tsum_nonpos tsum_nonposₓ'. -/
@@ -274,7 +306,7 @@ variable [OrderedAddCommGroup α] [TopologicalSpace α] [TopologicalAddGroup α]
/- warning: has_sum_lt -> hasSum_lt is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : TopologicalAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {g : ι -> α} {a₁ : α} {a₂ : α} {i : ι}, (LE.le.{max u1 u2} (ι -> α) (Pi.hasLe.{u1, u2} ι (fun (ᾰ : ι) => α) (fun (i : ι) => Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1)))) f g) -> (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (f i) (g i)) -> (HasSum.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 f a₁) -> (HasSum.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 g a₂) -> (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) a₁ a₂)
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : TopologicalAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {g : ι -> α} {a₁ : α} {a₂ : α} {i : ι}, (LE.le.{max u1 u2} (ι -> α) (Pi.hasLe.{u1, u2} ι (fun (ᾰ : ι) => α) (fun (i : ι) => Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1)))) f g) -> (LT.lt.{u2} α (Preorder.toHasLt.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (f i) (g i)) -> (HasSum.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 f a₁) -> (HasSum.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 g a₂) -> (LT.lt.{u2} α (Preorder.toHasLt.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) a₁ a₂)
but is expected to have type
forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : OrderedAddCommGroup.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : TopologicalAddGroup.{u1} α _inst_2 (AddCommGroup.toAddGroup.{u1} α (OrderedAddCommGroup.toAddCommGroup.{u1} α _inst_1))] [_inst_4 : OrderClosedTopology.{u1} α _inst_2 (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α _inst_1))] {f : ι -> α} {g : ι -> α} {a₁ : α} {a₂ : α} {i : ι}, (LE.le.{max u2 u1} (ι -> α) (Pi.hasLe.{u2, u1} ι (fun (ᾰ : ι) => α) (fun (i : ι) => Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α _inst_1)))) f g) -> (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α _inst_1))) (f i) (g i)) -> (HasSum.{u1, u2} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u1} α _inst_1)) _inst_2 f a₁) -> (HasSum.{u1, u2} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u1} α _inst_1)) _inst_2 g a₂) -> (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α _inst_1))) a₁ a₂)
Case conversion may be inaccurate. Consider using '#align has_sum_lt hasSum_ltₓ'. -/
@@ -285,17 +317,21 @@ theorem hasSum_lt (h : f ≤ g) (hi : f i < g i) (hf : HasSum f a₁) (hg : HasS
simpa only [zero_sub, add_neg_cancel_left] using add_lt_add_of_lt_of_le hi this
#align has_sum_lt hasSum_lt
-#print hasSum_strict_mono /-
+/- warning: has_sum_strict_mono -> hasSum_strict_mono is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : TopologicalAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {g : ι -> α} {a₁ : α} {a₂ : α}, (HasSum.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 f a₁) -> (HasSum.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 g a₂) -> (LT.lt.{max u1 u2} (ι -> α) (Preorder.toHasLt.{max u1 u2} (ι -> α) (Pi.preorder.{u1, u2} ι (fun (ᾰ : ι) => α) (fun (i : ι) => PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1)))) f g) -> (LT.lt.{u2} α (Preorder.toHasLt.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) a₁ a₂)
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : TopologicalAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {g : ι -> α} {a₁ : α} {a₂ : α}, (HasSum.{u2, u1} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u2} α _inst_1)) _inst_2 f a₁) -> (HasSum.{u2, u1} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u2} α _inst_1)) _inst_2 g a₂) -> (LT.lt.{max u1 u2} (ι -> α) (Preorder.toLT.{max u1 u2} (ι -> α) (Pi.preorder.{u1, u2} ι (fun (ᾰ : ι) => α) (fun (i : ι) => PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1)))) f g) -> (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) a₁ a₂)
+Case conversion may be inaccurate. Consider using '#align has_sum_strict_mono hasSum_strict_monoₓ'. -/
@[mono]
theorem hasSum_strict_mono (hf : HasSum f a₁) (hg : HasSum g a₂) (h : f < g) : a₁ < a₂ :=
let ⟨hle, i, hi⟩ := Pi.lt_def.mp h
hasSum_lt hle hi hf hg
#align has_sum_strict_mono hasSum_strict_mono
--/
/- warning: tsum_lt_tsum -> tsum_lt_tsum is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : TopologicalAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {g : ι -> α} {i : ι}, (LE.le.{max u1 u2} (ι -> α) (Pi.hasLe.{u1, u2} ι (fun (ᾰ : ι) => α) (fun (i : ι) => Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1)))) f g) -> (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (f i) (g i)) -> (Summable.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 f) -> (Summable.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 g) -> (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 ι (fun (n : ι) => f n)) (tsum.{u2, u1} α (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 ι (fun (n : ι) => g n)))
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : TopologicalAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {g : ι -> α} {i : ι}, (LE.le.{max u1 u2} (ι -> α) (Pi.hasLe.{u1, u2} ι (fun (ᾰ : ι) => α) (fun (i : ι) => Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1)))) f g) -> (LT.lt.{u2} α (Preorder.toHasLt.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (f i) (g i)) -> (Summable.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 f) -> (Summable.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 g) -> (LT.lt.{u2} α (Preorder.toHasLt.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 ι (fun (n : ι) => f n)) (tsum.{u2, u1} α (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 ι (fun (n : ι) => g n)))
but is expected to have type
forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : OrderedAddCommGroup.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : TopologicalAddGroup.{u1} α _inst_2 (AddCommGroup.toAddGroup.{u1} α (OrderedAddCommGroup.toAddCommGroup.{u1} α _inst_1))] [_inst_4 : OrderClosedTopology.{u1} α _inst_2 (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α _inst_1))] {f : ι -> α} {g : ι -> α} {i : ι}, (LE.le.{max u2 u1} (ι -> α) (Pi.hasLe.{u2, u1} ι (fun (ᾰ : ι) => α) (fun (i : ι) => Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α _inst_1)))) f g) -> (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α _inst_1))) (f i) (g i)) -> (Summable.{u1, u2} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u1} α _inst_1)) _inst_2 f) -> (Summable.{u1, u2} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u1} α _inst_1)) _inst_2 g) -> (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α _inst_1))) (tsum.{u1, u2} α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u1} α _inst_1)) _inst_2 ι (fun (n : ι) => f n)) (tsum.{u1, u2} α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u1} α _inst_1)) _inst_2 ι (fun (n : ι) => g n)))
Case conversion may be inaccurate. Consider using '#align tsum_lt_tsum tsum_lt_tsumₓ'. -/
@@ -304,18 +340,22 @@ theorem tsum_lt_tsum (h : f ≤ g) (hi : f i < g i) (hf : Summable f) (hg : Summ
hasSum_lt h hi hf.HasSum hg.HasSum
#align tsum_lt_tsum tsum_lt_tsum
-#print tsum_strict_mono /-
+/- warning: tsum_strict_mono -> tsum_strict_mono is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : TopologicalAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {g : ι -> α}, (Summable.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 f) -> (Summable.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 g) -> (LT.lt.{max u1 u2} (ι -> α) (Preorder.toHasLt.{max u1 u2} (ι -> α) (Pi.preorder.{u1, u2} ι (fun (ᾰ : ι) => α) (fun (i : ι) => PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1)))) f g) -> (LT.lt.{u2} α (Preorder.toHasLt.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 ι (fun (n : ι) => f n)) (tsum.{u2, u1} α (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 ι (fun (n : ι) => g n)))
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : TopologicalAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {g : ι -> α}, (Summable.{u2, u1} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u2} α _inst_1)) _inst_2 f) -> (Summable.{u2, u1} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u2} α _inst_1)) _inst_2 g) -> (LT.lt.{max u1 u2} (ι -> α) (Preorder.toLT.{max u1 u2} (ι -> α) (Pi.preorder.{u1, u2} ι (fun (ᾰ : ι) => α) (fun (i : ι) => PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1)))) f g) -> (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u2} α _inst_1)) _inst_2 ι (fun (n : ι) => f n)) (tsum.{u2, u1} α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u2} α _inst_1)) _inst_2 ι (fun (n : ι) => g n)))
+Case conversion may be inaccurate. Consider using '#align tsum_strict_mono tsum_strict_monoₓ'. -/
@[mono]
theorem tsum_strict_mono (hf : Summable f) (hg : Summable g) (h : f < g) :
(∑' n, f n) < ∑' n, g n :=
let ⟨hle, i, hi⟩ := Pi.lt_def.mp h
tsum_lt_tsum hle hi hf hg
#align tsum_strict_mono tsum_strict_mono
--/
/- warning: tsum_pos -> tsum_pos is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : TopologicalAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))] {g : ι -> α}, (Summable.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 g) -> (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))))))) (g i)) -> (forall (i : ι), (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))))))) (g i)) -> (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))))))) (tsum.{u2, u1} α (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 ι (fun (i : ι) => g i))))
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : TopologicalAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))] {g : ι -> α}, (Summable.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 g) -> (forall (i : ι), LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))))))) (g i)) -> (forall (i : ι), (LT.lt.{u2} α (Preorder.toHasLt.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))))))) (g i)) -> (LT.lt.{u2} α (Preorder.toHasLt.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))))))) (tsum.{u2, u1} α (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 ι (fun (i : ι) => g i))))
but is expected to have type
forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : TopologicalAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))] {g : ι -> α}, (Summable.{u2, u1} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u2} α _inst_1)) _inst_2 g) -> (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (NegZeroClass.toZero.{u2} α (SubNegZeroMonoid.toNegZeroClass.{u2} α (SubtractionMonoid.toSubNegZeroMonoid.{u2} α (SubtractionCommMonoid.toSubtractionMonoid.{u2} α (AddCommGroup.toDivisionAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))))) (g i)) -> (forall (i : ι), (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (NegZeroClass.toZero.{u2} α (SubNegZeroMonoid.toNegZeroClass.{u2} α (SubtractionMonoid.toSubNegZeroMonoid.{u2} α (SubtractionCommMonoid.toSubtractionMonoid.{u2} α (AddCommGroup.toDivisionAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))))) (g i)) -> (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (NegZeroClass.toZero.{u2} α (SubNegZeroMonoid.toNegZeroClass.{u2} α (SubtractionMonoid.toSubNegZeroMonoid.{u2} α (SubtractionCommMonoid.toSubtractionMonoid.{u2} α (AddCommGroup.toDivisionAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))))) (tsum.{u2, u1} α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u2} α _inst_1)) _inst_2 ι (fun (i : ι) => g i))))
Case conversion may be inaccurate. Consider using '#align tsum_pos tsum_posₓ'. -/
@@ -327,7 +367,7 @@ theorem tsum_pos (hsum : Summable g) (hg : ∀ i, 0 ≤ g i) (i : ι) (hi : 0 <
/- warning: has_sum_zero_iff_of_nonneg -> hasSum_zero_iff_of_nonneg is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : TopologicalAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))] {f : ι -> α}, (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))))))) (f i)) -> (Iff (HasSum.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 f (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))))))) (Eq.{max (succ u1) (succ u2)} (ι -> α) f (OfNat.ofNat.{max u1 u2} (ι -> α) 0 (OfNat.mk.{max u1 u2} (ι -> α) 0 (Zero.zero.{max u1 u2} (ι -> α) (Pi.instZero.{u1, u2} ι (fun (ᾰ : ι) => α) (fun (i : ι) => AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))))))))))
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : TopologicalAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))] {f : ι -> α}, (forall (i : ι), LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))))))) (f i)) -> (Iff (HasSum.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 f (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))))))) (Eq.{max (succ u1) (succ u2)} (ι -> α) f (OfNat.ofNat.{max u1 u2} (ι -> α) 0 (OfNat.mk.{max u1 u2} (ι -> α) 0 (Zero.zero.{max u1 u2} (ι -> α) (Pi.instZero.{u1, u2} ι (fun (ᾰ : ι) => α) (fun (i : ι) => AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))))))))))
but is expected to have type
forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {_inst_4 : ι -> α}, (forall (ᾰ : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))) (_inst_4 ᾰ)) -> (Iff (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 _inst_4 (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1)))))) (Eq.{max (succ u1) (succ u2)} (ι -> α) _inst_4 (OfNat.ofNat.{max u1 u2} (ι -> α) 0 (Zero.toOfNat0.{max u1 u2} (ι -> α) (Pi.instZero.{u1, u2} ι (fun (a._@.Mathlib.Topology.Algebra.InfiniteSum.Order._hyg.1730 : ι) => α) (fun (i : ι) => AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))))
Case conversion may be inaccurate. Consider using '#align has_sum_zero_iff_of_nonneg hasSum_zero_iff_of_nonnegₓ'. -/
@@ -348,17 +388,25 @@ section CanonicallyOrderedAddMonoid
variable [CanonicallyOrderedAddMonoid α] [TopologicalSpace α] [OrderClosedTopology α] {f : ι → α}
{a : α}
-#print le_hasSum' /-
+/- warning: le_has_sum' -> le_hasSum' is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : CanonicallyOrderedAddMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))] {f : ι -> α} {a : α}, (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 f a) -> (forall (i : ι), LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))) (f i) a)
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : CanonicallyOrderedAddMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))] {f : ι -> α} {a : α}, (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 f a) -> (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))) (f i) a)
+Case conversion may be inaccurate. Consider using '#align le_has_sum' le_hasSum'ₓ'. -/
theorem le_hasSum' (hf : HasSum f a) (i : ι) : f i ≤ a :=
le_hasSum hf i fun _ _ => zero_le _
#align le_has_sum' le_hasSum'
--/
-#print le_tsum' /-
+/- warning: le_tsum' -> le_tsum' is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : CanonicallyOrderedAddMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))] {f : ι -> α}, (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 f) -> (forall (i : ι), LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))) (f i) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 ι (fun (i : ι) => f i)))
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : CanonicallyOrderedAddMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))] {f : ι -> α}, (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 f) -> (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))) (f i) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 ι (fun (i : ι) => f i)))
+Case conversion may be inaccurate. Consider using '#align le_tsum' le_tsum'ₓ'. -/
theorem le_tsum' (hf : Summable f) (i : ι) : f i ≤ ∑' i, f i :=
le_tsum hf i fun _ _ => zero_le _
#align le_tsum' le_tsum'
--/
/- warning: has_sum_zero_iff -> hasSum_zero_iff is a dubious translation:
lean 3 declaration is
@@ -417,7 +465,7 @@ the existence of a least upper bound.
/- warning: has_sum_of_is_lub_of_nonneg -> hasSum_of_isLUB_of_nonneg is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : LinearOrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))] {f : ι -> α} (i : α), (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))))))) (f i)) -> (IsLUB.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1))) (Set.range.{u2, succ u1} α (Finset.{u1} ι) (fun (s : Finset.{u1} ι) => Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) s (fun (i : ι) => f i))) i) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 f i)
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : LinearOrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))] {f : ι -> α} (i : α), (forall (i : ι), LE.le.{u2} α (Preorder.toHasLe.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))))))) (f i)) -> (IsLUB.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1))) (Set.range.{u2, succ u1} α (Finset.{u1} ι) (fun (s : Finset.{u1} ι) => Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) s (fun (i : ι) => f i))) i) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 f i)
but is expected to have type
forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : LinearOrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))] {f : ι -> α} (i : α), (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (LinearOrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))) (f i)) -> (IsLUB.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1))) (Set.range.{u2, succ u1} α (Finset.{u1} ι) (fun (s : Finset.{u1} ι) => Finset.sum.{u2, u1} α ι (LinearOrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i))) i) -> (HasSum.{u2, u1} α ι (LinearOrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f i)
Case conversion may be inaccurate. Consider using '#align has_sum_of_is_lub_of_nonneg hasSum_of_isLUB_of_nonnegₓ'. -/
@@ -472,7 +520,7 @@ alias summable_abs_iff ↔ Summable.of_abs Summable.abs
/- warning: finite_of_summable_const -> Set.Finite.of_summable_const is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : LinearOrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : Archimedean.{u2} α (OrderedCancelAddCommMonoid.toOrderedAddCommMonoid.{u2} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))] {b : α}, (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))))))))) b) -> (Summable.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1))) _inst_2 (fun (i : ι) => b)) -> (Set.Finite.{u1} ι (Set.univ.{u1} ι))
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : LinearOrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : Archimedean.{u2} α (OrderedCancelAddCommMonoid.toOrderedAddCommMonoid.{u2} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))] {b : α}, (LT.lt.{u2} α (Preorder.toHasLt.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))))))))) b) -> (Summable.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1))) _inst_2 (fun (i : ι) => b)) -> (Set.Finite.{u1} ι (Set.univ.{u1} ι))
but is expected to have type
forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : LinearOrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : Archimedean.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u2} α (LinearOrderedAddCommGroup.toLinearOrderedAddCancelCommMonoid.{u2} α _inst_1)))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))] {b : α}, (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (NegZeroClass.toZero.{u2} α (SubNegZeroMonoid.toNegZeroClass.{u2} α (SubtractionMonoid.toSubNegZeroMonoid.{u2} α (SubtractionCommMonoid.toSubtractionMonoid.{u2} α (AddCommGroup.toDivisionAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1))))))))) b) -> (Summable.{u2, u1} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} α (LinearOrderedAddCommGroup.toLinearOrderedAddCancelCommMonoid.{u2} α _inst_1))) _inst_2 (fun (i : ι) => b)) -> (Set.Finite.{u1} ι (Set.univ.{u1} ι))
Case conversion may be inaccurate. Consider using '#align finite_of_summable_const Set.Finite.of_summable_constₓ'. -/
@@ -497,7 +545,7 @@ end LinearOrder
/- warning: summable.tendsto_top_of_pos -> Summable.tendsto_atTop_of_pos is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : OrderTopology.{u1} α _inst_2 (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α (StrictOrderedRing.toOrderedAddCommGroup.{u1} α (LinearOrderedRing.toStrictOrderedRing.{u1} α (LinearOrderedCommRing.toLinearOrderedRing.{u1} α (LinearOrderedField.toLinearOrderedCommRing.{u1} α _inst_1))))))] {f : Nat -> α}, (Summable.{u1, 0} α Nat (AddCommGroup.toAddCommMonoid.{u1} α (OrderedAddCommGroup.toAddCommGroup.{u1} α (StrictOrderedRing.toOrderedAddCommGroup.{u1} α (LinearOrderedRing.toStrictOrderedRing.{u1} α (LinearOrderedCommRing.toLinearOrderedRing.{u1} α (LinearOrderedField.toLinearOrderedCommRing.{u1} α _inst_1)))))) _inst_2 (Inv.inv.{u1} (Nat -> α) (Pi.instInv.{0, u1} Nat (fun (ᾰ : Nat) => α) (fun (i : Nat) => DivInvMonoid.toHasInv.{u1} α (DivisionRing.toDivInvMonoid.{u1} α (Field.toDivisionRing.{u1} α (LinearOrderedField.toField.{u1} α _inst_1))))) f)) -> (forall (n : Nat), LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α (StrictOrderedRing.toOrderedAddCommGroup.{u1} α (LinearOrderedRing.toStrictOrderedRing.{u1} α (LinearOrderedCommRing.toLinearOrderedRing.{u1} α (LinearOrderedField.toLinearOrderedCommRing.{u1} α _inst_1))))))) (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (DivisionRing.toRing.{u1} α (Field.toDivisionRing.{u1} α (LinearOrderedField.toField.{u1} α _inst_1))))))))))) (f n)) -> (Filter.Tendsto.{0, u1} Nat α f (Filter.atTop.{0} Nat (PartialOrder.toPreorder.{0} Nat (OrderedCancelAddCommMonoid.toPartialOrder.{0} Nat (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} Nat Nat.strictOrderedSemiring)))) (Filter.atTop.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α (StrictOrderedRing.toOrderedAddCommGroup.{u1} α (LinearOrderedRing.toStrictOrderedRing.{u1} α (LinearOrderedCommRing.toLinearOrderedRing.{u1} α (LinearOrderedField.toLinearOrderedCommRing.{u1} α _inst_1))))))))
+ forall {α : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : OrderTopology.{u1} α _inst_2 (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α (StrictOrderedRing.toOrderedAddCommGroup.{u1} α (LinearOrderedRing.toStrictOrderedRing.{u1} α (LinearOrderedCommRing.toLinearOrderedRing.{u1} α (LinearOrderedField.toLinearOrderedCommRing.{u1} α _inst_1))))))] {f : Nat -> α}, (Summable.{u1, 0} α Nat (AddCommGroup.toAddCommMonoid.{u1} α (OrderedAddCommGroup.toAddCommGroup.{u1} α (StrictOrderedRing.toOrderedAddCommGroup.{u1} α (LinearOrderedRing.toStrictOrderedRing.{u1} α (LinearOrderedCommRing.toLinearOrderedRing.{u1} α (LinearOrderedField.toLinearOrderedCommRing.{u1} α _inst_1)))))) _inst_2 (Inv.inv.{u1} (Nat -> α) (Pi.instInv.{0, u1} Nat (fun (ᾰ : Nat) => α) (fun (i : Nat) => DivInvMonoid.toHasInv.{u1} α (DivisionRing.toDivInvMonoid.{u1} α (Field.toDivisionRing.{u1} α (LinearOrderedField.toField.{u1} α _inst_1))))) f)) -> (forall (n : Nat), LT.lt.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α (StrictOrderedRing.toOrderedAddCommGroup.{u1} α (LinearOrderedRing.toStrictOrderedRing.{u1} α (LinearOrderedCommRing.toLinearOrderedRing.{u1} α (LinearOrderedField.toLinearOrderedCommRing.{u1} α _inst_1))))))) (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (DivisionRing.toRing.{u1} α (Field.toDivisionRing.{u1} α (LinearOrderedField.toField.{u1} α _inst_1))))))))))) (f n)) -> (Filter.Tendsto.{0, u1} Nat α f (Filter.atTop.{0} Nat (PartialOrder.toPreorder.{0} Nat (OrderedCancelAddCommMonoid.toPartialOrder.{0} Nat (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} Nat Nat.strictOrderedSemiring)))) (Filter.atTop.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α (StrictOrderedRing.toOrderedAddCommGroup.{u1} α (LinearOrderedRing.toStrictOrderedRing.{u1} α (LinearOrderedCommRing.toLinearOrderedRing.{u1} α (LinearOrderedField.toLinearOrderedCommRing.{u1} α _inst_1))))))))
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : OrderTopology.{u1} α _inst_2 (PartialOrder.toPreorder.{u1} α (StrictOrderedRing.toPartialOrder.{u1} α (LinearOrderedRing.toStrictOrderedRing.{u1} α (LinearOrderedCommRing.toLinearOrderedRing.{u1} α (LinearOrderedField.toLinearOrderedCommRing.{u1} α _inst_1)))))] {f : Nat -> α}, (Summable.{u1, 0} α Nat (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} α (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} α (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} α (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} α (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} α (LinearOrderedField.toLinearOrderedSemifield.{u1} α _inst_1)))))) _inst_2 (Inv.inv.{u1} (Nat -> α) (Pi.instInv.{0, u1} Nat (fun (ᾰ : Nat) => α) (fun (i : Nat) => LinearOrderedField.toInv.{u1} α _inst_1)) f)) -> (forall (n : Nat), LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (StrictOrderedRing.toPartialOrder.{u1} α (LinearOrderedRing.toStrictOrderedRing.{u1} α (LinearOrderedCommRing.toLinearOrderedRing.{u1} α (LinearOrderedField.toLinearOrderedCommRing.{u1} α _inst_1)))))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (CommMonoidWithZero.toZero.{u1} α (CommGroupWithZero.toCommMonoidWithZero.{u1} α (Semifield.toCommGroupWithZero.{u1} α (LinearOrderedSemifield.toSemifield.{u1} α (LinearOrderedField.toLinearOrderedSemifield.{u1} α _inst_1))))))) (f n)) -> (Filter.Tendsto.{0, u1} Nat α f (Filter.atTop.{0} Nat (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring))) (Filter.atTop.{u1} α (PartialOrder.toPreorder.{u1} α (StrictOrderedRing.toPartialOrder.{u1} α (LinearOrderedRing.toStrictOrderedRing.{u1} α (LinearOrderedCommRing.toLinearOrderedRing.{u1} α (LinearOrderedField.toLinearOrderedCommRing.{u1} α _inst_1)))))))
Case conversion may be inaccurate. Consider using '#align summable.tendsto_top_of_pos Summable.tendsto_atTop_of_posₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/21e3562c5e12d846c7def5eff8cdbc520d7d4936
@@ -348,10 +348,10 @@ section CanonicallyOrderedAddMonoid
variable [CanonicallyOrderedAddMonoid α] [TopologicalSpace α] [OrderClosedTopology α] {f : ι → α}
{a : α}
-#print le_has_sum' /-
-theorem le_has_sum' (hf : HasSum f a) (i : ι) : f i ≤ a :=
+#print le_hasSum' /-
+theorem le_hasSum' (hf : HasSum f a) (i : ι) : f i ≤ a :=
le_hasSum hf i fun _ _ => zero_le _
-#align le_has_sum' le_has_sum'
+#align le_has_sum' le_hasSum'
-/
#print le_tsum' /-
@@ -370,7 +370,7 @@ theorem hasSum_zero_iff : HasSum f 0 ↔ ∀ x, f x = 0 :=
by
refine' ⟨_, fun h => _⟩
· contrapose!
- exact fun ⟨x, hx⟩ h => hx (nonpos_iff_eq_zero.1 <| le_has_sum' h x)
+ exact fun ⟨x, hx⟩ h => hx (nonpos_iff_eq_zero.1 <| le_hasSum' h x)
· convert hasSum_zero
exact funext h
#align has_sum_zero_iff hasSum_zero_iff
@@ -395,10 +395,10 @@ theorem tsum_ne_zero_iff (hf : Summable f) : (∑' i, f i) ≠ 0 ↔ ∃ x, f x
rw [Ne.def, tsum_eq_zero_iff hf, not_forall]
#align tsum_ne_zero_iff tsum_ne_zero_iff
-#print isLUB_has_sum' /-
-theorem isLUB_has_sum' (hf : HasSum f a) : IsLUB (Set.range fun s => ∑ i in s, f i) a :=
+#print isLUB_hasSum' /-
+theorem isLUB_hasSum' (hf : HasSum f a) : IsLUB (Set.range fun s => ∑ i in s, f i) a :=
isLUB_of_tendsto_atTop (Finset.sum_mono_set f) hf
-#align is_lub_has_sum' isLUB_has_sum'
+#align is_lub_has_sum' isLUB_hasSum'
-/
end CanonicallyOrderedAddMonoid
mathlib commit https://github.com/leanprover-community/mathlib/commit/21e3562c5e12d846c7def5eff8cdbc520d7d4936
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl
! This file was ported from Lean 3 source module topology.algebra.infinite_sum.order
-! leanprover-community/mathlib commit 32253a1a1071173b33dc7d6a218cf722c6feb514
+! leanprover-community/mathlib commit f47581155c818e6361af4e4fda60d27d020c226b
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -16,6 +16,9 @@ import Mathbin.Topology.Algebra.Order.MonotoneConvergence
/-!
# Infinite sum in an order
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
This file provides lemmas about the interaction of infinite sums and order operations.
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/3b267e70a936eebb21ab546f49a8df34dd300b25
@@ -31,11 +31,13 @@ section Preorder
variable [Preorder α] [AddCommMonoid α] [TopologicalSpace α] [OrderClosedTopology α] [T2Space α]
{f : ℕ → α} {c : α}
+#print tsum_le_of_sum_range_le /-
theorem tsum_le_of_sum_range_le (hf : Summable f) (h : ∀ n, (∑ i in range n, f i) ≤ c) :
(∑' n, f n) ≤ c :=
let ⟨l, hl⟩ := hf
hl.tsum_eq.symm ▸ le_of_tendsto' hl.tendsto_sum_nat h
#align tsum_le_of_sum_range_le tsum_le_of_sum_range_le
+-/
end Preorder
@@ -44,23 +46,37 @@ section OrderedAddCommMonoid
variable [OrderedAddCommMonoid α] [TopologicalSpace α] [OrderClosedTopology α] {f g : ι → α}
{a a₁ a₂ : α}
+#print hasSum_le /-
theorem hasSum_le (h : ∀ i, f i ≤ g i) (hf : HasSum f a₁) (hg : HasSum g a₂) : a₁ ≤ a₂ :=
le_of_tendsto_of_tendsto' hf hg fun s => sum_le_sum fun i _ => h i
#align has_sum_le hasSum_le
+-/
+#print hasSum_mono /-
@[mono]
theorem hasSum_mono (hf : HasSum f a₁) (hg : HasSum g a₂) (h : f ≤ g) : a₁ ≤ a₂ :=
hasSum_le h hf hg
#align has_sum_mono hasSum_mono
+-/
+#print hasSum_le_of_sum_le /-
theorem hasSum_le_of_sum_le (hf : HasSum f a) (h : ∀ s, (∑ i in s, f i) ≤ a₂) : a ≤ a₂ :=
le_of_tendsto' hf h
#align has_sum_le_of_sum_le hasSum_le_of_sum_le
+-/
+#print le_hasSum_of_le_sum /-
theorem le_hasSum_of_le_sum (hf : HasSum f a) (h : ∀ s, a₂ ≤ ∑ i in s, f i) : a₂ ≤ a :=
ge_of_tendsto' hf h
#align le_has_sum_of_le_sum le_hasSum_of_le_sum
+-/
+/- warning: has_sum_le_inj -> hasSum_le_inj is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {κ : Type.{u2}} {α : Type.{u3}} [_inst_1 : OrderedAddCommMonoid.{u3} α] [_inst_2 : TopologicalSpace.{u3} α] [_inst_3 : OrderClosedTopology.{u3} α _inst_2 (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))] {f : ι -> α} {a₁ : α} {a₂ : α} {g : κ -> α} (e : ι -> κ), (Function.Injective.{succ u1, succ u2} ι κ e) -> (forall (c : κ), (Not (Membership.Mem.{u2, u2} κ (Set.{u2} κ) (Set.hasMem.{u2} κ) c (Set.range.{u2, succ u1} κ ι e))) -> (LE.le.{u3} α (Preorder.toLE.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))) (OfNat.ofNat.{u3} α 0 (OfNat.mk.{u3} α 0 (Zero.zero.{u3} α (AddZeroClass.toHasZero.{u3} α (AddMonoid.toAddZeroClass.{u3} α (AddCommMonoid.toAddMonoid.{u3} α (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1))))))) (g c))) -> (forall (i : ι), LE.le.{u3} α (Preorder.toLE.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))) (f i) (g (e i))) -> (HasSum.{u3, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1) _inst_2 f a₁) -> (HasSum.{u3, u2} α κ (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1) _inst_2 g a₂) -> (LE.le.{u3} α (Preorder.toLE.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))) a₁ a₂)
+but is expected to have type
+ forall {ι : Type.{u3}} {κ : Type.{u2}} {α : Type.{u1}} [_inst_1 : OrderedAddCommMonoid.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : OrderClosedTopology.{u1} α _inst_2 (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))] {f : ι -> α} {a₁ : α} {a₂ : α} {g : κ -> α} (e : ι -> κ), (Function.Injective.{succ u3, succ u2} ι κ e) -> (forall (c : κ), (Not (Membership.mem.{u2, u2} κ (Set.{u2} κ) (Set.instMembershipSet.{u2} κ) c (Set.range.{u2, succ u3} κ ι e))) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (AddMonoid.toZero.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1))))) (g c))) -> (forall (i : ι), LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))) (f i) (g (e i))) -> (HasSum.{u1, u3} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) _inst_2 f a₁) -> (HasSum.{u1, u2} α κ (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) _inst_2 g a₂) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))) a₁ a₂)
+Case conversion may be inaccurate. Consider using '#align has_sum_le_inj hasSum_le_injₓ'. -/
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (c «expr ∉ » set.range[set.range] e) -/
theorem hasSum_le_inj {g : κ → α} (e : ι → κ) (he : Injective e)
(hs : ∀ (c) (_ : c ∉ Set.range e), 0 ≤ g c) (h : ∀ i, f i ≤ g (e i)) (hf : HasSum f a₁)
@@ -86,6 +102,12 @@ theorem hasSum_le_inj {g : κ → α} (e : ι → κ) (he : Injective e)
exact hs _ h
#align has_sum_le_inj hasSum_le_inj
+/- warning: tsum_le_tsum_of_inj -> tsum_le_tsum_of_inj is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {κ : Type.{u2}} {α : Type.{u3}} [_inst_1 : OrderedAddCommMonoid.{u3} α] [_inst_2 : TopologicalSpace.{u3} α] [_inst_3 : OrderClosedTopology.{u3} α _inst_2 (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))] {f : ι -> α} {g : κ -> α} (e : ι -> κ), (Function.Injective.{succ u1, succ u2} ι κ e) -> (forall (c : κ), (Not (Membership.Mem.{u2, u2} κ (Set.{u2} κ) (Set.hasMem.{u2} κ) c (Set.range.{u2, succ u1} κ ι e))) -> (LE.le.{u3} α (Preorder.toLE.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))) (OfNat.ofNat.{u3} α 0 (OfNat.mk.{u3} α 0 (Zero.zero.{u3} α (AddZeroClass.toHasZero.{u3} α (AddMonoid.toAddZeroClass.{u3} α (AddCommMonoid.toAddMonoid.{u3} α (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1))))))) (g c))) -> (forall (i : ι), LE.le.{u3} α (Preorder.toLE.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))) (f i) (g (e i))) -> (Summable.{u3, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1) _inst_2 f) -> (Summable.{u3, u2} α κ (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1) _inst_2 g) -> (LE.le.{u3} α (Preorder.toLE.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))) (tsum.{u3, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1) _inst_2 ι f) (tsum.{u3, u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1) _inst_2 κ g))
+but is expected to have type
+ forall {ι : Type.{u3}} {κ : Type.{u2}} {α : Type.{u1}} [_inst_1 : OrderedAddCommMonoid.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : OrderClosedTopology.{u1} α _inst_2 (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))] {f : ι -> α} {g : κ -> α} (e : ι -> κ), (Function.Injective.{succ u3, succ u2} ι κ e) -> (forall (c : κ), (Not (Membership.mem.{u2, u2} κ (Set.{u2} κ) (Set.instMembershipSet.{u2} κ) c (Set.range.{u2, succ u3} κ ι e))) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (AddMonoid.toZero.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1))))) (g c))) -> (forall (i : ι), LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))) (f i) (g (e i))) -> (Summable.{u1, u3} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) _inst_2 f) -> (Summable.{u1, u2} α κ (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) _inst_2 g) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))) (tsum.{u1, u3} α (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) _inst_2 ι f) (tsum.{u1, u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) _inst_2 κ g))
+Case conversion may be inaccurate. Consider using '#align tsum_le_tsum_of_inj tsum_le_tsum_of_injₓ'. -/
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (c «expr ∉ » set.range[set.range] e) -/
theorem tsum_le_tsum_of_inj {g : κ → α} (e : ι → κ) (he : Injective e)
(hs : ∀ (c) (_ : c ∉ Set.range e), 0 ≤ g c) (h : ∀ i, f i ≤ g (e i)) (hf : Summable f)
@@ -93,6 +115,12 @@ theorem tsum_le_tsum_of_inj {g : κ → α} (e : ι → κ) (he : Injective e)
hasSum_le_inj _ he hs h hf.HasSum hg.HasSum
#align tsum_le_tsum_of_inj tsum_le_tsum_of_inj
+/- warning: sum_le_has_sum -> sum_le_hasSum is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a : α} (s : Finset.{u1} ι), (forall (i : ι), (Not (Membership.Mem.{u1, u1} ι (Finset.{u1} ι) (Finset.hasMem.{u1} ι) i s)) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) (f i))) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i)) a)
+but is expected to have type
+ forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : OrderedAddCommMonoid.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : OrderClosedTopology.{u1} α _inst_2 (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))] {f : ι -> α} {a : α} (s : Finset.{u2} ι), (forall (i : ι), (Not (Membership.mem.{u2, u2} ι (Finset.{u2} ι) (Finset.instMembershipFinset.{u2} ι) i s)) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (AddMonoid.toZero.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1))))) (f i))) -> (HasSum.{u1, u2} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) _inst_2 f a) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))) (Finset.sum.{u1, u2} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) s (fun (i : ι) => f i)) a)
+Case conversion may be inaccurate. Consider using '#align sum_le_has_sum sum_le_hasSumₓ'. -/
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i «expr ∉ » s) -/
theorem sum_le_hasSum (s : Finset ι) (hs : ∀ (i) (_ : i ∉ s), 0 ≤ f i) (hf : HasSum f a) :
(∑ i in s, f i) ≤ a :=
@@ -101,11 +129,23 @@ theorem sum_le_hasSum (s : Finset ι) (hs : ∀ (i) (_ : i ∉ s), 0 ≤ f i) (h
⟨s, fun t hst => sum_le_sum_of_subset_of_nonneg hst fun i hbt hbs => hs i hbs⟩)
#align sum_le_has_sum sum_le_hasSum
+/- warning: is_lub_has_sum -> isLUB_hasSum is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a : α}, (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) (f i)) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a) -> (IsLUB.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1)) (Set.range.{u2, succ u1} α (Finset.{u1} ι) (fun (s : Finset.{u1} ι) => Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i))) a)
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a : α}, (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))) (f i)) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a) -> (IsLUB.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1)) (Set.range.{u2, succ u1} α (Finset.{u1} ι) (fun (s : Finset.{u1} ι) => Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i))) a)
+Case conversion may be inaccurate. Consider using '#align is_lub_has_sum isLUB_hasSumₓ'. -/
theorem isLUB_hasSum (h : ∀ i, 0 ≤ f i) (hf : HasSum f a) :
IsLUB (Set.range fun s => ∑ i in s, f i) a :=
isLUB_of_tendsto_atTop (Finset.sum_mono_set_of_nonneg h) hf
#align is_lub_has_sum isLUB_hasSum
+/- warning: le_has_sum -> le_hasSum is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a : α}, (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a) -> (forall (i : ι), (forall (b' : ι), (Ne.{succ u1} ι b' i) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) (f b'))) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (f i) a))
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a : α}, (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f a) -> (forall (i : ι), (forall (b' : ι), (Ne.{succ u1} ι b' i) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))) (f b'))) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (f i) a))
+Case conversion may be inaccurate. Consider using '#align le_has_sum le_hasSumₓ'. -/
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (b' «expr ≠ » i) -/
theorem le_hasSum (hf : HasSum f a) (i : ι) (hb : ∀ (b') (_ : b' ≠ i), 0 ≤ f b') : f i ≤ a :=
calc
@@ -119,31 +159,55 @@ theorem le_hasSum (hf : HasSum f a) (i : ι) (hb : ∀ (b') (_ : b' ≠ i), 0
#align le_has_sum le_hasSum
+/- warning: sum_le_tsum -> sum_le_tsum is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} (s : Finset.{u1} ι), (forall (i : ι), (Not (Membership.Mem.{u1, u1} ι (Finset.{u1} ι) (Finset.hasMem.{u1} ι) i s)) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) (f i))) -> (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i)) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i)))
+but is expected to have type
+ forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : OrderedAddCommMonoid.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : OrderClosedTopology.{u1} α _inst_2 (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))] {f : ι -> α} (s : Finset.{u2} ι), (forall (i : ι), (Not (Membership.mem.{u2, u2} ι (Finset.{u2} ι) (Finset.instMembershipFinset.{u2} ι) i s)) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (AddMonoid.toZero.{u1} α (AddCommMonoid.toAddMonoid.{u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1))))) (f i))) -> (Summable.{u1, u2} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) _inst_2 f) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α _inst_1))) (Finset.sum.{u1, u2} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) s (fun (i : ι) => f i)) (tsum.{u1, u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u1} α _inst_1) _inst_2 ι (fun (i : ι) => f i)))
+Case conversion may be inaccurate. Consider using '#align sum_le_tsum sum_le_tsumₓ'. -/
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i «expr ∉ » s) -/
theorem sum_le_tsum {f : ι → α} (s : Finset ι) (hs : ∀ (i) (_ : i ∉ s), 0 ≤ f i) (hf : Summable f) :
(∑ i in s, f i) ≤ ∑' i, f i :=
sum_le_hasSum s hs hf.HasSum
#align sum_le_tsum sum_le_tsum
+/- warning: le_tsum -> le_tsum is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α}, (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f) -> (forall (i : ι), (forall (b' : ι), (Ne.{succ u1} ι b' i) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) (f b'))) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (f i) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i))))
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α}, (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f) -> (forall (i : ι), (forall (b' : ι), (Ne.{succ u1} ι b' i) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))) (f b'))) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (f i) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i))))
+Case conversion may be inaccurate. Consider using '#align le_tsum le_tsumₓ'. -/
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (b' «expr ≠ » i) -/
theorem le_tsum (hf : Summable f) (i : ι) (hb : ∀ (b') (_ : b' ≠ i), 0 ≤ f b') : f i ≤ ∑' i, f i :=
le_hasSum (Summable.hasSum hf) i hb
#align le_tsum le_tsum
+#print tsum_le_tsum /-
theorem tsum_le_tsum (h : ∀ i, f i ≤ g i) (hf : Summable f) (hg : Summable g) :
(∑' i, f i) ≤ ∑' i, g i :=
hasSum_le h hf.HasSum hg.HasSum
#align tsum_le_tsum tsum_le_tsum
+-/
+#print tsum_mono /-
@[mono]
theorem tsum_mono (hf : Summable f) (hg : Summable g) (h : f ≤ g) : (∑' n, f n) ≤ ∑' n, g n :=
tsum_le_tsum h hf hg
#align tsum_mono tsum_mono
+-/
+#print tsum_le_of_sum_le /-
theorem tsum_le_of_sum_le (hf : Summable f) (h : ∀ s, (∑ i in s, f i) ≤ a₂) : (∑' i, f i) ≤ a₂ :=
hasSum_le_of_sum_le hf.HasSum h
#align tsum_le_of_sum_le tsum_le_of_sum_le
+-/
+/- warning: tsum_le_of_sum_le' -> tsum_le_of_sum_le' is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a₂ : α}, (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) a₂) -> (forall (s : Finset.{u1} ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i)) a₂) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i)) a₂)
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {a₂ : α}, (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))) a₂) -> (forall (s : Finset.{u1} ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i)) a₂) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i)) a₂)
+Case conversion may be inaccurate. Consider using '#align tsum_le_of_sum_le' tsum_le_of_sum_le'ₓ'. -/
theorem tsum_le_of_sum_le' (ha₂ : 0 ≤ a₂) (h : ∀ s, (∑ i in s, f i) ≤ a₂) : (∑' i, f i) ≤ a₂ :=
by
by_cases hf : Summable f
@@ -152,14 +216,32 @@ theorem tsum_le_of_sum_le' (ha₂ : 0 ≤ a₂) (h : ∀ s, (∑ i in s, f i)
exact ha₂
#align tsum_le_of_sum_le' tsum_le_of_sum_le'
+/- warning: has_sum.nonneg -> HasSum.nonneg is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {g : ι -> α} {a : α}, (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) (g i)) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 g a) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) a)
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {g : ι -> α} {a : α}, (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))) (g i)) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 g a) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))) a)
+Case conversion may be inaccurate. Consider using '#align has_sum.nonneg HasSum.nonnegₓ'. -/
theorem HasSum.nonneg (h : ∀ i, 0 ≤ g i) (ha : HasSum g a) : 0 ≤ a :=
hasSum_le h hasSum_zero ha
#align has_sum.nonneg HasSum.nonneg
+/- warning: has_sum.nonpos -> HasSum.nonpos is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {g : ι -> α} {a : α}, (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (g i) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1)))))))) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 g a) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) a (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))))
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {g : ι -> α} {a : α}, (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (g i) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1)))))) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 g a) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) a (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))
+Case conversion may be inaccurate. Consider using '#align has_sum.nonpos HasSum.nonposₓ'. -/
theorem HasSum.nonpos (h : ∀ i, g i ≤ 0) (ha : HasSum g a) : a ≤ 0 :=
hasSum_le h ha hasSum_zero
#align has_sum.nonpos HasSum.nonpos
+/- warning: tsum_nonneg -> tsum_nonneg is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {g : ι -> α}, (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) (g i)) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => g i)))
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {g : ι -> α}, (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))) (g i)) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => g i)))
+Case conversion may be inaccurate. Consider using '#align tsum_nonneg tsum_nonnegₓ'. -/
theorem tsum_nonneg (h : ∀ i, 0 ≤ g i) : 0 ≤ ∑' i, g i :=
by
by_cases hg : Summable g
@@ -167,6 +249,12 @@ theorem tsum_nonneg (h : ∀ i, 0 ≤ g i) : 0 ≤ ∑' i, g i :=
· simp [tsum_eq_zero_of_not_summable hg]
#align tsum_nonneg tsum_nonneg
+/- warning: tsum_nonpos -> tsum_nonpos is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α}, (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (f i) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1)))))))) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i)) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))))
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {f : ι -> α}, (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (f i) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1)))))) -> (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 ι (fun (i : ι) => f i)) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))
+Case conversion may be inaccurate. Consider using '#align tsum_nonpos tsum_nonposₓ'. -/
theorem tsum_nonpos (h : ∀ i, f i ≤ 0) : (∑' i, f i) ≤ 0 :=
by
by_cases hf : Summable f
@@ -181,6 +269,12 @@ section OrderedAddCommGroup
variable [OrderedAddCommGroup α] [TopologicalSpace α] [TopologicalAddGroup α]
[OrderClosedTopology α] {f g : ι → α} {a₁ a₂ : α} {i : ι}
+/- warning: has_sum_lt -> hasSum_lt is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : TopologicalAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {g : ι -> α} {a₁ : α} {a₂ : α} {i : ι}, (LE.le.{max u1 u2} (ι -> α) (Pi.hasLe.{u1, u2} ι (fun (ᾰ : ι) => α) (fun (i : ι) => Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1)))) f g) -> (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (f i) (g i)) -> (HasSum.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 f a₁) -> (HasSum.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 g a₂) -> (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) a₁ a₂)
+but is expected to have type
+ forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : OrderedAddCommGroup.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : TopologicalAddGroup.{u1} α _inst_2 (AddCommGroup.toAddGroup.{u1} α (OrderedAddCommGroup.toAddCommGroup.{u1} α _inst_1))] [_inst_4 : OrderClosedTopology.{u1} α _inst_2 (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α _inst_1))] {f : ι -> α} {g : ι -> α} {a₁ : α} {a₂ : α} {i : ι}, (LE.le.{max u2 u1} (ι -> α) (Pi.hasLe.{u2, u1} ι (fun (ᾰ : ι) => α) (fun (i : ι) => Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α _inst_1)))) f g) -> (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α _inst_1))) (f i) (g i)) -> (HasSum.{u1, u2} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u1} α _inst_1)) _inst_2 f a₁) -> (HasSum.{u1, u2} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u1} α _inst_1)) _inst_2 g a₂) -> (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α _inst_1))) a₁ a₂)
+Case conversion may be inaccurate. Consider using '#align has_sum_lt hasSum_ltₓ'. -/
theorem hasSum_lt (h : f ≤ g) (hi : f i < g i) (hf : HasSum f a₁) (hg : HasSum g a₂) : a₁ < a₂ :=
by
have : update f i 0 ≤ update g i 0 := update_le_update_iff.mpr ⟨rfl.le, fun i _ => h i⟩
@@ -188,30 +282,52 @@ theorem hasSum_lt (h : f ≤ g) (hi : f i < g i) (hf : HasSum f a₁) (hg : HasS
simpa only [zero_sub, add_neg_cancel_left] using add_lt_add_of_lt_of_le hi this
#align has_sum_lt hasSum_lt
+#print hasSum_strict_mono /-
@[mono]
theorem hasSum_strict_mono (hf : HasSum f a₁) (hg : HasSum g a₂) (h : f < g) : a₁ < a₂ :=
let ⟨hle, i, hi⟩ := Pi.lt_def.mp h
hasSum_lt hle hi hf hg
#align has_sum_strict_mono hasSum_strict_mono
+-/
+/- warning: tsum_lt_tsum -> tsum_lt_tsum is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : TopologicalAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))] {f : ι -> α} {g : ι -> α} {i : ι}, (LE.le.{max u1 u2} (ι -> α) (Pi.hasLe.{u1, u2} ι (fun (ᾰ : ι) => α) (fun (i : ι) => Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1)))) f g) -> (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (f i) (g i)) -> (Summable.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 f) -> (Summable.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 g) -> (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (tsum.{u2, u1} α (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 ι (fun (n : ι) => f n)) (tsum.{u2, u1} α (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 ι (fun (n : ι) => g n)))
+but is expected to have type
+ forall {ι : Type.{u2}} {α : Type.{u1}} [_inst_1 : OrderedAddCommGroup.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : TopologicalAddGroup.{u1} α _inst_2 (AddCommGroup.toAddGroup.{u1} α (OrderedAddCommGroup.toAddCommGroup.{u1} α _inst_1))] [_inst_4 : OrderClosedTopology.{u1} α _inst_2 (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α _inst_1))] {f : ι -> α} {g : ι -> α} {i : ι}, (LE.le.{max u2 u1} (ι -> α) (Pi.hasLe.{u2, u1} ι (fun (ᾰ : ι) => α) (fun (i : ι) => Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α _inst_1)))) f g) -> (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α _inst_1))) (f i) (g i)) -> (Summable.{u1, u2} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u1} α _inst_1)) _inst_2 f) -> (Summable.{u1, u2} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u1} α _inst_1)) _inst_2 g) -> (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α _inst_1))) (tsum.{u1, u2} α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u1} α _inst_1)) _inst_2 ι (fun (n : ι) => f n)) (tsum.{u1, u2} α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u1} α _inst_1)) _inst_2 ι (fun (n : ι) => g n)))
+Case conversion may be inaccurate. Consider using '#align tsum_lt_tsum tsum_lt_tsumₓ'. -/
theorem tsum_lt_tsum (h : f ≤ g) (hi : f i < g i) (hf : Summable f) (hg : Summable g) :
(∑' n, f n) < ∑' n, g n :=
hasSum_lt h hi hf.HasSum hg.HasSum
#align tsum_lt_tsum tsum_lt_tsum
+#print tsum_strict_mono /-
@[mono]
theorem tsum_strict_mono (hf : Summable f) (hg : Summable g) (h : f < g) :
(∑' n, f n) < ∑' n, g n :=
let ⟨hle, i, hi⟩ := Pi.lt_def.mp h
tsum_lt_tsum hle hi hf hg
#align tsum_strict_mono tsum_strict_mono
+-/
+/- warning: tsum_pos -> tsum_pos is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : TopologicalAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))] {g : ι -> α}, (Summable.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 g) -> (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))))))) (g i)) -> (forall (i : ι), (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))))))) (g i)) -> (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))))))) (tsum.{u2, u1} α (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 ι (fun (i : ι) => g i))))
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : TopologicalAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))] {g : ι -> α}, (Summable.{u2, u1} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u2} α _inst_1)) _inst_2 g) -> (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (NegZeroClass.toZero.{u2} α (SubNegZeroMonoid.toNegZeroClass.{u2} α (SubtractionMonoid.toSubNegZeroMonoid.{u2} α (SubtractionCommMonoid.toSubtractionMonoid.{u2} α (AddCommGroup.toDivisionAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))))) (g i)) -> (forall (i : ι), (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (NegZeroClass.toZero.{u2} α (SubNegZeroMonoid.toNegZeroClass.{u2} α (SubtractionMonoid.toSubNegZeroMonoid.{u2} α (SubtractionCommMonoid.toSubtractionMonoid.{u2} α (AddCommGroup.toDivisionAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))))) (g i)) -> (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (NegZeroClass.toZero.{u2} α (SubNegZeroMonoid.toNegZeroClass.{u2} α (SubtractionMonoid.toSubNegZeroMonoid.{u2} α (SubtractionCommMonoid.toSubtractionMonoid.{u2} α (AddCommGroup.toDivisionAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))))) (tsum.{u2, u1} α (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u2} α _inst_1)) _inst_2 ι (fun (i : ι) => g i))))
+Case conversion may be inaccurate. Consider using '#align tsum_pos tsum_posₓ'. -/
theorem tsum_pos (hsum : Summable g) (hg : ∀ i, 0 ≤ g i) (i : ι) (hi : 0 < g i) : 0 < ∑' i, g i :=
by
rw [← tsum_zero]
exact tsum_lt_tsum hg hi summable_zero hsum
#align tsum_pos tsum_pos
+/- warning: has_sum_zero_iff_of_nonneg -> hasSum_zero_iff_of_nonneg is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : TopologicalAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))] {f : ι -> α}, (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))))))) (f i)) -> (Iff (HasSum.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)) _inst_2 f (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))))))) (Eq.{max (succ u1) (succ u2)} (ι -> α) f (OfNat.ofNat.{max u1 u2} (ι -> α) 0 (OfNat.mk.{max u1 u2} (ι -> α) 0 (Zero.zero.{max u1 u2} (ι -> α) (Pi.instZero.{u1, u2} ι (fun (ᾰ : ι) => α) (fun (i : ι) => AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))))))))))
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))] {_inst_4 : ι -> α}, (forall (ᾰ : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))) (_inst_4 ᾰ)) -> (Iff (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 _inst_4 (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1)))))) (Eq.{max (succ u1) (succ u2)} (ι -> α) _inst_4 (OfNat.ofNat.{max u1 u2} (ι -> α) 0 (Zero.toOfNat0.{max u1 u2} (ι -> α) (Pi.instZero.{u1, u2} ι (fun (a._@.Mathlib.Topology.Algebra.InfiniteSum.Order._hyg.1730 : ι) => α) (fun (i : ι) => AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))))
+Case conversion may be inaccurate. Consider using '#align has_sum_zero_iff_of_nonneg hasSum_zero_iff_of_nonnegₓ'. -/
theorem hasSum_zero_iff_of_nonneg (hf : ∀ i, 0 ≤ f i) : HasSum f 0 ↔ f = 0 :=
by
refine' ⟨fun hf' => _, _⟩
@@ -229,14 +345,24 @@ section CanonicallyOrderedAddMonoid
variable [CanonicallyOrderedAddMonoid α] [TopologicalSpace α] [OrderClosedTopology α] {f : ι → α}
{a : α}
+#print le_has_sum' /-
theorem le_has_sum' (hf : HasSum f a) (i : ι) : f i ≤ a :=
le_hasSum hf i fun _ _ => zero_le _
#align le_has_sum' le_has_sum'
+-/
+#print le_tsum' /-
theorem le_tsum' (hf : Summable f) (i : ι) : f i ≤ ∑' i, f i :=
le_tsum hf i fun _ _ => zero_le _
#align le_tsum' le_tsum'
+-/
+/- warning: has_sum_zero_iff -> hasSum_zero_iff is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : CanonicallyOrderedAddMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))] {f : ι -> α}, Iff (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 f (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1))))))))) (forall (x : ι), Eq.{succ u2} α (f x) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))))))))
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : CanonicallyOrderedAddMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))] {f : ι -> α}, Iff (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 f (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1))))))) (forall (x : ι), Eq.{succ u2} α (f x) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))))))
+Case conversion may be inaccurate. Consider using '#align has_sum_zero_iff hasSum_zero_iffₓ'. -/
theorem hasSum_zero_iff : HasSum f 0 ↔ ∀ x, f x = 0 :=
by
refine' ⟨_, fun h => _⟩
@@ -246,17 +372,31 @@ theorem hasSum_zero_iff : HasSum f 0 ↔ ∀ x, f x = 0 :=
exact funext h
#align has_sum_zero_iff hasSum_zero_iff
+/- warning: tsum_eq_zero_iff -> tsum_eq_zero_iff is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : CanonicallyOrderedAddMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))] {f : ι -> α}, (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 f) -> (Iff (Eq.{succ u2} α (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 ι (fun (i : ι) => f i)) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1))))))))) (forall (x : ι), Eq.{succ u2} α (f x) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1))))))))))
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : CanonicallyOrderedAddMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))] {f : ι -> α}, (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 f) -> (Iff (Eq.{succ u2} α (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 ι (fun (i : ι) => f i)) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1))))))) (forall (x : ι), Eq.{succ u2} α (f x) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1))))))))
+Case conversion may be inaccurate. Consider using '#align tsum_eq_zero_iff tsum_eq_zero_iffₓ'. -/
theorem tsum_eq_zero_iff (hf : Summable f) : (∑' i, f i) = 0 ↔ ∀ x, f x = 0 := by
rw [← hasSum_zero_iff, hf.has_sum_iff]
#align tsum_eq_zero_iff tsum_eq_zero_iff
+/- warning: tsum_ne_zero_iff -> tsum_ne_zero_iff is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : CanonicallyOrderedAddMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))] {f : ι -> α}, (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 f) -> (Iff (Ne.{succ u2} α (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 ι (fun (i : ι) => f i)) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1))))))))) (Exists.{succ u1} ι (fun (x : ι) => Ne.{succ u2} α (f x) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))))))))))
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : CanonicallyOrderedAddMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))] {f : ι -> α}, (Summable.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 f) -> (Iff (Ne.{succ u2} α (tsum.{u2, u1} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 ι (fun (i : ι) => f i)) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1))))))) (Exists.{succ u1} ι (fun (x : ι) => Ne.{succ u2} α (f x) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))))))))
+Case conversion may be inaccurate. Consider using '#align tsum_ne_zero_iff tsum_ne_zero_iffₓ'. -/
theorem tsum_ne_zero_iff (hf : Summable f) : (∑' i, f i) ≠ 0 ↔ ∃ x, f x ≠ 0 := by
rw [Ne.def, tsum_eq_zero_iff hf, not_forall]
#align tsum_ne_zero_iff tsum_ne_zero_iff
+#print isLUB_has_sum' /-
theorem isLUB_has_sum' (hf : HasSum f a) : IsLUB (Set.range fun s => ∑ i in s, f i) a :=
isLUB_of_tendsto_atTop (Finset.sum_mono_set f) hf
#align is_lub_has_sum' isLUB_has_sum'
+-/
end CanonicallyOrderedAddMonoid
@@ -272,17 +412,31 @@ the existence of a least upper bound.
-/
+/- warning: has_sum_of_is_lub_of_nonneg -> hasSum_of_isLUB_of_nonneg is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : LinearOrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))] {f : ι -> α} (i : α), (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))))))) (f i)) -> (IsLUB.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1))) (Set.range.{u2, succ u1} α (Finset.{u1} ι) (fun (s : Finset.{u1} ι) => Finset.sum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) s (fun (i : ι) => f i))) i) -> (HasSum.{u2, u1} α ι (OrderedAddCommMonoid.toAddCommMonoid.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)) _inst_2 f i)
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : LinearOrderedAddCommMonoid.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : OrderTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))] {f : ι -> α} (i : α), (forall (i : ι), LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1)))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (LinearOrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))) (f i)) -> (IsLUB.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α _inst_1))) (Set.range.{u2, succ u1} α (Finset.{u1} ι) (fun (s : Finset.{u1} ι) => Finset.sum.{u2, u1} α ι (LinearOrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) s (fun (i : ι) => f i))) i) -> (HasSum.{u2, u1} α ι (LinearOrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1) _inst_2 f i)
+Case conversion may be inaccurate. Consider using '#align has_sum_of_is_lub_of_nonneg hasSum_of_isLUB_of_nonnegₓ'. -/
theorem hasSum_of_isLUB_of_nonneg [LinearOrderedAddCommMonoid α] [TopologicalSpace α]
[OrderTopology α] {f : ι → α} (i : α) (h : ∀ i, 0 ≤ f i)
(hf : IsLUB (Set.range fun s => ∑ i in s, f i) i) : HasSum f i :=
tendsto_atTop_isLUB (Finset.sum_mono_set_of_nonneg h) hf
#align has_sum_of_is_lub_of_nonneg hasSum_of_isLUB_of_nonneg
+#print hasSum_of_isLUB /-
theorem hasSum_of_isLUB [CanonicallyLinearOrderedAddMonoid α] [TopologicalSpace α] [OrderTopology α]
{f : ι → α} (b : α) (hf : IsLUB (Set.range fun s => ∑ i in s, f i) b) : HasSum f b :=
tendsto_atTop_isLUB (Finset.sum_mono_set f) hf
#align has_sum_of_is_lub hasSum_of_isLUB
+-/
+/- warning: summable_abs_iff -> summable_abs_iff is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : LinearOrderedAddCommGroup.{u2} α] [_inst_2 : UniformSpace.{u2} α] [_inst_3 : UniformAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))] [_inst_4 : CompleteSpace.{u2} α _inst_2] {f : ι -> α}, Iff (Summable.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1))) (UniformSpace.toTopologicalSpace.{u2} α _inst_2) (fun (x : ι) => Abs.abs.{u2} α (Neg.toHasAbs.{u2} α (SubNegMonoid.toHasNeg.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1))))) (SemilatticeSup.toHasSup.{u2} α (Lattice.toSemilatticeSup.{u2} α (LinearOrder.toLattice.{u2} α (LinearOrderedAddCommGroup.toLinearOrder.{u2} α _inst_1))))) (f x))) (Summable.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1))) (UniformSpace.toTopologicalSpace.{u2} α _inst_2) f)
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : LinearOrderedAddCommGroup.{u2} α] [_inst_2 : UniformSpace.{u2} α] [_inst_3 : UniformAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))] [_inst_4 : CompleteSpace.{u2} α _inst_2] {f : ι -> α}, Iff (Summable.{u2, u1} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} α (LinearOrderedAddCommGroup.toLinearOrderedAddCancelCommMonoid.{u2} α _inst_1))) (UniformSpace.toTopologicalSpace.{u2} α _inst_2) (fun (x : ι) => Abs.abs.{u2} α (Neg.toHasAbs.{u2} α (NegZeroClass.toNeg.{u2} α (SubNegZeroMonoid.toNegZeroClass.{u2} α (SubtractionMonoid.toSubNegZeroMonoid.{u2} α (SubtractionCommMonoid.toSubtractionMonoid.{u2} α (AddCommGroup.toDivisionAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1))))))) (SemilatticeSup.toSup.{u2} α (Lattice.toSemilatticeSup.{u2} α (DistribLattice.toLattice.{u2} α (instDistribLattice.{u2} α (LinearOrderedAddCommGroup.toLinearOrder.{u2} α _inst_1)))))) (f x))) (Summable.{u2, u1} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} α (LinearOrderedAddCommGroup.toLinearOrderedAddCancelCommMonoid.{u2} α _inst_1))) (UniformSpace.toTopologicalSpace.{u2} α _inst_2) f)
+Case conversion may be inaccurate. Consider using '#align summable_abs_iff summable_abs_iffₓ'. -/
theorem summable_abs_iff [LinearOrderedAddCommGroup α] [UniformSpace α] [UniformAddGroup α]
[CompleteSpace α] {f : ι → α} : (Summable fun x => |f x|) ↔ Summable f :=
have h1 : ∀ x : { x | 0 ≤ f x }, |f x| = f x := fun x => abs_of_nonneg x.2
@@ -297,13 +451,31 @@ theorem summable_abs_iff [LinearOrderedAddCommGroup α] [UniformSpace α] [Unifo
#align summable_abs_iff summable_abs_iff
+/- warning: summable.of_abs -> Summable.of_abs is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : LinearOrderedAddCommGroup.{u2} α] [_inst_2 : UniformSpace.{u2} α] [_inst_3 : UniformAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))] [_inst_4 : CompleteSpace.{u2} α _inst_2] {f : ι -> α}, (Summable.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1))) (UniformSpace.toTopologicalSpace.{u2} α _inst_2) (fun (x : ι) => Abs.abs.{u2} α (Neg.toHasAbs.{u2} α (SubNegMonoid.toHasNeg.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1))))) (SemilatticeSup.toHasSup.{u2} α (Lattice.toSemilatticeSup.{u2} α (LinearOrder.toLattice.{u2} α (LinearOrderedAddCommGroup.toLinearOrder.{u2} α _inst_1))))) (f x))) -> (Summable.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1))) (UniformSpace.toTopologicalSpace.{u2} α _inst_2) f)
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : LinearOrderedAddCommGroup.{u2} α] [_inst_2 : UniformSpace.{u2} α] [_inst_3 : UniformAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))] [_inst_4 : CompleteSpace.{u2} α _inst_2] {f : ι -> α}, (Summable.{u2, u1} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} α (LinearOrderedAddCommGroup.toLinearOrderedAddCancelCommMonoid.{u2} α _inst_1))) (UniformSpace.toTopologicalSpace.{u2} α _inst_2) (fun (x : ι) => Abs.abs.{u2} α (Neg.toHasAbs.{u2} α (NegZeroClass.toNeg.{u2} α (SubNegZeroMonoid.toNegZeroClass.{u2} α (SubtractionMonoid.toSubNegZeroMonoid.{u2} α (SubtractionCommMonoid.toSubtractionMonoid.{u2} α (AddCommGroup.toDivisionAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1))))))) (SemilatticeSup.toSup.{u2} α (Lattice.toSemilatticeSup.{u2} α (DistribLattice.toLattice.{u2} α (instDistribLattice.{u2} α (LinearOrderedAddCommGroup.toLinearOrder.{u2} α _inst_1)))))) (f x))) -> (Summable.{u2, u1} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} α (LinearOrderedAddCommGroup.toLinearOrderedAddCancelCommMonoid.{u2} α _inst_1))) (UniformSpace.toTopologicalSpace.{u2} α _inst_2) f)
+Case conversion may be inaccurate. Consider using '#align summable.of_abs Summable.of_absₓ'. -/
+/- warning: summable.abs -> Summable.abs is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : LinearOrderedAddCommGroup.{u2} α] [_inst_2 : UniformSpace.{u2} α] [_inst_3 : UniformAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))] [_inst_4 : CompleteSpace.{u2} α _inst_2] {f : ι -> α}, (Summable.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1))) (UniformSpace.toTopologicalSpace.{u2} α _inst_2) f) -> (Summable.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1))) (UniformSpace.toTopologicalSpace.{u2} α _inst_2) (fun (x : ι) => Abs.abs.{u2} α (Neg.toHasAbs.{u2} α (SubNegMonoid.toHasNeg.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1))))) (SemilatticeSup.toHasSup.{u2} α (Lattice.toSemilatticeSup.{u2} α (LinearOrder.toLattice.{u2} α (LinearOrderedAddCommGroup.toLinearOrder.{u2} α _inst_1))))) (f x)))
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : LinearOrderedAddCommGroup.{u2} α] [_inst_2 : UniformSpace.{u2} α] [_inst_3 : UniformAddGroup.{u2} α _inst_2 (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))] [_inst_4 : CompleteSpace.{u2} α _inst_2] {f : ι -> α}, (Summable.{u2, u1} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} α (LinearOrderedAddCommGroup.toLinearOrderedAddCancelCommMonoid.{u2} α _inst_1))) (UniformSpace.toTopologicalSpace.{u2} α _inst_2) f) -> (Summable.{u2, u1} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} α (LinearOrderedAddCommGroup.toLinearOrderedAddCancelCommMonoid.{u2} α _inst_1))) (UniformSpace.toTopologicalSpace.{u2} α _inst_2) (fun (x : ι) => Abs.abs.{u2} α (Neg.toHasAbs.{u2} α (NegZeroClass.toNeg.{u2} α (SubNegZeroMonoid.toNegZeroClass.{u2} α (SubtractionMonoid.toSubNegZeroMonoid.{u2} α (SubtractionCommMonoid.toSubtractionMonoid.{u2} α (AddCommGroup.toDivisionAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1))))))) (SemilatticeSup.toSup.{u2} α (Lattice.toSemilatticeSup.{u2} α (DistribLattice.toLattice.{u2} α (instDistribLattice.{u2} α (LinearOrderedAddCommGroup.toLinearOrder.{u2} α _inst_1)))))) (f x)))
+Case conversion may be inaccurate. Consider using '#align summable.abs Summable.absₓ'. -/
alias summable_abs_iff ↔ Summable.of_abs Summable.abs
#align summable.of_abs Summable.of_abs
#align summable.abs Summable.abs
+/- warning: finite_of_summable_const -> Set.Finite.of_summable_const is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : LinearOrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : Archimedean.{u2} α (OrderedCancelAddCommMonoid.toOrderedAddCommMonoid.{u2} α (OrderedAddCommGroup.toOrderedCancelAddCommMonoid.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))] {b : α}, (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))))))))) b) -> (Summable.{u2, u1} α ι (AddCommGroup.toAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1))) _inst_2 (fun (i : ι) => b)) -> (Set.Finite.{u1} ι (Set.univ.{u1} ι))
+but is expected to have type
+ forall {ι : Type.{u1}} {α : Type.{u2}} [_inst_1 : LinearOrderedAddCommGroup.{u2} α] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : Archimedean.{u2} α (LinearOrderedAddCommMonoid.toOrderedAddCommMonoid.{u2} α (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u2} α (LinearOrderedAddCommGroup.toLinearOrderedAddCancelCommMonoid.{u2} α _inst_1)))] [_inst_4 : OrderClosedTopology.{u2} α _inst_2 (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))] {b : α}, (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1)))) (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (NegZeroClass.toZero.{u2} α (SubNegZeroMonoid.toNegZeroClass.{u2} α (SubtractionMonoid.toSubNegZeroMonoid.{u2} α (SubtractionCommMonoid.toSubtractionMonoid.{u2} α (AddCommGroup.toDivisionAddCommMonoid.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α (LinearOrderedAddCommGroup.toOrderedAddCommGroup.{u2} α _inst_1))))))))) b) -> (Summable.{u2, u1} α ι (OrderedCancelAddCommMonoid.toAddCommMonoid.{u2} α (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} α (LinearOrderedAddCommGroup.toLinearOrderedAddCancelCommMonoid.{u2} α _inst_1))) _inst_2 (fun (i : ι) => b)) -> (Set.Finite.{u1} ι (Set.univ.{u1} ι))
+Case conversion may be inaccurate. Consider using '#align finite_of_summable_const Set.Finite.of_summable_constₓ'. -/
--TODO: Change the conclusion to `finite ι`
-theorem finite_of_summable_const [LinearOrderedAddCommGroup α] [TopologicalSpace α] [Archimedean α]
- [OrderClosedTopology α] {b : α} (hb : 0 < b) (hf : Summable fun i : ι => b) :
+theorem Set.Finite.of_summable_const [LinearOrderedAddCommGroup α] [TopologicalSpace α]
+ [Archimedean α] [OrderClosedTopology α] {b : α} (hb : 0 < b) (hf : Summable fun i : ι => b) :
(Set.univ : Set ι).Finite :=
by
have H : ∀ s : Finset ι, s.card • b ≤ ∑' i : ι, b :=
@@ -316,11 +488,17 @@ theorem finite_of_summable_const [LinearOrderedAddCommGroup α] [TopologicalSpac
simpa [nsmul_le_nsmul_iff hb] using (H s).trans hn
haveI : Fintype ι := fintypeOfFinsetCardLe n this
exact Set.finite_univ
-#align finite_of_summable_const finite_of_summable_const
+#align finite_of_summable_const Set.Finite.of_summable_const
end LinearOrder
-theorem Summable.tendsto_top_of_pos [LinearOrderedField α] [TopologicalSpace α] [OrderTopology α]
+/- warning: summable.tendsto_top_of_pos -> Summable.tendsto_atTop_of_pos is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : OrderTopology.{u1} α _inst_2 (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α (StrictOrderedRing.toOrderedAddCommGroup.{u1} α (LinearOrderedRing.toStrictOrderedRing.{u1} α (LinearOrderedCommRing.toLinearOrderedRing.{u1} α (LinearOrderedField.toLinearOrderedCommRing.{u1} α _inst_1))))))] {f : Nat -> α}, (Summable.{u1, 0} α Nat (AddCommGroup.toAddCommMonoid.{u1} α (OrderedAddCommGroup.toAddCommGroup.{u1} α (StrictOrderedRing.toOrderedAddCommGroup.{u1} α (LinearOrderedRing.toStrictOrderedRing.{u1} α (LinearOrderedCommRing.toLinearOrderedRing.{u1} α (LinearOrderedField.toLinearOrderedCommRing.{u1} α _inst_1)))))) _inst_2 (Inv.inv.{u1} (Nat -> α) (Pi.instInv.{0, u1} Nat (fun (ᾰ : Nat) => α) (fun (i : Nat) => DivInvMonoid.toHasInv.{u1} α (DivisionRing.toDivInvMonoid.{u1} α (Field.toDivisionRing.{u1} α (LinearOrderedField.toField.{u1} α _inst_1))))) f)) -> (forall (n : Nat), LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α (StrictOrderedRing.toOrderedAddCommGroup.{u1} α (LinearOrderedRing.toStrictOrderedRing.{u1} α (LinearOrderedCommRing.toLinearOrderedRing.{u1} α (LinearOrderedField.toLinearOrderedCommRing.{u1} α _inst_1))))))) (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α (DivisionRing.toRing.{u1} α (Field.toDivisionRing.{u1} α (LinearOrderedField.toField.{u1} α _inst_1))))))))))) (f n)) -> (Filter.Tendsto.{0, u1} Nat α f (Filter.atTop.{0} Nat (PartialOrder.toPreorder.{0} Nat (OrderedCancelAddCommMonoid.toPartialOrder.{0} Nat (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} Nat Nat.strictOrderedSemiring)))) (Filter.atTop.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommGroup.toPartialOrder.{u1} α (StrictOrderedRing.toOrderedAddCommGroup.{u1} α (LinearOrderedRing.toStrictOrderedRing.{u1} α (LinearOrderedCommRing.toLinearOrderedRing.{u1} α (LinearOrderedField.toLinearOrderedCommRing.{u1} α _inst_1))))))))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : OrderTopology.{u1} α _inst_2 (PartialOrder.toPreorder.{u1} α (StrictOrderedRing.toPartialOrder.{u1} α (LinearOrderedRing.toStrictOrderedRing.{u1} α (LinearOrderedCommRing.toLinearOrderedRing.{u1} α (LinearOrderedField.toLinearOrderedCommRing.{u1} α _inst_1)))))] {f : Nat -> α}, (Summable.{u1, 0} α Nat (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} α (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{u1} α (LinearOrderedSemiring.toStrictOrderedSemiring.{u1} α (LinearOrderedCommSemiring.toLinearOrderedSemiring.{u1} α (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} α (LinearOrderedField.toLinearOrderedSemifield.{u1} α _inst_1)))))) _inst_2 (Inv.inv.{u1} (Nat -> α) (Pi.instInv.{0, u1} Nat (fun (ᾰ : Nat) => α) (fun (i : Nat) => LinearOrderedField.toInv.{u1} α _inst_1)) f)) -> (forall (n : Nat), LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (StrictOrderedRing.toPartialOrder.{u1} α (LinearOrderedRing.toStrictOrderedRing.{u1} α (LinearOrderedCommRing.toLinearOrderedRing.{u1} α (LinearOrderedField.toLinearOrderedCommRing.{u1} α _inst_1)))))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (CommMonoidWithZero.toZero.{u1} α (CommGroupWithZero.toCommMonoidWithZero.{u1} α (Semifield.toCommGroupWithZero.{u1} α (LinearOrderedSemifield.toSemifield.{u1} α (LinearOrderedField.toLinearOrderedSemifield.{u1} α _inst_1))))))) (f n)) -> (Filter.Tendsto.{0, u1} Nat α f (Filter.atTop.{0} Nat (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring))) (Filter.atTop.{u1} α (PartialOrder.toPreorder.{u1} α (StrictOrderedRing.toPartialOrder.{u1} α (LinearOrderedRing.toStrictOrderedRing.{u1} α (LinearOrderedCommRing.toLinearOrderedRing.{u1} α (LinearOrderedField.toLinearOrderedCommRing.{u1} α _inst_1)))))))
+Case conversion may be inaccurate. Consider using '#align summable.tendsto_top_of_pos Summable.tendsto_atTop_of_posₓ'. -/
+theorem Summable.tendsto_atTop_of_pos [LinearOrderedField α] [TopologicalSpace α] [OrderTopology α]
{f : ℕ → α} (hf : Summable f⁻¹) (hf' : ∀ n, 0 < f n) : Tendsto f atTop atTop :=
by
rw [← inv_inv f]
@@ -330,5 +508,5 @@ theorem Summable.tendsto_top_of_pos [LinearOrderedField α] [TopologicalSpace α
refine' ⟨Set.Ioi 0, Ioi_mem_at_top _, fun _ _ => _⟩
rw [Set.mem_Ioi, inv_eq_one_div, one_div, Pi.inv_apply, _root_.inv_pos]
exact hf' _
-#align summable.tendsto_top_of_pos Summable.tendsto_top_of_pos
+#align summable.tendsto_top_of_pos Summable.tendsto_atTop_of_pos
mathlib commit https://github.com/leanprover-community/mathlib/commit/4c586d291f189eecb9d00581aeb3dd998ac34442
@@ -61,7 +61,7 @@ theorem le_hasSum_of_le_sum (hf : HasSum f a) (h : ∀ s, a₂ ≤ ∑ i in s, f
ge_of_tendsto' hf h
#align le_has_sum_of_le_sum le_hasSum_of_le_sum
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (c «expr ∉ » set.range[set.range] e) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (c «expr ∉ » set.range[set.range] e) -/
theorem hasSum_le_inj {g : κ → α} (e : ι → κ) (he : Injective e)
(hs : ∀ (c) (_ : c ∉ Set.range e), 0 ≤ g c) (h : ∀ i, f i ≤ g (e i)) (hf : HasSum f a₁)
(hg : HasSum g a₂) : a₁ ≤ a₂ :=
@@ -86,14 +86,14 @@ theorem hasSum_le_inj {g : κ → α} (e : ι → κ) (he : Injective e)
exact hs _ h
#align has_sum_le_inj hasSum_le_inj
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (c «expr ∉ » set.range[set.range] e) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (c «expr ∉ » set.range[set.range] e) -/
theorem tsum_le_tsum_of_inj {g : κ → α} (e : ι → κ) (he : Injective e)
(hs : ∀ (c) (_ : c ∉ Set.range e), 0 ≤ g c) (h : ∀ i, f i ≤ g (e i)) (hf : Summable f)
(hg : Summable g) : tsum f ≤ tsum g :=
hasSum_le_inj _ he hs h hf.HasSum hg.HasSum
#align tsum_le_tsum_of_inj tsum_le_tsum_of_inj
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (i «expr ∉ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i «expr ∉ » s) -/
theorem sum_le_hasSum (s : Finset ι) (hs : ∀ (i) (_ : i ∉ s), 0 ≤ f i) (hf : HasSum f a) :
(∑ i in s, f i) ≤ a :=
ge_of_tendsto hf
@@ -106,7 +106,7 @@ theorem isLUB_hasSum (h : ∀ i, 0 ≤ f i) (hf : HasSum f a) :
isLUB_of_tendsto_atTop (Finset.sum_mono_set_of_nonneg h) hf
#align is_lub_has_sum isLUB_hasSum
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (b' «expr ≠ » i) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (b' «expr ≠ » i) -/
theorem le_hasSum (hf : HasSum f a) (i : ι) (hb : ∀ (b') (_ : b' ≠ i), 0 ≤ f b') : f i ≤ a :=
calc
f i = ∑ i in {i}, f i := Finset.sum_singleton.symm
@@ -119,13 +119,13 @@ theorem le_hasSum (hf : HasSum f a) (i : ι) (hb : ∀ (b') (_ : b' ≠ i), 0
#align le_has_sum le_hasSum
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (i «expr ∉ » s) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i «expr ∉ » s) -/
theorem sum_le_tsum {f : ι → α} (s : Finset ι) (hs : ∀ (i) (_ : i ∉ s), 0 ≤ f i) (hf : Summable f) :
(∑ i in s, f i) ≤ ∑' i, f i :=
sum_le_hasSum s hs hf.HasSum
#align sum_le_tsum sum_le_tsum
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (b' «expr ≠ » i) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (b' «expr ≠ » i) -/
theorem le_tsum (hf : Summable f) (i : ι) (hb : ∀ (b') (_ : b' ≠ i), 0 ≤ f b') : f i ≤ ∑' i, f i :=
le_hasSum (Summable.hasSum hf) i hb
#align le_tsum le_tsum
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -241,7 +241,7 @@ theorem tprod_eq_one_iff (hf : Multipliable f) : ∏' i, f i = 1 ↔ ∀ x, f x
@[to_additive]
theorem tprod_ne_one_iff (hf : Multipliable f) : ∏' i, f i ≠ 1 ↔ ∃ x, f x ≠ 1 := by
- rw [Ne.def, tprod_eq_one_iff hf, not_forall]
+ rw [Ne, tprod_eq_one_iff hf, not_forall]
#align tsum_ne_zero_iff tsum_ne_zero_iff
@[to_additive]
Last year, YaelDillies made a pull request to mathlib3 that unfortunately never got merged in: https://github.com/leanprover-community/mathlib/pull/18405. This is the mathlib4 version of that pull request.
We define arbitrarily indexed products in a commutative monoid with a topology. This is done by "multiplicativizing" the currently existing definitions and theorems about arbitrarily indexed sums. That is, the existing code is rewritten in the multiplicative setting, and the original definitions and theorems are recovered using @[to_additive]
. Please see this thread on Zulip for information on why this approach was chosen: https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/Infinite.20products
As YaelDillies wrote in the description of https://github.com/leanprover-community/mathlib/pull/18405, there are a few small technical issues that arise when directly "multiplicativizing" theorems in this way:
cauchySeq_finset_iff_vanishing
to cauchySeq_finset_iff_sum_vanishing
to make the name multiplicativizable. This is slightly different from the name cauchy_seq_finset_sum_iff_vanishing
that YaelDillies used, and it is meant to parallel the existing name cauchySeq_finset_iff_tsum_vanishing
.tsum_sum
about taking the tsum
of a sum
, and a theorem called tsum_prod
about taking a tsum
on a product of two index sets. I have called the multiplicative versions tprod_of_prod
and tprod_prod
. This is slightly different from the names tprod_prod''
and tprod_prod
that YaelDillies used. eric-wieser suggested renaming tsum_prod
to tsum_prod_index
to get around this issue, which I can do in a separate pull request.@@ -11,9 +11,9 @@ import Mathlib.Topology.Order.MonotoneConvergence
#align_import topology.algebra.infinite_sum.order from "leanprover-community/mathlib"@"32253a1a1071173b33dc7d6a218cf722c6feb514"
/-!
-# Infinite sum in an order
+# Infinite sum or product in an order
-This file provides lemmas about the interaction of infinite sums and order operations.
+This file provides lemmas about the interaction of infinite sums and products and order operations.
-/
@@ -24,44 +24,49 @@ variable {ι κ α : Type*}
section Preorder
-variable [Preorder α] [AddCommMonoid α] [TopologicalSpace α] [OrderClosedTopology α] [T2Space α]
+variable [Preorder α] [CommMonoid α] [TopologicalSpace α] [OrderClosedTopology α] [T2Space α]
{f : ℕ → α} {c : α}
-theorem tsum_le_of_sum_range_le (hf : Summable f) (h : ∀ n, ∑ i in range n, f i ≤ c) :
- ∑' n, f n ≤ c :=
+@[to_additive]
+theorem tprod_le_of_prod_range_le (hf : Multipliable f) (h : ∀ n, ∏ i in range n, f i ≤ c) :
+ ∏' n, f n ≤ c :=
let ⟨_l, hl⟩ := hf
- hl.tsum_eq.symm ▸ le_of_tendsto' hl.tendsto_sum_nat h
+ hl.tprod_eq.symm ▸ le_of_tendsto' hl.tendsto_prod_nat h
#align tsum_le_of_sum_range_le tsum_le_of_sum_range_le
end Preorder
-section OrderedAddCommMonoid
+section OrderedCommMonoid
-variable [OrderedAddCommMonoid α] [TopologicalSpace α] [OrderClosedTopology α] {f g : ι → α}
+variable [OrderedCommMonoid α] [TopologicalSpace α] [OrderClosedTopology α] {f g : ι → α}
{a a₁ a₂ : α}
-theorem hasSum_le (h : ∀ i, f i ≤ g i) (hf : HasSum f a₁) (hg : HasSum g a₂) : a₁ ≤ a₂ :=
- le_of_tendsto_of_tendsto' hf hg fun _ ↦ sum_le_sum fun i _ ↦ h i
+@[to_additive]
+theorem hasProd_le (h : ∀ i, f i ≤ g i) (hf : HasProd f a₁) (hg : HasProd g a₂) : a₁ ≤ a₂ :=
+ le_of_tendsto_of_tendsto' hf hg fun _ ↦ prod_le_prod' fun i _ ↦ h i
#align has_sum_le hasSum_le
-@[mono]
-theorem hasSum_mono (hf : HasSum f a₁) (hg : HasSum g a₂) (h : f ≤ g) : a₁ ≤ a₂ :=
- hasSum_le h hf hg
+@[to_additive (attr := mono)]
+theorem hasProd_mono (hf : HasProd f a₁) (hg : HasProd g a₂) (h : f ≤ g) : a₁ ≤ a₂ :=
+ hasProd_le h hf hg
#align has_sum_mono hasSum_mono
-theorem hasSum_le_of_sum_le (hf : HasSum f a) (h : ∀ s, ∑ i in s, f i ≤ a₂) : a ≤ a₂ :=
+@[to_additive]
+theorem hasProd_le_of_prod_le (hf : HasProd f a) (h : ∀ s, ∏ i in s, f i ≤ a₂) : a ≤ a₂ :=
le_of_tendsto' hf h
#align has_sum_le_of_sum_le hasSum_le_of_sum_le
-theorem le_hasSum_of_le_sum (hf : HasSum f a) (h : ∀ s, a₂ ≤ ∑ i in s, f i) : a₂ ≤ a :=
+@[to_additive]
+theorem le_hasProd_of_le_prod (hf : HasProd f a) (h : ∀ s, a₂ ≤ ∏ i in s, f i) : a₂ ≤ a :=
ge_of_tendsto' hf h
#align le_has_sum_of_le_sum le_hasSum_of_le_sum
-theorem hasSum_le_inj {g : κ → α} (e : ι → κ) (he : Injective e)
- (hs : ∀ c, c ∉ Set.range e → 0 ≤ g c) (h : ∀ i, f i ≤ g (e i)) (hf : HasSum f a₁)
- (hg : HasSum g a₂) : a₁ ≤ a₂ := by
- rw [← hasSum_extend_zero he] at hf
- refine hasSum_le (fun c ↦ ?_) hf hg
+@[to_additive]
+theorem hasProd_le_inj {g : κ → α} (e : ι → κ) (he : Injective e)
+ (hs : ∀ c, c ∉ Set.range e → 1 ≤ g c) (h : ∀ i, f i ≤ g (e i)) (hf : HasProd f a₁)
+ (hg : HasProd g a₂) : a₁ ≤ a₂ := by
+ rw [← hasProd_extend_one he] at hf
+ refine hasProd_le (fun c ↦ ?_) hf hg
obtain ⟨i, rfl⟩ | h := em (c ∈ Set.range e)
· rw [he.extend_apply]
exact h _
@@ -69,157 +74,182 @@ theorem hasSum_le_inj {g : κ → α} (e : ι → κ) (he : Injective e)
exact hs _ h
#align has_sum_le_inj hasSum_le_inj
-theorem tsum_le_tsum_of_inj {g : κ → α} (e : ι → κ) (he : Injective e)
- (hs : ∀ c, c ∉ Set.range e → 0 ≤ g c) (h : ∀ i, f i ≤ g (e i)) (hf : Summable f)
- (hg : Summable g) : tsum f ≤ tsum g :=
- hasSum_le_inj _ he hs h hf.hasSum hg.hasSum
+@[to_additive]
+theorem tprod_le_tprod_of_inj {g : κ → α} (e : ι → κ) (he : Injective e)
+ (hs : ∀ c, c ∉ Set.range e → 1 ≤ g c) (h : ∀ i, f i ≤ g (e i)) (hf : Multipliable f)
+ (hg : Multipliable g) : tprod f ≤ tprod g :=
+ hasProd_le_inj _ he hs h hf.hasProd hg.hasProd
#align tsum_le_tsum_of_inj tsum_le_tsum_of_inj
-theorem sum_le_hasSum (s : Finset ι) (hs : ∀ i, i ∉ s → 0 ≤ f i) (hf : HasSum f a) :
- ∑ i in s, f i ≤ a :=
+@[to_additive]
+theorem prod_le_hasProd (s : Finset ι) (hs : ∀ i, i ∉ s → 1 ≤ f i) (hf : HasProd f a) :
+ ∏ i in s, f i ≤ a :=
ge_of_tendsto hf (eventually_atTop.2
- ⟨s, fun _t hst ↦ sum_le_sum_of_subset_of_nonneg hst fun i _ hbs ↦ hs i hbs⟩)
+ ⟨s, fun _t hst ↦ prod_le_prod_of_subset_of_one_le' hst fun i _ hbs ↦ hs i hbs⟩)
#align sum_le_has_sum sum_le_hasSum
-theorem isLUB_hasSum (h : ∀ i, 0 ≤ f i) (hf : HasSum f a) :
- IsLUB (Set.range fun s ↦ ∑ i in s, f i) a :=
- isLUB_of_tendsto_atTop (Finset.sum_mono_set_of_nonneg h) hf
+@[to_additive]
+theorem isLUB_hasProd (h : ∀ i, 1 ≤ f i) (hf : HasProd f a) :
+ IsLUB (Set.range fun s ↦ ∏ i in s, f i) a :=
+ isLUB_of_tendsto_atTop (Finset.prod_mono_set_of_one_le' h) hf
#align is_lub_has_sum isLUB_hasSum
-theorem le_hasSum (hf : HasSum f a) (i : ι) (hb : ∀ j, j ≠ i → 0 ≤ f j) : f i ≤ a :=
+@[to_additive]
+theorem le_hasProd (hf : HasProd f a) (i : ι) (hb : ∀ j, j ≠ i → 1 ≤ f j) : f i ≤ a :=
calc
- f i = ∑ i in {i}, f i := by rw [sum_singleton]
- _ ≤ a := sum_le_hasSum _ (by simpa) hf
+ f i = ∏ i in {i}, f i := by rw [prod_singleton]
+ _ ≤ a := prod_le_hasProd _ (by simpa) hf
#align le_has_sum le_hasSum
-theorem sum_le_tsum {f : ι → α} (s : Finset ι) (hs : ∀ i, i ∉ s → 0 ≤ f i) (hf : Summable f) :
- ∑ i in s, f i ≤ ∑' i, f i :=
- sum_le_hasSum s hs hf.hasSum
+@[to_additive]
+theorem prod_le_tprod {f : ι → α} (s : Finset ι) (hs : ∀ i, i ∉ s → 1 ≤ f i) (hf : Multipliable f) :
+ ∏ i in s, f i ≤ ∏' i, f i :=
+ prod_le_hasProd s hs hf.hasProd
#align sum_le_tsum sum_le_tsum
-theorem le_tsum (hf : Summable f) (i : ι) (hb : ∀ j, j ≠ i → 0 ≤ f j) : f i ≤ ∑' i, f i :=
- le_hasSum hf.hasSum i hb
+@[to_additive]
+theorem le_tprod (hf : Multipliable f) (i : ι) (hb : ∀ j, j ≠ i → 1 ≤ f j) : f i ≤ ∏' i, f i :=
+ le_hasProd hf.hasProd i hb
#align le_tsum le_tsum
-theorem tsum_le_tsum (h : ∀ i, f i ≤ g i) (hf : Summable f) (hg : Summable g) :
- ∑' i, f i ≤ ∑' i, g i :=
- hasSum_le h hf.hasSum hg.hasSum
+@[to_additive]
+theorem tprod_le_tprod (h : ∀ i, f i ≤ g i) (hf : Multipliable f) (hg : Multipliable g) :
+ ∏' i, f i ≤ ∏' i, g i :=
+ hasProd_le h hf.hasProd hg.hasProd
#align tsum_le_tsum tsum_le_tsum
-@[mono]
-theorem tsum_mono (hf : Summable f) (hg : Summable g) (h : f ≤ g) : ∑' n, f n ≤ ∑' n, g n :=
- tsum_le_tsum h hf hg
+@[to_additive (attr := mono)]
+theorem tprod_mono (hf : Multipliable f) (hg : Multipliable g) (h : f ≤ g) :
+ ∏' n, f n ≤ ∏' n, g n :=
+ tprod_le_tprod h hf hg
#align tsum_mono tsum_mono
-theorem tsum_le_of_sum_le (hf : Summable f) (h : ∀ s, ∑ i in s, f i ≤ a₂) : ∑' i, f i ≤ a₂ :=
- hasSum_le_of_sum_le hf.hasSum h
+@[to_additive]
+theorem tprod_le_of_prod_le (hf : Multipliable f) (h : ∀ s, ∏ i in s, f i ≤ a₂) : ∏' i, f i ≤ a₂ :=
+ hasProd_le_of_prod_le hf.hasProd h
#align tsum_le_of_sum_le tsum_le_of_sum_le
-theorem tsum_le_of_sum_le' (ha₂ : 0 ≤ a₂) (h : ∀ s, ∑ i in s, f i ≤ a₂) : ∑' i, f i ≤ a₂ := by
- by_cases hf : Summable f
- · exact tsum_le_of_sum_le hf h
- · rw [tsum_eq_zero_of_not_summable hf]
+@[to_additive]
+theorem tprod_le_of_prod_le' (ha₂ : 1 ≤ a₂) (h : ∀ s, ∏ i in s, f i ≤ a₂) : ∏' i, f i ≤ a₂ := by
+ by_cases hf : Multipliable f
+ · exact tprod_le_of_prod_le hf h
+ · rw [tprod_eq_one_of_not_multipliable hf]
exact ha₂
#align tsum_le_of_sum_le' tsum_le_of_sum_le'
-theorem HasSum.nonneg (h : ∀ i, 0 ≤ g i) (ha : HasSum g a) : 0 ≤ a :=
- hasSum_le h hasSum_zero ha
+@[to_additive]
+theorem HasProd.one_le (h : ∀ i, 1 ≤ g i) (ha : HasProd g a) : 1 ≤ a :=
+ hasProd_le h hasProd_one ha
#align has_sum.nonneg HasSum.nonneg
-theorem HasSum.nonpos (h : ∀ i, g i ≤ 0) (ha : HasSum g a) : a ≤ 0 :=
- hasSum_le h ha hasSum_zero
+@[to_additive]
+theorem HasProd.le_one (h : ∀ i, g i ≤ 1) (ha : HasProd g a) : a ≤ 1 :=
+ hasProd_le h ha hasProd_one
#align has_sum.nonpos HasSum.nonpos
-theorem tsum_nonneg (h : ∀ i, 0 ≤ g i) : 0 ≤ ∑' i, g i := by
- by_cases hg : Summable g
- · exact hg.hasSum.nonneg h
- · rw [tsum_eq_zero_of_not_summable hg]
+@[to_additive tsum_nonneg]
+theorem one_le_tprod (h : ∀ i, 1 ≤ g i) : 1 ≤ ∏' i, g i := by
+ by_cases hg : Multipliable g
+ · exact hg.hasProd.one_le h
+ · rw [tprod_eq_one_of_not_multipliable hg]
#align tsum_nonneg tsum_nonneg
-theorem tsum_nonpos (h : ∀ i, f i ≤ 0) : ∑' i, f i ≤ 0 := by
- by_cases hf : Summable f
- · exact hf.hasSum.nonpos h
- · rw [tsum_eq_zero_of_not_summable hf]
+@[to_additive]
+theorem tprod_le_one (h : ∀ i, f i ≤ 1) : ∏' i, f i ≤ 1 := by
+ by_cases hf : Multipliable f
+ · exact hf.hasProd.le_one h
+ · rw [tprod_eq_one_of_not_multipliable hf]
#align tsum_nonpos tsum_nonpos
-- Porting note: generalized from `OrderedAddCommGroup` to `OrderedAddCommMonoid`
-theorem hasSum_zero_iff_of_nonneg (hf : ∀ i, 0 ≤ f i) : HasSum f 0 ↔ f = 0 := by
+@[to_additive]
+theorem hasProd_one_iff_of_one_le (hf : ∀ i, 1 ≤ f i) : HasProd f 1 ↔ f = 1 := by
refine' ⟨fun hf' ↦ _, _⟩
· ext i
- exact (hf i).antisymm' (le_hasSum hf' _ fun j _ ↦ hf j)
+ exact (hf i).antisymm' (le_hasProd hf' _ fun j _ ↦ hf j)
· rintro rfl
- exact hasSum_zero
+ exact hasProd_one
#align has_sum_zero_iff_of_nonneg hasSum_zero_iff_of_nonneg
-end OrderedAddCommMonoid
+end OrderedCommMonoid
-section OrderedAddCommGroup
+section OrderedCommGroup
-variable [OrderedAddCommGroup α] [TopologicalSpace α] [TopologicalAddGroup α]
+variable [OrderedCommGroup α] [TopologicalSpace α] [TopologicalGroup α]
[OrderClosedTopology α] {f g : ι → α} {a₁ a₂ : α} {i : ι}
-theorem hasSum_lt (h : f ≤ g) (hi : f i < g i) (hf : HasSum f a₁) (hg : HasSum g a₂) : a₁ < a₂ := by
- have : update f i 0 ≤ update g i 0 := update_le_update_iff.mpr ⟨rfl.le, fun i _ ↦ h i⟩
- have : 0 - f i + a₁ ≤ 0 - g i + a₂ := hasSum_le this (hf.update i 0) (hg.update i 0)
- simpa only [zero_sub, add_neg_cancel_left] using add_lt_add_of_lt_of_le hi this
+@[to_additive]
+theorem hasProd_lt (h : f ≤ g) (hi : f i < g i) (hf : HasProd f a₁) (hg : HasProd g a₂) :
+ a₁ < a₂ := by
+ have : update f i 1 ≤ update g i 1 := update_le_update_iff.mpr ⟨rfl.le, fun i _ ↦ h i⟩
+ have : 1 / f i * a₁ ≤ 1 / g i * a₂ := hasProd_le this (hf.update i 1) (hg.update i 1)
+ simpa only [one_div, mul_inv_cancel_left] using mul_lt_mul_of_lt_of_le hi this
#align has_sum_lt hasSum_lt
-@[mono]
-theorem hasSum_strict_mono (hf : HasSum f a₁) (hg : HasSum g a₂) (h : f < g) : a₁ < a₂ :=
+@[to_additive (attr := mono)]
+theorem hasProd_strict_mono (hf : HasProd f a₁) (hg : HasProd g a₂) (h : f < g) : a₁ < a₂ :=
let ⟨hle, _i, hi⟩ := Pi.lt_def.mp h
- hasSum_lt hle hi hf hg
+ hasProd_lt hle hi hf hg
#align has_sum_strict_mono hasSum_strict_mono
-theorem tsum_lt_tsum (h : f ≤ g) (hi : f i < g i) (hf : Summable f) (hg : Summable g) :
- ∑' n, f n < ∑' n, g n :=
- hasSum_lt h hi hf.hasSum hg.hasSum
+@[to_additive]
+theorem tprod_lt_tprod (h : f ≤ g) (hi : f i < g i) (hf : Multipliable f) (hg : Multipliable g) :
+ ∏' n, f n < ∏' n, g n :=
+ hasProd_lt h hi hf.hasProd hg.hasProd
#align tsum_lt_tsum tsum_lt_tsum
-@[mono]
-theorem tsum_strict_mono (hf : Summable f) (hg : Summable g) (h : f < g) :
- ∑' n, f n < ∑' n, g n :=
+@[to_additive (attr := mono)]
+theorem tprod_strict_mono (hf : Multipliable f) (hg : Multipliable g) (h : f < g) :
+ ∏' n, f n < ∏' n, g n :=
let ⟨hle, _i, hi⟩ := Pi.lt_def.mp h
- tsum_lt_tsum hle hi hf hg
+ tprod_lt_tprod hle hi hf hg
#align tsum_strict_mono tsum_strict_mono
-theorem tsum_pos (hsum : Summable g) (hg : ∀ i, 0 ≤ g i) (i : ι) (hi : 0 < g i) :
- 0 < ∑' i, g i := by
- rw [← tsum_zero]
- exact tsum_lt_tsum hg hi summable_zero hsum
+@[to_additive tsum_pos]
+theorem one_lt_tprod (hsum : Multipliable g) (hg : ∀ i, 1 ≤ g i) (i : ι) (hi : 1 < g i) :
+ 1 < ∏' i, g i := by
+ rw [← tprod_one]
+ exact tprod_lt_tprod hg hi multipliable_one hsum
#align tsum_pos tsum_pos
-end OrderedAddCommGroup
+end OrderedCommGroup
-section CanonicallyOrderedAddCommMonoid
+section CanonicallyOrderedCommMonoid
-variable [CanonicallyOrderedAddCommMonoid α] [TopologicalSpace α] [OrderClosedTopology α]
+variable [CanonicallyOrderedCommMonoid α] [TopologicalSpace α] [OrderClosedTopology α]
{f : ι → α} {a : α}
-theorem le_hasSum' (hf : HasSum f a) (i : ι) : f i ≤ a :=
- le_hasSum hf i fun _ _ ↦ zero_le _
+@[to_additive]
+theorem le_hasProd' (hf : HasProd f a) (i : ι) : f i ≤ a :=
+ le_hasProd hf i fun _ _ ↦ one_le _
#align le_has_sum' le_hasSum'
-theorem le_tsum' (hf : Summable f) (i : ι) : f i ≤ ∑' i, f i :=
- le_tsum hf i fun _ _ ↦ zero_le _
+@[to_additive]
+theorem le_tprod' (hf : Multipliable f) (i : ι) : f i ≤ ∏' i, f i :=
+ le_tprod hf i fun _ _ ↦ one_le _
#align le_tsum' le_tsum'
-theorem hasSum_zero_iff : HasSum f 0 ↔ ∀ x, f x = 0 :=
- (hasSum_zero_iff_of_nonneg fun _ ↦ zero_le _).trans funext_iff
+@[to_additive]
+theorem hasProd_one_iff : HasProd f 1 ↔ ∀ x, f x = 1 :=
+ (hasProd_one_iff_of_one_le fun _ ↦ one_le _).trans funext_iff
#align has_sum_zero_iff hasSum_zero_iff
-theorem tsum_eq_zero_iff (hf : Summable f) : ∑' i, f i = 0 ↔ ∀ x, f x = 0 := by
- rw [← hasSum_zero_iff, hf.hasSum_iff]
+@[to_additive]
+theorem tprod_eq_one_iff (hf : Multipliable f) : ∏' i, f i = 1 ↔ ∀ x, f x = 1 := by
+ rw [← hasProd_one_iff, hf.hasProd_iff]
#align tsum_eq_zero_iff tsum_eq_zero_iff
-theorem tsum_ne_zero_iff (hf : Summable f) : ∑' i, f i ≠ 0 ↔ ∃ x, f x ≠ 0 := by
- rw [Ne.def, tsum_eq_zero_iff hf, not_forall]
+@[to_additive]
+theorem tprod_ne_one_iff (hf : Multipliable f) : ∏' i, f i ≠ 1 ↔ ∃ x, f x ≠ 1 := by
+ rw [Ne.def, tprod_eq_one_iff hf, not_forall]
#align tsum_ne_zero_iff tsum_ne_zero_iff
-theorem isLUB_hasSum' (hf : HasSum f a) : IsLUB (Set.range fun s ↦ ∑ i in s, f i) a :=
- isLUB_of_tendsto_atTop (Finset.sum_mono_set f) hf
+@[to_additive]
+theorem isLUB_hasProd' (hf : HasProd f a) : IsLUB (Set.range fun s ↦ ∏ i in s, f i) a :=
+ isLUB_of_tendsto_atTop (Finset.prod_mono_set' f) hf
#align is_lub_has_sum' isLUB_hasSum'
-end CanonicallyOrderedAddCommMonoid
+end CanonicallyOrderedCommMonoid
section LinearOrder
@@ -232,28 +262,31 @@ conditionally complete linear order, such as `ℝ`, `ℝ≥0`, `ℝ≥0∞`, bec
the existence of a least upper bound.
-/
-theorem hasSum_of_isLUB_of_nonneg [LinearOrderedAddCommMonoid α] [TopologicalSpace α]
- [OrderTopology α] {f : ι → α} (i : α) (h : ∀ i, 0 ≤ f i)
- (hf : IsLUB (Set.range fun s ↦ ∑ i in s, f i) i) : HasSum f i :=
- tendsto_atTop_isLUB (Finset.sum_mono_set_of_nonneg h) hf
+@[to_additive]
+theorem hasProd_of_isLUB_of_one_le [LinearOrderedCommMonoid α] [TopologicalSpace α]
+ [OrderTopology α] {f : ι → α} (i : α) (h : ∀ i, 1 ≤ f i)
+ (hf : IsLUB (Set.range fun s ↦ ∏ i in s, f i) i) : HasProd f i :=
+ tendsto_atTop_isLUB (Finset.prod_mono_set_of_one_le' h) hf
#align has_sum_of_is_lub_of_nonneg hasSum_of_isLUB_of_nonneg
-theorem hasSum_of_isLUB [CanonicallyLinearOrderedAddCommMonoid α] [TopologicalSpace α]
- [OrderTopology α] {f : ι → α} (b : α) (hf : IsLUB (Set.range fun s ↦ ∑ i in s, f i) b) :
- HasSum f b :=
- tendsto_atTop_isLUB (Finset.sum_mono_set f) hf
+@[to_additive]
+theorem hasProd_of_isLUB [CanonicallyLinearOrderedCommMonoid α] [TopologicalSpace α]
+ [OrderTopology α] {f : ι → α} (b : α) (hf : IsLUB (Set.range fun s ↦ ∏ i in s, f i) b) :
+ HasProd f b :=
+ tendsto_atTop_isLUB (Finset.prod_mono_set' f) hf
#align has_sum_of_is_lub hasSum_of_isLUB
-theorem summable_abs_iff [LinearOrderedAddCommGroup α] [UniformSpace α] [UniformAddGroup α]
- [CompleteSpace α] {f : ι → α} : (Summable fun x ↦ |f x|) ↔ Summable f :=
- let s := { x | 0 ≤ f x }
- have h1 : ∀ x : s, |f x| = f x := fun x ↦ abs_of_nonneg x.2
- have h2 : ∀ x : ↑sᶜ, |f x| = -f x := fun x ↦ abs_of_neg (not_le.1 x.2)
- calc (Summable fun x ↦ |f x|) ↔
- (Summable fun x : s ↦ |f x|) ∧ Summable fun x : ↑sᶜ ↦ |f x| :=
- summable_subtype_and_compl.symm
- _ ↔ (Summable fun x : s ↦ f x) ∧ Summable fun x : ↑sᶜ ↦ -f x := by simp only [h1, h2]
- _ ↔ Summable f := by simp only [summable_neg_iff, summable_subtype_and_compl]
+@[to_additive]
+theorem multipliable_mabs_iff [LinearOrderedCommGroup α] [UniformSpace α] [UniformGroup α]
+ [CompleteSpace α] {f : ι → α} : (Multipliable fun x ↦ mabs (f x)) ↔ Multipliable f :=
+ let s := { x | 1 ≤ f x }
+ have h1 : ∀ x : s, mabs (f x) = f x := fun x ↦ mabs_of_one_le x.2
+ have h2 : ∀ x : ↑sᶜ, mabs (f x) = (f x)⁻¹ := fun x ↦ mabs_of_lt_one (not_le.1 x.2)
+ calc (Multipliable fun x ↦ mabs (f x)) ↔
+ (Multipliable fun x : s ↦ mabs (f x)) ∧ Multipliable fun x : ↑sᶜ ↦ mabs (f x) :=
+ multipliable_subtype_and_compl.symm
+ _ ↔ (Multipliable fun x : s ↦ f x) ∧ Multipliable fun x : ↑sᶜ ↦ (f x)⁻¹ := by simp only [h1, h2]
+ _ ↔ Multipliable f := by simp only [multipliable_inv_iff, multipliable_subtype_and_compl]
#align summable_abs_iff summable_abs_iff
alias ⟨Summable.of_abs, Summable.abs⟩ := summable_abs_iff
Move files from Topology.Algebra.Order
to Topology.Order
when they do not contain any algebra. Also move Topology.LocalExtr
to Topology.Order.LocalExtr
.
According to git, the moves are:
Mathlib/Topology/{Algebra => }/Order/ExtendFrom.lean
Mathlib/Topology/{Algebra => }/Order/ExtrClosure.lean
Mathlib/Topology/{Algebra => }/Order/Filter.lean
Mathlib/Topology/{Algebra => }/Order/IntermediateValue.lean
Mathlib/Topology/{Algebra => }/Order/LeftRight.lean
Mathlib/Topology/{Algebra => }/Order/LeftRightLim.lean
Mathlib/Topology/{Algebra => }/Order/MonotoneContinuity.lean
Mathlib/Topology/{Algebra => }/Order/MonotoneConvergence.lean
Mathlib/Topology/{Algebra => }/Order/ProjIcc.lean
Mathlib/Topology/{Algebra => }/Order/T5.lean
Mathlib/Topology/{ => Order}/LocalExtr.lean
@@ -6,7 +6,7 @@ Authors: Johannes Hölzl
import Mathlib.Algebra.Order.Archimedean
import Mathlib.Topology.Algebra.InfiniteSum.NatInt
import Mathlib.Topology.Algebra.Order.Field
-import Mathlib.Topology.Algebra.Order.MonotoneConvergence
+import Mathlib.Topology.Order.MonotoneConvergence
#align_import topology.algebra.infinite_sum.order from "leanprover-community/mathlib"@"32253a1a1071173b33dc7d6a218cf722c6feb514"
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -142,7 +142,7 @@ theorem tsum_nonpos (h : ∀ i, f i ≤ 0) : ∑' i, f i ≤ 0 := by
· rw [tsum_eq_zero_of_not_summable hf]
#align tsum_nonpos tsum_nonpos
--- porting note: generalized from `OrderedAddCommGroup` to `OrderedAddCommMonoid`
+-- Porting note: generalized from `OrderedAddCommGroup` to `OrderedAddCommMonoid`
theorem hasSum_zero_iff_of_nonneg (hf : ∀ i, 0 ≤ f i) : HasSum f 0 ↔ f = 0 := by
refine' ⟨fun hf' ↦ _, _⟩
· ext i
Split up Mathlib.Topology.Algebra.InfiniteSum.Basic
(1600 lines) into smaller files.
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl
-/
import Mathlib.Algebra.Order.Archimedean
-import Mathlib.Topology.Algebra.InfiniteSum.Basic
+import Mathlib.Topology.Algebra.InfiniteSum.NatInt
import Mathlib.Topology.Algebra.Order.Field
import Mathlib.Topology.Algebra.Order.MonotoneConvergence
@@ -41,7 +41,7 @@ variable [OrderedAddCommMonoid α] [TopologicalSpace α] [OrderClosedTopology α
{a a₁ a₂ : α}
theorem hasSum_le (h : ∀ i, f i ≤ g i) (hf : HasSum f a₁) (hg : HasSum g a₂) : a₁ ≤ a₂ :=
- le_of_tendsto_of_tendsto' hf hg fun _ => sum_le_sum fun i _ => h i
+ le_of_tendsto_of_tendsto' hf hg fun _ ↦ sum_le_sum fun i _ ↦ h i
#align has_sum_le hasSum_le
@[mono]
@@ -61,7 +61,7 @@ theorem hasSum_le_inj {g : κ → α} (e : ι → κ) (he : Injective e)
(hs : ∀ c, c ∉ Set.range e → 0 ≤ g c) (h : ∀ i, f i ≤ g (e i)) (hf : HasSum f a₁)
(hg : HasSum g a₂) : a₁ ≤ a₂ := by
rw [← hasSum_extend_zero he] at hf
- refine hasSum_le (fun c => ?_) hf hg
+ refine hasSum_le (fun c ↦ ?_) hf hg
obtain ⟨i, rfl⟩ | h := em (c ∈ Set.range e)
· rw [he.extend_apply]
exact h _
@@ -78,11 +78,11 @@ theorem tsum_le_tsum_of_inj {g : κ → α} (e : ι → κ) (he : Injective e)
theorem sum_le_hasSum (s : Finset ι) (hs : ∀ i, i ∉ s → 0 ≤ f i) (hf : HasSum f a) :
∑ i in s, f i ≤ a :=
ge_of_tendsto hf (eventually_atTop.2
- ⟨s, fun _t hst => sum_le_sum_of_subset_of_nonneg hst fun i _ hbs => hs i hbs⟩)
+ ⟨s, fun _t hst ↦ sum_le_sum_of_subset_of_nonneg hst fun i _ hbs ↦ hs i hbs⟩)
#align sum_le_has_sum sum_le_hasSum
theorem isLUB_hasSum (h : ∀ i, 0 ≤ f i) (hf : HasSum f a) :
- IsLUB (Set.range fun s => ∑ i in s, f i) a :=
+ IsLUB (Set.range fun s ↦ ∑ i in s, f i) a :=
isLUB_of_tendsto_atTop (Finset.sum_mono_set_of_nonneg h) hf
#align is_lub_has_sum isLUB_hasSum
@@ -144,9 +144,9 @@ theorem tsum_nonpos (h : ∀ i, f i ≤ 0) : ∑' i, f i ≤ 0 := by
-- porting note: generalized from `OrderedAddCommGroup` to `OrderedAddCommMonoid`
theorem hasSum_zero_iff_of_nonneg (hf : ∀ i, 0 ≤ f i) : HasSum f 0 ↔ f = 0 := by
- refine' ⟨fun hf' => _, _⟩
+ refine' ⟨fun hf' ↦ _, _⟩
· ext i
- exact (hf i).antisymm' (le_hasSum hf' _ fun j _ => hf j)
+ exact (hf i).antisymm' (le_hasSum hf' _ fun j _ ↦ hf j)
· rintro rfl
exact hasSum_zero
#align has_sum_zero_iff_of_nonneg hasSum_zero_iff_of_nonneg
@@ -159,7 +159,7 @@ variable [OrderedAddCommGroup α] [TopologicalSpace α] [TopologicalAddGroup α]
[OrderClosedTopology α] {f g : ι → α} {a₁ a₂ : α} {i : ι}
theorem hasSum_lt (h : f ≤ g) (hi : f i < g i) (hf : HasSum f a₁) (hg : HasSum g a₂) : a₁ < a₂ := by
- have : update f i 0 ≤ update g i 0 := update_le_update_iff.mpr ⟨rfl.le, fun i _ => h i⟩
+ have : update f i 0 ≤ update g i 0 := update_le_update_iff.mpr ⟨rfl.le, fun i _ ↦ h i⟩
have : 0 - f i + a₁ ≤ 0 - g i + a₂ := hasSum_le this (hf.update i 0) (hg.update i 0)
simpa only [zero_sub, add_neg_cancel_left] using add_lt_add_of_lt_of_le hi this
#align has_sum_lt hasSum_lt
@@ -196,15 +196,15 @@ variable [CanonicallyOrderedAddCommMonoid α] [TopologicalSpace α] [OrderClosed
{f : ι → α} {a : α}
theorem le_hasSum' (hf : HasSum f a) (i : ι) : f i ≤ a :=
- le_hasSum hf i fun _ _ => zero_le _
+ le_hasSum hf i fun _ _ ↦ zero_le _
#align le_has_sum' le_hasSum'
theorem le_tsum' (hf : Summable f) (i : ι) : f i ≤ ∑' i, f i :=
- le_tsum hf i fun _ _ => zero_le _
+ le_tsum hf i fun _ _ ↦ zero_le _
#align le_tsum' le_tsum'
theorem hasSum_zero_iff : HasSum f 0 ↔ ∀ x, f x = 0 :=
- (hasSum_zero_iff_of_nonneg fun _ => zero_le _).trans funext_iff
+ (hasSum_zero_iff_of_nonneg fun _ ↦ zero_le _).trans funext_iff
#align has_sum_zero_iff hasSum_zero_iff
theorem tsum_eq_zero_iff (hf : Summable f) : ∑' i, f i = 0 ↔ ∀ x, f x = 0 := by
@@ -215,7 +215,7 @@ theorem tsum_ne_zero_iff (hf : Summable f) : ∑' i, f i ≠ 0 ↔ ∃ x, f x
rw [Ne.def, tsum_eq_zero_iff hf, not_forall]
#align tsum_ne_zero_iff tsum_ne_zero_iff
-theorem isLUB_hasSum' (hf : HasSum f a) : IsLUB (Set.range fun s => ∑ i in s, f i) a :=
+theorem isLUB_hasSum' (hf : HasSum f a) : IsLUB (Set.range fun s ↦ ∑ i in s, f i) a :=
isLUB_of_tendsto_atTop (Finset.sum_mono_set f) hf
#align is_lub_has_sum' isLUB_hasSum'
@@ -234,25 +234,25 @@ the existence of a least upper bound.
theorem hasSum_of_isLUB_of_nonneg [LinearOrderedAddCommMonoid α] [TopologicalSpace α]
[OrderTopology α] {f : ι → α} (i : α) (h : ∀ i, 0 ≤ f i)
- (hf : IsLUB (Set.range fun s => ∑ i in s, f i) i) : HasSum f i :=
+ (hf : IsLUB (Set.range fun s ↦ ∑ i in s, f i) i) : HasSum f i :=
tendsto_atTop_isLUB (Finset.sum_mono_set_of_nonneg h) hf
#align has_sum_of_is_lub_of_nonneg hasSum_of_isLUB_of_nonneg
theorem hasSum_of_isLUB [CanonicallyLinearOrderedAddCommMonoid α] [TopologicalSpace α]
- [OrderTopology α] {f : ι → α} (b : α) (hf : IsLUB (Set.range fun s => ∑ i in s, f i) b) :
+ [OrderTopology α] {f : ι → α} (b : α) (hf : IsLUB (Set.range fun s ↦ ∑ i in s, f i) b) :
HasSum f b :=
tendsto_atTop_isLUB (Finset.sum_mono_set f) hf
#align has_sum_of_is_lub hasSum_of_isLUB
theorem summable_abs_iff [LinearOrderedAddCommGroup α] [UniformSpace α] [UniformAddGroup α]
- [CompleteSpace α] {f : ι → α} : (Summable fun x => |f x|) ↔ Summable f :=
+ [CompleteSpace α] {f : ι → α} : (Summable fun x ↦ |f x|) ↔ Summable f :=
let s := { x | 0 ≤ f x }
- have h1 : ∀ x : s, |f x| = f x := fun x => abs_of_nonneg x.2
- have h2 : ∀ x : ↑sᶜ, |f x| = -f x := fun x => abs_of_neg (not_le.1 x.2)
- calc (Summable fun x => |f x|) ↔
- (Summable fun x : s => |f x|) ∧ Summable fun x : ↑sᶜ => |f x| :=
+ have h1 : ∀ x : s, |f x| = f x := fun x ↦ abs_of_nonneg x.2
+ have h2 : ∀ x : ↑sᶜ, |f x| = -f x := fun x ↦ abs_of_neg (not_le.1 x.2)
+ calc (Summable fun x ↦ |f x|) ↔
+ (Summable fun x : s ↦ |f x|) ∧ Summable fun x : ↑sᶜ ↦ |f x| :=
summable_subtype_and_compl.symm
- _ ↔ (Summable fun x : s => f x) ∧ Summable fun x : ↑sᶜ => -f x := by simp only [h1, h2]
+ _ ↔ (Summable fun x : s ↦ f x) ∧ Summable fun x : ↑sᶜ ↦ -f x := by simp only [h1, h2]
_ ↔ Summable f := by simp only [summable_neg_iff, summable_subtype_and_compl]
#align summable_abs_iff summable_abs_iff
@@ -261,18 +261,18 @@ alias ⟨Summable.of_abs, Summable.abs⟩ := summable_abs_iff
#align summable.abs Summable.abs
theorem Finite.of_summable_const [LinearOrderedAddCommGroup α] [TopologicalSpace α] [Archimedean α]
- [OrderClosedTopology α] {b : α} (hb : 0 < b) (hf : Summable fun _ : ι => b) :
+ [OrderClosedTopology α] {b : α} (hb : 0 < b) (hf : Summable fun _ : ι ↦ b) :
Finite ι := by
- have H : ∀ s : Finset ι, s.card • b ≤ ∑' _ : ι, b := fun s => by
- simpa using sum_le_hasSum s (fun a _ => hb.le) hf.hasSum
+ have H : ∀ s : Finset ι, s.card • b ≤ ∑' _ : ι, b := fun s ↦ by
+ simpa using sum_le_hasSum s (fun a _ ↦ hb.le) hf.hasSum
obtain ⟨n, hn⟩ := Archimedean.arch (∑' _ : ι, b) hb
- have : ∀ s : Finset ι, s.card ≤ n := fun s => by
+ have : ∀ s : Finset ι, s.card ≤ n := fun s ↦ by
simpa [nsmul_le_nsmul_iff_left hb] using (H s).trans hn
have : Fintype ι := fintypeOfFinsetCardLe n this
infer_instance
theorem Set.Finite.of_summable_const [LinearOrderedAddCommGroup α] [TopologicalSpace α]
- [Archimedean α] [OrderClosedTopology α] {b : α} (hb : 0 < b) (hf : Summable fun _ : ι => b) :
+ [Archimedean α] [OrderClosedTopology α] {b : α} (hb : 0 < b) (hf : Summable fun _ : ι ↦ b) :
(Set.univ : Set ι).Finite :=
finite_univ_iff.2 <| .of_summable_const hb hf
#align finite_of_summable_const Set.Finite.of_summable_const
@@ -283,5 +283,5 @@ theorem Summable.tendsto_atTop_of_pos [LinearOrderedField α] [TopologicalSpace
{f : ℕ → α} (hf : Summable f⁻¹) (hf' : ∀ n, 0 < f n) : Tendsto f atTop atTop :=
inv_inv f ▸ Filter.Tendsto.inv_tendsto_zero <|
tendsto_nhdsWithin_of_tendsto_nhds_of_eventually_within _ hf.tendsto_atTop_zero <|
- eventually_of_forall fun _ => inv_pos.2 (hf' _)
+ eventually_of_forall fun _ ↦ inv_pos.2 (hf' _)
#align summable.tendsto_top_of_pos Summable.tendsto_atTop_of_pos
The names for lemmas about monotonicity of (a ^ ·)
and (· ^ n)
were a mess. This PR tidies up everything related by following the naming convention for (a * ·)
and (· * b)
. Namely, (a ^ ·)
is pow_right
and (· ^ n)
is pow_left
in lemma names. All lemma renames follow the corresponding multiplication lemma names closely.
Algebra.GroupPower.Order
pow_mono
→ pow_right_mono
pow_le_pow
→ pow_le_pow_right
pow_le_pow_of_le_left
→ pow_le_pow_left
pow_lt_pow_of_lt_left
→ pow_lt_pow_left
strictMonoOn_pow
→ pow_left_strictMonoOn
pow_strictMono_right
→ pow_right_strictMono
pow_lt_pow
→ pow_lt_pow_right
pow_lt_pow_iff
→ pow_lt_pow_iff_right
pow_le_pow_iff
→ pow_le_pow_iff_right
self_lt_pow
→ lt_self_pow
strictAnti_pow
→ pow_right_strictAnti
pow_lt_pow_iff_of_lt_one
→ pow_lt_pow_iff_right_of_lt_one
pow_lt_pow_of_lt_one
→ pow_lt_pow_right_of_lt_one
lt_of_pow_lt_pow
→ lt_of_pow_lt_pow_left
le_of_pow_le_pow
→ le_of_pow_le_pow_left
pow_lt_pow₀
→ pow_lt_pow_right₀
Algebra.GroupPower.CovariantClass
pow_le_pow_of_le_left'
→ pow_le_pow_left'
nsmul_le_nsmul_of_le_right
→ nsmul_le_nsmul_right
pow_lt_pow'
→ pow_lt_pow_right'
nsmul_lt_nsmul
→ nsmul_lt_nsmul_left
pow_strictMono_left
→ pow_right_strictMono'
nsmul_strictMono_right
→ nsmul_left_strictMono
StrictMono.pow_right'
→ StrictMono.pow_const
StrictMono.nsmul_left
→ StrictMono.const_nsmul
pow_strictMono_right'
→ pow_left_strictMono
nsmul_strictMono_left
→ nsmul_right_strictMono
Monotone.pow_right
→ Monotone.pow_const
Monotone.nsmul_left
→ Monotone.const_nsmul
lt_of_pow_lt_pow'
→ lt_of_pow_lt_pow_left'
lt_of_nsmul_lt_nsmul
→ lt_of_nsmul_lt_nsmul_right
pow_le_pow'
→ pow_le_pow_right'
nsmul_le_nsmul
→ nsmul_le_nsmul_left
pow_le_pow_of_le_one'
→ pow_le_pow_right_of_le_one'
nsmul_le_nsmul_of_nonpos
→ nsmul_le_nsmul_left_of_nonpos
le_of_pow_le_pow'
→ le_of_pow_le_pow_left'
le_of_nsmul_le_nsmul'
→ le_of_nsmul_le_nsmul_right'
pow_le_pow_iff'
→ pow_le_pow_iff_right'
nsmul_le_nsmul_iff
→ nsmul_le_nsmul_iff_left
pow_lt_pow_iff'
→ pow_lt_pow_iff_right'
nsmul_lt_nsmul_iff
→ nsmul_lt_nsmul_iff_left
Data.Nat.Pow
Nat.pow_lt_pow_of_lt_left
→ Nat.pow_lt_pow_left
Nat.pow_le_iff_le_left
→ Nat.pow_le_pow_iff_left
Nat.pow_lt_iff_lt_left
→ Nat.pow_lt_pow_iff_left
pow_le_pow_iff_left
pow_lt_pow_iff_left
pow_right_injective
pow_right_inj
Nat.pow_le_pow_left
to have the correct name since Nat.pow_le_pow_of_le_left
is in Std.Nat.pow_le_pow_right
to have the correct name since Nat.pow_le_pow_of_le_right
is in Std.self_le_pow
was a duplicate of le_self_pow
.Nat.pow_lt_pow_of_lt_right
is defeq to pow_lt_pow_right
.Nat.pow_right_strictMono
is defeq to pow_right_strictMono
.Nat.pow_le_iff_le_right
is defeq to pow_le_pow_iff_right
.Nat.pow_lt_iff_lt_right
is defeq to pow_lt_pow_iff_right
.0 < n
or 1 ≤ n
to n ≠ 0
.Nat
lemmas have been protected
.@@ -267,7 +267,7 @@ theorem Finite.of_summable_const [LinearOrderedAddCommGroup α] [TopologicalSpac
simpa using sum_le_hasSum s (fun a _ => hb.le) hf.hasSum
obtain ⟨n, hn⟩ := Archimedean.arch (∑' _ : ι, b) hb
have : ∀ s : Finset ι, s.card ≤ n := fun s => by
- simpa [nsmul_le_nsmul_iff hb] using (H s).trans hn
+ simpa [nsmul_le_nsmul_iff_left hb] using (H s).trans hn
have : Fintype ι := fintypeOfFinsetCardLe n this
infer_instance
Renames:
CanonicallyOrderedMonoid
->
CanonicallyOrderedCommMonoid
CanonicallyOrderedAddMonoid
->
CanonicallyOrderedAddCommMonoid
CanonicallyLinearOrderedMonoid
->
CanonicallyLinearOrderedCommMonoid
CanonicallyLinearOrderedAddMonoid
->
CanonicallyLinearOrderedAddCommMonoid
@@ -190,10 +190,10 @@ theorem tsum_pos (hsum : Summable g) (hg : ∀ i, 0 ≤ g i) (i : ι) (hi : 0 <
end OrderedAddCommGroup
-section CanonicallyOrderedAddMonoid
+section CanonicallyOrderedAddCommMonoid
-variable [CanonicallyOrderedAddMonoid α] [TopologicalSpace α] [OrderClosedTopology α] {f : ι → α}
- {a : α}
+variable [CanonicallyOrderedAddCommMonoid α] [TopologicalSpace α] [OrderClosedTopology α]
+ {f : ι → α} {a : α}
theorem le_hasSum' (hf : HasSum f a) (i : ι) : f i ≤ a :=
le_hasSum hf i fun _ _ => zero_le _
@@ -219,7 +219,7 @@ theorem isLUB_hasSum' (hf : HasSum f a) : IsLUB (Set.range fun s => ∑ i in s,
isLUB_of_tendsto_atTop (Finset.sum_mono_set f) hf
#align is_lub_has_sum' isLUB_hasSum'
-end CanonicallyOrderedAddMonoid
+end CanonicallyOrderedAddCommMonoid
section LinearOrder
@@ -238,8 +238,9 @@ theorem hasSum_of_isLUB_of_nonneg [LinearOrderedAddCommMonoid α] [TopologicalSp
tendsto_atTop_isLUB (Finset.sum_mono_set_of_nonneg h) hf
#align has_sum_of_is_lub_of_nonneg hasSum_of_isLUB_of_nonneg
-theorem hasSum_of_isLUB [CanonicallyLinearOrderedAddMonoid α] [TopologicalSpace α] [OrderTopology α]
- {f : ι → α} (b : α) (hf : IsLUB (Set.range fun s => ∑ i in s, f i) b) : HasSum f b :=
+theorem hasSum_of_isLUB [CanonicallyLinearOrderedAddCommMonoid α] [TopologicalSpace α]
+ [OrderTopology α] {f : ι → α} (b : α) (hf : IsLUB (Set.range fun s => ∑ i in s, f i) b) :
+ HasSum f b :=
tendsto_atTop_isLUB (Finset.sum_mono_set f) hf
#align has_sum_of_is_lub hasSum_of_isLUB
Also fix implicitness of arguments to Finset.sum_singleton
.
@@ -88,7 +88,7 @@ theorem isLUB_hasSum (h : ∀ i, 0 ≤ f i) (hf : HasSum f a) :
theorem le_hasSum (hf : HasSum f a) (i : ι) (hb : ∀ j, j ≠ i → 0 ≤ f j) : f i ≤ a :=
calc
- f i = ∑ i in {i}, f i := Finset.sum_singleton.symm
+ f i = ∑ i in {i}, f i := by rw [sum_singleton]
_ ≤ a := sum_le_hasSum _ (by simpa) hf
#align le_has_sum le_hasSum
@@ -255,7 +255,7 @@ theorem summable_abs_iff [LinearOrderedAddCommGroup α] [UniformSpace α] [Unifo
_ ↔ Summable f := by simp only [summable_neg_iff, summable_subtype_and_compl]
#align summable_abs_iff summable_abs_iff
-alias summable_abs_iff ↔ Summable.of_abs Summable.abs
+alias ⟨Summable.of_abs, Summable.abs⟩ := summable_abs_iff
#align summable.of_abs Summable.of_abs
#align summable.abs Summable.abs
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -20,7 +20,7 @@ This file provides lemmas about the interaction of infinite sums and order opera
open Finset Filter Function BigOperators
open scoped Classical
-variable {ι κ α : Type _}
+variable {ι κ α : Type*}
section Preorder
@@ -2,17 +2,14 @@
Copyright (c) 2017 Johannes Hölzl. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl
-
-! This file was ported from Lean 3 source module topology.algebra.infinite_sum.order
-! leanprover-community/mathlib commit 32253a1a1071173b33dc7d6a218cf722c6feb514
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Algebra.Order.Archimedean
import Mathlib.Topology.Algebra.InfiniteSum.Basic
import Mathlib.Topology.Algebra.Order.Field
import Mathlib.Topology.Algebra.Order.MonotoneConvergence
+#align_import topology.algebra.infinite_sum.order from "leanprover-community/mathlib"@"32253a1a1071173b33dc7d6a218cf722c6feb514"
+
/-!
# Infinite sum in an order
∑'
precedence (#5615)
∑
, ∏
and variants).([^a-zA-Zα-ωΑ-Ω'𝓝ℳ₀𝕂ₛ)]) \(([∑∏][^()∑∏]*,[^()∑∏:]*)\) ([⊂⊆=<≤])
replaced by $1 $2 $3
@@ -30,8 +30,8 @@ section Preorder
variable [Preorder α] [AddCommMonoid α] [TopologicalSpace α] [OrderClosedTopology α] [T2Space α]
{f : ℕ → α} {c : α}
-theorem tsum_le_of_sum_range_le (hf : Summable f) (h : ∀ n, (∑ i in range n, f i) ≤ c) :
- (∑' n, f n) ≤ c :=
+theorem tsum_le_of_sum_range_le (hf : Summable f) (h : ∀ n, ∑ i in range n, f i ≤ c) :
+ ∑' n, f n ≤ c :=
let ⟨_l, hl⟩ := hf
hl.tsum_eq.symm ▸ le_of_tendsto' hl.tendsto_sum_nat h
#align tsum_le_of_sum_range_le tsum_le_of_sum_range_le
@@ -52,7 +52,7 @@ theorem hasSum_mono (hf : HasSum f a₁) (hg : HasSum g a₂) (h : f ≤ g) : a
hasSum_le h hf hg
#align has_sum_mono hasSum_mono
-theorem hasSum_le_of_sum_le (hf : HasSum f a) (h : ∀ s, (∑ i in s, f i) ≤ a₂) : a ≤ a₂ :=
+theorem hasSum_le_of_sum_le (hf : HasSum f a) (h : ∀ s, ∑ i in s, f i ≤ a₂) : a ≤ a₂ :=
le_of_tendsto' hf h
#align has_sum_le_of_sum_le hasSum_le_of_sum_le
@@ -79,7 +79,7 @@ theorem tsum_le_tsum_of_inj {g : κ → α} (e : ι → κ) (he : Injective e)
#align tsum_le_tsum_of_inj tsum_le_tsum_of_inj
theorem sum_le_hasSum (s : Finset ι) (hs : ∀ i, i ∉ s → 0 ≤ f i) (hf : HasSum f a) :
- (∑ i in s, f i) ≤ a :=
+ ∑ i in s, f i ≤ a :=
ge_of_tendsto hf (eventually_atTop.2
⟨s, fun _t hst => sum_le_sum_of_subset_of_nonneg hst fun i _ hbs => hs i hbs⟩)
#align sum_le_has_sum sum_le_hasSum
@@ -96,7 +96,7 @@ theorem le_hasSum (hf : HasSum f a) (i : ι) (hb : ∀ j, j ≠ i → 0 ≤ f j)
#align le_has_sum le_hasSum
theorem sum_le_tsum {f : ι → α} (s : Finset ι) (hs : ∀ i, i ∉ s → 0 ≤ f i) (hf : Summable f) :
- (∑ i in s, f i) ≤ ∑' i, f i :=
+ ∑ i in s, f i ≤ ∑' i, f i :=
sum_le_hasSum s hs hf.hasSum
#align sum_le_tsum sum_le_tsum
@@ -105,20 +105,20 @@ theorem le_tsum (hf : Summable f) (i : ι) (hb : ∀ j, j ≠ i → 0 ≤ f j) :
#align le_tsum le_tsum
theorem tsum_le_tsum (h : ∀ i, f i ≤ g i) (hf : Summable f) (hg : Summable g) :
- (∑' i, f i) ≤ ∑' i, g i :=
+ ∑' i, f i ≤ ∑' i, g i :=
hasSum_le h hf.hasSum hg.hasSum
#align tsum_le_tsum tsum_le_tsum
@[mono]
-theorem tsum_mono (hf : Summable f) (hg : Summable g) (h : f ≤ g) : (∑' n, f n) ≤ ∑' n, g n :=
+theorem tsum_mono (hf : Summable f) (hg : Summable g) (h : f ≤ g) : ∑' n, f n ≤ ∑' n, g n :=
tsum_le_tsum h hf hg
#align tsum_mono tsum_mono
-theorem tsum_le_of_sum_le (hf : Summable f) (h : ∀ s, (∑ i in s, f i) ≤ a₂) : (∑' i, f i) ≤ a₂ :=
+theorem tsum_le_of_sum_le (hf : Summable f) (h : ∀ s, ∑ i in s, f i ≤ a₂) : ∑' i, f i ≤ a₂ :=
hasSum_le_of_sum_le hf.hasSum h
#align tsum_le_of_sum_le tsum_le_of_sum_le
-theorem tsum_le_of_sum_le' (ha₂ : 0 ≤ a₂) (h : ∀ s, (∑ i in s, f i) ≤ a₂) : (∑' i, f i) ≤ a₂ := by
+theorem tsum_le_of_sum_le' (ha₂ : 0 ≤ a₂) (h : ∀ s, ∑ i in s, f i ≤ a₂) : ∑' i, f i ≤ a₂ := by
by_cases hf : Summable f
· exact tsum_le_of_sum_le hf h
· rw [tsum_eq_zero_of_not_summable hf]
@@ -139,7 +139,7 @@ theorem tsum_nonneg (h : ∀ i, 0 ≤ g i) : 0 ≤ ∑' i, g i := by
· rw [tsum_eq_zero_of_not_summable hg]
#align tsum_nonneg tsum_nonneg
-theorem tsum_nonpos (h : ∀ i, f i ≤ 0) : (∑' i, f i) ≤ 0 := by
+theorem tsum_nonpos (h : ∀ i, f i ≤ 0) : ∑' i, f i ≤ 0 := by
by_cases hf : Summable f
· exact hf.hasSum.nonpos h
· rw [tsum_eq_zero_of_not_summable hf]
@@ -174,13 +174,13 @@ theorem hasSum_strict_mono (hf : HasSum f a₁) (hg : HasSum g a₂) (h : f < g)
#align has_sum_strict_mono hasSum_strict_mono
theorem tsum_lt_tsum (h : f ≤ g) (hi : f i < g i) (hf : Summable f) (hg : Summable g) :
- (∑' n, f n) < ∑' n, g n :=
+ ∑' n, f n < ∑' n, g n :=
hasSum_lt h hi hf.hasSum hg.hasSum
#align tsum_lt_tsum tsum_lt_tsum
@[mono]
theorem tsum_strict_mono (hf : Summable f) (hg : Summable g) (h : f < g) :
- (∑' n, f n) < ∑' n, g n :=
+ ∑' n, f n < ∑' n, g n :=
let ⟨hle, _i, hi⟩ := Pi.lt_def.mp h
tsum_lt_tsum hle hi hf hg
#align tsum_strict_mono tsum_strict_mono
@@ -210,11 +210,11 @@ theorem hasSum_zero_iff : HasSum f 0 ↔ ∀ x, f x = 0 :=
(hasSum_zero_iff_of_nonneg fun _ => zero_le _).trans funext_iff
#align has_sum_zero_iff hasSum_zero_iff
-theorem tsum_eq_zero_iff (hf : Summable f) : (∑' i, f i) = 0 ↔ ∀ x, f x = 0 := by
+theorem tsum_eq_zero_iff (hf : Summable f) : ∑' i, f i = 0 ↔ ∀ x, f x = 0 := by
rw [← hasSum_zero_iff, hf.hasSum_iff]
#align tsum_eq_zero_iff tsum_eq_zero_iff
-theorem tsum_ne_zero_iff (hf : Summable f) : (∑' i, f i) ≠ 0 ↔ ∃ x, f x ≠ 0 := by
+theorem tsum_ne_zero_iff (hf : Summable f) : ∑' i, f i ≠ 0 ↔ ∃ x, f x ≠ 0 := by
rw [Ne.def, tsum_eq_zero_iff hf, not_forall]
#align tsum_ne_zero_iff tsum_ne_zero_iff
@@ -250,11 +250,11 @@ theorem summable_abs_iff [LinearOrderedAddCommGroup α] [UniformSpace α] [Unifo
[CompleteSpace α] {f : ι → α} : (Summable fun x => |f x|) ↔ Summable f :=
let s := { x | 0 ≤ f x }
have h1 : ∀ x : s, |f x| = f x := fun x => abs_of_nonneg x.2
- have h2 : ∀ x : ↑(sᶜ), |f x| = -f x := fun x => abs_of_neg (not_le.1 x.2)
+ have h2 : ∀ x : ↑sᶜ, |f x| = -f x := fun x => abs_of_neg (not_le.1 x.2)
calc (Summable fun x => |f x|) ↔
- (Summable fun x : s => |f x|) ∧ Summable fun x : ↑(sᶜ) => |f x| :=
+ (Summable fun x : s => |f x|) ∧ Summable fun x : ↑sᶜ => |f x| :=
summable_subtype_and_compl.symm
- _ ↔ (Summable fun x : s => f x) ∧ Summable fun x : ↑(sᶜ) => -f x := by simp only [h1, h2]
+ _ ↔ (Summable fun x : s => f x) ∧ Summable fun x : ↑sᶜ => -f x := by simp only [h1, h2]
_ ↔ Summable f := by simp only [summable_neg_iff, summable_subtype_and_compl]
#align summable_abs_iff summable_abs_iff
@@ -265,9 +265,9 @@ alias summable_abs_iff ↔ Summable.of_abs Summable.abs
theorem Finite.of_summable_const [LinearOrderedAddCommGroup α] [TopologicalSpace α] [Archimedean α]
[OrderClosedTopology α] {b : α} (hb : 0 < b) (hf : Summable fun _ : ι => b) :
Finite ι := by
- have H : ∀ s : Finset ι, s.card • b ≤ ∑' _i : ι, b := fun s => by
+ have H : ∀ s : Finset ι, s.card • b ≤ ∑' _ : ι, b := fun s => by
simpa using sum_le_hasSum s (fun a _ => hb.le) hf.hasSum
- obtain ⟨n, hn⟩ := Archimedean.arch (∑' _i : ι, b) hb
+ obtain ⟨n, hn⟩ := Archimedean.arch (∑' _ : ι, b) hb
have : ∀ s : Finset ι, s.card ≤ n := fun s => by
simpa [nsmul_le_nsmul_iff hb] using (H s).trans hn
have : Fintype ι := fintypeOfFinsetCardLe n this
@@ -93,7 +93,6 @@ theorem le_hasSum (hf : HasSum f a) (i : ι) (hb : ∀ j, j ≠ i → 0 ≤ f j)
calc
f i = ∑ i in {i}, f i := Finset.sum_singleton.symm
_ ≤ a := sum_le_hasSum _ (by simpa) hf
-
#align le_has_sum le_hasSum
theorem sum_le_tsum {f : ι → α} (s : Finset ι) (hs : ∀ i, i ∉ s → 0 ≤ f i) (hf : Summable f) :
@@ -199,9 +198,9 @@ section CanonicallyOrderedAddMonoid
variable [CanonicallyOrderedAddMonoid α] [TopologicalSpace α] [OrderClosedTopology α] {f : ι → α}
{a : α}
-theorem le_has_sum' (hf : HasSum f a) (i : ι) : f i ≤ a :=
+theorem le_hasSum' (hf : HasSum f a) (i : ι) : f i ≤ a :=
le_hasSum hf i fun _ _ => zero_le _
-#align le_has_sum' le_has_sum'
+#align le_has_sum' le_hasSum'
theorem le_tsum' (hf : Summable f) (i : ι) : f i ≤ ∑' i, f i :=
le_tsum hf i fun _ _ => zero_le _
@@ -219,9 +218,9 @@ theorem tsum_ne_zero_iff (hf : Summable f) : (∑' i, f i) ≠ 0 ↔ ∃ x, f x
rw [Ne.def, tsum_eq_zero_iff hf, not_forall]
#align tsum_ne_zero_iff tsum_ne_zero_iff
-theorem isLUB_has_sum' (hf : HasSum f a) : IsLUB (Set.range fun s => ∑ i in s, f i) a :=
+theorem isLUB_hasSum' (hf : HasSum f a) : IsLUB (Set.range fun s => ∑ i in s, f i) a :=
isLUB_of_tendsto_atTop (Finset.sum_mono_set f) hf
-#align is_lub_has_sum' isLUB_has_sum'
+#align is_lub_has_sum' isLUB_hasSum'
end CanonicallyOrderedAddMonoid
The unported dependencies are