在z3中打印内部解算器公式
定理证明工具z3花了很多时间来解一个公式,我相信它应该能够很容易地处理。为了更好地理解这一点,并尽可能优化我对z3的输入,我希望看到z3在求解过程中生成的内部约束。在z3中打印内部解算器公式,z3,smt,theorem-proving,formal-verification,Z3,Smt,Theorem Proving,Formal Verification,定理证明工具z3花了很多时间来解一个公式,我相信它应该能够很容易地处理。为了更好地理解这一点,并尽可能优化我对z3的输入,我希望看到z3在求解过程中生成的内部约束。 从命令行使用z3时,如何打印z3为其后端解算器生成的公式?z3命令行工具没有此选项。此外,Z3包含多个解算器和预处理步骤。目前还不清楚哪一步对你有用。Z3源代码可在以下位置获得:。在调试模式下编译Z3时,它提供了一个额外的命令行选项-tr:。此选项可用于有选择地转储信息。例如,源文件nlsat_solver.cpp包含以下指令: T
从命令行使用z3时,如何打印z3为其后端解算器生成的公式?z3命令行工具没有此选项。此外,Z3包含多个解算器和预处理步骤。目前还不清楚哪一步对你有用。Z3源代码可在以下位置获得:。在调试模式下编译Z3时,它提供了一个额外的命令行选项
-tr:
。此选项可用于有选择地转储信息。例如,源文件nlsat_solver.cpp
包含以下指令:
TRACE("nlsat", tout << "starting search...\n"; display(tout);
tout << "\nvar order:\n";
display_vars(tout););
跟踪(“nlsat”,tout感谢您的及时回复。还感谢您提供的源代码链接:我不知道它已经发布。正如您所建议的,我将尝试使用标记和跟踪来转储选择性信息。如果您能给出关于可能涉及哪些模块的提示,那将非常有用-它还将帮助我调整约束-我相信我会的对于这个问题,我没有以最好的方式使用z3。stackoverflow不允许我粘贴该代码:可能超出了帖子的行限制。我将尝试将其作为新帖子再次发布,或者提取部分约束和帖子部分,同时也可以理解。(assert(>=ab))(assert(和(=a1.0)))(assert(和(=B0.5))(assert(和(=C0.5))(assert(=two-to-p(to-real(^223)));a的计算指数(assert(=two-to-exp-a(和(>=A0.5)(=A1.0)(=A2.0)(=a 16.0)(=a 32.0)(=a 64.0)(=a 128.0)(a-plus-b-real(+a-exp-a)和非溢出(>a-plus-b-real(+two-to-exp-exp-a))和非溢出(