Documentation

HexNumberFieldTower.Split

Exact lazy Horner evaluation of a tower polynomial at an absolute candidate root.

Equations
Instances For

    Certified ball Horner evaluation at the tower's fixed embedding and one absolute candidate root. Each exact coefficient is refined far enough to supply the common 2^-prec input-error unit consumed by Hex.Disambiguation.evalMajorant.

    Equations
    Instances For

      Decide, with the prescribed finite precision endpoint, whether a tower polynomial vanishes at an absolute candidate root.

      Equations
      Instances For

        Lift an integer polynomial coefficientwise to a tower polynomial.

        Equations
        Instances For

          Retain the unique multiplicity-one irreducible factor that vanishes at the specified absolute root under the tower's fixed embedding.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            def Hex.NumberTower.levelOfFactor {T : NumberTower} (candidate : AlgebraicRoot) (selected : T.Poly) :

            Encode a selected monic relative factor as one raw extension level.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For

              Root data for a polynomial over a completed splitting tower.

              Instances For

                The recorded roots with multiplicity, or none for the zero polynomial, every element being a root of that.

                Equations
                Instances For

                  The recorded roots with multiplicity; the zero polynomial gives the empty array.

                  Equations
                  Instances For
                    @[simp]
                    @[simp]
                    theorem Hex.NumberTower.Roots.toArray_finite {T : NumberTower} (roots : Array (T.Elem × Nat)) :
                    (finite roots).toArray = roots

                    A checked extension together with all roots of the original polynomial in that extension.

                    • extension : T.Extension

                      The extension over which the polynomial splits into linear factors.

                    • roots : self.extension.tower.Roots

                      All roots of the input polynomial in the extended tower.

                    Instances For
                      def Hex.NumberTower.mapPoly {T U : NumberTower} (embed : T.ElemU.Elem) (f : T.Poly) :

                      Map polynomial coefficients through an explicitly supplied tower embedding.

                      Equations
                      Instances For

                        The identity extension, used when no generator needs to be adjoined.

                        Equations
                        Instances For
                          @[instance_reducible]

                          The identity extension is the default, so (adjoin? T r).get! unwraps an adjunction that adjoin?_isSome shows never fails.

                          Equations

                          Compose dependent tower extensions while retaining the most recently adjoined generator.

                          Equations
                          Instances For
                            theorem Hex.NumberTower.Extension.trans_tower {T : NumberTower} (outer : T.Extension) (inner : outer.tower.Extension) :
                            (outer.trans inner).tower = inner.tower

                            The carrier of a composed extension is the carrier of its inner step.

                            theorem Hex.NumberTower.Extension.trans_embed {T : NumberTower} (outer : T.Extension) (inner : outer.tower.Extension) (a : T.Elem) :
                            (outer.trans inner).embed a = inner.embed (outer.embed a)

                            A composed extension embeds by applying the outer and then inner map.

                            theorem Hex.NumberTower.Splitting.trans_eq {T : NumberTower} {f : T.Poly} (outer : T.Extension) (inner : outer.tower.Splitting (mapPoly outer.embed f)) :
                            { extension := outer.trans inner.extension, roots := inner.roots } = { extension := { tower := inner.extension.tower, embed := fun (a : T.Elem) => inner.extension.embed (outer.embed a), gen := inner.extension.gen, root := inner.extension.root }, roots := inner.roots }

                            Whole-record normal form for pulling an inner splitting back through an extension. Stating the equality at this level keeps the dependent root carrier aligned while clients reason about the explicit composite.

                            Adjoin the specified absolute algebraic root. A selected linear factor produces the identity extension; a nonlinear factor is admitted only through Hex.NumberTower.Internal.extend?, which reruns structural, relative-irreducibility, and fixed- embedding checks before constructing the new carrier index.

                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For

                              Squarefree primitive integer eliminant obtained by taking the selected factor's norm through every tower level.

                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For

                                Retain exactly the absolute candidates at which the relative factor vanishes, preserving isolation order.

                                Equations
                                Instances For

                                  Isolate the absolute eliminant and retain the first root that zeros the relative factor under the current fixed embedding.

                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Instances For

                                    Recover all roots once a checked factorization is entirely linear.

                                    Equations
                                    • One or more equations did not get rendered due to their size.
                                    Instances For
                                      def Hex.NumberTower.splitAux {T : NumberTower} (f : T.Poly) (fuel : Nat) :

                                      Fuel-bounded split/refactor loop. Each recursive call works over the local tower and composes its checked extension on return, retaining the intermediate embedding needed by proof-facing consumers. Every successful nonlinear iteration consumes one fuel unit and must strictly increase the tower dimension.

                                      Equations
                                      • One or more equations did not get rendered due to their size.
                                      Instances For

                                        Construct an extension in which the input polynomial splits into linear factors, retaining multiplicities from checked factorization.

                                        Equations
                                        • One or more equations did not get rendered due to their size.
                                        Instances For