我正在研究一个我能够减少到“of_int i = 0 ==> i = 0“。这似乎是规则“of_int_eq_0_iff”的简单应用,但我无法成功应用此规则。 在进一步的探索中,我发现我无法证明以下引理
lemma of_int_eq_0_imp1: “of_int i = 0 ==> i = 0”
无论如何,无论如何。也就是说,除非我在上下文ring_char_0中声明引理。然后可以很容易地证明引理如下:
context ring_char_0 begin
lemma of_int_eq_0_imp1: “of_int i = 0 ==> i = 0”
using of_int_eq_iff [of i 0] by simp
end
但是我不能在这个背景之外应用这个引理,这是我的主要定理所要求的(它位于不同的上下文中)。
非常感谢任何帮助。
答案 0 :(得分:1)
事实上你只能在ring_char_0
内证明你的引理会让你产生怀疑。这样做的原因是引理of_int_eq_0_iff
是在ring_char_0
本身的上下文中定义的。你可以通过输入例如
declare [[show_sorts]]
thm of_int_eq_0_iff
> (of_int (?z∷int) = (0∷?'a∷ring_char_0)) = (?z = (0∷int))
这是因为在具有特征k≠0的环中,这不成立。在这样的环中,of_int n
对于k的所有倍数n将为零,尽管n不为0.
如果您的原始目标缩小为of_int i = 0 ==> i = 0
,那么您的原始目标可能仅适用于特征0的响铃,或者您需要不同的证明,不需要of_int i = 0 ==> i = 0
。