使用Boolean重新初始化实变量如果在Z3 Python API中

时间:2012-08-08 13:54:28

标签: python z3

我需要根据一些布尔标志重新初始化一个实际变量,如下所示。 除了更改location_next的真值之外,我想用另一个值重新初始化x_next。我怎么能这样做?

location, location_next = Bools('location location_next')
x, x_next = Reals('x x_next')
...
location_next == If(And(Not(location), x_next >= 12),
                    True,
                    If(And(location, x_next <= 0), False, location))

1 个答案:

答案 0 :(得分:3)

函数If(在Z3 API中)也可用于创建非布尔表达式。 我们必须为每个If(c, t1, t2)c排序布尔值,t1t2具有相同的排序(类型)S。在这种情况下,If(c, t1, t2)将生成排序S的Z3表达式。这是一个小例子:

x, y = Reals('x y')
print If(x > 0, x + 1, y - 1)

以下是上述示例的链接:http://rise4fun.com/Z3Py/V4e

在以下示例中,当x_nextx+1location等于{时,我们有一个公式,False等于x >= 12 {1}} x-1location时的{1}},否则等于True

x <= 0