Theorem: isAlgebraic_of_isLocalization
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
inst✝⁴ : CommRing R
M : Submonoid R
S : Type u_7
inst✝³ : CommRing S
inst✝² : Nontrivial R
inst✝¹ : Algebra R S
inst✝ : IsLocalization M S
⊢ Algebra.IsAlgebraic R S
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
inst✝⁴ : CommRing R
M : Submonoid R
S : Type u_7
inst✝³ : CommRing S
inst✝² : Nontrivial R
inst✝¹ : Algebra R S
inst✝ : IsLocalization M S
⊢ ∀ (x : S), IsAlgebraic R 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
inst✝⁴ : CommRing R
M : Submonoid R
S : Type u_7
inst✝³ : CommRing S
inst✝² : Nontrivial R
inst✝¹ : Algebra R S
inst✝ : IsLocalization M S
⊢ ∀ (x : S), IsAlgebraic R 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
inst✝⁴ : CommRing R
M : Submonoid R
S : Type u_7
inst✝³ : CommRing S
inst✝² : Nontrivial R
inst✝¹ : Algebra R S
inst✝ : IsLocalization M S
x : S
⊢ IsAlgebraic R 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
inst✝⁴ : CommRing R
M : Submonoid R
S : Type u_7
inst✝³ : CommRing S
inst✝² : Nontrivial R
inst✝¹ : Algebra R S
inst✝ : IsLocalization M S
x : S
⊢ IsAlgebraic R 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
inst✝⁴ : CommRing R
M : Submonoid R
S : Type u_7
inst✝³ : CommRing S
inst✝² : Nontrivial R
inst✝¹ : Algebra R S
inst✝ : IsLocalization M S
x : R
s : ↥M
⊢ IsAlgebraic R (mk' S x s)
tactic: obtain ⟨x, s, rfl⟩ := IsLocalization.mk'_surjective M 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
inst✝⁴ : CommRing R
M : Submonoid R
S : Type u_7
inst✝³ : CommRing S
inst✝² : Nontrivial R
inst✝¹ : Algebra R S
inst✝ : IsLocalization M S
x : R
s : ↥M
⊢ IsAlgebraic R (mk' S x s)
state_after: case pos
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
inst✝⁴ : CommRing R
M : Submonoid R
S : Type u_7
inst✝³ : CommRing S
inst✝² : Nontrivial R
inst✝¹ : Algebra R S
inst✝ : IsLocalization M S
x : R
s : ↥M
hs : ↑s = 0
⊢ IsAlgebraic R (mk' S x s)

case neg
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
inst✝⁴ : CommRing R
M : Submonoid R
S : Type u_7
inst✝³ : CommRing S
inst✝² : Nontrivial R
inst✝¹ : Algebra R S
inst✝ : IsLocalization M S
x : R
s : ↥M
hs : ¬↑s = 0
⊢ IsAlgebraic R (mk' S x s)
tactic: by_cases hs : (s : R) = 0
state_before: case neg
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
inst✝⁴ : CommRing R
M : Submonoid R
S : Type u_7
inst✝³ : CommRing S
inst✝² : Nontrivial R
inst✝¹ : Algebra R S
inst✝ : IsLocalization M S
x : R
s : ↥M
hs : ¬↑s = 0
⊢ IsAlgebraic R (mk' S x s)
state_after: case neg.refine_1
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
inst✝⁴ : CommRing R
M : Submonoid R
S : Type u_7
inst✝³ : CommRing S
inst✝² : Nontrivial R
inst✝¹ : Algebra R S
inst✝ : IsLocalization M S
x : R
s : ↥M
hs : ¬↑s = 0
⊢ s • X - C x ≠ 0

case neg.refine_2
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
inst✝⁴ : CommRing R
M : Submonoid R
S : Type u_7
inst✝³ : CommRing S
inst✝² : Nontrivial R
inst✝¹ : Algebra R S
inst✝ : IsLocalization M S
x : R
s : ↥M
hs : ¬↑s = 0
⊢ (aeval (mk' S x s)) (s • X - C x) = 0
tactic: refine ⟨s • X - C x, ?_, ?_⟩