为什么在Isabelle/Isar证明中需要以下琐碎的自等式?
我试图学习isabelle/Isar,并从为什么在Isabelle/Isar证明中需要以下琐碎的自等式?,isabelle,Isabelle,我试图学习isabelle/Isar,并从Rings.thy中获得以下关于mod的简单证明。我复制了type类以避免与原始类冲突: class semiring_modulo1 = comm_semiring_1_cancel + divide + modulo + assumes div_mult_mod_eq: "a div b * b + a mod b = a" begin 这就是引理,它的证明让我困惑。第一行是有意义的,因为它使用了先前的定理,并通过对称性重写
Rings.thy
中获得以下关于mod
的简单证明。我复制了type类以避免与原始类冲突:
class semiring_modulo1 = comm_semiring_1_cancel + divide + modulo +
assumes div_mult_mod_eq: "a div b * b + a mod b = a"
begin
这就是引理,它的证明让我困惑。第一行是有意义的,因为它使用了先前的定理,并通过对称性重写了它。但是接下来的两行看起来真的很奇怪。它们中的每一个都表示相同的事物等于自身(例如,“a div b=a div b”
)。它们似乎没用/没有意义。它们没有连接到引理中的q
或r
(证明中从未提到q
和r
)
我的问题是:
为什么这些空洞的等式是必要的(如果不考虑这些等式,就会证明问题)
这些在英语/米扎语中的等效语句是什么
在Isar中,是否有其他更接近英语的方式来编写证明(例如,采用q=a div b…)。只是,(由
获取
关键字生成)的规则如下所示:
?q1 = a div b ⟹ ?r1 = a mod b ⟹ a = ?q1 * b + ?r1 ⟹ thesis
这是高阶逻辑中存在语句的常用编码。a div b=a div b
和a mod b=a mod b
仅为blast
提供有关如何实例化前两个假设的提示。然而,这似乎不是真正需要的,它也可以在没有这两个微不足道的等式的情况下工作
在任何情况下,即使我想给出实例化提示,我也可能会用那个[a div b”“a mod b”]
或那个[refl refl]
来代替
也就是说,我不确定这个引理为什么会存在。这些假设似乎有点空洞
?q1 = a div b ⟹ ?r1 = a mod b ⟹ a = ?q1 * b + ?r1 ⟹ thesis