这是 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所述,这确实是一个错误。
我也在此处发帖 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所述,这确实是一个错误。