【发布时间】:2014-07-10 15:29:54
【问题描述】:
当使用 SMTLIB2 文件求解时,如果我调用 get-model 或 get-value,所有内容都会打印为分数。有没有简单的方法让 Z3 打印十进制值?
例如,(get-value t) 可能会输出 ((t (/ 1.0 2.0))),而我更喜欢 ((t 0.5)) 这样的输出。
【问题讨论】:
标签: z3
当使用 SMTLIB2 文件求解时,如果我调用 get-model 或 get-value,所有内容都会打印为分数。有没有简单的方法让 Z3 打印十进制值?
例如,(get-value t) 可能会输出 ((t (/ 1.0 2.0))),而我更喜欢 ((t 0.5)) 这样的输出。
【问题讨论】:
标签: z3
请使用命令
(set-option :pp.decimal true)
请看下面的例子
(declare-const t Real)
(assert (= t (/ 1.0 2.0)))
(check-sat)
(set-option :pp.decimal true)
(get-model)
(get-value (t))
对应的输出是
sat (model (define-fun t () Real 0.5) )
((t 0.5))
【讨论】: