我们希望通过自动决定论来检测Prolog代码检查。因此,在Ciao断言的精神下,我们宣布:- pred <functor>/<arity> is <determinism>
,其中<determinism>
可以接受以下值:
值 | 描述 | |
---|---|---|
det | 只有一个解,那么该模式是确定性的 | |
semidet | 要么没有解,要么只有一个解,那么该模态是半确定性的 | |
multi | 至少有一个解决方案,但可能有多个,则该模式为multisolution | |
nondet | 有0个或多个解,则该模态是非确定性的 |
我们可以通过需要检测的错误情况来分析决定论类别。有两种不同的错误情况,它们跨越了所有决定论的范畴。错误情况指的是使用给定谓词指示符调用的目标:
Value | 有限失效 | 多重解 | 依据 | 禁止 | 禁止 |
---|---|---|
semidet | 允许 | 禁止 |
多 | 禁止 | 允许 |
nondet | 允许 | 允许 |