Theorem: Submodule.exists_sub_one_mem_and_smul_eq_zero_of_fg_of_le_smul
File: Mathlib/RingTheory/Finiteness.lean

tactic: rw [fg_def] at hn
state_before: R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
hn : FG N
hin : N ≤ I • N
⊢ ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0

tactic: rcases hn with ⟨s, hfs, hs⟩
state_before: R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
hn : ∃ S, Set.Finite S ∧ span R S = N
hin : N ≤ I • N
⊢ ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0

tactic: clear hin hs
state_before: case intro.intro
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
hin : N ≤ I • N
s : Set M
hfs : Set.Finite s
hs : span R s = N
this : ∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N
⊢ ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0

tactic: revert this
state_before: case intro.intro
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s : Set M
hfs : Set.Finite s
this : ∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N
⊢ ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0

tactic: refine' Set.Finite.dinduction_on _ hfs (fun H => _) @fun i s _ _ ih H => _
state_before: case intro.intro
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s : Set M
hfs : Set.Finite s
⊢ (∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N) →
    ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0

tactic: apply ih
state_before: case intro.intro.refine'_2
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s✝ : Set M
hfs : Set.Finite s✝
i : M
s : Set M
x✝¹ : ¬i ∈ s
x✝ : Set.Finite s
ih :
  (∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N) →
    ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0
H : ∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R (insert i s)) ∧ insert i s ⊆ ↑N
⊢ ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0

tactic: rcases H with ⟨r, hr1, hrn, hs⟩
state_before: case intro.intro.refine'_2
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s✝ : Set M
hfs : Set.Finite s✝
i : M
s : Set M
x✝¹ : ¬i ∈ s
x✝ : Set.Finite s
ih :
  (∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N) →
    ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0
H : ∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R (insert i s)) ∧ insert i s ⊆ ↑N
⊢ ∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N

tactic: rw [← Set.singleton_union, span_union, smul_sup] at hrn
state_before: case intro.intro.refine'_2.intro.intro.intro
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s✝ : Set M
hfs : Set.Finite s✝
i : M
s : Set M
x✝¹ : ¬i ∈ s
x✝ : Set.Finite s
ih :
  (∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N) →
    ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0
r : R
hr1 : r - 1 ∈ I
hrn : N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R (insert i s))
hs : insert i s ⊆ ↑N
⊢ ∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N

tactic: rw [Set.insert_subset] at hs
state_before: case intro.intro.refine'_2.intro.intro.intro
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s✝ : Set M
hfs : Set.Finite s✝
i : M
s : Set M
x✝¹ : ¬i ∈ s
x✝ : Set.Finite s
ih :
  (∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N) →
    ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0
r : R
hr1 : r - 1 ∈ I
hrn : N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R {i} ⊔ I • span R s)
hs : insert i s ⊆ ↑N
⊢ ∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N

tactic: rcases this with ⟨c, hc1, hci⟩
state_before: case intro.intro.refine'_2.intro.intro.intro
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s✝ : Set M
hfs : Set.Finite s✝
i : M
s : Set M
x✝¹ : ¬i ∈ s
x✝ : Set.Finite s
ih :
  (∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N) →
    ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0
r : R
hr1 : r - 1 ∈ I
hrn : N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R {i} ⊔ I • span R s)
hs : i ∈ ↑N ∧ s ⊆ ↑N
this : ∃ c, c - 1 ∈ I ∧ c • i ∈ I • span R s
⊢ ∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N

tactic: refine' ⟨c * r, _, _, hs.2⟩
state_before: case intro.intro.refine'_2.intro.intro.intro.intro.intro
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s✝ : Set M
hfs : Set.Finite s✝
i : M
s : Set M
x✝¹ : ¬i ∈ s
x✝ : Set.Finite s
ih :
  (∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N) →
    ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0
r : R
hr1 : r - 1 ∈ I
hrn : N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R {i} ⊔ I • span R s)
hs : i ∈ ↑N ∧ s ⊆ ↑N
c : R
hc1 : c - 1 ∈ I
hci : c • i ∈ I • span R s
⊢ ∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N

tactic: refine' ⟨1, _, _, _⟩
state_before: R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
hin : N ≤ I • N
s : Set M
hfs : Set.Finite s
hs : span R s = N
⊢ ∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N

tactic: rw [sub_self]
state_before: case refine'_1
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
hin : N ≤ I • N
s : Set M
hfs : Set.Finite s
hs : span R s = N
⊢ 1 - 1 ∈ I

tactic: exact I.zero_mem
state_before: case refine'_1
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
hin : N ≤ I • N
s : Set M
hfs : Set.Finite s
hs : span R s = N
⊢ 0 ∈ I

tactic: rw [hs]
state_before: case refine'_2
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
hin : N ≤ I • N
s : Set M
hfs : Set.Finite s
hs : span R s = N
⊢ N ≤ comap (↑(LinearMap.lsmul R M) 1) (I • span R s)

tactic: intro n hn
state_before: case refine'_2
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
hin : N ≤ I • N
s : Set M
hfs : Set.Finite s
hs : span R s = N
⊢ N ≤ comap (↑(LinearMap.lsmul R M) 1) (I • N)

tactic: rw [mem_comap]
state_before: case refine'_2
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
hin : N ≤ I • N
s : Set M
hfs : Set.Finite s
hs : span R s = N
n : M
hn : n ∈ N
⊢ n ∈ comap (↑(LinearMap.lsmul R M) 1) (I • N)

tactic: change (1 : R) • n ∈ I • N
state_before: case refine'_2
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
hin : N ≤ I • N
s : Set M
hfs : Set.Finite s
hs : span R s = N
n : M
hn : n ∈ N
⊢ ↑(↑(LinearMap.lsmul R M) 1) n ∈ I • N

tactic: rw [one_smul]
state_before: case refine'_2
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
hin : N ≤ I • N
s : Set M
hfs : Set.Finite s
hs : span R s = N
n : M
hn : n ∈ N
⊢ 1 • n ∈ I • N

tactic: exact hin hn
state_before: case refine'_2
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
hin : N ≤ I • N
s : Set M
hfs : Set.Finite s
hs : span R s = N
n : M
hn : n ∈ N
⊢ n ∈ I • N

tactic: rw [← span_le, hs]
state_before: case refine'_3
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
hin : N ≤ I • N
s : Set M
hfs : Set.Finite s
hs : span R s = N
⊢ s ⊆ ↑N

tactic: rcases H with ⟨r, hr1, hrn, _⟩
state_before: case intro.intro.refine'_1
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s : Set M
hfs : Set.Finite s
H : ∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R ∅) ∧ ∅ ⊆ ↑N
⊢ ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0

tactic: refine' ⟨r, hr1, fun n hn => _⟩
state_before: case intro.intro.refine'_1.intro.intro.intro
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s : Set M
hfs : Set.Finite s
r : R
hr1 : r - 1 ∈ I
hrn : N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R ∅)
right✝ : ∅ ⊆ ↑N
⊢ ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0

tactic: specialize hrn hn
state_before: case intro.intro.refine'_1.intro.intro.intro
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s : Set M
hfs : Set.Finite s
r : R
hr1 : r - 1 ∈ I
hrn : N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R ∅)
right✝ : ∅ ⊆ ↑N
n : M
hn : n ∈ N
⊢ r • n = 0

tactic: rwa [mem_comap, span_empty, smul_bot, mem_bot] at hrn
state_before: case intro.intro.refine'_1.intro.intro.intro
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s : Set M
hfs : Set.Finite s
r : R
hr1 : r - 1 ∈ I
right✝ : ∅ ⊆ ↑N
n : M
hn : n ∈ N
hrn : n ∈ comap (↑(LinearMap.lsmul R M) r) (I • span R ∅)
⊢ r • n = 0

tactic: specialize hrn hs.1
state_before: R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s✝ : Set M
hfs : Set.Finite s✝
i : M
s : Set M
x✝¹ : ¬i ∈ s
x✝ : Set.Finite s
ih :
  (∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N) →
    ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0
r : R
hr1 : r - 1 ∈ I
hrn : N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R {i} ⊔ I • span R s)
hs : i ∈ ↑N ∧ s ⊆ ↑N
⊢ ∃ c, c - 1 ∈ I ∧ c • i ∈ I • span R s

