# Documentation

Mathlib.FieldTheory.Minpoly.IsIntegrallyClosed

# Minimal polynomials over a GCD monoid #

This file specializes the theory of minpoly to the case of an algebra over a GCD monoid.

## Main results #

• minpoly.isIntegrallyClosed_eq_field_fractions: For integrally closed domains, the minimal polynomial over the ring is the same as the minimal polynomial over the fraction field.

• minpoly.isIntegrallyClosed_dvd : For integrally closed domains, the minimal polynomial divides any primitive polynomial that has the integral element as root.

• minpoly.IsIntegrallyClosed.Minpoly.unique : The minimal polynomial of an element x is uniquely characterized by its defining property: if there is another monic polynomial of minimal degree that has x as a root, then this polynomial is equal to the minimal polynomial of x.

theorem minpoly.isIntegrallyClosed_eq_field_fractions {R : Type u_1} {S : Type u_2} [] [] [] [Algebra R S] (K : Type u_3) (L : Type u_4) [] [Algebra R K] [] [] [Algebra R L] [Algebra S L] [Algebra K L] [] [] [] {s : S} (hs : ) :
minpoly K (↑() s) = Polynomial.map () (minpoly R s)

For integrally closed domains, the minimal polynomial over the ring is the same as the minimal polynomial over the fraction field. See minpoly.isIntegrallyClosed_eq_field_fractions' if S is already a K-algebra.

theorem minpoly.isIntegrallyClosed_eq_field_fractions' {R : Type u_1} {S : Type u_2} [] [] [] [Algebra R S] (K : Type u_3) [] [Algebra R K] [] [] [Algebra K S] [] {s : S} (hs : ) :

For integrally closed domains, the minimal polynomial over the ring is the same as the minimal polynomial over the fraction field. Compared to minpoly.isIntegrallyClosed_eq_field_fractions, this version is useful if the element is in a ring that is already a K-algebra.

theorem minpoly.isIntegrallyClosed_dvd {R : Type u_1} {S : Type u_2} [] [] [] [Algebra R S] [] [] [] {s : S} (hs : ) {p : } (hp : ↑() p = 0) :
minpoly R s p

For integrally closed rings, the minimal polynomial divides any polynomial that has the integral element as root. See also minpoly.dvd which relaxes the assumptions on S in exchange for stronger assumptions on R.

theorem minpoly.isIntegrallyClosed_dvd_iff {R : Type u_1} {S : Type u_2} [] [] [] [Algebra R S] [] [] [] {s : S} (hs : ) (p : ) :
↑() p = 0 minpoly R s p
theorem minpoly.ker_eval {R : Type u_1} {S : Type u_2} [] [] [] [Algebra R S] [] [] {s : S} (hs : ) :
theorem minpoly.IsIntegrallyClosed.degree_le_of_ne_zero {R : Type u_1} {S : Type u_2} [] [] [] [Algebra R S] [] [] {s : S} (hs : ) {p : } (hp0 : p 0) (hp : ↑() p = 0) :

If an element x is a root of a nonzero polynomial p, then the degree of p is at least the degree of the minimal polynomial of x. See also minpoly.degree_le_of_ne_zero which relaxes the assumptions on S in exchange for stronger assumptions on R.

theorem IsIntegrallyClosed.minpoly.unique {R : Type u_1} {S : Type u_2} [] [] [] [Algebra R S] [] [] {s : S} {P : } (hmo : ) (hP : ↑() P = 0) (Pmin : ∀ (Q : ), ↑() Q = 0) :
P = minpoly R s

The minimal polynomial of an element x is uniquely characterized by its defining property: if there is another monic polynomial of minimal degree that has x as a root, then this polynomial is equal to the minimal polynomial of x. See also minpoly.unique which relaxes the assumptions on S in exchange for stronger assumptions on R.

theorem minpoly.prime_of_isIntegrallyClosed {R : Type u_1} {S : Type u_2} [] [] [] [Algebra R S] [] [] {x : S} (hx : ) :
theorem minpoly.ToAdjoin.injective {R : Type u_1} {S : Type u_2} [] [] [] [Algebra R S] [] [] {x : S} (hx : ) :
@[simp]
theorem minpoly.equivAdjoin_symm_apply {R : Type u_1} {S : Type u_2} [] [] [] [Algebra R S] [] [] {x : S} (hx : ) :
∀ (a : { x // x Algebra.adjoin R {x} }), ↑() a = (Equiv.ofBijective ↑() (_ : )).symm a
@[simp]
theorem minpoly.equivAdjoin_apply {R : Type u_1} {S : Type u_2} [] [] [] [Algebra R S] [] [] {x : S} (hx : ) :
∀ (a : AdjoinRoot (minpoly R x)), ↑() a = ↑(QuotientAddGroup.lift () ↑(Polynomial.eval₂RingHom (algebraMap R { x // x Algebra.adjoin R {x} }) { val := x, property := (_ : x Algebra.adjoin R {x}) }) (_ : ∀ (g : ), g Ideal.span {minpoly R x}↑(Polynomial.eval₂RingHom (algebraMap R { x // x Algebra.adjoin R {x} }) { val := x, property := (_ : x Algebra.adjoin R {x}) }) g = 0)) a
def minpoly.equivAdjoin {R : Type u_1} {S : Type u_2} [] [] [] [Algebra R S] [] [] {x : S} (hx : ) :
AdjoinRoot (minpoly R x) ≃ₐ[R] { x // x Algebra.adjoin R {x} }

The algebra isomorphism AdjoinRoot (minpoly R x) ≃ₐ[R] adjoin R x

Instances For
def Algebra.adjoin.powerBasis' {R : Type u_1} {S : Type u_2} [] [] [] [Algebra R S] [] [] {x : S} (hx : ) :
PowerBasis R { x // x Algebra.adjoin R {x} }

The PowerBasis of adjoin R {x} given by x. See Algebra.adjoin.powerBasis for a version over a field.

Instances For
@[simp]
theorem Algebra.adjoin.powerBasis'_dim {R : Type u_1} {S : Type u_2} [] [] [] [Algebra R S] [] [] {x : S} (hx : ) :
().dim =
@[simp]
theorem Algebra.adjoin.powerBasis'_gen {R : Type u_1} {S : Type u_2} [] [] [] [Algebra R S] [] [] {x : S} (hx : ) :
().gen = { val := x, property := (_ : x Algebra.adjoin R {x}) }
noncomputable def PowerBasis.ofGenMemAdjoin' {R : Type u_1} {S : Type u_2} [] [] [] [Algebra R S] [] [] {x : S} (B : ) (hint : ) (hx : B.gen Algebra.adjoin R {x}) :

The power basis given by x if B.gen ∈ adjoin R {x}.

Instances For
@[simp]
theorem PowerBasis.ofGenMemAdjoin'_dim {R : Type u_1} {S : Type u_2} [] [] [] [Algebra R S] [] [] {x : S} (B : ) (hint : ) (hx : B.gen Algebra.adjoin R {x}) :