Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Cyclotomic rings and extension fields

Akita uses three related kinds of number system. Each one has a different job.

  • A prime field stores the coefficients supplied by an application.
  • An extension field supplies large random challenges and evaluation points.
  • A cyclotomic ring groups many field coefficients into one object for lattice commitments and fast polynomial arithmetic.

This chapter builds those objects from the ground up. It then explains how the current Rust types represent them.

Prime fields

Choose a prime number . The prime field contains the integers from through , with every operation reduced modulo .

For example, in ,

The first equality holds because and differ by . The second holds because is also congruent to modulo .

Every nonzero field element has a multiplicative inverse. This is what makes a field different from a general ring. Division by a nonzero element means multiplication by its inverse.

Akita ships configurations over three prime sizes:

FamilyBase field sizeEvaluation field
fp32About 32 bitsDegree 4 extension of the base field
fp64About 64 bitsDegree 2 extension of the base field
fp128About 128 bitsThe base field itself

The exact prime belongs to the configuration. For example, the current fp128 family uses . The field-arithmetic chapter explains how the production fields are stored, reduced, accumulated, and sampled.

Extension fields

An extension field adds new elements while keeping the original field as a subfield. If is a degree extension of , then has elements. Each element can be written with base field coordinates.

For a degree 2 extension, an element has the form

where and satisfies a fixed irreducible quadratic equation. The equation defines how powers of reduce during multiplication. A degree 4 element has four coordinates. Akita fixes the basis and coordinate order with the field type; it is not selected by a proof.

Akita uses extension fields because challenge size controls the probability that a false polynomial identity passes a random evaluation. A 32 bit base field is useful for fast arithmetic, but a single 32 bit challenge is too small for Akita's security target. A degree 4 extension gives a challenge field with about 128 bits. The fp64 family reaches the same size with a degree 2 extension. The fp128 family needs no extension.

The code records this relationship through ExtField<F>. Its DEGREE constant gives . from_base_slice and to_base_vec convert between an extension element and its canonical base field coordinates.

Coefficients and evaluation points have different roles

A polynomial can have coefficients in the base field and still be evaluated at a point in an extension field.

Suppose

has coefficients in . If belongs to an extension field , then also belongs to . The base values are embedded as constant elements of before the arithmetic is performed.

This is the common small field case in Akita. The committed table contains values in , while sum-check challenges and claimed evaluations live in . Keeping these roles separate gives the prover fast base field storage and gives the verifier a large challenge space.

The extension-opening reduction explains how Akita later turns such an extension field claim into the packed base field claim needed by the folding protocol.

The cyclotomic ring

For a power of two , Akita uses the ring

An element is a polynomial with at most coefficients:

The quotient by means that . Any term whose degree reaches wraps around with a minus sign. This is called negacyclic reduction.

Take as a small example. Then

The implementation stores the coefficients in ascending degree order. The ring element is stored as [2, 3, 0, -1], with each entry reduced in the base field.

CyclotomicRing<F, D> owns this representation. Its ordinary multiplication computes negacyclic convolution. Its sigma method applies an automorphism for an odd . Its sigma_m1 method applies , which appears in inner products and opening reduction.

Why one ring element holds many coefficients

A matrix over is also a structured matrix over . One ring multiplication acts on base field coefficients at once. This structure is what lets Akita use Module-SIS commitments without storing an unrelated scalar matrix entry for every pair of field coordinates.

The ring dimension is not an application parameter. Generated schedules choose it for each matrix role and fold level. Current production schedules begin at and may use larger powers of two. Different roles in one proof may use different dimensions.

Splitting the ring for fast arithmetic

Some primes let factor into smaller irreducible polynomials. Suppose is a power of two and

Then splits into irreducible factors of degree . The Chinese remainder theorem identifies the ring with a product of smaller extension fields:

Arithmetic can move to these factors, perform smaller pointwise operations, and reconstruct the result. Akita's NTT and CRT kernels use this structure. The NTT and CRT chapter explains the transform and the exact integer reconstruction paths.

The amount of splitting also affects security conditions. A larger can make arithmetic faster, but it tightens the coefficient bound that guarantees a short nonzero ring element is invertible. Akita fixes the prime and challenge families together, then validates them as configuration data.

Embedding the challenge field in the ring

