Z3:在解决问题时提供随机解决方案

Z3:在解决问题时提供随机解决方案,z3,Z3,我在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和 这个简单的代码应该添加什么?线性算术解算器基于单纯形算法。因此,解不会是随机的。 位向量解算器

我在
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


这个简单的代码应该添加什么?

线性算术解算器基于单纯形算法。因此,解不会是随机的。 位向量解算器基于SAT,您可以通过将问题编码为位向量算法并选择随机相位选择来获得“随机”解决方案。以下是一个示例(也可用):

(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)