  A wide range of problems can be modelled as constraint satisfaction problems
(CSPs), that is, a set of constraints that must be satisfied simultaneously.
Constraints can either be represented extensionally, by explicitly listing
allowed combinations of values, or implicitly, by special-purpose algorithms
provided by a solver.
  Such implicitly represented constraints, known as global constraints, are
widely used; indeed, they are one of the key reasons for the success of
constraint programming in solving real-world problems. In recent years, a
variety of restrictions on the structure of CSP instances have been shown to
yield tractable classes of CSPs. However, most such restrictions fail to
guarantee tractability for CSPs with global constraints. We therefore study the
applicability of structural restrictions to instances with such constraints.
  We show that when the number of solutions to a CSP instance is bounded in key
parts of the problem, structural restrictions can be used to derive new
tractable classes. Furthermore, we show that this result extends to
combinations of instances drawn from known tractable classes, as well as to CSP
instances where constraints assign costs to satisfying assignments.
