//! Field-native WHIR: lens's WHIR (`lens/specs/whir.md`, eprint 2024/1586)
//! on the recursion profile's transcript and words — a duplex sponge over
//! hemera's permutation ([`super::sponge`]) and hemera Merkle trees over
//! field elements ([`super::word`]) — with its verifier written once over
//! [`Ops`](super::ops::Ops), so the same opening is checked natively and
//! inside the recursion circuit.
//!
//! The opening is *batched*: `m` committed words `f_1..f_m` of `ℓ`
//! variables, each carrying evaluation claims at its own points, are
//! opened together.
//!
//! ```text
//! batch γ; Σ_i Σ_e γ^e·eq(z_e, X)·f_i(X) by an ℓ-round sumcheck to one
//! point ρ'; μ_i = f_i(ρ'); grinding; r; f_0 = Σ_i r^i·f_i,
//! f_0(ρ') = Σ_i r^i·μ_i
//! whir lens's Construction 5.1 on the virtual f_0 at (ρ', Σ r^i μ_i):
//! OOD on f_0, the folding sumcheck, per round a fresh word of the
//! folded polynomial, its OOD, grinding, shift queries; the final
//! polynomial in the clear, final queries, the closing check
//! ```
//!
//! A query on `f_0` opens its leaf in every input word (one path each) and
//! folds `Σ_i r^i·leaf_i`. The round schedule (folds, rates, queries) is
//! lens's `WhirConfig` for `(whir, ℓ)`, each round's regime, OOD count and
//! grinding rebalanced for the least grinding work ([`schedule`]); the batch
//! adds the claim-batching, sumcheck and combination rounds of an
//! accumulation step (`accumulate::config`). Soundness:
//! `specs/soundness.md` § field-native WHIR.
pub use ;
pub use ;
use WhirParams;
use ;
use Fp3;
use ;
/// Bits every round must prove (grinding included).
pub const MIN_BITS: f64 = 128.0;
/// Grinding budget of the combination challenge.
pub const COMB_POW_MAX: u32 = 32;
/// A batched opening's parameters.
/// A committed tree of one or more input words (the prover's side).
/// The weight of a direct claim `Σ_x w(x)·f(x) = v` on the one input
/// word (direct mode; `ℓ = n + 6`: rows the low `n` variables, 64
/// columns the high six).
/// A weight a native verifier evaluates itself.
/// A claim on one input word (`Multi`: at a point; `Uni`: at `pow(x)`).
pub use ;
/// The batch: the claim sumcheck, every word at its point, the
/// combination's grinding nonce.
/// One WHIR round after the first: the folded function's root and OOD
/// answers, the shift queries on the previous function, the folding
/// sumcheck.
/// A batched field-native WHIR opening.
/// An opening of the right shape, every value zero (circuit layouts are
/// fixed by shapes alone).
Homonyms
cyb/evy/forks/naga/src/back/hlsl/mod.rs
struct Baz { m: mat3x2, } struct Baz { float2 m_0; float2 m_1; float2 m_2; }; float3x2 GetMatmOnBaz(Baz obj) { return float3x2(obj.m_0, obj.m_1, obj.m_2); }