我已经与 Isabelle/HOL 合作了几个月,但我一直无法弄清楚使用_tac的确切意图。
具体来说,我说的是case与case_tac和induct与indut_tac (尽管一般来说了解tac的含义会很好,因为我也在使用其他方法,例如cut_tac)。
我注意到我不能使用带有 ⋀ 绑定变量的 apply 来使用案例或归纳,但如果它是结构化证明,我可以。为什么?
一个例子:
lemma "¬(∀x. ¬(P x)) ⟹ ∃x. P x"
apply (rule ccontr)
apply (erule notE)
apply (rule allI)
apply (case_tac "P x")
apply (erule notE)
apply (erule exI)
apply assumption
done
另一方面,我注意到 induct 和 induct_tac 之间的另一个区别是我可以对后者使用双重感应,但不能对前者使用。再说一次,我不知道为什么。
提前致谢。