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

tactic: have H0 : p 0 := by simpa only [zero_smul] using smul 0 I.zero_mem 0 N.zero_mem
state_before: R : Type u
M : Type v
M' : Type u_1
F : Type u_2
G : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
I J : Ideal R
N P : Submodule R M
p : M → Prop
x : M
H : x ∈ I • N
smul : ∀ r ∈ I, ∀ n ∈ N, p (r • n)
add : ∀ (x y : M), p x → p y → p (x + y)
⊢ p x
state_after: R : Type u
M : Type v
M' : Type u_1
F : Type u_2
G : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
I J : Ideal R
N P : Submodule R M
p : M → Prop
x : M
H : x ∈ I • N
smul : ∀ r ∈ I, ∀ n ∈ N, p (r • n)
add : ∀ (x y : M), p x → p y → p (x + y)
H0 : p 0
⊢ p x

tactic: refine Submodule.iSup_induction (x := x) _ H ?_ H0 add
state_before: R : Type u
M : Type v
M' : Type u_1
F : Type u_2
G : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
I J : Ideal R
N P : Submodule R M
p : M → Prop
x : M
H : x ∈ I • N
smul : ∀ r ∈ I, ∀ n ∈ N, p (r • n)
add : ∀ (x y : M), p x → p y → p (x + y)
H0 : p 0
⊢ p x
state_after: R : Type u
M : Type v
M' : Type u_1
F : Type u_2
G : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
I J : Ideal R
N P : Submodule R M
p : M → Prop
x : M
H : x ∈ I • N
smul : ∀ r ∈ I, ∀ n ∈ N, p (r • n)
add : ∀ (x y : M), p x → p y → p (x + y)
H0 : p 0
⊢ ∀ (i : ↥I), ∀ x ∈ map ((LinearMap.lsmul R M) ↑i) N, p x

tactic: rintro ⟨i, hi⟩ m ⟨j, hj, hj'⟩
state_before: R : Type u
M : Type v
M' : Type u_1
F : Type u_2
G : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
I J : Ideal R
N P : Submodule R M
p : M → Prop
x : M
H : x ∈ I • N
smul : ∀ r ∈ I, ∀ n ∈ N, p (r • n)
add : ∀ (x y : M), p x → p y → p (x + y)
H0 : p 0
⊢ ∀ (i : ↥I), ∀ x ∈ map ((LinearMap.lsmul R M) ↑i) N, p x
state_after: case mk.intro.intro
R : Type u
M : Type v
M' : Type u_1
F : Type u_2
G : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
I J : Ideal R
N P : Submodule R M
p : M → Prop
x : M
H : x ∈ I • N
smul : ∀ r ∈ I, ∀ n ∈ N, p (r • n)
add : ∀ (x y : M), p x → p y → p (x + y)
H0 : p 0
i : R
hi : i ∈ I
m j : M
hj : j ∈ ↑N
hj' : ((LinearMap.lsmul R M) ↑⟨i, hi⟩) j = m
⊢ p m

tactic: rw [← hj']
state_before: case mk.intro.intro
R : Type u
M : Type v
M' : Type u_1
F : Type u_2
G : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
I J : Ideal R
N P : Submodule R M
p : M → Prop
x : M
H : x ∈ I • N
smul : ∀ r ∈ I, ∀ n ∈ N, p (r • n)
add : ∀ (x y : M), p x → p y → p (x + y)
H0 : p 0
i : R
hi : i ∈ I
m j : M
hj : j ∈ ↑N
hj' : ((LinearMap.lsmul R M) ↑⟨i, hi⟩) j = m
⊢ p m
state_after: case mk.intro.intro
R : Type u
M : Type v
M' : Type u_1
F : Type u_2
G : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
I J : Ideal R
N P : Submodule R M
p : M → Prop
x : M
H : x ∈ I • N
smul : ∀ r ∈ I, ∀ n ∈ N, p (r • n)
add : ∀ (x y : M), p x → p y → p (x + y)
H0 : p 0
i : R
hi : i ∈ I
m j : M
hj : j ∈ ↑N
hj' : ((LinearMap.lsmul R M) ↑⟨i, hi⟩) j = m
⊢ p (((LinearMap.lsmul R M) ↑⟨i, hi⟩) j)

tactic: exact smul _ hi _ hj
state_before: case mk.intro.intro
R : Type u
M : Type v
M' : Type u_1
F : Type u_2
G : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
I J : Ideal R
N P : Submodule R M
p : M → Prop
x : M
H : x ∈ I • N
smul : ∀ r ∈ I, ∀ n ∈ N, p (r • n)
add : ∀ (x y : M), p x → p y → p (x + y)
H0 : p 0
i : R
hi : i ∈ I
m j : M
hj : j ∈ ↑N
hj' : ((LinearMap.lsmul R M) ↑⟨i, hi⟩) j = m
⊢ p (((LinearMap.lsmul R M) ↑⟨i, hi⟩) j)
state_after: no goals

tactic: simpa only [zero_smul] using smul 0 I.zero_mem 0 N.zero_mem
state_before: R : Type u
M : Type v
M' : Type u_1
F : Type u_2
G : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
I J : Ideal R
N P : Submodule R M
p : M → Prop
x : M
H : x ∈ I • N
smul : ∀ r ∈ I, ∀ n ∈ N, p (r • n)
add : ∀ (x y : M), p x → p y → p (x + y)
⊢ p 0
state_after: no goals