# Morphisms of chain complexes¶

AUTHORS:

• Benjamin Antieau <d.ben.antieau@gmail.com> (2009.06)
• Travis Scrimshaw (2012-08-18): Made all simplicial complexes immutable to work with the homset cache.

This module implements morphisms of chain complexes. The input is a dictionary whose keys are in the grading group of the chain complex and whose values are matrix morphisms.

EXAMPLES:

from sage.matrix.constructor import zero_matrix
sage: S = simplicial_complexes.Sphere(1)
sage: S
Simplicial complex with vertex set (0, 1, 2) and facets {(1, 2), (0, 2), (0, 1)}
sage: C = S.chain_complex()
sage: C.differential()
{0: [], 1: [ 1  1  0]
[ 0 -1 -1]
[-1  0  1], 2: []}
sage: f = {0:zero_matrix(ZZ,3,3),1:zero_matrix(ZZ,3,3)}
sage: G = Hom(C,C)
sage: x = G(f)
sage: x
Chain complex morphism from Chain complex with at most 2 nonzero terms over Integer Ring to Chain complex with at most 2 nonzero terms over Integer Ring
sage: x._matrix_dictionary
{0: [0 0 0]
[0 0 0]
[0 0 0], 1: [0 0 0]
[0 0 0]
[0 0 0]}
class sage.homology.chain_complex_morphism.ChainComplexMorphism(matrices, C, D, check=True)

An element of this class is a morphism of chain complexes.

sage.homology.chain_complex_morphism.is_ChainComplexMorphism(x)

Returns True if and only if x is a chain complex morphism.

EXAMPLES:

sage: from sage.homology.chain_complex_morphism import is_ChainComplexMorphism
sage: S = simplicial_complexes.Sphere(14)
sage: H = Hom(S,S)
sage: i = H.identity()  # long time (8s on sage.math, 2011)
sage: S = simplicial_complexes.Sphere(6)
sage: H = Hom(S,S)
sage: i = H.identity()
sage: x = i.associated_chain_complex_morphism()
sage: x # indirect doctest
Chain complex morphism from Chain complex with at most 7 nonzero terms over
Integer Ring to Chain complex with at most 7 nonzero terms over Integer Ring
sage: is_ChainComplexMorphism(x)
True


Chain complexes

#### Next topic

Homspaces between chain complexes