La question est: Le sel a été volé! Eh bien, il a été constaté que le coupable était soit le Caterpillar, Bill le lézard ou le chat du Cheshire. Les trois ont été jugés et ont fait les déclarations suivantes au tribunal:Conversion de puzzle logique en calcul de prédicat et prolog/dlv
CATERPILLAR: Bill the Lizard ate the salt.
BILL THE LIZARD: That is true!
CHESHIRE CAT: I never ate the salt.
Comme il est arrivé, au moins un d'entre eux mentaient et au moins un dit la vérité. Qui a mangé le sel ?
Je sais avec certitude si la facture est vraie, que toutes les déclarations sont vraies, et si le cheshire est vrai, alors tous sont faux, donc ce doit être la chenille.
regardant dans le calcul des prédicats et la programmation, ce serait quelque chose comme ce droit:
suspect(caterpillar).
suspect(lizard).
suspect(cat).
:- suspect(cat), suspect(lizard).
:- suspect(cat), suspect(caterpillar).
:- suspect(lizard), suspect(caterpillar).
%where these imply not more than one of these can be true or returned in our set
Mais qui décrit plus loin cette logique sous-jacente, je ne sais pas comment je qualifierais de descriptions ou un plaidoyer qu'ils ont fabriqué. Et comment cela si une déclaration est vraie peut impliquer que d'autres peuvent être des faux.