Solved constraints
Updates internal list of inequalities with a new GreaterOrEqual
Updates internal list of inequalities with a new GreaterOrEqual
The larger constraint, must be either known or a variable
The smaller constraint
Updates internal list of inequalities with a new GreaterOrEqual
Updates internal list of inequalities with a new GreaterOrEqual
The larger constraint, must be either known or a variable
The smaller constraint
Updates internal list of inequalities with a new LesserOrEqual
Updates internal list of inequalities with a new LesserOrEqual
The smaller constraint, must be either known or a variable
The larger constraint
Updates internal list of inequalities with a new LesserOrEqual
Updates internal list of inequalities with a new LesserOrEqual
The smaller constraint, must be either known or a variable
The larger constraint
Returns illegal constraints, where both a >= and <= inequality are used on the same variable
Clear all previously recorded/solved constraints
Returns a solved width, if it exists and is solved
Returns a solved constraint, if it exists and is solved
For debugging, can serialize the initial constraints
For debugging, can serialize the solved constraints
Solves constraints present in collected inequalities
Solves constraints present in collected inequalities
Constraint solving steps: 1) Assert no variable has both >= and <= inequalities (it can have multiple of the same kind of inequality) 2) Merge constraints of variables having multiple inequalities 3) Forward solve inequalities
Forwards-Backwards Constraint Solver
Used for computing Width and Bound constraints
Note - this is an O(N) algorithm, but requires exponential memory. We rely on aggressive early optimization of constraint expressions to (usually) get around this.