Riddle con GNU Prolog, similar a Einstein Riddle

Soy un completo principiante en la programación y tengo que crear y resolver un enigma en Prolog usando GNU Prolog, similar al enigma Einstein, aunque menos sofisticado. He estado tratando de crear un enigma para los artículos contenidos en los siguientesmesa.

Mi código hasta ahora se parece a esto, pero realmente no entiendo completamente lo que estoy haciendo mal o aquí. Puedo compilar el código en GNU Prolog, pero no resolverá el 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 */

Apreciaría enormemente cualquier ayuda, ya que no estoy familiarizado con estas cosas, pero tengo que encontrar una solución para una clase que tomo. Cualquier consejo sería de gran ayuda. ¡Gracias!

Respuestas a la pregunta(1)

Su respuesta a la pregunta