Disjunctive Programming and a Hierarchy of Relaxations for Discrete Optimization Problems | Synapse