如果Isabelle没有找到引理的证据,是否有可能输出所有用于到达子目标的证据方法所做的一切,在这些方法中他们无法继续进行?这将有助于我看到他们陷入困境的途径,这将帮助我指出他们正确的方向。
(而且对于完成的证明,我会发现有一个完整的证明日志很有意思,它显示了为证明某些引理而进行的所有基本推论。)
答案 0 :(得分:0)
这个问题听起来与this one类似,我几天前回答过。该答案的部分内容也适用于此处。无论如何,要具体回答这个问题:
不是真的。对于大多数基本证明方法(rule
等,intro
,fact
,cases
,induct
),它们做什么以及何时失败都相对简单,它几乎总是因为他们试图应用的规则并不与他们给出的目标/前提相统一。 (或者他们不知道首先应用哪条规则)
您可能正在考虑更多自动策略,例如blast
,force
,simp
和auto
。他们中的大多数(blast
,force
,fastforce
,fast
,metis
,meson
,best
等都是“全有或全无”:他们要么解决子目标,要么根本不做任何事情。因此,找出它们卡在哪里并且通常人们使用auto
进行此类探索是有点棘手的:您应用auto
,查看剩余的子目标,并考虑一下您的事实/参数可以添加以便分解更多。
simp
的情况类似,只是它的确小于auto
。 simp
是简化器,它使用术语重写,称为simprocs的自定义重写过程,某些求解器(例如用于线性算术),以及一些其他方便的东西,例如拆分器来摆脱if
表达式。 auto
基本上simp
与经典推理相结合,这使得它比simp
强大得多,但也不太可预测。 (偶尔,auto
做得太多,从而将可证明的目标转变为无法实现的目标)
有一些跟踪工具(例如简化器跟踪,解释为here)。我认为还有一种方法可以追踪经典推理,但我似乎无法找到它;也许我错了。在任何情况下,跟踪工具有时可以帮助解释意外行为,但我不认为它们是您想要在这里使用的那种东西。更好的方法是了解这些方法尝试的内容,然后当simp
或auto
返回子目标时,您可以查看这些内容并确定您期望的内容simp
和auto
要做下一步以及它为什么不这样做(通常是因为一些遗漏的事实)并修复它。