我如何在Prolog中写下以下内容?
a -> b V c
英文为a implies that b or c (or both)
答案 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
你能解释一下你想用'暗示'做什么吗?