通过 Gnu Prolog 中的布尔 OR 组合两个事实

Combining two facts via a boolean OR in Gnu Prolog

我是 Prolog 的新手。所以请原谅这个可能非常简单的问题:我有一些事实,比如

likes(peter,cars).
likes(maria,bikes).
likes(walter,bikes).
likes(paul,bikes).
likes(paul,cars).

在文件中 likes.pl。现在我正在尝试检查 paul 是否喜欢 cars bikes,所以我尝试了GNU Prolog 的 REPL:

| ? - [likes].
| ? - likes(paul,bikes) #\/ likes(paul,cars).

但我收到“未捕获的异常:...”。显然我做错了什么。 - 如何在 GNU Prolog 中将两个事实与 AND 结合起来?

您正在使用的运算符 #\/ 是约束规划中使用的布尔有限域运算符 clp(b)

如果您只需要两个事实 A 和 B 的结合,请使用 A, B。如果你想分离它们,请使用 A; B.

在您的情况下,您只需键入 likes(paul, bikes), likes(paul, cars).