如何使用z3获得定点变量的约束?
我希望得到固定点φ中元素的约束,比如d>=0.0,如何在Z3中实现它如何使用z3获得定点变量的约束?,z3,z3-fixedpoint,Z3,Z3 Fixedpoint,我希望得到固定点φ中元素的约束,比如d>=0.0,如何在Z3中实现它 (set-option :produce-models true) (set-option :dl_engine 1) (set-option :dl_pdr_use_farkas true) (declare-var c Real) (declare-var d Real) (declare-var lambda Real) (declare-rel phi(Real)) (rule (=> (an
(set-option :produce-models true)
(set-option :dl_engine 1)
(set-option :dl_pdr_use_farkas true)
(declare-var c Real)
(declare-var d Real)
(declare-var lambda Real)
(declare-rel phi(Real))
(rule
(=>
(and
(>= lambda 0.0)
(phi c)
)
(phi (+ c lambda))
)
)
(rule
(=>
(= c 0.0)
(phi c)
)
)
(rule
(=>
(phi c)
(phi d)
)
)
(query (phi d))
有两个主要选项可用于从服务器获取信息 定点引擎:print answer true将导致引擎显示一个或多个实例 满足查询的(取决于引擎):打印证书为true将导致引擎故障 打印一条线索来解释答案。如果无法满足查询,则将启动PDR引擎 将打印查询为空的证书(当然,如果它收敛) 当前dl引擎打印答案(当查询满足时)
作为满足查询的跟踪沿线谓词的连接。 因此: 将返回:
sat
(and (query!0 0.0) (phi 0.0))
这意味着可以导出值0.0。
我计划在将来的版本中更改此格式
由于格式不太一致,
但我希望这在这一点上对你有用
您也可以通过以下方式调用它:
(query (phi d)
:print-certificate true)
它返回一个类似的连词(但是使用了一个省略十进制符号的漂亮打印机)。谢谢您的详细解释,但是,一般的问题是您能帮我吗?
(query (phi d)
:print-certificate true)