blob: 5880c3a3a4964e65e0d2232a32b76d609b505bc8 [file] [edit]
class AddGroup (α : Type u) extends Add α, Zero α, Neg α where
addAssoc : {a b c : α} → a + b + c = a + (b + c)
zeroAdd : {a : α} → 0 + a = a
addZero : {a : α} → a + 0 = a
negAdd : {a : α} → -a + a = 0
open AddGroup
theorem negZero [AddGroup α] : -(0 : α) = 0 := by
rw [←addZero (a := -(0 : α)), negAdd]
theorem subZero [AddGroup α] {a : α} : a + -(0 : α) = a := by
rw [← addZero (a := a)]
rw [addAssoc]
rw [negZero]
rw [addZero]
theorem shouldFail [AddGroup α] : ((0 : α) + 0) = 0 :=
rfl -- Error