我在http://rise4fun.com/z3/tutorial
(declare-const a Int)
(assert (> a 100))
(check-sat)
(get-model)
结果始终为a=101
。我在答案中需要一些随机性,它会产生[101,MAXINT)
范围内的随机数。例如,获取seed=1000
并提供a=12344
。 seed=2323
提供a=9088765
和....
我应该在这个简单的代码中添加什么?
答案 0 :(得分:4)
线性算术求解器基于Simplex算法。因此,解决方案不会是随机的。 位向量求解器基于SAT,您可以通过在位向量算法中编码问题并选择随机相位选择来获得“随机”解决方案。这是一个示例(也可用here):
(set-option :auto-config false)
(set-option :phase-selection 5) ;; select random phase selection
(declare-const a (_ BitVec 32))
(assert (bvugt a (_ bv100 32))) ;; a > 100 as a bitvector constraint
(check-sat)
(get-model)
;; try again
(check-sat)
(get-model)
;; try again
(check-sat)
(get-model)