Z3 muZ + 未解释的函数?

标签 z3 datalog

muZ 是否支持未解释的函数?

我想做如下的事情:

(declare-fun f (Int) Int)
(declare-rel r (Int))
(declare-var X Int)
(rule (=> (= (f X) X) (r X)))
(query (r X)
:default-relation smt_relation2
:engine datalog
:print-answer true)

但似乎我需要为 f 提供定义,因为 Z3 返回以下输出:

% z3 -smt2 test.z3
error "query failed: Uninterpreted 'f' in r(#0) :- 
(= (f (:var 0)) (:var 0)).
")
unknown

我认为我可以将函数建模为关系,但想看看是否还有其他解决方法......

谢谢!

-N

最佳答案

不支持未解释的函数。在某些情况下,它会使用数组,但数组的处理是临时的(pdr 引擎中没有泛化步骤)。您可能还想使用 pdr 引擎来解决此类问题。

关于Z3 muZ + 未解释的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15246603/

相关文章:

python - 与 PyDatalog 的逻辑析取

Datomic 将谓词应用于基数很多的属性

z3 - MaxSAT/MaxSMT 示例

python - Z3 Python : ordering models and accessing their elements

prolog - 数据记录分层

artificial-intelligence - 前向链接与后向链接

clojure - 我可以将实体及其父组件一直拉到组件树中吗?

Z3:提取存在模型值

z3 - Z3是否支持优化问题

c++ - 在 C++ API 中支持 Z3 的浮点理论