Procedimiento “O” en prólogo.

Estoy haciendo un programa de prólogo para la universidad que es un poco como el juego de cluedo. Tengo seis sospechosos con diferentes rasgos:

suspect(Name, Age, Weapon, Shape, Object, Shoes)

El objetivo es implementar una serie de pistas para que el programa diga cuáles son los diferentes rasgos de los seis sospechosos. Por ejemplo:

suspect(Hannibal Lecter,67,knife,'in good shape',mac,'high heels')

Estoy teniendo problemas tratando de implementar la pista

or(suspect1, suspect2, suspect3, listOfSuspects)

Esta pista se supone que dice que elsuspect1 tiene los mismos rasgos quesuspect2 O comosuspect3 pero no ambos. Ejemplo: para indicar que el sospechoso que tiene 50 años tiene un anillo o un mac, pero no ambos:

or(suspect(_, 50, _, _, _, _),
   suspect(_, _, _, _, ring, _),
   suspect(_, _, _, _, mac, _), listOfSuspects).

Cualquier ayuda sería apreciada.

Respuestas a la pregunta(1)

Su respuesta a la pregunta