Theorem: Projectivization.independent_iff_completeLattice_independent
File: Mathlib/LinearAlgebra/Projectivization/Independence.lean

tactic: refine ⟨?_, fun h => ?_⟩
state_before: ι : Type u_1
K : Type u_2
V : Type u_3
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : ι → ℙ K V
⊢ Independent f ↔ CompleteLattice.Independent fun i => (f i).submodule
state_after: case refine_1
ι : Type u_1
K : Type u_2
V : Type u_3
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : ι → ℙ K V
⊢ Independent f → CompleteLattice.Independent fun i => (f i).submodule

case refine_2
ι : Type u_1
K : Type u_2
V : Type u_3
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : ι → ℙ K V
h : CompleteLattice.Independent fun i => (f i).submodule
⊢ Independent f

tactic: rintro ⟨f, hf, hi⟩
state_before: case refine_1
ι : Type u_1
K : Type u_2
V : Type u_3
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : ι → ℙ K V
⊢ Independent f → CompleteLattice.Independent fun i => (f i).submodule
state_after: case refine_1.mk
ι : Type u_1
K : Type u_2
V : Type u_3
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : ι → V
hf : ∀ (i : ι), f i ≠ 0
hi : LinearIndependent K f
⊢ CompleteLattice.Independent fun i => ((fun i => mk K (f i) ⋯) i).submodule

tactic: simp only [submodule_mk]
state_before: case refine_1.mk
ι : Type u_1
K : Type u_2
V : Type u_3
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : ι → V
hf : ∀ (i : ι), f i ≠ 0
hi : LinearIndependent K f
⊢ CompleteLattice.Independent fun i => ((fun i => mk K (f i) ⋯) i).submodule
state_after: case refine_1.mk
ι : Type u_1
K : Type u_2
V : Type u_3
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : ι → V
hf : ∀ (i : ι), f i ≠ 0
hi : LinearIndependent K f
⊢ CompleteLattice.Independent fun i => Submodule.span K {f i}

tactic: exact (CompleteLattice.independent_iff_linearIndependent_of_ne_zero (R := K) hf).mpr hi
state_before: case refine_1.mk
ι : Type u_1
K : Type u_2
V : Type u_3
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : ι → V
hf : ∀ (i : ι), f i ≠ 0
hi : LinearIndependent K f
⊢ CompleteLattice.Independent fun i => Submodule.span K {f i}
state_after: no goals

tactic: rw [independent_iff]
state_before: case refine_2
ι : Type u_1
K : Type u_2
V : Type u_3
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : ι → ℙ K V
h : CompleteLattice.Independent fun i => (f i).submodule
⊢ Independent f
state_after: case refine_2
ι : Type u_1
K : Type u_2
V : Type u_3
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : ι → ℙ K V
h : CompleteLattice.Independent fun i => (f i).submodule
⊢ LinearIndependent K (Projectivization.rep ∘ f)

tactic: refine h.linearIndependent (Projectivization.submodule ∘ f) (fun i => ?_) fun i => ?_
state_before: case refine_2
ι : Type u_1
K : Type u_2
V : Type u_3
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : ι → ℙ K V
h : CompleteLattice.Independent fun i => (f i).submodule
⊢ LinearIndependent K (Projectivization.rep ∘ f)
state_after: case refine_2.refine_1
ι : Type u_1
K : Type u_2
V : Type u_3
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : ι → ℙ K V
h : CompleteLattice.Independent fun i => (f i).submodule
i : ι
⊢ (Projectivization.rep ∘ f) i ∈ (Projectivization.submodule ∘ f) i

case refine_2.refine_2
ι : Type u_1
K : Type u_2
V : Type u_3
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : ι → ℙ K V
h : CompleteLattice.Independent fun i => (f i).submodule
i : ι
⊢ (Projectivization.rep ∘ f) i ≠ 0

tactic: simpa only [Function.comp_apply, submodule_eq] using Submodule.mem_span_singleton_self _
state_before: case refine_2.refine_1
ι : Type u_1
K : Type u_2
V : Type u_3
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : ι → ℙ K V
h : CompleteLattice.Independent fun i => (f i).submodule
i : ι
⊢ (Projectivization.rep ∘ f) i ∈ (Projectivization.submodule ∘ f) i
state_after: no goals

tactic: exact rep_nonzero (f i)
state_before: case refine_2.refine_2
ι : Type u_1
K : Type u_2
V : Type u_3
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : ι → ℙ K V
h : CompleteLattice.Independent fun i => (f i).submodule
i : ι
⊢ (Projectivization.rep ∘ f) i ≠ 0
state_after: no goals