SMT求解器与Prolog

SMT求解器与Prolog,prolog,smt,Prolog,Smt,SMT解算器(如CVC4)和Prolog之间的主要区别是什么?一方能做另一方不能做的事吗 我的计划是使用R生成查询,将它们发送到SMT解算器,并根据SMT输出修改查询。我基本上是在给定一组条件的情况下搜索最大的最优路径。我相信我可以在Prolog或SMT中解决这个问题,但我找不到任何一个系统的优缺点列表 Prolog不是一个SMT求解器,但它可以写一个。谢谢,这就是我想知道的。真正的区别是什么,因为Prolog非常理解一阶逻辑,对吗?(谓词、函数等)。你可以用Prolog做可满足性检查,所以我真

SMT解算器(如CVC4)和Prolog之间的主要区别是什么?一方能做另一方不能做的事吗


我的计划是使用R生成查询,将它们发送到SMT解算器,并根据SMT输出修改查询。我基本上是在给定一组条件的情况下搜索最大的最优路径。我相信我可以在Prolog或SMT中解决这个问题,但我找不到任何一个系统的优缺点列表

Prolog不是一个SMT求解器,但它可以写一个。谢谢,这就是我想知道的。真正的区别是什么,因为Prolog非常理解一阶逻辑,对吗?(谓词、函数等)。你可以用Prolog做可满足性检查,所以我真的想知道Prolog是如何区分自己的。你能在一个地方做什么而在另一个地方做不到?如果我在FOL中遇到问题,为什么我应该使用Prolog而不是SMT解算器来解决FOL中的可满足性问题?大量的额外内容包括约束扩展(主要是FD、Z、Q、R)。一般来说,SMT的输入语言更丰富:它内置支持高阶逻辑、数组、位向量,等等。缺点是,一旦你在一个不可判定的片段中(例如,如果你需要弱量词),SMT解算器就会使用启发式,甚至可能仅仅根据签名就放弃。顺便说一句,还有一个根本性的区别:当两者都不能满足时,带有查询的Prolog程序会给你一个答案替换。直接SMT翻译需要从证明中提取替换。如果您的输入是可满足的,您可以直接得到一个模型——Prolog中没有直接的等价物。