tactic: rw [mem_comap, mem_sup] at hrn
state_before: R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s✝ : Set M
hfs : Set.Finite s✝
i : M
s : Set M
x✝¹ : ¬i ∈ s
x✝ : Set.Finite s
ih :
  (∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N) →
    ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0
r : R
hr1 : r - 1 ∈ I
hs : i ∈ ↑N ∧ s ⊆ ↑N
hrn : i ∈ comap (↑(LinearMap.lsmul R M) r) (I • span R {i} ⊔ I • span R s)
⊢ ∃ c, c - 1 ∈ I ∧ c • i ∈ I • span R s

tactic: rcases hrn with ⟨y, hy, z, hz, hyz⟩
state_before: R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s✝ : Set M
hfs : Set.Finite s✝
i : M
s : Set M
x✝¹ : ¬i ∈ s
x✝ : Set.Finite s
ih :
  (∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N) →
    ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0
r : R
hr1 : r - 1 ∈ I
hs : i ∈ ↑N ∧ s ⊆ ↑N
hrn : ∃ y, y ∈ I • span R {i} ∧ ∃ z, z ∈ I • span R s ∧ y + z = ↑(↑(LinearMap.lsmul R M) r) i
⊢ ∃ c, c - 1 ∈ I ∧ c • i ∈ I • span R s

tactic: dsimp at hyz
state_before: case intro.intro.intro.intro
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s✝ : Set M
hfs : Set.Finite s✝
i : M
s : Set M
x✝¹ : ¬i ∈ s
x✝ : Set.Finite s
ih :
  (∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N) →
    ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0
r : R
hr1 : r - 1 ∈ I
hs : i ∈ ↑N ∧ s ⊆ ↑N
y : M
hy : y ∈ I • span R {i}
z : M
hz : z ∈ I • span R s
hyz : y + z = ↑(↑(LinearMap.lsmul R M) r) i
⊢ ∃ c, c - 1 ∈ I ∧ c • i ∈ I • span R s

tactic: rw [mem_smul_span_singleton] at hy
state_before: case intro.intro.intro.intro
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s✝ : Set M
hfs : Set.Finite s✝
i : M
s : Set M
x✝¹ : ¬i ∈ s
x✝ : Set.Finite s
ih :
  (∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N) →
    ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0
r : R
hr1 : r - 1 ∈ I
hs : i ∈ ↑N ∧ s ⊆ ↑N
y : M
hy : y ∈ I • span R {i}
z : M
hz : z ∈ I • span R s
hyz : y + z = r • i
⊢ ∃ c, c - 1 ∈ I ∧ c • i ∈ I • span R s

tactic: rcases hy with ⟨c, hci, rfl⟩
state_before: case intro.intro.intro.intro
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s✝ : Set M
hfs : Set.Finite s✝
i : M
s : Set M
x✝¹ : ¬i ∈ s
x✝ : Set.Finite s
ih :
  (∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N) →
    ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0
r : R
hr1 : r - 1 ∈ I
hs : i ∈ ↑N ∧ s ⊆ ↑N
y : M
hy : ∃ y_1, y_1 ∈ I ∧ y_1 • i = y
z : M
hz : z ∈ I • span R s
hyz : y + z = r • i
⊢ ∃ c, c - 1 ∈ I ∧ c • i ∈ I • span R s

tactic: use r - c
state_before: case intro.intro.intro.intro.intro.intro
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s✝ : Set M
hfs : Set.Finite s✝
i : M
s : Set M
x✝¹ : ¬i ∈ s
x✝ : Set.Finite s
ih :
  (∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N) →
    ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0
r : R
hr1 : r - 1 ∈ I
hs : i ∈ ↑N ∧ s ⊆ ↑N
z : M
hz : z ∈ I • span R s
c : R
hci : c ∈ I
hyz : c • i + z = r • i
⊢ ∃ c, c - 1 ∈ I ∧ c • i ∈ I • span R s

tactic: constructor
state_before: case intro.intro.intro.intro.intro.intro
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s✝ : Set M
hfs : Set.Finite s✝
i : M
s : Set M
x✝¹ : ¬i ∈ s
x✝ : Set.Finite s
ih :
  (∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N) →
    ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0
