Constraint circuits are a way to represent constraint polynomials in a way that is amenable
to optimizations. The constraint circuit is a directed acyclic graph (DAG) of
CircuitExpression
s, where each
CircuitExpression
is a node in the graph. The edges of the
graph are labeled with
BinOp
s. The leafs of the graph are the inputs to the constraint
polynomial, and the (multiple) roots of the graph are the outputs of all the
constraint polynomials, with each root corresponding to a different constraint polynomial.
Because the graph has multiple roots, it is called a “multitree.”