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