【发布时间】:2020-04-29 08:18:36
【问题描述】:
我想用位向量 48 在 z3 求解器中解决这个问题:
(declare-fun x () Int)
(declare-fun y () Int)
(assert (= *someNumber* (* x y)))
(assert (> x 1))
(assert (> y 1))
(check-sat)
(get-model)
(exit)
我正在尝试弄清楚如何使用算术函数,但是效果并不好。 (对我而言)的问题是函数的正确语法 && 如何在其中设置值。
(set-option :produce-models true)
(set-logic QF_BV)
;; Declaring all the variables
(declare-const a (_ BitVec 48))
(declare-const b (_ BitVec 48))
(declare-const c (_ BitVec 48))
;; Soft constraints to limit reuse
(assert (= c #xnumberInHex))
(assert-soft (not (= a b)))
(check-sat-using (then simplify solve-eqs bit-blast sat))
(simplify (= c (bvmul a b))
(simplify (bvugt a #b000000000001))
(simplify (bvugt b #b000000000001))
(check-sat)
(get-model)
非常感谢任何帮助。 语法/如何在那里写入正确的位向量
【问题讨论】:
标签: syntax z3 smt bitvector vector-multiplication