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

tactic: classical
haveI := hw.to_subtype
cases nonempty_fintype w
rw [← not_infinite_iff_finite]
intro i
let S : Finset ι := Finset.univ.sup fun x : w => (b.repr x).support
let bS : Set M := b '' S
have h : ∀ x ∈ w, x ∈ span R bS := by
  intro x m
  rw [← b.total_repr x, Finsupp.span_image_eq_map_total, Submodule.mem_map]
  use b.repr x
  simp only [and_true_iff, eq_self_iff_true, Finsupp.mem_supported]
  rw [Finset.coe_subset, ← Finset.le_iff_subset]
  exact Finset.le_sup (f := fun x : w ↦ (b.repr ↑x).support) (Finset.mem_univ (⟨x, m⟩ : w))
have k : span R bS = ⊤ := eq_top_iff.2 (le_trans s.ge (span_le.2 h))
obtain ⟨x, nm⟩ := Infinite.exists_not_mem_finset S
have k' : b x ∈ span R bS := by
  rw [k]
  exact mem_top
exact b.linearIndependent.not_mem_span_image nm k'
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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
⊢ Finite ι
state_after: no goals

tactic: haveI := hw.to_subtype
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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
⊢ Finite ι
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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
⊢ Finite ι

tactic: cases nonempty_fintype w
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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
⊢ Finite ι
state_after: case 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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
val✝ : Fintype ↑w
⊢ Finite ι

tactic: rw [← not_infinite_iff_finite]
state_before: case 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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
val✝ : Fintype ↑w
⊢ Finite ι
state_after: case 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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
val✝ : Fintype ↑w
⊢ ¬Infinite ι

tactic: intro i
state_before: case 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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
val✝ : Fintype ↑w
⊢ ¬Infinite ι
state_after: case 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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
val✝ : Fintype ↑w
i : Infinite ι
⊢ False

tactic: let S : Finset ι := Finset.univ.sup fun x : w => (b.repr x).support
state_before: case 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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
val✝ : Fintype ↑w
i : Infinite ι
⊢ False
state_after: case 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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
val✝ : Fintype ↑w
i : Infinite ι
S : Finset ι := Finset.univ.sup fun x => (b.repr ↑x).support
⊢ False

tactic: let bS : Set M := b '' S
state_before: case 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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
val✝ : Fintype ↑w
i : Infinite ι
S : Finset ι := Finset.univ.sup fun x => (b.repr ↑x).support
⊢ False
state_after: case 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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
val✝ : Fintype ↑w
i : Infinite ι
S : Finset ι := Finset.univ.sup fun x => (b.repr ↑x).support
bS : Set M := ⇑b '' ↑S
⊢ False

tactic: have h : ∀ x ∈ w, x ∈ span R bS := by
  intro x m
  rw [← b.total_repr x, Finsupp.span_image_eq_map_total, Submodule.mem_map]
  use b.repr x
  simp only [and_true_iff, eq_self_iff_true, Finsupp.mem_supported]
  rw [Finset.coe_subset, ← Finset.le_iff_subset]
  exact Finset.le_sup (f := fun x : w ↦ (b.repr ↑x).support) (Finset.mem_univ (⟨x, m⟩ : w))
state_before: case 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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
val✝ : Fintype ↑w
i : Infinite ι
S : Finset ι := Finset.univ.sup fun x => (b.repr ↑x).support
bS : Set M := ⇑b '' ↑S
⊢ False
state_after: case 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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
val✝ : Fintype ↑w
i : Infinite ι
S : Finset ι := Finset.univ.sup fun x => (b.repr ↑x).support
bS : Set M := ⇑b '' ↑S
h : ∀ x ∈ w, x ∈ span R bS
⊢ False

