pub enum DynProofExpr {
Show 13 variants
Column(ColumnExpr),
And(AndExpr),
Or(OrExpr),
Not(NotExpr),
Literal(LiteralExpr),
Placeholder(PlaceholderExpr),
Equals(EqualsExpr),
Inequality(InequalityExpr),
Add(AddExpr),
Subtract(SubtractExpr),
Multiply(MultiplyExpr),
Cast(CastExpr),
ScalingCast(ScalingCastExpr),
}
Expand description
Enum of AST column expression types that implement ProofExpr
. Is itself a ProofExpr
.
Variants§
Column(ColumnExpr)
Column
And(AndExpr)
Provable logical AND expression
Or(OrExpr)
Provable logical OR expression
Not(NotExpr)
Provable logical NOT expression
Literal(LiteralExpr)
Provable CONST expression
Placeholder(PlaceholderExpr)
Provable placeholder expression
Equals(EqualsExpr)
Provable AST expression for an equals expression
Inequality(InequalityExpr)
Provable AST expression for an inequality expression
Add(AddExpr)
Provable numeric +
expression
Subtract(SubtractExpr)
Provable numeric -
expression
Multiply(MultiplyExpr)
Provable numeric *
expression
Cast(CastExpr)
Provable CAST expression
ScalingCast(ScalingCastExpr)
Provable expression for casting numeric expressions to decimal expressions
Implementations§
Source§impl DynProofExpr
impl DynProofExpr
Sourcepub fn new_column(column_ref: ColumnRef) -> Self
pub fn new_column(column_ref: ColumnRef) -> Self
Create column expression
Sourcepub fn try_new_and(lhs: DynProofExpr, rhs: DynProofExpr) -> AnalyzeResult<Self>
pub fn try_new_and(lhs: DynProofExpr, rhs: DynProofExpr) -> AnalyzeResult<Self>
Create logical AND expression
Sourcepub fn try_new_or(lhs: DynProofExpr, rhs: DynProofExpr) -> AnalyzeResult<Self>
pub fn try_new_or(lhs: DynProofExpr, rhs: DynProofExpr) -> AnalyzeResult<Self>
Create logical OR expression
Sourcepub fn try_new_not(expr: DynProofExpr) -> AnalyzeResult<Self>
pub fn try_new_not(expr: DynProofExpr) -> AnalyzeResult<Self>
Create logical NOT expression
Sourcepub fn new_literal(value: LiteralValue) -> Self
pub fn new_literal(value: LiteralValue) -> Self
Create CONST expression
Sourcepub fn try_new_placeholder(
id: usize,
column_type: ColumnType,
) -> AnalyzeResult<Self>
pub fn try_new_placeholder( id: usize, column_type: ColumnType, ) -> AnalyzeResult<Self>
Create placeholder expression
Sourcepub fn try_new_equals(
lhs: DynProofExpr,
rhs: DynProofExpr,
) -> AnalyzeResult<Self>
pub fn try_new_equals( lhs: DynProofExpr, rhs: DynProofExpr, ) -> AnalyzeResult<Self>
Create a new equals expression
Sourcepub fn try_new_inequality(
lhs: DynProofExpr,
rhs: DynProofExpr,
is_lt: bool,
) -> AnalyzeResult<Self>
pub fn try_new_inequality( lhs: DynProofExpr, rhs: DynProofExpr, is_lt: bool, ) -> AnalyzeResult<Self>
Create a new inequality expression
Sourcepub fn try_new_add(lhs: DynProofExpr, rhs: DynProofExpr) -> AnalyzeResult<Self>
pub fn try_new_add(lhs: DynProofExpr, rhs: DynProofExpr) -> AnalyzeResult<Self>
Create a new add expression
Sourcepub fn try_new_subtract(
lhs: DynProofExpr,
rhs: DynProofExpr,
) -> AnalyzeResult<Self>
pub fn try_new_subtract( lhs: DynProofExpr, rhs: DynProofExpr, ) -> AnalyzeResult<Self>
Create a new subtract expression
Sourcepub fn try_new_multiply(
lhs: DynProofExpr,
rhs: DynProofExpr,
) -> AnalyzeResult<Self>
pub fn try_new_multiply( lhs: DynProofExpr, rhs: DynProofExpr, ) -> AnalyzeResult<Self>
Create a new multiply expression
Sourcepub fn try_new_cast(
from_column: DynProofExpr,
to_datatype: ColumnType,
) -> AnalyzeResult<Self>
pub fn try_new_cast( from_column: DynProofExpr, to_datatype: ColumnType, ) -> AnalyzeResult<Self>
Create a new cast expression
Sourcepub fn try_new_scaling_cast(
from_expr: DynProofExpr,
to_datatype: ColumnType,
) -> AnalyzeResult<Self>
pub fn try_new_scaling_cast( from_expr: DynProofExpr, to_datatype: ColumnType, ) -> AnalyzeResult<Self>
Create a new decimal scale cast expression
Trait Implementations§
Source§impl Clone for DynProofExpr
impl Clone for DynProofExpr
Source§fn clone(&self) -> DynProofExpr
fn clone(&self) -> DynProofExpr
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for DynProofExpr
impl Debug for DynProofExpr
Source§impl<'de> Deserialize<'de> for DynProofExpr
impl<'de> Deserialize<'de> for DynProofExpr
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl From<ColumnExpr> for DynProofExpr
impl From<ColumnExpr> for DynProofExpr
Source§fn from(v: ColumnExpr) -> DynProofExpr
fn from(v: ColumnExpr) -> DynProofExpr
Source§impl PartialEq for DynProofExpr
impl PartialEq for DynProofExpr
Source§impl ProofExpr for DynProofExpr
impl ProofExpr for DynProofExpr
Source§fn data_type(&self) -> ColumnType
fn data_type(&self) -> ColumnType
Get the data type of the expression
Source§fn first_round_evaluate<'a, S: Scalar>(
&self,
__enum_dispatch_arg_0: &'a Bump,
__enum_dispatch_arg_1: &Table<'a, S>,
__enum_dispatch_arg_2: &[LiteralValue],
) -> PlaceholderResult<Column<'a, S>>
fn first_round_evaluate<'a, S: Scalar>( &self, __enum_dispatch_arg_0: &'a Bump, __enum_dispatch_arg_1: &Table<'a, S>, __enum_dispatch_arg_2: &[LiteralValue], ) -> PlaceholderResult<Column<'a, S>>
This returns the result of evaluating the expression on the given table, and returns
a column of values. This result slice is guaranteed to have length table_length
.
Implementations must ensure that the returned slice has length table_length
.
Source§fn final_round_evaluate<'a, S: Scalar>(
&self,
__enum_dispatch_arg_0: &mut FinalRoundBuilder<'a, S>,
__enum_dispatch_arg_1: &'a Bump,
__enum_dispatch_arg_2: &Table<'a, S>,
__enum_dispatch_arg_3: &[LiteralValue],
) -> PlaceholderResult<Column<'a, S>>
fn final_round_evaluate<'a, S: Scalar>( &self, __enum_dispatch_arg_0: &mut FinalRoundBuilder<'a, S>, __enum_dispatch_arg_1: &'a Bump, __enum_dispatch_arg_2: &Table<'a, S>, __enum_dispatch_arg_3: &[LiteralValue], ) -> PlaceholderResult<Column<'a, S>>
Evaluate the expression, add components needed to prove it, and return thet resulting column of values
Source§fn verifier_evaluate<S: Scalar>(
&self,
__enum_dispatch_arg_0: &mut impl VerificationBuilder<S>,
__enum_dispatch_arg_1: &IndexMap<Ident, S, BuildHasherDefault<AHasher>>,
__enum_dispatch_arg_2: S,
__enum_dispatch_arg_3: &[LiteralValue],
) -> Result<S, ProofError>
fn verifier_evaluate<S: Scalar>( &self, __enum_dispatch_arg_0: &mut impl VerificationBuilder<S>, __enum_dispatch_arg_1: &IndexMap<Ident, S, BuildHasherDefault<AHasher>>, __enum_dispatch_arg_2: S, __enum_dispatch_arg_3: &[LiteralValue], ) -> Result<S, ProofError>
Compute the evaluation of a multilinear extension from this expression
at the random sumcheck point and adds components needed to verify the expression to
[VerificationBuilder<S>
]
Source§fn get_column_references(
&self,
__enum_dispatch_arg_0: &mut IndexSet<ColumnRef, BuildHasherDefault<AHasher>>,
)
fn get_column_references( &self, __enum_dispatch_arg_0: &mut IndexSet<ColumnRef, BuildHasherDefault<AHasher>>, )
Insert in the [IndexSet
] columns
all the column
references in the BoolExpr
or forwards the call to some
subsequent bool_expr
Source§impl Serialize for DynProofExpr
impl Serialize for DynProofExpr
Source§impl TryInto<ColumnExpr> for DynProofExpr
impl TryInto<ColumnExpr> for DynProofExpr
impl StructuralPartialEq for DynProofExpr
Auto Trait Implementations§
impl Freeze for DynProofExpr
impl RefUnwindSafe for DynProofExpr
impl Send for DynProofExpr
impl Sync for DynProofExpr
impl Unpin for DynProofExpr
impl UnwindSafe for DynProofExpr
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> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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 moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.