在使用 Isar 时,我发现了一个令人惊讶的行为(对我来说)。我尝试使用假设,有时 Isar 抱怨它无法解决未决目标,例如我最典型的示例是有一个假设但无法假设它:
lemma
assumes "A"
shows "A"
proof -
assume "A"
from this show "A" by (simp)
qed
尽管以下确实有效:
lemma
shows "A⟹A"
proof -
assume "A"
from this show "A" by simp
qed
这并不奇怪。
但是下一个令我惊讶的是,鉴于我的第一个示例失败了,它可以工作:
lemma
assumes "A"
shows "A"
proof -
have "A" by (simp add: assms)
from this show "A" by (simp)
qed
为什么第一个和第二个不一样?
错误信息:
Failed to refine any pending goal
Local statement fails to refine any pending goal
Failed attempt to solve goal by exported rule:
(A) ⟹ A