如何使用持久堆映像在Isabelle / jEdit中加快理论加载?

时间:2013-03-08 10:44:29

标签: jedit isabelle

假设我有一个目录isabelle_afp,其中存储了很多理论。该目录是一个库,我不打算更改其中的文件。我想加快Isabelle / jEdit的启动时间(默认情况下,isabelle_afp我当前理论所依赖的所有理论都会重新处理。)

如何跳过此步骤? system manual告诉我构建持久堆映像。最简单的方法是什么?

我怎么能告诉Isabelle / jEdit加载这个堆映像?

2 个答案:

答案 0 :(得分:2)

Isabelle2013中的Isabelle / jEdit已经通过内部使用isabelle build_dialog工具的相对基本机制(在引用的文档中有一个单独的条目)来负责构建堆映像。

在没有手动使用isabelle build_dialogisabelle build电动工具的情况下,您有两种主要的可能性:

  • jEdit对话框“Utilities / Options / Plugin Options / Isabelle / General”提供了“Logic”的选项,其中包含一个小工具提示,说明您必须在更改后重新启动应用程序。这样做,堆图像将在重新启动时生成。

  • 命令行选项-l,例如isabelle jedit -l HOL-Word

对于AFP会话,您需要分别告知系统有关会话目录的信息。这可以通过isabelle jedit -d DIR1 -d DIR2$ISABELLE_HOME_USER/ROOTS文件在命令行中完成(在单独的行中列出每个目录)。

纯命令行解决方案如下所示:

isabelle jedit -d isabelle_afp -l Simpl

请注意,在此示例中,isabelle_afp是(相对或绝对)目录名称,而Simpl是逻辑会话名称。

答案 1 :(得分:1)

首先,您需要为isabelle_afp目录设置“会话”。这是通过创建一个文件ROOT(在isabelle_afp内)来完成的,该文件包含以下形状的条目(另请参阅isabelle doc system第3章:Isabelle会话和构建管理)

session session_name = HOL +
  theories
    Theory1
    Theory2
    Theory3

这大致意味着堆图像session_name应该基于HOL堆图像,并且还包含理论Theory1Theory2,...

现在调用isabelle jedit -d isabelle_afp -l session_name。第一次完成时,这会构建会话session_name的堆映像。只要isabelle_afp中的任何内容都没有变化,任何进一步的调用都会直接在预构建的堆映像session_name之上启动Isabelle / jEdit。