:- lib(fd). start(Units) :- VN = [Sven, Ole, Klaus, Timo], NN = [Budde, Krug, Mueller, Becker], Jobs = [Gaertner, Caddy, Verkaeufer, Koch], VN :: [70..80,82..85], NN ::[70..80,82..85], Jobs :: [70..80, 82..85], % alle Variablen einer Liste unterschiedlich belegt alldifferent(VN), alldifferent(NN), alldifferent(Jobs), % unit(Schläge,Vorname, Nachname, Beruf) Units = [ unit(_,_,_,_), unit(_,_,_,_), unit(_,_,_,_), unit(_,_,_,_)], Constraints = [ unit(Sven, sven, _,_), unit(Ole, ole, _,_), unit(Klaus, klaus,_,_), unit(Timo, timo, _,_), unit(Budde, _, budde, _), unit(Krug, _, krug,_), unit(Mueller, _, mueller, _), unit(Becker, _, becker, _), unit(Gaertner, _,_,gaertner), unit(Caddy, _,_,caddy), unit(Verkaeufer, _,_,verkaeufer), unit(Koch, _,_,koch)], Sven ## Gaertner, Sven #< Ole, Sven #< Klaus, Sven #< Timo, Budde ## Ole, Budde #= Verkaeufer + 10, (Klaus #= Mueller + 7, Caddy #= Mueller + 4; Klaus #= Mueller + 4, Caddy #= Mueller + 7), Krug #= 78, Klaus #< Krug, psubset(Constraints, Units). psubset([],_). psubset([H|T],List) :- member(H,List), psubset(T,List).