Cat::AlgebraWithBasis
--
the category of associative algebras with a distinguished basis
represents the category of associative
Cat::AlgebraWithBasis
(R)R
-algebras with a distinguished basis.
Cat::AlgebraWithBasis(R)
R | - | A domain which must be from the category Cat::Ring . |
Cat::Algebra(R)
, Cat::ModuleWithBasis(R)
Cat::AlgebraWithBasis
(R)
is an R
-algebra with a distinguished
basis. The multiplication is typically implemented by extending by
linearity its definition on the basis elements. "_mult"
is set to
operators::_mult
, which in turn uses operators::mult2
.
Furthermore, the later is overloaded with the following signatures
and associated implementations:
"mult2"
"multcoeffs"
"multcoeffsLeft"
Cat::AlgebraWithBasis
just has to implement "mult2"
,
"multcoeffs"
, and "multcoeffsLeft"
. Then,
"_mult"
will be implemented appropriately to handle all the
possible ways it can be called in (binary and n-ary internal
multiplications of elements, left and right multiplications by
scalar, ...). This differs from the plain Cat::Algebra
category for which the domain has to provide this "_mult"
method. In a future version, this feature will be extended to
Cat::Algebra
.
If the unit of the algebra is a basis element, the index of
this basis element can be provided here, instead of defining
"one"
.
fromCoeffRing( <dom::coeffRing c>)
c*dom::one
of the
coefficient c
as an element of this ring.
ground( <dom x>)
x
on the unit of the algebra."oneBasis"
is defined.
mult2Basis(dom::basisIndices x, dom::basisIndices y)
x
and y
. "multBasis"
; so, the domain
may define either one of them, or both, at the programmers
convenience.
mult2(dom x, dom y)
x
by y
.x
and y
are required to be of this domain; no
coercion is attempted."mult2Basis"
by bilinearity.
multBasis( <dom::basisIndices x, ...>)
mult( <dom x, ...>)
"("
one))"mult2"
by associativity.
Sometime in the future, it may instead extend "multBasis"
by
multilinearity.
Cat::AlgebraWithBasis
is a new category
MuPAD Combinat, an open source algebraic combinatorics package