snappy 3.1.1__cp38-cp38-win_amd64.whl → 3.2__cp38-cp38-win_amd64.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.cp38-win_amd64.pyd +0 -0
- snappy/SnapPy.cp38-win_amd64.pyd +0 -0
- snappy/SnapPyHP.cp38-win_amd64.pyd +0 -0
- snappy/__init__.py +299 -402
- snappy/app.py +70 -20
- snappy/browser.py +18 -17
- snappy/canonical.py +249 -0
- snappy/{verify/cusp_shapes.py → cusps/__init__.py} +8 -18
- snappy/cusps/cusp_area_matrix.py +101 -0
- snappy/{verify/cusp_areas.py → cusps/cusp_areas_from_matrix.py} +23 -39
- snappy/cusps/maximal_cusp_area_matrix.py +136 -0
- snappy/cusps/test.py +21 -0
- snappy/cusps/trig_cusp_area_matrix.py +63 -0
- snappy/database.py +10 -9
- snappy/decorated_isosig.py +337 -114
- snappy/dev/extended_ptolemy/complexVolumesClosed.py +40 -7
- snappy/dev/extended_ptolemy/extended.py +3 -3
- snappy/dev/extended_ptolemy/phc_wrapper.py +10 -10
- snappy/dev/vericlosed/oneVertexTruncatedComplex.py +1 -1
- snappy/doc/_images/m004_paper_plane_on_systole.jpg +0 -0
- snappy/doc/_images/m125_paper_plane.jpg +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/_sources/additional_classes.rst.txt +40 -40
- snappy/doc/_sources/bugs.rst.txt +14 -14
- snappy/doc/_sources/censuses.rst.txt +51 -51
- snappy/doc/_sources/credits.rst.txt +75 -75
- snappy/doc/_sources/development.rst.txt +259 -239
- snappy/doc/_sources/index.rst.txt +182 -115
- snappy/doc/_sources/installing.rst.txt +247 -264
- snappy/doc/_sources/manifold.rst.txt +6 -6
- snappy/doc/_sources/manifoldhp.rst.txt +46 -46
- snappy/doc/_sources/news.rst.txt +355 -283
- snappy/doc/_sources/other.rst.txt +25 -25
- snappy/doc/_sources/platonic_census.rst.txt +20 -20
- snappy/doc/_sources/plink.rst.txt +102 -102
- snappy/doc/_sources/ptolemy.rst.txt +66 -66
- snappy/doc/_sources/ptolemy_classes.rst.txt +42 -42
- snappy/doc/_sources/ptolemy_examples1.rst.txt +298 -297
- snappy/doc/_sources/ptolemy_examples2.rst.txt +363 -363
- snappy/doc/_sources/ptolemy_examples3.rst.txt +301 -301
- snappy/doc/_sources/ptolemy_examples4.rst.txt +61 -61
- snappy/doc/_sources/ptolemy_prelim.rst.txt +105 -105
- snappy/doc/_sources/screenshots.rst.txt +21 -21
- snappy/doc/_sources/snap.rst.txt +87 -87
- snappy/doc/_sources/snappy.rst.txt +28 -28
- snappy/doc/_sources/spherogram.rst.txt +103 -103
- snappy/doc/_sources/todo.rst.txt +47 -47
- snappy/doc/_sources/triangulation.rst.txt +11 -11
- snappy/doc/_sources/tutorial.rst.txt +49 -49
- snappy/doc/_sources/verify.rst.txt +210 -150
- snappy/doc/_sources/verify_internals.rst.txt +79 -90
- snappy/doc/_static/basic.css +924 -902
- snappy/doc/_static/css/badge_only.css +1 -1
- snappy/doc/_static/css/theme.css +1 -1
- snappy/doc/_static/doctools.js +1 -1
- snappy/doc/_static/documentation_options.js +12 -13
- 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/js/versions.js +228 -0
- snappy/doc/_static/language_data.js +199 -199
- snappy/doc/_static/pygments.css +74 -73
- snappy/doc/_static/searchtools.js +125 -71
- snappy/doc/_static/snappy_furo.css +33 -33
- snappy/doc/_static/snappy_sphinx_rtd_theme.css +42 -42
- snappy/doc/_static/sphinx_highlight.js +13 -3
- snappy/doc/additional_classes.html +1499 -1330
- snappy/doc/bugs.html +131 -134
- snappy/doc/censuses.html +426 -445
- snappy/doc/credits.html +180 -183
- snappy/doc/development.html +383 -363
- snappy/doc/genindex.html +1330 -1409
- snappy/doc/index.html +261 -206
- snappy/doc/installing.html +345 -363
- snappy/doc/manifold.html +3451 -2839
- snappy/doc/manifoldhp.html +179 -182
- snappy/doc/news.html +387 -329
- snappy/doc/objects.inv +0 -0
- snappy/doc/other.html +160 -162
- snappy/doc/platonic_census.html +374 -377
- snappy/doc/plink.html +209 -212
- snappy/doc/ptolemy.html +253 -255
- snappy/doc/ptolemy_classes.html +1143 -1146
- snappy/doc/ptolemy_examples1.html +408 -410
- snappy/doc/ptolemy_examples2.html +470 -473
- snappy/doc/ptolemy_examples3.html +413 -416
- snappy/doc/ptolemy_examples4.html +194 -197
- snappy/doc/ptolemy_prelim.html +247 -250
- snappy/doc/py-modindex.html +164 -167
- snappy/doc/screenshots.html +140 -142
- snappy/doc/search.html +134 -137
- snappy/doc/searchindex.js +1 -1
- snappy/doc/snap.html +201 -204
- snappy/doc/snappy.html +180 -182
- snappy/doc/spherogram.html +1210 -1213
- snappy/doc/todo.html +165 -168
- snappy/doc/triangulation.html +1583 -1474
- snappy/doc/tutorial.html +158 -161
- snappy/doc/verify.html +329 -275
- snappy/doc/verify_internals.html +1234 -1691
- snappy/drilling/__init__.py +153 -235
- snappy/drilling/barycentric.py +103 -0
- snappy/drilling/constants.py +0 -2
- snappy/drilling/crush.py +56 -130
- snappy/drilling/cusps.py +12 -6
- snappy/drilling/debug.py +2 -1
- snappy/drilling/exceptions.py +7 -40
- snappy/drilling/moves.py +302 -243
- snappy/drilling/perturb.py +63 -37
- snappy/drilling/shorten.py +36 -0
- snappy/drilling/subdivide.py +0 -5
- snappy/drilling/test.py +23 -0
- snappy/drilling/test_cases.py +126 -0
- snappy/drilling/tracing.py +9 -37
- snappy/exceptions.py +18 -5
- snappy/exterior_to_link/barycentric_geometry.py +2 -4
- snappy/exterior_to_link/main.py +8 -7
- snappy/exterior_to_link/mcomplex_with_link.py +2 -2
- snappy/exterior_to_link/rational_linear_algebra.py +1 -1
- snappy/exterior_to_link/rational_linear_algebra_wrapped.py +1 -1
- snappy/exterior_to_link/test.py +21 -33
- 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 +697 -0
- snappy/geometric_structure/cusp_neighborhood/cusp_cross_section_base.py +484 -0
- snappy/geometric_structure/cusp_neighborhood/exceptions.py +42 -0
- snappy/geometric_structure/cusp_neighborhood/real_cusp_cross_section.py +298 -0
- snappy/geometric_structure/cusp_neighborhood/tiles_for_cusp_neighborhood.py +159 -0
- snappy/geometric_structure/cusp_neighborhood/vertices.py +32 -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_keys.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/{drilling → geometric_structure/geodesic}/fixed_points.py +34 -9
- snappy/{drilling/geodesic_info.py → geometric_structure/geodesic/geodesic_start_point_info.py} +139 -180
- 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 +101 -0
- snappy/geometric_structure/test.py +22 -0
- snappy/gui.py +23 -13
- snappy/horoviewer.py +7 -7
- snappy/hyperboloid/__init__.py +96 -31
- snappy/hyperboloid/distances.py +245 -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/isometry_signature.py +382 -0
- snappy/len_spec/__init__.py +596 -0
- snappy/len_spec/geodesic_info.py +110 -0
- snappy/len_spec/geodesic_key_info_dict.py +117 -0
- snappy/len_spec/geodesic_piece.py +143 -0
- snappy/len_spec/geometric_structure.py +182 -0
- snappy/len_spec/geometry.py +80 -0
- snappy/len_spec/length_spectrum_geodesic_info.py +170 -0
- snappy/len_spec/spine.py +206 -0
- snappy/len_spec/test.py +24 -0
- snappy/len_spec/test_cases.py +69 -0
- snappy/len_spec/tile.py +275 -0
- snappy/len_spec/word.py +86 -0
- snappy/math_basics.py +39 -13
- snappy/matrix.py +52 -9
- snappy/number.py +12 -6
- snappy/numeric_output_checker.py +2 -3
- snappy/pari.py +8 -4
- snappy/phone_home.py +2 -1
- snappy/polyviewer.py +8 -8
- snappy/ptolemy/__init__.py +1 -1
- snappy/ptolemy/component.py +2 -2
- snappy/ptolemy/coordinates.py +25 -25
- snappy/ptolemy/findLoops.py +9 -9
- snappy/ptolemy/manifoldMethods.py +27 -29
- snappy/ptolemy/polynomial.py +50 -57
- snappy/ptolemy/processFileBase.py +60 -0
- snappy/ptolemy/ptolemyVariety.py +109 -41
- snappy/ptolemy/reginaWrapper.py +4 -4
- snappy/ptolemy/rur.py +1 -1
- snappy/ptolemy/solutionsToPrimeIdealGroebnerBasis.py +9 -9
- snappy/ptolemy/test.py +99 -54
- snappy/ptolemy/utilities.py +1 -1
- 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 +0 -3
- snappy/raytracing/eyeball.py +123 -0
- snappy/raytracing/finite_raytracing_data.py +17 -17
- snappy/raytracing/finite_viewer.py +15 -15
- snappy/raytracing/geodesic_tube_info.py +93 -63
- snappy/raytracing/geodesics.py +94 -64
- snappy/raytracing/geodesics_window.py +56 -34
- snappy/raytracing/gui_utilities.py +21 -6
- snappy/raytracing/hyperboloid_navigation.py +29 -4
- snappy/raytracing/hyperboloid_utilities.py +73 -73
- snappy/raytracing/ideal_raytracing_data.py +121 -91
- snappy/raytracing/inside_viewer.py +199 -66
- snappy/raytracing/pack.py +22 -0
- snappy/raytracing/raytracing_data.py +37 -25
- snappy/raytracing/raytracing_view.py +70 -65
- snappy/raytracing/shaders/Eye.png +0 -0
- snappy/raytracing/shaders/NonGeometric.png +0 -0
- snappy/raytracing/shaders/__init__.py +39 -3
- snappy/raytracing/shaders/fragment.glsl +451 -133
- snappy/raytracing/test.py +29 -0
- snappy/raytracing/tooltip.py +146 -0
- snappy/raytracing/upper_halfspace_utilities.py +42 -9
- snappy/sage_helper.py +67 -134
- snappy/settings.py +90 -77
- snappy/shell.py +2 -0
- snappy/snap/character_varieties.py +2 -2
- snappy/snap/find_field.py +4 -3
- snappy/snap/fundamental_polyhedron.py +2 -2
- snappy/snap/kernel_structures.py +5 -1
- snappy/snap/nsagetools.py +9 -8
- snappy/snap/peripheral/dual_cellulation.py +4 -3
- snappy/snap/peripheral/peripheral.py +2 -2
- snappy/snap/peripheral/surface.py +5 -5
- snappy/snap/peripheral/test.py +1 -1
- snappy/snap/polished_reps.py +8 -8
- snappy/snap/slice_obs_HKL.py +16 -14
- snappy/snap/t3mlite/arrow.py +3 -3
- snappy/snap/t3mlite/edge.py +3 -3
- snappy/snap/t3mlite/homology.py +2 -2
- snappy/snap/t3mlite/mcomplex.py +3 -3
- snappy/snap/t3mlite/simplex.py +12 -0
- snappy/snap/t3mlite/spun.py +18 -17
- snappy/snap/t3mlite/test_vs_regina.py +4 -4
- snappy/snap/test.py +37 -53
- snappy/snap/utilities.py +4 -5
- snappy/test.py +121 -138
- snappy/test_cases.py +263 -0
- snappy/testing.py +131 -0
- snappy/tiling/__init__.py +2 -0
- snappy/tiling/canonical_key_dict.py +59 -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/real_hash_dict.py +164 -0
- snappy/tiling/test.py +23 -0
- snappy/tiling/tile.py +215 -0
- snappy/tiling/triangle.py +33 -0
- snappy/tkterminal.py +113 -84
- snappy/twister/main.py +1 -7
- snappy/twister/twister_core.cp38-win_amd64.pyd +0 -0
- snappy/upper_halfspace/__init__.py +78 -17
- snappy/verify/__init__.py +3 -7
- snappy/verify/{verifyCanonical.py → canonical.py} +78 -70
- snappy/verify/complex_volume/adjust_torsion.py +1 -2
- snappy/verify/complex_volume/closed.py +13 -13
- snappy/verify/complex_volume/cusped.py +6 -6
- snappy/verify/complex_volume/extended_bloch.py +5 -8
- snappy/verify/{cuspTranslations.py → cusp_translations.py} +1 -1
- snappy/verify/edge_equations.py +80 -0
- snappy/verify/exceptions.py +0 -55
- snappy/verify/{verifyHyperbolicity.py → hyperbolicity.py} +3 -3
- snappy/verify/interval_newton_shapes_engine.py +7 -5
- snappy/verify/interval_tree.py +5 -5
- snappy/verify/krawczyk_shapes_engine.py +17 -18
- snappy/verify/maximal_cusp_area_matrix/__init__.py +7 -74
- snappy/verify/maximal_cusp_area_matrix/cusp_tiling_engine.py +3 -4
- snappy/verify/maximal_cusp_area_matrix/cusp_translate_engine.py +1 -1
- snappy/verify/{realAlgebra.py → real_algebra.py} +1 -1
- snappy/verify/shapes.py +5 -3
- snappy/verify/short_slopes.py +39 -41
- snappy/verify/{squareExtensions.py → square_extensions.py} +14 -11
- snappy/verify/test.py +57 -60
- snappy/verify/upper_halfspace/extended_matrix.py +1 -1
- snappy/verify/upper_halfspace/finite_point.py +3 -4
- snappy/verify/upper_halfspace/ideal_point.py +9 -9
- snappy/verify/volume.py +2 -2
- snappy/version.py +2 -2
- {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/METADATA +14 -10
- snappy-3.2.dist-info/RECORD +503 -0
- {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/WHEEL +1 -1
- {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/top_level.txt +6 -1
- snappy/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/__pycache__/browser.cpython-38.pyc +0 -0
- snappy/__pycache__/cache.cpython-38.pyc +0 -0
- snappy/__pycache__/database.cpython-38.pyc +0 -0
- snappy/__pycache__/db_utilities.cpython-38.pyc +0 -0
- snappy/__pycache__/decorated_isosig.cpython-38.pyc +0 -0
- snappy/__pycache__/exceptions.cpython-38.pyc +0 -0
- snappy/__pycache__/export_stl.cpython-38.pyc +0 -0
- snappy/__pycache__/filedialog.cpython-38.pyc +0 -0
- snappy/__pycache__/gui.cpython-38.pyc +0 -0
- snappy/__pycache__/horoviewer.cpython-38.pyc +0 -0
- snappy/__pycache__/math_basics.cpython-38.pyc +0 -0
- snappy/__pycache__/matrix.cpython-38.pyc +0 -0
- snappy/__pycache__/number.cpython-38.pyc +0 -0
- snappy/__pycache__/numeric_output_checker.cpython-38.pyc +0 -0
- snappy/__pycache__/pari.cpython-38.pyc +0 -0
- snappy/__pycache__/polyviewer.cpython-38.pyc +0 -0
- snappy/__pycache__/sage_helper.cpython-38.pyc +0 -0
- snappy/__pycache__/version.cpython-38.pyc +0 -0
- snappy/doc/_sources/verify_canon.rst.txt +0 -90
- snappy/doc/_static/jquery-3.6.0.js +0 -10881
- snappy/doc/_static/js/html5shiv-printshiv.min.js +0 -4
- snappy/doc/_static/js/html5shiv.min.js +0 -4
- snappy/doc/_static/underscore-1.13.1.js +0 -2042
- snappy/doc/_static/underscore.js +0 -6
- snappy/doc/verify_canon.html +0 -304
- snappy/drilling/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/constants.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/crush.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/cusps.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/debug.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/epsilons.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/exceptions.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/fixed_points.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/geodesic_info.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/geodesic_tube.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/geometric_structure.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/line.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/moves.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/peripheral_curves.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/perturb.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/quotient_space.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/spatial_dict.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/subdivide.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/tracing.cpython-38.pyc +0 -0
- snappy/drilling/geodesic_tube.py +0 -441
- snappy/drilling/geometric_structure.py +0 -366
- snappy/drilling/line.py +0 -122
- snappy/drilling/quotient_space.py +0 -94
- snappy/drilling/spatial_dict.py +0 -128
- snappy/exterior_to_link/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/barycentric_geometry.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/exceptions.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/hyp_utils.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/link_projection.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/main.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/mcomplex_with_expansion.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/mcomplex_with_link.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/mcomplex_with_memory.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/pl_utils.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/put_in_S3.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/rational_linear_algebra.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/simplify_to_base_tri.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/stored_moves.cpython-38.pyc +0 -0
- snappy/hyperboloid/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/manifolds/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/component.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/coordinates.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/fieldExtensions.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/findLoops.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/homology.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/manifoldMethods.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/matrix.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/numericalSolutionsToGroebnerBasis.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/polynomial.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/processComponents.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/processFileBase.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/processFileDispatch.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/processMagmaFile.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/processRurFile.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/ptolemyGeneralizedObstructionClass.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/ptolemyObstructionClass.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/ptolemyVariety.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/ptolemyVarietyPrimeIdealGroebnerBasis.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/rur.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/solutionsToPrimeIdealGroebnerBasis.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/utilities.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/character_varieties.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/fundamental_polyhedron.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/interval_reps.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/kernel_structures.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/mcomplex_base.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/nsagetools.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/polished_reps.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/shapes.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/slice_obs_HKL.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/utilities.cpython-38.pyc +0 -0
- snappy/snap/peripheral/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/snap/peripheral/__pycache__/dual_cellulation.cpython-38.pyc +0 -0
- snappy/snap/peripheral/__pycache__/link.cpython-38.pyc +0 -0
- snappy/snap/peripheral/__pycache__/peripheral.cpython-38.pyc +0 -0
- snappy/snap/peripheral/__pycache__/surface.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/arrow.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/corner.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/edge.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/face.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/files.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/homology.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/linalg.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/mcomplex.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/perm4.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/simplex.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/spun.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/surface.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/tetrahedron.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/vertex.cpython-38.pyc +0 -0
- snappy/togl/__init__.py +0 -3
- snappy/togl/darwin-tk8.6/Togl2.1/LICENSE +0 -28
- snappy/togl/darwin-tk8.6/Togl2.1/libTogl2.1.dylib +0 -0
- snappy/togl/darwin-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
- snappy/togl/darwin-tk8.7/Togl2.1/LICENSE +0 -28
- snappy/togl/darwin-tk8.7/Togl2.1/libTogl2.1.dylib +0 -0
- snappy/togl/darwin-tk8.7/Togl2.1/pkgIndex.tcl +0 -5
- snappy/togl/linux2-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
- snappy/togl/linux2-x86_64-tk8.6/Togl2.1/libTogl2.1.so +0 -0
- snappy/togl/linux2-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
- snappy/togl/win32VC-tk8.6/Togl2.1/LICENSE +0 -28
- snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.dll +0 -0
- snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.lib +0 -0
- snappy/togl/win32VC-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
- snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
- snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.dll +0 -0
- snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.lib +0 -0
- snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
- snappy/twister/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/twister/__pycache__/main.cpython-38.pyc +0 -0
- snappy/upper_halfspace/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/upper_halfspace/__pycache__/ideal_point.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/cuspCrossSection.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/cuspTranslations.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/cusp_areas.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/cusp_shapes.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/exceptions.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/interval_newton_shapes_engine.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/interval_tree.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/krawczyk_shapes_engine.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/realAlgebra.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/shapes.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/short_slopes.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/squareExtensions.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/verifyCanonical.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/verifyHyperbolicity.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/volume.cpython-38.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/adjust_torsion.cpython-38.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/closed.cpython-38.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/compute_ptolemys.cpython-38.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/cusped.cpython-38.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/extended_bloch.cpython-38.pyc +0 -0
- snappy/verify/cuspCrossSection.py +0 -1422
- snappy/verify/maximal_cusp_area_matrix/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_tiling_engine.cpython-38.pyc +0 -0
- snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_translate_engine.cpython-38.pyc +0 -0
- snappy/verify/upper_halfspace/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/verify/upper_halfspace/__pycache__/extended_matrix.cpython-38.pyc +0 -0
- snappy/verify/upper_halfspace/__pycache__/finite_point.cpython-38.pyc +0 -0
- snappy/verify/upper_halfspace/__pycache__/ideal_point.cpython-38.pyc +0 -0
- snappy-3.1.1.dist-info/RECORD +0 -575
- {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/entry_points.txt +0 -0
snappy/doc/triangulation.html
CHANGED
@@ -1,1475 +1,1584 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
<link rel="stylesheet"
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
<
|
23
|
-
<link rel="
|
24
|
-
<link rel="
|
25
|
-
<link rel="
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
<
|
44
|
-
|
45
|
-
<input type="
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
<li class="toctree-l1"><a class="reference internal" href="
|
53
|
-
<li class="toctree-l1"><a class="reference internal" href="
|
54
|
-
<li class="toctree-
|
55
|
-
<li class="toctree-
|
56
|
-
<li class="toctree-l2"><a class="reference internal" href="
|
57
|
-
<li class="toctree-
|
58
|
-
<li class="toctree-
|
59
|
-
<li class="toctree-
|
60
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
61
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
62
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
63
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
64
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
65
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
66
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
67
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
68
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
69
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
70
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
71
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
72
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
73
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
74
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
75
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
76
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
77
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
78
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
79
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
80
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
81
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
82
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
83
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
84
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
85
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
86
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
87
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
88
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
89
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
90
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
91
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
92
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
93
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
94
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
95
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
96
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
97
|
-
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.
|
98
|
-
|
99
|
-
|
100
|
-
</ul>
|
101
|
-
</li>
|
102
|
-
</
|
103
|
-
</li>
|
104
|
-
|
105
|
-
|
106
|
-
</
|
107
|
-
</li>
|
108
|
-
<li class="toctree-l1"><a class="reference internal" href="
|
109
|
-
<li class="toctree-l1"><a class="reference internal" href="
|
110
|
-
<li class="toctree-l1"><a class="reference internal" href="
|
111
|
-
<li class="toctree-l1"><a class="reference internal" href="
|
112
|
-
<li class="toctree-l1"><a class="reference internal" href="
|
113
|
-
<li class="toctree-l1"><a class="reference internal" href="
|
114
|
-
<li class="toctree-l1"><a class="reference internal" href="
|
115
|
-
<li class="toctree-l1"><a class="reference internal" href="
|
116
|
-
|
117
|
-
|
118
|
-
</
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
<li
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
<
|
147
|
-
|
148
|
-
<
|
149
|
-
<
|
150
|
-
|
151
|
-
|
152
|
-
boundary
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
<
|
162
|
-
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">
|
163
|
-
<span class="go">
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
<p>
|
169
|
-
<
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
<
|
178
|
-
|
179
|
-
<
|
180
|
-
<
|
181
|
-
<
|
182
|
-
<
|
183
|
-
<li><p>
|
184
|
-
|
185
|
-
|
186
|
-
<li><p>
|
187
|
-
|
188
|
-
</
|
189
|
-
</
|
190
|
-
|
191
|
-
|
192
|
-
<
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
<
|
200
|
-
|
201
|
-
<p>
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
<
|
212
|
-
<
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
<
|
219
|
-
<
|
220
|
-
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">DT_code</span><span class="p">()</span>
|
221
|
-
<span class="go"
|
222
|
-
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">DT_code</span><span class="p">(</span><span class="n">alpha</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
223
|
-
<span class="go">'ebbccdaeb'</span>
|
224
|
-
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">DT_code</span><span class="p">(</span><span class="n">
|
225
|
-
<span class="go"
|
226
|
-
|
227
|
-
|
228
|
-
</
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
<
|
233
|
-
<
|
234
|
-
<
|
235
|
-
<
|
236
|
-
<
|
237
|
-
|
238
|
-
<span class="
|
239
|
-
|
240
|
-
<span class="n">
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
</
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
<
|
250
|
-
<
|
251
|
-
<
|
252
|
-
<
|
253
|
-
<
|
254
|
-
|
255
|
-
</
|
256
|
-
</
|
257
|
-
|
258
|
-
|
259
|
-
<
|
260
|
-
<
|
261
|
-
<
|
262
|
-
|
263
|
-
specified by a
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
cover
|
269
|
-
<
|
270
|
-
<span class="
|
271
|
-
<span class="gp">>>> </span><span class="n">N0</span><span class="o">.</span><span class="n">
|
272
|
-
<span class="go"
|
273
|
-
<span class="gp">>>> </span><span class="n">N0</span><span class="o">.</span><span class="n">cover_info</span><span class="p">()[</span><span class="s1">'
|
274
|
-
<span class="go">'
|
275
|
-
<span class="gp">>>> </span><span class="n">N0</span><span class="o">.</span><span class="n">cover_info</span><span class="p">()[</span><span class="s1">'
|
276
|
-
<span class="go"
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
</
|
281
|
-
<
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
<
|
289
|
-
<
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
<
|
297
|
-
<
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
<
|
306
|
-
|
307
|
-
<
|
308
|
-
|
309
|
-
|
310
|
-
<
|
311
|
-
|
312
|
-
</
|
313
|
-
<
|
314
|
-
|
315
|
-
|
316
|
-
<
|
317
|
-
|
318
|
-
</
|
319
|
-
<
|
320
|
-
|
321
|
-
<
|
322
|
-
<span class="
|
323
|
-
|
324
|
-
|
325
|
-
<
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
<
|
335
|
-
|
336
|
-
<
|
337
|
-
<
|
338
|
-
cusp.
|
339
|
-
<
|
340
|
-
<span class="gp">>>> </span><span class="n">
|
341
|
-
<span class="go">
|
342
|
-
<span class="gp">>>> </span><span class="
|
343
|
-
<span class="
|
344
|
-
|
345
|
-
|
346
|
-
<
|
347
|
-
|
348
|
-
|
349
|
-
<
|
350
|
-
<
|
351
|
-
<span class="
|
352
|
-
<span class="go">
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
<
|
361
|
-
|
362
|
-
|
363
|
-
<
|
364
|
-
|
365
|
-
|
366
|
-
<
|
367
|
-
<
|
368
|
-
<
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
</
|
374
|
-
</
|
375
|
-
<
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
</
|
381
|
-
</
|
382
|
-
<
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
</
|
387
|
-
</
|
388
|
-
</
|
389
|
-
<
|
390
|
-
<
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
</
|
395
|
-
</
|
396
|
-
</
|
397
|
-
|
398
|
-
<
|
399
|
-
|
400
|
-
|
401
|
-
<
|
402
|
-
|
403
|
-
|
404
|
-
<
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
<
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
<
|
422
|
-
|
423
|
-
|
424
|
-
<
|
425
|
-
|
426
|
-
</
|
427
|
-
<
|
428
|
-
|
429
|
-
<
|
430
|
-
|
431
|
-
|
432
|
-
<
|
433
|
-
|
434
|
-
|
435
|
-
<p
|
436
|
-
|
437
|
-
<
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
the
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
<code class="docutils literal notranslate"><span class="pre">
|
457
|
-
|
458
|
-
|
459
|
-
<li><p><code class="docutils literal notranslate"><span class="pre">
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
<
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
<
|
479
|
-
|
480
|
-
<
|
481
|
-
<
|
482
|
-
|
483
|
-
<
|
484
|
-
<
|
485
|
-
|
486
|
-
|
487
|
-
<
|
488
|
-
|
489
|
-
</
|
490
|
-
<
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
<
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
<
|
506
|
-
<span class="
|
507
|
-
<span class="
|
508
|
-
<span class="go">
|
509
|
-
<span class="
|
510
|
-
<span class="go">
|
511
|
-
|
512
|
-
|
513
|
-
<
|
514
|
-
|
515
|
-
</
|
516
|
-
<p>
|
517
|
-
<
|
518
|
-
<li><p>
|
519
|
-
|
520
|
-
<
|
521
|
-
<
|
522
|
-
</
|
523
|
-
<
|
524
|
-
<span class="go">
|
525
|
-
<span class="go">
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
<
|
534
|
-
|
535
|
-
<
|
536
|
-
<
|
537
|
-
|
538
|
-
<
|
539
|
-
<
|
540
|
-
|
541
|
-
|
542
|
-
<
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
<p>
|
554
|
-
|
555
|
-
<
|
556
|
-
<
|
557
|
-
|
558
|
-
|
559
|
-
<
|
560
|
-
<div
|
561
|
-
</
|
562
|
-
<
|
563
|
-
<
|
564
|
-
<span class="
|
565
|
-
<span class="
|
566
|
-
<span class="go">[
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
<
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
<p>
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
<
|
583
|
-
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
<
|
588
|
-
|
589
|
-
<
|
590
|
-
<span class="
|
591
|
-
|
592
|
-
|
593
|
-
<
|
594
|
-
|
595
|
-
|
596
|
-
</
|
597
|
-
<
|
598
|
-
|
599
|
-
<
|
600
|
-
<span class="
|
601
|
-
<span class="go">
|
602
|
-
<span class="go"> [
|
603
|
-
<span class="go"> [
|
604
|
-
|
605
|
-
|
606
|
-
<
|
607
|
-
|
608
|
-
|
609
|
-
</div>
|
610
|
-
<p>
|
611
|
-
|
612
|
-
<
|
613
|
-
<
|
614
|
-
</
|
615
|
-
<
|
616
|
-
|
617
|
-
<
|
618
|
-
|
619
|
-
|
620
|
-
|
621
|
-
|
622
|
-
|
623
|
-
|
624
|
-
|
625
|
-
|
626
|
-
|
627
|
-
<
|
628
|
-
|
629
|
-
|
630
|
-
<
|
631
|
-
<span class="
|
632
|
-
|
633
|
-
</
|
634
|
-
<p>
|
635
|
-
|
636
|
-
<
|
637
|
-
<li><p>
|
638
|
-
<li><p>
|
639
|
-
|
640
|
-
|
641
|
-
<li><p>
|
642
|
-
<
|
643
|
-
</
|
644
|
-
</li>
|
645
|
-
|
646
|
-
|
647
|
-
|
648
|
-
|
649
|
-
|
650
|
-
|
651
|
-
|
652
|
-
</
|
653
|
-
|
654
|
-
|
655
|
-
<
|
656
|
-
<span class="
|
657
|
-
<
|
658
|
-
|
659
|
-
<
|
660
|
-
<span class="gp">>>> </span><span class="n">
|
661
|
-
<span class="go">
|
662
|
-
|
663
|
-
|
664
|
-
<
|
665
|
-
|
666
|
-
|
667
|
-
</
|
668
|
-
<
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
</
|
676
|
-
|
677
|
-
|
678
|
-
<
|
679
|
-
<span class="
|
680
|
-
<
|
681
|
-
|
682
|
-
|
683
|
-
<
|
684
|
-
|
685
|
-
|
686
|
-
</
|
687
|
-
<p>
|
688
|
-
|
689
|
-
|
690
|
-
<
|
691
|
-
|
692
|
-
|
693
|
-
</
|
694
|
-
<
|
695
|
-
|
696
|
-
|
697
|
-
<
|
698
|
-
|
699
|
-
|
700
|
-
</
|
701
|
-
<
|
702
|
-
|
703
|
-
<
|
704
|
-
|
705
|
-
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
|
710
|
-
</
|
711
|
-
|
712
|
-
|
713
|
-
<
|
714
|
-
<span class="
|
715
|
-
<
|
716
|
-
|
717
|
-
|
718
|
-
|
719
|
-
|
720
|
-
|
721
|
-
|
722
|
-
</
|
723
|
-
|
724
|
-
<
|
725
|
-
<
|
726
|
-
<span class="
|
727
|
-
|
728
|
-
|
729
|
-
|
730
|
-
|
731
|
-
|
732
|
-
|
733
|
-
</
|
734
|
-
|
735
|
-
|
736
|
-
<
|
737
|
-
<span class="
|
738
|
-
<
|
739
|
-
|
740
|
-
<
|
741
|
-
<span class="
|
742
|
-
<span class="
|
743
|
-
<span class="
|
744
|
-
<span class="
|
745
|
-
|
746
|
-
|
747
|
-
<
|
748
|
-
|
749
|
-
|
750
|
-
|
751
|
-
|
752
|
-
|
753
|
-
|
754
|
-
|
755
|
-
|
756
|
-
</
|
757
|
-
|
758
|
-
|
759
|
-
|
760
|
-
<
|
761
|
-
<
|
762
|
-
|
763
|
-
|
764
|
-
|
765
|
-
|
766
|
-
</
|
767
|
-
|
768
|
-
<
|
769
|
-
<
|
770
|
-
<span class="
|
771
|
-
|
772
|
-
|
773
|
-
|
774
|
-
|
775
|
-
|
776
|
-
|
777
|
-
</
|
778
|
-
|
779
|
-
|
780
|
-
<
|
781
|
-
|
782
|
-
|
783
|
-
|
784
|
-
|
785
|
-
(
|
786
|
-
|
787
|
-
|
788
|
-
<
|
789
|
-
|
790
|
-
|
791
|
-
</
|
792
|
-
|
793
|
-
|
794
|
-
|
795
|
-
|
796
|
-
<
|
797
|
-
<span class="
|
798
|
-
|
799
|
-
|
800
|
-
<span class="
|
801
|
-
|
802
|
-
|
803
|
-
<
|
804
|
-
|
805
|
-
|
806
|
-
|
807
|
-
|
808
|
-
|
809
|
-
|
810
|
-
|
811
|
-
|
812
|
-
<
|
813
|
-
<
|
814
|
-
<span class="
|
815
|
-
<
|
816
|
-
<
|
817
|
-
<span class="
|
818
|
-
<span class="go">
|
819
|
-
|
820
|
-
|
821
|
-
|
822
|
-
|
823
|
-
|
824
|
-
|
825
|
-
|
826
|
-
<
|
827
|
-
|
828
|
-
<
|
829
|
-
<
|
830
|
-
|
831
|
-
|
832
|
-
|
833
|
-
|
834
|
-
|
835
|
-
|
836
|
-
|
837
|
-
|
838
|
-
<
|
839
|
-
<
|
840
|
-
<span class="
|
841
|
-
<
|
842
|
-
|
843
|
-
|
844
|
-
|
845
|
-
|
846
|
-
|
847
|
-
|
848
|
-
|
849
|
-
<
|
850
|
-
|
851
|
-
<
|
852
|
-
<
|
853
|
-
|
854
|
-
<
|
855
|
-
<span class="gp">>>> </span><span class="n">Y</span>
|
856
|
-
<span class="
|
857
|
-
<span class="
|
858
|
-
<span class="
|
859
|
-
|
860
|
-
|
861
|
-
|
862
|
-
|
863
|
-
|
864
|
-
|
865
|
-
|
866
|
-
<
|
867
|
-
|
868
|
-
<
|
869
|
-
<
|
870
|
-
|
871
|
-
<
|
872
|
-
<
|
873
|
-
<span class="
|
874
|
-
<
|
875
|
-
|
876
|
-
|
877
|
-
|
878
|
-
|
879
|
-
|
880
|
-
<
|
881
|
-
<
|
882
|
-
<span class="
|
883
|
-
<
|
884
|
-
|
885
|
-
|
886
|
-
|
887
|
-
|
888
|
-
|
889
|
-
|
890
|
-
|
891
|
-
|
892
|
-
|
893
|
-
|
894
|
-
|
895
|
-
|
896
|
-
|
897
|
-
|
898
|
-
|
899
|
-
|
900
|
-
|
901
|
-
|
902
|
-
|
903
|
-
|
904
|
-
|
905
|
-
|
906
|
-
<
|
907
|
-
|
908
|
-
|
909
|
-
|
910
|
-
|
911
|
-
<
|
912
|
-
|
913
|
-
|
914
|
-
|
915
|
-
|
916
|
-
|
917
|
-
|
918
|
-
|
919
|
-
<p>
|
920
|
-
|
921
|
-
|
922
|
-
<
|
923
|
-
|
924
|
-
</
|
925
|
-
</
|
926
|
-
|
927
|
-
|
928
|
-
<
|
929
|
-
|
930
|
-
</
|
931
|
-
<
|
932
|
-
|
933
|
-
|
934
|
-
<
|
935
|
-
|
936
|
-
|
937
|
-
|
938
|
-
|
939
|
-
<
|
940
|
-
<
|
941
|
-
</
|
942
|
-
|
943
|
-
|
944
|
-
|
945
|
-
|
946
|
-
|
947
|
-
|
948
|
-
<
|
949
|
-
<
|
950
|
-
<span class="
|
951
|
-
<
|
952
|
-
|
953
|
-
|
954
|
-
|
955
|
-
|
956
|
-
|
957
|
-
|
958
|
-
<
|
959
|
-
<
|
960
|
-
|
961
|
-
|
962
|
-
</
|
963
|
-
|
964
|
-
|
965
|
-
|
966
|
-
|
967
|
-
|
968
|
-
|
969
|
-
|
970
|
-
|
971
|
-
<
|
972
|
-
|
973
|
-
</
|
974
|
-
|
975
|
-
|
976
|
-
|
977
|
-
|
978
|
-
<
|
979
|
-
<
|
980
|
-
|
981
|
-
|
982
|
-
<
|
983
|
-
|
984
|
-
</
|
985
|
-
<
|
986
|
-
|
987
|
-
|
988
|
-
<
|
989
|
-
|
990
|
-
|
991
|
-
<p>
|
992
|
-
|
993
|
-
|
994
|
-
|
995
|
-
|
996
|
-
|
997
|
-
<
|
998
|
-
|
999
|
-
|
1000
|
-
<p>
|
1001
|
-
|
1002
|
-
</
|
1003
|
-
|
1004
|
-
|
1005
|
-
<
|
1006
|
-
|
1007
|
-
<
|
1008
|
-
|
1009
|
-
|
1010
|
-
|
1011
|
-
|
1012
|
-
|
1013
|
-
|
1014
|
-
|
1015
|
-
|
1016
|
-
</
|
1017
|
-
|
1018
|
-
|
1019
|
-
|
1020
|
-
|
1021
|
-
<
|
1022
|
-
|
1023
|
-
</
|
1024
|
-
</
|
1025
|
-
<
|
1026
|
-
|
1027
|
-
</
|
1028
|
-
</
|
1029
|
-
<
|
1030
|
-
|
1031
|
-
|
1032
|
-
</
|
1033
|
-
</
|
1034
|
-
|
1035
|
-
|
1036
|
-
|
1037
|
-
</
|
1038
|
-
<
|
1039
|
-
<
|
1040
|
-
|
1041
|
-
|
1042
|
-
<
|
1043
|
-
<
|
1044
|
-
|
1045
|
-
|
1046
|
-
<
|
1047
|
-
|
1048
|
-
|
1049
|
-
<
|
1050
|
-
<span class="
|
1051
|
-
<span class="go">
|
1052
|
-
<span class="go">
|
1053
|
-
<span class="go">
|
1054
|
-
<span class="go">
|
1055
|
-
<span class="go">
|
1056
|
-
<span class="go">
|
1057
|
-
</
|
1058
|
-
</div>
|
1059
|
-
|
1060
|
-
<
|
1061
|
-
<
|
1062
|
-
<
|
1063
|
-
|
1064
|
-
|
1065
|
-
|
1066
|
-
|
1067
|
-
<
|
1068
|
-
|
1069
|
-
|
1070
|
-
|
1071
|
-
<p
|
1072
|
-
|
1073
|
-
|
1074
|
-
|
1075
|
-
|
1076
|
-
|
1077
|
-
|
1078
|
-
|
1079
|
-
|
1080
|
-
|
1081
|
-
<p>
|
1082
|
-
|
1083
|
-
|
1084
|
-
|
1085
|
-
<
|
1086
|
-
<
|
1087
|
-
</pre></div>
|
1088
|
-
</div>
|
1089
|
-
<p>
|
1090
|
-
|
1091
|
-
<
|
1092
|
-
</
|
1093
|
-
</
|
1094
|
-
<
|
1095
|
-
|
1096
|
-
|
1097
|
-
|
1098
|
-
</
|
1099
|
-
<
|
1100
|
-
<
|
1101
|
-
<span class="
|
1102
|
-
<span class="go">
|
1103
|
-
<span class="go">
|
1104
|
-
<span class="go">
|
1105
|
-
</pre></div>
|
1106
|
-
</div>
|
1107
|
-
<p
|
1108
|
-
<
|
1109
|
-
|
1110
|
-
<
|
1111
|
-
<span class="
|
1112
|
-
<span class="
|
1113
|
-
<span class="
|
1114
|
-
<span class="
|
1115
|
-
</pre></div>
|
1116
|
-
</div>
|
1117
|
-
<p
|
1118
|
-
|
1119
|
-
|
1120
|
-
<
|
1121
|
-
<
|
1122
|
-
<span class="gp"
|
1123
|
-
<span class="gp"
|
1124
|
-
|
1125
|
-
|
1126
|
-
</
|
1127
|
-
<
|
1128
|
-
|
1129
|
-
|
1130
|
-
|
1131
|
-
<p>
|
1132
|
-
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="
|
1133
|
-
|
1134
|
-
|
1135
|
-
<span class="
|
1136
|
-
|
1137
|
-
|
1138
|
-
<
|
1139
|
-
|
1140
|
-
|
1141
|
-
<
|
1142
|
-
<
|
1143
|
-
</
|
1144
|
-
</div>
|
1145
|
-
|
1146
|
-
|
1147
|
-
|
1148
|
-
<
|
1149
|
-
<
|
1150
|
-
|
1151
|
-
|
1152
|
-
<
|
1153
|
-
<span class="gp">>>> </span><span class="n">
|
1154
|
-
</
|
1155
|
-
</
|
1156
|
-
<
|
1157
|
-
|
1158
|
-
<
|
1159
|
-
|
1160
|
-
</
|
1161
|
-
</
|
1162
|
-
|
1163
|
-
<
|
1164
|
-
<
|
1165
|
-
<span class="
|
1166
|
-
<
|
1167
|
-
|
1168
|
-
|
1169
|
-
|
1170
|
-
</
|
1171
|
-
</
|
1172
|
-
|
1173
|
-
|
1174
|
-
|
1175
|
-
<
|
1176
|
-
<
|
1177
|
-
|
1178
|
-
|
1179
|
-
|
1180
|
-
<span class="gp">>>> </span><span class="n">M</span
|
1181
|
-
</
|
1182
|
-
</
|
1183
|
-
</
|
1184
|
-
|
1185
|
-
|
1186
|
-
|
1187
|
-
|
1188
|
-
|
1189
|
-
|
1190
|
-
<
|
1191
|
-
<span class="
|
1192
|
-
<
|
1193
|
-
<
|
1194
|
-
<span class="
|
1195
|
-
</pre></div>
|
1196
|
-
</div>
|
1197
|
-
|
1198
|
-
|
1199
|
-
|
1200
|
-
|
1201
|
-
<
|
1202
|
-
<
|
1203
|
-
|
1204
|
-
|
1205
|
-
</
|
1206
|
-
|
1207
|
-
<
|
1208
|
-
|
1209
|
-
|
1210
|
-
|
1211
|
-
<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">
|
1212
|
-
<span class="gp">>>> </span><span class="n">
|
1213
|
-
</
|
1214
|
-
</
|
1215
|
-
</
|
1216
|
-
|
1217
|
-
|
1218
|
-
|
1219
|
-
<
|
1220
|
-
<
|
1221
|
-
<
|
1222
|
-
<
|
1223
|
-
|
1224
|
-
|
1225
|
-
|
1226
|
-
|
1227
|
-
|
1228
|
-
|
1229
|
-
|
1230
|
-
|
1231
|
-
|
1232
|
-
|
1233
|
-
|
1234
|
-
|
1235
|
-
|
1236
|
-
|
1237
|
-
<p>
|
1238
|
-
|
1239
|
-
|
1240
|
-
|
1241
|
-
|
1242
|
-
|
1243
|
-
|
1244
|
-
<
|
1245
|
-
<
|
1246
|
-
|
1247
|
-
<
|
1248
|
-
|
1249
|
-
<
|
1250
|
-
|
1251
|
-
|
1252
|
-
|
1253
|
-
|
1254
|
-
|
1255
|
-
|
1256
|
-
|
1257
|
-
|
1258
|
-
|
1259
|
-
<
|
1260
|
-
|
1261
|
-
|
1262
|
-
|
1263
|
-
|
1264
|
-
|
1265
|
-
|
1266
|
-
|
1267
|
-
|
1268
|
-
|
1269
|
-
|
1270
|
-
|
1271
|
-
|
1272
|
-
|
1273
|
-
|
1274
|
-
<p>
|
1275
|
-
<
|
1276
|
-
<
|
1277
|
-
<
|
1278
|
-
|
1279
|
-
|
1280
|
-
|
1281
|
-
the
|
1282
|
-
|
1283
|
-
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="n">
|
1284
|
-
<span class="n">sage</span><span class="p">:</span> <span class="n">
|
1285
|
-
<span class="n">
|
1286
|
-
|
1287
|
-
|
1288
|
-
|
1289
|
-
<
|
1290
|
-
|
1291
|
-
|
1292
|
-
<p>
|
1293
|
-
|
1294
|
-
|
1295
|
-
|
1296
|
-
|
1297
|
-
|
1298
|
-
|
1299
|
-
|
1300
|
-
|
1301
|
-
|
1302
|
-
|
1303
|
-
<
|
1304
|
-
<
|
1305
|
-
<span class="
|
1306
|
-
|
1307
|
-
|
1308
|
-
<
|
1309
|
-
|
1310
|
-
|
1311
|
-
|
1312
|
-
|
1313
|
-
</
|
1314
|
-
|
1315
|
-
<
|
1316
|
-
|
1317
|
-
|
1318
|
-
<
|
1319
|
-
|
1320
|
-
<
|
1321
|
-
|
1322
|
-
|
1323
|
-
</
|
1324
|
-
|
1325
|
-
<
|
1326
|
-
<
|
1327
|
-
<span class="
|
1328
|
-
<
|
1329
|
-
|
1330
|
-
<span class="gp">>>> </span><span class="n">
|
1331
|
-
<span class="
|
1332
|
-
|
1333
|
-
</div>
|
1334
|
-
|
1335
|
-
|
1336
|
-
|
1337
|
-
<
|
1338
|
-
<
|
1339
|
-
|
1340
|
-
|
1341
|
-
<
|
1342
|
-
<
|
1343
|
-
<span class="
|
1344
|
-
<
|
1345
|
-
<
|
1346
|
-
|
1347
|
-
<span class="gp">>>> </span><span class="n">
|
1348
|
-
<span class="
|
1349
|
-
<span class="
|
1350
|
-
|
1351
|
-
|
1352
|
-
<
|
1353
|
-
<
|
1354
|
-
|
1355
|
-
<
|
1356
|
-
|
1357
|
-
</
|
1358
|
-
</
|
1359
|
-
<p>
|
1360
|
-
|
1361
|
-
|
1362
|
-
<
|
1363
|
-
<span class="gp">>>> </span><span class="n">
|
1364
|
-
<span class="go">'
|
1365
|
-
<span class="gp">>>> </span><span class="n">
|
1366
|
-
<span class="gp">>>> </span><span class="n">
|
1367
|
-
<span class="go"
|
1368
|
-
</pre></div>
|
1369
|
-
</div>
|
1370
|
-
<p>
|
1371
|
-
|
1372
|
-
|
1373
|
-
<span class="gp">>>> </span><span class="n">
|
1374
|
-
<span class="
|
1375
|
-
<span class="
|
1376
|
-
<span class="gp">>>> </span><span class="n">
|
1377
|
-
<span class="
|
1378
|
-
<span class="
|
1379
|
-
|
1380
|
-
|
1381
|
-
<
|
1382
|
-
<
|
1383
|
-
|
1384
|
-
|
1385
|
-
<
|
1386
|
-
<
|
1387
|
-
|
1388
|
-
|
1389
|
-
<
|
1390
|
-
|
1391
|
-
|
1392
|
-
|
1393
|
-
|
1394
|
-
<
|
1395
|
-
|
1396
|
-
<
|
1397
|
-
<
|
1398
|
-
|
1399
|
-
|
1400
|
-
</
|
1401
|
-
|
1402
|
-
<
|
1403
|
-
<
|
1404
|
-
|
1405
|
-
|
1406
|
-
|
1407
|
-
<
|
1408
|
-
|
1409
|
-
|
1410
|
-
<span class="
|
1411
|
-
|
1412
|
-
</
|
1413
|
-
</
|
1414
|
-
<p>
|
1415
|
-
|
1416
|
-
<p>
|
1417
|
-
|
1418
|
-
|
1419
|
-
|
1420
|
-
|
1421
|
-
|
1422
|
-
|
1423
|
-
<
|
1424
|
-
|
1425
|
-
</
|
1426
|
-
|
1427
|
-
|
1428
|
-
<
|
1429
|
-
<span class="
|
1430
|
-
<
|
1431
|
-
|
1432
|
-
<
|
1433
|
-
<span class="
|
1434
|
-
<span class="
|
1435
|
-
<span class="go">
|
1436
|
-
</pre></div>
|
1437
|
-
</div>
|
1438
|
-
|
1439
|
-
|
1440
|
-
|
1441
|
-
|
1442
|
-
|
1443
|
-
|
1444
|
-
|
1445
|
-
|
1446
|
-
|
1447
|
-
|
1448
|
-
|
1449
|
-
|
1450
|
-
|
1451
|
-
|
1452
|
-
|
1453
|
-
|
1454
|
-
|
1455
|
-
|
1456
|
-
|
1457
|
-
|
1458
|
-
|
1459
|
-
|
1460
|
-
|
1461
|
-
|
1462
|
-
|
1463
|
-
</
|
1464
|
-
|
1465
|
-
|
1466
|
-
|
1467
|
-
|
1468
|
-
|
1469
|
-
|
1470
|
-
|
1471
|
-
|
1472
|
-
|
1473
|
-
|
1474
|
-
|
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>Triangulation — SnapPy 3.2 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=828ea960"></script>
|
19
|
+
<script src="_static/doctools.js?v=9a2dae69"></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="Additional Classes" href="additional_classes.html" />
|
26
|
+
<link rel="prev" title="ManifoldHP: High-precision variant" href="manifoldhp.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 current"><a class="current reference internal" href="#">Triangulation</a><ul>
|
57
|
+
<li class="toctree-l3"><a class="reference internal" href="#snappy.Triangulation"><code class="docutils literal notranslate"><span class="pre">Triangulation</span></code></a><ul>
|
58
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.DT_code"><code class="docutils literal notranslate"><span class="pre">Triangulation.DT_code()</span></code></a></li>
|
59
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.alexander_polynomial"><code class="docutils literal notranslate"><span class="pre">Triangulation.alexander_polynomial()</span></code></a></li>
|
60
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.copy"><code class="docutils literal notranslate"><span class="pre">Triangulation.copy()</span></code></a></li>
|
61
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.cover"><code class="docutils literal notranslate"><span class="pre">Triangulation.cover()</span></code></a></li>
|
62
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.cover_info"><code class="docutils literal notranslate"><span class="pre">Triangulation.cover_info()</span></code></a></li>
|
63
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.covers"><code class="docutils literal notranslate"><span class="pre">Triangulation.covers()</span></code></a></li>
|
64
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.cusp_info"><code class="docutils literal notranslate"><span class="pre">Triangulation.cusp_info()</span></code></a></li>
|
65
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.dehn_fill"><code class="docutils literal notranslate"><span class="pre">Triangulation.dehn_fill()</span></code></a></li>
|
66
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.edge_valences"><code class="docutils literal notranslate"><span class="pre">Triangulation.edge_valences()</span></code></a></li>
|
67
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.exterior_to_link"><code class="docutils literal notranslate"><span class="pre">Triangulation.exterior_to_link()</span></code></a></li>
|
68
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.filled_triangulation"><code class="docutils literal notranslate"><span class="pre">Triangulation.filled_triangulation()</span></code></a></li>
|
69
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.fundamental_group"><code class="docutils literal notranslate"><span class="pre">Triangulation.fundamental_group()</span></code></a></li>
|
70
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.gluing_equations"><code class="docutils literal notranslate"><span class="pre">Triangulation.gluing_equations()</span></code></a></li>
|
71
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.gluing_equations_pgl"><code class="docutils literal notranslate"><span class="pre">Triangulation.gluing_equations_pgl()</span></code></a></li>
|
72
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.has_finite_vertices"><code class="docutils literal notranslate"><span class="pre">Triangulation.has_finite_vertices()</span></code></a></li>
|
73
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.homological_longitude"><code class="docutils literal notranslate"><span class="pre">Triangulation.homological_longitude()</span></code></a></li>
|
74
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.homology"><code class="docutils literal notranslate"><span class="pre">Triangulation.homology()</span></code></a></li>
|
75
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.is_orientable"><code class="docutils literal notranslate"><span class="pre">Triangulation.is_orientable()</span></code></a></li>
|
76
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.isomorphisms_to"><code class="docutils literal notranslate"><span class="pre">Triangulation.isomorphisms_to()</span></code></a></li>
|
77
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.link"><code class="docutils literal notranslate"><span class="pre">Triangulation.link()</span></code></a></li>
|
78
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.name"><code class="docutils literal notranslate"><span class="pre">Triangulation.name()</span></code></a></li>
|
79
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.normal_boundary_slopes"><code class="docutils literal notranslate"><span class="pre">Triangulation.normal_boundary_slopes()</span></code></a></li>
|
80
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.normal_surfaces"><code class="docutils literal notranslate"><span class="pre">Triangulation.normal_surfaces()</span></code></a></li>
|
81
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.num_cusps"><code class="docutils literal notranslate"><span class="pre">Triangulation.num_cusps()</span></code></a></li>
|
82
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.num_tetrahedra"><code class="docutils literal notranslate"><span class="pre">Triangulation.num_tetrahedra()</span></code></a></li>
|
83
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.orientation_cover"><code class="docutils literal notranslate"><span class="pre">Triangulation.orientation_cover()</span></code></a></li>
|
84
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.plink"><code class="docutils literal notranslate"><span class="pre">Triangulation.plink()</span></code></a></li>
|
85
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.ptolemy_generalized_obstruction_classes"><code class="docutils literal notranslate"><span class="pre">Triangulation.ptolemy_generalized_obstruction_classes()</span></code></a></li>
|
86
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.ptolemy_obstruction_classes"><code class="docutils literal notranslate"><span class="pre">Triangulation.ptolemy_obstruction_classes()</span></code></a></li>
|
87
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.ptolemy_variety"><code class="docutils literal notranslate"><span class="pre">Triangulation.ptolemy_variety()</span></code></a></li>
|
88
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.randomize"><code class="docutils literal notranslate"><span class="pre">Triangulation.randomize()</span></code></a></li>
|
89
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.reverse_orientation"><code class="docutils literal notranslate"><span class="pre">Triangulation.reverse_orientation()</span></code></a></li>
|
90
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.save"><code class="docutils literal notranslate"><span class="pre">Triangulation.save()</span></code></a></li>
|
91
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.set_name"><code class="docutils literal notranslate"><span class="pre">Triangulation.set_name()</span></code></a></li>
|
92
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.set_peripheral_curves"><code class="docutils literal notranslate"><span class="pre">Triangulation.set_peripheral_curves()</span></code></a></li>
|
93
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.simplify"><code class="docutils literal notranslate"><span class="pre">Triangulation.simplify()</span></code></a></li>
|
94
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.slice_obstruction_HKL"><code class="docutils literal notranslate"><span class="pre">Triangulation.slice_obstruction_HKL()</span></code></a></li>
|
95
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.symplectic_basis"><code class="docutils literal notranslate"><span class="pre">Triangulation.symplectic_basis()</span></code></a></li>
|
96
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.triangulation_isosig"><code class="docutils literal notranslate"><span class="pre">Triangulation.triangulation_isosig()</span></code></a></li>
|
97
|
+
<li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.with_hyperbolic_structure"><code class="docutils literal notranslate"><span class="pre">Triangulation.with_hyperbolic_structure()</span></code></a></li>
|
98
|
+
</ul>
|
99
|
+
</li>
|
100
|
+
</ul>
|
101
|
+
</li>
|
102
|
+
<li class="toctree-l2"><a class="reference internal" href="additional_classes.html">Additional Classes</a></li>
|
103
|
+
<li class="toctree-l2"><a class="reference internal" href="censuses.html">Census manifolds</a></li>
|
104
|
+
</ul>
|
105
|
+
</li>
|
106
|
+
<li class="toctree-l1"><a class="reference internal" href="plink.html">Using SnapPy’s link editor</a></li>
|
107
|
+
<li class="toctree-l1"><a class="reference internal" href="spherogram.html">Links: planar diagrams and invariants</a></li>
|
108
|
+
<li class="toctree-l1"><a class="reference internal" href="snap.html">Number theory of hyperbolic 3-manifolds</a></li>
|
109
|
+
<li class="toctree-l1"><a class="reference internal" href="verify.html">Verified computations</a></li>
|
110
|
+
<li class="toctree-l1"><a class="reference internal" href="other.html">Other components</a></li>
|
111
|
+
<li class="toctree-l1"><a class="reference internal" href="news.html">News</a></li>
|
112
|
+
<li class="toctree-l1"><a class="reference internal" href="credits.html">Credits</a></li>
|
113
|
+
<li class="toctree-l1"><a class="reference internal" href="bugs.html">Reporting bugs and other problems</a></li>
|
114
|
+
<li class="toctree-l1"><a class="reference internal" href="todo.html">To Do List</a></li>
|
115
|
+
<li class="toctree-l1"><a class="reference internal" href="development.html">Development Basics</a></li>
|
116
|
+
</ul>
|
117
|
+
|
118
|
+
</div>
|
119
|
+
</div>
|
120
|
+
</nav>
|
121
|
+
|
122
|
+
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
123
|
+
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
124
|
+
<a href="index.html">SnapPy</a>
|
125
|
+
</nav>
|
126
|
+
|
127
|
+
<div class="wy-nav-content">
|
128
|
+
<div class="rst-content">
|
129
|
+
<div role="navigation" aria-label="Page navigation">
|
130
|
+
<ul class="wy-breadcrumbs">
|
131
|
+
<li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
|
132
|
+
<li class="breadcrumb-item"><a href="snappy.html">The snappy module and its classes</a></li>
|
133
|
+
<li class="breadcrumb-item active">Triangulation</li>
|
134
|
+
<li class="wy-breadcrumbs-aside">
|
135
|
+
</li>
|
136
|
+
</ul>
|
137
|
+
<hr/>
|
138
|
+
</div>
|
139
|
+
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
140
|
+
<div itemprop="articleBody">
|
141
|
+
|
142
|
+
<section id="triangulation">
|
143
|
+
<h1>Triangulation<a class="headerlink" href="#triangulation" title="Link to this heading"></a></h1>
|
144
|
+
<p>The main snappy class, namely Manifold, is derived from the more
|
145
|
+
basic class below.</p>
|
146
|
+
<dl class="py class">
|
147
|
+
<dt class="sig sig-object py" id="snappy.Triangulation">
|
148
|
+
<em class="property"><span class="pre">class</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">Triangulation</span></span><a class="headerlink" href="#snappy.Triangulation" title="Link to this definition"></a></dt>
|
149
|
+
<dd><p>A Triangulation object represents a compact 3-manifold with torus
|
150
|
+
boundary components, given as an ideal triangulation of the
|
151
|
+
manifold’s interior. A Dehn-filling can be specified for each
|
152
|
+
boundary component, allowing the description of closed 3-manifolds
|
153
|
+
and some orbifolds. For non-orientable 3-manifolds, the boundary
|
154
|
+
components can also be Klein bottles. Two Triangulations are equal
|
155
|
+
(‘==’) if they represent combinatorially isomorphic
|
156
|
+
triangulations. A Triangulation does <em>not</em> have any geometric
|
157
|
+
structure, and usually one works with the subclass Manifold which
|
158
|
+
adds this. Here’s a quick example:</p>
|
159
|
+
<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">Triangulation</span><span class="p">(</span><span class="s1">'9_42'</span><span class="p">)</span>
|
160
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">num_tetrahedra</span><span class="p">()</span>
|
161
|
+
<span class="go">5</span>
|
162
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">is_orientable</span><span class="p">()</span>
|
163
|
+
<span class="go">True</span>
|
164
|
+
</pre></div>
|
165
|
+
</div>
|
166
|
+
<p>A Triangulation can be specified in a number of ways, e.g.</p>
|
167
|
+
<ul class="simple">
|
168
|
+
<li><p>Triangulation(‘9_42’) : The complement of the knot 9_42 in S^3.</p></li>
|
169
|
+
<li><p>Triangulation(‘m125(1,2)(4,5)’) : The SnapPea census manifold m125
|
170
|
+
where the first cusp has Dehn filling (1,2) and the second cusp has
|
171
|
+
filling (4,5).</p></li>
|
172
|
+
<li><p>Triangulation() : Opens a link editor window where can you
|
173
|
+
specify a link complement.</p></li>
|
174
|
+
</ul>
|
175
|
+
<p>In general, the specification can be from among the below, with
|
176
|
+
information on Dehn fillings added.</p>
|
177
|
+
<ul>
|
178
|
+
<li><p>SnapPea cusped census manifolds: e.g. ‘m123’, ‘s123’, ‘v123’.</p></li>
|
179
|
+
<li><p>Link complements:</p>
|
180
|
+
<blockquote>
|
181
|
+
<div><ul class="simple">
|
182
|
+
<li><p>Rolfsen’s table: e.g. ‘4_1’, ‘04_1’, ‘5^2_6’, ‘6_4^7’, ‘L20935’, ‘l104001’.</p></li>
|
183
|
+
<li><p>Knots and links up to 14 crossings from tabulations by Hoste
|
184
|
+
and Thistlethwaite: e.g. ‘K12a456’ or ‘L13n579’.</p></li>
|
185
|
+
<li><p>Hoste-Thistlethwaite Knotscape table: e.g. ‘11a17’ or ‘12n345’</p></li>
|
186
|
+
<li><p>Dowker-Thistlethwaite code: e.g. ‘DT:[(6,8,2,4)]’, ‘DT:dadbcda’</p></li>
|
187
|
+
</ul>
|
188
|
+
</div></blockquote>
|
189
|
+
</li>
|
190
|
+
<li><p>Once-punctured torus bundles: e.g. ‘b++LLR’, ‘b+-llR’, ‘bo-RRL’, ‘bn+LRLR’</p></li>
|
191
|
+
<li><p>Fibered manifold associated to a braid: ‘Braid:[1,2,-3,4]’</p>
|
192
|
+
<p>Here, the braid is thought of as a mapping class of the
|
193
|
+
punctured disc, and this manifold is the corresponding
|
194
|
+
mapping torus. If you want the braid closure, do (1,0) filling
|
195
|
+
of the last cusp.</p>
|
196
|
+
</li>
|
197
|
+
<li><p>From mapping class group data using Twister:</p>
|
198
|
+
<p>‘Bundle(S_{1,1}, [a0, B1])’ or ‘Splitting(S_{1,0}, [b1, A0], [a0,B1])’</p>
|
199
|
+
<p>See the help for the ‘twister’ module for more.</p>
|
200
|
+
</li>
|
201
|
+
<li><p>A SnapPea triangulation or link projection file: ‘filename’</p>
|
202
|
+
<p>The file will be loaded if found in the current directory or the
|
203
|
+
path given by the shell variable SNAPPEA_MANIFOLD_DIRECTORY.</p>
|
204
|
+
</li>
|
205
|
+
<li><p>A Regina-style isomorphism signature, such as ‘dLQbcccdxwb’.</p></li>
|
206
|
+
<li><p>A string containing the contents of a SnapPea triangulation or link
|
207
|
+
projection file.</p></li>
|
208
|
+
</ul>
|
209
|
+
<dl class="py method">
|
210
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.DT_code">
|
211
|
+
<span class="sig-name descname"><span class="pre">DT_code</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">alpha</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">flips</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.Triangulation.DT_code" title="Link to this definition"></a></dt>
|
212
|
+
<dd><p>Return the Dowker-Thistlethwaite code of this link complement,
|
213
|
+
if it is a link complement. The DT code is intended to be an
|
214
|
+
immutable attribute, for use with knot and link exteriors
|
215
|
+
only, which is set only when the manifold was created.</p>
|
216
|
+
<p>Here is the Whitehead link:</p>
|
217
|
+
<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">'L5a1'</span><span class="p">)</span>
|
218
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">DT_code</span><span class="p">()</span>
|
219
|
+
<span class="go">[(6, 8), (2, 10, 4)]</span>
|
220
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">DT_code</span><span class="p">(</span><span class="n">alpha</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
221
|
+
<span class="go">'ebbccdaeb'</span>
|
222
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">DT_code</span><span class="p">(</span><span class="n">alpha</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">flips</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
223
|
+
<span class="go">'ebbccdaeb.01110'</span>
|
224
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">DT_code</span><span class="p">(</span><span class="n">flips</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
225
|
+
<span class="go">([(6, 8), (2, 10, 4)], [0, 1, 1, 1, 0])</span>
|
226
|
+
</pre></div>
|
227
|
+
</div>
|
228
|
+
</dd></dl>
|
229
|
+
|
230
|
+
<dl class="py method">
|
231
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.alexander_polynomial">
|
232
|
+
<span class="sig-name descname"><span class="pre">alexander_polynomial</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.alexander_polynomial" title="Link to this definition"></a></dt>
|
233
|
+
<dd><p>Computes the multivariable Alexander polynomial of the manifold:</p>
|
234
|
+
<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">'K12n123'</span><span class="p">)</span>
|
235
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">M</span><span class="o">.</span><span class="n">alexander_polynomial</span><span class="p">()</span>
|
236
|
+
<span class="mi">2</span><span class="o">*</span><span class="n">a</span><span class="o">^</span><span class="mi">6</span> <span class="o">-</span> <span class="mi">14</span><span class="o">*</span><span class="n">a</span><span class="o">^</span><span class="mi">5</span> <span class="o">+</span> <span class="mi">34</span><span class="o">*</span><span class="n">a</span><span class="o">^</span><span class="mi">4</span> <span class="o">-</span> <span class="mi">45</span><span class="o">*</span><span class="n">a</span><span class="o">^</span><span class="mi">3</span> <span class="o">+</span> <span class="mi">34</span><span class="o">*</span><span class="n">a</span><span class="o">^</span><span class="mi">2</span> <span class="o">-</span> <span class="mi">14</span><span class="o">*</span><span class="n">a</span> <span class="o">+</span> <span class="mi">2</span>
|
237
|
+
|
238
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">N</span> <span class="o">=</span> <span class="n">Triangulation</span><span class="p">(</span><span class="s1">'v1539(5,1)'</span><span class="p">)</span>
|
239
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">N</span><span class="o">.</span><span class="n">alexander_polynomial</span><span class="p">()</span>
|
240
|
+
<span class="n">a</span><span class="o">^</span><span class="mi">2</span><span class="o">*</span><span class="n">b</span> <span class="o">+</span> <span class="n">a</span><span class="o">*</span><span class="n">b</span><span class="o">^</span><span class="mi">2</span> <span class="o">+</span> <span class="n">a</span><span class="o">*</span><span class="n">b</span> <span class="o">+</span> <span class="n">a</span> <span class="o">+</span> <span class="n">b</span>
|
241
|
+
</pre></div>
|
242
|
+
</div>
|
243
|
+
<p>Any provided keyword arguments are passed to
|
244
|
+
<a class="reference internal" href="#snappy.Triangulation.fundamental_group" title="snappy.Triangulation.fundamental_group"><code class="xref py py-meth docutils literal notranslate"><span class="pre">fundamental_group</span></code></a> and
|
245
|
+
so affect the group presentation used in the computation.</p>
|
246
|
+
</dd></dl>
|
247
|
+
|
248
|
+
<dl class="py method">
|
249
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.copy">
|
250
|
+
<span class="sig-name descname"><span class="pre">copy</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.copy" title="Link to this definition"></a></dt>
|
251
|
+
<dd><p>Returns a copy of the triangulation.</p>
|
252
|
+
<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">Triangulation</span><span class="p">(</span><span class="s1">'m125'</span><span class="p">)</span>
|
253
|
+
<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">copy</span><span class="p">()</span>
|
254
|
+
</pre></div>
|
255
|
+
</div>
|
256
|
+
</dd></dl>
|
257
|
+
|
258
|
+
<dl class="py method">
|
259
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.cover">
|
260
|
+
<span class="sig-name descname"><span class="pre">cover</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">permutation_rep</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a class="reference internal" href="#snappy.Triangulation" title="snappy.Triangulation"><span class="pre">snappy.Triangulation</span></a></span></span><a class="headerlink" href="#snappy.Triangulation.cover" title="Link to this definition"></a></dt>
|
261
|
+
<dd><p>Returns a <a class="reference internal" href="#snappy.Triangulation" title="snappy.Triangulation"><code class="xref py py-class docutils literal notranslate"><span class="pre">Triangulation</span></code></a> representing the finite cover specified
|
262
|
+
by a transitive permutation representation. The representation is
|
263
|
+
specified by a list of permutations, one for each generator of the
|
264
|
+
simplified presentation of the fundamental group. Each permutation is
|
265
|
+
specified as a list <code class="docutils literal notranslate"><span class="pre">P</span></code> such that <code class="docutils literal notranslate"><span class="pre">set(P)</span> <span class="pre">==</span> <span class="pre">set(range(d))</span></code> where
|
266
|
+
<code class="docutils literal notranslate"><span class="pre">d</span></code> is the degree of the cover.</p>
|
267
|
+
<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">Triangulation</span><span class="p">(</span><span class="s1">'m004'</span><span class="p">)</span>
|
268
|
+
<span class="gp">>>> </span><span class="n">N0</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">cover</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">0</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">2</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">3</span><span class="p">]])</span>
|
269
|
+
<span class="gp">>>> </span><span class="n">N0</span><span class="o">.</span><span class="n">homology</span><span class="p">()</span>
|
270
|
+
<span class="go">Z + Z + Z</span>
|
271
|
+
<span class="gp">>>> </span><span class="n">N0</span><span class="o">.</span><span class="n">cover_info</span><span class="p">()[</span><span class="s1">'type'</span><span class="p">]</span>
|
272
|
+
<span class="go">'irregular'</span>
|
273
|
+
<span class="gp">>>> </span><span class="n">N0</span><span class="o">.</span><span class="n">cover_info</span><span class="p">()[</span><span class="s1">'base'</span><span class="p">]</span>
|
274
|
+
<span class="go">'m004'</span>
|
275
|
+
<span class="gp">>>> </span><span class="n">N0</span><span class="o">.</span><span class="n">cover_info</span><span class="p">()[</span><span class="s1">'degree'</span><span class="p">]</span>
|
276
|
+
<span class="go">5</span>
|
277
|
+
</pre></div>
|
278
|
+
</div>
|
279
|
+
<p>Within Sage the permutations can also be of type
|
280
|
+
<code class="docutils literal notranslate"><span class="pre">PermutationGroupElement</span></code>, in which case they act on the set
|
281
|
+
<code class="docutils literal notranslate"><span class="pre">range(1,</span> <span class="pre">d</span> <span class="pre">+</span> <span class="pre">1)</span></code>. Or, you can specify a GAP or Magma subgroup
|
282
|
+
of the fundamental group. For more examples, see the docstring for
|
283
|
+
<a class="reference internal" href="manifold.html#snappy.Manifold.cover" title="snappy.Manifold.cover"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Manifold.cover()</span></code></a>.</p>
|
284
|
+
</dd></dl>
|
285
|
+
|
286
|
+
<dl class="py method">
|
287
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.cover_info">
|
288
|
+
<span class="sig-name descname"><span class="pre">cover_info</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.cover_info" title="Link to this definition"></a></dt>
|
289
|
+
<dd><p>If this is a manifold or triangulation which was constructed as
|
290
|
+
a covering space, return a dictionary describing the cover. Otherwise
|
291
|
+
return 0. The dictionary keys are ‘base’, ‘type’ and ‘degree’.</p>
|
292
|
+
</dd></dl>
|
293
|
+
|
294
|
+
<dl class="py method">
|
295
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.covers">
|
296
|
+
<span class="sig-name descname"><span class="pre">covers</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">degree</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">method</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cover_type</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'all'</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#snappy.Triangulation" title="snappy.Triangulation"><span class="pre">snappy.Triangulation</span></a><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#snappy.Triangulation.covers" title="Link to this definition"></a></dt>
|
297
|
+
<dd><p>Returns a list of Triangulations corresponding to all of the
|
298
|
+
finite covers of the given degree. The default method is
|
299
|
+
‘low_index’ for general covers and ‘snappea’ for cyclic
|
300
|
+
covers. The former uses Sim’s algorithm while the latter
|
301
|
+
uses the original Snappea algorithm.</p>
|
302
|
+
<p>WARNING: If the degree is large this might take a very, very,
|
303
|
+
very long time.</p>
|
304
|
+
<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">Triangulation</span><span class="p">(</span><span class="s1">'m003'</span><span class="p">)</span>
|
305
|
+
<span class="gp">>>> </span><span class="n">covers</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">covers</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
|
306
|
+
<span class="gp">>>> </span><span class="nb">sorted</span><span class="p">(</span><span class="n">N</span><span class="o">.</span><span class="n">homology</span><span class="p">()</span> <span class="k">for</span> <span class="n">N</span> <span class="ow">in</span> <span class="n">covers</span><span class="p">)</span>
|
307
|
+
<span class="go">[Z/3 + Z/15 + Z, Z/5 + Z + Z]</span>
|
308
|
+
</pre></div>
|
309
|
+
</div>
|
310
|
+
<p>It is faster to look just at cyclic covers.</p>
|
311
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">covers</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">covers</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">cover_type</span><span class="o">=</span><span class="s1">'cyclic'</span><span class="p">)</span>
|
312
|
+
<span class="gp">>>> </span><span class="p">[(</span><span class="n">N</span><span class="p">,</span> <span class="n">N</span><span class="o">.</span><span class="n">homology</span><span class="p">())</span> <span class="k">for</span> <span class="n">N</span> <span class="ow">in</span> <span class="n">covers</span><span class="p">]</span>
|
313
|
+
<span class="go">[(m003~cyc~0(0,0), Z/3 + Z/15 + Z)]</span>
|
314
|
+
</pre></div>
|
315
|
+
</div>
|
316
|
+
<p>Here we check that we get the same number of covers with the
|
317
|
+
‘snappea’ and ‘low_index’ methods.</p>
|
318
|
+
<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">Triangulation</span><span class="p">(</span><span class="s1">'m125'</span><span class="p">)</span>
|
319
|
+
<span class="gp">>>> </span><span class="nb">len</span><span class="p">(</span><span class="n">M</span><span class="o">.</span><span class="n">covers</span><span class="p">(</span><span class="mi">5</span><span class="p">))</span>
|
320
|
+
<span class="go">19</span>
|
321
|
+
<span class="gp">>>> </span><span class="nb">len</span><span class="p">(</span><span class="n">M</span><span class="o">.</span><span class="n">covers</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="n">method</span><span class="o">=</span><span class="s1">'snappea'</span><span class="p">))</span>
|
322
|
+
<span class="go">19</span>
|
323
|
+
</pre></div>
|
324
|
+
</div>
|
325
|
+
<p>If you are using Sage, you can use GAP to find the subgroups,
|
326
|
+
which is often much faster, by specifying the optional
|
327
|
+
argument method = ‘gap’ If you have Magma installed, you can
|
328
|
+
used it to do the heavy lifting by specifying method=’magma’.</p>
|
329
|
+
</dd></dl>
|
330
|
+
|
331
|
+
<dl class="py method">
|
332
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.cusp_info">
|
333
|
+
<span class="sig-name descname"><span class="pre">cusp_info</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data_spec</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.Triangulation.cusp_info" title="Link to this definition"></a></dt>
|
334
|
+
<dd><p>Returns an info object containing information about the given
|
335
|
+
cusp. Usage:</p>
|
336
|
+
<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">Triangulation</span><span class="p">(</span><span class="s1">'v3227(0,0)(1,2)(3,2)'</span><span class="p">)</span>
|
337
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">cusp_info</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
338
|
+
<span class="go">Cusp 1 : torus cusp with Dehn filling coefficients (M, L) = (1.0, 2.0)</span>
|
339
|
+
<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_info</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
340
|
+
<span class="gp">>>> </span><span class="n">c</span><span class="o">.</span><span class="n">is_complete</span>
|
341
|
+
<span class="go">False</span>
|
342
|
+
<span class="gp">>>> </span><span class="nb">sorted</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
|
343
|
+
<span class="go">['filling', 'index', 'is_complete', 'topology']</span>
|
344
|
+
</pre></div>
|
345
|
+
</div>
|
346
|
+
<p>You can get information about multiple cusps at once:</p>
|
347
|
+
<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">cusp_info</span><span class="p">()</span>
|
348
|
+
<span class="go">[Cusp 0 : torus cusp, not filled,</span>
|
349
|
+
<span class="go"> Cusp 1 : torus cusp with Dehn filling coefficients (M, L) = (1.0, 2.0),</span>
|
350
|
+
<span class="go"> Cusp 2 : torus cusp with Dehn filling coefficients (M, L) = (3.0, 2.0)]</span>
|
351
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">cusp_info</span><span class="p">(</span><span class="s1">'is_complete'</span><span class="p">)</span>
|
352
|
+
<span class="go">[True, False, False]</span>
|
353
|
+
</pre></div>
|
354
|
+
</div>
|
355
|
+
</dd></dl>
|
356
|
+
|
357
|
+
<dl class="py method">
|
358
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.dehn_fill">
|
359
|
+
<span class="sig-name descname"><span class="pre">dehn_fill</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filling_data</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">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#snappy.Triangulation.dehn_fill" title="Link to this definition"></a></dt>
|
360
|
+
<dd><p>Set the Dehn filling coefficients of the cusps. This can be
|
361
|
+
specified in the following ways, where the cusps are numbered
|
362
|
+
by 0,1,…,(num_cusps - 1).</p>
|
363
|
+
<ul>
|
364
|
+
<li><p>Fill cusp 2:</p>
|
365
|
+
<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">Triangulation</span><span class="p">(</span><span class="s1">'8^4_1'</span><span class="p">)</span>
|
366
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">dehn_fill</span><span class="p">((</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">),</span> <span class="mi">2</span><span class="p">)</span>
|
367
|
+
<span class="gp">>>> </span><span class="n">M</span>
|
368
|
+
<span class="go">8^4_1(0,0)(0,0)(2,3)(0,0)</span>
|
369
|
+
</pre></div>
|
370
|
+
</div>
|
371
|
+
</li>
|
372
|
+
<li><p>Fill the last cusp:</p>
|
373
|
+
<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">dehn_fill</span><span class="p">((</span><span class="mi">1</span><span class="p">,</span><span class="mi">5</span><span class="p">),</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
|
374
|
+
<span class="gp">>>> </span><span class="n">M</span>
|
375
|
+
<span class="go">8^4_1(0,0)(0,0)(2,3)(1,5)</span>
|
376
|
+
</pre></div>
|
377
|
+
</div>
|
378
|
+
</li>
|
379
|
+
<li><p>Fill the first two cusps:</p>
|
380
|
+
<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">dehn_fill</span><span class="p">(</span> <span class="p">[</span> <span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="mi">0</span><span class="p">),</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">4</span><span class="p">)</span> <span class="p">])</span>
|
381
|
+
<span class="gp">>>> </span><span class="n">M</span>
|
382
|
+
<span class="go">8^4_1(3,0)(1,-4)(2,3)(1,5)</span>
|
383
|
+
</pre></div>
|
384
|
+
</div>
|
385
|
+
</li>
|
386
|
+
<li><p>When there is only one cusp, there’s a shortcut</p>
|
387
|
+
<div class="doctest 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">Triangulation</span><span class="p">(</span><span class="s1">'m004'</span><span class="p">)</span>
|
388
|
+
<span class="gp">>>> </span><span class="n">N</span><span class="o">.</span><span class="n">dehn_fill</span><span class="p">(</span> <span class="p">(</span><span class="o">-</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">)</span> <span class="p">)</span>
|
389
|
+
<span class="gp">>>> </span><span class="n">N</span>
|
390
|
+
<span class="go">m004(-3,4)</span>
|
391
|
+
</pre></div>
|
392
|
+
</div>
|
393
|
+
</li>
|
394
|
+
</ul>
|
395
|
+
<p>Does not return a new <a class="reference internal" href="#snappy.Triangulation" title="snappy.Triangulation"><code class="xref py py-class docutils literal notranslate"><span class="pre">Triangulation</span></code></a>.</p>
|
396
|
+
</dd></dl>
|
397
|
+
|
398
|
+
<dl class="py method">
|
399
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.edge_valences">
|
400
|
+
<span class="sig-name descname"><span class="pre">edge_valences</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.edge_valences" title="Link to this definition"></a></dt>
|
401
|
+
<dd><p>Returns a dictionary whose keys are the valences of the edges
|
402
|
+
in the triangulation, and the value associated to a key is the
|
403
|
+
number of edges of that valence.</p>
|
404
|
+
<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">Triangulation</span><span class="p">(</span><span class="s1">'v3227'</span><span class="p">)</span>
|
405
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">edge_valences</span><span class="p">()</span>
|
406
|
+
<span class="go">{10: 1, 4: 1, 5: 2, 6: 3}</span>
|
407
|
+
</pre></div>
|
408
|
+
</div>
|
409
|
+
</dd></dl>
|
410
|
+
|
411
|
+
<dl class="py method">
|
412
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.exterior_to_link">
|
413
|
+
<span class="sig-name descname"><span class="pre">exterior_to_link</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">verbose</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">check_input</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">check_answer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">careful_perturbation</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">simplify_link</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pachner_search_tries</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">10</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">seed</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a class="reference internal" href="spherogram.html#spherogram.Link" title="spherogram.Link"><span class="pre">Link</span></a></span></span><a class="headerlink" href="#snappy.Triangulation.exterior_to_link" title="Link to this definition"></a></dt>
|
414
|
+
<dd><p>For a triangulation of the exterior of a link in the 3-sphere,
|
415
|
+
return a planar diagram for the link. The peripheral curves whose
|
416
|
+
Dehn filling is the 3-sphere are <strong>part of the input</strong>, specified
|
417
|
+
by either:</p>
|
418
|
+
<ol class="loweralpha simple">
|
419
|
+
<li><p>If no cusp is filled, then they are the meridians of the
|
420
|
+
current peripheral curves.</p></li>
|
421
|
+
<li><p>If every cusp is filled, then they are the current Dehn filling
|
422
|
+
curves.</p></li>
|
423
|
+
</ol>
|
424
|
+
<p>In particular, it does <strong>not</strong> try to determine whether there exist
|
425
|
+
fillings on the input which give the 3-sphere. Example usage:</p>
|
426
|
+
<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">'m016'</span><span class="p">)</span>
|
427
|
+
<span class="gp">>>> </span><span class="n">L</span> <span class="o">=</span> <span class="n">exterior_to_link</span><span class="p">(</span><span class="n">M</span><span class="p">)</span>
|
428
|
+
<span class="gp">>>> </span><span class="n">L</span><span class="o">.</span><span class="n">exterior</span><span class="p">()</span><span class="o">.</span><span class="n">is_isometric_to</span><span class="p">(</span><span class="n">M</span><span class="p">)</span>
|
429
|
+
<span class="go">True</span>
|
430
|
+
</pre></div>
|
431
|
+
</div>
|
432
|
+
<p>The algorithm used is that of <a class="reference external" href="https://arxiv.org/abs/2112.03251">Dunfield, Obeidin, and Rudd</a>. The optional arguments are
|
433
|
+
as follows.</p>
|
434
|
+
<ul class="simple">
|
435
|
+
<li><p><code class="docutils literal notranslate"><span class="pre">verbose</span></code>: When <code class="docutils literal notranslate"><span class="pre">True</span></code>, prints progress updates as the algorithm
|
436
|
+
goes along.</p></li>
|
437
|
+
<li><p><code class="docutils literal notranslate"><span class="pre">check_input</span></code>: When <code class="docutils literal notranslate"><span class="pre">True</span></code> (the default), first checks that the
|
438
|
+
fundamental group of the specified Dehn filling is trivial. As
|
439
|
+
it doesn’t try too hard to simplify the group presentation, it
|
440
|
+
can happen that this check fails but the algorithm still finds a
|
441
|
+
diagram if you pass <code class="docutils literal notranslate"><span class="pre">check_input=False</span></code>.</p></li>
|
442
|
+
<li><p><code class="docutils literal notranslate"><span class="pre">check_answer</span></code>: When <code class="docutils literal notranslate"><span class="pre">True</span></code> (the default), take the exterior of
|
443
|
+
the final link diagram and use <code class="docutils literal notranslate"><span class="pre">Manifold.is_isometric_to</span></code> to
|
444
|
+
confirm that it is homeomorphic to the input. If the input is
|
445
|
+
not hyperbolic or is very large, this check may fail even though
|
446
|
+
the diagram is correct.</p></li>
|
447
|
+
<li><p><code class="docutils literal notranslate"><span class="pre">careful_perturbation</span></code>: The rational coordinates of the
|
448
|
+
intermediate PL links are periodically rounded to control the
|
449
|
+
size of their denominators. When <code class="docutils literal notranslate"><span class="pre">careful_perturbation=True</span></code>
|
450
|
+
(the default), computations are performed to ensure this
|
451
|
+
rounding does not change the isotopy class of the link.</p></li>
|
452
|
+
<li><p><code class="docutils literal notranslate"><span class="pre">simplify_link</span></code>: When <code class="docutils literal notranslate"><span class="pre">True</span></code> (the default), uses
|
453
|
+
<code class="docutils literal notranslate"><span class="pre">Link.simplify('global')</span></code> to minimize the size of the final
|
454
|
+
diagram; otherwise, it just does <code class="docutils literal notranslate"><span class="pre">basic</span></code> simplifications, which
|
455
|
+
can be much faster if the initial link is complicated.</p></li>
|
456
|
+
<li><p><code class="docutils literal notranslate"><span class="pre">pachner_search_tries</span></code>: Controls how hard to search for a
|
457
|
+
suitable sequence of Pachner moves from the filled input
|
458
|
+
triangulation to a standard triangulation of the 3-sphere.</p></li>
|
459
|
+
<li><p><code class="docutils literal notranslate"><span class="pre">seed</span></code>: The algorithm involves many random choices, and hence
|
460
|
+
each run typically produces a different diagram of the
|
461
|
+
underlying link. If you need the same output each time, you can
|
462
|
+
specify a fixed seed for the various pseudo-random number
|
463
|
+
generators.</p></li>
|
464
|
+
</ul>
|
465
|
+
<p>Note on rigor: Provided at least one of <code class="docutils literal notranslate"><span class="pre">check_answer</span></code> and
|
466
|
+
<code class="docutils literal notranslate"><span class="pre">careful_perturbation</span></code> is <code class="docutils literal notranslate"><span class="pre">True</span></code>, the exterior of the output
|
467
|
+
link is guaranteed to match the input (including the choice of
|
468
|
+
meridians).</p>
|
469
|
+
<p><strong>Warning:</strong> The order of the link components and the cusps of the
|
470
|
+
input manifold is only guaranteed to match when
|
471
|
+
<code class="docutils literal notranslate"><span class="pre">check_answer=True</span></code>. Even then, the implicit orientation along
|
472
|
+
each component of the link may not be preserved.</p>
|
473
|
+
</dd></dl>
|
474
|
+
|
475
|
+
<dl class="py method">
|
476
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.filled_triangulation">
|
477
|
+
<span class="sig-name descname"><span class="pre">filled_triangulation</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cusps_to_fill</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'all'</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a class="reference internal" href="#snappy.Triangulation" title="snappy.Triangulation"><span class="pre">snappy.Triangulation</span></a></span></span><a class="headerlink" href="#snappy.Triangulation.filled_triangulation" title="Link to this definition"></a></dt>
|
478
|
+
<dd><p>Return a new manifold where the specified cusps have been
|
479
|
+
permanently filled in. Examples:</p>
|
480
|
+
<p>Filling all the cusps:</p>
|
481
|
+
<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">Triangulation</span><span class="p">(</span><span class="s1">'m125(1,2)(3,4)'</span><span class="p">)</span>
|
482
|
+
<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">filled_triangulation</span><span class="p">()</span>
|
483
|
+
<span class="gp">>>> </span><span class="n">N</span><span class="o">.</span><span class="n">num_cusps</span><span class="p">()</span>
|
484
|
+
<span class="go">0</span>
|
485
|
+
</pre></div>
|
486
|
+
</div>
|
487
|
+
<p>Filling cusps 0 and 2 :</p>
|
488
|
+
<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">Triangulation</span><span class="p">(</span><span class="s1">'v3227(1,2)(3,4)(5,6)'</span><span class="p">)</span>
|
489
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">filled_triangulation</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span><span class="mi">2</span><span class="p">])</span>
|
490
|
+
<span class="go">v3227_filled(3,4)</span>
|
491
|
+
</pre></div>
|
492
|
+
</div>
|
493
|
+
</dd></dl>
|
494
|
+
|
495
|
+
<dl class="py method">
|
496
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.fundamental_group">
|
497
|
+
<span class="sig-name descname"><span class="pre">fundamental_group</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">simplify_presentation</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">fillings_may_affect_generators</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">minimize_number_of_generators</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">try_hard_to_shorten_relators</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">FundamentalGroup</span></span></span><a class="headerlink" href="#snappy.Triangulation.fundamental_group" title="Link to this definition"></a></dt>
|
498
|
+
<dd><p>Returns a <code class="xref py py-class docutils literal notranslate"><span class="pre">FundamentalGroup</span></code> object representing the fundamental
|
499
|
+
group of the manifold. If integer Dehn surgery parameters
|
500
|
+
have been set, then the corresponding peripheral elements are
|
501
|
+
killed.</p>
|
502
|
+
<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">Triangulation</span><span class="p">(</span><span class="s1">'m004'</span><span class="p">)</span>
|
503
|
+
<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>
|
504
|
+
<span class="gp">>>> </span><span class="n">G</span>
|
505
|
+
<span class="go">Generators:</span>
|
506
|
+
<span class="go"> a,b</span>
|
507
|
+
<span class="go">Relators:</span>
|
508
|
+
<span class="go"> aaabABBAb</span>
|
509
|
+
<span class="gp">>>> </span><span class="n">G</span><span class="o">.</span><span class="n">peripheral_curves</span><span class="p">()</span>
|
510
|
+
<span class="go">[('ab', 'aBAbABab')]</span>
|
511
|
+
</pre></div>
|
512
|
+
</div>
|
513
|
+
<p>There are four optional arguments all of which default to True:</p>
|
514
|
+
<ul class="simple">
|
515
|
+
<li><p>simplify_presentation</p></li>
|
516
|
+
<li><p>fillings_may_affect_generators</p></li>
|
517
|
+
<li><p>minimize_number_of_generators</p></li>
|
518
|
+
<li><p>try_hard_to_shorten_relators</p></li>
|
519
|
+
</ul>
|
520
|
+
<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">fundamental_group</span><span class="p">(</span><span class="kc">False</span><span class="p">,</span> <span class="kc">False</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
|
521
|
+
<span class="go">Generators:</span>
|
522
|
+
<span class="go"> a,b,c</span>
|
523
|
+
<span class="go">Relators:</span>
|
524
|
+
<span class="go"> CbAcB</span>
|
525
|
+
<span class="go"> BacA</span>
|
526
|
+
</pre></div>
|
527
|
+
</div>
|
528
|
+
</dd></dl>
|
529
|
+
|
530
|
+
<dl class="py method">
|
531
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.gluing_equations">
|
532
|
+
<span class="sig-name descname"><span class="pre">gluing_equations</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">form</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'log'</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.gluing_equations" title="Link to this definition"></a></dt>
|
533
|
+
<dd><p>In the default mode, this function returns a matrix with rows
|
534
|
+
of the form</p>
|
535
|
+
<blockquote>
|
536
|
+
<div><p>a b c d e f …</p>
|
537
|
+
</div></blockquote>
|
538
|
+
<p>which means</p>
|
539
|
+
<blockquote>
|
540
|
+
<div><p>a*log(z0) + b*log(1/(1-z0)) + c*log((z0-1)/z0) + d*log(z1) +… = 2 pi i</p>
|
541
|
+
</div></blockquote>
|
542
|
+
<p>for an edge equation, and (same) = 0 for a cusp equation.
|
543
|
+
Here, the cusp equations come at the bottom of the matrix, and
|
544
|
+
are listed in the form: meridian of cusp 0, longitude of cusp
|
545
|
+
0, meridian of cusp 1, longitude of cusp 1,…</p>
|
546
|
+
<p>In terms of the tetrahedra, a is the invariant of the edge
|
547
|
+
(2,3), b the invariant of the edge (0,2) and c is the
|
548
|
+
invariant of the edge (1,2). See kernel_code/edge_classes.c
|
549
|
+
for a detailed account of the convention used.</p>
|
550
|
+
<p>If the optional argument form=’rect’ is given, then this
|
551
|
+
function returns a list of tuples of the form:</p>
|
552
|
+
<blockquote>
|
553
|
+
<div><p>( [a0, a1,..,a_n], [b_0, b_1,…,b_n], c)</p>
|
554
|
+
</div></blockquote>
|
555
|
+
<p>where this corresponds to the equation</p>
|
556
|
+
<blockquote>
|
557
|
+
<div><p>z0^a0 (1 - z0)^b0 z1^a1(1 - z1)^b1 … = c</p>
|
558
|
+
</div></blockquote>
|
559
|
+
<p>where c = 1 or -1.</p>
|
560
|
+
<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">Triangulation</span><span class="p">(</span><span class="s1">'m004(2,3)'</span><span class="p">)</span>
|
561
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">gluing_equations</span><span class="p">()</span>
|
562
|
+
<span class="go">[ 2 1 0 1 0 2]</span>
|
563
|
+
<span class="go">[ 0 1 2 1 2 0]</span>
|
564
|
+
<span class="go">[ 2 0 0 0 -8 6]</span>
|
565
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">gluing_equations</span><span class="p">(</span><span class="n">form</span><span class="o">=</span><span class="s1">'rect'</span><span class="p">)</span>
|
566
|
+
<span class="go">[([2, -1], [-1, 2], 1), ([-2, 1], [1, -2], 1), ([2, -6], [0, 14], 1)]</span>
|
567
|
+
</pre></div>
|
568
|
+
</div>
|
569
|
+
</dd></dl>
|
570
|
+
|
571
|
+
<dl class="py method">
|
572
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.gluing_equations_pgl">
|
573
|
+
<span class="sig-name descname"><span class="pre">gluing_equations_pgl</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">N</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">2</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">equation_type</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'all'</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.gluing_equations_pgl" title="Link to this definition"></a></dt>
|
574
|
+
<dd><p>Returns a NeumannZagierTypeEquations object that contains a matrix
|
575
|
+
encoding the gluing equations for boundary-parabolic PGL(N,C)
|
576
|
+
representations together with explanations of the meaning
|
577
|
+
of the rows and the columns of the matrix.</p>
|
578
|
+
<p>This method generalizes gluing_equations() to PGL(N,C)-representations
|
579
|
+
as described in
|
580
|
+
Stavros Garoufalidis, Matthias Goerner, Christian K. Zickert:
|
581
|
+
“Gluing Equations for PGL(n,C)-Representations of 3-Manifolds”
|
582
|
+
(<a class="reference external" href="http://arxiv.org/abs/1207.6711">http://arxiv.org/abs/1207.6711</a>).</p>
|
583
|
+
<p>The result of the <a class="reference internal" href="#snappy.Triangulation.gluing_equations" title="snappy.Triangulation.gluing_equations"><code class="xref py py-meth docutils literal notranslate"><span class="pre">gluing_equations()</span></code></a> can be obtained from
|
584
|
+
the general method by:</p>
|
585
|
+
<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">Triangulation</span><span class="p">(</span><span class="s1">'m004'</span><span class="p">)</span>
|
586
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">gluing_equations_pgl</span><span class="p">()</span><span class="o">.</span><span class="n">matrix</span>
|
587
|
+
<span class="go">[ 2 1 0 1 0 2]</span>
|
588
|
+
<span class="go">[ 0 1 2 1 2 0]</span>
|
589
|
+
<span class="go">[ 1 0 0 0 -1 0]</span>
|
590
|
+
<span class="go">[ 0 0 0 0 -2 2]</span>
|
591
|
+
</pre></div>
|
592
|
+
</div>
|
593
|
+
<p>But besides the matrix, the method also returns explanations of
|
594
|
+
the columns and rows:</p>
|
595
|
+
<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">Triangulation</span><span class="p">(</span><span class="s2">"m004"</span><span class="p">)</span>
|
596
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">gluing_equations_pgl</span><span class="p">()</span>
|
597
|
+
<span class="go">NeumannZagierTypeEquations(</span>
|
598
|
+
<span class="go"> [ 2 1 0 1 0 2]</span>
|
599
|
+
<span class="go"> [ 0 1 2 1 2 0]</span>
|
600
|
+
<span class="go"> [ 1 0 0 0 -1 0]</span>
|
601
|
+
<span class="go"> [ 0 0 0 0 -2 2],</span>
|
602
|
+
<span class="go"> explain_columns = ['z_0000_0', 'zp_0000_0', 'zpp_0000_0', 'z_0000_1', 'zp_0000_1', 'zpp_0000_1'],</span>
|
603
|
+
<span class="go"> explain_rows = ['edge_0_0', 'edge_0_1', 'meridian_0_0', 'longitude_0_0'])</span>
|
604
|
+
</pre></div>
|
605
|
+
</div>
|
606
|
+
<p>The first row of the matrix means that the edge equation for
|
607
|
+
edge 0 is</p>
|
608
|
+
<div class="math notranslate nohighlight">
|
609
|
+
\[{z_{0000,0}}^2 * z'_{0000,0} * z_{0000,1} * {z''_{0000,1}}^2 = 1.\]</div>
|
610
|
+
<p>Similarly, the next row encodes the edge equation for the other edge
|
611
|
+
and the next two rows encode peripheral equations.</p>
|
612
|
+
<p>Following the SnapPy convention, a <code class="docutils literal notranslate"><span class="pre">z</span></code> denotes the cross ratio
|
613
|
+
<span class="math notranslate nohighlight">\(z\)</span> at the edge (0,1), a <code class="docutils literal notranslate"><span class="pre">zp</span></code> the cross ratio <span class="math notranslate nohighlight">\(z'\)</span> at
|
614
|
+
the edge (0,2) and a <code class="docutils literal notranslate"><span class="pre">zpp</span></code> the cross
|
615
|
+
ratio <span class="math notranslate nohighlight">\(z''\)</span> at the edge (1,2). The entire symbol <code class="docutils literal notranslate"><span class="pre">z_xxxx_y</span></code> then
|
616
|
+
denotes the cross ratio belonging to the subsimplex at integral
|
617
|
+
point <code class="docutils literal notranslate"><span class="pre">xxxx</span></code> (always <code class="docutils literal notranslate"><span class="pre">0000</span></code> for <code class="docutils literal notranslate"><span class="pre">N</span> <span class="pre">=</span> <span class="pre">2</span></code>) of the simplex <code class="docutils literal notranslate"><span class="pre">y</span></code>.</p>
|
618
|
+
<p>Note: the SnapPy convention is different from the paper
|
619
|
+
mentioned above, e.g., compare
|
620
|
+
kernel_code/edge_classes.c with Figure 3. We follow the SnapPy
|
621
|
+
convention here so that all computations done in SnapPy are
|
622
|
+
consistent.</p>
|
623
|
+
<p>The explanations of the rows and columns can be obtained explicitly by:</p>
|
624
|
+
<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">gluing_equations_pgl</span><span class="p">(</span><span class="n">N</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span> <span class="n">equation_type</span> <span class="o">=</span> <span class="s1">'peripheral'</span><span class="p">)</span><span class="o">.</span><span class="n">explain_rows</span>
|
625
|
+
<span class="go">['meridian_0_0', 'meridian_1_0', 'longitude_0_0', 'longitude_1_0']</span>
|
626
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">gluing_equations_pgl</span><span class="p">(</span><span class="n">N</span> <span class="o">=</span> <span class="mi">2</span><span class="p">)</span><span class="o">.</span><span class="n">explain_columns</span>
|
627
|
+
<span class="go">['z_0000_0', 'zp_0000_0', 'zpp_0000_0', 'z_0000_1', 'zp_0000_1', 'zpp_0000_1']</span>
|
628
|
+
</pre></div>
|
629
|
+
</div>
|
630
|
+
<p>A subset of all gluing equations can be obtained by setting the
|
631
|
+
<code class="docutils literal notranslate"><span class="pre">equation_type</span></code>:</p>
|
632
|
+
<ul class="simple">
|
633
|
+
<li><p>all gluing equations: <code class="docutils literal notranslate"><span class="pre">all</span></code></p></li>
|
634
|
+
<li><p>non-peripheral equations: <code class="docutils literal notranslate"><span class="pre">non_peripheral</span></code></p>
|
635
|
+
<ul>
|
636
|
+
<li><p>edge gluing equations: <code class="docutils literal notranslate"><span class="pre">edge</span></code></p></li>
|
637
|
+
<li><p>face gluing equations: <code class="docutils literal notranslate"><span class="pre">face</span></code></p></li>
|
638
|
+
<li><p>internal gluing equations: <code class="docutils literal notranslate"><span class="pre">internal</span></code></p></li>
|
639
|
+
</ul>
|
640
|
+
</li>
|
641
|
+
<li><p>cusp gluing equations: <code class="docutils literal notranslate"><span class="pre">peripheral</span></code></p>
|
642
|
+
<ul>
|
643
|
+
<li><p>cusp gluing equations for meridians: <code class="docutils literal notranslate"><span class="pre">meridian</span></code></p></li>
|
644
|
+
<li><p>cusp gluing equations for longitudes: <code class="docutils literal notranslate"><span class="pre">longitude</span></code></p></li>
|
645
|
+
</ul>
|
646
|
+
</li>
|
647
|
+
</ul>
|
648
|
+
</dd></dl>
|
649
|
+
|
650
|
+
<dl class="py method">
|
651
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.has_finite_vertices">
|
652
|
+
<span class="sig-name descname"><span class="pre">has_finite_vertices</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="headerlink" href="#snappy.Triangulation.has_finite_vertices" title="Link to this definition"></a></dt>
|
653
|
+
<dd><p>Returns <code class="docutils literal notranslate"><span class="pre">True</span></code> if and only if the triangulation has finite (non-ideal)
|
654
|
+
vertices.</p>
|
655
|
+
<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="s2">"m004"</span><span class="p">)</span>
|
656
|
+
<span class="gp">>>> </span><span class="n">T</span><span class="o">.</span><span class="n">has_finite_vertices</span><span class="p">()</span>
|
657
|
+
<span class="go">False</span>
|
658
|
+
<span class="gp">>>> </span><span class="n">T</span><span class="o">.</span><span class="n">dehn_fill</span><span class="p">((</span><span class="mi">12</span><span class="p">,</span><span class="mi">13</span><span class="p">))</span>
|
659
|
+
<span class="gp">>>> </span><span class="n">S</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">filled_triangulation</span><span class="p">()</span>
|
660
|
+
<span class="gp">>>> </span><span class="n">S</span><span class="o">.</span><span class="n">has_finite_vertices</span><span class="p">()</span>
|
661
|
+
<span class="go">True</span>
|
662
|
+
</pre></div>
|
663
|
+
</div>
|
664
|
+
<p>When trying to find a hyperbolic structure, SnapPea will eliminate
|
665
|
+
finite vertices:</p>
|
666
|
+
<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">S</span><span class="o">.</span><span class="n">with_hyperbolic_structure</span><span class="p">()</span>
|
667
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">has_finite_vertices</span><span class="p">()</span>
|
668
|
+
<span class="go">False</span>
|
669
|
+
</pre></div>
|
670
|
+
</div>
|
671
|
+
</dd></dl>
|
672
|
+
|
673
|
+
<dl class="py method">
|
674
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.homological_longitude">
|
675
|
+
<span class="sig-name descname"><span class="pre">homological_longitude</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cusp</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.Triangulation.homological_longitude" title="Link to this definition"></a></dt>
|
676
|
+
<dd><p>Returns the peripheral curve in the given cusp, if any, which is
|
677
|
+
homologically trivial (with rational coefficients) in the manifold:</p>
|
678
|
+
<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">'m015'</span><span class="p">)</span>
|
679
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">M</span><span class="o">.</span><span class="n">homological_longitude</span><span class="p">()</span>
|
680
|
+
<span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
|
681
|
+
</pre></div>
|
682
|
+
</div>
|
683
|
+
<p>If no cusp is specified, the default is the first unfilled cusp;
|
684
|
+
if all cusps are filled, the default is the first cusp:</p>
|
685
|
+
<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">'L5a1(3,4)(0,0)'</span><span class="p">)</span>
|
686
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">M</span><span class="o">.</span><span class="n">homological_longitude</span><span class="p">()</span>
|
687
|
+
<span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
688
|
+
</pre></div>
|
689
|
+
</div>
|
690
|
+
<p>The components of the next link have nontrivial linking number
|
691
|
+
so there is no such curve:</p>
|
692
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="n">W</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'L7a2'</span><span class="p">)</span>
|
693
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">W</span><span class="o">.</span><span class="n">homological_longitude</span><span class="p">(</span><span class="n">cusp</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">None</span>
|
694
|
+
<span class="kc">True</span>
|
695
|
+
</pre></div>
|
696
|
+
</div>
|
697
|
+
<p>If every curve in the given cusp is trivial in the rational homology of
|
698
|
+
the manifold, an exception is raised:</p>
|
699
|
+
<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">'4_1(1,0)'</span><span class="p">)</span>
|
700
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">M</span><span class="o">.</span><span class="n">homological_longitude</span><span class="p">()</span>
|
701
|
+
<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>
|
702
|
+
<span class="o">...</span>
|
703
|
+
<span class="ne">ValueError</span><span class="p">:</span> <span class="n">Every</span> <span class="n">curve</span> <span class="n">on</span> <span class="n">cusp</span> <span class="ow">is</span> <span class="n">homologically</span> <span class="n">trivial</span>
|
704
|
+
</pre></div>
|
705
|
+
</div>
|
706
|
+
</dd></dl>
|
707
|
+
|
708
|
+
<dl class="py method">
|
709
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.homology">
|
710
|
+
<span class="sig-name descname"><span class="pre">homology</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a class="reference internal" href="additional_classes.html#snappy.AbelianGroup" title="SnapPy.AbelianGroup"><span class="pre">AbelianGroup</span></a></span></span><a class="headerlink" href="#snappy.Triangulation.homology" title="Link to this definition"></a></dt>
|
711
|
+
<dd><p>Returns an <a class="reference internal" href="additional_classes.html#snappy.AbelianGroup" title="snappy.AbelianGroup"><code class="xref py py-class docutils literal notranslate"><span class="pre">AbelianGroup</span></code></a> representing the first integral
|
712
|
+
homology group of the underlying (Dehn filled) manifold.</p>
|
713
|
+
<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">Triangulation</span><span class="p">(</span><span class="s1">'m003'</span><span class="p">)</span>
|
714
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">homology</span><span class="p">()</span>
|
715
|
+
<span class="go">Z/5 + Z</span>
|
716
|
+
</pre></div>
|
717
|
+
</div>
|
718
|
+
</dd></dl>
|
719
|
+
|
720
|
+
<dl class="py method">
|
721
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.is_orientable">
|
722
|
+
<span class="sig-name descname"><span class="pre">is_orientable</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="headerlink" href="#snappy.Triangulation.is_orientable" title="Link to this definition"></a></dt>
|
723
|
+
<dd><p>Return whether the underlying 3-manifold is orientable.</p>
|
724
|
+
<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">Triangulation</span><span class="p">(</span><span class="s1">'x124'</span><span class="p">)</span>
|
725
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">is_orientable</span><span class="p">()</span>
|
726
|
+
<span class="go">False</span>
|
727
|
+
</pre></div>
|
728
|
+
</div>
|
729
|
+
</dd></dl>
|
730
|
+
|
731
|
+
<dl class="py method">
|
732
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.isomorphisms_to">
|
733
|
+
<span class="sig-name descname"><span class="pre">isomorphisms_to</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">other</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#snappy.Triangulation" title="snappy.Triangulation"><span class="pre">Triangulation</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">TriangulationHP</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Isometry</span><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#snappy.Triangulation.isomorphisms_to" title="Link to this definition"></a></dt>
|
734
|
+
<dd><p>Returns a complete list of combinatorial isomorphisms between
|
735
|
+
the two triangulations:</p>
|
736
|
+
<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">'5^2_1'</span><span class="p">)</span>
|
737
|
+
<span class="gp">>>> </span><span class="n">N</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'5^2_1'</span><span class="p">)</span>
|
738
|
+
<span class="gp">>>> </span><span class="n">N</span><span class="o">.</span><span class="n">set_peripheral_curves</span><span class="p">([[[</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">],[</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">]],[[</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">],[</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">]]])</span>
|
739
|
+
<span class="gp">>>> </span><span class="n">isoms</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">isomorphisms_to</span><span class="p">(</span><span class="n">N</span><span class="p">)</span>
|
740
|
+
<span class="gp">>>> </span><span class="n">isoms</span><span class="p">[</span><span class="mi">6</span><span class="p">]</span>
|
741
|
+
<span class="go">0 -> 1 1 -> 0</span>
|
742
|
+
<span class="go">[ 1 0] [-1 1]</span>
|
743
|
+
<span class="go">[-1 1] [-3 2]</span>
|
744
|
+
<span class="go">Does not extend to link</span>
|
745
|
+
</pre></div>
|
746
|
+
</div>
|
747
|
+
<p>Each transformation between cusps is given by a matrix which
|
748
|
+
acts on the left. That is, the two <em>columns</em> of the matrix
|
749
|
+
give the image of the meridian and longitude respectively. In
|
750
|
+
the above example, the meridian of cusp 0 is sent to the
|
751
|
+
meridian of cusp 1.</p>
|
752
|
+
</dd></dl>
|
753
|
+
|
754
|
+
<dl class="py method">
|
755
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.link">
|
756
|
+
<span class="sig-name descname"><span class="pre">link</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.link" title="Link to this definition"></a></dt>
|
757
|
+
<dd><p>If the manifold is stored as a link complement in your
|
758
|
+
current session then it returns the number of components
|
759
|
+
and crossing of the link. To view and interact with the
|
760
|
+
link see <a class="reference internal" href="spherogram.html#spherogram.Link.view" title="spherogram.Link.view"><code class="xref py py-meth docutils literal notranslate"><span class="pre">spherogram.Link.view()</span></code></a>
|
761
|
+
and <a class="reference internal" href="#snappy.Triangulation.plink" title="snappy.Triangulation.plink"><code class="xref py py-meth docutils literal notranslate"><span class="pre">plink</span></code></a>.</p>
|
762
|
+
</dd></dl>
|
763
|
+
|
764
|
+
<dl class="py method">
|
765
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.name">
|
766
|
+
<span class="sig-name descname"><span class="pre">name</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="headerlink" href="#snappy.Triangulation.name" title="Link to this definition"></a></dt>
|
767
|
+
<dd><p>Return the name of the triangulation.</p>
|
768
|
+
<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">Triangulation</span><span class="p">(</span><span class="s1">'4_1'</span><span class="p">)</span>
|
769
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">name</span><span class="p">()</span>
|
770
|
+
<span class="go">'4_1'</span>
|
771
|
+
</pre></div>
|
772
|
+
</div>
|
773
|
+
</dd></dl>
|
774
|
+
|
775
|
+
<dl class="py method">
|
776
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.normal_boundary_slopes">
|
777
|
+
<span class="sig-name descname"><span class="pre">normal_boundary_slopes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">subset</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'all'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">algorithm</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'FXrays'</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.normal_boundary_slopes" title="Link to this definition"></a></dt>
|
778
|
+
<dd><p>For a one-cusped manifold, returns all the nonempty boundary slopes of
|
779
|
+
spun normal surfaces. Provided the triangulation supports a
|
780
|
+
genuine hyperbolic structure, then by <a class="reference external" href="http://arxiv.org/abs/math/0503027">Thurston and Walsh</a> any strict boundary slope
|
781
|
+
(the boundary of an essential surface which is not a fiber or
|
782
|
+
semifiber) must be listed here.</p>
|
783
|
+
<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">'K3_1'</span><span class="p">)</span>
|
784
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">normal_boundary_slopes</span><span class="p">()</span>
|
785
|
+
<span class="go">[(16, -1), (20, -1), (37, -2)]</span>
|
786
|
+
</pre></div>
|
787
|
+
</div>
|
788
|
+
<p>If the <code class="docutils literal notranslate"><span class="pre">subset</span></code> flag is set to <code class="docutils literal notranslate"><span class="pre">'kabaya'</span></code>, then it only
|
789
|
+
returns boundary slopes associated to vertex surfaces with a quad
|
790
|
+
in every tetrahedron; by Theorem 1.1. of
|
791
|
+
<a class="reference external" href="http://arxiv.org/abs/1102.4588">Dunfield and Garoufalidis ‘12</a>
|
792
|
+
these are all strict boundary slopes.</p>
|
793
|
+
<div class="doctest 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">Manifold</span><span class="p">(</span><span class="s1">'m113'</span><span class="p">)</span>
|
794
|
+
<span class="gp">>>> </span><span class="n">N</span><span class="o">.</span><span class="n">normal_boundary_slopes</span><span class="p">()</span>
|
795
|
+
<span class="go">[(1, 1), (1, 2), (2, -1), (2, 3), (8, 11)]</span>
|
796
|
+
<span class="gp">>>> </span><span class="n">N</span><span class="o">.</span><span class="n">normal_boundary_slopes</span><span class="p">(</span><span class="s1">'kabaya'</span><span class="p">)</span>
|
797
|
+
<span class="go">[(8, 11)]</span>
|
798
|
+
</pre></div>
|
799
|
+
</div>
|
800
|
+
<p>If the <code class="docutils literal notranslate"><span class="pre">subset</span></code> flag is set to <code class="docutils literal notranslate"><span class="pre">'brasile'</span></code> then it returns
|
801
|
+
only the boundary slopes that are associated to vertex surfaces
|
802
|
+
giving isolated rays in the space of embedded normal surfaces.</p>
|
803
|
+
<div class="doctest 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">normal_boundary_slopes</span><span class="p">(</span><span class="s1">'brasile'</span><span class="p">)</span>
|
804
|
+
<span class="go">[(1, 2), (8, 11)]</span>
|
805
|
+
</pre></div>
|
806
|
+
</div>
|
807
|
+
</dd></dl>
|
808
|
+
|
809
|
+
<dl class="py method">
|
810
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.normal_surfaces">
|
811
|
+
<span class="sig-name descname"><span class="pre">normal_surfaces</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">algorithm</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'FXrays'</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.normal_surfaces" title="Link to this definition"></a></dt>
|
812
|
+
<dd><p>All the vertex spun-normal surfaces in the current triangulation.</p>
|
813
|
+
<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>
|
814
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">normal_surfaces</span><span class="p">()</span>
|
815
|
+
<span class="go">[<Surface 0: [0, 0] [1, 2] (4, 1)>,</span>
|
816
|
+
<span class="go"> <Surface 1: [0, 1] [1, 2] (4, -1)>,</span>
|
817
|
+
<span class="go"> <Surface 2: [1, 2] [2, 1] (-4, -1)>,</span>
|
818
|
+
<span class="go"> <Surface 3: [2, 2] [2, 1] (-4, 1)>]</span>
|
819
|
+
</pre></div>
|
820
|
+
</div>
|
821
|
+
</dd></dl>
|
822
|
+
|
823
|
+
<dl class="py method">
|
824
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.num_cusps">
|
825
|
+
<span class="sig-name descname"><span class="pre">num_cusps</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cusp_type</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'all'</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">int</span></span></span><a class="headerlink" href="#snappy.Triangulation.num_cusps" title="Link to this definition"></a></dt>
|
826
|
+
<dd><p>Return the total number of cusps. By giving the optional argument
|
827
|
+
‘orientable’ or ‘nonorientable’ it will only count cusps of that type.</p>
|
828
|
+
<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">Triangulation</span><span class="p">(</span><span class="s1">'m125'</span><span class="p">)</span>
|
829
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">num_cusps</span><span class="p">()</span>
|
830
|
+
<span class="go">2</span>
|
831
|
+
</pre></div>
|
832
|
+
</div>
|
833
|
+
</dd></dl>
|
834
|
+
|
835
|
+
<dl class="py method">
|
836
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.num_tetrahedra">
|
837
|
+
<span class="sig-name descname"><span class="pre">num_tetrahedra</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">int</span></span></span><a class="headerlink" href="#snappy.Triangulation.num_tetrahedra" title="Link to this definition"></a></dt>
|
838
|
+
<dd><p>Return the number of tetrahedra in the triangulation.</p>
|
839
|
+
<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">Triangulation</span><span class="p">(</span><span class="s1">'m004'</span><span class="p">)</span>
|
840
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">num_tetrahedra</span><span class="p">()</span>
|
841
|
+
<span class="go">2</span>
|
842
|
+
</pre></div>
|
843
|
+
</div>
|
844
|
+
</dd></dl>
|
845
|
+
|
846
|
+
<dl class="py method">
|
847
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.orientation_cover">
|
848
|
+
<span class="sig-name descname"><span class="pre">orientation_cover</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.orientation_cover" title="Link to this definition"></a></dt>
|
849
|
+
<dd><p>For a non-orientable Triangulation, returns the 2-fold cover which
|
850
|
+
is orientable.</p>
|
851
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">X</span> <span class="o">=</span> <span class="n">Triangulation</span><span class="p">(</span><span class="s1">'x123'</span><span class="p">)</span>
|
852
|
+
<span class="gp">>>> </span><span class="n">Y</span> <span class="o">=</span> <span class="n">X</span><span class="o">.</span><span class="n">orientation_cover</span><span class="p">()</span>
|
853
|
+
<span class="gp">>>> </span><span class="p">(</span><span class="n">X</span><span class="o">.</span><span class="n">is_orientable</span><span class="p">(),</span> <span class="n">Y</span><span class="o">.</span><span class="n">is_orientable</span><span class="p">())</span>
|
854
|
+
<span class="go">(False, True)</span>
|
855
|
+
<span class="gp">>>> </span><span class="n">Y</span>
|
856
|
+
<span class="go">x123~(0,0)(0,0)</span>
|
857
|
+
<span class="gp">>>> </span><span class="n">Y</span><span class="o">.</span><span class="n">cover_info</span><span class="p">()[</span><span class="s1">'type'</span><span class="p">]</span>
|
858
|
+
<span class="go">'cyclic'</span>
|
859
|
+
</pre></div>
|
860
|
+
</div>
|
861
|
+
</dd></dl>
|
862
|
+
|
863
|
+
<dl class="py method">
|
864
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.plink">
|
865
|
+
<span class="sig-name descname"><span class="pre">plink</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.plink" title="Link to this definition"></a></dt>
|
866
|
+
<dd><p>Brings up a link editor window if the manifold is stored
|
867
|
+
as a link complement in your current session.</p>
|
868
|
+
<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">'4_1'</span><span class="p">)</span> <span class="c1"># stored as a triangulation with a link</span>
|
869
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">link</span><span class="p">()</span>
|
870
|
+
<span class="go"><Link: 1 comp; 4 cross></span>
|
871
|
+
<span class="gp">>>> </span><span class="n">N</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="c1"># stored as a triangulation without a link</span>
|
872
|
+
<span class="gp">>>> </span><span class="n">N</span><span class="o">.</span><span class="n">link</span><span class="p">()</span>
|
873
|
+
<span class="gt">Traceback (most recent call last):</span>
|
874
|
+
<span class="c">...</span>
|
875
|
+
<span class="gr">ValueError</span>: <span class="n">No associated link known.</span>
|
876
|
+
</pre></div>
|
877
|
+
</div>
|
878
|
+
</dd></dl>
|
879
|
+
|
880
|
+
<dl class="py method">
|
881
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.ptolemy_generalized_obstruction_classes">
|
882
|
+
<span class="sig-name descname"><span class="pre">ptolemy_generalized_obstruction_classes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">N</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.ptolemy_generalized_obstruction_classes" title="Link to this definition"></a></dt>
|
883
|
+
<dd><p>Returns the obstruction classes needed to compute
|
884
|
+
PGL(N,C)-representations for any N, i.e., it returns a list with
|
885
|
+
a representative cocycle for each element in
|
886
|
+
H^2(M, boundary M; Z/N) / (Z/N)^* where (Z/N)^* are the units in Z/N.
|
887
|
+
The first element in the list always corresponds to the trivial
|
888
|
+
obstruction class.
|
889
|
+
The generalized ptolemy obstruction classes are thus a generalization
|
890
|
+
of the ptolemy obstruction classes that allow to find all
|
891
|
+
boundary-unipotent
|
892
|
+
PGL(N,C)-representations including those that do not lift to
|
893
|
+
boundary-unipotent SL(N,C)-representations for N odd or
|
894
|
+
SL(N,C)/{+1,-1}-representations for N even.</p>
|
895
|
+
<p>For example, 4_1 has three obstruction classes up to equivalence:</p>
|
896
|
+
<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="s2">"4_1"</span><span class="p">)</span>
|
897
|
+
<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">ptolemy_generalized_obstruction_classes</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
|
898
|
+
<span class="gp">>>> </span><span class="nb">len</span><span class="p">(</span><span class="n">c</span><span class="p">)</span>
|
899
|
+
<span class="go">3</span>
|
900
|
+
</pre></div>
|
901
|
+
</div>
|
902
|
+
<p>For 4_1, we only get three obstruction classes even though we have
|
903
|
+
H^2(M, boundary M; Z/4) = Z/4 because the two obstruction classes
|
904
|
+
1 in Z/4 and -1 in Z/4 are related by a unit and thus give
|
905
|
+
isomorphic Ptolemy varieties.</p>
|
906
|
+
<p>The primary use of an obstruction class sigma is to construct the
|
907
|
+
Ptolemy variety of sigma. This variety computes boundary-unipotent
|
908
|
+
PGL(N,C)-representations whose obstruction class to a
|
909
|
+
boundary-unipotent lift to SL(N,C) is sigma.</p>
|
910
|
+
<p>For example for 4_1, there are 2 obstruction classes for N = 3:</p>
|
911
|
+
<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="s2">"4_1"</span><span class="p">)</span>
|
912
|
+
<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">ptolemy_generalized_obstruction_classes</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
|
913
|
+
<span class="gp">>>> </span><span class="nb">len</span><span class="p">(</span><span class="n">c</span><span class="p">)</span>
|
914
|
+
<span class="go">2</span>
|
915
|
+
</pre></div>
|
916
|
+
</div>
|
917
|
+
<p>The Ptolemy variety parametrizing boundary-unipotent
|
918
|
+
SL(3,C)-representations of 4_1 is obtained by</p>
|
919
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">p</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="n">N</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span> <span class="n">obstruction_class</span> <span class="o">=</span> <span class="n">c</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
920
|
+
</pre></div>
|
921
|
+
</div>
|
922
|
+
<p>and the Ptolemy variety parametrizing boundary-unipotent
|
923
|
+
PSL(3,C)-representations of 4_1 that do not lift to
|
924
|
+
boundary-unipotent SL(3,C)-representations is obtained by</p>
|
925
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">p</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="n">N</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span> <span class="n">obstruction_class</span> <span class="o">=</span> <span class="n">c</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
|
926
|
+
</pre></div>
|
927
|
+
</div>
|
928
|
+
<p>The cocycle representing the non-trivial obstruction class looks as
|
929
|
+
follows:</p>
|
930
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">c</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
|
931
|
+
<span class="go">PtolemyGeneralizedObstructionClass([2, 0, 0, 1])</span>
|
932
|
+
</pre></div>
|
933
|
+
</div>
|
934
|
+
<p>This means that the cocycle takes the value -1 in Z/3 on the first face
|
935
|
+
class and 1 on the fourth face class but zero on every other of the
|
936
|
+
four face classes.</p>
|
937
|
+
</dd></dl>
|
938
|
+
|
939
|
+
<dl class="py method">
|
940
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.ptolemy_obstruction_classes">
|
941
|
+
<span class="sig-name descname"><span class="pre">ptolemy_obstruction_classes</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.ptolemy_obstruction_classes" title="Link to this definition"></a></dt>
|
942
|
+
<dd><p>Returns the obstruction classes needed to compute
|
943
|
+
pSL(N,C) = SL(N,C)/{+1,-1} representations for even N, i.e., it
|
944
|
+
returns a list with a representative cocycle for each class in
|
945
|
+
H^2(M, boundary M; Z/2). The first element in the list is always
|
946
|
+
representing the trivial obstruction class.</p>
|
947
|
+
<p>For example, 4_1 has two obstruction classes:</p>
|
948
|
+
<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="s2">"4_1"</span><span class="p">)</span>
|
949
|
+
<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">ptolemy_obstruction_classes</span><span class="p">()</span>
|
950
|
+
<span class="gp">>>> </span><span class="nb">len</span><span class="p">(</span><span class="n">c</span><span class="p">)</span>
|
951
|
+
<span class="go">2</span>
|
952
|
+
</pre></div>
|
953
|
+
</div>
|
954
|
+
<p>The primary use of these obstruction classes is to construct
|
955
|
+
the Ptolemy variety as described in Definition 1.7 of
|
956
|
+
Stavros Garoufalidis, Dylan Thurston, Christian K. Zickert:
|
957
|
+
“The Complex Volume of SL(n,C)-Representations of 3-Manifolds”
|
958
|
+
(<a class="reference external" href="http://arxiv.org/abs/1111.2828">http://arxiv.org/abs/1111.2828</a>).</p>
|
959
|
+
<p>For example, to construct the Ptolemy variety for
|
960
|
+
PSL(2,C)-representations of 4_1 that do not lift to boundary-parabolic
|
961
|
+
SL(2,C)-representations, use:</p>
|
962
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">p</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="n">N</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span> <span class="n">obstruction_class</span> <span class="o">=</span> <span class="n">c</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
|
963
|
+
</pre></div>
|
964
|
+
</div>
|
965
|
+
<p>Or the following short-cut:</p>
|
966
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">p</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="n">obstruction_class</span> <span class="o">=</span> <span class="mi">1</span><span class="p">)</span>
|
967
|
+
</pre></div>
|
968
|
+
</div>
|
969
|
+
<p>Note that this obstruction class only makes sense for even N:</p>
|
970
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">p</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="n">obstruction_class</span> <span class="o">=</span> <span class="n">c</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
|
971
|
+
<span class="gt">Traceback (most recent call last):</span>
|
972
|
+
<span class="c">...</span>
|
973
|
+
<span class="gr">AssertionError</span>: <span class="n">PtolemyObstructionClass only makes sense for even N, try PtolemyGeneralizedObstructionClass</span>
|
974
|
+
</pre></div>
|
975
|
+
</div>
|
976
|
+
<p>To obtain PGL(N,C)-representations for N > 2, use the generalized
|
977
|
+
obstruction class:</p>
|
978
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><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">ptolemy_generalized_obstruction_classes</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
|
979
|
+
<span class="gp">>>> </span><span class="n">p</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="n">obstruction_class</span> <span class="o">=</span> <span class="n">c</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
|
980
|
+
</pre></div>
|
981
|
+
</div>
|
982
|
+
<p>The original obstruction class encodes a representing cocycle in Z/2 as follows:</p>
|
983
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><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">ptolemy_obstruction_classes</span><span class="p">()</span>
|
984
|
+
<span class="gp">>>> </span><span class="n">c</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
|
985
|
+
<span class="go">PtolemyObstructionClass(s_0_0 + 1, s_1_0 - 1, s_2_0 - 1, s_3_0 + 1, s_0_0 - s_0_1, s_1_0 - s_3_1, s_2_0 - s_2_1, s_3_0 - s_1_1)</span>
|
986
|
+
</pre></div>
|
987
|
+
</div>
|
988
|
+
<p>This means that the cocycle to represent this obstruction class in Z/2
|
989
|
+
takes value 1 in Z/2 on face 0 of tetrahedra 0 (because s_0_0 = -1)
|
990
|
+
and value 0 in Z/2 on face 1 of tetrahedra 0 (because s_1_0 = +1).</p>
|
991
|
+
<p>Face 3 of tetrahedra 0 and face 1 of tetrahedra 1 are identified,
|
992
|
+
hence the cocycle takes the same value on those two faces (s_3_0 = s_1_1).</p>
|
993
|
+
</dd></dl>
|
994
|
+
|
995
|
+
<dl class="py method">
|
996
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.ptolemy_variety">
|
997
|
+
<span class="sig-name descname"><span class="pre">ptolemy_variety</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">N</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">obstruction_class</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">simplify</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">eliminate_fixed_ptolemys</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.Triangulation.ptolemy_variety" title="Link to this definition"></a></dt>
|
998
|
+
<dd><p>Returns a Ptolemy variety as described in</p>
|
999
|
+
<ul class="simple">
|
1000
|
+
<li><p>Stavros Garoufalidis, Dyland Thurston, Christian K. Zickert:
|
1001
|
+
“The Complex Volume of SL(n,C)-Representations of 3-Manifolds”
|
1002
|
+
(<a class="reference external" href="http://arxiv.org/abs/1111.2828">http://arxiv.org/abs/1111.2828</a>)</p></li>
|
1003
|
+
<li><p>Stavros Garoufalidis, Matthias Goerner, Christian K. Zickert:
|
1004
|
+
“Gluing Equations for PGL(n,C)-Representations of 3-Manifolds ”
|
1005
|
+
(<a class="reference external" href="http://arxiv.org/abs/1207.6711">http://arxiv.org/abs/1207.6711</a>)</p></li>
|
1006
|
+
</ul>
|
1007
|
+
<p>The variety can be exported to magma or sage and solved there. The
|
1008
|
+
solutions can be processed to compute invariants. The method can also
|
1009
|
+
be used to automatically look up precomputed solutions from the
|
1010
|
+
database at <a class="reference external" href="http://ptolemy.unhyperbolic.org/data">http://ptolemy.unhyperbolic.org/data</a> .</p>
|
1011
|
+
<p>Example for m011 and PSL(2,C)-representations:</p>
|
1012
|
+
<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="s2">"m011"</span><span class="p">)</span>
|
1013
|
+
</pre></div>
|
1014
|
+
</div>
|
1015
|
+
<p>Obtain all Ptolemy varieties for PSL(2,C)-representations:</p>
|
1016
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">p</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="n">obstruction_class</span> <span class="o">=</span> <span class="s1">'all'</span><span class="p">)</span>
|
1017
|
+
</pre></div>
|
1018
|
+
</div>
|
1019
|
+
<p>There are two Ptolemy varieties for the two obstruction classes:</p>
|
1020
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="nb">len</span><span class="p">(</span><span class="n">p</span><span class="p">)</span>
|
1021
|
+
<span class="go">2</span>
|
1022
|
+
</pre></div>
|
1023
|
+
</div>
|
1024
|
+
<p>Retrieve the solutions from the database</p>
|
1025
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">sols</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">retrieve_solutions</span><span class="p">()</span>
|
1026
|
+
</pre></div>
|
1027
|
+
</div>
|
1028
|
+
<p>Compute the solutions using magma (default in SnapPy)</p>
|
1029
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">sols</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">compute_solutions</span><span class="p">(</span><span class="n">engine</span> <span class="o">=</span> <span class="s1">'magma'</span><span class="p">)</span>
|
1030
|
+
</pre></div>
|
1031
|
+
</div>
|
1032
|
+
<p>Compute the solutions using singular (default in sage)</p>
|
1033
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">sols</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">compute_solutions</span><span class="p">(</span><span class="n">engine</span> <span class="o">=</span> <span class="s1">'sage'</span><span class="p">)</span>
|
1034
|
+
</pre></div>
|
1035
|
+
</div>
|
1036
|
+
<p>Note that magma is significantly faster.</p>
|
1037
|
+
<p>Compute all resulting complex volumes</p>
|
1038
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">cvols</span> <span class="o">=</span> <span class="n">sols</span><span class="o">.</span><span class="n">complex_volume_numerical</span><span class="p">()</span>
|
1039
|
+
<span class="gp">>>> </span><span class="n">cvols</span>
|
1040
|
+
<span class="go">[[[-4.29405713186238 E-16 + 0.725471193740844*I,</span>
|
1041
|
+
<span class="go"> -0.942707362776931 + 0.459731436553693*I,</span>
|
1042
|
+
<span class="go"> 0.942707362776931 + 0.459731436553693*I]],</span>
|
1043
|
+
<span class="go"> [[3.94159248086745 E-15 + 0.312682687518267*I,</span>
|
1044
|
+
<span class="go"> 4.64549527022581 E-15 + 0.680993020093457*I,</span>
|
1045
|
+
<span class="go"> -2.78183391239608 - 0.496837853805869*I,</span>
|
1046
|
+
<span class="go"> 2.78183391239608 - 0.496837853805869*I]]]</span>
|
1047
|
+
</pre></div>
|
1048
|
+
</div>
|
1049
|
+
<p>Show complex volumes as a non-nested list:</p>
|
1050
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">cvols</span><span class="o">.</span><span class="n">flatten</span><span class="p">(</span><span class="n">depth</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
|
1051
|
+
<span class="go">[-4.29405713186238 E-16 + 0.725471193740844*I,</span>
|
1052
|
+
<span class="go"> -0.942707362776931 + 0.459731436553693*I,</span>
|
1053
|
+
<span class="go"> 0.942707362776931 + 0.459731436553693*I,</span>
|
1054
|
+
<span class="go"> 3.94159248086745 E-15 + 0.312682687518267*I,</span>
|
1055
|
+
<span class="go"> 4.64549527022581 E-15 + 0.680993020093457*I,</span>
|
1056
|
+
<span class="go"> -2.78183391239608 - 0.496837853805869*I,</span>
|
1057
|
+
<span class="go"> 2.78183391239608 - 0.496837853805869*I]</span>
|
1058
|
+
</pre></div>
|
1059
|
+
</div>
|
1060
|
+
<p>For more examples, go to <a class="reference external" href="http://ptolemy.unhyperbolic.org/">http://ptolemy.unhyperbolic.org/</a></p>
|
1061
|
+
<p>=== Optional Arguments ===</p>
|
1062
|
+
<p>obstruction_class — class from Definition 1.7 of (1).
|
1063
|
+
None for trivial class or a value returned from ptolemy_obstruction_classes.
|
1064
|
+
Short cuts: obstruction_class = ‘all’ returns a list of Ptolemy varieties
|
1065
|
+
for each obstruction. For easier iteration, can set obstruction_class to
|
1066
|
+
an integer.</p>
|
1067
|
+
<p>simplify — boolean to indicate whether to simplify the equations which
|
1068
|
+
significantly reduces the number of variables.
|
1069
|
+
Simplifying means that several identified Ptolemy coordinates x = y = z = …
|
1070
|
+
are eliminated instead of adding relations x - y = 0, y - z = 0, …</p>
|
1071
|
+
<p>eliminate_fixed_ptolemys — boolean to indicate whether to eliminate
|
1072
|
+
the Ptolemy coordinates that are set to 1 for fixing the decoration.
|
1073
|
+
Even though this simplifies the resulting representation, setting it to
|
1074
|
+
True can cause magma to run longer when finding a Groebner basis.</p>
|
1075
|
+
<p>=== Examples for 4_1 ===</p>
|
1076
|
+
<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="s2">"4_1"</span><span class="p">)</span>
|
1077
|
+
</pre></div>
|
1078
|
+
</div>
|
1079
|
+
<p>Get the varieties for all obstruction classes at once (use
|
1080
|
+
help(varieties[0]) for more information):</p>
|
1081
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">varieties</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="n">obstruction_class</span> <span class="o">=</span> <span class="s2">"all"</span><span class="p">)</span>
|
1082
|
+
</pre></div>
|
1083
|
+
</div>
|
1084
|
+
<p>Print the variety as an ideal (sage object) for the non-trivial class:</p>
|
1085
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">varieties</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">ideal</span>
|
1086
|
+
<span class="go">Ideal (-c_0011_0^2 + c_0011_0*c_0101_0 + c_0101_0^2, -c_0011_0^2 - c_0011_0*c_0101_0 + c_0101_0^2, c_0011_0 - 1) of Multivariate Polynomial Ring in c_0011_0, c_0101_0 over Rational Field</span>
|
1087
|
+
</pre></div>
|
1088
|
+
</div>
|
1089
|
+
<p>Print the equations of the variety for the non-trivial class:</p>
|
1090
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="k">for</span> <span class="n">eqn</span> <span class="ow">in</span> <span class="n">varieties</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">equations</span><span class="p">:</span>
|
1091
|
+
<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="n">eqn</span><span class="p">)</span>
|
1092
|
+
<span class="go"> - c_0011_0 * c_0101_0 + c_0011_0^2 + c_0101_0^2</span>
|
1093
|
+
<span class="go"> c_0011_0 * c_0101_0 - c_0011_0^2 - c_0101_0^2</span>
|
1094
|
+
<span class="go"> - 1 + c_0011_0</span>
|
1095
|
+
</pre></div>
|
1096
|
+
</div>
|
1097
|
+
<p>Generate a magma file to compute Primary Decomposition for N = 3:</p>
|
1098
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">p</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
|
1099
|
+
<span class="gp">>>> </span><span class="n">s</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">to_magma</span><span class="p">()</span>
|
1100
|
+
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">s</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"ring and ideal"</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span>
|
1101
|
+
<span class="go">R<c_0012_0, c_0012_1, c_0102_0, c_0111_0, c_0201_0, c_1011_0, c_1011_1, c_1101_0> := PolynomialRing(RationalField(), 8, "grevlex");</span>
|
1102
|
+
<span class="go">MyIdeal := ideal<R |</span>
|
1103
|
+
<span class="go"> c_0012_0 * c_1101_0 + c_0102_0 * c_0111_0 - c_0102_0 * c_1011_0,</span>
|
1104
|
+
<span class="go"> ...</span>
|
1105
|
+
</pre></div>
|
1106
|
+
</div>
|
1107
|
+
<p>=== If you have a magma installation ===</p>
|
1108
|
+
<p>Call p.compute_solutions() to automatically call magma on the above output
|
1109
|
+
and produce exact solutions!!!</p>
|
1110
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="k">try</span><span class="p">:</span>
|
1111
|
+
<span class="gp">... </span> <span class="n">sols</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">compute_solutions</span><span class="p">()</span>
|
1112
|
+
<span class="gp">... </span><span class="k">except</span><span class="p">:</span>
|
1113
|
+
<span class="gp">... </span> <span class="c1"># magma failed, use precomputed_solutions</span>
|
1114
|
+
<span class="gp">... </span> <span class="n">sols</span> <span class="o">=</span> <span class="kc">None</span>
|
1115
|
+
</pre></div>
|
1116
|
+
</div>
|
1117
|
+
<p>Check solutions against manifold
|
1118
|
+
>>> if sols:
|
1119
|
+
… dummy = sols.check_against_manifold()</p>
|
1120
|
+
<p>=== If you do not have a magma installation ===</p>
|
1121
|
+
<p>Load a precomputed example from magma which is provided with the package:</p>
|
1122
|
+
<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.ptolemy.processMagmaFile</span> <span class="kn">import</span> <span class="n">_magma_output_for_4_1__sl3</span><span class="p">,</span> <span class="n">solutions_from_magma</span>
|
1123
|
+
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">_magma_output_for_4_1__sl3</span><span class="p">)</span>
|
1124
|
+
|
1125
|
+
<span class="go">==TRIANGULATION=BEGINS==</span>
|
1126
|
+
<span class="go">% Triangulation</span>
|
1127
|
+
<span class="go">4_1</span>
|
1128
|
+
<span class="go">...</span>
|
1129
|
+
</pre></div>
|
1130
|
+
</div>
|
1131
|
+
<p>Parse the file and produce solutions:</p>
|
1132
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">sols</span> <span class="o">=</span> <span class="n">solutions_from_magma</span><span class="p">(</span><span class="n">_magma_output_for_4_1__sl3</span><span class="p">)</span>
|
1133
|
+
</pre></div>
|
1134
|
+
</div>
|
1135
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">dummy</span> <span class="o">=</span> <span class="n">sols</span><span class="o">.</span><span class="n">check_against_manifold</span><span class="p">()</span>
|
1136
|
+
</pre></div>
|
1137
|
+
</div>
|
1138
|
+
<p>=== Continue here whether you have or do not have magma ===</p>
|
1139
|
+
<p>Pick the first solution of the three different solutions (up to Galois
|
1140
|
+
conjugates):</p>
|
1141
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="nb">len</span><span class="p">(</span><span class="n">sols</span><span class="p">)</span>
|
1142
|
+
<span class="go">3</span>
|
1143
|
+
<span class="gp">>>> </span><span class="n">solution</span> <span class="o">=</span> <span class="n">sols</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
1144
|
+
</pre></div>
|
1145
|
+
</div>
|
1146
|
+
<p>Read the exact value for c_1020_0 (help(solution) for more information
|
1147
|
+
on how to compute cross ratios, volumes and other invariants):</p>
|
1148
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">solution</span><span class="p">[</span><span class="s1">'c_1020_0'</span><span class="p">]</span>
|
1149
|
+
<span class="go">Mod(-1/2*x - 3/2, x^2 + 3*x + 4)</span>
|
1150
|
+
</pre></div>
|
1151
|
+
</div>
|
1152
|
+
<p>Example of simplified vs non-simplified variety for N = 4:</p>
|
1153
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">simplified</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">obstruction_class</span> <span class="o">=</span> <span class="mi">1</span><span class="p">)</span>
|
1154
|
+
<span class="gp">>>> </span><span class="n">full</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">obstruction_class</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="n">simplify</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span>
|
1155
|
+
<span class="gp">>>> </span><span class="nb">len</span><span class="p">(</span><span class="n">simplified</span><span class="o">.</span><span class="n">variables</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">full</span><span class="o">.</span><span class="n">variables</span><span class="p">)</span>
|
1156
|
+
<span class="go">(21, 63)</span>
|
1157
|
+
<span class="gp">>>> </span><span class="nb">len</span><span class="p">(</span><span class="n">simplified</span><span class="o">.</span><span class="n">equations</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">full</span><span class="o">.</span><span class="n">equations</span><span class="p">)</span>
|
1158
|
+
<span class="go">(24, 72)</span>
|
1159
|
+
</pre></div>
|
1160
|
+
</div>
|
1161
|
+
</dd></dl>
|
1162
|
+
|
1163
|
+
<dl class="py method">
|
1164
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.randomize">
|
1165
|
+
<span class="sig-name descname"><span class="pre">randomize</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">blowup_multiple</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">4</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">passes_at_fours</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">6</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.randomize" title="Link to this definition"></a></dt>
|
1166
|
+
<dd><p>Perform random Pachner moves on the underlying triangulation,
|
1167
|
+
including some initial 3 -> 2 moves that increase the number of
|
1168
|
+
tetrahedra by blowup_multiple.</p>
|
1169
|
+
<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">Triangulation</span><span class="p">(</span><span class="s1">'Braid:[1,2,-3,-3,1,2]'</span><span class="p">)</span>
|
1170
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">randomize</span><span class="p">()</span>
|
1171
|
+
</pre></div>
|
1172
|
+
</div>
|
1173
|
+
</dd></dl>
|
1174
|
+
|
1175
|
+
<dl class="py method">
|
1176
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.reverse_orientation">
|
1177
|
+
<span class="sig-name descname"><span class="pre">reverse_orientation</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#snappy.Triangulation.reverse_orientation" title="Link to this definition"></a></dt>
|
1178
|
+
<dd><p>Reverses the orientation of the Triangulation, presuming that
|
1179
|
+
it is orientable.</p>
|
1180
|
+
<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">'m015'</span><span class="p">)</span>
|
1181
|
+
<span class="gp">>>> </span><span class="n">cs</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">chern_simons</span><span class="p">()</span>
|
1182
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">reverse_orientation</span><span class="p">()</span>
|
1183
|
+
<span class="gp">>>> </span><span class="nb">abs</span><span class="p">(</span><span class="n">cs</span> <span class="o">+</span> <span class="n">M</span><span class="o">.</span><span class="n">chern_simons</span><span class="p">())</span>
|
1184
|
+
<span class="go">0.0</span>
|
1185
|
+
</pre></div>
|
1186
|
+
</div>
|
1187
|
+
</dd></dl>
|
1188
|
+
|
1189
|
+
<dl class="py method">
|
1190
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.save">
|
1191
|
+
<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">file_name</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.Triangulation.save" title="Link to this definition"></a></dt>
|
1192
|
+
<dd><p>Save the triangulation as a SnapPea triangulation file.</p>
|
1193
|
+
<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">Triangulation</span><span class="p">(</span><span class="s1">'m004'</span><span class="p">)</span>
|
1194
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="s1">'fig-eight.tri'</span><span class="p">)</span>
|
1195
|
+
</pre></div>
|
1196
|
+
</div>
|
1197
|
+
<p>To retrieve a SnapPea triangulation from the saved file
|
1198
|
+
you can do the following. The first command creates a cusped
|
1199
|
+
manifold M. The second one creates the filled manifold M1
|
1200
|
+
with Dehn coefficients (2,3).</p>
|
1201
|
+
<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">'fig-eight.tri'</span><span class="p">)</span>
|
1202
|
+
<span class="gp">>>> </span><span class="n">M1</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'fig-eight.tri(2,3)'</span><span class="p">)</span>
|
1203
|
+
</pre></div>
|
1204
|
+
</div>
|
1205
|
+
</dd></dl>
|
1206
|
+
|
1207
|
+
<dl class="py method">
|
1208
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.set_name">
|
1209
|
+
<span class="sig-name descname"><span class="pre">set_name</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">new_name</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> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#snappy.Triangulation.set_name" title="Link to this definition"></a></dt>
|
1210
|
+
<dd><p>Give the triangulation a new name.</p>
|
1211
|
+
<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">Triangulation</span><span class="p">(</span><span class="s1">'4_1'</span><span class="p">)</span>
|
1212
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">set_name</span><span class="p">(</span><span class="s1">'figure-eight-comp'</span><span class="p">)</span>
|
1213
|
+
<span class="gp">>>> </span><span class="n">M</span>
|
1214
|
+
<span class="go">figure-eight-comp(0,0)</span>
|
1215
|
+
</pre></div>
|
1216
|
+
</div>
|
1217
|
+
</dd></dl>
|
1218
|
+
|
1219
|
+
<dl class="py method">
|
1220
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.set_peripheral_curves">
|
1221
|
+
<span class="sig-name descname"><span class="pre">set_peripheral_curves</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">peripheral_data</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">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">return_matrices</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.Triangulation.set_peripheral_curves" title="Link to this definition"></a></dt>
|
1222
|
+
<dd><p>Each cusp has a preferred marking. In the case of a torus
|
1223
|
+
cusp, this is pair of essential simple curves meeting in one
|
1224
|
+
point; equivalently, a basis of the first homology of the
|
1225
|
+
boundary torus. These curves are called the meridian and the
|
1226
|
+
longitude.</p>
|
1227
|
+
<p>This method changes these markings in various ways. In many
|
1228
|
+
cases, if the flag return_matrices is True then it returns
|
1229
|
+
a list of change-of-basis matrices is returned, one per
|
1230
|
+
cusp, which will restore the original markings if passed
|
1231
|
+
as peripheral_data.</p>
|
1232
|
+
</dd></dl>
|
1233
|
+
|
1234
|
+
<dl class="py method">
|
1235
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.simplify">
|
1236
|
+
<span class="sig-name descname"><span class="pre">simplify</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">passes_at_fours</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">6</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.simplify" title="Link to this definition"></a></dt>
|
1237
|
+
<dd><p>Try to simplify the triangulation by doing Pachner moves.</p>
|
1238
|
+
<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">Triangulation</span><span class="p">(</span><span class="s1">'12n123'</span><span class="p">)</span>
|
1239
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">simplify</span><span class="p">()</span>
|
1240
|
+
</pre></div>
|
1241
|
+
</div>
|
1242
|
+
<p>It does four kinds of moves that reduce the number of
|
1243
|
+
tetrahedra:</p>
|
1244
|
+
<ul class="simple">
|
1245
|
+
<li><p>3 -> 2 and 2 -> 0 Pacher moves, which eliminate one or two
|
1246
|
+
tetrahedra respectively.</p></li>
|
1247
|
+
<li><p>On suitable valence-1 edges, does a 2 -> 3 and then 2 -> 0 move,
|
1248
|
+
which removes a tetrahedron and creates a new valence-1 edge.</p></li>
|
1249
|
+
<li><p>When a 2-simplex has two edges of valence-4 giving rise to the
|
1250
|
+
suspension of a pentagon, replace these 6 tetrahedra with a
|
1251
|
+
single edge of valence 5.</p></li>
|
1252
|
+
</ul>
|
1253
|
+
<p>It also does random 4 -> 4 moves in hopes of setting up a
|
1254
|
+
simplfication. The argument passes_at_fours is the number of
|
1255
|
+
times it goes through the valence-4 edges without progress
|
1256
|
+
before giving up.</p>
|
1257
|
+
</dd></dl>
|
1258
|
+
|
1259
|
+
<dl class="py method">
|
1260
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.slice_obstruction_HKL">
|
1261
|
+
<span class="sig-name descname"><span class="pre">slice_obstruction_HKL</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">primes_spec</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">verbose</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">check_in_S3</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.Triangulation.slice_obstruction_HKL" title="Link to this definition"></a></dt>
|
1262
|
+
<dd><p>For the exterior of a knot in S^3, searches for a topological
|
1263
|
+
slicing obstruction from:</p>
|
1264
|
+
<p>Herald, Kirk, Livingston, Math Zeit., 2010
|
1265
|
+
<a class="reference external" href="https://dx.doi.org/10.1007/s00209-009-0548-1">https://dx.doi.org/10.1007/s00209-009-0548-1</a>
|
1266
|
+
<a class="reference external" href="https://arxiv.org/abs/0804.1355">https://arxiv.org/abs/0804.1355</a></p>
|
1267
|
+
<p>The test looks at the cyclic branched covers of the knot of prime
|
1268
|
+
order p and the F_q homology thereof where q is an odd prime. The
|
1269
|
+
range of such (p, q) pairs searched is given by primes_spec as a
|
1270
|
+
list of (p_max, [q_min, q_max]). It returns the pair (p, q) of
|
1271
|
+
the first nonzero obstruction found (in which case K is not
|
1272
|
+
slice), and otherwise returns None:</p>
|
1273
|
+
<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">'K12n813'</span><span class="p">)</span>
|
1274
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">spec</span> <span class="o">=</span> <span class="p">[(</span><span class="mi">10</span><span class="p">,</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">20</span><span class="p">]),</span> <span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">10</span><span class="p">])]</span>
|
1275
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">M</span><span class="o">.</span><span class="n">slice_obstruction_HKL</span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
1276
|
+
<span class="n">Looking</span> <span class="n">at</span> <span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span> <span class="o">...</span>
|
1277
|
+
<span class="n">Looking</span> <span class="n">at</span> <span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">7</span><span class="p">)</span> <span class="o">...</span>
|
1278
|
+
<span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">7</span><span class="p">)</span>
|
1279
|
+
</pre></div>
|
1280
|
+
</div>
|
1281
|
+
<p>You can also specify the p to examine by a range [p_min, p_max] or
|
1282
|
+
the q by just q_max:</p>
|
1283
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="n">spec</span> <span class="o">=</span> <span class="p">[([</span><span class="mi">3</span><span class="p">,</span> <span class="mi">10</span><span class="p">],</span> <span class="mi">10</span><span class="p">)]</span>
|
1284
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">M</span><span class="o">.</span><span class="n">slice_obstruction_HKL</span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
1285
|
+
<span class="n">Looking</span> <span class="n">at</span> <span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">7</span><span class="p">)</span> <span class="o">...</span>
|
1286
|
+
<span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">7</span><span class="p">)</span>
|
1287
|
+
</pre></div>
|
1288
|
+
</div>
|
1289
|
+
<p>If primes_spec is just a pair (p, q) then only that obstruction is
|
1290
|
+
checked:</p>
|
1291
|
+
<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">slice_obstruction_HKL</span><span class="p">((</span><span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">))</span>
|
1292
|
+
<span class="n">sage</span><span class="p">:</span> <span class="n">M</span><span class="o">.</span><span class="n">slice_obstruction_HKL</span><span class="p">((</span><span class="mi">3</span><span class="p">,</span> <span class="mi">7</span><span class="p">))</span>
|
1293
|
+
<span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">7</span><span class="p">)</span>
|
1294
|
+
</pre></div>
|
1295
|
+
</div>
|
1296
|
+
<p>Technical note: As implemented, can only get an obstruction when
|
1297
|
+
the decomposition of H_1(cover; F_q) into irreducible Z/pZ-modules
|
1298
|
+
has no repeat factors. The method of [HKL] can be used more
|
1299
|
+
broadly, but other cases requires computing many more twisted
|
1300
|
+
Alexander polynomials.</p>
|
1301
|
+
</dd></dl>
|
1302
|
+
|
1303
|
+
<dl class="py method">
|
1304
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.symplectic_basis">
|
1305
|
+
<span class="sig-name descname"><span class="pre">symplectic_basis</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">verify</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.symplectic_basis" title="Link to this definition"></a></dt>
|
1306
|
+
<dd><p>Extend the Neumann-Zagier matrix to one which is symplectic
|
1307
|
+
(up to factors of 2) using oscillating curves, see
|
1308
|
+
<a class="reference external" href="https://arxiv.org/abs/2208.06969">Mathews and Purcell ‘22</a>.
|
1309
|
+
Only accepts triangulations with 1 cusp.</p>
|
1310
|
+
<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="s2">"4_1"</span><span class="p">)</span>
|
1311
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">symplectic_basis</span><span class="p">()</span>
|
1312
|
+
<span class="go">[-1 0 -1 -1]</span>
|
1313
|
+
<span class="go">[ 2 0 -2 0]</span>
|
1314
|
+
<span class="go">[-2 -1 -2 -1]</span>
|
1315
|
+
<span class="go">[ 0 -1 -2 -1]</span>
|
1316
|
+
</pre></div>
|
1317
|
+
</div>
|
1318
|
+
<dl class="field-list simple">
|
1319
|
+
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
1320
|
+
<dd class="field-odd"><p><strong>verify</strong> – Explicitly test if the resulting matrix is symplectic.</p>
|
1321
|
+
</dd>
|
1322
|
+
</dl>
|
1323
|
+
</dd></dl>
|
1324
|
+
|
1325
|
+
<dl class="py method">
|
1326
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.triangulation_isosig">
|
1327
|
+
<span class="sig-name descname"><span class="pre">triangulation_isosig</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">decorated</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_cusp_ordering</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_curves</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_curve_orientations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_filling_orientations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_orientation</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="headerlink" href="#snappy.Triangulation.triangulation_isosig" title="Link to this definition"></a></dt>
|
1328
|
+
<dd><p>Returns the “(decorated) isomorphism signature”, a compact text
|
1329
|
+
representation of the triangulation:</p>
|
1330
|
+
<div class="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">'m004'</span><span class="p">)</span>
|
1331
|
+
<span class="gp">>>> </span><span class="n">T</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">()</span>
|
1332
|
+
<span class="go">'cPcbbbiht_BaCB'</span>
|
1333
|
+
</pre></div>
|
1334
|
+
</div>
|
1335
|
+
<p>This string can be used later to recreate an isomorphic triangulation:</p>
|
1336
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">U</span> <span class="o">=</span> <span class="n">Triangulation</span><span class="p">(</span><span class="s1">'cPcbbbiht_BaCB'</span><span class="p">)</span>
|
1337
|
+
<span class="gp">>>> </span><span class="n">T</span> <span class="o">==</span> <span class="n">U</span>
|
1338
|
+
<span class="go">True</span>
|
1339
|
+
</pre></div>
|
1340
|
+
</div>
|
1341
|
+
<p>The isomorphism signature is also used to compute the
|
1342
|
+
<a class="reference internal" href="manifold.html#snappy.Manifold.isometry_signature" title="snappy.Manifold.isometry_signature"><code class="xref py py-meth docutils literal notranslate"><span class="pre">isometry_signature</span></code></a>.
|
1343
|
+
It comes in two flavors controlled by the <code class="xref py py-attr docutils literal notranslate"><span class="pre">decorated</span></code> flag.</p>
|
1344
|
+
<p><strong>Undecorated isomorphism signature</strong></p>
|
1345
|
+
<p>The undecorated isomorphism signature is a complete invariant of the
|
1346
|
+
(oriented) triangulation up to combinatorial isomorphism:</p>
|
1347
|
+
<div class="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">'m015'</span><span class="p">)</span>
|
1348
|
+
<span class="gp">>>> </span><span class="n">T</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">(</span><span class="n">decorated</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
1349
|
+
<span class="go">'dLQbcccdero'</span>
|
1350
|
+
</pre></div>
|
1351
|
+
</div>
|
1352
|
+
<p>It was introduced in
|
1353
|
+
<a class="reference external" href="http://arxiv.org/abs/1110.6080">Burton ‘11</a>. It canonizes and
|
1354
|
+
generalizes the ealier dehydration string by
|
1355
|
+
<a class="reference external" href="https://doi.org/10.1090/S0025-5718-99-01036-4">Callahan, Hildebrand and Weeks ‘99</a>.
|
1356
|
+
The undecorated isomorphism signature can also be given to
|
1357
|
+
<a class="reference external" href="https://regina-normal.github.io/">Regina</a>’s
|
1358
|
+
<code class="docutils literal notranslate"><span class="pre">Triangulation3.fromIsoSig</span></code>.</p>
|
1359
|
+
<p>By default, the orientation (if orientable) is ignored. More
|
1360
|
+
precisely, it computes the string for both orientations (if orientable)
|
1361
|
+
and uses the lexicographically smaller string:</p>
|
1362
|
+
<div class="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">'m015'</span><span class="p">)</span>
|
1363
|
+
<span class="gp">>>> </span><span class="n">T</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">(</span><span class="n">decorated</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
1364
|
+
<span class="go">'dLQbcccdero'</span>
|
1365
|
+
<span class="gp">>>> </span><span class="n">T</span><span class="o">.</span><span class="n">reverse_orientation</span><span class="p">()</span>
|
1366
|
+
<span class="gp">>>> </span><span class="n">T</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">(</span><span class="n">decorated</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
1367
|
+
<span class="go">'dLQbcccdero'</span>
|
1368
|
+
</pre></div>
|
1369
|
+
</div>
|
1370
|
+
<p>When specifying <code class="xref py py-attr docutils literal notranslate"><span class="pre">ignore_orientation</span> <span class="pre">=</span> <span class="pre">False</span></code>, the result
|
1371
|
+
encodes the orientation (if orientable). Now the result is
|
1372
|
+
different if we change the orientation of a chiral triangulation:</p>
|
1373
|
+
<div class="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">'m015'</span><span class="p">)</span>
|
1374
|
+
<span class="gp">>>> </span><span class="n">T</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">(</span><span class="n">decorated</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">ignore_orientation</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
1375
|
+
<span class="go">'dLQbcccdero'</span>
|
1376
|
+
<span class="gp">>>> </span><span class="n">T</span><span class="o">.</span><span class="n">reverse_orientation</span><span class="p">()</span>
|
1377
|
+
<span class="gp">>>> </span><span class="n">T</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">(</span><span class="n">decorated</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">ignore_orientation</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
1378
|
+
<span class="go">'dLQbccceekg'</span>
|
1379
|
+
</pre></div>
|
1380
|
+
</div>
|
1381
|
+
<p><strong>Decorated isomorphism signature (default)</strong></p>
|
1382
|
+
<p>SnapPy can decorate the isomorphism signature to include the following
|
1383
|
+
peripheral information in a canonical way (that is invariant under
|
1384
|
+
the action by combinatorial isomorphisms of the triangulation):</p>
|
1385
|
+
<ol class="arabic simple">
|
1386
|
+
<li><p>Indexing of the cusps (that is, ideal vertices).</p>
|
1387
|
+
<ul class="simple">
|
1388
|
+
<li><p>Included by default.
|
1389
|
+
Can be suppressed with <code class="xref py py-attr docutils literal notranslate"><span class="pre">ignore_cusp_ordering</span> <span class="pre">=</span> <span class="pre">True</span></code>.</p></li>
|
1390
|
+
</ul>
|
1391
|
+
</li>
|
1392
|
+
<li><p>Peripheral curves (aka meridian and longitude, up to homotopy).</p>
|
1393
|
+
<ul class="simple">
|
1394
|
+
<li><p>Included by default.
|
1395
|
+
Can be suppressed with <code class="xref py py-attr docutils literal notranslate"><span class="pre">ignore_curves</span> <span class="pre">=</span> <span class="pre">True</span></code>.</p></li>
|
1396
|
+
<li><p>By default, the decoration encodes the oriented peripheral curves.
|
1397
|
+
By specifying <code class="xref py py-attr docutils literal notranslate"><span class="pre">ignore_curve_orientations</span> <span class="pre">=</span> <span class="pre">True</span></code>, it encodes
|
1398
|
+
the unoriented peripheral curves instead.</p></li>
|
1399
|
+
</ul>
|
1400
|
+
</li>
|
1401
|
+
<li><p>Dehn-fillings (if present).</p>
|
1402
|
+
<ul class="simple">
|
1403
|
+
<li><p>By default, the decoration encodes the oriented Dehn-fillings.
|
1404
|
+
That is, we also encodes the orientation of the peripheral curve
|
1405
|
+
that is used for the Dehn-filling (this explanation only
|
1406
|
+
works if the coefficients are integral).
|
1407
|
+
By specifying <code class="xref py py-attr docutils literal notranslate"><span class="pre">ignore_filling_orientations</span> <span class="pre">=</span> <span class="pre">True</span></code>, the
|
1408
|
+
decoration encodes the unoriented Dehn-fillings.
|
1409
|
+
That is, it normalizes the Dehn-filling coefficients by picking
|
1410
|
+
a canonical pair among <span class="math notranslate nohighlight">\((m,l)\)</span> and <span class="math notranslate nohighlight">\((-m,-l)\)</span>.</p></li>
|
1411
|
+
</ul>
|
1412
|
+
</li>
|
1413
|
+
</ol>
|
1414
|
+
<p>Details of the encoding are explained in the
|
1415
|
+
<a class="reference external" href="https://github.com/3-manifolds/SnapPy/blob/master/python/decorated_isosig.py">SnapPy source code</a>.</p>
|
1416
|
+
<p><strong>Example</strong></p>
|
1417
|
+
<p>Let us consider the links <span class="math notranslate nohighlight">\(9^2_{34}\)</span> and <code class="docutils literal notranslate"><span class="pre">L9a21</span></code>. Note that we use
|
1418
|
+
<a class="reference internal" href="manifold.html#snappy.Manifold.canonical_retriangulation" title="snappy.Manifold.canonical_retriangulation"><code class="xref py py-meth docutils literal notranslate"><span class="pre">canonical_retriangulation</span></code></a>
|
1419
|
+
to make the following examples say something intrinsic about the
|
1420
|
+
hyperbolic manifold:</p>
|
1421
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">snappy</span> <span class="kn">import</span> <span class="n">Manifold</span>
|
1422
|
+
<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^2_34'</span><span class="p">)</span><span class="o">.</span><span class="n">canonical_retriangulation</span><span class="p">()</span>
|
1423
|
+
<span class="gp">>>> </span><span class="n">N</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'L9a21'</span><span class="p">)</span><span class="o">.</span><span class="n">canonical_retriangulation</span><span class="p">()</span>
|
1424
|
+
</pre></div>
|
1425
|
+
</div>
|
1426
|
+
<p>The decorated isosig recovers the entire peripheral information faithfully
|
1427
|
+
(including orientation, see below):</p>
|
1428
|
+
<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">triangulation_isosig</span><span class="p">()</span>
|
1429
|
+
<span class="go">'oLLvzQLLQQccdhifihnlmkmlnnpvuvbvouggbggoo_baBabbbBbC'</span>
|
1430
|
+
<span class="gp">>>> </span><span class="n">K</span> <span class="o">=</span> <span class="n">Triangulation</span><span class="p">(</span><span class="s1">'oLLvzQLLQQccdhifihnlmkmlnnpvuvbvouggbggoo_baBabbbBbC'</span><span class="p">)</span>
|
1431
|
+
<span class="gp">>>> </span><span class="n">M</span><span class="o">.</span><span class="n">isomorphisms_to</span><span class="p">(</span><span class="n">K</span><span class="p">)</span>
|
1432
|
+
<span class="go">[0 -> 0 1 -> 1</span>
|
1433
|
+
<span class="go">[1 0] [1 0]</span>
|
1434
|
+
<span class="go">[0 1] [0 1]</span>
|
1435
|
+
<span class="go">Extends to link]</span>
|
1436
|
+
</pre></div>
|
1437
|
+
</div>
|
1438
|
+
<p>The two links have isometric complements:</p>
|
1439
|
+
<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">triangulation_isosig</span><span class="p">(</span><span class="n">decorated</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
1440
|
+
<span class="go">'oLLvzQLLQQccdhifihnlmkmlnnpvuvbvouggbggoo'</span>
|
1441
|
+
<span class="gp">>>> </span><span class="n">N</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">(</span><span class="n">decorated</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
1442
|
+
<span class="go">'oLLvzQLLQQccdhifihnlmkmlnnpvuvbvouggbggoo'</span>
|
1443
|
+
</pre></div>
|
1444
|
+
</div>
|
1445
|
+
<p>However, the complements have different handedness:</p>
|
1446
|
+
<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">triangulation_isosig</span><span class="p">(</span><span class="n">decorated</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span><span class="n">ignore_orientation</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
1447
|
+
<span class="go">'oLLzLPwzQQccdeghjiiklmnmnnuvuvvavovvffffo'</span>
|
1448
|
+
<span class="gp">>>> </span><span class="n">N</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">(</span><span class="n">decorated</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span><span class="n">ignore_orientation</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
1449
|
+
<span class="go">'oLLvzQLLQQccdhifihnlmkmlnnpvuvbvouggbggoo'</span>
|
1450
|
+
</pre></div>
|
1451
|
+
</div>
|
1452
|
+
<p>Also, the cusps/components of the link are indexed differently:</p>
|
1453
|
+
<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">triangulation_isosig</span><span class="p">(</span><span class="n">ignore_curves</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
1454
|
+
<span class="go">'oLLvzQLLQQccdhifihnlmkmlnnpvuvbvouggbggoo_ba'</span>
|
1455
|
+
<span class="gp">>>> </span><span class="n">N</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">(</span><span class="n">ignore_curves</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
1456
|
+
<span class="go">'oLLvzQLLQQccdhifihnlmkmlnnpvuvbvouggbggoo_ab'</span>
|
1457
|
+
</pre></div>
|
1458
|
+
</div>
|
1459
|
+
<p>Ignoring the indexing, we also see that the oriented merdians and
|
1460
|
+
longitudes do not match:</p>
|
1461
|
+
<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">triangulation_isosig</span><span class="p">(</span><span class="n">ignore_cusp_ordering</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
1462
|
+
<span class="go">'oLLvzQLLQQccdhifihnlmkmlnnpvuvbvouggbggoo_bBbCBabb'</span>
|
1463
|
+
<span class="gp">>>> </span><span class="n">N</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">(</span><span class="n">ignore_cusp_ordering</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
1464
|
+
<span class="go">'oLLvzQLLQQccdhifihnlmkmlnnpvuvbvouggbggoo_BbbCbabb'</span>
|
1465
|
+
</pre></div>
|
1466
|
+
</div>
|
1467
|
+
<p>However, they are the same links (ignoring indexing and orientation):</p>
|
1468
|
+
<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">triangulation_isosig</span><span class="p">(</span><span class="n">ignore_cusp_ordering</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">ignore_curve_orientations</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
1469
|
+
<span class="go">'oLLvzQLLQQccdhifihnlmkmlnnpvuvbvouggbggoo_bBBcbabb'</span>
|
1470
|
+
<span class="gp">>>> </span><span class="n">N</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">(</span><span class="n">ignore_cusp_ordering</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">ignore_curve_orientations</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
1471
|
+
<span class="go">'oLLvzQLLQQccdhifihnlmkmlnnpvuvbvouggbggoo_bBBcbabb'</span>
|
1472
|
+
</pre></div>
|
1473
|
+
</div>
|
1474
|
+
<p>Let us create two surgery presentations from the links (note that we
|
1475
|
+
fill after
|
1476
|
+
<a class="reference internal" href="manifold.html#snappy.Manifold.canonical_retriangulation" title="snappy.Manifold.canonical_retriangulation"><code class="xref py py-meth docutils literal notranslate"><span class="pre">canonical_retriangulation</span></code></a>
|
1477
|
+
since it rejects Dehn-fillings):</p>
|
1478
|
+
<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">dehn_fill</span><span class="p">((</span><span class="mi">4</span><span class="p">,</span> <span class="mi">5</span><span class="p">),</span><span class="mi">0</span><span class="p">)</span>
|
1479
|
+
<span class="gp">>>> </span><span class="n">N</span><span class="o">.</span><span class="n">dehn_fill</span><span class="p">((</span><span class="mi">4</span><span class="p">,</span><span class="o">-</span><span class="mi">5</span><span class="p">),</span><span class="mi">1</span><span class="p">)</span>
|
1480
|
+
</pre></div>
|
1481
|
+
</div>
|
1482
|
+
<p>They are equivalent surgery presentations (of the same manifold):</p>
|
1483
|
+
<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">triangulation_isosig</span><span class="p">(</span>
|
1484
|
+
<span class="gp">... </span> <span class="n">ignore_cusp_ordering</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
1485
|
+
<span class="gp">... </span> <span class="n">ignore_curves</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
1486
|
+
<span class="gp">... </span> <span class="n">ignore_filling_orientations</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
1487
|
+
<span class="go">'oLLvzQLLQQccdhifihnlmkmlnnpvuvbvouggbggoo(0,0)(1,5)'</span>
|
1488
|
+
<span class="gp">>>> </span><span class="n">N</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">(</span>
|
1489
|
+
<span class="gp">... </span> <span class="n">ignore_cusp_ordering</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
1490
|
+
<span class="gp">... </span> <span class="n">ignore_curves</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
1491
|
+
<span class="gp">... </span> <span class="n">ignore_filling_orientations</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
1492
|
+
<span class="go">'oLLvzQLLQQccdhifihnlmkmlnnpvuvbvouggbggoo(0,0)(1,5)'</span>
|
1493
|
+
</pre></div>
|
1494
|
+
</div>
|
1495
|
+
<p><strong>Orientation</strong></p>
|
1496
|
+
<p>Note that <code class="xref py py-attr docutils literal notranslate"><span class="pre">ignore_orientation=True</span></code> only applies to the undecorated
|
1497
|
+
part of the isomorphism signature. The decoration can still capture the
|
1498
|
+
the orientation.
|
1499
|
+
More, precisely, the result of <a class="reference internal" href="#snappy.Triangulation.triangulation_isosig" title="snappy.Triangulation.triangulation_isosig"><code class="xref py py-meth docutils literal notranslate"><span class="pre">triangulation_isosig()</span></code></a> depends on
|
1500
|
+
the orientation (if the triangulation is orientable and chiral) if any
|
1501
|
+
of the following is true:</p>
|
1502
|
+
<ol class="arabic simple">
|
1503
|
+
<li><p><code class="xref py py-attr docutils literal notranslate"><span class="pre">ignore_orientation</span> <span class="pre">=</span> <span class="pre">False</span></code>.</p></li>
|
1504
|
+
<li><p><code class="xref py py-attr docutils literal notranslate"><span class="pre">decorated</span> <span class="pre">=</span> <span class="pre">True</span></code> and
|
1505
|
+
<code class="xref py py-attr docutils literal notranslate"><span class="pre">ignore_curves</span> <span class="pre">=</span> <span class="pre">False</span></code> and
|
1506
|
+
<code class="xref py py-attr docutils literal notranslate"><span class="pre">ignore_filling_orientations</span> <span class="pre">=</span> <span class="pre">False</span></code>.</p></li>
|
1507
|
+
</ol>
|
1508
|
+
<p>In these cases, re-constructing a triangulation from the isomorphism
|
1509
|
+
signature yields a triangulation with the same handedness.</p>
|
1510
|
+
<dl class="field-list simple">
|
1511
|
+
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
1512
|
+
<dd class="field-odd"><ul class="simple">
|
1513
|
+
<li><p><strong>decorated</strong> – Include peripheral information such as indexing of the cusps,
|
1514
|
+
(oriented or unoriented) peripheral curves and
|
1515
|
+
(oriented or unoriented) Dehn-fillings.</p></li>
|
1516
|
+
<li><p><strong>ignore_cusp_ordering</strong> – Do not encode the indexing of the cusps.
|
1517
|
+
Only relevant if <code class="xref py py-attr docutils literal notranslate"><span class="pre">decorated</span> <span class="pre">=</span> <span class="pre">True</span></code>.</p></li>
|
1518
|
+
<li><p><strong>ignore_curves</strong> – Do not encode the peripheral curves.
|
1519
|
+
Only relevant if <code class="xref py py-attr docutils literal notranslate"><span class="pre">decorated</span> <span class="pre">=</span> <span class="pre">True</span></code>.
|
1520
|
+
This is new in SnapPy version 3.2.
|
1521
|
+
If <code class="xref py py-attr docutils literal notranslate"><span class="pre">ignore_curves</span> <span class="pre">=</span> <span class="pre">True</span></code>, the result of this method cannot
|
1522
|
+
be given to prior versions.</p></li>
|
1523
|
+
<li><p><strong>ignore_curve_orientations</strong> – Do not encode the orientations of the peripheral curves.
|
1524
|
+
Only relevant if <code class="xref py py-attr docutils literal notranslate"><span class="pre">decorated</span> <span class="pre">=</span> <span class="pre">True</span></code> and
|
1525
|
+
<code class="xref py py-attr docutils literal notranslate"><span class="pre">ignore_curves</span> <span class="pre">=</span> <span class="pre">False</span></code>.</p></li>
|
1526
|
+
<li><p><strong>ignore_filling_orientations</strong> – Do not encode the orientations of the Dehn-fillings.
|
1527
|
+
Only relevant if <code class="xref py py-attr docutils literal notranslate"><span class="pre">decorated</span> <span class="pre">=</span> <span class="pre">True</span></code>.</p></li>
|
1528
|
+
<li><p><strong>ignore_orientation</strong> – Do not encode the orientation of the triangulation in the
|
1529
|
+
undecorated part of the triangulation isosig.
|
1530
|
+
See above section about orientation.</p></li>
|
1531
|
+
</ul>
|
1532
|
+
</dd>
|
1533
|
+
</dl>
|
1534
|
+
</dd></dl>
|
1535
|
+
|
1536
|
+
<dl class="py method">
|
1537
|
+
<dt class="sig sig-object py" id="snappy.Triangulation.with_hyperbolic_structure">
|
1538
|
+
<span class="sig-name descname"><span class="pre">with_hyperbolic_structure</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.with_hyperbolic_structure" title="Link to this definition"></a></dt>
|
1539
|
+
<dd><p>Add a (possibly degenerate) hyperbolic structure, turning the
|
1540
|
+
<a class="reference internal" href="#snappy.Triangulation" title="snappy.Triangulation"><code class="xref py py-class docutils literal notranslate"><span class="pre">Triangulation</span></code></a> into a <a class="reference internal" href="manifold.html#snappy.Manifold" title="snappy.Manifold"><code class="xref py py-class docutils literal notranslate"><span class="pre">Manifold</span></code></a>.</p>
|
1541
|
+
<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">Triangulation</span><span class="p">(</span><span class="s1">'m004'</span><span class="p">)</span>
|
1542
|
+
<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">with_hyperbolic_structure</span><span class="p">()</span>
|
1543
|
+
<span class="gp">>>> </span><span class="n">N</span><span class="o">.</span><span class="n">volume</span><span class="p">()</span>
|
1544
|
+
<span class="go">2.02988321</span>
|
1545
|
+
</pre></div>
|
1546
|
+
</div>
|
1547
|
+
</dd></dl>
|
1548
|
+
|
1549
|
+
</dd></dl>
|
1550
|
+
|
1551
|
+
</section>
|
1552
|
+
|
1553
|
+
|
1554
|
+
</div>
|
1555
|
+
</div>
|
1556
|
+
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
1557
|
+
<a href="manifoldhp.html" class="btn btn-neutral float-left" title="ManifoldHP: High-precision variant" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
1558
|
+
<a href="additional_classes.html" class="btn btn-neutral float-right" title="Additional Classes" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
1559
|
+
</div>
|
1560
|
+
|
1561
|
+
<hr/>
|
1562
|
+
|
1563
|
+
<div role="contentinfo">
|
1564
|
+
<p>© Copyright 2009-2025, by Marc Culler, Nathan Dunfield, Matthias Goerner, Jeffrey Weeks and others.</p>
|
1565
|
+
</div>
|
1566
|
+
|
1567
|
+
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
1568
|
+
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
1569
|
+
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
1570
|
+
|
1571
|
+
|
1572
|
+
</footer>
|
1573
|
+
</div>
|
1574
|
+
</div>
|
1575
|
+
</section>
|
1576
|
+
</div>
|
1577
|
+
<script>
|
1578
|
+
jQuery(function () {
|
1579
|
+
SphinxRtdTheme.Navigation.enable(true);
|
1580
|
+
});
|
1581
|
+
</script>
|
1582
|
+
|
1583
|
+
</body>
|
1475
1584
|
</html>
|