# IndexedDirectProductObject(A, S)ΒΆ

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 OrderedAbelianMonoidSup or S has OrderedSet and A has OrderedAbelianMonoid

from PartialOrder

<: (%, %) -> Boolean if S has OrderedSet and A has OrderedAbelianMonoidSup or S has OrderedSet and A has OrderedAbelianMonoid

from PartialOrder

=: (%, %) -> Boolean if A has AbelianMonoid or A has Comparable and S has Comparable

from BasicType

>=: (%, %) -> Boolean if S has OrderedSet and A has OrderedAbelianMonoidSup or S has OrderedSet and A has OrderedAbelianMonoid

from PartialOrder

>: (%, %) -> Boolean if S has OrderedSet and A has OrderedAbelianMonoidSup or S has OrderedSet and A has OrderedAbelianMonoid

from PartialOrder

~=: (%, %) -> Boolean if A has AbelianMonoid or A has Comparable and S has Comparable

from BasicType

coerce: % -> OutputForm if A has AbelianMonoid or A has Comparable and S has Comparable
construct: List Record(k: S, c: A) -> %

from IndexedProductCategory(A, S)

constructOrdered: List Record(k: S, c: A) -> % if S has Comparable

from IndexedProductCategory(A, S)

hash: % -> SingleInteger if A has AbelianMonoid or A has Comparable and S has Comparable

from SetCategory

hashUpdate!: (HashState, %) -> HashState if A has AbelianMonoid or A has Comparable and S has Comparable

from SetCategory

latex: % -> String if A has AbelianMonoid or A has Comparable and S has Comparable

from SetCategory

leadingCoefficient: % -> A if S has Comparable

from IndexedProductCategory(A, S)

leadingMonomial: % -> % if S has Comparable

from IndexedProductCategory(A, S)

leadingSupport: % -> S if S has Comparable

from IndexedProductCategory(A, S)

leadingTerm: % -> Record(k: S, c: A) if S has Comparable

from IndexedProductCategory(A, S)

listOfTerms: % -> List Record(k: S, c: A)

from IndexedDirectProductCategory(A, S)

map: (A -> A, %) -> %

from IndexedProductCategory(A, S)

max: (%, %) -> % if S has OrderedSet and A has OrderedAbelianMonoidSup or S has OrderedSet and A has OrderedAbelianMonoid

from OrderedSet

min: (%, %) -> % if S has OrderedSet and A has OrderedAbelianMonoidSup or S has OrderedSet and A has OrderedAbelianMonoid

from OrderedSet

monomial?: % -> Boolean

from IndexedProductCategory(A, S)

monomial: (A, S) -> %

from IndexedProductCategory(A, S)

numberOfMonomials: % -> NonNegativeInteger

from IndexedDirectProductCategory(A, S)

opposite?: (%, %) -> Boolean if A has AbelianMonoid

from AbelianMonoid

reductum: % -> % if S has Comparable

from IndexedProductCategory(A, S)

sample: % if A has AbelianMonoid

from AbelianMonoid

smaller?: (%, %) -> Boolean if S has OrderedSet and A has OrderedAbelianMonoid or A has Comparable and S has Comparable or S has OrderedSet and A has OrderedAbelianMonoidSup

from Comparable

subtractIfCan: (%, %) -> Union(%, failed) if A has CancellationAbelianMonoid
sup: (%, %) -> % if S has OrderedSet and A has 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 AbelianMonoid or A has Comparable and S has Comparable

CoercibleTo OutputForm if A has AbelianMonoid or A has Comparable and S has Comparable

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

IndexedProductCategory(A, S)

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

OrderedAbelianMonoidSup if S has OrderedSet and A has OrderedAbelianMonoidSup

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

OrderedCancellationAbelianMonoid if S has OrderedSet and A has OrderedAbelianMonoidSup

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

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

SetCategory if A has AbelianMonoid or A has Comparable and S has Comparable