Struct o1vm::legacy::folding::FoldingInstance
source · pub struct FoldingInstance<const N: usize, G: CommitmentCurve> {
pub commitments: [G; N],
pub challenges: [<G as AffineRepr>::ScalarField; 3],
pub alphas: Alphas<<G as AffineRepr>::ScalarField>,
pub blinder: <G as AffineRepr>::ScalarField,
}
Expand description
Folding instance containing the commitment to a witness of N columns, challenges for the proof, and the alphas
Fields§
§commitments: [G; N]
Commitments to the witness columns, including the dynamic selectors
challenges: [<G as AffineRepr>::ScalarField; 3]
Challenges for the proof. We do use 3 challenges:
- β as the evaluation point for the logup argument
- j: the joint combiner for vector lookups
- γ (set to 0 for now)
alphas: Alphas<<G as AffineRepr>::ScalarField>
Reuses the Alphas defined in the example of folding
blinder: <G as AffineRepr>::ScalarField
Blinder used in the polynomial commitment scheme
Trait Implementations§
source§impl<const N: usize, G: Clone + CommitmentCurve> Clone for FoldingInstance<N, G>
impl<const N: usize, G: Clone + CommitmentCurve> Clone for FoldingInstance<N, G>
source§fn clone(&self) -> FoldingInstance<N, G>
fn clone(&self) -> FoldingInstance<N, G>
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl<const N: usize, G: CommitmentCurve> Foldable<<G as AffineRepr>::ScalarField> for FoldingInstance<N, G>
impl<const N: usize, G: CommitmentCurve> Foldable<<G as AffineRepr>::ScalarField> for FoldingInstance<N, G>
source§impl<const N: usize, const N_REL: usize, const N_SEL: usize, C: FoldingConfig, Structure: Clone> FoldingEnv<<<C as FoldingConfig>::Curve as AffineRepr>::ScalarField, FoldingInstance<N, <C as FoldingConfig>::Curve>, FoldingWitness<N, <<C as FoldingConfig>::Curve as AffineRepr>::ScalarField>, <C as FoldingConfig>::Column, Challenge, <C as FoldingConfig>::Selector> for DecomposedFoldingEnvironment<N, N_REL, N_SEL, C, Structure>where
FoldingWitness<N, <<C as FoldingConfig>::Curve as AffineRepr>::ScalarField>: Index<C::Column, Output = Evaluations<<<C as FoldingConfig>::Curve as AffineRepr>::ScalarField, Radix2EvaluationDomain<<<C as FoldingConfig>::Curve as AffineRepr>::ScalarField>>>,
FoldingWitness<N, <<C as FoldingConfig>::Curve as AffineRepr>::ScalarField>: Index<C::Selector, Output = Evaluations<<<C as FoldingConfig>::Curve as AffineRepr>::ScalarField, Radix2EvaluationDomain<<<C as FoldingConfig>::Curve as AffineRepr>::ScalarField>>>,
impl<const N: usize, const N_REL: usize, const N_SEL: usize, C: FoldingConfig, Structure: Clone> FoldingEnv<<<C as FoldingConfig>::Curve as AffineRepr>::ScalarField, FoldingInstance<N, <C as FoldingConfig>::Curve>, FoldingWitness<N, <<C as FoldingConfig>::Curve as AffineRepr>::ScalarField>, <C as FoldingConfig>::Column, Challenge, <C as FoldingConfig>::Selector> for DecomposedFoldingEnvironment<N, N_REL, N_SEL, C, Structure>where FoldingWitness<N, <<C as FoldingConfig>::Curve as AffineRepr>::ScalarField>: Index<C::Column, Output = Evaluations<<<C as FoldingConfig>::Curve as AffineRepr>::ScalarField, Radix2EvaluationDomain<<<C as FoldingConfig>::Curve as AffineRepr>::ScalarField>>>, FoldingWitness<N, <<C as FoldingConfig>::Curve as AffineRepr>::ScalarField>: Index<C::Selector, Output = Evaluations<<<C as FoldingConfig>::Curve as AffineRepr>::ScalarField, Radix2EvaluationDomain<<<C as FoldingConfig>::Curve as AffineRepr>::ScalarField>>>,
source§fn new(
structure: &Self::Structure,
instances: [&FoldingInstance<N, C::Curve>; 2],
witnesses: [&FoldingWitness<N, <<C as FoldingConfig>::Curve as AffineRepr>::ScalarField>; 2]
) -> Self
fn new( structure: &Self::Structure, instances: [&FoldingInstance<N, C::Curve>; 2], witnesses: [&FoldingWitness<N, <<C as FoldingConfig>::Curve as AffineRepr>::ScalarField>; 2] ) -> Self
Creates a new environment storing the structure, instances and
witnesses.
source§fn col(
&self,
col: C::Column,
curr_or_next: CurrOrNext,
side: Side
) -> &[<<C as FoldingConfig>::Curve as AffineRepr>::ScalarField]
fn col( &self, col: C::Column, curr_or_next: CurrOrNext, side: Side ) -> &[<<C as FoldingConfig>::Curve as AffineRepr>::ScalarField]
Returns the evaluations of a given column witness at omega or zeta*omega.
source§impl<const N: usize, C: FoldingConfig, Structure: Clone> FoldingEnv<<<C as FoldingConfig>::Curve as AffineRepr>::ScalarField, FoldingInstance<N, <C as FoldingConfig>::Curve>, FoldingWitness<N, <<C as FoldingConfig>::Curve as AffineRepr>::ScalarField>, <C as FoldingConfig>::Column, Challenge, ()> for FoldingEnvironment<N, C, Structure>where
FoldingWitness<N, <<C as FoldingConfig>::Curve as AffineRepr>::ScalarField>: Index<C::Column, Output = Evaluations<<<C as FoldingConfig>::Curve as AffineRepr>::ScalarField, Radix2EvaluationDomain<<<C as FoldingConfig>::Curve as AffineRepr>::ScalarField>>>,
impl<const N: usize, C: FoldingConfig, Structure: Clone> FoldingEnv<<<C as FoldingConfig>::Curve as AffineRepr>::ScalarField, FoldingInstance<N, <C as FoldingConfig>::Curve>, FoldingWitness<N, <<C as FoldingConfig>::Curve as AffineRepr>::ScalarField>, <C as FoldingConfig>::Column, Challenge, ()> for FoldingEnvironment<N, C, Structure>where FoldingWitness<N, <<C as FoldingConfig>::Curve as AffineRepr>::ScalarField>: Index<C::Column, Output = Evaluations<<<C as FoldingConfig>::Curve as AffineRepr>::ScalarField, Radix2EvaluationDomain<<<C as FoldingConfig>::Curve as AffineRepr>::ScalarField>>>,
source§fn new(
structure: &Self::Structure,
instances: [&FoldingInstance<N, C::Curve>; 2],
witnesses: [&FoldingWitness<N, <<C as FoldingConfig>::Curve as AffineRepr>::ScalarField>; 2]
) -> Self
fn new( structure: &Self::Structure, instances: [&FoldingInstance<N, C::Curve>; 2], witnesses: [&FoldingWitness<N, <<C as FoldingConfig>::Curve as AffineRepr>::ScalarField>; 2] ) -> Self
Creates a new environment storing the structure, instances and
witnesses.
source§fn col(
&self,
col: C::Column,
curr_or_next: CurrOrNext,
side: Side
) -> &[<<C as FoldingConfig>::Curve as AffineRepr>::ScalarField]
fn col( &self, col: C::Column, curr_or_next: CurrOrNext, side: Side ) -> &[<<C as FoldingConfig>::Curve as AffineRepr>::ScalarField]
Returns the evaluations of a given column witness at omega or zeta*omega.
source§impl<const N: usize, G: CommitmentCurve> Instance<G> for FoldingInstance<N, G>
impl<const N: usize, G: CommitmentCurve> Instance<G> for FoldingInstance<N, G>
source§fn to_absorb(&self) -> (Vec<G::ScalarField>, Vec<G>)
fn to_absorb(&self) -> (Vec<G::ScalarField>, Vec<G>)
This method returns the scalars and commitments that must be absorbed by
the sponge. It is not supposed to do any absorption itself, and the user
is responsible for calling the sponge absorb methods with the elements
returned by this method.
When called on a RelaxedInstance, elements will be returned in the
following order, for given instances L and R Read more
source§fn get_alphas(&self) -> &Alphas<G::ScalarField>
fn get_alphas(&self) -> &Alphas<G::ScalarField>
Returns the alphas values for the instance
source§fn get_blinder(&self) -> G::ScalarField
fn get_blinder(&self) -> G::ScalarField
Return the blinder that can be used while committing to polynomials.
Auto Trait Implementations§
impl<const N: usize, G> RefUnwindSafe for FoldingInstance<N, G>where G: RefUnwindSafe, <G as AffineRepr>::ScalarField: RefUnwindSafe,
impl<const N: usize, G> !Send for FoldingInstance<N, G>
impl<const N: usize, G> !Sync for FoldingInstance<N, G>
impl<const N: usize, G> Unpin for FoldingInstance<N, G>where G: Unpin, <G as AffineRepr>::ScalarField: Unpin,
impl<const N: usize, G> UnwindSafe for FoldingInstance<N, G>where G: UnwindSafe, <G as AffineRepr>::ScalarField: 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
Mutably borrows from an owned value. Read more