在Isabelle中加载预编译的堆映像

在Isabelle中加载预编译的堆映像,isabelle,Isabelle,根据以下建议和其他建议,我为名义上的伊莎贝尔创建了一个形象: isabelle build -v -b -d . Nominal2 堆映像是在~/.isabelle下创建的: .isabelle/Isabelle2013-2/heaps/polyml-5.5.1_x86-linux/Nominal2 然后我开始 isabelle jedit -d /path/to/Nominal-distribution -l Nominal2 我希望系统能很快加载一个理论,导入一部分标称值,但这几乎花了

根据以下建议和其他建议,我为名义上的伊莎贝尔创建了一个形象:

isabelle build -v -b -d . Nominal2
堆映像是在~/.isabelle下创建的:

.isabelle/Isabelle2013-2/heaps/polyml-5.5.1_x86-linux/Nominal2
然后我开始

isabelle jedit -d /path/to/Nominal-distribution -l Nominal2

我希望系统能很快加载一个理论,导入一部分标称值,但这几乎花了一分钟。这是否正常?

构建堆映像的过程看起来是正确的。事实上,您实际上不需要执行
isabelle build
步骤,因为如果堆不存在或不是最新的,则
isabelle jedit
将自动触发生成

您可以根据两个事实确定isabelle jedit是否正在使用堆:

  • 如果需要构建堆,您将看到一个对话框弹出,显示您首次启动jEdit时的构建进度。这通常需要10秒到数小时,具体取决于需要构建的堆的大小。下面的屏幕截图显示了构建对话框的示例;在本例中,我正在构建
    Main
    堆:

  • 如果它根本不使用堆(例如,如果您忘记指定
    -l Nominal2
    ),则需要在jEdit中打开
    Nominal2
    包含的所有理论,您将在jEdit“理论”面板中看到它们

    例如,在下图中,
    Scratch
    导入一个文件
    AutoCorres
    ,该文件依次导入
    MapExtra
    填充
    位操作
    ,等等。如果我使用的是正确的
    AutoCorres
    堆,则不需要加载这些文件,因为它们已经预编译到堆中:


即使Isabelle正在使用堆,它也必须在启动时将其加载到内存中。这通常需要几秒钟,再加上杰迪特本身的启动时间并不特别惊人,这可能就是你所经历的。

我明白了。我的默认理论不是主要的,而是名义上的,所以你的最后一段一定是这样。我测量的50秒是在Jedit启动之后:我从打开导入标称理论的理论文件开始测量时间。重复我在理论面板中看到的实验,从标称处理Lambda.thy需要很长时间。然后我意识到Lambda.thy不是根文件中的标称映像的一部分。很抱歉耽误了你的时间,我从你的回答中学到了很多。现在,创建一个包含Lambda.thy的新的标称图像,并确保连续检查,我在几秒钟内得到理论文件的输出。@Gergely:很高兴你解决了你的问题!对于第一张图片的混乱表示抱歉;我只是构建了
Main
来获取构建对话框的屏幕截图,而不是因为您自己应该构建Main。我会更新答案,让它更清楚。这一点我一点也不困惑,对于任何第一次开始伊莎贝尔/杰迪特的人来说,这是一个熟悉的窗口。