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

tactic: simp_rw [rank_le_one_iff, le_span_singleton_iff]
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, 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
⊢ (∃ v₀, ∀ (v : ↥s), ∃ r, r • v₀ = v) ↔ ∃ v₀ ∈ s, ∀ v ∈ s, ∃ r, r • v₀ = 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
⊢ (∃ v₀, ∀ (v : ↥s), ∃ r, r • v₀ = v) ↔ ∃ v₀ ∈ s, ∀ v ∈ s, ∃ r, r • v₀ = 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
⊢ (∃ v₀, ∀ (v : ↥s), ∃ r, r • v₀ = v) → ∃ v₀ ∈ s, ∀ v ∈ s, ∃ r, r • v₀ = 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
⊢ (∃ v₀ ∈ s, ∀ v ∈ s, ∃ r, r • v₀ = v) → ∃ v₀, ∀ (v : ↥s), ∃ r, r • v₀ = v

tactic: rintro ⟨⟨v₀, hv₀⟩, 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
⊢ (∃ v₀, ∀ (v : ↥s), ∃ r, r • v₀ = v) → ∃ v₀ ∈ s, ∀ v ∈ s, ∃ r, r • v₀ = v
state_after: case mp.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
v₀ : V
hv₀ : v₀ ∈ s
h : ∀ (v : ↥s), ∃ r, r • ⟨v₀, hv₀⟩ = v
⊢ ∃ v₀ ∈ s, ∀ v ∈ s, ∃ r, r • v₀ = v

tactic: use v₀, hv₀
state_before: case mp.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
v₀ : V
hv₀ : v₀ ∈ s
h : ∀ (v : ↥s), ∃ r, r • ⟨v₀, hv₀⟩ = v
⊢ ∃ v₀ ∈ s, ∀ v ∈ s, ∃ r, r • v₀ = v
state_after: case right
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
v₀ : V
hv₀ : v₀ ∈ s
h : ∀ (v : ↥s), ∃ r, r • ⟨v₀, hv₀⟩ = v
⊢ ∀ v ∈ s, ∃ r, r • v₀ = v

tactic: intro v hv
state_before: case right
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
v₀ : V
hv₀ : v₀ ∈ s
h : ∀ (v : ↥s), ∃ r, r • ⟨v₀, hv₀⟩ = v
⊢ ∀ v ∈ s, ∃ r, r • v₀ = v
state_after: case right
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
v₀ : V
hv₀ : v₀ ∈ s
h : ∀ (v : ↥s), ∃ r, r • ⟨v₀, hv₀⟩ = v
v : V
hv : v ∈ s
⊢ ∃ r, r • v₀ = v

tactic: obtain ⟨r, hr⟩ := h ⟨v, hv⟩
state_before: case right
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
v₀ : V
hv₀ : v₀ ∈ s
h : ∀ (v : ↥s), ∃ r, r • ⟨v₀, hv₀⟩ = v
v : V
hv : v ∈ s
⊢ ∃ r, r • v₀ = v
state_after: case right.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
v₀ : V
hv₀ : v₀ ∈ s
h : ∀ (v : ↥s), ∃ r, r • ⟨v₀, hv₀⟩ = v
v : V
hv : v ∈ s
r : K
hr : r • ⟨v₀, hv₀⟩ = ⟨v, hv⟩
⊢ ∃ r, r • v₀ = v

tactic: use r
state_before: case right.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
v₀ : V
hv₀ : v₀ ∈ s
h : ∀ (v : ↥s), ∃ r, r • ⟨v₀, hv₀⟩ = v
v : V
hv : v ∈ s
r : K
hr : r • ⟨v₀, hv₀⟩ = ⟨v, hv⟩
⊢ ∃ r, r • v₀ = v
state_after: case h
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
v₀ : V
hv₀ : v₀ ∈ s
h : ∀ (v : ↥s), ∃ r, r • ⟨v₀, hv₀⟩ = v
v : V
hv : v ∈ s
r : K
hr : r • ⟨v₀, hv₀⟩ = ⟨v, hv⟩
⊢ r • v₀ = v

