Index type for the local factors stored in executable Hensel lift data.
Equations
Instances For
A finite subset of the local factors stored in executable Hensel lift data.
Equations
Instances For
The lifted local factor at an executable LiftData index.
Equations
Instances For
Product of the lifted local factors selected by a finite subset.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Transport a modular-factor index to the corresponding lifted-factor index.
Equations
- HexBerlekampZassenhausMathlib.liftedIndexOfModPIndex primeData d hsize i = ⟨↑i, ⋯⟩
Instances For
Embedding version of liftedIndexOfModPIndex for finite-set transport.
Equations
- HexBerlekampZassenhausMathlib.modPIndexToLiftedEmbedding primeData d hsize = { toFun := HexBerlekampZassenhausMathlib.liftedIndexOfModPIndex primeData d hsize, inj' := ⋯ }
Instances For
Transport a selected subset of modular factors to the corresponding selected subset of lifted factors, once the lift stage is known to preserve factor count.
Equations
- HexBerlekampZassenhausMathlib.liftedSubsetOfModPSubset primeData d hsize S = Finset.map (HexBerlekampZassenhausMathlib.modPIndexToLiftedEmbedding primeData d hsize) S
Instances For
Membership in a lifted canonical subset, tested at the lifted image of a
mod-p factor index, is exactly membership in the original mod-p subset.
The canonical lift from mod-p factor subsets to lifted-factor subsets is
injective.
Canonical lifting reflects and preserves disjointness.
Selected lifted-factor product scaled by the leading coefficient of the integer square-free part, matching the product formed by the executable recombination candidate checker.
Equations
Instances For
Corrected recovered-coordinate representation of an integer factor at a Hensel
lift. The selected lifted product represents a monic-coordinate factor modulo
p^k; dilating that monic factor by leadingCoeff core and taking primitive
part recovers the integer factor of core.
The monic_dvd field pins the monic coordinate down to the canonical bounded
representative: it must divide (toMonic core).monic, the monic polynomial the
Hensel lift is actually built on. This forces a Mignotte coefficient bound on
monicFactor (via defaultFactorCoeffBound_valid), which is what makes the
exact-recovery lemma candidate_eq_of_bound applicable; without it the residue
link alone admits non-canonical witnesses.
This is the data-bearing carrier behind the public proof-level
RepresentsIntegerFactorAtLift predicate.
- monicFactor : Hex.ZPoly
The monic-coordinate factor represented by the selected lifted factors.
The selected lifted product agrees with the monic factor modulo the lift modulus.
- dilate_eq : (Hex.ZPoly.dilate (Hex.DensePoly.leadingCoeff core) self.monicFactor).primitivePart = factor
Dilation by the input leading coefficient recovers the original factor.
The monic-coordinate factor divides the transformed input.
Instances For
An integer factor is represented by a subset of the lifted local factors when the unscaled selected product recovers a monic-coordinate witness whose leading-coefficient dilation has primitive part equal to the integer factor.
The public predicate is proof-only; helper lemmas can unpack the underlying
RecoveredAtLift witness when they need the monic-coordinate data.
Equations
- HexBerlekampZassenhausMathlib.RepresentsIntegerFactorAtLift core d factor S = Nonempty (HexBerlekampZassenhausMathlib.RecoveredAtLift core d factor S)
Instances For
Pack a data-bearing recovered-coordinate witness into the public predicate.
Eliminator exposing the monic-coordinate witness, its modular congruence, and the dilation equality locally.
Proof-side form of the executable recombination candidate, using the selected lifted-factor product directly. The executable-list version is introduced later, after the list-selection identification has been developed, and is proved equal to this definition.
Equations
Instances For
Proof-side candidate for recovering an integer factor of a possibly non-monic
square-free part from a selected lifted-factor product. The selected product is first
centred in the Hensel modulus, then transported back from the toMonic
coordinate system by X ↦ leadingCoeff core * X, and finally made primitive
with canonical sign.
Equations
- One or more equations did not get rendered due to their size.
Instances For
On monic square-free parts, the recovered non-monic candidate collapses to the existing unscaled lifted-product candidate.
Scaled variant of the recombination candidate: centred lift of the leading-coefficient-scaled selected lifted-factor product, primitivised and sign-normalised. This is the primitive non-monic supporting lemma used by the scaled recombination search.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Proof-facing package for the square-free Hensel subset correspondence over the
executable PrimeChoiceData/LiftData surface.
The two proposition parameters are hooks for the precise admissible-prime and successful-lift hypotheses supplied by the later analytic Hensel proof. The caller theorems below depend only on the resulting existence and uniqueness fields, so downstream exhaustive-recombination proofs can be written against a stable executable API.
The lift data is the lift selected from these inputs.
- admissible_prime : admissiblePrime
The selected prime satisfies the caller's admissibility condition.
- successful_lift : successfulLift
The multifactor Hensel lift satisfies the caller's success condition.
- exists_subset {factor : Hex.ZPoly} : Hex.normalizeFactorSign factor = factor → Irreducible (HexPolyZMathlib.toPolynomial factor) → factor ∣ core → ∃ (S : LiftedFactorSubset d), RepresentsIntegerFactorAtLift core d factor S
Every normalized irreducible divisor has a representing lifted subset.
- unique_subset {factor : Hex.ZPoly} {S T : LiftedFactorSubset d} : Irreducible (HexPolyZMathlib.toPolynomial factor) → factor ∣ core → RepresentsIntegerFactorAtLift core d factor S → RepresentsIntegerFactorAtLift core d factor T → S = T
The lifted subset representing an irreducible divisor is unique.
Instances For
Proof-facing package for transporting the mod-p subset partition through a
successful Hensel lift.
The fields isolate the analytic Hensel obligations: the lift preserves the
factor count, every mod-p selected subset represents the same integer factor
after lifting, and every lifted representation descends to a mod-p selected
subset. The caller theorems below combine these fields with
ModPSubsetPartitionHypotheses to recover the existing lifted-subset
correspondence API.
The lift data is the lift selected from these inputs.
The lift preserves the number of modular factors.
- admissible_prime : admissiblePrime
The selected prime satisfies the caller's admissibility condition.
- square_free_reduction : squareFreeReduction
Reduction modulo the selected prime preserves square-freeness.
- successful_lift : successfulLift
The multifactor Hensel lift satisfies the caller's success condition.
- coprime_lift : coprimeLift
The lifted factors satisfy the caller's coprimality condition.
- represents_lifted_of_modP {factor : Hex.ZPoly} {S : ModPFactorSubset primeData} : Irreducible (HexPolyZMathlib.toPolynomial factor) → factor ∣ core → RepresentsIntegerFactorModP primeData factor S → RepresentsIntegerFactorAtLift core d factor (liftedSubsetOfModPSubset primeData d ⋯ S)
A modular representation gives a representation by the corresponding lifted factors.
- represents_modP_of_lifted {factor : Hex.ZPoly} {T : LiftedFactorSubset d} : Irreducible (HexPolyZMathlib.toPolynomial factor) → factor ∣ core → RepresentsIntegerFactorAtLift core d factor T → ∃ (S : ModPFactorSubset primeData), T = liftedSubsetOfModPSubset primeData d ⋯ S ∧ RepresentsIntegerFactorModP primeData factor S
Every lifted representation descends to a corresponding modular representation.
Instances For
Explicit descent-only package for the lifted Hensel side.
This gives the reverse transport obligation a name independent of the full
HenselSubsetCorrespondenceHypotheses API. Callers still have to prove the
descent field; the point of the package is that they can combine that proof
with forward Hensel transport without first constructing the lifted subset
correspondence.
The lift data is the lift selected from these inputs.
The lift preserves the number of modular factors.
- successful_lift : successfulLift
The multifactor Hensel lift satisfies the caller's success condition.
- coprime_lift : coprimeLift
The lifted factors satisfy the caller's coprimality condition.
- represents_modP_of_lifted {factor : Hex.ZPoly} {T : LiftedFactorSubset d} : Irreducible (HexPolyZMathlib.toPolynomial factor) → factor ∣ core → RepresentsIntegerFactorAtLift core d factor T → ∃ (S : ModPFactorSubset primeData), T = liftedSubsetOfModPSubset primeData d ⋯ S ∧ RepresentsIntegerFactorModP primeData factor S
Every lifted representation descends to a corresponding modular representation.
Instances For
Data-bearing reverse descent from a monic-coordinate lift.
The lifted representation still recovers the original integer factor, but the
descended mod-p subset represents the monic correspondent stored inside the
RecoveredAtLift witness. This is the sound replacement for asking the same
subset to represent the non-monic original factor modulo prime data selected for
(toMonic core).monic.
- modPSubset : ModPFactorSubset primeData
The modular subset underlying the selected lifted factors.
Lifting the modular subset gives the original lifted subset.
- recovered : RecoveredAtLift core d factor T
The lifted subset recovers the original-coordinate factor.
- represents_monic : RepresentsIntegerFactorModP primeData self.recovered.monicFactor self.modPSubset
The modular subset represents the recovered monic-coordinate factor.
Instances For
Pack the explicit monic-correspondent reverse-descent fields.
Equations
- HexBerlekampZassenhausMathlib.MonicDescent.ofRecovered S hT hrec hmod = { modPSubset := S, subset_eq := hT, recovered := hrec, represents_monic := hmod }
Instances For
Projection of the original-factor recovery equality.
Projection that the monic correspondent divides the monic transform.
Descent-only package for the to-monic reverse direction.
Unlike HenselLiftDescentHypotheses, this package does not claim that a lifted
representation of the original non-monic factor descends to a mod-p
representation of that same factor. It descends to the monic correspondent
recorded by RecoveredAtLift, while retaining the dilation equality back to the
original factor.
The lift data is the lift selected from these inputs.
The lift preserves the number of modular factors.
- successful_lift : successfulLift
The multifactor Hensel lift satisfies the caller's success condition.
- coprime_lift : coprimeLift
The lifted factors satisfy the caller's coprimality condition.
- descends {factor : Hex.ZPoly} {T : LiftedFactorSubset d} : Irreducible (HexPolyZMathlib.toPolynomial factor) → factor ∣ core → RepresentsIntegerFactorAtLift core d factor T → ∃ (S : ModPFactorSubset primeData) (hrec : RecoveredAtLift core d factor T), T = liftedSubsetOfModPSubset primeData d ⋯ S ∧ RepresentsIntegerFactorModP primeData hrec.monicFactor S
A lifted representation descends to its modular subset and monic correspondent.
Instances For
Precision-conditional exact recovery for liftedRecoveryCandidate in the
dilation-coordinate model.
Exact recovery of the executable recovered candidate from the corrected monic-coordinate representation carrier.
Exact recovery driven directly by the carrier's monic_dvd field.
This is the producer half of the recovery contract: the monic_dvd field
forces monicFactor ∣ (toMonic core).monic, so defaultFactorCoeffBound_valid
discharges the Mignotte coefficient bound at
B' := defaultFactorCoeffBound (toMonic core).monic with no separate validity
obligation on the caller. The only remaining precision hypothesis is that the
Hensel modulus clears twice that bound.
Abstract-bound variant of
centeredLift_scaledLiftedFactorProduct_eq_of_mignottePrecision: takes an
arbitrary B' : Nat, an explicit validity hypothesis
hvalid : ∀ i, (factor.coeff i).natAbs ≤ B', and the scaled-product
congruence in place of the public representation predicate. The body just
threads B' and hvalid into centeredLiftPoly_eq_of_reduceModPow_eq
(which already accepts an abstract bound). The original input-shape theorem is
a wrapper around this variant.
Mignotte recoverability for one represented integer factor.
If the scaled selected lifted product is congruent to an integer divisor of
core modulo the Hensel modulus, and that modulus is beyond twice the default
Mignotte coefficient bound for core, then the executable centred-lift
operation recovers the integer factor exactly.
This is a thin wrapper over the abstract-bound variant
centeredLift_scaledLiftedFactorProduct_eq_of_mignottePrecision_of_bound
that instantiates B' := defaultFactorCoeffBound core and discharges
hvalid via defaultFactorCoeffBound_valid core hcore_ne factor hdvd.
callers should prefer the _of_bound variant directly with
B' := defaultFactorCoeffBound f, bypassing the squareFreeCore-bound
monotonicity obligation called out by
factor_exhaustive_branch_entry_core_zpolyIrreducible_of_henselSubsetCorrespondence.