Set of Morphisms between Topological Manifolds¶
The class TopologicalManifoldHomset implements sets of
morphisms between two topological manifolds over the same topological
field \(K\), a morphism being a continuous map for the category of
topological manifolds.
AUTHORS:
- Eric Gourgoulhon (2015): initial version 
- Travis Scrimshaw (2016): review tweaks 
REFERENCES:
- class sage.manifolds.manifold_homset.TopologicalManifoldHomset(domain, codomain, name=None, latex_name=None)[source]¶
- Bases: - UniqueRepresentation,- Homset- Set of continuous maps between two topological manifolds. - Given two topological manifolds \(M\) and \(N\) over a topological field \(K\), the class - TopologicalManifoldHomsetimplements the set \(\mathrm{Hom}(M, N)\) of morphisms (i.e. continuous maps) \(M \to N\).- This is a Sage parent class, whose element class is - ContinuousMap.- INPUT: - domain–- TopologicalManifold; the domain topological manifold \(M\) of the morphisms
- codomain–- TopologicalManifold; the codomain topological manifold \(N\) of the morphisms
- name– (default:- None) string; the name of- self; if- None,- Hom(M,N)will be used
- latex_name– (default:- None) string; LaTeX symbol to denote- self; if- None, \(\mathrm{Hom}(M,N)\) will be used
 - EXAMPLES: - Set of continuous maps between a 2-dimensional manifold and a 3-dimensional one: - sage: M = Manifold(2, 'M', structure='topological') sage: X.<x,y> = M.chart() sage: N = Manifold(3, 'N', structure='topological') sage: Y.<u,v,w> = N.chart() sage: H = Hom(M, N) ; H Set of Morphisms from 2-dimensional topological manifold M to 3-dimensional topological manifold N in Category of manifolds over Real Field with 53 bits of precision sage: type(H) <class 'sage.manifolds.manifold_homset.TopologicalManifoldHomset_with_category'> sage: H.category() Category of homsets of topological spaces sage: latex(H) \mathrm{Hom}\left(M,N\right) sage: H.domain() 2-dimensional topological manifold M sage: H.codomain() 3-dimensional topological manifold N - >>> from sage.all import * >>> M = Manifold(Integer(2), 'M', structure='topological') >>> X = M.chart(names=('x', 'y',)); (x, y,) = X._first_ngens(2) >>> N = Manifold(Integer(3), 'N', structure='topological') >>> Y = N.chart(names=('u', 'v', 'w',)); (u, v, w,) = Y._first_ngens(3) >>> H = Hom(M, N) ; H Set of Morphisms from 2-dimensional topological manifold M to 3-dimensional topological manifold N in Category of manifolds over Real Field with 53 bits of precision >>> type(H) <class 'sage.manifolds.manifold_homset.TopologicalManifoldHomset_with_category'> >>> H.category() Category of homsets of topological spaces >>> latex(H) \mathrm{Hom}\left(M,N\right) >>> H.domain() 2-dimensional topological manifold M >>> H.codomain() 3-dimensional topological manifold N - An element of - His a continuous map from- Mto- N:- sage: H.Element <class 'sage.manifolds.continuous_map.ContinuousMap'> sage: f = H.an_element() ; f Continuous map from the 2-dimensional topological manifold M to the 3-dimensional topological manifold N sage: f.display() M → N (x, y) ↦ (u, v, w) = (0, 0, 0) - >>> from sage.all import * >>> H.Element <class 'sage.manifolds.continuous_map.ContinuousMap'> >>> f = H.an_element() ; f Continuous map from the 2-dimensional topological manifold M to the 3-dimensional topological manifold N >>> f.display() M → N (x, y) ↦ (u, v, w) = (0, 0, 0) - The test suite is passed: - sage: TestSuite(H).run() - >>> from sage.all import * >>> TestSuite(H).run() - When the codomain coincides with the domain, the homset is a set of endomorphisms in the category of topological manifolds: - sage: E = Hom(M, M) ; E Set of Morphisms from 2-dimensional topological manifold M to 2-dimensional topological manifold M in Category of manifolds over Real Field with 53 bits of precision sage: E.category() Category of endsets of topological spaces sage: E.is_endomorphism_set() True sage: E is End(M) True - >>> from sage.all import * >>> E = Hom(M, M) ; E Set of Morphisms from 2-dimensional topological manifold M to 2-dimensional topological manifold M in Category of manifolds over Real Field with 53 bits of precision >>> E.category() Category of endsets of topological spaces >>> E.is_endomorphism_set() True >>> E is End(M) True - In this case, the homset is a monoid for the law of morphism composition: - sage: E in Monoids() True - >>> from sage.all import * >>> E in Monoids() True - This was of course not the case of - H = Hom(M, N):- sage: H in Monoids() False - >>> from sage.all import * >>> H in Monoids() False - The identity element of the monoid is of course the identity map of - M:- sage: E.one() Identity map Id_M of the 2-dimensional topological manifold M sage: E.one() is M.identity_map() True sage: E.one().display() Id_M: M → M (x, y) ↦ (x, y) - >>> from sage.all import * >>> E.one() Identity map Id_M of the 2-dimensional topological manifold M >>> E.one() is M.identity_map() True >>> E.one().display() Id_M: M → M (x, y) ↦ (x, y) - The test suite is passed by - E:- sage: TestSuite(E).run() - >>> from sage.all import * >>> TestSuite(E).run() - This test suite includes more tests than in the case of - H, since- Ehas some extra structure (monoid).- Element[source]¶
