Theorem: Submodule.coe_span_smul
File: Mathlib/Algebra/Module/Submodule/Pointwise.lean

tactic: rintro r n hr hn
state_before: α : Type u_1
R : Type u_2
M : Type u_3
inst✝⁹ : Semiring R
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
S : Type u_4
inst✝⁶ : Monoid S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : DistribMulAction S M
sR : Set R
s✝ : Set S
N✝ : Submodule R M
R' : Type u_5
M' : Type u_6
inst✝² : CommSemiring R'
inst✝¹ : AddCommMonoid M'
inst✝ : Module R' M'
s : Set R'
N : Submodule R' M'
⊢ ∀ ⦃r : R'⦄ ⦃n : M'⦄, r ∈ ↑(Ideal.span s) → n ∈ N → r • n ∈ s • N
state_after: α : Type u_1
R : Type u_2
M : Type u_3
inst✝⁹ : Semiring R
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
S : Type u_4
inst✝⁶ : Monoid S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : DistribMulAction S M
sR : Set R
s✝ : Set S
N✝ : Submodule R M
R' : Type u_5
M' : Type u_6
inst✝² : CommSemiring R'
inst✝¹ : AddCommMonoid M'
inst✝ : Module R' M'
s : Set R'
N : Submodule R' M'
r : R'
n : M'
hr : r ∈ ↑(Ideal.span s)
hn : n ∈ N
⊢ r • n ∈ s • N

tactic: induction' hr using Submodule.span_induction' with r h _ _ _ _ ihr ihs r r' hr hr'
state_before: α : Type u_1
R : Type u_2
M : Type u_3
inst✝⁹ : Semiring R
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
S : Type u_4
inst✝⁶ : Monoid S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : DistribMulAction S M
sR : Set R
s✝ : Set S
N✝ : Submodule R M
R' : Type u_5
M' : Type u_6
inst✝² : CommSemiring R'
inst✝¹ : AddCommMonoid M'
inst✝ : Module R' M'
s : Set R'
N : Submodule R' M'
r : R'
n : M'
hr : r ∈ ↑(Ideal.span s)
hn : n ∈ N
⊢ r • n ∈ s • N
state_after: case mem
α : Type u_1
R : Type u_2
M : Type u_3
inst✝⁹ : Semiring R
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
S : Type u_4
inst✝⁶ : Monoid S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : DistribMulAction S M
sR : Set R
s✝ : Set S
N✝ : Submodule R M
R' : Type u_5
M' : Type u_6
inst✝² : CommSemiring R'
inst✝¹ : AddCommMonoid M'
inst✝ : Module R' M'
s : Set R'
N : Submodule R' M'
r✝ : R'
n : M'
hn : n ∈ N
r : R'
h : r ∈ s
⊢ r • n ∈ s • N

case zero
α : Type u_1
R : Type u_2
M : Type u_3
inst✝⁹ : Semiring R
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
S : Type u_4
inst✝⁶ : Monoid S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : DistribMulAction S M
sR : Set R
s✝ : Set S
N✝ : Submodule R M
R' : Type u_5
M' : Type u_6
inst✝² : CommSemiring R'
inst✝¹ : AddCommMonoid M'
inst✝ : Module R' M'
s : Set R'
N : Submodule R' M'
r : R'
n : M'
hn : n ∈ N
⊢ 0 • n ∈ s • N

case add
α : Type u_1
R : Type u_2
M : Type u_3
inst✝⁹ : Semiring R
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
S : Type u_4
inst✝⁶ : Monoid S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : DistribMulAction S M
sR : Set R
s✝ : Set S
N✝ : Submodule R M
R' : Type u_5
M' : Type u_6
inst✝² : CommSemiring R'
inst✝¹ : AddCommMonoid M'
inst✝ : Module R' M'
s : Set R'
N : Submodule R' M'
r : R'
n : M'
hn : n ∈ N
x✝ : R'
hx✝ : x✝ ∈ span R' s
y✝ : R'
hy✝ : y✝ ∈ span R' s
ihr : x✝ • n ∈ s • N
ihs : y✝ • n ∈ s • N
⊢ (x✝ + y✝) • n ∈ s • N

