Isabelle 你什么时候会在Isar证据中使用“假定”?
Isar除了有Isabelle 你什么时候会在Isar证据中使用“假定”?,isabelle,isar,Isabelle,Isar,Isar除了有假设,还有命令假定,在Isar证明块中引入事实。从我在文档中看到和阅读的内容来看,它不需要在目标中明确列出假设(推定?),似乎添加了一个案例来表明假定的陈述来自其他目标 所以问题是:我什么时候会使用pressure而不是aspause,我能用presause做些什么好把戏呢?presause并不能让Isar语言更具表达力,因为你可以将每个带有presause的证明重新构造成一个带有aspause的证明。然而,至少有两种(或多或少常见的)用例: 首先,pressure有时会导致更自然
假设
,还有命令假定
,在Isar证明块中引入事实。从我在文档中看到和阅读的内容来看,它不需要在目标中明确列出假设(推定?),似乎添加了一个案例来表明假定的陈述来自其他目标
所以问题是:我什么时候会使用
pressure
而不是aspause
,我能用presause
做些什么好把戏呢?presause
并不能让Isar语言更具表达力,因为你可以将每个带有presause
的证明重新构造成一个带有aspause
的证明。然而,至少有两种(或多或少常见的)用例:
首先,pressure
有时会导致更自然的证明,因为你可以像切割一样使用pressure
例如,假设您的证明状态有两个目标A==>C
和B==>C
,并且您可以证明一些E
遵循A
和B
,给定当前上下文中的事实和E
,并且当前上下文中的事实暗示C
。使用假定
,您可以按如下方式构造证明:
presume E
show C <proof using E and facts>
thus C .
next
assume A
thus E <proof using A and facts>
thus E .
next
assume B
thus E <proof using A and facts>
thus E .
assume A
hence E <proof using A and facts>
show C <proof using E and facts>
next
assume B
hence E <proof using B and facts>
show C <proof using E and facts>
使用presume
,证明的结构更加明确:显然,我们只需要E
来显示结果,这可能是证明的有趣部分。此外,在假设
风格中,我们必须两次证明E
意味着C
。当然,这总是可以分解成引理,但如果证据需要大量的上下文事实,那就很难看了
其次,您可以在编写证明时使用pressure
,在aspect
s和show
s中查找键入错误。假设你有
fix x
assume A and B and C and D and E
show F
但是Isabelle告诉你,
节目
不会解决任何目标,也就是说,你可能在假设或目标陈述中有一些输入错误。现在,将假设
转换为假设
。如果show
仍然失败,那么错误就出现在目标语句的某个地方。否则,它可能在假设中的某个地方。用sorry
关闭show
证明,并尝试用apply\u end(假设)+
解除假设。它将停止于它无法统一的假设。很可能,这是错误的。我知道我可以从您那里得到一个好的、普遍有用的答案!:-)即使使用ASSUBE,您也可以通过执行以下操作来提取证明:{ASSUBE E have C}
,并将A==>C和B==>C`的证明嵌套到证明块中:{ASSUBE A show E
}{ASSUBE B show E}
。您可能仍然会发现“假定”样式更好。请注意,即使是假定
也不要求在目标前提中明确假定。重要的是,从Subof导出的规则可以按照isar ref手册第2.1.2节规则推理(细化)中所述的方式,以某种目标解决。这些原则比大多数人预期的更一般,例如,目标可能是示意图,应用程序可能通过统一发明合适的前提。