Theorem: exists_linearIndependent_pair_of_one_lt_rank
File: Mathlib/LinearAlgebra/Dimension/RankNullity.lean

Proof steps:
state_before: R : Type u_1
M M₁ M₂ M₃ : Type u
M' : Type v
inst✝¹³ : Ring R
inst✝¹² : AddCommGroup M
inst✝¹¹ : AddCommGroup M₁
inst✝¹⁰ : AddCommGroup M₂
inst✝⁹ : AddCommGroup M₃
inst✝⁸ : AddCommGroup M'
inst✝⁷ : Module R M
inst✝⁶ : Module R M₁
inst✝⁵ : Module R M₂
inst✝⁴ : Module R M₃
inst✝³ : Module R M'
inst✝² : HasRankNullity.{u, u_1} R
inst✝¹ : StrongRankCondition R
inst✝ : NoZeroSMulDivisors R M
h : 1 < Module.rank R M
x : M
hx : x ≠ 0
⊢ ∃ y, LinearIndependent R ![x, y]
state_after: case intro
R : Type u_1
M M₁ M₂ M₃ : Type u
M' : Type v
inst✝¹³ : Ring R
inst✝¹² : AddCommGroup M
inst✝¹¹ : AddCommGroup M₁
inst✝¹⁰ : AddCommGroup M₂
inst✝⁹ : AddCommGroup M₃
inst✝⁸ : AddCommGroup M'
inst✝⁷ : Module R M
inst✝⁶ : Module R M₁
inst✝⁵ : Module R M₂
inst✝⁴ : Module R M₃
inst✝³ : Module R M'
inst✝² : HasRankNullity.{u, u_1} R
inst✝¹ : StrongRankCondition R
inst✝ : NoZeroSMulDivisors R M
h : 1 < Module.rank R M
x : M
hx : x ≠ 0
y : M
hy : LinearIndependent R (Fin.snoc ![x] y)
⊢ ∃ y, LinearIndependent R ![x, y]
tactic: obtain ⟨y, hy⟩ := exists_linearIndependent_snoc_of_lt_rank (linearIndependent_unique ![x] hx) h
state_before: case intro
R : Type u_1
M M₁ M₂ M₃ : Type u
M' : Type v
inst✝¹³ : Ring R
inst✝¹² : AddCommGroup M
inst✝¹¹ : AddCommGroup M₁
inst✝¹⁰ : AddCommGroup M₂
inst✝⁹ : AddCommGroup M₃
inst✝⁸ : AddCommGroup M'
inst✝⁷ : Module R M
inst✝⁶ : Module R M₁
inst✝⁵ : Module R M₂
inst✝⁴ : Module R M₃
inst✝³ : Module R M'
inst✝² : HasRankNullity.{u, u_1} R
inst✝¹ : StrongRankCondition R
inst✝ : NoZeroSMulDivisors R M
h : 1 < Module.rank R M
x : M
hx : x ≠ 0
y : M
hy : LinearIndependent R (Fin.snoc ![x] y)
⊢ ∃ y, LinearIndependent R ![x, y]
state_after: case intro
R : Type u_1
M M₁ M₂ M₃ : Type u
M' : Type v
inst✝¹³ : Ring R
inst✝¹² : AddCommGroup M
inst✝¹¹ : AddCommGroup M₁
inst✝¹⁰ : AddCommGroup M₂
inst✝⁹ : AddCommGroup M₃
inst✝⁸ : AddCommGroup M'
inst✝⁷ : Module R M
inst✝⁶ : Module R M₁
inst✝⁵ : Module R M₂
inst✝⁴ : Module R M₃
inst✝³ : Module R M'
inst✝² : HasRankNullity.{u, u_1} R
inst✝¹ : StrongRankCondition R
inst✝ : NoZeroSMulDivisors R M
h : 1 < Module.rank R M
x : M
hx : x ≠ 0
y : M
hy : LinearIndependent R (Fin.snoc ![x] y)
this : Fin.snoc ![x] y = ![x, y]
⊢ ∃ y, LinearIndependent R ![x, y]
tactic: have : Fin.snoc ![x] y = ![x, y] := Iff.mp List.ofFn_inj rfl
state_before: case intro
R : Type u_1
M M₁ M₂ M₃ : Type u
M' : Type v
inst✝¹³ : Ring R
inst✝¹² : AddCommGroup M
inst✝¹¹ : AddCommGroup M₁
inst✝¹⁰ : AddCommGroup M₂
inst✝⁹ : AddCommGroup M₃
inst✝⁸ : AddCommGroup M'
inst✝⁷ : Module R M
inst✝⁶ : Module R M₁
inst✝⁵ : Module R M₂
inst✝⁴ : Module R M₃
inst✝³ : Module R M'
inst✝² : HasRankNullity.{u, u_1} R
inst✝¹ : StrongRankCondition R
inst✝ : NoZeroSMulDivisors R M
h : 1 < Module.rank R M
x : M
hx : x ≠ 0
y : M
hy : LinearIndependent R (Fin.snoc ![x] y)
this : Fin.snoc ![x] y = ![x, y]
⊢ ∃ y, LinearIndependent R ![x, y]
state_after: case intro
R : Type u_1
M M₁ M₂ M₃ : Type u
M' : Type v
inst✝¹³ : Ring R
inst✝¹² : AddCommGroup M
inst✝¹¹ : AddCommGroup M₁
inst✝¹⁰ : AddCommGroup M₂
inst✝⁹ : AddCommGroup M₃
inst✝⁸ : AddCommGroup M'
inst✝⁷ : Module R M
inst✝⁶ : Module R M₁
inst✝⁵ : Module R M₂
inst✝⁴ : Module R M₃
inst✝³ : Module R M'
inst✝² : HasRankNullity.{u, u_1} R
inst✝¹ : StrongRankCondition R
inst✝ : NoZeroSMulDivisors R M
h : 1 < Module.rank R M
x : M
hx : x ≠ 0
y : M
hy : LinearIndependent R ![x, y]
this : Fin.snoc ![x] y = ![x, y]
⊢ ∃ y, LinearIndependent R ![x, y]
tactic: rw [this] at hy
state_before: case intro
R : Type u_1
M M₁ M₂ M₃ : Type u
M' : Type v
inst✝¹³ : Ring R
inst✝¹² : AddCommGroup M
inst✝¹¹ : AddCommGroup M₁
inst✝¹⁰ : AddCommGroup M₂
inst✝⁹ : AddCommGroup M₃
inst✝⁸ : AddCommGroup M'
inst✝⁷ : Module R M
inst✝⁶ : Module R M₁
inst✝⁵ : Module R M₂
inst✝⁴ : Module R M₃
inst✝³ : Module R M'
inst✝² : HasRankNullity.{u, u_1} R
inst✝¹ : StrongRankCondition R
inst✝ : NoZeroSMulDivisors R M
h : 1 < Module.rank R M
x : M
hx : x ≠ 0
y : M
hy : LinearIndependent R ![x, y]
this : Fin.snoc ![x] y = ![x, y]
⊢ ∃ y, LinearIndependent R ![x, y]
state_after: no goals
tactic: exact ⟨y, hy⟩