gpt4 book ai didi

prolog - Swi-Prolog : No permission to modify static procedure

转载 作者:行者123 更新时间:2023-12-04 20:16:27 24 4
gpt4 key购买 nike

我是序言初学者。我非常感谢您对编译此示例的任何帮助。我猜规则的形式是“结果:-前因”

%rules
prey(Y2), watch(X2,Y2) :- predator(X2).
false :- predator(X1),prey(Y1),intelligent(Y1),watch(X1,Y1),catch(X1,Y1).
catch(X3,Y3);hungry(X3) :- predator(X3),prey(Y3),watch(X3,Y3).

%facts
predator(shaki).
prey(pelusa).
intelligent(shaki).
intelligent(pelusa).
watch(shaki,pelusa).

我使用 SWI-Prolog 版本 5.10.4(i386,Ubuntu Natty Narwhal)编译代码:
swipl -s "pathofthecode.pl"

Swi-Prolog 为第二条规则抛出了这个错误:
'$record_clause'/2: No permission to modify static_procedure `(;)/2'

谢谢 azhrei,你说:“我想你想说的是 X1 将无法捕获 Y1,即使 X1 是一个捕食者,看着猎物 Y1,因为 Y1 很聪明。”,是的!

我发现 prolog 有一些很强的约束 [1]:
  • Prolog 不允许使用“或”(分离的)事实或结论。
  • Prolog 不允许“不”(否定)事实或结论。
  • Prolog 不允许大多数事实或结论具有存在量化。
  • Prolog 不直接允许二阶逻辑。

  • 所以我像这样更改了代码:
    %rules
    predator(X) :- prey(Y), watch(X,Y).
    catch(X,Y) :- predator(X),prey(Y),not(intelligent(Y)),watch(X,Y).
    hungry(X) :- predator(X),prey(Y),watch(X,Y),not(catch(X,Y)).

    %facts
    prey(pelusa).
    intelligent(shaki).
    intelligent(pelusa).
    watch(shaki,pelusa).

    我也尝试使用:
     false :- predator(X),prey(Y),intelligent(Y),watch(X,Y),catch(X,Y).

    它编译,但是当 prolog 需要查找 catch(X,Y) 是否为真时,它不能,因为谓词不在规则结果中。

    ——

    [1]。尼尔 C. 罗,网址: http://faculty.nps.edu/ncrowe/book/chap14.html

    注:这个例子取自哥斯达黎加 UCR 的 Yadira Solano 教授类(class)

    最佳答案

    错误消息是关于您对分号的使用,; .你不能重新定义它。

    您无法更改 false谓词。所以我很惊讶你说这个编译:
    false :- predator(X),prey(Y),intelligent(Y),watch(X,Y),catch(X,Y).
    它不为我编译。 :-)(SWI-Prolog)

    在第二条规则中,我认为您想说的是:
    X1 将无法捕获 Y1,即使 X1 是观察猎物 Y1 的捕食者,因为 Y1 很聪明。在这种情况下,您将需要:
    catch(X,Y) :- ...,...,...,...,not(intelligent(Y)).
    (当你发现自己,并在你的帖子中编辑。:-)

    注意:您提供的链接显示了一些逻辑上等效的语句,但这并不意味着您可以在代码中使用它们,因为它们在 Prolog 中在程序上并不等效。您可以使用 false;在您的查询中(在 prolog 提示符下),或在规则正文中,但不在规则头中。

    关于prolog - Swi-Prolog : No permission to modify static procedure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11553753/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com