# BiModule(R, S)ΒΆ

A BiModule is both a left and right module with respect to potentially different rings.

- 0: % if S has AbelianMonoid or R has AbelianMonoid
- from AbelianMonoid
- *: (%, S) -> %
- from RightModule S
- *: (Integer, %) -> % if S has AbelianGroup or R has AbelianGroup
- from AbelianGroup
- *: (NonNegativeInteger, %) -> % if S has AbelianMonoid or R has AbelianMonoid
- from AbelianMonoid
- *: (PositiveInteger, %) -> %
- from AbelianSemiGroup
- *: (R, %) -> %
- from LeftModule R
- +: (%, %) -> %
- from AbelianSemiGroup
- -: % -> % if S has AbelianGroup or R has AbelianGroup
- from AbelianGroup
- -: (%, %) -> % if S has AbelianGroup or R has AbelianGroup
- from AbelianGroup
- =: (%, %) -> Boolean
- from BasicType
- ~=: (%, %) -> Boolean
- from BasicType
- coerce: % -> OutputForm
- from CoercibleTo OutputForm
- hash: % -> SingleInteger
- from SetCategory
- hashUpdate!: (HashState, %) -> HashState
- from SetCategory
- latex: % -> String
- from SetCategory
- opposite?: (%, %) -> Boolean if S has AbelianMonoid or R has AbelianMonoid
- from AbelianMonoid
- sample: % if S has AbelianMonoid or R has AbelianMonoid
- from AbelianMonoid
- subtractIfCan: (%, %) -> Union(%, failed) if S has AbelianGroup or R has AbelianGroup
- from CancellationAbelianMonoid
- zero?: % -> Boolean if S has AbelianMonoid or R has AbelianMonoid
- from AbelianMonoid

AbelianGroup if S has AbelianGroup or R has AbelianGroup

AbelianMonoid if S has AbelianMonoid or R has AbelianMonoid

CancellationAbelianMonoid if S has AbelianGroup or R has AbelianGroup