File: Mathlib/Topology/Algebra/InfiniteSum/Ring.lean

full_name: HasSum.mul_left
code: theorem HasSum.mul_left (a₂) (h : HasSum f a₁) : HasSum (fun i ↦ a₂ * f i) (a₂ * a₁) 
goal: HasSum (fun i => a₂ * f i) (a₂ * a₁)

full_name: HasSum.mul_right
code: theorem HasSum.mul_right (a₂) (hf : HasSum f a₁) : HasSum (fun i ↦ f i * a₂) (a₁ * a₂) 
goal: HasSum (fun i => f i * a₂) (a₁ * a₂)

full_name: Summable.mul_left
code: theorem Summable.mul_left (a) (hf : Summable f) : Summable fun i ↦ a * f i 
goal: Summable fun i => a * f i

full_name: Summable.mul_right
code: theorem Summable.mul_right (a) (hf : Summable f) : Summable fun i ↦ f i * a 
goal: Summable fun i => f i * a

full_name: Summable.tsum_mul_left
code: theorem Summable.tsum_mul_left (a) (hf : Summable f) : ∑' i, a * f i = a * ∑' i, f i 
goal: ∑' (i : ι), a * f i = a * ∑' (i : ι), f i

full_name: Summable.tsum_mul_right
code: theorem Summable.tsum_mul_right (a) (hf : Summable f) : ∑' i, f i * a = (∑' i, f i) * a 
goal: ∑' (i : ι), f i * a = (∑' (i : ι), f i) * a

full_name: Commute.tsum_right
code: theorem Commute.tsum_right (a) (h : ∀ i, Commute a (f i)) : Commute a (∑' i, f i) 
goal: Commute a (∑' (i : ι), f i)

full_name: Commute.tsum_left
code: theorem Commute.tsum_left (a) (h : ∀ i, Commute (f i) a) : Commute (∑' i, f i) a 
goal: Commute (∑' (i : ι), f i) a

full_name: HasSum.div_const
code: theorem HasSum.div_const (h : HasSum f a) (b : α) : HasSum (fun i ↦ f i / b) (a / b) 
goal: HasSum (fun i => f i / b) (a / b)

full_name: Summable.div_const
code: theorem Summable.div_const (h : Summable f) (b : α) : Summable fun i ↦ f i / b 
goal: Summable fun i => f i / b

full_name: hasSum_mul_left_iff
code: theorem hasSum_mul_left_iff (h : a₂ ≠ 0) : HasSum (fun i ↦ a₂ * f i) (a₂ * a₁) ↔ HasSum f a₁ 
goal: HasSum (fun i => a₂ * f i) (a₂ * a₁) ↔ HasSum f a₁

full_name: hasSum_mul_right_iff
code: theorem hasSum_mul_right_iff (h : a₂ ≠ 0) : HasSum (fun i ↦ f i * a₂) (a₁ * a₂) ↔ HasSum f a₁ 
goal: HasSum (fun i => f i * a₂) (a₁ * a₂) ↔ HasSum f a₁

full_name: hasSum_div_const_iff
code: theorem hasSum_div_const_iff (h : a₂ ≠ 0) : HasSum (fun i ↦ f i / a₂) (a₁ / a₂) ↔ HasSum f a₁ 
goal: HasSum (fun i => f i / a₂) (a₁ / a₂) ↔ HasSum f a₁

full_name: summable_mul_left_iff
code: theorem summable_mul_left_iff (h : a ≠ 0) : (Summable fun i ↦ a * f i) ↔ Summable f 
goal: (Summable fun i => a * f i) ↔ Summable f

full_name: summable_mul_right_iff
code: theorem summable_mul_right_iff (h : a ≠ 0) : (Summable fun i ↦ f i * a) ↔ Summable f 
goal: (Summable fun i => f i * a) ↔ Summable f

full_name: summable_div_const_iff
code: theorem summable_div_const_iff (h : a ≠ 0) : (Summable fun i ↦ f i / a) ↔ Summable f 
goal: (Summable fun i => f i / a) ↔ Summable f

full_name: tsum_mul_left
code: theorem tsum_mul_left [T2Space α] : ∑' x, a * f x = a * ∑' x, f x 
goal: ∑' (x : ι), a * f x = a * ∑' (x : ι), f x

full_name: tsum_mul_right
code: theorem tsum_mul_right [T2Space α] : ∑' x, f x * a = (∑' x, f x) * a 
goal: ∑' (x : ι), f x * a = (∑' (x : ι), f x) * a

full_name: tsum_div_const
code: theorem tsum_div_const [T2Space α] : ∑' x, f x / a = (∑' x, f x) / a 
goal: ∑' (x : ι), f x / a = (∑' (x : ι), f x) / a

