UTNianos

Versión completa: Consulta TP Logico
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Estoy tratando de encontrarle la vuelta, pero no logro como resolver este ejercicio. Yo lo hice de esta forma, que por lo que me conto el ayudante no es la mejor (esta mal).

Les dejo el enunciado:
Un asesino siempre odia a su víctima y nunca es más rico que ella. El asesino de la tía Agatha,
además, vive en la mansión Dreadbury.
Tía Agatha, el carnicero y Charles son las únicas personas que viven en la mansión Dreadbury.

El carnicero odia a las mismas personas que odia tía Agatha.
Charles odia a todas las personas de la mansión que no son odiadas por la tía Agatha.
Agatha odia a todos los que viven en la mansión, excepto al carnicero.
Quien no es odiado por el carnicero y vive en la mansión, es más rico que tía Agatha

Al programa le tengo que poder preguntar quién es el asesino de la tía Agatha y tiene que brindar una sola
respuesta.




SOLUCION MIA:

viveEnMansionDreadBury(carnicero).
viveEnMansionDreadBury(charles).
viveEnMansionDreadBury(agatha).

odiadosPorAgatha(charles).
odiadosPorCharles(Persona):-
viveEnMansionDreadBury(Persona),
not(odiadosPorAgatha(Persona)).
odiadosPorCarnicero(Persona):-
odiadosPorAgatha(Persona).

esMasRicoQueAgatha(Persona):-
not(odiadosPorCarnicero(Persona)),
viveEnMansionDreadBury(Persona).

esElAsesino(charles, agatha):-
odiadosPorCharles(agatha),
esMasRicoQueAgatha(agatha).

esElAsesino(carnicero, agatha):-
odiadosPorCarnicero(agatha),
esMasRicoQueAgatha(agatha).


El ayudante resalto dos errores. Primero, que deberia de plantear una regla "odiaA(Persona, OtraPersona) si cumple determinada condicion". El otro, me dijo que plantee armar "esElAsesino" genericamente para asi no tener varias.
El problema radica en que estoy hace horas pensado la regla odiaA pero sinceramente no se me ocurre como armarlo. Alguna idea?
URLs de referencia