Theorem: AlternatingMap.map_linearDependent
File: Mathlib/LinearAlgebra/Alternating/Basic.lean

tactic: obtain ⟨s, g, h, i, hi, hz⟩ := not_linearIndependent_iff.mp h
state_before: R : Type u_1
inst✝²⁰ : Semiring R
M✝ : Type u_2
inst✝¹⁹ : AddCommMonoid M✝
inst✝¹⁸ : Module R M✝
N✝ : Type u_3
inst✝¹⁷ : AddCommMonoid N✝
inst✝¹⁶ : Module R N✝
P : Type u_4
inst✝¹⁵ : AddCommMonoid P
inst✝¹⁴ : Module R P
M' : Type u_5
inst✝¹³ : AddCommGroup M'
inst✝¹² : Module R M'
N' : Type u_6
inst✝¹¹ : AddCommGroup N'
inst✝¹⁰ : Module R N'
ι : Type u_7
ι' : Type u_8
ι'' : Type u_9
M₂ : Type u_10
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R M₂
M₃ : Type u_11
inst✝⁷ : AddCommMonoid M₃
inst✝⁶ : Module R M₃
f✝ f' : M✝ [⋀^ι]→ₗ[R] N✝
g g₂ : M✝ [⋀^ι]→ₗ[R] N'
g' : M' [⋀^ι]→ₗ[R] N'
v✝ : ι → M✝
v' : ι → M'
K : Type u_12
inst✝⁵ : Ring K
M : Type u_13
inst✝⁴ : AddCommGroup M
inst✝³ : Module K M
N : Type u_14
inst✝² : AddCommGroup N
inst✝¹ : Module K N
inst✝ : NoZeroSMulDivisors K N
f : M [⋀^ι]→ₗ[K] N
v : ι → M
h : ¬LinearIndependent K v
⊢ f v = 0
state_after: case intro.intro.intro.intro.intro
R : Type u_1
inst✝²⁰ : Semiring R
M✝ : Type u_2
inst✝¹⁹ : AddCommMonoid M✝
inst✝¹⁸ : Module R M✝
N✝ : Type u_3
inst✝¹⁷ : AddCommMonoid N✝
inst✝¹⁶ : Module R N✝
P : Type u_4
inst✝¹⁵ : AddCommMonoid P
inst✝¹⁴ : Module R P
M' : Type u_5
inst✝¹³ : AddCommGroup M'
inst✝¹² : Module R M'
N' : Type u_6
inst✝¹¹ : AddCommGroup N'
inst✝¹⁰ : Module R N'
ι : Type u_7
ι' : Type u_8
ι'' : Type u_9
M₂ : Type u_10
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R M₂
M₃ : Type u_11
inst✝⁷ : AddCommMonoid M₃
inst✝⁶ : Module R M₃
f✝ f' : M✝ [⋀^ι]→ₗ[R] N✝
g✝ g₂ : M✝ [⋀^ι]→ₗ[R] N'
g' : M' [⋀^ι]→ₗ[R] N'
v✝ : ι → M✝
v' : ι → M'
K : Type u_12
inst✝⁵ : Ring K
M : Type u_13
inst✝⁴ : AddCommGroup M
inst✝³ : Module K M
N : Type u_14
inst✝² : AddCommGroup N
inst✝¹ : Module K N
inst✝ : NoZeroSMulDivisors K N
f : M [⋀^ι]→ₗ[K] N
v : ι → M
h✝ : ¬LinearIndependent K v
s : Finset ι
g : ι → K
h : ∑ i ∈ s, g i • v i = 0
i : ι
hi : i ∈ s
hz : g i ≠ 0
⊢ f v = 0

