Documentation

CompPoly.Bivariate.GuruswamiSudan.Polynomial

Guruswami-Sudan Polynomial Helpers #

Reusable univariate and bivariate polynomial operations used by the Guruswami-Sudan interpolation and root-finding kernels.

Drop the first n powers of X, i.e. divide by X^n when possible and truncate toward zero otherwise.

Instances For
    def CompPoly.CPolynomial.truncate {R : Type u_1} [Zero R] [BEq R] [LawfulBEq R] (p : CPolynomial R) (n : ) :

    Keep only coefficients of degree < n.

    Instances For

      First nonzero coefficient index of a univariate polynomial, if it is nonzero.

      Instances For
        def CompPoly.CPolynomial.inverseSeriesNextCoeff {F : Type u_1} [Field F] (p : CPolynomial F) (constantInv : F) (prev : Array F) (idx : ) :
        F

        Coefficients of the inverse of a power series with known nonzero constant coefficient, truncated to length n.

        Instances For
          def CompPoly.CPolynomial.inverseSeriesCoeffs {F : Type u_1} [Field F] (p : CPolynomial F) (constantInv : F) (n : ) :

          Coefficients of the inverse of a power series with known nonzero constant coefficient, truncated to length n.

          Instances For

            Inverse of a univariate power series modulo X^n, if the constant term is invertible.

            Instances For
              def CompPoly.CPolynomial.mulCoeff {R : Type u_1} [Semiring R] (p q : CPolynomial R) (n : ) :
              R

              Coefficient of X^n in p * q, computed without materializing the product.

              Instances For
                def CompPoly.CPolynomial.mulWindow {R : Type u_1} [Semiring R] [BEq R] [LawfulBEq R] (p q : CPolynomial R) (low width : ) :

                Coefficient window of p * q, shifted down by low and truncated to width, computed without materializing the full product.

                Instances For
                  def CompPoly.CPolynomial.mulWindowWithLowProduct {R : Type u_1} [Semiring R] [BEq R] [LawfulBEq R] (mulLow : Raw.MulLowContext R) (p q : CPolynomial R) (low width : ) :

                  Coefficient window of p * q computed through a raw low-product context.

                  Instances For
                    def CompPoly.CPolynomial.powCoeff {R : Type u_1} [Semiring R] (p : CPolynomial R) :
                    R

                    Coefficient of X^n in p^k, computed by coefficient convolution without materializing the intermediate powers.

                    Instances For
                      def CompPoly.CPolynomial.mulPowCoeff {R : Type u_1} [Semiring R] (a p : CPolynomial R) (k n : ) :
                      R

                      Coefficient of X^n in a * p^k, computed coefficient-wise.

                      Instances For

                        A bivariate monomial exponent pair.

                        Instances For
                          Instances For
                            structure CompPoly.CBivariate.HasseTerm (R : Type u_1) :
                            Type u_1

                            One monomial contribution to a Hasse derivative.

                            • xDegree :
                            • yDegree :
                            • coeff : R
                            Instances For

                              Construct a bivariate polynomial from a coefficient grid indexed by grid[y][x].

                              Instances For
                                def CompPoly.CBivariate.ofMonomialCoeffs {R : Type u_1} [Semiring R] [BEq R] [LawfulBEq R] [Nontrivial R] [DecidableEq R] (monomials : Array Monomial) (coeffs : Array R) :

                                Construct a bivariate polynomial from a monomial list and parallel coefficient vector.

                                Instances For

                                  Candidate monomials in the finite square used by weighted-degree enumeration.

                                  Instances For

                                    Enumerate monomials inside a finite weighted-degree search rectangle.

                                    When both weights are positive this is the complete set of monomials with weighted degree at most bound. If a weight is zero, bound also serves as the finite exponent cap for that variable.

                                    Instances For

                                      Shared monomial contributions for materialized and directly evaluated Hasse derivatives.

                                      Instances For

                                        Shared monomial contributions for materialized and directly evaluated Hasse derivatives.

                                        Instances For

                                          Materialize a Hasse derivative from a list of derivative terms.

                                          Instances For

                                            Executable Hasse derivative of a bivariate polynomial.

                                            Instances For
                                              def CompPoly.CBivariate.hasseDerivativeEvalFromTerms {R : Type u_1} [Semiring R] (terms : List (HasseTerm R)) (x y : R) :
                                              R

                                              Evaluate derivative terms directly at one point.

                                              Instances For
                                                def CompPoly.CBivariate.hasseDerivativeEval {R : Type u_1} [Semiring R] (a b : ) (x y : R) (Q : CBivariate R) :
                                                R

                                                Evaluate a Hasse derivative at one point without materializing the derivative.

                                                Instances For

                                                  Candidate derivative orders in the finite square used by multiplicity checks.

                                                  Instances For

                                                    Derivative orders (a, b) with a + b < multiplicity.

                                                    Instances For
                                                      def CompPoly.CBivariate.HasMultiplicityAtLeast {R : Type u_1} [Semiring R] (Q : CBivariate R) (x y : R) (multiplicity : ) :

                                                      Mathematical multiplicity constraint used by the GS interpolation specification.

                                                      Instances For
                                                        def CompPoly.CBivariate.multiplicityAtLeastBool {R : Type u_1} [Semiring R] [BEq R] (Q : CBivariate R) (x y : R) (multiplicity : ) :

                                                        Executable multiplicity check at one point.

                                                        Instances For
                                                          def CompPoly.CBivariate.SatisfiesMultiplicityConstraints {R : Type u_1} [Semiring R] (Q : CBivariate R) (points : Array (R × R)) (multiplicity : ) :

                                                          Mathematical batch multiplicity constraints over packed point pairs.

                                                          Instances For
                                                            def CompPoly.CBivariate.satisfiesMultiplicityConstraintsBool {R : Type u_1} [Semiring R] [BEq R] (Q : CBivariate R) (points : Array (R × R)) (multiplicity : ) :

                                                            Executable batch multiplicity check over packed point pairs.

                                                            Instances For

                                                              Compose a bivariate polynomial with a univariate polynomial in the Y slot: Q(X, p(X)).

                                                              Instances For
                                                                @[inline, specialize #[]]

                                                                Horner implementation of Q(X, p(X)) in the outer Y variable.

                                                                Instances For
                                                                  @[inline, specialize #[]]

                                                                  Truncated Horner implementation of Q(X, p(X)) in the outer Y variable.

                                                                  After each Horner step, the accumulator is truncated modulo X^n, so callers that only need an X-adic certificate do not materialize coefficients that will be discarded immediately.

                                                                  Instances For
                                                                    def CompPoly.CBivariate.composeYCoeff {R : Type u_1} [Semiring R] [BEq R] [LawfulBEq R] [Nontrivial R] (Q : CBivariate R) (p : CPolynomial R) (depth : ) :
                                                                    R

                                                                    Coefficient of X^depth in Q(X, p(X)), computed without materializing the whole composed polynomial.

                                                                    Instances For

                                                                      Formal derivative in the outer Y variable.

                                                                      Instances For

                                                                        Minimum X-adic order across all nonzero Y-coefficients of a bivariate polynomial.

                                                                        Instances For
                                                                          def CompPoly.CBivariate.divXPower {R : Type u_1} [Zero R] [BEq R] [LawfulBEq R] (Q : CBivariate R) (n : ) :

                                                                          Divide every Y-coefficient by X^n, truncating coefficients with lower X-degree to zero.

                                                                          Instances For
                                                                            def CompPoly.CBivariate.truncateX {R : Type u_1} [Zero R] [BEq R] [LawfulBEq R] (Q : CBivariate R) (n : ) :

                                                                            Keep only coefficients of X-degree < n in every Y-coefficient.

                                                                            Instances For

                                                                              Strip the common X-adic factor from a bivariate polynomial.

                                                                              Instances For

                                                                                View a univariate polynomial in X as a bivariate polynomial constant in Y.

                                                                                Instances For

                                                                                  View a univariate polynomial in X as the coefficient of Y^y in a bivariate polynomial.

                                                                                  Instances For