src/HOL/Groups.thy
changeset 62608 19f87fa0cfcb
parent 62379 340738057c8c
child 63145 703edebd1d92
equal deleted inserted replaced
62607:43d282be7350 62608:19f87fa0cfcb
   307   shows "c = a - b"
   307   shows "c = a - b"
   308 proof -
   308 proof -
   309   from assms have "(b + c) - (b + 0) = a - b" by (simp add: add.commute)
   309   from assms have "(b + c) - (b + 0) = a - b" by (simp add: add.commute)
   310   then show "c = a - b" by simp
   310   then show "c = a - b" by simp
   311 qed
   311 qed
       
   312 
       
   313 lemma add_cancel_right_right [simp]:
       
   314   "a = a + b \<longleftrightarrow> b = 0" (is "?P \<longleftrightarrow> ?Q")
       
   315 proof
       
   316   assume ?Q then show ?P by simp
       
   317 next
       
   318   assume ?P then have "a - a = a + b - a" by simp
       
   319   then show ?Q by simp
       
   320 qed
       
   321 
       
   322 lemma add_cancel_right_left [simp]:
       
   323   "a = b + a \<longleftrightarrow> b = 0"
       
   324   using add_cancel_right_right [of a b] by (simp add: ac_simps)
       
   325 
       
   326 lemma add_cancel_left_right [simp]:
       
   327   "a + b = a \<longleftrightarrow> b = 0"
       
   328   by (auto dest: sym)
       
   329 
       
   330 lemma add_cancel_left_left [simp]:
       
   331   "b + a = a \<longleftrightarrow> b = 0"
       
   332   by (auto dest: sym)
   312 
   333 
   313 end
   334 end
   314 
   335 
   315 class comm_monoid_diff = cancel_comm_monoid_add +
   336 class comm_monoid_diff = cancel_comm_monoid_add +
   316   assumes zero_diff [simp]: "0 - a = 0"
   337   assumes zero_diff [simp]: "0 - a = 0"