这是 z3 int.to.str 中的错误吗?

Is this a bug in z3 int.to.str?

我也在此处发帖 this z3 issue 以防任何 z3 用户以某种方式遇到它。我们正在对 int.to.str 的语义进行一些试验,我们发现这种 奇怪的行为 看起来像错误。这是第一个正常运行的查询:

(declare-const s String)
(declare-const i    Int)

(assert (< i -2))

(assert (= s (int.to.str i)))
(assert (< 0 (str.len s   )))

(check-sat)
(get-value (s i))

结果:

sat
((s "-11")
 (i (- 11)))

当我将“<”符号更改为“=”时,我得到了不满意的响应:

(declare-const s String)
(declare-const i    Int)

(assert (= i -2))

(assert (= s (int.to.str i)))
(assert (< 0 (str.len s   )))

(check-sat)
(get-value (s i))

这是我得到的结果:

unsat
(error "line 10 column 16: model is not available")

我是不是漏掉了什么?谢谢!

正如here所述,这确实是一个错误。