是否存在Isabelle用户遵循的"通用"非正式算法,当他们试图证明某些事情未被立即证明auto或sledgehammer?如果auto需要额外的引理,由用户制定成功或者如果使用更好的一些其他证明方法,一种通用的方法.
一个相关的问题是:是否可能在某处找到一个表格,其中包含所有证明方法以及应用它们的上下文?当我阅读 编程和校对教程时,各种方法的描述(分别是某些方法的变体,例如许多变体auto)都散布在文本中,这不断让我回到文本和Isabelle代码之间(这也会导致忘记究竟用于什么),这导致工作效率非常低.
ammbauer 的回答已经涵盖了很多重要的内容,但这里还有一些可能对您有所帮助的内容:
simp add:)或规则的某些先决条件未能证明(在这种情况下,补充足够的事实,使他们可以证明,或者自己做的一个额外的步骤)define x where "x = …"并使用 展开它们x_def。这使您的目标更小、更清晰,并降低了自动化在其证明搜索中走上无用路径的可能性。definition, 并且您想展开它以进行证明,则必须自己使用unfolding foo_def或来执行此操作simp add: foo_def。fun或primrec 正在展开的函数的定义方程,除非方程 ( ) 已从 simp 集中手动删除。(由或)simpsimp_allforceautofoo.simpslemmas [simp del] = foo.simpsdeclare [simp del] foo.simpssimp或来完成simp_all。任何与经典推理(即一阶逻辑或集合)相关的事物都需要blast。如果您需要重写和经典推理,请尝试auto或force。可以认为是andauto的组合,simp并且如果它不能完全解决目标blast,force则就像它的“全有或全无”变体一样auto失败。它也比 更努力一点auto。add:and del:for simpand simp_all,以及等效的simp:/ simp del:for auto。然而,经典推理(auto,blast,force等)也接受intro:,dest:,elim:和相应的del:选项。这些用于声明引入、销毁和消除规则。关于经典推理器的更多信息:
P ? Q ? R当目标具有形式时应使用的形式规则R,将其替换为P和QP ? Q ? R只要形式的事实存在P于前提中,就应该使用G新的目标Q和来替换目标R ? G。thm exE(消除存在量词)。这些就像破坏规则的概括,也允许引入新变量。这些规则经常出现在这种类似情况的区分中。auto,blast,force等会使用规则中claset(即已宣告intro/ dest/elim在适当的时候自动)。如果这样做没有得到证明,自动化将在某个时候回溯并尝试其他规则。您可以通过使用intro!:代替intro:(对于其他规则类似)来禁用特定规则的回溯。然后自动化将尽可能应用该规则,而无需回头。rule,drule,erule对应于将一个前奏/目标/琳规则,并且是单步推理好,例如为了找出原因自动方法不能使在某一点进步。intro就像rule但应用迭代给定的规则集,直到不再可能。safe并且clarify偶尔有用。前者本质上剥离了量词和逻辑连接词(在像 一样的目标上尝试?x. P x ? Q x ? R x),而后者同样试图“清理”目标。(我忘记了它到底是做什么的,我只是在我认为它可能有用的时候偶尔使用它)小智 6
不,没有"通用"的非正式方式.你可以用try0它尝试所有标准的证明方法(如auto,blast,fastforce,...)和/或sledgehammer哪个更先进.
之后,有趣的部分开始了.
对于你的第二个问题:不,没有这样的概述.也许有人应该写一个,但如前所述,你可以简单地使用try0.
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |