/* sicstus version */

:- use_module(library(clpfd)).
main:-
/*	VarsOpl=[Yellow, Norwegian, Fox, Water, Diplomat,
		 Blue, Italian, Horse, Tea, Doctor,
		 Red, English, Snails, Milk, Sculptor,
		 White, Spanish, Dog, Orange_juice, Violist,
		 Green, Japanese, Zebra, Coffee, Painter], 
*/
Vars =  [Norwegian,Italian,English,Spanish,Japanese,
	 Yellow,Blue,Red,White,Green,
	 Diplomat,Doctor,Sculptor,Violist,Painter,
	 Fox,Horse,Snails,Dog,Zebra,
	 Water,Tea,Milk,Orange_juice,Coffee],

Nationalities = [Norwegian,Italian,English,Spanish,Japanese],
Colors = [Yellow,Blue,Red,White,Green],
Profs = [Diplomat,Doctor,Sculptor,Violist,Painter],
Animals=[Fox,Horse,Snails,Dog,Zebra],
Drinks = [Water,Tea,Milk,Orange_juice,Coffee],

domain(Nationalities,1,5),
domain(Colors ,1,5),
domain(Profs ,1,5),
domain(Animals ,1,5),
domain(Drinks ,1,5),

all_different(Nationalities),
all_different(Colors),
all_different(Profs),
all_different(Animals),
all_different(Drinks),

English#=Red,
Spaniard#=Dog,
Japanese#=Painter,
Italian#=Tea,
Norwegian#=1,
Green#=Coffee,
Green#=White+1,
Sculptor#=Snails,
Diplomat#=Yellow,
Milk#=3,
next_to(Norwegian,Blue),
Violist#=Orange_juice,
next_to(Fox,Doctor),
next_to(Horse,Diplomat),
labeling([],Vars),
write(Vars),nl.
% write(VarsOpl),nl.



next_to(A,B):- abs(A-B) #= 1.

