Theorem: Monoid.CoprodI.Word.prod_smul
File: Mathlib/GroupTheory/CoprodI.lean

tactic: induction m using CoprodI.induction_on with
| h_one =>
  intro
  rw [one_smul, one_mul]
| h_of _ =>
  intros
  rw [of_smul_def, prod_rcons, of.map_mul, mul_assoc, ← prod_rcons, ← equivPair_symm,
    Equiv.symm_apply_apply]
| h_mul x y hx hy =>
  intro w
  rw [mul_smul, hx, hy, mul_assoc]
state_before: ι : Type u_1
M : ι → Type u_2
inst✝³ : (i : ι) → Monoid (M i)
N : Type u_3
inst✝² : Monoid N
inst✝¹ : (i : ι) → DecidableEq (M i)
inst✝ : DecidableEq ι
m : CoprodI M
⊢ ∀ (w : Word M), (m • w).prod = m * w.prod
state_after: no goals

tactic: intro
state_before: case h_one
ι : Type u_1
M : ι → Type u_2
inst✝³ : (i : ι) → Monoid (M i)
N : Type u_3
inst✝² : Monoid N
inst✝¹ : (i : ι) → DecidableEq (M i)
inst✝ : DecidableEq ι
⊢ ∀ (w : Word M), (1 • w).prod = 1 * w.prod
state_after: case h_one
ι : Type u_1
M : ι → Type u_2
inst✝³ : (i : ι) → Monoid (M i)
N : Type u_3
inst✝² : Monoid N
inst✝¹ : (i : ι) → DecidableEq (M i)
inst✝ : DecidableEq ι
w✝ : Word M
⊢ (1 • w✝).prod = 1 * w✝.prod

tactic: rw [one_smul, one_mul]
state_before: case h_one
ι : Type u_1
M : ι → Type u_2
inst✝³ : (i : ι) → Monoid (M i)
N : Type u_3
inst✝² : Monoid N
inst✝¹ : (i : ι) → DecidableEq (M i)
inst✝ : DecidableEq ι
w✝ : Word M
⊢ (1 • w✝).prod = 1 * w✝.prod
state_after: no goals

tactic: intros
state_before: case h_of
ι : Type u_1
M : ι → Type u_2
inst✝³ : (i : ι) → Monoid (M i)
N : Type u_3
inst✝² : Monoid N
inst✝¹ : (i : ι) → DecidableEq (M i)
inst✝ : DecidableEq ι
i✝ : ι
m✝ : M i✝
⊢ ∀ (w : Word M), (of m✝ • w).prod = of m✝ * w.prod
state_after: case h_of
ι : Type u_1
M : ι → Type u_2
inst✝³ : (i : ι) → Monoid (M i)
N : Type u_3
inst✝² : Monoid N
inst✝¹ : (i : ι) → DecidableEq (M i)
inst✝ : DecidableEq ι
i✝ : ι
m✝ : M i✝
w✝ : Word M
⊢ (of m✝ • w✝).prod = of m✝ * w✝.prod

tactic: rw [of_smul_def, prod_rcons, of.map_mul, mul_assoc, ← prod_rcons, ← equivPair_symm,
  Equiv.symm_apply_apply]
state_before: case h_of
ι : Type u_1
M : ι → Type u_2
inst✝³ : (i : ι) → Monoid (M i)
N : Type u_3
inst✝² : Monoid N
inst✝¹ : (i : ι) → DecidableEq (M i)
inst✝ : DecidableEq ι
i✝ : ι
m✝ : M i✝
w✝ : Word M
⊢ (of m✝ • w✝).prod = of m✝ * w✝.prod
state_after: no goals

tactic: intro w
state_before: case h_mul
ι : Type u_1
M : ι → Type u_2
inst✝³ : (i : ι) → Monoid (M i)
N : Type u_3
inst✝² : Monoid N
inst✝¹ : (i : ι) → DecidableEq (M i)
inst✝ : DecidableEq ι
x y : CoprodI M
hx : ∀ (w : Word M), (x • w).prod = x * w.prod
hy : ∀ (w : Word M), (y • w).prod = y * w.prod
⊢ ∀ (w : Word M), ((x * y) • w).prod = x * y * w.prod
state_after: case h_mul
ι : Type u_1
M : ι → Type u_2
inst✝³ : (i : ι) → Monoid (M i)
N : Type u_3
inst✝² : Monoid N
inst✝¹ : (i : ι) → DecidableEq (M i)
inst✝ : DecidableEq ι
x y : CoprodI M
hx : ∀ (w : Word M), (x • w).prod = x * w.prod
hy : ∀ (w : Word M), (y • w).prod = y * w.prod
w : Word M
⊢ ((x * y) • w).prod = x * y * w.prod

tactic: rw [mul_smul, hx, hy, mul_assoc]
state_before: case h_mul
ι : Type u_1
M : ι → Type u_2
inst✝³ : (i : ι) → Monoid (M i)
N : Type u_3
inst✝² : Monoid N
inst✝¹ : (i : ι) → DecidableEq (M i)
inst✝ : DecidableEq ι
x y : CoprodI M
hx : ∀ (w : Word M), (x • w).prod = x * w.prod
hy : ∀ (w : Word M), (y • w).prod = y * w.prod
w : Word M
⊢ ((x * y) • w).prod = x * y * w.prod
state_after: no goals