Documentation

HexBerlekampZassenhausMathlib.Lattice.DirectSupport

Lift a modular support into the sole canonical Hensel basis.

Equations
Instances For

    BHKS.supportProduct and the canonical finite-support product select the same direct lifted factors.

    One normalized irreducible integer factor, indexed by its direct modular support and carrying the exact congruence used by the CLD column proof.

    Instances For

      View a direct factor certificate as the logarithmic-derivative recovery package used by the lattice geometry.

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

        A certified direct factor divides the input polynomial.

        A certified direct factor is nonzero.

        A certified direct factor of a primitive input is primitive.

        A certified normalized direct factor has positive leading coefficient.

        A certified direct factor of a primitive input has positive degree.

        Every local Hensel factor in a certified direct support divides the represented integer factor modulo the full lift modulus. The only scalar cancelled here is the cofactor leading coefficient, which is a unit because it divides the input leading coefficient.

        theorem HexBerlekampZassenhausMathlib.directSupport_nonempty_of_represents {core factor : Hex.ZPoly} {B : } {data : Hex.PrimeChoiceData} {S : ModPFactorSubset data} (hcore_primitive : core.Primitive) (hval : ModPFactorization core data) (hprecision : 1 Hex.precisionForCoeffBound B data.p) (hgcd : (Hex.DensePoly.leadingCoeff core).gcd (Int.ofNat (data.p ^ Hex.precisionForCoeffBound B data.p)) = 1) (hirr : Irreducible (HexPolyZMathlib.toPolynomial factor)) (hdvd : factor core) (hnorm : Hex.normalizeFactorSign factor = factor) (hrep : RepresentsIntegerFactorModP data factor S) :

        The modular support representing a positive-degree irreducible integer divisor is nonempty.

        noncomputable def HexBerlekampZassenhausMathlib.directFactorCertificate {core factor : Hex.ZPoly} {B : } {data : Hex.PrimeChoiceData} {S : ModPFactorSubset data} (hcore_primitive : core.Primitive) (hcore_lc_pos : 0 < Hex.DensePoly.leadingCoeff core) (hrecovery : 2 * core.defaultFactorCoeffBound < data.p ^ Hex.precisionForCoeffBound B data.p) (hval : ModPFactorization core data) (hprecision : 1 Hex.precisionForCoeffBound B data.p) (hgcd : (Hex.DensePoly.leadingCoeff core).gcd (Int.ofNat (data.p ^ Hex.precisionForCoeffBound B data.p)) = 1) (hirr : Irreducible (HexPolyZMathlib.toPolynomial factor)) (hdvd : factor core) (hnorm : Hex.normalizeFactorSign factor = factor) (hrep : RepresentsIntegerFactorModP data factor S) :

        Package a normalized irreducible divisor and its direct modular support as the single certificate consumed by the CLD proof.

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

          The direct-coordinate true supports seen by the CLD lattice. The carrier is the canonical lift of a modular support and the witness is the exact factor certificate for that same support.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            theorem HexBerlekampZassenhausMathlib.directTrueSupports.cover {core : Hex.ZPoly} {B : } {data : Hex.PrimeChoiceData} (hcore_primitive : core.Primitive) (hcore_lc_pos : 0 < Hex.DensePoly.leadingCoeff core) (hrecovery : 2 * core.defaultFactorCoeffBound < data.p ^ Hex.precisionForCoeffBound B data.p) (hval : ModPFactorization core data) (hprecision : 1 Hex.precisionForCoeffBound B data.p) (hgcd : (Hex.DensePoly.leadingCoeff core).gcd (Int.ofNat (data.p ^ Hex.precisionForCoeffBound B data.p)) = 1) (hpartition : DirectSupportPartition core B data Finset.univ core) (i : LiftedFactorIndex (core.directLiftData B data)) :
            UdirectTrueSupports core B data, i U

            The full direct support partition covers every lifted factor index.

            theorem HexBerlekampZassenhausMathlib.directTrueSupports.eq_of_mem_inter {core : Hex.ZPoly} {B : } {data : Hex.PrimeChoiceData} (hpartition : DirectSupportPartition core B data Finset.univ core) (U : Set (LiftedFactorIndex (core.directLiftData B data))) :
            U directTrueSupports core B dataVdirectTrueSupports core B data, iU, i VU = V

            Two direct true supports containing the same lifted index are equal.

            Every certified direct support is nonempty.

            theorem HexBerlekampZassenhausMathlib.directTrueSupports.ncard_eq_normalizedFactors_card {core : Hex.ZPoly} {B : } {data : Hex.PrimeChoiceData} (hcore_primitive : core.Primitive) (hcore_lc_pos : 0 < Hex.DensePoly.leadingCoeff core) (hrecovery : 2 * core.defaultFactorCoeffBound < data.p ^ Hex.precisionForCoeffBound B data.p) (hval : ModPFactorization core data) (hprecision : 1 Hex.precisionForCoeffBound B data.p) (hgcd : (Hex.DensePoly.leadingCoeff core).gcd (Int.ofNat (data.p ^ Hex.precisionForCoeffBound B data.p)) = 1) (hpartition : DirectSupportPartition core B data Finset.univ core) (hcore_ne : core 0) :

            Direct true supports are in bijection with the normalized irreducible factors of the primitive square-free part.