A unified mathematical programming formulation of strain driven and interior point algorithms for shakedown and limit analysis