bts (04/11/83)
From: PEREIRA@SRI-AI.ARPA Subject: Zebra puzzle fix Yes, I'm afraid there was one goal missing in my translation of condition 14, which should be % 14. The Norwegian lives next to the blue house. condition(14,[C1,C2]) :- man_of(C1,norwegian), position_of(C1,P1), house_of(C2,blue), position_of(C2,P2), next_to(P1,P2). args(14,[_,_]). However, when I used this revised condition, there were no solutions! A quick investigation revealed that the culprits were conditions 10 and 11: % 10. The man who smokes Chesterfields lives in the house next to the % man with the fox. condition(10,[C1,C2]) :- smoke_of(C1,chesterfields), position_of(C1,P1), pet_of(C2,fox), position_of(C2,P2), single_next_to(P1,P2). args(10,[_,_]). % 11. Kools are smoked in the house next to the house where the horse % is kept. condition(11,[C1,C2]) :- smoke_of(C1,kools), position_of(C1,P1), pet_of(C2,horse), position_of(C2,P2), single_next_to(P1,P2). args(11,[_,_]). My translation (correctly) incorporates the pressuposition associated with the singular article "the", that "the house next to X" pressuposes there is only one house next to X, and therefore X is either the leftmost or the rightmost house. To get a solution, I had to relax this, replacing 'single_next_to' by 'next_to'. Then I got the result Zebra = japanese, Water = norwegian, All = [c(englishman,red,snails,milk,winston,middle), c(japanese,green,zebra,coffee,parliaments,rightmost), c(ukranian,blue,horse,tea,chesterfields,left), c(spaniard,ivory,dog,orange_juice,lucky_strike,right), c(norwegian,yellow,fox,water,kools,leftmost)] My conclusion is that the problem statement is incorrect, because it uses the definite article "the" where it should use an indefinite article. Fernando -------