如何在Prolog中写出“a暗示b或c”

时间:2011-07-13 22:00:00

标签: prolog

我如何在Prolog中写下以下内容?

a -> b V c

英文为a implies that b or c (or both)

3 个答案:

答案 0 :(得分:6)

条款

a => (b ; c)     % ';' means 'or'

不是Horn子句,因此无法在(纯)Prolog中表示(参见例如Wikipedia)。另一方面,(b ; c) => a是一个Horn子句,显然可以用两个Prolog规则来表示。

答案 1 :(得分:1)

我不完全确定你想用这个暗示声明做什么。但我认为以下就足够了(请记住这是SICStus不是swi,但是在这个低级别我觉得它们都是一样的。)

predicate(a, b).
predicate(a, c).

?- predicate(a, Then).
Then = b ;
Then = c ;
no

?- predicate(x, Then).
no

你可以做更复杂的检查,以确保a永远不是一个未绑定的值(以防止predicate(If, b)。为真),但除非你正在制作一个庞大的应用程序,否则我确信好的文档就足够了。

答案 2 :(得分:0)

逻辑上,“b或c”与“b或c(或两者)”

相同

您可以在此处阅读Prolog中的逻辑运算符:http://rigaux.org/language-study/syntax-across-languages-per-language/Prolog.html

你能解释一下你想用'暗示'做什么吗?