Theorem: Basis.maximal
File: Mathlib/LinearAlgebra/Basis.lean

Proof steps:
state_before: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
v : ι → M
inst✝⁹ : Ring R
inst✝⁸ : CommRing R₂
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M''
inst✝⁴ : Module R M
inst✝³ : Module R₂ M
inst✝² : Module R M'
inst✝¹ : Module R M''
c d : R
x y : M
b✝ : Basis ι R M
inst✝ : Nontrivial R
b : Basis ι R M
w : Set M
hi : LinearIndependent (ι := { x // x ∈ w }) R Subtype.val
h : Set.range ⇑b ≤ w
⊢ Set.range ⇑b = w
state_after: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
v : ι → M
inst✝⁹ : Ring R
inst✝⁸ : CommRing R₂
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M''
inst✝⁴ : Module R M
inst✝³ : Module R₂ M
inst✝² : Module R M'
inst✝¹ : Module R M''
c d : R
x y : M
b✝ : Basis ι R M
inst✝ : Nontrivial R
b : Basis ι R M
w : Set M
hi : LinearIndependent (ι := { x // x ∈ w }) R Subtype.val
h : Set.range ⇑b ≤ w
⊢ w ≤ Set.range ⇑b
tactic: apply le_antisymm h
state_before: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
v : ι → M
inst✝⁹ : Ring R
inst✝⁸ : CommRing R₂
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M''
inst✝⁴ : Module R M
inst✝³ : Module R₂ M
inst✝² : Module R M'
inst✝¹ : Module R M''
c d : R
x y : M
b✝ : Basis ι R M
inst✝ : Nontrivial R
b : Basis ι R M
w : Set M
hi : LinearIndependent (ι := { x // x ∈ w }) R Subtype.val
h : Set.range ⇑b ≤ w
⊢ w ≤ Set.range ⇑b
state_after: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
v : ι → M
inst✝⁹ : Ring R
inst✝⁸ : CommRing R₂
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M''
inst✝⁴ : Module R M
inst✝³ : Module R₂ M
inst✝² : Module R M'
inst✝¹ : Module R M''
c d : R
x✝ y : M
b✝ : Basis ι R M
inst✝ : Nontrivial R
b : Basis ι R M
w : Set M
hi : LinearIndependent (ι := { x // x ∈ w }) R Subtype.val
h : Set.range ⇑b ≤ w
x : M
p : x ∈ w
⊢ x ∈ Set.range ⇑b
tactic: intro x p
state_before: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
v : ι → M
inst✝⁹ : Ring R
inst✝⁸ : CommRing R₂
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M''
inst✝⁴ : Module R M
inst✝³ : Module R₂ M
inst✝² : Module R M'
inst✝¹ : Module R M''
c d : R
x✝ y : M
b✝ : Basis ι R M
inst✝ : Nontrivial R
b : Basis ι R M
w : Set M
hi : LinearIndependent (ι := { x // x ∈ w }) R Subtype.val
h : Set.range ⇑b ≤ w
x : M
p : x ∈ w
⊢ x ∈ Set.range ⇑b
state_after: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
v : ι → M
inst✝⁹ : Ring R
inst✝⁸ : CommRing R₂
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M''
inst✝⁴ : Module R M
inst✝³ : Module R₂ M
inst✝² : Module R M'
inst✝¹ : Module R M''
c d : R
x✝ y : M
b✝ : Basis ι R M
inst✝ : Nontrivial R
b : Basis ι R M
w : Set M
hi : LinearIndependent (ι := { x // x ∈ w }) R Subtype.val
h : Set.range ⇑b ≤ w
x : M
p : x ∈ w
q : x ∉ Set.range ⇑b
⊢ False
tactic: by_contra q
state_before: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
v : ι → M
inst✝⁹ : Ring R
inst✝⁸ : CommRing R₂
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M''
inst✝⁴ : Module R M
inst✝³ : Module R₂ M
inst✝² : Module R M'
inst✝¹ : Module R M''
c d : R
x✝ y : M
b✝ : Basis ι R M
inst✝ : Nontrivial R
b : Basis ι R M
w : Set M
hi : LinearIndependent (ι := { x // x ∈ w }) R Subtype.val
h : Set.range ⇑b ≤ w
x : M
p : x ∈ w
q : x ∉ Set.range ⇑b
⊢ False
state_after: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
v : ι → M
inst✝⁹ : Ring R
inst✝⁸ : CommRing R₂
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M''
inst✝⁴ : Module R M
inst✝³ : Module R₂ M
inst✝² : Module R M'
inst✝¹ : Module R M''
c d : R
x✝ y : M
b✝ : Basis ι R M
inst✝ : Nontrivial R
b : Basis ι R M
w : Set M
hi : LinearIndependent (ι := { x // x ∈ w }) R Subtype.val
h : Set.range ⇑b ≤ w
x : M
p : x ∈ w
q : x ∉ Set.range ⇑b
e : (Finsupp.total ι M R ⇑b) (b.repr x) = x
⊢ False
tactic: have e := b.total_repr x
state_before: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
v : ι → M
inst✝⁹ : Ring R
inst✝⁸ : CommRing R₂
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M''
inst✝⁴ : Module R M
inst✝³ : Module R₂ M
inst✝² : Module R M'
inst✝¹ : Module R M''
c d : R
x✝ y : M
b✝ : Basis ι R M
inst✝ : Nontrivial R
b : Basis ι R M
w : Set M
hi : LinearIndependent (ι := { x // x ∈ w }) R Subtype.val
h : Set.range ⇑b ≤ w
x : M
p : x ∈ w
q : x ∉ Set.range ⇑b
e : (Finsupp.total ι M R ⇑b) (b.repr x) = x
⊢ False
state_after: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
v : ι → M
inst✝⁹ : Ring R
inst✝⁸ : CommRing R₂
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M''
inst✝⁴ : Module R M
inst✝³ : Module R₂ M
inst✝² : Module R M'
inst✝¹ : Module R M''
c d : R
x✝ y : M
b✝ : Basis ι R M
inst✝ : Nontrivial R
b : Basis ι R M
w : Set M
hi : LinearIndependent (ι := { x // x ∈ w }) R Subtype.val
h : Set.range ⇑b ≤ w
x : M
p : x ∈ w
q : x ∉ Set.range ⇑b
e : (Finsupp.total ι M R ⇑b) (b.repr x) = x
u : ι ↪ ↑w := { toFun := fun i => ⟨b i, ⋯⟩, inj' := ⋯ }
⊢ False
tactic: let u : ι ↪ w :=
    ⟨fun i => ⟨b i, h ⟨i, rfl⟩⟩, fun i i' r =>
      b.injective (by simpa only [Subtype.mk_eq_mk] using r)⟩
state_before: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
v : ι → M
inst✝⁹ : Ring R
inst✝⁸ : CommRing R₂
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M''
inst✝⁴ : Module R M
inst✝³ : Module R₂ M
inst✝² : Module R M'
inst✝¹ : Module R M''
c d : R
x✝ y : M
b✝ : Basis ι R M
inst✝ : Nontrivial R
b : Basis ι R M
w : Set M
hi : LinearIndependent (ι := { x // x ∈ w }) R Subtype.val
h : Set.range ⇑b ≤ w
x : M
p : x ∈ w
q : x ∉ Set.range ⇑b
e : (Finsupp.total ι M R ⇑b) (b.repr x) = x
u : ι ↪ ↑w := { toFun := fun i => ⟨b i, ⋯⟩, inj' := ⋯ }
⊢ False
state_after: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
v : ι → M
inst✝⁹ : Ring R
inst✝⁸ : CommRing R₂
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M''
inst✝⁴ : Module R M
inst✝³ : Module R₂ M
inst✝² : Module R M'
inst✝¹ : Module R M''
c d : R
x✝ y : M
b✝ : Basis ι R M
inst✝ : Nontrivial R
b : Basis ι R M
w : Set M
hi : LinearIndependent (ι := { x // x ∈ w }) R Subtype.val
h : Set.range ⇑b ≤ w
x : M
p : x ∈ w
q : x ∉ Set.range ⇑b
e : ((b.repr x).sum fun i a => a • b i) = x
u : ι ↪ ↑w := { toFun := fun i => ⟨b i, ⋯⟩, inj' := ⋯ }
⊢ False
tactic: simp_rw [Finsupp.total_apply] at e
state_before: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
v : ι → M
inst✝⁹ : Ring R
inst✝⁸ : CommRing R₂
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M''
inst✝⁴ : Module R M
inst✝³ : Module R₂ M
inst✝² : Module R M'
inst✝¹ : Module R M''
c d : R
x✝ y : M
b✝ : Basis ι R M
inst✝ : Nontrivial R
b : Basis ι R M
w : Set M
hi : LinearIndependent (ι := { x // x ∈ w }) R Subtype.val
h : Set.range ⇑b ≤ w
x : M
p : x ∈ w
q : x ∉ Set.range ⇑b
e : ((b.repr x).sum fun i a => a • b i) = x
u : ι ↪ ↑w := { toFun := fun i => ⟨b i, ⋯⟩, inj' := ⋯ }
⊢ False
state_after: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
v : ι → M
inst✝⁹ : Ring R
inst✝⁸ : CommRing R₂
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M''
inst✝⁴ : Module R M
inst✝³ : Module R₂ M
inst✝² : Module R M'
inst✝¹ : Module R M''
c d : R
x✝ y : M
b✝ : Basis ι R M
inst✝ : Nontrivial R
b : Basis ι R M
w : Set M
hi : LinearIndependent (ι := { x // x ∈ w }) R Subtype.val
h : Set.range ⇑b ≤ w
x : M
p : x ∈ w
q : x ∉ Set.range ⇑b
u : ι ↪ ↑w := { toFun := fun i => ⟨b i, ⋯⟩, inj' := ⋯ }
e : ((b.repr x).sum fun i a => a • ↑(u i)) = ↑⟨x, p⟩
⊢ False
tactic: change ((b.repr x).sum fun (i : ι) (a : R) ↦ a • (u i : M)) = ((⟨x, p⟩ : w) : M) at e
state_before: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
v : ι → M
inst✝⁹ : Ring R
inst✝⁸ : CommRing R₂
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M''
inst✝⁴ : Module R M
inst✝³ : Module R₂ M
inst✝² : Module R M'
inst✝¹ : Module R M''
c d : R
x✝ y : M
b✝ : Basis ι R M
inst✝ : Nontrivial R
b : Basis ι R M
w : Set M
hi : LinearIndependent (ι := { x // x ∈ w }) R Subtype.val
h : Set.range ⇑b ≤ w
x : M
p : x ∈ w
q : x ∉ Set.range ⇑b
u : ι ↪ ↑w := { toFun := fun i => ⟨b i, ⋯⟩, inj' := ⋯ }
e : ((b.repr x).sum fun i a => a • ↑(u i)) = ↑⟨x, p⟩
⊢ False
state_after: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
v : ι → M
inst✝⁹ : Ring R
inst✝⁸ : CommRing R₂
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M''
inst✝⁴ : Module R M
inst✝³ : Module R₂ M
inst✝² : Module R M'
inst✝¹ : Module R M''
c d : R
x✝ y : M
b✝ : Basis ι R M
inst✝ : Nontrivial R
b : Basis ι R M
w : Set M
hi : LinearIndependent (ι := { x // x ∈ w }) R Subtype.val
h : Set.range ⇑b ≤ w
x : M
p : x ∈ w
q : x ∉ Set.range ⇑b
u : ι ↪ ↑w := { toFun := fun i => ⟨b i, ⋯⟩, inj' := ⋯ }
e : (Finsupp.total (↑w) M R Subtype.val) (Finsupp.embDomain u (b.repr x)) = ↑⟨x, p⟩
⊢ False
tactic: rw [← Finsupp.sum_embDomain (f := u) (g := fun x r ↦ r • (x : M)), ← Finsupp.total_apply] at e
state_before: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
v : ι → M
inst✝⁹ : Ring R
inst✝⁸ : CommRing R₂
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M''
inst✝⁴ : Module R M
inst✝³ : Module R₂ M
inst✝² : Module R M'
inst✝¹ : Module R M''
c d : R
x✝ y : M
b✝ : Basis ι R M
inst✝ : Nontrivial R
b : Basis ι R M
w : Set M
hi : LinearIndependent (ι := { x // x ∈ w }) R Subtype.val
h : Set.range ⇑b ≤ w
x : M
p : x ∈ w
q : x ∉ Set.range ⇑b
u : ι ↪ ↑w := { toFun := fun i => ⟨b i, ⋯⟩, inj' := ⋯ }
e : (Finsupp.total (↑w) M R Subtype.val) (Finsupp.embDomain u (b.repr x)) = ↑⟨x, p⟩
⊢ False
state_after: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
v : ι → M
inst✝⁹ : Ring R
inst✝⁸ : CommRing R₂
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M''
inst✝⁴ : Module R M
inst✝³ : Module R₂ M
inst✝² : Module R M'
inst✝¹ : Module R M''
c d : R
x✝ y : M
b✝ : Basis ι R M
inst✝ : Nontrivial R
b : Basis ι R M
w : Set M
hi : LinearIndependent (ι := { x // x ∈ w }) R Subtype.val
h : Set.range ⇑b ≤ w
x : M
p : x ∈ w
q : x ∉ Set.range ⇑b
u : ι ↪ ↑w := { toFun := fun i => ⟨b i, ⋯⟩, inj' := ⋯ }
e : (Finsupp.total (↑w) M R Subtype.val) (Finsupp.embDomain u (b.repr x)) = ↑⟨x, p⟩
⊢ ⟨x, p⟩ ∉ (Finsupp.embDomain u (b.repr x)).support
tactic: refine hi.total_ne_of_not_mem_support _ ?_ e
state_before: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
v : ι → M
inst✝⁹ : Ring R
inst✝⁸ : CommRing R₂
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M''
inst✝⁴ : Module R M
inst✝³ : Module R₂ M
inst✝² : Module R M'
inst✝¹ : Module R M''
c d : R
x✝ y : M
b✝ : Basis ι R M
inst✝ : Nontrivial R
b : Basis ι R M
w : Set M
hi : LinearIndependent (ι := { x // x ∈ w }) R Subtype.val
h : Set.range ⇑b ≤ w
x : M
p : x ∈ w
q : x ∉ Set.range ⇑b
u : ι ↪ ↑w := { toFun := fun i => ⟨b i, ⋯⟩, inj' := ⋯ }
e : (Finsupp.total (↑w) M R Subtype.val) (Finsupp.embDomain u (b.repr x)) = ↑⟨x, p⟩
⊢ ⟨x, p⟩ ∉ (Finsupp.embDomain u (b.repr x)).support
state_after: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
v : ι → M
inst✝⁹ : Ring R
inst✝⁸ : CommRing R₂
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M''
inst✝⁴ : Module R M
inst✝³ : Module R₂ M
inst✝² : Module R M'
inst✝¹ : Module R M''
c d : R
x✝ y : M
b✝ : Basis ι R M
inst✝ : Nontrivial R
b : Basis ι R M
w : Set M
hi : LinearIndependent (ι := { x // x ∈ w }) R Subtype.val
h : Set.range ⇑b ≤ w
x : M
p : x ∈ w
q : x ∉ Set.range ⇑b
u : ι ↪ ↑w := { toFun := fun i => ⟨b i, ⋯⟩, inj' := ⋯ }
e : (Finsupp.total (↑w) M R Subtype.val) (Finsupp.embDomain u (b.repr x)) = ↑⟨x, p⟩
⊢ ¬∃ a ∈ (b.repr x).support, u a = ⟨x, p⟩
tactic: simp only [Finset.mem_map, Finsupp.support_embDomain]
state_before: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
v : ι → M
inst✝⁹ : Ring R
inst✝⁸ : CommRing R₂
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M''
inst✝⁴ : Module R M
inst✝³ : Module R₂ M
inst✝² : Module R M'
inst✝¹ : Module R M''
c d : R
x✝ y : M
b✝ : Basis ι R M
inst✝ : Nontrivial R
b : Basis ι R M
w : Set M
hi : LinearIndependent (ι := { x // x ∈ w }) R Subtype.val
h : Set.range ⇑b ≤ w
x : M
p : x ∈ w
q : x ∉ Set.range ⇑b
u : ι ↪ ↑w := { toFun := fun i => ⟨b i, ⋯⟩, inj' := ⋯ }
e : (Finsupp.total (↑w) M R Subtype.val) (Finsupp.embDomain u (b.repr x)) = ↑⟨x, p⟩
⊢ ¬∃ a ∈ (b.repr x).support, u a = ⟨x, p⟩
state_after: case intro.intro
ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
v : ι → M
inst✝⁹ : Ring R
inst✝⁸ : CommRing R₂
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M''
inst✝⁴ : Module R M
inst✝³ : Module R₂ M
inst✝² : Module R M'
inst✝¹ : Module R M''
c d : R
x✝ y : M
b✝ : Basis ι R M
inst✝ : Nontrivial R
b : Basis ι R M
w : Set M
hi : LinearIndependent (ι := { x // x ∈ w }) R Subtype.val
h : Set.range ⇑b ≤ w
x : M
p : x ∈ w
q : x ∉ Set.range ⇑b
u : ι ↪ ↑w := { toFun := fun i => ⟨b i, ⋯⟩, inj' := ⋯ }
e : (Finsupp.total (↑w) M R Subtype.val) (Finsupp.embDomain u (b.repr x)) = ↑⟨x, p⟩
j : ι
W : u j = ⟨x, p⟩
⊢ False
tactic: rintro ⟨j, -, W⟩
state_before: case intro.intro
ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
v : ι → M
inst✝⁹ : Ring R
inst✝⁸ : CommRing R₂
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M''
inst✝⁴ : Module R M
inst✝³ : Module R₂ M
inst✝² : Module R M'
inst✝¹ : Module R M''
c d : R
x✝ y : M
b✝ : Basis ι R M
inst✝ : Nontrivial R
b : Basis ι R M
w : Set M
hi : LinearIndependent (ι := { x // x ∈ w }) R Subtype.val
h : Set.range ⇑b ≤ w
x : M
p : x ∈ w
q : x ∉ Set.range ⇑b
u : ι ↪ ↑w := { toFun := fun i => ⟨b i, ⋯⟩, inj' := ⋯ }
e : (Finsupp.total (↑w) M R Subtype.val) (Finsupp.embDomain u (b.repr x)) = ↑⟨x, p⟩
j : ι
W : u j = ⟨x, p⟩
⊢ False
state_after: case intro.intro
ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
v : ι → M
inst✝⁹ : Ring R
inst✝⁸ : CommRing R₂
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M''
inst✝⁴ : Module R M
inst✝³ : Module R₂ M
inst✝² : Module R M'
inst✝¹ : Module R M''
c d : R
x✝ y : M
b✝ : Basis ι R M
inst✝ : Nontrivial R
b : Basis ι R M
w : Set M
hi : LinearIndependent (ι := { x // x ∈ w }) R Subtype.val
h : Set.range ⇑b ≤ w
x : M
p : x ∈ w
q : x ∉ Set.range ⇑b
u : ι ↪ ↑w := { toFun := fun i => ⟨b i, ⋯⟩, inj' := ⋯ }
e : (Finsupp.total (↑w) M R Subtype.val) (Finsupp.embDomain u (b.repr x)) = ↑⟨x, p⟩
j : ι
W : b j = x
⊢ False
tactic: simp only [u, Embedding.coeFn_mk, Subtype.mk_eq_mk] at W
state_before: case intro.intro
ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
v : ι → M
inst✝⁹ : Ring R
inst✝⁸ : CommRing R₂
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M''
inst✝⁴ : Module R M
inst✝³ : Module R₂ M
inst✝² : Module R M'
inst✝¹ : Module R M''
c d : R
x✝ y : M
b✝ : Basis ι R M
inst✝ : Nontrivial R
b : Basis ι R M
w : Set M
hi : LinearIndependent (ι := { x // x ∈ w }) R Subtype.val
h : Set.range ⇑b ≤ w
x : M
p : x ∈ w
q : x ∉ Set.range ⇑b
u : ι ↪ ↑w := { toFun := fun i => ⟨b i, ⋯⟩, inj' := ⋯ }
e : (Finsupp.total (↑w) M R Subtype.val) (Finsupp.embDomain u (b.repr x)) = ↑⟨x, p⟩
j : ι
W : b j = x
⊢ False
state_after: no goals
tactic: apply q ⟨j, W⟩