csp(C1, C2, C3, C4, C5) :- member(C1, [c]), member(C2, [b]), member(C3, [a,c]), member(C4, [a,c]), member(C5, [b,c]), dif(C1, C2), dif(C2, C3), dif(C2, C4), dif(C3, C4), dif(C3, C5), dif(C4, C5). :- use_module(library(clpfd)). csp(A, B, C, D) :- between(0,1, 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.