Skip to content

Author leanVM circuits in Clean, prove them, and export them to Rust - #595

Open
kevaundray wants to merge 86 commits into
leanEthereum:riscv-explorationfrom
kevaundray:kw/clean-circuits-adder-20261010
Open

kevaundray wants to merge 86 commits into
leanEthereum:riscv-explorationfrom
kevaundray:kw/clean-circuits-adder-20261010

Conversation

@kevaundray

@kevaundray kevaundray commented Oct 10, 2026 •

Copy link
Copy Markdown
Collaborator

This PR was created with Claude Code, prompted by @kevaundray.

Changes

  • Author the production GF(2) adder family in Clean: wrapping sums at 64 and 32 bits and the carry adder's exact 65 bit sum. Migrate every production adder caller and remove the handwritten duplicates.
  • Author the complete RV shift and load/store class circuits in Clean. Production Shift::circuit, Load::circuit and Store::circuit consume generated flock::clean artifacts. Preserve native optimized witnesses, ordered product slots, structural zeros, padding and proof formats. Ld and Sd use the exported wrapping adder.
  • Author the complete ALU, logic, signed and unsigned comparisons, branch and link selection circuit in Clean. Production Alu::circuit consumes flock::clean::alu64; its optimized native witness, private product ordering and directly committed jump products are preserved.
  • Author MUL/MULW, signed and unsigned high multiplication, division and remainder including word forms in Clean and export them to production. Preserve the native witnesses and slot layouts; remove the handwritten multiplier/divider gate builders and their unused helpers.
  • Author the five production clock configurations and EXT pointer/flag extras in Clean, export them into Clock and Ext::clock_circuit, and remove the handwritten builders. Prove their clock and address contracts for arbitrary satisfying witnesses without changing native witness kernels.
  • Author and prove the complete BLAKE2s compression circuit against RFC 7693 and export it to production Hash::circuit, retaining its optimized witness and product ordering. Recursion HASH rows use the same circuit.
  • Export recursion slot forms, identities and builder indices from Clean. Prove field arithmetic, row contracts, builder model contracts and the conditional copy bus argument. Check production builders and fixed copy links for eight output-tree configurations and seven claim-set/tier positions. Recursion remains partial, as detailed below.
  • Prove source linkage, arbitrary satisfying witness soundness and existential completeness for the exact Boolean artifacts. Pin Lean and Clean, check theorem axioms and deterministic regeneration, and consume checked in generated Rust without runtime Lean, network access or local checkout dependencies.
  • Pin the integer-channel multiplicity Clean fork and prove symbolic lookup balance, the state walk and ordered memory consistency. Connect exported clock satisfaction to the abstract machine theorem and check all eleven production table flush projections against the Lean model.
  • Merge current upstream PCS and verifier changes normally.

Boolean circuit proofs

The adder theorems prove the modular wrapping result or exact sum including carry. Shift soundness covers amount masking, both directions, word extension and arithmetic fill, under exactly the six legal flag words.

Flock.Load.source_eq and Flock.Store.source_eq link lowering of the actual Clean sources to their artifacts. Soundness specifies the bus word and loaded value or updated cell for arbitrary satisfying assignments. Legal load flags are 0, 1, 2, 4, 5, 6; legal store flags are 0, 1, 2. Store's contiguous replacement specification exposes effective address alignment. Memory.bus_aligned_iff connects that premise to the low three bits of the bus address. Layout checks preserve 253 load and 309 store products; well formedness and completeness extend every input assignment. Binding the supplied cell to a memory table key, instruction decoding and the global table/bus argument are not yet proved by these local theorems.

Flock.Alu.source_eq links the actual Clean ALU to its checked artifact. soundness proves raw Boolean semantics for arbitrary satisfying witnesses and arbitrary flag bits; soundness_reference proves ADD/SUB, word sign extension, logic, signed/unsigned comparisons, all branch polarities and JAL/JALR for the 17 explicit legal flag words. Layout checks preserve 551 products, including the final 64 committed jump products. Completeness extends every assignment to its 335 input bits. Decoding, preparation of dt and pc4, and global next-PC binding remain outside these local theorems.

BLAKE2s Compress.soundness and Export.soundness prove RFC 7693 compression for arbitrary satisfying witnesses and finalization words 0 or 0xFFFFFFFF. Compress.lowered proves exact source linkage; addition call theorems identify bound adder artifacts. The RFC Appendix B vector is checked in the kernel. Register program printing, small Rust word helpers and port binding remain trusted.

Multiplication and division

MulDiv.mul_eq, mulh_eq and div_eq identify circuit arithmetic with the independent RV64IM M extension specification, including zero divisors, signed overflow, rounding toward zero and word sign extension. The production carry save multiplier plan is checked by kernel reduction at 64 and 128 bits; its arbitrary satisfying assignments compute the modular product. MulDivExport.Mul, Mulh and Div source theorems identify the actual Clean sources with their artifacts, soundness covers arbitrary satisfying witnesses, and completeness extends every port assignment. Division proves the integer quotient/remainder check and architectural output when bad is clear; honest hints clear bad.

Production Mul::circuit, Mulh::circuit and Div::circuit consume generated flock::clean functions. The multiplier functions use checked in step tables interpreted by a small Rust replay; surrounding gates are emitted directly. Remaining trust includes Lean runtime emission, the Rust table interpreter and call/port binding, native optimized witnesses and protocol acceptance implying artifact satisfaction.

Clock and instruction tables

Flock.Clock.*.soundness proves clock bounds, live increment and failure marking, and access ordering for the exact exported rows. Source linkage, product layouts and completeness are checked for the register, load, store, hash and EXT slot lists. Clock::builder and Clock::circuit are now crate private and support exactly these five production lists, not arbitrary slot lists. Every production caller is migrated. Flock.ExtClock.soundness proves flag bits and wrapped pointer offsets, including BASE gated b addresses; its 479 product layout and source linkage are checked.

ClassTable.tables_correct_of_clock derives C1 through C3 from exported artifact satisfaction with explicit word-to-column bindings, concludes Machine.Correct, and proves each row reads its decoded entry at its own PC. The production layouts and ordered flush plans now come from the same Clean source, as described below. Native field/coordinate interpretation, concrete port packing, EXT's separately assumed Boolean BASE column and verifier bus correspondence remain trusted; this conditional clock theorem does not itself prove the decoder or instruction bindings.

EXT field identities

ExtensionProduct.source and source_holds link the actual Clean assertion to the exact three exported degree-two identities. soundness_iff proves arbitrary field witnesses compute the cubic extension product plus the scaled old destination; Boolean accumulation selects MUL/MAC, and zero upper operand limbs give the scalar forms. witness_exists extends every assignment to all ten inputs without an honest-witness premise. Production ClassTable::identities consumes generated tables/clean.rs; the handwritten identity builder is removed and optimized native arithmetic is unchanged.

Remaining trust includes the emitter/compiler, native BusForm interpretation, logical-to-table column binding and Rust field representation/arithmetic. Boolean accumulation and zero upper scalar limbs are explicit instruction premises, not silently inferred from honest witnesses.

Integer-multiplicity bus

Clean channels separate message fields from multiplicity types, preserving existing defaults and allowing ℤ counts. The Bus modules prove exact symbolic fingerprint balance, bytecode lookup correctness, the state walk and memory consistency, including RAM/advice composition under disjoint address ranges. machine_correct and machine_correct_of_product_check compose these for abstract machine rows; the clock/table theorem above discharges C1 through C3 and PC/read-address linkage under its explicit artifact and column premises. Schwartz-Zippel error, GKR/sumcheck, PCS binding and Boolean producer bits remain outside these integer bus theorems.

Instruction table layouts and bus plans

GenerateTables.lean exports all eleven ClassTable layouts, shared aliases and ordered state, decoded bytecode, register, RAM, hash-block and EXT access tuples to production tables/clean.rs. Every caller consumes the generated functions; the handwritten allocator, flush builders, obsolete helpers and copied fixtures are removed. Coord.eval_expr, sourceTuple_eq and Spec.source_eq prove the exact exported coordinate source evaluates to the integer-multiplicity Clean interactions used by the bus theorems, for arbitrary field rows.

The existing tracing-gated circuits CLI writes the actual native table dump. checkflushes still guards native ClassSpec class order and slot lists and Columns::column's clock-port projection; those bindings are not generated by this stage. Remaining trust includes the printer/compiler, native coordinate and field interpretation, decoder and filled word bindings, Boolean producer bits and verifier bus correspondence.

A release before-and-after smoke exercises every class, both hash forms and all four EXT forms, verifies serialized real proofs and rejects false public outputs. Proof bytes and table heights are byte-identical across this cutover, with no protocol version change.

Partial recursion circuit

Rec.modulus_irreducible, Rec.card_K and Rec.extModulus_irreducible establish GF(2^64) and its cubic extension; arithmetic linkage and nonzero inverse completeness are proved. Generated rec/clean.rs supplies production table forms and identities. Row contracts cover arithmetic, bits and packing, CAST views, RFC 7693 HASH ports, Merkle paths, tree roots and statement digests. The whole word duplex model follows the deployed spongefish session seed, first instance message, digest challenges and nonce/top-bit proof of work, with explicit bounded counter and tweak/tag separation results. It is not a formal equivalence proof for Rust's byte duplex or session derivation.

Model.Call.exec_good and Model.replay_sound prove the Lean builder's operation contracts under its explicit satisfying row and public value semantics. Rec.copy_argument proves the copy consequence under its balancing hypotheses. Tracing is compile time gated and absent from ordinary builds. checkrec checks native calls, finished rows, public row order and fixed copy links for eight leanXMSS output-tree configurations and all positions of one-tier and two-tier claim-set examples, including multi-bit kind selectors and the wrap. All fifteen pass with the existing Lean model and parser. This is finite checking, not general Rust builder equivalence.

Remaining trust includes Rust field representation and arithmetic, the printer, parser and executable class/link computation, chosen session constants, which verifier calls are made, the circuit-index binding to the tier's fixed polynomial, accepted proofs implying Model.Sat, table sumcheck, HASH Flock soundness and native public value columns. Other configurations retain transcription trust. No complete recursion circuit, union soundness or Fiat Shamir security claim is made.

Upstream #607 changes proof bytes, not only the API, with a length-prefixed NARG section followed by hints. After #614, #618, #626, #627 and #630, the current envelopes are LVMP 17 and LVMT 19, the tree session domain is leanvm-tree-16 and the union's is leanvm-claim-union-3. Claim-set begin-bit words, and at every node the absent bits' words, are absorbed before the fingerprint challenge; the verifier's message schedule and union soundness remain outside these proofs.

Upstream #611, #612, #615 and #613 are merged normally. The recursion model follows the explicit-tweak block builder call: Model.hashBlock_good proves compression under the stated finalization flag premise, Model.leafBlock_eq identifies the constant-tweak wrapper, and Model.dToHalves_good proves the CAST halves. The claim-set and canonical union machinery is not formally modeled here. The merged-tree release smoke verifies serialized leaves and 2 to 1 first/node aggregation and rejects altered outputs, reordered statements and foreign envelopes.

Upstream b094d006 is merged normally. The tracing API now selects circuits and fixed columns by positional index. Compared with dc57267d, all eight existing dumps change only session-derived seed constants in calls and public rows; rows, classes, public order and copy links are unchanged. The eleven-table dump is identical. A release smoke verifies serialized leaves, output-tree first/node aggregation, a single-tier union, a two-tier large node and its automatic wrap, and rejects false leaf outputs, reordered output statements, foreign envelopes and altered claims.

