commutative ring

Commutative Ring

Commutative Ring

Mathematically a Commutative Ring is a Ring whose multiplication is commutative.

Important

Contract: Ring initializer parameters must have

  • add closed, commutative and associative on reps

  • mult closed, commutative and associative on reps

  • one an identity on reps, rep*one == rep == one*rep

  • zero an identity on reps, rep+zero == rep == zero+rep

  • negate maps rep -> -rep, rep + negate(rep) == zero

  • zero != one

class boring_math.abstract_algebra.algebras.commutative_ring.CommutativeRing

Bases: Ring, Generic

Parameters:
  • mult – Closed associative function reps.

  • add – Closed commutative and associative function reps.

  • one – Representation for multiplicative identity.

  • 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 coset of a group.

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

  • add – Closed commutative and associative function reps.

  • one – Representation for multiplicative identity.

  • 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 coset of a group.

class boring_math.abstract_algebra.algebras.commutative_ring.CommutativeRingElement

Bases: RingElement, Generic

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

str(self) = CommutativeRingElement<rep>

__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.

__mul__(right: object) Self

Left multiplication for * operator.

Parameters:

right – Object left should be an element of same concrete algebra or an int.

Returns:

Algebra product, the sum of the element right times, or NotImplemented.

Raises:
  • ValueError – If either right not an element of the same concrete algebra or right: int < 0.

  • TypeError – Multiplication nor defined on the algebra that self is a member of.

__neg__() Self

Negate the element.

Returns:

The unique additive inverse element to self.

Raises:

ValueError – If algebra fails to have additive inverses.

__pow__(n: int) Self

Raise element to power to the int power of n>=0.

Parameters:

n – The int power to raise the element to.

Returns:

The element raised to the non-negative integer n power.

Raises:
  • ValueError – If algebra is not multiplicative.

  • ValueError – If algebra does not have a multiplicative identity element.

  • ValueError – If n < 0.

__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.

__rmul__(left: object) Self

Right multiplication for * operator.

Parameters:

left – Object left should be an int.

Returns:

The sum of the element left times.

Raises:

TypeError – If object on left does not act on object on right