r : R
hr1 : r - 1 ∈ I
hs : i ∈ ↑N ∧ s ⊆ ↑N
z : M
hz : z ∈ I • span R s
c : R
hci : c ∈ I
hyz : c • i + z = r • i
⊢ r - c - 1 ∈ I ∧ (r - c) • i ∈ I • span R s

tactic: rw [sub_right_comm]
state_before: case intro.intro.intro.intro.intro.intro.left
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s✝ : Set M
hfs : Set.Finite s✝
i : M
s : Set M
x✝¹ : ¬i ∈ s
x✝ : Set.Finite s
ih :
  (∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N) →
    ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0
r : R
hr1 : r - 1 ∈ I
hs : i ∈ ↑N ∧ s ⊆ ↑N
z : M
hz : z ∈ I • span R s
c : R
hci : c ∈ I
hyz : c • i + z = r • i
⊢ r - c - 1 ∈ I

tactic: exact I.sub_mem hr1 hci
state_before: case intro.intro.intro.intro.intro.intro.left
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s✝ : Set M
hfs : Set.Finite s✝
i : M
s : Set M
x✝¹ : ¬i ∈ s
x✝ : Set.Finite s
ih :
  (∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N) →
    ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0
r : R
hr1 : r - 1 ∈ I
hs : i ∈ ↑N ∧ s ⊆ ↑N
z : M
hz : z ∈ I • span R s
c : R
hci : c ∈ I
hyz : c • i + z = r • i
⊢ r - 1 - c ∈ I

tactic: rw [sub_smul, ← hyz, add_sub_cancel']
state_before: case intro.intro.intro.intro.intro.intro.right
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s✝ : Set M
hfs : Set.Finite s✝
i : M
s : Set M
x✝¹ : ¬i ∈ s
x✝ : Set.Finite s
ih :
  (∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N) →
    ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0
r : R
hr1 : r - 1 ∈ I
hs : i ∈ ↑N ∧ s ⊆ ↑N
z : M
hz : z ∈ I • span R s
c : R
hci : c ∈ I
hyz : c • i + z = r • i
⊢ (r - c) • i ∈ I • span R s

tactic: exact hz
state_before: case intro.intro.intro.intro.intro.intro.right
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s✝ : Set M
hfs : Set.Finite s✝
i : M
s : Set M
x✝¹ : ¬i ∈ s
x✝ : Set.Finite s
ih :
  (∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N) →
    ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0
r : R
hr1 : r - 1 ∈ I
hs : i ∈ ↑N ∧ s ⊆ ↑N
z : M
hz : z ∈ I • span R s
c : R
hci : c ∈ I
hyz : c • i + z = r • i
⊢ z ∈ I • span R s

tactic: simpa only [mul_sub, mul_one, sub_add_sub_cancel] using I.add_mem (I.mul_mem_left c hr1) hc1
state_before: case intro.intro.refine'_2.intro.intro.intro.intro.intro.refine'_1
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s✝ : Set M
hfs : Set.Finite s✝
i : M
s : Set M
x✝¹ : ¬i ∈ s
x✝ : Set.Finite s
ih :
  (∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N) →
    ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0
r : R
hr1 : r - 1 ∈ I
hrn : N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R {i} ⊔ I • span R s)
hs : i ∈ ↑N ∧ s ⊆ ↑N
c : R
hc1 : c - 1 ∈ I
hci : c • i ∈ I • span R s
⊢ c * r - 1 ∈ I

tactic: intro n hn
state_before: case intro.intro.refine'_2.intro.intro.intro.intro.intro.refine'_2
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s✝ : Set M
hfs : Set.Finite s✝
i : M
s : Set M
x✝¹ : ¬i ∈ s
x✝ : Set.Finite s
ih :
  (∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N) →
    ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0
r : R
hr1 : r - 1 ∈ I
hrn : N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R {i} ⊔ I • span R s)
hs : i ∈ ↑N ∧ s ⊆ ↑N
c : R
hc1 : c - 1 ∈ I
hci : c • i ∈ I • span R s
⊢ N ≤ comap (↑(LinearMap.lsmul R M) (c * r)) (I • span R s)

