  Branch and cut is the dominant paradigm for solving a wide range of
mathematical programming problems -- linear or nonlinear -- combining efficient
search (via branch and bound) and relaxation-tightening procedures (via cutting
planes, or cuts). While there is a wealth of computational experience behind
existing cutting strategies, there is simultaneously a relative lack of
theoretical explanations for these choices, and for the tradeoffs involved
therein. Recent papers have explored abstract models for branching and for
comparing cuts with branch and bound. However, to model practice, it is crucial
to understand the impact of jointly considering branching and cutting
decisions. In this paper, we provide a framework for analyzing how cuts affect
the size of branch-and-cut trees, as well as their impact on solution time. Our
abstract model captures some of the key characteristics of real-world phenomena
in branch-and-cut experiments, regarding whether to generate cuts only at the
root or throughout the tree, how many rounds of cuts to add before starting to
branch, and why cuts seem to exhibit nonmonotonic effects on the solution
process.
