Theorem: Submodule.span_singleton_eq_span_singleton
File: Mathlib/LinearAlgebra/Span.lean

tactic: by_cases hx : x = 0
state_before: R✝ : Type ?u.186339
R₂ : Type ?u.186342
K : Type ?u.186345
M✝ : Type ?u.186348
M₂ : Type ?u.186351
V : Type ?u.186354
S : Type ?u.186357
inst✝⁹ : Semiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
x✝ : M✝
p p' : Submodule R✝ M✝
inst✝⁶ : Semiring R₂
σ₁₂ : R✝ →+* R₂
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R₂ M₂
s t : Set M✝
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : NoZeroSMulDivisors R M
x y : M
⊢ span R {x} = span R {y} ↔ ∃ z, z • x = y

tactic: by_cases hy : y = 0
state_before: case neg
R✝ : Type ?u.186339
R₂ : Type ?u.186342
K : Type ?u.186345
M✝ : Type ?u.186348
M₂ : Type ?u.186351
V : Type ?u.186354
S : Type ?u.186357
inst✝⁹ : Semiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
x✝ : M✝
p p' : Submodule R✝ M✝
inst✝⁶ : Semiring R₂
σ₁₂ : R✝ →+* R₂
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R₂ M₂
s t : Set M✝
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : NoZeroSMulDivisors R M
x y : M
hx : ¬x = 0
⊢ span R {x} = span R {y} ↔ ∃ z, z • x = y

tactic: constructor
state_before: case neg
R✝ : Type ?u.186339
R₂ : Type ?u.186342
K : Type ?u.186345
M✝ : Type ?u.186348
M₂ : Type ?u.186351
V : Type ?u.186354
S : Type ?u.186357
inst✝⁹ : Semiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
x✝ : M✝
p p' : Submodule R✝ M✝
inst✝⁶ : Semiring R₂
σ₁₂ : R✝ →+* R₂
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R₂ M₂
s t : Set M✝
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : NoZeroSMulDivisors R M
x y : M
hx : ¬x = 0
hy : ¬y = 0
⊢ span R {x} = span R {y} ↔ ∃ z, z • x = y

tactic: rw [hx, span_zero_singleton, eq_comm, span_singleton_eq_bot]
state_before: case pos
R✝ : Type ?u.186339
R₂ : Type ?u.186342
K : Type ?u.186345
M✝ : Type ?u.186348
M₂ : Type ?u.186351
V : Type ?u.186354
S : Type ?u.186357
inst✝⁹ : Semiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
x✝ : M✝
p p' : Submodule R✝ M✝
inst✝⁶ : Semiring R₂
σ₁₂ : R✝ →+* R₂
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R₂ M₂
s t : Set M✝
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : NoZeroSMulDivisors R M
x y : M
hx : x = 0
⊢ span R {x} = span R {y} ↔ ∃ z, z • x = y

tactic: exact ⟨fun hy => ⟨1, by rw [hy, smul_zero]⟩, fun ⟨_, hz⟩ => by rw [← hz, smul_zero]⟩
state_before: case pos
R✝ : Type ?u.186339
R₂ : Type ?u.186342
K : Type ?u.186345
M✝ : Type ?u.186348
M₂ : Type ?u.186351
V : Type ?u.186354
S : Type ?u.186357
inst✝⁹ : Semiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
x✝ : M✝
p p' : Submodule R✝ M✝
inst✝⁶ : Semiring R₂
σ₁₂ : R✝ →+* R₂
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R₂ M₂
s t : Set M✝
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : NoZeroSMulDivisors R M
x y : M
hx : x = 0
⊢ y = 0 ↔ ∃ z, z • 0 = y

tactic: rw [hy, smul_zero]
state_before: R✝ : Type ?u.186339
R₂ : Type ?u.186342
K : Type ?u.186345
M✝ : Type ?u.186348
M₂ : Type ?u.186351
V : Type ?u.186354
S : Type ?u.186357
inst✝⁹ : Semiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
x✝ : M✝
p p' : Submodule R✝ M✝
inst✝⁶ : Semiring R₂
σ₁₂ : R✝ →+* R₂
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R₂ M₂
s t : Set M✝
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : NoZeroSMulDivisors R M
x y : M
hx : x = 0
hy : y = 0
⊢ 1 • 0 = y