tactic: letI := Classical.decEq ι
state_before: case intro.intro.intro.intro.intro
R : Type u_1
inst✝²⁰ : Semiring R
M✝ : Type u_2
inst✝¹⁹ : AddCommMonoid M✝
inst✝¹⁸ : Module R M✝
N✝ : Type u_3
inst✝¹⁷ : AddCommMonoid N✝
inst✝¹⁶ : Module R N✝
P : Type u_4
inst✝¹⁵ : AddCommMonoid P
inst✝¹⁴ : Module R P
M' : Type u_5
inst✝¹³ : AddCommGroup M'
inst✝¹² : Module R M'
N' : Type u_6
inst✝¹¹ : AddCommGroup N'
inst✝¹⁰ : Module R N'
ι : Type u_7
ι' : Type u_8
ι'' : Type u_9
M₂ : Type u_10
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R M₂
M₃ : Type u_11
inst✝⁷ : AddCommMonoid M₃
inst✝⁶ : Module R M₃
f✝ f' : M✝ [⋀^ι]→ₗ[R] N✝
g✝ g₂ : M✝ [⋀^ι]→ₗ[R] N'
g' : M' [⋀^ι]→ₗ[R] N'
v✝ : ι → M✝
v' : ι → M'
K : Type u_12
inst✝⁵ : Ring K
M : Type u_13
inst✝⁴ : AddCommGroup M
inst✝³ : Module K M
N : Type u_14
inst✝² : AddCommGroup N
inst✝¹ : Module K N
inst✝ : NoZeroSMulDivisors K N
f : M [⋀^ι]→ₗ[K] N
v : ι → M
h✝ : ¬LinearIndependent K v
s : Finset ι
g : ι → K
h : ∑ i ∈ s, g i • v i = 0
i : ι
hi : i ∈ s
hz : g i ≠ 0
⊢ f v = 0
state_after: case intro.intro.intro.intro.intro
R : Type u_1
inst✝²⁰ : Semiring R
M✝ : Type u_2
inst✝¹⁹ : AddCommMonoid M✝
inst✝¹⁸ : Module R M✝
N✝ : Type u_3
inst✝¹⁷ : AddCommMonoid N✝
inst✝¹⁶ : Module R N✝
P : Type u_4
inst✝¹⁵ : AddCommMonoid P
inst✝¹⁴ : Module R P
M' : Type u_5
inst✝¹³ : AddCommGroup M'
inst✝¹² : Module R M'
N' : Type u_6
inst✝¹¹ : AddCommGroup N'
inst✝¹⁰ : Module R N'
ι : Type u_7
ι' : Type u_8
ι'' : Type u_9
M₂ : Type u_10
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R M₂
M₃ : Type u_11
inst✝⁷ : AddCommMonoid M₃
inst✝⁶ : Module R M₃
f✝ f' : M✝ [⋀^ι]→ₗ[R] N✝
g✝ g₂ : M✝ [⋀^ι]→ₗ[R] N'
g' : M' [⋀^ι]→ₗ[R] N'
v✝ : ι → M✝
v' : ι → M'
K : Type u_12
inst✝⁵ : Ring K
M : Type u_13
inst✝⁴ : AddCommGroup M
inst✝³ : Module K M
N : Type u_14
inst✝² : AddCommGroup N
inst✝¹ : Module K N
inst✝ : NoZeroSMulDivisors K N
f : M [⋀^ι]→ₗ[K] N
v : ι → M
h✝ : ¬LinearIndependent K v
s : Finset ι
g : ι → K
h : ∑ i ∈ s, g i • v i = 0
i : ι
hi : i ∈ s
hz : g i ≠ 0
this : DecidableEq ι := Classical.decEq ι
⊢ f v = 0

tactic: suffices f (update v i (g i • v i)) = 0 by
  rw [f.map_smul, Function.update_eq_self, smul_eq_zero] at this
  exact Or.resolve_left this hz
state_before: case intro.intro.intro.intro.intro
R : Type u_1
inst✝²⁰ : Semiring R
M✝ : Type u_2
inst✝¹⁹ : AddCommMonoid M✝
inst✝¹⁸ : Module R M✝
N✝ : Type u_3
inst✝¹⁷ : AddCommMonoid N✝
inst✝¹⁶ : Module R N✝
P : Type u_4
inst✝¹⁵ : AddCommMonoid P
inst✝¹⁴ : Module R P
M' : Type u_5
inst✝¹³ : AddCommGroup M'
inst✝¹² : Module R M'
N' : Type u_6
inst✝¹¹ : AddCommGroup N'
inst✝¹⁰ : Module R N'
ι : Type u_7
ι' : Type u_8
ι'' : Type u_9
M₂ : Type u_10
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R M₂
M₃ : Type u_11
inst✝⁷ : AddCommMonoid M₃
inst✝⁶ : Module R M₃
f✝ f' : M✝ [⋀^ι]→ₗ[R] N✝
g✝ g₂ : M✝ [⋀^ι]→ₗ[R] N'
g' : M' [⋀^ι]→ₗ[R] N'
v✝ : ι → M✝
v' : ι → M'
K : Type u_12
inst✝⁵ : Ring K
M : Type u_13
inst✝⁴ : AddCommGroup M
inst✝³ : Module K M
N : Type u_14
inst✝² : AddCommGroup N
inst✝¹ : Module K N
inst✝ : NoZeroSMulDivisors K N
f : M [⋀^ι]→ₗ[K] N
v : ι → M
h✝ : ¬LinearIndependent K v
s : Finset ι
g : ι → K
h : ∑ i ∈ s, g i • v i = 0
i : ι
hi : i ∈ s
hz : g i ≠ 0
this : DecidableEq ι := Classical.decEq ι
⊢ f v = 0
state_after: case intro.intro.intro.intro.intro
R : Type u_1
inst✝²⁰ : Semiring R
M✝ : Type u_2
inst✝¹⁹ : AddCommMonoid M✝
inst✝¹⁸ : Module R M✝
N✝ : Type u_3
inst✝¹⁷ : AddCommMonoid N✝
inst✝¹⁶ : Module R N✝
P : Type u_4
inst✝¹⁵ : AddCommMonoid P
inst✝¹⁴ : Module R P
M' : Type u_5
inst✝¹³ : AddCommGroup M'
inst✝¹² : Module R M'
N' : Type u_6
inst✝¹¹ : AddCommGroup N'
inst✝¹⁰ : Module R N'
ι : Type u_7
ι' : Type u_8
ι'' : Type u_9
M₂ : Type u_10
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R M₂
M₃ : Type u_11
inst✝⁷ : AddCommMonoid M₃
inst✝⁶ : Module R M₃
f✝ f' : M✝ [⋀^ι]→ₗ[R] N✝
g✝ g₂ : M✝ [⋀^ι]→ₗ[R] N'
g' : M' [⋀^ι]→ₗ[R] N'
v✝ : ι → M✝
v' : ι → M'
K : Type u_12
inst✝⁵ : Ring K
M : Type u_13
inst✝⁴ : AddCommGroup M
inst✝³ : Module K M
N : Type u_14
inst✝² : AddCommGroup N
inst✝¹ : Module K N
inst✝ : NoZeroSMulDivisors K N
f : M [⋀^ι]→ₗ[K] N
v : ι → M
h✝ : ¬LinearIndependent K v
s : Finset ι
g : ι → K
h : ∑ i ∈ s, g i • v i = 0
i : ι
hi : i ∈ s
hz : g i ≠ 0
this : DecidableEq ι := Classical.decEq ι
⊢ f (update v i (g i • v i)) = 0

