我是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)
我不知道它有什么问题。