当我只看时(标题中没有说明) 在大锤的结果,输出 尝试经常给出大锤的各种结果 直接运行大锤给出零(!)结果。
现在我知道,Sledgehammer的设计目标不是决定论, as stated by Lawrence Paulson。 然而,这看似随意的结果却没有理解为什么 对初学者来说有点令人沮丧, 不仅对我而且对于帮助项目的学生。
有可能总是运行Sledgehammer并尝试并行。
我不需要确切的答案,但有人知道为什么结果会有所不同吗?两个大锤的呼叫是否具有不同的参数?
答案 0 :(得分:2)
首先,我建议订阅Isabelle用户的邮件列表,以查看有关这些内容的信息。特别是,在过去的六个月中,有关于Sledgehammer的线索
sledgehammer
与try
,Auto methods
中的Isabelle / Options
如何与try
,try
和sledgehammer
,sledgehammer
,这一切都与您的问题有关,对您的问题的一个简短回答是,影响sledgehammer
输出的两件大事是选项和多线程,您只能完全控制sledgehammer
选项在您使用时为其提供选项,或者使用sledgehammer-params
设置选项。
下面,我给一些邮件列表链接,其中M.Wenzel昨天简要介绍了Sledgehammer的自动设置。
第二个问题的另一个答案是:try
命令是try0
和sledgehammer
的多线程组合。有默认的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
。
运行一个尝试列出的证明者要回答您的问题,是否可以try
为try
提供sledgehammer[provers = "z3", timeout = 60]
timeout
给您的证明,运行try
列出的各个证明,例如:
sledgehammer
我显示z3
只是为了表明您可以更改它,但您通常不需要更长的超时,因为try
不会永远尝试。
如果您明确使用z3
为sledgehammer
提供了nitpick
证明,当try
给您try0
证明时,则会告诉您这是选项和多项 - 影响不同结果的线程。我绝对知道sledgehammer
和nitpick
的输出差别很大。
我不使用nitpick
。我使用nitpick
和{{1}},但您所说的显示自动设置的自动设置选项更好。自动{{1}}找到了{{1}}找不到的反例,因为我已更改了{{1}}的选项。
<强>链接强>