【发布时间】:2017-01-24 10:23:22
【问题描述】:
我想创建一个 Z3 模型对象,例如由 (get-model)/s.model() 和 s = Solver() 返回的模型对象。我从一个元组列表开始(name, value),其中name 是一个字符串,表示模型中使用的 Z3 变量,value 是分配给变量的值(实数或布尔值)。所以像
def myZ3Model(tuples):
""" Returns a Z3 model based on the values of the given tuples. """
<magic>
return model
t = [('a', True), ('b', 42), ('c', False)]
myZ3Model(t) --> [a = True, b = 42, c = False]
我已经想出了一个非常“hacky”的方法来做到这一点:初始化一个公式,它是所有变量的联合等于它们的分配值,并让求解器返回这个公式的模型。但是,我想知道是否有更优雅的方式来实现我的目标......
【问题讨论】: