根据维基百科 https://en.wikipedia.org/wiki/Occurs_check:
为所有统一提供声音统一的实现是 Qu-Prolog 和 Strawberry Prolog 以及(可选地,通过运行时标志):XSB、SWI-Prolog和 Tau 序言。
然而,当我这样做时apropos(occur)
它只发现unify_with_occurs_check/2
. The man页面也没有提到“发生”。如何为 SWI-Prolog 中的所有统一启用发生检查?
在关于环境控制 https://www.swi-prolog.org/pldoc/man?section=flags,它列出了系统的标志。这occurs_check
flag 是控制发生统一检查的标志。
您可以使用以下方式设置标志:
:- set_prolog_flag(occurs_check, true).
例如:
?- X = f(X).
X = f(X).
?- set_prolog_flag(occurs_check, true).
true.
?- X = f(X).
false.
所以首先它统一了X
with f(X)
。如果我们稍后设置occurs_check
to true
,那么如果我们尝试统一X
再次与f(X)
, 它失败。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)