Documentation

Mathlib.FieldTheory.SplittingField.Construction

Splitting fields #

In this file we prove the existence and uniqueness of splitting fields.

Main definitions #

Main statements #

Implementation details #

We construct a SplittingFieldAux without worrying about whether the instances satisfy nice definitional equalities. Then the actual SplittingField is defined to be a quotient of a MvPolynomial ring by the kernel of the obvious map into SplittingFieldAux. Because the actual SplittingField will be a quotient of a MvPolynomial, it has nice instances on it.

noncomputable def Polynomial.factor {K : Type v} [Field K] (f : Polynomial K) :

Non-computably choose an irreducible factor from a polynomial.

Instances For

    See note [fact non-instances].

    theorem Polynomial.isCoprime_iff_aeval_ne_zero {K : Type v} [Field K] (f g : Polynomial K) :
    IsCoprime f g ∀ {A : Type v} [inst : CommRing A] [IsDomain A] [inst_2 : Algebra K A] (a : A), (aeval a) f 0 (aeval a) g 0
    noncomputable def Polynomial.removeFactor {K : Type v} [Field K] (f : Polynomial K) :

    Divide a polynomial f by X - C r where r is a root of f in a bigger field extension.

    Instances For
      theorem Polynomial.natDegree_removeFactor' {K : Type v} [Field K] {f : Polynomial K} {n : } (hfn : f.natDegree = n + 1) :
      noncomputable def Polynomial.SplittingFieldAuxAux (n : ) {K : Type u} [Field K] :
      Polynomial K(L : Type u) × (x : Field L) × Algebra K L

      Auxiliary construction to a splitting field of a polynomial, which removes n (arbitrarily-chosen) factors.

      It constructs the type, proves that is a field and algebra over the base field.

      Uses recursion on the degree.

      Instances For
        def Polynomial.SplittingFieldAux (n : ) {K : Type u} [Field K] (f : Polynomial K) :

        Auxiliary construction to a splitting field of a polynomial, which removes n (arbitrarily-chosen) factors. It is the type constructed in SplittingFieldAuxAux.

        Instances For
          @[implicit_reducible]
          noncomputable instance Polynomial.SplittingFieldAux.field (n : ) {K : Type u} [Field K] (f : Polynomial K) :
          @[implicit_reducible]
          noncomputable instance Polynomial.instInhabitedSplittingFieldAux (n : ) {K : Type u} [Field K] (f : Polynomial K) :
          Inhabited (SplittingFieldAux n f)
          @[implicit_reducible]
          noncomputable instance Polynomial.SplittingFieldAux.algebra (n : ) {K : Type u} [Field K] (f : Polynomial K) :
          @[implicit_reducible]
          @[implicit_reducible]
          noncomputable instance Polynomial.SplittingFieldAux.algebra' {K : Type v} [Field K] {n : } {f : Polynomial K} :
          @[implicit_reducible]
          noncomputable instance Polynomial.SplittingFieldAux.algebra'' {K : Type v} [Field K] {n : } {f : Polynomial K} :

          A splitting field of a polynomial.

          Instances For
            @[implicit_reducible]
            noncomputable instance Polynomial.instInhabitedSplittingField {K : Type u_1} [Field K] (f : Polynomial K) :
            Inhabited f.SplittingField
            @[implicit_reducible]
            noncomputable instance Polynomial.instCommRingSplittingField {K : Type u_1} [Field K] (f : Polynomial K) :
            @[implicit_reducible]
            noncomputable instance Polynomial.instAlgebraSplittingField {K : Type u_1} [Field K] (f : Polynomial K) :
            @[implicit_reducible]
            noncomputable instance Polynomial.SplittingField.instSMulOfIsScalarTower {K : Type u_2} [Field K] (f : Polynomial K) {S : Type u_1} [DistribSMul S K] [IsScalarTower S K K] :
            @[implicit_reducible]
            noncomputable instance Polynomial.SplittingField.instAlgebra {K : Type u_2} [Field K] (f : Polynomial K) {R : Type u_1} [CommSemiring R] [Algebra R K] :
            @[implicit_reducible]
            noncomputable instance Polynomial.SplittingField.instIsScalarTower {K : Type u_2} [Field K] (f : Polynomial K) {R : Type u_1} [CommSemiring R] [Algebra R K] :

            The algebra equivalence with SplittingFieldAux, which we will use to construct the field structure.

            Instances For
              @[implicit_reducible]
              @[implicit_reducible]
              noncomputable instance Polynomial.SplittingField.instField {K : Type v} [Field K] (f : Polynomial K) :
              noncomputable def Polynomial.SplittingField.lift {K : Type v} {L : Type w} [Field K] [Field L] (f : Polynomial K) [Algebra K L] (hb : (map (algebraMap K L) f).Splits) :

              Embeds the splitting field into any other field that splits the polynomial.

              Instances For
                noncomputable def Polynomial.IsSplittingField.algEquiv {K : Type v} (L : Type w) [Field K] [Field L] [Algebra K L] (f : Polynomial K) [h : IsSplittingField K L f] :

                Any splitting field is isomorphic to SplittingFieldAux f.

                Instances For