仪器Prolog代码如何检查确定性



我们希望通过自动决定论来检测Prolog代码检查。因此,在Ciao断言的精神下,我们宣布:- pred <functor>/<arity> is <determinism>,其中<determinism>可以接受以下值:

描述
det 只有一个解,那么该模式是确定性的
semidet 要么没有解,要么只有一个解,那么该模态是半确定性的
multi 至少有一个解决方案,但可能有多个,则该模式为multisolution
nondet 有0个或多个解,则该模态是非确定性的

我们可以通过需要检测的错误情况来分析决定论类别。有两种不同的错误情况,它们跨越了所有决定论的范畴。错误情况指的是使用给定谓词指示符调用的目标:

tbody> <<tr>
Value 有限失效 多重解
依据禁止禁止
semidet允许禁止
禁止允许
nondet允许允许

最新更新