# BiModule(R, S)ΒΆ

catdef.spad line 149 [edit on github]

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

- coerce: % -> OutputForm
from CoercibleTo OutputForm

- 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

- 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