[Top] [Up] [Previous] [Next] [Index]

# 53 Additive Magmas

### Sections

1. (Near-)Additive Magma Categories
2. (Near-)Additive Magma Generation
3. Attributes and Properties for (Near-)Additive Magmas
4. Operations for (Near-)Additive Magmas

This chapter deals with domains that are closed under addition `+`, which are called near-additive magmas in GAP. Together with the domains closed under multiplication `*`, (see Magmas), they are the basic algebraic structures. In many cases, the addition is commutative (see IsAdditivelyCommutative), the domain is called an additive magma then; every module (see Modules), vector space (see Vector Spaces), ring (see Rings), or field (see Fields and Division Rings) is an additive magma. In the cases of all (near-)additive magma-with-zero or (near-)additive magma-with-inverses, additional additive structure is present (see (Near-)Additive Magma Categories).

## 53.1 (Near-)Additive Magma Categories

- `IsNearAdditiveMagma(` obj`) C`

  A near-additive magma in GAP is a domain A with an associative but not necessarily commutative addition `+`: A ×A → A.

- `IsNearAdditiveMagmaWithZero(` obj`) C`

  A near-additive magma-with-zero in GAP is a near-additive magma A with an operation `0*` (or `Zero`) that yields the zero of A.

  So a near-additive magma-with-zero A does always contain a unique additively neutral element z, i.e., z + a = a = a + z holds for all a ∈ A (see AdditiveNeutralElement). This element z can be computed with the operation `Zero` (see Zero) as `Zero(` A`)`, and z is also equal to `Zero(` elm`)` and to `0*`elm`` for each element elm in A.

  Note that a near-additive magma containing a zero may not lie in the category `IsNearAdditiveMagmaWithZero` (see Domain Categories).

- `IsNearAdditiveGroup(` obj`) C`
- `IsNearAdditiveMagmaWithInverses(` obj`) C`

  A near-additive group in GAP is a near-additive magma-with-zero A with an operation `-1*`: A → A that maps each element a of A to its additive inverse `-1*`a`` (or `AdditiveInverse(` a`)`, see AdditiveInverse).

  The addition `+` of A is assumed to be associative, so a near-additive group is not more than a near-additive magma-with-inverses. `IsNearAdditiveMagmaWithInverses` is just a synonym for `IsNearAdditiveGroup`, and can be used alternatively in all function names involving `NearAdditiveGroup`.

  Note that not every trivial near-additive magma is a near-additive magma-with-zero, but every trivial near-additive magma-with-zero is a near-additive group.

- `IsAdditiveMagma(` obj`) C`

  An additive magma in GAP is a domain A with an associative and commutative addition `+`: A ×A → A, see IsNearAdditiveMagma and IsAdditivelyCommutative.

- `IsAdditiveMagmaWithZero(` obj`) C`

  An additive magma-with-zero in GAP is an additive magma A with an operation `0*` (or `Zero`) that yields the zero of A.

  So an additive magma-with-zero A does always contain a unique additively neutral element z, i.e., z + a = a = a + z holds for all a ∈ A (see AdditiveNeutralElement). This element z can be computed with the operation `Zero` (see Zero) as `Zero(` A`)`, and z is also equal to `Zero(` elm`)` and to `0*`elm`` for each element elm in A.

  Note that an additive magma containing a zero may not lie in the category `IsAdditiveMagmaWithZero` (see Domain Categories).

- `IsAdditiveGroup(` obj`) C`
- `IsAdditiveMagmaWithInverses(` obj`) C`

  An additive group in GAP is an additive magma-with-zero A with an operation `-1*`: A → A that maps each element a of A to its additive inverse `-1*`a`` (or `AdditiveInverse(` a`)`, see AdditiveInverse).

  The addition `+` of A is assumed to be commutative and associative, so an additive group is not more than an additive magma-with-inverses. `IsAdditiveMagmaWithInverses` is just a synonym for `IsAdditiveGroup`, and can be used alternatively in all function names involving `AdditiveGroup`.

  Note that not every trivial additive magma is an additive magma-with-zero, but every trivial additive magma-with-zero is an additive group.

  ## 53.2 (Near-)Additive Magma Generation

- `NearAdditiveMagma(` gens`) F`
- `NearAdditiveMagma(` Fam`,` gens`) F`

  returns the (near-)additive magma A that is generated by the elements in the list gens, that is, the closure of gens under addition `+`. The family Fam of A can be entered as first argument; this is obligatory if gens is empty (and hence also A is empty).

