我试图从一个公式中消除量词,该公式包含一个int变量的位移,如{x}为int x和y。由于Z3中没有int的位移操作,我尝试了2种方法来模拟位移:
1)将int转换为bitvector并在位移后转换回来。代码在哪里
\exists y. y=x>>1
2)使用除法和乘法来模拟移位。代码在哪里
(declare-const y Int)
(assert (exists ((x Int)) (= y (bv2int (bvlshr ((_ int2bv 8) x) #x02)))))
(apply qe)
但是对于这两种方法,输出仍然包含quantfer (declare-const y Int)
(assert (exists ((x Int)) (= y (div x 4))))
(apply qe)
。这是由错误引起的还是我需要使用一些策略来使其工作。有没有办法在量词消除中移动int变量