Skip to content

multi-stark: adopt flat quotient commitment (rev 678f8e1) - #516

Merged
gabriel-barrett merged 1 commit into
mainfrom
multi-stark-flat-quotient
Jul 25, 2026
Merged

multi-stark: adopt flat quotient commitment (rev 678f8e1)#516
gabriel-barrett merged 1 commit into
mainfrom
multi-stark-flat-quotient

Conversation

@gabriel-barrett

Copy link
Copy Markdown
Member

Bump multi-stark to 678f8e1c96b3d67eaddaa9aa8d03cd7695f97081, which commits each circuit's quotient coefficient slices as one wide matrix on the trace domain (opened once at ζ) instead of one matrix per slice on the split sub-cosets.

Port the recursive verifier to the new proof shape:

  • OOD: quotient(ζ) is now the power series Σᵢ ζ^(i·n)·cᵢ(ζ) over the slice values reconstructed from the single opened row, replacing the sub-domain Lagrange recombination (zps products over vanishing polynomials). Adds the check_shapes width assert (qd slices per row) and the one-matrix-per-circuit round-length check in verify().
  • PCS: the quotient FRI batch is one matrix per circuit at the same per-circuit heights as the stages; the per-chunk open loop and the chunk-expanded height list are gone, and the verifying-key circuit list no longer threads through the PCS phase.
  • Delete the dead zps machinery (g_pow, vanish_chunk, zps_prod, quotient_sum, log_qd_of, open_q_chunks, heights_quotient, repeat_g).

Regenerate crates/ixvm-codegen/src/aiur_multi_stark.rs (215 aiur fns).

Verified: multi-stark self-tests and the recursive-verifier end-to-end suite pass (honest proof accepted, codegen/interpreter parity holds, tampered proof and tampered claim rejected).

@gabriel-barrett
gabriel-barrett force-pushed the multi-stark-flat-quotient branch 3 times, most recently from 046bd70 to c0b3b5a Compare July 24, 2026 16:25
@argumentcomputer argumentcomputer deleted a comment from argument-ci-bot Bot Jul 24, 2026
@argumentcomputer argumentcomputer deleted a comment from argument-ci-bot Bot Jul 24, 2026
@argumentcomputer argumentcomputer deleted a comment from argument-ci-bot Bot Jul 24, 2026
@gabriel-barrett
gabriel-barrett marked this pull request as ready for review July 24, 2026 18:25
@argumentcomputer argumentcomputer deleted a comment from argument-ci-bot Bot Jul 24, 2026
@argumentcomputer argumentcomputer deleted a comment from argument-ci-bot Bot Jul 24, 2026
@argumentcomputer argumentcomputer deleted a comment from argument-ci-bot Bot Jul 24, 2026
@gabriel-barrett

Copy link
Copy Markdown
Member Author

!benchmark aiur fresh

@argument-ci-bot

argument-ci-bot Bot commented Jul 24, 2026

Copy link
Copy Markdown

!benchmark — main vs c0b3b5a

backends: aiur=prove · envs: InitStd · set: primary · shard: 0 · baseline: fresh (base-SHA run, bencher bypassed)

aiur · InitStd · prove — main from: base run @ 6e29ac9 (fresh — bencher bypassed)

constant prove-time (main) prove-time (PR) Δ% throughput (const/s) (main) throughput (const/s) (PR) Δ% peak-ram (main) peak-ram (PR) Δ% execute-time (main) execute-time (PR) Δ% verify-time (main) verify-time (PR) Δ% proof-size (main) proof-size (PR) Δ% fft-cost (main) fft-cost (PR) Δ%
Array.extract_append 51.102 s 48.467 s -5.2% (1.05× faster) 🟢 33.380 35.200 +5.5% (1.05× faster) 🟢 96.75 GiB 96.31 GiB -0.4% 10.992 s 10.423 s -5.2% (1.05× faster) 🟢 249.9 ms 167.3 ms -33.1% (1.49× faster) 🟢 26.35 MiB 25.88 MiB -1.8% 36.21B 36.21B +0.0%
ByteArray.utf8DecodeChar?_utf8EncodeChar_append 47.842 s 47.150 s -1.4% 60.410 61.290 +1.5% 102.44 GiB 102.03 GiB -0.4% 9.166 s 9.012 s -1.7% 185.9 ms 168.6 ms -9.3% (1.10× faster) 🟢 26.44 MiB 25.96 MiB -1.8% 38.11B 38.11B +0.0%
Char.ofOrdinal_le_of_le 40.899 s 37.834 s -7.5% (1.08× faster) 🟢 69.980 75.650 +8.1% (1.08× faster) 🟢 80.23 GiB 79.88 GiB -0.4% 6.722 s 6.751 s +0.4% 260.5 ms 166.2 ms -36.2% (1.57× faster) 🟢 26.38 MiB 25.90 MiB -1.8% 29.15B 29.15B +0.0%
Vector.extract_append._proof_2 27.717 s 27.717 s +0.0% 51.990 51.990 +0.0% 53.31 GiB 53.12 GiB -0.4% 5.761 s 5.694 s -1.2% 175.2 ms 168.7 ms -3.7% 🟢 26.02 MiB 25.55 MiB -1.8% 21.18B 21.18B +0.0%
String.split 22.263 s 23.328 s +4.8% ⚠️ 87.550 83.550 -4.6% ⚠️ 48.21 GiB 48.06 GiB -0.3% 3.080 s 3.153 s +2.4% 174.0 ms 163.4 ms -6.1% (1.06× faster) 🟢 26.39 MiB 25.92 MiB -1.8% 14.22B 14.22B +0.0%
_private.Init.Data.Range.Polymorphic.SInt.0.Int64.instRxcHasSize_eq 23.377 s 22.926 s -1.9% 84.400 86.060 +2.0% 50.25 GiB 50.04 GiB -0.4% 3.432 s 3.454 s +0.6% 182.2 ms 183.7 ms +0.8% 26.20 MiB 25.72 MiB -1.8% 15.71B 15.71B +0.0%
List.mergeSort 15.550 s 15.308 s -1.6% 102.760 104.390 +1.6% 31.81 GiB 31.73 GiB -0.3% 2.273 s 2.224 s -2.2% 165.0 ms 168.9 ms +2.3% 26.25 MiB 25.77 MiB -1.8% 10.46B 10.46B +0.0%
Vector.append 5.227 s 5.070 s -3.0% 🟢 108.290 111.640 +3.1% 🟢 8.45 GiB 8.45 GiB +0.0% 596.0 ms 590.1 ms -1.0% 164.8 ms 163.8 ms -0.6% 24.84 MiB 24.38 MiB -1.8% 2.21B 2.21B +0.0%
Nat.gcd_comm 4.440 s 4.299 s -3.2% 🟢 93.460 96.540 +3.3% 🟢 7.92 GiB 7.56 GiB -4.5% 🟢 471.7 ms 472.2 ms +0.1% 177.9 ms 153.7 ms -13.6% (1.16× faster) 🟢 24.44 MiB 23.99 MiB -1.8% 1.56B 1.56B +0.0%
String.append 3.259 s 3.124 s -4.1% 🟢 108.330 112.990 +4.3% 🟢 4.92 GiB 4.94 GiB +0.3% 348.8 ms 348.0 ms -0.2% 148.6 ms 153.9 ms +3.5% ⚠️ 23.73 MiB 23.30 MiB -1.8% 869.46M 869.46M +0.0%
Int.gcd 2.717 s 2.561 s -5.8% (1.06× faster) 🟢 84.270 89.420 +6.1% (1.06× faster) 🟢 4.80 GiB 6.08 GiB +26.8% (1.27× larger) ⚠️ 293.3 ms 287.1 ms -2.1% 149.5 ms 138.5 ms -7.4% (1.08× faster) 🟢 23.35 MiB 22.92 MiB -1.8% 539.56M 539.56M +0.0%
Nat.sub_le_of_le_add 2.500 s 2.429 s -2.8% 76.010 78.220 +2.9% 4.92 GiB 4.69 GiB -4.7% 🟢 283.3 ms 276.5 ms -2.4% 149.1 ms 151.0 ms +1.2% 23.82 MiB 23.39 MiB -1.8% 451.92M 451.92M +0.0%
Nat.add_comm 1.367 s 1.371 s +0.3% 37.300 37.200 -0.3% 4.27 GiB 4.03 GiB -5.7% (1.06× smaller) 🟢 195.7 ms 197.9 ms +1.1% 142.5 ms 130.2 ms -8.6% (1.09× faster) 🟢 22.27 MiB 21.85 MiB -1.9% 48.99M 48.99M +0.0%

