pub struct TestUairFqLargePrime<R, P>(/* private fields */);Expand description
A UAIR exercising the Flavor-1 $F_{q}[X]$-constraint surface for multiple large primes.
Single arbitrary-poly witness column a. Two $F_{q_i}[X]$-
constraints, one per declared prime $q_i$:
$$ \phi_{q_0}(a) \in (X - 0) \quad \text{in } F_{q_0}[X], \qquad \phi_{q_1}(a) \in (X - 0) \quad \text{in } F_{q_1}[X], $$
i.e. the constant term of a is zero modulo each of $q_0$ and $q_1$.
The trace generator builds a with its $X^0$ coefficient set to
integer zero, so both constraints hold simultaneously regardless of the
chosen primes.
Used to exercise the per-prime $F_{q_i}[X]$ ideal-check family of the Zinc$+$ protocol end-to-end with multiple primes, including the lockstep multi-family sumcheck/MP-eval driver.
Trait Implementations§
Source§impl<R: Clone, P: Clone> Clone for TestUairFqLargePrime<R, P>
impl<R: Clone, P: Clone> Clone for TestUairFqLargePrime<R, P>
Source§fn clone(&self) -> TestUairFqLargePrime<R, P>
fn clone(&self) -> TestUairFqLargePrime<R, P>
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<R, P> GenerateRandomTrace<32> for TestUairFqLargePrime<R, P>
impl<R, P> GenerateRandomTrace<32> for TestUairFqLargePrime<R, P>
Source§impl<R, P> Uair for TestUairFqLargePrime<R, P>
impl<R, P> Uair for TestUairFqLargePrime<R, P>
Source§type Ideal = ImpossibleIdeal
type Ideal = ImpossibleIdeal
The ideal type the AIR operates with.
Since a
ConstraintBuilder is “opaque” for a Uair
a Uair has to have a means to create ideals
so ideals are fixed by this associated types.
At the constrain* methods a Uair is given
a way to convert its own ideals into builder’s ideals
via the FromRef trait.Source§type FqIdeal = RotationIdeal<R, 1>
type FqIdeal = RotationIdeal<R, 1>
The ideal type for $F_{q_i}[X]$-constraints emitted via
[
ConstraintBuilder::assert_in_fq_ideal]. UAIRs that do not declare
any primes should set this to [ideal::ImpossibleIdeal].Source§type Scalar = DensePolynomial<R, 32>
type Scalar = DensePolynomial<R, 32>
The type of scalars of the UAIR.
For now, we assume they are of the type “arbitrary polynomials”.
Source§type Prime = P
type Prime = P
Type of primes defined in signature. Must be compatible with the field
type we’re using.
Source§fn constrain_general<C, B, FromR, MulByScalar, IFromR, IFqFromR>(
b: &mut B,
_expr_cfg: &C,
up: TraceRow<'_, C::Element>,
_down: TraceRow<'_, C::Element>,
_from_ref: FromR,
_mbs: MulByScalar,
_ideal_from_ref: IFromR,
fq_ideal_from_ref: IFqFromR,
)
fn constrain_general<C, B, FromR, MulByScalar, IFromR, IFqFromR>( b: &mut B, _expr_cfg: &C, up: TraceRow<'_, C::Element>, _down: TraceRow<'_, C::Element>, _from_ref: FromR, _mbs: MulByScalar, _ideal_from_ref: IFromR, fq_ideal_from_ref: IFqFromR, )
A general method for describing constraints. Read more
Auto Trait Implementations§
impl<R, P> Freeze for TestUairFqLargePrime<R, P>
impl<R, P> RefUnwindSafe for TestUairFqLargePrime<R, P>where
R: RefUnwindSafe,
P: RefUnwindSafe,
impl<R, P> Send for TestUairFqLargePrime<R, P>
impl<R, P> Sync for TestUairFqLargePrime<R, P>
impl<R, P> Unpin for TestUairFqLargePrime<R, P>
impl<R, P> UnsafeUnpin for TestUairFqLargePrime<R, P>
impl<R, P> UnwindSafe for TestUairFqLargePrime<R, P>where
R: UnwindSafe,
P: 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
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>
Converts
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>
Converts
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