Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Computer science 如何远程运行Athena | Coq | Isabelle代码?_Computer Science_Background Process_Coq_Isabelle - Fatal编程技术网

Computer science 如何远程运行Athena | Coq | Isabelle代码?

Computer science 如何远程运行Athena | Coq | Isabelle代码?,computer-science,background-process,coq,isabelle,Computer Science,Background Process,Coq,Isabelle,我一直在为计算机科学中的定理证明创建一个Web IDE(WIDE)。你可能知道,有三种最常见的证据助理,分别是雅典娜、伊莎贝尔和柯克。大多数计算机科学家可能会忘记他们的语法、作用域等。我的Web IDE使用拖放设计和示例。你可以在上面编辑和写额外的代码,你可以下载它,你可以共享它,你可以保存它等等。它也有自己的解析器。到目前为止一切正常。小心这里是我的问题:当用户希望在我的Web IDE上运行他们的代码时,我如何运行用户的代码并获得结果(特别是对于Athena)。实际上,我可以通过鼠标事件(us

我一直在为计算机科学中的定理证明创建一个Web IDE(WIDE)。你可能知道,有三种最常见的证据助理,分别是雅典娜、伊莎贝尔和柯克。大多数计算机科学家可能会忘记他们的语法、作用域等。我的Web IDE使用拖放设计和示例。你可以在上面编辑和写额外的代码,你可以下载它,你可以共享它,你可以保存它等等。它也有自己的解析器。到目前为止一切正常。小心这里是我的问题:当用户希望在我的Web IDE上运行他们的代码时,我如何运行用户的代码并获得结果(特别是对于Athena)。实际上,我可以通过鼠标事件(user32)和其他使用pinvoke(平台调用)的事件来实现这一点。我的程序通过网络将代码发送到正在运行的PC(不是服务器。因为服务器没有屏幕,所以程序不知道单击到哪里),然后PC获取代码。然后程序单击“emacs”图标。几秒钟后(用于打开和上传雅典娜的DLL),程序将雅典娜编码粘贴到emacs shell中。Emacs运行该代码并返回结果。之后,程序选择、复制并将结果返回到WebIDE。然而,这是一种奇怪而狡猾的方式。我想做最好的方式。
谢谢你的关注。最好的

对于伊莎贝尔,我只能给出部分答案:

Isabelle本身是用标准ML实现的,但为了与外部世界通信,它使用了一个名为PIDE(=Prover IDE)的协议。PIDE的参考实现与Isabelle捆绑在一起,并用Scala编写,因此它可以与任何JVM语言一起使用。PIDE的主要应用程序是Isabelle/jEdit,它使用jEdit编辑器为Isabelle构建IDE,包括标记、连续检查

还有其他IDE,如和(基于web的)。对于您的用例,Clide似乎非常相关

如果您想了解更多关于PIDE的内部工作原理,可以参考Wenzel的相关论文,例如和


现在,最后,无耻的插件:由于如何作为外部程序与Isabelle交互的问题时不时出现,因此我将PIDE打包为一些附加的实用程序。它包括一个与prover进行非常简单的乒乓球互动的示例。

你说的“通过网络”是什么意思?还有,你真的认为雅典娜只在emacs中运行吗?事实上,这并不重要。不知怎的,我得到了用户的代码。但如果你想知道的话,我已经在PC上编写了另一个程序(如果你想知道tech:WEB.API),用于捕获代码(你知道,只是一个字符串)并返回结果。是的,正如我之前提到的,“上传雅典娜的DLL”。这意味着我们已经拥有雅典娜的图书馆和环境。请看阶乘的例子:嘿,拉尔斯,我以前没听过这个词。谢谢你的回答!然而,伊莎贝尔是我们的下一个阶段。因为我的导师与Konstantine Arkoudas和David Musser一起研究Athena(Vargun先生的博士论文:),作为警告:向不受信任的用户公开Isabelle实例是不安全的(至少在没有进一步措施的情况下),因为Isabelle文档可能包含ML代码,因此可以执行任意代码。