tactic: have k : span R bS = ⊤ := eq_top_iff.2 (le_trans s.ge (span_le.2 h))
state_before: case 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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
val✝ : Fintype ↑w
i : Infinite ι
S : Finset ι := Finset.univ.sup fun x => (b.repr ↑x).support
bS : Set M := ⇑b '' ↑S
h : ∀ x ∈ w, x ∈ span R bS
⊢ False
state_after: case 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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
val✝ : Fintype ↑w
i : Infinite ι
S : Finset ι := Finset.univ.sup fun x => (b.repr ↑x).support
bS : Set M := ⇑b '' ↑S
h : ∀ x ∈ w, x ∈ span R bS
k : span R bS = ⊤
⊢ False

tactic: obtain ⟨x, nm⟩ := Infinite.exists_not_mem_finset S
state_before: case 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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
val✝ : Fintype ↑w
i : Infinite ι
S : Finset ι := Finset.univ.sup fun x => (b.repr ↑x).support
bS : Set M := ⇑b '' ↑S
h : ∀ x ∈ w, x ∈ span R bS
k : span R bS = ⊤
⊢ 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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
val✝ : Fintype ↑w
i : Infinite ι
S : Finset ι := Finset.univ.sup fun x => (b.repr ↑x).support
bS : Set M := ⇑b '' ↑S
h : ∀ x ∈ w, x ∈ span R bS
k : span R bS = ⊤
x : ι
nm : x ∉ S
⊢ False

tactic: have k' : b x ∈ span R bS := by
  rw [k]
  exact mem_top
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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
val✝ : Fintype ↑w
i : Infinite ι
S : Finset ι := Finset.univ.sup fun x => (b.repr ↑x).support
bS : Set M := ⇑b '' ↑S
h : ∀ x ∈ w, x ∈ span R bS
k : span R bS = ⊤
x : ι
nm : x ∉ S
⊢ 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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
val✝ : Fintype ↑w
i : Infinite ι
S : Finset ι := Finset.univ.sup fun x => (b.repr ↑x).support
bS : Set M := ⇑b '' ↑S
h : ∀ x ∈ w, x ∈ span R bS
k : span R bS = ⊤
x : ι
nm : x ∉ S
k' : b x ∈ span R bS
⊢ False

tactic: exact b.linearIndependent.not_mem_span_image nm k'
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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
val✝ : Fintype ↑w
i : Infinite ι
S : Finset ι := Finset.univ.sup fun x => (b.repr ↑x).support
bS : Set M := ⇑b '' ↑S
h : ∀ x ∈ w, x ∈ span R bS
k : span R bS = ⊤
x : ι
nm : x ∉ S
k' : b x ∈ span R bS
⊢ False
state_after: no goals

tactic: intro x m
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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
val✝ : Fintype ↑w
i : Infinite ι
S : Finset ι := Finset.univ.sup fun x => (b.repr ↑x).support
bS : Set M := ⇑b '' ↑S
⊢ ∀ x ∈ w, x ∈ span R bS
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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
val✝ : Fintype ↑w
i : Infinite ι
S : Finset ι := Finset.univ.sup fun x => (b.repr ↑x).support
bS : Set M := ⇑b '' ↑S
x : M
m : x ∈ w
⊢ x ∈ span R bS

tactic: rw [← b.total_repr x, Finsupp.span_image_eq_map_total, Submodule.mem_map]
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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
val✝ : Fintype ↑w
i : Infinite ι
S : Finset ι := Finset.univ.sup fun x => (b.repr ↑x).support
bS : Set M := ⇑b '' ↑S
x : M
m : x ∈ w
⊢ x ∈ span R bS
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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
val✝ : Fintype ↑w
i : Infinite ι
S : Finset ι := Finset.univ.sup fun x => (b.repr ↑x).support
bS : Set M := ⇑b '' ↑S
x : M
m : x ∈ w
⊢ ∃ y ∈ Finsupp.supported R R ↑S, (Finsupp.total ι M R ⇑b) y = (Finsupp.total ι M R ⇑b) (b.repr x)

