我正在尝试将线性混合自动机编码为一阶公式的结合,如下所示:
s.add(Or(Or(And(off,Not(on),Not(S1),Not(S2),(10*x_next)>=(3*t1)-(3*t2)+(10*x),(10*x_next)<=(10*x)-(t2-t1),x_next>=18,(t2-t1)>0,Implies(),
And(Not(off),on,Not(S2),Not(S1),(10*x_next)>=(t2-t1)+(10*x),(5*x_next)<=(5*x)+(t2-t1),x_next<=22,(t2-t1)>0)),
Or(And(x<19,(t2-t1)==0,S1,Not(off),Not(on),Not(S2),(x-x_next)==0),
And(x>21,(t2-t1)==0,Not(on),Not(off),S2,Not(S1),(x-x_next)==0))))
问题是需要采用跳转条件(例如,如果 x<19 则 ....),这似乎在这里不起作用。有人可以帮助我使用 z3 python API 将跳转条件编码为一阶公式的结合吗?