Theorem: AddMonoidAlgebra.mapDomain_mul
File: Mathlib/Algebra/MonoidAlgebra/Basic.lean

tactic: simp_rw [mul_def, mapDomain_sum, mapDomain_single, map_add]
state_before: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁵ : Semiring k
α : Type u_3
β : Type u_4
α₂ : Type u_5
inst✝⁴ : Semiring β
inst✝³ : Add α
inst✝² : Add α₂
F : Type u_6
inst✝¹ : FunLike F α α₂
inst✝ : AddHomClass F α α₂
f : F
x y : β[α]
⊢ mapDomain (⇑f) (x * y) = mapDomain (⇑f) x * mapDomain (⇑f) y
state_after: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁵ : Semiring k
α : Type u_3
β : Type u_4
α₂ : Type u_5
inst✝⁴ : Semiring β
inst✝³ : Add α
inst✝² : Add α₂
F : Type u_6
inst✝¹ : FunLike F α α₂
inst✝ : AddHomClass F α α₂
f : F
x y : β[α]
⊢ (sum x fun a b => sum y fun a_1 b_1 => single (f a + f a_1) (b * b_1)) =
    sum (mapDomain (⇑f) x) fun a₁ b₁ => sum (mapDomain (⇑f) y) fun a₂ b₂ => single (a₁ + a₂) (b₁ * b₂)

tactic: rw [Finsupp.sum_mapDomain_index]
state_before: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁵ : Semiring k
α : Type u_3
β : Type u_4
α₂ : Type u_5
inst✝⁴ : Semiring β
inst✝³ : Add α
inst✝² : Add α₂
F : Type u_6
inst✝¹ : FunLike F α α₂
inst✝ : AddHomClass F α α₂
f : F
x y : β[α]
⊢ (sum x fun a b => sum y fun a_1 b_1 => single (f a + f a_1) (b * b_1)) =
    sum (mapDomain (⇑f) x) fun a₁ b₁ => sum (mapDomain (⇑f) y) fun a₂ b₂ => single (a₁ + a₂) (b₁ * b₂)
state_after: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁵ : Semiring k
α : Type u_3
β : Type u_4
α₂ : Type u_5
inst✝⁴ : Semiring β
inst✝³ : Add α
inst✝² : Add α₂
F : Type u_6
inst✝¹ : FunLike F α α₂
inst✝ : AddHomClass F α α₂
f : F
x y : β[α]
⊢ (sum x fun a b => sum y fun a_1 b_1 => single (f a + f a_1) (b * b_1)) =
    sum x fun a m => sum (mapDomain (⇑f) y) fun a₂ b₂ => single (f a + a₂) (m * b₂)

case h_zero
k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁵ : Semiring k
α : Type u_3
β : Type u_4
α₂ : Type u_5
inst✝⁴ : Semiring β
inst✝³ : Add α
inst✝² : Add α₂
F : Type u_6
inst✝¹ : FunLike F α α₂
inst✝ : AddHomClass F α α₂
f : F
x y : β[α]
⊢ ∀ (b : α₂), (sum (mapDomain (⇑f) y) fun a₂ b₂ => single (b + a₂) (0 * b₂)) = 0

case h_add
k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁵ : Semiring k
α : Type u_3
β : Type u_4
α₂ : Type u_5
inst✝⁴ : Semiring β
inst✝³ : Add α
inst✝² : Add α₂
F : Type u_6
inst✝¹ : FunLike F α α₂
inst✝ : AddHomClass F α α₂
f : F
x y : β[α]
⊢ ∀ (b : α₂) (m₁ m₂ : β),
    (sum (mapDomain (⇑f) y) fun a₂ b₂ => single (b + a₂) ((m₁ + m₂) * b₂)) =
      (sum (mapDomain (⇑f) y) fun a₂ b₂ => single (b + a₂) (m₁ * b₂)) +
        sum (mapDomain (⇑f) y) fun a₂ b₂ => single (b + a₂) (m₂ * b₂)

tactic: congr
state_before: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁵ : Semiring k
α : Type u_3
β : Type u_4
α₂ : Type u_5
inst✝⁴ : Semiring β
inst✝³ : Add α
inst✝² : Add α₂
F : Type u_6
inst✝¹ : FunLike F α α₂
inst✝ : AddHomClass F α α₂
f : F
x y : β[α]
⊢ (sum x fun a b => sum y fun a_1 b_1 => single (f a + f a_1) (b * b_1)) =
    sum x fun a m => sum (mapDomain (⇑f) y) fun a₂ b₂ => single (f a + a₂) (m * b₂)
state_after: case e_g
k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁵ : Semiring k
α : Type u_3
β : Type u_4
α₂ : Type u_5
inst✝⁴ : Semiring β
inst✝³ : Add α
inst✝² : Add α₂
F : Type u_6
inst✝¹ : FunLike F α α₂
inst✝ : AddHomClass F α α₂
f : F
x y : β[α]
⊢ (fun a b => sum y fun a_1 b_1 => single (f a + f a_1) (b * b_1)) = fun a m =>
    sum (mapDomain (⇑f) y) fun a₂ b₂ => single (f a + a₂) (m * b₂)

