Isabelle 伊莎贝尔:大锤找到了证据,但失败了
我经常遇到这样的问题,Isabelle 伊莎贝尔:大锤找到了证据,但失败了,isabelle,theorem-proving,Isabelle,Theorem Proving,我经常遇到这样的问题,sledgehammer找到了一个证明,但当我插入它时,它不会终止。我猜《大锤》是《伊莎贝尔》中最重要的部分之一,但如果证明失败,它就会变得很烦人 在, 有一小章是关于“为什么梅蒂斯不能重建证据?” 它列出: 尝试isar\u证明选项以获得逐步isar证明,其中 每个步骤都由metis调整。因为台阶比较小,, metis更有可能重播它们 尝试使用smt证明方法,而不是metis。它通常更强, 但是你需要有Z3来重放证据,相信我 SMT解算器,或使用证书 尝试blast或au
sledgehammer
找到了一个证明,但当我插入它时,它不会终止。我猜《大锤》是《伊莎贝尔》中最重要的部分之一,但如果证明失败,它就会变得很烦人
在,
有一小章是关于“为什么梅蒂斯不能重建证据?”
它列出:
isar\u证明
选项以获得逐步isar证明,其中
每个步骤都由metis
调整。因为台阶比较小,,
metis
更有可能重播它们smt
证明方法,而不是metis
。它通常更强,
但是你需要有Z3来重放证据,相信我
SMT解算器,或使用证书blast
或auto
证明方法,传递必要的事实
通过展开
,使用
,简介:
,elim:
,dest:
,或simp:
,如下所示:
合适展开
和使用之间有什么区别?对于如何从失败的metis
证明中使用intro:
、elim:
和dest:
,是否有任何最佳实践
部分示例
proof-
have "(det (?lm)) = (det (transpose ?lm))" by (smt det_transpose)
then have "(det (?lm)) = [...][not shown]"
unfolding det_transpose transpose_mat_factor_col by auto
then show ?thesis [...][not shown]
qed
我想去掉证明的第一行,因为这行似乎很琐碎。如果我删除第一行,
sledgehammer
仍会找到证明,但找到的证明失败(不会终止)。我可以回答您的子问题“展开和使用有什么区别?”。粗略地说,它是这样工作的
假设引理foo
的形式是x=a+b+c
。如果你写信
unfolding foo
using foo
在您的证明中,所有出现的x
将替换为a+b+c
。另一方面,如果你写
unfolding foo
using foo
然后,x=a+b+c
将被添加到您的假设列表中。您提出了许多问题,但我将把您的标题和第二段作为您主要投诉的实质,在这里我给出了一个冗长的答案,可以用
- 大锤是三管齐下的武器库的一部分
- 你变得更有经验,不断的实验,不断的尝试和错误是启发
- 不使用Sledgehammer返回的许多证明是使用Sledgehammer的一个重要部分,并且
minimize
和preplay\u timeout
选项可以通过自动播放校样节省一些时间和挫折感,这会为您提供计时信息,有时还会显示找到的校样将失败
从你的第二段开始,你说:
我经常遇到这样的问题,大锤找到了证据。但是我试过了,但是证据并没有终止。我想大锤是伊莎贝尔最重要的部分之一
<大锤是很重要的,但我认为它是一个三口径的阿森纳的一部分,其中三个部分是:
使用自然推理的详细证明步骤
自动证明方法,如auto
,simp
,rule
,等等。其中很大一部分将是创建自己的simp
重写规则,并学习将定理与rule
以及其他无数自动证明方法结合使用
大锤式调用自动定理证明器(ATP)。根据经验,使用步骤1和步骤2设置Sledgehammer。经验很重要。您可以使用auto
来简化事情,使Sledgehammer成功,但您可能不使用auto
,因为它会将公式扩展到Sledgehammer不可能成功的地方
…但如果证明失败,那就很烦人了
所以在这里,你的期望和我对大锤的期望是不同的。这些天,如果我感到恼火,我会恼火,因为我必须工作30秒以上来证明一个定理。如果说我对一个特别的大锤证明失败感到非常失望,那是因为我已经尝试证明一个定理好几个小时或几天了,但都没有成功
使用大锤不是为了找到证据,而是为了找到好的证据
自动化有时可以减轻挫折感。点击一个大锤样,却发现它失败了,这将是令人沮丧的。以下是我目前使用Sledgehammer的方式,除非我开始迫切需要证据:
sledgehammer_params[minimize=smart,preplay_timeout=10,timeout=60,verbose=true,
max_relevant=smart,provers="
remote_vampire metis remote_satallax z3_tptp remote_e
remote_e_tofof spass remote_e_sine e z3 yices
"]
选项minimize=smart
和preplay\u timeout=10
与大锤找到校样后播放校样相关。不使用Sledgehammer发现的许多证明是使用Sledgehammer的一个重要部分,而证明回放是剔除证明的一个重要部分
就我自己而言,我不会处理太多没有终止的大锤证明,但这可能是因为我从一开始就有选择性
我对Sledgehammer证明的第一个标准是它的速度相当快,所以当Sledgehammer报告它发现了一个超过3秒长的证明时,我甚至不尝试使用它,除非我非常想知道一个定理是否可以被证明
对我来说,大锤的使用通常是这样的:
- 陈述一个定理,看看我是否能幸运地使用大锤
If Sledgehammer给出了一个30毫秒以下的证明,然后我认为这是一个很好的证明,但是我仍然在实验中使用<代码>尝试< /COD>和ISAR.R.PDF第208页第4节第4页的自动证明方法。很多时候,我可以得到5毫秒或更短的证明
- A
metis
总时间超过100ms的证明,我愿意工作