pub trait EvalAtRow {
type F: FieldExpOps + Clone + Debug + Zero + Neg<Output = Self::F> + AddAssign + AddAssign<BaseField> + Add<Self::F, Output = Self::F> + Sub<Self::F, Output = Self::F> + Mul<BaseField, Output = Self::F> + Add<SecureField, Output = Self::EF> + Mul<SecureField, Output = Self::EF> + From<BaseField>;
type EF: One + Clone + Debug + Zero + Neg<Output = Self::EF> + AddAssign + Add<BaseField, Output = Self::EF> + Mul<BaseField, Output = Self::EF> + Add<SecureField, Output = Self::EF> + Sub<SecureField, Output = Self::EF> + Mul<SecureField, Output = Self::EF> + Add<Self::F, Output = Self::EF> + Mul<Self::F, Output = Self::EF> + Sub<Self::EF, Output = Self::EF> + Mul<Self::EF, Output = Self::EF> + From<SecureField> + From<Self::F>;
Show 13 methods
// Required methods
fn next_interaction_mask<const N: usize>(
&mut self,
interaction: usize,
offsets: [isize; N],
) -> [Self::F; N];
fn add_constraint<G>(&mut self, constraint: G)
where Self::EF: Mul<G, Output = Self::EF> + From<G>;
fn combine_ef(values: [Self::F; 4]) -> Self::EF;
// Provided methods
fn next_trace_mask(&mut self) -> Self::F { ... }
fn get_preprocessed_column(
&mut self,
_column: PreProcessedColumnId,
) -> Self::F { ... }
fn next_extension_interaction_mask<const N: usize>(
&mut self,
interaction: usize,
offsets: [isize; N],
) -> [Self::EF; N] { ... }
fn add_intermediate(&mut self, val: Self::F) -> Self::F { ... }
fn add_extension_intermediate(&mut self, val: Self::EF) -> Self::EF { ... }
fn add_to_relation<R: Relation<Self::F, Self::EF>>(
&mut self,
entry: RelationEntry<'_, Self::F, Self::EF, R>,
) { ... }
fn write_logup_frac(&mut self, _fraction: Fraction<Self::EF, Self::EF>) { ... }
fn finalize_logup_batched(&mut self, _batching: &Vec<usize>) { ... }
fn finalize_logup(&mut self) { ... }
fn finalize_logup_in_pairs(&mut self) { ... }
}Expand description
A trait for evaluating expressions at some point or row.
Required Associated Types§
Sourcetype F: FieldExpOps + Clone + Debug + Zero + Neg<Output = Self::F> + AddAssign + AddAssign<BaseField> + Add<Self::F, Output = Self::F> + Sub<Self::F, Output = Self::F> + Mul<BaseField, Output = Self::F> + Add<SecureField, Output = Self::EF> + Mul<SecureField, Output = Self::EF> + From<BaseField>
type F: FieldExpOps + Clone + Debug + Zero + Neg<Output = Self::F> + AddAssign + AddAssign<BaseField> + Add<Self::F, Output = Self::F> + Sub<Self::F, Output = Self::F> + Mul<BaseField, Output = Self::F> + Add<SecureField, Output = Self::EF> + Mul<SecureField, Output = Self::EF> + From<BaseField>
The field type holding values of columns for the component. These are the inputs to the constraints. It might be BaseField packed types, or even SecureField, when evaluating the columns out of domain.
Sourcetype EF: One + Clone + Debug + Zero + Neg<Output = Self::EF> + AddAssign + Add<BaseField, Output = Self::EF> + Mul<BaseField, Output = Self::EF> + Add<SecureField, Output = Self::EF> + Sub<SecureField, Output = Self::EF> + Mul<SecureField, Output = Self::EF> + Add<Self::F, Output = Self::EF> + Mul<Self::F, Output = Self::EF> + Sub<Self::EF, Output = Self::EF> + Mul<Self::EF, Output = Self::EF> + From<SecureField> + From<Self::F>
type EF: One + Clone + Debug + Zero + Neg<Output = Self::EF> + AddAssign + Add<BaseField, Output = Self::EF> + Mul<BaseField, Output = Self::EF> + Add<SecureField, Output = Self::EF> + Sub<SecureField, Output = Self::EF> + Mul<SecureField, Output = Self::EF> + Add<Self::F, Output = Self::EF> + Mul<Self::F, Output = Self::EF> + Sub<Self::EF, Output = Self::EF> + Mul<Self::EF, Output = Self::EF> + From<SecureField> + From<Self::F>
A field type representing the closure of F with multiplying by SecureField. Constraints
usually get multiplied by SecureField values for security.
Required Methods§
Sourcefn next_interaction_mask<const N: usize>(
&mut self,
interaction: usize,
offsets: [isize; N],
) -> [Self::F; N]
fn next_interaction_mask<const N: usize>( &mut self, interaction: usize, offsets: [isize; N], ) -> [Self::F; N]
Returns the mask values of the given offsets for the next column in the interaction.
Sourcefn add_constraint<G>(&mut self, constraint: G)
fn add_constraint<G>(&mut self, constraint: G)
Adds a constraint to the component.
Sourcefn combine_ef(values: [Self::F; 4]) -> Self::EF
fn combine_ef(values: [Self::F; 4]) -> Self::EF
Combines 4 base field values into a single extension field value.
Provided Methods§
Sourcefn next_trace_mask(&mut self) -> Self::F
fn next_trace_mask(&mut self) -> Self::F
Returns the next mask value for the first interaction at offset 0.
fn get_preprocessed_column(&mut self, _column: PreProcessedColumnId) -> Self::F
Sourcefn next_extension_interaction_mask<const N: usize>(
&mut self,
interaction: usize,
offsets: [isize; N],
) -> [Self::EF; N]
fn next_extension_interaction_mask<const N: usize>( &mut self, interaction: usize, offsets: [isize; N], ) -> [Self::EF; N]
Returns the extension mask values of the given offsets for the next extension degree many columns in the interaction.
Sourcefn add_intermediate(&mut self, val: Self::F) -> Self::F
fn add_intermediate(&mut self, val: Self::F) -> Self::F
Adds an intermediate value in the base field to the component and returns its value. Does nothing by default.
Sourcefn add_extension_intermediate(&mut self, val: Self::EF) -> Self::EF
fn add_extension_intermediate(&mut self, val: Self::EF) -> Self::EF
Adds an intermediate value in the extension field to the component and returns its value. Does nothing by default.
Sourcefn add_to_relation<R: Relation<Self::F, Self::EF>>(
&mut self,
entry: RelationEntry<'_, Self::F, Self::EF, R>,
)
fn add_to_relation<R: Relation<Self::F, Self::EF>>( &mut self, entry: RelationEntry<'_, Self::F, Self::EF, R>, )
Adds entry.values to entry.relation with entry.multiplicity for all ‘entry’ in
‘entries’, batched together.
Constraint degree increases with number of batched constraints as the denominators are
multiplied.
fn write_logup_frac(&mut self, _fraction: Fraction<Self::EF, Self::EF>)
fn finalize_logup_batched(&mut self, _batching: &Vec<usize>)
fn finalize_logup(&mut self)
fn finalize_logup_in_pairs(&mut self)
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".