Splitting fields #
In this file we prove the existence and uniqueness of splitting fields.
Main definitions #
- Polynomial.SplittingField f: A fixed splitting field of the polynomial- f.
Main statements #
- Polynomial.IsSplittingField.algEquiv: Every splitting field of a polynomial- fis isomorphic to- SplittingField fand thus, being a splitting field is unique up to isomorphism.
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.
Non-computably choose an irreducible factor from a polynomial.
Equations
- Polynomial.factor f = if H : ∃ g, Irreducible g ∧ g ∣ f then Classical.choose H else Polynomial.X
Instances For
See note [fact non-instances].
Divide a polynomial f by X - C r where r is a root of f in a bigger field extension.
Equations
- Polynomial.removeFactor f = Polynomial.map (AdjoinRoot.of (Polynomial.factor f)) f /ₘ (Polynomial.X - ↑Polynomial.C (AdjoinRoot.root (Polynomial.factor f)))
Instances For
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.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Auxiliary construction to a splitting field of a polynomial, which removes
n (arbitrarily-chosen) factors. It is the type constructed in SplittingFieldAuxAux.
Equations
- Polynomial.SplittingFieldAux n f = (Polynomial.SplittingFieldAuxAux n f).fst
Instances For
Equations
- Polynomial.SplittingFieldAux.field n f = (Polynomial.SplittingFieldAuxAux n f).snd.fst
Equations
- Polynomial.instInhabitedSplittingFieldAux n f = { default := 0 }
Equations
- Polynomial.SplittingFieldAux.algebra n f = (Polynomial.SplittingFieldAuxAux n f).snd.snd
Equations
- Polynomial.SplittingFieldAux.algebra''' = Polynomial.SplittingFieldAux.algebra n (Polynomial.removeFactor f)
Equations
- Polynomial.SplittingFieldAux.algebra' = Polynomial.SplittingFieldAux.algebra'''
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
A splitting field of a polynomial.
Equations
Instances For
Equations
Equations
- Polynomial.SplittingField.inhabited f = { default := 37 }
Equations
Equations
The algebra equivalence with SplittingFieldAux,
which we will use to construct the field structure.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Embeds the splitting field into any other field that splits the polynomial.
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Any splitting field is isomorphic to SplittingFieldAux f.
Equations
- One or more equations did not get rendered due to their size.