Struct binius_core::poly_commit::tensor_pcs::Proof
source · pub struct Proof<U, FI, FE, VCSProof>{
pub n_polys: usize,
pub mixed_t_prime: MultilinearExtension<PackedType<U, FE>>,
pub vcs_proofs: VCSProofs<PackedType<U, FI>, VCSProof>,
}
Expand description
Evaluation proof data for the TensorPCS
polynomial commitment scheme.
§Type Parameters
PI
: The packed intermediate field type.PE
: The packed extension field type.VCSProof
: The vector commitment scheme proof type.
Fields§
§n_polys: usize
Number of distinct multilinear polynomials in the batch opening proof
mixed_t_prime: MultilinearExtension<PackedType<U, FE>>
Represents a mixing of individual polynomial t_primes
Let $n$ denote n_polys. Define $l = \lceil\log_2(n)\rceil$. Let $\alpha_0, \ldots, \alpha_{l-1}$ be the sampled mixing challenges. Then $c := \otimes_{i=0}^{l-1} (1 - \alpha_i, \alpha_i)$ are the $2^l$ mixing coefficients, denoting the $i$-th coefficient by $c_i$. Let $t’i$ denote the $t’$ for the $i$-th polynomial in the batch opening proof. This value represents the multilinear polynomial such that $\forall v \in {0, 1}^{\mu}$, $v \rightarrow \sum{i=0}^{n-1} c_i * t’_i(v)$
vcs_proofs: VCSProofs<PackedType<U, FI>, VCSProof>
Opening proofs for chosen columns of the encoded matrices
Let $j_1, \ldots, j_k$ be the indices of the columns that are opened. The ith element is a tuple of:
- A vector (size=n_polys) of the $j_i$th columns (one from each polynomial’s encoded matrix)
- A proof that these columns are consistent with the vector commitment
Trait Implementations§
Auto Trait Implementations§
impl<U, FI, FE, VCSProof> Freeze for Proof<U, FI, FE, VCSProof>where
<FE as WithUnderlier>::Underlier: PackScalar<FE> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
FE: WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a FE> + for<'a> SubAssign<&'a FE> + for<'a> AddAssign<&'a FE> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a FE> + for<'a> Sum<&'a FE> + for<'a> Mul<&'a FE, Output = FE, Output = FE> + for<'a> Sub<&'a FE, Output = FE, Output = FE> + for<'a> Add<&'a FE, Output = FE, Output = FE> + Product + Sum + Mul + Sub + Add + Neg<Output = FE> + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + 'static,
<FI as WithUnderlier>::Underlier: PackScalar<FI> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
FI: WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a FI> + for<'a> SubAssign<&'a FI> + for<'a> AddAssign<&'a FI> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a FI> + for<'a> Sum<&'a FI> + for<'a> Mul<&'a FI, Output = FI, Output = FI> + for<'a> Sub<&'a FI, Output = FI, Output = FI> + for<'a> Add<&'a FI, Output = FI, Output = FI> + Product + Sum + Mul + Sub + Add + Neg<Output = FI> + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + 'static,
U: UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + 'static,
impl<U, FI, FE, VCSProof> RefUnwindSafe for Proof<U, FI, FE, VCSProof>where
<FE as WithUnderlier>::Underlier: PackScalar<FE> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
FE: WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a FE> + for<'a> SubAssign<&'a FE> + for<'a> AddAssign<&'a FE> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a FE> + for<'a> Sum<&'a FE> + for<'a> Mul<&'a FE, Output = FE, Output = FE> + for<'a> Sub<&'a FE, Output = FE, Output = FE> + for<'a> Add<&'a FE, Output = FE, Output = FE> + Product + Sum + Mul + Sub + Add + Neg<Output = FE> + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + 'static,
<FI as WithUnderlier>::Underlier: PackScalar<FI> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
FI: WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a FI> + for<'a> SubAssign<&'a FI> + for<'a> AddAssign<&'a FI> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a FI> + for<'a> Sum<&'a FI> + for<'a> Mul<&'a FI, Output = FI, Output = FI> + for<'a> Sub<&'a FI, Output = FI, Output = FI> + for<'a> Add<&'a FI, Output = FI, Output = FI> + Product + Sum + Mul + Sub + Add + Neg<Output = FI> + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + 'static,
U: UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + 'static,
<U as PackScalar<FE>>::Packed: RefUnwindSafe,
VCSProof: RefUnwindSafe,
<U as PackScalar<FI>>::Packed: RefUnwindSafe,
impl<U, FI, FE, VCSProof> Send for Proof<U, FI, FE, VCSProof>where
<FE as WithUnderlier>::Underlier: PackScalar<FE> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
FE: WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a FE> + for<'a> SubAssign<&'a FE> + for<'a> AddAssign<&'a FE> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a FE> + for<'a> Sum<&'a FE> + for<'a> Mul<&'a FE, Output = FE, Output = FE> + for<'a> Sub<&'a FE, Output = FE, Output = FE> + for<'a> Add<&'a FE, Output = FE, Output = FE> + Product + Sum + Mul + Sub + Add + Neg<Output = FE> + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + 'static,
<FI as WithUnderlier>::Underlier: PackScalar<FI> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
FI: WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a FI> + for<'a> SubAssign<&'a FI> + for<'a> AddAssign<&'a FI> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a FI> + for<'a> Sum<&'a FI> + for<'a> Mul<&'a FI, Output = FI, Output = FI> + for<'a> Sub<&'a FI, Output = FI, Output = FI> + for<'a> Add<&'a FI, Output = FI, Output = FI> + Product + Sum + Mul + Sub + Add + Neg<Output = FI> + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + 'static,
U: UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + 'static,
VCSProof: Send,
impl<U, FI, FE, VCSProof> Sync for Proof<U, FI, FE, VCSProof>where
<FE as WithUnderlier>::Underlier: PackScalar<FE> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
FE: WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a FE> + for<'a> SubAssign<&'a FE> + for<'a> AddAssign<&'a FE> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a FE> + for<'a> Sum<&'a FE> + for<'a> Mul<&'a FE, Output = FE, Output = FE> + for<'a> Sub<&'a FE, Output = FE, Output = FE> + for<'a> Add<&'a FE, Output = FE, Output = FE> + Product + Sum + Mul + Sub + Add + Neg<Output = FE> + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + 'static,
<FI as WithUnderlier>::Underlier: PackScalar<FI> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
FI: WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a FI> + for<'a> SubAssign<&'a FI> + for<'a> AddAssign<&'a FI> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a FI> + for<'a> Sum<&'a FI> + for<'a> Mul<&'a FI, Output = FI, Output = FI> + for<'a> Sub<&'a FI, Output = FI, Output = FI> + for<'a> Add<&'a FI, Output = FI, Output = FI> + Product + Sum + Mul + Sub + Add + Neg<Output = FI> + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + 'static,
U: UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + 'static,
VCSProof: Sync,
impl<U, FI, FE, VCSProof> Unpin for Proof<U, FI, FE, VCSProof>where
<FE as WithUnderlier>::Underlier: PackScalar<FE> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
FE: WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a FE> + for<'a> SubAssign<&'a FE> + for<'a> AddAssign<&'a FE> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a FE> + for<'a> Sum<&'a FE> + for<'a> Mul<&'a FE, Output = FE, Output = FE> + for<'a> Sub<&'a FE, Output = FE, Output = FE> + for<'a> Add<&'a FE, Output = FE, Output = FE> + Product + Sum + Mul + Sub + Add + Neg<Output = FE> + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + 'static,
<FI as WithUnderlier>::Underlier: PackScalar<FI> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
FI: WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a FI> + for<'a> SubAssign<&'a FI> + for<'a> AddAssign<&'a FI> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a FI> + for<'a> Sum<&'a FI> + for<'a> Mul<&'a FI, Output = FI, Output = FI> + for<'a> Sub<&'a FI, Output = FI, Output = FI> + for<'a> Add<&'a FI, Output = FI, Output = FI> + Product + Sum + Mul + Sub + Add + Neg<Output = FI> + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + 'static,
U: UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + 'static,
<U as PackScalar<FE>>::Packed: Unpin,
VCSProof: Unpin,
<U as PackScalar<FI>>::Packed: Unpin,
impl<U, FI, FE, VCSProof> UnwindSafe for Proof<U, FI, FE, VCSProof>where
<FE as WithUnderlier>::Underlier: PackScalar<FE> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
FE: WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a FE> + for<'a> SubAssign<&'a FE> + for<'a> AddAssign<&'a FE> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a FE> + for<'a> Sum<&'a FE> + for<'a> Mul<&'a FE, Output = FE, Output = FE> + for<'a> Sub<&'a FE, Output = FE, Output = FE> + for<'a> Add<&'a FE, Output = FE, Output = FE> + Product + Sum + Mul + Sub + Add + Neg<Output = FE> + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + 'static,
<FI as WithUnderlier>::Underlier: PackScalar<FI> + UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + Sized + 'static,
FI: WithUnderlier + Zeroable + InvertOrZero + Square + for<'a> MulAssign<&'a FI> + for<'a> SubAssign<&'a FI> + for<'a> AddAssign<&'a FI> + MulAssign + SubAssign + AddAssign + for<'a> Product<&'a FI> + for<'a> Sum<&'a FI> + for<'a> Mul<&'a FI, Output = FI, Output = FI> + for<'a> Sub<&'a FI, Output = FI, Output = FI> + for<'a> Add<&'a FI, Output = FI, Output = FI> + Product + Sum + Mul + Sub + Add + Neg<Output = FI> + Debug + Sync + Send + Default + Clone + Copy + Eq + PartialEq + 'static,
U: UnderlierType + Sync + Send + Zeroable + NoUninit + Random + Copy + Clone + ConstantTimeEq + Eq + PartialEq + Default + Debug + 'static,
<U as PackScalar<FE>>::Packed: UnwindSafe,
VCSProof: UnwindSafe,
<U as PackScalar<FI>>::Packed: UnwindSafe,
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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