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_degree
is zero.- Any of the values in the
cycles
vector 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
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more