equal
deleted
inserted
replaced
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" |