Theorem: Finite.of_summable_const
File: Mathlib/Topology/Algebra/InfiniteSum/Order.lean

tactic: have H : ∀ s : Finset ι, s.card • b ≤ ∑' _ : ι, b := fun s ↦ by
  simpa using sum_le_hasSum s (fun a _ ↦ hb.le) hf.hasSum
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
inst✝³ : LinearOrderedAddCommGroup α
inst✝² : TopologicalSpace α
inst✝¹ : Archimedean α
inst✝ : OrderClosedTopology α
b : α
hb : 0 < b
hf : Summable fun x => b
⊢ Finite ι
state_after: ι : Type u_1
κ : Type u_2
α : Type u_3
inst✝³ : LinearOrderedAddCommGroup α
inst✝² : TopologicalSpace α
inst✝¹ : Archimedean α
inst✝ : OrderClosedTopology α
b : α
hb : 0 < b
hf : Summable fun x => b
H : ∀ (s : Finset ι), s.card • b ≤ ∑' (x : ι), b
⊢ Finite ι

tactic: obtain ⟨n, hn⟩ := Archimedean.arch (∑' _ : ι, b) hb
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
inst✝³ : LinearOrderedAddCommGroup α
inst✝² : TopologicalSpace α
inst✝¹ : Archimedean α
inst✝ : OrderClosedTopology α
b : α
hb : 0 < b
hf : Summable fun x => b
H : ∀ (s : Finset ι), s.card • b ≤ ∑' (x : ι), b
⊢ Finite ι
state_after: case intro
ι : Type u_1
κ : Type u_2
α : Type u_3
inst✝³ : LinearOrderedAddCommGroup α
inst✝² : TopologicalSpace α
inst✝¹ : Archimedean α
inst✝ : OrderClosedTopology α
b : α
hb : 0 < b
hf : Summable fun x => b
H : ∀ (s : Finset ι), s.card • b ≤ ∑' (x : ι), b
n : ℕ
hn : ∑' (x : ι), b ≤ n • b
⊢ Finite ι

tactic: have : ∀ s : Finset ι, s.card ≤ n := fun s ↦ by
  simpa [nsmul_le_nsmul_iff_left hb] using (H s).trans hn
state_before: case intro
ι : Type u_1
κ : Type u_2
α : Type u_3
inst✝³ : LinearOrderedAddCommGroup α
inst✝² : TopologicalSpace α
inst✝¹ : Archimedean α
inst✝ : OrderClosedTopology α
b : α
hb : 0 < b
hf : Summable fun x => b
H : ∀ (s : Finset ι), s.card • b ≤ ∑' (x : ι), b
n : ℕ
hn : ∑' (x : ι), b ≤ n • b
⊢ Finite ι
state_after: case intro
ι : Type u_1
κ : Type u_2
α : Type u_3
inst✝³ : LinearOrderedAddCommGroup α
inst✝² : TopologicalSpace α
inst✝¹ : Archimedean α
inst✝ : OrderClosedTopology α
b : α
hb : 0 < b
hf : Summable fun x => b
H : ∀ (s : Finset ι), s.card • b ≤ ∑' (x : ι), b
n : ℕ
hn : ∑' (x : ι), b ≤ n • b
this : ∀ (s : Finset ι), s.card ≤ n
⊢ Finite ι

tactic: have : Fintype ι := fintypeOfFinsetCardLe n this
state_before: case intro
ι : Type u_1
κ : Type u_2
α : Type u_3
inst✝³ : LinearOrderedAddCommGroup α
inst✝² : TopologicalSpace α
inst✝¹ : Archimedean α
inst✝ : OrderClosedTopology α
b : α
hb : 0 < b
hf : Summable fun x => b
H : ∀ (s : Finset ι), s.card • b ≤ ∑' (x : ι), b
n : ℕ
hn : ∑' (x : ι), b ≤ n • b
this : ∀ (s : Finset ι), s.card ≤ n
⊢ Finite ι
state_after: case intro
ι : Type u_1
κ : Type u_2
α : Type u_3
inst✝³ : LinearOrderedAddCommGroup α
inst✝² : TopologicalSpace α
inst✝¹ : Archimedean α
inst✝ : OrderClosedTopology α
b : α
hb : 0 < b
hf : Summable fun x => b
H : ∀ (s : Finset ι), s.card • b ≤ ∑' (x : ι), b
n : ℕ
hn : ∑' (x : ι), b ≤ n • b
this✝ : ∀ (s : Finset ι), s.card ≤ n
this : Fintype ι
⊢ Finite ι

tactic: infer_instance
state_before: case intro
ι : Type u_1
κ : Type u_2
α : Type u_3
inst✝³ : LinearOrderedAddCommGroup α
inst✝² : TopologicalSpace α
inst✝¹ : Archimedean α
inst✝ : OrderClosedTopology α
b : α
hb : 0 < b
hf : Summable fun x => b
H : ∀ (s : Finset ι), s.card • b ≤ ∑' (x : ι), b
n : ℕ
hn : ∑' (x : ι), b ≤ n • b
this✝ : ∀ (s : Finset ι), s.card ≤ n
this : Fintype ι
⊢ Finite ι
state_after: no goals

tactic: simpa using sum_le_hasSum s (fun a _ ↦ hb.le) hf.hasSum
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
inst✝³ : LinearOrderedAddCommGroup α
inst✝² : TopologicalSpace α
inst✝¹ : Archimedean α
inst✝ : OrderClosedTopology α
b : α
hb : 0 < b
hf : Summable fun x => b
s : Finset ι
⊢ s.card • b ≤ ∑' (x : ι), b
state_after: no goals

tactic: simpa [nsmul_le_nsmul_iff_left hb] using (H s).trans hn
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
inst✝³ : LinearOrderedAddCommGroup α
inst✝² : TopologicalSpace α
inst✝¹ : Archimedean α
inst✝ : OrderClosedTopology α
b : α
hb : 0 < b
hf : Summable fun x => b
H : ∀ (s : Finset ι), s.card • b ≤ ∑' (x : ι), b
n : ℕ
hn : ∑' (x : ι), b ≤ n • b
s : Finset ι
⊢ s.card ≤ n
state_after: no goals