Part 1: Overview of CP, Filtering, Search, Consistency, Fixpoint

We propose a set of exercises to extend MiniCP with useful features. By doing these exercises you will gradually progress in your understanding of CP. For each exercise, we ask you to implement JUnit tests to make sure that your implementation works as expected. If you don’t test each feature independently you take the risk to lose a lot of time finding very difficult bugs.

We ask you not to publish your solutions on a public repository. The instructors interested to get the source code of our solutions can contact us.

Theoretical Questions

Forking MiniCP to Do the Programming Exercices

Follow the tutorial and then clone your repository.

Then follow this tutorial to import it in your IDE.

Less-or-equal Reified Constraint

Implement IsLessOrEqual.java.

This is a propagator for the constraint b iff x <= c, which is called the reified constraint (or: reification) of the constraint x <= c: it holds if Boolean variable b is true if and only if variable x is less than or equal to value c.

For example, the constraint holds for

b = true , x = 4, c = 5
b = false, x = 4, c = 2

but is violated for

b = true , x = 5, c = 4
b = false, x = 2, c = 4

For an example of reification, you can look at IsEqual.java.

Check that your implementation passes the tests IsLessOrEqualTest.java.