Theorem: LinearIndependent.independent_span_singleton
File: Mathlib/LinearAlgebra/LinearIndependent.lean

tactic: refine' CompleteLattice.independent_def.mp fun i => _
state_before: ι : Type u'
ι' : Type ?u.484575
R : Type u_1
K : Type ?u.484581
M : Type u_2
M' : Type ?u.484587
M'' : Type ?u.484590
V : Type u
V' : Type ?u.484595
v : ι → M
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup M
inst✝⁴ : AddCommGroup M'
inst✝³ : AddCommGroup M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
hv✝ hv : LinearIndependent R v
⊢ CompleteLattice.Independent fun i => span R {v i}

tactic: rw [disjoint_iff_inf_le]
state_before: ι : Type u'
ι' : Type ?u.484575
R : Type u_1
K : Type ?u.484581
M : Type u_2
M' : Type ?u.484587
M'' : Type ?u.484590
V : Type u
V' : Type ?u.484595
v : ι → M
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup M
inst✝⁴ : AddCommGroup M'
inst✝³ : AddCommGroup M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
hv✝ hv : LinearIndependent R v
i : ι
⊢ Disjoint ((fun i => span R {v i}) i) (⨆ (j : ι) (_ : j ≠ i), (fun i => span R {v i}) j)

tactic: intro m hm
state_before: ι : Type u'
ι' : Type ?u.484575
R : Type u_1
K : Type ?u.484581
M : Type u_2
M' : Type ?u.484587
M'' : Type ?u.484590
V : Type u
V' : Type ?u.484595
v : ι → M
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup M
inst✝⁴ : AddCommGroup M'
inst✝³ : AddCommGroup M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
hv✝ hv : LinearIndependent R v
i : ι
⊢ ((fun i => span R {v i}) i ⊓ ⨆ (j : ι) (_ : j ≠ i), (fun i => span R {v i}) j) ≤ ⊥

