R : Type u_2
inst✝¹⁷ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁶ : CommRing S
inst✝¹⁵ : Algebra R S
P : Type ?u.667790
inst✝¹⁴ : CommRing P
A : Type ?u.667796
K : Type u_4
inst✝¹³ : CommRing A
inst✝¹² : IsDomain A
L : Type u_1
inst✝¹¹ : IsDomain R
inst✝¹⁰ : IsDomain S
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : IsIntegralClosure S R L
inst✝³ : IsFractionRing S L
inst✝² : Algebra K L
inst✝¹ : IsScalarTower R S L
inst✝ : IsScalarTower R K L
a : S
b : Set S
alg : Algebra.IsAlgebraic R L
inj : Function.Injective ↑(algebraMap R L)
h : ↑(Ideal.span {a}) ⊆ ↑(Submodule.span R b)
x : L
hx : x ∈ ↑(Ideal.span {↑(algebraMap S L) a})
⊢ x ∈ ↑(Submodule.span K (↑(algebraMap S L) '' b))
R : Type u_2
inst✝¹⁷ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁶ : CommRing S
inst✝¹⁵ : Algebra R S
P : Type ?u.667790
inst✝¹⁴ : CommRing P
A : Type ?u.667796
K : Type u_4
inst✝¹³ : CommRing A
inst✝¹² : IsDomain A
L : Type u_1
inst✝¹¹ : IsDomain R
inst✝¹⁰ : IsDomain S
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : IsIntegralClosure S R L
inst✝³ : IsFractionRing S L
inst✝² : Algebra K L
inst✝¹ : IsScalarTower R S L
inst✝ : IsScalarTower R K L
a : S
b : Set S
alg : Algebra.IsAlgebraic R L
inj : Function.Injective ↑(algebraMap R L)
h : ↑(Ideal.span {a}) ⊆ ↑(Submodule.span R b)
⊢ ↑(Ideal.span {↑(algebraMap S L) a}) ⊆ ↑(Submodule.span K (↑(algebraMap S L) '' b))
intro x hx
case intro
R : Type u_2
inst✝¹⁷ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁶ : CommRing S
inst✝¹⁵ : Algebra R S
P : Type ?u.667790
inst✝¹⁴ : CommRing P
A : Type ?u.667796
K : Type u_4
inst✝¹³ : CommRing A
inst✝¹² : IsDomain A
L : Type u_1
inst✝¹¹ : IsDomain R
inst✝¹⁰ : IsDomain S
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : IsIntegralClosure S R L
inst✝³ : IsFractionRing S L
inst✝² : Algebra K L
inst✝¹ : IsScalarTower R S L
inst✝ : IsScalarTower R K L
a : S
b : Set S
alg : Algebra.IsAlgebraic R L
inj : Function.Injective ↑(algebraMap R L)
h : ↑(Ideal.span {a}) ⊆ ↑(Submodule.span R b)
x' : L
hx : ↑(algebraMap S L) a * x' ∈ ↑(Ideal.span {↑(algebraMap S L) a})
⊢ ↑(algebraMap S L) a * x' ∈ ↑(Submodule.span K (↑(algebraMap S L) '' b))
R : Type u_2
inst✝¹⁷ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁶ : CommRing S
inst✝¹⁵ : Algebra R S
P : Type ?u.667790
inst✝¹⁴ : CommRing P
A : Type ?u.667796
K : Type u_4
inst✝¹³ : CommRing A
inst✝¹² : IsDomain A
L : Type u_1
inst✝¹¹ : IsDomain R
inst✝¹⁰ : IsDomain S
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : IsIntegralClosure S R L
inst✝³ : IsFractionRing S L
inst✝² : Algebra K L
inst✝¹ : IsScalarTower R S L
inst✝ : IsScalarTower R K L
a : S
b : Set S
alg : Algebra.IsAlgebraic R L
inj : Function.Injective ↑(algebraMap R L)
h : ↑(Ideal.span {a}) ⊆ ↑(Submodule.span R b)
x : L
hx : x ∈ ↑(Ideal.span {↑(algebraMap S L) a})
⊢ x ∈ ↑(Submodule.span K (↑(algebraMap S L) '' b))
obtain ⟨x', rfl⟩ := Ideal.mem_span_singleton.mp hx
case intro.intro.intro
R : Type u_2
inst✝¹⁷ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁶ : CommRing S
inst✝¹⁵ : Algebra R S
P : Type ?u.667790
inst✝¹⁴ : CommRing P
A : Type ?u.667796
K : Type u_4
inst✝¹³ : CommRing A
inst✝¹² : IsDomain A
L : Type u_1
inst✝¹¹ : IsDomain R
inst✝¹⁰ : IsDomain S
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : IsIntegralClosure S R L
inst✝³ : IsFractionRing S L
inst✝² : Algebra K L
inst✝¹ : IsScalarTower R S L
inst✝ : IsScalarTower R K L
a : S
b : Set S
alg : Algebra.IsAlgebraic R L
inj : Function.Injective ↑(algebraMap R L)
h : ↑(Ideal.span {a}) ⊆ ↑(Submodule.span R b)
y' : S
z' : { x // x ∈ S⁰ }
hx : ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Ideal.span {↑(algebraMap S L) a})
⊢ ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Submodule.span K (↑(algebraMap S L) '' b))
case intro
R : Type u_2
inst✝¹⁷ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁶ : CommRing S
inst✝¹⁵ : Algebra R S
P : Type ?u.667790
inst✝¹⁴ : CommRing P
A : Type ?u.667796
K : Type u_4
inst✝¹³ : CommRing A
inst✝¹² : IsDomain A
L : Type u_1
inst✝¹¹ : IsDomain R
inst✝¹⁰ : IsDomain S
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : IsIntegralClosure S R L
inst✝³ : IsFractionRing S L
inst✝² : Algebra K L
inst✝¹ : IsScalarTower R S L
inst✝ : IsScalarTower R K L
a : S
b : Set S
alg : Algebra.IsAlgebraic R L
inj : Function.Injective ↑(algebraMap R L)
h : ↑(Ideal.span {a}) ⊆ ↑(Submodule.span R b)
x' : L
hx : ↑(algebraMap S L) a * x' ∈ ↑(Ideal.span {↑(algebraMap S L) a})
⊢ ↑(algebraMap S L) a * x' ∈ ↑(Submodule.span K (↑(algebraMap S L) '' b))
obtain ⟨y', z', rfl⟩ := IsLocalization.mk'_surjective S⁰ x'
case intro.intro.intro.intro.intro.intro
R : Type u_2
inst✝¹⁷ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁶ : CommRing S
inst✝¹⁵ : Algebra R S
P : Type ?u.667790
inst✝¹⁴ : CommRing P
A : Type ?u.667796
K : Type u_4
inst✝¹³ : CommRing A
inst✝¹² : IsDomain A
L : Type u_1
inst✝¹¹ : IsDomain R
inst✝¹⁰ : IsDomain S
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : IsIntegralClosure S R L
inst✝³ : IsFractionRing S L
inst✝² : Algebra K L
inst✝¹ : IsScalarTower R S L
inst✝ : IsScalarTower R K L
a : S
b : Set S
alg : Algebra.IsAlgebraic R L
inj : Function.Injective ↑(algebraMap R L)
h : ↑(Ideal.span {a}) ⊆ ↑(Submodule.span R b)
y' : S
z' : { x // x ∈ S⁰ }
hx : ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Ideal.span {↑(algebraMap S L) a})
y : S
z : R
hz0 : z ≠ 0
yz_eq : z • y' = ↑z' * y
⊢ ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Submodule.span K (↑(algebraMap S L) '' b))
case intro.intro.intro
R : Type u_2
inst✝¹⁷ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁶ : CommRing S
inst✝¹⁵ : Algebra R S
P : Type ?u.667790
inst✝¹⁴ : CommRing P
A : Type ?u.667796
K : Type u_4
inst✝¹³ : CommRing A
inst✝¹² : IsDomain A
L : Type u_1
inst✝¹¹ : IsDomain R
inst✝¹⁰ : IsDomain S
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : IsIntegralClosure S R L
inst✝³ : IsFractionRing S L
inst✝² : Algebra K L
inst✝¹ : IsScalarTower R S L
inst✝ : IsScalarTower R K L
a : S
b : Set S
alg : Algebra.IsAlgebraic R L
inj : Function.Injective ↑(algebraMap R L)
h : ↑(Ideal.span {a}) ⊆ ↑(Submodule.span R b)
y' : S
z' : { x // x ∈ S⁰ }
hx : ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Ideal.span {↑(algebraMap S L) a})
⊢ ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Submodule.span K (↑(algebraMap S L) '' b))
obtain ⟨y, z, hz0, yz_eq⟩ :=
  IsIntegralClosure.exists_smul_eq_mul alg inj y' (nonZeroDivisors.coe_ne_zero z')
