Supporting heuristic optimization too? Only objectives and variables would be needed and constraints would be superfluous. Objectives would probably have to support non-mathematical evaluation functions.
Objective and Constraint could probably inherit from a common base class.
use `pyreverse -my -o pdf optlang` to generate a UML diagram
Looks like it is [not ok](https://code.google.com/p/sympy/issues/detail?id=3680#c7) to change sympy Symbol's name attribute (doesn't raise an error though).
Should Variables be singletons?