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的常数?
答案 0 :(得分:1)
是的,edamame:mypassword@1.2.3.4:3306/mydb
策略不足以传播值,因为它通常太昂贵了。但是,simplify
或ctx-simplify
可以完成这项工作。例如:
propagate-values