Theorem: Basis.groupSMul_span_eq_top
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
G : Type u_10
inst✝³ : Group G
inst✝² : DistribMulAction G R
inst✝¹ : DistribMulAction G M
inst✝ : IsScalarTower G R M
v : ι → M
hv : span R (Set.range v) = ⊤
w : ι → G
⊢ span R (Set.range (w • v)) = ⊤
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
G : Type u_10
inst✝³ : Group G
inst✝² : DistribMulAction G R
inst✝¹ : DistribMulAction G M
inst✝ : IsScalarTower G R M
v : ι → M
hv : span R (Set.range v) = ⊤
w : ι → G
⊢ ⊤ ≤ span R (Set.range (w • v))
tactic: rw [eq_top_iff]
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
G : Type u_10
inst✝³ : Group G
inst✝² : DistribMulAction G R
inst✝¹ : DistribMulAction G M
inst✝ : IsScalarTower G R M
v : ι → M
hv : span R (Set.range v) = ⊤
w : ι → G
⊢ ⊤ ≤ span R (Set.range (w • v))
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
G : Type u_10
inst✝³ : Group G
inst✝² : DistribMulAction G R
inst✝¹ : DistribMulAction G M
inst✝ : IsScalarTower G R M
v : ι → M
hv : span R (Set.range v) = ⊤
w : ι → G
j : M
hj : j ∈ ⊤
⊢ j ∈ span R (Set.range (w • v))
tactic: intro j hj
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
G : Type u_10
inst✝³ : Group G
inst✝² : DistribMulAction G R
inst✝¹ : DistribMulAction G M
inst✝ : IsScalarTower G R M
v : ι → M
hv : span R (Set.range v) = ⊤
w : ι → G
j : M
hj : j ∈ ⊤
⊢ j ∈ span R (Set.range (w • v))
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
G : Type u_10
inst✝³ : Group G
inst✝² : DistribMulAction G R
inst✝¹ : DistribMulAction G M
inst✝ : IsScalarTower G R M
v : ι → M
hv : span R (Set.range v) = ⊤
w : ι → G
j : M
hj : j ∈ span R (Set.range v)
⊢ j ∈ span R (Set.range (w • v))
tactic: rw [← hv] at hj
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
G : Type u_10
inst✝³ : Group G
inst✝² : DistribMulAction G R
inst✝¹ : DistribMulAction G M
inst✝ : IsScalarTower G R M
v : ι → M
hv : span R (Set.range v) = ⊤
w : ι → G
j : M
hj : j ∈ span R (Set.range v)
⊢ j ∈ span R (Set.range (w • v))
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
G : Type u_10
inst✝³ : Group G
inst✝² : DistribMulAction G R
inst✝¹ : DistribMulAction G M
inst✝ : IsScalarTower G R M
v : ι → M
hv : span R (Set.range v) = ⊤
w : ι → G
j : M
hj : ∀ (p : Submodule R M), Set.range v ⊆ ↑p → j ∈ p
⊢ ∀ (p : Submodule R M), Set.range (w • v) ⊆ ↑p → j ∈ p
tactic: rw [Submodule.mem_span] at hj ⊢
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
G : Type u_10
inst✝³ : Group G
inst✝² : DistribMulAction G R
inst✝¹ : DistribMulAction G M
inst✝ : IsScalarTower G R M
v : ι → M
hv : span R (Set.range v) = ⊤
w : ι → G
j : M
hj : ∀ (p : Submodule R M), Set.range v ⊆ ↑p → j ∈ p
⊢ ∀ (p : Submodule R M), Set.range (w • v) ⊆ ↑p → j ∈ p
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
G : Type u_10
inst✝³ : Group G
inst✝² : DistribMulAction G R
inst✝¹ : DistribMulAction G M
inst✝ : IsScalarTower G R M
v : ι → M
hv : span R (Set.range v) = ⊤
w : ι → G
j : M
hj : ∀ (p : Submodule R M), Set.range v ⊆ ↑p → j ∈ p
p : Submodule R M
hp : Set.range (w • v) ⊆ ↑p
u : M
hu : u ∈ Set.range v
⊢ u ∈ ↑p
tactic: refine fun p hp => hj p fun u hu => ?_
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
G : Type u_10
inst✝³ : Group G
inst✝² : DistribMulAction G R
inst✝¹ : DistribMulAction G M
inst✝ : IsScalarTower G R M
v : ι → M
hv : span R (Set.range v) = ⊤
w : ι → G
j : M
hj : ∀ (p : Submodule R M), Set.range v ⊆ ↑p → j ∈ p
p : Submodule R M
hp : Set.range (w • v) ⊆ ↑p
u : M
hu : u ∈ Set.range v
⊢ u ∈ ↑p
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
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
G : Type u_10
inst✝³ : Group G
inst✝² : DistribMulAction G R
inst✝¹ : DistribMulAction G M
inst✝ : IsScalarTower G R M
v : ι → M
hv : span R (Set.range v) = ⊤
w : ι → G
j : M
hj : ∀ (p : Submodule R M), Set.range v ⊆ ↑p → j ∈ p
p : Submodule R M
hp : Set.range (w • v) ⊆ ↑p
i : ι
⊢ v i ∈ ↑p
tactic: obtain ⟨i, rfl⟩ := hu
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
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
G : Type u_10
inst✝³ : Group G
inst✝² : DistribMulAction G R
inst✝¹ : DistribMulAction G M
inst✝ : IsScalarTower G R M
v : ι → M
hv : span R (Set.range v) = ⊤
w : ι → G
j : M
hj : ∀ (p : Submodule R M), Set.range v ⊆ ↑p → j ∈ p
p : Submodule R M
hp : Set.range (w • v) ⊆ ↑p
i : ι
⊢ v i ∈ ↑p
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
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
G : Type u_10
inst✝³ : Group G
inst✝² : DistribMulAction G R
inst✝¹ : DistribMulAction G M
inst✝ : IsScalarTower G R M
v : ι → M
hv : span R (Set.range v) = ⊤
w : ι → G
j : M
hj : ∀ (p : Submodule R M), Set.range v ⊆ ↑p → j ∈ p
p : Submodule R M
hp : Set.range (w • v) ⊆ ↑p
i : ι
this : ((w i)⁻¹ • 1) • w i • v i ∈ p
⊢ v i ∈ ↑p
tactic: have : ((w i)⁻¹ • (1 : R)) • w i • v i ∈ p := p.smul_mem ((w i)⁻¹ • (1 : R)) (hp ⟨i, rfl⟩)
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
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
G : Type u_10
inst✝³ : Group G
inst✝² : DistribMulAction G R
inst✝¹ : DistribMulAction G M
inst✝ : IsScalarTower G R M
v : ι → M
hv : span R (Set.range v) = ⊤
w : ι → G
j : M
hj : ∀ (p : Submodule R M), Set.range v ⊆ ↑p → j ∈ p
p : Submodule R M
hp : Set.range (w • v) ⊆ ↑p
i : ι
this : ((w i)⁻¹ • 1) • w i • v i ∈ p
⊢ v i ∈ ↑p
state_after: no goals
tactic: rwa [smul_one_smul, inv_smul_smul] at this