pub enum BitOp {
Rot(usize),
ShR(usize),
}Expand description
An entry-wise R-linear endomorphism of the bounded-degree coefficient
module R^{<W}[X] (cf. Section 2.1.1 of the Zinc+ paper) that defines a
virtual column.
Per Lemma 2.3, any R-linear coordinate-wise map on R^{<W}[X] commutes
with multilinear extension over the row hypercube. Consequently the column
T(v) need not be committed: the prover materializes it during the
constraint-aggregation sumcheck, and the verifier reconstructs its MLE
evaluation at the final point r_0 by applying T to the source
column’s lifted opening, its W F_q-coefficients, directly.
Rot(c) admits an alternative description as multiplication by X^{W-c}
modulo X^W - 1, i.e. as an endomorphism of R[X]/(X^W - 1). ShR(c) is
pure zero-padding on coefficient indices and is not a quotient-ring
operation; both, however, are R-linear maps on R^{<W}[X] and fall
under the same Lemma 2.3 frame.
Bit-ops are defined only on binary_poly source columns.
Variants§
Rot(usize)
Right-rotation by c bit positions. The result’s coefficient at
position i is the source’s at (i + c) mod W, where W is the
cell width.
ShR(usize)
Right-shift by c bit positions. The result’s coefficient at
position i is the source’s at i + c if i + c < W, else zero.
Implementations§
Trait Implementations§
impl Copy for BitOp
impl Eq for BitOp
impl StructuralPartialEq for BitOp
Auto Trait Implementations§
impl Freeze for BitOp
impl RefUnwindSafe for BitOp
impl Send for BitOp
impl Sync for BitOp
impl Unpin for BitOp
impl UnsafeUnpin for BitOp
impl UnwindSafe for BitOp
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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