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

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.

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.

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 $$

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

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
This method tests for self and other values to be equal, and is used by ==. Read more
This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Should always be Self
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.