snappy 3.3__cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_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.
- snappy/CyOpenGL.cpython-310-aarch64-linux-gnu.so +0 -0
- snappy/SnapPy.cpython-310-aarch64-linux-gnu.so +0 -0
- snappy/SnapPy.ico +0 -0
- snappy/SnapPy.png +0 -0
- snappy/SnapPyHP.cpython-310-aarch64-linux-gnu.so +0 -0
- snappy/__init__.py +534 -0
- snappy/app.py +604 -0
- snappy/app_menus.py +372 -0
- snappy/browser.py +998 -0
- snappy/cache.py +25 -0
- snappy/canonical.py +249 -0
- snappy/cusps/__init__.py +280 -0
- snappy/cusps/cusp_area_matrix.py +98 -0
- snappy/cusps/cusp_areas_from_matrix.py +96 -0
- snappy/cusps/maximal_cusp_area_matrix.py +136 -0
- snappy/cusps/short_slopes_for_cusp.py +217 -0
- snappy/cusps/test.py +22 -0
- snappy/cusps/trig_cusp_area_matrix.py +63 -0
- snappy/database.py +454 -0
- snappy/db_utilities.py +79 -0
- snappy/decorated_isosig.py +717 -0
- snappy/dev/__init__.py +0 -0
- snappy/dev/extended_ptolemy/__init__.py +8 -0
- snappy/dev/extended_ptolemy/closed.py +106 -0
- snappy/dev/extended_ptolemy/complexVolumesClosed.py +149 -0
- snappy/dev/extended_ptolemy/direct.py +42 -0
- snappy/dev/extended_ptolemy/extended.py +406 -0
- snappy/dev/extended_ptolemy/giac_helper.py +43 -0
- snappy/dev/extended_ptolemy/giac_rur.py +129 -0
- snappy/dev/extended_ptolemy/gluing.py +46 -0
- snappy/dev/extended_ptolemy/phc_wrapper.py +220 -0
- snappy/dev/extended_ptolemy/printMatrices.py +70 -0
- snappy/dev/vericlosed/__init__.py +1 -0
- snappy/dev/vericlosed/computeApproxHyperbolicStructureNew.py +159 -0
- snappy/dev/vericlosed/computeApproxHyperbolicStructureOrb.py +90 -0
- snappy/dev/vericlosed/computeVerifiedHyperbolicStructure.py +111 -0
- snappy/dev/vericlosed/gimbalLoopFinder.py +130 -0
- snappy/dev/vericlosed/hyperbolicStructure.py +313 -0
- snappy/dev/vericlosed/krawczykCertifiedEdgeLengthsEngine.py +165 -0
- snappy/dev/vericlosed/oneVertexTruncatedComplex.py +122 -0
- snappy/dev/vericlosed/orb/__init__.py +1 -0
- snappy/dev/vericlosed/orb/orb_solution_for_snappea_finite_triangulation_mac +0 -0
- snappy/dev/vericlosed/parseVertexGramMatrixFile.py +47 -0
- snappy/dev/vericlosed/polishApproxHyperbolicStructure.py +61 -0
- snappy/dev/vericlosed/test.py +54 -0
- snappy/dev/vericlosed/truncatedComplex.py +176 -0
- snappy/dev/vericlosed/verificationError.py +58 -0
- snappy/dev/vericlosed/verifyHyperbolicStructureEngine.py +177 -0
- snappy/doc/_images/SnapPy-196.png +0 -0
- snappy/doc/_images/m004_paper_plane_on_systole.jpg +0 -0
- snappy/doc/_images/m125_paper_plane.jpg +0 -0
- snappy/doc/_images/mac.png +0 -0
- snappy/doc/_images/o9_00000_systole_paper_plane.jpg +0 -0
- snappy/doc/_images/o9_00000_systole_paper_plane_closer.jpg +0 -0
- snappy/doc/_images/plink-action.png +0 -0
- snappy/doc/_images/ubuntu.png +0 -0
- snappy/doc/_images/win7.png +0 -0
- snappy/doc/_sources/additional_classes.rst.txt +40 -0
- snappy/doc/_sources/bugs.rst.txt +14 -0
- snappy/doc/_sources/censuses.rst.txt +52 -0
- snappy/doc/_sources/credits.rst.txt +81 -0
- snappy/doc/_sources/development.rst.txt +261 -0
- snappy/doc/_sources/index.rst.txt +215 -0
- snappy/doc/_sources/installing.rst.txt +249 -0
- snappy/doc/_sources/manifold.rst.txt +6 -0
- snappy/doc/_sources/manifoldhp.rst.txt +46 -0
- snappy/doc/_sources/news.rst.txt +425 -0
- snappy/doc/_sources/other.rst.txt +25 -0
- snappy/doc/_sources/platonic_census.rst.txt +20 -0
- snappy/doc/_sources/plink.rst.txt +102 -0
- snappy/doc/_sources/ptolemy.rst.txt +66 -0
- snappy/doc/_sources/ptolemy_classes.rst.txt +42 -0
- snappy/doc/_sources/ptolemy_examples1.rst.txt +298 -0
- snappy/doc/_sources/ptolemy_examples2.rst.txt +363 -0
- snappy/doc/_sources/ptolemy_examples3.rst.txt +301 -0
- snappy/doc/_sources/ptolemy_examples4.rst.txt +61 -0
- snappy/doc/_sources/ptolemy_prelim.rst.txt +105 -0
- snappy/doc/_sources/screenshots.rst.txt +21 -0
- snappy/doc/_sources/snap.rst.txt +87 -0
- snappy/doc/_sources/snappy.rst.txt +28 -0
- snappy/doc/_sources/spherogram.rst.txt +103 -0
- snappy/doc/_sources/todo.rst.txt +47 -0
- snappy/doc/_sources/triangulation.rst.txt +11 -0
- snappy/doc/_sources/tutorial.rst.txt +49 -0
- snappy/doc/_sources/verify.rst.txt +210 -0
- snappy/doc/_sources/verify_internals.rst.txt +79 -0
- snappy/doc/_static/SnapPy-horizontal-128.png +0 -0
- snappy/doc/_static/SnapPy.ico +0 -0
- snappy/doc/_static/_sphinx_javascript_frameworks_compat.js +123 -0
- snappy/doc/_static/basic.css +906 -0
- snappy/doc/_static/css/badge_only.css +1 -0
- snappy/doc/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
- snappy/doc/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
- snappy/doc/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
- snappy/doc/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
- snappy/doc/_static/css/fonts/fontawesome-webfont.eot +0 -0
- snappy/doc/_static/css/fonts/fontawesome-webfont.svg +2671 -0
- snappy/doc/_static/css/fonts/fontawesome-webfont.ttf +0 -0
- snappy/doc/_static/css/fonts/fontawesome-webfont.woff +0 -0
- snappy/doc/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
- snappy/doc/_static/css/fonts/lato-bold-italic.woff +0 -0
- snappy/doc/_static/css/fonts/lato-bold-italic.woff2 +0 -0
- snappy/doc/_static/css/fonts/lato-bold.woff +0 -0
- snappy/doc/_static/css/fonts/lato-bold.woff2 +0 -0
- snappy/doc/_static/css/fonts/lato-normal-italic.woff +0 -0
- snappy/doc/_static/css/fonts/lato-normal-italic.woff2 +0 -0
- snappy/doc/_static/css/fonts/lato-normal.woff +0 -0
- snappy/doc/_static/css/fonts/lato-normal.woff2 +0 -0
- snappy/doc/_static/css/theme.css +4 -0
- snappy/doc/_static/doctools.js +149 -0
- snappy/doc/_static/documentation_options.js +13 -0
- snappy/doc/_static/file.png +0 -0
- snappy/doc/_static/fonts/Lato/lato-bold.eot +0 -0
- snappy/doc/_static/fonts/Lato/lato-bold.ttf +0 -0
- snappy/doc/_static/fonts/Lato/lato-bold.woff +0 -0
- snappy/doc/_static/fonts/Lato/lato-bold.woff2 +0 -0
- snappy/doc/_static/fonts/Lato/lato-bolditalic.eot +0 -0
- snappy/doc/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
- snappy/doc/_static/fonts/Lato/lato-bolditalic.woff +0 -0
- snappy/doc/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
- snappy/doc/_static/fonts/Lato/lato-italic.eot +0 -0
- snappy/doc/_static/fonts/Lato/lato-italic.ttf +0 -0
- snappy/doc/_static/fonts/Lato/lato-italic.woff +0 -0
- snappy/doc/_static/fonts/Lato/lato-italic.woff2 +0 -0
- snappy/doc/_static/fonts/Lato/lato-regular.eot +0 -0
- snappy/doc/_static/fonts/Lato/lato-regular.ttf +0 -0
- snappy/doc/_static/fonts/Lato/lato-regular.woff +0 -0
- snappy/doc/_static/fonts/Lato/lato-regular.woff2 +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
- snappy/doc/_static/jquery.js +2 -0
- snappy/doc/_static/js/badge_only.js +1 -0
- snappy/doc/_static/js/theme.js +1 -0
- snappy/doc/_static/js/versions.js +228 -0
- snappy/doc/_static/language_data.js +192 -0
- snappy/doc/_static/minus.png +0 -0
- snappy/doc/_static/plus.png +0 -0
- snappy/doc/_static/pygments.css +75 -0
- snappy/doc/_static/searchtools.js +635 -0
- snappy/doc/_static/snappy_furo.css +33 -0
- snappy/doc/_static/snappy_sphinx_rtd_theme.css +42 -0
- snappy/doc/_static/sphinx_highlight.js +154 -0
- snappy/doc/additional_classes.html +1500 -0
- snappy/doc/bugs.html +132 -0
- snappy/doc/censuses.html +453 -0
- snappy/doc/credits.html +184 -0
- snappy/doc/development.html +385 -0
- snappy/doc/doc-latest/additional_classes.html +1500 -0
- snappy/doc/doc-latest/bugs.html +132 -0
- snappy/doc/doc-latest/censuses.html +453 -0
- snappy/doc/doc-latest/credits.html +184 -0
- snappy/doc/doc-latest/development.html +385 -0
- snappy/doc/doc-latest/genindex.html +1349 -0
- snappy/doc/doc-latest/index.html +287 -0
- snappy/doc/doc-latest/installing.html +346 -0
- snappy/doc/doc-latest/manifold.html +3632 -0
- snappy/doc/doc-latest/manifoldhp.html +180 -0
- snappy/doc/doc-latest/news.html +438 -0
- snappy/doc/doc-latest/objects.inv +0 -0
- snappy/doc/doc-latest/other.html +160 -0
- snappy/doc/doc-latest/platonic_census.html +376 -0
- snappy/doc/doc-latest/plink.html +210 -0
- snappy/doc/doc-latest/ptolemy.html +253 -0
- snappy/doc/doc-latest/ptolemy_classes.html +1144 -0
- snappy/doc/doc-latest/ptolemy_examples1.html +409 -0
- snappy/doc/doc-latest/ptolemy_examples2.html +471 -0
- snappy/doc/doc-latest/ptolemy_examples3.html +414 -0
- snappy/doc/doc-latest/ptolemy_examples4.html +195 -0
- snappy/doc/doc-latest/ptolemy_prelim.html +248 -0
- snappy/doc/doc-latest/py-modindex.html +165 -0
- snappy/doc/doc-latest/screenshots.html +141 -0
- snappy/doc/doc-latest/search.html +135 -0
- snappy/doc/doc-latest/searchindex.js +1 -0
- snappy/doc/doc-latest/snap.html +202 -0
- snappy/doc/doc-latest/snappy.html +181 -0
- snappy/doc/doc-latest/spherogram.html +1346 -0
- snappy/doc/doc-latest/todo.html +166 -0
- snappy/doc/doc-latest/triangulation.html +1676 -0
- snappy/doc/doc-latest/tutorial.html +159 -0
- snappy/doc/doc-latest/verify.html +330 -0
- snappy/doc/doc-latest/verify_internals.html +1235 -0
- snappy/doc/genindex.html +1349 -0
- snappy/doc/index.html +287 -0
- snappy/doc/installing.html +346 -0
- snappy/doc/manifold.html +3632 -0
- snappy/doc/manifoldhp.html +180 -0
- snappy/doc/news.html +438 -0
- snappy/doc/objects.inv +0 -0
- snappy/doc/other.html +160 -0
- snappy/doc/platonic_census.html +376 -0
- snappy/doc/plink.html +210 -0
- snappy/doc/ptolemy.html +253 -0
- snappy/doc/ptolemy_classes.html +1144 -0
- snappy/doc/ptolemy_examples1.html +409 -0
- snappy/doc/ptolemy_examples2.html +471 -0
- snappy/doc/ptolemy_examples3.html +414 -0
- snappy/doc/ptolemy_examples4.html +195 -0
- snappy/doc/ptolemy_prelim.html +248 -0
- snappy/doc/py-modindex.html +165 -0
- snappy/doc/screenshots.html +141 -0
- snappy/doc/search.html +135 -0
- snappy/doc/searchindex.js +1 -0
- snappy/doc/snap.html +202 -0
- snappy/doc/snappy.html +181 -0
- snappy/doc/spherogram.html +1346 -0
- snappy/doc/todo.html +166 -0
- snappy/doc/triangulation.html +1676 -0
- snappy/doc/tutorial.html +159 -0
- snappy/doc/verify.html +330 -0
- snappy/doc/verify_internals.html +1235 -0
- snappy/drilling/__init__.py +456 -0
- snappy/drilling/barycentric.py +103 -0
- snappy/drilling/constants.py +5 -0
- snappy/drilling/crush.py +270 -0
- snappy/drilling/cusps.py +125 -0
- snappy/drilling/debug.py +242 -0
- snappy/drilling/epsilons.py +6 -0
- snappy/drilling/exceptions.py +55 -0
- snappy/drilling/moves.py +620 -0
- snappy/drilling/peripheral_curves.py +210 -0
- snappy/drilling/perturb.py +188 -0
- snappy/drilling/shorten.py +36 -0
- snappy/drilling/subdivide.py +274 -0
- snappy/drilling/test.py +23 -0
- snappy/drilling/test_cases.py +132 -0
- snappy/drilling/tracing.py +351 -0
- snappy/exceptions.py +26 -0
- snappy/export_stl.py +120 -0
- snappy/exterior_to_link/__init__.py +2 -0
- snappy/exterior_to_link/barycentric_geometry.py +463 -0
- snappy/exterior_to_link/exceptions.py +6 -0
- snappy/exterior_to_link/geodesic_map.json +14408 -0
- snappy/exterior_to_link/hyp_utils.py +112 -0
- snappy/exterior_to_link/link_projection.py +323 -0
- snappy/exterior_to_link/main.py +198 -0
- snappy/exterior_to_link/mcomplex_with_expansion.py +261 -0
- snappy/exterior_to_link/mcomplex_with_link.py +687 -0
- snappy/exterior_to_link/mcomplex_with_memory.py +162 -0
- snappy/exterior_to_link/pl_utils.py +491 -0
- snappy/exterior_to_link/put_in_S3.py +156 -0
- snappy/exterior_to_link/rational_linear_algebra.py +130 -0
- snappy/exterior_to_link/rational_linear_algebra_wrapped.py +135 -0
- snappy/exterior_to_link/simplify_to_base_tri.py +114 -0
- snappy/exterior_to_link/stored_moves.py +475 -0
- snappy/exterior_to_link/test.py +31 -0
- snappy/filedialog.py +28 -0
- snappy/geometric_structure/__init__.py +212 -0
- snappy/geometric_structure/cusp_neighborhood/__init__.py +3 -0
- snappy/geometric_structure/cusp_neighborhood/complex_cusp_cross_section.py +691 -0
- snappy/geometric_structure/cusp_neighborhood/cusp_cross_section_base.py +480 -0
- snappy/geometric_structure/cusp_neighborhood/exceptions.py +41 -0
- snappy/geometric_structure/cusp_neighborhood/real_cusp_cross_section.py +294 -0
- snappy/geometric_structure/cusp_neighborhood/tiles_for_cusp_neighborhood.py +156 -0
- snappy/geometric_structure/cusp_neighborhood/vertices.py +35 -0
- snappy/geometric_structure/geodesic/__init__.py +0 -0
- snappy/geometric_structure/geodesic/add_core_curves.py +152 -0
- snappy/geometric_structure/geodesic/avoid_core_curves.py +369 -0
- snappy/geometric_structure/geodesic/canonical_representatives.py +52 -0
- snappy/geometric_structure/geodesic/check_away_from_core_curve.py +60 -0
- snappy/geometric_structure/geodesic/constants.py +6 -0
- snappy/geometric_structure/geodesic/exceptions.py +22 -0
- snappy/geometric_structure/geodesic/fixed_points.py +106 -0
- snappy/geometric_structure/geodesic/geodesic_start_point_info.py +435 -0
- snappy/geometric_structure/geodesic/graph_trace_helper.py +67 -0
- snappy/geometric_structure/geodesic/line.py +30 -0
- snappy/geometric_structure/geodesic/multiplicity.py +127 -0
- snappy/geometric_structure/geodesic/tiles_for_geodesic.py +128 -0
- snappy/geometric_structure/test.py +22 -0
- snappy/gui.py +121 -0
- snappy/horoviewer.py +443 -0
- snappy/hyperboloid/__init__.py +212 -0
- snappy/hyperboloid/distances.py +259 -0
- snappy/hyperboloid/horoball.py +19 -0
- snappy/hyperboloid/line.py +35 -0
- snappy/hyperboloid/point.py +9 -0
- snappy/hyperboloid/triangle.py +29 -0
- snappy/info_icon.gif +0 -0
- snappy/infowindow.py +65 -0
- snappy/isometry_signature.py +389 -0
- snappy/len_spec/__init__.py +609 -0
- snappy/len_spec/geodesic_info.py +129 -0
- snappy/len_spec/geodesic_key_info_dict.py +116 -0
- snappy/len_spec/geodesic_piece.py +146 -0
- snappy/len_spec/geometric_structure.py +182 -0
- snappy/len_spec/geometry.py +136 -0
- snappy/len_spec/length_spectrum_geodesic_info.py +185 -0
- snappy/len_spec/spine.py +128 -0
- snappy/len_spec/test.py +24 -0
- snappy/len_spec/test_cases.py +69 -0
- snappy/len_spec/tile.py +276 -0
- snappy/len_spec/word.py +86 -0
- snappy/manifolds/HTWKnots/alternating.gz +0 -0
- snappy/manifolds/HTWKnots/nonalternating.gz +0 -0
- snappy/manifolds/__init__.py +3 -0
- snappy/margulis/__init__.py +332 -0
- snappy/margulis/cusp_neighborhood_neighborhood.py +66 -0
- snappy/margulis/geodesic_neighborhood.py +152 -0
- snappy/margulis/margulis_info.py +21 -0
- snappy/margulis/mu_from_neighborhood_pair.py +175 -0
- snappy/margulis/neighborhood.py +29 -0
- snappy/margulis/test.py +22 -0
- snappy/math_basics.py +187 -0
- snappy/matrix.py +525 -0
- snappy/number.py +657 -0
- snappy/numeric_output_checker.py +345 -0
- snappy/pari.py +41 -0
- snappy/phone_home.py +57 -0
- snappy/polyviewer.py +259 -0
- snappy/ptolemy/__init__.py +17 -0
- snappy/ptolemy/component.py +103 -0
- snappy/ptolemy/coordinates.py +2290 -0
- snappy/ptolemy/fieldExtensions.py +153 -0
- snappy/ptolemy/findLoops.py +473 -0
- snappy/ptolemy/geometricRep.py +59 -0
- snappy/ptolemy/homology.py +165 -0
- snappy/ptolemy/magma/default.magma_template +229 -0
- snappy/ptolemy/magma/radicalsOfPrimaryDecomposition.magma_template +79 -0
- snappy/ptolemy/manifoldMethods.py +395 -0
- snappy/ptolemy/matrix.py +350 -0
- snappy/ptolemy/numericalSolutionsToGroebnerBasis.py +113 -0
- snappy/ptolemy/polynomial.py +856 -0
- snappy/ptolemy/processComponents.py +173 -0
- snappy/ptolemy/processFileBase.py +247 -0
- snappy/ptolemy/processFileDispatch.py +46 -0
- snappy/ptolemy/processMagmaFile.py +392 -0
- snappy/ptolemy/processRurFile.py +150 -0
- snappy/ptolemy/ptolemyGeneralizedObstructionClass.py +102 -0
- snappy/ptolemy/ptolemyObstructionClass.py +64 -0
- snappy/ptolemy/ptolemyVariety.py +995 -0
- snappy/ptolemy/ptolemyVarietyPrimeIdealGroebnerBasis.py +140 -0
- snappy/ptolemy/reginaWrapper.py +698 -0
- snappy/ptolemy/regina_testing_files/DT_mcbbiceaibjklmdfgh__sl2_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/regina_testing_files/DT_mcbbiceaibjklmdfgh__sl2_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/regina_testing_files/DT_mcbbiceaibjklmdfgh__sl2_c2.magma_out.bz2 +0 -0
- snappy/ptolemy/regina_testing_files/DT_mcbbiceaibjklmdfgh__sl2_c3.magma_out.bz2 +0 -0
- snappy/ptolemy/regina_testing_files/DT_mcbbiceaibjklmdfgh__sl2_c4.magma_out.bz2 +0 -0
- snappy/ptolemy/regina_testing_files/DT_mcbbiceaibjklmdfgh__sl2_c5.magma_out.bz2 +0 -0
- snappy/ptolemy/regina_testing_files/DT_mcbbiceaibjklmdfgh__sl2_c6.magma_out.bz2 +0 -0
- snappy/ptolemy/regina_testing_files/DT_mcbbiceaibjklmdfgh__sl2_c7.magma_out.bz2 +0 -0
- snappy/ptolemy/regina_testing_files_generalized/m003__sl3_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/regina_testing_files_generalized/m003__sl3_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/regina_testing_files_generalized/m015__sl2_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/regina_testing_files_generalized/m015__sl2_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/regina_testing_files_generalized/m015__sl3_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/regina_testing_files_generalized/m015__sl3_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/rur.py +545 -0
- snappy/ptolemy/solutionsToPrimeIdealGroebnerBasis.py +277 -0
- snappy/ptolemy/test.py +1126 -0
- snappy/ptolemy/testing_files/3_1__sl2_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/3_1__sl2_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/4_1__sl2_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/4_1__sl2_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/4_1__sl3_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/4_1__sl4_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/4_1__sl4_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/5_2__sl2_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/5_2__sl2_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/DT_mcbbiceaibjklmdfgh__sl2_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/DT_mcbbiceaibjklmdfgh__sl2_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/DT_mcbbiceaibjklmdfgh__sl2_c2.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/DT_mcbbiceaibjklmdfgh__sl2_c3.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/DT_mcbbiceaibjklmdfgh__sl2_c4.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/DT_mcbbiceaibjklmdfgh__sl2_c5.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/DT_mcbbiceaibjklmdfgh__sl2_c6.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/DT_mcbbiceaibjklmdfgh__sl2_c7.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/data/pgl2/OrientableCuspedCensus/03_tetrahedra/m019__sl2_c0.magma_out +95 -0
- snappy/ptolemy/testing_files/data/pgl2/OrientableCuspedCensus/03_tetrahedra/m019__sl2_c1.magma_out +95 -0
- snappy/ptolemy/testing_files/m015__sl3_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/m135__sl2_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/m135__sl2_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/m135__sl2_c2.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/m135__sl2_c3.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/m135__sl2_c4.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/m135__sl2_c5.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/m135__sl2_c6.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/m135__sl2_c7.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/s000__sl2_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/s000__sl2_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/t00000__sl2_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/t00000__sl2_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/v0000__sl2_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/v0000__sl2_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/v0000__sl2_c2.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/v0000__sl2_c3.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files_generalized/m003__sl2_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files_generalized/m003__sl2_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files_generalized/m003__sl3_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files_generalized/m003__sl3_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files_generalized/m004__sl2_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files_generalized/m004__sl2_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files_generalized/m015__sl2_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files_generalized/m015__sl3_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files_rur/m052__sl3_c0.rur.bz2 +0 -0
- snappy/ptolemy/utilities.py +236 -0
- snappy/raytracing/__init__.py +64 -0
- snappy/raytracing/additional_horospheres.py +64 -0
- snappy/raytracing/additional_len_spec_choices.py +63 -0
- snappy/raytracing/cohomology_fractal.py +197 -0
- snappy/raytracing/eyeball.py +124 -0
- snappy/raytracing/finite_raytracing_data.py +237 -0
- snappy/raytracing/finite_viewer.py +590 -0
- snappy/raytracing/geodesic_tube_info.py +174 -0
- snappy/raytracing/geodesics.py +246 -0
- snappy/raytracing/geodesics_window.py +258 -0
- snappy/raytracing/gui_utilities.py +293 -0
- snappy/raytracing/hyperboloid_navigation.py +556 -0
- snappy/raytracing/hyperboloid_utilities.py +234 -0
- snappy/raytracing/ideal_raytracing_data.py +592 -0
- snappy/raytracing/inside_viewer.py +974 -0
- snappy/raytracing/pack.py +22 -0
- snappy/raytracing/raytracing_data.py +126 -0
- snappy/raytracing/raytracing_view.py +454 -0
- snappy/raytracing/shaders/Eye.png +0 -0
- snappy/raytracing/shaders/NonGeometric.png +0 -0
- snappy/raytracing/shaders/__init__.py +101 -0
- snappy/raytracing/shaders/fragment.glsl +1744 -0
- snappy/raytracing/test.py +29 -0
- snappy/raytracing/tooltip.py +146 -0
- snappy/raytracing/upper_halfspace_utilities.py +98 -0
- snappy/raytracing/view_scale_controller.py +98 -0
- snappy/raytracing/zoom_slider/__init__.py +263 -0
- snappy/raytracing/zoom_slider/inward.png +0 -0
- snappy/raytracing/zoom_slider/inward18.png +0 -0
- snappy/raytracing/zoom_slider/outward.png +0 -0
- snappy/raytracing/zoom_slider/outward18.png +0 -0
- snappy/raytracing/zoom_slider/test.py +20 -0
- snappy/sage_helper.py +119 -0
- snappy/settings.py +407 -0
- snappy/shell.py +53 -0
- snappy/snap/__init__.py +117 -0
- snappy/snap/character_varieties.py +375 -0
- snappy/snap/find_field.py +372 -0
- snappy/snap/fox_milnor.py +271 -0
- snappy/snap/fundamental_polyhedron.py +569 -0
- snappy/snap/generators.py +39 -0
- snappy/snap/interval_reps.py +81 -0
- snappy/snap/kernel_structures.py +128 -0
- snappy/snap/mcomplex_base.py +18 -0
- snappy/snap/nsagetools.py +716 -0
- snappy/snap/peripheral/__init__.py +1 -0
- snappy/snap/peripheral/dual_cellulation.py +219 -0
- snappy/snap/peripheral/link.py +127 -0
- snappy/snap/peripheral/peripheral.py +159 -0
- snappy/snap/peripheral/surface.py +522 -0
- snappy/snap/peripheral/test.py +35 -0
- snappy/snap/polished_reps.py +335 -0
- snappy/snap/shapes.py +152 -0
- snappy/snap/slice_obs_HKL/__init__.py +194 -0
- snappy/snap/slice_obs_HKL/basics.py +236 -0
- snappy/snap/slice_obs_HKL/direct.py +217 -0
- snappy/snap/slice_obs_HKL/poly_norm.py +212 -0
- snappy/snap/slice_obs_HKL/rep_theory.py +424 -0
- snappy/snap/t3mlite/__init__.py +2 -0
- snappy/snap/t3mlite/arrow.py +243 -0
- snappy/snap/t3mlite/corner.py +22 -0
- snappy/snap/t3mlite/edge.py +172 -0
- snappy/snap/t3mlite/face.py +37 -0
- snappy/snap/t3mlite/files.py +211 -0
- snappy/snap/t3mlite/homology.py +53 -0
- snappy/snap/t3mlite/linalg.py +419 -0
- snappy/snap/t3mlite/mcomplex.py +1499 -0
- snappy/snap/t3mlite/perm4.py +320 -0
- snappy/snap/t3mlite/setup.py +12 -0
- snappy/snap/t3mlite/simplex.py +199 -0
- snappy/snap/t3mlite/spun.py +297 -0
- snappy/snap/t3mlite/surface.py +519 -0
- snappy/snap/t3mlite/test.py +20 -0
- snappy/snap/t3mlite/test_vs_regina.py +86 -0
- snappy/snap/t3mlite/tetrahedron.py +109 -0
- snappy/snap/t3mlite/vertex.py +42 -0
- snappy/snap/test.py +139 -0
- snappy/snap/utilities.py +288 -0
- snappy/test.py +213 -0
- snappy/test_cases.py +263 -0
- snappy/testing.py +131 -0
- snappy/tiling/__init__.py +2 -0
- snappy/tiling/dict_based_set.py +79 -0
- snappy/tiling/floor.py +49 -0
- snappy/tiling/hyperboloid_dict.py +54 -0
- snappy/tiling/iter_utils.py +78 -0
- snappy/tiling/lifted_tetrahedron.py +22 -0
- snappy/tiling/lifted_tetrahedron_set.py +54 -0
- snappy/tiling/quotient_dict.py +70 -0
- snappy/tiling/real_hash_dict.py +164 -0
- snappy/tiling/test.py +23 -0
- snappy/tiling/tile.py +224 -0
- snappy/tiling/triangle.py +33 -0
- snappy/tkterminal.py +920 -0
- snappy/twister/__init__.py +20 -0
- snappy/twister/main.py +646 -0
- snappy/twister/surfaces/S_0_1 +3 -0
- snappy/twister/surfaces/S_0_2 +3 -0
- snappy/twister/surfaces/S_0_4 +7 -0
- snappy/twister/surfaces/S_0_4_Lantern +8 -0
- snappy/twister/surfaces/S_1 +3 -0
- snappy/twister/surfaces/S_1_1 +4 -0
- snappy/twister/surfaces/S_1_2 +5 -0
- snappy/twister/surfaces/S_1_2_5 +6 -0
- snappy/twister/surfaces/S_2 +6 -0
- snappy/twister/surfaces/S_2_1 +8 -0
- snappy/twister/surfaces/S_2_heeg +10 -0
- snappy/twister/surfaces/S_3 +8 -0
- snappy/twister/surfaces/S_3_1 +10 -0
- snappy/twister/surfaces/S_4_1 +12 -0
- snappy/twister/surfaces/S_5_1 +14 -0
- snappy/twister/surfaces/heeg_fig8 +9 -0
- snappy/twister/twister_core.cpython-310-aarch64-linux-gnu.so +0 -0
- snappy/upper_halfspace/__init__.py +146 -0
- snappy/upper_halfspace/ideal_point.py +29 -0
- snappy/verify/__init__.py +13 -0
- snappy/verify/canonical.py +542 -0
- snappy/verify/complex_volume/__init__.py +18 -0
- snappy/verify/complex_volume/adjust_torsion.py +86 -0
- snappy/verify/complex_volume/closed.py +168 -0
- snappy/verify/complex_volume/compute_ptolemys.py +90 -0
- snappy/verify/complex_volume/cusped.py +56 -0
- snappy/verify/complex_volume/extended_bloch.py +201 -0
- snappy/verify/cusp_translations.py +85 -0
- snappy/verify/edge_equations.py +80 -0
- snappy/verify/exceptions.py +254 -0
- snappy/verify/hyperbolicity.py +224 -0
- snappy/verify/interval_newton_shapes_engine.py +523 -0
- snappy/verify/interval_tree.py +400 -0
- snappy/verify/krawczyk_shapes_engine.py +518 -0
- snappy/verify/real_algebra.py +286 -0
- snappy/verify/shapes.py +25 -0
- snappy/verify/square_extensions.py +1005 -0
- snappy/verify/test.py +72 -0
- snappy/verify/volume.py +128 -0
- snappy/version.py +2 -0
- snappy-3.3.dist-info/METADATA +58 -0
- snappy-3.3.dist-info/RECORD +541 -0
- snappy-3.3.dist-info/WHEEL +6 -0
- snappy-3.3.dist-info/entry_points.txt +2 -0
- snappy-3.3.dist-info/top_level.txt +28 -0
|
@@ -0,0 +1,1500 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
<!DOCTYPE html>
|
|
4
|
+
<html class="writer-html5" lang="en" data-content_root="./">
|
|
5
|
+
<head>
|
|
6
|
+
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
7
|
+
|
|
8
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
9
|
+
<title>Additional Classes — SnapPy 3.3 documentation</title>
|
|
10
|
+
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
|
|
11
|
+
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=e59714d7" />
|
|
12
|
+
<link rel="stylesheet" type="text/css" href="_static/snappy_sphinx_rtd_theme.css?v=1b8ec2a8" />
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
<link rel="shortcut icon" href="_static/SnapPy.ico"/>
|
|
16
|
+
<script src="_static/jquery.js?v=5d32c60e"></script>
|
|
17
|
+
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
18
|
+
<script src="_static/documentation_options.js?v=26f62d79"></script>
|
|
19
|
+
<script src="_static/doctools.js?v=9bcbadda"></script>
|
|
20
|
+
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
21
|
+
<script async="async" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
|
22
|
+
<script src="_static/js/theme.js"></script>
|
|
23
|
+
<link rel="index" title="Index" href="genindex.html" />
|
|
24
|
+
<link rel="search" title="Search" href="search.html" />
|
|
25
|
+
<link rel="next" title="Census manifolds" href="censuses.html" />
|
|
26
|
+
<link rel="prev" title="Triangulation" href="triangulation.html" />
|
|
27
|
+
</head>
|
|
28
|
+
|
|
29
|
+
<body class="wy-body-for-nav">
|
|
30
|
+
<div class="wy-grid-for-nav">
|
|
31
|
+
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
32
|
+
<div class="wy-side-scroll">
|
|
33
|
+
<div class="wy-side-nav-search" >
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
<a href="index.html" class="icon icon-home">
|
|
38
|
+
SnapPy
|
|
39
|
+
<img src="_static/SnapPy-horizontal-128.png" class="logo" alt="Logo"/>
|
|
40
|
+
</a>
|
|
41
|
+
<div role="search">
|
|
42
|
+
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
|
43
|
+
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
|
44
|
+
<input type="hidden" name="check_keywords" value="yes" />
|
|
45
|
+
<input type="hidden" name="area" value="default" />
|
|
46
|
+
</form>
|
|
47
|
+
</div>
|
|
48
|
+
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
|
49
|
+
<ul class="current">
|
|
50
|
+
<li class="toctree-l1"><a class="reference internal" href="installing.html">Installing SnapPy</a></li>
|
|
51
|
+
<li class="toctree-l1"><a class="reference internal" href="screenshots.html">Screenshots: SnapPy in action</a></li>
|
|
52
|
+
<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorial</a></li>
|
|
53
|
+
<li class="toctree-l1 current"><a class="reference internal" href="snappy.html">The snappy module and its classes</a><ul class="current">
|
|
54
|
+
<li class="toctree-l2"><a class="reference internal" href="manifold.html">Manifold: the main class</a></li>
|
|
55
|
+
<li class="toctree-l2"><a class="reference internal" href="manifoldhp.html">ManifoldHP: High-precision variant</a></li>
|
|
56
|
+
<li class="toctree-l2"><a class="reference internal" href="triangulation.html">Triangulation</a></li>
|
|
57
|
+
<li class="toctree-l2 current"><a class="current reference internal" href="#">Additional Classes</a><ul>
|
|
58
|
+
<li class="toctree-l3"><a class="reference internal" href="#abeliangroup">AbelianGroup</a><ul>
|
|
59
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.AbelianGroup"><code class="docutils literal notranslate"><span class="pre">AbelianGroup</span></code></a><ul>
|
|
60
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.AbelianGroup.betti_number"><code class="docutils literal notranslate"><span class="pre">AbelianGroup.betti_number()</span></code></a></li>
|
|
61
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.AbelianGroup.elementary_divisors"><code class="docutils literal notranslate"><span class="pre">AbelianGroup.elementary_divisors()</span></code></a></li>
|
|
62
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.AbelianGroup.order"><code class="docutils literal notranslate"><span class="pre">AbelianGroup.order()</span></code></a></li>
|
|
63
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.AbelianGroup.rank"><code class="docutils literal notranslate"><span class="pre">AbelianGroup.rank()</span></code></a></li>
|
|
64
|
+
</ul>
|
|
65
|
+
</li>
|
|
66
|
+
</ul>
|
|
67
|
+
</li>
|
|
68
|
+
<li class="toctree-l3"><a class="reference internal" href="#fundamentalgroup">FundamentalGroup</a><ul>
|
|
69
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.HolonomyGroup"><code class="docutils literal notranslate"><span class="pre">HolonomyGroup</span></code></a><ul>
|
|
70
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.HolonomyGroup.O31"><code class="docutils literal notranslate"><span class="pre">HolonomyGroup.O31()</span></code></a></li>
|
|
71
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.HolonomyGroup.SL2C"><code class="docutils literal notranslate"><span class="pre">HolonomyGroup.SL2C()</span></code></a></li>
|
|
72
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.HolonomyGroup.category"><code class="docutils literal notranslate"><span class="pre">HolonomyGroup.category()</span></code></a></li>
|
|
73
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.HolonomyGroup.character_variety_vars_and_polys"><code class="docutils literal notranslate"><span class="pre">HolonomyGroup.character_variety_vars_and_polys()</span></code></a></li>
|
|
74
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.HolonomyGroup.complex_length"><code class="docutils literal notranslate"><span class="pre">HolonomyGroup.complex_length()</span></code></a></li>
|
|
75
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.HolonomyGroup.dump"><code class="docutils literal notranslate"><span class="pre">HolonomyGroup.dump()</span></code></a></li>
|
|
76
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.HolonomyGroup.dumps"><code class="docutils literal notranslate"><span class="pre">HolonomyGroup.dumps()</span></code></a></li>
|
|
77
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.HolonomyGroup.gap_string"><code class="docutils literal notranslate"><span class="pre">HolonomyGroup.gap_string()</span></code></a></li>
|
|
78
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.HolonomyGroup.generators"><code class="docutils literal notranslate"><span class="pre">HolonomyGroup.generators()</span></code></a></li>
|
|
79
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.HolonomyGroup.generators_in_originals"><code class="docutils literal notranslate"><span class="pre">HolonomyGroup.generators_in_originals()</span></code></a></li>
|
|
80
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.HolonomyGroup.get_custom_name"><code class="docutils literal notranslate"><span class="pre">HolonomyGroup.get_custom_name()</span></code></a></li>
|
|
81
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.HolonomyGroup.longitude"><code class="docutils literal notranslate"><span class="pre">HolonomyGroup.longitude()</span></code></a></li>
|
|
82
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.HolonomyGroup.magma_string"><code class="docutils literal notranslate"><span class="pre">HolonomyGroup.magma_string()</span></code></a></li>
|
|
83
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.HolonomyGroup.meridian"><code class="docutils literal notranslate"><span class="pre">HolonomyGroup.meridian()</span></code></a></li>
|
|
84
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.HolonomyGroup.num_generators"><code class="docutils literal notranslate"><span class="pre">HolonomyGroup.num_generators()</span></code></a></li>
|
|
85
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.HolonomyGroup.num_original_generators"><code class="docutils literal notranslate"><span class="pre">HolonomyGroup.num_original_generators()</span></code></a></li>
|
|
86
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.HolonomyGroup.num_relators"><code class="docutils literal notranslate"><span class="pre">HolonomyGroup.num_relators()</span></code></a></li>
|
|
87
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.HolonomyGroup.original_generators"><code class="docutils literal notranslate"><span class="pre">HolonomyGroup.original_generators()</span></code></a></li>
|
|
88
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.HolonomyGroup.parent"><code class="docutils literal notranslate"><span class="pre">HolonomyGroup.parent()</span></code></a></li>
|
|
89
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.HolonomyGroup.peripheral_curves"><code class="docutils literal notranslate"><span class="pre">HolonomyGroup.peripheral_curves()</span></code></a></li>
|
|
90
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.HolonomyGroup.relators"><code class="docutils literal notranslate"><span class="pre">HolonomyGroup.relators()</span></code></a></li>
|
|
91
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.HolonomyGroup.rename"><code class="docutils literal notranslate"><span class="pre">HolonomyGroup.rename()</span></code></a></li>
|
|
92
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.HolonomyGroup.reset_name"><code class="docutils literal notranslate"><span class="pre">HolonomyGroup.reset_name()</span></code></a></li>
|
|
93
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.HolonomyGroup.sage"><code class="docutils literal notranslate"><span class="pre">HolonomyGroup.sage()</span></code></a></li>
|
|
94
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.HolonomyGroup.save"><code class="docutils literal notranslate"><span class="pre">HolonomyGroup.save()</span></code></a></li>
|
|
95
|
+
</ul>
|
|
96
|
+
</li>
|
|
97
|
+
</ul>
|
|
98
|
+
</li>
|
|
99
|
+
<li class="toctree-l3"><a class="reference internal" href="#symmetrygroup">SymmetryGroup</a><ul>
|
|
100
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.SymmetryGroup"><code class="docutils literal notranslate"><span class="pre">SymmetryGroup</span></code></a><ul>
|
|
101
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.SymmetryGroup.abelian_description"><code class="docutils literal notranslate"><span class="pre">SymmetryGroup.abelian_description()</span></code></a></li>
|
|
102
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.SymmetryGroup.abelianization"><code class="docutils literal notranslate"><span class="pre">SymmetryGroup.abelianization()</span></code></a></li>
|
|
103
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.SymmetryGroup.center"><code class="docutils literal notranslate"><span class="pre">SymmetryGroup.center()</span></code></a></li>
|
|
104
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.SymmetryGroup.commutator_subgroup"><code class="docutils literal notranslate"><span class="pre">SymmetryGroup.commutator_subgroup()</span></code></a></li>
|
|
105
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.SymmetryGroup.direct_product_description"><code class="docutils literal notranslate"><span class="pre">SymmetryGroup.direct_product_description()</span></code></a></li>
|
|
106
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.SymmetryGroup.is_S5"><code class="docutils literal notranslate"><span class="pre">SymmetryGroup.is_S5()</span></code></a></li>
|
|
107
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.SymmetryGroup.is_abelian"><code class="docutils literal notranslate"><span class="pre">SymmetryGroup.is_abelian()</span></code></a></li>
|
|
108
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.SymmetryGroup.is_amphicheiral"><code class="docutils literal notranslate"><span class="pre">SymmetryGroup.is_amphicheiral()</span></code></a></li>
|
|
109
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.SymmetryGroup.is_dihedral"><code class="docutils literal notranslate"><span class="pre">SymmetryGroup.is_dihedral()</span></code></a></li>
|
|
110
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.SymmetryGroup.is_direct_product"><code class="docutils literal notranslate"><span class="pre">SymmetryGroup.is_direct_product()</span></code></a></li>
|
|
111
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.SymmetryGroup.is_full_group"><code class="docutils literal notranslate"><span class="pre">SymmetryGroup.is_full_group()</span></code></a></li>
|
|
112
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.SymmetryGroup.is_invertible_knot"><code class="docutils literal notranslate"><span class="pre">SymmetryGroup.is_invertible_knot()</span></code></a></li>
|
|
113
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.SymmetryGroup.is_polyhedral"><code class="docutils literal notranslate"><span class="pre">SymmetryGroup.is_polyhedral()</span></code></a></li>
|
|
114
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.SymmetryGroup.isometries"><code class="docutils literal notranslate"><span class="pre">SymmetryGroup.isometries()</span></code></a></li>
|
|
115
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.SymmetryGroup.multiply_elements"><code class="docutils literal notranslate"><span class="pre">SymmetryGroup.multiply_elements()</span></code></a></li>
|
|
116
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.SymmetryGroup.order"><code class="docutils literal notranslate"><span class="pre">SymmetryGroup.order()</span></code></a></li>
|
|
117
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.SymmetryGroup.polyhedral_description"><code class="docutils literal notranslate"><span class="pre">SymmetryGroup.polyhedral_description()</span></code></a></li>
|
|
118
|
+
</ul>
|
|
119
|
+
</li>
|
|
120
|
+
</ul>
|
|
121
|
+
</li>
|
|
122
|
+
<li class="toctree-l3"><a class="reference internal" href="#dirichletdomain">DirichletDomain</a><ul>
|
|
123
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.DirichletDomain"><code class="docutils literal notranslate"><span class="pre">DirichletDomain</span></code></a><ul>
|
|
124
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.DirichletDomain.edge_list"><code class="docutils literal notranslate"><span class="pre">DirichletDomain.edge_list()</span></code></a></li>
|
|
125
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.DirichletDomain.export_stl"><code class="docutils literal notranslate"><span class="pre">DirichletDomain.export_stl()</span></code></a></li>
|
|
126
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.DirichletDomain.face_list"><code class="docutils literal notranslate"><span class="pre">DirichletDomain.face_list()</span></code></a></li>
|
|
127
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.DirichletDomain.in_radius"><code class="docutils literal notranslate"><span class="pre">DirichletDomain.in_radius()</span></code></a></li>
|
|
128
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.DirichletDomain.length_spectrum_dicts"><code class="docutils literal notranslate"><span class="pre">DirichletDomain.length_spectrum_dicts()</span></code></a></li>
|
|
129
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.DirichletDomain.manifold"><code class="docutils literal notranslate"><span class="pre">DirichletDomain.manifold()</span></code></a></li>
|
|
130
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.DirichletDomain.num_edges"><code class="docutils literal notranslate"><span class="pre">DirichletDomain.num_edges()</span></code></a></li>
|
|
131
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.DirichletDomain.num_faces"><code class="docutils literal notranslate"><span class="pre">DirichletDomain.num_faces()</span></code></a></li>
|
|
132
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.DirichletDomain.num_finite_vertices"><code class="docutils literal notranslate"><span class="pre">DirichletDomain.num_finite_vertices()</span></code></a></li>
|
|
133
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.DirichletDomain.num_ideal_vertices"><code class="docutils literal notranslate"><span class="pre">DirichletDomain.num_ideal_vertices()</span></code></a></li>
|
|
134
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.DirichletDomain.num_vertices"><code class="docutils literal notranslate"><span class="pre">DirichletDomain.num_vertices()</span></code></a></li>
|
|
135
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.DirichletDomain.out_radius"><code class="docutils literal notranslate"><span class="pre">DirichletDomain.out_radius()</span></code></a></li>
|
|
136
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.DirichletDomain.pairing_matrices"><code class="docutils literal notranslate"><span class="pre">DirichletDomain.pairing_matrices()</span></code></a></li>
|
|
137
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.DirichletDomain.pairing_words"><code class="docutils literal notranslate"><span class="pre">DirichletDomain.pairing_words()</span></code></a></li>
|
|
138
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.DirichletDomain.save"><code class="docutils literal notranslate"><span class="pre">DirichletDomain.save()</span></code></a></li>
|
|
139
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.DirichletDomain.spine_radius"><code class="docutils literal notranslate"><span class="pre">DirichletDomain.spine_radius()</span></code></a></li>
|
|
140
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.DirichletDomain.triangulation"><code class="docutils literal notranslate"><span class="pre">DirichletDomain.triangulation()</span></code></a></li>
|
|
141
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.DirichletDomain.vertex_list"><code class="docutils literal notranslate"><span class="pre">DirichletDomain.vertex_list()</span></code></a></li>
|
|
142
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.DirichletDomain.volume"><code class="docutils literal notranslate"><span class="pre">DirichletDomain.volume()</span></code></a></li>
|
|
143
|
+
</ul>
|
|
144
|
+
</li>
|
|
145
|
+
</ul>
|
|
146
|
+
</li>
|
|
147
|
+
<li class="toctree-l3"><a class="reference internal" href="#cuspneighborhood">CuspNeighborhood</a><ul>
|
|
148
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.CuspNeighborhood"><code class="docutils literal notranslate"><span class="pre">CuspNeighborhood</span></code></a><ul>
|
|
149
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.CuspNeighborhood.Ford_domain"><code class="docutils literal notranslate"><span class="pre">CuspNeighborhood.Ford_domain()</span></code></a></li>
|
|
150
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.CuspNeighborhood.all_translations"><code class="docutils literal notranslate"><span class="pre">CuspNeighborhood.all_translations()</span></code></a></li>
|
|
151
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.CuspNeighborhood.check_index"><code class="docutils literal notranslate"><span class="pre">CuspNeighborhood.check_index()</span></code></a></li>
|
|
152
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.CuspNeighborhood.get_displacement"><code class="docutils literal notranslate"><span class="pre">CuspNeighborhood.get_displacement()</span></code></a></li>
|
|
153
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.CuspNeighborhood.get_tie"><code class="docutils literal notranslate"><span class="pre">CuspNeighborhood.get_tie()</span></code></a></li>
|
|
154
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.CuspNeighborhood.horoballs"><code class="docutils literal notranslate"><span class="pre">CuspNeighborhood.horoballs()</span></code></a></li>
|
|
155
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.CuspNeighborhood.manifold"><code class="docutils literal notranslate"><span class="pre">CuspNeighborhood.manifold()</span></code></a></li>
|
|
156
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.CuspNeighborhood.max_reach"><code class="docutils literal notranslate"><span class="pre">CuspNeighborhood.max_reach()</span></code></a></li>
|
|
157
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.CuspNeighborhood.num_cusps"><code class="docutils literal notranslate"><span class="pre">CuspNeighborhood.num_cusps()</span></code></a></li>
|
|
158
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.CuspNeighborhood.original_index"><code class="docutils literal notranslate"><span class="pre">CuspNeighborhood.original_index()</span></code></a></li>
|
|
159
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.CuspNeighborhood.reach"><code class="docutils literal notranslate"><span class="pre">CuspNeighborhood.reach()</span></code></a></li>
|
|
160
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.CuspNeighborhood.set_displacement"><code class="docutils literal notranslate"><span class="pre">CuspNeighborhood.set_displacement()</span></code></a></li>
|
|
161
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.CuspNeighborhood.set_tie"><code class="docutils literal notranslate"><span class="pre">CuspNeighborhood.set_tie()</span></code></a></li>
|
|
162
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.CuspNeighborhood.stopper"><code class="docutils literal notranslate"><span class="pre">CuspNeighborhood.stopper()</span></code></a></li>
|
|
163
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.CuspNeighborhood.stopping_displacement"><code class="docutils literal notranslate"><span class="pre">CuspNeighborhood.stopping_displacement()</span></code></a></li>
|
|
164
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.CuspNeighborhood.topology"><code class="docutils literal notranslate"><span class="pre">CuspNeighborhood.topology()</span></code></a></li>
|
|
165
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.CuspNeighborhood.translations"><code class="docutils literal notranslate"><span class="pre">CuspNeighborhood.translations()</span></code></a></li>
|
|
166
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.CuspNeighborhood.triangulation"><code class="docutils literal notranslate"><span class="pre">CuspNeighborhood.triangulation()</span></code></a></li>
|
|
167
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.CuspNeighborhood.view"><code class="docutils literal notranslate"><span class="pre">CuspNeighborhood.view()</span></code></a></li>
|
|
168
|
+
<li class="toctree-l5"><a class="reference internal" href="#snappy.CuspNeighborhood.volume"><code class="docutils literal notranslate"><span class="pre">CuspNeighborhood.volume()</span></code></a></li>
|
|
169
|
+
</ul>
|
|
170
|
+
</li>
|
|
171
|
+
</ul>
|
|
172
|
+
</li>
|
|
173
|
+
</ul>
|
|
174
|
+
</li>
|
|
175
|
+
<li class="toctree-l2"><a class="reference internal" href="censuses.html">Census manifolds</a></li>
|
|
176
|
+
</ul>
|
|
177
|
+
</li>
|
|
178
|
+
<li class="toctree-l1"><a class="reference internal" href="plink.html">Using SnapPy’s link editor</a></li>
|
|
179
|
+
<li class="toctree-l1"><a class="reference internal" href="spherogram.html">Links: planar diagrams and invariants</a></li>
|
|
180
|
+
<li class="toctree-l1"><a class="reference internal" href="snap.html">Number theory of hyperbolic 3-manifolds</a></li>
|
|
181
|
+
<li class="toctree-l1"><a class="reference internal" href="verify.html">Verified computations</a></li>
|
|
182
|
+
<li class="toctree-l1"><a class="reference internal" href="other.html">Other components</a></li>
|
|
183
|
+
<li class="toctree-l1"><a class="reference internal" href="news.html">News</a></li>
|
|
184
|
+
<li class="toctree-l1"><a class="reference internal" href="credits.html">Credits</a></li>
|
|
185
|
+
<li class="toctree-l1"><a class="reference internal" href="bugs.html">Reporting bugs and other problems</a></li>
|
|
186
|
+
<li class="toctree-l1"><a class="reference internal" href="todo.html">To Do List</a></li>
|
|
187
|
+
<li class="toctree-l1"><a class="reference internal" href="development.html">Development Basics</a></li>
|
|
188
|
+
</ul>
|
|
189
|
+
|
|
190
|
+
</div>
|
|
191
|
+
</div>
|
|
192
|
+
</nav>
|
|
193
|
+
|
|
194
|
+
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
|
195
|
+
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
196
|
+
<a href="index.html">SnapPy</a>
|
|
197
|
+
</nav>
|
|
198
|
+
|
|
199
|
+
<div class="wy-nav-content">
|
|
200
|
+
<div class="rst-content">
|
|
201
|
+
<div role="navigation" aria-label="Page navigation">
|
|
202
|
+
<ul class="wy-breadcrumbs">
|
|
203
|
+
<li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
204
|
+
<li class="breadcrumb-item"><a href="snappy.html">The snappy module and its classes</a></li>
|
|
205
|
+
<li class="breadcrumb-item active">Additional Classes</li>
|
|
206
|
+
<li class="wy-breadcrumbs-aside">
|
|
207
|
+
</li>
|
|
208
|
+
</ul>
|
|
209
|
+
<hr/>
|
|
210
|
+
</div>
|
|
211
|
+
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
212
|
+
<div itemprop="articleBody">
|
|
213
|
+
|
|
214
|
+
<section id="module-snappy">
|
|
215
|
+
<span id="additional-classes"></span><h1>Additional Classes<a class="headerlink" href="#module-snappy" title="Link to this heading"></a></h1>
|
|
216
|
+
<p>SnapPy is a Cython wrapping of Jeff Weeks’ SnapPea kernel.</p>
|
|
217
|
+
<dl class="simple">
|
|
218
|
+
<dt>The module defines the following classes:</dt><dd><p>Triangulation, Manifold, ManifoldHP, AbelianGroup, FundamentalGroup,
|
|
219
|
+
HolonomyGroup, HolonomyGroupHP, DirichletDomain, DirichletDomainHP,
|
|
220
|
+
CuspNeighborhood, CuspNeighborhoodHP, SymmetryGroup,
|
|
221
|
+
AlternatingKnotExteriors, NonalternatingKnotExteriors, SnapPeaFatalError,
|
|
222
|
+
InsufficientPrecisionError, pari, twister, OrientableCuspedCensus,
|
|
223
|
+
NonorientableCuspedCensus, OrientableClosedCensus,
|
|
224
|
+
NonorientableClosedCensus, LinkExteriors, CensusKnots, HTLinkExteriors,
|
|
225
|
+
TetrahedralOrientableCuspedCensus, TetrahedralNonorientableCuspedCensus,
|
|
226
|
+
OctahedralOrientableCuspedCensus, OctahedralNonorientableCuspedCensus,
|
|
227
|
+
CubicalOrientableCuspedCensus, CubicalNonorientableCuspedCensus,
|
|
228
|
+
DodecahedralOrientableCuspedCensus, DodecahedralNonorientableCuspedCensus,
|
|
229
|
+
IcosahedralNonorientableClosedCensus, IcosahedralOrientableClosedCensus,
|
|
230
|
+
CubicalNonorientableClosedCensus, CubicalOrientableClosedCensus,
|
|
231
|
+
DodecahedralNonorientableClosedCensus, DodecahedralOrientableClosedCensus,
|
|
232
|
+
RibbonLinks, Crossing, Strand, Link, Tangle, RationalTangle, ZeroTangle,
|
|
233
|
+
InfinityTangle, IdentityBraid, random_link, DTcodec.</p>
|
|
234
|
+
</dd>
|
|
235
|
+
</dl>
|
|
236
|
+
<section id="abeliangroup">
|
|
237
|
+
<h2>AbelianGroup<a class="headerlink" href="#abeliangroup" title="Link to this heading"></a></h2>
|
|
238
|
+
<dl class="py class">
|
|
239
|
+
<dt class="sig sig-object py" id="snappy.AbelianGroup">
|
|
240
|
+
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.</span></span><span class="sig-name descname"><span class="pre">AbelianGroup</span></span><a class="headerlink" href="#snappy.AbelianGroup" title="Link to this definition"></a></dt>
|
|
241
|
+
<dd><p>An AbelianGroup object represents a finitely generated abelian group,
|
|
242
|
+
usually the first homology group of a snappy Manifold.</p>
|
|
243
|
+
<p>Instantiate an abelian group by its elementary divisors:</p>
|
|
244
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">A</span> <span class="o">=</span> <span class="n">AbelianGroup</span><span class="p">(</span><span class="n">elementary_divisors</span><span class="o">=</span><span class="p">[</span><span class="mi">5</span><span class="p">,</span><span class="mi">15</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">])</span>
|
|
245
|
+
<span class="gp">>>> </span><span class="n">A</span>
|
|
246
|
+
<span class="go">Z/5 + Z/15 + Z + Z</span>
|
|
247
|
+
<span class="gp">>>> </span><span class="n">A</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
|
248
|
+
<span class="go">5</span>
|
|
249
|
+
</pre></div>
|
|
250
|
+
</div>
|
|
251
|
+
<p>Alternatively, instantiate an abelian group as AbelianGroup(P) where P is a
|
|
252
|
+
presentation matrix given as a list of lists of integers.
|
|
253
|
+
Snappy stores an abelian group as a list of elementary divisors:</p>
|
|
254
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">B</span> <span class="o">=</span> <span class="n">AbelianGroup</span><span class="p">([[</span><span class="mi">1</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">2</span><span class="p">],[</span><span class="mi">2</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">6</span><span class="p">]])</span>
|
|
255
|
+
<span class="gp">>>> </span><span class="n">B</span>
|
|
256
|
+
<span class="go">Z/2 + Z</span>
|
|
257
|
+
<span class="gp">>>> </span><span class="n">B</span><span class="o">.</span><span class="n">elementary_divisors</span><span class="p">()</span>
|
|
258
|
+
<span class="go">[2, 0]</span>
|
|
259
|
+
<span class="gp">>>> </span><span class="n">B</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
|
|
260
|
+
<span class="go">0</span>
|
|
261
|
+
<span class="gp">>>> </span><span class="nb">len</span><span class="p">(</span><span class="n">B</span><span class="p">)</span>
|
|
262
|
+
<span class="go">2</span>
|
|
263
|
+
<span class="gp">>>> </span><span class="n">B</span><span class="o">.</span><span class="n">rank</span><span class="p">()</span>
|
|
264
|
+
<span class="go">2</span>
|
|
265
|
+
<span class="gp">>>> </span><span class="n">B</span><span class="o">.</span><span class="n">betti_number</span><span class="p">()</span>
|
|
266
|
+
<span class="go">1</span>
|
|
267
|
+
<span class="gp">>>> </span><span class="n">B</span><span class="o">.</span><span class="n">order</span><span class="p">()</span>
|
|
268
|
+
<span class="go">'infinite'</span>
|
|
269
|
+
</pre></div>
|
|
270
|
+
</div>
|
|
271
|
+
<dl class="py method">
|
|
272
|
+
<dt class="sig sig-object py" id="snappy.AbelianGroup.betti_number">
|
|
273
|
+
<span class="sig-name descname"><span class="pre">betti_number</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.AbelianGroup.betti_number" title="Link to this definition"></a></dt>
|
|
274
|
+
<dd><p>The rank of the maximal free abelian subgroup.</p>
|
|
275
|
+
</dd></dl>
|
|
276
|
+
|
|
277
|
+
<dl class="py method">
|
|
278
|
+
<dt class="sig sig-object py" id="snappy.AbelianGroup.elementary_divisors">
|
|
279
|
+
<span class="sig-name descname"><span class="pre">elementary_divisors</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.AbelianGroup.elementary_divisors" title="Link to this definition"></a></dt>
|
|
280
|
+
<dd><p>The elementary divisors of this finitely generated abelian group.</p>
|
|
281
|
+
</dd></dl>
|
|
282
|
+
|
|
283
|
+
<dl class="py method">
|
|
284
|
+
<dt class="sig sig-object py" id="snappy.AbelianGroup.order">
|
|
285
|
+
<span class="sig-name descname"><span class="pre">order</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.AbelianGroup.order" title="Link to this definition"></a></dt>
|
|
286
|
+
<dd><p>The order of the group. Returns the string ‘infinite’ if the
|
|
287
|
+
group is infinite.</p>
|
|
288
|
+
</dd></dl>
|
|
289
|
+
|
|
290
|
+
<dl class="py method">
|
|
291
|
+
<dt class="sig sig-object py" id="snappy.AbelianGroup.rank">
|
|
292
|
+
<span class="sig-name descname"><span class="pre">rank</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.AbelianGroup.rank" title="Link to this definition"></a></dt>
|
|
293
|
+
<dd><p>The rank of the group.</p>
|
|
294
|
+
</dd></dl>
|
|
295
|
+
|
|
296
|
+
</dd></dl>
|
|
297
|
+
|
|
298
|
+
</section>
|
|
299
|
+
<section id="fundamentalgroup">
|
|
300
|
+
<h2>FundamentalGroup<a class="headerlink" href="#fundamentalgroup" title="Link to this heading"></a></h2>
|
|
301
|
+
<dl class="py class">
|
|
302
|
+
<dt class="sig sig-object py" id="snappy.HolonomyGroup">
|
|
303
|
+
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.</span></span><span class="sig-name descname"><span class="pre">HolonomyGroup</span></span><a class="headerlink" href="#snappy.HolonomyGroup" title="Link to this definition"></a></dt>
|
|
304
|
+
<dd><p>A FundamentalGroup represents a presentation of the fundamental
|
|
305
|
+
group of a SnapPea Triangulation. Group elements are described as
|
|
306
|
+
words in the generators a,b,…, where the inverse of a is denoted
|
|
307
|
+
A. Words are represented by python strings (and the concatenation
|
|
308
|
+
operator is named ‘+’, according to Python conventions).</p>
|
|
309
|
+
<p>Instantiate via <code class="docutils literal notranslate"><span class="pre">T.fundamental_group()</span></code>, where T is a triangulation:</p>
|
|
310
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">T</span> <span class="o">=</span> <span class="n">Triangulation</span><span class="p">(</span><span class="s1">'m125'</span><span class="p">)</span>
|
|
311
|
+
<span class="gp">>>> </span><span class="n">T</span><span class="o">.</span><span class="n">fundamental_group</span><span class="p">()</span>
|
|
312
|
+
<span class="go">Generators:</span>
|
|
313
|
+
<span class="go"> a,b</span>
|
|
314
|
+
<span class="go">Relators:</span>
|
|
315
|
+
<span class="go"> aabaBBAABAbb</span>
|
|
316
|
+
<span class="gp">>>> </span><span class="nb">type</span><span class="p">(</span><span class="n">T</span><span class="o">.</span><span class="n">fundamental_group</span><span class="p">())</span>
|
|
317
|
+
<span class="go"><class 'SnapPy.FundamentalGroup'></span>
|
|
318
|
+
</pre></div>
|
|
319
|
+
</div>
|
|
320
|
+
<p>A HolonomyGroup is a FundamentalGroup with added structure
|
|
321
|
+
consisting of a holonomy representation into O(3,1), and an
|
|
322
|
+
arbitrarily chosen lift of the holonomy representation to SL(2,C).
|
|
323
|
+
The holonomy is determined by the shapes of the tetrahedra, so a
|
|
324
|
+
HolonomyGroup is associated to a Manifold, while a Triangulation
|
|
325
|
+
only has a FundamentalGroup:</p>
|
|
326
|
+
<p>Instantiate via <code class="docutils literal notranslate"><span class="pre">M.fundamental_group()</span></code>, where M is a Manifold:</p>
|
|
327
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'m125'</span><span class="p">)</span>
|
|
328
|
+
<span class="gp">>>> </span><span class="n">G</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">fundamental_group</span><span class="p">()</span>
|
|
329
|
+
<span class="gp">>>> </span><span class="n">G</span>
|
|
330
|
+
<span class="go">Generators:</span>
|
|
331
|
+
<span class="go"> a,b</span>
|
|
332
|
+
<span class="go">Relators:</span>
|
|
333
|
+
<span class="go"> aabaBBAABAbb</span>
|
|
334
|
+
<span class="gp">>>> </span><span class="nb">type</span><span class="p">(</span><span class="n">G</span><span class="p">)</span>
|
|
335
|
+
<span class="go"><class 'SnapPy.HolonomyGroup'></span>
|
|
336
|
+
</pre></div>
|
|
337
|
+
</div>
|
|
338
|
+
<p>In the class HolonomyGroup, methods are provided to evaluate the
|
|
339
|
+
representations on a group element. Other methods are shared
|
|
340
|
+
with the FundamentalGroup class.</p>
|
|
341
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">G</span><span class="o">.</span><span class="n">O31</span><span class="p">(</span><span class="s1">'a'</span><span class="p">)</span>
|
|
342
|
+
<span class="go">[ 2.50000000000000 -0.500000000000000 -2.12132034355964 -0.707106781186547]</span>
|
|
343
|
+
<span class="go">[ 0.500000000000002 -0.500000000000001 -0.707106781186549 0.707106781186547]</span>
|
|
344
|
+
<span class="go">[ -0.707106781186548 -0.707106781186547 1.00000000000000 0]</span>
|
|
345
|
+
<span class="go">[ 2.12132034355964 -0.707106781186548 -2.00000000000000 -1.00000000000000]</span>
|
|
346
|
+
<span class="gp">>>> </span><span class="n">G</span><span class="o">.</span><span class="n">SL2C</span><span class="p">(</span><span class="s1">'aaB'</span><span class="p">)</span>
|
|
347
|
+
<span class="go">[-1.00000000000000 + 4.00000000000000*I 2.12132034355964 - 0.707106781186545*I]</span>
|
|
348
|
+
<span class="go">[2.12132034355964 - 0.707106781186549*I -1.00000000000000 - 1.00000000000000*I]</span>
|
|
349
|
+
<span class="gp">>>> </span><span class="n">G</span><span class="o">.</span><span class="n">complex_length</span><span class="p">(</span><span class="s1">'ab'</span><span class="p">)</span>
|
|
350
|
+
<span class="go">1.06127506190504 - 2.23703575928741*I</span>
|
|
351
|
+
</pre></div>
|
|
352
|
+
</div>
|
|
353
|
+
<dl class="py method">
|
|
354
|
+
<dt class="sig sig-object py" id="snappy.HolonomyGroup.O31">
|
|
355
|
+
<span class="sig-name descname"><span class="pre">O31</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">word</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.HolonomyGroup.O31" title="Link to this definition"></a></dt>
|
|
356
|
+
<dd><p>Return the image of the element represented by the input word
|
|
357
|
+
under the holonomy representation, where
|
|
358
|
+
<span class="math notranslate nohighlight">\(\text{Isom}(\mathbb{H}^3)\)</span> is
|
|
359
|
+
identified with <span class="math notranslate nohighlight">\(\text{SO}(3,1)\)</span>.</p>
|
|
360
|
+
</dd></dl>
|
|
361
|
+
|
|
362
|
+
<dl class="py method">
|
|
363
|
+
<dt class="sig sig-object py" id="snappy.HolonomyGroup.SL2C">
|
|
364
|
+
<span class="sig-name descname"><span class="pre">SL2C</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">word</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.HolonomyGroup.SL2C" title="Link to this definition"></a></dt>
|
|
365
|
+
<dd><p>Return the image of the element represented by the input word
|
|
366
|
+
under some <span class="math notranslate nohighlight">\(\text{SL}(2,\mathbb{C})\)</span>-representation that
|
|
367
|
+
lifts the holonomy representation.
|
|
368
|
+
Note: the choice of lift is not guaranteed to
|
|
369
|
+
vary continuously when filling coefficients are changed.</p>
|
|
370
|
+
</dd></dl>
|
|
371
|
+
|
|
372
|
+
<dl class="py method">
|
|
373
|
+
<dt class="sig sig-object py" id="snappy.HolonomyGroup.category">
|
|
374
|
+
<span class="sig-name descname"><span class="pre">category</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.HolonomyGroup.category" title="Link to this definition"></a></dt>
|
|
375
|
+
<dd><p>File: /home/sage/sage/src/sage/structure/sage_object.pyx (starting at line 513)</p>
|
|
376
|
+
</dd></dl>
|
|
377
|
+
|
|
378
|
+
<dl class="py method">
|
|
379
|
+
<dt class="sig sig-object py" id="snappy.HolonomyGroup.character_variety_vars_and_polys">
|
|
380
|
+
<span class="sig-name descname"><span class="pre">character_variety_vars_and_polys</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">as_ideal</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.HolonomyGroup.character_variety_vars_and_polys" title="Link to this definition"></a></dt>
|
|
381
|
+
<dd><p>Returns a list of variables and a list polynomials where the
|
|
382
|
+
polynomials generate the ideal defining the SL(2, C) character
|
|
383
|
+
variety of this group. Each variable is of the form “Tw” where
|
|
384
|
+
“w” is a word in the generators and “Tw” represents the trace
|
|
385
|
+
function of that word.</p>
|
|
386
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">H</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'dLQacccbjkg'</span><span class="p">)</span> <span class="c1"># Hopf link exterior.</span>
|
|
387
|
+
<span class="gp">>>> </span><span class="n">G</span> <span class="o">=</span> <span class="n">H</span><span class="o">.</span><span class="n">fundamental_group</span><span class="p">()</span>
|
|
388
|
+
<span class="gp">>>> </span><span class="nb">vars</span><span class="p">,</span> <span class="n">polys</span> <span class="o">=</span> <span class="n">G</span><span class="o">.</span><span class="n">character_variety_vars_and_polys</span><span class="p">()</span>
|
|
389
|
+
<span class="gp">>>> </span><span class="nb">vars</span>
|
|
390
|
+
<span class="go">[Ta, Tb, Tab]</span>
|
|
391
|
+
<span class="gp">>>> </span><span class="n">polys</span>
|
|
392
|
+
<span class="go">[Ta^3 - Tab*Tb*Ta^2 + (Tb^2 + (Tab^2 - 4))*Ta,</span>
|
|
393
|
+
<span class="go"> Ta^2 - Tab*Tb*Ta + (Tb^2 + (Tab^2 - 4))]</span>
|
|
394
|
+
</pre></div>
|
|
395
|
+
</div>
|
|
396
|
+
<p>When used inside Sage, you can ask for the answer as a proper
|
|
397
|
+
ideal:</p>
|
|
398
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'m000'</span><span class="p">)</span> <span class="c1"># Gieseking manifold</span>
|
|
399
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">G</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">fundamental_group</span><span class="p">()</span>
|
|
400
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">I</span> <span class="o">=</span> <span class="n">G</span><span class="o">.</span><span class="n">character_variety_vars_and_polys</span><span class="p">(</span><span class="n">as_ideal</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
401
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">I</span>
|
|
402
|
+
<span class="n">Ideal</span> <span class="p">(</span><span class="o">-</span><span class="n">Ta</span><span class="o">^</span><span class="mi">3</span><span class="o">*</span><span class="n">Tb</span><span class="o">^</span><span class="mi">2</span><span class="o">*</span><span class="n">Tab</span> <span class="o">+</span> <span class="n">Ta</span><span class="o">^</span><span class="mi">4</span><span class="o">*</span><span class="n">Tb</span> <span class="o">+</span> <span class="n">Ta</span><span class="o">^</span><span class="mi">2</span><span class="o">*</span><span class="n">Tb</span><span class="o">^</span><span class="mi">3</span> <span class="o">+</span> <span class="n">Ta</span><span class="o">^</span><span class="mi">2</span><span class="o">*</span><span class="n">Tb</span><span class="o">*</span><span class="n">Tab</span><span class="o">^</span><span class="mi">2</span> <span class="o">+</span> <span class="n">Ta</span><span class="o">*</span><span class="n">Tb</span><span class="o">^</span><span class="mi">2</span><span class="o">*</span><span class="n">Tab</span> <span class="o">-</span> <span class="mi">5</span><span class="o">*</span><span class="n">Ta</span><span class="o">^</span><span class="mi">2</span><span class="o">*</span><span class="n">Tb</span> <span class="o">-</span> <span class="n">Tb</span><span class="o">^</span><span class="mi">3</span> <span class="o">-</span> <span class="n">Tb</span><span class="o">*</span><span class="n">Tab</span><span class="o">^</span><span class="mi">2</span> <span class="o">+</span> <span class="n">Ta</span><span class="o">*</span><span class="n">Tab</span> <span class="o">-</span> <span class="n">Ta</span> <span class="o">+</span> <span class="mi">3</span><span class="o">*</span><span class="n">Tb</span><span class="p">,</span> <span class="n">Tb</span><span class="o">*</span><span class="n">Tab</span> <span class="o">-</span> <span class="n">Ta</span> <span class="o">-</span> <span class="n">Tb</span><span class="p">,</span> <span class="o">-</span><span class="n">Ta</span><span class="o">^</span><span class="mi">2</span><span class="o">*</span><span class="n">Tb</span><span class="o">^</span><span class="mi">2</span><span class="o">*</span><span class="n">Tab</span> <span class="o">+</span> <span class="n">Ta</span><span class="o">^</span><span class="mi">3</span><span class="o">*</span><span class="n">Tb</span> <span class="o">+</span> <span class="n">Ta</span><span class="o">*</span><span class="n">Tb</span><span class="o">^</span><span class="mi">3</span> <span class="o">+</span> <span class="n">Ta</span><span class="o">*</span><span class="n">Tb</span><span class="o">*</span><span class="n">Tab</span><span class="o">^</span><span class="mi">2</span> <span class="o">-</span> <span class="mi">4</span><span class="o">*</span><span class="n">Ta</span><span class="o">*</span><span class="n">Tb</span> <span class="o">+</span> <span class="n">Tab</span> <span class="o">-</span> <span class="mi">2</span><span class="p">)</span> <span class="n">of</span> <span class="n">Multivariate</span> <span class="n">Polynomial</span> <span class="n">Ring</span> <span class="ow">in</span> <span class="n">Ta</span><span class="p">,</span> <span class="n">Tb</span><span class="p">,</span> <span class="n">Tab</span> <span class="n">over</span> <span class="n">Rational</span> <span class="n">Field</span>
|
|
403
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">I</span><span class="o">.</span><span class="n">dimension</span><span class="p">()</span>
|
|
404
|
+
<span class="mi">1</span>
|
|
405
|
+
</pre></div>
|
|
406
|
+
</div>
|
|
407
|
+
</dd></dl>
|
|
408
|
+
|
|
409
|
+
<dl class="py method">
|
|
410
|
+
<dt class="sig sig-object py" id="snappy.HolonomyGroup.complex_length">
|
|
411
|
+
<span class="sig-name descname"><span class="pre">complex_length</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">word</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.HolonomyGroup.complex_length" title="Link to this definition"></a></dt>
|
|
412
|
+
<dd><p>Return the complex length of the isometry represented by the
|
|
413
|
+
input word.</p>
|
|
414
|
+
</dd></dl>
|
|
415
|
+
|
|
416
|
+
<dl class="py method">
|
|
417
|
+
<dt class="sig sig-object py" id="snappy.HolonomyGroup.dump">
|
|
418
|
+
<span class="sig-name descname"><span class="pre">dump</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">compress</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.HolonomyGroup.dump" title="Link to this definition"></a></dt>
|
|
419
|
+
<dd><p>File: /home/sage/sage/src/sage/structure/sage_object.pyx (starting at line 474)</p>
|
|
420
|
+
<p>Same as self.save(filename, compress)</p>
|
|
421
|
+
</dd></dl>
|
|
422
|
+
|
|
423
|
+
<dl class="py method">
|
|
424
|
+
<dt class="sig sig-object py" id="snappy.HolonomyGroup.dumps">
|
|
425
|
+
<span class="sig-name descname"><span class="pre">dumps</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">compress</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.HolonomyGroup.dumps" title="Link to this definition"></a></dt>
|
|
426
|
+
<dd><p>File: /home/sage/sage/src/sage/structure/sage_object.pyx (starting at line 480)</p>
|
|
427
|
+
<p>Dump <code class="docutils literal notranslate"><span class="pre">self</span></code> to a string <code class="docutils literal notranslate"><span class="pre">s</span></code>, which can later be reconstituted
|
|
428
|
+
as <code class="docutils literal notranslate"><span class="pre">self</span></code> using <code class="docutils literal notranslate"><span class="pre">loads(s)</span></code>.</p>
|
|
429
|
+
<p>There is an optional boolean argument <code class="docutils literal notranslate"><span class="pre">compress</span></code> which defaults to <code class="docutils literal notranslate"><span class="pre">True</span></code>.</p>
|
|
430
|
+
<p>EXAMPLES:</p>
|
|
431
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="kn">from</span> <span class="nn">sage.misc.persist</span> <span class="kn">import</span> <span class="n">comp</span>
|
|
432
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">O</span> <span class="o">=</span> <span class="n">SageObject</span><span class="p">()</span>
|
|
433
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">p_comp</span> <span class="o">=</span> <span class="n">O</span><span class="o">.</span><span class="n">dumps</span><span class="p">()</span>
|
|
434
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">p_uncomp</span> <span class="o">=</span> <span class="n">O</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">compress</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
|
435
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">comp</span><span class="o">.</span><span class="n">decompress</span><span class="p">(</span><span class="n">p_comp</span><span class="p">)</span> <span class="o">==</span> <span class="n">p_uncomp</span>
|
|
436
|
+
<span class="kc">True</span>
|
|
437
|
+
<span class="n">sage</span><span class="p">:</span> <span class="kn">import</span> <span class="nn">pickletools</span>
|
|
438
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">pickletools</span><span class="o">.</span><span class="n">dis</span><span class="p">(</span><span class="n">p_uncomp</span><span class="p">)</span>
|
|
439
|
+
<span class="mi">0</span><span class="p">:</span> \<span class="n">x80</span> <span class="n">PROTO</span> <span class="mi">2</span>
|
|
440
|
+
<span class="mi">2</span><span class="p">:</span> <span class="n">c</span> <span class="n">GLOBAL</span> <span class="s1">'sage.structure.sage_object SageObject'</span>
|
|
441
|
+
<span class="mi">41</span><span class="p">:</span> <span class="n">q</span> <span class="n">BINPUT</span> <span class="o">...</span>
|
|
442
|
+
<span class="mi">43</span><span class="p">:</span> <span class="p">)</span> <span class="n">EMPTY_TUPLE</span>
|
|
443
|
+
<span class="mi">44</span><span class="p">:</span> \<span class="n">x81</span> <span class="n">NEWOBJ</span>
|
|
444
|
+
<span class="mi">45</span><span class="p">:</span> <span class="n">q</span> <span class="n">BINPUT</span> <span class="o">...</span>
|
|
445
|
+
<span class="mi">47</span><span class="p">:</span> <span class="o">.</span> <span class="n">STOP</span>
|
|
446
|
+
<span class="n">highest</span> <span class="n">protocol</span> <span class="n">among</span> <span class="n">opcodes</span> <span class="o">=</span> <span class="mi">2</span>
|
|
447
|
+
</pre></div>
|
|
448
|
+
</div>
|
|
449
|
+
</dd></dl>
|
|
450
|
+
|
|
451
|
+
<dl class="py method">
|
|
452
|
+
<dt class="sig sig-object py" id="snappy.HolonomyGroup.gap_string">
|
|
453
|
+
<span class="sig-name descname"><span class="pre">gap_string</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.HolonomyGroup.gap_string" title="Link to this definition"></a></dt>
|
|
454
|
+
<dd><p>Returns a string which will define this group within GAP:</p>
|
|
455
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'b++LLR'</span><span class="p">)</span>
|
|
456
|
+
<span class="gp">>>> </span><span class="n">G</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">fundamental_group</span><span class="p">()</span>
|
|
457
|
+
<span class="gp">>>> </span><span class="n">G</span>
|
|
458
|
+
<span class="go">Generators:</span>
|
|
459
|
+
<span class="go"> a,b</span>
|
|
460
|
+
<span class="go">Relators:</span>
|
|
461
|
+
<span class="go"> aaaaBAbbAB</span>
|
|
462
|
+
<span class="gp">>>> </span><span class="n">G</span><span class="o">.</span><span class="n">gap_string</span><span class="p">()</span>
|
|
463
|
+
<span class="go">'CallFuncList(function() local F, a, b; F := FreeGroup("a", "b"); a := F.1; b := F.2; return F/[a*a*a*a*b^-1*a^-1*b*b*a^-1*b^-1]; end,[])'</span>
|
|
464
|
+
<span class="gp">>>> </span><span class="n">G</span><span class="o">.</span><span class="n">magma_string</span><span class="p">()</span>
|
|
465
|
+
<span class="go">'Group<a,b|a*a*a*a*b^-1*a^-1*b*b*a^-1*b^-1>'</span>
|
|
466
|
+
</pre></div>
|
|
467
|
+
</div>
|
|
468
|
+
</dd></dl>
|
|
469
|
+
|
|
470
|
+
<dl class="py method">
|
|
471
|
+
<dt class="sig sig-object py" id="snappy.HolonomyGroup.generators">
|
|
472
|
+
<span class="sig-name descname"><span class="pre">generators</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.HolonomyGroup.generators" title="Link to this definition"></a></dt>
|
|
473
|
+
<dd><p>Return the letters representing the generators in the presentation.</p>
|
|
474
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'9_42'</span><span class="p">)</span>
|
|
475
|
+
<span class="gp">>>> </span><span class="n">G</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">fundamental_group</span><span class="p">()</span> <span class="c1">#Presentation simplified by default</span>
|
|
476
|
+
<span class="gp">>>> </span><span class="n">G</span>
|
|
477
|
+
<span class="go">Generators:</span>
|
|
478
|
+
<span class="go"> a,b</span>
|
|
479
|
+
<span class="go">Relators:</span>
|
|
480
|
+
<span class="go"> aaaabbABBBAbb</span>
|
|
481
|
+
<span class="gp">>>> </span><span class="n">H</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">fundamental_group</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span> <span class="c1">#Unsimplified presentation</span>
|
|
482
|
+
<span class="gp">>>> </span><span class="n">H</span>
|
|
483
|
+
<span class="go">Generators:</span>
|
|
484
|
+
<span class="go"> a,b,c,d,e</span>
|
|
485
|
+
<span class="go">Relators:</span>
|
|
486
|
+
<span class="go"> ECbC</span>
|
|
487
|
+
<span class="go"> dEb</span>
|
|
488
|
+
<span class="go"> dAcaB</span>
|
|
489
|
+
<span class="go"> dbaE</span>
|
|
490
|
+
</pre></div>
|
|
491
|
+
</div>
|
|
492
|
+
<p>SnapPy stores a FundamentalGroup as a presentation of the group.
|
|
493
|
+
The following commands demonstrate how generators in the unsimplified
|
|
494
|
+
and simplified presentations above correspond:</p>
|
|
495
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">G</span><span class="o">.</span><span class="n">generators</span><span class="p">()</span>
|
|
496
|
+
<span class="go">['a', 'b']</span>
|
|
497
|
+
<span class="gp">>>> </span><span class="n">H</span><span class="o">.</span><span class="n">generators</span><span class="p">()</span>
|
|
498
|
+
<span class="go">['a', 'b', 'c', 'd', 'e']</span>
|
|
499
|
+
<span class="gp">>>> </span><span class="n">G</span><span class="o">.</span><span class="n">generators_in_originals</span><span class="p">()</span>
|
|
500
|
+
<span class="go">['BABcBcbCABcBcbCCbCba', 'BcBCbCbab']</span>
|
|
501
|
+
<span class="gp">>>> </span><span class="n">G</span><span class="o">.</span><span class="n">original_generators</span><span class="p">()</span>
|
|
502
|
+
<span class="go">['BBAbba', 'A', 'AB', 'abba', 'bba']</span>
|
|
503
|
+
<span class="gp">>>> </span><span class="n">G</span><span class="o">.</span><span class="n">num_generators</span><span class="p">()</span>
|
|
504
|
+
<span class="go">2</span>
|
|
505
|
+
<span class="gp">>>> </span><span class="n">G</span><span class="o">.</span><span class="n">num_original_generators</span><span class="p">()</span>
|
|
506
|
+
<span class="go">5</span>
|
|
507
|
+
<span class="gp">>>> </span><span class="n">H</span><span class="o">.</span><span class="n">num_generators</span><span class="p">()</span>
|
|
508
|
+
<span class="go">5</span>
|
|
509
|
+
</pre></div>
|
|
510
|
+
</div>
|
|
511
|
+
</dd></dl>
|
|
512
|
+
|
|
513
|
+
<dl class="py method">
|
|
514
|
+
<dt class="sig sig-object py" id="snappy.HolonomyGroup.generators_in_originals">
|
|
515
|
+
<span class="sig-name descname"><span class="pre">generators_in_originals</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">verbose_form</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">raw_form</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">as_int_list</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.HolonomyGroup.generators_in_originals" title="Link to this definition"></a></dt>
|
|
516
|
+
<dd><p>Return the current generators in terms of the original
|
|
517
|
+
geometric generators. Note that by default fundamental_group()
|
|
518
|
+
returns a simplified presentation of the group.</p>
|
|
519
|
+
<p>If the flag “raw_form” is set to True, it returns a sequence of
|
|
520
|
+
instructions for expressing the current generators in terms of
|
|
521
|
+
the original ones. This is sometimes much more concise, though
|
|
522
|
+
the format is somewhat obscure. See the source code of this
|
|
523
|
+
function in fundamental_group.pyx for details.</p>
|
|
524
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'K7_1'</span><span class="p">)</span>
|
|
525
|
+
<span class="gp">>>> </span><span class="n">G</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">fundamental_group</span><span class="p">()</span>
|
|
526
|
+
<span class="gp">>>> </span><span class="n">G</span><span class="o">.</span><span class="n">generators_in_originals</span><span class="p">()</span>
|
|
527
|
+
<span class="go">['DBcACbABcaCbDBcACbABcaCbACbaBcaCbd',</span>
|
|
528
|
+
<span class="go"> 'DBcACbABcaCbDBcACbABcaCbCbDBcACbABcaBcACbaBcaCbdACbaBcaCbdBcBcACbaBcaCbd']</span>
|
|
529
|
+
</pre></div>
|
|
530
|
+
</div>
|
|
531
|
+
</dd></dl>
|
|
532
|
+
|
|
533
|
+
<dl class="py method">
|
|
534
|
+
<dt class="sig sig-object py" id="snappy.HolonomyGroup.get_custom_name">
|
|
535
|
+
<span class="sig-name descname"><span class="pre">get_custom_name</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.HolonomyGroup.get_custom_name" title="Link to this definition"></a></dt>
|
|
536
|
+
<dd><p>File: /home/sage/sage/src/sage/structure/sage_object.pyx (starting at line 149)</p>
|
|
537
|
+
<p>Return the custom name of this object, or <code class="docutils literal notranslate"><span class="pre">None</span></code> if it is not
|
|
538
|
+
renamed.</p>
|
|
539
|
+
<p>EXAMPLES:</p>
|
|
540
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="n">P</span><span class="o">.<</span><span class="n">x</span><span class="o">></span> <span class="o">=</span> <span class="n">QQ</span><span class="p">[]</span>
|
|
541
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">P</span><span class="o">.</span><span class="n">get_custom_name</span><span class="p">()</span> <span class="ow">is</span> <span class="kc">None</span>
|
|
542
|
+
<span class="kc">True</span>
|
|
543
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">P</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span><span class="s1">'A polynomial ring'</span><span class="p">)</span>
|
|
544
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">P</span><span class="o">.</span><span class="n">get_custom_name</span><span class="p">()</span>
|
|
545
|
+
<span class="s1">'A polynomial ring'</span>
|
|
546
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">P</span><span class="o">.</span><span class="n">reset_name</span><span class="p">()</span>
|
|
547
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">P</span><span class="o">.</span><span class="n">get_custom_name</span><span class="p">()</span> <span class="ow">is</span> <span class="kc">None</span>
|
|
548
|
+
<span class="kc">True</span>
|
|
549
|
+
</pre></div>
|
|
550
|
+
</div>
|
|
551
|
+
</dd></dl>
|
|
552
|
+
|
|
553
|
+
<dl class="py method">
|
|
554
|
+
<dt class="sig sig-object py" id="snappy.HolonomyGroup.longitude">
|
|
555
|
+
<span class="sig-name descname"><span class="pre">longitude</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">which_cusp</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">as_int_list</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.HolonomyGroup.longitude" title="Link to this definition"></a></dt>
|
|
556
|
+
<dd><p>Returns a word representing a conjugate of the current
|
|
557
|
+
longitude for the given cusp. Guaranteed to commute with the
|
|
558
|
+
meridian for the same cusp. Note: for Klein bottle cusps,
|
|
559
|
+
the longitude must be defined carefully.</p>
|
|
560
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">G</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'m004'</span><span class="p">)</span><span class="o">.</span><span class="n">fundamental_group</span><span class="p">()</span>
|
|
561
|
+
<span class="gp">>>> </span><span class="n">G</span><span class="o">.</span><span class="n">longitude</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
|
562
|
+
<span class="go">'aBAbABab'</span>
|
|
563
|
+
<span class="gp">>>> </span><span class="n">G</span><span class="o">.</span><span class="n">longitude</span><span class="p">()</span> <span class="c1"># shortcut for the above.</span>
|
|
564
|
+
<span class="go">'aBAbABab'</span>
|
|
565
|
+
</pre></div>
|
|
566
|
+
</div>
|
|
567
|
+
</dd></dl>
|
|
568
|
+
|
|
569
|
+
<dl class="py method">
|
|
570
|
+
<dt class="sig sig-object py" id="snappy.HolonomyGroup.magma_string">
|
|
571
|
+
<span class="sig-name descname"><span class="pre">magma_string</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.HolonomyGroup.magma_string" title="Link to this definition"></a></dt>
|
|
572
|
+
<dd><p>Returns a string which will define this group within MAGMA.</p>
|
|
573
|
+
</dd></dl>
|
|
574
|
+
|
|
575
|
+
<dl class="py method">
|
|
576
|
+
<dt class="sig sig-object py" id="snappy.HolonomyGroup.meridian">
|
|
577
|
+
<span class="sig-name descname"><span class="pre">meridian</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">which_cusp</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">as_int_list</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.HolonomyGroup.meridian" title="Link to this definition"></a></dt>
|
|
578
|
+
<dd><p>Returns a word representing a conjugate of the current
|
|
579
|
+
meridian for the given cusp. Guaranteed to commute with the
|
|
580
|
+
longitude for the same cusp.</p>
|
|
581
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">G</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'m125'</span><span class="p">)</span><span class="o">.</span><span class="n">fundamental_group</span><span class="p">()</span>
|
|
582
|
+
<span class="gp">>>> </span><span class="n">G</span><span class="o">.</span><span class="n">meridian</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
|
583
|
+
<span class="go">'aaba'</span>
|
|
584
|
+
<span class="gp">>>> </span><span class="n">G</span><span class="o">.</span><span class="n">meridian</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="c1"># The last cusp</span>
|
|
585
|
+
<span class="go">'baaba'</span>
|
|
586
|
+
</pre></div>
|
|
587
|
+
</div>
|
|
588
|
+
</dd></dl>
|
|
589
|
+
|
|
590
|
+
<dl class="py method">
|
|
591
|
+
<dt class="sig sig-object py" id="snappy.HolonomyGroup.num_generators">
|
|
592
|
+
<span class="sig-name descname"><span class="pre">num_generators</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.HolonomyGroup.num_generators" title="Link to this definition"></a></dt>
|
|
593
|
+
<dd><p>Return the number of generators for the presentation.</p>
|
|
594
|
+
</dd></dl>
|
|
595
|
+
|
|
596
|
+
<dl class="py method">
|
|
597
|
+
<dt class="sig sig-object py" id="snappy.HolonomyGroup.num_original_generators">
|
|
598
|
+
<span class="sig-name descname"><span class="pre">num_original_generators</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.HolonomyGroup.num_original_generators" title="Link to this definition"></a></dt>
|
|
599
|
+
<dd><p>Return the number of geometric generators (before simplification).</p>
|
|
600
|
+
</dd></dl>
|
|
601
|
+
|
|
602
|
+
<dl class="py method">
|
|
603
|
+
<dt class="sig sig-object py" id="snappy.HolonomyGroup.num_relators">
|
|
604
|
+
<span class="sig-name descname"><span class="pre">num_relators</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.HolonomyGroup.num_relators" title="Link to this definition"></a></dt>
|
|
605
|
+
<dd><p>Return the number of generators for the presentation.</p>
|
|
606
|
+
</dd></dl>
|
|
607
|
+
|
|
608
|
+
<dl class="py method">
|
|
609
|
+
<dt class="sig sig-object py" id="snappy.HolonomyGroup.original_generators">
|
|
610
|
+
<span class="sig-name descname"><span class="pre">original_generators</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">verbose_form</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">as_int_list</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.HolonomyGroup.original_generators" title="Link to this definition"></a></dt>
|
|
611
|
+
<dd><p>Return the original geometric generators (before
|
|
612
|
+
simplification) in terms of the current generators.</p>
|
|
613
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'v0000'</span><span class="p">)</span>
|
|
614
|
+
<span class="gp">>>> </span><span class="n">G</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">fundamental_group</span><span class="p">()</span>
|
|
615
|
+
<span class="gp">>>> </span><span class="n">G</span><span class="o">.</span><span class="n">original_generators</span><span class="p">(</span><span class="n">as_int_list</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
616
|
+
<span class="go">[[1], [-1, -2, 1, 2], [-1, 2], [-2, -1, 2], [2]]</span>
|
|
617
|
+
</pre></div>
|
|
618
|
+
</div>
|
|
619
|
+
</dd></dl>
|
|
620
|
+
|
|
621
|
+
<dl class="py method">
|
|
622
|
+
<dt class="sig sig-object py" id="snappy.HolonomyGroup.parent">
|
|
623
|
+
<span class="sig-name descname"><span class="pre">parent</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.HolonomyGroup.parent" title="Link to this definition"></a></dt>
|
|
624
|
+
<dd><p>File: /home/sage/sage/src/sage/structure/sage_object.pyx (starting at line 548)</p>
|
|
625
|
+
<p>Return the type of <code class="docutils literal notranslate"><span class="pre">self</span></code> to support the coercion framework.</p>
|
|
626
|
+
<p>EXAMPLES:</p>
|
|
627
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>sage: t = log(sqrt(2) - 1) + log(sqrt(2) + 1); t # needs sage.symbolic
|
|
628
|
+
log(sqrt(2) + 1) + log(sqrt(2) - 1)
|
|
629
|
+
sage: u = t.maxima_methods() # needs sage.symbolic
|
|
630
|
+
sage: u.parent() # needs sage.symbolic
|
|
631
|
+
<class 'sage.symbolic.maxima_wrapper.MaximaWrapper'>
|
|
632
|
+
</pre></div>
|
|
633
|
+
</div>
|
|
634
|
+
</dd></dl>
|
|
635
|
+
|
|
636
|
+
<dl class="py method">
|
|
637
|
+
<dt class="sig sig-object py" id="snappy.HolonomyGroup.peripheral_curves">
|
|
638
|
+
<span class="sig-name descname"><span class="pre">peripheral_curves</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">as_int_list</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.HolonomyGroup.peripheral_curves" title="Link to this definition"></a></dt>
|
|
639
|
+
<dd><p>Returns a list of meridian-longitude pairs for all cusps.</p>
|
|
640
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">G</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'m125'</span><span class="p">)</span><span class="o">.</span><span class="n">fundamental_group</span><span class="p">()</span>
|
|
641
|
+
<span class="gp">>>> </span><span class="n">G</span><span class="o">.</span><span class="n">peripheral_curves</span><span class="p">()</span>
|
|
642
|
+
<span class="go">[('aaba', 'abb'), ('baaba', 'Ba')]</span>
|
|
643
|
+
</pre></div>
|
|
644
|
+
</div>
|
|
645
|
+
</dd></dl>
|
|
646
|
+
|
|
647
|
+
<dl class="py method">
|
|
648
|
+
<dt class="sig sig-object py" id="snappy.HolonomyGroup.relators">
|
|
649
|
+
<span class="sig-name descname"><span class="pre">relators</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">verbose_form</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">as_int_list</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.HolonomyGroup.relators" title="Link to this definition"></a></dt>
|
|
650
|
+
<dd><p>Return a list of words representing the relators in the presentation.</p>
|
|
651
|
+
<p>If the optional argument verbose_form is True, then the
|
|
652
|
+
relator is returned in the form “a*b*a^-1*b^-1” instead of “abAB”.</p>
|
|
653
|
+
</dd></dl>
|
|
654
|
+
|
|
655
|
+
<dl class="py method">
|
|
656
|
+
<dt class="sig sig-object py" id="snappy.HolonomyGroup.rename">
|
|
657
|
+
<span class="sig-name descname"><span class="pre">rename</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">x</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.HolonomyGroup.rename" title="Link to this definition"></a></dt>
|
|
658
|
+
<dd><p>File: /home/sage/sage/src/sage/structure/sage_object.pyx (starting at line 67)</p>
|
|
659
|
+
<p>Change <code class="docutils literal notranslate"><span class="pre">self</span></code> so it prints as x, where x is a string.</p>
|
|
660
|
+
<p>If x is <code class="docutils literal notranslate"><span class="pre">None</span></code>, the existing custom name is removed.</p>
|
|
661
|
+
<div class="admonition note">
|
|
662
|
+
<p class="admonition-title">Note</p>
|
|
663
|
+
<p>This is <em>only</em> supported for Python classes that derive
|
|
664
|
+
from SageObject.</p>
|
|
665
|
+
</div>
|
|
666
|
+
<p>EXAMPLES:</p>
|
|
667
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="n">x</span> <span class="o">=</span> <span class="n">PolynomialRing</span><span class="p">(</span><span class="n">QQ</span><span class="p">,</span> <span class="s1">'x'</span><span class="p">,</span> <span class="n">sparse</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="o">.</span><span class="n">gen</span><span class="p">()</span>
|
|
668
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">g</span> <span class="o">=</span> <span class="n">x</span><span class="o">^</span><span class="mi">3</span> <span class="o">+</span> <span class="n">x</span> <span class="o">-</span> <span class="mi">5</span>
|
|
669
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">g</span>
|
|
670
|
+
<span class="n">x</span><span class="o">^</span><span class="mi">3</span> <span class="o">+</span> <span class="n">x</span> <span class="o">-</span> <span class="mi">5</span>
|
|
671
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">g</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span><span class="s1">'a polynomial'</span><span class="p">)</span>
|
|
672
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">g</span>
|
|
673
|
+
<span class="n">a</span> <span class="n">polynomial</span>
|
|
674
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">g</span> <span class="o">+</span> <span class="n">x</span>
|
|
675
|
+
<span class="n">x</span><span class="o">^</span><span class="mi">3</span> <span class="o">+</span> <span class="mi">2</span><span class="o">*</span><span class="n">x</span> <span class="o">-</span> <span class="mi">5</span>
|
|
676
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">h</span> <span class="o">=</span> <span class="n">g</span><span class="o">^</span><span class="mi">100</span>
|
|
677
|
+
<span class="n">sage</span><span class="p">:</span> <span class="nb">str</span><span class="p">(</span><span class="n">h</span><span class="p">)[:</span><span class="mi">20</span><span class="p">]</span>
|
|
678
|
+
<span class="s1">'x^300 + 100*x^298 - '</span>
|
|
679
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">h</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span><span class="s1">'x^300 + ...'</span><span class="p">)</span>
|
|
680
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">h</span>
|
|
681
|
+
<span class="n">x</span><span class="o">^</span><span class="mi">300</span> <span class="o">+</span> <span class="o">...</span>
|
|
682
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">g</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span>
|
|
683
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">g</span>
|
|
684
|
+
<span class="n">x</span><span class="o">^</span><span class="mi">3</span> <span class="o">+</span> <span class="n">x</span> <span class="o">-</span> <span class="mi">5</span>
|
|
685
|
+
</pre></div>
|
|
686
|
+
</div>
|
|
687
|
+
<p>Real numbers are not Python classes, so rename is not supported:</p>
|
|
688
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="n">a</span> <span class="o">=</span> <span class="mf">3.14</span>
|
|
689
|
+
<span class="n">sage</span><span class="p">:</span> <span class="nb">type</span><span class="p">(</span><span class="n">a</span><span class="p">)</span> <span class="c1"># needs sage.rings.real_mpfr</span>
|
|
690
|
+
<span class="o"><...</span> <span class="s1">'sage.rings.real_mpfr.RealLiteral'</span><span class="o">></span>
|
|
691
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">a</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span><span class="s1">'pi'</span><span class="p">)</span> <span class="c1"># needs sage.rings.real_mpfr</span>
|
|
692
|
+
<span class="n">Traceback</span> <span class="p">(</span><span class="n">most</span> <span class="n">recent</span> <span class="n">call</span> <span class="n">last</span><span class="p">):</span>
|
|
693
|
+
<span class="o">...</span>
|
|
694
|
+
<span class="ne">NotImplementedError</span><span class="p">:</span> <span class="nb">object</span> <span class="n">does</span> <span class="ow">not</span> <span class="n">support</span> <span class="n">renaming</span><span class="p">:</span> <span class="mf">3.14000000000000</span>
|
|
695
|
+
</pre></div>
|
|
696
|
+
</div>
|
|
697
|
+
<div class="admonition note">
|
|
698
|
+
<p class="admonition-title">Note</p>
|
|
699
|
+
<p>The reason C-extension types are not supported by default
|
|
700
|
+
is if they were then every single one would have to carry
|
|
701
|
+
around an extra attribute, which would be slower and waste
|
|
702
|
+
a lot of memory.</p>
|
|
703
|
+
<p>To support them for a specific class, add a
|
|
704
|
+
<code class="docutils literal notranslate"><span class="pre">cdef</span> <span class="pre">public</span> <span class="pre">_SageObject__custom_name</span></code> attribute.</p>
|
|
705
|
+
</div>
|
|
706
|
+
</dd></dl>
|
|
707
|
+
|
|
708
|
+
<dl class="py method">
|
|
709
|
+
<dt class="sig sig-object py" id="snappy.HolonomyGroup.reset_name">
|
|
710
|
+
<span class="sig-name descname"><span class="pre">reset_name</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.HolonomyGroup.reset_name" title="Link to this definition"></a></dt>
|
|
711
|
+
<dd><p>File: /home/sage/sage/src/sage/structure/sage_object.pyx (starting at line 130)</p>
|
|
712
|
+
<p>Remove the custom name of an object.</p>
|
|
713
|
+
<p>EXAMPLES:</p>
|
|
714
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="n">P</span><span class="o">.<</span><span class="n">x</span><span class="o">></span> <span class="o">=</span> <span class="n">QQ</span><span class="p">[]</span>
|
|
715
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">P</span>
|
|
716
|
+
<span class="n">Univariate</span> <span class="n">Polynomial</span> <span class="n">Ring</span> <span class="ow">in</span> <span class="n">x</span> <span class="n">over</span> <span class="n">Rational</span> <span class="n">Field</span>
|
|
717
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">P</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span><span class="s1">'A polynomial ring'</span><span class="p">)</span>
|
|
718
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">P</span>
|
|
719
|
+
<span class="n">A</span> <span class="n">polynomial</span> <span class="n">ring</span>
|
|
720
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">P</span><span class="o">.</span><span class="n">reset_name</span><span class="p">()</span>
|
|
721
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">P</span>
|
|
722
|
+
<span class="n">Univariate</span> <span class="n">Polynomial</span> <span class="n">Ring</span> <span class="ow">in</span> <span class="n">x</span> <span class="n">over</span> <span class="n">Rational</span> <span class="n">Field</span>
|
|
723
|
+
</pre></div>
|
|
724
|
+
</div>
|
|
725
|
+
</dd></dl>
|
|
726
|
+
|
|
727
|
+
<dl class="py method">
|
|
728
|
+
<dt class="sig sig-object py" id="snappy.HolonomyGroup.sage">
|
|
729
|
+
<span class="sig-name descname"><span class="pre">sage</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.HolonomyGroup.sage" title="Link to this definition"></a></dt>
|
|
730
|
+
<dd><p>Returns the corresponding Sage FinitelyPresentedGroup</p>
|
|
731
|
+
</dd></dl>
|
|
732
|
+
|
|
733
|
+
<dl class="py method">
|
|
734
|
+
<dt class="sig sig-object py" id="snappy.HolonomyGroup.save">
|
|
735
|
+
<span class="sig-name descname"><span class="pre">save</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">compress</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.HolonomyGroup.save" title="Link to this definition"></a></dt>
|
|
736
|
+
<dd><p>File: /home/sage/sage/src/sage/structure/sage_object.pyx (starting at line 445)</p>
|
|
737
|
+
<p>Save <code class="docutils literal notranslate"><span class="pre">self</span></code> to the given filename.</p>
|
|
738
|
+
<p>EXAMPLES:</p>
|
|
739
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="c1"># needs sage.symbolic</span>
|
|
740
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">x</span> <span class="o">=</span> <span class="n">SR</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s2">"x"</span><span class="p">)</span>
|
|
741
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">f</span> <span class="o">=</span> <span class="n">x</span><span class="o">^</span><span class="mi">3</span> <span class="o">+</span> <span class="mi">5</span>
|
|
742
|
+
<span class="n">sage</span><span class="p">:</span> <span class="kn">from</span> <span class="nn">tempfile</span> <span class="kn">import</span> <span class="n">NamedTemporaryFile</span>
|
|
743
|
+
<span class="n">sage</span><span class="p">:</span> <span class="k">with</span> <span class="n">NamedTemporaryFile</span><span class="p">(</span><span class="n">suffix</span><span class="o">=</span><span class="s1">'.sobj'</span><span class="p">)</span> <span class="k">as</span> <span class="n">t</span><span class="p">:</span>
|
|
744
|
+
<span class="o">....</span><span class="p">:</span> <span class="n">f</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">t</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
|
745
|
+
<span class="o">....</span><span class="p">:</span> <span class="n">load</span><span class="p">(</span><span class="n">t</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
|
746
|
+
<span class="n">x</span><span class="o">^</span><span class="mi">3</span> <span class="o">+</span> <span class="mi">5</span>
|
|
747
|
+
</pre></div>
|
|
748
|
+
</div>
|
|
749
|
+
</dd></dl>
|
|
750
|
+
|
|
751
|
+
</dd></dl>
|
|
752
|
+
|
|
753
|
+
</section>
|
|
754
|
+
<section id="symmetrygroup">
|
|
755
|
+
<h2>SymmetryGroup<a class="headerlink" href="#symmetrygroup" title="Link to this heading"></a></h2>
|
|
756
|
+
<dl class="py class">
|
|
757
|
+
<dt class="sig sig-object py" id="snappy.SymmetryGroup">
|
|
758
|
+
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.</span></span><span class="sig-name descname"><span class="pre">SymmetryGroup</span></span><a class="headerlink" href="#snappy.SymmetryGroup" title="Link to this definition"></a></dt>
|
|
759
|
+
<dd><p>A SymmetryGroup is a group of self-isometries of hyperbolic
|
|
760
|
+
3-manifold. Instantiate as follows:</p>
|
|
761
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'m004'</span><span class="p">)</span>
|
|
762
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">symmetry_group</span><span class="p">()</span>
|
|
763
|
+
<span class="go">D4</span>
|
|
764
|
+
</pre></div>
|
|
765
|
+
</div>
|
|
766
|
+
<dl class="py method">
|
|
767
|
+
<dt class="sig sig-object py" id="snappy.SymmetryGroup.abelian_description">
|
|
768
|
+
<span class="sig-name descname"><span class="pre">abelian_description</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.SymmetryGroup.abelian_description" title="Link to this definition"></a></dt>
|
|
769
|
+
<dd><p>If the symmetry group is abelian, return it as an AbelianGroup</p>
|
|
770
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">S</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'v3379'</span><span class="p">)</span><span class="o">.</span><span class="n">symmetry_group</span><span class="p">()</span>
|
|
771
|
+
<span class="gp">>>> </span><span class="n">S</span><span class="o">.</span><span class="n">abelian_description</span><span class="p">()</span>
|
|
772
|
+
<span class="go">Z/2 + Z/2 + Z/2</span>
|
|
773
|
+
</pre></div>
|
|
774
|
+
</div>
|
|
775
|
+
</dd></dl>
|
|
776
|
+
|
|
777
|
+
<dl class="py method">
|
|
778
|
+
<dt class="sig sig-object py" id="snappy.SymmetryGroup.abelianization">
|
|
779
|
+
<span class="sig-name descname"><span class="pre">abelianization</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.SymmetryGroup.abelianization" title="Link to this definition"></a></dt>
|
|
780
|
+
<dd><p>Return the abelianization of the symmetry group</p>
|
|
781
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">S</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'m004'</span><span class="p">)</span><span class="o">.</span><span class="n">symmetry_group</span><span class="p">()</span>
|
|
782
|
+
<span class="gp">>>> </span><span class="n">S</span><span class="o">.</span><span class="n">abelianization</span><span class="p">()</span>
|
|
783
|
+
<span class="go">Z/2 + Z/2</span>
|
|
784
|
+
</pre></div>
|
|
785
|
+
</div>
|
|
786
|
+
</dd></dl>
|
|
787
|
+
|
|
788
|
+
<dl class="py method">
|
|
789
|
+
<dt class="sig sig-object py" id="snappy.SymmetryGroup.center">
|
|
790
|
+
<span class="sig-name descname"><span class="pre">center</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.SymmetryGroup.center" title="Link to this definition"></a></dt>
|
|
791
|
+
<dd><p>Return the center of the symmetry group</p>
|
|
792
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">S</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'m004'</span><span class="p">)</span><span class="o">.</span><span class="n">symmetry_group</span><span class="p">()</span>
|
|
793
|
+
<span class="gp">>>> </span><span class="n">S</span><span class="o">.</span><span class="n">center</span><span class="p">()</span>
|
|
794
|
+
<span class="go">Z/2</span>
|
|
795
|
+
</pre></div>
|
|
796
|
+
</div>
|
|
797
|
+
</dd></dl>
|
|
798
|
+
|
|
799
|
+
<dl class="py method">
|
|
800
|
+
<dt class="sig sig-object py" id="snappy.SymmetryGroup.commutator_subgroup">
|
|
801
|
+
<span class="sig-name descname"><span class="pre">commutator_subgroup</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.SymmetryGroup.commutator_subgroup" title="Link to this definition"></a></dt>
|
|
802
|
+
<dd><p>Return the commutator subgroup of the SymmetryGroup</p>
|
|
803
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">S</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'m004'</span><span class="p">)</span><span class="o">.</span><span class="n">symmetry_group</span><span class="p">()</span>
|
|
804
|
+
<span class="gp">>>> </span><span class="n">S</span>
|
|
805
|
+
<span class="go">D4</span>
|
|
806
|
+
<span class="gp">>>> </span><span class="n">S</span><span class="o">.</span><span class="n">commutator_subgroup</span><span class="p">()</span>
|
|
807
|
+
<span class="go">Z/2</span>
|
|
808
|
+
</pre></div>
|
|
809
|
+
</div>
|
|
810
|
+
</dd></dl>
|
|
811
|
+
|
|
812
|
+
<dl class="py method">
|
|
813
|
+
<dt class="sig sig-object py" id="snappy.SymmetryGroup.direct_product_description">
|
|
814
|
+
<span class="sig-name descname"><span class="pre">direct_product_description</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.SymmetryGroup.direct_product_description" title="Link to this definition"></a></dt>
|
|
815
|
+
<dd><p>If the SymmetryGroup is a nontrivial direct product with at
|
|
816
|
+
least one nonabelian factor, return a pair of SymmetryGroups
|
|
817
|
+
consisting of the (two) factors.</p>
|
|
818
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">S</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'s960'</span><span class="p">)</span><span class="o">.</span><span class="n">symmetry_group</span><span class="p">()</span>
|
|
819
|
+
<span class="gp">>>> </span><span class="n">S</span><span class="o">.</span><span class="n">direct_product_description</span><span class="p">()</span>
|
|
820
|
+
<span class="go">(Z/4, D3)</span>
|
|
821
|
+
</pre></div>
|
|
822
|
+
</div>
|
|
823
|
+
</dd></dl>
|
|
824
|
+
|
|
825
|
+
<dl class="py method">
|
|
826
|
+
<dt class="sig sig-object py" id="snappy.SymmetryGroup.is_S5">
|
|
827
|
+
<span class="sig-name descname"><span class="pre">is_S5</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.SymmetryGroup.is_S5" title="Link to this definition"></a></dt>
|
|
828
|
+
<dd><p>Returns whether the group is the symmetric group on five things.</p>
|
|
829
|
+
</dd></dl>
|
|
830
|
+
|
|
831
|
+
<dl class="py method">
|
|
832
|
+
<dt class="sig sig-object py" id="snappy.SymmetryGroup.is_abelian">
|
|
833
|
+
<span class="sig-name descname"><span class="pre">is_abelian</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.SymmetryGroup.is_abelian" title="Link to this definition"></a></dt>
|
|
834
|
+
<dd><p>Return whether the symmetry group is abelian.</p>
|
|
835
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">S</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'m004'</span><span class="p">)</span><span class="o">.</span><span class="n">symmetry_group</span><span class="p">()</span>
|
|
836
|
+
<span class="gp">>>> </span><span class="n">S</span><span class="o">.</span><span class="n">is_abelian</span><span class="p">()</span>
|
|
837
|
+
<span class="go">False</span>
|
|
838
|
+
</pre></div>
|
|
839
|
+
</div>
|
|
840
|
+
</dd></dl>
|
|
841
|
+
|
|
842
|
+
<dl class="py method">
|
|
843
|
+
<dt class="sig sig-object py" id="snappy.SymmetryGroup.is_amphicheiral">
|
|
844
|
+
<span class="sig-name descname"><span class="pre">is_amphicheiral</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.SymmetryGroup.is_amphicheiral" title="Link to this definition"></a></dt>
|
|
845
|
+
<dd><p>Return whether the manifold has an orientation reversing symmetry.</p>
|
|
846
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">S</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'m004'</span><span class="p">)</span><span class="o">.</span><span class="n">symmetry_group</span><span class="p">()</span>
|
|
847
|
+
<span class="gp">>>> </span><span class="n">S</span><span class="o">.</span><span class="n">is_amphicheiral</span><span class="p">()</span>
|
|
848
|
+
<span class="go">True</span>
|
|
849
|
+
</pre></div>
|
|
850
|
+
</div>
|
|
851
|
+
</dd></dl>
|
|
852
|
+
|
|
853
|
+
<dl class="py method">
|
|
854
|
+
<dt class="sig sig-object py" id="snappy.SymmetryGroup.is_dihedral">
|
|
855
|
+
<span class="sig-name descname"><span class="pre">is_dihedral</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.SymmetryGroup.is_dihedral" title="Link to this definition"></a></dt>
|
|
856
|
+
<dd><p>Return whether the symmetry group is dihedral.</p>
|
|
857
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">S</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'m004'</span><span class="p">)</span><span class="o">.</span><span class="n">symmetry_group</span><span class="p">()</span>
|
|
858
|
+
<span class="gp">>>> </span><span class="n">S</span><span class="o">.</span><span class="n">is_dihedral</span><span class="p">()</span>
|
|
859
|
+
<span class="go">True</span>
|
|
860
|
+
</pre></div>
|
|
861
|
+
</div>
|
|
862
|
+
</dd></dl>
|
|
863
|
+
|
|
864
|
+
<dl class="py method">
|
|
865
|
+
<dt class="sig sig-object py" id="snappy.SymmetryGroup.is_direct_product">
|
|
866
|
+
<span class="sig-name descname"><span class="pre">is_direct_product</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.SymmetryGroup.is_direct_product" title="Link to this definition"></a></dt>
|
|
867
|
+
<dd><p>Return whether the SymmetryGroup is a nontrivial direct
|
|
868
|
+
product with at least one nonabelian factor.</p>
|
|
869
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">S</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'s960'</span><span class="p">)</span><span class="o">.</span><span class="n">symmetry_group</span><span class="p">()</span>
|
|
870
|
+
<span class="gp">>>> </span><span class="n">S</span><span class="o">.</span><span class="n">is_direct_product</span><span class="p">()</span>
|
|
871
|
+
<span class="go">True</span>
|
|
872
|
+
<span class="gp">>>> </span><span class="n">S</span>
|
|
873
|
+
<span class="go">Z/4 x D3</span>
|
|
874
|
+
</pre></div>
|
|
875
|
+
</div>
|
|
876
|
+
</dd></dl>
|
|
877
|
+
|
|
878
|
+
<dl class="py method">
|
|
879
|
+
<dt class="sig sig-object py" id="snappy.SymmetryGroup.is_full_group">
|
|
880
|
+
<span class="sig-name descname"><span class="pre">is_full_group</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.SymmetryGroup.is_full_group" title="Link to this definition"></a></dt>
|
|
881
|
+
<dd><p>Return whether the full symmetry group has been found.</p>
|
|
882
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">S</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'m004'</span><span class="p">)</span><span class="o">.</span><span class="n">symmetry_group</span><span class="p">()</span>
|
|
883
|
+
<span class="gp">>>> </span><span class="n">S</span><span class="o">.</span><span class="n">is_full_group</span><span class="p">()</span>
|
|
884
|
+
<span class="go">True</span>
|
|
885
|
+
</pre></div>
|
|
886
|
+
</div>
|
|
887
|
+
</dd></dl>
|
|
888
|
+
|
|
889
|
+
<dl class="py method">
|
|
890
|
+
<dt class="sig sig-object py" id="snappy.SymmetryGroup.is_invertible_knot">
|
|
891
|
+
<span class="sig-name descname"><span class="pre">is_invertible_knot</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.SymmetryGroup.is_invertible_knot" title="Link to this definition"></a></dt>
|
|
892
|
+
<dd><p>Return whether a one-cusped has a symmetry that acts on the
|
|
893
|
+
cusp via the matrix -I.</p>
|
|
894
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">S</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'m015'</span><span class="p">)</span><span class="o">.</span><span class="n">symmetry_group</span><span class="p">()</span>
|
|
895
|
+
<span class="gp">>>> </span><span class="n">S</span><span class="o">.</span><span class="n">is_invertible_knot</span><span class="p">()</span>
|
|
896
|
+
<span class="go">True</span>
|
|
897
|
+
</pre></div>
|
|
898
|
+
</div>
|
|
899
|
+
</dd></dl>
|
|
900
|
+
|
|
901
|
+
<dl class="py method">
|
|
902
|
+
<dt class="sig sig-object py" id="snappy.SymmetryGroup.is_polyhedral">
|
|
903
|
+
<span class="sig-name descname"><span class="pre">is_polyhedral</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.SymmetryGroup.is_polyhedral" title="Link to this definition"></a></dt>
|
|
904
|
+
<dd><p>Returns whether the symmetry group is a (possibly binary)
|
|
905
|
+
polyhedral group.</p>
|
|
906
|
+
</dd></dl>
|
|
907
|
+
|
|
908
|
+
<dl class="py method">
|
|
909
|
+
<dt class="sig sig-object py" id="snappy.SymmetryGroup.isometries">
|
|
910
|
+
<span class="sig-name descname"><span class="pre">isometries</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.SymmetryGroup.isometries" title="Link to this definition"></a></dt>
|
|
911
|
+
<dd><p>Return a detailed list of all the isometries in the symmetry group.</p>
|
|
912
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">S</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'s959'</span><span class="p">)</span><span class="o">.</span><span class="n">symmetry_group</span><span class="p">()</span>
|
|
913
|
+
<span class="gp">>>> </span><span class="n">isoms</span> <span class="o">=</span> <span class="n">S</span><span class="o">.</span><span class="n">isometries</span><span class="p">()</span>
|
|
914
|
+
<span class="gp">>>> </span><span class="n">isoms</span><span class="p">[</span><span class="mi">8</span><span class="p">]</span>
|
|
915
|
+
<span class="go">0 -> 1 1 -> 0</span>
|
|
916
|
+
<span class="go">[-1 -1] [ 0 1]</span>
|
|
917
|
+
<span class="go">[ 1 0] [-1 -1]</span>
|
|
918
|
+
<span class="go">Does not extend to link</span>
|
|
919
|
+
</pre></div>
|
|
920
|
+
</div>
|
|
921
|
+
</dd></dl>
|
|
922
|
+
|
|
923
|
+
<dl class="py method">
|
|
924
|
+
<dt class="sig sig-object py" id="snappy.SymmetryGroup.multiply_elements">
|
|
925
|
+
<span class="sig-name descname"><span class="pre">multiply_elements</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">i</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">j</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.SymmetryGroup.multiply_elements" title="Link to this definition"></a></dt>
|
|
926
|
+
<dd><p>Returns the product of group elements i and j. The convention
|
|
927
|
+
is that products of symmetries read right to left. That is,
|
|
928
|
+
the composition (symmetry[i] o symmetry[j]) acts by first
|
|
929
|
+
doing symmetry[j], then symmetry[i].</p>
|
|
930
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">S</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'m004'</span><span class="p">)</span><span class="o">.</span><span class="n">symmetry_group</span><span class="p">()</span>
|
|
931
|
+
<span class="gp">>>> </span><span class="n">S</span><span class="o">.</span><span class="n">multiply_elements</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span>
|
|
932
|
+
<span class="go">1</span>
|
|
933
|
+
</pre></div>
|
|
934
|
+
</div>
|
|
935
|
+
</dd></dl>
|
|
936
|
+
|
|
937
|
+
<dl class="py method">
|
|
938
|
+
<dt class="sig sig-object py" id="snappy.SymmetryGroup.order">
|
|
939
|
+
<span class="sig-name descname"><span class="pre">order</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.SymmetryGroup.order" title="Link to this definition"></a></dt>
|
|
940
|
+
<dd><p>Return the order of the symmetry group</p>
|
|
941
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">S</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'s000'</span><span class="p">)</span><span class="o">.</span><span class="n">symmetry_group</span><span class="p">()</span>
|
|
942
|
+
<span class="gp">>>> </span><span class="n">S</span><span class="o">.</span><span class="n">order</span><span class="p">()</span>
|
|
943
|
+
<span class="go">4</span>
|
|
944
|
+
</pre></div>
|
|
945
|
+
</div>
|
|
946
|
+
</dd></dl>
|
|
947
|
+
|
|
948
|
+
<dl class="py method">
|
|
949
|
+
<dt class="sig sig-object py" id="snappy.SymmetryGroup.polyhedral_description">
|
|
950
|
+
<span class="sig-name descname"><span class="pre">polyhedral_description</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.SymmetryGroup.polyhedral_description" title="Link to this definition"></a></dt>
|
|
951
|
+
<dd><p>If the symmetry group is a (possibly binary)
|
|
952
|
+
polyhedral group, return a description of it.</p>
|
|
953
|
+
</dd></dl>
|
|
954
|
+
|
|
955
|
+
</dd></dl>
|
|
956
|
+
|
|
957
|
+
</section>
|
|
958
|
+
<section id="dirichletdomain">
|
|
959
|
+
<h2>DirichletDomain<a class="headerlink" href="#dirichletdomain" title="Link to this heading"></a></h2>
|
|
960
|
+
<dl class="py class">
|
|
961
|
+
<dt class="sig sig-object py" id="snappy.DirichletDomain">
|
|
962
|
+
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.</span></span><span class="sig-name descname"><span class="pre">DirichletDomain</span></span><a class="headerlink" href="#snappy.DirichletDomain" title="Link to this definition"></a></dt>
|
|
963
|
+
<dd><p>A DirichletDomain object represents a Dirichlet Domain of
|
|
964
|
+
a hyperbolic manifold, typically centered at a point which
|
|
965
|
+
is a local maximum of injectivity radius. It will have ideal
|
|
966
|
+
vertices if the manifold is not closed.</p>
|
|
967
|
+
<p>Instantiate as M.dirichlet_domain()
|
|
968
|
+
where M is a Manifold to
|
|
969
|
+
obtain a Dirichlet Domain centered at a point which maximizes
|
|
970
|
+
injectivity radius.</p>
|
|
971
|
+
<p>Other options can be provided to customize the computation, with
|
|
972
|
+
the default values shown here</p>
|
|
973
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'m003(3,-4)'</span><span class="p">)</span>
|
|
974
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">dirichlet_domain</span><span class="p">(</span><span class="n">vertex_epsilon</span><span class="o">=</span><span class="mf">10.0</span><span class="o">**-</span><span class="mi">8</span><span class="p">,</span> <span class="n">displacement</span> <span class="o">=</span> <span class="p">[</span><span class="mf">0.0</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">],</span> <span class="n">centroid_at_origin</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">maximize_injectivity_radius</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
975
|
+
<span class="go">40 finite vertices, 0 ideal vertices; 60 edges; 22 faces</span>
|
|
976
|
+
</pre></div>
|
|
977
|
+
</div>
|
|
978
|
+
<p>You can also create a Dirichlet Domain from a file listing matrix
|
|
979
|
+
generators for the group, in SnapPea’s “% Generator” format, via</p>
|
|
980
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">D</span> <span class="o">=</span> <span class="n">DirichletDomain</span><span class="p">(</span><span class="n">generator_file</span><span class="o">=</span><span class="s1">'test.gens'</span><span class="p">)</span>
|
|
981
|
+
</pre></div>
|
|
982
|
+
</div>
|
|
983
|
+
<p>Or from matrices:</p>
|
|
984
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">G</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'m004'</span><span class="p">)</span><span class="o">.</span><span class="n">fundamental_group</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span>
|
|
985
|
+
<span class="gp">>>> </span><span class="n">matrices</span> <span class="o">=</span> <span class="p">[</span> <span class="n">G</span><span class="o">.</span><span class="n">O31</span><span class="p">(</span><span class="s1">'a'</span><span class="p">),</span> <span class="n">G</span><span class="o">.</span><span class="n">O31</span><span class="p">(</span><span class="s1">'b'</span><span class="p">),</span> <span class="n">G</span><span class="o">.</span><span class="n">O31</span><span class="p">(</span><span class="s1">'c'</span><span class="p">)</span> <span class="p">]</span> <span class="c1"># Note: some of the matrices contain (near) 0 entries and thus this tests that Object2Real converts small numbers fromatted by pari as "1.0 E-10" (note the pace before "E") correctly when not in SageMath.</span>
|
|
986
|
+
<span class="gp">>>> </span><span class="n">DirichletDomain</span><span class="p">(</span><span class="n">O31_generators</span> <span class="o">=</span> <span class="n">matrices</span><span class="p">,</span>
|
|
987
|
+
<span class="gp">... </span> <span class="n">maximize_injectivity_radius</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span>
|
|
988
|
+
<span class="go">8 finite vertices, 2 ideal vertices; 20 edges; 12 faces</span>
|
|
989
|
+
</pre></div>
|
|
990
|
+
</div>
|
|
991
|
+
<p>The group elements for the face-pairings of the Dirichlet domain
|
|
992
|
+
can be given as words in the original generators by setting
|
|
993
|
+
<code class="docutils literal notranslate"><span class="pre">include_words</span> <span class="pre">=</span> <span class="pre">True</span></code>.</p>
|
|
994
|
+
<dl class="py method">
|
|
995
|
+
<dt class="sig sig-object py" id="snappy.DirichletDomain.edge_list">
|
|
996
|
+
<span class="sig-name descname"><span class="pre">edge_list</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.DirichletDomain.edge_list" title="Link to this definition"></a></dt>
|
|
997
|
+
<dd><p>Return a list of edges, each represented as a dictionar with keys
|
|
998
|
+
‘tail_vertex_index’, ‘tip_vertex_index’, ‘edge_class’.</p>
|
|
999
|
+
<p>The index (into vertex_data_list()) to the two vertices at the
|
|
1000
|
+
end of the edge are stored in ‘tail_vertex_index’ and
|
|
1001
|
+
‘tip_vertex_index’. The index of the edge class this edge
|
|
1002
|
+
belongs to is stored in ‘edge_class’.</p>
|
|
1003
|
+
</dd></dl>
|
|
1004
|
+
|
|
1005
|
+
<dl class="py method">
|
|
1006
|
+
<dt class="sig sig-object py" id="snappy.DirichletDomain.export_stl">
|
|
1007
|
+
<span class="sig-name descname"><span class="pre">export_stl</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">model</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'klein'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cutout</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">num_subdivisions</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">3</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">shrink_factor</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.9</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cutoff_radius</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.9</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">callback</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.DirichletDomain.export_stl" title="Link to this definition"></a></dt>
|
|
1008
|
+
<dd><p>Export the Dirichlet domain as an stl file suitable for 3d printing.</p>
|
|
1009
|
+
<p>Arguments can be given to modify the model produced:</p>
|
|
1010
|
+
<ul class="simple">
|
|
1011
|
+
<li><p>model=’klein’ - (alt. ‘poincare’) the model of HH^3 to use.</p></li>
|
|
1012
|
+
<li><p>cutout=False - remove the interior of each face</p></li>
|
|
1013
|
+
<li><p>shrink_factor=0.9 - the fraction to cut out of each face</p></li>
|
|
1014
|
+
<li><p>cuttoff_radius=0.9 - maximum rescaling for projection into Poincare model</p></li>
|
|
1015
|
+
<li><p>num_subdivision=3 - number of times to subdivide for the Poincare model</p></li>
|
|
1016
|
+
</ul>
|
|
1017
|
+
<p>For printing domains in the Poincare model, cutoff_radius is critical for avoiding
|
|
1018
|
+
infinitely thin cusps, which cannot be printed.</p>
|
|
1019
|
+
<p>This can take a long time for finely subdivided domains. So we call UI_callback
|
|
1020
|
+
every so often if it is not None.</p>
|
|
1021
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">D</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'m004'</span><span class="p">)</span><span class="o">.</span><span class="n">dirichlet_domain</span><span class="p">()</span>
|
|
1022
|
+
<span class="gp">>>> </span><span class="n">D</span><span class="o">.</span><span class="n">export_stl</span><span class="p">(</span><span class="s1">'fig-eight-klein.stl'</span><span class="p">)</span>
|
|
1023
|
+
<span class="gp">>>> </span><span class="n">D</span><span class="o">.</span><span class="n">export_stl</span><span class="p">(</span><span class="s1">'fig-eight-poincare.stl'</span><span class="p">,</span> <span class="n">model</span><span class="o">=</span><span class="s1">'poincare'</span><span class="p">)</span>
|
|
1024
|
+
<span class="gp">>>> </span><span class="n">D</span><span class="o">.</span><span class="n">export_stl</span><span class="p">(</span><span class="s1">'fig-eight-klein-wireframe.stl'</span><span class="p">,</span> <span class="n">cutout</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
1025
|
+
<span class="gp">>>> </span><span class="n">D</span><span class="o">.</span><span class="n">export_stl</span><span class="p">(</span><span class="s1">'fig-eight-poincare-wireframe.stl'</span><span class="p">,</span> <span class="n">model</span><span class="o">=</span><span class="s1">'poincare'</span><span class="p">,</span> <span class="n">cutout</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
1026
|
+
</pre></div>
|
|
1027
|
+
</div>
|
|
1028
|
+
</dd></dl>
|
|
1029
|
+
|
|
1030
|
+
<dl class="py method">
|
|
1031
|
+
<dt class="sig sig-object py" id="snappy.DirichletDomain.face_list">
|
|
1032
|
+
<span class="sig-name descname"><span class="pre">face_list</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.DirichletDomain.face_list" title="Link to this definition"></a></dt>
|
|
1033
|
+
<dd><p>Return a list of faces, each represented as a dictionary with
|
|
1034
|
+
keys ‘vertices’, ‘distance’, ‘closest’, ‘hue’, ‘vertex_indices’,
|
|
1035
|
+
‘edge_indices’, ‘vertex_image_indices’, ‘edge_image_indices’,
|
|
1036
|
+
‘edge_orientations’.</p>
|
|
1037
|
+
<p>The distance from the origin is the value for ‘distance’, and
|
|
1038
|
+
the value for ‘closest’ is the orthogonal projection of the
|
|
1039
|
+
origin to the plane containing the face. The vertices of each
|
|
1040
|
+
face are listed in clockwise order, as viewed from outside the
|
|
1041
|
+
polyhedron.</p>
|
|
1042
|
+
<p>The coordinates of vertices are stored in ‘vertices’ and the
|
|
1043
|
+
corresponding index into vertex_data_list() is stored in
|
|
1044
|
+
‘vertex_index’. The indices (in edge_list()) to the edges of
|
|
1045
|
+
the face (also in clockwise order) are stored in
|
|
1046
|
+
‘edge_indices’ such that the first edge is adjacent to the
|
|
1047
|
+
first and second vertex. The respective value in
|
|
1048
|
+
‘edge_orientations’ is +/-1 to indicate whether the
|
|
1049
|
+
orientation of the edge induced from the orientation of the face
|
|
1050
|
+
is the same or opposite than the edges orientation.</p>
|
|
1051
|
+
<p>To find the image of a vertex or edge adjacent to a face under
|
|
1052
|
+
the pairing matrix for this face, lookup the index in
|
|
1053
|
+
‘vertex_image_indices’, respectively, ‘edge_image_indices’ at
|
|
1054
|
+
the respective position.</p>
|
|
1055
|
+
</dd></dl>
|
|
1056
|
+
|
|
1057
|
+
<dl class="py method">
|
|
1058
|
+
<dt class="sig sig-object py" id="snappy.DirichletDomain.in_radius">
|
|
1059
|
+
<span class="sig-name descname"><span class="pre">in_radius</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.DirichletDomain.in_radius" title="Link to this definition"></a></dt>
|
|
1060
|
+
<dd><p>Return the radius of the largest inscribed sphere.</p>
|
|
1061
|
+
</dd></dl>
|
|
1062
|
+
|
|
1063
|
+
<dl class="py method">
|
|
1064
|
+
<dt class="sig sig-object py" id="snappy.DirichletDomain.length_spectrum_dicts">
|
|
1065
|
+
<span class="sig-name descname"><span class="pre">length_spectrum_dicts</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cutoff_length</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1.0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">full_rigor</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">multiplicities</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">user_radius</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">grouped</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.DirichletDomain.length_spectrum_dicts" title="Link to this definition"></a></dt>
|
|
1066
|
+
<dd><p>Return a list of info objects describing the short
|
|
1067
|
+
geodesics up to the specified cutoff length. The keys are
|
|
1068
|
+
‘length’, ‘parity’, ‘topology’, and ‘multiplicity’. The
|
|
1069
|
+
length is the complex length; the parity specifies whether
|
|
1070
|
+
orientation is preserved; and topology distinguishes between
|
|
1071
|
+
circles and mirrored intervals. Finally, the key ‘matrix’
|
|
1072
|
+
in the fundamental group realizing this element.</p>
|
|
1073
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'m004(1,2)'</span><span class="p">)</span>
|
|
1074
|
+
<span class="gp">>>> </span><span class="n">D</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">dirichlet_domain</span><span class="p">(</span><span class="n">maximize_injectivity_radius</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
|
1075
|
+
<span class="gp">>>> </span><span class="n">lengths</span> <span class="o">=</span> <span class="n">D</span><span class="o">.</span><span class="n">length_spectrum_dicts</span><span class="p">()</span>
|
|
1076
|
+
<span class="gp">>>> </span><span class="nb">len</span><span class="p">(</span><span class="n">lengths</span><span class="p">)</span>
|
|
1077
|
+
<span class="go">2</span>
|
|
1078
|
+
<span class="gp">>>> </span><span class="n">lengths</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">matrix</span> <span class="ow">in</span> <span class="n">D</span><span class="o">.</span><span class="n">pairing_matrices</span><span class="p">()</span>
|
|
1079
|
+
<span class="go">True</span>
|
|
1080
|
+
</pre></div>
|
|
1081
|
+
</div>
|
|
1082
|
+
<p>If the flag ‘grouped’ is False, then each geodesic is returned as
|
|
1083
|
+
a separate item rather than collating by (length, parity, topology).
|
|
1084
|
+
If the flag ‘multiplicities’ is False, then the geodesics <em>are</em>
|
|
1085
|
+
collated but the multiplicity of each item is set to 0.</p>
|
|
1086
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'m003(-3, 1)'</span><span class="p">)</span>
|
|
1087
|
+
<span class="gp">>>> </span><span class="n">D</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">dirichlet_domain</span><span class="p">()</span>
|
|
1088
|
+
<span class="gp">>>> </span><span class="p">[</span><span class="n">g</span><span class="o">.</span><span class="n">multiplicity</span> <span class="k">for</span> <span class="n">g</span> <span class="ow">in</span> <span class="n">D</span><span class="o">.</span><span class="n">length_spectrum_dicts</span><span class="p">()]</span>
|
|
1089
|
+
<span class="go">[3, 3]</span>
|
|
1090
|
+
<span class="gp">>>> </span><span class="p">[</span><span class="n">g</span><span class="o">.</span><span class="n">multiplicity</span> <span class="k">for</span> <span class="n">g</span> <span class="ow">in</span> <span class="n">D</span><span class="o">.</span><span class="n">length_spectrum_dicts</span><span class="p">(</span><span class="n">grouped</span><span class="o">=</span><span class="kc">False</span><span class="p">)]</span>
|
|
1091
|
+
<span class="go">[1, 1, 1, 1, 1, 1]</span>
|
|
1092
|
+
</pre></div>
|
|
1093
|
+
</div>
|
|
1094
|
+
</dd></dl>
|
|
1095
|
+
|
|
1096
|
+
<dl class="py method">
|
|
1097
|
+
<dt class="sig sig-object py" id="snappy.DirichletDomain.manifold">
|
|
1098
|
+
<span class="sig-name descname"><span class="pre">manifold</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.DirichletDomain.manifold" title="Link to this definition"></a></dt>
|
|
1099
|
+
<dd><p>Returns a Manifold computed directly from the Dirichlet
|
|
1100
|
+
domain, regarded as polyhedron with faces identified in pairs.
|
|
1101
|
+
Only works if this gives a manifold not an orbifold.</p>
|
|
1102
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'7_3'</span><span class="p">)</span>
|
|
1103
|
+
<span class="gp">>>> </span><span class="n">D</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">dirichlet_domain</span><span class="p">()</span>
|
|
1104
|
+
<span class="gp">>>> </span><span class="n">A</span> <span class="o">=</span> <span class="n">D</span><span class="o">.</span><span class="n">manifold</span><span class="p">()</span>
|
|
1105
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">is_isometric_to</span><span class="p">(</span><span class="n">A</span><span class="p">)</span>
|
|
1106
|
+
<span class="go">True</span>
|
|
1107
|
+
</pre></div>
|
|
1108
|
+
</div>
|
|
1109
|
+
</dd></dl>
|
|
1110
|
+
|
|
1111
|
+
<dl class="py method">
|
|
1112
|
+
<dt class="sig sig-object py" id="snappy.DirichletDomain.num_edges">
|
|
1113
|
+
<span class="sig-name descname"><span class="pre">num_edges</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.DirichletDomain.num_edges" title="Link to this definition"></a></dt>
|
|
1114
|
+
<dd><p>Return the number of edges.</p>
|
|
1115
|
+
</dd></dl>
|
|
1116
|
+
|
|
1117
|
+
<dl class="py method">
|
|
1118
|
+
<dt class="sig sig-object py" id="snappy.DirichletDomain.num_faces">
|
|
1119
|
+
<span class="sig-name descname"><span class="pre">num_faces</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.DirichletDomain.num_faces" title="Link to this definition"></a></dt>
|
|
1120
|
+
<dd><p>Return the number of faces.</p>
|
|
1121
|
+
</dd></dl>
|
|
1122
|
+
|
|
1123
|
+
<dl class="py method">
|
|
1124
|
+
<dt class="sig sig-object py" id="snappy.DirichletDomain.num_finite_vertices">
|
|
1125
|
+
<span class="sig-name descname"><span class="pre">num_finite_vertices</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.DirichletDomain.num_finite_vertices" title="Link to this definition"></a></dt>
|
|
1126
|
+
<dd><p>Return the number of finite (non-ideal) vertices.</p>
|
|
1127
|
+
</dd></dl>
|
|
1128
|
+
|
|
1129
|
+
<dl class="py method">
|
|
1130
|
+
<dt class="sig sig-object py" id="snappy.DirichletDomain.num_ideal_vertices">
|
|
1131
|
+
<span class="sig-name descname"><span class="pre">num_ideal_vertices</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.DirichletDomain.num_ideal_vertices" title="Link to this definition"></a></dt>
|
|
1132
|
+
<dd><p>Return the number of ideal vertices.</p>
|
|
1133
|
+
</dd></dl>
|
|
1134
|
+
|
|
1135
|
+
<dl class="py method">
|
|
1136
|
+
<dt class="sig sig-object py" id="snappy.DirichletDomain.num_vertices">
|
|
1137
|
+
<span class="sig-name descname"><span class="pre">num_vertices</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.DirichletDomain.num_vertices" title="Link to this definition"></a></dt>
|
|
1138
|
+
<dd><p>Return the number of vertices.</p>
|
|
1139
|
+
</dd></dl>
|
|
1140
|
+
|
|
1141
|
+
<dl class="py method">
|
|
1142
|
+
<dt class="sig sig-object py" id="snappy.DirichletDomain.out_radius">
|
|
1143
|
+
<span class="sig-name descname"><span class="pre">out_radius</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.DirichletDomain.out_radius" title="Link to this definition"></a></dt>
|
|
1144
|
+
<dd><p>Return the radius of the smallest circubscribed sphere.</p>
|
|
1145
|
+
</dd></dl>
|
|
1146
|
+
|
|
1147
|
+
<dl class="py method">
|
|
1148
|
+
<dt class="sig sig-object py" id="snappy.DirichletDomain.pairing_matrices">
|
|
1149
|
+
<span class="sig-name descname"><span class="pre">pairing_matrices</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.DirichletDomain.pairing_matrices" title="Link to this definition"></a></dt>
|
|
1150
|
+
<dd><p>Returns a list of the O31Matrices which pair the faces of
|
|
1151
|
+
this DirichletDomain.</p>
|
|
1152
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'s345'</span><span class="p">)</span>
|
|
1153
|
+
<span class="gp">>>> </span><span class="n">D</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">dirichlet_domain</span><span class="p">()</span>
|
|
1154
|
+
<span class="gp">>>> </span><span class="n">matrices</span> <span class="o">=</span> <span class="n">D</span><span class="o">.</span><span class="n">pairing_matrices</span><span class="p">()</span>
|
|
1155
|
+
<span class="gp">>>> </span><span class="n">D1</span> <span class="o">=</span> <span class="n">DirichletDomain</span><span class="p">(</span><span class="n">O31_generators</span><span class="o">=</span><span class="n">matrices</span><span class="p">)</span>
|
|
1156
|
+
<span class="gp">>>> </span><span class="n">N</span> <span class="o">=</span> <span class="n">D1</span><span class="o">.</span><span class="n">manifold</span><span class="p">()</span>
|
|
1157
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">is_isometric_to</span><span class="p">(</span><span class="n">N</span><span class="p">)</span>
|
|
1158
|
+
<span class="go">True</span>
|
|
1159
|
+
</pre></div>
|
|
1160
|
+
</div>
|
|
1161
|
+
</dd></dl>
|
|
1162
|
+
|
|
1163
|
+
<dl class="py method">
|
|
1164
|
+
<dt class="sig sig-object py" id="snappy.DirichletDomain.pairing_words">
|
|
1165
|
+
<span class="sig-name descname"><span class="pre">pairing_words</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.DirichletDomain.pairing_words" title="Link to this definition"></a></dt>
|
|
1166
|
+
<dd><p>Group elements which pair the faces of this DirichletDomain
|
|
1167
|
+
as words in the original generators:</p>
|
|
1168
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'m004'</span><span class="p">)</span>
|
|
1169
|
+
<span class="gp">>>> </span><span class="n">D</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">dirichlet_domain</span><span class="p">(</span><span class="n">include_words</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span>
|
|
1170
|
+
<span class="gp">>>> </span><span class="nb">sorted</span><span class="p">(</span><span class="n">D</span><span class="o">.</span><span class="n">pairing_words</span><span class="p">())</span>
|
|
1171
|
+
<span class="go">['A', ...]</span>
|
|
1172
|
+
</pre></div>
|
|
1173
|
+
</div>
|
|
1174
|
+
<p>Requires that DirichletDomain was computed with
|
|
1175
|
+
include_words = True.</p>
|
|
1176
|
+
</dd></dl>
|
|
1177
|
+
|
|
1178
|
+
<dl class="py method">
|
|
1179
|
+
<dt class="sig sig-object py" id="snappy.DirichletDomain.save">
|
|
1180
|
+
<span class="sig-name descname"><span class="pre">save</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.DirichletDomain.save" title="Link to this definition"></a></dt>
|
|
1181
|
+
<dd><p>Save the Dirichlet domain as a text file in “% Generators” format.</p>
|
|
1182
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">snappy.number</span> <span class="kn">import</span> <span class="n">Number</span>
|
|
1183
|
+
<span class="gp">>>> </span><span class="n">acc</span><span class="p">,</span> <span class="n">Number</span><span class="o">.</span><span class="n">_accuracy_for_testing</span> <span class="o">=</span> <span class="n">Number</span><span class="o">.</span><span class="n">_accuracy_for_testing</span><span class="p">,</span> <span class="kc">None</span>
|
|
1184
|
+
<span class="gp">>>> </span><span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'m125'</span><span class="p">)</span>
|
|
1185
|
+
<span class="gp">>>> </span><span class="n">D</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">dirichlet_domain</span><span class="p">()</span>
|
|
1186
|
+
<span class="gp">>>> </span><span class="kn">from</span> <span class="nn">tempfile</span> <span class="kn">import</span> <span class="n">NamedTemporaryFile</span>
|
|
1187
|
+
<span class="gp">>>> </span><span class="n">f</span> <span class="o">=</span> <span class="n">NamedTemporaryFile</span><span class="p">(</span><span class="n">delete</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
|
1188
|
+
<span class="gp">>>> </span><span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
|
1189
|
+
<span class="gp">>>> </span><span class="n">D</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">f</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
|
1190
|
+
<span class="gp">>>> </span><span class="n">E</span> <span class="o">=</span> <span class="n">DirichletDomain</span><span class="p">(</span><span class="n">generator_file</span><span class="o">=</span><span class="n">f</span><span class="o">.</span><span class="n">name</span><span class="p">);</span> <span class="n">E</span>
|
|
1191
|
+
<span class="go">30 finite vertices, 2 ideal vertices; 50 edges; 20 faces</span>
|
|
1192
|
+
<span class="gp">>>> </span><span class="n">os</span><span class="o">.</span><span class="n">unlink</span><span class="p">(</span><span class="n">f</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
|
1193
|
+
<span class="gp">>>> </span><span class="kn">from</span> <span class="nn">pickle</span> <span class="kn">import</span> <span class="n">dumps</span><span class="p">,</span> <span class="n">loads</span>
|
|
1194
|
+
<span class="gp">>>> </span><span class="n">E</span> <span class="o">=</span> <span class="n">loads</span><span class="p">(</span><span class="n">dumps</span><span class="p">(</span><span class="n">D</span><span class="p">));</span> <span class="n">E</span>
|
|
1195
|
+
<span class="go">30 finite vertices, 2 ideal vertices; 50 edges; 20 faces</span>
|
|
1196
|
+
<span class="gp">>>> </span><span class="n">Number</span><span class="o">.</span><span class="n">_accuracy_for_testing</span> <span class="o">=</span> <span class="n">acc</span>
|
|
1197
|
+
</pre></div>
|
|
1198
|
+
</div>
|
|
1199
|
+
</dd></dl>
|
|
1200
|
+
|
|
1201
|
+
<dl class="py method">
|
|
1202
|
+
<dt class="sig sig-object py" id="snappy.DirichletDomain.spine_radius">
|
|
1203
|
+
<span class="sig-name descname"><span class="pre">spine_radius</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.DirichletDomain.spine_radius" title="Link to this definition"></a></dt>
|
|
1204
|
+
<dd><p>Return the infimum of the radii (measured from the origin) of all
|
|
1205
|
+
spines dual to the Dirichlet domain.</p>
|
|
1206
|
+
</dd></dl>
|
|
1207
|
+
|
|
1208
|
+
<dl class="py method">
|
|
1209
|
+
<dt class="sig sig-object py" id="snappy.DirichletDomain.triangulation">
|
|
1210
|
+
<span class="sig-name descname"><span class="pre">triangulation</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.DirichletDomain.triangulation" title="Link to this definition"></a></dt>
|
|
1211
|
+
<dd><p>Returns a Triangulation computed directly from the Dirichlet
|
|
1212
|
+
domain, regarded as polyhedron with faces identified in pairs.
|
|
1213
|
+
Only works if this gives a manifold not an orbifold.</p>
|
|
1214
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'7_3'</span><span class="p">)</span>
|
|
1215
|
+
<span class="gp">>>> </span><span class="n">D</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">dirichlet_domain</span><span class="p">()</span>
|
|
1216
|
+
<span class="gp">>>> </span><span class="n">B</span> <span class="o">=</span> <span class="n">D</span><span class="o">.</span><span class="n">triangulation</span><span class="p">()</span>
|
|
1217
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">is_isometric_to</span><span class="p">(</span><span class="n">B</span><span class="o">.</span><span class="n">with_hyperbolic_structure</span><span class="p">())</span>
|
|
1218
|
+
<span class="go">True</span>
|
|
1219
|
+
</pre></div>
|
|
1220
|
+
</div>
|
|
1221
|
+
</dd></dl>
|
|
1222
|
+
|
|
1223
|
+
<dl class="py method">
|
|
1224
|
+
<dt class="sig sig-object py" id="snappy.DirichletDomain.vertex_list">
|
|
1225
|
+
<span class="sig-name descname"><span class="pre">vertex_list</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">details</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.DirichletDomain.vertex_list" title="Link to this definition"></a></dt>
|
|
1226
|
+
<dd><p>Return a list of the coordinates of the vertices. These are
|
|
1227
|
+
the three space coordinates of a point in the time=1 slice of
|
|
1228
|
+
Minkowski space. That is to say, these are the coordinates of
|
|
1229
|
+
the image of the point under projection into the Klein model.</p>
|
|
1230
|
+
<p>If <cite>details = True</cite> is passed, returns a list of vertices,
|
|
1231
|
+
each represented by a dictionary with keys ‘position’,
|
|
1232
|
+
‘ideal’, ‘vertex_class’. The coordinates are the value for
|
|
1233
|
+
‘position’. The index of the vertex class this vertex belongs
|
|
1234
|
+
to is the value for ‘vertex_class’. The value for ‘ideal’
|
|
1235
|
+
is True if the vertex is an ideal point.</p>
|
|
1236
|
+
</dd></dl>
|
|
1237
|
+
|
|
1238
|
+
<dl class="py method">
|
|
1239
|
+
<dt class="sig sig-object py" id="snappy.DirichletDomain.volume">
|
|
1240
|
+
<span class="sig-name descname"><span class="pre">volume</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.DirichletDomain.volume" title="Link to this definition"></a></dt>
|
|
1241
|
+
<dd><p>Returns the approximate volume of the DirichletDomain.
|
|
1242
|
+
Because matrices in O(3,1) tend to accumulate roundoff error,
|
|
1243
|
+
it’s hard to get a good bound on the accuracy of the computed
|
|
1244
|
+
volume. Nevertheless, the kernel computes the best value it
|
|
1245
|
+
can, with the hope that it will aid the user in recognizing
|
|
1246
|
+
manifolds defined by a set of generators.</p>
|
|
1247
|
+
</dd></dl>
|
|
1248
|
+
|
|
1249
|
+
</dd></dl>
|
|
1250
|
+
|
|
1251
|
+
</section>
|
|
1252
|
+
<section id="cuspneighborhood">
|
|
1253
|
+
<h2>CuspNeighborhood<a class="headerlink" href="#cuspneighborhood" title="Link to this heading"></a></h2>
|
|
1254
|
+
<dl class="py class">
|
|
1255
|
+
<dt class="sig sig-object py" id="snappy.CuspNeighborhood">
|
|
1256
|
+
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.</span></span><span class="sig-name descname"><span class="pre">CuspNeighborhood</span></span><a class="headerlink" href="#snappy.CuspNeighborhood" title="Link to this definition"></a></dt>
|
|
1257
|
+
<dd><p>A CuspNeighborhood object represents an equivariant collection of
|
|
1258
|
+
disjoint horoballs that project to cusp neighborhoods.</p>
|
|
1259
|
+
<p>Instantiate as M.cusp_neighborhood()</p>
|
|
1260
|
+
<dl class="py method">
|
|
1261
|
+
<dt class="sig sig-object py" id="snappy.CuspNeighborhood.Ford_domain">
|
|
1262
|
+
<span class="sig-name descname"><span class="pre">Ford_domain</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">which_cusp</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">high_precision</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.CuspNeighborhood.Ford_domain" title="Link to this definition"></a></dt>
|
|
1263
|
+
<dd><p>Return a list of pairs of complex numbers describing the
|
|
1264
|
+
endpoints of the segments obtained by projecting the edges of
|
|
1265
|
+
the Ford domain to the xy-plane in the upper half space model.</p>
|
|
1266
|
+
<p>If the high_precision flag is set to False (the default), the
|
|
1267
|
+
coordinates are Python complex numbers. Otherwise they are
|
|
1268
|
+
SnapPy Numbers.</p>
|
|
1269
|
+
</dd></dl>
|
|
1270
|
+
|
|
1271
|
+
<dl class="py method">
|
|
1272
|
+
<dt class="sig sig-object py" id="snappy.CuspNeighborhood.all_translations">
|
|
1273
|
+
<span class="sig-name descname"><span class="pre">all_translations</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">verified</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bits_prec</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.CuspNeighborhood.all_translations" title="Link to this definition"></a></dt>
|
|
1274
|
+
<dd><p>Returns the (complex) Euclidean translations of the meridian
|
|
1275
|
+
and longitude for each cusp measured with respect to the cusp neighborhood.</p>
|
|
1276
|
+
<p>The result is a list of pairs, the second entry corresponding to a
|
|
1277
|
+
longitude is always real:</p>
|
|
1278
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">"v3227"</span><span class="p">)</span>
|
|
1279
|
+
<span class="gp">>>> </span><span class="n">N</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">cusp_neighborhood</span><span class="p">()</span>
|
|
1280
|
+
<span class="gp">>>> </span><span class="n">N</span><span class="o">.</span><span class="n">all_translations</span><span class="p">()</span>
|
|
1281
|
+
<span class="go">[(-0.152977162509284 + 0.747697694854404*I, 0.868692062725708), (-0.152977162509284 + 0.747697694854404*I, 0.868692062725708), (0.0961611977895952 + 0.725536253181650*I, 0.895226186134782)]</span>
|
|
1282
|
+
</pre></div>
|
|
1283
|
+
</div>
|
|
1284
|
+
<p>Often, one is interested in making the cusp neighborhoods as large as possible first:</p>
|
|
1285
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">N</span><span class="o">.</span><span class="n">set_displacement</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span><span class="mi">0</span><span class="p">)</span>
|
|
1286
|
+
<span class="gp">>>> </span><span class="n">N</span><span class="o">.</span><span class="n">set_displacement</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
|
|
1287
|
+
<span class="gp">>>> </span><span class="n">N</span><span class="o">.</span><span class="n">set_displacement</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span>
|
|
1288
|
+
<span class="gp">>>> </span><span class="n">N</span><span class="o">.</span><span class="n">all_translations</span><span class="p">()</span>
|
|
1289
|
+
<span class="go">[(-0.477656250512815 + 2.33461303362557*I, 2.71240613125259), (-0.259696455247511 + 1.26930345526993*I, 1.47470541152065), (0.131389112265699 + 0.991330873713731*I, 1.22318540718077)]</span>
|
|
1290
|
+
</pre></div>
|
|
1291
|
+
</div>
|
|
1292
|
+
<p>This can also be achieved by <a class="reference internal" href="manifold.html#snappy.Manifold.cusp_translations" title="snappy.Manifold.cusp_translations"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Manifold.cusp_translations()</span></code></a> which
|
|
1293
|
+
would have made a different choice of disjoint cusp neighborhoods though:</p>
|
|
1294
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">cusp_translations</span><span class="p">()</span>
|
|
1295
|
+
<span class="go">[(-0.315973594129651 + 1.54436599614183*I, 1.79427928161946), (-0.315973594129649 + 1.54436599614182*I, 1.79427928161946), (0.198620491993677 + 1.49859164484929*I, 1.84908538602825)]</span>
|
|
1296
|
+
</pre></div>
|
|
1297
|
+
</div>
|
|
1298
|
+
<p>This method supports arbitrary precision</p>
|
|
1299
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">snappy.number</span> <span class="kn">import</span> <span class="n">Number</span>
|
|
1300
|
+
<span class="gp">>>> </span><span class="n">N</span><span class="o">.</span><span class="n">set_displacement</span><span class="p">(</span><span class="mf">1.125</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
|
|
1301
|
+
<span class="gp">>>> </span><span class="n">N</span><span class="o">.</span><span class="n">set_displacement</span><span class="p">(</span><span class="mf">0.515625</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
|
1302
|
+
<span class="gp">>>> </span><span class="n">N</span><span class="o">.</span><span class="n">set_displacement</span><span class="p">(</span><span class="mf">0.3125</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
|
|
1303
|
+
<span class="gp">>>> </span><span class="n">N</span><span class="o">.</span><span class="n">all_translations</span><span class="p">(</span><span class="n">bits_prec</span> <span class="o">=</span> <span class="mi">120</span><span class="p">)</span>
|
|
1304
|
+
<span class="go">[(-0.47120283346076781167174343474008914 + 2.3030710375877078211095122873223488*I, 2.6757599281290843845710310925394911), (-0.25618853688042434043044508297577899 + 1.2521580040549576537090841783446072*I, 1.4547854392045669515377748986943560), (0.13143677360753666862808198126761923 + 0.99169047854575721271560179767750893*I, 1.2236291171413362101960100623801910)]</span>
|
|
1305
|
+
</pre></div>
|
|
1306
|
+
</div>
|
|
1307
|
+
<p>and can return verified intervals</p>
|
|
1308
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>sage: N.all_translations(verified = True) # doctest: +NUMERIC9
|
|
1309
|
+
[(-0.47120283346? + 2.30307103759?*I, 2.67575992813?), (-0.256188536881? + 1.252158004055?*I, 1.454785439205?), (0.131436773608? + 0.991690478546?*I, 1.2236291171413?)]
|
|
1310
|
+
sage: N.all_translations(verified = True, bits_prec = 120) # doctest: +NUMERIC30
|
|
1311
|
+
[(-0.4712028334607678116717434347401? + 2.3030710375877078211095122873224?*I, 2.6757599281290843845710310925395?), (-0.25618853688042434043044508297578? + 1.25215800405495765370908417834461?*I, 1.454785439204566951537774898694356?), (0.131436773607536668628081981267619? + 0.991690478545757212715601797677509?*I, 1.223629117141336210196010062380191?)]
|
|
1312
|
+
</pre></div>
|
|
1313
|
+
</div>
|
|
1314
|
+
<p>that are guaranteed to contain the true translations of disjoint cusp
|
|
1315
|
+
neighborhoods (the element corresponding to a longitude is always
|
|
1316
|
+
in a <code class="docutils literal notranslate"><span class="pre">RealIntervalField</span></code>). The verified translations might correspond
|
|
1317
|
+
to cusp neighborhoods smaller than the given ones to be able to verify
|
|
1318
|
+
that they are disjoint.</p>
|
|
1319
|
+
<p><strong>Remark:</strong> Since the code is (potentially) non-deterministic, the result of</p>
|
|
1320
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span> <span class="n">N</span><span class="o">.</span><span class="n">all_translations</span><span class="p">(</span><span class="n">verified</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)[</span><span class="n">i</span><span class="p">]</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">M</span><span class="o">.</span><span class="n">num_cusps</span><span class="p">())</span> <span class="p">]</span>
|
|
1321
|
+
</pre></div>
|
|
1322
|
+
</div>
|
|
1323
|
+
<p>is not verified to correspond to disjoint cusp neighborhoods.</p>
|
|
1324
|
+
</dd></dl>
|
|
1325
|
+
|
|
1326
|
+
<dl class="py method">
|
|
1327
|
+
<dt class="sig sig-object py" id="snappy.CuspNeighborhood.check_index">
|
|
1328
|
+
<span class="sig-name descname"><span class="pre">check_index</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">which_cusp</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.CuspNeighborhood.check_index" title="Link to this definition"></a></dt>
|
|
1329
|
+
<dd><p>Raises an IndexError if the cusp index is invalid.</p>
|
|
1330
|
+
</dd></dl>
|
|
1331
|
+
|
|
1332
|
+
<dl class="py method">
|
|
1333
|
+
<dt class="sig sig-object py" id="snappy.CuspNeighborhood.get_displacement">
|
|
1334
|
+
<span class="sig-name descname"><span class="pre">get_displacement</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">which_cusp</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.CuspNeighborhood.get_displacement" title="Link to this definition"></a></dt>
|
|
1335
|
+
<dd><p>Return the displacement of the horospherical boundary of the
|
|
1336
|
+
specified cusp. The displacement is the hyperbolic distance
|
|
1337
|
+
that the horospherical boundary has been displaced from its
|
|
1338
|
+
“home” position, at which the area of the boundary is
|
|
1339
|
+
3sqrt(3)/8. (The translates of all of the horospheres are
|
|
1340
|
+
guaranteed to be pairwise disjoint when each cusp has
|
|
1341
|
+
displacement 0.)</p>
|
|
1342
|
+
</dd></dl>
|
|
1343
|
+
|
|
1344
|
+
<dl class="py method">
|
|
1345
|
+
<dt class="sig sig-object py" id="snappy.CuspNeighborhood.get_tie">
|
|
1346
|
+
<span class="sig-name descname"><span class="pre">get_tie</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">which_cusp</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.CuspNeighborhood.get_tie" title="Link to this definition"></a></dt>
|
|
1347
|
+
<dd><p>Return True if the specified cusp is a member of the tied group.
|
|
1348
|
+
The displacements of the tied cusps are all the same.</p>
|
|
1349
|
+
</dd></dl>
|
|
1350
|
+
|
|
1351
|
+
<dl class="py method">
|
|
1352
|
+
<dt class="sig sig-object py" id="snappy.CuspNeighborhood.horoballs">
|
|
1353
|
+
<span class="sig-name descname"><span class="pre">horoballs</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cutoff</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0.1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">which_cusp</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">full_list</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">high_precision</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.CuspNeighborhood.horoballs" title="Link to this definition"></a></dt>
|
|
1354
|
+
<dd><p>Return a list of dictionaries describing the horoballs with
|
|
1355
|
+
height at least cutoff. The keys are ‘center’, ‘radius’, ‘index’.</p>
|
|
1356
|
+
<p>If the high_precision flag is set to the default value False, these
|
|
1357
|
+
are Python complexes and floats. Otherwise they are SnapPy Numbers.</p>
|
|
1358
|
+
</dd></dl>
|
|
1359
|
+
|
|
1360
|
+
<dl class="py method">
|
|
1361
|
+
<dt class="sig sig-object py" id="snappy.CuspNeighborhood.manifold">
|
|
1362
|
+
<span class="sig-name descname"><span class="pre">manifold</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.CuspNeighborhood.manifold" title="Link to this definition"></a></dt>
|
|
1363
|
+
<dd><p>Return a Manifold built from the current canonical triangulation.</p>
|
|
1364
|
+
</dd></dl>
|
|
1365
|
+
|
|
1366
|
+
<dl class="py method">
|
|
1367
|
+
<dt class="sig sig-object py" id="snappy.CuspNeighborhood.max_reach">
|
|
1368
|
+
<span class="sig-name descname"><span class="pre">max_reach</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.CuspNeighborhood.max_reach" title="Link to this definition"></a></dt>
|
|
1369
|
+
<dd><p>Return the maximum reach over all cusps.</p>
|
|
1370
|
+
</dd></dl>
|
|
1371
|
+
|
|
1372
|
+
<dl class="py method">
|
|
1373
|
+
<dt class="sig sig-object py" id="snappy.CuspNeighborhood.num_cusps">
|
|
1374
|
+
<span class="sig-name descname"><span class="pre">num_cusps</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.CuspNeighborhood.num_cusps" title="Link to this definition"></a></dt>
|
|
1375
|
+
<dd><p>Return the number of cusps.</p>
|
|
1376
|
+
</dd></dl>
|
|
1377
|
+
|
|
1378
|
+
<dl class="py method">
|
|
1379
|
+
<dt class="sig sig-object py" id="snappy.CuspNeighborhood.original_index">
|
|
1380
|
+
<span class="sig-name descname"><span class="pre">original_index</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">which_cusp</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.CuspNeighborhood.original_index" title="Link to this definition"></a></dt>
|
|
1381
|
+
<dd><p>Returns the index by which the Manifold identifies this cusp.</p>
|
|
1382
|
+
</dd></dl>
|
|
1383
|
+
|
|
1384
|
+
<dl class="py method">
|
|
1385
|
+
<dt class="sig sig-object py" id="snappy.CuspNeighborhood.reach">
|
|
1386
|
+
<span class="sig-name descname"><span class="pre">reach</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">which_cusp</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.CuspNeighborhood.reach" title="Link to this definition"></a></dt>
|
|
1387
|
+
<dd><p>Return the displacement at which the specified cusp
|
|
1388
|
+
neighborhood bumps into itself. (This is twice the
|
|
1389
|
+
distance between nearest horoball lifts.)</p>
|
|
1390
|
+
</dd></dl>
|
|
1391
|
+
|
|
1392
|
+
<dl class="py method">
|
|
1393
|
+
<dt class="sig sig-object py" id="snappy.CuspNeighborhood.set_displacement">
|
|
1394
|
+
<span class="sig-name descname"><span class="pre">set_displacement</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">new_displacement</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">which_cusp</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.CuspNeighborhood.set_displacement" title="Link to this definition"></a></dt>
|
|
1395
|
+
<dd><p>Set the displacement of the specified cusp.</p>
|
|
1396
|
+
</dd></dl>
|
|
1397
|
+
|
|
1398
|
+
<dl class="py method">
|
|
1399
|
+
<dt class="sig sig-object py" id="snappy.CuspNeighborhood.set_tie">
|
|
1400
|
+
<span class="sig-name descname"><span class="pre">set_tie</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">which_cusp</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">new_tie</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.CuspNeighborhood.set_tie" title="Link to this definition"></a></dt>
|
|
1401
|
+
<dd><p>Mark the specified cusp as a member of the tied group.</p>
|
|
1402
|
+
</dd></dl>
|
|
1403
|
+
|
|
1404
|
+
<dl class="py method">
|
|
1405
|
+
<dt class="sig sig-object py" id="snappy.CuspNeighborhood.stopper">
|
|
1406
|
+
<span class="sig-name descname"><span class="pre">stopper</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">which_cusp</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.CuspNeighborhood.stopper" title="Link to this definition"></a></dt>
|
|
1407
|
+
<dd><p>Return the index of the cusp which will be the first one that
|
|
1408
|
+
the specified cusp neighborhood bumps into.
|
|
1409
|
+
(Assumes the other displacements are fixed.)</p>
|
|
1410
|
+
</dd></dl>
|
|
1411
|
+
|
|
1412
|
+
<dl class="py method">
|
|
1413
|
+
<dt class="sig sig-object py" id="snappy.CuspNeighborhood.stopping_displacement">
|
|
1414
|
+
<span class="sig-name descname"><span class="pre">stopping_displacement</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">which_cusp</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.CuspNeighborhood.stopping_displacement" title="Link to this definition"></a></dt>
|
|
1415
|
+
<dd><p>Return the displacement at which the specified cusp
|
|
1416
|
+
neighborhood bumps into itself or another cusp neighborhood.
|
|
1417
|
+
(Assumes the other displacements are fixed.)</p>
|
|
1418
|
+
</dd></dl>
|
|
1419
|
+
|
|
1420
|
+
<dl class="py method">
|
|
1421
|
+
<dt class="sig sig-object py" id="snappy.CuspNeighborhood.topology">
|
|
1422
|
+
<span class="sig-name descname"><span class="pre">topology</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">which_cusp</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.CuspNeighborhood.topology" title="Link to this definition"></a></dt>
|
|
1423
|
+
<dd><p>Return the topological type of the specified cusp.</p>
|
|
1424
|
+
</dd></dl>
|
|
1425
|
+
|
|
1426
|
+
<dl class="py method">
|
|
1427
|
+
<dt class="sig sig-object py" id="snappy.CuspNeighborhood.translations">
|
|
1428
|
+
<span class="sig-name descname"><span class="pre">translations</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">which_cusp</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.CuspNeighborhood.translations" title="Link to this definition"></a></dt>
|
|
1429
|
+
<dd><p>Return the (complex) Euclidean translations of the meridian
|
|
1430
|
+
and longitude of the specified cusp.</p>
|
|
1431
|
+
<p>Also see <a class="reference internal" href="#snappy.CuspNeighborhood.all_translations" title="snappy.CuspNeighborhood.all_translations"><code class="xref py py-meth docutils literal notranslate"><span class="pre">CuspNeighborhood.all_translations()</span></code></a> which supports
|
|
1432
|
+
arbitrary precision and verified results.</p>
|
|
1433
|
+
</dd></dl>
|
|
1434
|
+
|
|
1435
|
+
<dl class="py method">
|
|
1436
|
+
<dt class="sig sig-object py" id="snappy.CuspNeighborhood.triangulation">
|
|
1437
|
+
<span class="sig-name descname"><span class="pre">triangulation</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">which_cusp</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">high_precision</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.CuspNeighborhood.triangulation" title="Link to this definition"></a></dt>
|
|
1438
|
+
<dd><p>Return a list of dictionaries describing the endpoints of the
|
|
1439
|
+
segments obtained by projecting the edges of the triangulation
|
|
1440
|
+
dual to the Ford domain into the xy-plane in the upper half
|
|
1441
|
+
space model. The keys are ‘endpoints’ and ‘indices’.</p>
|
|
1442
|
+
</dd></dl>
|
|
1443
|
+
|
|
1444
|
+
<dl class="py method">
|
|
1445
|
+
<dt class="sig sig-object py" id="snappy.CuspNeighborhood.view">
|
|
1446
|
+
<span class="sig-name descname"><span class="pre">view</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">which_cusp</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cutoff</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.CuspNeighborhood.view" title="Link to this definition"></a></dt>
|
|
1447
|
+
<dd><p>Create a 3D picture of the horoball packing. One can specify
|
|
1448
|
+
which cusp to put at infinity and how large of horoballs to
|
|
1449
|
+
look at, e.g.</p>
|
|
1450
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'m125'</span><span class="p">)</span>
|
|
1451
|
+
<span class="gp">>>> </span><span class="n">C</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">cusp_neighborhood</span><span class="p">()</span>
|
|
1452
|
+
<span class="gp">>>> </span><span class="n">C</span><span class="o">.</span><span class="n">view</span><span class="p">(</span><span class="n">which_cusp</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="n">cutoff</span><span class="o">=</span><span class="mf">0.2</span><span class="p">)</span>
|
|
1453
|
+
</pre></div>
|
|
1454
|
+
</div>
|
|
1455
|
+
</dd></dl>
|
|
1456
|
+
|
|
1457
|
+
<dl class="py method">
|
|
1458
|
+
<dt class="sig sig-object py" id="snappy.CuspNeighborhood.volume">
|
|
1459
|
+
<span class="sig-name descname"><span class="pre">volume</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">which_cusp</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.CuspNeighborhood.volume" title="Link to this definition"></a></dt>
|
|
1460
|
+
<dd><p>Return the volume of the horoball neighborhood of the specified
|
|
1461
|
+
cusp.</p>
|
|
1462
|
+
</dd></dl>
|
|
1463
|
+
|
|
1464
|
+
</dd></dl>
|
|
1465
|
+
|
|
1466
|
+
</section>
|
|
1467
|
+
</section>
|
|
1468
|
+
|
|
1469
|
+
|
|
1470
|
+
</div>
|
|
1471
|
+
</div>
|
|
1472
|
+
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
|
1473
|
+
<a href="triangulation.html" class="btn btn-neutral float-left" title="Triangulation" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
|
1474
|
+
<a href="censuses.html" class="btn btn-neutral float-right" title="Census manifolds" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
|
1475
|
+
</div>
|
|
1476
|
+
|
|
1477
|
+
<hr/>
|
|
1478
|
+
|
|
1479
|
+
<div role="contentinfo">
|
|
1480
|
+
<p>© Copyright 2009-2026, by Marc Culler, Nathan Dunfield, Matthias Goerner, Jeffrey Weeks and others.</p>
|
|
1481
|
+
</div>
|
|
1482
|
+
|
|
1483
|
+
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
|
1484
|
+
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
|
1485
|
+
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
|
1486
|
+
|
|
1487
|
+
|
|
1488
|
+
</footer>
|
|
1489
|
+
</div>
|
|
1490
|
+
</div>
|
|
1491
|
+
</section>
|
|
1492
|
+
</div>
|
|
1493
|
+
<script>
|
|
1494
|
+
jQuery(function () {
|
|
1495
|
+
SphinxRtdTheme.Navigation.enable(true);
|
|
1496
|
+
});
|
|
1497
|
+
</script>
|
|
1498
|
+
|
|
1499
|
+
</body>
|
|
1500
|
+
</html>
|