case mp.intro.intro
R : Type ?u.95350
inst✝¹² : CommRing R
M : Submonoid R
S : Type ?u.95557
inst✝¹¹ : CommRing S
inst✝¹⁰ : Algebra R S
P : Type ?u.95813
inst✝⁹ : CommRing P
A : Type u_1
K : Type u_3
C : Type u_2
inst✝⁸ : CommRing A
inst✝⁷ : IsDomain A
inst✝⁶ : Field K
inst✝⁵ : Algebra A K
inst✝⁴ : IsFractionRing A K
inst✝³ : CommRing C
inst✝² : Algebra A C
inst✝¹ : Algebra K C
inst✝ : IsScalarTower A K C
x : C
p : A[X]
hp : p ≠ 0
px : ↑(aeval x) p = 0
⊢ IsAlgebraic K x

case mpr.intro.intro
R : Type ?u.95350
inst✝¹² : CommRing R
M : Submonoid R
S : Type ?u.95557
inst✝¹¹ : CommRing S
inst✝¹⁰ : Algebra R S
P : Type ?u.95813
inst✝⁹ : CommRing P
A : Type u_1
K : Type u_3
C : Type u_2
inst✝⁸ : CommRing A
inst✝⁷ : IsDomain A
inst✝⁶ : Field K
inst✝⁵ : Algebra A K
inst✝⁴ : IsFractionRing A K
inst✝³ : CommRing C
inst✝² : Algebra A C
inst✝¹ : Algebra K C
inst✝ : IsScalarTower A K C
x : C
p : K[X]
hp : p ≠ 0
px : ↑(aeval x) p = 0
⊢ IsAlgebraic A x
R : Type ?u.95350
inst✝¹² : CommRing R
M : Submonoid R
S : Type ?u.95557
inst✝¹¹ : CommRing S
inst✝¹⁰ : Algebra R S
P : Type ?u.95813
inst✝⁹ : CommRing P
A : Type u_1
K : Type u_3
C : Type u_2
inst✝⁸ : CommRing A
inst✝⁷ : IsDomain A
inst✝⁶ : Field K
inst✝⁵ : Algebra A K
inst✝⁴ : IsFractionRing A K
inst✝³ : CommRing C
inst✝² : Algebra A C
inst✝¹ : Algebra K C
inst✝ : IsScalarTower A K C
x : C
⊢ IsAlgebraic A x ↔ IsAlgebraic K x
constructor <;> rintro ⟨p, hp, px⟩
case mp.intro.intro.refine'_1
R : Type ?u.95350
inst✝¹² : CommRing R
M : Submonoid R
S : Type ?u.95557
inst✝¹¹ : CommRing S
inst✝¹⁰ : Algebra R S
P : Type ?u.95813
inst✝⁹ : CommRing P
A : Type u_1
K : Type u_3
C : Type u_2
inst✝⁸ : CommRing A
inst✝⁷ : IsDomain A
inst✝⁶ : Field K
inst✝⁵ : Algebra A K
inst✝⁴ : IsFractionRing A K
inst✝³ : CommRing C
inst✝² : Algebra A C
inst✝¹ : Algebra K C
inst✝ : IsScalarTower A K C
x : C
p : A[X]
hp : p ≠ 0
px : ↑(aeval x) p = 0
h : Polynomial.map (algebraMap A K) p = 0
i : ℕ
⊢ coeff p i = coeff 0 i

case mp.intro.intro.refine'_2
R : Type ?u.95350
inst✝¹² : CommRing R
M : Submonoid R
S : Type ?u.95557
inst✝¹¹ : CommRing S
inst✝¹⁰ : Algebra R S
P : Type ?u.95813
inst✝⁹ : CommRing P
A : Type u_1
K : Type u_3
C : Type u_2
inst✝⁸ : CommRing A
inst✝⁷ : IsDomain A
inst✝⁶ : Field K
inst✝⁵ : Algebra A K
inst✝⁴ : IsFractionRing A K
inst✝³ : CommRing C
inst✝² : Algebra A C
inst✝¹ : Algebra K C
inst✝ : IsScalarTower A K C
x : C
p : A[X]
hp : p ≠ 0
px : ↑(aeval x) p = 0
⊢ ↑(aeval x) (Polynomial.map (algebraMap A K) p) = 0
case mp.intro.intro
R : Type ?u.95350
inst✝¹² : CommRing R
M : Submonoid R
S : Type ?u.95557
inst✝¹¹ : CommRing S
inst✝¹⁰ : Algebra R S
P : Type ?u.95813
inst✝⁹ : CommRing P
A : Type u_1
K : Type u_3
C : Type u_2
inst✝⁸ : CommRing A
inst✝⁷ : IsDomain A
inst✝⁶ : Field K
inst✝⁵ : Algebra A K
inst✝⁴ : IsFractionRing A K
inst✝³ : CommRing C
inst✝² : Algebra A C
inst✝¹ : Algebra K C
inst✝ : IsScalarTower A K C
x : C
p : A[X]
hp : p ≠ 0
px : ↑(aeval x) p = 0
⊢ IsAlgebraic K x
refine' ⟨p.map (algebraMap A K), fun h => hp (Polynomial.ext fun i => _), _⟩
case mp.intro.intro.refine'_1
R : Type ?u.95350
inst✝¹² : CommRing R
M : Submonoid R
S : Type ?u.95557
inst✝¹¹ : CommRing S
inst✝¹⁰ : Algebra R S
P : Type ?u.95813
inst✝⁹ : CommRing P
A : Type u_1
K : Type u_3
C : Type u_2
inst✝⁸ : CommRing A
inst✝⁷ : IsDomain A
inst✝⁶ : Field K
inst✝⁵ : Algebra A K
inst✝⁴ : IsFractionRing A K
inst✝³ : CommRing C
inst✝² : Algebra A C
inst✝¹ : Algebra K C
inst✝ : IsScalarTower A K C
x : C
p : A[X]
hp : p ≠ 0
px : ↑(aeval x) p = 0
h : Polynomial.map (algebraMap A K) p = 0
i : ℕ
this : ↑(algebraMap A K) (coeff p i) = 0
⊢ coeff p i = coeff 0 i
case mp.intro.intro.refine'_1
R : Type ?u.95350
inst✝¹² : CommRing R
M : Submonoid R
S : Type ?u.95557
inst✝¹¹ : CommRing S
inst✝¹⁰ : Algebra R S
P : Type ?u.95813
inst✝⁹ : CommRing P
A : Type u_1
K : Type u_3
C : Type u_2
inst✝⁸ : CommRing A
inst✝⁷ : IsDomain A
inst✝⁶ : Field K
inst✝⁵ : Algebra A K
inst✝⁴ : IsFractionRing A K
inst✝³ : CommRing C
inst✝² : Algebra A C
inst✝¹ : Algebra K C
inst✝ : IsScalarTower A K C
x : C
p : A[X]
hp : p ≠ 0
px : ↑(aeval x) p = 0
h : Polynomial.map (algebraMap A K) p = 0
i : ℕ
⊢ coeff p i = coeff 0 i
have : algebraMap A K (p.coeff i) = 0 :=
  _root_.trans (Polynomial.coeff_map _ _).symm (by simp [h])
