linear constraint solver