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

tactic: refine
  ⟨fun hm i => ⟨(b.restrictScalars R).repr ⟨m, hm⟩ i, b.restrictScalars_repr_apply R ⟨m, hm⟩ i⟩,
    fun h => ?_⟩
state_before: ι : Type u_3
ι' : Type ?u.1303683
R : Type u_2
R₂ : Type ?u.1303689
K : Type ?u.1303692
M : Type u_1
M' : Type ?u.1303698
M'' : Type ?u.1303701
V : Type u
V' : Type ?u.1303706
S : Type u_4
inst✝⁸ : CommRing R
inst✝⁷ : Ring S
inst✝⁶ : Nontrivial S
inst✝⁵ : AddCommGroup M
inst✝⁴ : Algebra R S
inst✝³ : Module S M
inst✝² : Module R M
inst✝¹ : IsScalarTower R S M
inst✝ : NoZeroSMulDivisors R S
b : Basis ι S M
m : M
⊢ m ∈ span R (range ↑b) ↔ ∀ (i : ι), ↑(↑b.repr m) i ∈ range ↑(algebraMap R S)

tactic: rw [← b.total_repr m, Finsupp.total_apply S _]
state_before: ι : Type u_3
ι' : Type ?u.1303683
R : Type u_2
R₂ : Type ?u.1303689
K : Type ?u.1303692
M : Type u_1
M' : Type ?u.1303698
M'' : Type ?u.1303701
V : Type u
V' : Type ?u.1303706
S : Type u_4
inst✝⁸ : CommRing R
inst✝⁷ : Ring S
inst✝⁶ : Nontrivial S
inst✝⁵ : AddCommGroup M
inst✝⁴ : Algebra R S
inst✝³ : Module S M
inst✝² : Module R M
inst✝¹ : IsScalarTower R S M
inst✝ : NoZeroSMulDivisors R S
b : Basis ι S M
m : M
h : ∀ (i : ι), ↑(↑b.repr m) i ∈ range ↑(algebraMap R S)
⊢ m ∈ span R (range ↑b)

tactic: refine sum_mem fun i _ => ?_
state_before: ι : Type u_3
ι' : Type ?u.1303683
R : Type u_2
R₂ : Type ?u.1303689
K : Type ?u.1303692
M : Type u_1
M' : Type ?u.1303698
M'' : Type ?u.1303701
V : Type u
V' : Type ?u.1303706
S : Type u_4
inst✝⁸ : CommRing R
inst✝⁷ : Ring S
inst✝⁶ : Nontrivial S
inst✝⁵ : AddCommGroup M
inst✝⁴ : Algebra R S
inst✝³ : Module S M
inst✝² : Module R M
inst✝¹ : IsScalarTower R S M
inst✝ : NoZeroSMulDivisors R S
b : Basis ι S M
m : M
h : ∀ (i : ι), ↑(↑b.repr m) i ∈ range ↑(algebraMap R S)
⊢ (Finsupp.sum (↑b.repr m) fun i a => a • ↑b i) ∈ span R (range ↑b)

tactic: obtain ⟨_, h⟩ := h i
state_before: ι : Type u_3
ι' : Type ?u.1303683
R : Type u_2
R₂ : Type ?u.1303689
K : Type ?u.1303692
M : Type u_1
M' : Type ?u.1303698
M'' : Type ?u.1303701
V : Type u
V' : Type ?u.1303706
S : Type u_4
inst✝⁸ : CommRing R
inst✝⁷ : Ring S
inst✝⁶ : Nontrivial S
inst✝⁵ : AddCommGroup M
inst✝⁴ : Algebra R S
inst✝³ : Module S M
inst✝² : Module R M
inst✝¹ : IsScalarTower R S M
inst✝ : NoZeroSMulDivisors R S
b : Basis ι S M
m : M
h : ∀ (i : ι), ↑(↑b.repr m) i ∈ range ↑(algebraMap R S)
i : ι
x✝ : i ∈ (↑b.repr m).support
⊢ (fun i a => a • ↑b i) i (↑(↑b.repr m) i) ∈ span R (range ↑b)

tactic: simp_rw [← h, algebraMap_smul]
state_before: case intro
ι : Type u_3
ι' : Type ?u.1303683
R : Type u_2
R₂ : Type ?u.1303689
K : Type ?u.1303692
M : Type u_1
M' : Type ?u.1303698
M'' : Type ?u.1303701
V : Type u
V' : Type ?u.1303706
S : Type u_4
inst✝⁸ : CommRing R
inst✝⁷ : Ring S
inst✝⁶ : Nontrivial S
inst✝⁵ : AddCommGroup M
inst✝⁴ : Algebra R S
inst✝³ : Module S M
inst✝² : Module R M
inst✝¹ : IsScalarTower R S M
inst✝ : NoZeroSMulDivisors R S
b : Basis ι S M
m : M
h✝ : ∀ (i : ι), ↑(↑b.repr m) i ∈ range ↑(algebraMap R S)
i : ι
x✝ : i ∈ (↑b.repr m).support
w✝ : R
h : ↑(algebraMap R S) w✝ = ↑(↑b.repr m) i
⊢ (fun i a => a • ↑b i) i (↑(↑b.repr m) i) ∈ span R (range ↑b)

tactic: exact smul_mem _ _ (subset_span (Set.mem_range_self i))
state_before: case intro
ι : Type u_3
ι' : Type ?u.1303683
R : Type u_2
R₂ : Type ?u.1303689
K : Type ?u.1303692
M : Type u_1
M' : Type ?u.1303698
M'' : Type ?u.1303701
V : Type u
V' : Type ?u.1303706
S : Type u_4
inst✝⁸ : CommRing R
inst✝⁷ : Ring S
inst✝⁶ : Nontrivial S
inst✝⁵ : AddCommGroup M
inst✝⁴ : Algebra R S
inst✝³ : Module S M
inst✝² : Module R M
inst✝¹ : IsScalarTower R S M
inst✝ : NoZeroSMulDivisors R S
b : Basis ι S M
m : M
h✝ : ∀ (i : ι), ↑(↑b.repr m) i ∈ range ↑(algebraMap R S)
i : ι
x✝ : i ∈ (↑b.repr m).support
w✝ : R
h : ↑(algebraMap R S) w✝ = ↑(↑b.repr m) i
⊢ w✝ • ↑b i ∈ span R (range ↑b)