snappy 3.3__cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- snappy/CyOpenGL.cpython-310-aarch64-linux-gnu.so +0 -0
- snappy/SnapPy.cpython-310-aarch64-linux-gnu.so +0 -0
- snappy/SnapPy.ico +0 -0
- snappy/SnapPy.png +0 -0
- snappy/SnapPyHP.cpython-310-aarch64-linux-gnu.so +0 -0
- snappy/__init__.py +534 -0
- snappy/app.py +604 -0
- snappy/app_menus.py +372 -0
- snappy/browser.py +998 -0
- snappy/cache.py +25 -0
- snappy/canonical.py +249 -0
- snappy/cusps/__init__.py +280 -0
- snappy/cusps/cusp_area_matrix.py +98 -0
- snappy/cusps/cusp_areas_from_matrix.py +96 -0
- snappy/cusps/maximal_cusp_area_matrix.py +136 -0
- snappy/cusps/short_slopes_for_cusp.py +217 -0
- snappy/cusps/test.py +22 -0
- snappy/cusps/trig_cusp_area_matrix.py +63 -0
- snappy/database.py +454 -0
- snappy/db_utilities.py +79 -0
- snappy/decorated_isosig.py +717 -0
- snappy/dev/__init__.py +0 -0
- snappy/dev/extended_ptolemy/__init__.py +8 -0
- snappy/dev/extended_ptolemy/closed.py +106 -0
- snappy/dev/extended_ptolemy/complexVolumesClosed.py +149 -0
- snappy/dev/extended_ptolemy/direct.py +42 -0
- snappy/dev/extended_ptolemy/extended.py +406 -0
- snappy/dev/extended_ptolemy/giac_helper.py +43 -0
- snappy/dev/extended_ptolemy/giac_rur.py +129 -0
- snappy/dev/extended_ptolemy/gluing.py +46 -0
- snappy/dev/extended_ptolemy/phc_wrapper.py +220 -0
- snappy/dev/extended_ptolemy/printMatrices.py +70 -0
- snappy/dev/vericlosed/__init__.py +1 -0
- snappy/dev/vericlosed/computeApproxHyperbolicStructureNew.py +159 -0
- snappy/dev/vericlosed/computeApproxHyperbolicStructureOrb.py +90 -0
- snappy/dev/vericlosed/computeVerifiedHyperbolicStructure.py +111 -0
- snappy/dev/vericlosed/gimbalLoopFinder.py +130 -0
- snappy/dev/vericlosed/hyperbolicStructure.py +313 -0
- snappy/dev/vericlosed/krawczykCertifiedEdgeLengthsEngine.py +165 -0
- snappy/dev/vericlosed/oneVertexTruncatedComplex.py +122 -0
- snappy/dev/vericlosed/orb/__init__.py +1 -0
- snappy/dev/vericlosed/orb/orb_solution_for_snappea_finite_triangulation_mac +0 -0
- snappy/dev/vericlosed/parseVertexGramMatrixFile.py +47 -0
- snappy/dev/vericlosed/polishApproxHyperbolicStructure.py +61 -0
- snappy/dev/vericlosed/test.py +54 -0
- snappy/dev/vericlosed/truncatedComplex.py +176 -0
- snappy/dev/vericlosed/verificationError.py +58 -0
- snappy/dev/vericlosed/verifyHyperbolicStructureEngine.py +177 -0
- snappy/doc/_images/SnapPy-196.png +0 -0
- snappy/doc/_images/m004_paper_plane_on_systole.jpg +0 -0
- snappy/doc/_images/m125_paper_plane.jpg +0 -0
- snappy/doc/_images/mac.png +0 -0
- snappy/doc/_images/o9_00000_systole_paper_plane.jpg +0 -0
- snappy/doc/_images/o9_00000_systole_paper_plane_closer.jpg +0 -0
- snappy/doc/_images/plink-action.png +0 -0
- snappy/doc/_images/ubuntu.png +0 -0
- snappy/doc/_images/win7.png +0 -0
- snappy/doc/_sources/additional_classes.rst.txt +40 -0
- snappy/doc/_sources/bugs.rst.txt +14 -0
- snappy/doc/_sources/censuses.rst.txt +52 -0
- snappy/doc/_sources/credits.rst.txt +81 -0
- snappy/doc/_sources/development.rst.txt +261 -0
- snappy/doc/_sources/index.rst.txt +215 -0
- snappy/doc/_sources/installing.rst.txt +249 -0
- snappy/doc/_sources/manifold.rst.txt +6 -0
- snappy/doc/_sources/manifoldhp.rst.txt +46 -0
- snappy/doc/_sources/news.rst.txt +425 -0
- snappy/doc/_sources/other.rst.txt +25 -0
- snappy/doc/_sources/platonic_census.rst.txt +20 -0
- snappy/doc/_sources/plink.rst.txt +102 -0
- snappy/doc/_sources/ptolemy.rst.txt +66 -0
- snappy/doc/_sources/ptolemy_classes.rst.txt +42 -0
- snappy/doc/_sources/ptolemy_examples1.rst.txt +298 -0
- snappy/doc/_sources/ptolemy_examples2.rst.txt +363 -0
- snappy/doc/_sources/ptolemy_examples3.rst.txt +301 -0
- snappy/doc/_sources/ptolemy_examples4.rst.txt +61 -0
- snappy/doc/_sources/ptolemy_prelim.rst.txt +105 -0
- snappy/doc/_sources/screenshots.rst.txt +21 -0
- snappy/doc/_sources/snap.rst.txt +87 -0
- snappy/doc/_sources/snappy.rst.txt +28 -0
- snappy/doc/_sources/spherogram.rst.txt +103 -0
- snappy/doc/_sources/todo.rst.txt +47 -0
- snappy/doc/_sources/triangulation.rst.txt +11 -0
- snappy/doc/_sources/tutorial.rst.txt +49 -0
- snappy/doc/_sources/verify.rst.txt +210 -0
- snappy/doc/_sources/verify_internals.rst.txt +79 -0
- snappy/doc/_static/SnapPy-horizontal-128.png +0 -0
- snappy/doc/_static/SnapPy.ico +0 -0
- snappy/doc/_static/_sphinx_javascript_frameworks_compat.js +123 -0
- snappy/doc/_static/basic.css +906 -0
- snappy/doc/_static/css/badge_only.css +1 -0
- snappy/doc/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
- snappy/doc/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
- snappy/doc/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
- snappy/doc/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
- snappy/doc/_static/css/fonts/fontawesome-webfont.eot +0 -0
- snappy/doc/_static/css/fonts/fontawesome-webfont.svg +2671 -0
- snappy/doc/_static/css/fonts/fontawesome-webfont.ttf +0 -0
- snappy/doc/_static/css/fonts/fontawesome-webfont.woff +0 -0
- snappy/doc/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
- snappy/doc/_static/css/fonts/lato-bold-italic.woff +0 -0
- snappy/doc/_static/css/fonts/lato-bold-italic.woff2 +0 -0
- snappy/doc/_static/css/fonts/lato-bold.woff +0 -0
- snappy/doc/_static/css/fonts/lato-bold.woff2 +0 -0
- snappy/doc/_static/css/fonts/lato-normal-italic.woff +0 -0
- snappy/doc/_static/css/fonts/lato-normal-italic.woff2 +0 -0
- snappy/doc/_static/css/fonts/lato-normal.woff +0 -0
- snappy/doc/_static/css/fonts/lato-normal.woff2 +0 -0
- snappy/doc/_static/css/theme.css +4 -0
- snappy/doc/_static/doctools.js +149 -0
- snappy/doc/_static/documentation_options.js +13 -0
- snappy/doc/_static/file.png +0 -0
- snappy/doc/_static/fonts/Lato/lato-bold.eot +0 -0
- snappy/doc/_static/fonts/Lato/lato-bold.ttf +0 -0
- snappy/doc/_static/fonts/Lato/lato-bold.woff +0 -0
- snappy/doc/_static/fonts/Lato/lato-bold.woff2 +0 -0
- snappy/doc/_static/fonts/Lato/lato-bolditalic.eot +0 -0
- snappy/doc/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
- snappy/doc/_static/fonts/Lato/lato-bolditalic.woff +0 -0
- snappy/doc/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
- snappy/doc/_static/fonts/Lato/lato-italic.eot +0 -0
- snappy/doc/_static/fonts/Lato/lato-italic.ttf +0 -0
- snappy/doc/_static/fonts/Lato/lato-italic.woff +0 -0
- snappy/doc/_static/fonts/Lato/lato-italic.woff2 +0 -0
- snappy/doc/_static/fonts/Lato/lato-regular.eot +0 -0
- snappy/doc/_static/fonts/Lato/lato-regular.ttf +0 -0
- snappy/doc/_static/fonts/Lato/lato-regular.woff +0 -0
- snappy/doc/_static/fonts/Lato/lato-regular.woff2 +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
- snappy/doc/_static/jquery.js +2 -0
- snappy/doc/_static/js/badge_only.js +1 -0
- snappy/doc/_static/js/theme.js +1 -0
- snappy/doc/_static/js/versions.js +228 -0
- snappy/doc/_static/language_data.js +192 -0
- snappy/doc/_static/minus.png +0 -0
- snappy/doc/_static/plus.png +0 -0
- snappy/doc/_static/pygments.css +75 -0
- snappy/doc/_static/searchtools.js +635 -0
- snappy/doc/_static/snappy_furo.css +33 -0
- snappy/doc/_static/snappy_sphinx_rtd_theme.css +42 -0
- snappy/doc/_static/sphinx_highlight.js +154 -0
- snappy/doc/additional_classes.html +1500 -0
- snappy/doc/bugs.html +132 -0
- snappy/doc/censuses.html +453 -0
- snappy/doc/credits.html +184 -0
- snappy/doc/development.html +385 -0
- snappy/doc/doc-latest/additional_classes.html +1500 -0
- snappy/doc/doc-latest/bugs.html +132 -0
- snappy/doc/doc-latest/censuses.html +453 -0
- snappy/doc/doc-latest/credits.html +184 -0
- snappy/doc/doc-latest/development.html +385 -0
- snappy/doc/doc-latest/genindex.html +1349 -0
- snappy/doc/doc-latest/index.html +287 -0
- snappy/doc/doc-latest/installing.html +346 -0
- snappy/doc/doc-latest/manifold.html +3632 -0
- snappy/doc/doc-latest/manifoldhp.html +180 -0
- snappy/doc/doc-latest/news.html +438 -0
- snappy/doc/doc-latest/objects.inv +0 -0
- snappy/doc/doc-latest/other.html +160 -0
- snappy/doc/doc-latest/platonic_census.html +376 -0
- snappy/doc/doc-latest/plink.html +210 -0
- snappy/doc/doc-latest/ptolemy.html +253 -0
- snappy/doc/doc-latest/ptolemy_classes.html +1144 -0
- snappy/doc/doc-latest/ptolemy_examples1.html +409 -0
- snappy/doc/doc-latest/ptolemy_examples2.html +471 -0
- snappy/doc/doc-latest/ptolemy_examples3.html +414 -0
- snappy/doc/doc-latest/ptolemy_examples4.html +195 -0
- snappy/doc/doc-latest/ptolemy_prelim.html +248 -0
- snappy/doc/doc-latest/py-modindex.html +165 -0
- snappy/doc/doc-latest/screenshots.html +141 -0
- snappy/doc/doc-latest/search.html +135 -0
- snappy/doc/doc-latest/searchindex.js +1 -0
- snappy/doc/doc-latest/snap.html +202 -0
- snappy/doc/doc-latest/snappy.html +181 -0
- snappy/doc/doc-latest/spherogram.html +1346 -0
- snappy/doc/doc-latest/todo.html +166 -0
- snappy/doc/doc-latest/triangulation.html +1676 -0
- snappy/doc/doc-latest/tutorial.html +159 -0
- snappy/doc/doc-latest/verify.html +330 -0
- snappy/doc/doc-latest/verify_internals.html +1235 -0
- snappy/doc/genindex.html +1349 -0
- snappy/doc/index.html +287 -0
- snappy/doc/installing.html +346 -0
- snappy/doc/manifold.html +3632 -0
- snappy/doc/manifoldhp.html +180 -0
- snappy/doc/news.html +438 -0
- snappy/doc/objects.inv +0 -0
- snappy/doc/other.html +160 -0
- snappy/doc/platonic_census.html +376 -0
- snappy/doc/plink.html +210 -0
- snappy/doc/ptolemy.html +253 -0
- snappy/doc/ptolemy_classes.html +1144 -0
- snappy/doc/ptolemy_examples1.html +409 -0
- snappy/doc/ptolemy_examples2.html +471 -0
- snappy/doc/ptolemy_examples3.html +414 -0
- snappy/doc/ptolemy_examples4.html +195 -0
- snappy/doc/ptolemy_prelim.html +248 -0
- snappy/doc/py-modindex.html +165 -0
- snappy/doc/screenshots.html +141 -0
- snappy/doc/search.html +135 -0
- snappy/doc/searchindex.js +1 -0
- snappy/doc/snap.html +202 -0
- snappy/doc/snappy.html +181 -0
- snappy/doc/spherogram.html +1346 -0
- snappy/doc/todo.html +166 -0
- snappy/doc/triangulation.html +1676 -0
- snappy/doc/tutorial.html +159 -0
- snappy/doc/verify.html +330 -0
- snappy/doc/verify_internals.html +1235 -0
- snappy/drilling/__init__.py +456 -0
- snappy/drilling/barycentric.py +103 -0
- snappy/drilling/constants.py +5 -0
- snappy/drilling/crush.py +270 -0
- snappy/drilling/cusps.py +125 -0
- snappy/drilling/debug.py +242 -0
- snappy/drilling/epsilons.py +6 -0
- snappy/drilling/exceptions.py +55 -0
- snappy/drilling/moves.py +620 -0
- snappy/drilling/peripheral_curves.py +210 -0
- snappy/drilling/perturb.py +188 -0
- snappy/drilling/shorten.py +36 -0
- snappy/drilling/subdivide.py +274 -0
- snappy/drilling/test.py +23 -0
- snappy/drilling/test_cases.py +132 -0
- snappy/drilling/tracing.py +351 -0
- snappy/exceptions.py +26 -0
- snappy/export_stl.py +120 -0
- snappy/exterior_to_link/__init__.py +2 -0
- snappy/exterior_to_link/barycentric_geometry.py +463 -0
- snappy/exterior_to_link/exceptions.py +6 -0
- snappy/exterior_to_link/geodesic_map.json +14408 -0
- snappy/exterior_to_link/hyp_utils.py +112 -0
- snappy/exterior_to_link/link_projection.py +323 -0
- snappy/exterior_to_link/main.py +198 -0
- snappy/exterior_to_link/mcomplex_with_expansion.py +261 -0
- snappy/exterior_to_link/mcomplex_with_link.py +687 -0
- snappy/exterior_to_link/mcomplex_with_memory.py +162 -0
- snappy/exterior_to_link/pl_utils.py +491 -0
- snappy/exterior_to_link/put_in_S3.py +156 -0
- snappy/exterior_to_link/rational_linear_algebra.py +130 -0
- snappy/exterior_to_link/rational_linear_algebra_wrapped.py +135 -0
- snappy/exterior_to_link/simplify_to_base_tri.py +114 -0
- snappy/exterior_to_link/stored_moves.py +475 -0
- snappy/exterior_to_link/test.py +31 -0
- snappy/filedialog.py +28 -0
- snappy/geometric_structure/__init__.py +212 -0
- snappy/geometric_structure/cusp_neighborhood/__init__.py +3 -0
- snappy/geometric_structure/cusp_neighborhood/complex_cusp_cross_section.py +691 -0
- snappy/geometric_structure/cusp_neighborhood/cusp_cross_section_base.py +480 -0
- snappy/geometric_structure/cusp_neighborhood/exceptions.py +41 -0
- snappy/geometric_structure/cusp_neighborhood/real_cusp_cross_section.py +294 -0
- snappy/geometric_structure/cusp_neighborhood/tiles_for_cusp_neighborhood.py +156 -0
- snappy/geometric_structure/cusp_neighborhood/vertices.py +35 -0
- snappy/geometric_structure/geodesic/__init__.py +0 -0
- snappy/geometric_structure/geodesic/add_core_curves.py +152 -0
- snappy/geometric_structure/geodesic/avoid_core_curves.py +369 -0
- snappy/geometric_structure/geodesic/canonical_representatives.py +52 -0
- snappy/geometric_structure/geodesic/check_away_from_core_curve.py +60 -0
- snappy/geometric_structure/geodesic/constants.py +6 -0
- snappy/geometric_structure/geodesic/exceptions.py +22 -0
- snappy/geometric_structure/geodesic/fixed_points.py +106 -0
- snappy/geometric_structure/geodesic/geodesic_start_point_info.py +435 -0
- snappy/geometric_structure/geodesic/graph_trace_helper.py +67 -0
- snappy/geometric_structure/geodesic/line.py +30 -0
- snappy/geometric_structure/geodesic/multiplicity.py +127 -0
- snappy/geometric_structure/geodesic/tiles_for_geodesic.py +128 -0
- snappy/geometric_structure/test.py +22 -0
- snappy/gui.py +121 -0
- snappy/horoviewer.py +443 -0
- snappy/hyperboloid/__init__.py +212 -0
- snappy/hyperboloid/distances.py +259 -0
- snappy/hyperboloid/horoball.py +19 -0
- snappy/hyperboloid/line.py +35 -0
- snappy/hyperboloid/point.py +9 -0
- snappy/hyperboloid/triangle.py +29 -0
- snappy/info_icon.gif +0 -0
- snappy/infowindow.py +65 -0
- snappy/isometry_signature.py +389 -0
- snappy/len_spec/__init__.py +609 -0
- snappy/len_spec/geodesic_info.py +129 -0
- snappy/len_spec/geodesic_key_info_dict.py +116 -0
- snappy/len_spec/geodesic_piece.py +146 -0
- snappy/len_spec/geometric_structure.py +182 -0
- snappy/len_spec/geometry.py +136 -0
- snappy/len_spec/length_spectrum_geodesic_info.py +185 -0
- snappy/len_spec/spine.py +128 -0
- snappy/len_spec/test.py +24 -0
- snappy/len_spec/test_cases.py +69 -0
- snappy/len_spec/tile.py +276 -0
- snappy/len_spec/word.py +86 -0
- snappy/manifolds/HTWKnots/alternating.gz +0 -0
- snappy/manifolds/HTWKnots/nonalternating.gz +0 -0
- snappy/manifolds/__init__.py +3 -0
- snappy/margulis/__init__.py +332 -0
- snappy/margulis/cusp_neighborhood_neighborhood.py +66 -0
- snappy/margulis/geodesic_neighborhood.py +152 -0
- snappy/margulis/margulis_info.py +21 -0
- snappy/margulis/mu_from_neighborhood_pair.py +175 -0
- snappy/margulis/neighborhood.py +29 -0
- snappy/margulis/test.py +22 -0
- snappy/math_basics.py +187 -0
- snappy/matrix.py +525 -0
- snappy/number.py +657 -0
- snappy/numeric_output_checker.py +345 -0
- snappy/pari.py +41 -0
- snappy/phone_home.py +57 -0
- snappy/polyviewer.py +259 -0
- snappy/ptolemy/__init__.py +17 -0
- snappy/ptolemy/component.py +103 -0
- snappy/ptolemy/coordinates.py +2290 -0
- snappy/ptolemy/fieldExtensions.py +153 -0
- snappy/ptolemy/findLoops.py +473 -0
- snappy/ptolemy/geometricRep.py +59 -0
- snappy/ptolemy/homology.py +165 -0
- snappy/ptolemy/magma/default.magma_template +229 -0
- snappy/ptolemy/magma/radicalsOfPrimaryDecomposition.magma_template +79 -0
- snappy/ptolemy/manifoldMethods.py +395 -0
- snappy/ptolemy/matrix.py +350 -0
- snappy/ptolemy/numericalSolutionsToGroebnerBasis.py +113 -0
- snappy/ptolemy/polynomial.py +856 -0
- snappy/ptolemy/processComponents.py +173 -0
- snappy/ptolemy/processFileBase.py +247 -0
- snappy/ptolemy/processFileDispatch.py +46 -0
- snappy/ptolemy/processMagmaFile.py +392 -0
- snappy/ptolemy/processRurFile.py +150 -0
- snappy/ptolemy/ptolemyGeneralizedObstructionClass.py +102 -0
- snappy/ptolemy/ptolemyObstructionClass.py +64 -0
- snappy/ptolemy/ptolemyVariety.py +995 -0
- snappy/ptolemy/ptolemyVarietyPrimeIdealGroebnerBasis.py +140 -0
- snappy/ptolemy/reginaWrapper.py +698 -0
- snappy/ptolemy/regina_testing_files/DT_mcbbiceaibjklmdfgh__sl2_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/regina_testing_files/DT_mcbbiceaibjklmdfgh__sl2_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/regina_testing_files/DT_mcbbiceaibjklmdfgh__sl2_c2.magma_out.bz2 +0 -0
- snappy/ptolemy/regina_testing_files/DT_mcbbiceaibjklmdfgh__sl2_c3.magma_out.bz2 +0 -0
- snappy/ptolemy/regina_testing_files/DT_mcbbiceaibjklmdfgh__sl2_c4.magma_out.bz2 +0 -0
- snappy/ptolemy/regina_testing_files/DT_mcbbiceaibjklmdfgh__sl2_c5.magma_out.bz2 +0 -0
- snappy/ptolemy/regina_testing_files/DT_mcbbiceaibjklmdfgh__sl2_c6.magma_out.bz2 +0 -0
- snappy/ptolemy/regina_testing_files/DT_mcbbiceaibjklmdfgh__sl2_c7.magma_out.bz2 +0 -0
- snappy/ptolemy/regina_testing_files_generalized/m003__sl3_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/regina_testing_files_generalized/m003__sl3_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/regina_testing_files_generalized/m015__sl2_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/regina_testing_files_generalized/m015__sl2_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/regina_testing_files_generalized/m015__sl3_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/regina_testing_files_generalized/m015__sl3_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/rur.py +545 -0
- snappy/ptolemy/solutionsToPrimeIdealGroebnerBasis.py +277 -0
- snappy/ptolemy/test.py +1126 -0
- snappy/ptolemy/testing_files/3_1__sl2_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/3_1__sl2_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/4_1__sl2_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/4_1__sl2_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/4_1__sl3_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/4_1__sl4_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/4_1__sl4_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/5_2__sl2_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/5_2__sl2_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/DT_mcbbiceaibjklmdfgh__sl2_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/DT_mcbbiceaibjklmdfgh__sl2_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/DT_mcbbiceaibjklmdfgh__sl2_c2.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/DT_mcbbiceaibjklmdfgh__sl2_c3.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/DT_mcbbiceaibjklmdfgh__sl2_c4.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/DT_mcbbiceaibjklmdfgh__sl2_c5.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/DT_mcbbiceaibjklmdfgh__sl2_c6.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/DT_mcbbiceaibjklmdfgh__sl2_c7.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/data/pgl2/OrientableCuspedCensus/03_tetrahedra/m019__sl2_c0.magma_out +95 -0
- snappy/ptolemy/testing_files/data/pgl2/OrientableCuspedCensus/03_tetrahedra/m019__sl2_c1.magma_out +95 -0
- snappy/ptolemy/testing_files/m015__sl3_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/m135__sl2_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/m135__sl2_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/m135__sl2_c2.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/m135__sl2_c3.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/m135__sl2_c4.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/m135__sl2_c5.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/m135__sl2_c6.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/m135__sl2_c7.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/s000__sl2_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/s000__sl2_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/t00000__sl2_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/t00000__sl2_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/v0000__sl2_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/v0000__sl2_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/v0000__sl2_c2.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files/v0000__sl2_c3.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files_generalized/m003__sl2_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files_generalized/m003__sl2_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files_generalized/m003__sl3_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files_generalized/m003__sl3_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files_generalized/m004__sl2_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files_generalized/m004__sl2_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files_generalized/m015__sl2_c1.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files_generalized/m015__sl3_c0.magma_out.bz2 +0 -0
- snappy/ptolemy/testing_files_rur/m052__sl3_c0.rur.bz2 +0 -0
- snappy/ptolemy/utilities.py +236 -0
- snappy/raytracing/__init__.py +64 -0
- snappy/raytracing/additional_horospheres.py +64 -0
- snappy/raytracing/additional_len_spec_choices.py +63 -0
- snappy/raytracing/cohomology_fractal.py +197 -0
- snappy/raytracing/eyeball.py +124 -0
- snappy/raytracing/finite_raytracing_data.py +237 -0
- snappy/raytracing/finite_viewer.py +590 -0
- snappy/raytracing/geodesic_tube_info.py +174 -0
- snappy/raytracing/geodesics.py +246 -0
- snappy/raytracing/geodesics_window.py +258 -0
- snappy/raytracing/gui_utilities.py +293 -0
- snappy/raytracing/hyperboloid_navigation.py +556 -0
- snappy/raytracing/hyperboloid_utilities.py +234 -0
- snappy/raytracing/ideal_raytracing_data.py +592 -0
- snappy/raytracing/inside_viewer.py +974 -0
- snappy/raytracing/pack.py +22 -0
- snappy/raytracing/raytracing_data.py +126 -0
- snappy/raytracing/raytracing_view.py +454 -0
- snappy/raytracing/shaders/Eye.png +0 -0
- snappy/raytracing/shaders/NonGeometric.png +0 -0
- snappy/raytracing/shaders/__init__.py +101 -0
- snappy/raytracing/shaders/fragment.glsl +1744 -0
- snappy/raytracing/test.py +29 -0
- snappy/raytracing/tooltip.py +146 -0
- snappy/raytracing/upper_halfspace_utilities.py +98 -0
- snappy/raytracing/view_scale_controller.py +98 -0
- snappy/raytracing/zoom_slider/__init__.py +263 -0
- snappy/raytracing/zoom_slider/inward.png +0 -0
- snappy/raytracing/zoom_slider/inward18.png +0 -0
- snappy/raytracing/zoom_slider/outward.png +0 -0
- snappy/raytracing/zoom_slider/outward18.png +0 -0
- snappy/raytracing/zoom_slider/test.py +20 -0
- snappy/sage_helper.py +119 -0
- snappy/settings.py +407 -0
- snappy/shell.py +53 -0
- snappy/snap/__init__.py +117 -0
- snappy/snap/character_varieties.py +375 -0
- snappy/snap/find_field.py +372 -0
- snappy/snap/fox_milnor.py +271 -0
- snappy/snap/fundamental_polyhedron.py +569 -0
- snappy/snap/generators.py +39 -0
- snappy/snap/interval_reps.py +81 -0
- snappy/snap/kernel_structures.py +128 -0
- snappy/snap/mcomplex_base.py +18 -0
- snappy/snap/nsagetools.py +716 -0
- snappy/snap/peripheral/__init__.py +1 -0
- snappy/snap/peripheral/dual_cellulation.py +219 -0
- snappy/snap/peripheral/link.py +127 -0
- snappy/snap/peripheral/peripheral.py +159 -0
- snappy/snap/peripheral/surface.py +522 -0
- snappy/snap/peripheral/test.py +35 -0
- snappy/snap/polished_reps.py +335 -0
- snappy/snap/shapes.py +152 -0
- snappy/snap/slice_obs_HKL/__init__.py +194 -0
- snappy/snap/slice_obs_HKL/basics.py +236 -0
- snappy/snap/slice_obs_HKL/direct.py +217 -0
- snappy/snap/slice_obs_HKL/poly_norm.py +212 -0
- snappy/snap/slice_obs_HKL/rep_theory.py +424 -0
- snappy/snap/t3mlite/__init__.py +2 -0
- snappy/snap/t3mlite/arrow.py +243 -0
- snappy/snap/t3mlite/corner.py +22 -0
- snappy/snap/t3mlite/edge.py +172 -0
- snappy/snap/t3mlite/face.py +37 -0
- snappy/snap/t3mlite/files.py +211 -0
- snappy/snap/t3mlite/homology.py +53 -0
- snappy/snap/t3mlite/linalg.py +419 -0
- snappy/snap/t3mlite/mcomplex.py +1499 -0
- snappy/snap/t3mlite/perm4.py +320 -0
- snappy/snap/t3mlite/setup.py +12 -0
- snappy/snap/t3mlite/simplex.py +199 -0
- snappy/snap/t3mlite/spun.py +297 -0
- snappy/snap/t3mlite/surface.py +519 -0
- snappy/snap/t3mlite/test.py +20 -0
- snappy/snap/t3mlite/test_vs_regina.py +86 -0
- snappy/snap/t3mlite/tetrahedron.py +109 -0
- snappy/snap/t3mlite/vertex.py +42 -0
- snappy/snap/test.py +139 -0
- snappy/snap/utilities.py +288 -0
- snappy/test.py +213 -0
- snappy/test_cases.py +263 -0
- snappy/testing.py +131 -0
- snappy/tiling/__init__.py +2 -0
- snappy/tiling/dict_based_set.py +79 -0
- snappy/tiling/floor.py +49 -0
- snappy/tiling/hyperboloid_dict.py +54 -0
- snappy/tiling/iter_utils.py +78 -0
- snappy/tiling/lifted_tetrahedron.py +22 -0
- snappy/tiling/lifted_tetrahedron_set.py +54 -0
- snappy/tiling/quotient_dict.py +70 -0
- snappy/tiling/real_hash_dict.py +164 -0
- snappy/tiling/test.py +23 -0
- snappy/tiling/tile.py +224 -0
- snappy/tiling/triangle.py +33 -0
- snappy/tkterminal.py +920 -0
- snappy/twister/__init__.py +20 -0
- snappy/twister/main.py +646 -0
- snappy/twister/surfaces/S_0_1 +3 -0
- snappy/twister/surfaces/S_0_2 +3 -0
- snappy/twister/surfaces/S_0_4 +7 -0
- snappy/twister/surfaces/S_0_4_Lantern +8 -0
- snappy/twister/surfaces/S_1 +3 -0
- snappy/twister/surfaces/S_1_1 +4 -0
- snappy/twister/surfaces/S_1_2 +5 -0
- snappy/twister/surfaces/S_1_2_5 +6 -0
- snappy/twister/surfaces/S_2 +6 -0
- snappy/twister/surfaces/S_2_1 +8 -0
- snappy/twister/surfaces/S_2_heeg +10 -0
- snappy/twister/surfaces/S_3 +8 -0
- snappy/twister/surfaces/S_3_1 +10 -0
- snappy/twister/surfaces/S_4_1 +12 -0
- snappy/twister/surfaces/S_5_1 +14 -0
- snappy/twister/surfaces/heeg_fig8 +9 -0
- snappy/twister/twister_core.cpython-310-aarch64-linux-gnu.so +0 -0
- snappy/upper_halfspace/__init__.py +146 -0
- snappy/upper_halfspace/ideal_point.py +29 -0
- snappy/verify/__init__.py +13 -0
- snappy/verify/canonical.py +542 -0
- snappy/verify/complex_volume/__init__.py +18 -0
- snappy/verify/complex_volume/adjust_torsion.py +86 -0
- snappy/verify/complex_volume/closed.py +168 -0
- snappy/verify/complex_volume/compute_ptolemys.py +90 -0
- snappy/verify/complex_volume/cusped.py +56 -0
- snappy/verify/complex_volume/extended_bloch.py +201 -0
- snappy/verify/cusp_translations.py +85 -0
- snappy/verify/edge_equations.py +80 -0
- snappy/verify/exceptions.py +254 -0
- snappy/verify/hyperbolicity.py +224 -0
- snappy/verify/interval_newton_shapes_engine.py +523 -0
- snappy/verify/interval_tree.py +400 -0
- snappy/verify/krawczyk_shapes_engine.py +518 -0
- snappy/verify/real_algebra.py +286 -0
- snappy/verify/shapes.py +25 -0
- snappy/verify/square_extensions.py +1005 -0
- snappy/verify/test.py +72 -0
- snappy/verify/volume.py +128 -0
- snappy/version.py +2 -0
- snappy-3.3.dist-info/METADATA +58 -0
- snappy-3.3.dist-info/RECORD +541 -0
- snappy-3.3.dist-info/WHEEL +6 -0
- snappy-3.3.dist-info/entry_points.txt +2 -0
- snappy-3.3.dist-info/top_level.txt +28 -0
|
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
|
snappy/ptolemy/testing_files/data/pgl2/OrientableCuspedCensus/03_tetrahedra/m019__sl2_c0.magma_out
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
Magma V2.19-8 Tue Aug 20 2013 16:07:18 on localhost [Seed = 947496497]
|
|
2
|
+
Type ? for help. Type <Ctrl>-D to quit.
|
|
3
|
+
==TRIANGULATION=BEGINS==
|
|
4
|
+
% Triangulation
|
|
5
|
+
m019
|
|
6
|
+
geometric_solution 2.94410649
|
|
7
|
+
oriented_manifold
|
|
8
|
+
CS_known 0.0000000000000001
|
|
9
|
+
|
|
10
|
+
1 0
|
|
11
|
+
torus 0.000000000000 0.000000000000
|
|
12
|
+
|
|
13
|
+
3
|
|
14
|
+
1 1 1 2
|
|
15
|
+
0132 2103 0321 0132
|
|
16
|
+
0 0 0 0
|
|
17
|
+
0 0 0 0 -1 0 1 0 0 0 0 0 0 -1 1 0
|
|
18
|
+
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
19
|
+
0 -1 0 1 0 0 0 0 0 0 0 0 1 0 -1 0
|
|
20
|
+
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
21
|
+
0.780552527851 0.914473662968
|
|
22
|
+
|
|
23
|
+
0 0 0 2
|
|
24
|
+
0132 2103 0321 1023
|
|
25
|
+
0 0 0 0
|
|
26
|
+
0 0 0 0 1 0 -1 0 0 0 0 0 0 1 -1 0
|
|
27
|
+
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
28
|
+
0 0 0 0 0 0 1 -1 -1 1 0 0 0 0 0 0
|
|
29
|
+
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
30
|
+
0.780552527851 0.914473662968
|
|
31
|
+
|
|
32
|
+
2 2 0 1
|
|
33
|
+
1230 3012 0132 1023
|
|
34
|
+
0 0 0 0
|
|
35
|
+
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
36
|
+
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
37
|
+
0 0 -1 1 0 0 0 0 0 0 0 0 0 0 0 0
|
|
38
|
+
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
39
|
+
0.460021175574 0.632624193605
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
==TRIANGULATION=ENDS==
|
|
43
|
+
PY=EVAL=SECTION=BEGINS=HERE
|
|
44
|
+
{'variable_dict' :
|
|
45
|
+
(lambda d, negation = (lambda x:-x): {
|
|
46
|
+
's_3_1' : d['1'],
|
|
47
|
+
's_3_2' : d['1'],
|
|
48
|
+
's_3_0' : d['1'],
|
|
49
|
+
's_2_0' : d['1'],
|
|
50
|
+
's_2_1' : d['1'],
|
|
51
|
+
's_2_2' : d['1'],
|
|
52
|
+
's_1_2' : d['1'],
|
|
53
|
+
's_1_1' : d['1'],
|
|
54
|
+
's_1_0' : d['1'],
|
|
55
|
+
's_0_2' : d['1'],
|
|
56
|
+
's_0_0' : d['1'],
|
|
57
|
+
's_0_1' : d['1'],
|
|
58
|
+
'c_1100_1' : negation(d['c_0011_0']),
|
|
59
|
+
'c_1100_0' : d['c_0011_0'],
|
|
60
|
+
'c_1100_2' : d['c_0011_0'],
|
|
61
|
+
'c_0101_2' : negation(d['c_0101_0']),
|
|
62
|
+
'c_0101_1' : negation(d['c_0101_0']),
|
|
63
|
+
'c_0101_0' : d['c_0101_0'],
|
|
64
|
+
'c_0011_1' : negation(d['c_0011_0']),
|
|
65
|
+
'c_0011_0' : d['c_0011_0'],
|
|
66
|
+
'c_0011_2' : d['c_0011_2'],
|
|
67
|
+
'c_1001_1' : d['c_0011_0'],
|
|
68
|
+
'c_1001_0' : negation(d['c_0011_0']),
|
|
69
|
+
'c_1001_2' : negation(d['c_0011_2']),
|
|
70
|
+
'c_0110_1' : d['c_0101_0'],
|
|
71
|
+
'c_0110_0' : negation(d['c_0101_0']),
|
|
72
|
+
'c_0110_2' : d['c_0011_2'],
|
|
73
|
+
'c_1010_2' : d['c_0101_0'],
|
|
74
|
+
'c_1010_1' : d['c_0011_2'],
|
|
75
|
+
'c_1010_0' : negation(d['c_0011_2'])})}
|
|
76
|
+
PY=EVAL=SECTION=ENDS=HERE
|
|
77
|
+
PRIMARY=DECOMPOSITION=BEGINS=HERE
|
|
78
|
+
[
|
|
79
|
+
Ideal of Polynomial ring of rank 4 over Rational Field
|
|
80
|
+
Order: Lexicographical
|
|
81
|
+
Variables: t, c_0011_0, c_0011_2, c_0101_0
|
|
82
|
+
Inhomogeneous, Dimension 0, Radical, Prime
|
|
83
|
+
Size of variety over algebraically closed field: 4
|
|
84
|
+
Groebner basis:
|
|
85
|
+
[
|
|
86
|
+
t - c_0101_0^3 + c_0101_0^2 + c_0101_0 + 2,
|
|
87
|
+
c_0011_0 - 1,
|
|
88
|
+
c_0011_2 + c_0101_0^3 - 2*c_0101_0 - 2,
|
|
89
|
+
c_0101_0^4 - 2*c_0101_0^2 - 3*c_0101_0 - 1
|
|
90
|
+
]
|
|
91
|
+
]
|
|
92
|
+
PRIMARY=DECOMPOSITION=ENDS=HERE
|
|
93
|
+
CPUTIME : 0.000
|
|
94
|
+
|
|
95
|
+
Total time: 0.210 seconds, Total memory usage: 32.09MB
|
snappy/ptolemy/testing_files/data/pgl2/OrientableCuspedCensus/03_tetrahedra/m019__sl2_c1.magma_out
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
Magma V2.19-8 Tue Aug 20 2013 16:07:18 on localhost [Seed = 930523454]
|
|
2
|
+
Type ? for help. Type <Ctrl>-D to quit.
|
|
3
|
+
==TRIANGULATION=BEGINS==
|
|
4
|
+
% Triangulation
|
|
5
|
+
m019
|
|
6
|
+
geometric_solution 2.94410649
|
|
7
|
+
oriented_manifold
|
|
8
|
+
CS_known 0.0000000000000001
|
|
9
|
+
|
|
10
|
+
1 0
|
|
11
|
+
torus 0.000000000000 0.000000000000
|
|
12
|
+
|
|
13
|
+
3
|
|
14
|
+
1 1 1 2
|
|
15
|
+
0132 2103 0321 0132
|
|
16
|
+
0 0 0 0
|
|
17
|
+
0 0 0 0 -1 0 1 0 0 0 0 0 0 -1 1 0
|
|
18
|
+
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
19
|
+
0 -1 0 1 0 0 0 0 0 0 0 0 1 0 -1 0
|
|
20
|
+
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
21
|
+
0.780552527851 0.914473662968
|
|
22
|
+
|
|
23
|
+
0 0 0 2
|
|
24
|
+
0132 2103 0321 1023
|
|
25
|
+
0 0 0 0
|
|
26
|
+
0 0 0 0 1 0 -1 0 0 0 0 0 0 1 -1 0
|
|
27
|
+
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
28
|
+
0 0 0 0 0 0 1 -1 -1 1 0 0 0 0 0 0
|
|
29
|
+
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
30
|
+
0.780552527851 0.914473662968
|
|
31
|
+
|
|
32
|
+
2 2 0 1
|
|
33
|
+
1230 3012 0132 1023
|
|
34
|
+
0 0 0 0
|
|
35
|
+
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
36
|
+
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
37
|
+
0 0 -1 1 0 0 0 0 0 0 0 0 0 0 0 0
|
|
38
|
+
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
39
|
+
0.460021175574 0.632624193605
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
==TRIANGULATION=ENDS==
|
|
43
|
+
PY=EVAL=SECTION=BEGINS=HERE
|
|
44
|
+
{'variable_dict' :
|
|
45
|
+
(lambda d, negation = (lambda x:-x): {
|
|
46
|
+
's_3_1' : d['1'],
|
|
47
|
+
's_3_2' : d['1'],
|
|
48
|
+
's_3_0' : d['1'],
|
|
49
|
+
's_2_0' : negation(d['1']),
|
|
50
|
+
's_2_1' : negation(d['1']),
|
|
51
|
+
's_2_2' : d['1'],
|
|
52
|
+
's_1_2' : d['1'],
|
|
53
|
+
's_1_1' : negation(d['1']),
|
|
54
|
+
's_1_0' : negation(d['1']),
|
|
55
|
+
's_0_2' : d['1'],
|
|
56
|
+
's_0_0' : d['1'],
|
|
57
|
+
's_0_1' : d['1'],
|
|
58
|
+
'c_1100_1' : negation(d['c_0011_0']),
|
|
59
|
+
'c_1100_0' : d['c_0011_0'],
|
|
60
|
+
'c_1100_2' : d['c_0011_0'],
|
|
61
|
+
'c_0101_2' : negation(d['c_0101_0']),
|
|
62
|
+
'c_0101_1' : negation(d['c_0101_0']),
|
|
63
|
+
'c_0101_0' : d['c_0101_0'],
|
|
64
|
+
'c_0011_1' : negation(d['c_0011_0']),
|
|
65
|
+
'c_0011_0' : d['c_0011_0'],
|
|
66
|
+
'c_0011_2' : d['c_0011_2'],
|
|
67
|
+
'c_1001_1' : d['c_0011_0'],
|
|
68
|
+
'c_1001_0' : negation(d['c_0011_0']),
|
|
69
|
+
'c_1001_2' : negation(d['c_0011_2']),
|
|
70
|
+
'c_0110_1' : d['c_0101_0'],
|
|
71
|
+
'c_0110_0' : negation(d['c_0101_0']),
|
|
72
|
+
'c_0110_2' : d['c_0011_2'],
|
|
73
|
+
'c_1010_2' : d['c_0101_0'],
|
|
74
|
+
'c_1010_1' : d['c_0011_2'],
|
|
75
|
+
'c_1010_0' : negation(d['c_0011_2'])})}
|
|
76
|
+
PY=EVAL=SECTION=ENDS=HERE
|
|
77
|
+
PRIMARY=DECOMPOSITION=BEGINS=HERE
|
|
78
|
+
[
|
|
79
|
+
Ideal of Polynomial ring of rank 4 over Rational Field
|
|
80
|
+
Order: Lexicographical
|
|
81
|
+
Variables: t, c_0011_0, c_0011_2, c_0101_0
|
|
82
|
+
Inhomogeneous, Dimension 0, Radical, Prime
|
|
83
|
+
Size of variety over algebraically closed field: 4
|
|
84
|
+
Groebner basis:
|
|
85
|
+
[
|
|
86
|
+
t + c_0101_0^3 + c_0101_0^2 + c_0101_0 + 2,
|
|
87
|
+
c_0011_0 - 1,
|
|
88
|
+
c_0011_2 + c_0101_0^3,
|
|
89
|
+
c_0101_0^4 + c_0101_0 - 1
|
|
90
|
+
]
|
|
91
|
+
]
|
|
92
|
+
PRIMARY=DECOMPOSITION=ENDS=HERE
|
|
93
|
+
CPUTIME : 0.000
|
|
94
|
+
|
|
95
|
+
Total time: 0.200 seconds, Total memory usage: 32.09MB
|
|
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
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import re
|
|
2
|
+
|
|
3
|
+
###########################################
|
|
4
|
+
# Methods to prepare and quote ASCII text
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def _break_line_iterator(line, line_length):
|
|
8
|
+
for i in range(0, len(line), line_length):
|
|
9
|
+
yield line[i:i + line_length]
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def break_long_lines(text, line_length=76):
|
|
13
|
+
"""
|
|
14
|
+
Break lines in ASCII text text longer than line_length by inserting
|
|
15
|
+
newline characters preceded by backslash (thus the resulting lines might
|
|
16
|
+
be one character longer than line_length).
|
|
17
|
+
|
|
18
|
+
The reverse operation is join_long_lines, so
|
|
19
|
+
join_long_lines(break_long_lines(text)) is always returning text as long as
|
|
20
|
+
consisted of ASCII characters (even when text already had lines
|
|
21
|
+
ending in a backslash as those backslashes are specially escaped)!
|
|
22
|
+
|
|
23
|
+
This is consistent with the interpretation of the backslash newline
|
|
24
|
+
sequence by many languages such as magma, python, C, C++ which treat these
|
|
25
|
+
escaped newlines as non-existing. In particular, the result of
|
|
26
|
+
break_long_lines and the text itself is the same to these languages (as
|
|
27
|
+
long as the text didn't already contain lines ending in a backslash).
|
|
28
|
+
|
|
29
|
+
>>> text = "This is a long line.\\nThis is an even longer line.\\n"
|
|
30
|
+
>>> print(break_long_lines(text,8))
|
|
31
|
+
This is \\
|
|
32
|
+
a long l\\
|
|
33
|
+
ine.
|
|
34
|
+
This is \\
|
|
35
|
+
an even \\
|
|
36
|
+
longer l\\
|
|
37
|
+
ine.
|
|
38
|
+
<BLANKLINE>
|
|
39
|
+
|
|
40
|
+
>>> join_long_lines(break_long_lines(text, 8)) == text
|
|
41
|
+
True
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
def split_ending_backslash(line):
|
|
45
|
+
if len(line) > 0 and line[-1] == '\\':
|
|
46
|
+
return line[:-1], '\\\\\n'
|
|
47
|
+
return line, ''
|
|
48
|
+
|
|
49
|
+
def process_line(line):
|
|
50
|
+
line_without, ending_backslash = split_ending_backslash(line)
|
|
51
|
+
|
|
52
|
+
return ('\\\n'.join(_break_line_iterator(line_without, line_length)) +
|
|
53
|
+
ending_backslash)
|
|
54
|
+
|
|
55
|
+
return '\n'.join(process_line(line) for line in text.split('\n'))
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def join_long_lines(text):
|
|
59
|
+
"""
|
|
60
|
+
Deletes all backslash newline sequences. Inverse of break_long_lines.
|
|
61
|
+
"""
|
|
62
|
+
return text.replace('\\\n', '')
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def join_long_lines_deleting_whitespace(text):
|
|
66
|
+
"""
|
|
67
|
+
Similar to join_long_lines, but also deletes whitespace following a
|
|
68
|
+
backslash newline sequence.
|
|
69
|
+
|
|
70
|
+
Programs such as magma break long integers by introducing a backslash
|
|
71
|
+
newline sequence and inserting extra whitespace for formatting.
|
|
72
|
+
join_long_lines_deleting_whitespace can be used to undo this and parse
|
|
73
|
+
the input normally.
|
|
74
|
+
|
|
75
|
+
>>> join_long_lines_deleting_whitespace("Text:\\\\\\n More")
|
|
76
|
+
'Text:More'
|
|
77
|
+
>>> join_long_lines_deleting_whitespace(" 1234\\\\\\n 5678").strip()
|
|
78
|
+
'12345678'
|
|
79
|
+
"""
|
|
80
|
+
return re.sub(r'\\\n\s*', '', text)
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def quote_ascii_text(text):
|
|
84
|
+
r"""
|
|
85
|
+
Put the text in double quotes after escapes newlines, backslashes and
|
|
86
|
+
double quotes. Giving the result of quote_ascii_text to eval should give
|
|
87
|
+
the original string back if the string contained only ASCII characters.
|
|
88
|
+
|
|
89
|
+
Similarly, giving the result of quote_ascii_text to magma's print,
|
|
90
|
+
should give the original string back (magma's print might wrap long lines
|
|
91
|
+
though).
|
|
92
|
+
|
|
93
|
+
>>> text = 'Backslash:\\, Newline:\n, Quote: "'
|
|
94
|
+
>>> quote_ascii_text(text)
|
|
95
|
+
'"Backslash:\\\\, Newline:\\n, Quote: \\""'
|
|
96
|
+
>>> eval(quote_ascii_text(text)) == text
|
|
97
|
+
True
|
|
98
|
+
"""
|
|
99
|
+
|
|
100
|
+
def process_char(char):
|
|
101
|
+
if char == '\n':
|
|
102
|
+
return '\\n'
|
|
103
|
+
if char == '\\':
|
|
104
|
+
return '\\\\'
|
|
105
|
+
if char == '"':
|
|
106
|
+
return '\\"'
|
|
107
|
+
return char
|
|
108
|
+
|
|
109
|
+
return '"' + ''.join(process_char(c) for c in text) + '"'
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
##########################################################################
|
|
113
|
+
# Iterators going through all tuples of integers with a certain property
|
|
114
|
+
|
|
115
|
+
def _lists_with_fixed_sum_iterator(N, l):
|
|
116
|
+
if l == 1:
|
|
117
|
+
yield [N]
|
|
118
|
+
else:
|
|
119
|
+
for i in range(N + 1):
|
|
120
|
+
for j in _lists_with_fixed_sum_iterator(N - i, l - 1):
|
|
121
|
+
yield [i] + j
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
def tuples_with_fixed_sum_iterator(N, l, skipVertices=False):
|
|
125
|
+
"""
|
|
126
|
+
Iterates through all l-tuples of non-negative integers summing up to N in
|
|
127
|
+
lexicographic order. If skipVertices is True, N-tuples containing N, i.e.,
|
|
128
|
+
of the form (0...0,N,0...0), are skipped.
|
|
129
|
+
|
|
130
|
+
>>> list(tuples_with_fixed_sum_iterator(2, 3))
|
|
131
|
+
[(0, 0, 2), (0, 1, 1), (0, 2, 0), (1, 0, 1), (1, 1, 0), (2, 0, 0)]
|
|
132
|
+
>>> list(tuples_with_fixed_sum_iterator(2, 3, skipVertices = True))
|
|
133
|
+
[(0, 1, 1), (1, 0, 1), (1, 1, 0)]
|
|
134
|
+
|
|
135
|
+
"""
|
|
136
|
+
for i in _lists_with_fixed_sum_iterator(N, l):
|
|
137
|
+
if not (skipVertices and N in i):
|
|
138
|
+
yield tuple(i)
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
def triples_with_fixed_sum_iterator(N, skipVertices=False):
|
|
142
|
+
"""
|
|
143
|
+
Similar to tuples_with_fixed_sum_iterator for triples.
|
|
144
|
+
|
|
145
|
+
>>> list(triples_with_fixed_sum_iterator(2, skipVertices = True))
|
|
146
|
+
[(0, 1, 1), (1, 0, 1), (1, 1, 0)]
|
|
147
|
+
"""
|
|
148
|
+
return tuples_with_fixed_sum_iterator(N, 3, skipVertices=skipVertices)
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
def quadruples_with_fixed_sum_iterator(N, skipVertices=False):
|
|
152
|
+
"""
|
|
153
|
+
Similar to tuples_with_fixed_sum_iterator for quadruples.
|
|
154
|
+
|
|
155
|
+
>>> list(quadruples_with_fixed_sum_iterator(2, skipVertices = True))
|
|
156
|
+
[(0, 0, 1, 1), (0, 1, 0, 1), (0, 1, 1, 0), (1, 0, 0, 1), (1, 0, 1, 0), (1, 1, 0, 0)]
|
|
157
|
+
"""
|
|
158
|
+
return tuples_with_fixed_sum_iterator(N, 4, skipVertices=skipVertices)
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
############################################################################
|
|
162
|
+
# A subclass of Python list such that calling a method calls the method on
|
|
163
|
+
# every object in the list.
|
|
164
|
+
|
|
165
|
+
def _flatten(l, depth=1):
|
|
166
|
+
"""
|
|
167
|
+
Flatten a list or subclass of list. It will flatten the
|
|
168
|
+
list until the given depth.
|
|
169
|
+
|
|
170
|
+
>>> _flatten([0, [1, 2], [[3, 4], 5]], depth = 1)
|
|
171
|
+
[0, 1, 2, [3, 4], 5]
|
|
172
|
+
>>> _flatten([0, [1, 2], [[3, 4], 5]], depth = 2)
|
|
173
|
+
[0, 1, 2, 3, 4, 5]
|
|
174
|
+
"""
|
|
175
|
+
if depth == 0:
|
|
176
|
+
return l
|
|
177
|
+
|
|
178
|
+
result = []
|
|
179
|
+
|
|
180
|
+
for e in l:
|
|
181
|
+
if isinstance(e, list):
|
|
182
|
+
result += _flatten(e, depth - 1)
|
|
183
|
+
else:
|
|
184
|
+
result.append(e)
|
|
185
|
+
|
|
186
|
+
if isinstance(l, MethodMappingList):
|
|
187
|
+
return type(l)(result, p=l)
|
|
188
|
+
|
|
189
|
+
return result
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
class MethodMappingList(list):
|
|
193
|
+
"""
|
|
194
|
+
Like a list but allows calling a method on it means that it is called
|
|
195
|
+
for all its elements.
|
|
196
|
+
|
|
197
|
+
>>> a = MethodMappingList([2+1j, 3+2j, 4+2j])
|
|
198
|
+
>>> a.conjugate()
|
|
199
|
+
[(2-1j), (3-2j), (4-2j)]
|
|
200
|
+
|
|
201
|
+
This can be nested:
|
|
202
|
+
|
|
203
|
+
>>> b = MethodMappingList([1+1j, a])
|
|
204
|
+
>>> b.conjugate()
|
|
205
|
+
[(1-1j), [(2-1j), (3-2j), (4-2j)]]
|
|
206
|
+
|
|
207
|
+
Also supports flattening:
|
|
208
|
+
|
|
209
|
+
>>> b.flatten()
|
|
210
|
+
[(1+1j), (2+1j), (3+2j), (4+2j)]
|
|
211
|
+
|
|
212
|
+
"""
|
|
213
|
+
|
|
214
|
+
def __init__(self, l=[], p=None):
|
|
215
|
+
super().__init__(l)
|
|
216
|
+
|
|
217
|
+
def __call__(self, *args, **kwargs):
|
|
218
|
+
return type(self)([elt(*args, **kwargs) for elt in self],
|
|
219
|
+
p=self)
|
|
220
|
+
|
|
221
|
+
def __getattr__(self, attr):
|
|
222
|
+
return type(self)([getattr(e, attr) for e in self],
|
|
223
|
+
p=self)
|
|
224
|
+
|
|
225
|
+
def flatten(self, depth=1):
|
|
226
|
+
return _flatten(self, depth=depth)
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
def _test():
|
|
230
|
+
"""
|
|
231
|
+
>>> text = "Line\\\\nLong Line\\\\\\nVery long line and...\\nHere \\n\\n \\n\\n \\n \\\\n"
|
|
232
|
+
>>> for i in range(1, 80):
|
|
233
|
+
... if not join_long_lines(break_long_lines(text, i)) == text:
|
|
234
|
+
... raise Exception("Test failure")
|
|
235
|
+
"""
|
|
236
|
+
pass
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
from ..exceptions import NonorientableManifoldError
|
|
2
|
+
from . import cohomology_fractal
|
|
3
|
+
|
|
4
|
+
try:
|
|
5
|
+
from ..gui import ViewerWindow
|
|
6
|
+
from .inside_viewer import InsideViewer
|
|
7
|
+
except ImportError as e:
|
|
8
|
+
InsideViewer = None
|
|
9
|
+
_importErrorRaytracing = str(e)
|
|
10
|
+
|
|
11
|
+
from typing import Sequence
|
|
12
|
+
|
|
13
|
+
def inside_view(self, cohomology_class=None, geodesics : Sequence[str]=[]):
|
|
14
|
+
r"""
|
|
15
|
+
Show raytraced inside view of hyperbolic manifold. See
|
|
16
|
+
`images <https://im.icerm.brown.edu/portfolio/snappy-views/>`_
|
|
17
|
+
and `demo video <https://youtu.be/CAERhmUCkRs>`_.
|
|
18
|
+
|
|
19
|
+
>>> M = Manifold("m004")
|
|
20
|
+
>>> M.inside_view() #doctest: +CYMODERNOPENGL
|
|
21
|
+
|
|
22
|
+
Or show the cohomology fractal:
|
|
23
|
+
|
|
24
|
+
>>> M = Manifold("m004")
|
|
25
|
+
>>> M.inside_view(cohomology_class = 0) #doctest: +CYMODERNOPENGL
|
|
26
|
+
|
|
27
|
+
The cohomology class in :math:`H^2(M, \partial M; \mathbb{R})` producing the
|
|
28
|
+
cohomology fractal can be specified as a cocycle or using an automatically
|
|
29
|
+
computed basis (of, say, length ``n``). Thus, ``cohomology_class`` can be
|
|
30
|
+
one of the following.
|
|
31
|
+
|
|
32
|
+
- An integer ``i`` between 0 and ``n`` - 1 to pick the ``i``-th basis
|
|
33
|
+
vector.
|
|
34
|
+
- An array of length ``n`` specifying the cohomology class as linear
|
|
35
|
+
combination of basis vectors.
|
|
36
|
+
- A weight for each face of each tetrahedron.
|
|
37
|
+
|
|
38
|
+
Geodesics can be specified as words in the unsimplified fundamental group:
|
|
39
|
+
|
|
40
|
+
>>> M = Manifold("m004")
|
|
41
|
+
>>> M.inside_view(geodesics=['a', 'bC']) #doctest: +CYMODERNOPENGL
|
|
42
|
+
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
if InsideViewer is None:
|
|
46
|
+
raise RuntimeError("Raytraced inside view not imported; "
|
|
47
|
+
"Tk or CyOpenGL is probably missing "
|
|
48
|
+
"(original error : %s)" % _importErrorRaytracing)
|
|
49
|
+
|
|
50
|
+
if not self.is_orientable():
|
|
51
|
+
raise NonorientableManifoldError("Manifold.inside_view", self)
|
|
52
|
+
|
|
53
|
+
weights, cohomology_basis, cohomology_class = (
|
|
54
|
+
cohomology_fractal.compute_weights_basis_class(
|
|
55
|
+
self, cohomology_class))
|
|
56
|
+
|
|
57
|
+
return ViewerWindow(
|
|
58
|
+
InsideViewer,
|
|
59
|
+
self,
|
|
60
|
+
title="Inside view of %s" % self.name(),
|
|
61
|
+
weights=weights,
|
|
62
|
+
cohomology_basis=cohomology_basis,
|
|
63
|
+
cohomology_class=cohomology_class,
|
|
64
|
+
geodesics=geodesics)
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"""
|
|
2
|
+
from snappy import *; from snappy.raytracing.additional_horospheres import *
|
|
3
|
+
|
|
4
|
+
M=Manifold("t10879")
|
|
5
|
+
M=CubicalOrientableCuspedCensus[0]
|
|
6
|
+
v = M.inside_view()
|
|
7
|
+
a=AdditionalHorospheres(M)
|
|
8
|
+
v.view.widget.additional_structures['horospheres'] = a; v.view.widget._update_shader()
|
|
9
|
+
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
from ..geometric_structure.cusp_neighborhood.tiles_for_cusp_neighborhood import mcomplex_for_tiling_cusp_neighborhoods
|
|
13
|
+
from .pack import pack_tet_data
|
|
14
|
+
from .upper_halfspace_utilities import add_coordinate_transform_to_mcomplex
|
|
15
|
+
|
|
16
|
+
class AdditionalHorospheres:
|
|
17
|
+
def __init__(self, manifold):
|
|
18
|
+
|
|
19
|
+
self.mcomplex = mcomplex_for_tiling_cusp_neighborhoods(
|
|
20
|
+
manifold, bits_prec = 53, verified = False)
|
|
21
|
+
add_coordinate_transform_to_mcomplex(self.mcomplex)
|
|
22
|
+
|
|
23
|
+
self.num_tetrahedra = manifold.num_tetrahedra()
|
|
24
|
+
self.RF = manifold.tetrahedra_shapes('rect')[0].real().parent()
|
|
25
|
+
self.cusp_areas = [ 1.0 for v in self.mcomplex.Vertices ]
|
|
26
|
+
|
|
27
|
+
self._num = 0
|
|
28
|
+
|
|
29
|
+
self.compute_bindings()
|
|
30
|
+
|
|
31
|
+
def get_compile_time_defs(self):
|
|
32
|
+
if self._num > 0:
|
|
33
|
+
num = max(100, self._num)
|
|
34
|
+
else:
|
|
35
|
+
num = 0
|
|
36
|
+
|
|
37
|
+
return { 'num_additional_horospheres' : num }
|
|
38
|
+
|
|
39
|
+
def get_uniform_bindings(self):
|
|
40
|
+
return self._uniform_bindings
|
|
41
|
+
|
|
42
|
+
def compute_bindings(self):
|
|
43
|
+
|
|
44
|
+
tets_to_data = [ [] for i in range(self.num_tetrahedra) ]
|
|
45
|
+
|
|
46
|
+
for cusp_index, v in enumerate(self.mcomplex.Vertices):
|
|
47
|
+
scale = (self.RF(self.cusp_areas[cusp_index]) / v.cusp_area).sqrt()
|
|
48
|
+
|
|
49
|
+
d = scale.log()
|
|
50
|
+
|
|
51
|
+
for tile in v.tiles():
|
|
52
|
+
if tile.lower_bound_distance > d:
|
|
53
|
+
break
|
|
54
|
+
|
|
55
|
+
tet = tile.lifted_tetrahedron.tet
|
|
56
|
+
|
|
57
|
+
s = (
|
|
58
|
+
tet.to_coordinates_in_symmetric_tet * tile.inverse_lifted_geometric_object.defining_vec) / scale
|
|
59
|
+
|
|
60
|
+
tets_to_data[tet.Index].append(
|
|
61
|
+
{ 'Vec' : ('vec4', s),
|
|
62
|
+
'CuspIndex' : ('int', cusp_index) })
|
|
63
|
+
|
|
64
|
+
self._uniform_bindings, self._num = pack_tet_data('additionalHorospheres.horosphere', tets_to_data)
|