# Homspaces between free modules#

EXAMPLES:

We create $$\mathrm{End}(\ZZ^2)$$ and compute a basis.

sage: M = FreeModule(IntegerRing(),2)
sage: E = End(M)
sage: B = E.basis()
sage: len(B)
4
sage: B[0]
Free module morphism defined by the matrix
[1 0]
[0 0]
Domain: Ambient free module of rank 2 over the principal ideal domain ...
Codomain: Ambient free module of rank 2 over the principal ideal domain ...


We create $$\mathrm{Hom}(\ZZ^3, \ZZ^2)$$ and compute a basis.

sage: V3 = FreeModule(IntegerRing(),3)
sage: V2 = FreeModule(IntegerRing(),2)
sage: H = Hom(V3,V2)
sage: H
Set of Morphisms from Ambient free module of rank 3 over
the principal ideal domain Integer Ring
to Ambient free module of rank 2
over the principal ideal domain Integer Ring
in Category of finite dimensional modules with basis over
(Dedekind domains and euclidean domains
and infinite enumerated sets and metric spaces)
sage: B = H.basis()
sage: len(B)
6
sage: B[0]
Free module morphism defined by the matrix
[1 0]
[0 0]
[0 0]...

class sage.modules.free_module_homspace.FreeModuleHomspace(X, Y, category=None, check=True, base=None)#

Bases: HomsetWithBase

basis(side='left')#

Return a basis for this space of free module homomorphisms.

INPUT:

• side – side of the vectors acted on by the matrix (default: left)

OUTPUT:

• tuple

EXAMPLES:

sage: H = Hom(ZZ^2, ZZ^1)
sage: H.basis()
(Free module morphism defined by the matrix
[1]
[0]
Domain: Ambient free module of rank 2 over the principal ideal domain ...
Codomain: Ambient free module of rank 1 over the principal ideal domain ...,
Free module morphism defined by the matrix
[0]
[1]
Domain: Ambient free module of rank 2 over the principal ideal domain ...
Codomain: Ambient free module of rank 1 over the principal ideal domain ...)
sage: H.basis("right")
(Free module morphism defined as left-multiplication by the matrix
[1 0]
Domain: Ambient free module of rank 2 over the principal ideal domain ...
Codomain: Ambient free module of rank 1 over the principal ideal domain ...,
Free module morphism defined as left-multiplication by the matrix
[0 1]
Domain: Ambient free module of rank 2 over the principal ideal domain ...
Codomain: Ambient free module of rank 1 over the principal ideal domain ...)

identity(side='left')#

Return identity morphism in an endomorphism ring.

INPUT:

• side – side of the vectors acted on by the matrix (default: left)

EXAMPLES:

sage: V = FreeModule(ZZ,5)
sage: H = V.Hom(V)
sage: H.identity()
Free module morphism defined by the matrix
[1 0 0 0 0]
[0 1 0 0 0]
[0 0 1 0 0]
[0 0 0 1 0]
[0 0 0 0 1]
Domain: Ambient free module of rank 5 over the principal ideal domain ...
Codomain: Ambient free module of rank 5 over the principal ideal domain ...

zero(side='left')#

INPUT:

• side – side of the vectors acted on by the matrix (default: left)

EXAMPLES:

sage: E = ZZ^2
sage: F = ZZ^3
sage: H = Hom(E, F)
sage: f = H.zero()
sage: f
Free module morphism defined by the matrix
[0 0 0]
[0 0 0]
Domain: Ambient free module of rank 2 over the principal ideal domain Integer Ring
Codomain: Ambient free module of rank 3 over the principal ideal domain Integer Ring
sage: f(E.an_element())
(0, 0, 0)
sage: f(E.an_element()) == F.zero()
True
sage: H.zero("right")
Free module morphism defined as left-multiplication by the matrix
[0 0]
[0 0]
[0 0]
Domain: Ambient free module of rank 2 over the principal ideal domain Integer Ring
Codomain: Ambient free module of rank 3 over the principal ideal domain Integer Ring

sage.modules.free_module_homspace.is_FreeModuleHomspace(x)#

Return True if x is a free module homspace.

Notice that every vector space is a free module, but when we construct a set of morphisms between two vector spaces, it is a VectorSpaceHomspace, which qualifies as a FreeModuleHomspace, since the former is special case of the latter.

EXAMPLES:

sage: H = Hom(ZZ^3, ZZ^2)
sage: type(H)
<class 'sage.modules.free_module_homspace.FreeModuleHomspace_with_category'>
sage: sage.modules.free_module_homspace.is_FreeModuleHomspace(H)
True

sage: K = Hom(QQ^3, ZZ^2)
sage: type(K)
<class 'sage.modules.free_module_homspace.FreeModuleHomspace_with_category'>
sage: sage.modules.free_module_homspace.is_FreeModuleHomspace(K)
True

sage: L = Hom(ZZ^3, QQ^2)
sage: type(L)
<class 'sage.modules.free_module_homspace.FreeModuleHomspace_with_category'>
sage: sage.modules.free_module_homspace.is_FreeModuleHomspace(L)
True

sage: P = Hom(QQ^3, QQ^2)
sage: type(P)
<class 'sage.modules.vector_space_homspace.VectorSpaceHomspace_with_category'>
sage: sage.modules.free_module_homspace.is_FreeModuleHomspace(P)
True

sage: sage.modules.free_module_homspace.is_FreeModuleHomspace('junk')
False