Upstream 392e1878 (#627, #609) is merged normally. Every claim-set node circuit now reads its places past its children as absent. No new builder operation is needed: all fifteen dumps pass checkrec with the existing Rec model and parser, so no Lean module or generated Rust changes. Compared with the b094d006 integration, the one-tier two- and three-child and two-tier small two-child dumps gain the absent bits, their packing and the empty set's reads, and with the large node absorb the bits' words in the union's challenge; first-level, wrap and output-tree dumps change only seed constants. The eleven-table dump is identical.

Upstream dfb7570a (#630) is merged normally. The in-circuit verifiers now read each proof's flock reductions before its bus and table sumcheck. Compared with the 392e1878 integration, all fifteen dumps keep their length and their count of each builder call, their calls reordered and their session-derived seed constants changed; all pass checkrec with the existing Rec model and parser, so no Lean module or generated Rust changes. The eleven-table dump is identical.

Upstream 37c1525f (#631, #619 to #624, #633, #634) is merged normally, on its new module layout and API names. The generated rec/clean.rs and tables/clean.rs import crate::bus (formerly crate::leaf), and the Lean emitters Rec.Emit and Bus.TableEmit print that path. The recursion builder is now one file, rec/circuit.rs, with one impl Builder and one impl Arith: the call recording and the generated slot layouts move there unchanged, the generic eq and expose are recorded under their wire kind's name (eq_e, eq_k, eq_d, expose_e), and mul_add, add, mul, square, mul_const_add, inv, zero and one are recorded through the Arith implementation. rec::hash keeps the port count and drops its named port constants, which only the replaced slot forms read; its port test reads the generated slot forms. The flock regressions keep the native witnesses through flock::test_util::Witness::by_instance.

Zero-knowledge leaves work with this PR: their proofs are the plain proof's circuits under one-time pads, so the generated class, clock and table circuits are the ones they prove, and cargo leanvm circuits now also dumps the leanXMSS-100 2 to 1 tree over zero-knowledge leaves (first and node), whose first level verifies the zero-knowledge proofs through the recorder. All seventeen dumps pass checkrec with the existing Rec model and parser, so the model needs no new builder operation. Against the dfb7570a integration, the first-level dumps (output trees and claim-set circuit 0) record the squares made through Arith as square where they were mul of a wire by itself, with identical rows, classes, public rows and links; every other dump and the eleven-table dump are identical. The zero-knowledge outer Spartan, the recorder and the hiding commitment are not modeled. No protocol version changes: LVMP 17, LVMT 19, leanvm-tree-16 and leanvm-claim-union-3 remain upstream's.

Upstream 06e5c9cd (#617) is merged normally. Its tracked benchmarks add two leanXMSS-400 signer-set trees, which cargo leanvm circuits now dumps too, every circuit named as its benchmark through #617's NodeCircuit: 2 to 1 first and node, and 4 to 1 first, -node2, -node3 and -node (four children). All twenty-three dumps pass checkrec with the existing Rec model and parser: the signer-set trees' circuits are single-tier claim-set circuits at the benchmarks' capacities, so the model needs no new builder operation and no Lean module or generated Rust changes. The other seventeen dumps and the eleven-table binding dump are identical to the bc9925f5 integration's.

Verification

The merged Lean build, transitive axiom audit, stock leanchecker replay of all 105 source modules, imports only root and compiled module guards, checkflushes and all three deterministic Rust regeneration checks pass. The two integer-multiplicity Clean modules were also checked at the pinned fork commit. CI derives the module list mechanically and replays it sequentially, trading wall time for bounded memory without a custom kernel checker.

An actual release ALU smoke executed overflow/carry boundaries, word sign extension, signed/unsigned comparisons, logic, every branch polarity, JAL and odd-target JALR, verified an encoded leaf proof and rejected a changed public output. The permanent Flock regression proves unchanged native witnesses for all 17 legal flags and rejects false value/jump outputs, a private product, an unused flag bit and padding. Earlier release memory smoke covered every width, encoded leaf and 2 to 1 recursive proofs, false statements and misaligned traps. All eight shipped recursion configurations passed checkrec, including fixed bus links.

A release clock/EXT smoke exercised all five generated clock configurations through register, load, store, hash and all four extension forms, verified serialized real VM proofs and rejected changed public outputs. Scoped Flock regressions reject false clock steps, private products, padding and altered EXT flag/address products. The complete local release workspace suite passed for the merged clock stage under the required resource cap.

A release multiply/divide smoke exercised all thirteen RV64IM forms at zero, sign, word and overflow boundaries, compared execution to independent host arithmetic, verified a serialized real leaf proof and rejected a changed public output. Scoped Flock regressions rejected mutated multiplication bits and an incorrect quotient whose bad verdict was cleared. The merged native, haswell, AVX2, AVX512, ARM library and tracing/system allocator CLI lint checks and rustdoc passed. Local full testall was skipped at 45 GiB available; the full CI workspace suite passed.

A release EXT field smoke exercised all four forms with zero and high-bit operands and nonzero old destinations, checked host field results, verified serialized real leaf proofs and rejected altered outputs. The existing field-identity regression rejects mutated result limbs, and an executable exporter smoke rejects unsupported columns, linear shapes and coefficients. Formatting, native/haswell/AVX2/AVX512 Clippy, ARM leanvm-library Clippy with circuit tracing, tracing/system allocator CLI Clippy, rustdoc and the complete local release workspace suite pass. The broader local ARM workspace lint could not configure cross-compiled jemalloc; native ARM CI supplies that workspace coverage.

The merged clock tree passes formatting, Rust 1.97 native, AVX2 and AVX512 Clippy, Rust 1.99 haswell Clippy, ARM library Clippy with tracing enabled, tracing enabled CLI Clippy, rustdoc and the complete local release workspace suite. The previous ALU/bus stage also passed the complete CI matrix.

The EXT field and upstream spongefish integration stages, including audit repair 02bb568d, pass the complete CI matrix: Clean export and per-module kernel replay, all eight recursion builder replays, full workspace tests, ARM and x86 SIMD checks, RISC-V guests, ACT4 and benchmarks. The large multiplier plan and its export build sequentially before the remaining build, trading additional build serialization for lower concurrent proof memory use. The merged local checks above, including the complete release workspace suite, also pass.

The table-source cutover passes the complete local release workspace suite, formatting, Rust 1.97 native/AVX2/AVX512 Clippy, Rust 1.99 haswell Clippy, ARM library Clippy with tracing, tracing/system allocator CLI Clippy and rustdoc. Its executable exporter smoke rejects unsupported indices, coefficient words, column references, truncating tuples and colliding access slots, and accepts the sixteen-coordinate boundary.

The subsequent upstream merge also passes the complete local release workspace suite, the same lint and rustdoc matrix, all eight recursion builder replays, the eleven-table binding check and all three regeneration diffs. Generators explicitly use Rust's workspace edition 2024 so temporary output formatting matches checked-in consumers.

The table-source and subsequent upstream integration head dc57267d pass the complete CI matrix, including Clean export and kernel replay, native recursion and table binding replay, full workspace tests, ARM/x86 SIMD, guest linting, ACT4 and benchmarks.

For the b094d006 integration, the Lean build, Audit, stock replay of the four recursion contract modules, all three regeneration diffs, fifteen checkrec configurations, checkflushes, formatting, native/haswell/AVX2/AVX512 Clippy, ARM library Clippy with tracing, tracing/system allocator CLI Clippy and rustdoc pass. Mobile CI is re-enabled.

For the 392e1878 integration, the Lean build, Audit, root import guard, all three regeneration diffs, fifteen checkrec configurations and checkflushes pass; no Lean module changed, so there is no new module to replay. Formatting, haswell Clippy on Rust 1.97 and 1.99, native Clippy on 1.99, AVX-512 and ARM64 Clippy, system allocator and tracing CLI Clippy, rustdoc and the complete local release workspace suite pass.

For the dfb7570a integration, the Lean build, Audit, root import guard, all three regeneration diffs, fifteen checkrec configurations on freshly generated dumps and checkflushes pass; no Lean module changed, so there is no new module to replay. Formatting, haswell Clippy on Rust 1.97 and 1.99, native Clippy on 1.99, AVX-512 and ARM64 Clippy, system allocator and tracing CLI Clippy, rustdoc, the complete local release workspace suite and a release smoke proving and verifying 2 to 1 and 4 to 1 output trees pass.

For the 37c1525f integration, the Lean build, Audit (only propext, Classical.choice and Quot.sound), the root import guard, stock leanchecker on the four changed modules (Bus.TableEmit, Bus.TableFlushes, Rec.Emit, Rec.Tables), all three regeneration diffs, seventeen checkrec configurations on freshly generated dumps and checkflushes pass. Formatting, haswell Clippy on Rust 1.97 and 1.99, native Clippy on 1.99, AVX-512 and ARM64 Clippy, system allocator and tracing CLI Clippy, rustdoc, the complete local release workspace suite and a release smoke proving and verifying 2 to 1 and 4 to 1 output trees and a 2 to 1 tree over zero-knowledge leaves pass.

For the 06e5c9cd integration, the Lean build, Audit (only propext, Classical.choice and Quot.sound), the root import guard, all three regeneration diffs, twenty-three checkrec configurations on freshly generated dumps and checkflushes pass; no Lean module changed, so there is no new module to replay. Formatting, haswell Clippy on Rust 1.97 and 1.99, native Clippy on 1.99, AVX-512 and ARM64 Clippy, system allocator and tracing CLI Clippy, rustdoc, the complete local release workspace suite and a release smoke proving and verifying 2 to 1 and 4 to 1 output trees, a 2 to 1 tree over zero-knowledge leaves, 2 to 1 and 4 to 1 signer-set trees and a 2 to 1 signer-set tree over zero-knowledge leaves pass.

At 11665e66, all 62 CI jobs pass, including Clean export and per-module kernel replay, all twenty-three recursion replays and table bindings, Test, Android and iOS.

Boundaries

Theorem dependencies are only propext, Classical.choice and Quot.sound, with no admissions or native decision axiom. Lean runtime generation, Rust compilation, native gate/coordinate interpretation, slot packing and optimized Rust witnesses remain trusted. Decoder legality and filled word bindings, EXT's explicit Boolean/scalar premises, Boolean producer bits and verifier protocol correspondence are not discharged by the local circuit or conditional bus theorems. No whole VM or Flock, PCS or Fiat Shamir cryptographic security claim is made. Exact contracts and regeneration commands are in verification/circuits/README.md.

@github-actions

github-actions Bot commented Oct 10, 2026 •

Copy link
Copy Markdown

Benchmarks: base against this PR, on one runner

11665e6 merged into its base, against the base 06e5c9c: each benchmark run in turns on one runner, base and PR 5 times each. A size is shown when it changed; a time or a peak memory when it moved the same way in every round and its median by at least 1% (the change is the median ratio, with the rounds' range).

Threads shows the named configuration; default means no thread count is encoded in the benchmark ID.

Other benchmarks

benchmark threads runner measure base this PR change
aggregate-signers-leanxmss-100-4to1-first 16 x86-64 Proving time 194.39 ms 187.41 ms -3.17% (-7.51% to -1.45%)
aggregate-signers-leanxmss-100-4to1-first 16 x86-64 Verifying time 3.65 ms 3.56 ms -2.49% (-3.82% to -2.04%)
Prover stages
benchmark threads runner base this PR change
aggregate-signers-leanxmss-100-2to1-first 16 x86-64 95.27 ms 96.31 ms +1.38% (-3.94% to +3.10%)
 ↳ build-circuit 17.90 ms 17.92 ms +0.63% (-0.90% to +4.23%)
 ↳ prove-recursion 60.72 ms 61.51 ms +2.10% (-5.93% to +7.33%)
 ↳ reduce-claims 7.01 ms 6.14 ms -13.11% (-38.06% to +11.49%)
 ↳ reduce-in-rows 2.22 ms 2.64 ms +21.56% (+11.75% to +26.17%)
 ↳ verify 7.26 ms 7.42 ms +2.59% (-2.58% to +3.99%)
aggregate-signers-leanxmss-100-2to1-node 16 x86-64 98.04 ms 100.60 ms +3.93% (-4.51% to +5.15%)
 ↳ build-circuit 18.62 ms 18.60 ms -0.14% (-3.31% to +1.28%)
 ↳ prove-recursion 62.12 ms 64.55 ms +3.03% (-4.47% to +6.38%)
 ↳ reduce-claims 8.88 ms 9.17 ms +3.50% (-12.89% to +13.74%)
 ↳ reduce-in-rows 2.45 ms 2.75 ms +12.48% (+6.74% to +14.93%)
aggregate-signers-leanxmss-100-4to1-first 16 x86-64 194.39 ms 187.41 ms -3.17% (-7.51% to -1.45%)
 ↳ build-circuit 42.87 ms 42.06 ms -3.24% (-16.06% to +1.19%)
 ↳ prove-recursion 121.24 ms 116.43 ms -2.63% (-12.16% to -1.80%)
 ↳ reduce-claims 8.54 ms 7.92 ms -1.94% (-32.56% to +2.24%)
 ↳ reduce-in-rows 5.25 ms 5.76 ms +11.60% (+6.53% to +20.30%)
 ↳ verify 14.24 ms 14.23 ms -0.08% (-2.48% to +3.52%)
aggregate-signers-leanxmss-100-4to1-node 16 x86-64 201.96 ms 208.50 ms -0.27% (-0.55% to +6.88%)
 ↳ build-circuit 48.36 ms 49.01 ms +0.54% (-1.79% to +2.66%)
 ↳ prove-recursion 123.04 ms 127.42 ms +0.16% (-2.53% to +7.87%)
 ↳ reduce-claims 13.15 ms 13.87 ms +3.83% (-1.74% to +24.42%)
 ↳ reduce-in-rows 5.53 ms 6.14 ms +10.97% (+10.05% to +14.14%)

leanSPHINCS

Prover stages
benchmark threads runner base this PR change
leansphincs-26 16 x86-64 126.40 ms 121.98 ms -2.50% (-5.31% to +5.26%)
 ↳ build-witness 7.94 ms 7.91 ms -1.33% (-2.75% to +4.71%)
 ↳ commit 13.53 ms 13.50 ms +0.32% (-8.47% to +6.07%)
 ↳ execute-program 14.27 ms 13.87 ms -2.09% (-4.93% to -0.46%)
 ↳ flock-reductions 32.45 ms 32.39 ms -0.51% (-6.88% to +8.30%)
 ↳ pcs-open 39.73 ms 38.50 ms -3.09% (-5.24% to +4.82%)
 ↳ prove-bus 10.81 ms 10.83 ms -0.83% (-5.16% to +6.19%)
 ↳ prove-constraints 4.75 ms 4.74 ms +2.19% (-5.16% to +6.98%)

leanXMSS

benchmark threads runner measure base this PR change
aggregate-leanxmss-100-4to1-node 8 x86-64 Proving time 228.47 ms 224.21 ms -2.24% (-2.61% to -0.95%)
aggregate-leanxmss-100-4to1-node 16 x86-64 Proving time 179.81 ms 172.98 ms -3.44% (-9.67% to -0.89%)
aggregate-leanxmss-100-2to1-first 16 arm64 Verifying time 2.81 ms 2.78 ms -1.53% (-2.51% to -0.10%)
aggregate-leanxmss-100-2to1-node 1 arm64 Verifying time 6.81 ms 6.90 ms +1.27% (+0.11% to +4.63%)
aggregate-leanxmss-100-2to1-node 4 arm64 Verifying time 3.87 ms 3.70 ms -1.18% (-6.76% to -0.37%)
aggregate-leanxmss-100-2to1-first 16 x86-64 Peak memory 869.98 MiB 880.98 MiB +1.03% (+0.19% to +1.62%)
Prover stages
benchmark threads runner base this PR change
aggregate-leanxmss-100-2to1-first 1 x86-64 585.30 ms 588.35 ms +0.22% (-0.39% to +1.27%)
 ↳ build-circuit 15.11 ms 15.50 ms -1.39% (-3.36% to +6.99%)
 ↳ prove-recursion 542.22 ms 545.07 ms +0.15% (-0.50% to +1.36%)
 ↳ reduce-claims 18.67 ms 18.97 ms +2.27% (-2.16% to +4.28%)
 ↳ reduce-in-rows 1.88 ms 2.26 ms +17.19% (+15.89% to +22.98%)
 ↳ verify 6.91 ms 7.06 ms -0.06% (-1.82% to +3.92%)
aggregate-leanxmss-100-2to1-first 4 x86-64 180.50 ms 180.06 ms -0.07% (-1.27% to +1.62%)
 ↳ build-circuit 14.10 ms 14.40 ms -2.01% (-4.56% to +4.13%)
 ↳ prove-recursion 149.97 ms 150.18 ms +0.09% (-0.75% to +0.82%)
 ↳ reduce-claims 6.78 ms 6.49 ms +2.72% (-20.12% to +5.65%)
 ↳ reduce-in-rows 1.89 ms 2.21 ms +16.55% (+10.41% to +26.73%)
 ↳ verify 6.56 ms 6.66 ms +1.27% (-14.62% to +3.61%)
aggregate-leanxmss-100-2to1-first 8 x86-64 113.61 ms 113.57 ms -0.01% (-2.67% to +18.18%)
 ↳ build-circuit 14.19 ms 14.12 ms -1.01% (-1.92% to +4.14%)
 ↳ prove-recursion 84.68 ms 84.68 ms -0.05% (-1.73% to +22.08%)
 ↳ reduce-claims 6.04 ms 5.70 ms -1.92% (-36.26% to +16.65%)
 ↳ reduce-in-rows 1.99 ms 2.29 ms +15.09% (+14.05% to +19.05%)
 ↳ verify 6.76 ms 6.73 ms -0.32% (-1.25% to +0.35%)
aggregate-leanxmss-100-2to1-first 16 x86-64 90.45 ms 84.74 ms -2.61% (-11.83% to +4.76%)
 ↳ build-circuit 13.76 ms 13.72 ms -0.62% (-1.59% to +2.28%)
 ↳ prove-recursion 61.65 ms 54.83 ms -6.60% (-16.59% to +4.01%)
 ↳ reduce-claims 6.34 ms 6.91 ms +5.79% (-12.98% to +22.78%)
 ↳ reduce-in-rows 1.88 ms 2.20 ms +17.66% (+14.21% to +22.14%)
 ↳ verify 7.08 ms 7.13 ms +0.29% (-1.34% to +2.96%)
aggregate-leanxmss-100-2to1-node 1 x86-64 620.93 ms 625.45 ms +0.73% (-1.71% to +1.81%)
 ↳ build-circuit 16.83 ms 16.39 ms -1.19% (-7.08% to +5.28%)
 ↳ prove-recursion 561.54 ms 565.65 ms +0.73% (-1.48% to +2.08%)
 ↳ reduce-claims 34.11 ms 34.08 ms -0.22% (-3.49% to +2.15%)
 ↳ reduce-in-rows 1.89 ms 2.22 ms +17.45% (+15.02% to +22.07%)
aggregate-leanxmss-100-2to1-node 4 x86-64 189.37 ms 191.15 ms +1.10% (-0.55% to +2.03%)
 ↳ build-circuit 15.27 ms 15.22 ms +1.43% (-2.38% to +4.99%)
 ↳ prove-recursion 155.05 ms 156.19 ms +0.68% (+0.14% to +1.44%)
 ↳ reduce-claims 11.83 ms 12.19 ms +3.45% (-10.77% to +9.31%)
 ↳ reduce-in-rows 1.86 ms 2.19 ms +16.82% (+12.97% to +20.64%)
aggregate-leanxmss-100-2to1-node 8 x86-64 119.01 ms 118.71 ms +0.16% (-7.06% to +8.06%)
 ↳ build-circuit 15.30 ms 14.74 ms -3.09% (-8.41% to -1.93%)
 ↳ prove-recursion 86.83 ms 87.06 ms +0.18% (-5.18% to +10.96%)
 ↳ reduce-claims 9.72 ms 9.25 ms +1.97% (-30.86% to +13.11%)
 ↳ reduce-in-rows 1.95 ms 2.21 ms +13.11% (+9.21% to +20.11%)
aggregate-leanxmss-100-2to1-node 16 x86-64 90.96 ms 89.35 ms -2.95% (-10.27% to +8.11%)
 ↳ build-circuit 14.99 ms 14.73 ms -1.45% (-5.71% to +0.68%)
 ↳ prove-recursion 60.47 ms 59.69 ms -3.77% (-8.98% to +4.76%)
 ↳ reduce-claims 8.58 ms 7.85 ms -9.43% (-32.30% to +45.32%)
 ↳ reduce-in-rows 1.92 ms 2.18 ms +13.40% (+8.60% to +20.13%)
aggregate-leanxmss-100-4to1-first 8 arm64 300.99 ms 301.04 ms +0.13% (-0.33% to +0.52%)
 ↳ build-circuit 21.09 ms 20.90 ms -1.05% (-1.53% to +0.52%)
 ↳ prove-recursion 260.08 ms 260.37 ms +0.22% (-0.42% to +0.53%)
 ↳ reduce-claims 5.31 ms 5.32 ms +0.97% (-2.78% to +7.31%)
 ↳ reduce-in-rows 2.85 ms 2.93 ms +1.31% (+0.72% to +3.13%)
 ↳ verify 11.54 ms 11.56 ms +0.31% (-0.68% to +0.79%)
aggregate-leanxmss-100-4to1-first 16 arm64 191.90 ms 191.62 ms -0.43% (-1.23% to +0.96%)
 ↳ build-circuit 20.82 ms 20.80 ms +0.13% (-0.77% to +1.06%)
 ↳ prove-recursion 151.29 ms 151.02 ms -0.41% (-1.70% to +0.90%)
 ↳ reduce-claims 4.46 ms 4.59 ms +2.22% (+0.64% to +7.15%)
 ↳ reduce-in-rows 2.78 ms 2.79 ms +0.24% (-0.73% to +1.61%)
 ↳ verify 12.28 ms 12.21 ms +0.28% (-1.50% to +1.10%)
aggregate-leanxmss-100-4to1-first 1 x86-64 1.13 s 1.14 s +0.34% (+0.25% to +1.08%)
 ↳ build-circuit 31.52 ms 31.79 ms -0.17% (-0.92% to +5.17%)
 ↳ prove-recursion 1.06 s 1.06 s +0.30% (+0.23% to +0.89%)
 ↳ reduce-claims 25.31 ms 25.29 ms +0.36% (-0.44% to +0.59%)
 ↳ reduce-in-rows 3.56 ms 4.21 ms +18.48% (+8.57% to +22.05%)
 ↳ verify 12.57 ms 12.63 ms +0.55% (+0.16% to +2.23%)
aggregate-leanxmss-100-4to1-first 4 x86-64 325.08 ms 329.61 ms +1.10% (-2.14% to +3.94%)
 ↳ build-circuit 29.30 ms 28.90 ms -1.24% (-6.96% to +4.44%)
 ↳ prove-recursion 271.24 ms 275.00 ms +1.83% (-2.11% to +4.30%)
 ↳ reduce-claims 8.47 ms 8.22 ms -2.95% (-16.75% to +19.06%)
 ↳ reduce-in-rows 3.66 ms 4.21 ms +16.53% (+7.56% to +19.34%)
 ↳ verify 12.37 ms 12.06 ms -2.02% (-10.47% to +6.92%)
aggregate-leanxmss-100-4to1-first 8 x86-64 216.35 ms 212.13 ms -1.54% (-8.42% to +1.33%)
 ↳ build-circuit 29.46 ms 29.44 ms +0.29% (-10.17% to +5.08%)
 ↳ prove-recursion 159.98 ms 156.82 ms -2.57% (-7.96% to +2.51%)
 ↳ reduce-claims 8.44 ms 6.97 ms -19.62% (-21.95% to +3.14%)
 ↳ reduce-in-rows 3.61 ms 4.30 ms +19.04% (+7.82% to +23.33%)
 ↳ verify 12.58 ms 12.43 ms -0.90% (-7.68% to +2.89%)
aggregate-leanxmss-100-4to1-first 16 x86-64 166.20 ms 162.81 ms -2.81% (-7.14% to +1.44%)
 ↳ build-circuit 31.53 ms 31.12 ms -0.79% (-2.45% to +1.34%)
 ↳ prove-recursion 109.10 ms 105.73 ms -4.56% (-10.13% to -0.05%)
 ↳ reduce-claims 7.01 ms 7.27 ms -4.44% (-14.21% to +22.34%)
 ↳ reduce-in-rows 3.83 ms 4.49 ms +16.41% (+11.80% to +19.47%)
 ↳ verify 13.66 ms 13.89 ms +1.78% (-1.22% to +2.30%)
aggregate-leanxmss-100-4to1-node 8 arm64 324.98 ms 325.61 ms +0.31% (-0.64% to +0.48%)
 ↳ build-circuit 24.90 ms 24.90 ms -0.20% (-0.77% to +1.03%)
 ↳ prove-recursion 274.80 ms 275.50 ms +0.36% (-0.59% to +0.61%)
 ↳ reduce-claims 12.14 ms 11.96 ms -1.50% (-2.58% to -0.40%)
 ↳ reduce-in-rows 3.06 ms 3.09 ms +0.32% (-1.56% to +1.24%)
aggregate-leanxmss-100-4to1-node 1 x86-64 1.24 s 1.24 s +0.27% (-0.72% to +0.69%)
 ↳ build-circuit 36.28 ms 36.74 ms -0.33% (-2.60% to +6.61%)
 ↳ prove-recursion 1.12 s 1.12 s -0.26% (-0.84% to +0.53%)
 ↳ reduce-claims 61.92 ms 63.66 ms +0.59% (-2.80% to +6.86%)
 ↳ reduce-in-rows 3.71 ms 4.33 ms +17.07% (+7.81% to +19.96%)
aggregate-leanxmss-100-4to1-node 4 x86-64 356.15 ms 366.39 ms +2.28% (-0.43% to +3.40%)
 ↳ build-circuit 33.76 ms 35.03 ms +6.31% (-0.89% to +9.25%)
 ↳ prove-recursion 288.96 ms 293.44 ms +1.32% (-1.91% to +3.30%)
 ↳ reduce-claims 18.69 ms 19.56 ms +3.99% (-0.30% to +18.38%)
 ↳ reduce-in-rows 3.81 ms 4.40 ms +16.90% (+11.54% to +20.94%)
aggregate-leanxmss-100-4to1-node 8 x86-64 228.47 ms 224.21 ms -2.24% (-2.61% to -0.95%)
 ↳ build-circuit 35.16 ms 34.12 ms -2.91% (-5.75% to +1.29%)
 ↳ prove-recursion 165.03 ms 162.23 ms -1.70% (-3.44% to -1.60%)
 ↳ reduce-claims 14.19 ms 13.18 ms -4.50% (-9.63% to -1.94%)
 ↳ reduce-in-rows 3.81 ms 4.39 ms +17.01% (+9.03% to +17.58%)
aggregate-leanxmss-100-4to1-node 16 x86-64 179.81 ms 172.98 ms -3.44% (-9.67% to -0.89%)
 ↳ build-circuit 36.54 ms 36.29 ms -0.62% (-1.51% to +0.86%)
 ↳ prove-recursion 115.60 ms 106.58 ms -6.07% (-15.45% to +0.21%)
 ↳ reduce-claims 12.97 ms 12.63 ms -1.62% (-15.88% to +13.34%)
 ↳ reduce-in-rows 4.07 ms 4.64 ms +14.60% (+11.20% to +15.73%)
leanxmss-100 8 arm64 265.05 ms 264.97 ms -0.03% (-0.31% to +0.84%)
 ↳ build-witness 7.48 ms 7.50 ms -0.17% (-1.39% to +0.87%)
 ↳ commit 38.80 ms 38.63 ms -0.04% (-1.07% to +0.93%)
 ↳ execute-program 10.30 ms 10.52 ms +1.51% (-0.96% to +4.87%)
 ↳ flock-reductions 93.36 ms 93.68 ms +0.28% (+0.01% to +0.69%)
 ↳ pcs-open 90.24 ms 89.54 ms -0.83% (-1.25% to +1.44%)
 ↳ prove-bus 20.70 ms 20.72 ms +0.10% (-0.97% to +0.72%)
 ↳ prove-constraints 4.22 ms 4.26 ms +1.05% (+0.26% to +1.85%)
leanxmss-100 16 arm64 162.39 ms 163.16 ms +0.40% (-0.07% to +7.62%)
 ↳ build-witness 4.80 ms 4.77 ms +0.17% (-2.06% to +1.60%)
 ↳ commit 20.48 ms 20.56 ms +0.39% (-0.63% to +0.78%)
 ↳ execute-program 10.16 ms 10.51 ms +3.18% (+1.74% to +6.98%)
 ↳ flock-reductions 56.39 ms 56.43 ms -0.06% (-0.58% to +19.91%)
 ↳ pcs-open 53.16 ms 53.12 ms +0.12% (-1.26% to +4.02%)
 ↳ prove-bus 13.30 ms 13.38 ms +0.59% (+0.02% to +6.44%)
 ↳ prove-constraints 3.82 ms 3.78 ms -1.08% (-2.85% to +3.77%)
Every result

BLAKE2s

benchmark threads runner CPU measure base this PR change
hash-50000 16 arm64 Neoverse-V2 Proving time 521.64 ms 521.71 ms -0.03% (-1.21% to +0.50%)
hash-50000 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 346.87 ms 355.42 ms +2.68% (-10.89% to +5.61%)
hash-50000 16 arm64 Neoverse-V2 Verifying time 3.21 ms 3.19 ms -0.17% (-1.86% to -0.09%)
hash-50000 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.33 ms 3.38 ms +0.73% (-0.56% to +2.86%)
blake2s-batch 16 arm64 Neoverse-V2 Time per operation 2.90 ns 2.90 ns +0.00% (-0.62% to +1.47%)
blake2s-batch 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Time per operation 1.09 ns 1.09 ns -6.60% (-15.74% to +0.09%)
hash-50000 16 arm64 Neoverse-V2 Proof size 322,698 B 322,698 B 0 B (+0.00%)
hash-50000 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 322,698 B 322,698 B 0 B (+0.00%)
hash-50000 16 arm64 Neoverse-V2 Peak memory 4978.87 MiB 4987.43 MiB +0.18% (-0.14% to +0.24%)
hash-50000 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 2022.95 MiB 2026.45 MiB +0.17% (-0.17% to +0.33%)
hash-50000 16 arm64 Neoverse-V2 Peak heap 4400.33 MiB 4400.37 MiB +0.00% (-0.00% to +0.00%)
hash-50000 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 1823.96 MiB 1824.05 MiB +0.00% (-0.00% to +0.01%)
hash-50000 16 arm64 Neoverse-V2 Allocations 16,708 16,665 -0.26% (-0.26% to -0.26%)
hash-50000 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 17,358 17,315 -0.25% (-0.27% to -0.23%)
Prover stages
benchmark threads runner CPU base this PR change
hash-50000 16 arm64 Neoverse-V2 521.64 ms 521.71 ms -0.03% (-1.21% to +0.50%)
 ↳ build-witness 20.00 ms 19.94 ms -0.14% (-0.84% to +1.00%)
 ↳ commit 82.02 ms 82.43 ms +0.31% (-0.63% to +2.26%)
 ↳ execute-program 24.02 ms 23.98 ms +1.27% (-1.47% to +2.12%)
 ↳ flock-reductions 169.98 ms 169.96 ms -0.00% (-0.73% to +0.22%)
 ↳ pcs-open 188.41 ms 187.80 ms -0.25% (-2.83% to +0.09%)
 ↳ prove-bus 29.98 ms 29.99 ms -0.11% (-0.21% to +0.10%)
 ↳ prove-constraints 7.02 ms 7.01 ms -0.39% (-0.92% to +1.13%)
hash-50000 16 x86-64 INTEL(R) XEON(R) GOLD 6548N 346.87 ms 355.42 ms +2.68% (-10.89% to +5.61%)
 ↳ build-witness 23.61 ms 24.05 ms +1.47% (-9.97% to +5.35%)
 ↳ commit 48.32 ms 48.17 ms -0.26% (-15.76% to +0.67%)
 ↳ execute-program 28.83 ms 29.61 ms +0.78% (-12.29% to +4.71%)
 ↳ flock-reductions 89.65 ms 95.23 ms +6.31% (-15.81% to +10.18%)
 ↳ pcs-open 122.35 ms 127.12 ms +3.69% (-7.94% to +4.56%)
 ↳ prove-bus 21.48 ms 22.24 ms +7.68% (-10.55% to +16.35%)
 ↳ prove-constraints 9.14 ms 9.70 ms +6.33% (-6.33% to +10.35%)

Fibonacci

benchmark threads runner CPU measure base this PR change
fibonacci-asm-2000000 16 arm64 Neoverse-V2 Proving time 816.39 ms 816.04 ms -0.29% (-0.56% to +0.88%)
fibonacci-asm-2000000 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 540.36 ms 544.91 ms -0.74% (-4.18% to +2.94%)
fibonacci-asm-2000000 16 arm64 Neoverse-V2 Verifying time 3.29 ms 3.28 ms -0.28% (-1.09% to +0.58%)
fibonacci-asm-2000000 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.52 ms 3.53 ms +1.35% (-1.45% to +1.97%)
fibonacci-asm-2000000 16 arm64 Neoverse-V2 Proof size 364,138 B 364,138 B 0 B (+0.00%)
fibonacci-asm-2000000 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 364,138 B 364,138 B 0 B (+0.00%)
fibonacci-asm-2000000 16 arm64 Neoverse-V2 Peak memory 7449.43 MiB 7455.01 MiB +0.07% (+0.01% to +0.14%)
fibonacci-asm-2000000 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 3254.42 MiB 3257.56 MiB +0.11% (+0.08% to +0.21%)
fibonacci-asm-2000000 16 arm64 Neoverse-V2 Peak heap 7049.83 MiB 7049.87 MiB +0.00% (-0.00% to +0.00%)
fibonacci-asm-2000000 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 2998.63 MiB 2998.70 MiB +0.00% (-0.01% to +0.01%)
fibonacci-asm-2000000 16 arm64 Neoverse-V2 Allocations 11,644 11,601 -0.37% (-0.38% to -0.37%)
fibonacci-asm-2000000 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 12,281 12,238 -0.35% (-0.35% to -0.34%)
Prover stages
benchmark threads runner CPU base this PR change
fibonacci-asm-2000000 16 arm64 Neoverse-V2 816.39 ms 816.04 ms -0.29% (-0.56% to +0.88%)
 ↳ build-witness 29.25 ms 29.37 ms +0.40% (-0.20% to +0.57%)
 ↳ commit 125.56 ms 125.48 ms -0.23% (-0.70% to +0.40%)
 ↳ execute-program 64.88 ms 65.00 ms +0.12% (-5.28% to +3.95%)
 ↳ flock-reductions 293.36 ms 294.30 ms +0.38% (-0.30% to +0.71%)
 ↳ pcs-open 233.89 ms 233.17 ms -0.32% (-1.39% to +0.88%)
 ↳ prove-bus 59.52 ms 59.53 ms +0.13% (-0.45% to +0.56%)
 ↳ prove-constraints 10.80 ms 10.87 ms +0.91% (-0.88% to +4.61%)
fibonacci-asm-2000000 16 x86-64 INTEL(R) XEON(R) GOLD 6548N 540.36 ms 544.91 ms -0.74% (-4.18% to +2.94%)
 ↳ build-witness 42.28 ms 41.83 ms -2.40% (-7.16% to +5.24%)
 ↳ commit 76.17 ms 70.97 ms -5.79% (-10.25% to +6.10%)
 ↳ execute-program 76.97 ms 77.89 ms +2.38% (-1.15% to +13.36%)
 ↳ flock-reductions 149.64 ms 147.03 ms -2.46% (-7.99% to +5.49%)
 ↳ pcs-open 142.51 ms 142.98 ms +0.36% (-5.26% to +5.80%)
 ↳ prove-bus 39.48 ms 40.04 ms -3.05% (-10.20% to +9.50%)
 ↳ prove-constraints 14.28 ms 14.38 ms -0.84% (-6.77% to +8.98%)

Field and transpose kernels

benchmark threads runner CPU measure base this PR change
f192-inv default arm64 Neoverse-V2 Time per operation 245.00 ns 245.06 ns +0.01% (-0.04% to +0.24%)
f192-inv default x86-64 INTEL(R) XEON(R) GOLD 6548N Time per operation 270.47 ns 270.93 ns +0.15% (-0.91% to +2.02%)
f192-mul-latency default arm64 Neoverse-V2 Time per operation 8.00 ns 7.99 ns -0.03% (-0.59% to +0.11%)
f192-mul-latency default x86-64 INTEL(R) XEON(R) GOLD 6548N Time per operation 7.73 ns 7.73 ns +0.30% (-0.91% to +1.83%)
f192-mul-throughput default arm64 Neoverse-V2 Time per operation 2.94 ns 2.94 ns +0.00% (-0.07% to +0.00%)
f192-mul-throughput default x86-64 INTEL(R) XEON(R) GOLD 6548N Time per operation 4.51 ns 4.54 ns +0.60% (-0.07% to +1.38%)
f192-mul4-latency default arm64 Neoverse-V2 Time per operation 13.12 ns 13.08 ns +0.94% (-4.11% to +4.47%)
f192-mul4-latency default x86-64 INTEL(R) XEON(R) GOLD 6548N Time per operation 10.30 ns 10.32 ns +0.38% (-1.07% to +1.15%)
f192-mul4-throughput default arm64 Neoverse-V2 Time per operation 10.76 ns 10.77 ns +0.07% (-0.08% to +0.27%)
f192-mul4-throughput default x86-64 INTEL(R) XEON(R) GOLD 6548N Time per operation 15.91 ns 16.00 ns +0.01% (-2.60% to +1.04%)
f192-square default arm64 Neoverse-V2 Time per operation 1.56 ns 1.56 ns +0.00% (-0.13% to +0.32%)
f192-square default x86-64 INTEL(R) XEON(R) GOLD 6548N Time per operation 3.41 ns 3.40 ns +0.32% (-1.31% to +4.27%)
f64-inv default arm64 Neoverse-V2 Time per operation 211.59 ns 211.61 ns +0.00% (-0.10% to +0.09%)
f64-inv default x86-64 INTEL(R) XEON(R) GOLD 6548N Time per operation 241.20 ns 242.74 ns +0.67% (-0.70% to +0.98%)
f64-mul default arm64 Neoverse-V2 Time per operation 0.56 ns 0.56 ns +0.00% (-0.36% to +0.36%)
f64-mul default x86-64 INTEL(R) XEON(R) GOLD 6548N Time per operation 0.88 ns 0.89 ns +0.34% (+0.11% to +1.47%)
f64-square default arm64 Neoverse-V2 Time per operation 0.55 ns 0.55 ns +0.00% (-0.18% to +0.00%)
f64-square default x86-64 INTEL(R) XEON(R) GOLD 6548N Time per operation 1.10 ns 1.11 ns +0.55% (-3.89% to +2.01%)
transpose-64bytes default arm64 Neoverse-V2 Time per operation 12.01 ns 12.00 ns -0.01% (-0.02% to +0.01%)
transpose-64bytes default x86-64 INTEL(R) XEON(R) GOLD 6548N Time per operation 0.87 ns 0.86 ns -0.12% (-2.61% to +1.96%)
transpose-64x64 default arm64 Neoverse-V2 Time per operation 96.60 ns 96.61 ns +0.03% (-0.15% to +1.10%)
transpose-64x64 default x86-64 INTEL(R) XEON(R) GOLD 6548N Time per operation 74.67 ns 74.78 ns +0.32% (-1.68% to +1.71%)

Flock

benchmark threads runner CPU measure base this PR change
flock-alu-batch-262144 16 arm64 Neoverse-V2 Proving time 51.06 ms 51.25 ms +0.26% (-8.32% to +1.52%)
flock-alu-batch-262144 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 31.08 ms 31.11 ms -1.79% (-7.35% to +6.09%)
flock-div-batch-262144 16 arm64 Neoverse-V2 Proving time 365.47 ms 365.72 ms -0.02% (-0.13% to +4.28%)
flock-div-batch-262144 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 177.56 ms 176.43 ms +0.13% (-5.56% to +6.31%)
flock-hash-batch-262144 16 arm64 Neoverse-V2 Proving time 759.38 ms 758.25 ms -0.03% (-0.26% to +0.69%)
flock-hash-batch-262144 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 381.70 ms 374.13 ms -2.17% (-6.96% to +3.54%)
flock-ld-batch-262144 16 arm64 Neoverse-V2 Proving time 15.67 ms 15.79 ms +1.86% (-2.94% to +12.62%)
flock-ld-batch-262144 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 9.69 ms 9.95 ms +5.24% (-2.28% to +19.96%)
flock-load-batch-262144 16 arm64 Neoverse-V2 Proving time 49.86 ms 49.75 ms -0.63% (-8.47% to +16.01%)
flock-load-batch-262144 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 29.94 ms 30.31 ms +1.56% (-2.38% to +9.11%)
flock-mul-batch-262144 16 arm64 Neoverse-V2 Proving time 186.74 ms 187.01 ms +0.41% (-0.09% to +0.98%)
flock-mul-batch-262144 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 97.08 ms 98.56 ms -0.07% (-4.13% to +6.68%)
flock-mulh-batch-262144 16 arm64 Neoverse-V2 Proving time 357.53 ms 357.79 ms -0.03% (-0.89% to +0.15%)
flock-mulh-batch-262144 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 183.25 ms 185.21 ms +1.08% (-5.91% to +6.93%)
flock-sd-batch-262144 16 arm64 Neoverse-V2 Proving time 15.98 ms 16.09 ms +0.60% (-0.42% to +9.75%)
flock-sd-batch-262144 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 9.68 ms 9.96 ms +2.21% (-3.18% to +13.63%)
flock-shift-batch-262144 16 arm64 Neoverse-V2 Proving time 49.87 ms 49.96 ms -0.01% (-1.15% to +1.24%)
flock-shift-batch-262144 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 28.41 ms 28.56 ms +0.07% (-7.92% to +13.15%)
flock-store-batch-262144 16 arm64 Neoverse-V2 Proving time 49.38 ms 49.57 ms +0.22% (-7.56% to +0.89%)
flock-store-batch-262144 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 28.72 ms 29.10 ms +4.08% (-5.99% to +11.02%)

Other benchmarks

benchmark threads runner CPU measure base this PR change
aggregate-signers-leanxmss-100-2to1-first 16 arm64 Neoverse-V2 Proving time 108.36 ms 108.08 ms -0.26% (-3.87% to -0.21%)
aggregate-signers-leanxmss-100-2to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 95.27 ms 96.31 ms +1.38% (-3.94% to +3.10%)
aggregate-signers-leanxmss-100-2to1-node 16 arm64 Neoverse-V2 Proving time 113.89 ms 113.11 ms -0.54% (-1.52% to +2.70%)
aggregate-signers-leanxmss-100-2to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 98.04 ms 100.60 ms +3.93% (-4.51% to +5.15%)
aggregate-signers-leanxmss-100-4to1-first 16 arm64 Neoverse-V2 Proving time 201.62 ms 202.63 ms +0.27% (-0.09% to +3.63%)
aggregate-signers-leanxmss-100-4to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 194.39 ms 187.41 ms -3.17% (-7.51% to -1.45%)
aggregate-signers-leanxmss-100-4to1-node 16 arm64 Neoverse-V2 Proving time 218.29 ms 218.93 ms +0.18% (-0.95% to +1.05%)
aggregate-signers-leanxmss-100-4to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 201.96 ms 208.50 ms -0.27% (-0.55% to +6.88%)
aggregate-signers-leanxmss-100-2to1-first 16 arm64 Neoverse-V2 Verifying time 2.80 ms 2.78 ms -0.86% (-1.35% to +1.34%)
aggregate-signers-leanxmss-100-2to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.31 ms 3.31 ms -0.46% (-3.62% to +1.72%)
aggregate-signers-leanxmss-100-2to1-node 16 arm64 Neoverse-V2 Verifying time 3.07 ms 3.06 ms -0.61% (-1.79% to +1.24%)
aggregate-signers-leanxmss-100-2to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.41 ms 3.41 ms +1.45% (-3.66% to +3.81%)
aggregate-signers-leanxmss-100-4to1-first 16 arm64 Neoverse-V2 Verifying time 2.98 ms 3.00 ms +0.23% (-2.04% to +1.08%)
aggregate-signers-leanxmss-100-4to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.65 ms 3.56 ms -2.49% (-3.82% to -2.04%)
aggregate-signers-leanxmss-100-4to1-node 16 arm64 Neoverse-V2 Verifying time 4.00 ms 3.95 ms -1.26% (-2.17% to +0.95%)
aggregate-signers-leanxmss-100-4to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 4.77 ms 4.72 ms -0.39% (-1.90% to +0.64%)
aggregate-signers-leanxmss-100-2to1-first 16 arm64 Neoverse-V2 Proof size 257,083 B 257,083 B 0 B (+0.00%)
aggregate-signers-leanxmss-100-2to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 257,083 B 257,083 B 0 B (+0.00%)
aggregate-signers-leanxmss-100-2to1-node 16 arm64 Neoverse-V2 Proof size 256,859 B 256,859 B 0 B (+0.00%)
aggregate-signers-leanxmss-100-2to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 256,859 B 256,859 B 0 B (+0.00%)
aggregate-signers-leanxmss-100-4to1-first 16 arm64 Neoverse-V2 Proof size 281,239 B 281,239 B 0 B (+0.00%)
aggregate-signers-leanxmss-100-4to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 281,239 B 281,239 B 0 B (+0.00%)
aggregate-signers-leanxmss-100-4to1-node 16 arm64 Neoverse-V2 Proof size 280,599 B 280,599 B 0 B (+0.00%)
aggregate-signers-leanxmss-100-4to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 280,599 B 280,599 B 0 B (+0.00%)
aggregate-signers-leanxmss-100-2to1-first 16 arm64 Neoverse-V2 Peak memory 1712.50 MiB 1719.19 MiB +0.44% (-0.67% to +0.87%)
aggregate-signers-leanxmss-100-2to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 875.66 MiB 878.17 MiB -0.16% (-0.73% to +1.50%)
aggregate-signers-leanxmss-100-2to1-node 16 arm64 Neoverse-V2 Peak memory 1734.24 MiB 1734.88 MiB +0.43% (-0.51% to +0.99%)
aggregate-signers-leanxmss-100-2to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 910.57 MiB 908.32 MiB +0.18% (-1.04% to +0.57%)
aggregate-signers-leanxmss-100-4to1-first 16 arm64 Neoverse-V2 Peak memory 2111.84 MiB 2109.96 MiB -0.09% (-0.43% to +0.60%)
aggregate-signers-leanxmss-100-4to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 1079.35 MiB 1082.42 MiB +0.41% (-0.57% to +1.07%)
aggregate-signers-leanxmss-100-4to1-node 16 arm64 Neoverse-V2 Peak memory 2125.98 MiB 2127.09 MiB +0.43% (-0.21% to +0.55%)
aggregate-signers-leanxmss-100-4to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 1114.23 MiB 1122.11 MiB +0.71% (-0.85% to +1.12%)
aggregate-signers-leanxmss-100-2to1-first 16 arm64 Neoverse-V2 Peak heap 603.51 MiB 603.56 MiB +0.01% (-0.02% to +0.01%)
aggregate-signers-leanxmss-100-2to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 266.01 MiB 266.00 MiB -0.00% (-0.17% to +0.11%)
aggregate-signers-leanxmss-100-2to1-node 16 arm64 Neoverse-V2 Peak heap 604.28 MiB 604.33 MiB +0.01% (-0.02% to +0.04%)
aggregate-signers-leanxmss-100-2to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 266.81 MiB 266.75 MiB -0.02% (-0.08% to +0.04%)
aggregate-signers-leanxmss-100-4to1-first 16 arm64 Neoverse-V2 Peak heap 1206.72 MiB 1206.77 MiB +0.00% (-0.00% to +0.03%)
aggregate-signers-leanxmss-100-4to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 531.69 MiB 531.61 MiB -0.01% (-0.02% to +0.03%)
aggregate-signers-leanxmss-100-4to1-node 16 arm64 Neoverse-V2 Peak heap 1208.66 MiB 1208.71 MiB -0.00% (-0.01% to +0.01%)
aggregate-signers-leanxmss-100-4to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 533.52 MiB 533.64 MiB +0.00% (-0.01% to +0.05%)
aggregate-signers-leanxmss-100-2to1-first 16 arm64 Neoverse-V2 Allocations 17,579 17,488 -0.52% (-0.54% to -0.42%)
aggregate-signers-leanxmss-100-2to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 17,700 17,605 -0.54% (-0.54% to -0.54%)
aggregate-signers-leanxmss-100-2to1-node 16 arm64 Neoverse-V2 Allocations 21,307 21,290 -0.08% (-0.17% to -0.08%)
aggregate-signers-leanxmss-100-2to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 21,416 21,399 -0.08% (-0.08% to -0.08%)
aggregate-signers-leanxmss-100-4to1-first 16 arm64 Neoverse-V2 Allocations 29,666 29,481 -0.62% (-0.62% to -0.62%)
aggregate-signers-leanxmss-100-4to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 29,827 29,642 -0.62% (-0.62% to -0.62%)
aggregate-signers-leanxmss-100-4to1-node 16 arm64 Neoverse-V2 Allocations 36,492 36,463 -0.08% (-0.11% to -0.08%)
aggregate-signers-leanxmss-100-4to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 36,653 36,624 -0.08% (-0.08% to -0.08%)
Prover stages
benchmark threads runner CPU base this PR change
aggregate-signers-leanxmss-100-2to1-first 16 arm64 Neoverse-V2 108.36 ms 108.08 ms -0.26% (-3.87% to -0.21%)
 ↳ build-circuit 12.26 ms 12.22 ms +0.21% (-2.08% to +1.34%)
 ↳ prove-recursion 84.17 ms 83.59 ms -0.44% (-4.32% to -0.03%)
 ↳ reduce-claims 3.95 ms 3.99 ms +0.59% (-14.51% to +5.62%)
 ↳ reduce-in-rows 1.65 ms 1.66 ms -0.33% (-4.07% to +1.45%)
 ↳ verify 6.27 ms 6.30 ms +0.47% (-1.52% to +1.36%)
aggregate-signers-leanxmss-100-2to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N 95.27 ms 96.31 ms +1.38% (-3.94% to +3.10%)
 ↳ build-circuit 17.90 ms 17.92 ms +0.63% (-0.90% to +4.23%)
 ↳ prove-recursion 60.72 ms 61.51 ms +2.10% (-5.93% to +7.33%)
 ↳ reduce-claims 7.01 ms 6.14 ms -13.11% (-38.06% to +11.49%)
 ↳ reduce-in-rows 2.22 ms 2.64 ms +21.56% (+11.75% to +26.17%)
 ↳ verify 7.26 ms 7.42 ms +2.59% (-2.58% to +3.99%)
aggregate-signers-leanxmss-100-2to1-node 16 arm64 Neoverse-V2 113.89 ms 113.11 ms -0.54% (-1.52% to +2.70%)
 ↳ build-circuit 13.51 ms 13.41 ms -0.65% (-1.43% to +0.25%)
 ↳ prove-recursion 87.30 ms 86.60 ms -0.96% (-1.84% to +3.25%)
 ↳ reduce-claims 6.52 ms 6.66 ms +1.60% (-5.62% to +4.71%)
 ↳ reduce-in-rows 1.77 ms 1.77 ms -1.02% (-2.37% to +0.83%)
aggregate-signers-leanxmss-100-2to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N 98.04 ms 100.60 ms +3.93% (-4.51% to +5.15%)
 ↳ build-circuit 18.62 ms 18.60 ms -0.14% (-3.31% to +1.28%)
 ↳ prove-recursion 62.12 ms 64.55 ms +3.03% (-4.47% to +6.38%)
 ↳ reduce-claims 8.88 ms 9.17 ms +3.50% (-12.89% to +13.74%)
 ↳ reduce-in-rows 2.45 ms 2.75 ms +12.48% (+6.74% to +14.93%)
aggregate-signers-leanxmss-100-4to1-first 16 arm64 Neoverse-V2 201.62 ms 202.63 ms +0.27% (-0.09% to +3.63%)
 ↳ build-circuit 26.11 ms 26.13 ms +1.00% (-2.34% to +2.02%)
 ↳ prove-recursion 155.33 ms 156.20 ms +0.30% (+0.07% to +4.30%)
 ↳ reduce-claims 4.59 ms 4.54 ms +0.13% (-0.92% to +3.67%)
 ↳ reduce-in-rows 3.48 ms 3.47 ms -0.11% (-0.89% to +3.63%)
 ↳ verify 12.31 ms 12.29 ms +1.00% (-1.30% to +2.19%)
aggregate-signers-leanxmss-100-4to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N 194.39 ms 187.41 ms -3.17% (-7.51% to -1.45%)
 ↳ build-circuit 42.87 ms 42.06 ms -3.24% (-16.06% to +1.19%)
 ↳ prove-recursion 121.24 ms 116.43 ms -2.63% (-12.16% to -1.80%)
 ↳ reduce-claims 8.54 ms 7.92 ms -1.94% (-32.56% to +2.24%)
 ↳ reduce-in-rows 5.25 ms 5.76 ms +11.60% (+6.53% to +20.30%)
 ↳ verify 14.24 ms 14.23 ms -0.08% (-2.48% to +3.52%)
aggregate-signers-leanxmss-100-4to1-node 16 arm64 Neoverse-V2 218.29 ms 218.93 ms +0.18% (-0.95% to +1.05%)
 ↳ build-circuit 30.03 ms 30.13 ms +0.34% (-1.74% to +2.14%)
 ↳ prove-recursion 164.68 ms 164.66 ms +0.06% (-0.81% to +1.04%)
 ↳ reduce-claims 9.89 ms 10.02 ms +2.92% (-1.35% to +3.91%)
 ↳ reduce-in-rows 3.67 ms 3.70 ms +0.68% (-3.23% to +2.60%)
aggregate-signers-leanxmss-100-4to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N 201.96 ms 208.50 ms -0.27% (-0.55% to +6.88%)
 ↳ build-circuit 48.36 ms 49.01 ms +0.54% (-1.79% to +2.66%)
 ↳ prove-recursion 123.04 ms 127.42 ms +0.16% (-2.53% to +7.87%)
 ↳ reduce-claims 13.15 ms 13.87 ms +3.83% (-1.74% to +24.42%)
 ↳ reduce-in-rows 5.53 ms 6.14 ms +10.97% (+10.05% to +14.14%)

PCS

benchmark threads runner CPU measure base this PR change
pcs-commit-22 16 arm64 Neoverse-V2 Proving time 7.29 ms 7.20 ms -0.57% (-14.95% to +7.47%)
pcs-commit-22 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 5.07 ms 4.55 ms -11.56% (-18.94% to +1.39%)
pcs-open-22 16 arm64 Neoverse-V2 Proving time 21.21 ms 20.86 ms -1.32% (-5.52% to +0.63%)
pcs-open-22 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 14.17 ms 13.96 ms -2.61% (-13.05% to +2.23%)
ntt-forward-22 16 arm64 Neoverse-V2 Time per operation 3.62 ms 3.65 ms +1.28% (-1.51% to +9.94%)
ntt-forward-22 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Time per operation 2.77 ms 2.77 ms -0.15% (-10.09% to +0.73%)

leanSPHINCS

benchmark threads runner CPU measure base this PR change
leansphincs-26 16 arm64 Neoverse-V2 Proving time 180.86 ms 181.29 ms +0.01% (-0.50% to +2.05%)
leansphincs-26 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 126.40 ms 121.98 ms -2.50% (-5.31% to +5.26%)
leansphincs-26 16 arm64 Neoverse-V2 Verifying time 3.34 ms 3.29 ms -2.43% (-3.13% to +2.13%)
leansphincs-26 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.38 ms 3.39 ms +0.15% (-1.75% to +2.25%)
leansphincs-26 16 arm64 Neoverse-V2 Proof size 316,466 B 316,466 B 0 B (+0.00%)
leansphincs-26 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 316,466 B 316,466 B 0 B (+0.00%)
leansphincs-26 16 arm64 Neoverse-V2 Peak memory 1733.85 MiB 1737.66 MiB +0.22% (-0.00% to +0.46%)
leansphincs-26 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 705.23 MiB 709.37 MiB +0.48% (+0.02% to +0.92%)
leansphincs-26 16 arm64 Neoverse-V2 Peak heap 1395.26 MiB 1395.22 MiB -0.00% (-0.02% to +0.01%)
leansphincs-26 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 587.86 MiB 587.85 MiB -0.01% (-0.01% to +0.00%)
leansphincs-26 16 arm64 Neoverse-V2 Allocations 25,211 25,168 -0.17% (-0.18% to -0.17%)
leansphincs-26 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 25,910 25,867 -0.17% (-0.17% to -0.17%)
Prover stages
benchmark threads runner CPU base this PR change
leansphincs-26 16 arm64 Neoverse-V2 180.86 ms 181.29 ms +0.01% (-0.50% to +2.05%)
 ↳ build-witness 5.68 ms 5.77 ms +1.61% (-1.81% to +5.33%)
 ↳ commit 23.75 ms 23.83 ms +0.14% (-0.61% to +1.22%)
 ↳ execute-program 11.87 ms 12.34 ms +1.16% (-5.32% to +9.06%)
 ↳ flock-reductions 62.14 ms 62.27 ms +0.22% (-0.57% to +0.68%)
 ↳ pcs-open 58.01 ms 57.87 ms +0.04% (-1.14% to +4.04%)
 ↳ prove-bus 15.01 ms 15.14 ms +0.46% (-0.44% to +1.17%)
 ↳ prove-constraints 4.26 ms 4.21 ms -1.83% (-3.29% to +0.43%)
leansphincs-26 16 x86-64 INTEL(R) XEON(R) GOLD 6548N 126.40 ms 121.98 ms -2.50% (-5.31% to +5.26%)
 ↳ build-witness 7.94 ms 7.91 ms -1.33% (-2.75% to +4.71%)
 ↳ commit 13.53 ms 13.50 ms +0.32% (-8.47% to +6.07%)
 ↳ execute-program 14.27 ms 13.87 ms -2.09% (-4.93% to -0.46%)
 ↳ flock-reductions 32.45 ms 32.39 ms -0.51% (-6.88% to +8.30%)
 ↳ pcs-open 39.73 ms 38.50 ms -3.09% (-5.24% to +4.82%)
 ↳ prove-bus 10.81 ms 10.83 ms -0.83% (-5.16% to +6.19%)
 ↳ prove-constraints 4.75 ms 4.74 ms +2.19% (-5.16% to +6.98%)

leanXMSS

benchmark threads runner CPU measure base this PR change
aggregate-leanxmss-100-2to1-first 1 arm64 Neoverse-V2 Proving time 956.20 ms 958.26 ms +0.18% (-0.10% to +0.71%)
aggregate-leanxmss-100-2to1-first 4 arm64 Neoverse-V2 Proving time 272.09 ms 270.67 ms +0.33% (-1.35% to +0.71%)
aggregate-leanxmss-100-2to1-first 8 arm64 Neoverse-V2 Proving time 157.89 ms 157.90 ms -0.08% (-0.84% to +0.73%)
aggregate-leanxmss-100-2to1-first 16 arm64 Neoverse-V2 Proving time 103.52 ms 102.92 ms -0.59% (-4.72% to +1.54%)
aggregate-leanxmss-100-2to1-first 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 585.30 ms 588.35 ms +0.22% (-0.39% to +1.27%)
aggregate-leanxmss-100-2to1-first 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 180.50 ms 180.06 ms -0.07% (-1.27% to +1.62%)
aggregate-leanxmss-100-2to1-first 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 113.61 ms 113.57 ms -0.01% (-2.67% to +18.18%)
aggregate-leanxmss-100-2to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 90.45 ms 84.74 ms -2.61% (-11.83% to +4.76%)
aggregate-leanxmss-100-2to1-node 1 arm64 Neoverse-V2 Proving time 1.02 s 1.02 s -0.05% (-0.10% to +0.16%)
aggregate-leanxmss-100-2to1-node 4 arm64 Neoverse-V2 Proving time 288.73 ms 287.45 ms -1.01% (-1.57% to +0.88%)
aggregate-leanxmss-100-2to1-node 8 arm64 Neoverse-V2 Proving time 166.53 ms 167.59 ms +0.18% (-0.35% to +0.98%)
aggregate-leanxmss-100-2to1-node 16 arm64 Neoverse-V2 Proving time 107.71 ms 107.50 ms -0.33% (-0.68% to +0.25%)
aggregate-leanxmss-100-2to1-node 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 620.93 ms 625.45 ms +0.73% (-1.71% to +1.81%)
aggregate-leanxmss-100-2to1-node 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 189.37 ms 191.15 ms +1.10% (-0.55% to +2.03%)
aggregate-leanxmss-100-2to1-node 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 119.01 ms 118.71 ms +0.16% (-7.06% to +8.06%)
aggregate-leanxmss-100-2to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 90.96 ms 89.35 ms -2.95% (-10.27% to +8.11%)
aggregate-leanxmss-100-4to1-first 1 arm64 Neoverse-V2 Proving time 1.88 s 1.88 s +0.17% (-0.13% to +0.33%)
aggregate-leanxmss-100-4to1-first 4 arm64 Neoverse-V2 Proving time 522.63 ms 524.89 ms +0.39% (+0.37% to +0.53%)
aggregate-leanxmss-100-4to1-first 8 arm64 Neoverse-V2 Proving time 300.99 ms 301.04 ms +0.13% (-0.33% to +0.52%)
aggregate-leanxmss-100-4to1-first 16 arm64 Neoverse-V2 Proving time 191.90 ms 191.62 ms -0.43% (-1.23% to +0.96%)
aggregate-leanxmss-100-4to1-first 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 1.13 s 1.14 s +0.34% (+0.25% to +1.08%)
aggregate-leanxmss-100-4to1-first 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 325.08 ms 329.61 ms +1.10% (-2.14% to +3.94%)
aggregate-leanxmss-100-4to1-first 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 216.35 ms 212.13 ms -1.54% (-8.42% to +1.33%)
aggregate-leanxmss-100-4to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 166.20 ms 162.81 ms -2.81% (-7.14% to +1.44%)
aggregate-leanxmss-100-4to1-node 1 arm64 Neoverse-V2 Proving time 2.05 s 2.05 s +0.23% (-0.07% to +0.37%)
aggregate-leanxmss-100-4to1-node 4 arm64 Neoverse-V2 Proving time 566.55 ms 569.26 ms +0.27% (-0.04% to +0.95%)
aggregate-leanxmss-100-4to1-node 8 arm64 Neoverse-V2 Proving time 324.98 ms 325.61 ms +0.31% (-0.64% to +0.48%)
aggregate-leanxmss-100-4to1-node 16 arm64 Neoverse-V2 Proving time 206.73 ms 207.36 ms +0.32% (-2.08% to +2.88%)
aggregate-leanxmss-100-4to1-node 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 1.24 s 1.24 s +0.27% (-0.72% to +0.69%)
aggregate-leanxmss-100-4to1-node 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 356.15 ms 366.39 ms +2.28% (-0.43% to +3.40%)
aggregate-leanxmss-100-4to1-node 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 228.47 ms 224.21 ms -2.24% (-2.61% to -0.95%)
aggregate-leanxmss-100-4to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 179.81 ms 172.98 ms -3.44% (-9.67% to -0.89%)
leanxmss-100 1 arm64 Neoverse-V2 Proving time 1.77 s 1.77 s +0.01% (-0.44% to +0.42%)
leanxmss-100 4 arm64 Neoverse-V2 Proving time 472.92 ms 472.26 ms -0.14% (-0.36% to +0.26%)
leanxmss-100 8 arm64 Neoverse-V2 Proving time 265.05 ms 264.97 ms -0.03% (-0.31% to +0.84%)
leanxmss-100 16 arm64 Neoverse-V2 Proving time 162.39 ms 163.16 ms +0.40% (-0.07% to +7.62%)
leanxmss-100 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 1.06 s 1.06 s -0.10% (-0.68% to +0.36%)
leanxmss-100 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 302.74 ms 304.82 ms +0.73% (+0.25% to +8.15%)
leanxmss-100 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 172.40 ms 171.92 ms -0.40% (-0.59% to -0.08%)
leanxmss-100 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 129.54 ms 122.05 ms -3.76% (-11.25% to +5.19%)
aggregate-leanxmss-100-2to1-first 1 arm64 Neoverse-V2 Verifying time 4.06 ms 4.05 ms -0.01% (-1.96% to +0.47%)
aggregate-leanxmss-100-2to1-first 4 arm64 Neoverse-V2 Verifying time 3.05 ms 3.00 ms -1.24% (-4.11% to +0.88%)
aggregate-leanxmss-100-2to1-first 8 arm64 Neoverse-V2 Verifying time 2.88 ms 2.84 ms -2.35% (-3.00% to +2.66%)
aggregate-leanxmss-100-2to1-first 16 arm64 Neoverse-V2 Verifying time 2.81 ms 2.78 ms -1.53% (-2.51% to -0.10%)
aggregate-leanxmss-100-2to1-first 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 4.32 ms 4.27 ms -0.54% (-3.29% to +7.99%)
aggregate-leanxmss-100-2to1-first 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 2.94 ms 3.02 ms +2.67% (-5.65% to +5.26%)
aggregate-leanxmss-100-2to1-first 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.02 ms 3.06 ms +1.24% (-0.97% to +2.55%)
aggregate-leanxmss-100-2to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.24 ms 3.15 ms -2.92% (-3.29% to +8.05%)
aggregate-leanxmss-100-2to1-node 1 arm64 Neoverse-V2 Verifying time 6.81 ms 6.90 ms +1.27% (+0.11% to +4.63%)
aggregate-leanxmss-100-2to1-node 4 arm64 Neoverse-V2 Verifying time 3.87 ms 3.70 ms -1.18% (-6.76% to -0.37%)
aggregate-leanxmss-100-2to1-node 8 arm64 Neoverse-V2 Verifying time 3.35 ms 3.33 ms +0.23% (-2.54% to +4.20%)
aggregate-leanxmss-100-2to1-node 16 arm64 Neoverse-V2 Verifying time 3.07 ms 3.07 ms -0.10% (-0.93% to +0.32%)
aggregate-leanxmss-100-2to1-node 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 7.48 ms 7.43 ms -1.28% (-2.61% to +0.72%)
aggregate-leanxmss-100-2to1-node 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.98 ms 4.00 ms -0.16% (-2.80% to +1.71%)
aggregate-leanxmss-100-2to1-node 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.47 ms 3.52 ms +1.98% (-0.55% to +4.42%)
aggregate-leanxmss-100-2to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.36 ms 3.40 ms +0.88% (-4.88% to +2.91%)
aggregate-leanxmss-100-4to1-first 1 arm64 Neoverse-V2 Verifying time 4.86 ms 4.84 ms -0.40% (-0.55% to +0.10%)
aggregate-leanxmss-100-4to1-first 4 arm64 Neoverse-V2 Verifying time 3.26 ms 3.27 ms +0.57% (-0.30% to +1.29%)
aggregate-leanxmss-100-4to1-first 8 arm64 Neoverse-V2 Verifying time 2.98 ms 2.97 ms -0.33% (-1.48% to -0.07%)
aggregate-leanxmss-100-4to1-first 16 arm64 Neoverse-V2 Verifying time 2.99 ms 2.96 ms -0.02% (-1.61% to +0.48%)
aggregate-leanxmss-100-4to1-first 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 4.27 ms 4.39 ms -0.21% (-3.15% to +8.36%)
aggregate-leanxmss-100-4to1-first 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.12 ms 3.17 ms +0.16% (-3.30% to +8.67%)
aggregate-leanxmss-100-4to1-first 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.11 ms 3.15 ms +0.64% (-4.68% to +2.28%)
aggregate-leanxmss-100-4to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.47 ms 3.42 ms -2.07% (-2.29% to +2.29%)
aggregate-leanxmss-100-4to1-node 1 arm64 Neoverse-V2 Verifying time 10.23 ms 10.15 ms -0.83% (-1.82% to -0.14%)
aggregate-leanxmss-100-4to1-node 4 arm64 Neoverse-V2 Verifying time 4.63 ms 4.67 ms +1.04% (-0.25% to +2.24%)
aggregate-leanxmss-100-4to1-node 8 arm64 Neoverse-V2 Verifying time 3.79 ms 3.79 ms +0.18% (-1.16% to +1.24%)
aggregate-leanxmss-100-4to1-node 16 arm64 Neoverse-V2 Verifying time 3.47 ms 3.47 ms +0.49% (-2.17% to +1.06%)
aggregate-leanxmss-100-4to1-node 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 11.08 ms 11.30 ms +2.03% (-1.75% to +5.61%)
aggregate-leanxmss-100-4to1-node 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 4.86 ms 4.86 ms +0.22% (-0.65% to +3.69%)
aggregate-leanxmss-100-4to1-node 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 4.10 ms 4.02 ms -1.26% (-3.74% to +3.72%)
aggregate-leanxmss-100-4to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.86 ms 3.88 ms -0.32% (-3.09% to +3.32%)
leanxmss-100 1 arm64 Neoverse-V2 Verifying time 3.10 ms 3.09 ms -0.44% (-3.41% to +0.29%)
leanxmss-100 4 arm64 Neoverse-V2 Verifying time 3.02 ms 3.02 ms -0.38% (-1.09% to +0.39%)
leanxmss-100 8 arm64 Neoverse-V2 Verifying time 3.13 ms 3.14 ms +0.91% (+0.00% to +2.27%)
leanxmss-100 16 arm64 Neoverse-V2 Verifying time 3.26 ms 3.25 ms -0.16% (-1.10% to +0.73%)
leanxmss-100 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.31 ms 3.36 ms +0.99% (-0.98% to +3.12%)
leanxmss-100 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.28 ms 3.30 ms +0.15% (-1.98% to +2.32%)
leanxmss-100 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.22 ms 3.21 ms -0.03% (-0.88% to +2.71%)
leanxmss-100 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.37 ms 3.40 ms +0.82% (-0.25% to +3.77%)
aggregate-leanxmss-100-2to1-first 1 arm64 Neoverse-V2 Proof size 256,731 B 256,731 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-first 4 arm64 Neoverse-V2 Proof size 256,731 B 256,731 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-first 8 arm64 Neoverse-V2 Proof size 256,731 B 256,731 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-first 16 arm64 Neoverse-V2 Proof size 256,731 B 256,731 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-first 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 256,731 B 256,731 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-first 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 256,731 B 256,731 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-first 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 256,731 B 256,731 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 256,731 B 256,731 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-node 1 arm64 Neoverse-V2 Proof size 256,379 B 256,379 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-node 4 arm64 Neoverse-V2 Proof size 256,379 B 256,379 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-node 8 arm64 Neoverse-V2 Proof size 256,379 B 256,379 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-node 16 arm64 Neoverse-V2 Proof size 256,379 B 256,379 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-node 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 256,379 B 256,379 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-node 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 256,379 B 256,379 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-node 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 256,379 B 256,379 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 256,379 B 256,379 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-first 1 arm64 Neoverse-V2 Proof size 280,703 B 280,703 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-first 4 arm64 Neoverse-V2 Proof size 280,703 B 280,703 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-first 8 arm64 Neoverse-V2 Proof size 280,703 B 280,703 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-first 16 arm64 Neoverse-V2 Proof size 280,703 B 280,703 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-first 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 280,703 B 280,703 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-first 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 280,703 B 280,703 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-first 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 280,703 B 280,703 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 280,703 B 280,703 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-node 1 arm64 Neoverse-V2 Proof size 280,863 B 280,863 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-node 4 arm64 Neoverse-V2 Proof size 280,863 B 280,863 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-node 8 arm64 Neoverse-V2 Proof size 280,863 B 280,863 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-node 16 arm64 Neoverse-V2 Proof size 280,863 B 280,863 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-node 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 280,863 B 280,863 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-node 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 280,863 B 280,863 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-node 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 280,863 B 280,863 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 280,863 B 280,863 B 0 B (+0.00%)
leanxmss-100 1 arm64 Neoverse-V2 Proof size 303,762 B 303,762 B 0 B (+0.00%)
leanxmss-100 4 arm64 Neoverse-V2 Proof size 303,762 B 303,762 B 0 B (+0.00%)
leanxmss-100 8 arm64 Neoverse-V2 Proof size 303,762 B 303,762 B 0 B (+0.00%)
leanxmss-100 16 arm64 Neoverse-V2 Proof size 303,762 B 303,762 B 0 B (+0.00%)
leanxmss-100 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 303,762 B 303,762 B 0 B (+0.00%)
leanxmss-100 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 303,762 B 303,762 B 0 B (+0.00%)
leanxmss-100 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 303,762 B 303,762 B 0 B (+0.00%)
leanxmss-100 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 303,762 B 303,762 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-first 1 arm64 Neoverse-V2 Peak memory 1585.26 MiB 1587.78 MiB +0.16% (+0.16% to +0.17%)
aggregate-leanxmss-100-2to1-first 4 arm64 Neoverse-V2 Peak memory 1603.68 MiB 1607.89 MiB +0.29% (+0.11% to +0.53%)
aggregate-leanxmss-100-2to1-first 8 arm64 Neoverse-V2 Peak memory 1633.43 MiB 1635.38 MiB +0.13% (-0.08% to +0.31%)
aggregate-leanxmss-100-2to1-first 16 arm64 Neoverse-V2 Peak memory 1712.89 MiB 1717.66 MiB +0.21% (+0.08% to +0.91%)
aggregate-leanxmss-100-2to1-first 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 775.38 MiB 778.51 MiB +0.40% (+0.15% to +0.69%)
aggregate-leanxmss-100-2to1-first 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 806.31 MiB 809.05 MiB +0.22% (-0.11% to +0.82%)
aggregate-leanxmss-100-2to1-first 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 832.15 MiB 834.72 MiB +0.28% (-0.19% to +0.89%)
aggregate-leanxmss-100-2to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 869.98 MiB 880.98 MiB +1.03% (+0.19% to +1.62%)
aggregate-leanxmss-100-2to1-node 1 arm64 Neoverse-V2 Peak memory 1585.41 MiB 1587.92 MiB +0.16% (+0.15% to +0.17%)
aggregate-leanxmss-100-2to1-node 4 arm64 Neoverse-V2 Peak memory 1604.93 MiB 1609.42 MiB +0.30% (+0.09% to +0.56%)
aggregate-leanxmss-100-2to1-node 8 arm64 Neoverse-V2 Peak memory 1635.23 MiB 1638.73 MiB +0.21% (+0.18% to +0.31%)
aggregate-leanxmss-100-2to1-node 16 arm64 Neoverse-V2 Peak memory 1734.16 MiB 1738.04 MiB -0.13% (-0.33% to +0.64%)
aggregate-leanxmss-100-2to1-node 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 775.38 MiB 778.51 MiB +0.40% (+0.15% to +0.69%)
aggregate-leanxmss-100-2to1-node 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 815.36 MiB 817.79 MiB +0.30% (-0.30% to +0.51%)
aggregate-leanxmss-100-2to1-node 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 851.18 MiB 850.20 MiB +0.24% (-0.58% to +0.87%)
aggregate-leanxmss-100-2to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 909.24 MiB 916.16 MiB +0.79% (-0.26% to +1.55%)
aggregate-leanxmss-100-4to1-first 1 arm64 Neoverse-V2 Peak memory 1779.32 MiB 1781.83 MiB +0.14% (+0.13% to +0.25%)
aggregate-leanxmss-100-4to1-first 4 arm64 Neoverse-V2 Peak memory 1799.91 MiB 1802.79 MiB +0.19% (+0.09% to +0.28%)
aggregate-leanxmss-100-4to1-first 8 arm64 Neoverse-V2 Peak memory 1833.71 MiB 1833.32 MiB +0.05% (-0.28% to +0.61%)
aggregate-leanxmss-100-4to1-first 16 arm64 Neoverse-V2 Peak memory 1921.94 MiB 1922.57 MiB +0.07% (-0.44% to +0.45%)
aggregate-leanxmss-100-4to1-first 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 961.38 MiB 964.52 MiB +0.33% (-0.09% to +0.53%)
aggregate-leanxmss-100-4to1-first 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 997.00 MiB 999.27 MiB +0.19% (-0.23% to +0.51%)
aggregate-leanxmss-100-4to1-first 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 1026.57 MiB 1027.91 MiB +0.13% (-0.21% to +0.76%)
aggregate-leanxmss-100-4to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 1072.88 MiB 1077.57 MiB +0.40% (+0.27% to +1.41%)
aggregate-leanxmss-100-4to1-node 1 arm64 Neoverse-V2 Peak memory 1779.95 MiB 1782.45 MiB +0.14% (+0.13% to +0.25%)
aggregate-leanxmss-100-4to1-node 4 arm64 Neoverse-V2 Peak memory 1801.29 MiB 1804.16 MiB +0.14% (+0.07% to +0.30%)
aggregate-leanxmss-100-4to1-node 8 arm64 Neoverse-V2 Peak memory 1837.89 MiB 1837.78 MiB +0.13% (-0.16% to +0.52%)
aggregate-leanxmss-100-4to1-node 16 arm64 Neoverse-V2 Peak memory 1935.80 MiB 1941.54 MiB +0.30% (+0.01% to +0.64%)
aggregate-leanxmss-100-4to1-node 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 987.63 MiB 990.52 MiB +0.29% (-0.92% to +0.50%)
aggregate-leanxmss-100-4to1-node 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 1012.16 MiB 1013.64 MiB +0.22% (-0.05% to +0.54%)
aggregate-leanxmss-100-4to1-node 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 1044.72 MiB 1048.86 MiB +0.46% (-0.10% to +0.64%)
aggregate-leanxmss-100-4to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 1114.64 MiB 1111.75 MiB +0.08% (-1.49% to +0.94%)
leanxmss-100 1 arm64 Neoverse-V2 Peak memory 1404.64 MiB 1407.42 MiB +0.20% (-0.10% to +0.33%)
leanxmss-100 4 arm64 Neoverse-V2 Peak memory 1428.81 MiB 1432.94 MiB +0.22% (+0.13% to +0.44%)
leanxmss-100 8 arm64 Neoverse-V2 Peak memory 1459.77 MiB 1465.53 MiB +0.44% (-0.19% to +0.69%)
leanxmss-100 16 arm64 Neoverse-V2 Peak memory 1528.53 MiB 1528.78 MiB +0.06% (-0.51% to +0.67%)
leanxmss-100 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 586.88 MiB 590.01 MiB +0.53% (-0.15% to +0.92%)
leanxmss-100 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 608.60 MiB 612.17 MiB +0.61% (+0.21% to +0.93%)
leanxmss-100 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 628.10 MiB 631.34 MiB +0.60% (+0.13% to +0.76%)
leanxmss-100 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 651.23 MiB 657.07 MiB +0.87% (-0.40% to +1.26%)
aggregate-leanxmss-100-2to1-first 1 arm64 Neoverse-V2 Peak heap 602.79 MiB 602.79 MiB +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-2to1-first 4 arm64 Neoverse-V2 Peak heap 602.80 MiB 602.79 MiB -0.01% (-0.01% to +0.00%)
aggregate-leanxmss-100-2to1-first 8 arm64 Neoverse-V2 Peak heap 602.75 MiB 602.79 MiB +0.01% (-0.01% to +0.02%)
aggregate-leanxmss-100-2to1-first 16 arm64 Neoverse-V2 Peak heap 602.89 MiB 602.85 MiB -0.01% (-0.03% to +0.06%)
aggregate-leanxmss-100-2to1-first 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 265.26 MiB 265.26 MiB +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-2to1-first 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 265.33 MiB 265.31 MiB -0.01% (-0.02% to +0.04%)
aggregate-leanxmss-100-2to1-first 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 265.35 MiB 265.34 MiB -0.00% (-0.03% to +0.07%)
aggregate-leanxmss-100-2to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 265.38 MiB 265.37 MiB +0.01% (-0.08% to +0.05%)
aggregate-leanxmss-100-2to1-node 1 arm64 Neoverse-V2 Peak heap 602.50 MiB 602.50 MiB +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-2to1-node 4 arm64 Neoverse-V2 Peak heap 602.55 MiB 602.55 MiB -0.00% (-0.02% to +0.01%)
aggregate-leanxmss-100-2to1-node 8 arm64 Neoverse-V2 Peak heap 602.51 MiB 602.52 MiB +0.01% (-0.01% to +0.01%)
aggregate-leanxmss-100-2to1-node 16 arm64 Neoverse-V2 Peak heap 602.59 MiB 602.62 MiB +0.01% (-0.05% to +0.02%)
aggregate-leanxmss-100-2to1-node 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 264.98 MiB 264.98 MiB +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-2to1-node 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 264.99 MiB 265.06 MiB +0.02% (-0.03% to +0.04%)
aggregate-leanxmss-100-2to1-node 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 265.01 MiB 265.07 MiB +0.00% (-0.02% to +0.05%)
aggregate-leanxmss-100-2to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 265.21 MiB 265.01 MiB -0.05% (-0.12% to -0.02%)
aggregate-leanxmss-100-4to1-first 1 arm64 Neoverse-V2 Peak heap 1205.49 MiB 1205.49 MiB +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-4to1-first 4 arm64 Neoverse-V2 Peak heap 1205.51 MiB 1205.50 MiB -0.00% (-0.00% to +0.01%)
aggregate-leanxmss-100-4to1-first 8 arm64 Neoverse-V2 Peak heap 1205.50 MiB 1205.56 MiB +0.00% (-0.00% to +0.01%)
aggregate-leanxmss-100-4to1-first 16 arm64 Neoverse-V2 Peak heap 1205.60 MiB 1205.61 MiB -0.00% (-0.01% to +0.01%)
aggregate-leanxmss-100-4to1-first 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 530.46 MiB 530.46 MiB +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-4to1-first 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 530.48 MiB 530.46 MiB +0.00% (-0.02% to +0.02%)
aggregate-leanxmss-100-4to1-first 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 530.41 MiB 530.49 MiB +0.01% (-0.01% to +0.04%)
aggregate-leanxmss-100-4to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 530.41 MiB 530.43 MiB +0.00% (-0.05% to +0.02%)
aggregate-leanxmss-100-4to1-node 1 arm64 Neoverse-V2 Peak heap 1205.01 MiB 1205.01 MiB +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-4to1-node 4 arm64 Neoverse-V2 Peak heap 1205.07 MiB 1205.06 MiB -0.00% (-0.01% to +0.00%)
aggregate-leanxmss-100-4to1-node 8 arm64 Neoverse-V2 Peak heap 1205.05 MiB 1205.00 MiB -0.00% (-0.01% to +0.01%)
aggregate-leanxmss-100-4to1-node 16 arm64 Neoverse-V2 Peak heap 1205.21 MiB 1205.19 MiB +0.00% (-0.02% to +0.02%)
aggregate-leanxmss-100-4to1-node 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 529.99 MiB 529.99 MiB +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-4to1-node 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 529.96 MiB 530.00 MiB +0.01% (-0.02% to +0.03%)
aggregate-leanxmss-100-4to1-node 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 529.98 MiB 529.97 MiB +0.00% (-0.02% to +0.02%)
aggregate-leanxmss-100-4to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 529.93 MiB 529.97 MiB +0.00% (-0.06% to +0.02%)
leanxmss-100 1 arm64 Neoverse-V2 Peak heap 1200.93 MiB 1200.92 MiB -0.00% (-0.00% to -0.00%)
leanxmss-100 4 arm64 Neoverse-V2 Peak heap 1201.01 MiB 1201.01 MiB -0.00% (-0.00% to +0.00%)
leanxmss-100 8 arm64 Neoverse-V2 Peak heap 1201.02 MiB 1201.00 MiB +0.00% (-0.01% to +0.00%)
leanxmss-100 16 arm64 Neoverse-V2 Peak heap 1201.25 MiB 1201.20 MiB -0.00% (-0.01% to +0.00%)
leanxmss-100 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 504.34 MiB 504.33 MiB -0.00% (-0.00% to -0.00%)
leanxmss-100 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 504.36 MiB 504.37 MiB +0.01% (-0.00% to +0.01%)
leanxmss-100 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 504.48 MiB 504.47 MiB +0.00% (-0.03% to +0.00%)
leanxmss-100 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 504.59 MiB 504.54 MiB -0.01% (-0.04% to +0.02%)
aggregate-leanxmss-100-2to1-first 1 arm64 Neoverse-V2 Allocations 16,785 16,690 -0.57% (-0.57% to -0.57%)
aggregate-leanxmss-100-2to1-first 4 arm64 Neoverse-V2 Allocations 16,911 16,816 -0.56% (-0.56% to -0.56%)
aggregate-leanxmss-100-2to1-first 8 arm64 Neoverse-V2 Allocations 17,055 16,960 -0.56% (-0.56% to -0.56%)
aggregate-leanxmss-100-2to1-first 16 arm64 Neoverse-V2 Allocations 17,342 17,248 -0.54% (-0.55% to -0.45%)
aggregate-leanxmss-100-2to1-first 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 16,887 16,792 -0.56% (-0.56% to -0.56%)
aggregate-leanxmss-100-2to1-first 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 17,016 16,921 -0.56% (-0.56% to -0.56%)
aggregate-leanxmss-100-2to1-first 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 17,164 17,069 -0.55% (-0.55% to -0.55%)
aggregate-leanxmss-100-2to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 17,460 17,365 -0.54% (-0.54% to -0.54%)
aggregate-leanxmss-100-2to1-node 1 arm64 Neoverse-V2 Allocations 20,496 20,479 -0.08% (-0.08% to -0.08%)
aggregate-leanxmss-100-2to1-node 4 arm64 Neoverse-V2 Allocations 20,622 20,605 -0.08% (-0.08% to -0.08%)
aggregate-leanxmss-100-2to1-node 8 arm64 Neoverse-V2 Allocations 20,766 20,749 -0.08% (-0.08% to -0.08%)
aggregate-leanxmss-100-2to1-node 16 arm64 Neoverse-V2 Allocations 21,054 21,037 -0.08% (-0.08% to -0.08%)
aggregate-leanxmss-100-2to1-node 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 20,590 20,573 -0.08% (-0.08% to -0.08%)
aggregate-leanxmss-100-2to1-node 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 20,719 20,702 -0.08% (-0.08% to -0.08%)
aggregate-leanxmss-100-2to1-node 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 20,867 20,850 -0.08% (-0.08% to -0.08%)
aggregate-leanxmss-100-2to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 21,163 21,146 -0.08% (-0.08% to -0.08%)
aggregate-leanxmss-100-4to1-first 1 arm64 Neoverse-V2 Allocations 28,729 28,544 -0.64% (-0.64% to -0.64%)
aggregate-leanxmss-100-4to1-first 4 arm64 Neoverse-V2 Allocations 28,867 28,682 -0.64% (-0.64% to -0.64%)
aggregate-leanxmss-100-4to1-first 8 arm64 Neoverse-V2 Allocations 29,051 28,866 -0.64% (-0.64% to -0.64%)
aggregate-leanxmss-100-4to1-first 16 arm64 Neoverse-V2 Allocations 29,371 29,186 -0.63% (-0.63% to -0.58%)
aggregate-leanxmss-100-4to1-first 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 28,875 28,690 -0.64% (-0.64% to -0.64%)
aggregate-leanxmss-100-4to1-first 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 29,016 28,831 -0.64% (-0.64% to -0.64%)
aggregate-leanxmss-100-4to1-first 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 29,204 29,019 -0.63% (-0.63% to -0.61%)
aggregate-leanxmss-100-4to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 29,532 29,347 -0.63% (-0.63% to -0.63%)
aggregate-leanxmss-100-4to1-node 1 arm64 Neoverse-V2 Allocations 35,514 35,485 -0.08% (-0.08% to -0.08%)
aggregate-leanxmss-100-4to1-node 4 arm64 Neoverse-V2 Allocations 35,652 35,623 -0.08% (-0.08% to -0.08%)
aggregate-leanxmss-100-4to1-node 8 arm64 Neoverse-V2 Allocations 35,836 35,807 -0.08% (-0.08% to -0.08%)
aggregate-leanxmss-100-4to1-node 16 arm64 Neoverse-V2 Allocations 36,156 36,127 -0.08% (-0.14% to -0.08%)
aggregate-leanxmss-100-4to1-node 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 35,660 35,631 -0.08% (-0.08% to -0.08%)
aggregate-leanxmss-100-4to1-node 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 35,801 35,772 -0.08% (-0.08% to -0.08%)
aggregate-leanxmss-100-4to1-node 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 35,989 35,960 -0.08% (-0.09% to -0.08%)
aggregate-leanxmss-100-4to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 36,317 36,288 -0.08% (-0.08% to -0.08%)
leanxmss-100 1 arm64 Neoverse-V2 Allocations 24,847 24,804 -0.17% (-0.17% to -0.17%)
leanxmss-100 4 arm64 Neoverse-V2 Allocations 25,065 25,022 -0.17% (-0.17% to -0.17%)
leanxmss-100 8 arm64 Neoverse-V2 Allocations 25,301 25,258 -0.17% (-0.17% to -0.17%)
leanxmss-100 16 arm64 Neoverse-V2 Allocations 25,773 25,730 -0.17% (-0.17% to -0.17%)
leanxmss-100 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 25,365 25,322 -0.17% (-0.17% to -0.17%)
leanxmss-100 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 25,620 25,577 -0.17% (-0.17% to -0.16%)
leanxmss-100 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 25,904 25,861 -0.17% (-0.17% to -0.17%)
leanxmss-100 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 26,472 26,429 -0.16% (-0.17% to -0.16%)
Prover stages
benchmark threads runner CPU base this PR change
aggregate-leanxmss-100-2to1-first 1 arm64 Neoverse-V2 956.20 ms 958.26 ms +0.18% (-0.10% to +0.71%)
 ↳ build-circuit 12.47 ms 12.53 ms +0.05% (-0.37% to +3.87%)
 ↳ prove-recursion 920.70 ms 922.64 ms +0.17% (-0.11% to +0.69%)
 ↳ reduce-claims 15.59 ms 15.69 ms +0.75% (-0.48% to +1.26%)
 ↳ reduce-in-rows 1.48 ms 1.49 ms -0.81% (-2.28% to +5.34%)
 ↳ verify 5.88 ms 5.90 ms +0.55% (-0.55% to +2.18%)
aggregate-leanxmss-100-2to1-first 4 arm64 Neoverse-V2 272.09 ms 270.67 ms +0.33% (-1.35% to +0.71%)
 ↳ build-circuit 11.24 ms 11.00 ms -1.78% (-2.65% to +1.39%)
 ↳ prove-recursion 247.86 ms 247.32 ms +0.21% (-1.26% to +0.83%)
 ↳ reduce-claims 5.39 ms 5.37 ms +2.18% (-1.38% to +2.49%)
 ↳ reduce-in-rows 1.52 ms 1.50 ms -0.15% (-2.57% to +2.62%)
 ↳ verify 5.98 ms 5.93 ms -0.07% (-2.32% to +1.74%)
aggregate-leanxmss-100-2to1-first 8 arm64 Neoverse-V2 157.89 ms 157.90 ms -0.08% (-0.84% to +0.73%)
 ↳ build-circuit 10.72 ms 10.76 ms -2.51% (-3.58% to +4.44%)
 ↳ prove-recursion 135.64 ms 135.46 ms -0.13% (-0.69% to +0.64%)
 ↳ reduce-claims 4.19 ms 4.21 ms -0.30% (-5.10% to +1.79%)
 ↳ reduce-in-rows 1.49 ms 1.50 ms -0.99% (-3.50% to +2.16%)
 ↳ verify 5.99 ms 5.99 ms +0.55% (-0.62% to +1.38%)
aggregate-leanxmss-100-2to1-first 16 arm64 Neoverse-V2 103.52 ms 102.92 ms -0.59% (-4.72% to +1.54%)
 ↳ build-circuit 10.42 ms 10.42 ms -0.26% (-0.82% to +0.24%)
 ↳ prove-recursion 81.29 ms 80.77 ms -0.60% (-6.31% to +1.32%)
 ↳ reduce-claims 3.84 ms 3.98 ms +6.60% (-14.89% to +11.21%)
 ↳ reduce-in-rows 1.47 ms 1.48 ms +0.62% (-3.44% to +5.69%)
 ↳ verify 6.29 ms 6.32 ms +0.12% (-0.29% to +1.04%)
aggregate-leanxmss-100-2to1-first 1 x86-64 INTEL(R) XEON(R) GOLD 6548N 585.30 ms 588.35 ms +0.22% (-0.39% to +1.27%)
 ↳ build-circuit 15.11 ms 15.50 ms -1.39% (-3.36% to +6.99%)
 ↳ prove-recursion 542.22 ms 545.07 ms +0.15% (-0.50% to +1.36%)
 ↳ reduce-claims 18.67 ms 18.97 ms +2.27% (-2.16% to +4.28%)
 ↳ reduce-in-rows 1.88 ms 2.26 ms +17.19% (+15.89% to +22.98%)
 ↳ verify 6.91 ms 7.06 ms -0.06% (-1.82% to +3.92%)
aggregate-leanxmss-100-2to1-first 4 x86-64 INTEL(R) XEON(R) GOLD 6548N 180.50 ms 180.06 ms -0.07% (-1.27% to +1.62%)
 ↳ build-circuit 14.10 ms 14.40 ms -2.01% (-4.56% to +4.13%)
 ↳ prove-recursion 149.97 ms 150.18 ms +0.09% (-0.75% to +0.82%)
 ↳ reduce-claims 6.78 ms 6.49 ms +2.72% (-20.12% to +5.65%)
 ↳ reduce-in-rows 1.89 ms 2.21 ms +16.55% (+10.41% to +26.73%)
 ↳ verify 6.56 ms 6.66 ms +1.27% (-14.62% to +3.61%)
aggregate-leanxmss-100-2to1-first 8 x86-64 INTEL(R) XEON(R) GOLD 6548N 113.61 ms 113.57 ms -0.01% (-2.67% to +18.18%)
 ↳ build-circuit 14.19 ms 14.12 ms -1.01% (-1.92% to +4.14%)
 ↳ prove-recursion 84.68 ms 84.68 ms -0.05% (-1.73% to +22.08%)
 ↳ reduce-claims 6.04 ms 5.70 ms -1.92% (-36.26% to +16.65%)
 ↳ reduce-in-rows 1.99 ms 2.29 ms +15.09% (+14.05% to +19.05%)
 ↳ verify 6.76 ms 6.73 ms -0.32% (-1.25% to +0.35%)
aggregate-leanxmss-100-2to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N 90.45 ms 84.74 ms -2.61% (-11.83% to +4.76%)
 ↳ build-circuit 13.76 ms 13.72 ms -0.62% (-1.59% to +2.28%)
 ↳ prove-recursion 61.65 ms 54.83 ms -6.60% (-16.59% to +4.01%)
 ↳ reduce-claims 6.34 ms 6.91 ms +5.79% (-12.98% to +22.78%)
 ↳ reduce-in-rows 1.88 ms 2.20 ms +17.66% (+14.21% to +22.14%)
 ↳ verify 7.08 ms 7.13 ms +0.29% (-1.34% to +2.96%)
aggregate-leanxmss-100-2to1-node 1 arm64 Neoverse-V2 1.02 s 1.02 s -0.05% (-0.10% to +0.16%)
 ↳ build-circuit 12.65 ms 12.34 ms -1.04% (-2.89% to +1.87%)
 ↳ prove-recursion 968.62 ms 968.61 ms -0.00% (-0.05% to +0.21%)
 ↳ reduce-claims 31.27 ms 31.23 ms -0.52% (-1.36% to +0.57%)
 ↳ reduce-in-rows 1.52 ms 1.52 ms -0.88% (-6.44% to +5.36%)
aggregate-leanxmss-100-2to1-node 4 arm64 Neoverse-V2 288.73 ms 287.45 ms -1.01% (-1.57% to +0.88%)
 ↳ build-circuit 12.05 ms 12.09 ms -0.65% (-2.53% to +5.58%)
 ↳ prove-recursion 259.14 ms 257.49 ms -1.08% (-1.50% to +0.72%)
 ↳ reduce-claims 10.61 ms 10.60 ms -0.35% (-1.89% to +2.04%)
 ↳ reduce-in-rows 1.56 ms 1.55 ms -1.96% (-3.16% to +5.81%)
aggregate-leanxmss-100-2to1-node 8 arm64 Neoverse-V2 166.53 ms 167.59 ms +0.18% (-0.35% to +0.98%)
 ↳ build-circuit 11.77 ms 12.11 ms +1.26% (-3.03% to +6.11%)
 ↳ prove-recursion 140.84 ms 141.12 ms -0.12% (-0.33% to +0.48%)
 ↳ reduce-claims 7.82 ms 7.94 ms +1.25% (-0.36% to +2.58%)
 ↳ reduce-in-rows 1.53 ms 1.55 ms +0.74% (-1.07% to +5.73%)
aggregate-leanxmss-100-2to1-node 16 arm64 Neoverse-V2 107.71 ms 107.50 ms -0.33% (-0.68% to +0.25%)
 ↳ build-circuit 11.41 ms 11.37 ms -0.44% (-1.17% to -0.03%)
 ↳ prove-recursion 83.40 ms 83.25 ms -0.28% (-0.90% to +0.35%)
 ↳ reduce-claims 6.57 ms 6.62 ms +1.55% (-3.78% to +1.86%)
 ↳ reduce-in-rows 1.51 ms 1.53 ms +0.82% (-0.98% to +2.57%)
aggregate-leanxmss-100-2to1-node 1 x86-64 INTEL(R) XEON(R) GOLD 6548N 620.93 ms 625.45 ms +0.73% (-1.71% to +1.81%)
 ↳ build-circuit 16.83 ms 16.39 ms -1.19% (-7.08% to +5.28%)
 ↳ prove-recursion 561.54 ms 565.65 ms +0.73% (-1.48% to +2.08%)
 ↳ reduce-claims 34.11 ms 34.08 ms -0.22% (-3.49% to +2.15%)
 ↳ reduce-in-rows 1.89 ms 2.22 ms +17.45% (+15.02% to +22.07%)
aggregate-leanxmss-100-2to1-node 4 x86-64 INTEL(R) XEON(R) GOLD 6548N 189.37 ms 191.15 ms +1.10% (-0.55% to +2.03%)
 ↳ build-circuit 15.27 ms 15.22 ms +1.43% (-2.38% to +4.99%)
 ↳ prove-recursion 155.05 ms 156.19 ms +0.68% (+0.14% to +1.44%)
 ↳ reduce-claims 11.83 ms 12.19 ms +3.45% (-10.77% to +9.31%)
 ↳ reduce-in-rows 1.86 ms 2.19 ms +16.82% (+12.97% to +20.64%)
aggregate-leanxmss-100-2to1-node 8 x86-64 INTEL(R) XEON(R) GOLD 6548N 119.01 ms 118.71 ms +0.16% (-7.06% to +8.06%)
 ↳ build-circuit 15.30 ms 14.74 ms -3.09% (-8.41% to -1.93%)
 ↳ prove-recursion 86.83 ms 87.06 ms +0.18% (-5.18% to +10.96%)
 ↳ reduce-claims 9.72 ms 9.25 ms +1.97% (-30.86% to +13.11%)
 ↳ reduce-in-rows 1.95 ms 2.21 ms +13.11% (+9.21% to +20.11%)
aggregate-leanxmss-100-2to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N 90.96 ms 89.35 ms -2.95% (-10.27% to +8.11%)
 ↳ build-circuit 14.99 ms 14.73 ms -1.45% (-5.71% to +0.68%)
 ↳ prove-recursion 60.47 ms 59.69 ms -3.77% (-8.98% to +4.76%)
 ↳ reduce-claims 8.58 ms 7.85 ms -9.43% (-32.30% to +45.32%)
 ↳ reduce-in-rows 1.92 ms 2.18 ms +13.40% (+8.60% to +20.13%)
aggregate-leanxmss-100-4to1-first 1 arm64 Neoverse-V2 1.88 s 1.88 s +0.17% (-0.13% to +0.33%)
 ↳ build-circuit 25.19 ms 25.35 ms +0.69% (-0.77% to +1.19%)
 ↳ prove-recursion 1.82 s 1.82 s +0.17% (-0.14% to +0.31%)
 ↳ reduce-claims 20.96 ms 21.11 ms +0.60% (-0.69% to +1.23%)
 ↳ reduce-in-rows 2.77 ms 2.75 ms -0.59% (-1.50% to +0.49%)
 ↳ verify 11.49 ms 11.47 ms -0.18% (-0.45% to +0.19%)
aggregate-leanxmss-100-4to1-first 4 arm64 Neoverse-V2 522.63 ms 524.89 ms +0.39% (+0.37% to +0.53%)
 ↳ build-circuit 22.24 ms 21.84 ms -1.93% (-2.73% to +0.48%)
 ↳ prove-recursion 478.61 ms 481.62 ms +0.60% (+0.38% to +0.71%)
 ↳ reduce-claims 7.03 ms 7.07 ms -1.15% (-1.84% to +2.82%)
 ↳ reduce-in-rows 2.90 ms 2.91 ms +0.26% (-1.05% to +3.05%)
 ↳ verify 11.53 ms 11.42 ms -0.88% (-1.75% to +1.00%)
aggregate-leanxmss-100-4to1-first 8 arm64 Neoverse-V2 300.99 ms 301.04 ms +0.13% (-0.33% to +0.52%)
 ↳ build-circuit 21.09 ms 20.90 ms -1.05% (-1.53% to +0.52%)
 ↳ prove-recursion 260.08 ms 260.37 ms +0.22% (-0.42% to +0.53%)
 ↳ reduce-claims 5.31 ms 5.32 ms +0.97% (-2.78% to +7.31%)
 ↳ reduce-in-rows 2.85 ms 2.93 ms +1.31% (+0.72% to +3.13%)
 ↳ verify 11.54 ms 11.56 ms +0.31% (-0.68% to +0.79%)
aggregate-leanxmss-100-4to1-first 16 arm64 Neoverse-V2 191.90 ms 191.62 ms -0.43% (-1.23% to +0.96%)
 ↳ build-circuit 20.82 ms 20.80 ms +0.13% (-0.77% to +1.06%)
 ↳ prove-recursion 151.29 ms 151.02 ms -0.41% (-1.70% to +0.90%)
 ↳ reduce-claims 4.46 ms 4.59 ms +2.22% (+0.64% to +7.15%)
 ↳ reduce-in-rows 2.78 ms 2.79 ms +0.24% (-0.73% to +1.61%)
 ↳ verify 12.28 ms 12.21 ms +0.28% (-1.50% to +1.10%)
aggregate-leanxmss-100-4to1-first 1 x86-64 INTEL(R) XEON(R) GOLD 6548N 1.13 s 1.14 s +0.34% (+0.25% to +1.08%)
 ↳ build-circuit 31.52 ms 31.79 ms -0.17% (-0.92% to +5.17%)
 ↳ prove-recursion 1.06 s 1.06 s +0.30% (+0.23% to +0.89%)
 ↳ reduce-claims 25.31 ms 25.29 ms +0.36% (-0.44% to +0.59%)
 ↳ reduce-in-rows 3.56 ms 4.21 ms +18.48% (+8.57% to +22.05%)
 ↳ verify 12.57 ms 12.63 ms +0.55% (+0.16% to +2.23%)
aggregate-leanxmss-100-4to1-first 4 x86-64 INTEL(R) XEON(R) GOLD 6548N 325.08 ms 329.61 ms +1.10% (-2.14% to +3.94%)
 ↳ build-circuit 29.30 ms 28.90 ms -1.24% (-6.96% to +4.44%)
 ↳ prove-recursion 271.24 ms 275.00 ms +1.83% (-2.11% to +4.30%)
 ↳ reduce-claims 8.47 ms 8.22 ms -2.95% (-16.75% to +19.06%)
 ↳ reduce-in-rows 3.66 ms 4.21 ms +16.53% (+7.56% to +19.34%)
 ↳ verify 12.37 ms 12.06 ms -2.02% (-10.47% to +6.92%)
aggregate-leanxmss-100-4to1-first 8 x86-64 INTEL(R) XEON(R) GOLD 6548N 216.35 ms 212.13 ms -1.54% (-8.42% to +1.33%)
 ↳ build-circuit 29.46 ms 29.44 ms +0.29% (-10.17% to +5.08%)
 ↳ prove-recursion 159.98 ms 156.82 ms -2.57% (-7.96% to +2.51%)
 ↳ reduce-claims 8.44 ms 6.97 ms -19.62% (-21.95% to +3.14%)
 ↳ reduce-in-rows 3.61 ms 4.30 ms +19.04% (+7.82% to +23.33%)
 ↳ verify 12.58 ms 12.43 ms -0.90% (-7.68% to +2.89%)
aggregate-leanxmss-100-4to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N 166.20 ms 162.81 ms -2.81% (-7.14% to +1.44%)
 ↳ build-circuit 31.53 ms 31.12 ms -0.79% (-2.45% to +1.34%)
 ↳ prove-recursion 109.10 ms 105.73 ms -4.56% (-10.13% to -0.05%)
 ↳ reduce-claims 7.01 ms 7.27 ms -4.44% (-14.21% to +22.34%)
 ↳ reduce-in-rows 3.83 ms 4.49 ms +16.41% (+11.80% to +19.47%)
 ↳ verify 13.66 ms 13.89 ms +1.78% (-1.22% to +2.30%)
aggregate-leanxmss-100-4to1-node 1 arm64 Neoverse-V2 2.05 s 2.05 s +0.23% (-0.07% to +0.37%)
 ↳ build-circuit 29.44 ms 29.55 ms +0.23% (-0.68% to +1.23%)
 ↳ prove-recursion 1.95 s 1.95 s +0.26% (-0.06% to +0.39%)
 ↳ reduce-claims 56.30 ms 56.17 ms -0.23% (-0.79% to +0.81%)
 ↳ reduce-in-rows 3.02 ms 2.96 ms -1.44% (-3.34% to +0.83%)
aggregate-leanxmss-100-4to1-node 4 arm64 Neoverse-V2 566.55 ms 569.26 ms +0.27% (-0.04% to +0.95%)
 ↳ build-circuit 26.20 ms 26.38 ms +0.09% (-0.29% to +1.91%)
 ↳ prove-recursion 508.71 ms 511.42 ms +0.35% (+0.05% to +0.94%)
 ↳ reduce-claims 17.74 ms 17.65 ms -0.43% (-1.77% to +1.07%)
 ↳ reduce-in-rows 3.03 ms 3.06 ms +0.71% (-1.18% to +3.27%)
aggregate-leanxmss-100-4to1-node 8 arm64 Neoverse-V2 324.98 ms 325.61 ms +0.31% (-0.64% to +0.48%)
 ↳ build-circuit 24.90 ms 24.90 ms -0.20% (-0.77% to +1.03%)
 ↳ prove-recursion 274.80 ms 275.50 ms +0.36% (-0.59% to +0.61%)
 ↳ reduce-claims 12.14 ms 11.96 ms -1.50% (-2.58% to -0.40%)
 ↳ reduce-in-rows 3.06 ms 3.09 ms +0.32% (-1.56% to +1.24%)
aggregate-leanxmss-100-4to1-node 16 arm64 Neoverse-V2 206.73 ms 207.36 ms +0.32% (-2.08% to +2.88%)
 ↳ build-circuit 24.85 ms 24.86 ms -0.34% (-0.98% to +1.56%)
 ↳ prove-recursion 159.44 ms 160.23 ms +0.27% (-2.64% to +3.54%)
 ↳ reduce-claims 9.55 ms 9.41 ms -1.66% (-2.75% to +5.87%)
 ↳ reduce-in-rows 2.97 ms 2.97 ms +0.06% (-1.54% to +0.75%)
aggregate-leanxmss-100-4to1-node 1 x86-64 INTEL(R) XEON(R) GOLD 6548N 1.24 s 1.24 s +0.27% (-0.72% to +0.69%)
 ↳ build-circuit 36.28 ms 36.74 ms -0.33% (-2.60% to +6.61%)
 ↳ prove-recursion 1.12 s 1.12 s -0.26% (-0.84% to +0.53%)
 ↳ reduce-claims 61.92 ms 63.66 ms +0.59% (-2.80% to +6.86%)
 ↳ reduce-in-rows 3.71 ms 4.33 ms +17.07% (+7.81% to +19.96%)
aggregate-leanxmss-100-4to1-node 4 x86-64 INTEL(R) XEON(R) GOLD 6548N 356.15 ms 366.39 ms +2.28% (-0.43% to +3.40%)
 ↳ build-circuit 33.76 ms 35.03 ms +6.31% (-0.89% to +9.25%)
 ↳ prove-recursion 288.96 ms 293.44 ms +1.32% (-1.91% to +3.30%)
 ↳ reduce-claims 18.69 ms 19.56 ms +3.99% (-0.30% to +18.38%)
 ↳ reduce-in-rows 3.81 ms 4.40 ms +16.90% (+11.54% to +20.94%)
aggregate-leanxmss-100-4to1-node 8 x86-64 INTEL(R) XEON(R) GOLD 6548N 228.47 ms 224.21 ms -2.24% (-2.61% to -0.95%)
 ↳ build-circuit 35.16 ms 34.12 ms -2.91% (-5.75% to +1.29%)
 ↳ prove-recursion 165.03 ms 162.23 ms -1.70% (-3.44% to -1.60%)
 ↳ reduce-claims 14.19 ms 13.18 ms -4.50% (-9.63% to -1.94%)
 ↳ reduce-in-rows 3.81 ms 4.39 ms +17.01% (+9.03% to +17.58%)
aggregate-leanxmss-100-4to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N 179.81 ms 172.98 ms -3.44% (-9.67% to -0.89%)
 ↳ build-circuit 36.54 ms 36.29 ms -0.62% (-1.51% to +0.86%)
 ↳ prove-recursion 115.60 ms 106.58 ms -6.07% (-15.45% to +0.21%)
 ↳ reduce-claims 12.97 ms 12.63 ms -1.62% (-15.88% to +13.34%)
 ↳ reduce-in-rows 4.07 ms 4.64 ms +14.60% (+11.20% to +15.73%)
leanxmss-100 1 arm64 Neoverse-V2 1.77 s 1.77 s +0.01% (-0.44% to +0.42%)
 ↳ build-witness 46.95 ms 46.34 ms -0.68% (-4.12% to +1.28%)
 ↳ commit 296.45 ms 295.49 ms -0.53% (-0.76% to +1.36%)
 ↳ execute-program 10.03 ms 10.38 ms +2.85% (-1.80% to +3.48%)
 ↳ flock-reductions 642.83 ms 644.58 ms +0.21% (+0.17% to +0.53%)
 ↳ pcs-open 629.47 ms 628.95 ms -0.22% (-0.61% to +0.34%)
 ↳ prove-bus 131.61 ms 131.91 ms +0.36% (-0.70% to +0.87%)
 ↳ prove-constraints 14.80 ms 14.71 ms -1.01% (-5.79% to +5.67%)
leanxmss-100 4 arm64 Neoverse-V2 472.92 ms 472.26 ms -0.14% (-0.36% to +0.26%)
 ↳ build-witness 12.82 ms 12.77 ms -0.33% (-0.90% to +0.58%)
 ↳ commit 75.11 ms 74.53 ms -0.57% (-1.09% to -0.07%)
 ↳ execute-program 10.31 ms 10.28 ms +0.40% (-3.88% to +3.23%)
 ↳ flock-reductions 168.60 ms 168.61 ms +0.00% (-0.34% to +0.54%)
 ↳ pcs-open 164.87 ms 164.64 ms -0.09% (-0.72% to +0.40%)
 ↳ prove-bus 35.43 ms 35.48 ms +0.19% (-0.37% to +0.35%)
 ↳ prove-constraints 5.56 ms 5.56 ms +0.07% (-0.80% to +0.45%)
leanxmss-100 8 arm64 Neoverse-V2 265.05 ms 264.97 ms -0.03% (-0.31% to +0.84%)
 ↳ build-witness 7.48 ms 7.50 ms -0.17% (-1.39% to +0.87%)
 ↳ commit 38.80 ms 38.63 ms -0.04% (-1.07% to +0.93%)
 ↳ execute-program 10.30 ms 10.52 ms +1.51% (-0.96% to +4.87%)
 ↳ flock-reductions 93.36 ms 93.68 ms +0.28% (+0.01% to +0.69%)
 ↳ pcs-open 90.24 ms 89.54 ms -0.83% (-1.25% to +1.44%)
 ↳ prove-bus 20.70 ms 20.72 ms +0.10% (-0.97% to +0.72%)
 ↳ prove-constraints 4.22 ms 4.26 ms +1.05% (+0.26% to +1.85%)
leanxmss-100 16 arm64 Neoverse-V2 162.39 ms 163.16 ms +0.40% (-0.07% to +7.62%)
 ↳ build-witness 4.80 ms 4.77 ms +0.17% (-2.06% to +1.60%)
 ↳ commit 20.48 ms 20.56 ms +0.39% (-0.63% to +0.78%)
 ↳ execute-program 10.16 ms 10.51 ms +3.18% (+1.74% to +6.98%)
 ↳ flock-reductions 56.39 ms 56.43 ms -0.06% (-0.58% to +19.91%)
 ↳ pcs-open 53.16 ms 53.12 ms +0.12% (-1.26% to +4.02%)
 ↳ prove-bus 13.30 ms 13.38 ms +0.59% (+0.02% to +6.44%)
 ↳ prove-constraints 3.82 ms 3.78 ms -1.08% (-2.85% to +3.77%)
leanxmss-100 1 x86-64 INTEL(R) XEON(R) GOLD 6548N 1.06 s 1.06 s -0.10% (-0.68% to +0.36%)
 ↳ build-witness 71.29 ms 71.71 ms +0.47% (+0.15% to +1.72%)
 ↳ commit 189.33 ms 190.91 ms -0.24% (-2.80% to +1.96%)
 ↳ execute-program 12.82 ms 13.07 ms +2.31% (-0.56% to +4.53%)
 ↳ flock-reductions 312.00 ms 311.30 ms -0.23% (-0.71% to +1.48%)
 ↳ pcs-open 364.58 ms 364.94 ms -0.06% (-1.29% to +0.44%)
 ↳ prove-bus 84.90 ms 85.17 ms -0.06% (-8.41% to +0.84%)
 ↳ prove-constraints 19.93 ms 20.14 ms +1.03% (-0.33% to +1.91%)
leanxmss-100 4 x86-64 INTEL(R) XEON(R) GOLD 6548N 302.74 ms 304.82 ms +0.73% (+0.25% to +8.15%)
 ↳ build-witness 19.63 ms 19.85 ms +1.13% (-1.08% to +1.74%)
 ↳ commit 48.26 ms 48.51 ms +0.42% (-0.24% to +2.10%)
 ↳ execute-program 12.90 ms 12.71 ms +0.34% (-6.57% to +1.11%)
 ↳ flock-reductions 85.75 ms 86.53 ms +0.99% (-0.05% to +24.76%)
 ↳ pcs-open 103.43 ms 103.71 ms +0.91% (-0.93% to +1.07%)
 ↳ prove-bus 24.84 ms 25.24 ms +2.08% (-0.52% to +16.47%)
 ↳ prove-constraints 7.76 ms 7.81 ms -0.37% (-1.63% to +2.03%)
leanxmss-100 8 x86-64 INTEL(R) XEON(R) GOLD 6548N 172.40 ms 171.92 ms -0.40% (-0.59% to -0.08%)
 ↳ build-witness 10.97 ms 11.01 ms +0.66% (-1.90% to +2.50%)
 ↳ commit 23.21 ms 23.09 ms -0.18% (-2.24% to -0.06%)
 ↳ execute-program 12.35 ms 12.34 ms -0.19% (-1.66% to +1.77%)
 ↳ flock-reductions 47.72 ms 47.55 ms -0.43% (-0.58% to +0.35%)
 ↳ pcs-open 57.91 ms 57.93 ms -0.21% (-1.53% to +0.20%)
 ↳ prove-bus 14.69 ms 14.59 ms -0.54% (-1.41% to -0.16%)
 ↳ prove-constraints 5.23 ms 5.23 ms +0.37% (-0.23% to +0.84%)
leanxmss-100 16 x86-64 INTEL(R) XEON(R) GOLD 6548N 129.54 ms 122.05 ms -3.76% (-11.25% to +5.19%)
 ↳ build-witness 7.56 ms 7.27 ms -1.48% (-10.70% to +4.37%)
 ↳ commit 14.99 ms 14.17 ms -6.26% (-22.84% to +8.33%)
 ↳ execute-program 12.39 ms 12.36 ms -0.71% (-4.45% to +1.86%)
 ↳ flock-reductions 34.03 ms 32.34 ms -6.17% (-14.39% to +8.90%)
 ↳ pcs-open 44.48 ms 40.57 ms -3.21% (-8.85% to +2.01%)
 ↳ prove-bus 11.20 ms 10.88 ms -2.51% (-6.16% to +8.85%)
 ↳ prove-constraints 4.64 ms 4.69 ms +0.44% (-2.37% to +6.53%)

@kevaundray kevaundray changed the title Prove and export the production GF(2) wrapping adder from Clean Prove and export the production GF(2) adder family from Clean Oct 10, 2026
@kevaundray kevaundray changed the title Prove and export the production GF(2) adder family from Clean Author leanVM circuits in Clean, prove them, and export them to Rust Oct 10, 2026
…ash circuit from it

The Hash class's gate list is now flock::clean::blake2s, generated from the Clean circuit
LeanVMCircuits.Blake2s.Compress. Compress.soundness proves every satisfying witness outputs
RFC 7693's F for the two legal finalization words, Rfc7693.abc checks the specification against
the RFC's test vector in the kernel, and Compress.lowered proves the exact lowered artifact, whose
additions are proven calls of the exported 32- and 31-bit adders. The hand-written G loop is
removed; the word witness and its pin to the gate walk are unchanged, as are the product slots.
… for the prover

K is (ZMod 2)[X]/(x^64+x^4+x^3+x+1) with Rec.modulus_irreducible checked in the kernel
from carry-less certificates, a Clean FiniteField whose value is the machine's coefficient
word; E is K[y]/(y^3+y+1) with its limb formulas. Every slot of EMUL, EXK, HASH, SPLIT and
CAST is Form data with its theorem (emul_spec, exk_spec, hash_mux, split_spec), the HASH and
SPLIT identities a Clean assertion, and GenerateRec.lean prints them as rec/clean.rs, which
Table::slot and Table::identities now read instead of the hand-written forms.
Rec.Rows proves, from the table theorems and the bus equalities a pattern holds its slots to:
an EMUL row held to one makes its factor the unique inverse, add sums, a SPLIT row with zeroed
high bits packs a number below 2^n, the CAST views, a hash row's challenge words, and a Merkle
node's placement of its child by a Boolean bit.
…to the proven ones

Rec.hash_row_compress proves a hash row's output columns are RFC 7693's compression of its input
columns when its packed witness satisfies the exported BLAKE2s artifact and its ports are its
columns' words. Tests check that inv, pack and node emit the row shapes Rec.inverse_row,
Rec.pack_row, Rec.node_row and Rec.hash_row_compress assume.
…tement digest in rows against RFC 7693

Rec.Merkle: hash rows chained output to chaining value output BLAKE2s-256 of their message columns;
node rows up a path output the Merkle root of the leaf and their bits and siblings; parent rows over
a subtree's levels output its root. Rec.Statement: Builder::chain's rows output the hash of a word
message, and a tree statement's digest rows the hash of its header and items. Drop the row-shape
tests, which only restated the builder's wiring.
… keep the multiplier plan for native witnesses
…an-circuits-shift-20261010

# Conflicts:
#	crates/leanvm_core/src/rec/circuit/builder/arith.rs
…e session seed, words absorbed and squeezed, the digest, the new proof of work; trace k_to_d and model it

The duplex core (counters, hold-back, output blocks) is unchanged by leanEthereum#607. What changed and is modelled: the seed node is init(session) (the old seed with a zero statement half), the instance is the first message, roots are four words, COMMIT/POW_BASE/NONCE are gone (the terminal binding is four squeezed words), and proof of work hashes a squeezed challenge with a u64 nonce and checks the trial word's top bits. Builder::k_to_d, now used by the transcript, is traced, with a Lean model and contract, so checkrec replays tree circuits.
# Conflicts:
#	crates/leanvm_core/src/rec/circuit/builder/hash.rs
…model them: Model.hashBlock, Model.dToHalves, their contracts, leafBlock_eq

leaf_block is d_const of its counter word then block's row (Model.leafBlock_eq, by rfl); checkrec parses block and d_to_halves. No tree or signature dump calls them yet; the claim-set trees of leanEthereum#614 will.
kevaundray added a commit to kevaundray/leanVM that referenced this pull request Oct 14, 2026
…to kw/clean-rec-soundness

The builder's mark moves to rec/circuit.rs, the claims' edge lines to tree/reduce, and the union's marks onto PoolShape::rows and PoolWires::product; the design summaries test and the bus plan test take the new APIs; the docs name bus::verify_balance, Design::kind_bits, PoolShape::rows and RoundQuad.
…er-20261010

The circuits dump names each position by its NodeCircuit, so the tracked signer-set trees' circuits are dumped under their benchmark names; all twenty-three dumps pass checkrec with the existing Lean model.
kevaundray added a commit to kevaundray/leanVM that referenced this pull request Oct 14, 2026

This branch has not been deployed

No deployments
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.

1 participant