tactic: rw [← (funext fun x => ite_self (c := i = x) (d := Classical.decEq ι i x) (g x • v x))] at h
state_before: case intro.intro.intro.intro.intro
R : Type u_1
inst✝²⁰ : Semiring R
M✝ : Type u_2
inst✝¹⁹ : AddCommMonoid M✝
inst✝¹⁸ : Module R M✝
N✝ : Type u_3
inst✝¹⁷ : AddCommMonoid N✝
inst✝¹⁶ : Module R N✝
P : Type u_4
inst✝¹⁵ : AddCommMonoid P
inst✝¹⁴ : Module R P
M' : Type u_5
inst✝¹³ : AddCommGroup M'
inst✝¹² : Module R M'
N' : Type u_6
inst✝¹¹ : AddCommGroup N'
inst✝¹⁰ : Module R N'
ι : Type u_7
ι' : Type u_8
ι'' : Type u_9
M₂ : Type u_10
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R M₂
M₃ : Type u_11
inst✝⁷ : AddCommMonoid M₃
inst✝⁶ : Module R M₃
f✝ f' : M✝ [⋀^ι]→ₗ[R] N✝
g✝ g₂ : M✝ [⋀^ι]→ₗ[R] N'
g' : M' [⋀^ι]→ₗ[R] N'
v✝ : ι → M✝
v' : ι → M'
K : Type u_12
inst✝⁵ : Ring K
M : Type u_13
inst✝⁴ : AddCommGroup M
inst✝³ : Module K M
N : Type u_14
inst✝² : AddCommGroup N
inst✝¹ : Module K N
inst✝ : NoZeroSMulDivisors K N
f : M [⋀^ι]→ₗ[K] N
v : ι → M
h✝ : ¬LinearIndependent K v
s : Finset ι
g : ι → K
h : ∑ i ∈ s, g i • v i = 0
i : ι
hi : i ∈ s
hz : g i ≠ 0
this : DecidableEq ι := Classical.decEq ι
⊢ f (update v i (g i • v i)) = 0
state_after: case intro.intro.intro.intro.intro
R : Type u_1
inst✝²⁰ : Semiring R
M✝ : Type u_2
inst✝¹⁹ : AddCommMonoid M✝
inst✝¹⁸ : Module R M✝
N✝ : Type u_3
inst✝¹⁷ : AddCommMonoid N✝
inst✝¹⁶ : Module R N✝
P : Type u_4
inst✝¹⁵ : AddCommMonoid P
inst✝¹⁴ : Module R P
M' : Type u_5
inst✝¹³ : AddCommGroup M'
inst✝¹² : Module R M'
N' : Type u_6
inst✝¹¹ : AddCommGroup N'
inst✝¹⁰ : Module R N'
ι : Type u_7
ι' : Type u_8
ι'' : Type u_9
M₂ : Type u_10
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R M₂
M₃ : Type u_11
inst✝⁷ : AddCommMonoid M₃
inst✝⁶ : Module R M₃
f✝ f' : M✝ [⋀^ι]→ₗ[R] N✝
g✝ g₂ : M✝ [⋀^ι]→ₗ[R] N'
g' : M' [⋀^ι]→ₗ[R] N'
v✝ : ι → M✝
v' : ι → M'
K : Type u_12
inst✝⁵ : Ring K
M : Type u_13
inst✝⁴ : AddCommGroup M
inst✝³ : Module K M
N : Type u_14
inst✝² : AddCommGroup N
inst✝¹ : Module K N
inst✝ : NoZeroSMulDivisors K N
f : M [⋀^ι]→ₗ[K] N
v : ι → M
h✝ : ¬LinearIndependent K v
s : Finset ι
g : ι → K
i : ι
h : (∑ x ∈ s, if i = x then g x • v x else g x • v x) = 0
hi : i ∈ s
hz : g i ≠ 0
this : DecidableEq ι := Classical.decEq ι
⊢ f (update v i (g i • v i)) = 0

tactic: rw [Finset.sum_ite, Finset.filter_eq, Finset.filter_ne, if_pos hi, Finset.sum_singleton,
  add_eq_zero_iff_eq_neg] at h
state_before: case intro.intro.intro.intro.intro
R : Type u_1
inst✝²⁰ : Semiring R
M✝ : Type u_2
inst✝¹⁹ : AddCommMonoid M✝
inst✝¹⁸ : Module R M✝
N✝ : Type u_3
inst✝¹⁷ : AddCommMonoid N✝
inst✝¹⁶ : Module R N✝
P : Type u_4
inst✝¹⁵ : AddCommMonoid P
inst✝¹⁴ : Module R P
M' : Type u_5
inst✝¹³ : AddCommGroup M'
inst✝¹² : Module R M'
N' : Type u_6
inst✝¹¹ : AddCommGroup N'
inst✝¹⁰ : Module R N'
ι : Type u_7
ι' : Type u_8
ι'' : Type u_9
M₂ : Type u_10
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R M₂
M₃ : Type u_11
inst✝⁷ : AddCommMonoid M₃
inst✝⁶ : Module R M₃
f✝ f' : M✝ [⋀^ι]→ₗ[R] N✝
g✝ g₂ : M✝ [⋀^ι]→ₗ[R] N'
g' : M' [⋀^ι]→ₗ[R] N'
v✝ : ι → M✝
v' : ι → M'
K : Type u_12
inst✝⁵ : Ring K
M : Type u_13
inst✝⁴ : AddCommGroup M
inst✝³ : Module K M
N : Type u_14
inst✝² : AddCommGroup N
inst✝¹ : Module K N
inst✝ : NoZeroSMulDivisors K N
f : M [⋀^ι]→ₗ[K] N
v : ι → M
h✝ : ¬LinearIndependent K v
s : Finset ι
g : ι → K
i : ι
h : (∑ x ∈ s, if i = x then g x • v x else g x • v x) = 0
hi : i ∈ s
hz : g i ≠ 0
this : DecidableEq ι := Classical.decEq ι
⊢ f (update v i (g i • v i)) = 0
state_after: case intro.intro.intro.intro.intro
R : Type u_1
inst✝²⁰ : Semiring R
M✝ : Type u_2
inst✝¹⁹ : AddCommMonoid M✝
inst✝¹⁸ : Module R M✝
N✝ : Type u_3
inst✝¹⁷ : AddCommMonoid N✝
inst✝¹⁶ : Module R N✝
P : Type u_4
inst✝¹⁵ : AddCommMonoid P
inst✝¹⁴ : Module R P
M' : Type u_5
inst✝¹³ : AddCommGroup M'
inst✝¹² : Module R M'
N' : Type u_6
inst✝¹¹ : AddCommGroup N'
inst✝¹⁰ : Module R N'
ι : Type u_7
ι' : Type u_8
ι'' : Type u_9
M₂ : Type u_10
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R M₂
M₃ : Type u_11
inst✝⁷ : AddCommMonoid M₃
inst✝⁶ : Module R M₃
f✝ f' : M✝ [⋀^ι]→ₗ[R] N✝
g✝ g₂ : M✝ [⋀^ι]→ₗ[R] N'
g' : M' [⋀^ι]→ₗ[R] N'
v✝ : ι → M✝
v' : ι → M'
K : Type u_12
inst✝⁵ : Ring K
M : Type u_13
inst✝⁴ : AddCommGroup M
inst✝³ : Module K M
N : Type u_14
inst✝² : AddCommGroup N
inst✝¹ : Module K N
inst✝ : NoZeroSMulDivisors K N
f : M [⋀^ι]→ₗ[K] N
v : ι → M
h✝ : ¬LinearIndependent K v
s : Finset ι
g : ι → K
i : ι
hi : i ∈ s
hz : g i ≠ 0
this : DecidableEq ι := Classical.decEq ι
h : g i • v i = -∑ x ∈ s.erase i, g x • v x
⊢ f (update v i (g i • v i)) = 0

tactic: rw [h, f.map_neg, f.map_update_sum, neg_eq_zero]
state_before: case intro.intro.intro.intro.intro
R : Type u_1
inst✝²⁰ : Semiring R
M✝ : Type u_2
inst✝¹⁹ : AddCommMonoid M✝
inst✝¹⁸ : Module R M✝
N✝ : Type u_3
inst✝¹⁷ : AddCommMonoid N✝
inst✝¹⁶ : Module R N✝
P : Type u_4
inst✝¹⁵ : AddCommMonoid P
inst✝¹⁴ : Module R P
M' : Type u_5
inst✝¹³ : AddCommGroup M'
inst✝¹² : Module R M'
N' : Type u_6
inst✝¹¹ : AddCommGroup N'
inst✝¹⁰ : Module R N'
ι : Type u_7
ι' : Type u_8
ι'' : Type u_9
M₂ : Type u_10
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R M₂
M₃ : Type u_11
inst✝⁷ : AddCommMonoid M₃
inst✝⁶ : Module R M₃
f✝ f' : M✝ [⋀^ι]→ₗ[R] N✝
g✝ g₂ : M✝ [⋀^ι]→ₗ[R] N'
g' : M' [⋀^ι]→ₗ[R] N'
v✝ : ι → M✝
v' : ι → M'
K : Type u_12
inst✝⁵ : Ring K
M : Type u_13
inst✝⁴ : AddCommGroup M
inst✝³ : Module K M
N : Type u_14
inst✝² : AddCommGroup N
inst✝¹ : Module K N
inst✝ : NoZeroSMulDivisors K N
f : M [⋀^ι]→ₗ[K] N
v : ι → M
h✝ : ¬LinearIndependent K v
s : Finset ι
g : ι → K
i : ι
hi : i ∈ s
hz : g i ≠ 0
this : DecidableEq ι := Classical.decEq ι
h : g i • v i = -∑ x ∈ s.erase i, g x • v x
⊢ f (update v i (g i • v i)) = 0
state_after: case intro.intro.intro.intro.intro
R : Type u_1
inst✝²⁰ : Semiring R
M✝ : Type u_2
inst✝¹⁹ : AddCommMonoid M✝
inst✝¹⁸ : Module R M✝
N✝ : Type u_3
inst✝¹⁷ : AddCommMonoid N✝
inst✝¹⁶ : Module R N✝
P : Type u_4
inst✝¹⁵ : AddCommMonoid P
inst✝¹⁴ : Module R P
M' : Type u_5
inst✝¹³ : AddCommGroup M'
inst✝¹² : Module R M'
N' : Type u_6
inst✝¹¹ : AddCommGroup N'
inst✝¹⁰ : Module R N'
ι : Type u_7
ι' : Type u_8
ι'' : Type u_9
M₂ : Type u_10
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R M₂
M₃ : Type u_11
inst✝⁷ : AddCommMonoid M₃
inst✝⁶ : Module R M₃
f✝ f' : M✝ [⋀^ι]→ₗ[R] N✝
g✝ g₂ : M✝ [⋀^ι]→ₗ[R] N'
g' : M' [⋀^ι]→ₗ[R] N'
v✝ : ι → M✝
v' : ι → M'
K : Type u_12
inst✝⁵ : Ring K
M : Type u_13
inst✝⁴ : AddCommGroup M
inst✝³ : Module K M
N : Type u_14
inst✝² : AddCommGroup N
inst✝¹ : Module K N
inst✝ : NoZeroSMulDivisors K N
f : M [⋀^ι]→ₗ[K] N
v : ι → M
h✝ : ¬LinearIndependent K v
s : Finset ι
g : ι → K
i : ι
hi : i ∈ s
hz : g i ≠ 0
this : DecidableEq ι := Classical.decEq ι
h : g i • v i = -∑ x ∈ s.erase i, g x • v x
⊢ ∑ a ∈ s.erase i, f (update v i (g a • v a)) = 0

