Theorem: exp_sum_of_commute
File: Mathlib/Analysis/NormedSpace/Exponential.lean

tactic: induction' s using Finset.induction_on with a s ha ih
state_before: 𝕂 : Type u_3
𝔸 : Type u_2
𝔹 : Type ?u.372921
inst✝⁵ : IsROrC 𝕂
inst✝⁴ : NormedRing 𝔸
inst✝³ : NormedAlgebra 𝕂 𝔸
inst✝² : NormedRing 𝔹
inst✝¹ : NormedAlgebra 𝕂 𝔹
inst✝ : CompleteSpace 𝔸
ι : Type u_1
s : Finset ι
f : ι → 𝔸
h : Set.Pairwise ↑s fun i j => Commute (f i) (f j)
⊢ exp 𝕂 (∑ i in s, f i) =
    Finset.noncommProd s (fun i => exp 𝕂 (f i))
      (_ : ∀ (i : ι), i ∈ ↑s → ∀ (j : ι), j ∈ ↑s → i ≠ j → Commute (exp 𝕂 (f i)) (exp 𝕂 (f j)))

tactic: rw [Finset.noncommProd_insert_of_not_mem _ _ _ _ ha, Finset.sum_insert ha, exp_add_of_commute,
  ih (h.mono <| Finset.subset_insert _ _)]
state_before: case insert
𝕂 : Type u_3
𝔸 : Type u_2
𝔹 : Type ?u.372921
inst✝⁵ : IsROrC 𝕂
inst✝⁴ : NormedRing 𝔸
inst✝³ : NormedAlgebra 𝕂 𝔸
inst✝² : NormedRing 𝔹
inst✝¹ : NormedAlgebra 𝕂 𝔹
inst✝ : CompleteSpace 𝔸
ι : Type u_1
s✝ : Finset ι
f : ι → 𝔸
h✝ : Set.Pairwise ↑s✝ fun i j => Commute (f i) (f j)
a : ι
s : Finset ι
ha : ¬a ∈ s
ih :
  ∀ (h : Set.Pairwise ↑s fun i j => Commute (f i) (f j)),
    exp 𝕂 (∑ i in s, f i) =
      Finset.noncommProd s (fun i => exp 𝕂 (f i))
        (_ : ∀ (i : ι), i ∈ ↑s → ∀ (j : ι), j ∈ ↑s → i ≠ j → Commute (exp 𝕂 (f i)) (exp 𝕂 (f j)))
h : Set.Pairwise ↑(insert a s) fun i j => Commute (f i) (f j)
⊢ exp 𝕂 (∑ i in insert a s, f i) =
    Finset.noncommProd (insert a s) (fun i => exp 𝕂 (f i))
      (_ : ∀ (i : ι), i ∈ ↑(insert a s) → ∀ (j : ι), j ∈ ↑(insert a s) → i ≠ j → Commute (exp 𝕂 (f i)) (exp 𝕂 (f j)))

tactic: refine' Commute.sum_right _ _ _ fun i hi => _
state_before: case insert
𝕂 : Type u_3
𝔸 : Type u_2
𝔹 : Type ?u.372921
inst✝⁵ : IsROrC 𝕂
inst✝⁴ : NormedRing 𝔸
inst✝³ : NormedAlgebra 𝕂 𝔸
inst✝² : NormedRing 𝔹
inst✝¹ : NormedAlgebra 𝕂 𝔹
inst✝ : CompleteSpace 𝔸
ι : Type u_1
s✝ : Finset ι
f : ι → 𝔸
h✝ : Set.Pairwise ↑s✝ fun i j => Commute (f i) (f j)
a : ι
s : Finset ι
ha : ¬a ∈ s
ih :
  ∀ (h : Set.Pairwise ↑s fun i j => Commute (f i) (f j)),
    exp 𝕂 (∑ i in s, f i) =
      Finset.noncommProd s (fun i => exp 𝕂 (f i))
        (_ : ∀ (i : ι), i ∈ ↑s → ∀ (j : ι), j ∈ ↑s → i ≠ j → Commute (exp 𝕂 (f i)) (exp 𝕂 (f j)))
h : Set.Pairwise ↑(insert a s) fun i j => Commute (f i) (f j)
⊢ Commute (f a) (∑ x in s, f x)

tactic: exact h.of_refl (Finset.mem_insert_self _ _) (Finset.mem_insert_of_mem hi)
state_before: case insert
𝕂 : Type u_3
𝔸 : Type u_2
𝔹 : Type ?u.372921
inst✝⁵ : IsROrC 𝕂
inst✝⁴ : NormedRing 𝔸
inst✝³ : NormedAlgebra 𝕂 𝔸
inst✝² : NormedRing 𝔹
inst✝¹ : NormedAlgebra 𝕂 𝔹
inst✝ : CompleteSpace 𝔸
ι : Type u_1
s✝ : Finset ι
f : ι → 𝔸
h✝ : Set.Pairwise ↑s✝ fun i j => Commute (f i) (f j)
a : ι
s : Finset ι
ha : ¬a ∈ s
ih :
  ∀ (h : Set.Pairwise ↑s fun i j => Commute (f i) (f j)),
    exp 𝕂 (∑ i in s, f i) =
      Finset.noncommProd s (fun i => exp 𝕂 (f i))
        (_ : ∀ (i : ι), i ∈ ↑s → ∀ (j : ι), j ∈ ↑s → i ≠ j → Commute (exp 𝕂 (f i)) (exp 𝕂 (f j)))
h : Set.Pairwise ↑(insert a s) fun i j => Commute (f i) (f j)
i : ι
hi : i ∈ s
⊢ Commute (f a) (f i)

tactic: simp
state_before: case empty
𝕂 : Type u_3
𝔸 : Type u_2
𝔹 : Type ?u.372921
inst✝⁵ : IsROrC 𝕂
inst✝⁴ : NormedRing 𝔸
inst✝³ : NormedAlgebra 𝕂 𝔸
inst✝² : NormedRing 𝔹
inst✝¹ : NormedAlgebra 𝕂 𝔹
inst✝ : CompleteSpace 𝔸
ι : Type u_1
s : Finset ι
f : ι → 𝔸
h✝ : Set.Pairwise ↑s fun i j => Commute (f i) (f j)
h : Set.Pairwise ↑∅ fun i j => Commute (f i) (f j)
⊢ exp 𝕂 (∑ i in ∅, f i) =
    Finset.noncommProd ∅ (fun i => exp 𝕂 (f i))
      (_ : ∀ (i : ι), i ∈ ↑∅ → ∀ (j : ι), j ∈ ↑∅ → i ≠ j → Commute (exp 𝕂 (f i)) (exp 𝕂 (f j)))