Space of pseudomorphisms of free modules

AUTHORS:

  • Xavier Caruso, Yossef Musleh (2024-09): initial version

class sage.modules.free_module_pseudohomspace.FreeModulePseudoHomspace(domain, codomain, ore)[source]

Bases: UniqueRepresentation, HomsetWithBase

This class implements the space of pseudomorphisms with a fixed twist.

For free modules, the elements of a pseudomorphism correspond to matrices which define the mapping on elements of a basis.

This class is not supposed to be instantiated directly; the user should use instead the method sage.rings.module.free_module.FreeModule_generic.pseudoHom() to create a space of pseudomorphisms.

Element[source]

alias of FreeModulePseudoMorphism

basis(side='left')[source]

Return a basis for the underlying matrix space.

The result does not depend on the \(side\) of the homspace, i.e. if matrices are acted upon on the left or on the right.

EXAMPLES:

sage: Fq = GF(7^3)
sage: Frob = Fq.frobenius_endomorphism()
sage: V = Fq^2
sage: PHS = V.pseudoHom(Frob)
sage: PHS.basis()
[Free module pseudomorphism (twisted by z3 |--> z3^7) defined by the matrix
[1 0]
[0 0]
Domain: Vector space of dimension 2 over Finite Field in z3 of size 7^3
Codomain: Vector space of dimension 2 over Finite Field in z3 of size 7^3,
Free module pseudomorphism (twisted by z3 |--> z3^7) defined by the matrix
[0 1]
[0 0]
Domain: Vector space of dimension 2 over Finite Field in z3 of size 7^3
Codomain: Vector space of dimension 2 over Finite Field in z3 of size 7^3,
Free module pseudomorphism (twisted by z3 |--> z3^7) defined by the matrix
[0 0]
[1 0]
Domain: Vector space of dimension 2 over Finite Field in z3 of size 7^3
Codomain: Vector space of dimension 2 over Finite Field in z3 of size 7^3,
Free module pseudomorphism (twisted by z3 |--> z3^7) defined by the matrix
[0 0]
[0 1]
Domain: Vector space of dimension 2 over Finite Field in z3 of size 7^3
Codomain: Vector space of dimension 2 over Finite Field in z3 of size 7^3]
>>> from sage.all import *
>>> Fq = GF(Integer(7)**Integer(3))
>>> Frob = Fq.frobenius_endomorphism()
>>> V = Fq**Integer(2)
>>> PHS = V.pseudoHom(Frob)
>>> PHS.basis()
[Free module pseudomorphism (twisted by z3 |--> z3^7) defined by the matrix
[1 0]
[0 0]
Domain: Vector space of dimension 2 over Finite Field in z3 of size 7^3
Codomain: Vector space of dimension 2 over Finite Field in z3 of size 7^3,
Free module pseudomorphism (twisted by z3 |--> z3^7) defined by the matrix
[0 1]
[0 0]
Domain: Vector space of dimension 2 over Finite Field in z3 of size 7^3
Codomain: Vector space of dimension 2 over Finite Field in z3 of size 7^3,
Free module pseudomorphism (twisted by z3 |--> z3^7) defined by the matrix
[0 0]
[1 0]
Domain: Vector space of dimension 2 over Finite Field in z3 of size 7^3
Codomain: Vector space of dimension 2 over Finite Field in z3 of size 7^3,
Free module pseudomorphism (twisted by z3 |--> z3^7) defined by the matrix
[0 0]
[0 1]
Domain: Vector space of dimension 2 over Finite Field in z3 of size 7^3
Codomain: Vector space of dimension 2 over Finite Field in z3 of size 7^3]
matrix_space()[source]

Return the matrix space used for representing the pseudomorphisms in this space.

EXAMPLES:

sage: Fq.<z> = GF(7^3)
sage: Frob = Fq.frobenius_endomorphism()
sage: V = Fq^2
sage: W = Fq^3
sage: H = V.pseudoHom(Frob, codomain=W)
sage: H.matrix_space()
Full MatrixSpace of 2 by 3 dense matrices over Finite Field in z of size 7^3
>>> from sage.all import *
>>> Fq = GF(Integer(7)**Integer(3), names=('z',)); (z,) = Fq._first_ngens(1)
>>> Frob = Fq.frobenius_endomorphism()
>>> V = Fq**Integer(2)
>>> W = Fq**Integer(3)
>>> H = V.pseudoHom(Frob, codomain=W)
>>> H.matrix_space()
Full MatrixSpace of 2 by 3 dense matrices over Finite Field in z of size 7^3
ore_ring(var='x')[source]

Return the underlying Ore polynomial ring, that is the Ore polynomial ring over the base field twisted by the twisting morphism and the twisting derivation attached to this homspace.

INPUT:

  • var – string (default: x) the name of the variable

EXAMPLES:

sage: Fq.<z> = GF(7^3)
sage: Frob = Fq.frobenius_endomorphism()
sage: V = Fq^2
sage: H = V.pseudoHom(Frob)

sage: H.ore_ring()
Ore Polynomial Ring in x over Finite Field in z of size 7^3 twisted by z |--> z^7

sage: H.ore_ring('y')
Ore Polynomial Ring in y over Finite Field in z of size 7^3 twisted by z |--> z^7
>>> from sage.all import *
>>> Fq = GF(Integer(7)**Integer(3), names=('z',)); (z,) = Fq._first_ngens(1)
>>> Frob = Fq.frobenius_endomorphism()
>>> V = Fq**Integer(2)
>>> H = V.pseudoHom(Frob)

>>> H.ore_ring()
Ore Polynomial Ring in x over Finite Field in z of size 7^3 twisted by z |--> z^7

>>> H.ore_ring('y')
Ore Polynomial Ring in y over Finite Field in z of size 7^3 twisted by z |--> z^7