在Isar中,assume
使用assume expects to be able to unify with existing premises in the goal
作为目标的前提,以便她可以使用它来建立结论。
assume
这是assume
的唯一用途,即从目标前提获取事实吗?
更新:因为有些人认为这太宽泛了,我不明白,我试着 重新提出问题。
本手册描述了{{1}}的逻辑内容。但它的用途是什么?当我从目标的前提得到一个事实时,这只局限于这种情况吗?
答案 0 :(得分:1)
我看到assume
关键字的两种用法,当然是同一过程的两个实例:说明要证明的属性的前提。
如果我们采取一个愚蠢的例子:
lemma "∀A B C D. A ⟶ B ⟶ C ⟶ D ⟶ (A ∧ B) ∧ (C ∧ D)"
using assms
proof (intro allI impI)
fix A B C D
assume A B
then have "A ∧ B" .. (* or "by rule", "by default", "by simp", ... *)
{ fix E F
assume E and F
then have "E ∧ F" ..
} note H = this
assume C D then have "C ∧ D" ..
from H[OF `A ∧ B` `C ∧ D`] show "(A ∧ B) ∧ (C ∧ D)" . (* or "by fact" *)
qed
assume
似乎在proof
和proof
或show
之间的任何位置说明thus
命令生成的前提。这些假设属性必须是proof
命令(此处为A
B
C
和D
)生成的前提的子集。
或assume
出现在由{
和}
分隔的块中,您可以在其中假设您想要的任何内容,然后使用{{来证明属性P
1}}。当块关闭时,产生一个局部事实,由假设作为前提,属性have
作为结论。在示例中,我将其命名为P
并使用它来证明最后一个连接。