调查了罪案的4位证人。从证人的话侦探得出的结论是:
如果男管家(mate)说的是真话,那么厨师(cook)说的也是真话。
厨师和园丁(gardener)说的不可能都是真话。
园丁和杂役(worker)说的不可能都是谎话。
如果杂役说真话,那么厨师在撒谎。请问,侦探能分别出这4位证人谁在说真话谁在撒谎吗?
*******************************************************
我想用prolog来写出程序进行推理,感觉到困难的地方是:
(1)"厨师和园丁(gardener)说的不可能都是真话"这样的逻辑用prolog该怎么表示呢?
(2)能否写出一个简单的程序来推出结论?
(3)假设推理的结果是要么A说真话要么B说真话,但是不可能同时说真话。这样的结论prolog以什么样的形式表示呢? 例如我的prolog程序的字句叫做true()。那么当我输入完条件的时候,请求结论true(X).的时候,prolog打印结果是打印可能的X。但是我刚才说了,如果答案是一个"异或"的答案,prolog该怎么打印结果呢?
如果男管家(mate)说的是真话,那么厨师(cook)说的也是真话。
厨师和园丁(gardener)说的不可能都是真话。
园丁和杂役(worker)说的不可能都是谎话。
如果杂役说真话,那么厨师在撒谎。请问,侦探能分别出这4位证人谁在说真话谁在撒谎吗?
*******************************************************
我想用prolog来写出程序进行推理,感觉到困难的地方是:
(1)"厨师和园丁(gardener)说的不可能都是真话"这样的逻辑用prolog该怎么表示呢?
(2)能否写出一个简单的程序来推出结论?
(3)假设推理的结果是要么A说真话要么B说真话,但是不可能同时说真话。这样的结论prolog以什么样的形式表示呢? 例如我的prolog程序的字句叫做true()。那么当我输入完条件的时候,请求结论true(X).的时候,prolog打印结果是打印可能的X。但是我刚才说了,如果答案是一个"异或"的答案,prolog该怎么打印结果呢?