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

Isabelle 伊莎贝尔:如果一个会话需要多个父会话怎么办?,isabelle,Isabelle,我开发了一套既使用艾斯巴赫又使用霍尔图书馆的理论。伊莎贝尔/杰迪特体内一切正常。但是,当尝试使用isabelle build构建相应的会话时,找不到Eisbach和HOL库。在过去,当我还不需要HOL库时,我通过指定holeisbach而不是HOL作为ROOT文件中的父会话来解决这个问题。由于需要HOL库,这个技巧不再有效,因为您不能有多个父会话 如何构建同时使用Eisbach和HOL库的会话?您可以在根文件的会话块中指定会话所依赖的其他会话,例如(来自AFP的示例): 此会话将Dirichle

我开发了一套既使用艾斯巴赫又使用霍尔图书馆的理论。伊莎贝尔/杰迪特体内一切正常。但是,当尝试使用
isabelle build
构建相应的会话时,找不到Eisbach和HOL库。在过去,当我还不需要HOL库时,我通过指定
holeisbach
而不是
HOL
作为
ROOT
文件中的父会话来解决这个问题。由于需要HOL库,这个技巧不再有效,因为您不能有多个父会话


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

您可以在根文件的
会话
块中指定会话所依赖的其他会话,例如(来自AFP的示例):

此会话将Dirichlet_Series作为父会话,另外还依赖于会话Euler_MacLaurin和
Bernoulli

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

这也意味着,如果只使用会话的一小部分,那么选择会话作为父会话没有多大意义。这就是为什么我避免选择
hollibrary
作为父会话的原因。通常,一个人只需要一个或两个理论,这些理论可以在几秒钟内轻松处理,但是如果你选择它作为你的父母,用户必须构建所有的
HOL库
,才能使用你的会话

所以,我想说你应该像这样选择父母:

  • 列出你所依赖的所有课程,并从中使用大量材料
  • 选择该列表中最大的会话作为父会话

如果你最终得到的父母非常小(例如,
HOL Eisbach
),那么你实际上不会从选择他作为父母中获得太多好处。您可以这样做,但也可以选择
HOL

我认为您可以删除
theory[document=false]
块。默认情况下,从其他会话导入的内容不会显示在文档中;我怀疑类似的事情,但也有一些奇怪的情况,这并没有像预期的那样起作用。
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"