Constraint Satisfaction in Logic Programming