Theorem: LocalizedModule.smul_add'
File: Mathlib/Algebra/Module/LocalizedModule.lean

tactic: induction' x using Localization.induction_on with data
state_before: R : Type u
inst✝² : CommSemiring R
S : Submonoid R
M : Type v
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
x : Localization S
y z : LocalizedModule S M
⊢ x • (y + z) = x • y + x • z

tactic: rcases data with ⟨r, u⟩
state_before: case H
R : Type u
inst✝² : CommSemiring R
S : Submonoid R
M : Type v
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
y z : LocalizedModule S M
data : R × { x // x ∈ S }
⊢ Localization.mk data.fst data.snd • (y + z) =
    Localization.mk data.fst data.snd • y + Localization.mk data.fst data.snd • z

tactic: induction' y using LocalizedModule.induction_on with m s
state_before: case H.mk
R : Type u
inst✝² : CommSemiring R
S : Submonoid R
M : Type v
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
y z : LocalizedModule S M
r : R
u : { x // x ∈ S }
⊢ Localization.mk (r, u).fst (r, u).snd • (y + z) =
    Localization.mk (r, u).fst (r, u).snd • y + Localization.mk (r, u).fst (r, u).snd • z

tactic: induction' z using LocalizedModule.induction_on with n t
state_before: case H.mk.h
R : Type u
inst✝² : CommSemiring R
S : Submonoid R
M : Type v
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
z : LocalizedModule S M
r : R
u : { x // x ∈ S }
m : M
s : { x // x ∈ S }
⊢ Localization.mk (r, u).fst (r, u).snd • (mk m s + z) =
    Localization.mk (r, u).fst (r, u).snd • mk m s + Localization.mk (r, u).fst (r, u).snd • z

tactic: rw [mk_smul_mk, mk_smul_mk, mk_add_mk, mk_smul_mk, mk_add_mk, mk_eq]
state_before: case H.mk.h.h
R : Type u
inst✝² : CommSemiring R
S : Submonoid R
M : Type v
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
r : R
u : { x // x ∈ S }
m : M
s : { x // x ∈ S }
n : M
t : { x // x ∈ S }
⊢ Localization.mk (r, u).fst (r, u).snd • (mk m s + mk n t) =
    Localization.mk (r, u).fst (r, u).snd • mk m s + Localization.mk (r, u).fst (r, u).snd • mk n t

tactic: use 1
state_before: case H.mk.h.h
R : Type u
inst✝² : CommSemiring R
S : Submonoid R
M : Type v
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
r : R
u : { x // x ∈ S }
m : M
s : { x // x ∈ S }
n : M
t : { x // x ∈ S }
⊢ ∃ u_1,
    u_1 • ((r, u).snd * s * ((r, u).snd * t)) • (r, u).fst • (t • m + s • n) =
      u_1 • ((r, u).snd * (s * t)) • (((r, u).snd * t) • (r, u).fst • m + ((r, u).snd * s) • (r, u).fst • n)

tactic: simp only [one_smul, smul_add, ← mul_smul, Submonoid.smul_def, Submonoid.coe_mul]
state_before: case H.mk.h.h
R : Type u
inst✝² : CommSemiring R
S : Submonoid R
M : Type v
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
r : R
u : { x // x ∈ S }
m : M
s : { x // x ∈ S }
n : M
t : { x // x ∈ S }
⊢ 1 • ((r, u).snd * s * ((r, u).snd * t)) • (r, u).fst • (t • m + s • n) =
    1 • ((r, u).snd * (s * t)) • (((r, u).snd * t) • (r, u).fst • m + ((r, u).snd * s) • (r, u).fst • n)

tactic: ring_nf
state_before: case H.mk.h.h
R : Type u
inst✝² : CommSemiring R
S : Submonoid R
M : Type v
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
r : R
u : { x // x ∈ S }
m : M
s : { x // x ∈ S }
n : M
t : { x // x ∈ S }
⊢ (↑u * ↑s * (↑u * ↑t) * (r * ↑t)) • m + (↑u * ↑s * (↑u * ↑t) * (r * ↑s)) • n =
    (↑u * (↑s * ↑t) * (↑u * ↑t * r)) • m + (↑u * (↑s * ↑t) * (↑u * ↑s * r)) • n