case intro.intro.intro.intro.intro.intro
R : Type u_2
inst✝¹⁷ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁶ : CommRing S
inst✝¹⁵ : Algebra R S
P : Type ?u.667790
inst✝¹⁴ : CommRing P
A : Type ?u.667796
K : Type u_4
inst✝¹³ : CommRing A
inst✝¹² : IsDomain A
L : Type u_1
inst✝¹¹ : IsDomain R
inst✝¹⁰ : IsDomain S
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : IsIntegralClosure S R L
inst✝³ : IsFractionRing S L
inst✝² : Algebra K L
inst✝¹ : IsScalarTower R S L
inst✝ : IsScalarTower R K L
a : S
b : Set S
alg : Algebra.IsAlgebraic R L
inj : Function.Injective ↑(algebraMap R L)
h : ↑(Ideal.span {a}) ⊆ ↑(Submodule.span R b)
y' : S
z' : { x // x ∈ S⁰ }
hx : ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Ideal.span {↑(algebraMap S L) a})
y : S
z : R
hz0 : z ≠ 0
yz_eq : z • y' = ↑z' * y
injRS : Function.Injective ↑(algebraMap R S)
⊢ ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Submodule.span K (↑(algebraMap S L) '' b))
case intro.intro.intro.intro.intro.intro
R : Type u_2
inst✝¹⁷ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁶ : CommRing S
inst✝¹⁵ : Algebra R S
P : Type ?u.667790
inst✝¹⁴ : CommRing P
A : Type ?u.667796
K : Type u_4
inst✝¹³ : CommRing A
inst✝¹² : IsDomain A
L : Type u_1
inst✝¹¹ : IsDomain R
inst✝¹⁰ : IsDomain S
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : IsIntegralClosure S R L
inst✝³ : IsFractionRing S L
inst✝² : Algebra K L
inst✝¹ : IsScalarTower R S L
inst✝ : IsScalarTower R K L
a : S
b : Set S
alg : Algebra.IsAlgebraic R L
inj : Function.Injective ↑(algebraMap R L)
h : ↑(Ideal.span {a}) ⊆ ↑(Submodule.span R b)
y' : S
z' : { x // x ∈ S⁰ }
hx : ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Ideal.span {↑(algebraMap S L) a})
y : S
z : R
hz0 : z ≠ 0
yz_eq : z • y' = ↑z' * y
⊢ ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Submodule.span K (↑(algebraMap S L) '' b))
have injRS : Function.Injective (algebraMap R S) := by
  refine'
    Function.Injective.of_comp (show Function.Injective (algebraMap S L ∘ algebraMap R S) from _)
  rwa [← RingHom.coe_comp, ← IsScalarTower.algebraMap_eq]