tactic: apply Finset.sum_eq_zero
state_before: case intro.intro.intro.intro.intro
R : Type u_1
inst✝²⁰ : Semiring R
M✝ : Type u_2
inst✝¹⁹ : AddCommMonoid M✝
inst✝¹⁸ : Module R M✝
N✝ : Type u_3
inst✝¹⁷ : AddCommMonoid N✝
inst✝¹⁶ : Module R N✝
P : Type u_4
inst✝¹⁵ : AddCommMonoid P
inst✝¹⁴ : Module R P
M' : Type u_5
inst✝¹³ : AddCommGroup M'
inst✝¹² : Module R M'
N' : Type u_6
inst✝¹¹ : AddCommGroup N'
inst✝¹⁰ : Module R N'
ι : Type u_7
ι' : Type u_8
ι'' : Type u_9
M₂ : Type u_10
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R M₂
M₃ : Type u_11
inst✝⁷ : AddCommMonoid M₃
inst✝⁶ : Module R M₃
f✝ f' : M✝ [⋀^ι]→ₗ[R] N✝
g✝ g₂ : M✝ [⋀^ι]→ₗ[R] N'
g' : M' [⋀^ι]→ₗ[R] N'
v✝ : ι → M✝
v' : ι → M'
K : Type u_12
inst✝⁵ : Ring K
M : Type u_13
inst✝⁴ : AddCommGroup M
inst✝³ : Module K M
N : Type u_14
inst✝² : AddCommGroup N
inst✝¹ : Module K N
inst✝ : NoZeroSMulDivisors K N
f : M [⋀^ι]→ₗ[K] N
v : ι → M
h✝ : ¬LinearIndependent K v
s : Finset ι
g : ι → K
i : ι
hi : i ∈ s
hz : g i ≠ 0
this : DecidableEq ι := Classical.decEq ι
h : g i • v i = -∑ x ∈ s.erase i, g x • v x
⊢ ∑ a ∈ s.erase i, f (update v i (g a • v a)) = 0
state_after: case intro.intro.intro.intro.intro.h
R : Type u_1
inst✝²⁰ : Semiring R
M✝ : Type u_2
inst✝¹⁹ : AddCommMonoid M✝
inst✝¹⁸ : Module R M✝
N✝ : Type u_3
inst✝¹⁷ : AddCommMonoid N✝
inst✝¹⁶ : Module R N✝
P : Type u_4
inst✝¹⁵ : AddCommMonoid P
inst✝¹⁴ : Module R P
M' : Type u_5
inst✝¹³ : AddCommGroup M'
inst✝¹² : Module R M'
N' : Type u_6
inst✝¹¹ : AddCommGroup N'
inst✝¹⁰ : Module R N'
ι : Type u_7
ι' : Type u_8
ι'' : Type u_9
M₂ : Type u_10
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R M₂
M₃ : Type u_11
inst✝⁷ : AddCommMonoid M₃
inst✝⁶ : Module R M₃
f✝ f' : M✝ [⋀^ι]→ₗ[R] N✝
g✝ g₂ : M✝ [⋀^ι]→ₗ[R] N'
g' : M' [⋀^ι]→ₗ[R] N'
v✝ : ι → M✝
v' : ι → M'
K : Type u_12
inst✝⁵ : Ring K
M : Type u_13
inst✝⁴ : AddCommGroup M
inst✝³ : Module K M
N : Type u_14
inst✝² : AddCommGroup N
inst✝¹ : Module K N
inst✝ : NoZeroSMulDivisors K N
f : M [⋀^ι]→ₗ[K] N
v : ι → M
h✝ : ¬LinearIndependent K v
s : Finset ι
g : ι → K
i : ι
hi : i ∈ s
hz : g i ≠ 0
this : DecidableEq ι := Classical.decEq ι
h : g i • v i = -∑ x ∈ s.erase i, g x • v x
⊢ ∀ x ∈ s.erase i, f (update v i (g x • v x)) = 0

