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§
Source§impl 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>,
) -> TransitionConstraintDegree
pub fn with_cycles( base_degree: usize, cycles: Vec<usize>, ) -> 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§
Source§impl Clone for TransitionConstraintDegree
impl Clone for TransitionConstraintDegree
Source§fn clone(&self) -> TransitionConstraintDegree
fn clone(&self) -> TransitionConstraintDegree
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more