case intro.intro.intro.intro.intro.intro
R : Type u_2
inst✝¹⁷ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁶ : CommRing S
inst✝¹⁵ : Algebra R S
P : Type ?u.667790
inst✝¹⁴ : CommRing P
A : Type ?u.667796
K : Type u_4
inst✝¹³ : CommRing A
inst✝¹² : IsDomain A
L : Type u_1
inst✝¹¹ : IsDomain R
inst✝¹⁰ : IsDomain S
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : IsIntegralClosure S R L
inst✝³ : IsFractionRing S L
inst✝² : Algebra K L
inst✝¹ : IsScalarTower R S L
inst✝ : IsScalarTower R K L
a : S
b : Set S
alg : Algebra.IsAlgebraic R L
inj : Function.Injective ↑(algebraMap R L)
h : ↑(Ideal.span {a}) ⊆ ↑(Submodule.span R b)
y' : S
z' : { x // x ∈ S⁰ }
hx : ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Ideal.span {↑(algebraMap S L) a})
y : S
z : R
hz0 : z ≠ 0
yz_eq : z • y' = ↑z' * y
injRS : Function.Injective ↑(algebraMap R S)
hz0' : ↑(algebraMap R S) z ∈ S⁰
⊢ ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Submodule.span K (↑(algebraMap S L) '' b))
case intro.intro.intro.intro.intro.intro
R : Type u_2
inst✝¹⁷ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁶ : CommRing S
inst✝¹⁵ : Algebra R S
P : Type ?u.667790
inst✝¹⁴ : CommRing P
A : Type ?u.667796
K : Type u_4
inst✝¹³ : CommRing A
inst✝¹² : IsDomain A
L : Type u_1
inst✝¹¹ : IsDomain R
inst✝¹⁰ : IsDomain S
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : IsIntegralClosure S R L
inst✝³ : IsFractionRing S L
inst✝² : Algebra K L
inst✝¹ : IsScalarTower R S L
inst✝ : IsScalarTower R K L
a : S
b : Set S
alg : Algebra.IsAlgebraic R L
inj : Function.Injective ↑(algebraMap R L)
h : ↑(Ideal.span {a}) ⊆ ↑(Submodule.span R b)
y' : S
z' : { x // x ∈ S⁰ }
hx : ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Ideal.span {↑(algebraMap S L) a})
y : S
z : R
hz0 : z ≠ 0
yz_eq : z • y' = ↑z' * y
injRS : Function.Injective ↑(algebraMap R S)
⊢ ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Submodule.span K (↑(algebraMap S L) '' b))
have hz0' : algebraMap R S z ∈ S⁰ :=
  map_mem_nonZeroDivisors (algebraMap R S) injRS (mem_nonZeroDivisors_of_ne_zero hz0)
case intro.intro.intro.intro.intro.intro
R : Type u_2
inst✝¹⁷ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁶ : CommRing S
inst✝¹⁵ : Algebra R S
P : Type ?u.667790
inst✝¹⁴ : CommRing P
A : Type ?u.667796
K : Type u_4
inst✝¹³ : CommRing A
inst✝¹² : IsDomain A
L : Type u_1
inst✝¹¹ : IsDomain R
inst✝¹⁰ : IsDomain S
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : IsIntegralClosure S R L
inst✝³ : IsFractionRing S L
inst✝² : Algebra K L
inst✝¹ : IsScalarTower R S L
inst✝ : IsScalarTower R K L
a : S
b : Set S
alg : Algebra.IsAlgebraic R L
inj : Function.Injective ↑(algebraMap R L)
h : ↑(Ideal.span {a}) ⊆ ↑(Submodule.span R b)
y' : S
z' : { x // x ∈ S⁰ }
hx : ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Ideal.span {↑(algebraMap S L) a})
y : S
z : R
hz0 : z ≠ 0
yz_eq : z • y' = ↑z' * y
injRS : Function.Injective ↑(algebraMap R S)
hz0' : ↑(algebraMap R S) z ∈ S⁰
mk_yz_eq : mk' L y' z' = mk' L y { val := ↑(algebraMap R S) z, property := hz0' }
⊢ ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Submodule.span K (↑(algebraMap S L) '' b))
case intro.intro.intro.intro.intro.intro
R : Type u_2
inst✝¹⁷ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁶ : CommRing S
inst✝¹⁵ : Algebra R S
P : Type ?u.667790
inst✝¹⁴ : CommRing P
A : Type ?u.667796
K : Type u_4
inst✝¹³ : CommRing A
inst✝¹² : IsDomain A
L : Type u_1
inst✝¹¹ : IsDomain R
inst✝¹⁰ : IsDomain S
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : IsIntegralClosure S R L
inst✝³ : IsFractionRing S L
inst✝² : Algebra K L
inst✝¹ : IsScalarTower R S L
inst✝ : IsScalarTower R K L
a : S
b : Set S
alg : Algebra.IsAlgebraic R L
inj : Function.Injective ↑(algebraMap R L)
h : ↑(Ideal.span {a}) ⊆ ↑(Submodule.span R b)
y' : S
z' : { x // x ∈ S⁰ }
hx : ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Ideal.span {↑(algebraMap S L) a})
y : S
z : R
hz0 : z ≠ 0
yz_eq : z • y' = ↑z' * y
injRS : Function.Injective ↑(algebraMap R S)
hz0' : ↑(algebraMap R S) z ∈ S⁰
⊢ ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Submodule.span K (↑(algebraMap S L) '' b))
have mk_yz_eq : IsLocalization.mk' L y' z' = IsLocalization.mk' L y ⟨_, hz0'⟩ := by
  rw [Algebra.smul_def, mul_comm _ y, mul_comm _ y'] at yz_eq
  exact IsLocalization.mk'_eq_of_eq (by rw [mul_comm _ y, mul_comm _ y', yz_eq])
