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