First order logic Prover9生成错误的证明
我正在尝试使用prover9解决一阶逻辑问题,问题是:First order logic Prover9生成错误的证明,first-order-logic,First Order Logic,我正在尝试使用prover9解决一阶逻辑问题,问题是: 一个住在疯子公寓的人杀了阿加莎姨妈 阿加莎、管家和查尔斯住在狂人大厦,是唯一住在那里的人 一个杀手总是恨他们的受害者,而且永远不会比他们的受害者更富有 查尔斯不恨阿加莎姨妈恨的人 阿加莎恨所有人,除了管家 男管家讨厌所有不比阿加莎姨妈富有的人 管家讨厌阿加莎姨妈讨厌的每一个人 没有人恨所有人 阿加莎不是管家 我需要拿出一个证据来解开谁杀了阿加莎的谜团 在Prover9软件的目标框中输入适当的公式 我已将这些语句转换为prover9形式的一阶
%% 1. Someone who lives in Maniac Mansion killed Aunt Agatha.
exists x (LivesMM(x) & Killed(x,agatha)).
%% 2. Agatha, the butler, and Charles live in Maniac Mansion, and are the only people who live there.
LivesMM(agatha) & LivesMM(charles) & LivesMM(butler) & (all x (LivesMM(x) -> ((x=agatha) | (x=charles) | (x=butler)))).
%% 3. A killer always hates his victim, and is never richer than his victim.
all x all y (Killed(x,y) -> (Hates(x,y) & -(Richer(x,y)))).
%% 4. Charles hates no one that Aunt Agatha hates.
all x (Hates(agatha,x) -> -Hates(charles,x)).
%% 5. Agatha hates everyone except the butler.
all x (-(x=butler) -> Hates(agatha,x)).
%% 6. The butler hates everyone not richer than Aunt Agatha.
all x (-Richer(x,agatha) -> Hates(butler,x)).
%% 7. The butler hates everyone Aunt Agatha hates.
all x (Hates(agatha,x) -> Hates(butler,x)).
%% 8. No one hates everyone.
(all x exists y (-Hates(x,y))).
%% 9. Agatha is not the butler.
-(agatha=butler).
end_of_list.
formulas(goals).
%% Who killed Aunt Agatha?
exists x((x=agatha | x=charles | x=butler) & Killed(x,agatha)).
end_of_list.
问题:
我希望节目能证明凶手是阿加莎或查尔斯,但不是管家,因为下一个问题是根据上述事实解释为什么管家不能成为凶手。我不知道遗漏了什么,或者我是否错误地将这些语句转换为一阶逻辑。程序证明了什么,这与您的期望有什么不同?程序证明了什么,这与您的期望有什么不同?