在特定的QF_LRA实例上加速Z3

时间:2016-01-13 11:33:08

标签: z3

我在QF_LRA中遇到问题,MathSAT5令人惊讶地解决了这个问题(不满意,<5分钟),但Z3似乎没有取得多大进展(即使7天后也没有结果)。可以通过Z3中的某些设置修复吗?

它包含(大致)这5种类型的许多条款:

(assert (or (< p47a2 p8a2) (< (+ p47a0 p47a2) (+ p8a0 p8a2)) (< (+ p47a0 p47a2 p47a3) (+ p8a0 p8a2 p8a3)) (and (= p47a2 p8a2) (= (+ p47a0 p47a2) (+ p8a0 p8a2)) (= (+ p47a0 p47a2 p47a3) (+ p8a0 p8a2 p8a3)))))
(assert (= 1.0 (+ p3887a0 p3887a1 p3887a2 p3887a3)))
(assert (>= p1715a0 0.0))    
(assert (= p133a2 p133a1))
(assert (or (= p379a1 0.0) (= p379a2 0.0)))

完整的问题实例可以从here以SMT2格式下载。

使用MathSAT解决问题的关键是设置

preprocessor.simplification=8

启用全局重写规则(除了SMT 2015竞赛的应用程序跟踪设置)。

Z3中有什么类似的东西可以尝试吗?或者您建议我执行的编码的任何预处理/优化?我对SMT比较陌生;因此,任何帮助/指导都将受到高度赞赏。

首先,让Z3解决这个问题会很棒。作为下一步,我还想提取一个不饱和核心,如果这对你的tipps很重要。

非常感谢提前!!

1 个答案:

答案 0 :(得分:1)

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: node n=new node(Integer.parseInt(push.getText())); q.push(n); model=(DefaultTableModel) jTable1.getModel(); model.addRow(new Object[]{n.getele()}); push.setText(null); } 替换为

(check-sat)

Z3在一分钟内解决了它。但是,您可以找到更好的配置here