Rompecabezas lógico en Prolog - uso de listas

Estoy tratando de resolver el siguiente problema en Prolog, y creo que lo he codificado correctamente, pero mis consultas simplemente devuelven falso. ¿Algún consejo sobre qué cambiar? El problema es el siguiente:

"Bagel Alley, la tienda local de bagels, siempre fue un lugar de actividad furiosa durante el viaje de la mañana cuando la gente se detenía para tomar su café y bagel camino al trabajo. Recién hechos en el lugar cada mañana, los bagels eran muy populares y los ¡El hecho de que la tienda también tuviera un excelente café era como la guinda del pastel! Las personas que trabajaban en Bagel Alley eran alegres y amables, además de competentes, por lo que a pesar del gran volumen de clientes, la espera nunca fue larga ni desagradable. cuatro de sus compañeros de trabajo se detuvieron esta mañana para ver de qué hablaban todos y quedaron gratamente sorprendidos al descubrir que la tienda estaba a la altura de su reputación. Determine el nombre de cada compañero de trabajo, qué tipo de bagel con su cobertura y qué sabor y tamaño de café (pequeño, mediano o grande) cada uno ordenado ".

Brad consiguió su panecillo, que no era trigo, sin nada. Walt pidió un café pequeño.

Los dos compañeros de trabajo que obtuvieron cafés medianos fueron los que obtuvieron el sabor a avellana y el que obtuvo su bagel con mantequilla de maní.

El que consiguió el panecillo de cebolla, pero no con mantequilla, también recibió un café francés de vainilla, pero no el tamaño pequeño.

Los cinco compañeros de trabajo eran Joe, el que tomó un café grande, el que recibió café con sabor a Amaretto, el que obtuvo un panecillo de trigo y el que puso huevo y tocino en su panecillo.

Rick no ordenó el bagel de arándanos pero sí consiguió café colombiano. El café Amaretto fue ordenado con el bagel cheddar pero no por Walt.

El queso crema no venía con el bagel de arándanos pero sí con un café grande. El panecillo de sésamo vino con mantequilla pero Carlos no lo ordenó.

El código de Prolog que he escrito está aquí:

bagels(Sol):-
   Sol = [[_,_,_,_,_],[_,_,_,_,_],[_,_,_,_,_],[_,_,_,_,_],[_,_,_,_,_]],
   member([brad,X,plain,_,_], Sol), X \== wheat,
   member([walt,_,_,small,_], Sol),
   member([_,_,_,medium1,hazelnut], Sol),
   member([_,_,peanut_butter,medium2,_], Sol),
   member([_,onion,Y,Z,french_vanilla], Sol), Y \== butter, Z \== small,
   member([joe,Ja,Jb,Jc,Jd], Sol),Ja\==wheat,Jb\==egg_bacon,Jc\==large,Jd==amaretto,
   member([La,Lb,Lc,large,Ld], Sol), La\==joe,Lb\==wheat,Lc\==egg_bacon,Ld\==amaretto,
   member([Aa,Ab,Ac,Ad,amaretto], Sol), Aa\==joe,Ab\==wheat,Ac\==egg_bacon,Ad\==large,
   member([Wa,wheat,Wb,Wc,Wd], Sol), Wa\==joe,Wb\==egg_bacon,Wc\==large,Wd\==amaretto,
   member([Ea,Eb,egg_bacon,Ec,Ed], Sol), Ea\==joe,Eb\==wheat,Ec\==large,Ed\==amaretto,
   member([rick,R,_,_,columbian], Sol),R\==blueberry,
   member([A,cheddar,_,_,amaretto], Sol), A\==walt,
   member([_,B,cream_cheese,large,_], Sol), B\==blueberry,
   member([C,sesame,butter,_,_], Sol), C \== carlos,
   member([_,_,_,other,_], Sol),
   member([_,_,_,_,other], Sol).

Creo que ejecuta la consulta "bagels (X)". debería darme la solución al problema, pero devuelve falso. ¿Me estoy perdiendo de algo? ¡Muchas gracias de antemano!

Respuestas a la pregunta(2)

Su respuesta a la pregunta