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.CombinatorialFreeModule
The 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 fromto
. Its inverse map is implemented as
from_graded_conversion()
. The projectionis 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
A
andgrA
is the canonicalQQ
-module isomorphism stemming from the fact that the underlyingQQ
-modules ofA
andgrA
are 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
A
must 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_generators
method 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
x
andy
.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'])