concave programming