Theorem: rank_submodule_le_one_iff'
File: Mathlib/LinearAlgebra/Dimension/FreeAndStrongRankCondition.lean

tactic: haveI := nontrivial_of_invariantBasisNumber K
state_before: K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : StrongRankCondition K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
s : Submodule K V
inst✝ : Module.Free K ↥s
⊢ Module.rank K ↥s ≤ 1 ↔ ∃ v₀, s ≤ span K {v₀}
state_after: K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : StrongRankCondition K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
s : Submodule K V
inst✝ : Module.Free K ↥s
this : Nontrivial K
⊢ Module.rank K ↥s ≤ 1 ↔ ∃ v₀, s ≤ span K {v₀}

tactic: constructor
state_before: K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : StrongRankCondition K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
s : Submodule K V
inst✝ : Module.Free K ↥s
this : Nontrivial K
⊢ Module.rank K ↥s ≤ 1 ↔ ∃ v₀, s ≤ span K {v₀}
state_after: case mp
K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : StrongRankCondition K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
s : Submodule K V
inst✝ : Module.Free K ↥s
this : Nontrivial K
⊢ Module.rank K ↥s ≤ 1 → ∃ v₀, s ≤ span K {v₀}

case mpr
K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : StrongRankCondition K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
s : Submodule K V
inst✝ : Module.Free K ↥s
this : Nontrivial K
⊢ (∃ v₀, s ≤ span K {v₀}) → Module.rank K ↥s ≤ 1

tactic: rw [rank_submodule_le_one_iff]
state_before: case mp
K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : StrongRankCondition K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
s : Submodule K V
inst✝ : Module.Free K ↥s
this : Nontrivial K
⊢ Module.rank K ↥s ≤ 1 → ∃ v₀, s ≤ span K {v₀}
state_after: case mp
K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : StrongRankCondition K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
s : Submodule K V
inst✝ : Module.Free K ↥s
this : Nontrivial K
⊢ (∃ v₀ ∈ s, s ≤ span K {v₀}) → ∃ v₀, s ≤ span K {v₀}

tactic: rintro ⟨v₀, _, h⟩
state_before: case mp
K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : StrongRankCondition K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
s : Submodule K V
inst✝ : Module.Free K ↥s
this : Nontrivial K
⊢ (∃ v₀ ∈ s, s ≤ span K {v₀}) → ∃ v₀, s ≤ span K {v₀}
state_after: case mp.intro.intro
K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : StrongRankCondition K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
s : Submodule K V
inst✝ : Module.Free K ↥s
this : Nontrivial K
v₀ : V
left✝ : v₀ ∈ s
h : s ≤ span K {v₀}
⊢ ∃ v₀, s ≤ span K {v₀}

tactic: exact ⟨v₀, h⟩
state_before: case mp.intro.intro
K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : StrongRankCondition K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
s : Submodule K V
inst✝ : Module.Free K ↥s
this : Nontrivial K
v₀ : V
left✝ : v₀ ∈ s
h : s ≤ span K {v₀}
⊢ ∃ v₀, s ≤ span K {v₀}
state_after: no goals

tactic: rintro ⟨v₀, h⟩
state_before: case mpr
K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : StrongRankCondition K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
s : Submodule K V
inst✝ : Module.Free K ↥s
this : Nontrivial K
⊢ (∃ v₀, s ≤ span K {v₀}) → Module.rank K ↥s ≤ 1
state_after: case mpr.intro
K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : StrongRankCondition K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
s : Submodule K V
inst✝ : Module.Free K ↥s
this : Nontrivial K
v₀ : V
h : s ≤ span K {v₀}
⊢ Module.rank K ↥s ≤ 1

tactic: obtain ⟨κ, b⟩ := Module.Free.exists_basis (R := K) (M := s)
state_before: case mpr.intro
K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : StrongRankCondition K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
s : Submodule K V
inst✝ : Module.Free K ↥s
this : Nontrivial K
v₀ : V
h : s ≤ span K {v₀}
⊢ Module.rank K ↥s ≤ 1
state_after: case mpr.intro.intro.mk
K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : StrongRankCondition K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
s : Submodule K V
inst✝ : Module.Free K ↥s
this : Nontrivial K
v₀ : V
h : s ≤ span K {v₀}
κ : Type v
b : Basis κ K ↥s
⊢ Module.rank K ↥s ≤ 1

tactic: simpa [b.mk_eq_rank''] using b.linearIndependent.map' _ (ker_inclusion _ _ h)
  |>.cardinal_le_rank.trans (rank_span_le {v₀})
state_before: case mpr.intro.intro.mk
K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : StrongRankCondition K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
s : Submodule K V
inst✝ : Module.Free K ↥s
this : Nontrivial K
v₀ : V
h : s ≤ span K {v₀}
κ : Type v
b : Basis κ K ↥s
⊢ Module.rank K ↥s ≤ 1
state_after: no goals