Theorem: Basis.ofIsLocalizedModule_span
File: Mathlib/RingTheory/Localization/Module.lean

tactic: calc span R (Set.range (b.ofIsLocalizedModule Rₛ S f))
  _ = span R (f '' (Set.range b)) := by congr; ext; simp
  _ = map f (span R (Set.range b)) := by rw [Submodule.map_span]
  _ = LinearMap.range f := by rw [b.span_eq, Submodule.map_top]
state_before: R : Type u_1
Rₛ : Type u_2
inst✝¹⁰ : CommSemiring R
S : Submonoid R
inst✝⁹ : CommRing Rₛ
inst✝⁸ : Algebra R Rₛ
hT : IsLocalization S Rₛ
M : Type u_3
Mₛ : Type u_4
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup Mₛ
inst✝⁵ : Module R M
inst✝⁴ inst✝³ : Module R Mₛ
inst✝² : Module Rₛ Mₛ
f : M →ₗ[R] Mₛ
inst✝¹ : IsLocalizedModule S f
inst✝ : IsScalarTower R Rₛ Mₛ
ι : Type u_5
b : Basis ι R M
⊢ span R (Set.range ⇑(ofIsLocalizedModule Rₛ S f b)) = LinearMap.range f
state_after: no goals

tactic: congr
state_before: R : Type u_1
Rₛ : Type u_2
inst✝¹⁰ : CommSemiring R
S : Submonoid R
inst✝⁹ : CommRing Rₛ
inst✝⁸ : Algebra R Rₛ
hT : IsLocalization S Rₛ
M : Type u_3
Mₛ : Type u_4
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup Mₛ
inst✝⁵ : Module R M
inst✝⁴ inst✝³ : Module R Mₛ
inst✝² : Module Rₛ Mₛ
f : M →ₗ[R] Mₛ
inst✝¹ : IsLocalizedModule S f
inst✝ : IsScalarTower R Rₛ Mₛ
ι : Type u_5
b : Basis ι R M
⊢ span R (Set.range ⇑(ofIsLocalizedModule Rₛ S f b)) = span R (⇑f '' Set.range ⇑b)
state_after: case e_s
R : Type u_1
Rₛ : Type u_2
inst✝¹⁰ : CommSemiring R
S : Submonoid R
inst✝⁹ : CommRing Rₛ
inst✝⁸ : Algebra R Rₛ
hT : IsLocalization S Rₛ
M : Type u_3
Mₛ : Type u_4
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup Mₛ
inst✝⁵ : Module R M
inst✝⁴ inst✝³ : Module R Mₛ
inst✝² : Module Rₛ Mₛ
f : M →ₗ[R] Mₛ
inst✝¹ : IsLocalizedModule S f
inst✝ : IsScalarTower R Rₛ Mₛ
ι : Type u_5
b : Basis ι R M
⊢ Set.range ⇑(ofIsLocalizedModule Rₛ S f b) = ⇑f '' Set.range ⇑b

tactic: ext
state_before: case e_s
R : Type u_1
Rₛ : Type u_2
inst✝¹⁰ : CommSemiring R
S : Submonoid R
inst✝⁹ : CommRing Rₛ
inst✝⁸ : Algebra R Rₛ
hT : IsLocalization S Rₛ
M : Type u_3
Mₛ : Type u_4
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup Mₛ
inst✝⁵ : Module R M
inst✝⁴ inst✝³ : Module R Mₛ
inst✝² : Module Rₛ Mₛ
f : M →ₗ[R] Mₛ
inst✝¹ : IsLocalizedModule S f
inst✝ : IsScalarTower R Rₛ Mₛ
ι : Type u_5
b : Basis ι R M
⊢ Set.range ⇑(ofIsLocalizedModule Rₛ S f b) = ⇑f '' Set.range ⇑b
state_after: case e_s.h
R : Type u_1
Rₛ : Type u_2
inst✝¹⁰ : CommSemiring R
S : Submonoid R
inst✝⁹ : CommRing Rₛ
inst✝⁸ : Algebra R Rₛ
hT : IsLocalization S Rₛ
M : Type u_3
Mₛ : Type u_4
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup Mₛ
inst✝⁵ : Module R M
inst✝⁴ inst✝³ : Module R Mₛ
inst✝² : Module Rₛ Mₛ
f : M →ₗ[R] Mₛ
inst✝¹ : IsLocalizedModule S f
inst✝ : IsScalarTower R Rₛ Mₛ
ι : Type u_5
b : Basis ι R M
x✝ : Mₛ
⊢ x✝ ∈ Set.range ⇑(ofIsLocalizedModule Rₛ S f b) ↔ x✝ ∈ ⇑f '' Set.range ⇑b

tactic: simp
state_before: case e_s.h
R : Type u_1
Rₛ : Type u_2
inst✝¹⁰ : CommSemiring R
S : Submonoid R
inst✝⁹ : CommRing Rₛ
inst✝⁸ : Algebra R Rₛ
hT : IsLocalization S Rₛ
M : Type u_3
Mₛ : Type u_4
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup Mₛ
inst✝⁵ : Module R M
inst✝⁴ inst✝³ : Module R Mₛ
inst✝² : Module Rₛ Mₛ
f : M →ₗ[R] Mₛ
inst✝¹ : IsLocalizedModule S f
inst✝ : IsScalarTower R Rₛ Mₛ
ι : Type u_5
b : Basis ι R M
x✝ : Mₛ
⊢ x✝ ∈ Set.range ⇑(ofIsLocalizedModule Rₛ S f b) ↔ x✝ ∈ ⇑f '' Set.range ⇑b
state_after: no goals

tactic: rw [Submodule.map_span]
state_before: R : Type u_1
Rₛ : Type u_2
inst✝¹⁰ : CommSemiring R
S : Submonoid R
inst✝⁹ : CommRing Rₛ
inst✝⁸ : Algebra R Rₛ
hT : IsLocalization S Rₛ
M : Type u_3
Mₛ : Type u_4
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup Mₛ
inst✝⁵ : Module R M
inst✝⁴ inst✝³ : Module R Mₛ
inst✝² : Module Rₛ Mₛ
f : M →ₗ[R] Mₛ
inst✝¹ : IsLocalizedModule S f
inst✝ : IsScalarTower R Rₛ Mₛ
ι : Type u_5
b : Basis ι R M
⊢ span R (⇑f '' Set.range ⇑b) = map f (span R (Set.range ⇑b))
state_after: no goals

tactic: rw [b.span_eq, Submodule.map_top]
state_before: R : Type u_1
Rₛ : Type u_2
inst✝¹⁰ : CommSemiring R
S : Submonoid R
inst✝⁹ : CommRing Rₛ
inst✝⁸ : Algebra R Rₛ
hT : IsLocalization S Rₛ
M : Type u_3
Mₛ : Type u_4
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup Mₛ
inst✝⁵ : Module R M
inst✝⁴ inst✝³ : Module R Mₛ
inst✝² : Module Rₛ Mₛ
f : M →ₗ[R] Mₛ
inst✝¹ : IsLocalizedModule S f
inst✝ : IsScalarTower R Rₛ Mₛ
ι : Type u_5
b : Basis ι R M
⊢ map f (span R (Set.range ⇑b)) = LinearMap.range f
state_after: no goals