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 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
deg
is 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]