Q
z3中的函数声明
2
A
回答
4
正如莱昂纳多所说,SMT-Lib确实允许而不是允许更高阶的函数。这不仅仅是一种语法上的限制:高阶函数的推理(通常)超出SMT解算器可以处理的范围。 (虽然未解释的功能可以在一些特殊情况下使用)
如果您确实需要原因与高阶函数,然后交互式定理证明是选择的主要武器:Isabelle,HOL,Coq是一些例子。
但是,有时您希望高阶函数而不是推理它们,而仅仅是为了简化编程任务。 SMT-Lib输入语言不适合终端用户在实际情况下通常需要的高级编程。如果这是您的使用案例,那么我建议不要直接使用SMT-Lib,而是使用可让您访问Z3(或其他SMT解算器)的编程语言。有几种选择,这取决于宿主语言是最适合你的使用情况:
每个绑定都有自己的功能集,Z3Py可能是最通用的,因为它直接支持Z3人。 (它还提供了访问Z3内部机制的权限,至少暂时不能访问其他选项)。
5
不,这是不可能的。但是,您可以定义一个将数组作为参数的函数。
(声明乐趣富((阵列整数BOOL))智力)
您可以使用这种伎俩来模拟像在你的问题的高阶功能。
下面是一个例子:http://rise4fun.com/Z3/qsED
的Z3 guide包含有关Z3和SMT的详细信息。
相关问题
- 1. Microsoft Z3命名声明
- 2. z3中SMT-LIB 2.0声明的标签
- 3. Scala中的函数声明
- 4. core.c中的函数声明
- 5. C++中的函数声明
- 6. 函数声明
- 7. 声明函数
- 8. 声明函数
- 9. 函数的声明
- 10. 函数定义中的函数声明
- 11. JS函数声明:在参数声明
- 12. 等式中函数声明
- 13. jQuery函数声明说明
- 14. PLSQL函数声明
- 15. C++函数声明
- 16. jQuery函数声明
- 17. GetClipboardSequenceNumber()函数声明
- 18. 声明session_start()函数?
- 19. Lua函数声明
- 20. (Z3Py)声明函数
- 21. Python 3中的函数声明参数
- 22. 函数声明使用perl函数指针声明
- 23. 声明函数指针的
- 24. Arduino的void函数声明
- 25. 函数的多个声明
- 26. 函数的隐式声明
- 27. 未声明的JavaScript函数
- 28. 声明的函数不叫
- 29. 和的typedef函数声明
- 30. 不同的函数声明