snappy 3.2__cp310-cp310-macosx_10_12_x86_64.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/SnapPy.ico +0 -0
- snappy/SnapPy.png +0 -0
- snappy/SnapPyHP.cpython-310-darwin.so +0 -0
- snappy/__init__.py +760 -0
- snappy/app.py +605 -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 +38 -0
- snappy/cusps/cusp_area_matrix.py +101 -0
- snappy/cusps/cusp_areas_from_matrix.py +173 -0
- 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 +454 -0
- snappy/db_utilities.py +79 -0
- snappy/decorated_isosig.py +710 -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/geodesics.jpg +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 +51 -0
- snappy/doc/_sources/credits.rst.txt +75 -0
- snappy/doc/_sources/development.rst.txt +259 -0
- snappy/doc/_sources/index.rst.txt +182 -0
- snappy/doc/_sources/installing.rst.txt +247 -0
- snappy/doc/_sources/manifold.rst.txt +6 -0
- snappy/doc/_sources/manifoldhp.rst.txt +46 -0
- snappy/doc/_sources/news.rst.txt +355 -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 +925 -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 +156 -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 +199 -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 +620 -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 +427 -0
- snappy/doc/credits.html +181 -0
- snappy/doc/development.html +384 -0
- snappy/doc/genindex.html +1331 -0
- snappy/doc/index.html +262 -0
- snappy/doc/installing.html +346 -0
- snappy/doc/manifold.html +3452 -0
- snappy/doc/manifoldhp.html +180 -0
- snappy/doc/news.html +388 -0
- snappy/doc/objects.inv +0 -0
- snappy/doc/other.html +161 -0
- snappy/doc/platonic_census.html +375 -0
- snappy/doc/plink.html +210 -0
- snappy/doc/ptolemy.html +254 -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 +1211 -0
- snappy/doc/todo.html +166 -0
- snappy/doc/triangulation.html +1584 -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 +126 -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 +197 -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 +123 -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 +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/geometric_structure/geodesic/fixed_points.py +93 -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 +101 -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 +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/info_icon.gif +0 -0
- snappy/infowindow.py +65 -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/manifolds/HTWKnots/alternating.gz +0 -0
- snappy/manifolds/HTWKnots/nonalternating.gz +0 -0
- snappy/manifolds/__init__.py +3 -0
- snappy/math_basics.py +176 -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 +857 -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 +1029 -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 +123 -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 +117 -0
- snappy/settings.py +409 -0
- snappy/shell.py +53 -0
- snappy/snap/__init__.py +114 -0
- snappy/snap/character_varieties.py +375 -0
- snappy/snap/find_field.py +372 -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 +702 -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.py +668 -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 +134 -0
- snappy/snap/utilities.py +288 -0
- snappy/test.py +209 -0
- 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 +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-darwin.so +0 -0
- snappy/upper_halfspace/__init__.py +146 -0
- snappy/upper_halfspace/ideal_point.py +26 -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/maximal_cusp_area_matrix/__init__.py +46 -0
- snappy/verify/maximal_cusp_area_matrix/cusp_tiling_engine.py +419 -0
- snappy/verify/maximal_cusp_area_matrix/cusp_translate_engine.py +153 -0
- snappy/verify/real_algebra.py +286 -0
- snappy/verify/shapes.py +25 -0
- snappy/verify/short_slopes.py +200 -0
- snappy/verify/square_extensions.py +1005 -0
- snappy/verify/test.py +78 -0
- snappy/verify/upper_halfspace/__init__.py +9 -0
- snappy/verify/upper_halfspace/extended_matrix.py +100 -0
- snappy/verify/upper_halfspace/finite_point.py +283 -0
- snappy/verify/upper_halfspace/ideal_point.py +426 -0
- snappy/verify/volume.py +128 -0
- snappy/version.py +2 -0
- snappy-3.2.dist-info/METADATA +58 -0
- snappy-3.2.dist-info/RECORD +503 -0
- snappy-3.2.dist-info/WHEEL +5 -0
- snappy-3.2.dist-info/entry_points.txt +2 -0
- snappy-3.2.dist-info/top_level.txt +28 -0
@@ -0,0 +1,414 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
<!DOCTYPE html>
|
4
|
+
<html class="writer-html5" lang="en" data-content_root="./">
|
5
|
+
<head>
|
6
|
+
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
7
|
+
|
8
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
9
|
+
<title>Step-by-step examples: Part 3 — SnapPy 3.2 documentation</title>
|
10
|
+
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
|
11
|
+
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=e59714d7" />
|
12
|
+
<link rel="stylesheet" type="text/css" href="_static/snappy_sphinx_rtd_theme.css?v=1b8ec2a8" />
|
13
|
+
|
14
|
+
|
15
|
+
<link rel="shortcut icon" href="_static/SnapPy.ico"/>
|
16
|
+
<script src="_static/jquery.js?v=5d32c60e"></script>
|
17
|
+
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
18
|
+
<script src="_static/documentation_options.js?v=828ea960"></script>
|
19
|
+
<script src="_static/doctools.js?v=9a2dae69"></script>
|
20
|
+
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
|
21
|
+
<script 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="Step-by-step examples: Part 4" href="ptolemy_examples4.html" />
|
25
|
+
<link rel="prev" title="Step-by-step examples: Part 2" href="ptolemy_examples2.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 role="search">
|
41
|
+
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
42
|
+
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
43
|
+
<input type="hidden" name="check_keywords" value="yes" />
|
44
|
+
<input type="hidden" name="area" value="default" />
|
45
|
+
</form>
|
46
|
+
</div>
|
47
|
+
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
48
|
+
<ul class="current">
|
49
|
+
<li class="toctree-l1"><a class="reference internal" href="installing.html">Installing SnapPy</a></li>
|
50
|
+
<li class="toctree-l1"><a class="reference internal" href="screenshots.html">Screenshots: SnapPy in action</a></li>
|
51
|
+
<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorial</a></li>
|
52
|
+
<li class="toctree-l1"><a class="reference internal" href="snappy.html">The snappy module and its classes</a></li>
|
53
|
+
<li class="toctree-l1"><a class="reference internal" href="plink.html">Using SnapPy’s link editor</a></li>
|
54
|
+
<li class="toctree-l1"><a class="reference internal" href="spherogram.html">Links: planar diagrams and invariants</a></li>
|
55
|
+
<li class="toctree-l1"><a class="reference internal" href="snap.html">Number theory of hyperbolic 3-manifolds</a></li>
|
56
|
+
<li class="toctree-l1"><a class="reference internal" href="verify.html">Verified computations</a></li>
|
57
|
+
<li class="toctree-l1 current"><a class="reference internal" href="other.html">Other components</a><ul class="current">
|
58
|
+
<li class="toctree-l2 current"><a class="reference internal" href="other.html#ptolemy-module">Ptolemy module</a><ul class="current">
|
59
|
+
<li class="toctree-l3 current"><a class="reference internal" href="ptolemy.html">The ptolemy module</a><ul class="current">
|
60
|
+
<li class="toctree-l4"><a class="reference internal" href="ptolemy.html#what-is-the-ptolemy-module">What is the ptolemy module?</a></li>
|
61
|
+
<li class="toctree-l4 current"><a class="reference internal" href="ptolemy.html#documentation">Documentation</a><ul class="current">
|
62
|
+
<li class="toctree-l5"><a class="reference internal" href="ptolemy_prelim.html">Mathematical preliminaries</a></li>
|
63
|
+
<li class="toctree-l5"><a class="reference internal" href="ptolemy_examples1.html">Step-by-step examples: Part 1</a></li>
|
64
|
+
<li class="toctree-l5"><a class="reference internal" href="ptolemy_examples2.html">Step-by-step examples: Part 2</a></li>
|
65
|
+
<li class="toctree-l5 current"><a class="current reference internal" href="#">Step-by-step examples: Part 3</a></li>
|
66
|
+
<li class="toctree-l5"><a class="reference internal" href="ptolemy_examples4.html">Step-by-step examples: Part 4</a></li>
|
67
|
+
<li class="toctree-l5"><a class="reference internal" href="ptolemy_classes.html">Classes</a></li>
|
68
|
+
</ul>
|
69
|
+
</li>
|
70
|
+
</ul>
|
71
|
+
</li>
|
72
|
+
</ul>
|
73
|
+
</li>
|
74
|
+
<li class="toctree-l2"><a class="reference internal" href="other.html#twister">Twister</a></li>
|
75
|
+
</ul>
|
76
|
+
</li>
|
77
|
+
<li class="toctree-l1"><a class="reference internal" href="news.html">News</a></li>
|
78
|
+
<li class="toctree-l1"><a class="reference internal" href="credits.html">Credits</a></li>
|
79
|
+
<li class="toctree-l1"><a class="reference internal" href="bugs.html">Reporting bugs and other problems</a></li>
|
80
|
+
<li class="toctree-l1"><a class="reference internal" href="todo.html">To Do List</a></li>
|
81
|
+
<li class="toctree-l1"><a class="reference internal" href="development.html">Development Basics</a></li>
|
82
|
+
</ul>
|
83
|
+
|
84
|
+
</div>
|
85
|
+
</div>
|
86
|
+
</nav>
|
87
|
+
|
88
|
+
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
89
|
+
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
90
|
+
<a href="index.html">SnapPy</a>
|
91
|
+
</nav>
|
92
|
+
|
93
|
+
<div class="wy-nav-content">
|
94
|
+
<div class="rst-content">
|
95
|
+
<div role="navigation" aria-label="Page navigation">
|
96
|
+
<ul class="wy-breadcrumbs">
|
97
|
+
<li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
|
98
|
+
<li class="breadcrumb-item"><a href="other.html">Other components</a></li>
|
99
|
+
<li class="breadcrumb-item"><a href="ptolemy.html">The ptolemy module</a></li>
|
100
|
+
<li class="breadcrumb-item active">Step-by-step examples: Part 3</li>
|
101
|
+
<li class="wy-breadcrumbs-aside">
|
102
|
+
</li>
|
103
|
+
</ul>
|
104
|
+
<hr/>
|
105
|
+
</div>
|
106
|
+
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
107
|
+
<div itemprop="articleBody">
|
108
|
+
|
109
|
+
<section id="step-by-step-examples-part-3">
|
110
|
+
<h1>Step-by-step examples: Part 3<a class="headerlink" href="#step-by-step-examples-part-3" title="Link to this heading"></a></h1>
|
111
|
+
<section id="computing-solutions-with-magma-or-sage-vs-retrieving-solutions">
|
112
|
+
<span id="ptolemy-example-using-magma-sage"></span><h2>Computing solutions with magma or sage vs retrieving solutions<a class="headerlink" href="#computing-solutions-with-magma-or-sage-vs-retrieving-solutions" title="Link to this heading"></a></h2>
|
113
|
+
<p>So far, we querried the database for solutions to a Ptolemy variety:</p>
|
114
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">p</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">"m011"</span><span class="p">)</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
|
115
|
+
<span class="gp">>>> </span><span class="n">p</span><span class="o">.</span><span class="n">retrieve_solutions</span><span class="p">()</span>
|
116
|
+
<span class="go">Trying to retrieve solutions from http://ptolemy.unhyperbolic.org/data/pgl2/OrientableCuspedCensus/03_tetrahedra/m011__sl2_c0.magma_out ...</span>
|
117
|
+
<span class="go">Parsing...</span>
|
118
|
+
<span class="go">[PtolemyCoordinates(</span>
|
119
|
+
<span class="go"> {'c_0011_0': 1,</span>
|
120
|
+
<span class="go"> 'c_0011_1': -1,</span>
|
121
|
+
<span class="go"> 'c_0011_2': -1,</span>
|
122
|
+
<span class="go"> 'c_0101_0': -1,</span>
|
123
|
+
<span class="go"> 'c_0101_1': Mod(x^2 + x, x^3 + 2*x^2 + x + 1),</span>
|
124
|
+
<span class="go"> ...</span>
|
125
|
+
<span class="go"> 's_3_2': 1},</span>
|
126
|
+
<span class="go"> is_numerical = False, ...)]</span>
|
127
|
+
</pre></div>
|
128
|
+
</div>
|
129
|
+
<p>We can use <code class="docutils literal notranslate"><span class="pre">compute_solutions</span></code> instead of <code class="docutils literal notranslate"><span class="pre">retrieve_solutions</span></code> to actually compute the solutions ourselves (for example, for a non-census triangulation not in the database). Currently, we support two engines:</p>
|
130
|
+
<ul class="simple">
|
131
|
+
<li><p><a class="reference external" href="http://www.sagemath.org/">sage</a> (which is free, but can only solve a fairly limited number of Ptolemy varieties)</p></li>
|
132
|
+
<li><p><a class="reference external" href="http://magma.maths.usyd.edu.au/magma/">magma</a></p></li>
|
133
|
+
</ul>
|
134
|
+
<p>If you are inside sage:</p>
|
135
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">p</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">"m011"</span><span class="p">)</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
|
136
|
+
<span class="gp">>>> </span><span class="n">p</span><span class="o">.</span><span class="n">compute_solutions</span><span class="p">(</span><span class="n">engine</span> <span class="o">=</span> <span class="s1">'sage'</span><span class="p">)</span>
|
137
|
+
<span class="go">[PtolemyCoordinates(</span>
|
138
|
+
<span class="go"> {'c_0011_0': 1,</span>
|
139
|
+
<span class="go"> 'c_0011_1': -1,</span>
|
140
|
+
<span class="go"> 'c_0011_2': -1,</span>
|
141
|
+
<span class="go"> 'c_0101_0': -1,</span>
|
142
|
+
<span class="go"> 'c_0101_1': Mod(x^2 + x, x^3 + 2*x^2 + x + 1),</span>
|
143
|
+
<span class="go"> ...</span>
|
144
|
+
<span class="go"> 's_3_2': 1},</span>
|
145
|
+
<span class="go"> is_numerical = False, ...)]</span>
|
146
|
+
</pre></div>
|
147
|
+
</div>
|
148
|
+
<p>If you have magma installed:</p>
|
149
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">p</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">"m011"</span><span class="p">)</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
|
150
|
+
<span class="gp">>>> </span><span class="n">p</span><span class="o">.</span><span class="n">compute_solutions</span><span class="p">(</span><span class="n">engine</span> <span class="o">=</span> <span class="s1">'magma'</span><span class="p">,</span> <span class="n">verbose</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span>
|
151
|
+
<span class="go">Writing to file: /tmp/tmppNSc8S/m011__sl2_c0.magma</span>
|
152
|
+
<span class="go">Magma's output in: /tmp/tmppNSc8S/m011__sl2_c0.magma_out</span>
|
153
|
+
<span class="go">Command: ulimit -m 732421; echo | magma "/tmp/tmppNSc8S/m011__sl2_c0.magma" > "/tmp/tmppNSc8S/m011__sl2_c0.magma_out"</span>
|
154
|
+
<span class="go">Starting magma...</span>
|
155
|
+
<span class="go">magma finished.</span>
|
156
|
+
<span class="go">Parsing magma result...</span>
|
157
|
+
<span class="go">[PtolemyCoordinates(</span>
|
158
|
+
<span class="go"> {'c_0011_0': 1,</span>
|
159
|
+
<span class="go"> 'c_0011_1': -1,</span>
|
160
|
+
<span class="go"> 'c_0011_2': -1,</span>
|
161
|
+
<span class="go"> 'c_0101_0': -1,</span>
|
162
|
+
<span class="go"> 'c_0101_1': Mod(x^2 + x, x^3 + 2*x^2 + x + 1),</span>
|
163
|
+
<span class="go"> ...</span>
|
164
|
+
<span class="go"> 's_3_2': 1},</span>
|
165
|
+
<span class="go"> is_numerical = False, ...)]</span>
|
166
|
+
</pre></div>
|
167
|
+
</div>
|
168
|
+
<p>To get an idea of what Ptolemy varieties magma can still handle, have a look at the <a class="reference external" href="http://ptolemy.unhyperbolic.org/html/summary.html">database</a>: for <em>N</em> = 2, the computations up to 12 tetrahedra only took</p>
|
169
|
+
<p><strong>Remark:</strong> The magma engine is not expected to work under windows. It will also fail if magma is not installed or the magma executable cannot be found. The ptolemy module creates a temporary file (<code class="docutils literal notranslate"><span class="pre">m011__sl2_c0</span></code> here) and also gives the command it tried to run to process the file through magma. If you believe that magma is installed correctly on your system but encounter an error, you can try to run the command yourself to understand better what is going on. Feel free to report a bug (to enischte at gmail dot com) including the temporary files (<code class="docutils literal notranslate"><span class="pre">m011__sl2_c0</span></code> and <code class="docutils literal notranslate"><span class="pre">m011__sl2_c0.out</span></code> here) and any other error messages.</p>
|
170
|
+
<p><strong>Remark:</strong> If no engine is specified, it is assumed to be sage when used inside sage and magma instead.</p>
|
171
|
+
</section>
|
172
|
+
<section id="computing-the-complex-volume">
|
173
|
+
<span id="ptolemy-example-complex-volume"></span><h2>Computing the complex volume<a class="headerlink" href="#computing-the-complex-volume" title="Link to this heading"></a></h2>
|
174
|
+
<p>Similar to <code class="docutils literal notranslate"><span class="pre">volume_numerical</span></code>, we can compute the complex volume (volume + i Chern-Simons) for all representations (that are <a class="reference internal" href="ptolemy_prelim.html#ptolemy-generically-decorated"><span class="std std-ref">generically decorated</span></a>).</p>
|
175
|
+
<p>Here is an example computing the solutions to the Ptolemy variety ourselves:</p>
|
176
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">Manifold</span><span class="p">(</span><span class="s2">"m011"</span><span class="p">)</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="s1">'all'</span><span class="p">)</span><span class="o">.</span><span class="n">compute_solutions</span><span class="p">()</span><span class="o">.</span><span class="n">complex_volume_numerical</span><span class="p">()</span>
|
177
|
+
<span class="go">[[[-4.30211422042248 E-16 + 0.725471193740844*I,</span>
|
178
|
+
<span class="go"> -0.942707362776931 + 0.459731436553693*I,</span>
|
179
|
+
<span class="go"> 0.942707362776931 + 0.459731436553693*I]],</span>
|
180
|
+
<span class="go"> [[4.64255370258293 E-15 + 0.680993020093457*I,</span>
|
181
|
+
<span class="go"> 3.94215909915729 E-15 + 0.312682687518267*I,</span>
|
182
|
+
<span class="go"> -2.78183391239608 - 0.496837853805869*I,</span>
|
183
|
+
<span class="go"> 2.78183391239608 - 0.496837853805869*I]]]</span>
|
184
|
+
</pre></div>
|
185
|
+
</div>
|
186
|
+
<p>And here the same example retrieving solutions from the database:</p>
|
187
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">Manifold</span><span class="p">(</span><span class="s2">"m011"</span><span class="p">)</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="s1">'all'</span><span class="p">)</span><span class="o">.</span><span class="n">retrieve_solutions</span><span class="p">()</span><span class="o">.</span><span class="n">complex_volume_numerical</span><span class="p">()</span>
|
188
|
+
<span class="go">Trying to retrieve solutions from http://ptolemy.unhyperbolic.org/data/pgl2/OrientableCuspedCensus/03_tetrahedra/m011__sl2_c0.magma_out ...</span>
|
189
|
+
<span class="go">Parsing...</span>
|
190
|
+
<span class="go">Trying to retrieve solutions from http://ptolemy.unhyperbolic.org/data/pgl2/OrientableCuspedCensus/03_tetrahedra/m011__sl2_c1.magma_out ...</span>
|
191
|
+
<span class="go">Parsing...</span>
|
192
|
+
<span class="go">[[[-4.30211422042248 E-16 + 0.725471193740844*I,</span>
|
193
|
+
<span class="go">...</span>
|
194
|
+
<span class="go"> 2.78183391239608 - 0.496837853805869*I]]]</span>
|
195
|
+
</pre></div>
|
196
|
+
</div>
|
197
|
+
</section>
|
198
|
+
<section id="computing-the-matrices-for-a-different-presentation">
|
199
|
+
<span id="ptolemy-detailed-example-matrices"></span><h2>Computing the matrices for a different presentation<a class="headerlink" href="#computing-the-matrices-for-a-different-presentation" title="Link to this heading"></a></h2>
|
200
|
+
<p>The <a class="reference internal" href="triangulation.html#snappy.Triangulation.fundamental_group" title="snappy.Triangulation.fundamental_group"><code class="xref py py-meth docutils literal notranslate"><span class="pre">fundamental_group()</span></code></a> method of a SnapPy triangulation can yield different presentations by supplying optional arguments such as <code class="docutils literal notranslate"><span class="pre">simplify_presentation</span></code> and <code class="docutils literal notranslate"><span class="pre">minimize_number_of_generators</span></code>. If we have a word in one of these presentations and want to evaluate its image under the representation, we need to supply the presentation as follows:</p>
|
201
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">M</span><span class="o">=</span><span class="n">Manifold</span><span class="p">(</span><span class="s2">"m003"</span><span class="p">)</span>
|
202
|
+
<span class="gp">>>> </span><span class="n">sol</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span><span class="o">.</span><span class="n">retrieve_solutions</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span>
|
203
|
+
<span class="gp">>>> </span><span class="n">G</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">fundamental_group</span><span class="p">(</span><span class="n">simplify_presentation</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span>
|
204
|
+
<span class="gp">>>> </span><span class="n">sol</span><span class="o">.</span><span class="n">evaluate_word</span><span class="p">(</span><span class="s1">'a'</span><span class="p">,</span> <span class="n">G</span><span class="p">)</span>
|
205
|
+
</pre></div>
|
206
|
+
</div>
|
207
|
+
<p>Again, we can check that the representation actually assigns the identity to all relators:</p>
|
208
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">G</span>
|
209
|
+
<span class="go">Generators:</span>
|
210
|
+
<span class="go"> a,b,c</span>
|
211
|
+
<span class="go">Relators:</span>
|
212
|
+
<span class="go"> BCaC</span>
|
213
|
+
<span class="go"> AbCbA</span>
|
214
|
+
<span class="gp">>>> </span><span class="n">sol</span><span class="o">.</span><span class="n">evaluate_word</span><span class="p">(</span><span class="s1">'AbCbA'</span><span class="p">,</span> <span class="n">G</span><span class="p">)</span>
|
215
|
+
<span class="go">[[Mod(1, x^2 - x - 1), 0], [0, Mod(1, x^2 - x - 1)]]</span>
|
216
|
+
<span class="gp">>>> </span><span class="k">for</span> <span class="n">relator</span> <span class="ow">in</span> <span class="n">G</span><span class="o">.</span><span class="n">relators</span><span class="p">():</span>
|
217
|
+
<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="n">sol</span><span class="o">.</span><span class="n">evaluate_word</span><span class="p">(</span><span class="n">relator</span><span class="p">,</span> <span class="n">G</span><span class="p">))</span>
|
218
|
+
<span class="go">[[Mod(1, x^2 - x - 1), 0], [0, Mod(1, x^2 - x - 1)]]</span>
|
219
|
+
<span class="go">[[Mod(1, x^2 - x - 1), 0], [0, Mod(1, x^2 - x - 1)]]</span>
|
220
|
+
</pre></div>
|
221
|
+
</div>
|
222
|
+
</section>
|
223
|
+
<section id="computing-the-images-of-the-peripheral-curves-for-a-representation">
|
224
|
+
<span id="ptolemy-example-boundary-holonomy"></span><h2>Computing the images of the peripheral curves for a representation<a class="headerlink" href="#computing-the-images-of-the-peripheral-curves-for-a-representation" title="Link to this heading"></a></h2>
|
225
|
+
<p>The object returned by <a class="reference internal" href="triangulation.html#snappy.Triangulation.fundamental_group" title="snappy.Triangulation.fundamental_group"><code class="xref py py-meth docutils literal notranslate"><span class="pre">fundamental_group()</span></code></a> also contains words for the peripheral curves of a manifold. We can compute the corresponding matrices:</p>
|
226
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">"m003"</span><span class="p">)</span>
|
227
|
+
<span class="gp">>>> </span><span class="n">G</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">fundamental_group</span><span class="p">()</span>
|
228
|
+
<span class="gp">>>> </span><span class="n">sol</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">retrieve_solutions</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span>
|
229
|
+
<span class="gp">>>> </span><span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">cusp_curves</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">G</span><span class="o">.</span><span class="n">peripheral_curves</span><span class="p">()):</span>
|
230
|
+
<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"Cusp </span><span class="si">%d</span><span class="s2">:"</span> <span class="o">%</span> <span class="n">i</span><span class="p">)</span>
|
231
|
+
<span class="gp">... </span> <span class="k">for</span> <span class="n">cusp_curve</span> <span class="ow">in</span> <span class="n">cusp_curves</span><span class="p">:</span>
|
232
|
+
<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="n">sol</span><span class="o">.</span><span class="n">evaluate_word</span><span class="p">(</span><span class="n">cusp_curve</span><span class="p">,</span> <span class="n">G</span><span class="p">))</span>
|
233
|
+
<span class="go">Cusp 0:</span>
|
234
|
+
<span class="go">[[Mod(2*x - 3, x^2 + x + 1), Mod(2*x, x^2 + x + 1)], [Mod(6, x^2 + x + 1), Mod(-2*x + 1, x^2 + x + 1)]]</span>
|
235
|
+
<span class="go">[[Mod(-2*x - 5, x^2 + x + 1), Mod(-2, x^2 + x + 1)], [Mod(6*x + 6, x^2 + x + 1), Mod(2*x + 3, x^2 + x + 1)]]</span>
|
236
|
+
</pre></div>
|
237
|
+
</div>
|
238
|
+
<p><strong>Remark:</strong> For each cusp, we can conjugate these matrices into <em>P</em> since the representation is <a class="reference internal" href="ptolemy_prelim.html#ptolemy-boundary-unipotent"><span class="std std-ref">boundary-unipotent</span></a>. We might implement a method returning a matrix in <em>P</em> for the longitude and meridian of a cusp in the future (simply by finding loops corresponding to a longitude and meridian as path of short edges in the truncated simplex in Figure 17 of <a class="reference internal" href="ptolemy_prelim.html#ggz2012" id="id1"><span>[GGZ2012]</span></a>).</p>
|
239
|
+
</section>
|
240
|
+
<section id="finding-a-witness-point-for-a-positively-dimensional-component-of-the-ptolemy-variety">
|
241
|
+
<span id="ptolemy-example-find-witness"></span><h2>Finding a witness point for a positively dimensional component of the Ptolemy variety<a class="headerlink" href="#finding-a-witness-point-for-a-positively-dimensional-component-of-the-ptolemy-variety" title="Link to this heading"></a></h2>
|
242
|
+
<p>We already saw an <a class="reference internal" href="ptolemy_examples2.html#ptolemy-non-zero-dim-comp"><span class="std std-ref">example of a positively dimensional component</span></a>. By flattening, we obtain a list of all the components of the Ptolemy varieties for all obstruction classes:</p>
|
243
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">M</span><span class="o">=</span><span class="n">Manifold</span><span class="p">(</span><span class="s2">"m371"</span><span class="p">)</span>
|
244
|
+
<span class="gp">>>> </span><span class="n">sols</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="s1">'all'</span><span class="p">)</span><span class="o">.</span><span class="n">retrieve_solutions</span><span class="p">()</span><span class="o">.</span><span class="n">flatten</span><span class="p">()</span>
|
245
|
+
</pre></div>
|
246
|
+
</div>
|
247
|
+
<p>We can now just look at the positively dimensional ones:</p>
|
248
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">one_dim_sols</span> <span class="o">=</span> <span class="p">[</span> <span class="n">sol</span> <span class="k">for</span> <span class="n">sol</span> <span class="ow">in</span> <span class="n">sols</span> <span class="k">if</span> <span class="n">sol</span><span class="o">.</span><span class="n">dimension</span> <span class="o">></span> <span class="mi">0</span><span class="p">]</span>
|
249
|
+
<span class="gp">>>> </span><span class="nb">len</span><span class="p">(</span><span class="n">one_dim_sols</span><span class="p">)</span>
|
250
|
+
<span class="go">1</span>
|
251
|
+
<span class="gp">>>> </span><span class="n">one_dim_sols</span>
|
252
|
+
<span class="go">[[ PtolemyCoordinates(</span>
|
253
|
+
<span class="go"> {'c_0011_0': 1,</span>
|
254
|
+
<span class="go"> 'c_0011_1': -1,</span>
|
255
|
+
<span class="go"> 'c_0011_2': -1,</span>
|
256
|
+
<span class="go"> 'c_0011_3': Mod(-x - 1, x^2 + x + 2),</span>
|
257
|
+
<span class="go"> ...,</span>
|
258
|
+
<span class="go"> 's_3_4': 1},</span>
|
259
|
+
<span class="go"> is_numerical = False, ...)</span>
|
260
|
+
<span class="go"> (witnesses for NonZeroDimensionalComponent(dimension = 1, free_variables = ['c_0110_2'])) ]]</span>
|
261
|
+
</pre></div>
|
262
|
+
</div>
|
263
|
+
<p>We see that we have one such component and that each component is actually itself a list of witness points.</p>
|
264
|
+
<p><strong>Remark:</strong> Witness points are a fairly new feature and not all files in the database have been updated yet to contain them. You might instead just see <code class="docutils literal notranslate"><span class="pre">[NonZeroDimensionalComponent(dimension</span> <span class="pre">=</span> <span class="pre">1)]</span></code>.</p>
|
265
|
+
<p><strong>Remark:</strong> The ptolemy module also reports the <cite>free variables</cite> for the positively dimensional components. We can set these variables to random values and generically will obtain a new witness point.</p>
|
266
|
+
<p>We can access the witness point(s) for each component just by iteration:</p>
|
267
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="k">for</span> <span class="n">component</span> <span class="ow">in</span> <span class="n">one_dim_sols</span><span class="p">:</span>
|
268
|
+
<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"Component:"</span><span class="p">)</span>
|
269
|
+
<span class="gp">... </span> <span class="k">for</span> <span class="n">witness</span> <span class="ow">in</span> <span class="n">component</span><span class="p">:</span>
|
270
|
+
<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">" Witness:"</span><span class="p">)</span>
|
271
|
+
<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">" Volumes:"</span><span class="p">,</span> <span class="n">witness</span><span class="o">.</span><span class="n">volume_numerical</span><span class="p">())</span>
|
272
|
+
<span class="go">Component:</span>
|
273
|
+
<span class="go"> Witness:</span>
|
274
|
+
<span class="go"> Volumes: [0.E-38, 0.E-38]</span>
|
275
|
+
</pre></div>
|
276
|
+
</div>
|
277
|
+
<p>The different volumes in a line correspond to different Galois conjugates of the same <cite>algebraic</cite> witness point.</p>
|
278
|
+
</section>
|
279
|
+
<section id="finding-non-zero-dimensional-families-of-boundary-unipotent-representations">
|
280
|
+
<span id="ptolemy-example-non-zero-dim-rep"></span><h2>Finding non-zero dimensional families of boundary-unipotent representations<a class="headerlink" href="#finding-non-zero-dimensional-families-of-boundary-unipotent-representations" title="Link to this heading"></a></h2>
|
281
|
+
<p>We now revisit the <a class="reference internal" href="ptolemy_examples2.html#ptolemy-non-zero-dim-comp"><span class="std std-ref">1-dimensional component of the Ptolemy variety</span></a> and answer the question whether this yields a 1-dimensional family of representations or not. We pick a <a class="reference internal" href="#ptolemy-example-find-witness"><span class="std std-ref">witness point</span></a> for the component and check the <a class="reference internal" href="#ptolemy-example-boundary-holonomy"><span class="std std-ref">matrices for the peripheral curves</span></a>:</p>
|
282
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">"m371"</span><span class="p">)</span>
|
283
|
+
<span class="gp">>>> </span><span class="n">G</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">fundamental_group</span><span class="p">()</span>
|
284
|
+
<span class="gp">>>> </span><span class="n">sols</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="s1">'all'</span><span class="p">)</span><span class="o">.</span><span class="n">retrieve_solutions</span><span class="p">()</span><span class="o">.</span><span class="n">flatten</span><span class="p">()</span>
|
285
|
+
<span class="gp">>>> </span><span class="n">components</span> <span class="o">=</span> <span class="p">[</span> <span class="n">sol</span> <span class="k">for</span> <span class="n">sol</span> <span class="ow">in</span> <span class="n">sols</span> <span class="k">if</span> <span class="n">sol</span><span class="o">.</span><span class="n">dimension</span> <span class="o">></span> <span class="mi">0</span><span class="p">]</span>
|
286
|
+
<span class="gp">>>> </span><span class="k">for</span> <span class="n">component</span> <span class="ow">in</span> <span class="n">components</span><span class="p">:</span>
|
287
|
+
<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"Component of dimension </span><span class="si">%d</span><span class="s2">"</span> <span class="o">%</span> <span class="n">component</span><span class="o">.</span><span class="n">dimension</span><span class="p">)</span>
|
288
|
+
<span class="gp">... </span> <span class="k">for</span> <span class="n">witness</span> <span class="ow">in</span> <span class="n">component</span><span class="p">:</span>
|
289
|
+
<span class="gp">... </span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">cusp_curves</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">G</span><span class="o">.</span><span class="n">peripheral_curves</span><span class="p">()):</span>
|
290
|
+
<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">" Cusp </span><span class="si">%d</span><span class="s2">:"</span> <span class="o">%</span> <span class="n">i</span><span class="p">)</span>
|
291
|
+
<span class="gp">... </span> <span class="k">for</span> <span class="n">cusp_curve</span> <span class="ow">in</span> <span class="n">cusp_curves</span><span class="p">:</span>
|
292
|
+
<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">" "</span><span class="p">,</span> <span class="n">witness</span><span class="o">.</span><span class="n">evaluate_word</span><span class="p">(</span><span class="n">cusp_curve</span><span class="p">,</span> <span class="n">G</span><span class="p">))</span>
|
293
|
+
<span class="go">Component of dimension 1</span>
|
294
|
+
<span class="go"> Cusp 0:</span>
|
295
|
+
<span class="go"> [[Mod(1, x^2 + x + 2), 0], [0, Mod(1, x^2 + x + 2)]]</span>
|
296
|
+
<span class="go"> [[Mod(1, x^2 + x + 2), 0], [0, Mod(1, x^2 + x + 2)]]</span>
|
297
|
+
</pre></div>
|
298
|
+
</div>
|
299
|
+
<p>We see that the matrices are trivial, thus this 1-dimensional component corresponds to a 1-dimensional family of <a class="reference internal" href="ptolemy_prelim.html#ptolemy-generically-decorated"><span class="std std-ref">decorations</span></a> of the same (up to Galois conjugacy) representation. The corresponding family of representation is 0-dimensional.</p>
|
300
|
+
<p>Let us try another manifold, <code class="docutils literal notranslate"><span class="pre">m410</span></code>:</p>
|
301
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">"m410"</span><span class="p">)</span>
|
302
|
+
<span class="gp">>>> </span><span class="n">G</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">fundamental_group</span><span class="p">()</span>
|
303
|
+
<span class="gp">>>> </span><span class="n">sols</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="s1">'all'</span><span class="p">)</span><span class="o">.</span><span class="n">retrieve_solutions</span><span class="p">()</span><span class="o">.</span><span class="n">flatten</span><span class="p">()</span>
|
304
|
+
<span class="gp">>>> </span><span class="n">components</span> <span class="o">=</span> <span class="p">[</span> <span class="n">sol</span> <span class="k">for</span> <span class="n">sol</span> <span class="ow">in</span> <span class="n">sols</span> <span class="k">if</span> <span class="n">sol</span><span class="o">.</span><span class="n">dimension</span> <span class="o">></span> <span class="mi">0</span><span class="p">]</span>
|
305
|
+
<span class="gp">>>> </span><span class="k">for</span> <span class="n">component</span> <span class="ow">in</span> <span class="n">components</span><span class="p">:</span>
|
306
|
+
<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"Component of dimension </span><span class="si">%d</span><span class="s2">"</span> <span class="o">%</span> <span class="n">component</span><span class="o">.</span><span class="n">dimension</span><span class="p">)</span>
|
307
|
+
<span class="gp">... </span> <span class="k">for</span> <span class="n">witness</span> <span class="ow">in</span> <span class="n">component</span><span class="p">:</span>
|
308
|
+
<span class="gp">... </span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">cusp_curves</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">G</span><span class="o">.</span><span class="n">peripheral_curves</span><span class="p">()):</span>
|
309
|
+
<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">" Cusp </span><span class="si">%d</span><span class="s2">:"</span> <span class="o">%</span> <span class="n">i</span><span class="p">)</span>
|
310
|
+
<span class="gp">... </span> <span class="k">for</span> <span class="n">cusp_curve</span> <span class="ow">in</span> <span class="n">cusp_curves</span><span class="p">:</span>
|
311
|
+
<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">" "</span><span class="p">,</span> <span class="n">witness</span><span class="o">.</span><span class="n">evaluate_word</span><span class="p">(</span><span class="n">cusp_curve</span><span class="p">,</span> <span class="n">G</span><span class="p">))</span>
|
312
|
+
<span class="go">Component of dimension 1</span>
|
313
|
+
<span class="go"> Cusp 0:</span>
|
314
|
+
<span class="go"> [[Mod(1, x^2 + 2), 0], [0, Mod(1, x^2 + 2)]]</span>
|
315
|
+
<span class="go"> [[Mod(1, x^2 + 2), Mod(x, x^2 + 2)], [0, Mod(1, x^2 + 2)]]</span>
|
316
|
+
<span class="go">Component of dimension 1</span>
|
317
|
+
<span class="go"> Cusp 0:</span>
|
318
|
+
<span class="go"> [[Mod(1, x^2 + 7), 0], [0, Mod(1, x^2 + 7)]]</span>
|
319
|
+
<span class="go"> [[Mod(1, x^2 + 7), 0], [0, Mod(1, x^2 + 7)]]</span>
|
320
|
+
</pre></div>
|
321
|
+
</div>
|
322
|
+
<p>It has two 1-dimensional components, and for the first one, we see that the matrices are non-trivial, so this corresponds indeed to a 1-dimensional family of representations.</p>
|
323
|
+
<p><strong>Remark:</strong> The witness points are chosen so that they are not at the intersection of two positively dimensional components. This is for the following reason: it could happen that there is a 1-dimensional family of representations which contains points where the boundary holonomy becomes trivial. This yields a representation where the above matrices are trivial yet it is part of a 1-dimensional family of boundary-unipotent representations. In the ptolemy variety, however, this means that two non-zero dimensional components (one corresponding to a family of decorations, the other to a family of representations) intersect.</p>
|
324
|
+
</section>
|
325
|
+
<section id="representations-that-are-the-same-as-psl-2-c-representations">
|
326
|
+
<h2>Representations that are the same as PSL(2, <strong>C</strong>)-representations<a class="headerlink" href="#representations-that-are-the-same-as-psl-2-c-representations" title="Link to this heading"></a></h2>
|
327
|
+
<p>Let us compare the volumes of <code class="docutils literal notranslate"><span class="pre">m009</span></code> and <code class="docutils literal notranslate"><span class="pre">m159</span></code>:</p>
|
328
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">Manifold</span><span class="p">(</span><span class="s2">"m009"</span><span class="p">)</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="s1">'all'</span><span class="p">)</span><span class="o">.</span><span class="n">retrieve_solutions</span><span class="p">()</span><span class="o">.</span><span class="n">volume_numerical</span><span class="p">()</span>
|
329
|
+
<span class="go">[[],</span>
|
330
|
+
<span class="go"> [],</span>
|
331
|
+
<span class="go"> [],</span>
|
332
|
+
<span class="go"> [[2.66674478344907, -2.66674478344907, 2.66674478344907, -2.66674478344907]]]</span>
|
333
|
+
<span class="gp">>>> </span><span class="n">Manifold</span><span class="p">(</span><span class="s2">"m159"</span><span class="p">)</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="s1">'all'</span><span class="p">)</span><span class="o">.</span><span class="n">retrieve_solutions</span><span class="p">()</span><span class="o">.</span><span class="n">volume_numerical</span><span class="p">()</span>
|
334
|
+
<span class="go">[[[0.E-38, 0.E-37, 0.E-37],</span>
|
335
|
+
<span class="go"> [-2.02988321281931, 2.02988321281931, -2.02988321281931, 2.02988321281931]],</span>
|
336
|
+
<span class="go">[[0.698544082784440, -0.698544082784440, 3.82168758617998, -3.82168758617998],</span>
|
337
|
+
<span class="go"> [0.E-37, 0.E-37, 0.E-37, 0.E-37]]]</span>
|
338
|
+
</pre></div>
|
339
|
+
</div>
|
340
|
+
<p>In both cases, some volumes appear twice (2.66674… for <code class="docutils literal notranslate"><span class="pre">m009</span></code> and 2.02988… for <code class="docutils literal notranslate"><span class="pre">m159</span></code>). In the case of <code class="docutils literal notranslate"><span class="pre">m009</span></code>, these two volumes correspond to the same PSL(2, <strong>C</strong>)-representation and in case <code class="docutils literal notranslate"><span class="pre">m159</span></code> to two different boundary-unipotent SL(2, <strong>C</strong>)-representations that are the same as PSL(2, <strong>C</strong>)-representations (see <a class="reference internal" href="ptolemy_prelim.html#ptolemy-psl-multiplicity"><span class="std std-ref">SL(N, C) vs PSL(N, C)</span></a>). We can get the multiplicity by calling <code class="docutils literal notranslate"><span class="pre">degree_to_shapes</span></code>:</p>
|
341
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">Manifold</span><span class="p">(</span><span class="s2">"m009"</span><span class="p">)</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span><span class="o">.</span><span class="n">degree_to_shapes</span><span class="p">()</span>
|
342
|
+
<span class="go">2</span>
|
343
|
+
<span class="gp">>>> </span><span class="n">Manifold</span><span class="p">(</span><span class="s2">"m159"</span><span class="p">)</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span><span class="o">.</span><span class="n">degree_to_shapes</span><span class="p">()</span>
|
344
|
+
<span class="go">1</span>
|
345
|
+
</pre></div>
|
346
|
+
</div>
|
347
|
+
<p>When we convert the Ptolemy coordinates to shapes/cross ratios for <code class="docutils literal notranslate"><span class="pre">m009</span></code>, we also see that we see the same shape assignment appears twice (at least numerically):</p>
|
348
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">Manifold</span><span class="p">(</span><span class="s2">"m009"</span><span class="p">)</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="s1">'all'</span><span class="p">)</span><span class="o">.</span><span class="n">retrieve_solutions</span><span class="p">()</span><span class="o">.</span><span class="n">numerical</span><span class="p">()</span><span class="o">.</span><span class="n">cross_ratios</span><span class="p">()</span>
|
349
|
+
<span class="go">[[],</span>
|
350
|
+
<span class="go"> [],</span>
|
351
|
+
<span class="go"> [],</span>
|
352
|
+
<span class="go"> [[CrossRatios(</span>
|
353
|
+
<span class="go"> {'z_0000_0': 0.500000000000000 + 1.32287565553230*I,</span>
|
354
|
+
<span class="go"> 'z_0000_1': 0.375000000000000 + 0.330718913883074*I,</span>
|
355
|
+
<span class="go"> 'z_0000_2': 0.500000000000000 + 1.32287565553230*I,</span>
|
356
|
+
<span class="go"> 'zp_0000_0': 0.250000000000000 + 0.661437827766148*I,</span>
|
357
|
+
<span class="go"> ...},</span>
|
358
|
+
<span class="go"> is_numerical = True, ...),</span>
|
359
|
+
<span class="go"> CrossRatios(</span>
|
360
|
+
<span class="go"> {'z_0000_0': 0.500000000000000 - 1.32287565553230*I,</span>
|
361
|
+
<span class="go"> 'z_0000_1': 0.375000000000000 - 0.330718913883074*I,</span>
|
362
|
+
<span class="go"> 'z_0000_2': 0.500000000000000 - 1.32287565553230*I,</span>
|
363
|
+
<span class="go"> ...}</span>
|
364
|
+
<span class="go"> is_numerical = True, ...),</span>
|
365
|
+
<span class="go"> CrossRatios(</span>
|
366
|
+
<span class="go"> {'z_0000_0': 0.500000000000000 + 1.32287565553230*I,</span>
|
367
|
+
<span class="go"> 'z_0000_1': 0.375000000000000 + 0.330718913883074*I,</span>
|
368
|
+
<span class="go"> 'z_0000_2': 0.500000000000000 + 1.32287565553230*I,</span>
|
369
|
+
<span class="go"> ...},</span>
|
370
|
+
<span class="go"> is_numerical = True, ...),</span>
|
371
|
+
<span class="go"> CrossRatios(</span>
|
372
|
+
<span class="go"> {'z_0000_0': 0.500000000000000 - 1.32287565553230*I,</span>
|
373
|
+
<span class="go"> 'z_0000_1': 0.375000000000000 - 0.330718913883074*I,</span>
|
374
|
+
<span class="go"> 'z_0000_2': 0.500000000000000 - 1.32287565553230*I,</span>
|
375
|
+
<span class="go"> ...},</span>
|
376
|
+
<span class="go"> is_numerical = True, ...)]]]</span>
|
377
|
+
</pre></div>
|
378
|
+
</div>
|
379
|
+
<p><strong>Remark:</strong> The tables at <a class="reference external" href="http://ptolemy.unhyperbolic.org/html/summary.html">ptolemy.unhyperbolic.org</a> use the cross ratios to list representations that are the same as PSL(2, <strong>C</strong>)-representation only once.</p>
|
380
|
+
</section>
|
381
|
+
</section>
|
382
|
+
|
383
|
+
|
384
|
+
</div>
|
385
|
+
</div>
|
386
|
+
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
387
|
+
<a href="ptolemy_examples2.html" class="btn btn-neutral float-left" title="Step-by-step examples: Part 2" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
388
|
+
<a href="ptolemy_examples4.html" class="btn btn-neutral float-right" title="Step-by-step examples: Part 4" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
389
|
+
</div>
|
390
|
+
|
391
|
+
<hr/>
|
392
|
+
|
393
|
+
<div role="contentinfo">
|
394
|
+
<p>© Copyright 2009-2025, by Marc Culler, Nathan Dunfield, Matthias Goerner, Jeffrey Weeks and others.</p>
|
395
|
+
</div>
|
396
|
+
|
397
|
+
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
398
|
+
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
399
|
+
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
400
|
+
|
401
|
+
|
402
|
+
</footer>
|
403
|
+
</div>
|
404
|
+
</div>
|
405
|
+
</section>
|
406
|
+
</div>
|
407
|
+
<script>
|
408
|
+
jQuery(function () {
|
409
|
+
SphinxRtdTheme.Navigation.enable(true);
|
410
|
+
});
|
411
|
+
</script>
|
412
|
+
|
413
|
+
</body>
|
414
|
+
</html>
|