Prolog 中的谓词

2024 年 8 月 29 日 | 阅读 2 分钟

有一个简单的程序,包含五个子句。前三个子句的 Head 是一个复合项,其 functor 为 parent。 它有两个参数,arity 为 2。

以下程序包含 functor parent 包含在 head 中的子句,但具有不同的 arity。

例如

在同一个程序中,我们也可以将 parent 用作 atom。

例如

上面的例子也会造成混淆。

一个 atom 可以作为规则 head 或事实出现。 例如,

上面的例子被认为是一个没有参数的谓词,即 go/0。

在之前的Prolog 子句文件中,我们有一个动物程序 2 的示例,它有五个谓词:dog/1、cat/1、large/1、small/1 和 large_animal/1。 事实由前 18 个子句定义,它们分别代表 dog/1、cat/1、large/1 和 small/1 谓词(数量分别为 6、4、7

和 1 个子句)。 规则由最后两个子句定义。 这两个子句都定义了 large_animal/1 谓词。

规则的声明式解释

声明式和程序式解释都描述了规则。 以下示例显示了规则的声明式解释,如下所示

在上面的例子中,如果 dog(A) 为真,cat(B) 为真,write(A) 为真等等,那么 'chases(A, B) 为真'。

在程序式解释中,“为了满足 chases(A, B),首先满足 dog(A),然后满足 cat(B),然后满足 write(A) 等等。”

事实的声明式解释如下

上面将被理解为“bengal 是一只猫”。


下一个主题加载子句