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:

  1. Reject if

Example: — check and

carrylt
0101111 (d>b)
1010000 (b>d)
2000101 (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.

  1. Verifier sends random weights
  2. Rewrite as a single sum-check:
  3. At the end, verifier has random and needs:
    • — one query to underlying PCS
    • — computed directly in
Single eval evals (batched)
Sum-check rounds
Oracle queries11

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

SparkJagged
Additional oracles7+None
Verifier depends onSparsity patternOnly