tactic: rwa [Subtype.ext_iff, coe_smul] at hr
state_before: case h
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
v₀ : V
hv₀ : v₀ ∈ s
h : ∀ (v : ↥s), ∃ r, r • ⟨v₀, hv₀⟩ = v
v : V
hv : v ∈ s
r : K
hr : r • ⟨v₀, hv₀⟩ = ⟨v, hv⟩
⊢ r • v₀ = v
state_after: no goals

tactic: rintro ⟨v₀, hv₀, 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
⊢ (∃ v₀ ∈ s, ∀ v ∈ s, ∃ r, r • v₀ = v) → ∃ v₀, ∀ (v : ↥s), ∃ r, r • v₀ = v
state_after: case mpr.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
v₀ : V
hv₀ : v₀ ∈ s
h : ∀ v ∈ s, ∃ r, r • v₀ = v
⊢ ∃ v₀, ∀ (v : ↥s), ∃ r, r • v₀ = v

tactic: use ⟨v₀, hv₀⟩
state_before: case mpr.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
v₀ : V
hv₀ : v₀ ∈ s
h : ∀ v ∈ s, ∃ r, r • v₀ = v
⊢ ∃ v₀, ∀ (v : ↥s), ∃ r, r • v₀ = v
state_after: case h
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
v₀ : V
hv₀ : v₀ ∈ s
h : ∀ v ∈ s, ∃ r, r • v₀ = v
⊢ ∀ (v : ↥s), ∃ r, r • ⟨v₀, hv₀⟩ = v

tactic: rintro ⟨v, hv⟩
state_before: case h
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
v₀ : V
hv₀ : v₀ ∈ s
h : ∀ v ∈ s, ∃ r, r • v₀ = v
⊢ ∀ (v : ↥s), ∃ r, r • ⟨v₀, hv₀⟩ = v
state_after: case h.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
v₀ : V
hv₀ : v₀ ∈ s
h : ∀ v ∈ s, ∃ r, r • v₀ = v
v : V
hv : v ∈ s
⊢ ∃ r, r • ⟨v₀, hv₀⟩ = ⟨v, hv⟩

tactic: obtain ⟨r, hr⟩ := h v hv
state_before: case h.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
v₀ : V
hv₀ : v₀ ∈ s
h : ∀ v ∈ s, ∃ r, r • v₀ = v
v : V
hv : v ∈ s
⊢ ∃ r, r • ⟨v₀, hv₀⟩ = ⟨v, hv⟩
state_after: case h.mk.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
v₀ : V
hv₀ : v₀ ∈ s
h : ∀ v ∈ s, ∃ r, r • v₀ = v
v : V
hv : v ∈ s
r : K
hr : r • v₀ = v
⊢ ∃ r, r • ⟨v₀, hv₀⟩ = ⟨v, hv⟩

tactic: use r
state_before: case h.mk.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
v₀ : V
hv₀ : v₀ ∈ s
h : ∀ v ∈ s, ∃ r, r • v₀ = v
v : V
hv : v ∈ s
r : K
hr : r • v₀ = v
⊢ ∃ r, r • ⟨v₀, hv₀⟩ = ⟨v, hv⟩
state_after: case h
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
v₀ : V
hv₀ : v₀ ∈ s
h : ∀ v ∈ s, ∃ r, r • v₀ = v
v : V
hv : v ∈ s
r : K
hr : r • v₀ = v
⊢ r • ⟨v₀, hv₀⟩ = ⟨v, hv⟩

tactic: rwa [Subtype.ext_iff, coe_smul]
state_before: case h
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
v₀ : V
hv₀ : v₀ ∈ s
h : ∀ v ∈ s, ∃ r, r • v₀ = v
v : V
hv : v ∈ s
r : K
hr : r • v₀ = v
⊢ r • ⟨v₀, hv₀⟩ = ⟨v, hv⟩
state_after: no goals