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 #

theorem minpoly.isIntegrallyClosed_eq_field_fractions {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [IsDomain R] [Algebra R S] (K : Type u_3) (L : Type u_4) [Field K] [Algebra R K] [IsFractionRing R K] [CommRing L] [Nontrivial L] [Algebra R L] [Algebra S L] [Algebra K L] [IsScalarTower R K L] [IsScalarTower R S L] [IsIntegrallyClosed R] [IsDomain S] {s : S} (hs : IsIntegral 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} [CommRing R] [CommRing S] [IsDomain R] [Algebra R S] (K : Type u_3) [Field K] [Algebra R K] [IsFractionRing R K] [IsIntegrallyClosed R] [IsDomain S] [Algebra K S] [IsScalarTower R K S] {s : S} (hs : IsIntegral R s) :

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} [CommRing R] [CommRing S] [IsDomain R] [Algebra R S] [IsIntegrallyClosed R] [IsDomain S] [Module.IsTorsionFree R S] {s : S} (hs : IsIntegral R s) {p : Polynomial R} (hp : (Polynomial.aeval s) 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.degree_le_of_ne_zero {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [IsDomain R] [Algebra R S] [IsIntegrallyClosed R] [IsDomain S] [Module.IsTorsionFree R S] {s : S} {p : Polynomial R} (hp0 : p 0) (hp : (Polynomial.aeval s) 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.

If x is a root of an irreducible polynomial p, then x is integral iff the leading coefficient of p is a unit.

theorem IsIntegrallyClosed.minpoly.unique {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [IsDomain R] [Algebra R S] [IsIntegrallyClosed R] [IsDomain S] [Module.IsTorsionFree R S] {s : S} {P : Polynomial R} (hmo : P.Monic) (hP : (Polynomial.aeval s) P = 0) (Pmin : ∀ (Q : Polynomial R), Q.Monic(Polynomial.aeval s) Q = 0P.degree Q.degree) :
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.IsIntegrallyClosed.unique_of_degree_le_degree_minpoly {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [IsDomain R] [Algebra R S] [IsIntegrallyClosed R] [IsDomain S] [Module.IsTorsionFree R S] {s : S} {p : Polynomial R} (hmo : p.Monic) (hp : (Polynomial.aeval s) p = 0) (pmin : p.degree (minpoly R s).degree) :
p = minpoly R s
theorem IsIntegrallyClosed.minpoly_smul {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [IsDomain R] [Algebra R S] [IsIntegrallyClosed R] [IsDomain S] [Module.IsTorsionFree R S] {r : R} (hr : r 0) {s : S} (hs : IsIntegral R s) :
minpoly R (r s) = (minpoly R s).scaleRoots r
def minpoly.equivAdjoin {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [IsDomain R] [Algebra R S] [IsIntegrallyClosed R] [IsDomain S] [Module.IsTorsionFree R S] {x : S} (hx : IsIntegral R x) :

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

Equations
    Instances For
      @[simp]
      theorem minpoly.coe_equivAdjoin {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [IsDomain R] [Algebra R S] [IsIntegrallyClosed R] [IsDomain S] [Module.IsTorsionFree R S] {x : S} (hx : IsIntegral R x) :
      def Algebra.adjoin.powerBasis' {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [IsDomain R] [Algebra R S] [IsIntegrallyClosed R] [IsDomain S] [Module.IsTorsionFree R S] {x : S} (hx : IsIntegral R x) :
      PowerBasis R (adjoin R {x})

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

      Equations
        Instances For
          @[simp]
          theorem Algebra.adjoin.powerBasis'_gen {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [IsDomain R] [Algebra R S] [IsIntegrallyClosed R] [IsDomain S] [Module.IsTorsionFree R S] {x : S} (hx : IsIntegral R x) :
          (powerBasis' hx).gen = x,
          noncomputable def PowerBasis.ofAdjoinEqTop' {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [IsDomain R] [Algebra R S] [IsIntegrallyClosed R] [IsDomain S] [Module.IsTorsionFree R S] {x : S} (hx : IsIntegral R x) (hx' : Algebra.adjoin R {x} = ) :

          If x generates S over R and is integral over R, then it defines a power basis. See PowerBasis.ofAdjoinEqTop for a version over a field.

          Equations
            Instances For
              @[deprecated PowerBasis.ofAdjoinEqTop' "Use in combination with `PowerBasis.adjoin_eq_top_of_gen_mem_adjoin` to recover the deprecated definition" (since := "2025-09-28")]
              def PowerBasis.ofGenMemAdjoin' {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [IsDomain R] [Algebra R S] [IsIntegrallyClosed R] [IsDomain S] [Module.IsTorsionFree R S] {x : S} (hx : IsIntegral R x) (hx' : Algebra.adjoin R {x} = ) :

              Alias of PowerBasis.ofAdjoinEqTop'.


              If x generates S over R and is integral over R, then it defines a power basis. See PowerBasis.ofAdjoinEqTop for a version over a field.

              Equations
                Instances For
                  @[simp]
                  theorem PowerBasis.ofAdjoinEqTop'_dim {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [IsDomain R] [Algebra R S] [IsIntegrallyClosed R] [IsDomain S] [Module.IsTorsionFree R S] {x : S} (hx : IsIntegral R x) (hx' : Algebra.adjoin R {x} = ) :
                  @[simp]
                  theorem PowerBasis.ofAdjoinEqTop'_gen {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [IsDomain R] [Algebra R S] [IsIntegrallyClosed R] [IsDomain S] [Module.IsTorsionFree R S] {x : S} (hx : IsIntegral R x) (hx' : Algebra.adjoin R {x} = ) :
                  (ofAdjoinEqTop' hx hx').gen = x
                  @[deprecated PowerBasis.ofAdjoinEqTop'_dim "Use in combination with `PowerBasis.adjoin_eq_top_of_gen_mem_adjoin` to recover the deprecated definition" (since := "2025-09-28")]
                  theorem PowerBasis.ofGenMemAdjoin'_dim {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [IsDomain R] [Algebra R S] [IsIntegrallyClosed R] [IsDomain S] [Module.IsTorsionFree R S] {x : S} (hx : IsIntegral R x) (hx' : Algebra.adjoin R {x} = ) :

                  Alias of PowerBasis.ofAdjoinEqTop'_dim.

                  @[deprecated PowerBasis.ofAdjoinEqTop'_gen "Use in combination with `PowerBasis.adjoin_eq_top_of_gen_mem_adjoin` to recover the deprecated definition" (since := "2025-09-28")]
                  theorem PowerBasis.ofGenMemAdjoin'_gen {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] [IsDomain R] [Algebra R S] [IsIntegrallyClosed R] [IsDomain S] [Module.IsTorsionFree R S] {x : S} (hx : IsIntegral R x) (hx' : Algebra.adjoin R {x} = ) :
                  (ofAdjoinEqTop' hx hx').gen = x

                  Alias of PowerBasis.ofAdjoinEqTop'_gen.

                  instance minpoly.instAlgebraSubtypeMemSubringSubalgebraIntegralClosure {K : Type u_3} {L : Type u_4} [Field K] [Field L] [Algebra K L] (A : Subring K) :
                  Algebra A (integralClosure (↥A) L)
                  Equations
                    instance minpoly.instSMulSubtypeMemSubringSubalgebraIntegralClosure {K : Type u_3} {L : Type u_4} [Field K] [Field L] [Algebra K L] (A : Subring K) :
                    SMul A (integralClosure (↥A) L)
                    Equations
                      theorem minpoly.ofSubring {K : Type u_3} {L : Type u_4} [Field K] [Field L] [Algebra K L] (A : Subring K) [IsIntegrallyClosed A] [IsFractionRing (↥A) K] (x : (integralClosure (↥A) L)) :
                      Polynomial.map (algebraMap (↥A) K) (minpoly (↥A) x) = minpoly K x

                      The minimal polynomial of x : L over K agrees with its minimal polynomial over the integrally closed subring A.