case smul
α : Type u_1
R : Type u_2
M : Type u_3
inst✝⁹ : Semiring R
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
S : Type u_4
inst✝⁶ : Monoid S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : DistribMulAction S M
sR : Set R
s✝ : Set S
N✝ : Submodule R M
R' : Type u_5
M' : Type u_6
inst✝² : CommSemiring R'
inst✝¹ : AddCommMonoid M'
inst✝ : Module R' M'
s : Set R'
N : Submodule R' M'
r✝ : R'
n : M'
hn : n ∈ N
r r' : R'
hr : r' ∈ span R' s
hr' : r' • n ∈ s • N
⊢ (r • r') • n ∈ s • N

tactic: exact mem_set_smul_of_mem_mem h hn
state_before: case mem
α : Type u_1
R : Type u_2
M : Type u_3
inst✝⁹ : Semiring R
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
S : Type u_4
inst✝⁶ : Monoid S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : DistribMulAction S M
sR : Set R
s✝ : Set S
N✝ : Submodule R M
R' : Type u_5
M' : Type u_6
inst✝² : CommSemiring R'
inst✝¹ : AddCommMonoid M'
inst✝ : Module R' M'
s : Set R'
N : Submodule R' M'
r✝ : R'
n : M'
hn : n ∈ N
r : R'
h : r ∈ s
⊢ r • n ∈ s • N
state_after: no goals

tactic: rw [zero_smul]
state_before: case zero
α : Type u_1
R : Type u_2
M : Type u_3
inst✝⁹ : Semiring R
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
S : Type u_4
inst✝⁶ : Monoid S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : DistribMulAction S M
sR : Set R
s✝ : Set S
N✝ : Submodule R M
R' : Type u_5
M' : Type u_6
inst✝² : CommSemiring R'
inst✝¹ : AddCommMonoid M'
inst✝ : Module R' M'
s : Set R'
N : Submodule R' M'
r : R'
n : M'
hn : n ∈ N
⊢ 0 • n ∈ s • N
state_after: case zero
α : Type u_1
R : Type u_2
M : Type u_3
inst✝⁹ : Semiring R
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
S : Type u_4
inst✝⁶ : Monoid S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : DistribMulAction S M
sR : Set R
s✝ : Set S
N✝ : Submodule R M
R' : Type u_5
M' : Type u_6
inst✝² : CommSemiring R'
inst✝¹ : AddCommMonoid M'
inst✝ : Module R' M'
s : Set R'
N : Submodule R' M'
r : R'
n : M'
hn : n ∈ N
⊢ 0 ∈ s • N

tactic: exact Submodule.zero_mem _
state_before: case zero
α : Type u_1
R : Type u_2
M : Type u_3
inst✝⁹ : Semiring R
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
S : Type u_4
inst✝⁶ : Monoid S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : DistribMulAction S M
sR : Set R
s✝ : Set S
N✝ : Submodule R M
R' : Type u_5
M' : Type u_6
inst✝² : CommSemiring R'
inst✝¹ : AddCommMonoid M'
inst✝ : Module R' M'
s : Set R'
N : Submodule R' M'
r : R'
n : M'
hn : n ∈ N
⊢ 0 ∈ s • N
state_after: no goals

tactic: rw [add_smul]
state_before: case add
α : Type u_1
R : Type u_2
M : Type u_3
inst✝⁹ : Semiring R
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
S : Type u_4
inst✝⁶ : Monoid S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : DistribMulAction S M
sR : Set R
s✝ : Set S
N✝ : Submodule R M
R' : Type u_5
M' : Type u_6
inst✝² : CommSemiring R'
inst✝¹ : AddCommMonoid M'
inst✝ : Module R' M'
s : Set R'
N : Submodule R' M'
r : R'
n : M'
hn : n ∈ N
x✝ : R'
hx✝ : x✝ ∈ span R' s
y✝ : R'
hy✝ : y✝ ∈ span R' s
ihr : x✝ • n ∈ s • N
ihs : y✝ • n ∈ s • N
⊢ (x✝ + y✝) • n ∈ s • N
state_after: case add
α : Type u_1
R : Type u_2
M : Type u_3
inst✝⁹ : Semiring R
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
S : Type u_4
inst✝⁶ : Monoid S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : DistribMulAction S M
sR : Set R
s✝ : Set S
N✝ : Submodule R M
R' : Type u_5
M' : Type u_6
inst✝² : CommSemiring R'
inst✝¹ : AddCommMonoid M'
inst✝ : Module R' M'
s : Set R'
N : Submodule R' M'
r : R'
n : M'
hn : n ∈ N
x✝ : R'
hx✝ : x✝ ∈ span R' s
y✝ : R'
hy✝ : y✝ ∈ span R' s
ihr : x✝ • n ∈ s • N
ihs : y✝ • n ∈ s • N
⊢ x✝ • n + y✝ • n ∈ s • N

tactic: exact Submodule.add_mem _ ihr ihs
state_before: case add
α : Type u_1
R : Type u_2
M : Type u_3
inst✝⁹ : Semiring R
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
S : Type u_4
inst✝⁶ : Monoid S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : DistribMulAction S M
sR : Set R
s✝ : Set S
N✝ : Submodule R M
R' : Type u_5
M' : Type u_6
inst✝² : CommSemiring R'
inst✝¹ : AddCommMonoid M'
inst✝ : Module R' M'
s : Set R'
N : Submodule R' M'
r : R'
n : M'
hn : n ∈ N
x✝ : R'
hx✝ : x✝ ∈ span R' s
y✝ : R'
hy✝ : y✝ ∈ span R' s
ihr : x✝ • n ∈ s • N
ihs : y✝ • n ∈ s • N
⊢ x✝ • n + y✝ • n ∈ s • N
state_after: no goals

tactic: rw [mem_span_set] at hr
state_before: case smul
α : Type u_1
R : Type u_2
M : Type u_3
inst✝⁹ : Semiring R
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
S : Type u_4
inst✝⁶ : Monoid S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : DistribMulAction S M
sR : Set R
s✝ : Set S
N✝ : Submodule R M
R' : Type u_5
M' : Type u_6
inst✝² : CommSemiring R'
inst✝¹ : AddCommMonoid M'
inst✝ : Module R' M'
s : Set R'
N : Submodule R' M'
r✝ : R'
n : M'
hn : n ∈ N
r r' : R'
hr : r' ∈ span R' s
hr' : r' • n ∈ s • N
⊢ (r • r') • n ∈ s • N
state_after: case smul
α : Type u_1
R : Type u_2
M : Type u_3
inst✝⁹ : Semiring R
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
S : Type u_4
inst✝⁶ : Monoid S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : DistribMulAction S M
sR : Set R
s✝ : Set S
N✝ : Submodule R M
R' : Type u_5
M' : Type u_6
inst✝² : CommSemiring R'
inst✝¹ : AddCommMonoid M'
inst✝ : Module R' M'
s : Set R'
N : Submodule R' M'
r✝ : R'
n : M'
hn : n ∈ N
r r' : R'
hr : ∃ c, ↑c.support ⊆ s ∧ (c.sum fun mi r => r • mi) = r'
hr' : r' • n ∈ s • N
⊢ (r • r') • n ∈ s • N

tactic: obtain ⟨c, hc, rfl⟩ := hr
state_before: case smul
α : Type u_1
R : Type u_2
M : Type u_3
inst✝⁹ : Semiring R
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
S : Type u_4
inst✝⁶ : Monoid S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : DistribMulAction S M
sR : Set R
s✝ : Set S
N✝ : Submodule R M
R' : Type u_5
M' : Type u_6
inst✝² : CommSemiring R'
inst✝¹ : AddCommMonoid M'
inst✝ : Module R' M'
s : Set R'
N : Submodule R' M'
r✝ : R'
n : M'
hn : n ∈ N
r r' : R'
hr : ∃ c, ↑c.support ⊆ s ∧ (c.sum fun mi r => r • mi) = r'
hr' : r' • n ∈ s • N
⊢ (r • r') • n ∈ s • N
state_after: case smul.intro.intro
α : Type u_1
R : Type u_2
M : Type u_3
inst✝⁹ : Semiring R
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
S : Type u_4
inst✝⁶ : Monoid S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : DistribMulAction S M
sR : Set R
s✝ : Set S
N✝ : Submodule R M
R' : Type u_5
M' : Type u_6
inst✝² : CommSemiring R'
inst✝¹ : AddCommMonoid M'
inst✝ : Module R' M'
s : Set R'
N : Submodule R' M'
r✝ : R'
n : M'
hn : n ∈ N
r : R'
c : R' →₀ R'
hc : ↑c.support ⊆ s
hr' : (c.sum fun mi r => r • mi) • n ∈ s • N
⊢ (r • c.sum fun mi r => r • mi) • n ∈ s • N

tactic: rw [Finsupp.sum, Finset.smul_sum, Finset.sum_smul]
state_before: case smul.intro.intro
α : Type u_1
R : Type u_2
M : Type u_3
inst✝⁹ : Semiring R
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
S : Type u_4
inst✝⁶ : Monoid S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : DistribMulAction S M
sR : Set R
s✝ : Set S
N✝ : Submodule R M
R' : Type u_5
M' : Type u_6
inst✝² : CommSemiring R'
inst✝¹ : AddCommMonoid M'
inst✝ : Module R' M'
s : Set R'
N : Submodule R' M'
r✝ : R'
n : M'
hn : n ∈ N
r : R'
c : R' →₀ R'
hc : ↑c.support ⊆ s
hr' : (c.sum fun mi r => r • mi) • n ∈ s • N
⊢ (r • c.sum fun mi r => r • mi) • n ∈ s • N
state_after: case smul.intro.intro
α : Type u_1
R : Type u_2
M : Type u_3
inst✝⁹ : Semiring R
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
S : Type u_4
inst✝⁶ : Monoid S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : DistribMulAction S M
sR : Set R
s✝ : Set S
N✝ : Submodule R M
R' : Type u_5
M' : Type u_6
inst✝² : CommSemiring R'
inst✝¹ : AddCommMonoid M'
inst✝ : Module R' M'
s : Set R'
N : Submodule R' M'
r✝ : R'
n : M'
hn : n ∈ N
r : R'
c : R' →₀ R'
hc : ↑c.support ⊆ s
hr' : (c.sum fun mi r => r • mi) • n ∈ s • N
⊢ ∑ i ∈ c.support, (r • c i • i) • n ∈ s • N

tactic: refine Submodule.sum_mem _ fun i hi => ?_
state_before: case smul.intro.intro
α : Type u_1
R : Type u_2
M : Type u_3
inst✝⁹ : Semiring R
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
S : Type u_4
inst✝⁶ : Monoid S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : DistribMulAction S M
sR : Set R
s✝ : Set S
N✝ : Submodule R M
R' : Type u_5
M' : Type u_6
inst✝² : CommSemiring R'
inst✝¹ : AddCommMonoid M'
inst✝ : Module R' M'
s : Set R'
N : Submodule R' M'
r✝ : R'
n : M'
hn : n ∈ N
r : R'
c : R' →₀ R'
hc : ↑c.support ⊆ s
hr' : (c.sum fun mi r => r • mi) • n ∈ s • N
⊢ ∑ i ∈ c.support, (r • c i • i) • n ∈ s • N
state_after: case smul.intro.intro
α : Type u_1
R : Type u_2
M : Type u_3
inst✝⁹ : Semiring R
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
S : Type u_4
inst✝⁶ : Monoid S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : DistribMulAction S M
sR : Set R
s✝ : Set S
N✝ : Submodule R M
R' : Type u_5
M' : Type u_6
inst✝² : CommSemiring R'
inst✝¹ : AddCommMonoid M'
inst✝ : Module R' M'
s : Set R'
N : Submodule R' M'
r✝ : R'
n : M'
hn : n ∈ N
r : R'
c : R' →₀ R'
hc : ↑c.support ⊆ s
hr' : (c.sum fun mi r => r • mi) • n ∈ s • N
i : R'
hi : i ∈ c.support
⊢ (r • c i • i) • n ∈ s • N

tactic: rw [← mul_smul, smul_eq_mul, mul_comm, mul_smul]
state_before: case smul.intro.intro
α : Type u_1
R : Type u_2
M : Type u_3
inst✝⁹ : Semiring R
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
S : Type u_4
inst✝⁶ : Monoid S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : DistribMulAction S M
sR : Set R
s✝ : Set S
N✝ : Submodule R M
R' : Type u_5
M' : Type u_6
inst✝² : CommSemiring R'
inst✝¹ : AddCommMonoid M'
inst✝ : Module R' M'
s : Set R'
N : Submodule R' M'
r✝ : R'
n : M'
hn : n ∈ N
r : R'
c : R' →₀ R'
hc : ↑c.support ⊆ s
hr' : (c.sum fun mi r => r • mi) • n ∈ s • N
i : R'
hi : i ∈ c.support
⊢ (r • c i • i) • n ∈ s • N
state_after: case smul.intro.intro
α : Type u_1
R : Type u_2
M : Type u_3
inst✝⁹ : Semiring R
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
S : Type u_4
inst✝⁶ : Monoid S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : DistribMulAction S M
sR : Set R
s✝ : Set S
N✝ : Submodule R M
R' : Type u_5
M' : Type u_6
inst✝² : CommSemiring R'
inst✝¹ : AddCommMonoid M'
inst✝ : Module R' M'
s : Set R'
N : Submodule R' M'
r✝ : R'
n : M'
hn : n ∈ N
r : R'
c : R' →₀ R'
hc : ↑c.support ⊆ s
hr' : (c.sum fun mi r => r • mi) • n ∈ s • N
i : R'
hi : i ∈ c.support
⊢ i • (r * c i) • n ∈ s • N

tactic: exact mem_set_smul_of_mem_mem (hc hi) <| Submodule.smul_mem _ _ hn
state_before: case smul.intro.intro
α : Type u_1
R : Type u_2
M : Type u_3
inst✝⁹ : Semiring R
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
S : Type u_4
inst✝⁶ : Monoid S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : DistribMulAction S M
sR : Set R
s✝ : Set S
N✝ : Submodule R M
R' : Type u_5
M' : Type u_6
inst✝² : CommSemiring R'
inst✝¹ : AddCommMonoid M'
inst✝ : Module R' M'
s : Set R'
N : Submodule R' M'
r✝ : R'
n : M'
hn : n ∈ N
r : R'
c : R' →₀ R'
hc : ↑c.support ⊆ s
hr' : (c.sum fun mi r => r • mi) • n ∈ s • N
i : R'
hi : i ∈ c.support
⊢ i • (r * c i) • n ∈ s • N
state_after: no goals