Isabelle:如果一个会话需要多个父会话怎么办?

时间:2018-05-22 20:36:58

标签: isabelle

我开发了一套使用Eisbach和HOL库的理论。在Isabelle / jEdit中一切正常。但是,在尝试使用isabelle build构建相应的会话时,找不到Eisbach和HOL库。在过去,当我还不需要HOL库时,我通过在HOL-Eisbach文件中指定HOL而不是ROOT作为父会话来修复此问题。由于需要HOL库,这个技巧不再适用,因为你不能有多个父会话。

如何构建同时使用Eisbach和HOL库的会话?

1 个答案:

答案 0 :(得分:1)

您可以在ROOT文件的sessions块中指定会话所依赖的其他会话,例如(例子来自法新社):

session Zeta_Function (AFP) = Dirichlet_Series +
  options [timeout = 600]
  sessions
    Euler_MacLaurin
    Bernoulli
  theories [document = false]
    "Dirichlet_Series.Dirichlet_Series_Analysis"
  theories
    Zeta_Function
  document_files
    "root.tex"

此会话以Dirichlet_Series作为父会话,并且还取决于会话Euler_MacLaurinBernoulli

那么如何确定哪些依赖项应该是父会话?好吧,请记住,为了构建会话,必须首先构建父会话,但只要父会话可用,您只需使用它而无需进一步的成本。这就是我们默认情况下依赖于HOL的原因:它通常是预先构建的。

这也意味着如果你只使用一小部分会话,那么选择一个会话作为你的父会是没有多大意义的。这就是我避免选择HOL-Library作为父会话的原因。通常,只需要一个或两个理论,可以在几秒钟内轻松处理,但如果您选择它作为父级,则用户必须构建{em>所有的HOL-Library为了使用你的会话。

所以,我会说你应该选择这样的父母:

  • 列出您依赖的所有会话以及使用大量材料
  • 选择该列表中最大的会话作为父级

如果你最终得到的父母非常小(例如HOL-Eisbach),那么选择父母作为父母,实际上并没有太大的收获。您可以这样做,但您也可以选择HOL