abelian group

Abelian Group

Abelian Group

Mathematically an Abelian Group is a Commutative Monoid G all of whose elements have additive inverses.

Note

Addition is used for the group operation.

Important

Contract: AbelianGroup initializer parameters must have

  • add closed, associative and commutative on reps

  • zero additive identity on reps, rep.add(zero) == rep == zero.add(rep)

  • negate must me idempotent: neg(neg(rep)) == rep

class boring_math.abstract_algebra.algebras.abelian_group.AbelianGroup

Bases: CommutativeMonoid, Generic

Parameters:
  • add – Closed, commutative and associative function on reps.

  • zero – Representation for additive identity.

  • negate – Function mapping element representation to the representation of corresponding negated element.

  • narrow – Narrow the rep type, many-to-one function. Like choosing an element from a particular group coset.

__init__(add: Callable[[H, H], H], zero: H, negate: Callable[[H], H], narrow: Callable[[H], H] | None = None)
Parameters:
  • add – Closed, commutative and associative function on reps.

  • zero – Representation for additive identity.

  • negate – Function mapping element representation to the representation of corresponding negated element.

  • narrow – Narrow the rep type, many-to-one function. Like choosing an element from a particular group coset.

class boring_math.abstract_algebra.algebras.abelian_group.AbelianGroupElement

Bases: CommutativeMonoidElement, Generic

__init__(rep: H, algebra: AbelianGroup[H]) None
__str__() str
Returns:

str(self) = AbelianGroupElement<rep>

__mul__(n: object) Self

Repeatedly add an element to itself n >= 0 times.

Parameters:

n – Object, usually an int or action.

Returns:

If n: int then self, or its negative, added n times else NotImplemented.

Raises:
  • ValueError – When n <= 0.

  • ValueError – If self and other are same type but different concrete algebras.

  • TypeError – If an add method was not defined on the algebra.

  • TypeError – If algebra does not have an additive identity.

  • TypeError – Element multiplication attempted but algebra is not multiplicative.

__rmul__(n: int) Self

Repeatedly add an element to itself n > 0 times.

__neg__() Self

Negate the element.

Returns:

The unique additive inverse element to self.

Raises:

ValueError – If algebra fails to have additive inverses.

__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 self and other are same type but different concrete algebras.

  • TypeError – If Addition not defined on the algebra of the elements.

  • TypeError – If self and right are 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.