tactic: rw [← hz, smul_zero]
state_before: R✝ : Type ?u.186339
R₂ : Type ?u.186342
K : Type ?u.186345
M✝ : Type ?u.186348
M₂ : Type ?u.186351
V : Type ?u.186354
S : Type ?u.186357
inst✝⁹ : Semiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
x✝¹ : M✝
p p' : Submodule R✝ M✝
inst✝⁶ : Semiring R₂
σ₁₂ : R✝ →+* R₂
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R₂ M₂
s t : Set M✝
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : NoZeroSMulDivisors R M
x y : M
hx : x = 0
x✝ : ∃ z, z • 0 = y
w✝ : Rˣ
hz : w✝ • 0 = y
⊢ y = 0

tactic: rw [hy, span_zero_singleton, span_singleton_eq_bot]
state_before: case pos
R✝ : Type ?u.186339
R₂ : Type ?u.186342
K : Type ?u.186345
M✝ : Type ?u.186348
M₂ : Type ?u.186351
V : Type ?u.186354
S : Type ?u.186357
inst✝⁹ : Semiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
x✝ : M✝
p p' : Submodule R✝ M✝
inst✝⁶ : Semiring R₂
σ₁₂ : R✝ →+* R₂
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R₂ M₂
s t : Set M✝
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : NoZeroSMulDivisors R M
x y : M
hx : ¬x = 0
hy : y = 0
⊢ span R {x} = span R {y} ↔ ∃ z, z • x = y

tactic: exact ⟨fun hx => ⟨1, by rw [hx, smul_zero]⟩, fun ⟨z, hz⟩ => (smul_eq_zero_iff_eq z).mp hz⟩
state_before: case pos
R✝ : Type ?u.186339
R₂ : Type ?u.186342
K : Type ?u.186345
M✝ : Type ?u.186348
M₂ : Type ?u.186351
V : Type ?u.186354
S : Type ?u.186357
inst✝⁹ : Semiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
x✝ : M✝
p p' : Submodule R✝ M✝
inst✝⁶ : Semiring R₂
σ₁₂ : R✝ →+* R₂
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R₂ M₂
s t : Set M✝
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : NoZeroSMulDivisors R M
x y : M
hx : ¬x = 0
hy : y = 0
⊢ x = 0 ↔ ∃ z, z • x = 0

tactic: rw [hx, smul_zero]
state_before: R✝ : Type ?u.186339
R₂ : Type ?u.186342
K : Type ?u.186345
M✝ : Type ?u.186348
M₂ : Type ?u.186351
V : Type ?u.186354
S : Type ?u.186357
inst✝⁹ : Semiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
x✝ : M✝
p p' : Submodule R✝ M✝
inst✝⁶ : Semiring R₂
σ₁₂ : R✝ →+* R₂
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R₂ M₂
s t : Set M✝
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : NoZeroSMulDivisors R M
x y : M
hx✝ : ¬x = 0
hy : y = 0
hx : x = 0
⊢ 1 • x = 0

tactic: intro hxy
state_before: case neg.mp
R✝ : Type ?u.186339
R₂ : Type ?u.186342
K : Type ?u.186345
M✝ : Type ?u.186348
M₂ : Type ?u.186351
V : Type ?u.186354
S : Type ?u.186357
inst✝⁹ : Semiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
x✝ : M✝
p p' : Submodule R✝ M✝
inst✝⁶ : Semiring R₂
σ₁₂ : R✝ →+* R₂
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R₂ M₂
s t : Set M✝
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : NoZeroSMulDivisors R M
x y : M
hx : ¬x = 0
hy : ¬y = 0
⊢ span R {x} = span R {y} → ∃ z, z • x = y

tactic: cases'
  mem_span_singleton.mp
    (by
      rw [hxy]
      apply mem_span_singleton_self) with
  v hv
state_before: case neg.mp
R✝ : Type ?u.186339
R₂ : Type ?u.186342
K : Type ?u.186345
M✝ : Type ?u.186348
M₂ : Type ?u.186351
V : Type ?u.186354
S : Type ?u.186357
inst✝⁹ : Semiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
x✝ : M✝
p p' : Submodule R✝ M✝
inst✝⁶ : Semiring R₂
σ₁₂ : R✝ →+* R₂
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R₂ M₂
s t : Set M✝
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : NoZeroSMulDivisors R M
x y : M
hx : ¬x = 0
hy : ¬y = 0
hxy : span R {x} = span R {y}
⊢ ∃ z, z • x = y

