indomain 中的实例化错误

instantiation fault in indomain

我有一个板求解器,它的求解器的一般形式如下所示:

solver(Board):-
    constraints(Board),
    search(Board).

它通过了约束谓词,但在下面的搜索部分出现错误:

search(Board):-
    term_variables(Board,Vars),
    sd:labeling(Vars).

标签谓词出现错误,错误为:

instantiation fault in indomain(_258{[9 .. 13, 15 .. 20]})

那么问题是什么? (我在 indomain 谓词中看不到任何问题)。

正如@jschimpf 在评论中提到的,这里的重点是可能无法混合两个库的功能。因此,安全代码被提升为尽可能使用同一库的相同功能。同样的事情也发生在这里。 constraint(Board) 使用 ic 库中的 #=(作为整数悬架),但在 labeling 中,代码尝试使用 sc 库。这就是问题的根源。

您应该注意到,这可能是出现此错误消息的原因之一。