Theorem: Submodule.mem_annihilator_span
File: Mathlib/RingTheory/Ideal/Operations.lean

tactic: rw [Submodule.mem_annihilator]
state_before: R : Type u
M : Type v
F : Type ?u.12996
G : Type ?u.12999
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
I J : Ideal R
N P : Submodule R M
s : Set M
r : R
⊢ r ∈ annihilator (span R s) ↔ ∀ (n : ↑s), r • ↑n = 0

tactic: constructor
state_before: R : Type u
M : Type v
F : Type ?u.12996
G : Type ?u.12999
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
I J : Ideal R
N P : Submodule R M
s : Set M
r : R
⊢ (∀ (n : M), n ∈ span R s → r • n = 0) ↔ ∀ (n : ↑s), r • ↑n = 0

tactic: intro h n
state_before: case mp
R : Type u
M : Type v
F : Type ?u.12996
G : Type ?u.12999
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
I J : Ideal R
N P : Submodule R M
s : Set M
r : R
⊢ (∀ (n : M), n ∈ span R s → r • n = 0) → ∀ (n : ↑s), r • ↑n = 0

tactic: exact h _ (Submodule.subset_span n.prop)
state_before: case mp
R : Type u
M : Type v
F : Type ?u.12996
G : Type ?u.12999
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
I J : Ideal R
N P : Submodule R M
s : Set M
r : R
h : ∀ (n : M), n ∈ span R s → r • n = 0
n : ↑s
⊢ r • ↑n = 0

tactic: intro h n hn
state_before: case mpr
R : Type u
M : Type v
F : Type ?u.12996
G : Type ?u.12999
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
I J : Ideal R
N P : Submodule R M
s : Set M
r : R
⊢ (∀ (n : ↑s), r • ↑n = 0) → ∀ (n : M), n ∈ span R s → r • n = 0

tactic: refine Submodule.span_induction hn ?_ ?_ ?_ ?_
state_before: case mpr
R : Type u
M : Type v
F : Type ?u.12996
G : Type ?u.12999
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
I J : Ideal R
N P : Submodule R M
s : Set M
r : R
h : ∀ (n : ↑s), r • ↑n = 0
n : M
hn : n ∈ span R s
⊢ r • n = 0

tactic: intro x hx
state_before: case mpr.refine_1
R : Type u
M : Type v
F : Type ?u.12996
G : Type ?u.12999
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
I J : Ideal R
N P : Submodule R M
s : Set M
r : R
h : ∀ (n : ↑s), r • ↑n = 0
n : M
hn : n ∈ span R s
⊢ ∀ (x : M), x ∈ s → r • x = 0

tactic: exact h ⟨x, hx⟩
state_before: case mpr.refine_1
R : Type u
M : Type v
F : Type ?u.12996
G : Type ?u.12999
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
I J : Ideal R
N P : Submodule R M
s : Set M
r : R
h : ∀ (n : ↑s), r • ↑n = 0
n : M
hn : n ∈ span R s
x : M
hx : x ∈ s
⊢ r • x = 0

tactic: exact smul_zero _
state_before: case mpr.refine_2
R : Type u
M : Type v
F : Type ?u.12996
G : Type ?u.12999
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
I J : Ideal R
N P : Submodule R M
s : Set M
r : R
h : ∀ (n : ↑s), r • ↑n = 0
n : M
hn : n ∈ span R s
⊢ r • 0 = 0

tactic: intro x y hx hy
state_before: case mpr.refine_3
R : Type u
M : Type v
F : Type ?u.12996
G : Type ?u.12999
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
I J : Ideal R
N P : Submodule R M
s : Set M
r : R
h : ∀ (n : ↑s), r • ↑n = 0
n : M
hn : n ∈ span R s
⊢ ∀ (x y : M), r • x = 0 → r • y = 0 → r • (x + y) = 0

tactic: rw [smul_add, hx, hy, zero_add]
state_before: case mpr.refine_3
R : Type u
M : Type v
F : Type ?u.12996
G : Type ?u.12999
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
I J : Ideal R
N P : Submodule R M
s : Set M
r : R
h : ∀ (n : ↑s), r • ↑n = 0
n : M
hn : n ∈ span R s
x y : M
hx : r • x = 0
hy : r • y = 0
⊢ r • (x + y) = 0

tactic: intro a x hx
state_before: case mpr.refine_4
R : Type u
M : Type v
F : Type ?u.12996
G : Type ?u.12999
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
I J : Ideal R
N P : Submodule R M
s : Set M
r : R
h : ∀ (n : ↑s), r • ↑n = 0
n : M
hn : n ∈ span R s
⊢ ∀ (a : R) (x : M), r • x = 0 → r • a • x = 0

tactic: rw [smul_comm, hx, smul_zero]
state_before: case mpr.refine_4
R : Type u
M : Type v
F : Type ?u.12996
G : Type ?u.12999
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
I J : Ideal R
N P : Submodule R M
s : Set M
r : R
h : ∀ (n : ↑s), r • ↑n = 0
n : M
hn : n ∈ span R s
a : R
x : M
hx : r • x = 0
⊢ r • a • x = 0