case intro.intro.intro.intro.intro.intro
R : Type u_2
inst✝¹⁷ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁶ : CommRing S
inst✝¹⁵ : Algebra R S
P : Type ?u.667790
inst✝¹⁴ : CommRing P
A : Type ?u.667796
K : Type u_4
inst✝¹³ : CommRing A
inst✝¹² : IsDomain A
L : Type u_1
inst✝¹¹ : IsDomain R
inst✝¹⁰ : IsDomain S
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : IsIntegralClosure S R L
inst✝³ : IsFractionRing S L
inst✝² : Algebra K L
inst✝¹ : IsScalarTower R S L
inst✝ : IsScalarTower R K L
a : S
b : Set S
alg : Algebra.IsAlgebraic R L
inj : Function.Injective ↑(algebraMap R L)
h : ↑(Ideal.span {a}) ⊆ ↑(Submodule.span R b)
y' : S
z' : { x // x ∈ S⁰ }
hx : ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Ideal.span {↑(algebraMap S L) a})
y : S
z : R
hz0 : z ≠ 0
yz_eq : z • y' = ↑z' * y
injRS : Function.Injective ↑(algebraMap R S)
hz0' : ↑(algebraMap R S) z ∈ S⁰
mk_yz_eq : mk' L y' z' = mk' L y { val := ↑(algebraMap R S) z, property := hz0' }
hy : ↑(algebraMap S L) (a * y) ∈ Submodule.span K (↑(algebraMap S L) '' b)
⊢ ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Submodule.span K (↑(algebraMap S L) '' b))

