【问题标题】:How to enable the occurs check in all unifications in SWI-Prolog?如何在 SWI-Prolog 中的所有统一中启用发生检查?
【发布时间】:2020-11-14 21:10:48
【问题描述】:

根据Wikipedia

为所有统一提供声音统一的实现是 Qu-Prolog 和 Strawberry Prolog 以及(可选地,通过运行时标志):XSB、SWI-Prolog 和 Tau Prolog。

但是,当我执行apropos(occur) 时,它只会找到unify_with_occurs_check/2man 页面也没有提到“发生”。如何为 SWI-Prolog 中的所有统一启用发生检查?

【问题讨论】:

    标签: prolog swi-prolog occurs-check


    【解决方案1】:

    Environment Control 部分,它列出了系统的标志。 occurs_check 标志是控制发生统一检查的标志。

    您可以使用以下方法设置标志:

    :- set_prolog_flag(<b>occurs_check</b>, true).

    例如:

    ?- X = f(X).
    X = f(X).
    
    ?- set_prolog_flag(occurs_check, true).
    true.
    
    ?- X = f(X).
    false.
    

    所以首先它将Xf(X) 统一起来。如果我们稍后将occurs_check 设置为true,那么如果我们再次尝试将Xf(X) 统一,则会失败。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多