Quotients of Modules With Basis

sage.modules.with_basis.subquotient.QuotientModuleWithBasis

A class for quotients of a module with basis by a submodule.

INPUT:

  • submodule – a submodule of self
  • category – a category (default: ModulesWithBasis(submodule.base_ring()))

submodule should be a free submodule admitting a basis in unitriangular echelon form. Typically submodule is a SubmoduleWithBasis as returned by Modules.WithBasis.ParentMethods.submodule().

The lift method should have a method .cokernel_basis_indices that computes the indexing set of a subset \(B\) of the basis of self that spans some supplementary of submodule in self (typically the non characteristic columns of the aforementioned echelon form). submodule should further implement a submodule.reduce(x) method that returns the unique element in the span of \(B\) which is equivalent to \(x\) modulo submodule.

This is meant to be constructed via Modules.WithBasis.FiniteDimensional.ParentMethods.quotient_module()

This differs from sage.rings.quotient_ring.QuotientRing in the following ways:

  • submodule needs not be an ideal. If it is, the transportation of the ring structure is taken care of by the Subquotients categories.
  • Thanks to .cokernel_basis_indices, we know the indices of a basis of the quotient, and elements are represented directly in the free module spanned by those indices rather than by wrapping elements of the ambient space.

There is room for sharing more code between those two implementations and generalizing them. See trac ticket #18204.

See also

  • Modules.WithBasis.ParentMethods.submodule()
  • Modules.WithBasis.FiniteDimensional.ParentMethods.quotient_module()
  • SubmoduleWithBasis
  • sage.rings.quotient_ring.QuotientRing
sage.modules.with_basis.subquotient.SubmoduleWithBasis

A base class for submodules of a ModuleWithBasis spanned by a (possibly infinite) basis in echelon form.

INPUT:

  • basis – a family of elements in echelon form in some module with basis \(V\), or data that can be converted into such a family
  • unitriangular – if the lift morphism is unitriangular
  • ambient – the ambient space \(V\)
  • category – a category

Further arguments are passed down to CombinatorialFreeModule.

This is meant to be constructed via Modules.WithBasis.ParentMethods.submodule().

See also