This tutorial describes a logic-based approach to formulating and solving pure and mixed integer programming problems.It develops logical counterparts for ideas associated with traditional branch-and-cut methods, such as cutting planes, facet-de ning cuts, relaxations, etc.The motivations for doing this are a) to exploit the structure of a wide range of problems that are too complex for polyhedral analysis, b) to take a d v antage of logic processing techniques developed for constraint programming and logic programming, and c) to provide a uni ed approach to solving the growing number of problems with both qualitative and quantitative elements.