R : Type u_2
Rₛ : Type u_4
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing Rₛ
inst✝⁸ : Algebra R Rₛ
S : Submonoid R
hT : IsLocalization S Rₛ
A : Type u_1
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
Aₛ : Type u_3
inst✝⁵ : CommRing Aₛ
inst✝⁴ : Algebra A Aₛ
inst✝³ : Algebra Rₛ Aₛ
inst✝² : Algebra R Aₛ
inst✝¹ : IsScalarTower R Rₛ Aₛ
inst✝ : IsScalarTower R A Aₛ
hA : IsLocalization (Algebra.algebraMapSubmonoid A S) Aₛ
v : Set A
hv : span R v = ⊤
⊢ ⊤ ≤ span Rₛ (↑(algebraMap A Aₛ) '' v)
R : Type u_2
Rₛ : Type u_4
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing Rₛ
inst✝⁸ : Algebra R Rₛ
S : Submonoid R
hT : IsLocalization S Rₛ
A : Type u_1
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
Aₛ : Type u_3
inst✝⁵ : CommRing Aₛ
inst✝⁴ : Algebra A Aₛ
inst✝³ : Algebra Rₛ Aₛ
inst✝² : Algebra R Aₛ
inst✝¹ : IsScalarTower R Rₛ Aₛ
inst✝ : IsScalarTower R A Aₛ
hA : IsLocalization (Algebra.algebraMapSubmonoid A S) Aₛ
v : Set A
hv : span R v = ⊤
⊢ span Rₛ (↑(algebraMap A Aₛ) '' v) = ⊤
rw [eq_top_iff]
R : Type u_2
Rₛ : Type u_4
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing Rₛ
inst✝⁸ : Algebra R Rₛ
S : Submonoid R
hT : IsLocalization S Rₛ
A : Type u_1
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
Aₛ : Type u_3
inst✝⁵ : CommRing Aₛ
inst✝⁴ : Algebra A Aₛ
inst✝³ : Algebra Rₛ Aₛ
inst✝² : Algebra R Aₛ
inst✝¹ : IsScalarTower R Rₛ Aₛ
inst✝ : IsScalarTower R A Aₛ
hA : IsLocalization (Algebra.algebraMapSubmonoid A S) Aₛ
v : Set A
hv : span R v = ⊤
a' : Aₛ
⊢ a' ∈ span Rₛ (↑(algebraMap A Aₛ) '' v)
R : Type u_2
Rₛ : Type u_4
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing Rₛ
inst✝⁸ : Algebra R Rₛ
S : Submonoid R
hT : IsLocalization S Rₛ
A : Type u_1
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
Aₛ : Type u_3
inst✝⁵ : CommRing Aₛ
inst✝⁴ : Algebra A Aₛ
inst✝³ : Algebra Rₛ Aₛ
inst✝² : Algebra R Aₛ
inst✝¹ : IsScalarTower R Rₛ Aₛ
inst✝ : IsScalarTower R A Aₛ
hA : IsLocalization (Algebra.algebraMapSubmonoid A S) Aₛ
v : Set A
hv : span R v = ⊤
⊢ ⊤ ≤ span Rₛ (↑(algebraMap A Aₛ) '' v)
rintro a' -
case intro.intro.mk.intro.intro
R : Type u_2
Rₛ : Type u_4
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing Rₛ
inst✝⁸ : Algebra R Rₛ
S : Submonoid R
hT : IsLocalization S Rₛ
A : Type u_1
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
Aₛ : Type u_3
inst✝⁵ : CommRing Aₛ
inst✝⁴ : Algebra A Aₛ
inst✝³ : Algebra Rₛ Aₛ
inst✝² : Algebra R Aₛ
inst✝¹ : IsScalarTower R Rₛ Aₛ
inst✝ : IsScalarTower R A Aₛ
hA : IsLocalization (Algebra.algebraMapSubmonoid A S) Aₛ
v : Set A
hv : span R v = ⊤
a : A
s : R
hs : s ∈ ↑S
⊢ IsLocalization.mk' Aₛ a
      { val := ↑(algebraMap R A) s, property := (_ : ∃ a, a ∈ ↑S ∧ ↑(algebraMap R A) a = ↑(algebraMap R A) s) } ∈
    span Rₛ (↑(algebraMap A Aₛ) '' v)