case hy
R : Type u_2
inst✝¹⁷ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁶ : CommRing S
inst✝¹⁵ : Algebra R S
P : Type ?u.667790
inst✝¹⁴ : CommRing P
A : Type ?u.667796
K : Type u_4
inst✝¹³ : CommRing A
inst✝¹² : IsDomain A
L : Type u_1
inst✝¹¹ : IsDomain R
inst✝¹⁰ : IsDomain S
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : IsIntegralClosure S R L
inst✝³ : IsFractionRing S L
inst✝² : Algebra K L
inst✝¹ : IsScalarTower R S L
inst✝ : IsScalarTower R K L
a : S
b : Set S
alg : Algebra.IsAlgebraic R L
inj : Function.Injective ↑(algebraMap R L)
h : ↑(Ideal.span {a}) ⊆ ↑(Submodule.span R b)
y' : S
z' : { x // x ∈ S⁰ }
hx : ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Ideal.span {↑(algebraMap S L) a})
y : S
z : R
hz0 : z ≠ 0
yz_eq : z • y' = ↑z' * y
injRS : Function.Injective ↑(algebraMap R S)
hz0' : ↑(algebraMap R S) z ∈ S⁰
mk_yz_eq : mk' L y' z' = mk' L y { val := ↑(algebraMap R S) z, property := hz0' }
⊢ ↑(algebraMap S L) (a * y) ∈ Submodule.span K (↑(algebraMap S L) '' b)
case intro.intro.intro.intro.intro.intro
R : Type u_2
inst✝¹⁷ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁶ : CommRing S
inst✝¹⁵ : Algebra R S
P : Type ?u.667790
inst✝¹⁴ : CommRing P
A : Type ?u.667796
K : Type u_4
inst✝¹³ : CommRing A
inst✝¹² : IsDomain A
L : Type u_1
inst✝¹¹ : IsDomain R
inst✝¹⁰ : IsDomain S
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : IsIntegralClosure S R L
inst✝³ : IsFractionRing S L
inst✝² : Algebra K L
inst✝¹ : IsScalarTower R S L
inst✝ : IsScalarTower R K L
a : S
b : Set S
alg : Algebra.IsAlgebraic R L
inj : Function.Injective ↑(algebraMap R L)
h : ↑(Ideal.span {a}) ⊆ ↑(Submodule.span R b)
y' : S
z' : { x // x ∈ S⁰ }
hx : ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Ideal.span {↑(algebraMap S L) a})
y : S
z : R
hz0 : z ≠ 0
yz_eq : z • y' = ↑z' * y
injRS : Function.Injective ↑(algebraMap R S)
hz0' : ↑(algebraMap R S) z ∈ S⁰
mk_yz_eq : mk' L y' z' = mk' L y { val := ↑(algebraMap R S) z, property := hz0' }
⊢ ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Submodule.span K (↑(algebraMap S L) '' b))
suffices hy : algebraMap S L (a * y) ∈ Submodule.span K ((algebraMap S L) '' b)
case hy
R : Type u_2
inst✝¹⁷ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁶ : CommRing S
inst✝¹⁵ : Algebra R S
P : Type ?u.667790
inst✝¹⁴ : CommRing P
A : Type ?u.667796
K : Type u_4
inst✝¹³ : CommRing A
inst✝¹² : IsDomain A
L : Type u_1
inst✝¹¹ : IsDomain R
inst✝¹⁰ : IsDomain S
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : IsIntegralClosure S R L
inst✝³ : IsFractionRing S L
inst✝² : Algebra K L
inst✝¹ : IsScalarTower R S L
inst✝ : IsScalarTower R K L
a : S
b : Set S
alg : Algebra.IsAlgebraic R L
inj : Function.Injective ↑(algebraMap R L)
h : ↑(Ideal.span {a}) ⊆ ↑(Submodule.span R b)
y' : S
z' : { x // x ∈ S⁰ }
hx : ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Ideal.span {↑(algebraMap S L) a})
y : S
z : R
hz0 : z ≠ 0
yz_eq : z • y' = ↑z' * y
injRS : Function.Injective ↑(algebraMap R S)
hz0' : ↑(algebraMap R S) z ∈ S⁰
mk_yz_eq : mk' L y' z' = mk' L y { val := ↑(algebraMap R S) z, property := hz0' }
⊢ ↑(algebraMap S L) (a * y) ∈ ↑(Submodule.span R (↑(algebraMap S L) '' b))
case hy
R : Type u_2
inst✝¹⁷ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁶ : CommRing S
inst✝¹⁵ : Algebra R S
P : Type ?u.667790
inst✝¹⁴ : CommRing P
A : Type ?u.667796
K : Type u_4
inst✝¹³ : CommRing A
inst✝¹² : IsDomain A
L : Type u_1
inst✝¹¹ : IsDomain R
inst✝¹⁰ : IsDomain S
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : IsIntegralClosure S R L
inst✝³ : IsFractionRing S L
inst✝² : Algebra K L
inst✝¹ : IsScalarTower R S L
inst✝ : IsScalarTower R K L
a : S
b : Set S
alg : Algebra.IsAlgebraic R L
inj : Function.Injective ↑(algebraMap R L)
h : ↑(Ideal.span {a}) ⊆ ↑(Submodule.span R b)
y' : S
z' : { x // x ∈ S⁰ }
hx : ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Ideal.span {↑(algebraMap S L) a})
y : S
z : R
hz0 : z ≠ 0
yz_eq : z • y' = ↑z' * y
injRS : Function.Injective ↑(algebraMap R S)
hz0' : ↑(algebraMap R S) z ∈ S⁰
mk_yz_eq : mk' L y' z' = mk' L y { val := ↑(algebraMap R S) z, property := hz0' }
⊢ ↑(algebraMap S L) (a * y) ∈ Submodule.span K (↑(algebraMap S L) '' b)
refine' Submodule.span_subset_span R K _ _
case hy
R : Type u_2
inst✝¹⁷ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁶ : CommRing S
inst✝¹⁵ : Algebra R S
P : Type ?u.667790
inst✝¹⁴ : CommRing P
A : Type ?u.667796
K : Type u_4
inst✝¹³ : CommRing A
inst✝¹² : IsDomain A
L : Type u_1
inst✝¹¹ : IsDomain R
inst✝¹⁰ : IsDomain S
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : IsIntegralClosure S R L
inst✝³ : IsFractionRing S L
inst✝² : Algebra K L
inst✝¹ : IsScalarTower R S L
inst✝ : IsScalarTower R K L
a : S
b : Set S
alg : Algebra.IsAlgebraic R L
inj : Function.Injective ↑(algebraMap R L)
h : ↑(Ideal.span {a}) ⊆ ↑(Submodule.span R b)
y' : S
z' : { x // x ∈ S⁰ }
hx : ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Ideal.span {↑(algebraMap S L) a})
y : S
z : R
hz0 : z ≠ 0
yz_eq : z • y' = ↑z' * y
injRS : Function.Injective ↑(algebraMap R S)
hz0' : ↑(algebraMap R S) z ∈ S⁰
mk_yz_eq : mk' L y' z' = mk' L y { val := ↑(algebraMap R S) z, property := hz0' }
⊢ ↑(algebraMap S L) (a * y) ∈ ↑(Submodule.map (↑R (Algebra.linearMap S L)) (Submodule.span R b))
case hy
R : Type u_2
inst✝¹⁷ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁶ : CommRing S
inst✝¹⁵ : Algebra R S
P : Type ?u.667790
inst✝¹⁴ : CommRing P
A : Type ?u.667796
K : Type u_4
inst✝¹³ : CommRing A
inst✝¹² : IsDomain A
L : Type u_1
inst✝¹¹ : IsDomain R
inst✝¹⁰ : IsDomain S
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : IsIntegralClosure S R L
inst✝³ : IsFractionRing S L
inst✝² : Algebra K L
inst✝¹ : IsScalarTower R S L
inst✝ : IsScalarTower R K L
a : S
b : Set S
alg : Algebra.IsAlgebraic R L
inj : Function.Injective ↑(algebraMap R L)
h : ↑(Ideal.span {a}) ⊆ ↑(Submodule.span R b)
y' : S
z' : { x // x ∈ S⁰ }
hx : ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Ideal.span {↑(algebraMap S L) a})
y : S
z : R
hz0 : z ≠ 0
yz_eq : z • y' = ↑z' * y
injRS : Function.Injective ↑(algebraMap R S)
hz0' : ↑(algebraMap R S) z ∈ S⁰
mk_yz_eq : mk' L y' z' = mk' L y { val := ↑(algebraMap R S) z, property := hz0' }
⊢ ↑(algebraMap S L) (a * y) ∈ ↑(Submodule.span R (↑(algebraMap S L) '' b))
rw [Submodule.span_algebraMap_image_of_tower]
no goals
case hy
R : Type u_2
inst✝¹⁷ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁶ : CommRing S
inst✝¹⁵ : Algebra R S
P : Type ?u.667790
inst✝¹⁴ : CommRing P
A : Type ?u.667796
K : Type u_4
inst✝¹³ : CommRing A
inst✝¹² : IsDomain A
L : Type u_1
inst✝¹¹ : IsDomain R
inst✝¹⁰ : IsDomain S
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : IsIntegralClosure S R L
inst✝³ : IsFractionRing S L
inst✝² : Algebra K L
inst✝¹ : IsScalarTower R S L
inst✝ : IsScalarTower R K L
a : S
b : Set S
alg : Algebra.IsAlgebraic R L
inj : Function.Injective ↑(algebraMap R L)
h : ↑(Ideal.span {a}) ⊆ ↑(Submodule.span R b)
y' : S
z' : { x // x ∈ S⁰ }
hx : ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Ideal.span {↑(algebraMap S L) a})
y : S
z : R
hz0 : z ≠ 0
yz_eq : z • y' = ↑z' * y
injRS : Function.Injective ↑(algebraMap R S)
hz0' : ↑(algebraMap R S) z ∈ S⁰
mk_yz_eq : mk' L y' z' = mk' L y { val := ↑(algebraMap R S) z, property := hz0' }
⊢ ↑(algebraMap S L) (a * y) ∈ ↑(Submodule.map (↑R (Algebra.linearMap S L)) (Submodule.span R b))
exact Submodule.mem_map_of_mem (h (Ideal.mem_span_singleton.mpr ⟨y, rfl⟩))
R : Type u_2
inst✝¹⁷ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁶ : CommRing S
inst✝¹⁵ : Algebra R S
P : Type ?u.667790
inst✝¹⁴ : CommRing P
A : Type ?u.667796
K : Type u_4
inst✝¹³ : CommRing A
inst✝¹² : IsDomain A
L : Type u_1
inst✝¹¹ : IsDomain R
inst✝¹⁰ : IsDomain S
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : IsIntegralClosure S R L
inst✝³ : IsFractionRing S L
inst✝² : Algebra K L
inst✝¹ : IsScalarTower R S L
inst✝ : IsScalarTower R K L
a : S
b : Set S
alg : Algebra.IsAlgebraic R L
inj : Function.Injective ↑(algebraMap R L)
h : ↑(Ideal.span {a}) ⊆ ↑(Submodule.span R b)
y' : S
z' : { x // x ∈ S⁰ }
hx : ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Ideal.span {↑(algebraMap S L) a})
y : S
z : R
hz0 : z ≠ 0
yz_eq : z • y' = ↑z' * y
⊢ Function.Injective (↑(algebraMap S L) ∘ ↑(algebraMap R S))
R : Type u_2
inst✝¹⁷ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁶ : CommRing S
inst✝¹⁵ : Algebra R S
P : Type ?u.667790
inst✝¹⁴ : CommRing P
A : Type ?u.667796
K : Type u_4
inst✝¹³ : CommRing A
inst✝¹² : IsDomain A
L : Type u_1
inst✝¹¹ : IsDomain R
inst✝¹⁰ : IsDomain S
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : IsIntegralClosure S R L
inst✝³ : IsFractionRing S L
inst✝² : Algebra K L
inst✝¹ : IsScalarTower R S L
inst✝ : IsScalarTower R K L
a : S
b : Set S
alg : Algebra.IsAlgebraic R L
inj : Function.Injective ↑(algebraMap R L)
h : ↑(Ideal.span {a}) ⊆ ↑(Submodule.span R b)
y' : S
z' : { x // x ∈ S⁰ }
hx : ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Ideal.span {↑(algebraMap S L) a})
y : S
z : R
hz0 : z ≠ 0
yz_eq : z • y' = ↑z' * y
⊢ Function.Injective ↑(algebraMap R S)
refine'
  Function.Injective.of_comp (show Function.Injective (algebraMap S L ∘ algebraMap R S) from _)
