Examples of commutative additive monoids

sage.categories.examples.commutative_additive_monoids.Example

alias of FreeCommutativeAdditiveMonoid

class sage.categories.examples.commutative_additive_monoids.FreeCommutativeAdditiveMonoid(alphabet=('a', 'b', 'c', 'd'))

Bases: sage.categories.examples.commutative_additive_semigroups.FreeCommutativeAdditiveSemigroup

An example of a commutative additive monoid: the free commutative monoid

This class illustrates a minimal implementation of a commutative monoid.

EXAMPLES:

sage: S = CommutativeAdditiveMonoids().example(); S
An example of a commutative monoid: the free commutative monoid generated by ('a', 'b', 'c', 'd')

sage: S.category()
Category of commutative additive monoids

This is the free semigroup generated by:

sage: S.additive_semigroup_generators()
Family (a, b, c, d)

with product rule given by \(a \times b = a\) for all \(a, b\):

sage: (a,b,c,d) = S.additive_semigroup_generators()

We conclude by running systematic tests on this commutative monoid:

sage: TestSuite(S).run(verbose = True)
running ._test_additive_associativity() . . . pass
running ._test_an_element() . . . pass
running ._test_category() . . . pass
running ._test_elements() . . .
  Running the test suite of self.an_element()
  running ._test_category() . . . pass
  running ._test_eq() . . . pass
  running ._test_nonzero_equal() . . . pass
  running ._test_not_implemented_methods() . . . pass
  running ._test_pickling() . . . pass
  pass
running ._test_elements_eq_reflexive() . . . pass
running ._test_elements_eq_symmetric() . . . pass
running ._test_elements_eq_transitive() . . . pass
running ._test_elements_neq() . . . pass
running ._test_eq() . . . pass
running ._test_not_implemented_methods() . . . pass
running ._test_pickling() . . . pass
running ._test_some_elements() . . . pass
running ._test_zero() . . . pass
class Element(parent, iterable)

Bases: sage.categories.examples.commutative_additive_semigroups.FreeCommutativeAdditiveSemigroup.Element

EXAMPLES:

sage: F = CommutativeAdditiveSemigroups().example()
sage: x = F.element_class(F, (('a',4), ('b', 0), ('a', 2), ('c', 1), ('d', 5)))
sage: x
2*a + c + 5*d
sage: x.value
{'a': 2, 'c': 1, 'b': 0, 'd': 5}
sage: x.parent()
An example of a commutative monoid: the free commutative monoid generated by ('a', 'b', 'c', 'd')

Internally, elements are represented as dense dictionaries which associate to each generator of the monoid its multiplicity. In order to get an element, we wrap the dictionary into an element via ElementWrapper:

sage: x.value
{'a': 2, 'c': 1, 'b': 0, 'd': 5}
FreeCommutativeAdditiveMonoid.zero()

Returns the zero of this additive monoid, as per CommutativeAdditiveMonoids.ParentMethods.zero().

EXAMPLES:

sage: M = CommutativeAdditiveMonoids().example(); M
An example of a commutative monoid: the free commutative monoid generated by ('a', 'b', 'c', 'd')
sage: M.zero()
0

Previous topic

Examples of algebras with basis

Next topic

Examples of commutative additive semigroups

This Page