Equality-factored sum-check
Many Akita identities give extra weight to one point through the equality polynomial:
Ordinary sum-check can prove this claim. Equality-factored sum-check proves the same claim with smaller round messages and a smaller prover table. The saving comes from treating the known equality factor separately from the polynomial that carries the protocol data.
Read Multilinear extensions and sum-check first if the ordinary round check is not yet familiar.
The equality factor splits by coordinate
For one coordinate, define
This is a linear polynomial in . Across all coordinates,
After the first variables have been bound to challenges , their equality contribution is one scalar:
The corresponding full round polynomial has the linear factor
The remaining coordinates stay inside the Boolean sum. The full round polynomial therefore factors as
where is the round polynomial formed from and the equality factors for the still unbound coordinates. Equality-factored sum-check normalizes the already-bound scalar out of the running claim. Its round identity therefore uses directly rather than carrying from one round to the next.
Omit the constant coefficient
Suppose has degree at most . The full polynomial can have degree because is linear. The verifier already knows , so Akita sends coefficients of instead of coefficients of .
There is one more saving. Write
The normalized current claim obeys
The coefficient of is exactly one, independently of . Akita does not send that coefficient. An equality-factored round message stores
[q1, q2, ..., qd]
For the common case where contributes degree two, ordinary sum-check would send three coefficients for the degree-three product . The factored message sends two coefficients for the degree-two inner polynomial .
jolt_poly::OmittedConstantPoly stores this round message, and
akita-serialization encodes it on the wire. A
degree- inner polynomial contributes exactly field elements. Thus every
deployed Akita Stage 1 round, whose inner degree is positive, keeps the same
message width; the valid degree-zero case needs no transmitted coefficient.
The verifier avoids division
The verifier recovers the omitted coefficient by subtraction:
After sampling , it advances the normalized claim as
No inverse or accumulated claim scale appears, and the formula remains valid when or when an earlier equality evaluation vanishes. The final verifier check compares directly with the expected folded oracle value.
The public function advance_eq_factored_claim in
akita-sumcheck/src/single.rs implements these equations directly. The direct
prove_eq_factored_sumcheck and verify_eq_factored_sumcheck functions both
call it, so transcript replay and proof generation cannot drift onto different
update rules.
Avoiding a full equality table
A direct prover can materialize all
values and fold that table in every round.
Akita uses GruenSplitEq instead.
It divides the unbound coordinates, other than the current one, into two halves. For each half it caches equality tables for its remaining suffixes. At a round, the equality weight for table index is reconstructed as
The specialized driver reads the current coordinate and the remaining
tables, then pops one cached table level after binding a challenge.
GruenSplitEq also tracks because other, ordinary sum-check paths
use it to reconstruct the full polynomial ; the normalized
equality-factored verifier does not multiply its claim by this scalar.
Each half has about coordinates. The largest cached table therefore has about entries rather than . Including all smaller cached levels changes only the constant factor. This is a substantial memory reduction for large sum-checks.
GruenSplitEq lives in akita-algebra/src/split_eq.rs. Its tests compare every
reconstructed weight and every fold against a fully materialized equality
table.
When this form applies
The optimization applies when the verifier knows a common equality factor for the sum-check instance. It is especially useful for claims built around one verifier point .
Instances that share the same factor can also share the specialized round logic. A mixed batch with different equality factors cannot omit the same inner coefficient under one common round equation. Such a batch uses ordinary compressed sum-check messages instead. The prover may still use split equality tables internally to save memory.
This distinction matters in review. The equality-table representation is a prover implementation choice. Constant-coefficient omission is specific to the normalized equality-factored identity above; ordinary sum-check still omits the linear coefficient. Changing between the two proof messages requires the matching verifier equation.
Where to inspect the implementation
| Rule | Implementation |
|---|---|
| Equality polynomial definition and tables | akita-algebra/src/eq_poly.rs |
| Split equality state and suffix caches | akita-algebra/src/split_eq.rs |
| Factored prover interface | akita-sumcheck/src/traits.rs |
| Factored round message and proof encoding | akita-sumcheck/src/types.rs |
| Direct prover/verifier functions and normalized claim update | akita-sumcheck/src/single.rs |
For a review, check these facts together:
- The challenge order used by , the data table, and
GruenSplitEqagrees. - The declared degree bounds apply to the inner polynomial , not the product .
- The proof shape fixes the number of rounds and stored coefficients before decoding.
- Prover and verifier use the same and challenge in every update.
- The final comparison uses the normalized oracle value, without an accumulated equality scale.
- Tests compare the split representation with the full equality table, not only with another optimized path.
Equality factoring does not change what the protocol proves. It exposes a factor the verifier already knows, then removes work and proof data that would otherwise repeat that structure.