kuhn tucker conditions in nonlinear programming