pub struct Committed<F, M, L>{ /* private fields */ }Expand description
Committed polynomial evaluations with domain metadata.
Wraps an LMCS tree and stores the blowup used for the LDE.
We keep log_blowup here (instead of threading it through every call) so we can
recover per-matrix domain information (trace height, lift ratio, coset shift) from
just the committed matrices. This is especially useful when committing multiple
traces of different heights into one tree.
§Type Parameters
F: Scalar field element typeM: Matrix type (e.g.,RowMajorMatrix<F>)L: LMCS configuration type
§Usage
let committed = commit_traces(config, traces);
let root = committed.root();
let view = committed.evals_on_quotient_domain(0, constraint_degree);Storing the blowup also avoids re-deriving trace_height = lde_height / blowup for each
matrix, which is needed for quotient-domain views and lifting shifts.
Implementations§
Source§impl<F, M, L> Committed<F, M, L>
impl<F, M, L> Committed<F, M, L>
Sourcepub fn new(tree: <L as Lmcs>::Tree<M>, log_blowup: u8) -> Committed<F, M, L>
pub fn new(tree: <L as Lmcs>::Tree<M>, log_blowup: u8) -> Committed<F, M, L>
Create a new Committed wrapper.
§Arguments
tree: The LMCS tree containing committed LDE matriceslog_blowup: Log₂ of the blowup factor used during LDE
Sourcepub fn root(&self) -> <L as Lmcs>::Commitment
pub fn root(&self) -> <L as Lmcs>::Commitment
Get the commitment root.
Source§impl<F, L> Committed<F, DenseMatrix<F>, L>where
F: TwoAdicField,
L: Lmcs<F = F>,
impl<F, L> Committed<F, DenseMatrix<F>, L>where
F: TwoAdicField,
L: Lmcs<F = F>,
Sourcepub fn evals_on_quotient_domain(
&self,
m: usize,
constraint_degree: usize,
) -> RowIndexMappedView<BitReversalPerm, DenseMatrix<F, &[F]>>
pub fn evals_on_quotient_domain( &self, m: usize, constraint_degree: usize, ) -> RowIndexMappedView<BitReversalPerm, DenseMatrix<F, &[F]>>
Return a zero-copy view of matrix m on the quotient evaluation domain.
This returns evaluations over the quotient coset gJ ⊆ gK.
The tree commits to LDE evaluations on gK (size N·B). The RowMajorMatrix
stores bit-reversed evaluations; gJ appears as the first N·D rows, so this is
a zero-copy prefix view followed by bit_reverse_rows() to expose natural order.
§Panics
Panics if m >= num_matrices().
Auto Trait Implementations§
impl<F, M, L> Freeze for Committed<F, M, L>
impl<F, M, L> RefUnwindSafe for Committed<F, M, L>
impl<F, M, L> Send for Committed<F, M, L>
impl<F, M, L> Sync for Committed<F, M, L>
impl<F, M, L> Unpin for Committed<F, M, L>
impl<F, M, L> UnsafeUnpin for Committed<F, M, L>
impl<F, M, L> UnwindSafe for Committed<F, M, L>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more