no goals
R : Type u_2
inst✝¹⁷ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁶ : CommRing S
inst✝¹⁵ : Algebra R S
P : Type ?u.667790
inst✝¹⁴ : CommRing P
A : Type ?u.667796
K : Type u_4
inst✝¹³ : CommRing A
inst✝¹² : IsDomain A
L : Type u_1
inst✝¹¹ : IsDomain R
inst✝¹⁰ : IsDomain S
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : IsIntegralClosure S R L
inst✝³ : IsFractionRing S L
inst✝² : Algebra K L
inst✝¹ : IsScalarTower R S L
inst✝ : IsScalarTower R K L
a : S
b : Set S
alg : Algebra.IsAlgebraic R L
inj : Function.Injective ↑(algebraMap R L)
h : ↑(Ideal.span {a}) ⊆ ↑(Submodule.span R b)
y' : S
z' : { x // x ∈ S⁰ }
hx : ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Ideal.span {↑(algebraMap S L) a})
y : S
z : R
hz0 : z ≠ 0
yz_eq : z • y' = ↑z' * y
⊢ Function.Injective (↑(algebraMap S L) ∘ ↑(algebraMap R S))
rwa [← RingHom.coe_comp, ← IsScalarTower.algebraMap_eq]
R : Type u_2
inst✝¹⁷ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁶ : CommRing S
inst✝¹⁵ : Algebra R S
P : Type ?u.667790
inst✝¹⁴ : CommRing P
A : Type ?u.667796
K : Type u_4
inst✝¹³ : CommRing A
inst✝¹² : IsDomain A
L : Type u_1
inst✝¹¹ : IsDomain R
inst✝¹⁰ : IsDomain S
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : IsIntegralClosure S R L
inst✝³ : IsFractionRing S L
inst✝² : Algebra K L
inst✝¹ : IsScalarTower R S L
inst✝ : IsScalarTower R K L
a : S
b : Set S
alg : Algebra.IsAlgebraic R L
inj : Function.Injective ↑(algebraMap R L)
h : ↑(Ideal.span {a}) ⊆ ↑(Submodule.span R b)
y' : S
z' : { x // x ∈ S⁰ }
hx : ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Ideal.span {↑(algebraMap S L) a})
y : S
z : R
hz0 : z ≠ 0
yz_eq : y' * ↑(algebraMap R S) z = y * ↑z'
injRS : Function.Injective ↑(algebraMap R S)
hz0' : ↑(algebraMap R S) z ∈ S⁰
⊢ mk' L y' z' = mk' L y { val := ↑(algebraMap R S) z, property := hz0' }
R : Type u_2
inst✝¹⁷ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁶ : CommRing S
inst✝¹⁵ : Algebra R S
P : Type ?u.667790
inst✝¹⁴ : CommRing P
A : Type ?u.667796
K : Type u_4
inst✝¹³ : CommRing A
inst✝¹² : IsDomain A
L : Type u_1
inst✝¹¹ : IsDomain R
inst✝¹⁰ : IsDomain S
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : IsIntegralClosure S R L
inst✝³ : IsFractionRing S L
inst✝² : Algebra K L
inst✝¹ : IsScalarTower R S L
inst✝ : IsScalarTower R K L
a : S
b : Set S
alg : Algebra.IsAlgebraic R L
inj : Function.Injective ↑(algebraMap R L)
h : ↑(Ideal.span {a}) ⊆ ↑(Submodule.span R b)
y' : S
z' : { x // x ∈ S⁰ }
hx : ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Ideal.span {↑(algebraMap S L) a})
y : S
z : R
hz0 : z ≠ 0
yz_eq : z • y' = ↑z' * y
injRS : Function.Injective ↑(algebraMap R S)
hz0' : ↑(algebraMap R S) z ∈ S⁰
⊢ mk' L y' z' = mk' L y { val := ↑(algebraMap R S) z, property := hz0' }
rw [Algebra.smul_def, mul_comm _ y, mul_comm _ y'] at yz_eq
no goals
R : Type u_2
inst✝¹⁷ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁶ : CommRing S
inst✝¹⁵ : Algebra R S
P : Type ?u.667790
inst✝¹⁴ : CommRing P
A : Type ?u.667796
K : Type u_4
inst✝¹³ : CommRing A
inst✝¹² : IsDomain A
L : Type u_1
inst✝¹¹ : IsDomain R
inst✝¹⁰ : IsDomain S
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : IsIntegralClosure S R L
inst✝³ : IsFractionRing S L
inst✝² : Algebra K L
inst✝¹ : IsScalarTower R S L
inst✝ : IsScalarTower R K L
a : S
b : Set S
alg : Algebra.IsAlgebraic R L
inj : Function.Injective ↑(algebraMap R L)
h : ↑(Ideal.span {a}) ⊆ ↑(Submodule.span R b)
y' : S
z' : { x // x ∈ S⁰ }
hx : ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Ideal.span {↑(algebraMap S L) a})
y : S
z : R
hz0 : z ≠ 0
yz_eq : y' * ↑(algebraMap R S) z = y * ↑z'
injRS : Function.Injective ↑(algebraMap R S)
hz0' : ↑(algebraMap R S) z ∈ S⁰
⊢ mk' L y' z' = mk' L y { val := ↑(algebraMap R S) z, property := hz0' }
exact IsLocalization.mk'_eq_of_eq (by rw [mul_comm _ y, mul_comm _ y', yz_eq])
no goals
R : Type u_2
inst✝¹⁷ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁶ : CommRing S
inst✝¹⁵ : Algebra R S
P : Type ?u.667790
inst✝¹⁴ : CommRing P
A : Type ?u.667796
K : Type u_4
inst✝¹³ : CommRing A
inst✝¹² : IsDomain A
L : Type u_1
inst✝¹¹ : IsDomain R
inst✝¹⁰ : IsDomain S
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : IsIntegralClosure S R L
inst✝³ : IsFractionRing S L
inst✝² : Algebra K L
inst✝¹ : IsScalarTower R S L
inst✝ : IsScalarTower R K L
a : S
b : Set S
alg : Algebra.IsAlgebraic R L
inj : Function.Injective ↑(algebraMap R L)
h : ↑(Ideal.span {a}) ⊆ ↑(Submodule.span R b)
y' : S
z' : { x // x ∈ S⁰ }
hx : ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Ideal.span {↑(algebraMap S L) a})
y : S
z : R
hz0 : z ≠ 0
yz_eq : y' * ↑(algebraMap R S) z = y * ↑z'
injRS : Function.Injective ↑(algebraMap R S)
hz0' : ↑(algebraMap R S) z ∈ S⁰
⊢ ↑z' * y = ↑{ val := ↑(algebraMap R S) z, property := hz0' } * y'
rw [mul_comm _ y, mul_comm _ y', yz_eq]
case intro.intro.intro.intro.intro.intro
R : Type u_2
inst✝¹⁷ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁶ : CommRing S
inst✝¹⁵ : Algebra R S
P : Type ?u.667790
inst✝¹⁴ : CommRing P
A : Type ?u.667796
K : Type u_4
inst✝¹³ : CommRing A
inst✝¹² : IsDomain A
L : Type u_1
inst✝¹¹ : IsDomain R
inst✝¹⁰ : IsDomain S
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : IsIntegralClosure S R L
inst✝³ : IsFractionRing S L
inst✝² : Algebra K L
inst✝¹ : IsScalarTower R S L
inst✝ : IsScalarTower R K L
a : S
b : Set S
alg : Algebra.IsAlgebraic R L
inj : Function.Injective ↑(algebraMap R L)
h : ↑(Ideal.span {a}) ⊆ ↑(Submodule.span R b)
y' : S
z' : { x // x ∈ S⁰ }
hx : ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Ideal.span {↑(algebraMap S L) a})
y : S
z : R
hz0 : z ≠ 0
yz_eq : z • y' = ↑z' * y
injRS : Function.Injective ↑(algebraMap R S)
hz0' : ↑(algebraMap R S) z ∈ S⁰
mk_yz_eq : mk' L y' z' = mk' L y { val := ↑(algebraMap R S) z, property := hz0' }
hy : ↑(algebraMap S L) (a * y) ∈ Submodule.span K (↑(algebraMap S L) '' b)
⊢ (↑(algebraMap R K) z)⁻¹ • ↑(algebraMap S L) (a * y) ∈ ↑(Submodule.span K (↑(algebraMap S L) '' b))
case intro.intro.intro.intro.intro.intro
R : Type u_2
inst✝¹⁷ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁶ : CommRing S
inst✝¹⁵ : Algebra R S
P : Type ?u.667790
inst✝¹⁴ : CommRing P
A : Type ?u.667796
K : Type u_4
inst✝¹³ : CommRing A
inst✝¹² : IsDomain A
L : Type u_1
inst✝¹¹ : IsDomain R
inst✝¹⁰ : IsDomain S
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : IsIntegralClosure S R L
inst✝³ : IsFractionRing S L
inst✝² : Algebra K L
inst✝¹ : IsScalarTower R S L
inst✝ : IsScalarTower R K L
a : S
b : Set S
alg : Algebra.IsAlgebraic R L
inj : Function.Injective ↑(algebraMap R L)
h : ↑(Ideal.span {a}) ⊆ ↑(Submodule.span R b)
y' : S
z' : { x // x ∈ S⁰ }
hx : ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Ideal.span {↑(algebraMap S L) a})
y : S
z : R
hz0 : z ≠ 0
yz_eq : z • y' = ↑z' * y
injRS : Function.Injective ↑(algebraMap R S)
hz0' : ↑(algebraMap R S) z ∈ S⁰
mk_yz_eq : mk' L y' z' = mk' L y { val := ↑(algebraMap R S) z, property := hz0' }
hy : ↑(algebraMap S L) (a * y) ∈ Submodule.span K (↑(algebraMap S L) '' b)
⊢ ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Submodule.span K (↑(algebraMap S L) '' b))
rw [mk_yz_eq, IsFractionRing.mk'_eq_div, ← IsScalarTower.algebraMap_apply,
  IsScalarTower.algebraMap_apply R K L, div_eq_mul_inv, ← mul_assoc, mul_comm, ← map_inv₀, ←
  Algebra.smul_def, ← _root_.map_mul]
