Nonlinear Programming Without A Penalty Function