Essentials of Constraint Programming by