Java 使用Z3API中的pi和e常量
如何使用Z3JavaAPI中的三角函数,如sin和cos以及常数Pi 如果我像这样使用java API:Java 使用Z3API中的pi和e常量,java,z3,smt,constraint-programming,Java,Z3,Smt,Constraint Programming,如何使用Z3JavaAPI中的三角函数,如sin和cos以及常数Pi 如果我像这样使用java API: Solver s = context.getSolver() s.add(z3.parseSMTLIB2String( "(declare-fun theta () Real)\n"+ "(declare-fun offset () Real)\n"+ "(assert (> (cos
Solver s = context.getSolver()
s.add(z3.parseSMTLIB2String(
"(declare-fun theta () Real)\n"+
"(declare-fun offset () Real)\n"+
"(assert (> (cos theta) (/ 1 pi)))\n"
//a sequence of empty arrays
然后z3将尝试对π和余弦进行推理
但是我不知道如何在JavaAPI中声明它。没有可用的
mkCos
或pi
常量。那么如何用JavaAPI对其进行编码呢?这个函数和常量pi
没有公开,这可能是一个简单的疏忽吗?这可能不是Java特有的;它们可能还没有添加到任何API中。如果我没有弄错的话,这一行的工作从来没有完成过,所以我也要小心这些操作符的语义/行为。例如,有些函数可能被视为完全没有解释的函数。(e和pi在C API中,因此它们的原始形式在Native.java中可用;请查找rcfMkPi和rcfMkE。)哈哈,在尝试通过反射命中该方法和必要的包装时,我得到了一个很好的ol'异常访问\违反
,这杀死了JVM。我非常希望我能把它作为一个bug记录在你们的日志中,让你们添加它——或者,我可能会重新使用工具来构建smt-lib2字符串,而不是使用实际的API。要点:当然,这些是传递指针的低级C函数,很容易出错。请随意记录错误/问题,但在我们开始添加这些函数之前可能需要一点时间;它们可能还没有添加到任何API中。如果我没有弄错的话,这一行的工作从来没有完成过,所以我也要小心这些操作符的语义/行为。例如,有些函数可能被视为完全没有解释的函数。(e和pi在C API中,因此它们的原始形式在Native.java中可用;请查找rcfMkPi和rcfMkE。)哈哈,在尝试通过反射命中该方法和必要的包装时,我得到了一个很好的ol'异常访问\违反
,这杀死了JVM。我非常希望我能把它作为一个bug记录在你们的日志中,让你们添加它——或者,我可能会重新使用工具来构建smt-lib2字符串,而不是使用实际的API。要点:当然,这些是传递指针的低级C函数,很容易出错。请随时记录错误/问题,但在我们开始添加这些函数之前,可能需要一点时间。谢谢Christoph,我创建了