equal
deleted
inserted
replaced
282 have "- a = - a + (a + b)" using assms by simp |
282 have "- a = - a + (a + b)" using assms by simp |
283 also have "\<dots> = b" by (simp add: add_assoc [symmetric]) |
283 also have "\<dots> = b" by (simp add: add_assoc [symmetric]) |
284 finally show ?thesis . |
284 finally show ?thesis . |
285 qed |
285 qed |
286 |
286 |
|
287 |
287 lemmas equals_zero_I = minus_unique (* legacy name *) |
288 lemmas equals_zero_I = minus_unique (* legacy name *) |
288 |
289 |
289 lemma minus_zero [simp]: "- 0 = 0" |
290 lemma minus_zero [simp]: "- 0 = 0" |
290 proof - |
291 proof - |
291 have "0 + 0 = 0" by (rule add_0_right) |
292 have "0 + 0 = 0" by (rule add_0_right) |
301 lemma right_minus [simp]: "a + - a = 0" |
302 lemma right_minus [simp]: "a + - a = 0" |
302 proof - |
303 proof - |
303 have "a + - a = - (- a) + - a" by simp |
304 have "a + - a = - (- a) + - a" by simp |
304 also have "\<dots> = 0" by (rule left_minus) |
305 also have "\<dots> = 0" by (rule left_minus) |
305 finally show ?thesis . |
306 finally show ?thesis . |
|
307 qed |
|
308 |
|
309 subclass cancel_semigroup_add |
|
310 proof |
|
311 fix a b c :: 'a |
|
312 assume "a + b = a + c" |
|
313 then have "- a + a + b = - a + a + c" |
|
314 unfolding add_assoc by simp |
|
315 then show "b = c" by simp |
|
316 next |
|
317 fix a b c :: 'a |
|
318 assume "b + a = c + a" |
|
319 then have "b + a + - a = c + a + - a" by simp |
|
320 then show "b = c" unfolding add_assoc by simp |
306 qed |
321 qed |
307 |
322 |
308 lemma minus_add_cancel: "- a + (a + b) = b" |
323 lemma minus_add_cancel: "- a + (a + b) = b" |
309 by (simp add: add_assoc [symmetric]) |
324 by (simp add: add_assoc [symmetric]) |
310 |
325 |