伊莎贝尔:为什么我在尝试与大锤相比时会得到完全不同的结果

时间:2014-02-11 05:58:04

标签: isabelle

当我只看时(标题中没有说明) 在大锤的结果,输出 尝试经常给出大锤的各种结果 直接运行大锤给出零(!)结果。

现在我知道,Sledgehammer的设计目标不是决定论, as stated by Lawrence Paulson。 然而,这看似随意的结果却没有理解为什么 对初学者来说有点令人沮丧, 不仅对我而且对于帮助项目的学生。

有可能总是运行Sledgehammer并尝试并行。

我不需要确切的答案,但有人知道为什么结果会有所不同吗?两个大锤的呼叫是否具有不同的参数?

1 个答案:

答案 0 :(得分:2)

首先,我建议订阅Isabelle用户的邮件列表,以查看有关这些内容的信息。特别是,在过去的六个月中,有关于Sledgehammer的线索

  • sledgehammertry
  • 的关系
  • Auto methods中的Isabelle / Options如何与try
  • 相关联
  • 多线程如何影响trysledgehammer
  • 如何为Sledgehammer面板设置选项和说明,可用于运行`sledgehammer,
  • CPU核心数如何影响为sledgehammer
  • 自动设置选项的方式
  • 并且通常如何以各种方式为大锤选择证明者,一些是自动的。

这一切都与您的问题有关,对您的问题的一个简短回答是,影响sledgehammer输出的两件大事是选项和多线程,您只能完全控制sledgehammer选项在您使用时为其提供选项,或者使用sledgehammer-params设置选项。

下面,我给一些邮件列表链接,其中M.Wenzel昨天简要介绍了Sledgehammer的自动设置。

第二个问题的另一个答案是:try命令是try0sledgehammer的多线程组合。有默认的sledgehammer选项,可以使用sledgehammer_param查看。如果您尚未更改这些选项,则在您的理论中使用命令sledgehammer将使用这些选项。 try是否正在使用这些选项,我不知道,但我会告诉您如何确定try是否正在给sledgehammer一个未在默认选项中列出的证明者。< / p>

我认为try适合你,就像它对我有用。

首先,插入sledgehammer_params并查看输出面板。它会显示provers。我的默认值为e spass vampire z3,因为我有4个核心。这些是由PIDE在启动时选择的。这些是将在Sledgehammer面板中显示的相同证明。第二个重要选项是timeout = 30

当我为try方法无法证明的定理插入try0时,sledgehammer可以使用by以及输出面板中列出的每个"e"证明,它会告诉我ATP(自动定理证明器)找到证据。例如,我的向我显示"z3""spass"try,每个都会显示一个证据。

答案:如果sledgehammer_params显示使用try时未列出的ATP,则sledgehammer正在为provers提供不同的sledgehammer sledgehammer 1}}选项,而不是使用默认选项运行sledgehammer

运行一个尝试列出的证明者要回答您的问题,是否可以trytry提供sledgehammer[provers = "z3", timeout = 60] timeout给您的证明,运行try列出的各个证明,例如:

sledgehammer

我显示z3只是为了表明您可以更改它,但您通常不需要更长的超时,因为try不会永远尝试。

如果您明确使用z3sledgehammer提供了nitpick证明,当try给您try0证明时,则会告诉您这是选项和多项 - 影响不同结果的线程。我绝对知道sledgehammernitpick的输出差别很大。

我不使用nitpick。我使用nitpick和{{1}},但您所说的显示自动设置的自动设置选项更好。自动{{1}}找到了{{1}}找不到的反例,因为我已更改了{{1}}的选项。

<强>链接

相关问题