tactic: intro j hj
state_before: case intro.intro.intro.intro.intro.h
R : Type u_1
inst✝²⁰ : Semiring R
M✝ : Type u_2
inst✝¹⁹ : AddCommMonoid M✝
inst✝¹⁸ : Module R M✝
N✝ : Type u_3
inst✝¹⁷ : AddCommMonoid N✝
inst✝¹⁶ : Module R N✝
P : Type u_4
inst✝¹⁵ : AddCommMonoid P
inst✝¹⁴ : Module R P
M' : Type u_5
inst✝¹³ : AddCommGroup M'
inst✝¹² : Module R M'
N' : Type u_6
inst✝¹¹ : AddCommGroup N'
inst✝¹⁰ : Module R N'
ι : Type u_7
ι' : Type u_8
ι'' : Type u_9
M₂ : Type u_10
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R M₂
M₃ : Type u_11
inst✝⁷ : AddCommMonoid M₃
inst✝⁶ : Module R M₃
f✝ f' : M✝ [⋀^ι]→ₗ[R] N✝
g✝ g₂ : M✝ [⋀^ι]→ₗ[R] N'
g' : M' [⋀^ι]→ₗ[R] N'
v✝ : ι → M✝
v' : ι → M'
K : Type u_12
inst✝⁵ : Ring K
M : Type u_13
inst✝⁴ : AddCommGroup M
inst✝³ : Module K M
N : Type u_14
inst✝² : AddCommGroup N
inst✝¹ : Module K N
inst✝ : NoZeroSMulDivisors K N
f : M [⋀^ι]→ₗ[K] N
v : ι → M
h✝ : ¬LinearIndependent K v
s : Finset ι
g : ι → K
i : ι
hi : i ∈ s
hz : g i ≠ 0
this : DecidableEq ι := Classical.decEq ι
h : g i • v i = -∑ x ∈ s.erase i, g x • v x
⊢ ∀ x ∈ s.erase i, f (update v i (g x • v x)) = 0
state_after: case intro.intro.intro.intro.intro.h
R : Type u_1
inst✝²⁰ : Semiring R
M✝ : Type u_2
inst✝¹⁹ : AddCommMonoid M✝
inst✝¹⁸ : Module R M✝
N✝ : Type u_3
inst✝¹⁷ : AddCommMonoid N✝
inst✝¹⁶ : Module R N✝
P : Type u_4
inst✝¹⁵ : AddCommMonoid P
inst✝¹⁴ : Module R P
M' : Type u_5
inst✝¹³ : AddCommGroup M'
inst✝¹² : Module R M'
N' : Type u_6
inst✝¹¹ : AddCommGroup N'
inst✝¹⁰ : Module R N'
ι : Type u_7
ι' : Type u_8
ι'' : Type u_9
M₂ : Type u_10
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R M₂
M₃ : Type u_11
inst✝⁷ : AddCommMonoid M₃
inst✝⁶ : Module R M₃
f✝ f' : M✝ [⋀^ι]→ₗ[R] N✝
g✝ g₂ : M✝ [⋀^ι]→ₗ[R] N'
g' : M' [⋀^ι]→ₗ[R] N'
v✝ : ι → M✝
v' : ι → M'
K : Type u_12
inst✝⁵ : Ring K
M : Type u_13
inst✝⁴ : AddCommGroup M
inst✝³ : Module K M
N : Type u_14
inst✝² : AddCommGroup N
inst✝¹ : Module K N
inst✝ : NoZeroSMulDivisors K N
f : M [⋀^ι]→ₗ[K] N
v : ι → M
h✝ : ¬LinearIndependent K v
s : Finset ι
g : ι → K
i : ι
hi : i ∈ s
hz : g i ≠ 0
this : DecidableEq ι := Classical.decEq ι
h : g i • v i = -∑ x ∈ s.erase i, g x • v x
j : ι
hj : j ∈ s.erase i
⊢ f (update v i (g j • v j)) = 0

