Induced morphisms on homology#

This module implements morphisms on homology induced by morphisms of simplicial complexes. It requires working with field coefficients.

See InducedHomologyMorphism for documentation.

AUTHORS:

• John H. Palmieri (2015.09)

class sage.homology.homology_morphism.InducedHomologyMorphism(map, base_ring=None, cohomology=False)#

Bases: Morphism

An element of this class is a morphism of (co)homology groups induced by a map of simplicial complexes. It requires working with field coefficients.

INPUT:

• map – the map of simplicial complexes

• base_ring – a field (optional, default QQ)

• cohomology – boolean (optional, default False). If True, return the induced map in cohomology rather than homology.

Note

This is not intended to be used directly by the user, but instead via the method induced_homology_morphism().

EXAMPLES:

sage: S1 = simplicial_complexes.Sphere(1)
sage: H = Hom(S1, S1)
sage: f = H({0:0, 1:2, 2:1})  # f switches two vertices
sage: f_star = f.induced_homology_morphism(QQ, cohomology=True)
sage: f_star
Graded algebra endomorphism of
Cohomology ring of Minimal triangulation of the 1-sphere over Rational Field
Defn: induced by:
Simplicial complex endomorphism of Minimal triangulation of the 1-sphere
Defn: 0 |--> 0
1 |--> 2
2 |--> 1
sage: f_star.to_matrix(1)
[-1]
sage: f_star.to_matrix()
[ 1| 0]
[--+--]
[ 0|-1]

sage: T = simplicial_complexes.Torus()
sage: y = T.homology_with_basis(QQ).basis()[(1,1)]
sage: y.to_cycle()
(0, 5) - (0, 6) + (5, 6)


Since $$(0,2) - (0,5) + (2,5)$$ is a cycle representing a homology class in the torus, we can define a map $$S^1 \to T$$ inducing an inclusion on $$H_1$$:

sage: Hom(S1, T)({0:0, 1:2, 2:5})
Simplicial complex morphism:
From: Minimal triangulation of the 1-sphere
To:   Minimal triangulation of the torus
Defn: 0 |--> 0
1 |--> 2
2 |--> 5
sage: g = Hom(S1, T)({0:0, 1:2, 2: 5})
sage: g_star = g.induced_homology_morphism(QQ)
sage: g_star.to_matrix(0)
[1]
sage: g_star.to_matrix(1)
[-1]
[ 0]
sage: g_star.to_matrix()
[ 1| 0]
[--+--]
[ 0|-1]
[ 0| 0]
[--+--]
[ 0| 0]


We can evaluate such a map on (co)homology classes:

sage: H = S1.homology_with_basis(QQ)
sage: a = H.basis()[(1,0)]
sage: g_star(a)
-h_{1,0}

sage: T = S1.product(S1, is_mutable=False)
sage: diag = Hom(S1,T).diagonal_morphism()
sage: b,c = list(T.cohomology_ring().basis(1))
sage: diag_c = diag.induced_homology_morphism(cohomology=True)
sage: diag_c(b)
h^{1,0}
sage: diag_c(c)
h^{1,0}

base_ring()#

The base ring for this map.

EXAMPLES:

sage: K = simplicial_complexes.Simplex(2)
sage: H = Hom(K,K)
sage: id = H.identity()
sage: id.induced_homology_morphism(QQ).base_ring()
Rational Field
sage: id.induced_homology_morphism(GF(13)).base_ring()
Finite Field of size 13

is_identity()#

Return True if this is the identity map on (co)homology.

EXAMPLES:

sage: S1 = simplicial_complexes.Sphere(1)
sage: H = Hom(S1, S1)
sage: flip = H({0:0, 1:2, 2:1})
sage: flip.induced_homology_morphism(QQ).is_identity()
False
sage: flip.induced_homology_morphism(GF(2)).is_identity()
True
sage: rotate = H({0:1, 1:2, 2:0})
sage: rotate.induced_homology_morphism(QQ).is_identity()
True

is_injective()#

Return True if this map is injective on (co)homology.

EXAMPLES:

sage: S1 = simplicial_complexes.Sphere(1)
sage: K = simplicial_complexes.Simplex(2)
sage: H = Hom(S1, K)
sage: f = H({0:0, 1:1, 2:2})
sage: f.induced_homology_morphism().is_injective()
False
sage: f.induced_homology_morphism(cohomology=True).is_injective()
True

sage: T = simplicial_complexes.Torus()
sage: g = Hom(S1, T)({0:0, 1:3, 2: 6})
sage: g_star = g.induced_homology_morphism(QQ)
sage: g.is_injective()
True

is_surjective()#

Return True if this map is surjective on (co)homology.

EXAMPLES:

sage: S1 = simplicial_complexes.Sphere(1)
sage: K = simplicial_complexes.Simplex(2)
sage: H = Hom(S1, K)
sage: f = H({0:0, 1:1, 2:2})
sage: f.induced_homology_morphism().is_surjective()
True
sage: f.induced_homology_morphism(cohomology=True).is_surjective()
False

to_matrix(deg=None)#

The matrix for this map.

If degree deg is specified, return the matrix just in that degree; otherwise, return the block matrix representing the entire map.

INPUT:

• deg – (optional, default None) the degree

EXAMPLES:

sage: S1 = simplicial_complexes.Sphere(1)
sage: S1_b = S1.barycentric_subdivision()
sage: S1_b.set_immutable()
sage: d = {(0,): 0, (0,1): 1, (1,): 2, (1,2): 0, (2,): 1, (0,2): 2}
sage: f = Hom(S1_b, S1)(d)
sage: h = f.induced_homology_morphism(QQ)
sage: h.to_matrix(1)
[2]
sage: h.to_matrix()
[1|0]
[-+-]
[0|2]