To formalize this concept we introduce the definition of valid inequality and cut inequality. We say that an inequality ax not greater than b is a valid inequality for P(S) if it is satisfied by each of element in P(S). We say that it is a cut inequality if it is valid and is violated by some element in P.
So in order to apply the previous idea we need two ingredients. First of all we have to "identify" theoretically families of valid inequalities which completelly describe the polyhedron P(S). A valid inequality for P(S) is an inequality satisfied by each element in P(S). Usually we obtain families with an exponential number of inequalities which cannot be added simultaneously to the formulation. But this is not even necessary if we know how to solve what is called the separation problem with respect to a given family L. This can be stated as follows. Given a current solution x* not in P(S) find a valid inequality of L violated by x*. In this case the inequality found separates x* from P(S) and it is called a cut.
If we have these two ingredients, that is to say a thoreticalm description of P(S) in terms of a family L of valid inequalities and we know how to solve the corresponding separation problem, then we may solve the integer linear programming problem with the following procedure.