tactic: obtain ⟨hij, _⟩ := Finset.mem_erase.mp hj
state_before: case intro.intro.intro.intro.intro.h
R : Type u_1
inst✝²⁰ : Semiring R
M✝ : Type u_2
inst✝¹⁹ : AddCommMonoid M✝
inst✝¹⁸ : Module R M✝
N✝ : Type u_3
inst✝¹⁷ : AddCommMonoid N✝
inst✝¹⁶ : Module R N✝
P : Type u_4
inst✝¹⁵ : AddCommMonoid P
inst✝¹⁴ : Module R P
M' : Type u_5
inst✝¹³ : AddCommGroup M'
inst✝¹² : Module R M'
N' : Type u_6
inst✝¹¹ : AddCommGroup N'
inst✝¹⁰ : Module R N'
ι : Type u_7
ι' : Type u_8
ι'' : Type u_9
M₂ : Type u_10
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R M₂
M₃ : Type u_11
inst✝⁷ : AddCommMonoid M₃
inst✝⁶ : Module R M₃
f✝ f' : M✝ [⋀^ι]→ₗ[R] N✝
g✝ g₂ : M✝ [⋀^ι]→ₗ[R] N'
g' : M' [⋀^ι]→ₗ[R] N'
v✝ : ι → M✝
v' : ι → M'
K : Type u_12
inst✝⁵ : Ring K
M : Type u_13
inst✝⁴ : AddCommGroup M
inst✝³ : Module K M
N : Type u_14
inst✝² : AddCommGroup N
inst✝¹ : Module K N
inst✝ : NoZeroSMulDivisors K N
f : M [⋀^ι]→ₗ[K] N
v : ι → M
h✝ : ¬LinearIndependent K v
s : Finset ι
g : ι → K
i : ι
hi : i ∈ s
hz : g i ≠ 0
this : DecidableEq ι := Classical.decEq ι
h : g i • v i = -∑ x ∈ s.erase i, g x • v x
j : ι
hj : j ∈ s.erase i
⊢ f (update v i (g j • v j)) = 0
state_after: case intro.intro.intro.intro.intro.h.intro
R : Type u_1
inst✝²⁰ : Semiring R
M✝ : Type u_2
inst✝¹⁹ : AddCommMonoid M✝
inst✝¹⁸ : Module R M✝
N✝ : Type u_3
inst✝¹⁷ : AddCommMonoid N✝
inst✝¹⁶ : Module R N✝
P : Type u_4
inst✝¹⁵ : AddCommMonoid P
inst✝¹⁴ : Module R P
M' : Type u_5
inst✝¹³ : AddCommGroup M'
inst✝¹² : Module R M'
N' : Type u_6
inst✝¹¹ : AddCommGroup N'
inst✝¹⁰ : Module R N'
ι : Type u_7
ι' : Type u_8
ι'' : Type u_9
M₂ : Type u_10
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R M₂
M₃ : Type u_11
inst✝⁷ : AddCommMonoid M₃
inst✝⁶ : Module R M₃
f✝ f' : M✝ [⋀^ι]→ₗ[R] N✝
g✝ g₂ : M✝ [⋀^ι]→ₗ[R] N'
g' : M' [⋀^ι]→ₗ[R] N'
v✝ : ι → M✝
v' : ι → M'
K : Type u_12
inst✝⁵ : Ring K
M : Type u_13
inst✝⁴ : AddCommGroup M
inst✝³ : Module K M
N : Type u_14
inst✝² : AddCommGroup N
inst✝¹ : Module K N
inst✝ : NoZeroSMulDivisors K N
f : M [⋀^ι]→ₗ[K] N
v : ι → M
h✝ : ¬LinearIndependent K v
s : Finset ι
g : ι → K
i : ι
hi : i ∈ s
hz : g i ≠ 0
this : DecidableEq ι := Classical.decEq ι
h : g i • v i = -∑ x ∈ s.erase i, g x • v x
j : ι
hj : j ∈ s.erase i
hij : j ≠ i
right✝ : j ∈ s
⊢ f (update v i (g j • v j)) = 0

tactic: rw [f.map_smul, f.map_update_self _ hij.symm, smul_zero]
state_before: case intro.intro.intro.intro.intro.h.intro
R : Type u_1
inst✝²⁰ : Semiring R
M✝ : Type u_2
inst✝¹⁹ : AddCommMonoid M✝
inst✝¹⁸ : Module R M✝
N✝ : Type u_3
inst✝¹⁷ : AddCommMonoid N✝
inst✝¹⁶ : Module R N✝
P : Type u_4
inst✝¹⁵ : AddCommMonoid P
inst✝¹⁴ : Module R P
M' : Type u_5
inst✝¹³ : AddCommGroup M'
inst✝¹² : Module R M'
N' : Type u_6
inst✝¹¹ : AddCommGroup N'
inst✝¹⁰ : Module R N'
ι : Type u_7
ι' : Type u_8
ι'' : Type u_9
M₂ : Type u_10
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R M₂
M₃ : Type u_11
inst✝⁷ : AddCommMonoid M₃
inst✝⁶ : Module R M₃
f✝ f' : M✝ [⋀^ι]→ₗ[R] N✝
g✝ g₂ : M✝ [⋀^ι]→ₗ[R] N'
g' : M' [⋀^ι]→ₗ[R] N'
v✝ : ι → M✝
v' : ι → M'
K : Type u_12
inst✝⁵ : Ring K
M : Type u_13
inst✝⁴ : AddCommGroup M
inst✝³ : Module K M
N : Type u_14
inst✝² : AddCommGroup N
inst✝¹ : Module K N
inst✝ : NoZeroSMulDivisors K N
f : M [⋀^ι]→ₗ[K] N
v : ι → M
h✝ : ¬LinearIndependent K v
s : Finset ι
g : ι → K
i : ι
hi : i ∈ s
hz : g i ≠ 0
this : DecidableEq ι := Classical.decEq ι
h : g i • v i = -∑ x ∈ s.erase i, g x • v x
j : ι
hj : j ∈ s.erase i
hij : j ≠ i
right✝ : j ∈ s
⊢ f (update v i (g j • v j)) = 0
state_after: no goals

