Introduction to constraint-handling techniques