Cat::ModuleWithBasis
--
the category of modules over a distinguished basis
Cat::ModuleWithBasis
represents the category of modules over a distinguished basis.
Cat::ModuleWithBasis(R)
Cat::ModuleWithBasis
(R)
is a Cat::Module(R)
where R
is a
Cat::Ring
, with as a distinguished basis indexed by some
combinatorial class C
in Cat::CombinatorialClass
. By
this we mean that there exists a (bλ)λ family of
elements of the module such that any element x of the module can
be represented as a (formal) linear combination x=∑λ
cλ bλ with coefficients in R
. The linear
combination may be finite or infinite, and two syntactically
different linear combinations may be mathematically equal.Cat::ModuleWithBasis
(R)
is the basic super category for anything "that
looks like a polynomial or a series". This includes for example
differential operators or forms, Ore polynomials, elements of
combinatorial algebras, and so on."_mult"
is set to
operators::_mult
, which in turn uses operators::mult2
.
Furthermore, the later is overloaded with the following signatures
and associated implementations:
"multcoeffs"
"multcoeffsLeft"
Cat::ModuleWithBasis
just has to implement
"multcoeffs"
and "multcoeffsLeft"
. Then, "_mult"
will be implemented appropriately to handle both left and right
multiplication by scalars. This differs from the plain
Cat::Module
category for which the domain has to provide
this "_mult"
method. In a future version, this feature will
be extended to Cat::Module
."monomial"
, and the methods
"toList"
and "coeff"
.the combinatorial class C
of the indices of the basis;
it must be a Cat::CombinatorialClass
.
the zero element
term(C c)
c
of
C
.
term(C lambda)
lambda
of
C
.
monomial(R c C lambda)
lambda
of C
with coefficient c
.
fromList(list l)
l
should be a list of the form
[[c1,lambda1],,...[ck,lambdak]]
, where c1,,...ck
belongs to the coefficient ring R
and
lambda1,,...lambdak
belongs to the combinatorial class
R
. This list does not need to be sorted in any way, and the
λi's are not required to be distinct.
toList(dom x)
x
."toList"
.poly2list
method for
MuPAD polynomials.
nterms(dom x)
x
.
terms(dom x)
x
.
monomials(dom x)
x
.
coeffs(dom x)
x
.
coeff(dom x)
x
.coeff(dom x, C lambda)
x
at the index
lambda
.
lsupport(dom x)
x
.x
is zero, then FAIL
is returned.
lterm(dom x)
x
.x
is zero, then the zero of this domain is returned.
This convention ensures the compatibility with standard MuPAD
polynomials.
lmonomial(dom x)
x
.x
is zero, then the zero of this domain is returned.
This convention ensures the compatibility with standard MuPAD
polynomials.
lcoeff(dom x)
x
.x
is zero, then the zero of the coefficient ring is returned.
tsupport(dom x)
x
.x
is zero, then FAIL
is returned.
tterm(dom x)
x
.x
is zero, then the zero of this domain is returned.
This convention ensures the compatibility with standard MuPAD
polynomials.
tmonomial(dom x)
x
.x
is zero, then the zero of this domain is returned.
This convention ensures the compatibility with standard MuPAD
polynomials.
tcoeff(dom x)
x
.x
is zero, then the zero of the coefficient ring is returned.
nthsupport(dom x, positive integer n)
n
-th term of x
.n
exceeds strictly the number of terms of x
,
then FAIL
is returned.
nthterm(dom x, positive integer n)
n
-th term of x
.n
exceeds strictly the number of terms of x
,
then FAIL
is returned.
nthmonomial(dom x, positive integer n)
n
-th monomial of x
.n
exceeds strictly the number of terms of x
,
then FAIL
is returned.
nthcoeff(dom x, positive integer n)
n
-th coefficient of x
.n
exceeds strictly the number of terms of x
,
then FAIL
is returned.
mapcoeffs(dom x, function f)
x
, where f
has been applied on
all coefficients. f
should always return elements of the coefficient
ring. This is not necessarily checked.
multcoeffs(dom x, constant c)
x
, where all the coefficients have
been multiplied (on the right) by c
.
multcoeffsLeft(constant c, dom x)
x
, where all the coefficients have
been multiplied on the left by c
."multcoeffsLeft"
coincide.
Cat::ModuleWithBasis
is a new category
MuPAD Combinat, an open source algebraic combinatorics package