Theorem: Basis.le_span''
File: Mathlib/LinearAlgebra/Dimension/StrongRankCondition.lean

tactic: fapply card_le_of_surjective' R
state_before: R : Type u
M : Type v
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
ι✝ : Type w
ι' : Type w'
inst✝² : RankCondition R
ι : Type u_1
inst✝¹ : Fintype ι
b : Basis ι R M
w : Set M
inst✝ : Fintype ↑w
s : span R w = ⊤
⊢ Fintype.card ι ≤ Fintype.card ↑w
state_after: case f
R : Type u
M : Type v
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
ι✝ : Type w
ι' : Type w'
inst✝² : RankCondition R
ι : Type u_1
inst✝¹ : Fintype ι
b : Basis ι R M
w : Set M
inst✝ : Fintype ↑w
s : span R w = ⊤
⊢ (↑w →₀ R) →ₗ[R] ι →₀ R

case i
R : Type u
M : Type v
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
ι✝ : Type w
ι' : Type w'
inst✝² : RankCondition R
ι : Type u_1
inst✝¹ : Fintype ι
b : Basis ι R M
w : Set M
inst✝ : Fintype ↑w
s : span R w = ⊤
⊢ Surjective ⇑?f

tactic: exact b.repr.toLinearMap.comp (Finsupp.total w M R (↑))
state_before: case f
R : Type u
M : Type v
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
ι✝ : Type w
ι' : Type w'
inst✝² : RankCondition R
ι : Type u_1
inst✝¹ : Fintype ι
b : Basis ι R M
w : Set M
inst✝ : Fintype ↑w
s : span R w = ⊤
⊢ (↑w →₀ R) →ₗ[R] ι →₀ R
state_after: no goals

tactic: apply Surjective.comp (g := b.repr.toLinearMap)
state_before: case i
R : Type u
M : Type v
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
ι✝ : Type w
ι' : Type w'
inst✝² : RankCondition R
ι : Type u_1
inst✝¹ : Fintype ι
b : Basis ι R M
w : Set M
inst✝ : Fintype ↑w
s : span R w = ⊤
⊢ Surjective ⇑(↑b.repr ∘ₗ Finsupp.total (↑w) M R Subtype.val)
state_after: case i.hg
R : Type u
M : Type v
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
ι✝ : Type w
ι' : Type w'
inst✝² : RankCondition R
ι : Type u_1
inst✝¹ : Fintype ι
b : Basis ι R M
w : Set M
inst✝ : Fintype ↑w
s : span R w = ⊤
⊢ Surjective ⇑↑b.repr

case i.hf
R : Type u
M : Type v
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
ι✝ : Type w
ι' : Type w'
inst✝² : RankCondition R
ι : Type u_1
inst✝¹ : Fintype ι
b : Basis ι R M
w : Set M
inst✝ : Fintype ↑w
s : span R w = ⊤
⊢ Surjective ⇑(Finsupp.total (↑w) M R Subtype.val)

tactic: rw [← LinearMap.range_eq_top, Finsupp.range_total]
state_before: case i.hf
R : Type u
M : Type v
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
ι✝ : Type w
ι' : Type w'
inst✝² : RankCondition R
ι : Type u_1
inst✝¹ : Fintype ι
b : Basis ι R M
w : Set M
inst✝ : Fintype ↑w
s : span R w = ⊤
⊢ Surjective ⇑(Finsupp.total (↑w) M R Subtype.val)
state_after: case i.hf
R : Type u
M : Type v
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
ι✝ : Type w
ι' : Type w'
inst✝² : RankCondition R
ι : Type u_1
inst✝¹ : Fintype ι
b : Basis ι R M
w : Set M
inst✝ : Fintype ↑w
s : span R w = ⊤
⊢ span R (range Subtype.val) = ⊤

tactic: simpa using s
state_before: case i.hf
R : Type u
M : Type v
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
ι✝ : Type w
ι' : Type w'
inst✝² : RankCondition R
ι : Type u_1
inst✝¹ : Fintype ι
b : Basis ι R M
w : Set M
inst✝ : Fintype ↑w
s : span R w = ⊤
⊢ span R (range Subtype.val) = ⊤
state_after: no goals

tactic: apply LinearEquiv.surjective
state_before: case i.hg
R : Type u
M : Type v
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
ι✝ : Type w
ι' : Type w'
inst✝² : RankCondition R
ι : Type u_1
inst✝¹ : Fintype ι
b : Basis ι R M
w : Set M
inst✝ : Fintype ↑w
s : span R w = ⊤
⊢ Surjective ⇑↑b.repr
state_after: no goals