Non-linear semi-infinite programming