我试图证明一个定理但是陷入了一个子目标(我更喜欢跳过并证明以后)。我怎样才能跳过这个并证明其他人?
首先,我尝试了oops
和sorry
,但他们都中止了整个证明(而不是唯一的子目标)。我还尝试将子目标放入虚拟引理(假设用sorry
证明)然后使用它(apply (rule [my dummy lemma])
)但它将虚拟引理应用于其他所有子目标(不仅是第一个)。 / p>
答案 0 :(得分:4)
这主要取决于你是否使用了古老的(抱歉;))申请式或适当的结构化Isar来证明。我将举一个小例子来涵盖这两种风格。假设你想证明
lemma "A & B"
A
和B
只是作为潜在巨大公式的占位符。
作为结构化证明,您可以执行以下操作:
proof
show "A" sorry
next
show "B" sorry
qed
即,在此样式中,您可以使用sorry
省略子目标的证明。
在apply-style中你可以做到
apply (rule conjI)
defer -- "moves the first subgoal to the last position"
apply (*proof for subgoal "B"*)
apply (*proof for subgoal "A"*)
还有apply-style命令prefer n
,它将子目标n
移到前面。