Isabelle / HOL中的Int理论问题

时间:2014-10-31 21:36:08

标签: isabelle

我正在研究一个我能够减少到“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

但是我不能在这个背景之外应用这个引理,这是我的主要定理所要求的(它位于不同的上下文中)。

非常感谢任何帮助。

1 个答案:

答案 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