Extension-opening reduction
An opening claim gives a point and a value , and asks the verifier to check that the committed polynomial evaluates to at . The verifier knows the commitment, not the full polynomial table.
Extension-opening reduction, or EOR, handles a base-field table opened at an extension-field point. It packs several base-field entries into each extension-field entry, then reduces the original opening claim to a claim about that packed table. The number of table entries falls, but the underlying base-field data stays the same.
The main idea is to compare two ways of reading a two-dimensional table. One path evaluates its columns first. The other packs its rows first. A small table of partial evaluations connects the two paths. Sumcheck checks that connection, and Akita's subsequent opening checks bind its result to the committed witness.
This page starts with one polynomial and one opening. The implementation page explains how Akita combines several openings and selects EOR in a recursive schedule.
A small example
Work over , so base-field arithmetic is modulo . Use the quadratic extension with basis . Every extension-field value has two base-field coordinates. These small fields are only for the example, not a secure parameter choice.
Consider a two-variable table . The head bit selects a column and the tail bit selects a row:
| Tail | Head | Head | Pack across the row |
|---|---|---|---|
Packing stores each pair as the two coordinates of one extension-field value. It produces a table with one variable instead of two.
Now open the original table at . Multilinear evaluation uses weights for a bit opened at . Evaluating down the two columns at the tail point gives the column partials
The head point then gives the original opening value
Packing uses the fixed weights , whereas the head evaluation uses . These are different operations. Indeed, evaluating the packed table at the same tail point gives
which is not . The tilde denotes the multilinear polynomial defined by a Boolean table. EOR must prove a relation between these two representations; it cannot simply replace by and keep the opening value.
The general input and packed table
Let have degree over . Fix the canonical -basis used by the field implementation. The basis is public and does not depend on a challenge.
The prover holds an -variable base-field table , where . Split its indices and opening point into a head of length and a tail of length :
The incoming claim is . Both parties know , , and the commitment before EOR begins. Knowing does not mean that the claim is already verified.
For equally sized tuples , define the equality polynomial
Its values at Boolean indices are the interpolation weights. Thus
The prover packs the head entries at each Boolean tail position:
The table has extension-field entries in place of base-field entries. It is a lossless representation of , not a separately chosen witness. Akita uses little-endian Boolean order, so the flat entry at is when the bit strings are read as integers. The prover does not send the full table or in the EOR proof.
Send column partials
The prover first computes one partial for each head index:
It sends these extension-field values. The verifier checks their count and tests whether they recover the incoming opening:
The verifier can perform this check without knowing . But it only checks consistency with . A dishonest prover could choose unrelated partials that pass Equation (4). The rest of EOR must connect these particular partials to the packed witness.
Derive row partials
Both parties decompose each received column partial in the fixed basis:
The index selects a basis coordinate; still selects a head column. They have the same range but different roles. The coefficients form a by table.
For the example, and give
| Basis coordinate | Column | Column | Repack this row |
|---|---|---|---|
In general, repacking the -th row means computing
This basis transpose has no new prover message. The verifier derives every from the received . A row partial is one extension-field value, not a polynomial. Its value is now known, but its claimed relation to the witness remains to be checked.
Build the public factors
To express the row claims in terms of , decompose each tail equality weight in the same basis:
Here is Boolean and extracts coordinate in the fixed basis. Every is a public Boolean table. The verifier can compute its entries from alone, without any witness data. This is why these factors are called transparent.
Substitute Equation (7) into Equation (3). Since , multiplication by scales each basis coordinate without mixing them:
Now repack across :
The relation to be proved is therefore
The verifier derives the left side from the received partials. On the right, the factor is public and the table is the prover's packed witness. For honest partials, the identity follows by exchanging two sums. In the protocol, it is an obligation to check, not an assumption the verifier makes.
The example makes the exchange visible. The tail weights are and , so their coordinate tables are
| Coordinate | ||
|---|---|---|
Consequently,
Taking a coordinate after evaluating the columns gives the same result as using that coordinate of the weights on the packed rows.
Batch the row claims
Rather than prove all row relations separately, the protocol combines them with fresh random weights. After the original claim values and all column partials enter the transcript, it derives a point . Both parties compute
Neither nor is sent. The verifier derives from the received partials and derives from the public tail point and . Equation (9) now gives the single sumcheck claim
For the degree-two example, has one coordinate. The row weights are , giving
The challenge must follow the partials. Otherwise a prover could choose row errors to cancel under already known weights. With the partials fixed first, row errors define a multilinear polynomial in ; a false collection of rows can still pass at an unlucky challenge, but cannot choose its errors after seeing that challenge.
From a public table to a polynomial
Sumcheck evaluates away from the Boolean cube, so it needs polynomials, not just table entries. Write , , and for the multilinear extensions of their respective tables. For example,
The polynomial has coefficients in . The polynomials and have coefficients in . Each has degree at most one in every tail variable. For the example, Equation (12) is just
At an extension-field point , evaluate the multilinear extension of the coordinate table. Do not replace by . Coordinate extraction is only -linear, so it cannot in general move past the extension-field interpolation weights. The verifier computes without materializing the full Boolean table.
Reduce the sum to one point
Define
Each factor is multilinear, so has degree at most two in each variable. Sumcheck reduces Equation (11) over the tail variables. It starts with the known target .
In round , after challenges , the honest prover forms the univariate polynomial
The prover sends the round polynomial in the protocol's compressed encoding. The verifier reconstructs a polynomial of degree at most two and checks . After absorbing that message, the transcript derives , and both parties set . In Akita, challenges come from the shared transcript rather than a separate verifier message; the schedule also specifies transcript grinding.
After rounds, the challenge point is . The prover sends a terminal product claim . The verifier checks and computes the public factor . The remaining obligation is
The sumcheck messages alone do not verify this final witness evaluation. They reduce the original sum claim to Equation (14). If , there are no round messages and is empty; the same final product relation still applies.
Bind the result to the committed witness
Akita keeps and separate. It does not send an independent in the EOR payload, and it does not divide by . The next opening checks must prove Equation (14) for the packed representation of the same incoming committed table. The product relation does not recover an unscaled value when .
For a nonterminal fold, EvaluationTrace supplies a public linear relation
on the fold's opening digits. Akita multiplies its opening weights by
and uses as the target. The fold's source-consistency and
commitment relations connect those digits back to the incoming witness.
Stage 2
checks the resulting relations together.
The terminal path checks the corresponding trace relation directly against
its terminal response and has no Stage-2 sumcheck.
Passing the column check, deriving the rows, and replaying sumcheck are not independent proofs of the original opening. They are successive reductions whose final witness relation must also be checked.
What the prover sends
The following table lists the algebraic data for one opening. The input value may itself be a claim carried from an earlier protocol stage; it is not a new field in the EOR payload.
| Object | Meaning | How the verifier obtains it |
|---|---|---|
| and the commitment | Incoming opening claim | Already available at the EOR boundary |
| Original and packed witness tables | The prover does not send these full tables in EOR | |
| Claimed column partials | Sent by the prover | |
| Coordinates and repacked rows | Derived from the received | |
| Public coordinate tables | Derived from and the fixed basis | |
| Row and sumcheck challenges | Derived from the transcript in order | |
| Batched public factor and its final evaluation | Derived from | |
| Sumcheck input target | Derived from the rows and | |
| Degree-two round polynomials | Sent in compressed form | |
| Claimed final product | Sent by the prover and checked against the sumcheck output |
In particular, a derived value need not be a verified witness value. The verifier knows after reading the partials, but Equation (9) is still a claim about the hidden table .
The message flow is:
Prover Verifier
holds f; derives packed table g knows r, v, commitment
|
+---------------- S_y ------------------> checks recombination to v
derives row_u from S_y
both derive eta after absorbing the partials
both compute c_eta and the public factor A_eta
+------------ round polynomial ---------> checks the round relation
both derive the next rho coordinate repeat for each tail bit
+----------------- h -------------------> checks h = final round claim
computes theta
remaining claim: h = theta * g_tilde(rho)
Akita's opening and commitment checks bind it to the witness
Where Akita uses this reduction
A scheduled fold uses EOR exactly when its opening method is
EvaluationTrace and its claim field is a proper extension of its base
field. A single-field configuration needs no EOR. A
SubringCoefficientPacking fold binds the original extension-valued opening
directly and also omits EOR. See
Fold path and field geometry.
With multiple claims, Akita runs one shared EOR sumcheck and sends one terminal product for each opening. It uses an early set of coefficients inside EOR and a separate set after the fold's opening payload is fixed. Groups retain their own public points and native tail lengths. The multi-group description explains those two batching steps and the common sumcheck domain.
Structure of the transparent factor
The transparent factor has more structure than an arbitrary dense table. Use the coordinate maps from Equation (7) and the weights from Equation (10). Define the base-field-linear batching map by
Split the remaining Boolean variables into a prefix and suffix. The equality product splits as
On Boolean inputs, the EOR factor can then be written as only [E:F]
separable terms:
A direct multiplication-table expansion would expose [E:F]^2 terms. Expanding
only the prefix factor in the fixed basis gives Equation (15).
Equation (15) is first an identity between Boolean tables. During sumcheck, the
coordinate tables on its right must be folded as multilinear polynomials. It
would be incorrect to evaluate the extension-valued prefix at a non-Boolean
challenge and then apply coord_u: the coordinate map is base-field linear,
not extension-field linear.
The production prover currently materializes the dense factor. The separable form instead identifies a future small-space execution strategy; see the roadmap.
Code reference
- Shared tensor algebra
defines the head split, basis packing, column-to-row transpose, and public
factor evaluation. In particular,
tensor_equality_factor_eval_at_pointevaluates Equation (12), not coordinates of an already evaluated equality. - Prover tensor tables build the column partials and the dense factor table from the witness.
- Prover orchestration
absorbs claims and partials before sampling , runs sumcheck, and
records the terminal products. The
proof type
carries
partials,sumcheck, andfinal_claims. - Verifier replay checks the required payload and shape, recombines partials to , and reconstructs the same row claims and public factors. Fold claim preparation applies the factors to the later evaluation-trace weights.
The tensor and sumcheck tests compare partial recombination with direct evaluation, the row claim with the dense witness-factor sum, and the verifier's factor evaluation with the multilinear extension of the factor table. The verifier replay tests also reject changed partials, missing terminal claims, and EOR payloads that do not match the scheduled method. These tests check the implementation's algebra and rejection paths; they do not replace a soundness analysis of the composed protocol.