如果在z3py中断言

时间:2016-12-14 17:03:54

标签: python validation z3 z3py

我是z3py的新用户。我需要编写一个程序来检查某些规则的满意度,如

IF room.temp < 18 THEN room.fireplace = on  
IF room.temp > 24 THEN room.fireplace = off  
IF room.CO > 180  THEN room.fireplace = off  
IF room.temp > 28 THEN house.hvac = off  
IF house.hvac == on THEN room.fireplace = off

还有如何写这个

bedroom.occupancy  ==  true  and  bedroom.env_brightness  <=  31.5 and  bedroom.light.switch = on

感谢

1 个答案:

答案 0 :(得分:1)

你需要一个Z3 If-then-else,可以在z3中使用If来定义。

>>> x = Int('x')
>>> y = Int('y')
>>> max = If(x>y, x, y)
>>> max
If(x > y, x, y)

要定义多个约束,您可以使用AndOr

>>> max = If(And(x>y, x!=0), x, y)
>>> max
If(And(x > y, x != 0), x, y)
>>> simplify(max)
If(And(Not(x <= y), Not(x == 0)), x, y)

希望这会有所帮助。 This是一般从z3py开始的很好的资源。