Figure 1: Preprocessed trace as a selector
isFirst
column, where the value is 1 for the first row and 0 for all other rows.
IsFirstColumn
struct that will be used as a preprocessed trace.
We will use the gen_column()
function to generate a CircleEvaluation
struct that is 1 for the first row and 0 for all other rows.
The id()
function is needed to identify this column when evaluating the constraints.
is_first_id
field to retrieve the row value of the IsFirstColumn
struct.
Then, we compose two constraints using the IsFirstColumn
row value as a selector and adding them together.
If you’re unfamiliar with how max_constraint_log_degree_bound(&self)
should be implemented, please refer to this note.