# FreeModule(R, S)ΒΆ

- R: Join(SemiRng, AbelianMonoid)
- S: Comparable

A `bi`

-module is a free module over a ring with generators indexed by an ordered set. Each element can be expressed as a finite linear combination of generators. Only non-zero terms are stored. old domain `FreeModule1`

was merged to it in May 2009 The description of the latter: This domain implements linear combinations of elements from the domain `S`

with coefficients in the domain `R`

where `S`

is an ordered set and `R`

is a ring (which may be non-commutative). This domain is used by domains of non-commutative algebra such as: XDistributedPolynomial, XRecursivePolynomial. Author: Michel Petitot (petitot@lifl.`fr`

)

- 0: %
- from AbelianMonoid
- *: (%, R) -> %
- from RightModule R
- *: (Integer, %) -> % if R has AbelianGroup
- from AbelianGroup
- *: (NonNegativeInteger, %) -> %
- from AbelianMonoid
- *: (PositiveInteger, %) -> %
- from AbelianSemiGroup
- *: (R, %) -> %
- from LeftModule R
- *: (R, S) -> %
- from FreeModuleCategory(R, S)
- *: (S, R) -> %
- from FreeModuleCategory(R, S)
- +: (%, %) -> %
- from AbelianSemiGroup
- -: % -> % if R has AbelianGroup
- from AbelianGroup
- -: (%, %) -> % if R has AbelianGroup
- from AbelianGroup
- <: (%, %) -> Boolean if R has OrderedAbelianMonoidSup and S has OrderedSet or R has OrderedAbelianMonoid and S has OrderedSet
- from PartialOrder
- <=: (%, %) -> Boolean if R has OrderedAbelianMonoidSup and S has OrderedSet or R has OrderedAbelianMonoid and S has OrderedSet
- from PartialOrder
- =: (%, %) -> Boolean
- from BasicType
- >: (%, %) -> Boolean if R has OrderedAbelianMonoidSup and S has OrderedSet or R has OrderedAbelianMonoid and S has OrderedSet
- from PartialOrder
- >=: (%, %) -> Boolean if R has OrderedAbelianMonoidSup and S has OrderedSet or R has OrderedAbelianMonoid and S has OrderedSet
- from PartialOrder
- ~=: (%, %) -> Boolean
- from BasicType
- coefficient: (%, S) -> R
- from FreeModuleCategory(R, S)
- coefficients: % -> List R
- from FreeModuleCategory(R, S)
- coerce: % -> OutputForm
- from CoercibleTo OutputForm
- coerce: S -> % if R has SemiRing
- from RetractableTo S
- construct: List Record(k: S, c: R) -> %
- from IndexedDirectProductCategory(R, S)
- constructOrdered: List Record(k: S, c: R) -> %
- from IndexedDirectProductCategory(R, S)
- hash: % -> SingleInteger
- from SetCategory
- hashUpdate!: (HashState, %) -> HashState
- from SetCategory
- latex: % -> String
- from SetCategory
- leadingCoefficient: % -> R
- from IndexedDirectProductCategory(R, S)
- leadingMonomial: % -> %
- from IndexedDirectProductCategory(R, S)
- leadingSupport: % -> S
- from IndexedDirectProductCategory(R, S)
- leadingTerm: % -> Record(k: S, c: R)
- from IndexedDirectProductCategory(R, S)
- linearExtend: (S -> R, %) -> R if R has CommutativeRing
- from FreeModuleCategory(R, S)
- listOfTerms: % -> List Record(k: S, c: R)
- from IndexedDirectProductCategory(R, S)
- map: (R -> R, %) -> %
- from IndexedDirectProductCategory(R, S)
- max: (%, %) -> % if R has OrderedAbelianMonoidSup and S has OrderedSet or R has OrderedAbelianMonoid and S has OrderedSet
- from OrderedSet
- min: (%, %) -> % if R has OrderedAbelianMonoidSup and S has OrderedSet or R has OrderedAbelianMonoid and S has OrderedSet
- from OrderedSet
- monomial: (R, S) -> %
- from IndexedDirectProductCategory(R, S)
- monomial?: % -> Boolean
- from IndexedDirectProductCategory(R, S)
- monomials: % -> List %
- from FreeModuleCategory(R, S)
- numberOfMonomials: % -> NonNegativeInteger
- from IndexedDirectProductCategory(R, S)
- opposite?: (%, %) -> Boolean
- from AbelianMonoid
- reductum: % -> %
- from IndexedDirectProductCategory(R, S)
- retract: % -> S if R has SemiRing
- from RetractableTo S
- retractIfCan: % -> Union(S, failed) if R has SemiRing
- from RetractableTo S
- sample: %
- from AbelianMonoid
- smaller?: (%, %) -> Boolean if R has Comparable
- from Comparable
- subtractIfCan: (%, %) -> Union(%, failed)
- from CancellationAbelianMonoid
- sup: (%, %) -> % if R has OrderedAbelianMonoidSup and S has OrderedSet
- from OrderedAbelianMonoidSup
- support: % -> List S
- from FreeModuleCategory(R, S)
- totalDegree: % -> NonNegativeInteger if S has coerce: S -> Vector NonNegativeInteger
- from FreeModuleCategory(R, S)
- zero?: % -> Boolean
- from AbelianMonoid

AbelianGroup if R has AbelianGroup

BiModule(R, R)

Comparable if R has Comparable

FreeModuleCategory(R, S)

IndexedDirectProductCategory(R, S)

Module R if R has CommutativeRing

OrderedAbelianMonoid if R has OrderedAbelianMonoidSup and S has OrderedSet or R has OrderedAbelianMonoid and S has OrderedSet

OrderedAbelianMonoidSup if R has OrderedAbelianMonoidSup and S has OrderedSet

OrderedAbelianSemiGroup if R has OrderedAbelianMonoidSup and S has OrderedSet or R has OrderedAbelianMonoid and S has OrderedSet

OrderedCancellationAbelianMonoid if R has OrderedAbelianMonoidSup and S has OrderedSet

OrderedSet if R has OrderedAbelianMonoidSup and S has OrderedSet or R has OrderedAbelianMonoid and S has OrderedSet

PartialOrder if R has OrderedAbelianMonoidSup and S has OrderedSet or R has OrderedAbelianMonoid and S has OrderedSet

RetractableTo S if R has SemiRing