【问题标题】:What's the difference between Prolog rules and queries?Prolog 规则和查询有什么区别?
【发布时间】:2012-02-07 19:20:19
【问题描述】:

我是逻辑编程的新手,很难理解规则和查询之间的区别,我觉得它们基本相同。任何帮助澄清这一点将不胜感激。

【问题讨论】:

    标签: prolog rules


    【解决方案1】:

    在语法上,它们大体相同; “p(1).”可以是规则也可以是查询,具体取决于您放置的位置。

    从语义上讲,它们不是。
    p(1).”作为一个规则告诉 Prolog “p(1) 是真的”。
    p(1).”作为一个查询 Prolog “是 p(1) 是真的吗?”。

    【讨论】:

      【解决方案2】:

      规则是一个定义,例如

      foo(X) :- bar(X), baz(X).
      

      就像在 Prolog 程序中出现的那样。

      查询要么是上述定义的右侧,即(bar(X), baz(X)),要么是您在 Prolog 解释器提示符下键入以使程序运行的内容。

      【讨论】:

      • 我们在解释器中查询的不是同一个东西吗?喜欢foo(X)
      • 这是咨询(即[user])和提示之间的区别。查询提示的行为方式与谓词的主体相同。这就是为什么您需要查阅文件以将事实和谓词添加到数据库中。
      【解决方案3】:

      查询是您要求证明的语句(在此过程中可能会实例化变量,这些变量可以作为您的“输出”);规则构成了用于开发该证明的“程序”。

      【讨论】:

        【解决方案4】:

        您的直觉是正确的:它们都是 Horn 子句的变体。 Horn子句的基本结构是:

        head(...) :- body.
        

        如果你有一个没有身体的头脑,你就有一个事实。如果两者都有,则有谓词。如果你只有一个身体,那么你就有一个查询。

        【讨论】:

        • 不,如果你有两个,你有一个规则。谓词定义是一系列规则。
        猜你喜欢
        • 2019-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多