Product(A, B)ΒΆ

product.spad line 1 [edit on github]

This domain implements cartesian product. If the underlying domains are both Finite then the resulting Product is also Finite and can be enumerated via size(), index(), location(), etc. The index of the second component (B) varies most quickly.

0: % if B has AbelianMonoid and A has AbelianMonoid or A has AbelianGroup and B has AbelianGroup or B has CancellationAbelianMonoid and A has CancellationAbelianMonoid or B has OrderedAbelianMonoidSup and A has OrderedAbelianMonoidSup

from AbelianMonoid

1: % if B has Group and A has Group or B has Monoid and A has Monoid

from MagmaWithUnit

*: (%, %) -> % if B has Group and A has Group or B has Monoid and A has Monoid

from Magma

*: (Integer, %) -> % if A has AbelianGroup and B has AbelianGroup

from AbelianGroup

*: (NonNegativeInteger, %) -> % if B has AbelianMonoid and A has AbelianMonoid or A has AbelianGroup and B has AbelianGroup or B has CancellationAbelianMonoid and A has CancellationAbelianMonoid or B has OrderedAbelianMonoidSup and A has OrderedAbelianMonoidSup

from AbelianMonoid

*: (PositiveInteger, %) -> % if B has AbelianMonoid and A has AbelianMonoid or A has AbelianGroup and B has AbelianGroup or B has CancellationAbelianMonoid and A has CancellationAbelianMonoid or B has OrderedAbelianMonoidSup and A has OrderedAbelianMonoidSup

from AbelianSemiGroup

+: (%, %) -> % if B has AbelianMonoid and A has AbelianMonoid or A has AbelianGroup and B has AbelianGroup or B has CancellationAbelianMonoid and A has CancellationAbelianMonoid or B has OrderedAbelianMonoidSup and A has OrderedAbelianMonoidSup

from AbelianSemiGroup

-: % -> % if A has AbelianGroup and B has AbelianGroup

from AbelianGroup

-: (%, %) -> % if A has AbelianGroup and B has AbelianGroup

from AbelianGroup

/: (%, %) -> % if B has Group and A has Group

from Group

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

from PartialOrder

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

from PartialOrder

=: (%, %) -> Boolean

from BasicType

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

from PartialOrder

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

from PartialOrder

^: (%, Integer) -> % if B has Group and A has Group

from Group

^: (%, NonNegativeInteger) -> % if B has Group and A has Group or B has Monoid and A has Monoid

from MagmaWithUnit

^: (%, PositiveInteger) -> % if B has Group and A has Group or B has Monoid and A has Monoid

from Magma

~=: (%, %) -> Boolean

from BasicType

coerce: % -> OutputForm

from CoercibleTo OutputForm

commutator: (%, %) -> % if B has Group and A has Group

from Group

conjugate: (%, %) -> % if B has Group and A has Group

from Group

construct: (A, B) -> %

construct(a, b) creates element of the product with components a and b.

convert: % -> InputForm if A has Finite and B has Finite

from ConvertibleTo InputForm

enumerate: () -> List % if A has Finite and B has Finite

from Finite

first: % -> A

first(x) selects first component of the product

hash: % -> SingleInteger if A has Finite and B has Finite or A has Hashable and B has Hashable

from Hashable

hashUpdate!: (HashState, %) -> HashState if A has Finite and B has Finite or A has Hashable and B has Hashable

from Hashable

index: PositiveInteger -> % if A has Finite and B has Finite

from Finite

inf: (%, %) -> % if B has OrderedAbelianMonoidSup and A has OrderedAbelianMonoidSup

from OrderedAbelianMonoidSup

inv: % -> % if B has Group and A has Group

from Group

latex: % -> String

from SetCategory

leftPower: (%, NonNegativeInteger) -> % if B has Group and A has Group or B has Monoid and A has Monoid

from MagmaWithUnit

leftPower: (%, PositiveInteger) -> % if B has Group and A has Group or B has Monoid and A has Monoid

from Magma

leftRecip: % -> Union(%, failed) if B has Group and A has Group or B has Monoid and A has Monoid

from MagmaWithUnit

lookup: % -> PositiveInteger if A has Finite and B has Finite

from Finite

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

from OrderedSet

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

from OrderedSet

one?: % -> Boolean if B has Group and A has Group or B has Monoid and A has Monoid

from MagmaWithUnit

opposite?: (%, %) -> Boolean if B has AbelianMonoid and A has AbelianMonoid or A has AbelianGroup and B has AbelianGroup or B has CancellationAbelianMonoid and A has CancellationAbelianMonoid or B has OrderedAbelianMonoidSup and A has OrderedAbelianMonoidSup

