  Maximum Likelihood (ML) decoding is the optimal decoding algorithm for
arbitrary linear block codes and can be written as an Integer Programming (IP)
problem. Feldman et al. relaxed this IP problem and presented Linear
Programming (LP) based decoding algorithm for linear block codes. In this
paper, we propose a new IP formulation of the ML decoding problem and solve the
IP with generic methods. The formulation uses indicator variables to detect
violated parity checks. We derive Gomory cuts from our formulation and use them
in a separation algorithm to find ML codewords. We further propose an efficient
method of finding cuts induced by redundant parity checks (RPC). Under certain
circumstances we can guarantee that these RPC cuts are valid and cut off the
fractional optimal solutions of LP decoding. We demonstrate on two LDPC codes
and one BCH code that our separation algorithm performs significantly better
than LP decoding.
