snappy 3.1.1__cp310-cp310-macosx_11_0_arm64.whl → 3.2__cp310-cp310-macosx_11_0_arm64.whl
Sign up to get free protection for your applications and to get access to all the features.
- snappy/CyOpenGL.cpython-310-darwin.so +0 -0
- snappy/SnapPy.cpython-310-darwin.so +0 -0
- snappy/SnapPyHP.cpython-310-darwin.so +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/development.rst.txt +66 -46
- snappy/doc/_sources/index.rst.txt +72 -5
- snappy/doc/_sources/installing.rst.txt +145 -162
- snappy/doc/_sources/news.rst.txt +73 -1
- snappy/doc/_sources/ptolemy_examples1.rst.txt +8 -7
- snappy/doc/_sources/ptolemy_examples3.rst.txt +2 -2
- snappy/doc/_sources/triangulation.rst.txt +2 -2
- snappy/doc/_sources/verify.rst.txt +89 -29
- snappy/doc/_sources/verify_internals.rst.txt +5 -16
- snappy/doc/_static/basic.css +23 -1
- 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 +2 -3
- 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 +2 -2
- snappy/doc/_static/pygments.css +1 -0
- snappy/doc/_static/searchtools.js +125 -71
- snappy/doc/_static/sphinx_highlight.js +13 -3
- snappy/doc/additional_classes.html +291 -122
- snappy/doc/bugs.html +17 -20
- snappy/doc/censuses.html +34 -53
- snappy/doc/credits.html +18 -21
- snappy/doc/development.html +88 -68
- snappy/doc/genindex.html +66 -145
- snappy/doc/index.html +86 -31
- snappy/doc/installing.html +164 -182
- snappy/doc/manifold.html +1168 -556
- snappy/doc/manifoldhp.html +18 -21
- snappy/doc/news.html +91 -33
- snappy/doc/objects.inv +0 -0
- snappy/doc/other.html +20 -22
- snappy/doc/platonic_census.html +31 -34
- snappy/doc/plink.html +19 -22
- snappy/doc/ptolemy.html +20 -22
- snappy/doc/ptolemy_classes.html +102 -105
- snappy/doc/ptolemy_examples1.html +34 -36
- snappy/doc/ptolemy_examples2.html +28 -31
- snappy/doc/ptolemy_examples3.html +26 -29
- snappy/doc/ptolemy_examples4.html +20 -23
- snappy/doc/ptolemy_prelim.html +25 -28
- snappy/doc/py-modindex.html +16 -19
- snappy/doc/screenshots.html +22 -24
- snappy/doc/search.html +15 -18
- snappy/doc/searchindex.js +1 -1
- snappy/doc/snap.html +18 -21
- snappy/doc/snappy.html +18 -20
- snappy/doc/spherogram.html +84 -87
- snappy/doc/todo.html +17 -20
- snappy/doc/triangulation.html +324 -215
- snappy/doc/tutorial.html +17 -20
- snappy/doc/verify.html +100 -46
- snappy/doc/verify_internals.html +106 -563
- 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.cpython-310-darwin.so +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 +26 -11
- 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-310.pyc +0 -0
- snappy/__pycache__/browser.cpython-310.pyc +0 -0
- snappy/__pycache__/cache.cpython-310.pyc +0 -0
- snappy/__pycache__/database.cpython-310.pyc +0 -0
- snappy/__pycache__/db_utilities.cpython-310.pyc +0 -0
- snappy/__pycache__/decorated_isosig.cpython-310.pyc +0 -0
- snappy/__pycache__/exceptions.cpython-310.pyc +0 -0
- snappy/__pycache__/export_stl.cpython-310.pyc +0 -0
- snappy/__pycache__/filedialog.cpython-310.pyc +0 -0
- snappy/__pycache__/gui.cpython-310.pyc +0 -0
- snappy/__pycache__/horoviewer.cpython-310.pyc +0 -0
- snappy/__pycache__/infowindow.cpython-310.pyc +0 -0
- snappy/__pycache__/math_basics.cpython-310.pyc +0 -0
- snappy/__pycache__/matrix.cpython-310.pyc +0 -0
- snappy/__pycache__/number.cpython-310.pyc +0 -0
- snappy/__pycache__/numeric_output_checker.cpython-310.pyc +0 -0
- snappy/__pycache__/pari.cpython-310.pyc +0 -0
- snappy/__pycache__/polyviewer.cpython-310.pyc +0 -0
- snappy/__pycache__/sage_helper.cpython-310.pyc +0 -0
- snappy/__pycache__/version.cpython-310.pyc +0 -0
- snappy/doc/_sources/verify_canon.rst.txt +0 -90
- snappy/doc/_static/js/html5shiv-printshiv.min.js +0 -4
- snappy/doc/_static/js/html5shiv.min.js +0 -4
- snappy/doc/verify_canon.html +0 -304
- snappy/drilling/__pycache__/__init__.cpython-310.pyc +0 -0
- snappy/drilling/__pycache__/constants.cpython-310.pyc +0 -0
- snappy/drilling/__pycache__/crush.cpython-310.pyc +0 -0
- snappy/drilling/__pycache__/cusps.cpython-310.pyc +0 -0
- snappy/drilling/__pycache__/debug.cpython-310.pyc +0 -0
- snappy/drilling/__pycache__/epsilons.cpython-310.pyc +0 -0
- snappy/drilling/__pycache__/exceptions.cpython-310.pyc +0 -0
- snappy/drilling/__pycache__/fixed_points.cpython-310.pyc +0 -0
- snappy/drilling/__pycache__/geodesic_info.cpython-310.pyc +0 -0
- snappy/drilling/__pycache__/geodesic_tube.cpython-310.pyc +0 -0
- snappy/drilling/__pycache__/geometric_structure.cpython-310.pyc +0 -0
- snappy/drilling/__pycache__/line.cpython-310.pyc +0 -0
- snappy/drilling/__pycache__/moves.cpython-310.pyc +0 -0
- snappy/drilling/__pycache__/peripheral_curves.cpython-310.pyc +0 -0
- snappy/drilling/__pycache__/perturb.cpython-310.pyc +0 -0
- snappy/drilling/__pycache__/quotient_space.cpython-310.pyc +0 -0
- snappy/drilling/__pycache__/spatial_dict.cpython-310.pyc +0 -0
- snappy/drilling/__pycache__/subdivide.cpython-310.pyc +0 -0
- snappy/drilling/__pycache__/tracing.cpython-310.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-310.pyc +0 -0
- snappy/exterior_to_link/__pycache__/barycentric_geometry.cpython-310.pyc +0 -0
- snappy/exterior_to_link/__pycache__/exceptions.cpython-310.pyc +0 -0
- snappy/exterior_to_link/__pycache__/hyp_utils.cpython-310.pyc +0 -0
- snappy/exterior_to_link/__pycache__/link_projection.cpython-310.pyc +0 -0
- snappy/exterior_to_link/__pycache__/main.cpython-310.pyc +0 -0
- snappy/exterior_to_link/__pycache__/mcomplex_with_expansion.cpython-310.pyc +0 -0
- snappy/exterior_to_link/__pycache__/mcomplex_with_link.cpython-310.pyc +0 -0
- snappy/exterior_to_link/__pycache__/mcomplex_with_memory.cpython-310.pyc +0 -0
- snappy/exterior_to_link/__pycache__/pl_utils.cpython-310.pyc +0 -0
- snappy/exterior_to_link/__pycache__/put_in_S3.cpython-310.pyc +0 -0
- snappy/exterior_to_link/__pycache__/rational_linear_algebra.cpython-310.pyc +0 -0
- snappy/exterior_to_link/__pycache__/simplify_to_base_tri.cpython-310.pyc +0 -0
- snappy/exterior_to_link/__pycache__/stored_moves.cpython-310.pyc +0 -0
- snappy/hyperboloid/__pycache__/__init__.cpython-310.pyc +0 -0
- snappy/manifolds/__pycache__/__init__.cpython-310.pyc +0 -0
- snappy/ptolemy/__pycache__/__init__.cpython-310.pyc +0 -0
- snappy/ptolemy/__pycache__/component.cpython-310.pyc +0 -0
- snappy/ptolemy/__pycache__/coordinates.cpython-310.pyc +0 -0
- snappy/ptolemy/__pycache__/fieldExtensions.cpython-310.pyc +0 -0
- snappy/ptolemy/__pycache__/findLoops.cpython-310.pyc +0 -0
- snappy/ptolemy/__pycache__/homology.cpython-310.pyc +0 -0
- snappy/ptolemy/__pycache__/manifoldMethods.cpython-310.pyc +0 -0
- snappy/ptolemy/__pycache__/matrix.cpython-310.pyc +0 -0
- snappy/ptolemy/__pycache__/numericalSolutionsToGroebnerBasis.cpython-310.pyc +0 -0
- snappy/ptolemy/__pycache__/polynomial.cpython-310.pyc +0 -0
- snappy/ptolemy/__pycache__/processComponents.cpython-310.pyc +0 -0
- snappy/ptolemy/__pycache__/processFileBase.cpython-310.pyc +0 -0
- snappy/ptolemy/__pycache__/processFileDispatch.cpython-310.pyc +0 -0
- snappy/ptolemy/__pycache__/processMagmaFile.cpython-310.pyc +0 -0
- snappy/ptolemy/__pycache__/processRurFile.cpython-310.pyc +0 -0
- snappy/ptolemy/__pycache__/ptolemyGeneralizedObstructionClass.cpython-310.pyc +0 -0
- snappy/ptolemy/__pycache__/ptolemyObstructionClass.cpython-310.pyc +0 -0
- snappy/ptolemy/__pycache__/ptolemyVariety.cpython-310.pyc +0 -0
- snappy/ptolemy/__pycache__/ptolemyVarietyPrimeIdealGroebnerBasis.cpython-310.pyc +0 -0
- snappy/ptolemy/__pycache__/rur.cpython-310.pyc +0 -0
- snappy/ptolemy/__pycache__/solutionsToPrimeIdealGroebnerBasis.cpython-310.pyc +0 -0
- snappy/ptolemy/__pycache__/utilities.cpython-310.pyc +0 -0
- snappy/raytracing/__pycache__/__init__.cpython-310.pyc +0 -0
- snappy/raytracing/__pycache__/finite_raytracing_data.cpython-310.pyc +0 -0
- snappy/raytracing/__pycache__/gui_utilities.cpython-310.pyc +0 -0
- snappy/raytracing/__pycache__/hyperboloid_navigation.cpython-310.pyc +0 -0
- snappy/raytracing/__pycache__/hyperboloid_utilities.cpython-310.pyc +0 -0
- snappy/raytracing/__pycache__/ideal_raytracing_data.cpython-310.pyc +0 -0
- snappy/raytracing/__pycache__/inside_viewer.cpython-310.pyc +0 -0
- snappy/raytracing/__pycache__/raytracing_data.cpython-310.pyc +0 -0
- snappy/raytracing/__pycache__/raytracing_view.cpython-310.pyc +0 -0
- snappy/raytracing/__pycache__/upper_halfspace_utilities.cpython-310.pyc +0 -0
- snappy/raytracing/__pycache__/view_scale_controller.cpython-310.pyc +0 -0
- snappy/raytracing/zoom_slider/__pycache__/__init__.cpython-310.pyc +0 -0
- snappy/snap/__pycache__/__init__.cpython-310.pyc +0 -0
- snappy/snap/__pycache__/character_varieties.cpython-310.pyc +0 -0
- snappy/snap/__pycache__/fundamental_polyhedron.cpython-310.pyc +0 -0
- snappy/snap/__pycache__/interval_reps.cpython-310.pyc +0 -0
- snappy/snap/__pycache__/kernel_structures.cpython-310.pyc +0 -0
- snappy/snap/__pycache__/mcomplex_base.cpython-310.pyc +0 -0
- snappy/snap/__pycache__/nsagetools.cpython-310.pyc +0 -0
- snappy/snap/__pycache__/polished_reps.cpython-310.pyc +0 -0
- snappy/snap/__pycache__/shapes.cpython-310.pyc +0 -0
- snappy/snap/__pycache__/slice_obs_HKL.cpython-310.pyc +0 -0
- snappy/snap/__pycache__/utilities.cpython-310.pyc +0 -0
- snappy/snap/peripheral/__pycache__/__init__.cpython-310.pyc +0 -0
- snappy/snap/peripheral/__pycache__/dual_cellulation.cpython-310.pyc +0 -0
- snappy/snap/peripheral/__pycache__/link.cpython-310.pyc +0 -0
- snappy/snap/peripheral/__pycache__/peripheral.cpython-310.pyc +0 -0
- snappy/snap/peripheral/__pycache__/surface.cpython-310.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/__init__.cpython-310.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/arrow.cpython-310.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/corner.cpython-310.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/edge.cpython-310.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/face.cpython-310.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/files.cpython-310.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/homology.cpython-310.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/linalg.cpython-310.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/mcomplex.cpython-310.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/perm4.cpython-310.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/simplex.cpython-310.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/spun.cpython-310.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/surface.cpython-310.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/tetrahedron.cpython-310.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/vertex.cpython-310.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-310.pyc +0 -0
- snappy/twister/__pycache__/main.cpython-310.pyc +0 -0
- snappy/upper_halfspace/__pycache__/__init__.cpython-310.pyc +0 -0
- snappy/upper_halfspace/__pycache__/ideal_point.cpython-310.pyc +0 -0
- snappy/verify/__pycache__/__init__.cpython-310.pyc +0 -0
- snappy/verify/__pycache__/cuspCrossSection.cpython-310.pyc +0 -0
- snappy/verify/__pycache__/cuspTranslations.cpython-310.pyc +0 -0
- snappy/verify/__pycache__/cusp_areas.cpython-310.pyc +0 -0
- snappy/verify/__pycache__/cusp_shapes.cpython-310.pyc +0 -0
- snappy/verify/__pycache__/exceptions.cpython-310.pyc +0 -0
- snappy/verify/__pycache__/interval_newton_shapes_engine.cpython-310.pyc +0 -0
- snappy/verify/__pycache__/interval_tree.cpython-310.pyc +0 -0
- snappy/verify/__pycache__/krawczyk_shapes_engine.cpython-310.pyc +0 -0
- snappy/verify/__pycache__/realAlgebra.cpython-310.pyc +0 -0
- snappy/verify/__pycache__/shapes.cpython-310.pyc +0 -0
- snappy/verify/__pycache__/short_slopes.cpython-310.pyc +0 -0
- snappy/verify/__pycache__/squareExtensions.cpython-310.pyc +0 -0
- snappy/verify/__pycache__/verifyCanonical.cpython-310.pyc +0 -0
- snappy/verify/__pycache__/verifyHyperbolicity.cpython-310.pyc +0 -0
- snappy/verify/__pycache__/volume.cpython-310.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/__init__.cpython-310.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/adjust_torsion.cpython-310.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/closed.cpython-310.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/compute_ptolemys.cpython-310.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/cusped.cpython-310.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/extended_bloch.cpython-310.pyc +0 -0
- snappy/verify/cuspCrossSection.py +0 -1422
- snappy/verify/maximal_cusp_area_matrix/__pycache__/__init__.cpython-310.pyc +0 -0
- snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_tiling_engine.cpython-310.pyc +0 -0
- snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_translate_engine.cpython-310.pyc +0 -0
- snappy/verify/upper_halfspace/__pycache__/__init__.cpython-310.pyc +0 -0
- snappy/verify/upper_halfspace/__pycache__/extended_matrix.cpython-310.pyc +0 -0
- snappy/verify/upper_halfspace/__pycache__/finite_point.cpython-310.pyc +0 -0
- snappy/verify/upper_halfspace/__pycache__/ideal_point.cpython-310.pyc +0 -0
- snappy-3.1.1.dist-info/RECORD +0 -585
- {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/entry_points.txt +0 -0
@@ -1,90 +0,0 @@
|
|
1
|
-
Canonical retriangulation and isometry signature
|
2
|
-
--------------------------------------------------------
|
3
|
-
|
4
|
-
The canonical retriangulation is a close relative to the canonical cell
|
5
|
-
decomposition defined by `Epstein and Penner
|
6
|
-
<https://projecteuclid.org/euclid.jdg/1214441650>`_.
|
7
|
-
Like the canonical cell decomposition, it is intrinsic to
|
8
|
-
a hyperbolic manifold M and is (up to combinatorial isomorphism
|
9
|
-
relabeling the tetrahedra and vertices) completely determined by the
|
10
|
-
isometry type of a hyperbolic manifold. Unlike the canonical cell decomposition,
|
11
|
-
the canonical retriangulation always consists entirely of tetrahedra which makes
|
12
|
-
it more amenable for many computations by SnapPy.
|
13
|
-
|
14
|
-
If the canonical cell decomposition of manifold M has only tetrahedral cells,
|
15
|
-
we define the canonical retriangulation to be the canonical cell decomposition.
|
16
|
-
In this case, the canonical retriangulation consists of ideal hyperbolic
|
17
|
-
tetrahedra and the ``canonical_retriangulation`` method returns a
|
18
|
-
SnapPy manifold. Example::
|
19
|
-
|
20
|
-
sage: M = Manifold("m015")
|
21
|
-
sage: K = M.canonical_retriangulation(verified = True)
|
22
|
-
sage: K.has_finite_vertices() # False iff all canonical cells tetrahedral
|
23
|
-
False
|
24
|
-
|
25
|
-
If the canonical cell decomposition has non-tetrahedral cells, we turn it into
|
26
|
-
a topological triangulation as follows: pick a point (called center) in each
|
27
|
-
3-cell. "Suspend" each 2-cell (which is an ideal n-gon) between
|
28
|
-
the centers of the two neighboring 3-cells. These suspensions form a
|
29
|
-
decomposition of M into topological "diamonds". Each diamond can be split along
|
30
|
-
its central axis into n tetrahedra. This introduces finite vertices, thus
|
31
|
-
the ``verified_canonical_retriangulation`` method returns only a SnapPy
|
32
|
-
triangulation. Example (canonical cell is a cube)::
|
33
|
-
|
34
|
-
sage: M = Manifold("m412")
|
35
|
-
sage: K = M.canonical_retriangulation(verified = True)
|
36
|
-
sage: K.has_finite_vertices()
|
37
|
-
True
|
38
|
-
|
39
|
-
The canonical retriangulation can be used to certifiably find all isometries
|
40
|
-
of a manifold::
|
41
|
-
|
42
|
-
sage: K.isomorphisms_to(K)
|
43
|
-
[0 -> 1 1 -> 0
|
44
|
-
[1 0] [1 0]
|
45
|
-
[0 1] [0 1]
|
46
|
-
Extends to link,
|
47
|
-
...
|
48
|
-
Extends to link]
|
49
|
-
sage: len(K.isomorphisms_to(K))
|
50
|
-
8
|
51
|
-
|
52
|
-
Recall that the *isomorphism
|
53
|
-
signature* is a complete invariant of the combinatorial
|
54
|
-
isomorphism type of a triangulation that was defined by `Burton
|
55
|
-
<http://arxiv.org/abs/1110.6080>`_. We can compute the isomorphism signature
|
56
|
-
of the canonical retriangulation::
|
57
|
-
|
58
|
-
sage: Manifold("m003").canonical_retriangulation(verified = True).triangulation_isosig()
|
59
|
-
'cPcbbbdxm'
|
60
|
-
|
61
|
-
The resulting invariant was called *isometry signature* by
|
62
|
-
`Goerner <http://arxiv.org/abs/1502.00383>`_ and, for convenience, can be
|
63
|
-
accessed by::
|
64
|
-
|
65
|
-
sage: Manifold("m003").isometry_signature(verified = True)
|
66
|
-
'cPcbbbdxm'
|
67
|
-
|
68
|
-
It is a complete invariant of the isometry type of a hyperbolic manifold.
|
69
|
-
Thus it can be used to easily identify isometric manifolds
|
70
|
-
(here, the last two manifolds have the same isometry signature and thus
|
71
|
-
have to be isomorphic)::
|
72
|
-
|
73
|
-
sage: Manifold("m003").isometry_signature(verified = True)
|
74
|
-
'cPcbbbdxm'
|
75
|
-
sage: Manifold("m004").isometry_signature(verified = True)
|
76
|
-
'cPcbbbiht'
|
77
|
-
sage: Manifold("4_1").isometry_signature(verified = True)
|
78
|
-
'cPcbbbiht'
|
79
|
-
sage: Manifold("m004").isometry_signature(verified = True) == Manifold("4_1").isometry_signature(verified = True)
|
80
|
-
True
|
81
|
-
|
82
|
-
|
83
|
-
Other applications of the canonical retriangulation include the detection of
|
84
|
-
2-bridge knots.
|
85
|
-
|
86
|
-
=======================================
|
87
|
-
Verifying the canonical retriangulation
|
88
|
-
=======================================
|
89
|
-
|
90
|
-
.. autofunction:: snappy.verify.verified_canonical_retriangulation
|
@@ -1,4 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* @preserve HTML5 Shiv 3.7.3-pre | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
|
3
|
-
*/
|
4
|
-
!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=y.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=y.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),y.elements=c+" "+a,j(b)}function f(a){var b=x[a[v]];return b||(b={},w++,a[v]=w,x[w]=b),b}function g(a,c,d){if(c||(c=b),q)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():u.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||t.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),q)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return y.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(y,b.frag)}function j(a){a||(a=b);var d=f(a);return!y.shivCSS||p||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),q||i(a,d),a}function k(a){for(var b,c=a.getElementsByTagName("*"),e=c.length,f=RegExp("^(?:"+d().join("|")+")$","i"),g=[];e--;)b=c[e],f.test(b.nodeName)&&g.push(b.applyElement(l(b)));return g}function l(a){for(var b,c=a.attributes,d=c.length,e=a.ownerDocument.createElement(A+":"+a.nodeName);d--;)b=c[d],b.specified&&e.setAttribute(b.nodeName,b.nodeValue);return e.style.cssText=a.style.cssText,e}function m(a){for(var b,c=a.split("{"),e=c.length,f=RegExp("(^|[\\s,>+~])("+d().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),g="$1"+A+"\\:$2";e--;)b=c[e]=c[e].split("}"),b[b.length-1]=b[b.length-1].replace(f,g),c[e]=b.join("}");return c.join("{")}function n(a){for(var b=a.length;b--;)a[b].removeNode()}function o(a){function b(){clearTimeout(g._removeSheetTimer),d&&d.removeNode(!0),d=null}var d,e,g=f(a),h=a.namespaces,i=a.parentWindow;return!B||a.printShived?a:("undefined"==typeof h[A]&&h.add(A),i.attachEvent("onbeforeprint",function(){b();for(var f,g,h,i=a.styleSheets,j=[],l=i.length,n=Array(l);l--;)n[l]=i[l];for(;h=n.pop();)if(!h.disabled&&z.test(h.media)){try{f=h.imports,g=f.length}catch(o){g=0}for(l=0;g>l;l++)n.push(f[l]);try{j.push(h.cssText)}catch(o){}}j=m(j.reverse().join("")),e=k(a),d=c(a,j)}),i.attachEvent("onafterprint",function(){n(e),clearTimeout(g._removeSheetTimer),g._removeSheetTimer=setTimeout(b,500)}),a.printShived=!0,a)}var p,q,r="3.7.3",s=a.html5||{},t=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,u=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,v="_html5shiv",w=0,x={};!function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",p="hidden"in a,q=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){p=!0,q=!0}}();var y={elements:s.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:r,shivCSS:s.shivCSS!==!1,supportsUnknownElements:q,shivMethods:s.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=y,j(b);var z=/^$|\b(?:all|print)\b/,A="html5shiv",B=!q&&function(){var c=b.documentElement;return!("undefined"==typeof b.namespaces||"undefined"==typeof b.parentWindow||"undefined"==typeof c.applyElement||"undefined"==typeof c.removeNode||"undefined"==typeof a.attachEvent)}();y.type+=" print",y.shivPrint=o,o(b),"object"==typeof module&&module.exports&&(module.exports=y)}("undefined"!=typeof window?window:this,document);
|
@@ -1,4 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
|
3
|
-
*/
|
4
|
-
!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3-pre",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document);
|
snappy/doc/verify_canon.html
DELETED
@@ -1,304 +0,0 @@
|
|
1
|
-
<!DOCTYPE html>
|
2
|
-
<html class="writer-html5" lang="en" >
|
3
|
-
<head>
|
4
|
-
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
|
5
|
-
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
7
|
-
<title>Canonical retriangulation and isometry signature — SnapPy 3.1.1 documentation</title>
|
8
|
-
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
9
|
-
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
|
10
|
-
<link rel="stylesheet" href="_static/snappy_sphinx_rtd_theme.css" type="text/css" />
|
11
|
-
<link rel="shortcut icon" href="_static/SnapPy.ico"/>
|
12
|
-
<!--[if lt IE 9]>
|
13
|
-
<script src="_static/js/html5shiv.min.js"></script>
|
14
|
-
<![endif]-->
|
15
|
-
|
16
|
-
<script src="_static/jquery.js"></script>
|
17
|
-
<script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
|
18
|
-
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
|
19
|
-
<script src="_static/doctools.js"></script>
|
20
|
-
<script src="_static/sphinx_highlight.js"></script>
|
21
|
-
<script src="_static/js/theme.js"></script>
|
22
|
-
<link rel="index" title="Index" href="genindex.html" />
|
23
|
-
<link rel="search" title="Search" href="search.html" />
|
24
|
-
<link rel="next" title="Internals of verified computations" href="verify_internals.html" />
|
25
|
-
<link rel="prev" title="Verified computations" href="verify.html" />
|
26
|
-
</head>
|
27
|
-
|
28
|
-
<body class="wy-body-for-nav">
|
29
|
-
<div class="wy-grid-for-nav">
|
30
|
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
31
|
-
<div class="wy-side-scroll">
|
32
|
-
<div class="wy-side-nav-search" >
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
<a href="index.html" class="icon icon-home">
|
37
|
-
SnapPy
|
38
|
-
<img src="_static/SnapPy-horizontal-128.png" class="logo" alt="Logo"/>
|
39
|
-
</a>
|
40
|
-
<div class="version">
|
41
|
-
3.1.1
|
42
|
-
</div>
|
43
|
-
<div role="search">
|
44
|
-
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
45
|
-
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
46
|
-
<input type="hidden" name="check_keywords" value="yes" />
|
47
|
-
<input type="hidden" name="area" value="default" />
|
48
|
-
</form>
|
49
|
-
</div>
|
50
|
-
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
51
|
-
<ul class="current">
|
52
|
-
<li class="toctree-l1"><a class="reference internal" href="installing.html">Installing SnapPy</a></li>
|
53
|
-
<li class="toctree-l1"><a class="reference internal" href="screenshots.html">Screenshots: SnapPy in action</a></li>
|
54
|
-
<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorial</a></li>
|
55
|
-
<li class="toctree-l1"><a class="reference internal" href="snappy.html">The snappy module and its classes</a></li>
|
56
|
-
<li class="toctree-l1"><a class="reference internal" href="plink.html">Using SnapPy’s link editor</a></li>
|
57
|
-
<li class="toctree-l1"><a class="reference internal" href="spherogram.html">Links: planar diagrams and invariants</a></li>
|
58
|
-
<li class="toctree-l1"><a class="reference internal" href="snap.html">Number theory of hyperbolic 3-manifolds</a></li>
|
59
|
-
<li class="toctree-l1 current"><a class="reference internal" href="verify.html">Verified computations</a><ul class="current">
|
60
|
-
<li class="toctree-l2"><a class="reference internal" href="verify.html#overview">Overview</a></li>
|
61
|
-
<li class="toctree-l2 current"><a class="reference internal" href="verify.html#verified-computation-topics">Verified computation topics</a><ul class="current">
|
62
|
-
<li class="toctree-l3 current"><a class="current reference internal" href="#">Canonical retriangulation and isometry signature</a><ul>
|
63
|
-
<li class="toctree-l4"><a class="reference internal" href="#verifying-the-canonical-retriangulation">Verifying the canonical retriangulation</a><ul>
|
64
|
-
<li class="toctree-l5"><a class="reference internal" href="#snappy.verify.verified_canonical_retriangulation"><code class="docutils literal notranslate"><span class="pre">verified_canonical_retriangulation()</span></code></a></li>
|
65
|
-
</ul>
|
66
|
-
</li>
|
67
|
-
</ul>
|
68
|
-
</li>
|
69
|
-
<li class="toctree-l3"><a class="reference internal" href="verify_internals.html">Internals of verified computations</a></li>
|
70
|
-
</ul>
|
71
|
-
</li>
|
72
|
-
</ul>
|
73
|
-
</li>
|
74
|
-
<li class="toctree-l1"><a class="reference internal" href="other.html">Other components</a></li>
|
75
|
-
<li class="toctree-l1"><a class="reference internal" href="news.html">News</a></li>
|
76
|
-
<li class="toctree-l1"><a class="reference internal" href="credits.html">Credits</a></li>
|
77
|
-
<li class="toctree-l1"><a class="reference internal" href="bugs.html">Reporting bugs and other problems</a></li>
|
78
|
-
<li class="toctree-l1"><a class="reference internal" href="todo.html">To Do List</a></li>
|
79
|
-
<li class="toctree-l1"><a class="reference internal" href="development.html">Development Basics</a></li>
|
80
|
-
</ul>
|
81
|
-
|
82
|
-
</div>
|
83
|
-
</div>
|
84
|
-
</nav>
|
85
|
-
|
86
|
-
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
87
|
-
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
88
|
-
<a href="index.html">SnapPy</a>
|
89
|
-
</nav>
|
90
|
-
|
91
|
-
<div class="wy-nav-content">
|
92
|
-
<div class="rst-content">
|
93
|
-
<div role="navigation" aria-label="Page navigation">
|
94
|
-
<ul class="wy-breadcrumbs">
|
95
|
-
<li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
|
96
|
-
<li class="breadcrumb-item"><a href="verify.html">Verified computations</a></li>
|
97
|
-
<li class="breadcrumb-item active">Canonical retriangulation and isometry signature</li>
|
98
|
-
<li class="wy-breadcrumbs-aside">
|
99
|
-
</li>
|
100
|
-
</ul>
|
101
|
-
<hr/>
|
102
|
-
</div>
|
103
|
-
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
104
|
-
<div itemprop="articleBody">
|
105
|
-
|
106
|
-
<section id="canonical-retriangulation-and-isometry-signature">
|
107
|
-
<h1>Canonical retriangulation and isometry signature<a class="headerlink" href="#canonical-retriangulation-and-isometry-signature" title="Permalink to this heading"></a></h1>
|
108
|
-
<p>The canonical retriangulation is a close relative to the canonical cell
|
109
|
-
decomposition defined by <a class="reference external" href="https://projecteuclid.org/euclid.jdg/1214441650">Epstein and Penner</a>.
|
110
|
-
Like the canonical cell decomposition, it is intrinsic to
|
111
|
-
a hyperbolic manifold M and is (up to combinatorial isomorphism
|
112
|
-
relabeling the tetrahedra and vertices) completely determined by the
|
113
|
-
isometry type of a hyperbolic manifold. Unlike the canonical cell decomposition,
|
114
|
-
the canonical retriangulation always consists entirely of tetrahedra which makes
|
115
|
-
it more amenable for many computations by SnapPy.</p>
|
116
|
-
<p>If the canonical cell decomposition of manifold M has only tetrahedral cells,
|
117
|
-
we define the canonical retriangulation to be the canonical cell decomposition.
|
118
|
-
In this case, the canonical retriangulation consists of ideal hyperbolic
|
119
|
-
tetrahedra and the <code class="docutils literal notranslate"><span class="pre">canonical_retriangulation</span></code> method returns a
|
120
|
-
SnapPy manifold. Example:</p>
|
121
|
-
<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="s2">"m015"</span><span class="p">)</span>
|
122
|
-
<span class="n">sage</span><span class="p">:</span> <span class="n">K</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">canonical_retriangulation</span><span class="p">(</span><span class="n">verified</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span>
|
123
|
-
<span class="n">sage</span><span class="p">:</span> <span class="n">K</span><span class="o">.</span><span class="n">has_finite_vertices</span><span class="p">()</span> <span class="c1"># False iff all canonical cells tetrahedral</span>
|
124
|
-
<span class="kc">False</span>
|
125
|
-
</pre></div>
|
126
|
-
</div>
|
127
|
-
<p>If the canonical cell decomposition has non-tetrahedral cells, we turn it into
|
128
|
-
a topological triangulation as follows: pick a point (called center) in each
|
129
|
-
3-cell. “Suspend” each 2-cell (which is an ideal n-gon) between
|
130
|
-
the centers of the two neighboring 3-cells. These suspensions form a
|
131
|
-
decomposition of M into topological “diamonds”. Each diamond can be split along
|
132
|
-
its central axis into n tetrahedra. This introduces finite vertices, thus
|
133
|
-
the <code class="docutils literal notranslate"><span class="pre">verified_canonical_retriangulation</span></code> method returns only a SnapPy
|
134
|
-
triangulation. Example (canonical cell is a cube):</p>
|
135
|
-
<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="s2">"m412"</span><span class="p">)</span>
|
136
|
-
<span class="n">sage</span><span class="p">:</span> <span class="n">K</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">canonical_retriangulation</span><span class="p">(</span><span class="n">verified</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span>
|
137
|
-
<span class="n">sage</span><span class="p">:</span> <span class="n">K</span><span class="o">.</span><span class="n">has_finite_vertices</span><span class="p">()</span>
|
138
|
-
<span class="kc">True</span>
|
139
|
-
</pre></div>
|
140
|
-
</div>
|
141
|
-
<p>The canonical retriangulation can be used to certifiably find all isometries
|
142
|
-
of a manifold:</p>
|
143
|
-
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="n">K</span><span class="o">.</span><span class="n">isomorphisms_to</span><span class="p">(</span><span class="n">K</span><span class="p">)</span>
|
144
|
-
<span class="p">[</span><span class="mi">0</span> <span class="o">-></span> <span class="mi">1</span> <span class="mi">1</span> <span class="o">-></span> <span class="mi">0</span>
|
145
|
-
<span class="p">[</span><span class="mi">1</span> <span class="mi">0</span><span class="p">]</span> <span class="p">[</span><span class="mi">1</span> <span class="mi">0</span><span class="p">]</span>
|
146
|
-
<span class="p">[</span><span class="mi">0</span> <span class="mi">1</span><span class="p">]</span> <span class="p">[</span><span class="mi">0</span> <span class="mi">1</span><span class="p">]</span>
|
147
|
-
<span class="n">Extends</span> <span class="n">to</span> <span class="n">link</span><span class="p">,</span>
|
148
|
-
<span class="o">...</span>
|
149
|
-
<span class="n">Extends</span> <span class="n">to</span> <span class="n">link</span><span class="p">]</span>
|
150
|
-
<span class="n">sage</span><span class="p">:</span> <span class="nb">len</span><span class="p">(</span><span class="n">K</span><span class="o">.</span><span class="n">isomorphisms_to</span><span class="p">(</span><span class="n">K</span><span class="p">))</span>
|
151
|
-
<span class="mi">8</span>
|
152
|
-
</pre></div>
|
153
|
-
</div>
|
154
|
-
<p>Recall that the <em>isomorphism
|
155
|
-
signature</em> is a complete invariant of the combinatorial
|
156
|
-
isomorphism type of a triangulation that was defined by <a class="reference external" href="http://arxiv.org/abs/1110.6080">Burton</a>. We can compute the isomorphism signature
|
157
|
-
of the canonical retriangulation:</p>
|
158
|
-
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">"m003"</span><span class="p">)</span><span class="o">.</span><span class="n">canonical_retriangulation</span><span class="p">(</span><span class="n">verified</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">()</span>
|
159
|
-
<span class="s1">'cPcbbbdxm'</span>
|
160
|
-
</pre></div>
|
161
|
-
</div>
|
162
|
-
<p>The resulting invariant was called <em>isometry signature</em> by
|
163
|
-
<a class="reference external" href="http://arxiv.org/abs/1502.00383">Goerner</a> and, for convenience, can be
|
164
|
-
accessed by:</p>
|
165
|
-
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">"m003"</span><span class="p">)</span><span class="o">.</span><span class="n">isometry_signature</span><span class="p">(</span><span class="n">verified</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span>
|
166
|
-
<span class="s1">'cPcbbbdxm'</span>
|
167
|
-
</pre></div>
|
168
|
-
</div>
|
169
|
-
<p>It is a complete invariant of the isometry type of a hyperbolic manifold.
|
170
|
-
Thus it can be used to easily identify isometric manifolds
|
171
|
-
(here, the last two manifolds have the same isometry signature and thus
|
172
|
-
have to be isomorphic):</p>
|
173
|
-
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">"m003"</span><span class="p">)</span><span class="o">.</span><span class="n">isometry_signature</span><span class="p">(</span><span class="n">verified</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span>
|
174
|
-
<span class="s1">'cPcbbbdxm'</span>
|
175
|
-
<span class="n">sage</span><span class="p">:</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">"m004"</span><span class="p">)</span><span class="o">.</span><span class="n">isometry_signature</span><span class="p">(</span><span class="n">verified</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span>
|
176
|
-
<span class="s1">'cPcbbbiht'</span>
|
177
|
-
<span class="n">sage</span><span class="p">:</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">"4_1"</span><span class="p">)</span><span class="o">.</span><span class="n">isometry_signature</span><span class="p">(</span><span class="n">verified</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span>
|
178
|
-
<span class="s1">'cPcbbbiht'</span>
|
179
|
-
<span class="n">sage</span><span class="p">:</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">"m004"</span><span class="p">)</span><span class="o">.</span><span class="n">isometry_signature</span><span class="p">(</span><span class="n">verified</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">==</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">"4_1"</span><span class="p">)</span><span class="o">.</span><span class="n">isometry_signature</span><span class="p">(</span><span class="n">verified</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span>
|
180
|
-
<span class="kc">True</span>
|
181
|
-
</pre></div>
|
182
|
-
</div>
|
183
|
-
<p>Other applications of the canonical retriangulation include the detection of
|
184
|
-
2-bridge knots.</p>
|
185
|
-
<section id="verifying-the-canonical-retriangulation">
|
186
|
-
<h2>Verifying the canonical retriangulation<a class="headerlink" href="#verifying-the-canonical-retriangulation" title="Permalink to this heading"></a></h2>
|
187
|
-
<dl class="py function">
|
188
|
-
<dt class="sig sig-object py" id="snappy.verify.verified_canonical_retriangulation">
|
189
|
-
<span class="sig-prename descclassname"><span class="pre">snappy.verify.</span></span><span class="sig-name descname"><span class="pre">verified_canonical_retriangulation</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">M</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">interval_bits_precs</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">[53,</span> <span class="pre">212]</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">exact_bits_prec_and_degrees</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">[(212,</span> <span class="pre">10),</span> <span class="pre">(1000,</span> <span class="pre">20),</span> <span class="pre">(2000,</span> <span class="pre">20)]</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><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.verified_canonical_retriangulation" title="Permalink to this definition"></a></dt>
|
190
|
-
<dd><p>Given some triangulation of a cusped (possibly non-orientable) manifold <code class="docutils literal notranslate"><span class="pre">M</span></code>,
|
191
|
-
return its canonical retriangulation. Return <code class="docutils literal notranslate"><span class="pre">None</span></code> if it could not certify
|
192
|
-
the result.</p>
|
193
|
-
<p>To compute the canonical retriangulation, it first prepares the manifold
|
194
|
-
(filling all Dehn-filled cusps and trying to find a proto-canonical
|
195
|
-
triangulation).
|
196
|
-
It then tries to certify the canonical triangulation using interval
|
197
|
-
arithmetics. If this fails, it uses snap (using <a class="reference external" href="http://en.wikipedia.org/wiki/Lenstra%E2%80%93Lenstra%E2%80%93Lov%C3%A1sz_lattice_basis_reduction_algorithm">LLL-algorithm</a>)
|
198
|
-
to guess
|
199
|
-
exact representations of the shapes in the shape field and then certifies
|
200
|
-
that it found the proto-canonical triangulation and determines the
|
201
|
-
transparent faces to construct the canonical retriangulation.</p>
|
202
|
-
<p>The optional arguments are:</p>
|
203
|
-
<ul class="simple">
|
204
|
-
<li><p><code class="docutils literal notranslate"><span class="pre">interval_bits_precs</span></code>:
|
205
|
-
a list of precisions used to try to
|
206
|
-
certify the canonical triangulation using intervals. By default, it
|
207
|
-
first tries to certify using 53 bits precision. If it failed, it tries
|
208
|
-
212 bits precision next. If it failed again, it moves on to trying exact
|
209
|
-
arithmetics.</p></li>
|
210
|
-
<li><p><code class="docutils literal notranslate"><span class="pre">exact_bits_prec_and_degrees</span></code>:
|
211
|
-
a list of pairs (precision, maximal degree) used when the LLL-algorithm
|
212
|
-
is trying to find the defining polynomial of the shape field.
|
213
|
-
Similar to <code class="docutils literal notranslate"><span class="pre">interval_bits_precs</span></code>, each pair is tried until we succeed.</p></li>
|
214
|
-
<li><p><code class="docutils literal notranslate"><span class="pre">verbose</span></code>:
|
215
|
-
If <code class="docutils literal notranslate"><span class="pre">True</span></code>, print out additional information.</p></li>
|
216
|
-
</ul>
|
217
|
-
<p>The exact arithmetics can take a long time. To circumvent it, use
|
218
|
-
<code class="docutils literal notranslate"><span class="pre">exact_bits_prec_and_degrees</span> <span class="pre">=</span> <span class="pre">None</span></code>.</p>
|
219
|
-
<p>More information on the canonical retriangulation can be found in the
|
220
|
-
SnapPea kernel <code class="docutils literal notranslate"><span class="pre">canonize_part_2.c</span></code> and in Section 3.1 of
|
221
|
-
<a class="reference external" href="http://arxiv.org/abs/1502.00383">Fominykh, Garoufalidis, Goerner, Tarkaev, Vesnin</a>.</p>
|
222
|
-
<p>Canonical cell decomposition of <code class="docutils literal notranslate"><span class="pre">m004</span></code> has 2 tetrahedral cells:</p>
|
223
|
-
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="kn">from</span> <span class="nn">snappy</span> <span class="kn">import</span> <span class="n">Manifold</span>
|
224
|
-
<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="s2">"m004"</span><span class="p">)</span>
|
225
|
-
<span class="n">sage</span><span class="p">:</span> <span class="n">K</span> <span class="o">=</span> <span class="n">verified_canonical_retriangulation</span><span class="p">(</span><span class="n">M</span><span class="p">)</span>
|
226
|
-
<span class="n">sage</span><span class="p">:</span> <span class="n">K</span><span class="o">.</span><span class="n">has_finite_vertices</span><span class="p">()</span>
|
227
|
-
<span class="kc">False</span>
|
228
|
-
<span class="n">sage</span><span class="p">:</span> <span class="n">K</span><span class="o">.</span><span class="n">num_tetrahedra</span><span class="p">()</span>
|
229
|
-
<span class="mi">2</span>
|
230
|
-
</pre></div>
|
231
|
-
</div>
|
232
|
-
<p>Canonical cell decomposition of <code class="docutils literal notranslate"><span class="pre">m137</span></code> is not tetrahedral:</p>
|
233
|
-
<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="s2">"m137"</span><span class="p">)</span>
|
234
|
-
<span class="n">sage</span><span class="p">:</span> <span class="n">K</span> <span class="o">=</span> <span class="n">verified_canonical_retriangulation</span><span class="p">(</span><span class="n">M</span><span class="p">)</span>
|
235
|
-
<span class="n">sage</span><span class="p">:</span> <span class="n">K</span><span class="o">.</span><span class="n">has_finite_vertices</span><span class="p">()</span>
|
236
|
-
<span class="kc">True</span>
|
237
|
-
<span class="n">sage</span><span class="p">:</span> <span class="n">K</span><span class="o">.</span><span class="n">num_tetrahedra</span><span class="p">()</span>
|
238
|
-
<span class="mi">18</span>
|
239
|
-
</pre></div>
|
240
|
-
</div>
|
241
|
-
<p>Canonical cell decomposition of <code class="docutils literal notranslate"><span class="pre">m412</span></code> is a cube and has exactly 8
|
242
|
-
symmetries:</p>
|
243
|
-
<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="s2">"m412"</span><span class="p">)</span>
|
244
|
-
<span class="n">sage</span><span class="p">:</span> <span class="n">K</span> <span class="o">=</span> <span class="n">verified_canonical_retriangulation</span><span class="p">(</span><span class="n">M</span><span class="p">)</span>
|
245
|
-
<span class="n">sage</span><span class="p">:</span> <span class="n">K</span><span class="o">.</span><span class="n">has_finite_vertices</span><span class="p">()</span>
|
246
|
-
<span class="kc">True</span>
|
247
|
-
<span class="n">sage</span><span class="p">:</span> <span class="n">K</span><span class="o">.</span><span class="n">num_tetrahedra</span><span class="p">()</span>
|
248
|
-
<span class="mi">12</span>
|
249
|
-
<span class="n">sage</span><span class="p">:</span> <span class="nb">len</span><span class="p">(</span><span class="n">K</span><span class="o">.</span><span class="n">isomorphisms_to</span><span class="p">(</span><span class="n">K</span><span class="p">))</span>
|
250
|
-
<span class="mi">8</span>
|
251
|
-
</pre></div>
|
252
|
-
</div>
|
253
|
-
<p><a class="reference external" href="http://arxiv.org/abs/1311.7615">Burton’s example</a> of <code class="docutils literal notranslate"><span class="pre">x101</span></code> and <code class="docutils literal notranslate"><span class="pre">x103</span></code> which are actually isometric but
|
254
|
-
SnapPea fails to show so. We certify the canonical retriangulation and
|
255
|
-
find them isomorphic:</p>
|
256
|
-
<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">'x101'</span><span class="p">);</span> <span class="n">K</span> <span class="o">=</span> <span class="n">verified_canonical_retriangulation</span><span class="p">(</span><span class="n">M</span><span class="p">)</span>
|
257
|
-
<span class="n">sage</span><span class="p">:</span> <span class="n">N</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'x103'</span><span class="p">);</span> <span class="n">L</span> <span class="o">=</span> <span class="n">verified_canonical_retriangulation</span><span class="p">(</span><span class="n">N</span><span class="p">)</span>
|
258
|
-
<span class="n">sage</span><span class="p">:</span> <span class="nb">len</span><span class="p">(</span><span class="n">K</span><span class="o">.</span><span class="n">isomorphisms_to</span><span class="p">(</span><span class="n">L</span><span class="p">))</span> <span class="o">></span> <span class="mi">0</span>
|
259
|
-
<span class="kc">True</span>
|
260
|
-
</pre></div>
|
261
|
-
</div>
|
262
|
-
<p>Avoid potentially expensive exact arithmetics (return <code class="docutils literal notranslate"><span class="pre">None</span></code> because it has
|
263
|
-
non-tetrahedral cells so interval arithmetics can’t certify it):</p>
|
264
|
-
<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="s2">"m412"</span><span class="p">)</span>
|
265
|
-
<span class="n">sage</span><span class="p">:</span> <span class="n">verified_canonical_retriangulation</span><span class="p">(</span><span class="n">M</span><span class="p">,</span> <span class="n">exact_bits_prec_and_degrees</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span>
|
266
|
-
</pre></div>
|
267
|
-
</div>
|
268
|
-
</dd></dl>
|
269
|
-
|
270
|
-
</section>
|
271
|
-
</section>
|
272
|
-
|
273
|
-
|
274
|
-
</div>
|
275
|
-
</div>
|
276
|
-
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
277
|
-
<a href="verify.html" class="btn btn-neutral float-left" title="Verified computations" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
278
|
-
<a href="verify_internals.html" class="btn btn-neutral float-right" title="Internals of verified computations" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
279
|
-
</div>
|
280
|
-
|
281
|
-
<hr/>
|
282
|
-
|
283
|
-
<div role="contentinfo">
|
284
|
-
<p>© Copyright 2009-2023, by Marc Culler, Nathan Dunfield, Matthias Goerner, Jeffrey Weeks and others.</p>
|
285
|
-
</div>
|
286
|
-
|
287
|
-
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
288
|
-
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
289
|
-
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
290
|
-
|
291
|
-
|
292
|
-
</footer>
|
293
|
-
</div>
|
294
|
-
</div>
|
295
|
-
</section>
|
296
|
-
</div>
|
297
|
-
<script>
|
298
|
-
jQuery(function () {
|
299
|
-
SphinxRtdTheme.Navigation.enable(true);
|
300
|
-
});
|
301
|
-
</script>
|
302
|
-
|
303
|
-
</body>
|
304
|
-
</html>
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|