in prover/src/lib.rs [470:502]
fn build_constraint_commitment<E, H>(
&self,
composition_poly: &CompositionPoly<E>,
domain: &StarkDomain<Self::BaseField>,
) -> ConstraintCommitment<E, H>
where
E: FieldElement<BaseField = Self::BaseField>,
H: ElementHasher<BaseField = Self::BaseField>,
{
// evaluate composition polynomial columns over the LDE domain
#[cfg(feature = "std")]
let now = Instant::now();
let composed_evaluations = composition_poly.evaluate(domain);
#[cfg(feature = "std")]
debug!(
"Evaluated composition polynomial columns over LDE domain (2^{} elements) in {} ms",
log2(composed_evaluations.num_cols()),
now.elapsed().as_millis()
);
// build constraint evaluation commitment
#[cfg(feature = "std")]
let now = Instant::now();
let commitment = composed_evaluations.commit_to_rows();
let constraint_commitment = ConstraintCommitment::new(composed_evaluations, commitment);
#[cfg(feature = "std")]
debug!(
"Computed constraint evaluation commitment (Merkle tree of depth {}) in {} ms",
constraint_commitment.tree_depth(),
now.elapsed().as_millis()
);
constraint_commitment
}