The extension field used by a small field configuration must interact with the ring operations used by the folding protocol. Akita uses a genuine subfield of , rather than treating a list of extension coordinates as unrelated ring coefficients.

For the power of two extension degrees used by Akita, this subfield has a fixed basis inside the ring. The Rust types FpExt2, FpExt4, and FpExt8 implement the corresponding arithmetic. The degree 4 and degree 8 types use the same cyclotomic subfield basis used by trace reduction. There is no second quartic representation that an integrator must choose between.

This alignment provides two operations used by the protocol:

  • A base field value embeds into the constant coordinate of the extension.
  • An extension field vector can be packed into the ring so that a trace of a ring product recovers the intended field inner product.

The implementation keeps one canonical coordinate order for both operations. Serialization and packed arithmetic use that same order.

The concrete extension bases

Let

inside , where is the extension degree. The degree-2 and degree-4 production extensions use these elements as their stored basis.

For , . Writing , multiplication in the basis is

The implementation computes the cross term with Karatsuba, using three base products for a general quadratic non-residue. Squaring uses two products:

For , the stored basis is . Its products follow

with , , and . For example,

These identities define the direct coefficient formulas used by FpExt4. Quartic inversion temporarily regards the same element as two values in the quadratic subfield generated by , where . It computes a norm, performs one base-field inversion, and converts the result back to the same four stored coordinates. The tower is an inversion method only; it does not create an alternate quartic representation.

The degree-8 type follows the same ring-subfield basis pattern. Current production fp32, fp64, and fp128 schedules use extension degrees 4, 2, and 1 respectively, while the degree-8 implementation supports shared algebra and tests.

Trace projection in the same basis

For the subgroup

Akita computes

The fixed ring is isomorphic to the degree- extension. Because the extension coordinates already use the ring-subfield basis, trace projection, extension arithmetic, serialization, and field-to-ring packing all agree on one coordinate system. The implementation does not convert through a power basis before applying the trace.

The map psi_embed places extension elements in one ring element by a fixed set of shifts. Together with the involution , it gives the inner-product identity used by the evaluation-trace path:

The evaluation-trace chapter explains how the verifier evaluates the resulting trace weight without constructing the prover's trace table.

Centered coefficients and norms

Security bounds treat a field residue as a small signed integer when possible. The centered representative of a value modulo is the unique integer in that represents it.

For a ring element with centered coefficients , Akita uses three common norms:

The infinity norm controls the largest coefficient. The one norm controls a simple bound on how much multiplication by a sparse challenge can increase a coefficient. The Euclidean norm gives a tighter whole-vector measure when the protocol proves the corresponding physical norm.

For example,

This inequality explains why Akita records the one norm of a fold challenge and the infinity norm of a response. Their product bounds the coefficients of the resulting collision vector.

Challenge subrings and coefficient packing

Some folds use a challenge in a smaller ring while the committed data remains in a larger ring. Let the extension field have degree , and suppose . Akita uses

as the challenge subring and embeds it into by

This map is valid because . It inserts the challenge coefficients at fixed positions in the coefficient ring. The other coefficient lanes remain explicit.

The embedding preserves the coefficient norms of the challenge. It also preserves invertibility. These properties let the protocol use a compact challenge without changing the security bound applied after embedding.

The root fold and ring switching chapter shows the full coefficient grid and the current packed proof relation.

Implementation and review map

QuestionPrimary source
How is a ring element stored and multiplied?crates/akita-algebra/src/ring/cyclotomic.rs
Which extension types exist?jolt-field::solinas (FpExt2, FpExt4, and FpExt8)
How are base values lifted into an extension?jolt_field::ExtField and the Solinas extension implementations
Which field and extension does a preset use?crates/akita-config/src/proof_optimized/
Which ring dimensions may a preset schedule use?The A_RING_DIMENSIONS, B_RING_DIMENSIONS, and D_RING_DIMENSIONS declarations in each preset
How is subring coefficient packing validated?crates/akita-params/src/layout/subring_packing_geometry.rs and crates/akita-types/src/subring_coefficient_packing.rs
How are subfield embeddings and traces checked?crates/akita-types/src/field_reduction.rs

A review should check that all representations agree on four facts. The prime must match the selected modulus profile. Extension coordinates must use one canonical basis and order. A schedule may select only dimensions admitted by its configuration. Every optimized ring operation must match the scalar negacyclic result.