tactic: specialize hrn hn
state_before: case intro.intro.refine'_2.intro.intro.intro.intro.intro.refine'_2
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s✝ : Set M
hfs : Set.Finite s✝
i : M
s : Set M
x✝¹ : ¬i ∈ s
x✝ : Set.Finite s
ih :
  (∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N) →
    ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0
r : R
hr1 : r - 1 ∈ I
hrn : N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R {i} ⊔ I • span R s)
hs : i ∈ ↑N ∧ s ⊆ ↑N
c : R
hc1 : c - 1 ∈ I
hci : c • i ∈ I • span R s
n : M
hn : n ∈ N
⊢ n ∈ comap (↑(LinearMap.lsmul R M) (c * r)) (I • span R s)

tactic: rw [mem_comap, mem_sup] at hrn
state_before: case intro.intro.refine'_2.intro.intro.intro.intro.intro.refine'_2
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s✝ : Set M
hfs : Set.Finite s✝
i : M
s : Set M
x✝¹ : ¬i ∈ s
x✝ : Set.Finite s
ih :
  (∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N) →
    ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0
r : R
hr1 : r - 1 ∈ I
hs : i ∈ ↑N ∧ s ⊆ ↑N
c : R
hc1 : c - 1 ∈ I
hci : c • i ∈ I • span R s
n : M
hn : n ∈ N
hrn : n ∈ comap (↑(LinearMap.lsmul R M) r) (I • span R {i} ⊔ I • span R s)
⊢ n ∈ comap (↑(LinearMap.lsmul R M) (c * r)) (I • span R s)

tactic: rcases hrn with ⟨y, hy, z, hz, hyz⟩
state_before: case intro.intro.refine'_2.intro.intro.intro.intro.intro.refine'_2
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s✝ : Set M
hfs : Set.Finite s✝
i : M
s : Set M
x✝¹ : ¬i ∈ s
x✝ : Set.Finite s
ih :
  (∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N) →
    ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0
r : R
hr1 : r - 1 ∈ I
hs : i ∈ ↑N ∧ s ⊆ ↑N
c : R
hc1 : c - 1 ∈ I
hci : c • i ∈ I • span R s
n : M
hn : n ∈ N
hrn : ∃ y, y ∈ I • span R {i} ∧ ∃ z, z ∈ I • span R s ∧ y + z = ↑(↑(LinearMap.lsmul R M) r) n
⊢ n ∈ comap (↑(LinearMap.lsmul R M) (c * r)) (I • span R s)

tactic: dsimp at hyz
state_before: case intro.intro.refine'_2.intro.intro.intro.intro.intro.refine'_2.intro.intro.intro.intro
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s✝ : Set M
hfs : Set.Finite s✝
i : M
s : Set M
x✝¹ : ¬i ∈ s
x✝ : Set.Finite s
ih :
  (∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N) →
    ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0
r : R
hr1 : r - 1 ∈ I
hs : i ∈ ↑N ∧ s ⊆ ↑N
c : R
hc1 : c - 1 ∈ I
hci : c • i ∈ I • span R s
n : M
hn : n ∈ N
y : M
hy : y ∈ I • span R {i}
z : M
hz : z ∈ I • span R s
hyz : y + z = ↑(↑(LinearMap.lsmul R M) r) n
⊢ n ∈ comap (↑(LinearMap.lsmul R M) (c * r)) (I • span R s)

tactic: rw [mem_smul_span_singleton] at hy
state_before: case intro.intro.refine'_2.intro.intro.intro.intro.intro.refine'_2.intro.intro.intro.intro
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s✝ : Set M
hfs : Set.Finite s✝
i : M
s : Set M
x✝¹ : ¬i ∈ s
x✝ : Set.Finite s
ih :
  (∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N) →
    ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0
r : R
hr1 : r - 1 ∈ I
hs : i ∈ ↑N ∧ s ⊆ ↑N
c : R
hc1 : c - 1 ∈ I
hci : c • i ∈ I • span R s
n : M
hn : n ∈ N
y : M
hy : y ∈ I • span R {i}
z : M
hz : z ∈ I • span R s
hyz : y + z = r • n
⊢ n ∈ comap (↑(LinearMap.lsmul R M) (c * r)) (I • span R s)

