Theorem: _private.Mathlib.RingTheory.HahnSeries.Multiplication.0.HahnModule.mul_smul'
File: Mathlib/RingTheory/HahnSeries/Multiplication.lean

Proof steps:
state_before: Γ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝⁶ : OrderedCancelAddCommMonoid Γ
inst✝⁵ : PartialOrder Γ'
inst✝⁴ : AddAction Γ Γ'
inst✝³ : IsOrderedCancelVAdd Γ Γ'
inst✝² : AddCommMonoid V
inst✝¹ : Semiring R
inst✝ : Module R V
x y : HahnSeries Γ R
z : HahnModule Γ' R V
⊢ (x * y) • z = x • y • z
state_after: case h.h
Γ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝⁶ : OrderedCancelAddCommMonoid Γ
inst✝⁵ : PartialOrder Γ'
inst✝⁴ : AddAction Γ Γ'
inst✝³ : IsOrderedCancelVAdd Γ Γ'
inst✝² : AddCommMonoid V
inst✝¹ : Semiring R
inst✝ : Module R V
x y : HahnSeries Γ R
z : HahnModule Γ' R V
b : Γ'
⊢ ((of R).symm ((x * y) • z)).coeff b = ((of R).symm (x • y • z)).coeff b
tactic: ext b
state_before: case h.h
Γ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝⁶ : OrderedCancelAddCommMonoid Γ
inst✝⁵ : PartialOrder Γ'
inst✝⁴ : AddAction Γ Γ'
inst✝³ : IsOrderedCancelVAdd Γ Γ'
inst✝² : AddCommMonoid V
inst✝¹ : Semiring R
inst✝ : Module R V
x y : HahnSeries Γ R
z : HahnModule Γ' R V
b : Γ'
⊢ ((of R).symm ((x * y) • z)).coeff b = ((of R).symm (x • y • z)).coeff b
state_after: case h.h
Γ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝⁶ : OrderedCancelAddCommMonoid Γ
inst✝⁵ : PartialOrder Γ'
inst✝⁴ : AddAction Γ Γ'
inst✝³ : IsOrderedCancelVAdd Γ Γ'
inst✝² : AddCommMonoid V
inst✝¹ : Semiring R
inst✝ : Module R V
x y : HahnSeries Γ R
z : HahnModule Γ' R V
b : Γ'
⊢ ∑ ij ∈ VAddAntidiagonal ⋯ ⋯ b, (x * y).coeff ij.1 • ((of R).symm z).coeff ij.2 =
    ∑ ij ∈ VAddAntidiagonal ⋯ ⋯ b, x.coeff ij.1 • ((of R).symm (y • z)).coeff ij.2
tactic: rw [smul_coeff_left (x.isPWO_support.add y.isPWO_support)
    HahnSeries.support_mul_subset_add_support, smul_coeff_right
    (y.isPWO_support.vadd ((of R).symm z).isPWO_support) support_smul_subset_vadd_support]
state_before: case h.h
Γ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝⁶ : OrderedCancelAddCommMonoid Γ
inst✝⁵ : PartialOrder Γ'
inst✝⁴ : AddAction Γ Γ'
inst✝³ : IsOrderedCancelVAdd Γ Γ'
inst✝² : AddCommMonoid V
inst✝¹ : Semiring R
inst✝ : Module R V
x y : HahnSeries Γ R
z : HahnModule Γ' R V
b : Γ'
⊢ ∑ ij ∈ VAddAntidiagonal ⋯ ⋯ b, (x * y).coeff ij.1 • ((of R).symm z).coeff ij.2 =
    ∑ ij ∈ VAddAntidiagonal ⋯ ⋯ b, x.coeff ij.1 • ((of R).symm (y • z)).coeff ij.2
state_after: case h.h
Γ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝⁶ : OrderedCancelAddCommMonoid Γ
inst✝⁵ : PartialOrder Γ'
inst✝⁴ : AddAction Γ Γ'
inst✝³ : IsOrderedCancelVAdd Γ Γ'
inst✝² : AddCommMonoid V
inst✝¹ : Semiring R
inst✝ : Module R V
x y : HahnSeries Γ R
z : HahnModule Γ' R V
b : Γ'
⊢ ∑ x_1 ∈ (VAddAntidiagonal ⋯ ⋯ b).sigma fun a => addAntidiagonal ⋯ ⋯ a.1,
      (x.coeff x_1.snd.1 * y.coeff x_1.snd.2) • ((of R).symm z).coeff x_1.fst.2 =
    ∑ x_1 ∈ (VAddAntidiagonal ⋯ ⋯ b).sigma fun a => VAddAntidiagonal ⋯ ⋯ a.2,
      x.coeff x_1.fst.1 • y.coeff x_1.snd.1 • ((of R).symm z).coeff x_1.snd.2
tactic: simp only [HahnSeries.mul_coeff, smul_coeff, HahnSeries.add_coeff, sum_smul, smul_sum, sum_sigma']
state_before: case h.h
Γ : Type u_1
Γ' : Type u_2
R : Type u_3
V : Type u_4
inst✝⁶ : OrderedCancelAddCommMonoid Γ
inst✝⁵ : PartialOrder Γ'
inst✝⁴ : AddAction Γ Γ'
inst✝³ : IsOrderedCancelVAdd Γ Γ'
inst✝² : AddCommMonoid V
inst✝¹ : Semiring R
inst✝ : Module R V
x y : HahnSeries Γ R
z : HahnModule Γ' R V
b : Γ'
⊢ ∑ x_1 ∈ (VAddAntidiagonal ⋯ ⋯ b).sigma fun a => addAntidiagonal ⋯ ⋯ a.1,
      (x.coeff x_1.snd.1 * y.coeff x_1.snd.2) • ((of R).symm z).coeff x_1.fst.2 =
    ∑ x_1 ∈ (VAddAntidiagonal ⋯ ⋯ b).sigma fun a => VAddAntidiagonal ⋯ ⋯ a.2,
      x.coeff x_1.fst.1 • y.coeff x_1.snd.1 • ((of R).symm z).coeff x_1.snd.2
state_after: no goals
tactic: apply Finset.sum_nbij' (fun ⟨⟨_i, j⟩, ⟨k, l⟩⟩ ↦ ⟨(k, l +ᵥ j), (l, j)⟩)
    (fun ⟨⟨i, _j⟩, ⟨k, l⟩⟩ ↦ ⟨(i + k, l), (i, k)⟩) <;>
    aesop (add safe [Set.vadd_mem_vadd, Set.add_mem_add]) (add simp [add_vadd, mul_smul])