我正在努力计算Z3完成的满意任务的数量。我想知道Z3是否提供了这样的信息。如果是这样的话,我如何计算Z3中的模型,特别是在Z3Py中?
发布于 2015-03-10 23:07:07
虽然Taylor的回答会给出满意的任务数,但它会迭代所有这些任务。原则上,不需要如此昂贵的迭代就可以做到这一点,但是Z3不提供它。
对于命题逻辑有有效的模型计数器,这是SAT (搜索sharpSAT查找这样一个系统)所使用的语言,但据我所知,目前还没有可用的模型计数器模块理论。
发布于 2013-10-25 02:23:54
不,默认情况下此类信息不可用。但是,通过将模型生成能力与添加断言结合起来,您可以很容易地在任何API中实现这一点(假设模型数量有限),以防止将来分配与过去模型相同的值。有关完成此操作的Z3py脚本,请参见以下答案:
Z3: finding all satisfying models
要计算模型,只需在循环中添加一个计数器,直到它变为unsat,这将给出模型的数量。
https://stackoverflow.com/questions/19578627
复制相似问题