from AbelianMonoid

random: () -> % if A has Finite and B has Finite

from Finite

recip: % -> Union(%, failed) if B has Group and A has Group or B has Monoid and A has Monoid

from MagmaWithUnit

rightPower: (%, NonNegativeInteger) -> % if B has Group and A has Group or B has Monoid and A has Monoid

from MagmaWithUnit

rightPower: (%, PositiveInteger) -> % if B has Group and A has Group or B has Monoid and A has Monoid

from Magma

rightRecip: % -> Union(%, failed) if B has Group and A has Group or B has Monoid and A has Monoid

from MagmaWithUnit

sample: % if B has Group and A has Group or B has Monoid and A has Monoid or B has CancellationAbelianMonoid and A has CancellationAbelianMonoid or B has AbelianMonoid and A has AbelianMonoid or A has AbelianGroup and B has AbelianGroup or B has OrderedAbelianMonoidSup and A has OrderedAbelianMonoidSup

from AbelianMonoid

second: % -> B

second(x) selects second component of the product

size: () -> NonNegativeInteger if A has Finite and B has Finite

from Finite

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

from Comparable

subtractIfCan: (%, %) -> Union(%, failed) if B has CancellationAbelianMonoid and A has CancellationAbelianMonoid or A has AbelianGroup and B has AbelianGroup or B has OrderedAbelianMonoidSup and A has OrderedAbelianMonoidSup

from CancellationAbelianMonoid

sup: (%, %) -> % if B has OrderedAbelianMonoidSup and A has OrderedAbelianMonoidSup

from OrderedAbelianMonoidSup

zero?: % -> Boolean if B has AbelianMonoid and A has AbelianMonoid or A has AbelianGroup and B has AbelianGroup or B has CancellationAbelianMonoid and A has CancellationAbelianMonoid or B has OrderedAbelianMonoidSup and A has OrderedAbelianMonoidSup

from AbelianMonoid

AbelianGroup if A has AbelianGroup and B has AbelianGroup

AbelianMonoid if A has AbelianGroup and B has AbelianGroup or B has OrderedAbelianMonoidSup and A has OrderedAbelianMonoidSup or B has AbelianMonoid and A has AbelianMonoid or B has CancellationAbelianMonoid and A has CancellationAbelianMonoid

AbelianSemiGroup if B has AbelianMonoid and A has AbelianMonoid or A has AbelianGroup and B has AbelianGroup or B has CancellationAbelianMonoid and A has CancellationAbelianMonoid or B has OrderedAbelianMonoidSup and A has OrderedAbelianMonoidSup

BasicType

CancellationAbelianMonoid if B has CancellationAbelianMonoid and A has CancellationAbelianMonoid or A has AbelianGroup and B has AbelianGroup or B has OrderedAbelianMonoidSup and A has OrderedAbelianMonoidSup

CoercibleTo OutputForm

Comparable if A has Finite and B has Finite or B has OrderedSet and A has OrderedSet or A has Comparable and B has Comparable or B has OrderedAbelianMonoidSup and A has OrderedAbelianMonoidSup

ConvertibleTo InputForm if A has Finite and B has Finite

Finite if A has Finite and B has Finite

Group if B has Group and A has Group

Hashable if A has Finite and B has Finite or A has Hashable and B has Hashable

Magma if B has Group and A has Group or B has Monoid and A has Monoid

MagmaWithUnit if B has Group and A has Group or B has Monoid and A has Monoid

Monoid if B has Group and A has Group or B has Monoid and A has Monoid

OrderedAbelianMonoid if B has OrderedAbelianMonoidSup and A has OrderedAbelianMonoidSup

OrderedAbelianMonoidSup if B has OrderedAbelianMonoidSup and A has OrderedAbelianMonoidSup

OrderedAbelianSemiGroup if B has OrderedAbelianMonoidSup and A has OrderedAbelianMonoidSup

OrderedCancellationAbelianMonoid if B has OrderedAbelianMonoidSup and A has OrderedAbelianMonoidSup

OrderedSet if B has OrderedAbelianMonoidSup and A has OrderedAbelianMonoidSup or B has OrderedSet and A has OrderedSet

PartialOrder if B has OrderedSet and A has OrderedSet or B has OrderedAbelianMonoidSup and A has OrderedAbelianMonoidSup

SemiGroup if B has Group and A has Group or B has Monoid and A has Monoid

SetCategory

TwoSidedRecip if B has Group and A has Group

unitsKnown if B has Group and A has Group