Duality in mathematical programming