pub struct ShaProxy<R>(/* private fields */);Expand description
A second “big linear” UAIR with 14 binary-poly columns and 4 int columns,
used as a benchmarking shape distinct from BigLinearUair.
Constraints (0-based; bp = up.binary_poly, int = up.int):
bp[0][t+1] - bp[1] - bp[2] - bp[3] - int[0] - int[1] - int[2] ∈ (X-2)bp[4][t+4] - bp[5] - bp[6] - bp[7] - int[1] - int[2] - int[3] ∈ (X-2)bp[8] - int[0] ∈ (X-2)bp[9] - int[1] ∈ (X-2)bp[10] - X * bp[11] ∈ (X-1)bp[12] - X * bp[13] ∈ (X-1)
Note the asymmetric shift amounts: bp[0] is shifted by 1 (used by C1)
and bp[4] is shifted by 4 (used by C2).
Trait Implementations§
Source§impl<R> GenerateRandomTrace<32> for ShaProxy<R>
impl<R> GenerateRandomTrace<32> for ShaProxy<R>
Source§impl<R> Uair for ShaProxy<R>
impl<R> Uair for ShaProxy<R>
Source§type Ideal = RotationIdeal<R, 1>
type Ideal = RotationIdeal<R, 1>
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 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§fn signature() -> UairSignature
fn signature() -> UairSignature
Signature of the UAIR. Read more
Source§fn constrain_general<B, FromR, MulByScalar, IFromR>(
b: &mut B,
up: TraceRow<'_, B::Expr>,
down: TraceRow<'_, B::Expr>,
_from_ref: FromR,
mbs: MulByScalar,
ideal_from_ref: IFromR,
)
fn constrain_general<B, FromR, MulByScalar, IFromR>( b: &mut B, up: TraceRow<'_, B::Expr>, down: TraceRow<'_, B::Expr>, _from_ref: FromR, mbs: MulByScalar, ideal_from_ref: IFromR, )
A general method for describing constraints. Read more
fn constrain<B>(
b: &mut B,
up: TraceRow<'_, <B as ConstraintBuilder>::Expr>,
down: TraceRow<'_, <B as ConstraintBuilder>::Expr>,
)where
B: ConstraintBuilder,
<B as ConstraintBuilder>::Expr: FromRef<Self::Scalar> + for<'b> MulByScalar<&'b Self::Scalar>,
<B as ConstraintBuilder>::Ideal: FromRef<Self::Ideal>,
Auto Trait Implementations§
impl<R> Freeze for ShaProxy<R>
impl<R> RefUnwindSafe for ShaProxy<R>where
R: RefUnwindSafe,
impl<R> Send for ShaProxy<R>where
R: Send,
impl<R> Sync for ShaProxy<R>where
R: Sync,
impl<R> Unpin for ShaProxy<R>where
R: Unpin,
impl<R> UnsafeUnpin for ShaProxy<R>
impl<R> UnwindSafe for ShaProxy<R>where
R: 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