Theorem: exists_maximal_independent'
File: Mathlib/LinearAlgebra/LinearIndependent.lean

tactic: let indep : Set ι → Prop := fun I => LinearIndependent R (s ∘ (↑) : I → M)
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
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 : LinearIndependent R v
s : ι → M
⊢ ∃ I,
    (LinearIndependent R fun (x : ↑I) => s ↑x) ∧
      ∀ (J : Set ι), I ⊆ J → (LinearIndependent R fun (x : ↑J) => s ↑x) → I = J
state_after: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
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 : LinearIndependent R v
s : ι → M
indep : Set ι → Prop := fun I => LinearIndependent (ι := ↑I) R (s ∘ Subtype.val)
⊢ ∃ I,
    (LinearIndependent R fun (x : ↑I) => s ↑x) ∧
      ∀ (J : Set ι), I ⊆ J → (LinearIndependent R fun (x : ↑J) => s ↑x) → I = J

tactic: let X := { I : Set ι // indep I }
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
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 : LinearIndependent R v
s : ι → M
indep : Set ι → Prop := fun I => LinearIndependent (ι := ↑I) R (s ∘ Subtype.val)
⊢ ∃ I,
    (LinearIndependent R fun (x : ↑I) => s ↑x) ∧
      ∀ (J : Set ι), I ⊆ J → (LinearIndependent R fun (x : ↑J) => s ↑x) → I = J
state_after: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
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 : LinearIndependent R v
s : ι → M
indep : Set ι → Prop := fun I => LinearIndependent (ι := ↑I) R (s ∘ Subtype.val)
X : Type u' := { I // indep I }
⊢ ∃ I,
    (LinearIndependent R fun (x : ↑I) => s ↑x) ∧
      ∀ (J : Set ι), I ⊆ J → (LinearIndependent R fun (x : ↑J) => s ↑x) → I = J

tactic: let r : X → X → Prop := fun I J => I.1 ⊆ J.1
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
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 : LinearIndependent R v
s : ι → M
indep : Set ι → Prop := fun I => LinearIndependent (ι := ↑I) R (s ∘ Subtype.val)
X : Type u' := { I // indep I }
⊢ ∃ I,
    (LinearIndependent R fun (x : ↑I) => s ↑x) ∧
      ∀ (J : Set ι), I ⊆ J → (LinearIndependent R fun (x : ↑J) => s ↑x) → I = J
state_after: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
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 : LinearIndependent R v
s : ι → M
indep : Set ι → Prop := fun I => LinearIndependent (ι := ↑I) R (s ∘ Subtype.val)
X : Type u' := { I // indep I }
r : X → X → Prop := fun I J => ↑I ⊆ ↑J
⊢ ∃ I,
    (LinearIndependent R fun (x : ↑I) => s ↑x) ∧
      ∀ (J : Set ι), I ⊆ J → (LinearIndependent R fun (x : ↑J) => s ↑x) → I = J

tactic: have trans : Transitive r := fun I J K => Set.Subset.trans
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
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 : LinearIndependent R v
s : ι → M
indep : Set ι → Prop := fun I => LinearIndependent (ι := ↑I) R (s ∘ Subtype.val)
X : Type u' := { I // indep I }
r : X → X → Prop := fun I J => ↑I ⊆ ↑J
key : ∀ (c : Set X), IsChain r c → indep (⋃ I ∈ c, ↑I)
⊢ ∃ I,
    (LinearIndependent R fun (x : ↑I) => s ↑x) ∧
      ∀ (J : Set ι), I ⊆ J → (LinearIndependent R fun (x : ↑J) => s ↑x) → I = J
state_after: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
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 : LinearIndependent R v
s : ι → M
indep : Set ι → Prop := fun I => LinearIndependent (ι := ↑I) R (s ∘ Subtype.val)
X : Type u' := { I // indep I }
r : X → X → Prop := fun I J => ↑I ⊆ ↑J
key : ∀ (c : Set X), IsChain r c → indep (⋃ I ∈ c, ↑I)
trans : Transitive r
⊢ ∃ I,
    (LinearIndependent R fun (x : ↑I) => s ↑x) ∧
      ∀ (J : Set ι), I ⊆ J → (LinearIndependent R fun (x : ↑J) => s ↑x) → I = J

tactic: obtain ⟨⟨I, hli : indep I⟩, hmax : ∀ a, r ⟨I, hli⟩ a → r a ⟨I, hli⟩⟩ :=
  exists_maximal_of_chains_bounded
    (fun c hc => ⟨⟨⋃ I ∈ c, (I : Set ι), key c hc⟩, fun I => Set.subset_biUnion_of_mem⟩) @trans
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
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 : LinearIndependent R v
s : ι → M
indep : Set ι → Prop := fun I => LinearIndependent (ι := ↑I) R (s ∘ Subtype.val)
X : Type u' := { I // indep I }
r : X → X → Prop := fun I J => ↑I ⊆ ↑J
key : ∀ (c : Set X), IsChain r c → indep (⋃ I ∈ c, ↑I)
trans : Transitive r
⊢ ∃ I,
    (LinearIndependent R fun (x : ↑I) => s ↑x) ∧
      ∀ (J : Set ι), I ⊆ J → (LinearIndependent R fun (x : ↑J) => s ↑x) → I = J
state_after: case intro.mk
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
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 : LinearIndependent R v
s : ι → M
indep : Set ι → Prop := fun I => LinearIndependent (ι := ↑I) R (s ∘ Subtype.val)
X : Type u' := { I // indep I }
r : X → X → Prop := fun I J => ↑I ⊆ ↑J
key : ∀ (c : Set X), IsChain r c → indep (⋃ I ∈ c, ↑I)
trans : Transitive r
I : Set ι
hli : indep I
hmax : ∀ (a : X), r ⟨I, hli⟩ a → r a ⟨I, hli⟩
⊢ ∃ I,
    (LinearIndependent R fun (x : ↑I) => s ↑x) ∧
      ∀ (J : Set ι), I ⊆ J → (LinearIndependent R fun (x : ↑J) => s ↑x) → I = J

tactic: exact ⟨I, hli, fun J hsub hli => Set.Subset.antisymm hsub (hmax ⟨J, hli⟩ hsub)⟩
state_before: case intro.mk
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
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 : LinearIndependent R v
s : ι → M
indep : Set ι → Prop := fun I => LinearIndependent (ι := ↑I) R (s ∘ Subtype.val)
X : Type u' := { I // indep I }
r : X → X → Prop := fun I J => ↑I ⊆ ↑J
key : ∀ (c : Set X), IsChain r c → indep (⋃ I ∈ c, ↑I)
trans : Transitive r
I : Set ι
hli : indep I
hmax : ∀ (a : X), r ⟨I, hli⟩ a → r a ⟨I, hli⟩
⊢ ∃ I,
    (LinearIndependent R fun (x : ↑I) => s ↑x) ∧
      ∀ (J : Set ι), I ⊆ J → (LinearIndependent R fun (x : ↑J) => s ↑x) → I = J
state_after: no goals

tactic: intro c hc
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
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 : LinearIndependent R v
s : ι → M
indep : Set ι → Prop := fun I => LinearIndependent (ι := ↑I) R (s ∘ Subtype.val)
X : Type u' := { I // indep I }
r : X → X → Prop := fun I J => ↑I ⊆ ↑J
⊢ ∀ (c : Set X), IsChain r c → indep (⋃ I ∈ c, ↑I)
state_after: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
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 : LinearIndependent R v
s : ι → M
indep : Set ι → Prop := fun I => LinearIndependent (ι := ↑I) R (s ∘ Subtype.val)
X : Type u' := { I // indep I }
r : X → X → Prop := fun I J => ↑I ⊆ ↑J
c : Set X
hc : IsChain r c
⊢ indep (⋃ I ∈ c, ↑I)

tactic: dsimp [indep]
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
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 : LinearIndependent R v
s : ι → M
indep : Set ι → Prop := fun I => LinearIndependent (ι := ↑I) R (s ∘ Subtype.val)
X : Type u' := { I // indep I }
r : X → X → Prop := fun I J => ↑I ⊆ ↑J
c : Set X
hc : IsChain r c
⊢ indep (⋃ I ∈ c, ↑I)
state_after: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
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 : LinearIndependent R v
s : ι → M
indep : Set ι → Prop := fun I => LinearIndependent (ι := ↑I) R (s ∘ Subtype.val)
X : Type u' := { I // indep I }
r : X → X → Prop := fun I J => ↑I ⊆ ↑J
c : Set X
hc : IsChain r c
⊢ LinearIndependent (ι := ↑(⋃ I ∈ c, ↑I)) R (s ∘ Subtype.val)

tactic: rw [linearIndependent_comp_subtype]
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
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 : LinearIndependent R v
s : ι → M
indep : Set ι → Prop := fun I => LinearIndependent (ι := ↑I) R (s ∘ Subtype.val)
X : Type u' := { I // indep I }
r : X → X → Prop := fun I J => ↑I ⊆ ↑J
c : Set X
hc : IsChain r c
⊢ LinearIndependent (ι := ↑(⋃ I ∈ c, ↑I)) R (s ∘ Subtype.val)
state_after: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
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 : LinearIndependent R v
s : ι → M
indep : Set ι → Prop := fun I => LinearIndependent (ι := ↑I) R (s ∘ Subtype.val)
X : Type u' := { I // indep I }
r : X → X → Prop := fun I J => ↑I ⊆ ↑J
c : Set X
hc : IsChain r c
⊢ ∀ l ∈ Finsupp.supported R R (⋃ I ∈ c, ↑I), (Finsupp.total ι M R s) l = 0 → l = 0

tactic: intro f hsupport hsum
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
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 : LinearIndependent R v
s : ι → M
indep : Set ι → Prop := fun I => LinearIndependent (ι := ↑I) R (s ∘ Subtype.val)
X : Type u' := { I // indep I }
r : X → X → Prop := fun I J => ↑I ⊆ ↑J
c : Set X
hc : IsChain r c
⊢ ∀ l ∈ Finsupp.supported R R (⋃ I ∈ c, ↑I), (Finsupp.total ι M R s) l = 0 → l = 0
state_after: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
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 : LinearIndependent R v
s : ι → M
indep : Set ι → Prop := fun I => LinearIndependent (ι := ↑I) R (s ∘ Subtype.val)
X : Type u' := { I // indep I }
r : X → X → Prop := fun I J => ↑I ⊆ ↑J
c : Set X
hc : IsChain r c
f : ι →₀ R
hsupport : f ∈ Finsupp.supported R R (⋃ I ∈ c, ↑I)
hsum : (Finsupp.total ι M R s) f = 0
⊢ f = 0

tactic: rcases eq_empty_or_nonempty c with (rfl | hn)
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
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 : LinearIndependent R v
s : ι → M
indep : Set ι → Prop := fun I => LinearIndependent (ι := ↑I) R (s ∘ Subtype.val)
X : Type u' := { I // indep I }
r : X → X → Prop := fun I J => ↑I ⊆ ↑J
c : Set X
hc : IsChain r c
f : ι →₀ R
hsupport : f ∈ Finsupp.supported R R (⋃ I ∈ c, ↑I)
hsum : (Finsupp.total ι M R s) f = 0
⊢ f = 0
state_after: case inl
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
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 : LinearIndependent R v
s : ι → M
indep : Set ι → Prop := fun I => LinearIndependent (ι := ↑I) R (s ∘ Subtype.val)
X : Type u' := { I // indep I }
r : X → X → Prop := fun I J => ↑I ⊆ ↑J
f : ι →₀ R
hsum : (Finsupp.total ι M R s) f = 0
hc : IsChain r ∅
hsupport : f ∈ Finsupp.supported R R (⋃ I ∈ ∅, ↑I)
⊢ f = 0

case inr
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
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 : LinearIndependent R v
s : ι → M
indep : Set ι → Prop := fun I => LinearIndependent (ι := ↑I) R (s ∘ Subtype.val)
X : Type u' := { I // indep I }
r : X → X → Prop := fun I J => ↑I ⊆ ↑J
c : Set X
hc : IsChain r c
f : ι →₀ R
hsupport : f ∈ Finsupp.supported R R (⋃ I ∈ c, ↑I)
hsum : (Finsupp.total ι M R s) f = 0
hn : c.Nonempty
⊢ f = 0

tactic: haveI : IsRefl X r := ⟨fun _ => Set.Subset.refl _⟩
state_before: case inr
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
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 : LinearIndependent R v
s : ι → M
indep : Set ι → Prop := fun I => LinearIndependent (ι := ↑I) R (s ∘ Subtype.val)
X : Type u' := { I // indep I }
r : X → X → Prop := fun I J => ↑I ⊆ ↑J
c : Set X
hc : IsChain r c
f : ι →₀ R
hsupport : f ∈ Finsupp.supported R R (⋃ I ∈ c, ↑I)
hsum : (Finsupp.total ι M R s) f = 0
hn : c.Nonempty
⊢ f = 0
state_after: case inr
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
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 : LinearIndependent R v
s : ι → M
indep : Set ι → Prop := fun I => LinearIndependent (ι := ↑I) R (s ∘ Subtype.val)
X : Type u' := { I // indep I }
r : X → X → Prop := fun I J => ↑I ⊆ ↑J
c : Set X
hc : IsChain r c
f : ι →₀ R
hsupport : f ∈ Finsupp.supported R R (⋃ I ∈ c, ↑I)
hsum : (Finsupp.total ι M R s) f = 0
hn : c.Nonempty
this : IsRefl X r
⊢ f = 0

tactic: obtain ⟨I, _I_mem, hI⟩ : ∃ I ∈ c, (f.support : Set ι) ⊆ I :=
  hc.directedOn.exists_mem_subset_of_finset_subset_biUnion hn hsupport
state_before: case inr
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
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 : LinearIndependent R v
s : ι → M
indep : Set ι → Prop := fun I => LinearIndependent (ι := ↑I) R (s ∘ Subtype.val)
X : Type u' := { I // indep I }
r : X → X → Prop := fun I J => ↑I ⊆ ↑J
c : Set X
hc : IsChain r c
f : ι →₀ R
hsupport : f ∈ Finsupp.supported R R (⋃ I ∈ c, ↑I)
hsum : (Finsupp.total ι M R s) f = 0
hn : c.Nonempty
this : IsRefl X r
⊢ f = 0
state_after: case inr.intro.intro
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
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 : LinearIndependent R v
s : ι → M
indep : Set ι → Prop := fun I => LinearIndependent (ι := ↑I) R (s ∘ Subtype.val)
X : Type u' := { I // indep I }
r : X → X → Prop := fun I J => ↑I ⊆ ↑J
c : Set X
hc : IsChain r c
f : ι →₀ R
hsupport : f ∈ Finsupp.supported R R (⋃ I ∈ c, ↑I)
hsum : (Finsupp.total ι M R s) f = 0
hn : c.Nonempty
this : IsRefl X r
I : X
_I_mem : I ∈ c
hI : ↑f.support ⊆ ↑I
⊢ f = 0

tactic: exact linearIndependent_comp_subtype.mp I.2 f hI hsum
state_before: case inr.intro.intro
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
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 : LinearIndependent R v
s : ι → M
indep : Set ι → Prop := fun I => LinearIndependent (ι := ↑I) R (s ∘ Subtype.val)
X : Type u' := { I // indep I }
r : X → X → Prop := fun I J => ↑I ⊆ ↑J
c : Set X
hc : IsChain r c
f : ι →₀ R
hsupport : f ∈ Finsupp.supported R R (⋃ I ∈ c, ↑I)
hsum : (Finsupp.total ι M R s) f = 0
hn : c.Nonempty
this : IsRefl X r
I : X
_I_mem : I ∈ c
hI : ↑f.support ⊆ ↑I
⊢ f = 0
state_after: no goals

tactic: simpa using hsupport
state_before: case inl
ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
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 : LinearIndependent R v
s : ι → M
indep : Set ι → Prop := fun I => LinearIndependent (ι := ↑I) R (s ∘ Subtype.val)
X : Type u' := { I // indep I }
r : X → X → Prop := fun I J => ↑I ⊆ ↑J
f : ι →₀ R
hsum : (Finsupp.total ι M R s) f = 0
hc : IsChain r ∅
hsupport : f ∈ Finsupp.supported R R (⋃ I ∈ ∅, ↑I)
⊢ f = 0
state_after: no goals