tactic: cases'
  mem_span_singleton.mp
    (by
      rw [← hxy]
      apply mem_span_singleton_self) with
  i hi
state_before: case neg.mp.intro
R✝ : Type ?u.186339
R₂ : Type ?u.186342
K : Type ?u.186345
M✝ : Type ?u.186348
M₂ : Type ?u.186351
V : Type ?u.186354
S : Type ?u.186357
inst✝⁹ : Semiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
x✝ : M✝
p p' : Submodule R✝ M✝
inst✝⁶ : Semiring R₂
σ₁₂ : R✝ →+* R₂
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R₂ M₂
s t : Set M✝
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : NoZeroSMulDivisors R M
x y : M
hx : ¬x = 0
hy : ¬y = 0
hxy : span R {x} = span R {y}
v : R
hv : v • x = y
⊢ ∃ z, z • x = y

tactic: have vi : v * i = 1 := by
  rw [← one_smul R y, ← hi, smul_smul] at hv
  exact smul_left_injective R hy hv
state_before: case neg.mp.intro.intro
R✝ : Type ?u.186339
R₂ : Type ?u.186342
K : Type ?u.186345
M✝ : Type ?u.186348
M₂ : Type ?u.186351
V : Type ?u.186354
S : Type ?u.186357
inst✝⁹ : Semiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
x✝ : M✝
p p' : Submodule R✝ M✝
inst✝⁶ : Semiring R₂
σ₁₂ : R✝ →+* R₂
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R₂ M₂
s t : Set M✝
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : NoZeroSMulDivisors R M
x y : M
hx : ¬x = 0
hy : ¬y = 0
hxy : span R {x} = span R {y}
v : R
hv : v • x = y
i : R
hi : i • y = x
⊢ ∃ z, z • x = y

tactic: have iv : i * v = 1 := by
  rw [← one_smul R x, ← hv, smul_smul] at hi
  exact smul_left_injective R hx hi
state_before: case neg.mp.intro.intro
R✝ : Type ?u.186339
R₂ : Type ?u.186342
K : Type ?u.186345
M✝ : Type ?u.186348
M₂ : Type ?u.186351
V : Type ?u.186354
S : Type ?u.186357
inst✝⁹ : Semiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
x✝ : M✝
p p' : Submodule R✝ M✝
inst✝⁶ : Semiring R₂
σ₁₂ : R✝ →+* R₂
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R₂ M₂
s t : Set M✝
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : NoZeroSMulDivisors R M
x y : M
hx : ¬x = 0
hy : ¬y = 0
hxy : span R {x} = span R {y}
v : R
hv : v • x = y
i : R
hi : i • y = x
vi : v * i = 1
⊢ ∃ z, z • x = y

tactic: exact ⟨⟨v, i, vi, iv⟩, hv⟩
state_before: case neg.mp.intro.intro
R✝ : Type ?u.186339
R₂ : Type ?u.186342
K : Type ?u.186345
M✝ : Type ?u.186348
M₂ : Type ?u.186351
V : Type ?u.186354
S : Type ?u.186357
inst✝⁹ : Semiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
x✝ : M✝
p p' : Submodule R✝ M✝
inst✝⁶ : Semiring R₂
σ₁₂ : R✝ →+* R₂
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R₂ M₂
s t : Set M✝
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : NoZeroSMulDivisors R M
x y : M
hx : ¬x = 0
hy : ¬y = 0
hxy : span R {x} = span R {y}
v : R
hv : v • x = y
i : R
hi : i • y = x
vi : v * i = 1
iv : i * v = 1
⊢ ∃ z, z • x = y

tactic: rw [hxy]
state_before: R✝ : Type ?u.186339
R₂ : Type ?u.186342
K : Type ?u.186345
M✝ : Type ?u.186348
M₂ : Type ?u.186351
V : Type ?u.186354
S : Type ?u.186357
inst✝⁹ : Semiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
x✝ : M✝
p p' : Submodule R✝ M✝
inst✝⁶ : Semiring R₂
σ₁₂ : R✝ →+* R₂
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R₂ M₂
s t : Set M✝
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : NoZeroSMulDivisors R M
x y : M
hx : ¬x = 0
hy : ¬y = 0
hxy : span R {x} = span R {y}
⊢ ?m.197857 ∈ span ?m.197747 {?m.197858}