- alias of - ContinuousMap
 - one()[source]¶
- Return the identity element of - selfconsidered as a monoid (case of a set of endomorphisms).- This applies only when the codomain of the homset is equal to its domain, i.e. when the homset is of the type \(\mathrm{Hom}(M,M)\). Indeed, \(\mathrm{Hom}(M,M)\) equipped with the law of morphisms composition is a monoid, whose identity element is nothing but the identity map of \(M\). - OUTPUT: - the identity map of \(M\), as an instance of - ContinuousMap
 - EXAMPLES: - The identity map of a 2-dimensional manifold: - sage: M = Manifold(2, 'M', structure='topological') sage: X.<x,y> = M.chart() sage: H = Hom(M, M) ; H Set of Morphisms from 2-dimensional topological manifold M to 2-dimensional topological manifold M in Category of manifolds over Real Field with 53 bits of precision sage: H in Monoids() True sage: H.one() Identity map Id_M of the 2-dimensional topological manifold M sage: H.one().parent() is H True sage: H.one().display() Id_M: M → M (x, y) ↦ (x, y) - >>> from sage.all import * >>> M = Manifold(Integer(2), 'M', structure='topological') >>> X = M.chart(names=('x', 'y',)); (x, y,) = X._first_ngens(2) >>> H = Hom(M, M) ; H Set of Morphisms from 2-dimensional topological manifold M to 2-dimensional topological manifold M in Category of manifolds over Real Field with 53 bits of precision >>> H in Monoids() True >>> H.one() Identity map Id_M of the 2-dimensional topological manifold M >>> H.one().parent() is H True >>> H.one().display() Id_M: M → M (x, y) ↦ (x, y) - The identity map is cached: - sage: H.one() is H.one() True - >>> from sage.all import * >>> H.one() is H.one() True - If the homset is not a set of endomorphisms, the identity element is meaningless: - sage: N = Manifold(3, 'N', structure='topological') sage: Y.<u,v,w> = N.chart() sage: Hom(M, N).one() Traceback (most recent call last): ... TypeError: Set of Morphisms from 2-dimensional topological manifold M to 3-dimensional topological manifold N in Category of manifolds over Real Field with 53 bits of precision is not a monoid - >>> from sage.all import * >>> N = Manifold(Integer(3), 'N', structure='topological') >>> Y = N.chart(names=('u', 'v', 'w',)); (u, v, w,) = Y._first_ngens(3) >>> Hom(M, N).one() Traceback (most recent call last): ... TypeError: Set of Morphisms from 2-dimensional topological manifold M to 3-dimensional topological manifold N in Category of manifolds over Real Field with 53 bits of precision is not a monoid