tactic: rw [f.map_smul, Function.update_eq_self, smul_eq_zero] at this
state_before: R : Type u_1
inst✝²⁰ : Semiring R
M✝ : Type u_2
inst✝¹⁹ : AddCommMonoid M✝
inst✝¹⁸ : Module R M✝
N✝ : Type u_3
inst✝¹⁷ : AddCommMonoid N✝
inst✝¹⁶ : Module R N✝
P : Type u_4
inst✝¹⁵ : AddCommMonoid P
inst✝¹⁴ : Module R P
M' : Type u_5
inst✝¹³ : AddCommGroup M'
inst✝¹² : Module R M'
N' : Type u_6
inst✝¹¹ : AddCommGroup N'
inst✝¹⁰ : Module R N'
ι : Type u_7
ι' : Type u_8
ι'' : Type u_9
M₂ : Type u_10
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R M₂
M₃ : Type u_11
inst✝⁷ : AddCommMonoid M₃
inst✝⁶ : Module R M₃
f✝ f' : M✝ [⋀^ι]→ₗ[R] N✝
g✝ g₂ : M✝ [⋀^ι]→ₗ[R] N'
g' : M' [⋀^ι]→ₗ[R] N'
v✝ : ι → M✝
v' : ι → M'
K : Type u_12
inst✝⁵ : Ring K
M : Type u_13
inst✝⁴ : AddCommGroup M
inst✝³ : Module K M
N : Type u_14
inst✝² : AddCommGroup N
inst✝¹ : Module K N
inst✝ : NoZeroSMulDivisors K N
f : M [⋀^ι]→ₗ[K] N
v : ι → M
h✝ : ¬LinearIndependent K v
s : Finset ι
g : ι → K
h : ∑ i ∈ s, g i • v i = 0
i : ι
hi : i ∈ s
hz : g i ≠ 0
this✝ : DecidableEq ι := Classical.decEq ι
this : f (update v i (g i • v i)) = 0
⊢ f v = 0
state_after: R : Type u_1
inst✝²⁰ : Semiring R
M✝ : Type u_2
inst✝¹⁹ : AddCommMonoid M✝
inst✝¹⁸ : Module R M✝
N✝ : Type u_3
inst✝¹⁷ : AddCommMonoid N✝
inst✝¹⁶ : Module R N✝
P : Type u_4
inst✝¹⁵ : AddCommMonoid P
inst✝¹⁴ : Module R P
M' : Type u_5
inst✝¹³ : AddCommGroup M'
inst✝¹² : Module R M'
N' : Type u_6
inst✝¹¹ : AddCommGroup N'
inst✝¹⁰ : Module R N'
ι : Type u_7
ι' : Type u_8
ι'' : Type u_9
M₂ : Type u_10
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R M₂
M₃ : Type u_11
inst✝⁷ : AddCommMonoid M₃
inst✝⁶ : Module R M₃
f✝ f' : M✝ [⋀^ι]→ₗ[R] N✝
g✝ g₂ : M✝ [⋀^ι]→ₗ[R] N'
g' : M' [⋀^ι]→ₗ[R] N'
v✝ : ι → M✝
v' : ι → M'
K : Type u_12
inst✝⁵ : Ring K
M : Type u_13
inst✝⁴ : AddCommGroup M
inst✝³ : Module K M
N : Type u_14
inst✝² : AddCommGroup N
inst✝¹ : Module K N
inst✝ : NoZeroSMulDivisors K N
f : M [⋀^ι]→ₗ[K] N
v : ι → M
h✝ : ¬LinearIndependent K v
s : Finset ι
g : ι → K
h : ∑ i ∈ s, g i • v i = 0
i : ι
hi : i ∈ s
hz : g i ≠ 0
this✝ : DecidableEq ι := Classical.decEq ι
this : g i = 0 ∨ f v = 0
⊢ f v = 0

tactic: exact Or.resolve_left this hz
state_before: R : Type u_1
inst✝²⁰ : Semiring R
M✝ : Type u_2
inst✝¹⁹ : AddCommMonoid M✝
inst✝¹⁸ : Module R M✝
N✝ : Type u_3
inst✝¹⁷ : AddCommMonoid N✝
inst✝¹⁶ : Module R N✝
P : Type u_4
inst✝¹⁵ : AddCommMonoid P
inst✝¹⁴ : Module R P
M' : Type u_5
inst✝¹³ : AddCommGroup M'
inst✝¹² : Module R M'
N' : Type u_6
inst✝¹¹ : AddCommGroup N'
inst✝¹⁰ : Module R N'
ι : Type u_7
ι' : Type u_8
ι'' : Type u_9
M₂ : Type u_10
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R M₂
M₃ : Type u_11
inst✝⁷ : AddCommMonoid M₃
inst✝⁶ : Module R M₃
f✝ f' : M✝ [⋀^ι]→ₗ[R] N✝
g✝ g₂ : M✝ [⋀^ι]→ₗ[R] N'
g' : M' [⋀^ι]→ₗ[R] N'
v✝ : ι → M✝
v' : ι → M'
K : Type u_12
inst✝⁵ : Ring K
M : Type u_13
inst✝⁴ : AddCommGroup M
inst✝³ : Module K M
N : Type u_14
inst✝² : AddCommGroup N
inst✝¹ : Module K N
inst✝ : NoZeroSMulDivisors K N
f : M [⋀^ι]→ₗ[K] N
v : ι → M
h✝ : ¬LinearIndependent K v
s : Finset ι
g : ι → K
h : ∑ i ∈ s, g i • v i = 0
i : ι
hi : i ∈ s
hz : g i ≠ 0
this✝ : DecidableEq ι := Classical.decEq ι
this : g i = 0 ∨ f v = 0
⊢ f v = 0
state_after: no goals