## `Cat::AbelianMonoid` -- the category of abelian monoids

#### Introduction

`Cat::AbelianMonoid` represents an abelian monoid.

#### Generating the category

`Cat::AbelianMonoid()`

#### Categories

`Cat::AbelianSemiGroup`

#### Axioms

if `dom` has `Ax::canonicalRep` then
`Ax::normalRep`

#### Details

- An `Cat::AbelianMonoid` is an abelian semi-group with a neutral element `dom::zero` according to the operation `+` (`_plus`).
- Use the axiom `Ax::normalRep` to state that zero is always represented in a unique way (i.e. canonically).
- If an abelian monoid has not the axion `Ax::normalRep` then `dom::zero` is only one possible representation of the neutral element. An abelian semi-group must at least have the method `"iszero"` to test for zero in such a case.

#### Basic Entries

zero

  Must hold the neutral Element according to the operation `+`.

#### Method intmult: returns integer multiple

- `intmult(dom x, Type::NonNegInt n)`
- - Returns `dom::zero` if `n` is 0 and the `n`-fold sum of `x` if `n` is positive. This method is implemented like ``repeated squaring'' using the domains method `"_plus"`.

#### Method iszero: tests if element is zero

- `iszero(dom x)`
- - Returns `TRUE` if `x` is equal to zero. This implementation uses the method `"equal"` to compare `x` with `dom::zero`.

#### Changes

- no changes

Do you have questions or comments?
Copyright © SciFace Software GmbH & Co. KG 2000