Modules over finite flat algebras

Finite locally free modules over finite flat algebras.

class dual_pairs.finite_flat_algebra_module.FiniteFlatAlgebraModule(*args: Any, **kwargs: Any)

A locally free module of rank 1 over a finite flat algebra.

Currently, only free modules are supported.

EXAMPLES:

sage: from dual_pairs import FiniteFlatAlgebra
sage: from dual_pairs.finite_flat_algebra_module import FiniteFlatAlgebraModule
sage: R.<x> = QQ[]
sage: A = FiniteFlatAlgebra(QQ, x^4 - 16)
sage: M = FiniteFlatAlgebraModule(A)
sage: M.zero()
0
sage: M.coerce_map_from(QQ)
sage: M.coerce_map_from(A)
Element

alias of FiniteFlatAlgebraModuleElement

change_ring(R)

Return a copy of self base-changed to R.

Todo

If A is the finite flat algebra over which self is a module, should R be an algebra over A or over the base ring of A?

EXAMPLES:

sage: from dual_pairs import FiniteFlatAlgebra
sage: from dual_pairs.finite_flat_algebra_module import FiniteFlatAlgebraModule
sage: R.<x> = QQ[]
sage: A = FiniteFlatAlgebra(QQ, x^2 + 1)
sage: M = FiniteFlatAlgebraModule(A)
sage: M.change_ring(QuadraticField(-1, 'i'))
Traceback (most recent call last):
...
TypeError: base ring must be a finite flat algebra
dual()

Return the dual of self over its base ring.

EXAMPLES:

sage: from dual_pairs import FiniteFlatAlgebra
sage: from dual_pairs.finite_flat_algebra_module import FiniteFlatAlgebraModule
sage: R.<x> = QQ[]
sage: A = FiniteFlatAlgebra(QQ, x^2 + 1)
sage: M = FiniteFlatAlgebraModule(A)
sage: M.dual()
Free module of rank 1 over Monogenic algebra of degree 2 over Rational Field with defining polynomial x^2 + 1
random_element()

Return a random element of self.

EXAMPLES:

sage: from dual_pairs import FiniteFlatAlgebra
sage: from dual_pairs.finite_flat_algebra_module import FiniteFlatAlgebraModule
sage: R.<x> = QQ[]
sage: A = FiniteFlatAlgebra(QQ, x^2 - 1)
sage: M = FiniteFlatAlgebraModule(A)
sage: M.random_element()  # random
-1/95*a - 1/2
class dual_pairs.finite_flat_algebra_module.FiniteFlatAlgebraModuleElement(*args: Any, **kwargs: Any)

An element of a free module of rank 1 over a finite flat algebra.

Currently, these are just represented as algebra elements.

EXAMPLES:

sage: from dual_pairs import FiniteFlatAlgebra
sage: from dual_pairs.finite_flat_algebra_module import FiniteFlatAlgebraModule
sage: R.<x> = QQ[]
sage: A = FiniteFlatAlgebra(QQ, x^4 - 16)
sage: M = FiniteFlatAlgebraModule(A)
sage: m = M(1)
sage: m
1
sage: m + m
2
sage: 2*m - A(x)*m
-a + 2
sage: -m
-1
sage: A(x) * m
a
module_element()

Return self as a module element over the base ring of the finite flat algebra that is the base ring of self.

EXAMPLES:

sage: from dual_pairs import FiniteFlatAlgebra
sage: from dual_pairs.finite_flat_algebra_module import FiniteFlatAlgebraModule
sage: R.<x> = QQ[]
sage: A = FiniteFlatAlgebra(QQ, x^4 - 16)
sage: M = FiniteFlatAlgebraModule(A)
sage: M(x).module_element()
(0, 1, 0, 0)