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/snap/slice_obs_HKL.py
CHANGED
@@ -45,10 +45,8 @@ correct.
|
|
45
45
|
|
46
46
|
from ..sage_helper import _within_sage, sage_method
|
47
47
|
if _within_sage:
|
48
|
-
from
|
49
|
-
|
50
|
-
identity_matrix, block_matrix, diagonal_matrix,
|
51
|
-
MatrixSpace, ChainComplex, prime_range)
|
48
|
+
from ..sage_helper import ZZ, PolynomialRing, vector, matrix, identity_matrix, MatrixSpace, block_matrix, prime_range, is_prime
|
49
|
+
from ..sage_helper import LaurentPolynomialRing, GF, CyclotomicField, ChainComplex
|
52
50
|
|
53
51
|
from .nsagetools import (MapToFreeAbelianization, compute_torsion,
|
54
52
|
fox_derivative_with_involution,
|
@@ -81,10 +79,10 @@ class MatrixRepresentation():
|
|
81
79
|
if isinstance(matrices, dict):
|
82
80
|
images = matrices
|
83
81
|
all_gens = list(generators) + [g.swapcase() for g in generators]
|
84
|
-
assert set(matrices
|
82
|
+
assert set(matrices) == set(all_gens)
|
85
83
|
else:
|
86
84
|
assert len(generators) == len(matrices)
|
87
|
-
images =
|
85
|
+
images = {}
|
88
86
|
for g, m in zip(generators, matrices):
|
89
87
|
images[g] = m
|
90
88
|
images[g.swapcase()] = image_ring(m.inverse())
|
@@ -185,7 +183,6 @@ def poly_to_rep(f):
|
|
185
183
|
left action of x on F[x]/(f).
|
186
184
|
"""
|
187
185
|
assert f.is_monic()
|
188
|
-
x = f.parent().gen()
|
189
186
|
d = f.degree()
|
190
187
|
last_column = [-f[e] for e in range(d)]
|
191
188
|
I = identity_matrix(d)
|
@@ -348,7 +345,7 @@ def induced_rep_from_twisted_cocycle(p, rho, chi, cocycle):
|
|
348
345
|
t = R.gen()
|
349
346
|
MatSp = MatrixSpace(R, p)
|
350
347
|
gens = rho.generators
|
351
|
-
images =
|
348
|
+
images = {}
|
352
349
|
for s, g in enumerate(gens):
|
353
350
|
v = vector(cocycle[s*n:(s+1)*n])
|
354
351
|
e = rho.epsilon(g)[0]
|
@@ -548,6 +545,8 @@ def slicing_is_obstructed(knot_exterior, p, q):
|
|
548
545
|
sage: slicing_is_obstructed(M, 3, 7)
|
549
546
|
True
|
550
547
|
"""
|
548
|
+
p, q = ZZ(p), ZZ(q)
|
549
|
+
assert is_prime(p) and is_prime(q) and q > 2
|
551
550
|
reps = list(reps_appearing(knot_exterior, p, q))
|
552
551
|
if len(reps) == 0:
|
553
552
|
return False
|
@@ -564,13 +563,14 @@ def slicing_is_obstructed(knot_exterior, p, q):
|
|
564
563
|
return True
|
565
564
|
|
566
565
|
|
567
|
-
def expand_prime_spec(spec):
|
566
|
+
def expand_prime_spec(spec, min_prime=2):
|
568
567
|
if spec in ZZ:
|
569
568
|
a, b = 0, spec
|
570
569
|
else:
|
571
570
|
if len(spec) != 2:
|
572
571
|
raise ValueError(f'Spec {spec} does not specify a range')
|
573
572
|
a, b = spec
|
573
|
+
a = max(a, min_prime)
|
574
574
|
return prime_range(a, b + 1)
|
575
575
|
|
576
576
|
|
@@ -596,7 +596,6 @@ def slice_obstruction_HKL(self, primes_spec,
|
|
596
596
|
sage: spec = [(10, [0, 20]), (20, [0, 10])]
|
597
597
|
sage: M.slice_obstruction_HKL(spec, verbose=True)
|
598
598
|
Looking at (2, 3) ...
|
599
|
-
Looking at (3, 2) ...
|
600
599
|
Looking at (3, 7) ...
|
601
600
|
(3, 7)
|
602
601
|
|
@@ -605,7 +604,6 @@ def slice_obstruction_HKL(self, primes_spec,
|
|
605
604
|
|
606
605
|
sage: spec = [([3, 10], 10)]
|
607
606
|
sage: M.slice_obstruction_HKL(spec, verbose=True)
|
608
|
-
Looking at (3, 2) ...
|
609
607
|
Looking at (3, 7) ...
|
610
608
|
(3, 7)
|
611
609
|
|
@@ -639,13 +637,17 @@ def slice_obstruction_HKL(self, primes_spec,
|
|
639
637
|
if len(primes_spec) == 2:
|
640
638
|
p, q = primes_spec
|
641
639
|
if p in ZZ and q in ZZ:
|
640
|
+
if q == 2:
|
641
|
+
raise ValueError('Must have q > 2 when looking at H_1(cover; F_q)')
|
642
|
+
if not (is_prime(p) and is_prime(q)):
|
643
|
+
raise ValueError('Both p and q must be prime')
|
642
644
|
if slicing_is_obstructed(M, p, q):
|
643
645
|
return (p, q)
|
644
646
|
else:
|
645
647
|
return None
|
646
648
|
|
647
649
|
# Main case
|
648
|
-
primes_spec = [(expand_prime_spec(a), expand_prime_spec(b))
|
650
|
+
primes_spec = [(expand_prime_spec(a), expand_prime_spec(b, min_prime=3))
|
649
651
|
for a, b in primes_spec]
|
650
652
|
for ps, qs in primes_spec:
|
651
653
|
for p in ps:
|
@@ -654,8 +656,8 @@ def slice_obstruction_HKL(self, primes_spec,
|
|
654
656
|
if d % q == 0:
|
655
657
|
if verbose:
|
656
658
|
print(' Looking at', (p, q), '...')
|
657
|
-
|
658
|
-
|
659
|
+
if slicing_is_obstructed(M, p, q):
|
660
|
+
return (p, q)
|
659
661
|
|
660
662
|
|
661
663
|
if __name__ == '__main__':
|
snappy/snap/t3mlite/arrow.py
CHANGED
@@ -37,7 +37,7 @@ from .perm4 import Perm4, inv
|
|
37
37
|
|
38
38
|
# For speed, we create a lookup table for all possible gluing permutations
|
39
39
|
|
40
|
-
_arrow_gluing_dict =
|
40
|
+
_arrow_gluing_dict = {}
|
41
41
|
for edge0, face0 in EdgeFacePairs:
|
42
42
|
for edge1, face1 in EdgeFacePairs:
|
43
43
|
perm = Perm4({FaceIndex[face0]:FaceIndex[flip_face[edge1, face1]],
|
@@ -48,7 +48,7 @@ for edge0, face0 in EdgeFacePairs:
|
|
48
48
|
|
49
49
|
# Another table to speed Arrow.opposite
|
50
50
|
|
51
|
-
_arrow_opposite_dict =
|
51
|
+
_arrow_opposite_dict = {}
|
52
52
|
for edge, face in EdgeFacePairs:
|
53
53
|
tail = comp(face)
|
54
54
|
head = face & comp(edge)
|
@@ -59,7 +59,7 @@ for edge, face in EdgeFacePairs:
|
|
59
59
|
|
60
60
|
# Another table to speed Arrow.next
|
61
61
|
|
62
|
-
_arrow_next_dict =
|
62
|
+
_arrow_next_dict = {}
|
63
63
|
for edge, face in EdgeFacePairs:
|
64
64
|
for perm in Perm4.S4():
|
65
65
|
new_edge = perm.image(edge)
|
snappy/snap/t3mlite/edge.py
CHANGED
@@ -16,7 +16,7 @@ import sys
|
|
16
16
|
# other_arrow = arrow.copy().opposite()
|
17
17
|
# tail, head = other_arrow.tail(), other_arrow.head()
|
18
18
|
|
19
|
-
_edge_add_corner_dict =
|
19
|
+
_edge_add_corner_dict = {}
|
20
20
|
for edge, face in EdgeFacePairs:
|
21
21
|
other_arrow = Arrow(edge, face, None).opposite()
|
22
22
|
_edge_add_corner_dict[edge, face] = other_arrow.tail(), other_arrow.head()
|
@@ -35,7 +35,7 @@ class Edge:
|
|
35
35
|
self.Vertices = [] # pairs: (initial Vertex, terminal Vertex)
|
36
36
|
self.LeftBdryArrow = None # Arrows representing the two boundary faces,
|
37
37
|
self.RightBdryArrow = None # if this is a boundary edge.
|
38
|
-
self._edge_orient_cache =
|
38
|
+
self._edge_orient_cache = {}
|
39
39
|
|
40
40
|
def __repr__(self):
|
41
41
|
if self.Index > -1:
|
@@ -155,7 +155,7 @@ class Edge:
|
|
155
155
|
tet, perm = self._first_embedding()
|
156
156
|
for i in range(order):
|
157
157
|
yield tet, perm
|
158
|
-
face = perm.image(
|
158
|
+
face = perm.image(F2)
|
159
159
|
tet, perm = (
|
160
160
|
tet.Neighbor[face], tet.Gluing[face] * perm * Perm4( (0,1,3,2) ))
|
161
161
|
|
snappy/snap/t3mlite/homology.py
CHANGED
@@ -6,7 +6,7 @@ def boundary_three(manifold):
|
|
6
6
|
F, T = len(manifold.Faces), len(manifold.Tetrahedra)
|
7
7
|
ans = Matrix(F, T)
|
8
8
|
for F in manifold.Faces:
|
9
|
-
t0, t1 =
|
9
|
+
t0, t1 = (C.Tetrahedron.Index for C in F.Corners)
|
10
10
|
ans[F.Index, t0] += 1
|
11
11
|
ans[F.Index, t1] += -1
|
12
12
|
return ans
|
@@ -33,7 +33,7 @@ def boundary_one(manifold):
|
|
33
33
|
V, E = len(manifold.Vertices), len(manifold.Edges)
|
34
34
|
ans = Matrix(V, E)
|
35
35
|
for e in manifold.Edges:
|
36
|
-
v_init, v_term =
|
36
|
+
v_init, v_term = (v.Index for v in e.Vertices)
|
37
37
|
ans[v_term, e.Index] += 1
|
38
38
|
ans[v_init, e.Index] += -1
|
39
39
|
return ans
|
snappy/snap/t3mlite/mcomplex.py
CHANGED
@@ -263,7 +263,7 @@ class Mcomplex:
|
|
263
263
|
out.write("\nEdges:\n")
|
264
264
|
for edge in self.Edges:
|
265
265
|
edge.info(out)
|
266
|
-
except
|
266
|
+
except OSError:
|
267
267
|
pass
|
268
268
|
|
269
269
|
def build_edge_classes(self):
|
@@ -483,7 +483,7 @@ class Mcomplex:
|
|
483
483
|
out.write("-------------------------------------\n\n")
|
484
484
|
surface.info(self, out)
|
485
485
|
out.write('\n')
|
486
|
-
except
|
486
|
+
except OSError:
|
487
487
|
pass
|
488
488
|
|
489
489
|
def almost_normal_surface_info(self, out=sys.stdout):
|
@@ -492,7 +492,7 @@ class Mcomplex:
|
|
492
492
|
out.write("-------------------------------------\n\n")
|
493
493
|
surface.info(self, out)
|
494
494
|
out.write('\n')
|
495
|
-
except
|
495
|
+
except OSError:
|
496
496
|
pass
|
497
497
|
|
498
498
|
# Simplification Moves
|
snappy/snap/t3mlite/simplex.py
CHANGED
@@ -162,6 +162,18 @@ VerticesOfFaceCounterclockwise = {
|
|
162
162
|
F3: (V1, V2, V0)
|
163
163
|
}
|
164
164
|
|
165
|
+
# Dimension of a subsimplex
|
166
|
+
def dimension(x):
|
167
|
+
if x in ZeroSubsimplices:
|
168
|
+
return 0
|
169
|
+
if x in OneSubsimplices:
|
170
|
+
return 1
|
171
|
+
if x in TwoSubsimplices:
|
172
|
+
return 2
|
173
|
+
if x == T:
|
174
|
+
return 3
|
175
|
+
raise Exception("%r is not a subsimplex" % x)
|
176
|
+
|
165
177
|
# Decide if the bitmap x represents a subset of the bitmap y
|
166
178
|
|
167
179
|
|
snappy/snap/t3mlite/spun.py
CHANGED
@@ -6,19 +6,18 @@ of it (though depending very much on snappy), except for borrowing
|
|
6
6
|
some linear algebra code.
|
7
7
|
"""
|
8
8
|
|
9
|
-
import snappy
|
10
9
|
import FXrays
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
from
|
10
|
+
|
11
|
+
from ...sage_helper import _within_sage
|
12
|
+
if _within_sage:
|
13
|
+
from ...sage_helper import vector as Vector, matrix as Matrix, gcd
|
15
14
|
else:
|
16
15
|
from snappy.snap.t3mlite.linalg import Vector, Matrix, gcd
|
17
16
|
|
18
17
|
|
19
18
|
def weak_normalize_slope(slope):
|
20
19
|
"""For a tuple (a, b), scale it so that gcd(a,b)=1"""
|
21
|
-
a, b =
|
20
|
+
a, b = (int(s) for s in slope)
|
22
21
|
if a == b == 0:
|
23
22
|
return (0, 0)
|
24
23
|
g = gcd(a,b)
|
@@ -54,7 +53,8 @@ def normalize_slope(slope):
|
|
54
53
|
def shift_matrix(n):
|
55
54
|
"""
|
56
55
|
The edge shifts corresponding to each of three quad types, see Figure
|
57
|
-
2.1 and 2.2 of
|
56
|
+
2.1 and 2.2 of
|
57
|
+
`Dunfield and Garoufalidis '12 <http://arxiv.org/abs/1102.4588>`_.
|
58
58
|
"""
|
59
59
|
shifts = Matrix(3*n, 3*n)
|
60
60
|
for i in range(0, 3*n, 3):
|
@@ -92,14 +92,14 @@ class SpunSurface:
|
|
92
92
|
A spun normal surface in an ideal triangulation, as introduced by
|
93
93
|
Thurston.
|
94
94
|
|
95
|
-
For an quick sketch of this theory see `
|
95
|
+
For an quick sketch of this theory see `Dunfield and Garoufalidis '12
|
96
96
|
<http://arxiv.org/abs/1102.4588>`_ and for more details see
|
97
|
-
`
|
97
|
+
`Tillmann '08 <http://arxiv.org/abs/math/0406271>`_.
|
98
98
|
|
99
99
|
The quad conventions are (Q02, Q03, Q01) corresponding to
|
100
100
|
z -> 0, z' -> 0, and z'' -> 0 respectively, as per Figure 3.1 of
|
101
|
-
`
|
102
|
-
are numbered 0, 1, 2; the "None" quad type means a
|
101
|
+
`Dunfield and Garoufalidis '12 <http://arxiv.org/abs/1102.4588>`_.
|
102
|
+
The quad types are numbered 0, 1, 2; the "None" quad type means a
|
103
103
|
tetrahedron contains no quads at all.
|
104
104
|
"""
|
105
105
|
def __init__(self, manifold, quad_vector=None, quad_types=None, index=None):
|
@@ -245,9 +245,9 @@ def normal_boundary_slopes(self, subset='all', algorithm='FXrays'):
|
|
245
245
|
|
246
246
|
If the ``subset`` flag is set to ``'kabaya'``, then it only
|
247
247
|
returns boundary slopes associated to vertex surfaces with a quad
|
248
|
-
in every tetrahedron; by Theorem 1.1. of
|
249
|
-
<http://arxiv.org/abs/1102.4588>`_
|
250
|
-
slopes.
|
248
|
+
in every tetrahedron; by Theorem 1.1. of
|
249
|
+
`Dunfield and Garoufalidis '12 <http://arxiv.org/abs/1102.4588>`_
|
250
|
+
these are all strict boundary slopes.
|
251
251
|
|
252
252
|
>>> N = Manifold('m113')
|
253
253
|
>>> N.normal_boundary_slopes()
|
@@ -285,12 +285,13 @@ def normal_boundary_slopes(self, subset='all', algorithm='FXrays'):
|
|
285
285
|
if subset != 'all':
|
286
286
|
raise ValueError("Subset must be one of 'all', 'kabaya', or 'brasile'")
|
287
287
|
|
288
|
-
slopes =
|
289
|
-
slopes.discard(
|
288
|
+
slopes = {normalize_slope(S.boundary_slopes()) for S in surfaces}
|
289
|
+
slopes.discard((0, 0))
|
290
290
|
return sorted(slopes)
|
291
291
|
|
292
292
|
|
293
293
|
if __name__ == "__main__":
|
294
294
|
import doctest
|
295
|
-
|
295
|
+
import snappy
|
296
|
+
names = {'Manifold': snappy.Manifold}
|
296
297
|
doctest.testmod(extraglobs=names)
|
@@ -6,8 +6,8 @@ import snappy.snap.t3mlite.spun as spun
|
|
6
6
|
|
7
7
|
def hash_t3m_surface(surface):
|
8
8
|
ans = [surface.EulerCharacteristic]
|
9
|
-
ans += sorted(
|
10
|
-
ans += sorted(
|
9
|
+
ans += sorted(surface.EdgeWeights)
|
10
|
+
ans += sorted(surface.Quadvector)
|
11
11
|
return ans
|
12
12
|
|
13
13
|
|
@@ -66,8 +66,8 @@ def compare_cusped(snappy_manifold):
|
|
66
66
|
t = R.getNumberOfTetrahedra()
|
67
67
|
regina_surfaces = list(vertex_surfaces(R))
|
68
68
|
r_hashes = sorted(
|
69
|
-
sorted(
|
70
|
-
for i in range(t) for j in range(3))
|
69
|
+
sorted(int(S.getQuadCoord(i, j).stringValue())
|
70
|
+
for i in range(t) for j in range(3))
|
71
71
|
for S in regina_surfaces)
|
72
72
|
r_slopes = sorted(map(regina_boundary_slope, regina_surfaces))
|
73
73
|
|
snappy/snap/test.py
CHANGED
@@ -1,10 +1,40 @@
|
|
1
|
-
from
|
2
|
-
from ..pari import pari
|
1
|
+
from snappy import testing
|
3
2
|
import snappy
|
4
|
-
import snappy.snap as snap
|
5
|
-
import getopt
|
6
|
-
import sys
|
7
3
|
|
4
|
+
from snappy.sage_helper import _within_sage
|
5
|
+
from snappy.pari import pari
|
6
|
+
|
7
|
+
from snappy import snap
|
8
|
+
|
9
|
+
modules = [
|
10
|
+
snap,
|
11
|
+
snap.t3mlite.linalg,
|
12
|
+
snap.t3mlite.mcomplex,
|
13
|
+
snap.t3mlite.perm4,
|
14
|
+
snap.t3mlite.spun,
|
15
|
+
snap.character_varieties,
|
16
|
+
snap.slice_obs_HKL,
|
17
|
+
snap.nsagetools,
|
18
|
+
snap.polished_reps,
|
19
|
+
snap.interval_reps,
|
20
|
+
snap.fundamental_polyhedron,
|
21
|
+
snap.peripheral.dual_cellulation,
|
22
|
+
snap.peripheral.link,
|
23
|
+
snap.peripheral.peripheral
|
24
|
+
]
|
25
|
+
|
26
|
+
def run_doctests(verbose=False, print_info=True):
|
27
|
+
globs = {'Manifold':snappy.Manifold,
|
28
|
+
'ManifoldHP':snappy.ManifoldHP,
|
29
|
+
'Triangulation':snappy.Triangulation,
|
30
|
+
'Mcomplex':snappy.snap.t3mlite.Mcomplex,
|
31
|
+
'LinkSurface':snappy.snap.peripheral.link.LinkSurface}
|
32
|
+
return testing.doctest_modules(modules,
|
33
|
+
verbose=verbose,
|
34
|
+
print_info=print_info,
|
35
|
+
extraglobs=globs)
|
36
|
+
|
37
|
+
run_doctests.__name__ = snap.__name__
|
8
38
|
|
9
39
|
def _test_gluing_equations(manifold, shapes):
|
10
40
|
"""
|
@@ -30,7 +60,7 @@ def test_polished(dec_prec=200):
|
|
30
60
|
return snap.shapes.gluing_equation_error(eqns, shapes)
|
31
61
|
|
32
62
|
def test_census(name, census):
|
33
|
-
manifolds =
|
63
|
+
manifolds = list(census)
|
34
64
|
print('Checking gluing equations for %d %s manifolds' % (len(manifolds), name))
|
35
65
|
max_error = pari(0)
|
36
66
|
for i, M in enumerate(manifolds):
|
@@ -100,51 +130,5 @@ def big_test():
|
|
100
130
|
test_holonomy()
|
101
131
|
test_fields()
|
102
132
|
|
103
|
-
|
104
|
-
def run_doctests(verbose=False, print_info=True):
|
105
|
-
from snappy.snap.t3mlite import perm4
|
106
|
-
from snappy.snap.t3mlite import linalg
|
107
|
-
from snappy.snap.t3mlite import spun
|
108
|
-
from snappy.snap.t3mlite import mcomplex
|
109
|
-
from snappy.snap import slice_obs_HKL
|
110
|
-
from snappy.snap import character_varieties
|
111
|
-
from snappy.snap import nsagetools
|
112
|
-
from snappy.snap import polished_reps
|
113
|
-
from snappy.snap import interval_reps
|
114
|
-
from snappy.snap import fundamental_polyhedron
|
115
|
-
from snappy.snap.peripheral import dual_cellulation
|
116
|
-
from snappy.snap.peripheral import link
|
117
|
-
from snappy.snap.peripheral import peripheral
|
118
|
-
|
119
|
-
modules = [
|
120
|
-
perm4,
|
121
|
-
mcomplex,
|
122
|
-
linalg,
|
123
|
-
spun,
|
124
|
-
character_varieties,
|
125
|
-
nsagetools,
|
126
|
-
slice_obs_HKL,
|
127
|
-
polished_reps,
|
128
|
-
snap,
|
129
|
-
interval_reps,
|
130
|
-
fundamental_polyhedron,
|
131
|
-
dual_cellulation,
|
132
|
-
link,
|
133
|
-
peripheral,
|
134
|
-
]
|
135
|
-
|
136
|
-
globs = {'Manifold':snappy.Manifold,
|
137
|
-
'ManifoldHP':snappy.ManifoldHP,
|
138
|
-
'Triangulation':snappy.Triangulation,
|
139
|
-
'Mcomplex':snappy.snap.t3mlite.Mcomplex,
|
140
|
-
'LinkSurface':snappy.snap.peripheral.link.LinkSurface
|
141
|
-
}
|
142
|
-
|
143
|
-
return doctest_modules(modules, extraglobs=globs,
|
144
|
-
verbose=verbose, print_info=print_info)
|
145
|
-
|
146
|
-
|
147
133
|
if __name__ == '__main__':
|
148
|
-
|
149
|
-
verbose = len(optlist) > 0
|
150
|
-
run_doctests(verbose)
|
134
|
+
testing.run_doctests_as_main(run_doctests)
|
snappy/snap/utilities.py
CHANGED
@@ -12,9 +12,8 @@ from itertools import chain
|
|
12
12
|
from ..pari import pari, PariError
|
13
13
|
from .fundamental_polyhedron import Infinity
|
14
14
|
if _within_sage:
|
15
|
-
from
|
16
|
-
from
|
17
|
-
from ..sage_helper import ComplexField_class
|
15
|
+
from ..sage_helper import matrix as sage_matrix, vector as sage_vector
|
16
|
+
from ..sage_helper import RealField_class, ComplexField_class
|
18
17
|
|
19
18
|
def is_field(R):
|
20
19
|
return isinstance(R, (SnapPyNumbers, RealField_class,
|
@@ -67,7 +66,7 @@ class Vector2(MatrixBase):
|
|
67
66
|
if len(args) == 1:
|
68
67
|
args = args[0]
|
69
68
|
if len(args) == 2:
|
70
|
-
self.x, self.y =
|
69
|
+
self.x, self.y = (number(t) for t in args)
|
71
70
|
else:
|
72
71
|
raise ValueError('Invalid initialization for a Vector2.')
|
73
72
|
|
@@ -141,7 +140,7 @@ class Matrix2x2(MatrixBase):
|
|
141
140
|
if len(args) == 1:
|
142
141
|
args = tuple(chain(*args[0]))
|
143
142
|
if len(args) == 4:
|
144
|
-
self.a, self.b, self.c, self.d =
|
143
|
+
self.a, self.b, self.c, self.d = (number(x) for x in args)
|
145
144
|
else:
|
146
145
|
raise ValueError('Invalid initialization for a Matrix2x2.')
|
147
146
|
|