Documentation

ArkLib.Data.Lattices.CyclotomicRing.Modulus

Cyclotomic Moduli over CPolynomial #

This file defines the modulus data that turns a computable polynomial type CompPoly.CPolynomial R into the cyclotomic ring R[X] / (Φ_m).

Because Mathlib's Polynomial.cyclotomic is noncomputable (it routes through roots of unity in ), we cannot build the modulus by evaluating cyclotomic. Instead a CyclotomicModulus bundles an explicit computable polynomial φ : CPolynomial R (e.g. X^d + 1) together with

The canonical Hachi [NOZ26] instantiation is the power-of-two cyclotomic φ = X^{2^α} + 1, of conductor 2^{α+1}, provided as powTwoCyclotomic.

To keep the executable layer free of any noncomputable contamination, the data and the proofs are kept in separate structures:

Main definitions #

References #

@[simp]

CPolynomial.X.toPoly = Polynomial.X.

structure ArkLib.Lattices.CyclotomicModulus (R : Type u_1) [Field R] [BEq R] [LawfulBEq R] :
Type u_1

Computable data describing a cyclotomic modulus for the polynomial ring over R: an explicit, computable polynomial φ : CPolynomial R (e.g. X^d + 1) together with its conductor m. This structure carries no proofs, so the reduction and ring operations built on it (reduce, mul, matVecMul, …) stay fully computable. The cyclotomic-correctness proofs live separately in IsCyclotomic.

  • The explicit computable modulus polynomial, e.g. X^d + 1.

  • conductor :

    The conductor m: φ is the m-th cyclotomic polynomial.

Instances For

    Cyclotomic-correctness proofs for a modulus Φ: that φ is monic (so CompPoly's modByMonic reduction applies) and that, as a Mathlib polynomial, φ is the conductor-th cyclotomic polynomial (so the reduced ring really is R[X] / (Φ_m)). A Prop-class, supplied by instance resolution to the semantic bridge without touching the executable layer.

    Instances

      The power-of-two cyclotomic modulus φ = X^{2^α} + 1, the cyclotomic polynomial of conductor 2^{α+1}. This is the ring of integers of the 2^{α+1}-th cyclotomic field, used as R_q := Z_q[X] / (X^d + 1) with d = 2^α throughout lattice-based proof systems. Computable: the operations built on it can be #eval-ed.

      Instances For

        The modulus X^{2^α} + 1 is the 2^{α+1}-th cyclotomic polynomial.