# 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
(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)
basis()

Return a basis for this space of free module homomorphisms.

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 ...)

identity()

Return identity morphism in an endomorphism ring.

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()

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.modules.free_module_homspace.is_FreeModuleHomspace(x)

Return True if x is a free module homspace.

EXAMPLES:

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.

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