tactic: simp only [mem_inf, mem_span_singleton, iSup_subtype', ← span_range_eq_iSup] at hm
state_before: ι : Type u'
ι' : Type ?u.484575
R : Type u_1
K : Type ?u.484581
M : Type u_2
M' : Type ?u.484587
M'' : Type ?u.484590
V : Type u
V' : Type ?u.484595
v : ι → M
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup M
inst✝⁴ : AddCommGroup M'
inst✝³ : AddCommGroup M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
hv✝ hv : LinearIndependent R v
i : ι
m : M
hm : m ∈ (fun i => span R {v i}) i ⊓ ⨆ (j : ι) (_ : j ≠ i), (fun i => span R {v i}) j
⊢ m ∈ ⊥

tactic: obtain ⟨⟨r, rfl⟩, hm⟩ := hm
state_before: ι : Type u'
ι' : Type ?u.484575
R : Type u_1
K : Type ?u.484581
M : Type u_2
M' : Type ?u.484587
M'' : Type ?u.484590
V : Type u
V' : Type ?u.484595
v : ι → M
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup M
inst✝⁴ : AddCommGroup M'
inst✝³ : AddCommGroup M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
hv✝ hv : LinearIndependent R v
i : ι
m : M
hm : (∃ a, a • v i = m) ∧ m ∈ span R (range fun i_1 => v ↑i_1)
⊢ m ∈ ⊥

tactic: suffices r = 0 by simp [this]
state_before: case intro.intro
ι : Type u'
ι' : Type ?u.484575
R : Type u_1
K : Type ?u.484581
M : Type u_2
M' : Type ?u.484587
M'' : Type ?u.484590
V : Type u
V' : Type ?u.484595
v : ι → M
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup M
inst✝⁴ : AddCommGroup M'
inst✝³ : AddCommGroup M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
hv✝ hv : LinearIndependent R v
i : ι
r : R
hm : r • v i ∈ span R (range fun i_1 => v ↑i_1)
⊢ r • v i ∈ ⊥

tactic: apply linearIndependent_iff_not_smul_mem_span.mp hv i
state_before: case intro.intro
ι : Type u'
ι' : Type ?u.484575
R : Type u_1
K : Type ?u.484581
M : Type u_2
M' : Type ?u.484587
M'' : Type ?u.484590
V : Type u
V' : Type ?u.484595
v : ι → M
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup M
inst✝⁴ : AddCommGroup M'
inst✝³ : AddCommGroup M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
hv✝ hv : LinearIndependent R v
i : ι
r : R
hm : r • v i ∈ span R (range fun i_1 => v ↑i_1)
⊢ r = 0

tactic: suffices v '' (univ \ {i}) = range fun j : { j // j ≠ i } => v j by rwa [this]
state_before: case intro.intro.a
ι : Type u'
ι' : Type ?u.484575
R : Type u_1
K : Type ?u.484581
M : Type u_2
M' : Type ?u.484587
M'' : Type ?u.484590
V : Type u
V' : Type ?u.484595
v : ι → M
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup M
inst✝⁴ : AddCommGroup M'
inst✝³ : AddCommGroup M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
hv✝ hv : LinearIndependent R v
i : ι
r : R
hm : r • v i ∈ span R (range fun i_1 => v ↑i_1)
⊢ r • v i ∈ span R (v '' (univ \ {i}))

tactic: ext
state_before: case intro.intro.a
ι : Type u'
ι' : Type ?u.484575
R : Type u_1
K : Type ?u.484581
M : Type u_2
M' : Type ?u.484587
M'' : Type ?u.484590
V : Type u
V' : Type ?u.484595
v : ι → M
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup M
inst✝⁴ : AddCommGroup M'
inst✝³ : AddCommGroup M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
hv✝ hv : LinearIndependent R v
i : ι
r : R
hm : r • v i ∈ span R (range fun i_1 => v ↑i_1)
⊢ v '' (univ \ {i}) = range fun j => v ↑j

tactic: simp
state_before: case intro.intro.a.h
ι : Type u'
ι' : Type ?u.484575
R : Type u_1
K : Type ?u.484581
M : Type u_2
M' : Type ?u.484587
M'' : Type ?u.484590
V : Type u
V' : Type ?u.484595
v : ι → M
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup M
inst✝⁴ : AddCommGroup M'
inst✝³ : AddCommGroup M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
hv✝ hv : LinearIndependent R v
i : ι
r : R
hm : r • v i ∈ span R (range fun i_1 => v ↑i_1)
x✝ : M
⊢ x✝ ∈ v '' (univ \ {i}) ↔ x✝ ∈ range fun j => v ↑j

tactic: simp [this]
state_before: ι : Type u'
ι' : Type ?u.484575
R : Type u_1
K : Type ?u.484581
M : Type u_2
M' : Type ?u.484587
M'' : Type ?u.484590
V : Type u
V' : Type ?u.484595
v : ι → M
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup M
inst✝⁴ : AddCommGroup M'
inst✝³ : AddCommGroup M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
hv✝ hv : LinearIndependent R v
i : ι
r : R
hm : r • v i ∈ span R (range fun i_1 => v ↑i_1)
this : r = 0
⊢ r • v i ∈ ⊥

tactic: rwa [this]
state_before: ι : Type u'
ι' : Type ?u.484575
R : Type u_1
K : Type ?u.484581
M : Type u_2
M' : Type ?u.484587
M'' : Type ?u.484590
V : Type u
V' : Type ?u.484595
v : ι → M
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup M
inst✝⁴ : AddCommGroup M'
inst✝³ : AddCommGroup M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
hv✝ hv : LinearIndependent R v
i : ι
r : R
hm : r • v i ∈ span R (range fun i_1 => v ↑i_1)
this : v '' (univ \ {i}) = range fun j => v ↑j
⊢ r • v i ∈ span R (v '' (univ \ {i}))