从外部软件调用Isabelle(Java,Scheme)

时间:2017-06-01 05:44:36

标签: java scheme isabelle

是否可以从外部程序(Java,Scheme / Guile)调用Isabelle?我还没有设法找到有关API的文档

1 个答案:

答案 0 :(得分:2)

类似的问题时不时出现,例如herethere。尽管如此,他们都没有谈到Java或Scheme,所以这里是“Java”部分的一个稍微适应的答案。

从Java调用Isabelle

Isabelle本身没有可以从外部工具调用的“API”。一般的理念是应用程序应该存在于Isabelle或Archive of Formal Proofs中。大多数情况下,这意味着您的应用程序需要在Isabelle / ML中实现。

但是,如果你想使用Isabelle 作为外部工具,你必须玩一些技巧。我将这些技巧捆绑为Scala库(libisabelle)。 a paper中提供了有关其工作原理的概述。

libisabelle本身可作为独立库提供,其中包含一些基本文档,可让您开始使用。有关详细信息,请参阅the repository。从本质上讲,它允许你

  • 在Scala中管理Isabelle安装(下载,解压缩)
  • 摘要不同的Isabelle版本(目前支持:2016年和2016年1月)
  • Isabelle会话的生命周期管理(建设,启动,停止)
  • 将Isabelle / ML函数视为Scala函数
  • 像Scala中的Isabelle术语语法(term"$n > 0 --> ($b & ${HOLogic.True})"

没有内置例程来设置目标状态并应用一些证明步骤,但必要的基础设施就在那里。

libisabelle在Scala中实现,但您也可以使用Java API。我知道有一个用户成功使用了那个。您可以查看存储库中的an example