使用加减结合性的Isabelle/HOL

使用加减结合性的Isabelle/HOL,isabelle,formal-verification,Isabelle,Formal Verification,我正试图证明某种形式的东西 lemma assoc: "b + (c - d) = (b + c) - d" 好吧,结合性定理是库的一部分,但没有标记为简化,所以我需要手动添加它们。这些目标的确切名称是什么/它们在哪些理论中定义了?这些目标通常通过定理集合代数\u simps来解决。只需通过(simp add:algebra\u simps)编写 请注意,按照您陈述定理的方式,您将无法证明它,因为您没有指定b、c和d是组的元素。你需要写一些类似的东西 lemma assoc: "(b :: '

我正试图证明某种形式的东西

lemma assoc: "b + (c - d) = (b + c) - d"

好吧,结合性定理是库的一部分,但没有标记为简化,所以我需要手动添加它们。这些目标的确切名称是什么/它们在哪些理论中定义了?

这些目标通常通过定理集合
代数\u simps
来解决。只需通过(simp add:algebra\u simps)编写

请注意,按照您陈述定理的方式,您将无法证明它,因为您没有指定
b
c
d
是组的元素。你需要写一些类似的东西

lemma assoc: "(b :: 'a :: group_add) + (c - d) = (b + c) - d"

或者更特殊的东西,比如
nat
int
而不是
'a::group\u add

事实上,当您这样做时,IDE会通知您已经存在这样一个引理:
Groups.group\u add\u class.add\u diff\u eq

thm add_diff_eq
> ?a + (?b - ?c) = ?a + ?b - ?c

这些目标通常通过定理集合
代数\u simps
来解决。只需通过(simp add:algebra\u simps)
编写

请注意,按照您陈述定理的方式,您将无法证明它,因为您没有指定
b
c
d
是组的元素。你需要写一些类似的东西

lemma assoc: "(b :: 'a :: group_add) + (c - d) = (b + c) - d"

或者更特殊的东西,比如
nat
int
而不是
'a::group\u add

事实上,当您这样做时,IDE会通知您已经存在这样一个引理:
Groups.group\u add\u class.add\u diff\u eq

thm add_diff_eq
> ?a + (?b - ?c) = ?a + ?b - ?c