Constraint Logic Programming: A Survey