如何使用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

我希望得到固定点φ中元素的约束,比如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 
   (=>
      (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)