no goals
case mp.intro.intro.refine'_1
R : Type ?u.95350
inst✝¹² : CommRing R
M : Submonoid R
S : Type ?u.95557
inst✝¹¹ : CommRing S
inst✝¹⁰ : Algebra R S
P : Type ?u.95813
inst✝⁹ : CommRing P
A : Type u_1
K : Type u_3
C : Type u_2
inst✝⁸ : CommRing A
inst✝⁷ : IsDomain A
inst✝⁶ : Field K
inst✝⁵ : Algebra A K
inst✝⁴ : IsFractionRing A K
inst✝³ : CommRing C
inst✝² : Algebra A C
inst✝¹ : Algebra K C
inst✝ : IsScalarTower A K C
x : C
p : A[X]
hp : p ≠ 0
px : ↑(aeval x) p = 0
h : Polynomial.map (algebraMap A K) p = 0
i : ℕ
this : ↑(algebraMap A K) (coeff p i) = 0
⊢ coeff p i = coeff 0 i
exact to_map_eq_zero_iff.mp this
no goals
R : Type ?u.95350
inst✝¹² : CommRing R
M : Submonoid R
S : Type ?u.95557
inst✝¹¹ : CommRing S
inst✝¹⁰ : Algebra R S
P : Type ?u.95813
inst✝⁹ : CommRing P
A : Type u_1
K : Type u_3
C : Type u_2
inst✝⁸ : CommRing A
inst✝⁷ : IsDomain A
inst✝⁶ : Field K
inst✝⁵ : Algebra A K
inst✝⁴ : IsFractionRing A K
inst✝³ : CommRing C
inst✝² : Algebra A C
inst✝¹ : Algebra K C
inst✝ : IsScalarTower A K C
x : C
p : A[X]
hp : p ≠ 0
px : ↑(aeval x) p = 0
h : Polynomial.map (algebraMap A K) p = 0
i : ℕ
⊢ coeff (Polynomial.map (algebraMap A K) p) i = 0
simp [h]
no goals
case mp.intro.intro.refine'_2
R : Type ?u.95350
inst✝¹² : CommRing R
M : Submonoid R
S : Type ?u.95557
inst✝¹¹ : CommRing S
inst✝¹⁰ : Algebra R S
P : Type ?u.95813
inst✝⁹ : CommRing P
A : Type u_1
K : Type u_3
C : Type u_2
inst✝⁸ : CommRing A
inst✝⁷ : IsDomain A
inst✝⁶ : Field K
inst✝⁵ : Algebra A K
inst✝⁴ : IsFractionRing A K
inst✝³ : CommRing C
inst✝² : Algebra A C
inst✝¹ : Algebra K C
inst✝ : IsScalarTower A K C
x : C
p : A[X]
hp : p ≠ 0
px : ↑(aeval x) p = 0
⊢ ↑(aeval x) (Polynomial.map (algebraMap A K) p) = 0
exact (Polynomial.aeval_map_algebraMap K _ _).trans px
no goals
case mpr.intro.intro
R : Type ?u.95350
inst✝¹² : CommRing R
M : Submonoid R
S : Type ?u.95557
inst✝¹¹ : CommRing S
inst✝¹⁰ : Algebra R S
P : Type ?u.95813
inst✝⁹ : CommRing P
A : Type u_1
K : Type u_3
C : Type u_2
inst✝⁸ : CommRing A
inst✝⁷ : IsDomain A
inst✝⁶ : Field K
inst✝⁵ : Algebra A K
inst✝⁴ : IsFractionRing A K
inst✝³ : CommRing C
inst✝² : Algebra A C
inst✝¹ : Algebra K C
inst✝ : IsScalarTower A K C
x : C
p : K[X]
hp : p ≠ 0
px : ↑(aeval x) p = 0
⊢ IsAlgebraic A x
exact
  ⟨integerNormalization _ p, mt integerNormalization_eq_zero_iff.mp hp,
    integerNormalization_aeval_eq_zero _ p px⟩