Isabelle/HOL中Int理论的问题

Isabelle/HOL中Int理论的问题,isabelle,Isabelle,我正在做一个证明,我可以把它简化为“of_int I=0=>I=0”。这似乎是“of_int_eq_0_iff”规则的简单应用,但我无法成功应用此规则。 在进一步的探索中,我发现我无法证明下面的引理 lemma of_int_eq_0_imp1: “of_int i = 0 ==> i = 0” 无论如何。也就是说,除非我在上下文环\u char\u 0中声明引理。那么引理可以很容易地证明如下: context ring_char_0 begin lemma of_int_eq_0_im

我正在做一个证明,我可以把它简化为“of_int I=0=>I=0”。这似乎是“of_int_eq_0_iff”规则的简单应用,但我无法成功应用此规则。 在进一步的探索中,我发现我无法证明下面的引理

lemma of_int_eq_0_imp1: “of_int i = 0 ==> i = 0”
无论如何。也就是说,除非我在上下文环\u char\u 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
但是我不能在这个上下文之外应用这个引理,这是我的主要定理所要求的(它位于不同的上下文中)


任何帮助都将不胜感激。

事实上,你只能在
环\u char\u 0
内证明你的引理,这应该会让你产生怀疑。这是因为iff的引理
是在
环字符0
本身的上下文中定义的。你可以通过键入例如

declare [[show_sorts]]
thm of_int_eq_0_iff
> (of_int (?z∷int) = (0∷?'a∷ring_char_0)) = (?z = (0∷int))
这是因为在具有特征k的环中≠ 0,这不成立。在这样的环中,尽管n不是0,但对于k的所有倍数n,n的
将为0

如果您的原始目标减少到
of_int i=0==>i=0
,那么您的原始目标可能只适用于特征为0的环,或者您需要一个不同的证明,不需要
of_int i=0==>i=0