Like JuMP.getvalue, but returns a Nullable{T}() for unset variables instead of throwing a warning


Gurobi doesn't understand constant terms in the objective, which can affect the way the relative MIP gap is interpreted. To work around this, we'll replace the constant term k with an affine term 1*x for a new variable x fixed to equal k.


Simplification function that chooses the appropriate algorithm based on the number of variables.


Naive O(N^2) simplification. Slower for very large expressions, but allocates no memory and is solidly faster for expressions with < 100 variables.