Constraint Satisfaction Programming