- `NearAdditiveMagmaWithZero(` gens`) F`
- `NearAdditiveMagmaWithZero(` Fam`,` gens`) F`

  returns the (near-)additive magma-with-zero A that is generated by the elements in the list gens, that is, the closure of gens under addition `+` and `Zero`. The family Fam of A can be entered as first argument; this is obligatory if gens is empty (and hence A is trivial).

- `NearAdditiveGroup(` gens`) F`
- `NearAdditiveGroup(` Fam`,` gens`) F`

  returns the (near-)additive group A that is generated by the elements in the list gens, that is, the closure of gens under addition `+`, `Zero`, and `AdditiveInverse`. The family Fam of A can be entered as first argument; this is obligatory if gens is empty (and hence A is trivial).

  The underlying operations for which methods can be installed are the following.

- `NearAdditiveMagmaByGenerators(` gens`) O`
- `NearAdditiveMagmaByGenerators(` Fam`,` gens`) O`

- `NearAdditiveMagmaWithZeroByGenerators(` gens`) O`
- `NearAdditiveMagmaWithZeroByGenerators(` Fam`,` gens`) O`

- `NearAdditiveGroupByGenerators(` gens`) O`
- `NearAdditiveGroupByGenerators(` Fam`,` gens`) O`

  Substructures of an additive magma can be formed as follows.

- `SubnearAdditiveMagma(` D`,` gens`) F`
- `SubnearAdditiveMagmaNC(` D`,` gens`) F`

  `SubadditiveMagma` returns the near-additive magma generated by the elements in the list gens, with parent the domain D. `SubadditiveMagmaNC` does the same, except that it is not checked whether the elements of gens lie in D.

- `SubnearAdditiveMagmaWithZero(` D`,` gens`) F`
- `SubnearAdditiveMagmaWithZeroNC(` D`,` gens`) F`

  `SubadditiveMagmaWithZero` returns the near-additive magma-with-zero generated by the elements in the list gens, with parent the domain D. `SubadditiveMagmaWithZeroNC` does the same, except that it is not checked whether the elements of gens lie in D.

- `SubnearAdditiveGroup(` D`,` gens`) F`
- `SubnearAdditiveGroupNC(` D`,` gens`) F`

  `SubadditiveGroup` returns the near-additive group generated by the elements in the list gens, with parent the domain D. `SubadditiveGroupNC` does the same, except that it is not checked whether the elements of gens lie in D.

  ## 53.3 Attributes and Properties for (Near-)Additive Magmas

- `IsAdditivelyCommutative(` A`) P`

  A near-additive magma A in GAP is additively commutative if for all elements a, b ∈ A the equality a + b = b + a holds.

  Note that the commutativity of the multiplication `*` in a multiplicative structure can be tested with `IsCommutative`, (see IsCommutative).

- `GeneratorsOfNearAdditiveMagma(` A`) A`
- `GeneratorsOfAdditiveMagma(` A`) A`

  is a list gens of elements of the near-additive magma A that generates A as a near-additive magma, that is, the closure of gens under addition is A.

- `GeneratorsOfNearAdditiveMagmaWithZero(` A`) A`
- `GeneratorsOfAdditiveMagmaWithZero(` A`) A`

  is a list gens of elements of the near-additive magma-with-zero A that generates A as a near-additive magma-with-zero, that is, the closure of gens under addition and `Zero` (see Zero) is A.

- `GeneratorsOfNearAdditiveGroup(` A`) A`
- `GeneratorsOfAdditiveGroup(` A`) A`

  is a list gens of elements of the near-additive group A that generates A as a near-additive group, that is, the closure of gens under addition, taking the zero element, and taking additive inverses (see AdditiveInverse) is A.

- `AdditiveNeutralElement(` A`) A`

  returns the element z in the near-additive magma A with the property that z + a = a = a + z holds for all a ∈ A , if such an element exists. Otherwise `fail` is returned.

  A near-additive magma that is not a near-additive magma-with-zero can have an additive neutral element z; in this case, z cannot be obtained as `Zero(` A`)` or as `0*`elm`` for an element elm in A, see Zero.

- `TrivialSubnearAdditiveMagmaWithZero(` A`) A`

  is the additive magma-with-zero that has the zero of the near-additive magma-with-zero A as only element.

  ## 53.4 Operations for (Near-)Additive Magmas

- `ClosureNearAdditiveGroup(` A`,` a`) O`
- `ClosureNearAdditiveGroup(` A`,` B`) O`

  returns the closure of the near-additive magma A with the element a or the near-additive magma B, w.r.t. addition, taking the zero element, and taking additive inverses.

  [Top] [Up] [Previous] [Next] [Index]

  GAP 4 manual
  December 2008