我在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很重要。
非常感谢提前!!
答案 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。