tactic: use b.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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
val✝ : Fintype ↑w
i : Infinite ι
S : Finset ι := Finset.univ.sup fun x => (b.repr ↑x).support
bS : Set M := ⇑b '' ↑S
x : M
m : x ∈ w
⊢ ∃ y ∈ Finsupp.supported R R ↑S, (Finsupp.total ι M R ⇑b) y = (Finsupp.total ι M R ⇑b) (b.repr x)
state_after: case h
ι✝¹ : 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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
val✝ : Fintype ↑w
i : Infinite ι
S : Finset ι := Finset.univ.sup fun x => (b.repr ↑x).support
bS : Set M := ⇑b '' ↑S
x : M
m : x ∈ w
⊢ b.repr x ∈ Finsupp.supported R R ↑S ∧ (Finsupp.total ι M R ⇑b) (b.repr x) = (Finsupp.total ι M R ⇑b) (b.repr x)

tactic: simp only [and_true_iff, eq_self_iff_true, Finsupp.mem_supported]
state_before: case h
ι✝¹ : 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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
val✝ : Fintype ↑w
i : Infinite ι
S : Finset ι := Finset.univ.sup fun x => (b.repr ↑x).support
bS : Set M := ⇑b '' ↑S
x : M
m : x ∈ w
⊢ b.repr x ∈ Finsupp.supported R R ↑S ∧ (Finsupp.total ι M R ⇑b) (b.repr x) = (Finsupp.total ι M R ⇑b) (b.repr x)
state_after: case h
ι✝¹ : 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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
val✝ : Fintype ↑w
i : Infinite ι
S : Finset ι := Finset.univ.sup fun x => (b.repr ↑x).support
bS : Set M := ⇑b '' ↑S
x : M
m : x ∈ w
⊢ ↑(b.repr x).support ⊆ ↑S

tactic: rw [Finset.coe_subset, ← Finset.le_iff_subset]
state_before: case h
ι✝¹ : 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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
val✝ : Fintype ↑w
i : Infinite ι
S : Finset ι := Finset.univ.sup fun x => (b.repr ↑x).support
bS : Set M := ⇑b '' ↑S
x : M
m : x ∈ w
⊢ ↑(b.repr x).support ⊆ ↑S
state_after: case h
ι✝¹ : 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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
val✝ : Fintype ↑w
i : Infinite ι
S : Finset ι := Finset.univ.sup fun x => (b.repr ↑x).support
bS : Set M := ⇑b '' ↑S
x : M
m : x ∈ w
⊢ (b.repr x).support ≤ S

tactic: exact Finset.le_sup (f := fun x : w ↦ (b.repr ↑x).support) (Finset.mem_univ (⟨x, m⟩ : w))
state_before: case h
ι✝¹ : 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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
val✝ : Fintype ↑w
i : Infinite ι
S : Finset ι := Finset.univ.sup fun x => (b.repr ↑x).support
bS : Set M := ⇑b '' ↑S
x : M
m : x ∈ w
⊢ (b.repr x).support ≤ S
state_after: no goals

tactic: rw [k]
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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
val✝ : Fintype ↑w
i : Infinite ι
S : Finset ι := Finset.univ.sup fun x => (b.repr ↑x).support
bS : Set M := ⇑b '' ↑S
h : ∀ x ∈ w, x ∈ span R bS
k : span R bS = ⊤
x : ι
nm : x ∉ S
⊢ b x ∈ span R bS
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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
val✝ : Fintype ↑w
i : Infinite ι
S : Finset ι := Finset.univ.sup fun x => (b.repr ↑x).support
bS : Set M := ⇑b '' ↑S
h : ∀ x ∈ w, x ∈ span R bS
k : span R bS = ⊤
x : ι
nm : x ∉ S
⊢ b x ∈ ⊤

tactic: exact mem_top
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
R : Type u
M M₁ : Type v
M' : Type v'
ι✝ : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Nontrivial R
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M₁
w : Set M
hw : w.Finite
s : span R w = ⊤
ι : Type w
b : Basis ι R M
this : Finite ↑w
val✝ : Fintype ↑w
i : Infinite ι
S : Finset ι := Finset.univ.sup fun x => (b.repr ↑x).support
bS : Set M := ⇑b '' ↑S
h : ∀ x ∈ w, x ∈ span R bS
k : span R bS = ⊤
x : ι
nm : x ∉ S
⊢ b x ∈ ⊤
state_after: no goals