Source: Jagged Polynomial Commitments — Hemo, Jue, Rabinovich, Roh, Rothblum (Succinct, 2025)
Sparse PCS for zkVM multi-table traces. Commits to entire trace as single dense polynomial while emulating access to individual columns.
Jagged Functions
A jagged function has heights where for . Total non-zero size .
Dense representation: Pack non-zeros into using cumulative heights :
Protocol
Commitment: Commit to dense , send heights in clear.
Evaluation of : Run Multivariate Sum-Check Protocol on where iff and .
Reduces to: one claim on (to underlying PCS) + one claim on (verifier computes directly).
Computing
where iff .
Branching Program for
Width-4 Read-Once Branching Program (ROBP) with 2-bit state . Processes inputs LSB-first, reading at each step:
- Reject if
Example: — check and
| carry | lt | |||||
|---|---|---|---|---|---|---|
| 0 | 1 | 0 | 1 | 1 | 1 | 1 (d>b) |
| 1 | 0 | 1 | 0 | 0 | 0 | 0 (b>d) |
| 2 | 0 | 0 | 0 | 1 | 0 | 1 (d>b) |
Result: ✓
For any computation that can be described using a low-width branching program, there is an efficient algorithm to compute its multilinear extension.
Jagged assist
Note that the verifier needs to run a branching program for each of the columns, with the same evaluation point but different heights. Jagged assist is a protocol to delegate this work to the prover and reduce the verifier’s work to one evaluation
Batch Evaluation
Goal: Prove evaluations with cost close to a single evaluation.
- Verifier sends random weights
- Rewrite as a single sum-check:
- At the end, verifier has random and needs:
- — one query to underlying PCS
- — computed directly in
| Single eval | evals (batched) | |
|---|---|---|
| Sum-check rounds | ||
| Oracle queries | 1 | 1 |
Batching amortizes the cost of computing across all evaluations.
Efficiency
- Prover: multiplications
- Verifier: (depends only on log-trace-area, not individual heights)
Comparison to Spark
| Spark | Jagged | |
|---|---|---|
| Additional oracles | 7+ | None |
| Verifier depends on | Sparsity pattern | Only |