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 moreSource§impl Debug for TransitionConstraintDegree
impl Debug for TransitionConstraintDegree
impl Eq for TransitionConstraintDegree
impl StructuralPartialEq for TransitionConstraintDegree
Auto Trait Implementations§
impl Freeze for TransitionConstraintDegree
impl RefUnwindSafe for TransitionConstraintDegree
impl Send for TransitionConstraintDegree
impl Sync for TransitionConstraintDegree
impl Unpin for TransitionConstraintDegree
impl UnwindSafe for TransitionConstraintDegree
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit)