Modular addition of coefficients.
Equations
- Hex.MvPoly.Kernel.residueAdd p a b = (a.add b).mod p
Instances For
Modular multiplication of coefficients.
Equations
- Hex.MvPoly.Kernel.residueMul p a b = (a.mul b).mod p
Instances For
Negation by multiplication by the residue of -1. Pattern matching on the
modulus keeps the coefficient path within natural addition, multiplication,
modulus, and structural recursion.
Equations
Instances For
Merge canonical residue lists, reducing every coefficient collision.
Equations
- Hex.MvPoly.Kernel.addMod p a b = Hex.MvPoly.Kernel.add a b
Instances For
Multiply translated rows with modular products and balanced modular merges.
Equations
- Hex.MvPoly.Kernel.mulMod p a b = Hex.MvPoly.Kernel.mul a b
Instances For
Negate residue coefficients and remove zero results.
Equations
Instances For
Multiply by an arbitrary natural-number scalar modulo the modulus.
Equations
Instances For
Subtraction of canonical residue lists.
Equations
- Hex.MvPoly.Kernel.subMod p a b = Hex.MvPoly.Kernel.addMod p a (Hex.MvPoly.Kernel.negMod p b)
Instances For
Canonical exponents and nonzero coefficients strictly below the modulus.
Equations
- Hex.MvPoly.Kernel.CanonicalMod p n a = (Hex.MvPoly.Kernel.Canonical n a ∧ ∀ (t : Hex.MvPoly.Kernel.Term Nat), t ∈ a → t.snd < p)
Instances For
Check canonical form and the residue bound on untrusted certificate data.
Equations
- Hex.MvPoly.Kernel.isCanonicalMod p n a = (Hex.MvPoly.Kernel.isCanonical n a && List.all a fun (t : Hex.MvPoly.Kernel.Term Nat) => t.snd.blt p)
Instances For
The Boolean check is equivalent to canonical residue form.
The modular identity is canonical for every modulus.
Modular addition preserves canonical residue form for every modulus.
Modular multiplication preserves canonical residue form for every modulus.
Modular negation preserves canonical residue form for every modulus.
Modular scaling preserves canonical form for every modulus and scalar.
Modular subtraction preserves canonical residue form for every modulus.