Cat::ModuleWithBasis --
the category of modules over a distinguished basis
IntroductionCat::ModuleWithBasis represents the category of modules over a distinguished basis.
Generating the category
Cat::ModuleWithBasis(R)
DetailsCat::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