tactic: ext a b
state_before: case e_g
k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁵ : Semiring k
α : Type u_3
β : Type u_4
α₂ : Type u_5
inst✝⁴ : Semiring β
inst✝³ : Add α
inst✝² : Add α₂
F : Type u_6
inst✝¹ : FunLike F α α₂
inst✝ : AddHomClass F α α₂
f : F
x y : β[α]
⊢ (fun a b => sum y fun a_1 b_1 => single (f a + f a_1) (b * b_1)) = fun a m =>
    sum (mapDomain (⇑f) y) fun a₂ b₂ => single (f a + a₂) (m * b₂)
state_after: case e_g.h.h
k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁵ : Semiring k
α : Type u_3
β : Type u_4
α₂ : Type u_5
inst✝⁴ : Semiring β
inst✝³ : Add α
inst✝² : Add α₂
F : Type u_6
inst✝¹ : FunLike F α α₂
inst✝ : AddHomClass F α α₂
f : F
x y : β[α]
a : α
b : β
⊢ (sum y fun a_1 b_1 => single (f a + f a_1) (b * b_1)) = sum (mapDomain (⇑f) y) fun a₂ b₂ => single (f a + a₂) (b * b₂)

tactic: rw [Finsupp.sum_mapDomain_index]
state_before: case e_g.h.h
k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁵ : Semiring k
α : Type u_3
β : Type u_4
α₂ : Type u_5
inst✝⁴ : Semiring β
inst✝³ : Add α
inst✝² : Add α₂
F : Type u_6
inst✝¹ : FunLike F α α₂
inst✝ : AddHomClass F α α₂
f : F
x y : β[α]
a : α
b : β
⊢ (sum y fun a_1 b_1 => single (f a + f a_1) (b * b_1)) = sum (mapDomain (⇑f) y) fun a₂ b₂ => single (f a + a₂) (b * b₂)
state_after: case e_g.h.h.h_zero
k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁵ : Semiring k
α : Type u_3
β : Type u_4
α₂ : Type u_5
inst✝⁴ : Semiring β
inst✝³ : Add α
inst✝² : Add α₂
F : Type u_6
inst✝¹ : FunLike F α α₂
inst✝ : AddHomClass F α α₂
f : F
x y : β[α]
a : α
b : β
⊢ ∀ (b_1 : α₂), single (f a + b_1) (b * 0) = 0

case e_g.h.h.h_add
k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁵ : Semiring k
α : Type u_3
β : Type u_4
α₂ : Type u_5
inst✝⁴ : Semiring β
inst✝³ : Add α
inst✝² : Add α₂
F : Type u_6
inst✝¹ : FunLike F α α₂
inst✝ : AddHomClass F α α₂
f : F
x y : β[α]
a : α
b : β
⊢ ∀ (b_1 : α₂) (m₁ m₂ : β),
    single (f a + b_1) (b * (m₁ + m₂)) = single (f a + b_1) (b * m₁) + single (f a + b_1) (b * m₂)

tactic: simp
state_before: case e_g.h.h.h_zero
k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁵ : Semiring k
α : Type u_3
β : Type u_4
α₂ : Type u_5
inst✝⁴ : Semiring β
inst✝³ : Add α
inst✝² : Add α₂
F : Type u_6
inst✝¹ : FunLike F α α₂
inst✝ : AddHomClass F α α₂
f : F
x y : β[α]
a : α
b : β
⊢ ∀ (b_1 : α₂), single (f a + b_1) (b * 0) = 0
state_after: no goals

tactic: simp [mul_add]
state_before: case e_g.h.h.h_add
k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁵ : Semiring k
α : Type u_3
β : Type u_4
α₂ : Type u_5
inst✝⁴ : Semiring β
inst✝³ : Add α
inst✝² : Add α₂
F : Type u_6
inst✝¹ : FunLike F α α₂
inst✝ : AddHomClass F α α₂
f : F
x y : β[α]
a : α
b : β
⊢ ∀ (b_1 : α₂) (m₁ m₂ : β),
    single (f a + b_1) (b * (m₁ + m₂)) = single (f a + b_1) (b * m₁) + single (f a + b_1) (b * m₂)
state_after: no goals

tactic: simp
state_before: case h_zero
k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁵ : Semiring k
α : Type u_3
β : Type u_4
α₂ : Type u_5
inst✝⁴ : Semiring β
inst✝³ : Add α
inst✝² : Add α₂
F : Type u_6
inst✝¹ : FunLike F α α₂
inst✝ : AddHomClass F α α₂
f : F
x y : β[α]
⊢ ∀ (b : α₂), (sum (mapDomain (⇑f) y) fun a₂ b₂ => single (b + a₂) (0 * b₂)) = 0
state_after: no goals

tactic: simp [add_mul]
state_before: case h_add
k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁵ : Semiring k
α : Type u_3
β : Type u_4
α₂ : Type u_5
inst✝⁴ : Semiring β
inst✝³ : Add α
inst✝² : Add α₂
F : Type u_6
inst✝¹ : FunLike F α α₂
inst✝ : AddHomClass F α α₂
f : F
x y : β[α]
⊢ ∀ (b : α₂) (m₁ m₂ : β),
    (sum (mapDomain (⇑f) y) fun a₂ b₂ => single (b + a₂) ((m₁ + m₂) * b₂)) =
      (sum (mapDomain (⇑f) y) fun a₂ b₂ => single (b + a₂) (m₁ * b₂)) +
        sum (mapDomain (⇑f) y) fun a₂ b₂ => single (b + a₂) (m₂ * b₂)
state_after: no goals