commutative monoid¶
Commutative Monoid¶
Commutative Monoid
Mathematically a commutative Monoid is a Semigroup M along with
an identity element u, such that
(∃u ∈ M) => (∀m ∈ M)(u+m = m+u = m)
When such an identity element u exists, it is necessarily unique.
Important
Contract: Commutative Monoid initializer parameters must have
add closed commutative and associative on reps
zero an identity on reps,
rep+zero == rep == zero+rep
- class boring_math.abstract_algebra.algebras.commutative_monoid.CommutativeMonoid¶
Bases:
CommutativeSemigroup,Generic- Parameters:
add – Closed commutative and associative function reps.
zero – Representation for additive identity.
narrow – Narrow the rep type, many-to-one function. Like choosing an element from a coset of a group.
- __init__(add: Callable[[H, H], H], zero: H, narrow: Callable[[H], H] | None = None)¶
- Parameters:
add – Closed commutative and associative function reps.
zero – Representation for additive identity.
narrow – Narrow the rep type, many-to-one function. Like choosing an element from a coset of a group.
- class boring_math.abstract_algebra.algebras.commutative_monoid.CommutativeMonoidElement¶
Bases:
CommutativeSemigroupElement,Generic- __init__(rep: H, algebra: CommutativeMonoid[H]) None¶
- __str__() str¶
- Returns:
str(self) = CommutativeMonoidElement<rep>
- __mul__(n: object) Self¶
Repeatedly add an element to itself
n >= 0times.- Parameters:
n – Object, usually a non-negative
intor action.- Returns:
If
n: intthen self added to itself n times else NotImplemented.- Raises:
ValueError – When
n < 0.ValueError – If
selfandotherare same type but different concrete algebras.TypeError – If algebra fails to have an additive identity element or an addition method.
- __rmul__(n: int) Self¶
Repeatedly add an element to itself
n > 0times.
- __add__(right: Self) Self¶
Add two elements of the same concrete algebra together.
- Parameters:
other – Another element within the same algebra.
- Returns:
The sum
self + other.- Raises:
ValueError – If
selfandotherare same type but different concrete algebras.TypeError – If Addition not defined on the algebra of the elements.
TypeError – If
selfandrightare different types.
- __radd__(left: Self) Self¶
When left side of addition does not know how to add right side.
- Parameters:
other – Left side of the addition.
- Returns:
Never returns, otherwise
left.__add__(right)would have worked.- Raises:
TypeError – When right side does not know how to add the left side to itself.