pub struct TransitionConstraintDegree { /* private fields */ }Expand description
Degree descriptor of a transition constraint.
Describes constraint degree as a combination of multiplications of periodic and trace
columns. For example, degree of a constraint which requires multiplication of two trace
columns can be described as: base: 2, cycles: []. A constraint which requires
multiplication of 3 trace columns and a periodic column with a period of 32 steps can be
described as: base: 3, cycles: [32].
Implementations
sourceimpl TransitionConstraintDegree
impl TransitionConstraintDegree
sourcepub fn new(degree: usize) -> TransitionConstraintDegree
pub fn new(degree: usize) -> TransitionConstraintDegree
Creates a new transition constraint degree descriptor for constraints which involve multiplications of trace columns only.
For example, if a constraint involves multiplication of two trace columns, degree
should be set to 2. If a constraint involves multiplication of three trace columns,
degree should be set to 3 etc.
Panics
Panics if the provided degree is zero.
sourcepub fn with_cycles(
base_degree: usize,
cycles: Vec<usize, Global>
) -> TransitionConstraintDegree
pub fn with_cycles(
base_degree: usize,
cycles: Vec<usize, Global>
) -> TransitionConstraintDegree
Creates a new transition degree descriptor for constraints which involve multiplication of trace columns and periodic columns.
For example, if a constraint involves multiplication of two trace columns and one
periodic column with a period length of 32 steps, base_degree should be set to 2,
and cycles should be set to vec![32].
Panics
Panics if:
base_degreeis zero.- Any of the values in the
cyclesvector is smaller than two or is not powers of two.
sourcepub fn get_evaluation_degree(&self, trace_length: usize) -> usize
pub fn get_evaluation_degree(&self, trace_length: usize) -> usize
Computes a degree to which this degree description expands in the context of execution trace of the specified length.
The expanded degree is computed as follows:
$$ b \cdot (n - 1) + \sum_{i = 0}^{k - 1}{\frac{n \cdot (c_i - 1)}{c_i}} $$
where: $b$ is the base degree, $n$ is the trace_length, $c_i$ is a cycle length of
periodic column $i$, and $k$ is the total number of periodic columns for this degree
descriptor.
Thus, evaluation degree of a transition constraint which involves multiplication of two trace columns and one periodic column with a period length of 32 steps when evaluated over an execution trace of 64 steps would be:
$$ 2 \cdot (64 - 1) + \frac{64 \cdot (32 - 1)}{32} = 126 + 62 = 188 $$
sourcepub fn min_blowup_factor(&self) -> usize
pub fn min_blowup_factor(&self) -> usize
Returns a minimum blowup factor needed to evaluate constraint of this degree.
This is guaranteed to be a power of two, greater than one.
Trait Implementations
sourceimpl Clone for TransitionConstraintDegree
impl Clone for TransitionConstraintDegree
sourcefn clone(&self) -> TransitionConstraintDegree
fn clone(&self) -> TransitionConstraintDegree
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source. Read more
sourceimpl Debug for TransitionConstraintDegree
impl Debug for TransitionConstraintDegree
sourceimpl PartialEq<TransitionConstraintDegree> for TransitionConstraintDegree
impl PartialEq<TransitionConstraintDegree> for TransitionConstraintDegree
sourcefn eq(&self, other: &TransitionConstraintDegree) -> bool
fn eq(&self, other: &TransitionConstraintDegree) -> bool
This method tests for self and other values to be equal, and is used
by ==. Read more
sourcefn ne(&self, other: &TransitionConstraintDegree) -> bool
fn ne(&self, other: &TransitionConstraintDegree) -> bool
This method tests for !=.
impl Eq for TransitionConstraintDegree
impl StructuralEq for TransitionConstraintDegree
impl StructuralPartialEq for TransitionConstraintDegree
Auto Trait Implementations
impl RefUnwindSafe for TransitionConstraintDegree
impl Send for TransitionConstraintDegree
impl Sync for TransitionConstraintDegree
impl Unpin for TransitionConstraintDegree
impl UnwindSafe for TransitionConstraintDegree
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into)Uses borrowed data to replace owned data, usually by cloning. Read more