Optimize objective expressions as well.
Split functional list into its two subclasses.
Split the Nothing singleton.
Changed unsat test to have only one unique solution.
Throw away temporary variables created during coalescing.
Graph reachability.
Only generate symmetry breaking when necessary.
Only create graph nodes when needed.
Traverse nodes rather than rewrite them.
Propagate children cardinality for joining on a relation.
Fixed wrong optimization for the within constraint.