passagemath-graphs 10.6.1rc1__cp310-cp310-musllinux_1_2_aarch64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- passagemath_graphs-10.6.1rc1.dist-info/METADATA +292 -0
- passagemath_graphs-10.6.1rc1.dist-info/RECORD +260 -0
- passagemath_graphs-10.6.1rc1.dist-info/WHEEL +5 -0
- passagemath_graphs-10.6.1rc1.dist-info/top_level.txt +2 -0
- passagemath_graphs.libs/libgcc_s-69c45f16.so.1 +0 -0
- passagemath_graphs.libs/libgmp-8e78bd9b.so.10.5.0 +0 -0
- passagemath_graphs.libs/libstdc++-1f1a71be.so.6.0.33 +0 -0
- sage/all__sagemath_graphs.py +39 -0
- sage/combinat/abstract_tree.py +2723 -0
- sage/combinat/all__sagemath_graphs.py +34 -0
- sage/combinat/binary_tree.py +5306 -0
- sage/combinat/cluster_algebra_quiver/all.py +22 -0
- sage/combinat/cluster_algebra_quiver/cluster_seed.py +5208 -0
- sage/combinat/cluster_algebra_quiver/interact.py +124 -0
- sage/combinat/cluster_algebra_quiver/mutation_class.py +625 -0
- sage/combinat/cluster_algebra_quiver/mutation_type.py +1555 -0
- sage/combinat/cluster_algebra_quiver/quiver.py +2290 -0
- sage/combinat/cluster_algebra_quiver/quiver_mutation_type.py +2468 -0
- sage/combinat/designs/MOLS_handbook_data.py +570 -0
- sage/combinat/designs/all.py +58 -0
- sage/combinat/designs/bibd.py +1655 -0
- sage/combinat/designs/block_design.py +1071 -0
- sage/combinat/designs/covering_array.py +269 -0
- sage/combinat/designs/covering_design.py +530 -0
- sage/combinat/designs/database.py +5615 -0
- sage/combinat/designs/design_catalog.py +122 -0
- sage/combinat/designs/designs_pyx.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/combinat/designs/designs_pyx.pxd +21 -0
- sage/combinat/designs/designs_pyx.pyx +993 -0
- sage/combinat/designs/difference_family.py +3951 -0
- sage/combinat/designs/difference_matrices.py +279 -0
- sage/combinat/designs/evenly_distributed_sets.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/combinat/designs/evenly_distributed_sets.pyx +661 -0
- sage/combinat/designs/ext_rep.py +1064 -0
- sage/combinat/designs/gen_quadrangles_with_spread.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/combinat/designs/gen_quadrangles_with_spread.pyx +339 -0
- sage/combinat/designs/group_divisible_designs.py +361 -0
- sage/combinat/designs/incidence_structures.py +2357 -0
- sage/combinat/designs/latin_squares.py +581 -0
- sage/combinat/designs/orthogonal_arrays.py +2244 -0
- sage/combinat/designs/orthogonal_arrays_build_recursive.py +1780 -0
- sage/combinat/designs/orthogonal_arrays_find_recursive.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/combinat/designs/orthogonal_arrays_find_recursive.pyx +967 -0
- sage/combinat/designs/resolvable_bibd.py +815 -0
- sage/combinat/designs/steiner_quadruple_systems.py +1306 -0
- sage/combinat/designs/subhypergraph_search.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/combinat/designs/subhypergraph_search.pyx +530 -0
- sage/combinat/designs/twographs.py +306 -0
- sage/combinat/finite_state_machine.py +14874 -0
- sage/combinat/finite_state_machine_generators.py +2006 -0
- sage/combinat/graph_path.py +448 -0
- sage/combinat/interval_posets.py +3908 -0
- sage/combinat/nu_tamari_lattice.py +269 -0
- sage/combinat/ordered_tree.py +1446 -0
- sage/combinat/posets/all.py +46 -0
- sage/combinat/posets/bubble_shuffle.py +247 -0
- sage/combinat/posets/cartesian_product.py +493 -0
- sage/combinat/posets/d_complete.py +182 -0
- sage/combinat/posets/elements.py +273 -0
- sage/combinat/posets/forest.py +30 -0
- sage/combinat/posets/hasse_cython.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/combinat/posets/hasse_cython.pyx +174 -0
- sage/combinat/posets/hasse_diagram.py +3672 -0
- sage/combinat/posets/hochschild_lattice.py +158 -0
- sage/combinat/posets/incidence_algebras.py +794 -0
- sage/combinat/posets/lattices.py +5117 -0
- sage/combinat/posets/linear_extension_iterator.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/combinat/posets/linear_extension_iterator.pyx +292 -0
- sage/combinat/posets/linear_extensions.py +1037 -0
- sage/combinat/posets/mobile.py +275 -0
- sage/combinat/posets/moebius_algebra.py +776 -0
- sage/combinat/posets/poset_examples.py +2178 -0
- sage/combinat/posets/posets.py +9360 -0
- sage/combinat/rooted_tree.py +1070 -0
- sage/combinat/shard_order.py +239 -0
- sage/combinat/tamari_lattices.py +384 -0
- sage/combinat/yang_baxter_graph.py +923 -0
- sage/databases/all__sagemath_graphs.py +1 -0
- sage/databases/knotinfo_db.py +1231 -0
- sage/ext_data/all__sagemath_graphs.py +1 -0
- sage/ext_data/graphs/graph_plot_js.html +330 -0
- sage/ext_data/kenzo/CP2.txt +45 -0
- sage/ext_data/kenzo/CP3.txt +349 -0
- sage/ext_data/kenzo/CP4.txt +4774 -0
- sage/ext_data/kenzo/README.txt +49 -0
- sage/ext_data/kenzo/S4.txt +20 -0
- sage/graphs/all.py +42 -0
- sage/graphs/asteroidal_triples.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/asteroidal_triples.pyx +320 -0
- sage/graphs/base/all.py +1 -0
- sage/graphs/base/boost_graph.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/base/boost_graph.pxd +106 -0
- sage/graphs/base/boost_graph.pyx +3045 -0
- sage/graphs/base/c_graph.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/base/c_graph.pxd +106 -0
- sage/graphs/base/c_graph.pyx +5096 -0
- sage/graphs/base/dense_graph.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/base/dense_graph.pxd +28 -0
- sage/graphs/base/dense_graph.pyx +801 -0
- sage/graphs/base/graph_backends.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/base/graph_backends.pxd +5 -0
- sage/graphs/base/graph_backends.pyx +797 -0
- sage/graphs/base/overview.py +85 -0
- sage/graphs/base/sparse_graph.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/base/sparse_graph.pxd +90 -0
- sage/graphs/base/sparse_graph.pyx +1653 -0
- sage/graphs/base/static_dense_graph.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/base/static_dense_graph.pxd +5 -0
- sage/graphs/base/static_dense_graph.pyx +1032 -0
- sage/graphs/base/static_sparse_backend.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/base/static_sparse_backend.pxd +27 -0
- sage/graphs/base/static_sparse_backend.pyx +1583 -0
- sage/graphs/base/static_sparse_graph.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/base/static_sparse_graph.pxd +37 -0
- sage/graphs/base/static_sparse_graph.pyx +1375 -0
- sage/graphs/bipartite_graph.py +2732 -0
- sage/graphs/centrality.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/centrality.pyx +1038 -0
- sage/graphs/cographs.py +519 -0
- sage/graphs/comparability.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/comparability.pyx +851 -0
- sage/graphs/connectivity.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/connectivity.pxd +157 -0
- sage/graphs/connectivity.pyx +4813 -0
- sage/graphs/convexity_properties.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/convexity_properties.pxd +16 -0
- sage/graphs/convexity_properties.pyx +870 -0
- sage/graphs/digraph.py +4754 -0
- sage/graphs/digraph_generators.py +1993 -0
- sage/graphs/distances_all_pairs.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/distances_all_pairs.pxd +12 -0
- sage/graphs/distances_all_pairs.pyx +2938 -0
- sage/graphs/domination.py +1363 -0
- sage/graphs/dot2tex_utils.py +100 -0
- sage/graphs/edge_connectivity.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/edge_connectivity.pyx +1215 -0
- sage/graphs/generators/all.py +1 -0
- sage/graphs/generators/basic.py +1769 -0
- sage/graphs/generators/chessboard.py +538 -0
- sage/graphs/generators/classical_geometries.py +1611 -0
- sage/graphs/generators/degree_sequence.py +235 -0
- sage/graphs/generators/distance_regular.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/generators/distance_regular.pyx +2846 -0
- sage/graphs/generators/families.py +4759 -0
- sage/graphs/generators/intersection.py +565 -0
- sage/graphs/generators/platonic_solids.py +262 -0
- sage/graphs/generators/random.py +2623 -0
- sage/graphs/generators/smallgraphs.py +5741 -0
- sage/graphs/generators/world_map.py +724 -0
- sage/graphs/generic_graph.py +26867 -0
- sage/graphs/generic_graph_pyx.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/generic_graph_pyx.pxd +34 -0
- sage/graphs/generic_graph_pyx.pyx +1673 -0
- sage/graphs/genus.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/genus.pyx +622 -0
- sage/graphs/graph.py +9645 -0
- sage/graphs/graph_coloring.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/graph_coloring.pyx +2284 -0
- sage/graphs/graph_database.py +1177 -0
- sage/graphs/graph_decompositions/all.py +1 -0
- sage/graphs/graph_decompositions/bandwidth.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/graph_decompositions/bandwidth.pyx +428 -0
- sage/graphs/graph_decompositions/clique_separators.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/graph_decompositions/clique_separators.pyx +616 -0
- sage/graphs/graph_decompositions/cutwidth.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/graph_decompositions/cutwidth.pyx +753 -0
- sage/graphs/graph_decompositions/fast_digraph.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/graph_decompositions/fast_digraph.pxd +13 -0
- sage/graphs/graph_decompositions/fast_digraph.pyx +212 -0
- sage/graphs/graph_decompositions/graph_products.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/graph_decompositions/graph_products.pyx +508 -0
- sage/graphs/graph_decompositions/modular_decomposition.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/graph_decompositions/modular_decomposition.pxd +27 -0
- sage/graphs/graph_decompositions/modular_decomposition.pyx +1536 -0
- sage/graphs/graph_decompositions/slice_decomposition.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/graph_decompositions/slice_decomposition.pxd +18 -0
- sage/graphs/graph_decompositions/slice_decomposition.pyx +1106 -0
- sage/graphs/graph_decompositions/tree_decomposition.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/graph_decompositions/tree_decomposition.pxd +17 -0
- sage/graphs/graph_decompositions/tree_decomposition.pyx +1996 -0
- sage/graphs/graph_decompositions/vertex_separation.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/graph_decompositions/vertex_separation.pxd +5 -0
- sage/graphs/graph_decompositions/vertex_separation.pyx +1963 -0
- sage/graphs/graph_editor.py +82 -0
- sage/graphs/graph_generators.py +3314 -0
- sage/graphs/graph_generators_pyx.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/graph_generators_pyx.pyx +95 -0
- sage/graphs/graph_input.py +812 -0
- sage/graphs/graph_latex.py +2064 -0
- sage/graphs/graph_list.py +410 -0
- sage/graphs/graph_plot.py +1756 -0
- sage/graphs/graph_plot_js.py +338 -0
- sage/graphs/hyperbolicity.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/hyperbolicity.pyx +1704 -0
- sage/graphs/hypergraph_generators.py +364 -0
- sage/graphs/independent_sets.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/independent_sets.pxd +13 -0
- sage/graphs/independent_sets.pyx +402 -0
- sage/graphs/isgci.py +1033 -0
- sage/graphs/isoperimetric_inequalities.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/isoperimetric_inequalities.pyx +489 -0
- sage/graphs/line_graph.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/line_graph.pyx +743 -0
- sage/graphs/lovasz_theta.py +77 -0
- sage/graphs/matching.py +1633 -0
- sage/graphs/matching_covered_graph.py +3590 -0
- sage/graphs/orientations.py +1489 -0
- sage/graphs/partial_cube.py +459 -0
- sage/graphs/path_enumeration.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/path_enumeration.pyx +2040 -0
- sage/graphs/pq_trees.py +1129 -0
- sage/graphs/print_graphs.py +201 -0
- sage/graphs/schnyder.py +865 -0
- sage/graphs/spanning_tree.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/spanning_tree.pyx +1457 -0
- sage/graphs/strongly_regular_db.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/strongly_regular_db.pyx +3340 -0
- sage/graphs/traversals.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/traversals.pxd +9 -0
- sage/graphs/traversals.pyx +1872 -0
- sage/graphs/trees.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/trees.pxd +15 -0
- sage/graphs/trees.pyx +310 -0
- sage/graphs/tutte_polynomial.py +713 -0
- sage/graphs/views.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/views.pyx +794 -0
- sage/graphs/weakly_chordal.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/graphs/weakly_chordal.pyx +604 -0
- sage/groups/all__sagemath_graphs.py +1 -0
- sage/groups/perm_gps/all__sagemath_graphs.py +1 -0
- sage/groups/perm_gps/partn_ref/all__sagemath_graphs.py +1 -0
- sage/groups/perm_gps/partn_ref/refinement_graphs.cpython-310-aarch64-linux-gnu.so +0 -0
- sage/groups/perm_gps/partn_ref/refinement_graphs.pxd +38 -0
- sage/groups/perm_gps/partn_ref/refinement_graphs.pyx +1666 -0
- sage/knots/all.py +6 -0
- sage/knots/free_knotinfo_monoid.py +507 -0
- sage/knots/gauss_code.py +291 -0
- sage/knots/knot.py +682 -0
- sage/knots/knot_table.py +284 -0
- sage/knots/knotinfo.py +2900 -0
- sage/knots/link.py +4715 -0
- sage/sandpiles/all.py +13 -0
- sage/sandpiles/examples.py +225 -0
- sage/sandpiles/sandpile.py +6365 -0
- sage/topology/all.py +22 -0
- sage/topology/cell_complex.py +1214 -0
- sage/topology/cubical_complex.py +1976 -0
- sage/topology/delta_complex.py +1806 -0
- sage/topology/filtered_simplicial_complex.py +744 -0
- sage/topology/moment_angle_complex.py +823 -0
- sage/topology/simplicial_complex.py +5160 -0
- sage/topology/simplicial_complex_catalog.py +92 -0
- sage/topology/simplicial_complex_examples.py +1680 -0
- sage/topology/simplicial_complex_homset.py +205 -0
- sage/topology/simplicial_complex_morphism.py +836 -0
- sage/topology/simplicial_set.py +4102 -0
- sage/topology/simplicial_set_catalog.py +55 -0
- sage/topology/simplicial_set_constructions.py +2954 -0
- sage/topology/simplicial_set_examples.py +865 -0
- sage/topology/simplicial_set_morphism.py +1464 -0
@@ -0,0 +1,205 @@
|
|
1
|
+
# sage_setup: distribution = sagemath-graphs
|
2
|
+
# sage.doctest: needs sage.graphs
|
3
|
+
r"""
|
4
|
+
Homsets between simplicial complexes
|
5
|
+
|
6
|
+
AUTHORS:
|
7
|
+
|
8
|
+
- Travis Scrimshaw (2012-08-18): Made all simplicial complexes immutable to
|
9
|
+
work with the homset cache.
|
10
|
+
|
11
|
+
EXAMPLES::
|
12
|
+
|
13
|
+
sage: S = simplicial_complexes.Sphere(1)
|
14
|
+
sage: T = simplicial_complexes.Sphere(2)
|
15
|
+
sage: H = Hom(S,T)
|
16
|
+
sage: f = {0:0,1:1,2:3}
|
17
|
+
sage: x = H(f)
|
18
|
+
sage: x
|
19
|
+
Simplicial complex morphism:
|
20
|
+
From: Minimal triangulation of the 1-sphere
|
21
|
+
To: Minimal triangulation of the 2-sphere
|
22
|
+
Defn: 0 |--> 0
|
23
|
+
1 |--> 1
|
24
|
+
2 |--> 3
|
25
|
+
sage: x.is_injective()
|
26
|
+
True
|
27
|
+
sage: x.is_surjective()
|
28
|
+
False
|
29
|
+
sage: x.image()
|
30
|
+
Simplicial complex with vertex set (0, 1, 3) and facets {(0, 1), (0, 3), (1, 3)}
|
31
|
+
sage: from sage.topology.simplicial_complex import Simplex
|
32
|
+
sage: s = Simplex([1,2])
|
33
|
+
sage: x(s)
|
34
|
+
(1, 3)
|
35
|
+
|
36
|
+
TESTS::
|
37
|
+
|
38
|
+
sage: S = simplicial_complexes.Sphere(1)
|
39
|
+
sage: T = simplicial_complexes.Sphere(2)
|
40
|
+
sage: H = Hom(S,T)
|
41
|
+
sage: loads(dumps(H)) == H
|
42
|
+
True
|
43
|
+
"""
|
44
|
+
|
45
|
+
# ****************************************************************************
|
46
|
+
# Copyright (C) 2009 D. Benjamin Antieau <d.ben.antieau@gmail.com>
|
47
|
+
#
|
48
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
49
|
+
#
|
50
|
+
# This code is distributed in the hope that it will be useful,
|
51
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty
|
52
|
+
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
53
|
+
#
|
54
|
+
# See the GNU General Public License for more details; the full text
|
55
|
+
# is available at:
|
56
|
+
#
|
57
|
+
# https://www.gnu.org/licenses/
|
58
|
+
#
|
59
|
+
# ****************************************************************************
|
60
|
+
|
61
|
+
import sage.categories.homset
|
62
|
+
from .simplicial_complex_morphism import SimplicialComplexMorphism
|
63
|
+
|
64
|
+
|
65
|
+
def is_SimplicialComplexHomset(x) -> bool:
|
66
|
+
"""
|
67
|
+
Return ``True`` if and only if ``x`` is a simplicial complex homspace.
|
68
|
+
|
69
|
+
EXAMPLES::
|
70
|
+
|
71
|
+
sage: S = SimplicialComplex(is_mutable=False)
|
72
|
+
sage: T = SimplicialComplex(is_mutable=False)
|
73
|
+
sage: H = Hom(S, T)
|
74
|
+
sage: H
|
75
|
+
Set of Morphisms from Simplicial complex with vertex set () and facets {()}
|
76
|
+
to Simplicial complex with vertex set () and facets {()}
|
77
|
+
in Category of finite simplicial complexes
|
78
|
+
sage: from sage.topology.simplicial_complex_homset import is_SimplicialComplexHomset
|
79
|
+
sage: is_SimplicialComplexHomset(H)
|
80
|
+
doctest:warning...
|
81
|
+
DeprecationWarning: the function is_SimplicialComplexHomset is deprecated;
|
82
|
+
use 'isinstance(..., SimplicialComplexHomset)' instead
|
83
|
+
See https://github.com/sagemath/sage/issues/37922 for details.
|
84
|
+
True
|
85
|
+
"""
|
86
|
+
from sage.misc.superseded import deprecation
|
87
|
+
deprecation(37922, "the function is_SimplicialComplexHomset is deprecated; use 'isinstance(..., SimplicialComplexHomset)' instead")
|
88
|
+
return isinstance(x, SimplicialComplexHomset)
|
89
|
+
|
90
|
+
|
91
|
+
class SimplicialComplexHomset(sage.categories.homset.Homset):
|
92
|
+
def __call__(self, f):
|
93
|
+
"""
|
94
|
+
INPUT:
|
95
|
+
|
96
|
+
- ``f`` -- dictionary with keys exactly the vertices of the domain
|
97
|
+
and values vertices of the codomain
|
98
|
+
|
99
|
+
EXAMPLES::
|
100
|
+
|
101
|
+
sage: S = simplicial_complexes.Sphere(3)
|
102
|
+
sage: T = simplicial_complexes.Sphere(2)
|
103
|
+
sage: f = {0:0,1:1,2:2,3:2,4:2}
|
104
|
+
sage: H = Hom(S,T)
|
105
|
+
sage: x = H(f)
|
106
|
+
sage: x
|
107
|
+
Simplicial complex morphism:
|
108
|
+
From: Minimal triangulation of the 3-sphere
|
109
|
+
To: Minimal triangulation of the 2-sphere
|
110
|
+
Defn: [0, 1, 2, 3, 4] --> [0, 1, 2, 2, 2]
|
111
|
+
"""
|
112
|
+
return SimplicialComplexMorphism(f, self.domain(), self.codomain())
|
113
|
+
|
114
|
+
def diagonal_morphism(self, rename_vertices=True):
|
115
|
+
r"""
|
116
|
+
Return the diagonal morphism in `Hom(S, S \times S)`.
|
117
|
+
|
118
|
+
EXAMPLES::
|
119
|
+
|
120
|
+
sage: S = simplicial_complexes.Sphere(2)
|
121
|
+
sage: H = Hom(S,S.product(S, is_mutable=False))
|
122
|
+
sage: d = H.diagonal_morphism(); d
|
123
|
+
Simplicial complex morphism:
|
124
|
+
From: Minimal triangulation of the 2-sphere
|
125
|
+
To: Simplicial complex with 16 vertices and 96 facets
|
126
|
+
Defn: 0 |--> L0R0
|
127
|
+
1 |--> L1R1
|
128
|
+
2 |--> L2R2
|
129
|
+
3 |--> L3R3
|
130
|
+
|
131
|
+
sage: T = SimplicialComplex([[0], [1]], is_mutable=False)
|
132
|
+
sage: U = T.product(T, rename_vertices=False, is_mutable=False)
|
133
|
+
sage: G = Hom(T, U)
|
134
|
+
sage: e = G.diagonal_morphism(rename_vertices=False); e
|
135
|
+
Simplicial complex morphism:
|
136
|
+
From: Simplicial complex with vertex set (0, 1) and facets {(0,), (1,)}
|
137
|
+
To: Simplicial complex with 4 vertices and
|
138
|
+
facets {((0, 0),), ((0, 1),), ((1, 0),), ((1, 1),)}
|
139
|
+
Defn: 0 |--> (0, 0)
|
140
|
+
1 |--> (1, 1)
|
141
|
+
"""
|
142
|
+
# Preserve whether the codomain is mutable when renaming the vertices.
|
143
|
+
mutable = self._codomain.is_mutable()
|
144
|
+
X = self._domain.product(self._domain, rename_vertices=rename_vertices,
|
145
|
+
is_mutable=mutable)
|
146
|
+
if self._codomain != X:
|
147
|
+
raise TypeError("diagonal morphism is only defined for Hom(X,XxX)")
|
148
|
+
f = {}
|
149
|
+
if rename_vertices:
|
150
|
+
f = {i: "L{0}R{0}".format(i) for i in self._domain.vertices()}
|
151
|
+
else:
|
152
|
+
f = {i: (i, i) for i in self._domain.vertices()}
|
153
|
+
return SimplicialComplexMorphism(f, self._domain, X)
|
154
|
+
|
155
|
+
def identity(self):
|
156
|
+
"""
|
157
|
+
Return the identity morphism of `Hom(S,S)`.
|
158
|
+
|
159
|
+
EXAMPLES::
|
160
|
+
|
161
|
+
sage: S = simplicial_complexes.Sphere(2)
|
162
|
+
sage: H = Hom(S, S)
|
163
|
+
sage: i = H.identity()
|
164
|
+
sage: i.is_identity()
|
165
|
+
True
|
166
|
+
|
167
|
+
sage: T = SimplicialComplex([[0,1]], is_mutable=False)
|
168
|
+
sage: G = Hom(T, T)
|
169
|
+
sage: G.identity()
|
170
|
+
Simplicial complex endomorphism of
|
171
|
+
Simplicial complex with vertex set (0, 1) and facets {(0, 1)}
|
172
|
+
Defn: 0 |--> 0
|
173
|
+
1 |--> 1
|
174
|
+
"""
|
175
|
+
if not self.is_endomorphism_set():
|
176
|
+
raise TypeError("identity map is only defined for endomorphism sets")
|
177
|
+
f = {i: i for i in self._domain.vertices()}
|
178
|
+
return SimplicialComplexMorphism(f, self._domain, self._codomain)
|
179
|
+
|
180
|
+
def an_element(self):
|
181
|
+
"""
|
182
|
+
Return a (non-random) element of ``self``.
|
183
|
+
|
184
|
+
EXAMPLES::
|
185
|
+
|
186
|
+
sage: S = simplicial_complexes.KleinBottle()
|
187
|
+
sage: T = simplicial_complexes.Sphere(5)
|
188
|
+
sage: H = Hom(S,T)
|
189
|
+
sage: x = H.an_element()
|
190
|
+
sage: x
|
191
|
+
Simplicial complex morphism:
|
192
|
+
From: Minimal triangulation of the Klein bottle
|
193
|
+
To: Minimal triangulation of the 5-sphere
|
194
|
+
Defn: [0, 1, 2, 3, 4, 5, 6, 7] --> [0, 0, 0, 0, 0, 0, 0, 0]
|
195
|
+
"""
|
196
|
+
X_vertices = self._domain.vertices()
|
197
|
+
try:
|
198
|
+
i = next(iter(self._codomain.vertices()))
|
199
|
+
except StopIteration:
|
200
|
+
if not X_vertices:
|
201
|
+
return {}
|
202
|
+
else:
|
203
|
+
raise TypeError("there are no morphisms from a non-empty simplicial complex to an empty simplicial complex")
|
204
|
+
f = {x: i for x in X_vertices}
|
205
|
+
return SimplicialComplexMorphism(f, self._domain, self._codomain)
|