R : Type u_2
Rₛ : Type u_4
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing Rₛ
inst✝⁸ : Algebra R Rₛ
S : Submonoid R
hT : IsLocalization S Rₛ
A : Type u_1
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
Aₛ : Type u_3
inst✝⁵ : CommRing Aₛ
inst✝⁴ : Algebra A Aₛ
inst✝³ : Algebra Rₛ Aₛ
inst✝² : Algebra R Aₛ
inst✝¹ : IsScalarTower R Rₛ Aₛ
inst✝ : IsScalarTower R A Aₛ
hA : IsLocalization (Algebra.algebraMapSubmonoid A S) Aₛ
v : Set A
hv : span R v = ⊤
a' : Aₛ
⊢ a' ∈ span Rₛ (↑(algebraMap A Aₛ) '' v)
obtain ⟨a, ⟨_, s, hs, rfl⟩, rfl⟩ :=
  IsLocalization.mk'_surjective (Algebra.algebraMapSubmonoid A S) a'
case intro.intro.mk.intro.intro
R : Type u_2
Rₛ : Type u_4
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing Rₛ
inst✝⁸ : Algebra R Rₛ
S : Submonoid R
hT : IsLocalization S Rₛ
A : Type u_1
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
Aₛ : Type u_3
inst✝⁵ : CommRing Aₛ
inst✝⁴ : Algebra A Aₛ
inst✝³ : Algebra Rₛ Aₛ
inst✝² : Algebra R Aₛ
inst✝¹ : IsScalarTower R Rₛ Aₛ
inst✝ : IsScalarTower R A Aₛ
hA : IsLocalization (Algebra.algebraMapSubmonoid A S) Aₛ
v : Set A
hv : span R v = ⊤
a : A
s : R
hs : s ∈ ↑S
⊢ IsLocalization.mk' Aₛ (↑(algebraMap R A) 1)
        { val := ↑(algebraMap R A) s, property := (_ : ∃ a, a ∈ ↑S ∧ ↑(algebraMap R A) a = ↑(algebraMap R A) s) } *
      ↑(algebraMap A Aₛ) a ∈
    span Rₛ (↑(algebraMap A Aₛ) '' v)
case intro.intro.mk.intro.intro
R : Type u_2
Rₛ : Type u_4
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing Rₛ
inst✝⁸ : Algebra R Rₛ
S : Submonoid R
hT : IsLocalization S Rₛ
A : Type u_1
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
Aₛ : Type u_3
inst✝⁵ : CommRing Aₛ
inst✝⁴ : Algebra A Aₛ
inst✝³ : Algebra Rₛ Aₛ
inst✝² : Algebra R Aₛ
inst✝¹ : IsScalarTower R Rₛ Aₛ
inst✝ : IsScalarTower R A Aₛ
hA : IsLocalization (Algebra.algebraMapSubmonoid A S) Aₛ
v : Set A
hv : span R v = ⊤
a : A
s : R
hs : s ∈ ↑S
⊢ IsLocalization.mk' Aₛ a
      { val := ↑(algebraMap R A) s, property := (_ : ∃ a, a ∈ ↑S ∧ ↑(algebraMap R A) a = ↑(algebraMap R A) s) } ∈
    span Rₛ (↑(algebraMap A Aₛ) '' v)
rw [IsLocalization.mk'_eq_mul_mk'_one, mul_comm, ← map_one (algebraMap R A)]
case intro.intro.mk.intro.intro
R : Type u_2
Rₛ : Type u_4
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing Rₛ
inst✝⁸ : Algebra R Rₛ
S : Submonoid R
hT : IsLocalization S Rₛ
A : Type u_1
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
Aₛ : Type u_3
inst✝⁵ : CommRing Aₛ
inst✝⁴ : Algebra A Aₛ
inst✝³ : Algebra Rₛ Aₛ
inst✝² : Algebra R Aₛ
inst✝¹ : IsScalarTower R Rₛ Aₛ
inst✝ : IsScalarTower R A Aₛ
hA : IsLocalization (Algebra.algebraMapSubmonoid A S) Aₛ
v : Set A
hv : span R v = ⊤
a : A
s : R
hs : s ∈ ↑S
⊢ ↑(algebraMap Rₛ Aₛ) (IsLocalization.mk' Rₛ 1 { val := s, property := hs }) * ↑(algebraMap A Aₛ) a ∈
    span Rₛ (↑(algebraMap A Aₛ) '' v)
case intro.intro.mk.intro.intro
R : Type u_2
Rₛ : Type u_4
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing Rₛ
inst✝⁸ : Algebra R Rₛ
S : Submonoid R
hT : IsLocalization S Rₛ
A : Type u_1
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
Aₛ : Type u_3
inst✝⁵ : CommRing Aₛ
inst✝⁴ : Algebra A Aₛ
inst✝³ : Algebra Rₛ Aₛ
inst✝² : Algebra R Aₛ
inst✝¹ : IsScalarTower R Rₛ Aₛ
inst✝ : IsScalarTower R A Aₛ
hA : IsLocalization (Algebra.algebraMapSubmonoid A S) Aₛ
v : Set A
hv : span R v = ⊤
a : A
s : R
hs : s ∈ ↑S
⊢ IsLocalization.mk' Aₛ (↑(algebraMap R A) 1)
        { val := ↑(algebraMap R A) s, property := (_ : ∃ a, a ∈ ↑S ∧ ↑(algebraMap R A) a = ↑(algebraMap R A) s) } *
      ↑(algebraMap A Aₛ) a ∈
    span Rₛ (↑(algebraMap A Aₛ) '' v)
erw [← IsLocalization.algebraMap_mk' A Rₛ Aₛ (1 : R) ⟨s, hs⟩]
case intro.intro.mk.intro.intro
R : Type u_2
Rₛ : Type u_4
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing Rₛ
inst✝⁸ : Algebra R Rₛ
S : Submonoid R
hT : IsLocalization S Rₛ
A : Type u_1
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
Aₛ : Type u_3
inst✝⁵ : CommRing Aₛ
inst✝⁴ : Algebra A Aₛ
inst✝³ : Algebra Rₛ Aₛ
inst✝² : Algebra R Aₛ
inst✝¹ : IsScalarTower R Rₛ Aₛ
inst✝ : IsScalarTower R A Aₛ
hA : IsLocalization (Algebra.algebraMapSubmonoid A S) Aₛ
v : Set A
hv : span R v = ⊤
a : A
s : R
hs : s ∈ ↑S
⊢ IsLocalization.mk' Rₛ 1 { val := s, property := hs } • ↑(algebraMap A Aₛ) a ∈ span Rₛ (↑(algebraMap A Aₛ) '' v)
case intro.intro.mk.intro.intro
R : Type u_2
Rₛ : Type u_4
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing Rₛ
inst✝⁸ : Algebra R Rₛ
S : Submonoid R
hT : IsLocalization S Rₛ
A : Type u_1
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
Aₛ : Type u_3
inst✝⁵ : CommRing Aₛ
inst✝⁴ : Algebra A Aₛ
inst✝³ : Algebra Rₛ Aₛ
inst✝² : Algebra R Aₛ
inst✝¹ : IsScalarTower R Rₛ Aₛ
inst✝ : IsScalarTower R A Aₛ
hA : IsLocalization (Algebra.algebraMapSubmonoid A S) Aₛ
v : Set A
hv : span R v = ⊤
a : A
s : R
hs : s ∈ ↑S
⊢ ↑(algebraMap Rₛ Aₛ) (IsLocalization.mk' Rₛ 1 { val := s, property := hs }) * ↑(algebraMap A Aₛ) a ∈
    span Rₛ (↑(algebraMap A Aₛ) '' v)
rw [← Algebra.smul_def]
case intro.intro.mk.intro.intro
R : Type u_2
Rₛ : Type u_4
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing Rₛ
inst✝⁸ : Algebra R Rₛ
S : Submonoid R
hT : IsLocalization S Rₛ
A : Type u_1
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
Aₛ : Type u_3
inst✝⁵ : CommRing Aₛ
inst✝⁴ : Algebra A Aₛ
inst✝³ : Algebra Rₛ Aₛ
inst✝² : Algebra R Aₛ
inst✝¹ : IsScalarTower R Rₛ Aₛ
inst✝ : IsScalarTower R A Aₛ
hA : IsLocalization (Algebra.algebraMapSubmonoid A S) Aₛ
v : Set A
hv : span R v = ⊤
a : A
s : R
hs : s ∈ ↑S
⊢ ↑(algebraMap A Aₛ) a ∈ ↑(span R (↑(algebraMap A Aₛ) '' v))
case intro.intro.mk.intro.intro
R : Type u_2
Rₛ : Type u_4
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing Rₛ
inst✝⁸ : Algebra R Rₛ
S : Submonoid R
hT : IsLocalization S Rₛ
A : Type u_1
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
Aₛ : Type u_3
inst✝⁵ : CommRing Aₛ
inst✝⁴ : Algebra A Aₛ
inst✝³ : Algebra Rₛ Aₛ
inst✝² : Algebra R Aₛ
inst✝¹ : IsScalarTower R Rₛ Aₛ
inst✝ : IsScalarTower R A Aₛ
hA : IsLocalization (Algebra.algebraMapSubmonoid A S) Aₛ
v : Set A
hv : span R v = ⊤
a : A
s : R
hs : s ∈ ↑S
⊢ IsLocalization.mk' Rₛ 1 { val := s, property := hs } • ↑(algebraMap A Aₛ) a ∈ span Rₛ (↑(algebraMap A Aₛ) '' v)
refine' smul_mem _ _ (span_subset_span R Rₛ _ _)
case intro.intro.mk.intro.intro
R : Type u_2
Rₛ : Type u_4
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing Rₛ
inst✝⁸ : Algebra R Rₛ
S : Submonoid R
hT : IsLocalization S Rₛ
A : Type u_1
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
Aₛ : Type u_3
inst✝⁵ : CommRing Aₛ
inst✝⁴ : Algebra A Aₛ
inst✝³ : Algebra Rₛ Aₛ
inst✝² : Algebra R Aₛ
inst✝¹ : IsScalarTower R Rₛ Aₛ
inst✝ : IsScalarTower R A Aₛ
hA : IsLocalization (Algebra.algebraMapSubmonoid A S) Aₛ
v : Set A
hv : span R v = ⊤
a : A
s : R
hs : s ∈ ↑S
⊢ ↑(↑R (Algebra.linearMap A Aₛ)) a ∈ ↑(map (↑R (Algebra.linearMap A Aₛ)) (span R v))
case intro.intro.mk.intro.intro
R : Type u_2
Rₛ : Type u_4
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing Rₛ
inst✝⁸ : Algebra R Rₛ
S : Submonoid R
hT : IsLocalization S Rₛ
A : Type u_1
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
Aₛ : Type u_3
inst✝⁵ : CommRing Aₛ
inst✝⁴ : Algebra A Aₛ
inst✝³ : Algebra Rₛ Aₛ
inst✝² : Algebra R Aₛ
inst✝¹ : IsScalarTower R Rₛ Aₛ
inst✝ : IsScalarTower R A Aₛ
hA : IsLocalization (Algebra.algebraMapSubmonoid A S) Aₛ
v : Set A
hv : span R v = ⊤
a : A
s : R
hs : s ∈ ↑S
⊢ ↑(algebraMap A Aₛ) a ∈ ↑(span R (↑(algebraMap A Aₛ) '' v))
rw [← Algebra.coe_linearMap, ← LinearMap.coe_restrictScalars R, ← LinearMap.map_span]
no goals
case intro.intro.mk.intro.intro
R : Type u_2
Rₛ : Type u_4
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing Rₛ
inst✝⁸ : Algebra R Rₛ
S : Submonoid R
hT : IsLocalization S Rₛ
A : Type u_1
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
Aₛ : Type u_3
inst✝⁵ : CommRing Aₛ
inst✝⁴ : Algebra A Aₛ
inst✝³ : Algebra Rₛ Aₛ
inst✝² : Algebra R Aₛ
inst✝¹ : IsScalarTower R Rₛ Aₛ
inst✝ : IsScalarTower R A Aₛ
hA : IsLocalization (Algebra.algebraMapSubmonoid A S) Aₛ
v : Set A
hv : span R v = ⊤
a : A
s : R
hs : s ∈ ↑S
⊢ ↑(↑R (Algebra.linearMap A Aₛ)) a ∈ ↑(map (↑R (Algebra.linearMap A Aₛ)) (span R v))
exact mem_map_of_mem (hv.symm ▸ mem_top)