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*repzero an identity on reps,
rep+zero == rep == zero+repnegate maps
rep -> -rep,rep + negate(rep) == zerozero
!=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
selfandotherare same type but different concrete algebras.TypeError – If Addition not defined on the algebra of the elements.
TypeError – If
selfandrightare different types.
- __mul__(right: object) Self¶
Left multiplication for
*operator.- Parameters:
right – Object
leftshould be an element of same concrete algebra or anint.- Returns:
Algebra product, the sum of the element
righttimes, orNotImplemented.- 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
selfis 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
intpower ofn>=0.- Parameters:
n – The
intpower to raise the element to.- Returns:
The element raised to the non-negative integer
npower.- 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
leftshould be anint.- Returns:
The sum of the element
lefttimes.- Raises:
TypeError – If object on left does not act on object on right