ι : Type u_3
R : Type u_1
S : Type ?u.728203
M : ι → Type ?u.728208
N : Type u_2
dec_ι : DecidableEq ι
inst✝³ : Ring R
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : NoZeroSMulDivisors R N
p : ι → Submodule R N
hp : Independent p
v : ι → N
hv : ∀ (i : ι), v i ∈ p i
hv' : ∀ (i : ι), v i ≠ 0
x✝ : DecidableEq ι := Classical.decEq ι
⊢ LinearIndependent R v
ι : Type u_3
R : Type u_1
S : Type ?u.728203
M : ι → Type ?u.728208
N : Type u_2
dec_ι : DecidableEq ι
inst✝³ : Ring R
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : NoZeroSMulDivisors R N
p : ι → Submodule R N
hp : Independent p
v : ι → N
hv : ∀ (i : ι), v i ∈ p i
hv' : ∀ (i : ι), v i ≠ 0
⊢ LinearIndependent R v
let _ := Classical.decEq ι
ι : Type u_3
R : Type u_1
S : Type ?u.728203
M : ι → Type ?u.728208
N : Type u_2
dec_ι : DecidableEq ι
inst✝³ : Ring R
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : NoZeroSMulDivisors R N
p : ι → Submodule R N
hp : Independent p
v : ι → N
hv : ∀ (i : ι), v i ∈ p i
hv' : ∀ (i : ι), v i ≠ 0
x✝¹ : DecidableEq ι := Classical.decEq ι
x✝ : DecidableEq R := Classical.decEq R
⊢ LinearIndependent R v
ι : Type u_3
R : Type u_1
S : Type ?u.728203
M : ι → Type ?u.728208
N : Type u_2
dec_ι : DecidableEq ι
inst✝³ : Ring R
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : NoZeroSMulDivisors R N
p : ι → Submodule R N
hp : Independent p
v : ι → N
hv : ∀ (i : ι), v i ∈ p i
hv' : ∀ (i : ι), v i ≠ 0
x✝ : DecidableEq ι := Classical.decEq ι
⊢ LinearIndependent R v
let _ := Classical.decEq R
ι : Type u_3
R : Type u_1
S : Type ?u.728203
M : ι → Type ?u.728208
N : Type u_2
dec_ι : DecidableEq ι
inst✝³ : Ring R
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : NoZeroSMulDivisors R N
p : ι → Submodule R N
hp : Independent p
v : ι → N
hv : ∀ (i : ι), v i ∈ p i
hv' : ∀ (i : ι), v i ≠ 0
x✝¹ : DecidableEq ι := Classical.decEq ι
x✝ : DecidableEq R := Classical.decEq R
⊢ ∀ (l : ι →₀ R), ↑(Finsupp.total ι N R v) l = 0 → l = 0
ι : Type u_3
R : Type u_1
S : Type ?u.728203
M : ι → Type ?u.728208
N : Type u_2
dec_ι : DecidableEq ι
inst✝³ : Ring R
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : NoZeroSMulDivisors R N
p : ι → Submodule R N
hp : Independent p
v : ι → N
hv : ∀ (i : ι), v i ∈ p i
hv' : ∀ (i : ι), v i ≠ 0
x✝¹ : DecidableEq ι := Classical.decEq ι
x✝ : DecidableEq R := Classical.decEq R
⊢ LinearIndependent R v
rw [linearIndependent_iff]
ι : Type u_3
R : Type u_1
S : Type ?u.728203
M : ι → Type ?u.728208
N : Type u_2
dec_ι : DecidableEq ι
inst✝³ : Ring R
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : NoZeroSMulDivisors R N
p : ι → Submodule R N
hp : Independent p
v : ι → N
hv : ∀ (i : ι), v i ∈ p i
hv' : ∀ (i : ι), v i ≠ 0
x✝¹ : DecidableEq ι := Classical.decEq ι
x✝ : DecidableEq R := Classical.decEq R
l : ι →₀ R
hl : ↑(Finsupp.total ι N R v) l = 0
⊢ l = 0
ι : Type u_3
R : Type u_1
S : Type ?u.728203
M : ι → Type ?u.728208
N : Type u_2
dec_ι : DecidableEq ι
inst✝³ : Ring R
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : NoZeroSMulDivisors R N
p : ι → Submodule R N
hp : Independent p
v : ι → N
hv : ∀ (i : ι), v i ∈ p i
hv' : ∀ (i : ι), v i ≠ 0
x✝¹ : DecidableEq ι := Classical.decEq ι
x✝ : DecidableEq R := Classical.decEq R
⊢ ∀ (l : ι →₀ R), ↑(Finsupp.total ι N R v) l = 0 → l = 0
intro l hl
ι : Type u_3
R : Type u_1
S : Type ?u.728203
M : ι → Type ?u.728208
N : Type u_2
dec_ι : DecidableEq ι
inst✝³ : Ring R
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : NoZeroSMulDivisors R N
p : ι → Submodule R N
hp : Independent p
v : ι → N
hv : ∀ (i : ι), v i ∈ p i
hv' : ∀ (i : ι), v i ≠ 0
x✝¹ : DecidableEq ι := Classical.decEq ι
x✝ : DecidableEq R := Classical.decEq R
l : ι →₀ R
hl : ↑(Finsupp.total ι N R v) l = 0
a : (fun x => Π₀ (i : ι), { x // x ∈ p i }) (Finsupp.toDfinsupp l) :=
  ↑(mapRange.linearMap fun i =>
        LinearMap.toSpanSingleton R { x // x ∈ p i } { val := v i, property := (_ : v i ∈ p i) })
    (Finsupp.toDfinsupp l)
⊢ l = 0
ι : Type u_3
R : Type u_1
S : Type ?u.728203
M : ι → Type ?u.728208
N : Type u_2
dec_ι : DecidableEq ι
inst✝³ : Ring R
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : NoZeroSMulDivisors R N
p : ι → Submodule R N
hp : Independent p
v : ι → N
hv : ∀ (i : ι), v i ∈ p i
hv' : ∀ (i : ι), v i ≠ 0
x✝¹ : DecidableEq ι := Classical.decEq ι
x✝ : DecidableEq R := Classical.decEq R
l : ι →₀ R
hl : ↑(Finsupp.total ι N R v) l = 0
⊢ l = 0
let a :=
  Dfinsupp.mapRange.linearMap (fun i => LinearMap.toSpanSingleton R (p i) ⟨v i, hv i⟩)
    l.toDfinsupp
ι : Type u_3
R : Type u_1
S : Type ?u.728203
M : ι → Type ?u.728208
N : Type u_2
dec_ι : DecidableEq ι
inst✝³ : Ring R
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : NoZeroSMulDivisors R N
p : ι → Submodule R N
hp : Independent p
v : ι → N
hv : ∀ (i : ι), v i ∈ p i
hv' : ∀ (i : ι), v i ≠ 0
x✝¹ : DecidableEq ι := Classical.decEq ι
x✝ : DecidableEq R := Classical.decEq R
l : ι →₀ R
hl : ↑(Finsupp.total ι N R v) l = 0
a : (fun x => Π₀ (i : ι), { x // x ∈ p i }) (Finsupp.toDfinsupp l) :=
  ↑(mapRange.linearMap fun i =>
        LinearMap.toSpanSingleton R { x // x ∈ p i } { val := v i, property := (_ : v i ∈ p i) })
    (Finsupp.toDfinsupp l)
ha : a = 0
⊢ l = 0
ι : Type u_3
R : Type u_1
S : Type ?u.728203
M : ι → Type ?u.728208
N : Type u_2
dec_ι : DecidableEq ι
inst✝³ : Ring R
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : NoZeroSMulDivisors R N
p : ι → Submodule R N
hp : Independent p
v : ι → N
hv : ∀ (i : ι), v i ∈ p i
hv' : ∀ (i : ι), v i ≠ 0
x✝¹ : DecidableEq ι := Classical.decEq ι
x✝ : DecidableEq R := Classical.decEq R
l : ι →₀ R
hl : ↑(Finsupp.total ι N R v) l = 0
a : (fun x => Π₀ (i : ι), { x // x ∈ p i }) (Finsupp.toDfinsupp l) :=
  ↑(mapRange.linearMap fun i =>
        LinearMap.toSpanSingleton R { x // x ∈ p i } { val := v i, property := (_ : v i ∈ p i) })
    (Finsupp.toDfinsupp l)
⊢ l = 0
have ha : a = 0 := by
  apply hp.dfinsupp_lsum_injective
  rwa [← lsum_comp_mapRange_toSpanSingleton _ hv] at hl
case h
ι : Type u_3
R : Type u_1
S : Type ?u.728203
M : ι → Type ?u.728208
N : Type u_2
dec_ι : DecidableEq ι
inst✝³ : Ring R
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : NoZeroSMulDivisors R N
p : ι → Submodule R N
hp : Independent p
v : ι → N
hv : ∀ (i : ι), v i ∈ p i
hv' : ∀ (i : ι), v i ≠ 0
x✝¹ : DecidableEq ι := Classical.decEq ι
x✝ : DecidableEq R := Classical.decEq R
l : ι →₀ R
hl : ↑(Finsupp.total ι N R v) l = 0
a : (fun x => Π₀ (i : ι), { x // x ∈ p i }) (Finsupp.toDfinsupp l) :=
  ↑(mapRange.linearMap fun i =>
        LinearMap.toSpanSingleton R { x // x ∈ p i } { val := v i, property := (_ : v i ∈ p i) })
    (Finsupp.toDfinsupp l)
ha : a = 0
i : ι
⊢ ↑l i = ↑0 i
ι : Type u_3
R : Type u_1
S : Type ?u.728203
M : ι → Type ?u.728208
N : Type u_2
dec_ι : DecidableEq ι
inst✝³ : Ring R
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : NoZeroSMulDivisors R N
p : ι → Submodule R N
hp : Independent p
v : ι → N
hv : ∀ (i : ι), v i ∈ p i
hv' : ∀ (i : ι), v i ≠ 0
x✝¹ : DecidableEq ι := Classical.decEq ι
x✝ : DecidableEq R := Classical.decEq R
l : ι →₀ R
hl : ↑(Finsupp.total ι N R v) l = 0
a : (fun x => Π₀ (i : ι), { x // x ∈ p i }) (Finsupp.toDfinsupp l) :=
  ↑(mapRange.linearMap fun i =>
        LinearMap.toSpanSingleton R { x // x ∈ p i } { val := v i, property := (_ : v i ∈ p i) })
    (Finsupp.toDfinsupp l)
ha : a = 0
⊢ l = 0
ext i
case h.a
ι : Type u_3
R : Type u_1
S : Type ?u.728203
M : ι → Type ?u.728208
N : Type u_2
dec_ι : DecidableEq ι
inst✝³ : Ring R
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : NoZeroSMulDivisors R N
p : ι → Submodule R N
hp : Independent p
v : ι → N
hv : ∀ (i : ι), v i ∈ p i
hv' : ∀ (i : ι), v i ≠ 0
x✝¹ : DecidableEq ι := Classical.decEq ι
x✝ : DecidableEq R := Classical.decEq R
l : ι →₀ R
hl : ↑(Finsupp.total ι N R v) l = 0
a : (fun x => Π₀ (i : ι), { x // x ∈ p i }) (Finsupp.toDfinsupp l) :=
  ↑(mapRange.linearMap fun i =>
        LinearMap.toSpanSingleton R { x // x ∈ p i } { val := v i, property := (_ : v i ∈ p i) })
    (Finsupp.toDfinsupp l)
ha : a = 0
i : ι
⊢ (fun c => c • v i) (↑l i) = (fun c => c • v i) (↑0 i)
case h
ι : Type u_3
R : Type u_1
S : Type ?u.728203
M : ι → Type ?u.728208
N : Type u_2
dec_ι : DecidableEq ι
inst✝³ : Ring R
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : NoZeroSMulDivisors R N
p : ι → Submodule R N
hp : Independent p
v : ι → N
hv : ∀ (i : ι), v i ∈ p i
hv' : ∀ (i : ι), v i ≠ 0
x✝¹ : DecidableEq ι := Classical.decEq ι
x✝ : DecidableEq R := Classical.decEq R
l : ι →₀ R
hl : ↑(Finsupp.total ι N R v) l = 0
a : (fun x => Π₀ (i : ι), { x // x ∈ p i }) (Finsupp.toDfinsupp l) :=
  ↑(mapRange.linearMap fun i =>
        LinearMap.toSpanSingleton R { x // x ∈ p i } { val := v i, property := (_ : v i ∈ p i) })
    (Finsupp.toDfinsupp l)
ha : a = 0
i : ι
⊢ ↑l i = ↑0 i
apply smul_left_injective R (hv' i)
case h.a
ι : Type u_3
R : Type u_1
S : Type ?u.728203
M : ι → Type ?u.728208
N : Type u_2
dec_ι : DecidableEq ι
inst✝³ : Ring R
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : NoZeroSMulDivisors R N
p : ι → Submodule R N
hp : Independent p
v : ι → N
hv : ∀ (i : ι), v i ∈ p i
hv' : ∀ (i : ι), v i ≠ 0
x✝¹ : DecidableEq ι := Classical.decEq ι
x✝ : DecidableEq R := Classical.decEq R
l : ι →₀ R
hl : ↑(Finsupp.total ι N R v) l = 0
a : (fun x => Π₀ (i : ι), { x // x ∈ p i }) (Finsupp.toDfinsupp l) :=
  ↑(mapRange.linearMap fun i =>
        LinearMap.toSpanSingleton R { x // x ∈ p i } { val := v i, property := (_ : v i ∈ p i) })
    (Finsupp.toDfinsupp l)
ha : a = 0
i : ι
this : ↑l i • v i = ↑(↑a i)
⊢ (fun c => c • v i) (↑l i) = (fun c => c • v i) (↑0 i)
case h.a
ι : Type u_3
R : Type u_1
S : Type ?u.728203
M : ι → Type ?u.728208
N : Type u_2
dec_ι : DecidableEq ι
inst✝³ : Ring R
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : NoZeroSMulDivisors R N
p : ι → Submodule R N
hp : Independent p
v : ι → N
hv : ∀ (i : ι), v i ∈ p i
hv' : ∀ (i : ι), v i ≠ 0
x✝¹ : DecidableEq ι := Classical.decEq ι
x✝ : DecidableEq R := Classical.decEq R
l : ι →₀ R
hl : ↑(Finsupp.total ι N R v) l = 0
a : (fun x => Π₀ (i : ι), { x // x ∈ p i }) (Finsupp.toDfinsupp l) :=
  ↑(mapRange.linearMap fun i =>
        LinearMap.toSpanSingleton R { x // x ∈ p i } { val := v i, property := (_ : v i ∈ p i) })
    (Finsupp.toDfinsupp l)
ha : a = 0
i : ι
⊢ (fun c => c • v i) (↑l i) = (fun c => c • v i) (↑0 i)
have : l i • v i = a i := rfl
case h.a
ι : Type u_3
R : Type u_1
S : Type ?u.728203
M : ι → Type ?u.728208
N : Type u_2
dec_ι : DecidableEq ι
inst✝³ : Ring R
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : NoZeroSMulDivisors R N
p : ι → Submodule R N
hp : Independent p
v : ι → N
hv : ∀ (i : ι), v i ∈ p i
hv' : ∀ (i : ι), v i ≠ 0
x✝¹ : DecidableEq ι := Classical.decEq ι
x✝ : DecidableEq R := Classical.decEq R
l : ι →₀ R
hl : ↑(Finsupp.total ι N R v) l = 0
a : (fun x => Π₀ (i : ι), { x // x ∈ p i }) (Finsupp.toDfinsupp l) :=
  ↑(mapRange.linearMap fun i =>
        LinearMap.toSpanSingleton R { x // x ∈ p i } { val := v i, property := (_ : v i ∈ p i) })
    (Finsupp.toDfinsupp l)
ha : a = 0
i : ι
this : ↑l i = 0 ∨ v i = 0
⊢ (fun c => c • v i) (↑l i) = (fun c => c • v i) (↑0 i)
case h.a
ι : Type u_3
R : Type u_1
S : Type ?u.728203
M : ι → Type ?u.728208
N : Type u_2
dec_ι : DecidableEq ι
inst✝³ : Ring R
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : NoZeroSMulDivisors R N
p : ι → Submodule R N
hp : Independent p
v : ι → N
hv : ∀ (i : ι), v i ∈ p i
hv' : ∀ (i : ι), v i ≠ 0
x✝¹ : DecidableEq ι := Classical.decEq ι
x✝ : DecidableEq R := Classical.decEq R
l : ι →₀ R
hl : ↑(Finsupp.total ι N R v) l = 0
a : (fun x => Π₀ (i : ι), { x // x ∈ p i }) (Finsupp.toDfinsupp l) :=
  ↑(mapRange.linearMap fun i =>
        LinearMap.toSpanSingleton R { x // x ∈ p i } { val := v i, property := (_ : v i ∈ p i) })
    (Finsupp.toDfinsupp l)
ha : a = 0
i : ι
this : ↑l i • v i = ↑(↑a i)
⊢ (fun c => c • v i) (↑l i) = (fun c => c • v i) (↑0 i)
simp only [coe_zero, Pi.zero_apply, ZeroMemClass.coe_zero, smul_eq_zero, ha] at this
no goals
case h.a
ι : Type u_3
R : Type u_1
S : Type ?u.728203
M : ι → Type ?u.728208
N : Type u_2
dec_ι : DecidableEq ι
inst✝³ : Ring R
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : NoZeroSMulDivisors R N
p : ι → Submodule R N
hp : Independent p
v : ι → N
hv : ∀ (i : ι), v i ∈ p i
hv' : ∀ (i : ι), v i ≠ 0
x✝¹ : DecidableEq ι := Classical.decEq ι
x✝ : DecidableEq R := Classical.decEq R
l : ι →₀ R
hl : ↑(Finsupp.total ι N R v) l = 0
a : (fun x => Π₀ (i : ι), { x // x ∈ p i }) (Finsupp.toDfinsupp l) :=
  ↑(mapRange.linearMap fun i =>
        LinearMap.toSpanSingleton R { x // x ∈ p i } { val := v i, property := (_ : v i ∈ p i) })
    (Finsupp.toDfinsupp l)
ha : a = 0
i : ι
this : ↑l i = 0 ∨ v i = 0
⊢ (fun c => c • v i) (↑l i) = (fun c => c • v i) (↑0 i)
simpa
case a
ι : Type u_3
R : Type u_1
S : Type ?u.728203
M : ι → Type ?u.728208
N : Type u_2
dec_ι : DecidableEq ι
inst✝³ : Ring R
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : NoZeroSMulDivisors R N
p : ι → Submodule R N
hp : Independent p
v : ι → N
hv : ∀ (i : ι), v i ∈ p i
hv' : ∀ (i : ι), v i ≠ 0
x✝¹ : DecidableEq ι := Classical.decEq ι
x✝ : DecidableEq R := Classical.decEq R
l : ι →₀ R
hl : ↑(Finsupp.total ι N R v) l = 0
a : (fun x => Π₀ (i : ι), { x // x ∈ p i }) (Finsupp.toDfinsupp l) :=
  ↑(mapRange.linearMap fun i =>
        LinearMap.toSpanSingleton R { x // x ∈ p i } { val := v i, property := (_ : v i ∈ p i) })
    (Finsupp.toDfinsupp l)
⊢ ↑(↑(lsum ℕ) fun i => Submodule.subtype (p i)) a = ↑(↑(lsum ℕ) fun i => Submodule.subtype (p i)) 0
ι : Type u_3
R : Type u_1
S : Type ?u.728203
M : ι → Type ?u.728208
N : Type u_2
dec_ι : DecidableEq ι
inst✝³ : Ring R
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : NoZeroSMulDivisors R N
p : ι → Submodule R N
hp : Independent p
v : ι → N
hv : ∀ (i : ι), v i ∈ p i
hv' : ∀ (i : ι), v i ≠ 0
x✝¹ : DecidableEq ι := Classical.decEq ι
x✝ : DecidableEq R := Classical.decEq R
l : ι →₀ R
hl : ↑(Finsupp.total ι N R v) l = 0
a : (fun x => Π₀ (i : ι), { x // x ∈ p i }) (Finsupp.toDfinsupp l) :=
  ↑(mapRange.linearMap fun i =>
        LinearMap.toSpanSingleton R { x // x ∈ p i } { val := v i, property := (_ : v i ∈ p i) })
    (Finsupp.toDfinsupp l)
⊢ a = 0
apply hp.dfinsupp_lsum_injective
no goals
case a
ι : Type u_3
R : Type u_1
S : Type ?u.728203
M : ι → Type ?u.728208
N : Type u_2
dec_ι : DecidableEq ι
inst✝³ : Ring R
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : NoZeroSMulDivisors R N
p : ι → Submodule R N
hp : Independent p
v : ι → N
hv : ∀ (i : ι), v i ∈ p i
hv' : ∀ (i : ι), v i ≠ 0
x✝¹ : DecidableEq ι := Classical.decEq ι
x✝ : DecidableEq R := Classical.decEq R
l : ι →₀ R
hl : ↑(Finsupp.total ι N R v) l = 0
a : (fun x => Π₀ (i : ι), { x // x ∈ p i }) (Finsupp.toDfinsupp l) :=
  ↑(mapRange.linearMap fun i =>
        LinearMap.toSpanSingleton R { x // x ∈ p i } { val := v i, property := (_ : v i ∈ p i) })
    (Finsupp.toDfinsupp l)
⊢ ↑(↑(lsum ℕ) fun i => Submodule.subtype (p i)) a = ↑(↑(lsum ℕ) fun i => Submodule.subtype (p i)) 0
rwa [← lsum_comp_mapRange_toSpanSingleton _ hv] at hl