Struct winter_verifier::BoundaryConstraint [−][src]
pub struct BoundaryConstraint<B, E> where
E: FieldElement<BaseField = B>,
B: StarkField, { /* fields omitted */ }Expand description
The numerator portion of a boundary constraint.
A boundary constraint is described by a rational function $\frac{f(x) - b(x)}{z(x)}$, where:
- $f(x)$ is a trace polynomial for the register against which the constraint is placed.
- $b(b)$ is the value polynomial for this constraint.
- $z(x)$ is the constraint divisor polynomial.
In addition to the value polynomial, a BoundaryConstraint also contains info needed to
evaluate the constraint and to compose constraint evaluations with other constraints (i.e.,
constraint composition coefficients).
BoundaryConstraints cannot be instantiated directly, they are created internally from
Assertions.
Implementations
Returns index of the register against which this constraint applies.
Returns offset by which we need to shift the domain before evaluating this constraint.
The offset is returned as a tuple describing both, the number of steps by which the domain needs to be shifted, and field element by which a domain element needs to be multiplied to achieve the desired shift.
Evaluates this constraint at the specified point x.
The constraint is evaluated by computing $f(x) - b(x)$, where:
- $f$ is a trace polynomial for the register against which the constraint is placed.
- $f(x)$ =
trace_value - $b$ is the value polynomial for this constraint.
For boundary constraints derived from single and periodic assertions, $b(x)$ is a constant.
Trait Implementations
impl<B, E> Clone for BoundaryConstraint<B, E> where
E: Clone + FieldElement<BaseField = B>,
B: Clone + StarkField,
impl<B, E> Clone for BoundaryConstraint<B, E> where
E: Clone + FieldElement<BaseField = B>,
B: Clone + StarkField,
impl<B, E> Debug for BoundaryConstraint<B, E> where
E: Debug + FieldElement<BaseField = B>,
B: Debug + StarkField,
impl<B, E> Debug for BoundaryConstraint<B, E> where
E: Debug + FieldElement<BaseField = B>,
B: Debug + StarkField,
impl<B, E> PartialEq<BoundaryConstraint<B, E>> for BoundaryConstraint<B, E> where
E: PartialEq<E> + FieldElement<BaseField = B>,
B: PartialEq<B> + StarkField,
impl<B, E> PartialEq<BoundaryConstraint<B, E>> for BoundaryConstraint<B, E> where
E: PartialEq<E> + FieldElement<BaseField = B>,
B: PartialEq<B> + StarkField,
This method tests for self and other values to be equal, and is used
by ==. Read more
This method tests for !=.
impl<B, E> Eq for BoundaryConstraint<B, E> where
E: Eq + FieldElement<BaseField = B>,
B: Eq + StarkField,
impl<B, E> StructuralEq for BoundaryConstraint<B, E> where
E: FieldElement<BaseField = B>,
B: StarkField,
impl<B, E> StructuralPartialEq for BoundaryConstraint<B, E> where
E: FieldElement<BaseField = B>,
B: StarkField,
Auto Trait Implementations
impl<B, E> RefUnwindSafe for BoundaryConstraint<B, E> where
B: RefUnwindSafe,
E: RefUnwindSafe,
impl<B, E> Send for BoundaryConstraint<B, E>
impl<B, E> Sync for BoundaryConstraint<B, E>
impl<B, E> Unpin for BoundaryConstraint<B, E> where
B: Unpin,
E: Unpin,
impl<B, E> UnwindSafe for BoundaryConstraint<B, E> where
B: UnwindSafe,
E: UnwindSafe,
Blanket Implementations
Mutably borrows from an owned value. Read more
type Output = T
type Output = T
Should always be Self