Nonlinear Programming:Theory and Algorithms