Associated Graded Algebras To Filtered Algebras¶
AUTHORS:
- Travis Scrimshaw (2014-10-08): Initial version
-
class
sage.algebras.associated_graded.AssociatedGradedAlgebra(A, category=None)¶ Bases:
sage.combinat.free_module.CombinatorialFreeModuleThe associated graded algebra/module
of a filtered algebra/module with basis
.Let
be a filtered module over a commutative ring
.
Let
be the filtration of
, with
being
a totally ordered set. Define
for every
, and then
There are canonical projections
for
every
. Moreover
is naturally a
graded
-module with
being the
-th graded component.
This graded
-module is known as the associated graded module
(or, for short, just graded module) of
.Now, assume that
(endowed with the filtration
) is not just a filtered
-module, but also
a filtered
-algebra.
Let
and
, and let
and
be lifts of
and
, respectively (so that
and
). Then, we define a
multiplication
on
(not to be mistaken
for the multiplication of the original algebra
) by
The associated graded algebra (or, for short, just graded algebra) of
is the graded algebra
(endowed with this multiplication).Now, assume that
is a filtered
-algebra with basis.
Let
be the basis of
,
and consider the partition
of
the set
, which is part of the data of a filtered
algebra with basis. We know (see
FilteredModulesWithBasis) that
(being a filtered
-module with basis) is canonically
(when the basis is considered to be part of the data)
isomorphic to
as an
-module. Therefore
the
-th graded component
can be identified with
the span of
, or equivalently the
-th homogeneous component of
. Suppose
that
where
(which
has been identified with the
-th homogeneous component of
).
Then
. We also note that the choice of
identification of
with the
-th homogeneous component
of
depends on the given basis.The basis
of
gives rise to a basis
of
. This latter basis is still indexed
by the elements of
, and consists of the images of the
under the
-module isomorphism from
to
. It makes
into
a graded
-algebra with basis.In this class, the
-module isomorphism from
to
is implemented as
to_graded_conversion()and also as the default conversion from
to
. Its
inverse map is implemented as
from_graded_conversion(). The projection
is implemented as
projection()(i).INPUT:
A– a filtered module (or algebra) with basis
OUTPUT:
The associated graded module of
, if
is just a filtered
-module.
The associated graded algebra of
, if
is a filtered
-algebra.EXAMPLES:
Associated graded module of a filtered module:
sage: A = Modules(QQ).WithBasis().Filtered().example() sage: grA = A.graded_algebra() sage: grA.category() Category of graded modules with basis over Rational Field sage: x = A.basis()[Partition([3,2,1])] sage: grA(x) Bbar[[3, 2, 1]]
Associated graded algebra of a filtered algebra:
sage: A = Algebras(QQ).WithBasis().Filtered().example() sage: grA = A.graded_algebra() sage: grA.category() Category of graded algebras with basis over Rational Field sage: x,y,z = map(lambda s: grA.algebra_generators()[s], ['x','y','z']) sage: x bar(U['x']) sage: y * x + z bar(U['x']*U['y']) + bar(U['z']) sage: A(y) * A(x) + A(z) U['x']*U['y']
We note that the conversion between
AandgrAis the canonicalQQ-module isomorphism stemming from the fact that the underlyingQQ-modules ofAandgrAare isomorphic:sage: grA(A.an_element()) bar(U['x']^2*U['y']^2*U['z']^3) + 2*bar(U['x']) + 3*bar(U['y']) + bar(1) sage: elt = A.an_element() + A.algebra_generators()['x'] + 2 sage: grelt = grA(elt); grelt bar(U['x']^2*U['y']^2*U['z']^3) + 3*bar(U['x']) + 3*bar(U['y']) + 3*bar(1) sage: A(grelt) == elt True
Todo
The algebra
Amust currently be an instance of (a subclass of)CombinatorialFreeModule. This should work with any filtered algebra with a basis.Todo
Implement a version of associated graded algebra for filtered algebras without a distinguished basis.
REFERENCES:
-
algebra_generators()¶ Return the algebra generators of
self.This assumes that the algebra generators of
provided by
its algebra_generatorsmethod are homogeneous.EXAMPLES:
sage: A = Algebras(QQ).WithBasis().Filtered().example() sage: grA = A.graded_algebra() sage: grA.algebra_generators() Finite family {'y': bar(U['y']), 'x': bar(U['x']), 'z': bar(U['z'])}
-
degree_on_basis(x)¶ Return the degree of the basis element indexed by
x.EXAMPLES:
sage: A = Algebras(QQ).WithBasis().Filtered().example() sage: grA = A.graded_algebra() sage: all(A.degree_on_basis(x) == grA.degree_on_basis(x) ....: for g in grA.algebra_generators() for x in g.support()) True
-
gen(*args, **kwds)¶ Return a generator of
self.EXAMPLES:
sage: A = Algebras(QQ).WithBasis().Filtered().example() sage: grA = A.graded_algebra() sage: grA.gen('x') bar(U['x'])
-
one_basis()¶ Return the basis index of the element
of
.This assumes that the unity
of
belongs to
.EXAMPLES:
sage: A = Algebras(QQ).WithBasis().Filtered().example() sage: grA = A.graded_algebra() sage: grA.one_basis() 1
-
product_on_basis(x, y)¶ Return the product on basis elements given by the indices
xandy.EXAMPLES:
sage: A = Algebras(QQ).WithBasis().Filtered().example() sage: grA = A.graded_algebra() sage: G = grA.algebra_generators() sage: x,y,z = G['x'], G['y'], G['z'] sage: x * y # indirect doctest bar(U['x']*U['y']) sage: y * x bar(U['x']*U['y']) sage: z * y * x bar(U['x']*U['y']*U['z'])
