prc(A,B,[A,B,C,D,E]).  prc(A,C,[A,B,C,D,E]).  prc(A,D,[A,B,C,D,E]). 
prc(A,E,[A,B,C,D,E]).  prc(B,C,[A,B,C,D,E]).  prc(B,D,[A,B,C,D,E]). 
prc(B,E,[A,B,C,D,E]).  prc(C,D,[A,B,C,D,E]).  prc(C,E,[A,B,C,D,E]). 
prc(D,E,[A,B,C,D,E]).

one(A,[A,B,C,D,E]).
three(C,[A,B,C,D,E]).

neighbor(A,B,[A,B,C,D,E]).  neighbor(B,C,[A,B,C,D,E]).
neighbor(C,D,[A,B,C,D,E]).  neighbor(D,E,[A,B,C,D,E]).
neighbor(B,A,[A,B,C,D,E]).  neighbor(C,B,[A,B,C,D,E]).
neighbor(D,C,[A,B,C,D,E]).  neighbor(E,D,[A,B,C,D,E]).

nation(h(N,C,A,B,T),N).
color(h(N,C,A,B,T),C).
animal(h(N,C,A,B,T),A).
drink(h(N,C,A,B,T),B).
tobacco(h(N,C,A,B,T),T).

go(X,Y) :- St = [h(N1,C1,A1,B1,T1),h(N2,C2,A2,B2,T2),
                 h(N3,C3,A3,B3,T3),h(N4,C4,A4,B4,T4),h(N5,C5,A5,B5,T5)],
  member(X2,St),nation(X2,english),color(X2,green),
  member(X3,St),nation(X3,spanish),animal(X3,dog),
  member(X4,St),color(X4,red),drink(X4,coffee),
  member(X5,St),nation(X5,ukrainian),drink(X5,tea),
  neighbor(X6a,X6b,St),prc(X6b,X6a,St),color(X6a,red),color(X6b,white),
  member(X7,St),tobacco(X7,oldgold),animal(X7,snails),
  member(X8,St),color(X8,yellow),tobacco(X8,gauloises),
  three(X9,St),drink(X9,milk),
  one(X10,St),nation(X10,norwegian),
  neighbor(X11a,X11b,St),tobacco(X11a,chesterfield),animal(X11b,fox),
  neighbor(X12a,X12b,St),tobacco(X12a,gauloises),animal(X12b,horse),
  member(X13,St),tobacco(X13,luckystrikes),drink(X13,orangejuice),
  member(X14,St),nation(X14,japanese),tobacco(X14,gitanes),
  neighbor(X15a,X15b,St),nation(X15a,norwegian),color(X15b,blue),
  member(Q,St),animal(Q,zebra),nation(Q,X),
  member(R,St),drink(R,water),nation(R,Y).
