Prolog 协程是否具有解决方案的概念,因此具有确定性?

问题描述

@false 在关于决定论的评论部分提出了一个有趣的挑战 here。他不仅质疑解决方案和答案之间是否存在差异。可能影响决定论概念的区别。还要查询这里是否:

?- freeze(_,false).

解决方案吗?由于延迟执行不在原始问题的范围内,这个新问题应该提供一个平台来解决术语问题,事后来看什么是决定论。

解决方法

这里驳斥了目标没有解决方案,这与@false 声称的相反。如果它没有解决方案,那么 (\+)/1 会把它变成是。但它没有,它变成了否定:

?- \+ freeze(_,false).
false.

它可能是编程错误,有一个延迟的目标 不能满足。延迟目标应该表达“可能”。如果“可能”是 总是“不”,那么延迟的目标没有任何意义。

(\+)/1 的作用就是把“MAYBE”和“YES”变成“NO”, 和“否”变成“是”。然而,一个遗留问题是,可能存在多个无法作为连词满足的延迟目标。