The AlgebraicGraph is a directed acyclic graph used to represent integrity constraints. To
store it compactly, it is represented as a vector of nodes where each node references other
nodes by their index in the vector.
A ConstraintRoot represents the entry node of a subgraph within the AlgebraicGraph
representing a constraint. It also contains the ConstraintDomain for the constraint, which is
the domain against which the constraint should be applied.
Constraints is the algebraic graph representation of all the constraints
in an [AirScript]. The graph contains all of the constraints, each of which
is a subgraph consisting of all the expressions involved in evaluating the constraint,
including constants, references to the trace, public inputs, random values, and
periodic columns.