# IndexedDirectProductObject(A, S)ΒΆ

- A: SetCategory
- S: Comparable

Indexed direct products of objects over a set `A`

of generators indexed by an ordered set `S`

. It currently provides the ground for, e.g. FreeModule which lies at the basis of polynomials of all sorts. All items have finite support. If A is a monoid, then only non-zero terms are stored. If A has additive structure, it is propagated coordinatewise to the product. Similarly, comparisons are propagated using lexicographic ordering.

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

AbelianGroup if A has AbelianGroup

AbelianMonoid if A has AbelianMonoid

AbelianSemiGroup if A has AbelianMonoid

BasicType if A has Comparable or A has AbelianMonoid

CancellationAbelianMonoid if A has CancellationAbelianMonoid

CoercibleTo OutputForm if A has Comparable or A has AbelianMonoid

Comparable if A has Comparable

IndexedDirectProductCategory(A, S)

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

OrderedAbelianMonoidSup if S has OrderedSet and A has OrderedAbelianMonoidSup

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

OrderedCancellationAbelianMonoid if S has OrderedSet and A has OrderedAbelianMonoidSup

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

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

SetCategory if A has Comparable or A has AbelianMonoid