full_name: HasSum.mul_eq
code: theorem HasSum.mul_eq (hf : HasSum f s) (hg : HasSum g t)
    (hfg : HasSum (fun x : ι × κ ↦ f x.1 * g x.2) u) : s * t = u 
goal: s * t = u

full_name: HasSum.mul
code: theorem HasSum.mul (hf : HasSum f s) (hg : HasSum g t)
    (hfg : Summable fun x : ι × κ ↦ f x.1 * g x.2) :
    HasSum (fun x : ι × κ ↦ f x.1 * g x.2) (s * t) 
goal: HasSum (fun x => f x.1 * g x.2) (s * t)

full_name: tsum_mul_tsum
code: /-- Product of two infinites sums indexed by arbitrary types.
    See also `tsum_mul_tsum_of_summable_norm` if `f` and `g` are absolutely summable. -/
theorem tsum_mul_tsum (hf : Summable f) (hg : Summable g)
    (hfg : Summable fun x : ι × κ ↦ f x.1 * g x.2) :
    ((∑' x, f x) * ∑' y, g y) = ∑' z : ι × κ, f z.1 * g z.2 
goal: (∑' (x : ι), f x) * ∑' (y : κ), g y = ∑' (z : ι × κ), f z.1 * g z.2

full_name: summable_mul_prod_iff_summable_mul_sigma_antidiagonal
code: /-- The family `(k, l) : ℕ × ℕ ↦ f k * g l` is summable if and only if the family
`(n, k, l) : Σ (n : ℕ), antidiagonal n ↦ f k * g l` is summable. -/
theorem summable_mul_prod_iff_summable_mul_sigma_antidiagonal :
    (Summable fun x : A × A ↦ f x.1 * g x.2) ↔
      Summable fun x : Σn : A, antidiagonal n ↦ f (x.2 : A × A).1 * g (x.2 : A × A).2 
goal: (Summable fun x => f x.1 * g x.2) ↔ Summable fun x => f (↑x.snd).1 * g (↑x.snd).2

full_name: summable_sum_mul_antidiagonal_of_summable_mul
code: theorem summable_sum_mul_antidiagonal_of_summable_mul
    (h : Summable fun x : A × A ↦ f x.1 * g x.2) :
    Summable fun n ↦ ∑ kl ∈ antidiagonal n, f kl.1 * g kl.2 
goal: Summable fun n => ∑ kl ∈ Finset.antidiagonal n, f kl.1 * g kl.2

full_name: tsum_mul_tsum_eq_tsum_sum_antidiagonal
code: /-- The **Cauchy product formula** for the product of two infinites sums indexed by `ℕ`, expressed
by summing on `Finset.antidiagonal`.

See also `tsum_mul_tsum_eq_tsum_sum_antidiagonal_of_summable_norm` if `f` and `g` are absolutely
summable. -/
theorem tsum_mul_tsum_eq_tsum_sum_antidiagonal (hf : Summable f) (hg : Summable g)
    (hfg : Summable fun x : A × A ↦ f x.1 * g x.2) :
    ((∑' n, f n) * ∑' n, g n) = ∑' n, ∑ kl ∈ antidiagonal n, f kl.1 * g kl.2 
goal: (∑' (n : A), f n) * ∑' (n : A), g n = ∑' (n : A), ∑ kl ∈ Finset.antidiagonal n, f kl.1 * g kl.2

full_name: summable_sum_mul_range_of_summable_mul
code: theorem summable_sum_mul_range_of_summable_mul (h : Summable fun x : ℕ × ℕ ↦ f x.1 * g x.2) :
    Summable fun n ↦ ∑ k ∈ range (n + 1), f k * g (n - k) 
goal: Summable fun n => ∑ k ∈ Finset.range (n + 1), f k * g (n - k)

full_name: tsum_mul_tsum_eq_tsum_sum_range
code: /-- The **Cauchy product formula** for the product of two infinites sums indexed by `ℕ`, expressed
by summing on `Finset.range`.

See also `tsum_mul_tsum_eq_tsum_sum_range_of_summable_norm` if `f` and `g` are absolutely summable.
-/
theorem tsum_mul_tsum_eq_tsum_sum_range (hf : Summable f) (hg : Summable g)
    (hfg : Summable fun x : ℕ × ℕ ↦ f x.1 * g x.2) :
    ((∑' n, f n) * ∑' n, g n) = ∑' n, ∑ k ∈ range (n + 1), f k * g (n - k) 
goal: (∑' (n : ℕ), f n) * ∑' (n : ℕ), g n = ∑' (n : ℕ), ∑ k ∈ Finset.range (n + 1), f k * g (n - k)