tactic: apply mem_span_singleton_self
state_before: R✝ : Type ?u.186339
R₂ : Type ?u.186342
K : Type ?u.186345
M✝ : Type ?u.186348
M₂ : Type ?u.186351
V : Type ?u.186354
S : Type ?u.186357
inst✝⁹ : Semiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
x✝ : M✝
p p' : Submodule R✝ M✝
inst✝⁶ : Semiring R₂
σ₁₂ : R✝ →+* R₂
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R₂ M₂
s t : Set M✝
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : NoZeroSMulDivisors R M
x y : M
hx : ¬x = 0
hy : ¬y = 0
hxy : span R {x} = span R {y}
⊢ ?m.197857 ∈ span R {y}

R✝ : Type ?u.186339
R₂ : Type ?u.186342
K : Type ?u.186345
M✝ : Type ?u.186348
M₂ : Type ?u.186351
V : Type ?u.186354
S : Type ?u.186357
inst✝⁹ : Semiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
x✝ : M✝
p p' : Submodule R✝ M✝
inst✝⁶ : Semiring R₂
σ₁₂ : R✝ →+* R₂
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R₂ M₂
s t : Set M✝
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : NoZeroSMulDivisors R M
x y : M
hx : ¬x = 0
hy : ¬y = 0
hxy : span R {x} = span R {y}
⊢ M

tactic: rw [← hxy]
state_before: R✝ : Type ?u.186339
R₂ : Type ?u.186342
K : Type ?u.186345
M✝ : Type ?u.186348
M₂ : Type ?u.186351
V : Type ?u.186354
S : Type ?u.186357
inst✝⁹ : Semiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
x✝ : M✝
p p' : Submodule R✝ M✝
inst✝⁶ : Semiring R₂
σ₁₂ : R✝ →+* R₂
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R₂ M₂
s t : Set M✝
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : NoZeroSMulDivisors R M
x y : M
hx : ¬x = 0
hy : ¬y = 0
hxy : span R {x} = span R {y}
v : R
hv : v • x = y
⊢ ?m.198638 ∈ span ?m.198528 {?m.198639}

tactic: apply mem_span_singleton_self
state_before: R✝ : Type ?u.186339
R₂ : Type ?u.186342
K : Type ?u.186345
M✝ : Type ?u.186348
M₂ : Type ?u.186351
V : Type ?u.186354
S : Type ?u.186357
inst✝⁹ : Semiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
x✝ : M✝
p p' : Submodule R✝ M✝
inst✝⁶ : Semiring R₂
σ₁₂ : R✝ →+* R₂
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R₂ M₂
s t : Set M✝
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : NoZeroSMulDivisors R M
x y : M
hx : ¬x = 0
hy : ¬y = 0
hxy : span R {x} = span R {y}
v : R
hv : v • x = y
⊢ ?m.198638 ∈ span R {x}

R✝ : Type ?u.186339
R₂ : Type ?u.186342
K : Type ?u.186345
M✝ : Type ?u.186348
M₂ : Type ?u.186351
V : Type ?u.186354
S : Type ?u.186357
inst✝⁹ : Semiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
x✝ : M✝
p p' : Submodule R✝ M✝
inst✝⁶ : Semiring R₂
σ₁₂ : R✝ →+* R₂
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R₂ M₂
s t : Set M✝
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : NoZeroSMulDivisors R M
x y : M
hx : ¬x = 0
hy : ¬y = 0
hxy : span R {x} = span R {y}
v : R
hv : v • x = y
⊢ M

tactic: rw [← one_smul R y, ← hi, smul_smul] at hv
state_before: R✝ : Type ?u.186339
R₂ : Type ?u.186342
K : Type ?u.186345
M✝ : Type ?u.186348
M₂ : Type ?u.186351
V : Type ?u.186354
S : Type ?u.186357
inst✝⁹ : Semiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
x✝ : M✝
p p' : Submodule R✝ M✝
inst✝⁶ : Semiring R₂
σ₁₂ : R✝ →+* R₂
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R₂ M₂
s t : Set M✝
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : NoZeroSMulDivisors R M
x y : M
hx : ¬x = 0
hy : ¬y = 0
hxy : span R {x} = span R {y}
v : R
hv : v • x = y
i : R
hi : i • y = x
⊢ v * i = 1