tactic: rcases hy with ⟨d, _, rfl⟩
state_before: case intro.intro.refine'_2.intro.intro.intro.intro.intro.refine'_2.intro.intro.intro.intro
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s✝ : Set M
hfs : Set.Finite s✝
i : M
s : Set M
x✝¹ : ¬i ∈ s
x✝ : Set.Finite s
ih :
  (∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N) →
    ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0
r : R
hr1 : r - 1 ∈ I
hs : i ∈ ↑N ∧ s ⊆ ↑N
c : R
hc1 : c - 1 ∈ I
hci : c • i ∈ I • span R s
n : M
hn : n ∈ N
y : M
hy : ∃ y_1, y_1 ∈ I ∧ y_1 • i = y
z : M
hz : z ∈ I • span R s
hyz : y + z = r • n
⊢ n ∈ comap (↑(LinearMap.lsmul R M) (c * r)) (I • span R s)

tactic: simp only [mem_comap, LinearMap.lsmul_apply]
state_before: case intro.intro.refine'_2.intro.intro.intro.intro.intro.refine'_2.intro.intro.intro.intro.intro.intro
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s✝ : Set M
hfs : Set.Finite s✝
i : M
s : Set M
x✝¹ : ¬i ∈ s
x✝ : Set.Finite s
ih :
  (∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N) →
    ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0
r : R
hr1 : r - 1 ∈ I
hs : i ∈ ↑N ∧ s ⊆ ↑N
c : R
hc1 : c - 1 ∈ I
hci : c • i ∈ I • span R s
n : M
hn : n ∈ N
z : M
hz : z ∈ I • span R s
d : R
left✝ : d ∈ I
hyz : d • i + z = r • n
⊢ n ∈ comap (↑(LinearMap.lsmul R M) (c * r)) (I • span R s)

tactic: rw [mul_smul, ← hyz, smul_add, smul_smul, mul_comm, mul_smul]
state_before: case intro.intro.refine'_2.intro.intro.intro.intro.intro.refine'_2.intro.intro.intro.intro.intro.intro
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s✝ : Set M
hfs : Set.Finite s✝
i : M
s : Set M
x✝¹ : ¬i ∈ s
x✝ : Set.Finite s
ih :
  (∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N) →
    ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0
r : R
hr1 : r - 1 ∈ I
hs : i ∈ ↑N ∧ s ⊆ ↑N
c : R
hc1 : c - 1 ∈ I
hci : c • i ∈ I • span R s
n : M
hn : n ∈ N
z : M
hz : z ∈ I • span R s
d : R
left✝ : d ∈ I
hyz : d • i + z = r • n
⊢ (c * r) • n ∈ I • span R s

tactic: exact add_mem (smul_mem _ _ hci) (smul_mem _ _ hz)
state_before: case intro.intro.refine'_2.intro.intro.intro.intro.intro.refine'_2.intro.intro.intro.intro.intro.intro
R✝ : Type ?u.23931
M✝ : Type ?u.23934
inst✝⁵ : Semiring R✝
inst✝⁴ : AddCommMonoid M✝
inst✝³ : Module R✝ M✝
R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
N : Submodule R M
s✝ : Set M
hfs : Set.Finite s✝
i : M
s : Set M
x✝¹ : ¬i ∈ s
x✝ : Set.Finite s
ih :
  (∃ r, r - 1 ∈ I ∧ N ≤ comap (↑(LinearMap.lsmul R M) r) (I • span R s) ∧ s ⊆ ↑N) →
    ∃ r, r - 1 ∈ I ∧ ∀ (n : M), n ∈ N → r • n = 0
r : R
hr1 : r - 1 ∈ I
hs : i ∈ ↑N ∧ s ⊆ ↑N
c : R
hc1 : c - 1 ∈ I
hci : c • i ∈ I • span R s
n : M
hn : n ∈ N
z : M
hz : z ∈ I • span R s
d : R
left✝ : d ∈ I
hyz : d • i + z = r • n
⊢ d • c • i + c • z ∈ I • span R s