A constraint-based framework to model harmony for algorithmic composition
Principles of Constraint Programming