Nonlinear Programming, Theory and Algorithms