tactic: exact smul_left_injective R hy hv
state_before: R✝ : Type ?u.186339
R₂ : Type ?u.186342
K : Type ?u.186345
M✝ : Type ?u.186348
M₂ : Type ?u.186351
V : Type ?u.186354
S : Type ?u.186357
inst✝⁹ : Semiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
x✝ : M✝
p p' : Submodule R✝ M✝
inst✝⁶ : Semiring R₂
σ₁₂ : R✝ →+* R₂
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R₂ M₂
s t : Set M✝
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : NoZeroSMulDivisors R M
x y : M
hx : ¬x = 0
hy : ¬y = 0
hxy : span R {x} = span R {y}
v i : R
hv : (v * i) • y = 1 • y
hi : i • y = x
⊢ v * i = 1

tactic: rw [← one_smul R x, ← hv, smul_smul] at hi
state_before: R✝ : Type ?u.186339
R₂ : Type ?u.186342
K : Type ?u.186345
M✝ : Type ?u.186348
M₂ : Type ?u.186351
V : Type ?u.186354
S : Type ?u.186357
inst✝⁹ : Semiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
x✝ : M✝
p p' : Submodule R✝ M✝
inst✝⁶ : Semiring R₂
σ₁₂ : R✝ →+* R₂
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R₂ M₂
s t : Set M✝
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : NoZeroSMulDivisors R M
x y : M
hx : ¬x = 0
hy : ¬y = 0
hxy : span R {x} = span R {y}
v : R
hv : v • x = y
i : R
hi : i • y = x
vi : v * i = 1
⊢ i * v = 1

tactic: exact smul_left_injective R hx hi
state_before: R✝ : Type ?u.186339
R₂ : Type ?u.186342
K : Type ?u.186345
M✝ : Type ?u.186348
M₂ : Type ?u.186351
V : Type ?u.186354
S : Type ?u.186357
inst✝⁹ : Semiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
x✝ : M✝
p p' : Submodule R✝ M✝
inst✝⁶ : Semiring R₂
σ₁₂ : R✝ →+* R₂
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R₂ M₂
s t : Set M✝
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : NoZeroSMulDivisors R M
x y : M
hx : ¬x = 0
hy : ¬y = 0
hxy : span R {x} = span R {y}
v : R
hv : v • x = y
i : R
hi : (i * v) • x = 1 • x
vi : v * i = 1
⊢ i * v = 1

tactic: rintro ⟨v, rfl⟩
state_before: case neg.mpr
R✝ : Type ?u.186339
R₂ : Type ?u.186342
K : Type ?u.186345
M✝ : Type ?u.186348
M₂ : Type ?u.186351
V : Type ?u.186354
S : Type ?u.186357
inst✝⁹ : Semiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
x✝ : M✝
p p' : Submodule R✝ M✝
inst✝⁶ : Semiring R₂
σ₁₂ : R✝ →+* R₂
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R₂ M₂
s t : Set M✝
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : NoZeroSMulDivisors R M
x y : M
hx : ¬x = 0
hy : ¬y = 0
⊢ (∃ z, z • x = y) → span R {x} = span R {y}

tactic: rw [span_singleton_group_smul_eq]
state_before: case neg.mpr.intro
R✝ : Type ?u.186339
R₂ : Type ?u.186342
K : Type ?u.186345
M✝ : Type ?u.186348
M₂ : Type ?u.186351
V : Type ?u.186354
S : Type ?u.186357
inst✝⁹ : Semiring R✝
inst✝⁸ : AddCommMonoid M✝
inst✝⁷ : Module R✝ M✝
x✝ : M✝
p p' : Submodule R✝ M✝
inst✝⁶ : Semiring R₂
σ₁₂ : R✝ →+* R₂
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R₂ M₂
s t : Set M✝
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : NoZeroSMulDivisors R M
x : M
hx : ¬x = 0
v : Rˣ
hy : ¬v • x = 0
⊢ span R {x} = span R {v • x}