no goals
case intro.intro.intro.intro.intro.intro
R : Type u_2
inst✝¹⁷ : CommRing R
M : Submonoid R
S : Type u_3
inst✝¹⁶ : CommRing S
inst✝¹⁵ : Algebra R S
P : Type ?u.667790
inst✝¹⁴ : CommRing P
A : Type ?u.667796
K : Type u_4
inst✝¹³ : CommRing A
inst✝¹² : IsDomain A
L : Type u_1
inst✝¹¹ : IsDomain R
inst✝¹⁰ : IsDomain S
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : IsIntegralClosure S R L
inst✝³ : IsFractionRing S L
inst✝² : Algebra K L
inst✝¹ : IsScalarTower R S L
inst✝ : IsScalarTower R K L
a : S
b : Set S
alg : Algebra.IsAlgebraic R L
inj : Function.Injective ↑(algebraMap R L)
h : ↑(Ideal.span {a}) ⊆ ↑(Submodule.span R b)
y' : S
z' : { x // x ∈ S⁰ }
hx : ↑(algebraMap S L) a * mk' L y' z' ∈ ↑(Ideal.span {↑(algebraMap S L) a})
y : S
z : R
hz0 : z ≠ 0
yz_eq : z • y' = ↑z' * y
injRS : Function.Injective ↑(algebraMap R S)
hz0' : ↑(algebraMap R S) z ∈ S⁰
mk_yz_eq : mk' L y' z' = mk' L y { val := ↑(algebraMap R S) z, property := hz0' }
hy : ↑(algebraMap S L) (a * y) ∈ Submodule.span K (↑(algebraMap S L) '' b)
⊢ (↑(algebraMap R K) z)⁻¹ • ↑(algebraMap S L) (a * y) ∈ ↑(Submodule.span K (↑(algebraMap S L) '' b))
exact (Submodule.span K _).smul_mem _ hy