Isabelle 你什么时候会在Isar证据中使用“假定”?

Isabelle 你什么时候会在Isar证据中使用“假定”?,isabelle,isar,Isabelle,Isar,Isar除了有假设,还有命令假定,在Isar证明块中引入事实。从我在文档中看到和阅读的内容来看,它不需要在目标中明确列出假设(推定?),似乎添加了一个案例来表明假定的陈述来自其他目标 所以问题是:我什么时候会使用pressure而不是aspause,我能用presause做些什么好把戏呢?presause并不能让Isar语言更具表达力,因为你可以将每个带有presause的证明重新构造成一个带有aspause的证明。然而,至少有两种(或多或少常见的)用例: 首先,pressure有时会导致更自然

Isar除了有
假设
,还有命令
假定
,在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节规则推理(细化)中所述的方式,以某种目标解决。这些原则比大多数人预期的更一般,例如,目标可能是示意图,应用程序可能通过统一发明合适的前提。