13 constants · 3 with regressions · 11 with improvements (|Δ| > 3.0% on any metric).

Workflow logs

@gabriel-barrett

Copy link
Copy Markdown
Member Author

!benchmark aiur-recursive fresh

@argument-ci-bot

argument-ci-bot Bot commented Jul 24, 2026

Copy link
Copy Markdown

!benchmark — main vs c0b3b5a

backends: aiur-recursive · envs: InitStd · set: primary · shard: 0 · baseline: fresh (base-SHA run, bencher bypassed)

aiur-recursive · InitStd — main from: base run @ 6e29ac9 (fresh — bencher bypassed)

proof recursive-prove-time (main) recursive-prove-time (PR) Δ% recursive-peak-ram (main) recursive-peak-ram (PR) Δ% recursive-proof-size (main) recursive-proof-size (PR) Δ% recursive-verify-time (main) recursive-verify-time (PR) Δ% recursive-execute-time (main) recursive-execute-time (PR) Δ% recursive-fft-cost (main) recursive-fft-cost (PR) Δ% prove-time (main) prove-time (PR) Δ% proof-size (main) proof-size (PR) Δ% verify-time (main) verify-time (PR) Δ% peak-ram (main) peak-ram (PR) Δ%
factorial-q100-b2 5.219 s 5.063 s -3.0% 🟢 14.56 GiB 14.58 GiB +0.1% 11.38 MiB 10.91 MiB -4.1% 🟢 79.3 ms 75.2 ms -5.3% (1.06× faster) 🟢 471.7 ms 462.9 ms -1.9% 3.88B 3.94B +1.7% 99.1 ms 97.5 ms -1.7% 848.62 KiB 846.23 KiB -0.3% 7.0 ms 7.1 ms +1.2% 373.36 MiB 363.29 MiB -2.7%
square-q100-b1 3.796 s 3.892 s +2.5% 9.57 GiB 9.61 GiB +0.4% 11.31 MiB 10.84 MiB -4.2% 🟢 78.7 ms 73.3 ms -6.9% (1.07× faster) 🟢 424.0 ms 410.4 ms -3.2% 🟢 3.38B 3.29B -2.7% 88.1 ms 79.7 ms -9.5% (1.10× faster) 🟢 782.06 KiB 779.67 KiB -0.3% 6.5 ms 6.2 ms -3.4% 🟢 252.83 MiB 246.45 MiB -2.5%

2 proofs · 0 with regressions · 2 with improvements (|Δ| > 3.0% on any metric).

Workflow logs

Bump multi-stark to 678f8e1c96b3d67eaddaa9aa8d03cd7695f97081, which
commits each circuit's quotient coefficient slices as one wide matrix
on the trace domain (opened once at ζ) instead of one matrix per slice
on the split sub-cosets.

Port the recursive verifier to the new proof shape:
- OOD: quotient(ζ) is now the power series Σᵢ ζ^(i·n)·cᵢ(ζ) over the
  slice values reconstructed from the single opened row, replacing the
  sub-domain Lagrange recombination (zps products over vanishing
  polynomials). Adds the check_shapes width assert (qd slices per row)
  and the one-matrix-per-circuit round-length check in verify().
- PCS: the quotient FRI batch is one matrix per circuit at the same
  per-circuit heights as the stages; the per-chunk open loop and the
  chunk-expanded height list are gone, and the verifying-key circuit
  list no longer threads through the PCS phase.
- Delete the dead zps machinery (g_pow, vanish_chunk, zps_prod,
  quotient_sum, log_qd_of, open_q_chunks, heights_quotient, repeat_g).

Regenerate crates/ixvm-codegen/src/aiur_multi_stark.rs (215 aiur fns).

Verified: multi-stark self-tests and the recursive-verifier end-to-end
suite pass (honest proof accepted, codegen/interpreter parity holds,
tampered proof and tampered claim rejected).
@gabriel-barrett
gabriel-barrett force-pushed the multi-stark-flat-quotient branch from c0b3b5a to 140d3b8 Compare July 25, 2026 00:04
@gabriel-barrett
gabriel-barrett enabled auto-merge (squash) July 25, 2026 00:06
@gabriel-barrett
gabriel-barrett merged commit 024c951 into main Jul 25, 2026
10 checks passed
@gabriel-barrett
gabriel-barrett deleted the multi-stark-flat-quotient branch July 25, 2026 00:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants