Theorem: isAlgebraic_of_isFractionRing
File: Mathlib/RingTheory/Localization/Integral.lean

Proof steps:
state_before: R✝ : Type u_1
inst✝¹⁸ : CommRing R✝
M : Submonoid R✝
S✝ : Type u_2
inst✝¹⁷ : CommRing S✝
inst✝¹⁶ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁵ : CommRing P
A : Type u_4
K✝ : Type u_5
inst✝¹⁴ : CommRing A
inst✝¹³ : IsDomain A
R : Type u_6
S : Type u_7
K : Type u_8
L : Type u_9
inst✝¹² : CommRing R
inst✝¹¹ : CommRing S
inst✝¹⁰ : Field K
inst✝⁹ : CommRing L
inst✝⁸ : Algebra R S
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : Algebra K L
inst✝³ : IsScalarTower R S L
inst✝² : IsScalarTower R K L
inst✝¹ : IsFractionRing S L
inst✝ : Algebra.IsIntegral R S
⊢ Algebra.IsAlgebraic K L
state_after: case isAlgebraic
R✝ : Type u_1
inst✝¹⁸ : CommRing R✝
M : Submonoid R✝
S✝ : Type u_2
inst✝¹⁷ : CommRing S✝
inst✝¹⁶ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁵ : CommRing P
A : Type u_4
K✝ : Type u_5
inst✝¹⁴ : CommRing A
inst✝¹³ : IsDomain A
R : Type u_6
S : Type u_7
K : Type u_8
L : Type u_9
inst✝¹² : CommRing R
inst✝¹¹ : CommRing S
inst✝¹⁰ : Field K
inst✝⁹ : CommRing L
inst✝⁸ : Algebra R S
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : Algebra K L
inst✝³ : IsScalarTower R S L
inst✝² : IsScalarTower R K L
inst✝¹ : IsFractionRing S L
inst✝ : Algebra.IsIntegral R S
⊢ ∀ (x : L), IsAlgebraic K x
tactic: constructor
state_before: case isAlgebraic
R✝ : Type u_1
inst✝¹⁸ : CommRing R✝
M : Submonoid R✝
S✝ : Type u_2
inst✝¹⁷ : CommRing S✝
inst✝¹⁶ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁵ : CommRing P
A : Type u_4
K✝ : Type u_5
inst✝¹⁴ : CommRing A
inst✝¹³ : IsDomain A
R : Type u_6
S : Type u_7
K : Type u_8
L : Type u_9
inst✝¹² : CommRing R
inst✝¹¹ : CommRing S
inst✝¹⁰ : Field K
inst✝⁹ : CommRing L
inst✝⁸ : Algebra R S
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : Algebra K L
inst✝³ : IsScalarTower R S L
inst✝² : IsScalarTower R K L
inst✝¹ : IsFractionRing S L
inst✝ : Algebra.IsIntegral R S
⊢ ∀ (x : L), IsAlgebraic K x
state_after: case isAlgebraic
R✝ : Type u_1
inst✝¹⁸ : CommRing R✝
M : Submonoid R✝
S✝ : Type u_2
inst✝¹⁷ : CommRing S✝
inst✝¹⁶ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁵ : CommRing P
A : Type u_4
K✝ : Type u_5
inst✝¹⁴ : CommRing A
inst✝¹³ : IsDomain A
R : Type u_6
S : Type u_7
K : Type u_8
L : Type u_9
inst✝¹² : CommRing R
inst✝¹¹ : CommRing S
inst✝¹⁰ : Field K
inst✝⁹ : CommRing L
inst✝⁸ : Algebra R S
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : Algebra K L
inst✝³ : IsScalarTower R S L
inst✝² : IsScalarTower R K L
inst✝¹ : IsFractionRing S L
inst✝ : Algebra.IsIntegral R S
x : L
⊢ IsAlgebraic K x
tactic: intro x
state_before: case isAlgebraic
R✝ : Type u_1
inst✝¹⁸ : CommRing R✝
M : Submonoid R✝
S✝ : Type u_2
inst✝¹⁷ : CommRing S✝
inst✝¹⁶ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁵ : CommRing P
A : Type u_4
K✝ : Type u_5
inst✝¹⁴ : CommRing A
inst✝¹³ : IsDomain A
R : Type u_6
S : Type u_7
K : Type u_8
L : Type u_9
inst✝¹² : CommRing R
inst✝¹¹ : CommRing S
inst✝¹⁰ : Field K
inst✝⁹ : CommRing L
inst✝⁸ : Algebra R S
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : Algebra K L
inst✝³ : IsScalarTower R S L
inst✝² : IsScalarTower R K L
inst✝¹ : IsFractionRing S L
inst✝ : Algebra.IsIntegral R S
x : L
⊢ IsAlgebraic K x
state_after: case isAlgebraic.intro.intro
R✝ : Type u_1
inst✝¹⁸ : CommRing R✝
M : Submonoid R✝
S✝ : Type u_2
inst✝¹⁷ : CommRing S✝
inst✝¹⁶ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁵ : CommRing P
A : Type u_4
K✝ : Type u_5
inst✝¹⁴ : CommRing A
inst✝¹³ : IsDomain A
R : Type u_6
S : Type u_7
K : Type u_8
L : Type u_9
inst✝¹² : CommRing R
inst✝¹¹ : CommRing S
inst✝¹⁰ : Field K
inst✝⁹ : CommRing L
inst✝⁸ : Algebra R S
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : Algebra K L
inst✝³ : IsScalarTower R S L
inst✝² : IsScalarTower R K L
inst✝¹ : IsFractionRing S L
inst✝ : Algebra.IsIntegral R S
x : S
s : ↥S⁰
⊢ IsAlgebraic K (mk' L x s)
tactic: obtain ⟨x, s, rfl⟩ := IsLocalization.mk'_surjective S⁰ x
state_before: case isAlgebraic.intro.intro
R✝ : Type u_1
inst✝¹⁸ : CommRing R✝
M : Submonoid R✝
S✝ : Type u_2
inst✝¹⁷ : CommRing S✝
inst✝¹⁶ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁵ : CommRing P
A : Type u_4
K✝ : Type u_5
inst✝¹⁴ : CommRing A
inst✝¹³ : IsDomain A
R : Type u_6
S : Type u_7
K : Type u_8
L : Type u_9
inst✝¹² : CommRing R
inst✝¹¹ : CommRing S
inst✝¹⁰ : Field K
inst✝⁹ : CommRing L
inst✝⁸ : Algebra R S
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : Algebra K L
inst✝³ : IsScalarTower R S L
inst✝² : IsScalarTower R K L
inst✝¹ : IsFractionRing S L
inst✝ : Algebra.IsIntegral R S
x : S
s : ↥S⁰
⊢ IsAlgebraic K (mk' L x s)
state_after: case isAlgebraic.intro.intro.a
R✝ : Type u_1
inst✝¹⁸ : CommRing R✝
M : Submonoid R✝
S✝ : Type u_2
inst✝¹⁷ : CommRing S✝
inst✝¹⁶ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁵ : CommRing P
A : Type u_4
K✝ : Type u_5
inst✝¹⁴ : CommRing A
inst✝¹³ : IsDomain A
R : Type u_6
S : Type u_7
K : Type u_8
L : Type u_9
inst✝¹² : CommRing R
inst✝¹¹ : CommRing S
inst✝¹⁰ : Field K
inst✝⁹ : CommRing L
inst✝⁸ : Algebra R S
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : Algebra K L
inst✝³ : IsScalarTower R S L
inst✝² : IsScalarTower R K L
inst✝¹ : IsFractionRing S L
inst✝ : Algebra.IsIntegral R S
x : S
s : ↥S⁰
⊢ IsIntegral K (mk' L x s)
tactic: apply IsIntegral.isAlgebraic
state_before: case isAlgebraic.intro.intro.a
R✝ : Type u_1
inst✝¹⁸ : CommRing R✝
M : Submonoid R✝
S✝ : Type u_2
inst✝¹⁷ : CommRing S✝
inst✝¹⁶ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁵ : CommRing P
A : Type u_4
K✝ : Type u_5
inst✝¹⁴ : CommRing A
inst✝¹³ : IsDomain A
R : Type u_6
S : Type u_7
K : Type u_8
L : Type u_9
inst✝¹² : CommRing R
inst✝¹¹ : CommRing S
inst✝¹⁰ : Field K
inst✝⁹ : CommRing L
inst✝⁸ : Algebra R S
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : Algebra K L
inst✝³ : IsScalarTower R S L
inst✝² : IsScalarTower R K L
inst✝¹ : IsFractionRing S L
inst✝ : Algebra.IsIntegral R S
x : S
s : ↥S⁰
⊢ IsIntegral K (mk' L x s)
state_after: case isAlgebraic.intro.intro.a
R✝ : Type u_1
inst✝¹⁸ : CommRing R✝
M : Submonoid R✝
S✝ : Type u_2
inst✝¹⁷ : CommRing S✝
inst✝¹⁶ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁵ : CommRing P
A : Type u_4
K✝ : Type u_5
inst✝¹⁴ : CommRing A
inst✝¹³ : IsDomain A
R : Type u_6
S : Type u_7
K : Type u_8
L : Type u_9
inst✝¹² : CommRing R
inst✝¹¹ : CommRing S
inst✝¹⁰ : Field K
inst✝⁹ : CommRing L
inst✝⁸ : Algebra R S
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : Algebra K L
inst✝³ : IsScalarTower R S L
inst✝² : IsScalarTower R K L
inst✝¹ : IsFractionRing S L
inst✝ : Algebra.IsIntegral R S
x : S
s : ↥S⁰
⊢ IsIntegral K ((algebraMap S L) x * mk' L 1 s)
tactic: rw [IsLocalization.mk'_eq_mul_mk'_one]
state_before: case isAlgebraic.intro.intro.a
R✝ : Type u_1
inst✝¹⁸ : CommRing R✝
M : Submonoid R✝
S✝ : Type u_2
inst✝¹⁷ : CommRing S✝
inst✝¹⁶ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁵ : CommRing P
A : Type u_4
K✝ : Type u_5
inst✝¹⁴ : CommRing A
inst✝¹³ : IsDomain A
R : Type u_6
S : Type u_7
K : Type u_8
L : Type u_9
inst✝¹² : CommRing R
inst✝¹¹ : CommRing S
inst✝¹⁰ : Field K
inst✝⁹ : CommRing L
inst✝⁸ : Algebra R S
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : Algebra K L
inst✝³ : IsScalarTower R S L
inst✝² : IsScalarTower R K L
inst✝¹ : IsFractionRing S L
inst✝ : Algebra.IsIntegral R S
x : S
s : ↥S⁰
⊢ IsIntegral K ((algebraMap S L) x * mk' L 1 s)
state_after: case isAlgebraic.intro.intro.a.hx
R✝ : Type u_1
inst✝¹⁸ : CommRing R✝
M : Submonoid R✝
S✝ : Type u_2
inst✝¹⁷ : CommRing S✝
inst✝¹⁶ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁵ : CommRing P
A : Type u_4
K✝ : Type u_5
inst✝¹⁴ : CommRing A
inst✝¹³ : IsDomain A
R : Type u_6
S : Type u_7
K : Type u_8
L : Type u_9
inst✝¹² : CommRing R
inst✝¹¹ : CommRing S
inst✝¹⁰ : Field K
inst✝⁹ : CommRing L
inst✝⁸ : Algebra R S
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : Algebra K L
inst✝³ : IsScalarTower R S L
inst✝² : IsScalarTower R K L
inst✝¹ : IsFractionRing S L
inst✝ : Algebra.IsIntegral R S
x : S
s : ↥S⁰
⊢ (algebraMap K L).IsIntegralElem ((algebraMap S L) x)

case isAlgebraic.intro.intro.a.hy
R✝ : Type u_1
inst✝¹⁸ : CommRing R✝
M : Submonoid R✝
S✝ : Type u_2
inst✝¹⁷ : CommRing S✝
inst✝¹⁶ : Algebra R✝ S✝
P : Type u_3
inst✝¹⁵ : CommRing P
A : Type u_4
K✝ : Type u_5
inst✝¹⁴ : CommRing A
inst✝¹³ : IsDomain A
R : Type u_6
S : Type u_7
K : Type u_8
L : Type u_9
inst✝¹² : CommRing R
inst✝¹¹ : CommRing S
inst✝¹⁰ : Field K
inst✝⁹ : CommRing L
inst✝⁸ : Algebra R S
inst✝⁷ : Algebra R K
inst✝⁶ : Algebra R L
inst✝⁵ : Algebra S L
inst✝⁴ : Algebra K L
inst✝³ : IsScalarTower R S L
inst✝² : IsScalarTower R K L
inst✝¹ : IsFractionRing S L
inst✝ : Algebra.IsIntegral R S
x : S
s : ↥S⁰
⊢ (algebraMap K L).IsIntegralElem (mk' L 1 s)
tactic: apply RingHom.IsIntegralElem.mul