Z3 Java 应用开发
Z3 Java Application Development
我正在使用 Java 和 HTML (Jsp)、MySQL 数据库和 Apache Tomcat 服务器开发基于规则的系统应用程序。基本上我需要构建一个系统来将规则存储在我的数据库中,然后检查我的数据库中规则的可满足性。我对此进行了研究,发现 Z3 是适合此目的的工具。我的目标是在 java 中编写一个脚本来生成一个输出,该输出对于在 - https://rise4fun.com/z3 . For this as suggested in a different answer by a user, it was suggested that the easiest way was to write my script in java to produce the z3 code and then feed it to z3 to check whether it is sat or unsat. Now Im confused as to how I can integrate this into my project ? Is the only way to deal with the problem to try and run the z3 java bindings which shall make it very difficult to work with ? I basically need a standalone service such as https://rise4fun.com/z3 上给出的类型的 z3 是可以理解的,它接受我的输入并给我输出,并且可以集成到我的项目中.即使是 jar 文件也可以。可以与 eclipse 集成的东西可能
您的问题没有明显的答案,因为 "depends" 您的项目参数是什么。
Z3 绑定有不同的风格。 C/C++/Java 是相当低级的。您可以使用它们来访问所有 SMTLib 功能以及其他功能。您可以构建独立的可执行文件并发布它们。这一切都很棒。但它的代价是非常低级,难以编程和正确、调试和维护。我强烈警告不要使用它们,尤其是如果您一般不熟悉 SMT 求解。
另一方面,Python 绑定的级别更高。它确实需要在目标机器上安装 Z3。如果你可以使用它,我建议你这样做,因为它最容易使用。
如果您必须坚持使用 Java,并且如果您是新手,我建议您坚持使用 SMTLib 格式:生成包含您的输入的文本文件,通过文件系统管道发送到 Z3 ,或调用系统等,然后解析结果。这将确保您构建了正确的框架。一旦你对此感到满意,你就可以直接使用 Java 绑定来提高速度,同时也摆脱了需要在目标机器上安装 z3 的要求。
作为样式有何不同的示例,请查看此答案: 在那里,首先使用 C 绑定解决浮点 SMT 问题,然后 Python,和 Haskell;你可以看到不同之处。您的 Java 解决方案看起来很像 C 版本。
我正在使用 Java 和 HTML (Jsp)、MySQL 数据库和 Apache Tomcat 服务器开发基于规则的系统应用程序。基本上我需要构建一个系统来将规则存储在我的数据库中,然后检查我的数据库中规则的可满足性。我对此进行了研究,发现 Z3 是适合此目的的工具。我的目标是在 java 中编写一个脚本来生成一个输出,该输出对于在 - https://rise4fun.com/z3 . For this as suggested in a different answer by a user, it was suggested that the easiest way was to write my script in java to produce the z3 code and then feed it to z3 to check whether it is sat or unsat. Now Im confused as to how I can integrate this into my project ? Is the only way to deal with the problem to try and run the z3 java bindings which shall make it very difficult to work with ? I basically need a standalone service such as https://rise4fun.com/z3 上给出的类型的 z3 是可以理解的,它接受我的输入并给我输出,并且可以集成到我的项目中.即使是 jar 文件也可以。可以与 eclipse 集成的东西可能
您的问题没有明显的答案,因为 "depends" 您的项目参数是什么。
Z3 绑定有不同的风格。 C/C++/Java 是相当低级的。您可以使用它们来访问所有 SMTLib 功能以及其他功能。您可以构建独立的可执行文件并发布它们。这一切都很棒。但它的代价是非常低级,难以编程和正确、调试和维护。我强烈警告不要使用它们,尤其是如果您一般不熟悉 SMT 求解。
另一方面,Python 绑定的级别更高。它确实需要在目标机器上安装 Z3。如果你可以使用它,我建议你这样做,因为它最容易使用。
如果您必须坚持使用 Java,并且如果您是新手,我建议您坚持使用 SMTLib 格式:生成包含您的输入的文本文件,通过文件系统管道发送到 Z3 ,或调用系统等,然后解析结果。这将确保您构建了正确的框架。一旦你对此感到满意,你就可以直接使用 Java 绑定来提高速度,同时也摆脱了需要在目标机器上安装 z3 的要求。
作为样式有何不同的示例,请查看此答案: