尝试使用rise4fun / z3 /教程/策略中的示例

时间:2018-08-07 16:47:30

标签: z3 smt sat

rise4fun网站上的一些示例:

(declare-const x Int)
(declare-const y Int)
(declare-const z Int)
(declare-const a Int)        ;  this is added

(assert (= a 3 ))            ; this is added:  a := 3
(assert (< 0 x  10))         ; rewritten, but same constraint
(assert (< 0 y  10))
(assert (< 0 z  10))

(assert (= (+ (* 3 y) (* 2 x)) z))        ; plain function from rise4fun
;(assert (= (+ (* a y) (* 2 x)) z))       ; here literal 3 is replaced by a

(check-sat-using (then (using-params simplify :arith-lhs true :som true)
                       normalize-bounds
                       lia2pb
                       pb2bv
                       bit-blast
                       sat))
(get-model)
(get-info :version)

当我从rise4fun中注释普通函数并且取消注释我的函数时,求解器将无法产生结果并以“未知”响应(尝试4.8.0)。求解器或某些预处理器是否足够聪明,以至于无法确定“ a”只是一个固定值3的常数?

1 个答案:

答案 0 :(得分:1)

是的,edamame:mypassword@1.2.3.4:3306/mydb策略不足以传播值,因为它通常太昂贵了。但是,simplifyctx-simplify可以完成这项工作。例如:

propagate-values