有没有办法从javascript运行Z3求解器?或者是否有更好的SMT求解器可以在JavaScript中使用?
答案 0 :(得分:0)
Z3带有Java API,但所有功能的实现都在本机代码.dll / .so / .dylib中,但只要您有其他方法可以确保本机库已打开客户端机器,它是可访问的,我认为Java API应该足够了。当然,在客户端计算机上运行本机代码可能存在安全问题,必须首先解决这些问题。
答案 1 :(得分:0)
有一个Alt-Ergo SMT solver in JavaScript的实现,它使用Js_of_ocaml编译成JavaScript。也可以使用Prolog SMT solver在JavaScript中嵌入Tau-Prolog。
答案 2 :(得分:0)
根据您的应用程序对性能的要求,您可以通过使用z3 -in
创建一个新的z3进程来实现所需的功能,以便它从标准输入中读取命令,然后使用{{1} }和(push)
smtlib命令来执行增量查询。当我不想依赖本机绑定时,我在其他语言上也取得了相当大的成功,尽管与直接公开的API相比,它当然会增加开销,因为您花时间在创建新的API上。处理,然后解析smtlib表达式。但实际上,除非您需要每毫秒可以挤出的时间,否则它仍然非常快。
当然,这假设您通过以下方式将javascript作为系统上的进程运行: node.js并具有创建新进程的能力。如果您在浏览器中运行,则极不可能使它完全起作用。即使是emscripten之类的东西,如果您甚至可以使用它,也可能在任何现实问题上都具有完全难以处理的性能。