繁体   English   中英

smtlib 是否支持一流的功能?

[英]does smtlib support first class functions?

假设对 haskell map函数进行建模,该函数接受一个应用于列表所有元素的“映射器”函数。 如何在 smtlib 中声明map

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

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

如果您确实打算对高阶函数进行推理,那么 SMTLib 可以说是错误的逻辑。 使用更传统的定理证明器(如 HOL/Isabelle)或 Agda/Coq 中的现代化身会更合适。 您还可以看看精益,它在功能和自动化之间取得了很好的折衷。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM