z3证书是什么样子的?

z3证书是什么样子的?,z3,isabelle,Z3,Isabelle,在使用SMT解算器扩展Sledgehammer时,我发现以下引用: 证书可以将Z3证明与Isabelle形式化一起存储,允许SMT证明在没有Z3的情况下重放。只有在形式化条件下,才必须重新生成证书 Z3证书是什么样子的?它只是某种平衡树,Z3中获得的推理步骤存储在这里吗?证书只是Z3产生的证明。以下是一个示例(取自文件): Z3证明本质上是一个结论为假的证明树,而不是一个平衡树。重建和证明格式在一篇文章中进行了描述 请注意,Sledgehammer与证书无关。每当您有一个smt调用(无论您是手工

在使用SMT解算器扩展Sledgehammer时,我发现以下引用:

证书可以将Z3证明与Isabelle形式化一起存储,允许SMT证明在没有Z3的情况下重放。只有在形式化条件下,才必须重新生成证书


Z3证书是什么样子的?它只是某种平衡树,Z3中获得的推理步骤存储在这里吗?

证书只是Z3产生的证明。以下是一个示例(取自文件):

Z3证明本质上是一个结论为假的证明树,而不是一个平衡树。重建和证明格式在一篇文章中进行了描述


请注意,Sledgehammer与证书无关。每当您有一个smt调用(无论您是手工编写还是使用Sledgehammer生成),您都可以使用证书。但是,我不知道有谁在做这件事。

我以为你在每次smt调用时都使用了证书,这样每次解析源代码时,我们就不必再调用外部解算器了。很有趣,出现在证明顶部的哈希代码是什么?对于哈希代码:我认为这是由于缓存的工作方式,但我真的不知道它代表什么。可能需要一些健全的检查,以使调试更容易。
23f5eb3b530a4577da2f8947333286ff70ed557f 11 0
unsat
((set-logic AUFLIA)
(proof
(let (($x29 (exists ((?v0 A$) )(! (g$ ?v0) :qid k!7))
))
(let (($x30 (f$ $x29)))
(let (($x31 (=> $x30 true)))
(let (($x32 (not $x31)))
(let ((@x42 (trans (monotonicity (rewrite (= $x31 true)) (= $x32 (not true))) (rewrite (= (not true) false)) (= $x32 false))))
(mp (asserted $x32) @x42 false))))))))