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

tactic: rw [range_comp v, range_comp v]
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type ?u.352990
M : Type u_3
M' : Type ?u.352996
M'' : Type ?u.352999
V : Type u
V' : Type ?u.353004
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
v : ι ⊕ ι' → M
⊢ LinearIndependent R v ↔
    LinearIndependent R (v ∘ Sum.inl) ∧
      LinearIndependent R (v ∘ Sum.inr) ∧ Disjoint (span R (range (v ∘ Sum.inl))) (span R (range (v ∘ Sum.inr)))

tactic: refine' ⟨_, _⟩
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type ?u.352990
M : Type u_3
M' : Type ?u.352996
M'' : Type ?u.352999
V : Type u
V' : Type ?u.353004
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
v : ι ⊕ ι' → M
⊢ LinearIndependent R v ↔
    LinearIndependent R (v ∘ Sum.inl) ∧
      LinearIndependent R (v ∘ Sum.inr) ∧ Disjoint (span R (v '' range Sum.inl)) (span R (v '' range Sum.inr))

tactic: rintro ⟨hl, hr, hlr⟩
state_before: case refine'_2
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type ?u.352990
M : Type u_3
M' : Type ?u.352996
M'' : Type ?u.352999
V : Type u
V' : Type ?u.353004
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
v : ι ⊕ ι' → M
⊢ LinearIndependent R (v ∘ Sum.inl) ∧
      LinearIndependent R (v ∘ Sum.inr) ∧ Disjoint (span R (v '' range Sum.inl)) (span R (v '' range Sum.inr)) →
    LinearIndependent R v

tactic: rw [linearIndependent_iff'] at *
state_before: case refine'_2.intro.intro
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type ?u.352990
M : Type u_3
M' : Type ?u.352996
M'' : Type ?u.352999
V : Type u
V' : Type ?u.353004
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
v : ι ⊕ ι' → M
hl : LinearIndependent R (v ∘ Sum.inl)
hr : LinearIndependent R (v ∘ Sum.inr)
hlr : Disjoint (span R (v '' range Sum.inl)) (span R (v '' range Sum.inr))
⊢ LinearIndependent R v

tactic: intro s g hg i hi
state_before: case refine'_2.intro.intro
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type ?u.352990
M : Type u_3
M' : Type ?u.352996
M'' : Type ?u.352999
V : Type u
V' : Type ?u.353004
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
v : ι ⊕ ι' → M
hl : ∀ (s : Finset ι) (g : ι → R), ∑ i in s, g i • (v ∘ Sum.inl) i = 0 → ∀ (i : ι), i ∈ s → g i = 0
hr : ∀ (s : Finset ι') (g : ι' → R), ∑ i in s, g i • (v ∘ Sum.inr) i = 0 → ∀ (i : ι'), i ∈ s → g i = 0
hlr : Disjoint (span R (v '' range Sum.inl)) (span R (v '' range Sum.inr))
⊢ ∀ (s : Finset (ι ⊕ ι')) (g : ι ⊕ ι' → R), ∑ i in s, g i • v i = 0 → ∀ (i : ι ⊕ ι'), i ∈ s → g i = 0

tactic: intro h
state_before: case refine'_1
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type ?u.352990
M : Type u_3
M' : Type ?u.352996
M'' : Type ?u.352999
V : Type u
V' : Type ?u.353004
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
v : ι ⊕ ι' → M
⊢ LinearIndependent R v →
    LinearIndependent R (v ∘ Sum.inl) ∧
      LinearIndependent R (v ∘ Sum.inr) ∧ Disjoint (span R (v '' range Sum.inl)) (span R (v '' range Sum.inr))

tactic: refine' ⟨h.comp _ Sum.inl_injective, h.comp _ Sum.inr_injective, _⟩
state_before: case refine'_1
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type ?u.352990
M : Type u_3
M' : Type ?u.352996
M'' : Type ?u.352999
V : Type u
V' : Type ?u.353004
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
v : ι ⊕ ι' → M
h : LinearIndependent R v
⊢ LinearIndependent R (v ∘ Sum.inl) ∧
    LinearIndependent R (v ∘ Sum.inr) ∧ Disjoint (span R (v '' range Sum.inl)) (span R (v '' range Sum.inr))

tactic: refine' h.disjoint_span_image _
state_before: case refine'_1
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type ?u.352990
M : Type u_3
M' : Type ?u.352996
M'' : Type ?u.352999
V : Type u
V' : Type ?u.353004
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
v : ι ⊕ ι' → M
h : LinearIndependent R v
⊢ Disjoint (span R (v '' range Sum.inl)) (span R (v '' range Sum.inr))

tactic: exact IsCompl.disjoint isCompl_range_inl_range_inr
state_before: case refine'_1
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type ?u.352990
M : Type u_3
M' : Type ?u.352996
M'' : Type ?u.352999
V : Type u
V' : Type ?u.353004
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
v : ι ⊕ ι' → M
h : LinearIndependent R v
⊢ Disjoint (range Sum.inl) (range Sum.inr)

tactic: rw [Finset.sum_preimage' (g := fun x => g x • v x),
  Finset.sum_preimage' (g := fun x => g x • v x), ← Finset.sum_union, ← Finset.filter_or]
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type ?u.352990
M : Type u_3
M' : Type ?u.352996
M'' : Type ?u.352999
V : Type u
V' : Type ?u.353004
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
v : ι ⊕ ι' → M
hl : ∀ (s : Finset ι) (g : ι → R), ∑ i in s, g i • (v ∘ Sum.inl) i = 0 → ∀ (i : ι), i ∈ s → g i = 0
hr : ∀ (s : Finset ι') (g : ι' → R), ∑ i in s, g i • (v ∘ Sum.inr) i = 0 → ∀ (i : ι'), i ∈ s → g i = 0
hlr : Disjoint (span R (v '' range Sum.inl)) (span R (v '' range Sum.inr))
s : Finset (ι ⊕ ι')
g : ι ⊕ ι' → R
hg : ∑ i in s, g i • v i = 0
i : ι ⊕ ι'
hi : i ∈ s
⊢ ∑ i in Finset.preimage s Sum.inl (_ : InjOn Sum.inl (Sum.inl ⁻¹' ↑s)), (fun x => g x • v x) (Sum.inl i) +
      ∑ i in Finset.preimage s Sum.inr (_ : InjOn Sum.inr (Sum.inr ⁻¹' ↑s)), (fun x => g x • v x) (Sum.inr i) =
    0

tactic: simpa only [← mem_union, range_inl_union_range_inr, mem_univ, Finset.filter_True]
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type ?u.352990
M : Type u_3
M' : Type ?u.352996
M'' : Type ?u.352999
V : Type u
V' : Type ?u.353004
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
v : ι ⊕ ι' → M
hl : ∀ (s : Finset ι) (g : ι → R), ∑ i in s, g i • (v ∘ Sum.inl) i = 0 → ∀ (i : ι), i ∈ s → g i = 0
hr : ∀ (s : Finset ι') (g : ι' → R), ∑ i in s, g i • (v ∘ Sum.inr) i = 0 → ∀ (i : ι'), i ∈ s → g i = 0
hlr : Disjoint (span R (v '' range Sum.inl)) (span R (v '' range Sum.inr))
s : Finset (ι ⊕ ι')
g : ι ⊕ ι' → R
hg : ∑ i in s, g i • v i = 0
i : ι ⊕ ι'
hi : i ∈ s
⊢ ∑ x in Finset.filter (fun a => a ∈ range Sum.inl ∨ a ∈ range Sum.inr) s, g x • v x = 0

tactic: refine Finset.disjoint_filter.2 fun x _ hx =>
  disjoint_left.1 ?_ hx
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type ?u.352990
M : Type u_3
M' : Type ?u.352996
M'' : Type ?u.352999
V : Type u
V' : Type ?u.353004
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
v : ι ⊕ ι' → M
hl : ∀ (s : Finset ι) (g : ι → R), ∑ i in s, g i • (v ∘ Sum.inl) i = 0 → ∀ (i : ι), i ∈ s → g i = 0
hr : ∀ (s : Finset ι') (g : ι' → R), ∑ i in s, g i • (v ∘ Sum.inr) i = 0 → ∀ (i : ι'), i ∈ s → g i = 0
hlr : Disjoint (span R (v '' range Sum.inl)) (span R (v '' range Sum.inr))
s : Finset (ι ⊕ ι')
g : ι ⊕ ι' → R
hg : ∑ i in s, g i • v i = 0
i : ι ⊕ ι'
hi : i ∈ s
⊢ Disjoint (Finset.filter (fun x => x ∈ range Sum.inl) s) (Finset.filter (fun x => x ∈ range Sum.inr) s)

tactic: exact IsCompl.disjoint isCompl_range_inl_range_inr
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type ?u.352990
M : Type u_3
M' : Type ?u.352996
M'' : Type ?u.352999
V : Type u
V' : Type ?u.353004
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
v : ι ⊕ ι' → M
hl : ∀ (s : Finset ι) (g : ι → R), ∑ i in s, g i • (v ∘ Sum.inl) i = 0 → ∀ (i : ι), i ∈ s → g i = 0
hr : ∀ (s : Finset ι') (g : ι' → R), ∑ i in s, g i • (v ∘ Sum.inr) i = 0 → ∀ (i : ι'), i ∈ s → g i = 0
hlr : Disjoint (span R (v '' range Sum.inl)) (span R (v '' range Sum.inr))
s : Finset (ι ⊕ ι')
g : ι ⊕ ι' → R
hg : ∑ i in s, g i • v i = 0
i : ι ⊕ ι'
hi : i ∈ s
x : ι ⊕ ι'
x✝ : x ∈ s
hx : x ∈ range Sum.inl
⊢ Disjoint (range Sum.inl) (range Sum.inr)

tactic: rw [← eq_neg_iff_add_eq_zero] at this
state_before: case refine'_2.intro.intro
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type ?u.352990
M : Type u_3
M' : Type ?u.352996
M'' : Type ?u.352999
V : Type u
V' : Type ?u.353004
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
v : ι ⊕ ι' → M
hl : ∀ (s : Finset ι) (g : ι → R), ∑ i in s, g i • (v ∘ Sum.inl) i = 0 → ∀ (i : ι), i ∈ s → g i = 0
hr : ∀ (s : Finset ι') (g : ι' → R), ∑ i in s, g i • (v ∘ Sum.inr) i = 0 → ∀ (i : ι'), i ∈ s → g i = 0
hlr : Disjoint (span R (v '' range Sum.inl)) (span R (v '' range Sum.inr))
s : Finset (ι ⊕ ι')
g : ι ⊕ ι' → R
hg : ∑ i in s, g i • v i = 0
i : ι ⊕ ι'
hi : i ∈ s
this :
  ∑ i in Finset.preimage s Sum.inl (_ : InjOn Sum.inl (Sum.inl ⁻¹' ↑s)), (fun x => g x • v x) (Sum.inl i) +
      ∑ i in Finset.preimage s Sum.inr (_ : InjOn Sum.inr (Sum.inr ⁻¹' ↑s)), (fun x => g x • v x) (Sum.inr i) =
    0
⊢ g i = 0

tactic: rw [disjoint_def'] at hlr
state_before: case refine'_2.intro.intro
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type ?u.352990
M : Type u_3
M' : Type ?u.352996
M'' : Type ?u.352999
V : Type u
V' : Type ?u.353004
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
v : ι ⊕ ι' → M
hl : ∀ (s : Finset ι) (g : ι → R), ∑ i in s, g i • (v ∘ Sum.inl) i = 0 → ∀ (i : ι), i ∈ s → g i = 0
hr : ∀ (s : Finset ι') (g : ι' → R), ∑ i in s, g i • (v ∘ Sum.inr) i = 0 → ∀ (i : ι'), i ∈ s → g i = 0
hlr : Disjoint (span R (v '' range Sum.inl)) (span R (v '' range Sum.inr))
s : Finset (ι ⊕ ι')
g : ι ⊕ ι' → R
hg : ∑ i in s, g i • v i = 0
i : ι ⊕ ι'
hi : i ∈ s
this :
  ∑ i in Finset.preimage s Sum.inl (_ : InjOn Sum.inl (Sum.inl ⁻¹' ↑s)), (fun x => g x • v x) (Sum.inl i) =
    -∑ i in Finset.preimage s Sum.inr (_ : InjOn Sum.inr (Sum.inr ⁻¹' ↑s)), (fun x => g x • v x) (Sum.inr i)
⊢ g i = 0

tactic: cases' i with i i
state_before: case refine'_2.intro.intro
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type ?u.352990
M : Type u_3
M' : Type ?u.352996
M'' : Type ?u.352999
V : Type u
V' : Type ?u.353004
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
v : ι ⊕ ι' → M
hl : ∀ (s : Finset ι) (g : ι → R), ∑ i in s, g i • (v ∘ Sum.inl) i = 0 → ∀ (i : ι), i ∈ s → g i = 0
hr : ∀ (s : Finset ι') (g : ι' → R), ∑ i in s, g i • (v ∘ Sum.inr) i = 0 → ∀ (i : ι'), i ∈ s → g i = 0
hlr : ∀ (x : M), x ∈ span R (v '' range Sum.inl) → ∀ (y : M), y ∈ span R (v '' range Sum.inr) → x = y → x = 0
s : Finset (ι ⊕ ι')
g : ι ⊕ ι' → R
hg : ∑ i in s, g i • v i = 0
i : ι ⊕ ι'
hi : i ∈ s
this :
  ∑ i in Finset.preimage s Sum.inl (_ : InjOn Sum.inl (Sum.inl ⁻¹' ↑s)), (fun x => g x • v x) (Sum.inl i) =
    -∑ i in Finset.preimage s Sum.inr (_ : InjOn Sum.inr (Sum.inr ⁻¹' ↑s)), (fun x => g x • v x) (Sum.inr i)
A : ∑ c in Finset.preimage s Sum.inl (_ : InjOn Sum.inl (Sum.inl ⁻¹' ↑s)), (fun x => g x • v x) (Sum.inl c) = 0
⊢ g i = 0

tactic: refine hlr _ (sum_mem fun i _ => ?_) _ (neg_mem <| sum_mem fun i _ => ?_) this
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type ?u.352990
M : Type u_3
M' : Type ?u.352996
M'' : Type ?u.352999
V : Type u
V' : Type ?u.353004
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
v : ι ⊕ ι' → M
hl : ∀ (s : Finset ι) (g : ι → R), ∑ i in s, g i • (v ∘ Sum.inl) i = 0 → ∀ (i : ι), i ∈ s → g i = 0
hr : ∀ (s : Finset ι') (g : ι' → R), ∑ i in s, g i • (v ∘ Sum.inr) i = 0 → ∀ (i : ι'), i ∈ s → g i = 0
hlr : ∀ (x : M), x ∈ span R (v '' range Sum.inl) → ∀ (y : M), y ∈ span R (v '' range Sum.inr) → x = y → x = 0
s : Finset (ι ⊕ ι')
g : ι ⊕ ι' → R
hg : ∑ i in s, g i • v i = 0
i : ι ⊕ ι'
hi : i ∈ s
this :
  ∑ i in Finset.preimage s Sum.inl (_ : InjOn Sum.inl (Sum.inl ⁻¹' ↑s)), (fun x => g x • v x) (Sum.inl i) =
    -∑ i in Finset.preimage s Sum.inr (_ : InjOn Sum.inr (Sum.inr ⁻¹' ↑s)), (fun x => g x • v x) (Sum.inr i)
⊢ ?m.371363

tactic: exact smul_mem _ _ (subset_span ⟨Sum.inl i, mem_range_self _, rfl⟩)
state_before: case refine_1
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type ?u.352990
M : Type u_3
M' : Type ?u.352996
M'' : Type ?u.352999
V : Type u
V' : Type ?u.353004
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
v : ι ⊕ ι' → M
hl : ∀ (s : Finset ι) (g : ι → R), ∑ i in s, g i • (v ∘ Sum.inl) i = 0 → ∀ (i : ι), i ∈ s → g i = 0
hr : ∀ (s : Finset ι') (g : ι' → R), ∑ i in s, g i • (v ∘ Sum.inr) i = 0 → ∀ (i : ι'), i ∈ s → g i = 0
hlr : ∀ (x : M), x ∈ span R (v '' range Sum.inl) → ∀ (y : M), y ∈ span R (v '' range Sum.inr) → x = y → x = 0
s : Finset (ι ⊕ ι')
g : ι ⊕ ι' → R
hg : ∑ i in s, g i • v i = 0
i✝ : ι ⊕ ι'
hi : i✝ ∈ s
this :
  ∑ i in Finset.preimage s Sum.inl (_ : InjOn Sum.inl (Sum.inl ⁻¹' ↑s)), (fun x => g x • v x) (Sum.inl i) =
    -∑ i in Finset.preimage s Sum.inr (_ : InjOn Sum.inr (Sum.inr ⁻¹' ↑s)), (fun x => g x • v x) (Sum.inr i)
i : ι
x✝ : i ∈ Finset.preimage s Sum.inl (_ : InjOn Sum.inl (Sum.inl ⁻¹' ↑s))
⊢ (fun x => g x • v x) (Sum.inl i) ∈ span R (v '' range Sum.inl)

tactic: exact smul_mem _ _ (subset_span ⟨Sum.inr i, mem_range_self _, rfl⟩)
state_before: case refine_2
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type ?u.352990
M : Type u_3
M' : Type ?u.352996
M'' : Type ?u.352999
V : Type u
V' : Type ?u.353004
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
v : ι ⊕ ι' → M
hl : ∀ (s : Finset ι) (g : ι → R), ∑ i in s, g i • (v ∘ Sum.inl) i = 0 → ∀ (i : ι), i ∈ s → g i = 0
hr : ∀ (s : Finset ι') (g : ι' → R), ∑ i in s, g i • (v ∘ Sum.inr) i = 0 → ∀ (i : ι'), i ∈ s → g i = 0
hlr : ∀ (x : M), x ∈ span R (v '' range Sum.inl) → ∀ (y : M), y ∈ span R (v '' range Sum.inr) → x = y → x = 0
s : Finset (ι ⊕ ι')
g : ι ⊕ ι' → R
hg : ∑ i in s, g i • v i = 0
i✝ : ι ⊕ ι'
hi : i✝ ∈ s
this :
  ∑ i in Finset.preimage s Sum.inl (_ : InjOn Sum.inl (Sum.inl ⁻¹' ↑s)), (fun x => g x • v x) (Sum.inl i) =
    -∑ i in Finset.preimage s Sum.inr (_ : InjOn Sum.inr (Sum.inr ⁻¹' ↑s)), (fun x => g x • v x) (Sum.inr i)
i : ι'
x✝ : i ∈ Finset.preimage s Sum.inr (_ : InjOn Sum.inr (Sum.inr ⁻¹' ↑s))
⊢ (fun x => g x • v x) (Sum.inr i) ∈ span R (v '' range Sum.inr)

tactic: exact hl _ _ A i (Finset.mem_preimage.2 hi)
state_before: case refine'_2.intro.intro.inl
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type ?u.352990
M : Type u_3
M' : Type ?u.352996
M'' : Type ?u.352999
V : Type u
V' : Type ?u.353004
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
v : ι ⊕ ι' → M
hl : ∀ (s : Finset ι) (g : ι → R), ∑ i in s, g i • (v ∘ Sum.inl) i = 0 → ∀ (i : ι), i ∈ s → g i = 0
hr : ∀ (s : Finset ι') (g : ι' → R), ∑ i in s, g i • (v ∘ Sum.inr) i = 0 → ∀ (i : ι'), i ∈ s → g i = 0
hlr : ∀ (x : M), x ∈ span R (v '' range Sum.inl) → ∀ (y : M), y ∈ span R (v '' range Sum.inr) → x = y → x = 0
s : Finset (ι ⊕ ι')
g : ι ⊕ ι' → R
hg : ∑ i in s, g i • v i = 0
this :
  ∑ i in Finset.preimage s Sum.inl (_ : InjOn Sum.inl (Sum.inl ⁻¹' ↑s)), (fun x => g x • v x) (Sum.inl i) =
    -∑ i in Finset.preimage s Sum.inr (_ : InjOn Sum.inr (Sum.inr ⁻¹' ↑s)), (fun x => g x • v x) (Sum.inr i)
A : ∑ c in Finset.preimage s Sum.inl (_ : InjOn Sum.inl (Sum.inl ⁻¹' ↑s)), (fun x => g x • v x) (Sum.inl c) = 0
i : ι
hi : Sum.inl i ∈ s
⊢ g (Sum.inl i) = 0

tactic: rw [this, neg_eq_zero] at A
state_before: case refine'_2.intro.intro.inr
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type ?u.352990
M : Type u_3
M' : Type ?u.352996
M'' : Type ?u.352999
V : Type u
V' : Type ?u.353004
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
v : ι ⊕ ι' → M
hl : ∀ (s : Finset ι) (g : ι → R), ∑ i in s, g i • (v ∘ Sum.inl) i = 0 → ∀ (i : ι), i ∈ s → g i = 0
hr : ∀ (s : Finset ι') (g : ι' → R), ∑ i in s, g i • (v ∘ Sum.inr) i = 0 → ∀ (i : ι'), i ∈ s → g i = 0
hlr : ∀ (x : M), x ∈ span R (v '' range Sum.inl) → ∀ (y : M), y ∈ span R (v '' range Sum.inr) → x = y → x = 0
s : Finset (ι ⊕ ι')
g : ι ⊕ ι' → R
hg : ∑ i in s, g i • v i = 0
this :
  ∑ i in Finset.preimage s Sum.inl (_ : InjOn Sum.inl (Sum.inl ⁻¹' ↑s)), (fun x => g x • v x) (Sum.inl i) =
    -∑ i in Finset.preimage s Sum.inr (_ : InjOn Sum.inr (Sum.inr ⁻¹' ↑s)), (fun x => g x • v x) (Sum.inr i)
A : ∑ c in Finset.preimage s Sum.inl (_ : InjOn Sum.inl (Sum.inl ⁻¹' ↑s)), (fun x => g x • v x) (Sum.inl c) = 0
i : ι'
hi : Sum.inr i ∈ s
⊢ g (Sum.inr i) = 0

tactic: exact hr _ _ A i (Finset.mem_preimage.2 hi)
state_before: case refine'_2.intro.intro.inr
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type ?u.352990
M : Type u_3
M' : Type ?u.352996
M'' : Type ?u.352999
V : Type u
V' : Type ?u.353004
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
v : ι ⊕ ι' → M
hl : ∀ (s : Finset ι) (g : ι → R), ∑ i in s, g i • (v ∘ Sum.inl) i = 0 → ∀ (i : ι), i ∈ s → g i = 0
hr : ∀ (s : Finset ι') (g : ι' → R), ∑ i in s, g i • (v ∘ Sum.inr) i = 0 → ∀ (i : ι'), i ∈ s → g i = 0
hlr : ∀ (x : M), x ∈ span R (v '' range Sum.inl) → ∀ (y : M), y ∈ span R (v '' range Sum.inr) → x = y → x = 0
s : Finset (ι ⊕ ι')
g : ι ⊕ ι' → R
hg : ∑ i in s, g i • v i = 0
this :
  ∑ i in Finset.preimage s Sum.inl (_ : InjOn Sum.inl (Sum.inl ⁻¹' ↑s)), (fun x => g x • v x) (Sum.inl i) =
    -∑ i in Finset.preimage s Sum.inr (_ : InjOn Sum.inr (Sum.inr ⁻¹' ↑s)), (fun x => g x • v x) (Sum.inr i)
A : ∑ i in Finset.preimage s Sum.inr (_ : InjOn Sum.inr (Sum.inr ⁻¹' ↑s)), (fun x => g x • v x) (Sum.inr i) = 0
i : ι'
hi : Sum.inr i ∈ s
⊢ g (Sum.inr i) = 0