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:
sage.categories.morphism.MorphismAn 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 complexesbase_ring– a field (optional, defaultQQ)cohomology– boolean (optional, defaultFalse). IfTrue, 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()¶
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()¶
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()¶
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
degis specified, return the matrix just in that degree; otherwise, return the block matrix representing the entire map.INPUT:
deg– (optional, defaultNone) 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]