Examples of commutative additive semigroups¶
-
sage.categories.examples.commutative_additive_semigroups.
Example
¶ alias of
sage.categories.examples.commutative_additive_semigroups.FreeCommutativeAdditiveSemigroup
-
class
sage.categories.examples.commutative_additive_semigroups.
FreeCommutativeAdditiveSemigroup
(alphabet='a', 'b', 'c', 'd')¶ Bases:
sage.structure.unique_representation.UniqueRepresentation
,sage.structure.parent.Parent
An example of a commutative additive monoid: the free commutative monoid
This class illustrates a minimal implementation of a commutative additive monoid.
EXAMPLES:
sage: S = CommutativeAdditiveSemigroups().example(); S An example of a commutative semigroup: the free commutative semigroup generated by ('a', 'b', 'c', 'd') sage: S.category() Category of commutative additive semigroups
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_cardinality() . . . pass running ._test_category() . . . pass running ._test_construction() . . . pass running ._test_elements() . . . Running the test suite of self.an_element() running ._test_category() . . . pass running ._test_eq() . . . pass running ._test_new() . . . 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_new() . . . pass running ._test_not_implemented_methods() . . . pass running ._test_pickling() . . . pass running ._test_some_elements() . . . pass
-
class
Element
(parent, iterable)¶ Bases:
sage.structure.element_wrapper.ElementWrapper
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, 'b': 0, 'c': 1, 'd': 5} sage: x.parent() An example of a commutative semigroup: the free commutative semigroup 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, 'b': 0, 'c': 1, 'd': 5}
-
additive_semigroup_generators
()¶ Returns the generators of the semigroup.
EXAMPLES:
sage: F = CommutativeAdditiveSemigroups().example() sage: F.additive_semigroup_generators() Family (a, b, c, d)
-
an_element
()¶ Returns an element of the semigroup.
EXAMPLES:
sage: F = CommutativeAdditiveSemigroups().example() sage: F.an_element() a + 2*b + 3*c + 4*d
-
summation
(x, y)¶ Returns the product of
x
andy
in the semigroup, as perCommutativeAdditiveSemigroups.ParentMethods.summation()
.EXAMPLES:
sage: F = CommutativeAdditiveSemigroups().example() sage: (a,b,c,d) = F.additive_semigroup_generators() sage: F.summation(a,b) a + b sage: (a+b) + (a+c) 2*a + b + c
-
class