src/HOL/Groups.thy
changeset 59559 35da1bbf234e
parent 59557 ebd8ecacfba6
child 59815 cce82e360c2f
equal deleted inserted replaced
59558:5d9f0ace9af0 59559:35da1bbf234e
   198 
   198 
   199 class comm_monoid_add = zero + ab_semigroup_add +
   199 class comm_monoid_add = zero + ab_semigroup_add +
   200   assumes add_0: "0 + a = a"
   200   assumes add_0: "0 + a = a"
   201 begin
   201 begin
   202 
   202 
       
   203 subclass monoid_add
       
   204   by default (simp_all add: add_0 add.commute [of _ 0])
       
   205 
   203 sublocale add!: comm_monoid plus 0
   206 sublocale add!: comm_monoid plus 0
   204   by default (insert add_0, simp add: ac_simps)
   207   by default (simp add: ac_simps)
   205 
       
   206 subclass monoid_add
       
   207   by default (fact add.left_neutral add.right_neutral)+
       
   208 
   208 
   209 end
   209 end
   210 
   210 
   211 class monoid_mult = one + semigroup_mult +
   211 class monoid_mult = one + semigroup_mult +
   212   assumes mult_1_left: "1 * a  = a"
   212   assumes mult_1_left: "1 * a  = a"
   223 
   223 
   224 class comm_monoid_mult = one + ab_semigroup_mult +
   224 class comm_monoid_mult = one + ab_semigroup_mult +
   225   assumes mult_1: "1 * a = a"
   225   assumes mult_1: "1 * a = a"
   226 begin
   226 begin
   227 
   227 
       
   228 subclass monoid_mult
       
   229   by default (simp_all add: mult_1 mult.commute [of _ 1])
       
   230 
   228 sublocale mult!: comm_monoid times 1
   231 sublocale mult!: comm_monoid times 1
   229   by default (insert mult_1, simp add: ac_simps)
   232   by default (simp add: ac_simps)
   230 
       
   231 subclass monoid_mult
       
   232   by default (fact mult.left_neutral mult.right_neutral)+
       
   233 
   233 
   234 end
   234 end
   235 
   235 
   236 class cancel_semigroup_add = semigroup_add +
   236 class cancel_semigroup_add = semigroup_add +
   237   assumes add_left_imp_eq: "a + b = a + c \<Longrightarrow> b = c"
   237   assumes add_left_imp_eq: "a + b = a + c \<Longrightarrow> b = c"