伊莎贝尔和斯卡拉
Isabelle and Scala
我正在考虑创建 Eclipse PDE,需要与 Isabelle 进行交流。我确实找到了一些出版物,指出 Scala 可用于与 Isabelle 通信。
我正在寻找如何使用 Scala 在 Isabelle 中创建证明的示例。
为了后代,引用我自己的话 an older answer:
Isabelle itself is implemented in Standard ML, but for communicating with the external world, it uses a protocol called PIDE (= Prover IDE). The reference implementation of PIDE is bundled with Isabelle and written in Scala, so it can be used with any JVM language. The primary application of PIDE is Isabelle/jEdit, which uses the jEdit editor to build an IDE for Isabelle, including markup, continuous checking, ...
通过重用底层协议,您可以在 Isabelle 之上实现您自己的应用程序。
据我所知,目前最先进的示例是 Leon, which is an automated verification & synthesis toolkit for Scala programs. Internally, it uses libisabelle to communicate with Isabelle. (Full disclosure: I'm the author of 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})"
)
没有内置例程来设置目标状态和应用一些证明步骤,但必要的基础设施都在那里。
我正在考虑创建 Eclipse PDE,需要与 Isabelle 进行交流。我确实找到了一些出版物,指出 Scala 可用于与 Isabelle 通信。
我正在寻找如何使用 Scala 在 Isabelle 中创建证明的示例。
为了后代,引用我自己的话 an older answer:
Isabelle itself is implemented in Standard ML, but for communicating with the external world, it uses a protocol called PIDE (= Prover IDE). The reference implementation of PIDE is bundled with Isabelle and written in Scala, so it can be used with any JVM language. The primary application of PIDE is Isabelle/jEdit, which uses the jEdit editor to build an IDE for Isabelle, including markup, continuous checking, ...
通过重用底层协议,您可以在 Isabelle 之上实现您自己的应用程序。
据我所知,目前最先进的示例是 Leon, which is an automated verification & synthesis toolkit for Scala programs. Internally, it uses libisabelle to communicate with Isabelle. (Full disclosure: I'm the author of 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})"
)
没有内置例程来设置目标状态和应用一些证明步骤,但必要的基础设施都在那里。