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

Calling Isabelle from external software (Java, Scheme)

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

的文档

类似的问题不时出现,例如 and there。 None 他们谈论的是 Java 或 Scheme,所以这里是 "Java" 部分的稍微改编的答案。

正在从 Java

呼叫伊莎贝尔

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

中实施

不过,如果想把伊莎贝尔当作外挂工具使用,就得玩点花样了。我将这些技巧打包成一个 Scala 库 (libisabelle). An overview of how this works is given in 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