代表"和" "或" "不"在GNU prolog

时间:2018-03-10 09:43:11

标签: prolog gnu

我是prolog的新手,我们要求写下以下问题的序言:

如果独角兽是神话,那么它是不朽的,但如果它不是神话,那么它就是一个凡人的哺乳动物。如果独角兽是不朽的或哺乳动物,那么它是有角的。如果它是角的话,独角兽是神奇的。

代码1:

unicorn(immortal):- unicorn(mythical).
(unicorn(immortal), unicorn(mammal)):- unicorn(mythical).
unicorn(horned):- (unicorn(immortal); unicorn(mammal)).
unicorn(magical):- unicorn(horned).

码2:

unicorn(immortal):- unicorn(mythical).
unicorn(mythical):- unicorn(mammal).
unicorn(mythical):- unicorn(immortal).
unicorn(horned):- unicorn(immortal).
unicorn(horned):- unicorn(mammal).
unicorn(magical):- unicorn(horned).

我们需要证明的是证明独角兽是神奇的。以下是我的一些尝试,我在linux上成功编译了它们,但是当我运行命令时:

?- unicorn(magical).

他们都返回假。  我想我不知道如何实施"不是","和"或"或"在prolog中,我找不到任何关于它们的例子。请让我知道我做错了什么。谢谢!

更新: 阅读完评论后,我更新了我的内容:

isimmortal(unicorn):- ismythical(unicorn).
ismammal(unicorn):- \+ ismythical(unicorn).
ishorned(unicorn):- isimmortal(unicorn); ismammal(unicorn).
ismagical(unicorn):- ishorned(unicorn).

这段代码通过我一个例外,即:

uncaught exception: error(existence_error(procedure,ismythical/1),isimmortal/1)

我不知道它有什么问题。

0 个答案:

没有答案