Enigma com o GNU Prolog, semelhante ao Einstein Riddle

Eu sou um completo iniciante em programação e tenho que criar e resolver um enigma no Prolog usando o GNU Prolog, semelhante ao enigma de Einstein, embora menos sofisticado. Eu tenho tentado criar um enigma para os itens contidos dentro do seguintemesa.

Meu código até agora se parece com isso, mas eu realmente não entendo completamente o que estou fazendo errado ou bem aqui. Eu posso compilar o código no GNU Prolog, mas isso não vai resolver o enigma:

middle(M,[_,M,_]).
right(A,B,[[_|A]|B]).
left(A,B,[A|[B|_]]).
run:-
   X = [_,_,_],
   middle([_,brown,_],X),   /* the brown guinea pig lives in the middle of the cage */
   member([brown,carrots,_],X), /* the brown guinea pig loves to eat carrots */
   member([_,salad,giggles],X), /* the salad eating guinea pig giggles */
   right([_,salad,_],[brown,_,_],X),    /* the salad eating guinea pig sits to the right of the brown guinea pig */
   left([black,_,_],[_,_,squeaks],X),   /* the black guinea pig sleeps to the left of the squeaking guinea pig */
   member([black,_,grumbles],X),    /* the black guinea pig grumbles */
   member([grey,_,giggles],X),  /* the grey guinea pig giggles*/
   write(X),nl, /* write out all fur colors */
   write('the '),write(N),write(' guinea pig loves to eat cucumbers'),nl. /* answer to the question */

Eu agradeceria muito qualquer ajuda, já que estou bastante familiarizado com essas coisas, mas tenho que descobrir uma solução para uma aula que estou fazendo. Qualquer dica seria de grande ajuda. Obrigado!

questionAnswers(1)

yourAnswerToTheQuestion