Z3 str.to.int中可能存在的错误

时间:2017-10-30 08:50:25

标签: string z3 atoi

我正在尝试 Z3 str.to.int 来评估其效果。 我遇到了以下示例,它看起来像一个错误(也报告给GitHub/Z3Prover/z3/issues):

(declare-const si String)
(declare-const sj String)
(declare-const sk String)
(declare-const i     Int)
(declare-const j     Int)
(declare-const k     Int)

(assert (= (str.to.int si) i))
(assert (= (str.to.int sj) j))
(assert (= (str.to.int sk) (* k k)))
(assert (= (- j i) k))
(assert (> i 7422885))
(assert (< j 74228850))
(assert (< i j))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;                                                  ;
; When I remove this comment everything works fine ;
;                                                  ;
;(assert (< 135 k))                                ;
;                                                  ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(check-sat)
(get-value (si sj sk i j k))

输出:(这是一个错误,对吧?)sj j的字符串表示

sat
((si "74228847")
 (sj "!0!")
 (sk "1")
 (i 74228847)
 (j 74228848)
 (k 1))

当我删除评论时,我得到正确的输出

sat
((si "74228713")
 (sj "74228849")
 (sk "18496")
 (i 74228713)
 (j 74228849)
 (k 136))

非常感谢任何帮助,谢谢!

0 个答案:

没有答案