:- use_module(library(clpfd)). % 6.1 schedule(C1, C2, C3, C4, C5) :- % domains member(C1, [a]), member(C2, [a,c]), member(C3, [a,b,c]), member(C4, [a,b,c]), member(C5, [a,c]), % constraints dif(C1, C2), dif(C1, C3), dif(C1, C5), dif(C3, C4), dif(C3, C5), dif(C4, C5). % 6.3 bool(0). bool(1). show(0, false). show(1, true). csp(A1, B, C, D) :- bool(A), between(0, 3, B), between(0, 3, C), between(0, 6, D), A #==> B #=< 2, C #< 2 #==> A, B + C #< 4, B #> D, D #= 2 * C, show(A, A1).