pub fn values(&self, cols_trace: &[usize]) -> Vec<Vec<FieldElement<F>>> {
        cols_trace
            .iter()
            .map(|i| {
                self.constraints
                    .iter()
                    .filter(|c| c.col == *i)
                    .map(|c| c.value.clone())
                    .collect()
            })
            .collect()
    }
For every trace column, give all the values the trace must be equal to in
the steps where the boundary constraints hold
crates/provers/stark/src/constraints/boundary.rs