smtlib支持一流的功能吗?

时间:2019-01-08 06:25:01

标签: z3 smt

可以对haskell map函数进行建模,该函数采用了一个适用于列表所有元素的“映射器”函数。如何在smtlib中声明map

1 个答案:

答案 0 :(得分:1)

否; SMTLib本质上是一阶理论。根本不支持高阶函数。

但是,

Z3允许使用扩展名(_ map f)在数组上映射函数。请参见https://rise4fun.com/Z3/tutorial/guide,搜索“在数组上映射函数”。这不会为您提供任意的高阶函数,但是可以用来模拟对SMTLib数组进行操作的函数。

如果您确实想推理高阶函数,那么SMTLib对于您来说可能是错误的逻辑。使用更传统的定理证明者(例如HOL / Isabelle)或Agda / Coq中的现代化身会更合适。您也可以看看精益,它在功能和自动化方面都有很好的折衷。