snappy 3.1.1__cp38-cp38-win_amd64.whl → 3.2__cp38-cp38-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- snappy/CyOpenGL.cp38-win_amd64.pyd +0 -0
- snappy/SnapPy.cp38-win_amd64.pyd +0 -0
- snappy/SnapPyHP.cp38-win_amd64.pyd +0 -0
- snappy/__init__.py +299 -402
- snappy/app.py +70 -20
- snappy/browser.py +18 -17
- snappy/canonical.py +249 -0
- snappy/{verify/cusp_shapes.py → cusps/__init__.py} +8 -18
- snappy/cusps/cusp_area_matrix.py +101 -0
- snappy/{verify/cusp_areas.py → cusps/cusp_areas_from_matrix.py} +23 -39
- snappy/cusps/maximal_cusp_area_matrix.py +136 -0
- snappy/cusps/test.py +21 -0
- snappy/cusps/trig_cusp_area_matrix.py +63 -0
- snappy/database.py +10 -9
- snappy/decorated_isosig.py +337 -114
- snappy/dev/extended_ptolemy/complexVolumesClosed.py +40 -7
- snappy/dev/extended_ptolemy/extended.py +3 -3
- snappy/dev/extended_ptolemy/phc_wrapper.py +10 -10
- snappy/dev/vericlosed/oneVertexTruncatedComplex.py +1 -1
- snappy/doc/_images/m004_paper_plane_on_systole.jpg +0 -0
- snappy/doc/_images/m125_paper_plane.jpg +0 -0
- snappy/doc/_images/o9_00000_systole_paper_plane.jpg +0 -0
- snappy/doc/_images/o9_00000_systole_paper_plane_closer.jpg +0 -0
- snappy/doc/_sources/additional_classes.rst.txt +40 -40
- snappy/doc/_sources/bugs.rst.txt +14 -14
- snappy/doc/_sources/censuses.rst.txt +51 -51
- snappy/doc/_sources/credits.rst.txt +75 -75
- snappy/doc/_sources/development.rst.txt +259 -239
- snappy/doc/_sources/index.rst.txt +182 -115
- snappy/doc/_sources/installing.rst.txt +247 -264
- snappy/doc/_sources/manifold.rst.txt +6 -6
- snappy/doc/_sources/manifoldhp.rst.txt +46 -46
- snappy/doc/_sources/news.rst.txt +355 -283
- snappy/doc/_sources/other.rst.txt +25 -25
- snappy/doc/_sources/platonic_census.rst.txt +20 -20
- snappy/doc/_sources/plink.rst.txt +102 -102
- snappy/doc/_sources/ptolemy.rst.txt +66 -66
- snappy/doc/_sources/ptolemy_classes.rst.txt +42 -42
- snappy/doc/_sources/ptolemy_examples1.rst.txt +298 -297
- snappy/doc/_sources/ptolemy_examples2.rst.txt +363 -363
- snappy/doc/_sources/ptolemy_examples3.rst.txt +301 -301
- snappy/doc/_sources/ptolemy_examples4.rst.txt +61 -61
- snappy/doc/_sources/ptolemy_prelim.rst.txt +105 -105
- snappy/doc/_sources/screenshots.rst.txt +21 -21
- snappy/doc/_sources/snap.rst.txt +87 -87
- snappy/doc/_sources/snappy.rst.txt +28 -28
- snappy/doc/_sources/spherogram.rst.txt +103 -103
- snappy/doc/_sources/todo.rst.txt +47 -47
- snappy/doc/_sources/triangulation.rst.txt +11 -11
- snappy/doc/_sources/tutorial.rst.txt +49 -49
- snappy/doc/_sources/verify.rst.txt +210 -150
- snappy/doc/_sources/verify_internals.rst.txt +79 -90
- snappy/doc/_static/basic.css +924 -902
- snappy/doc/_static/css/badge_only.css +1 -1
- snappy/doc/_static/css/theme.css +1 -1
- snappy/doc/_static/doctools.js +1 -1
- snappy/doc/_static/documentation_options.js +12 -13
- snappy/doc/_static/fonts/Lato/lato-bold.eot +0 -0
- snappy/doc/_static/fonts/Lato/lato-bold.ttf +0 -0
- snappy/doc/_static/fonts/Lato/lato-bold.woff +0 -0
- snappy/doc/_static/fonts/Lato/lato-bold.woff2 +0 -0
- snappy/doc/_static/fonts/Lato/lato-bolditalic.eot +0 -0
- snappy/doc/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
- snappy/doc/_static/fonts/Lato/lato-bolditalic.woff +0 -0
- snappy/doc/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
- snappy/doc/_static/fonts/Lato/lato-italic.eot +0 -0
- snappy/doc/_static/fonts/Lato/lato-italic.ttf +0 -0
- snappy/doc/_static/fonts/Lato/lato-italic.woff +0 -0
- snappy/doc/_static/fonts/Lato/lato-italic.woff2 +0 -0
- snappy/doc/_static/fonts/Lato/lato-regular.eot +0 -0
- snappy/doc/_static/fonts/Lato/lato-regular.ttf +0 -0
- snappy/doc/_static/fonts/Lato/lato-regular.woff +0 -0
- snappy/doc/_static/fonts/Lato/lato-regular.woff2 +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
- snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
- snappy/doc/_static/js/versions.js +228 -0
- snappy/doc/_static/language_data.js +199 -199
- snappy/doc/_static/pygments.css +74 -73
- snappy/doc/_static/searchtools.js +125 -71
- snappy/doc/_static/snappy_furo.css +33 -33
- snappy/doc/_static/snappy_sphinx_rtd_theme.css +42 -42
- snappy/doc/_static/sphinx_highlight.js +13 -3
- snappy/doc/additional_classes.html +1499 -1330
- snappy/doc/bugs.html +131 -134
- snappy/doc/censuses.html +426 -445
- snappy/doc/credits.html +180 -183
- snappy/doc/development.html +383 -363
- snappy/doc/genindex.html +1330 -1409
- snappy/doc/index.html +261 -206
- snappy/doc/installing.html +345 -363
- snappy/doc/manifold.html +3451 -2839
- snappy/doc/manifoldhp.html +179 -182
- snappy/doc/news.html +387 -329
- snappy/doc/objects.inv +0 -0
- snappy/doc/other.html +160 -162
- snappy/doc/platonic_census.html +374 -377
- snappy/doc/plink.html +209 -212
- snappy/doc/ptolemy.html +253 -255
- snappy/doc/ptolemy_classes.html +1143 -1146
- snappy/doc/ptolemy_examples1.html +408 -410
- snappy/doc/ptolemy_examples2.html +470 -473
- snappy/doc/ptolemy_examples3.html +413 -416
- snappy/doc/ptolemy_examples4.html +194 -197
- snappy/doc/ptolemy_prelim.html +247 -250
- snappy/doc/py-modindex.html +164 -167
- snappy/doc/screenshots.html +140 -142
- snappy/doc/search.html +134 -137
- snappy/doc/searchindex.js +1 -1
- snappy/doc/snap.html +201 -204
- snappy/doc/snappy.html +180 -182
- snappy/doc/spherogram.html +1210 -1213
- snappy/doc/todo.html +165 -168
- snappy/doc/triangulation.html +1583 -1474
- snappy/doc/tutorial.html +158 -161
- snappy/doc/verify.html +329 -275
- snappy/doc/verify_internals.html +1234 -1691
- snappy/drilling/__init__.py +153 -235
- snappy/drilling/barycentric.py +103 -0
- snappy/drilling/constants.py +0 -2
- snappy/drilling/crush.py +56 -130
- snappy/drilling/cusps.py +12 -6
- snappy/drilling/debug.py +2 -1
- snappy/drilling/exceptions.py +7 -40
- snappy/drilling/moves.py +302 -243
- snappy/drilling/perturb.py +63 -37
- snappy/drilling/shorten.py +36 -0
- snappy/drilling/subdivide.py +0 -5
- snappy/drilling/test.py +23 -0
- snappy/drilling/test_cases.py +126 -0
- snappy/drilling/tracing.py +9 -37
- snappy/exceptions.py +18 -5
- snappy/exterior_to_link/barycentric_geometry.py +2 -4
- snappy/exterior_to_link/main.py +8 -7
- snappy/exterior_to_link/mcomplex_with_link.py +2 -2
- snappy/exterior_to_link/rational_linear_algebra.py +1 -1
- snappy/exterior_to_link/rational_linear_algebra_wrapped.py +1 -1
- snappy/exterior_to_link/test.py +21 -33
- snappy/geometric_structure/__init__.py +212 -0
- snappy/geometric_structure/cusp_neighborhood/__init__.py +3 -0
- snappy/geometric_structure/cusp_neighborhood/complex_cusp_cross_section.py +697 -0
- snappy/geometric_structure/cusp_neighborhood/cusp_cross_section_base.py +484 -0
- snappy/geometric_structure/cusp_neighborhood/exceptions.py +42 -0
- snappy/geometric_structure/cusp_neighborhood/real_cusp_cross_section.py +298 -0
- snappy/geometric_structure/cusp_neighborhood/tiles_for_cusp_neighborhood.py +159 -0
- snappy/geometric_structure/cusp_neighborhood/vertices.py +32 -0
- snappy/geometric_structure/geodesic/__init__.py +0 -0
- snappy/geometric_structure/geodesic/add_core_curves.py +152 -0
- snappy/geometric_structure/geodesic/avoid_core_curves.py +369 -0
- snappy/geometric_structure/geodesic/canonical_keys.py +52 -0
- snappy/geometric_structure/geodesic/check_away_from_core_curve.py +60 -0
- snappy/geometric_structure/geodesic/constants.py +6 -0
- snappy/geometric_structure/geodesic/exceptions.py +22 -0
- snappy/{drilling → geometric_structure/geodesic}/fixed_points.py +34 -9
- snappy/{drilling/geodesic_info.py → geometric_structure/geodesic/geodesic_start_point_info.py} +139 -180
- snappy/geometric_structure/geodesic/graph_trace_helper.py +67 -0
- snappy/geometric_structure/geodesic/line.py +30 -0
- snappy/geometric_structure/geodesic/multiplicity.py +127 -0
- snappy/geometric_structure/geodesic/tiles_for_geodesic.py +101 -0
- snappy/geometric_structure/test.py +22 -0
- snappy/gui.py +23 -13
- snappy/horoviewer.py +7 -7
- snappy/hyperboloid/__init__.py +96 -31
- snappy/hyperboloid/distances.py +245 -0
- snappy/hyperboloid/horoball.py +19 -0
- snappy/hyperboloid/line.py +35 -0
- snappy/hyperboloid/point.py +9 -0
- snappy/hyperboloid/triangle.py +29 -0
- snappy/isometry_signature.py +382 -0
- snappy/len_spec/__init__.py +596 -0
- snappy/len_spec/geodesic_info.py +110 -0
- snappy/len_spec/geodesic_key_info_dict.py +117 -0
- snappy/len_spec/geodesic_piece.py +143 -0
- snappy/len_spec/geometric_structure.py +182 -0
- snappy/len_spec/geometry.py +80 -0
- snappy/len_spec/length_spectrum_geodesic_info.py +170 -0
- snappy/len_spec/spine.py +206 -0
- snappy/len_spec/test.py +24 -0
- snappy/len_spec/test_cases.py +69 -0
- snappy/len_spec/tile.py +275 -0
- snappy/len_spec/word.py +86 -0
- snappy/math_basics.py +39 -13
- snappy/matrix.py +52 -9
- snappy/number.py +12 -6
- snappy/numeric_output_checker.py +2 -3
- snappy/pari.py +8 -4
- snappy/phone_home.py +2 -1
- snappy/polyviewer.py +8 -8
- snappy/ptolemy/__init__.py +1 -1
- snappy/ptolemy/component.py +2 -2
- snappy/ptolemy/coordinates.py +25 -25
- snappy/ptolemy/findLoops.py +9 -9
- snappy/ptolemy/manifoldMethods.py +27 -29
- snappy/ptolemy/polynomial.py +50 -57
- snappy/ptolemy/processFileBase.py +60 -0
- snappy/ptolemy/ptolemyVariety.py +109 -41
- snappy/ptolemy/reginaWrapper.py +4 -4
- snappy/ptolemy/rur.py +1 -1
- snappy/ptolemy/solutionsToPrimeIdealGroebnerBasis.py +9 -9
- snappy/ptolemy/test.py +99 -54
- snappy/ptolemy/utilities.py +1 -1
- snappy/raytracing/__init__.py +64 -0
- snappy/raytracing/additional_horospheres.py +64 -0
- snappy/raytracing/additional_len_spec_choices.py +63 -0
- snappy/raytracing/cohomology_fractal.py +0 -3
- snappy/raytracing/eyeball.py +123 -0
- snappy/raytracing/finite_raytracing_data.py +17 -17
- snappy/raytracing/finite_viewer.py +15 -15
- snappy/raytracing/geodesic_tube_info.py +93 -63
- snappy/raytracing/geodesics.py +94 -64
- snappy/raytracing/geodesics_window.py +56 -34
- snappy/raytracing/gui_utilities.py +21 -6
- snappy/raytracing/hyperboloid_navigation.py +29 -4
- snappy/raytracing/hyperboloid_utilities.py +73 -73
- snappy/raytracing/ideal_raytracing_data.py +121 -91
- snappy/raytracing/inside_viewer.py +199 -66
- snappy/raytracing/pack.py +22 -0
- snappy/raytracing/raytracing_data.py +37 -25
- snappy/raytracing/raytracing_view.py +70 -65
- snappy/raytracing/shaders/Eye.png +0 -0
- snappy/raytracing/shaders/NonGeometric.png +0 -0
- snappy/raytracing/shaders/__init__.py +39 -3
- snappy/raytracing/shaders/fragment.glsl +451 -133
- snappy/raytracing/test.py +29 -0
- snappy/raytracing/tooltip.py +146 -0
- snappy/raytracing/upper_halfspace_utilities.py +42 -9
- snappy/sage_helper.py +67 -134
- snappy/settings.py +90 -77
- snappy/shell.py +2 -0
- snappy/snap/character_varieties.py +2 -2
- snappy/snap/find_field.py +4 -3
- snappy/snap/fundamental_polyhedron.py +2 -2
- snappy/snap/kernel_structures.py +5 -1
- snappy/snap/nsagetools.py +9 -8
- snappy/snap/peripheral/dual_cellulation.py +4 -3
- snappy/snap/peripheral/peripheral.py +2 -2
- snappy/snap/peripheral/surface.py +5 -5
- snappy/snap/peripheral/test.py +1 -1
- snappy/snap/polished_reps.py +8 -8
- snappy/snap/slice_obs_HKL.py +16 -14
- snappy/snap/t3mlite/arrow.py +3 -3
- snappy/snap/t3mlite/edge.py +3 -3
- snappy/snap/t3mlite/homology.py +2 -2
- snappy/snap/t3mlite/mcomplex.py +3 -3
- snappy/snap/t3mlite/simplex.py +12 -0
- snappy/snap/t3mlite/spun.py +18 -17
- snappy/snap/t3mlite/test_vs_regina.py +4 -4
- snappy/snap/test.py +37 -53
- snappy/snap/utilities.py +4 -5
- snappy/test.py +121 -138
- snappy/test_cases.py +263 -0
- snappy/testing.py +131 -0
- snappy/tiling/__init__.py +2 -0
- snappy/tiling/canonical_key_dict.py +59 -0
- snappy/tiling/dict_based_set.py +79 -0
- snappy/tiling/floor.py +49 -0
- snappy/tiling/hyperboloid_dict.py +54 -0
- snappy/tiling/iter_utils.py +78 -0
- snappy/tiling/lifted_tetrahedron.py +22 -0
- snappy/tiling/lifted_tetrahedron_set.py +54 -0
- snappy/tiling/real_hash_dict.py +164 -0
- snappy/tiling/test.py +23 -0
- snappy/tiling/tile.py +215 -0
- snappy/tiling/triangle.py +33 -0
- snappy/tkterminal.py +113 -84
- snappy/twister/main.py +1 -7
- snappy/twister/twister_core.cp38-win_amd64.pyd +0 -0
- snappy/upper_halfspace/__init__.py +78 -17
- snappy/verify/__init__.py +3 -7
- snappy/verify/{verifyCanonical.py → canonical.py} +78 -70
- snappy/verify/complex_volume/adjust_torsion.py +1 -2
- snappy/verify/complex_volume/closed.py +13 -13
- snappy/verify/complex_volume/cusped.py +6 -6
- snappy/verify/complex_volume/extended_bloch.py +5 -8
- snappy/verify/{cuspTranslations.py → cusp_translations.py} +1 -1
- snappy/verify/edge_equations.py +80 -0
- snappy/verify/exceptions.py +0 -55
- snappy/verify/{verifyHyperbolicity.py → hyperbolicity.py} +3 -3
- snappy/verify/interval_newton_shapes_engine.py +7 -5
- snappy/verify/interval_tree.py +5 -5
- snappy/verify/krawczyk_shapes_engine.py +17 -18
- snappy/verify/maximal_cusp_area_matrix/__init__.py +7 -74
- snappy/verify/maximal_cusp_area_matrix/cusp_tiling_engine.py +3 -4
- snappy/verify/maximal_cusp_area_matrix/cusp_translate_engine.py +1 -1
- snappy/verify/{realAlgebra.py → real_algebra.py} +1 -1
- snappy/verify/shapes.py +5 -3
- snappy/verify/short_slopes.py +39 -41
- snappy/verify/{squareExtensions.py → square_extensions.py} +14 -11
- snappy/verify/test.py +57 -60
- snappy/verify/upper_halfspace/extended_matrix.py +1 -1
- snappy/verify/upper_halfspace/finite_point.py +3 -4
- snappy/verify/upper_halfspace/ideal_point.py +9 -9
- snappy/verify/volume.py +2 -2
- snappy/version.py +2 -2
- {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/METADATA +14 -10
- snappy-3.2.dist-info/RECORD +503 -0
- {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/WHEEL +1 -1
- {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/top_level.txt +6 -1
- snappy/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/__pycache__/browser.cpython-38.pyc +0 -0
- snappy/__pycache__/cache.cpython-38.pyc +0 -0
- snappy/__pycache__/database.cpython-38.pyc +0 -0
- snappy/__pycache__/db_utilities.cpython-38.pyc +0 -0
- snappy/__pycache__/decorated_isosig.cpython-38.pyc +0 -0
- snappy/__pycache__/exceptions.cpython-38.pyc +0 -0
- snappy/__pycache__/export_stl.cpython-38.pyc +0 -0
- snappy/__pycache__/filedialog.cpython-38.pyc +0 -0
- snappy/__pycache__/gui.cpython-38.pyc +0 -0
- snappy/__pycache__/horoviewer.cpython-38.pyc +0 -0
- snappy/__pycache__/math_basics.cpython-38.pyc +0 -0
- snappy/__pycache__/matrix.cpython-38.pyc +0 -0
- snappy/__pycache__/number.cpython-38.pyc +0 -0
- snappy/__pycache__/numeric_output_checker.cpython-38.pyc +0 -0
- snappy/__pycache__/pari.cpython-38.pyc +0 -0
- snappy/__pycache__/polyviewer.cpython-38.pyc +0 -0
- snappy/__pycache__/sage_helper.cpython-38.pyc +0 -0
- snappy/__pycache__/version.cpython-38.pyc +0 -0
- snappy/doc/_sources/verify_canon.rst.txt +0 -90
- snappy/doc/_static/jquery-3.6.0.js +0 -10881
- snappy/doc/_static/js/html5shiv-printshiv.min.js +0 -4
- snappy/doc/_static/js/html5shiv.min.js +0 -4
- snappy/doc/_static/underscore-1.13.1.js +0 -2042
- snappy/doc/_static/underscore.js +0 -6
- snappy/doc/verify_canon.html +0 -304
- snappy/drilling/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/constants.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/crush.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/cusps.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/debug.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/epsilons.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/exceptions.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/fixed_points.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/geodesic_info.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/geodesic_tube.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/geometric_structure.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/line.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/moves.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/peripheral_curves.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/perturb.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/quotient_space.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/spatial_dict.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/subdivide.cpython-38.pyc +0 -0
- snappy/drilling/__pycache__/tracing.cpython-38.pyc +0 -0
- snappy/drilling/geodesic_tube.py +0 -441
- snappy/drilling/geometric_structure.py +0 -366
- snappy/drilling/line.py +0 -122
- snappy/drilling/quotient_space.py +0 -94
- snappy/drilling/spatial_dict.py +0 -128
- snappy/exterior_to_link/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/barycentric_geometry.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/exceptions.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/hyp_utils.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/link_projection.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/main.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/mcomplex_with_expansion.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/mcomplex_with_link.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/mcomplex_with_memory.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/pl_utils.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/put_in_S3.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/rational_linear_algebra.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/simplify_to_base_tri.cpython-38.pyc +0 -0
- snappy/exterior_to_link/__pycache__/stored_moves.cpython-38.pyc +0 -0
- snappy/hyperboloid/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/manifolds/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/component.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/coordinates.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/fieldExtensions.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/findLoops.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/homology.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/manifoldMethods.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/matrix.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/numericalSolutionsToGroebnerBasis.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/polynomial.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/processComponents.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/processFileBase.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/processFileDispatch.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/processMagmaFile.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/processRurFile.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/ptolemyGeneralizedObstructionClass.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/ptolemyObstructionClass.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/ptolemyVariety.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/ptolemyVarietyPrimeIdealGroebnerBasis.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/rur.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/solutionsToPrimeIdealGroebnerBasis.cpython-38.pyc +0 -0
- snappy/ptolemy/__pycache__/utilities.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/character_varieties.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/fundamental_polyhedron.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/interval_reps.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/kernel_structures.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/mcomplex_base.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/nsagetools.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/polished_reps.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/shapes.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/slice_obs_HKL.cpython-38.pyc +0 -0
- snappy/snap/__pycache__/utilities.cpython-38.pyc +0 -0
- snappy/snap/peripheral/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/snap/peripheral/__pycache__/dual_cellulation.cpython-38.pyc +0 -0
- snappy/snap/peripheral/__pycache__/link.cpython-38.pyc +0 -0
- snappy/snap/peripheral/__pycache__/peripheral.cpython-38.pyc +0 -0
- snappy/snap/peripheral/__pycache__/surface.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/arrow.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/corner.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/edge.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/face.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/files.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/homology.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/linalg.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/mcomplex.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/perm4.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/simplex.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/spun.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/surface.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/tetrahedron.cpython-38.pyc +0 -0
- snappy/snap/t3mlite/__pycache__/vertex.cpython-38.pyc +0 -0
- snappy/togl/__init__.py +0 -3
- snappy/togl/darwin-tk8.6/Togl2.1/LICENSE +0 -28
- snappy/togl/darwin-tk8.6/Togl2.1/libTogl2.1.dylib +0 -0
- snappy/togl/darwin-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
- snappy/togl/darwin-tk8.7/Togl2.1/LICENSE +0 -28
- snappy/togl/darwin-tk8.7/Togl2.1/libTogl2.1.dylib +0 -0
- snappy/togl/darwin-tk8.7/Togl2.1/pkgIndex.tcl +0 -5
- snappy/togl/linux2-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
- snappy/togl/linux2-x86_64-tk8.6/Togl2.1/libTogl2.1.so +0 -0
- snappy/togl/linux2-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
- snappy/togl/win32VC-tk8.6/Togl2.1/LICENSE +0 -28
- snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.dll +0 -0
- snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.lib +0 -0
- snappy/togl/win32VC-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
- snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
- snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.dll +0 -0
- snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.lib +0 -0
- snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
- snappy/twister/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/twister/__pycache__/main.cpython-38.pyc +0 -0
- snappy/upper_halfspace/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/upper_halfspace/__pycache__/ideal_point.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/cuspCrossSection.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/cuspTranslations.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/cusp_areas.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/cusp_shapes.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/exceptions.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/interval_newton_shapes_engine.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/interval_tree.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/krawczyk_shapes_engine.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/realAlgebra.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/shapes.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/short_slopes.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/squareExtensions.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/verifyCanonical.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/verifyHyperbolicity.cpython-38.pyc +0 -0
- snappy/verify/__pycache__/volume.cpython-38.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/adjust_torsion.cpython-38.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/closed.cpython-38.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/compute_ptolemys.cpython-38.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/cusped.cpython-38.pyc +0 -0
- snappy/verify/complex_volume/__pycache__/extended_bloch.cpython-38.pyc +0 -0
- snappy/verify/cuspCrossSection.py +0 -1422
- snappy/verify/maximal_cusp_area_matrix/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_tiling_engine.cpython-38.pyc +0 -0
- snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_translate_engine.cpython-38.pyc +0 -0
- snappy/verify/upper_halfspace/__pycache__/__init__.cpython-38.pyc +0 -0
- snappy/verify/upper_halfspace/__pycache__/extended_matrix.cpython-38.pyc +0 -0
- snappy/verify/upper_halfspace/__pycache__/finite_point.cpython-38.pyc +0 -0
- snappy/verify/upper_halfspace/__pycache__/ideal_point.cpython-38.pyc +0 -0
- snappy-3.1.1.dist-info/RECORD +0 -575
- {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/entry_points.txt +0 -0
snappy/doc/ptolemy_classes.html
CHANGED
@@ -1,1147 +1,1144 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
<link rel="stylesheet"
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
<script src="_static/js/theme.js"></script>
|
23
|
-
<link rel="index" title="Index" href="genindex.html" />
|
24
|
-
<link rel="search" title="Search" href="search.html" />
|
25
|
-
<link rel="next" title="News" href="news.html" />
|
26
|
-
<link rel="prev" title="Step-by-step examples: Part 4" href="ptolemy_examples4.html" />
|
27
|
-
</head>
|
28
|
-
|
29
|
-
<body class="wy-body-for-nav">
|
30
|
-
<div class="wy-grid-for-nav">
|
31
|
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
32
|
-
<div class="wy-side-scroll">
|
33
|
-
<div class="wy-side-nav-search" >
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
<a href="index.html" class="icon icon-home">
|
38
|
-
SnapPy
|
39
|
-
<img src="_static/SnapPy-horizontal-128.png" class="logo" alt="Logo"/>
|
40
|
-
</a>
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
<
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
</
|
51
|
-
|
52
|
-
|
53
|
-
<li class="toctree-l1"><a class="reference internal" href="
|
54
|
-
<li class="toctree-l1"><a class="reference internal" href="
|
55
|
-
<li class="toctree-l1"><a class="reference internal" href="
|
56
|
-
<li class="toctree-l1"><a class="reference internal" href="
|
57
|
-
<li class="toctree-l1"><a class="reference internal" href="
|
58
|
-
<li class="toctree-l1"><a class="reference internal" href="
|
59
|
-
<li class="toctree-
|
60
|
-
<li class="toctree-
|
61
|
-
<li class="toctree-
|
62
|
-
<li class="toctree-
|
63
|
-
<li class="toctree-
|
64
|
-
<li class="toctree-
|
65
|
-
<li class="toctree-
|
66
|
-
<li class="toctree-l5"><a class="reference internal" href="
|
67
|
-
<li class="toctree-l5"><a class="reference internal" href="
|
68
|
-
<li class="toctree-l5"><a class="reference internal" href="
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
</
|
73
|
-
</
|
74
|
-
</
|
75
|
-
</li>
|
76
|
-
</ul>
|
77
|
-
</li>
|
78
|
-
<li class="toctree-
|
79
|
-
</
|
80
|
-
</li>
|
81
|
-
<li class="toctree-l1"><a class="reference internal" href="
|
82
|
-
<li class="toctree-l1"><a class="reference internal" href="
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
</
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
<
|
100
|
-
|
101
|
-
<li
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
<
|
115
|
-
<
|
116
|
-
<
|
117
|
-
<
|
118
|
-
<
|
119
|
-
<
|
120
|
-
<
|
121
|
-
<p
|
122
|
-
|
123
|
-
|
124
|
-
<
|
125
|
-
|
126
|
-
</
|
127
|
-
<
|
128
|
-
<
|
129
|
-
<span class="
|
130
|
-
<span class="go">c_0011_0
|
131
|
-
|
132
|
-
|
133
|
-
<
|
134
|
-
|
135
|
-
</
|
136
|
-
<
|
137
|
-
|
138
|
-
|
139
|
-
<
|
140
|
-
|
141
|
-
</
|
142
|
-
<
|
143
|
-
<
|
144
|
-
<span class="
|
145
|
-
<span class="go">
|
146
|
-
|
147
|
-
|
148
|
-
<span class="
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
<
|
159
|
-
|
160
|
-
</
|
161
|
-
<
|
162
|
-
|
163
|
-
<
|
164
|
-
<
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
<
|
175
|
-
|
176
|
-
<
|
177
|
-
<
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
<
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
<
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
<span class="
|
202
|
-
</
|
203
|
-
</
|
204
|
-
<
|
205
|
-
|
206
|
-
|
207
|
-
<span class="
|
208
|
-
</
|
209
|
-
</
|
210
|
-
<
|
211
|
-
<span class="
|
212
|
-
<span class="
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
<
|
221
|
-
<
|
222
|
-
<span class="
|
223
|
-
<
|
224
|
-
<
|
225
|
-
<span class="
|
226
|
-
|
227
|
-
|
228
|
-
<span class="
|
229
|
-
</
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
<
|
239
|
-
|
240
|
-
|
241
|
-
<
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
<
|
247
|
-
|
248
|
-
</
|
249
|
-
<
|
250
|
-
<
|
251
|
-
<span class="
|
252
|
-
|
253
|
-
|
254
|
-
<
|
255
|
-
|
256
|
-
</div>
|
257
|
-
|
258
|
-
<
|
259
|
-
|
260
|
-
</
|
261
|
-
|
262
|
-
|
263
|
-
<
|
264
|
-
|
265
|
-
</
|
266
|
-
|
267
|
-
|
268
|
-
<
|
269
|
-
|
270
|
-
</
|
271
|
-
<
|
272
|
-
<
|
273
|
-
<span class="
|
274
|
-
<span class="gp"
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
<
|
283
|
-
<
|
284
|
-
|
285
|
-
<
|
286
|
-
<p>
|
287
|
-
|
288
|
-
|
289
|
-
<
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
&
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
<
|
303
|
-
<
|
304
|
-
<span class="
|
305
|
-
<
|
306
|
-
<span class="gp">>>> </span><span class="
|
307
|
-
<span class="gp">>>> </span><span class="n">
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
</
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
<
|
319
|
-
<
|
320
|
-
<
|
321
|
-
<
|
322
|
-
<
|
323
|
-
<
|
324
|
-
<
|
325
|
-
<
|
326
|
-
<
|
327
|
-
|
328
|
-
|
329
|
-
<
|
330
|
-
|
331
|
-
</
|
332
|
-
|
333
|
-
|
334
|
-
<span class="
|
335
|
-
</
|
336
|
-
</div>
|
337
|
-
|
338
|
-
<
|
339
|
-
|
340
|
-
</
|
341
|
-
|
342
|
-
|
343
|
-
<
|
344
|
-
|
345
|
-
</div>
|
346
|
-
|
347
|
-
<
|
348
|
-
|
349
|
-
|
350
|
-
<
|
351
|
-
|
352
|
-
|
353
|
-
<
|
354
|
-
<span class="gp">>>> </span><span class="
|
355
|
-
<span class="gp"
|
356
|
-
|
357
|
-
|
358
|
-
<
|
359
|
-
|
360
|
-
</
|
361
|
-
|
362
|
-
|
363
|
-
<
|
364
|
-
|
365
|
-
</
|
366
|
-
<
|
367
|
-
|
368
|
-
|
369
|
-
<
|
370
|
-
|
371
|
-
</
|
372
|
-
<
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
<
|
377
|
-
|
378
|
-
</div>
|
379
|
-
|
380
|
-
<
|
381
|
-
|
382
|
-
</
|
383
|
-
<
|
384
|
-
<
|
385
|
-
|
386
|
-
|
387
|
-
<
|
388
|
-
|
389
|
-
</div>
|
390
|
-
|
391
|
-
<
|
392
|
-
|
393
|
-
</
|
394
|
-
<p>
|
395
|
-
<
|
396
|
-
<span class="gp">>>> </span><span class="n">
|
397
|
-
<span class="
|
398
|
-
|
399
|
-
|
400
|
-
<span class="
|
401
|
-
</
|
402
|
-
</div>
|
403
|
-
|
404
|
-
<
|
405
|
-
|
406
|
-
</
|
407
|
-
|
408
|
-
|
409
|
-
<
|
410
|
-
|
411
|
-
</
|
412
|
-
<
|
413
|
-
|
414
|
-
|
415
|
-
<
|
416
|
-
|
417
|
-
|
418
|
-
<
|
419
|
-
|
420
|
-
|
421
|
-
<
|
422
|
-
|
423
|
-
|
424
|
-
<p
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
<
|
433
|
-
|
434
|
-
<
|
435
|
-
<
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
<
|
443
|
-
|
444
|
-
<
|
445
|
-
|
446
|
-
|
447
|
-
<
|
448
|
-
|
449
|
-
</
|
450
|
-
<p>
|
451
|
-
|
452
|
-
|
453
|
-
<
|
454
|
-
|
455
|
-
|
456
|
-
<
|
457
|
-
|
458
|
-
|
459
|
-
<
|
460
|
-
<
|
461
|
-
|
462
|
-
|
463
|
-
<
|
464
|
-
|
465
|
-
</div>
|
466
|
-
|
467
|
-
<
|
468
|
-
|
469
|
-
</
|
470
|
-
|
471
|
-
|
472
|
-
<
|
473
|
-
|
474
|
-
</
|
475
|
-
|
476
|
-
|
477
|
-
<span class="
|
478
|
-
</
|
479
|
-
</div>
|
480
|
-
|
481
|
-
<span class="
|
482
|
-
</
|
483
|
-
</div>
|
484
|
-
|
485
|
-
<
|
486
|
-
</
|
487
|
-
|
488
|
-
<
|
489
|
-
|
490
|
-
|
491
|
-
<
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
<
|
499
|
-
|
500
|
-
|
501
|
-
<
|
502
|
-
|
503
|
-
|
504
|
-
<
|
505
|
-
|
506
|
-
|
507
|
-
<
|
508
|
-
|
509
|
-
|
510
|
-
<
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
<
|
522
|
-
|
523
|
-
|
524
|
-
<
|
525
|
-
|
526
|
-
|
527
|
-
<
|
528
|
-
|
529
|
-
|
530
|
-
<p>
|
531
|
-
|
532
|
-
|
533
|
-
<
|
534
|
-
|
535
|
-
</div>
|
536
|
-
|
537
|
-
<
|
538
|
-
</
|
539
|
-
|
540
|
-
<
|
541
|
-
|
542
|
-
|
543
|
-
<
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
<
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
<
|
558
|
-
|
559
|
-
<
|
560
|
-
|
561
|
-
imaginary part
|
562
|
-
|
563
|
-
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
<
|
569
|
-
|
570
|
-
|
571
|
-
<
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
<a
|
579
|
-
|
580
|
-
|
581
|
-
<
|
582
|
-
|
583
|
-
|
584
|
-
<
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
<
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
<
|
597
|
-
|
598
|
-
|
599
|
-
<
|
600
|
-
|
601
|
-
|
602
|
-
<
|
603
|
-
|
604
|
-
|
605
|
-
|
606
|
-
|
607
|
-
|
608
|
-
|
609
|
-
|
610
|
-
<
|
611
|
-
|
612
|
-
|
613
|
-
<
|
614
|
-
|
615
|
-
|
616
|
-
|
617
|
-
|
618
|
-
|
619
|
-
|
620
|
-
|
621
|
-
<
|
622
|
-
|
623
|
-
|
624
|
-
<
|
625
|
-
|
626
|
-
|
627
|
-
<
|
628
|
-
|
629
|
-
|
630
|
-
|
631
|
-
|
632
|
-
|
633
|
-
|
634
|
-
<
|
635
|
-
<
|
636
|
-
<
|
637
|
-
<
|
638
|
-
<
|
639
|
-
|
640
|
-
|
641
|
-
<
|
642
|
-
|
643
|
-
</
|
644
|
-
<
|
645
|
-
<
|
646
|
-
|
647
|
-
|
648
|
-
<
|
649
|
-
|
650
|
-
</
|
651
|
-
|
652
|
-
|
653
|
-
|
654
|
-
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
<
|
659
|
-
|
660
|
-
|
661
|
-
<
|
662
|
-
|
663
|
-
|
664
|
-
<
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
<
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
|
678
|
-
|
679
|
-
<
|
680
|
-
|
681
|
-
|
682
|
-
<
|
683
|
-
|
684
|
-
|
685
|
-
<
|
686
|
-
|
687
|
-
|
688
|
-
<
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
<
|
693
|
-
|
694
|
-
|
695
|
-
<
|
696
|
-
|
697
|
-
|
698
|
-
<
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
|
703
|
-
|
704
|
-
|
705
|
-
|
706
|
-
|
707
|
-
|
708
|
-
<
|
709
|
-
<
|
710
|
-
<
|
711
|
-
|
712
|
-
|
713
|
-
<
|
714
|
-
|
715
|
-
|
716
|
-
<
|
717
|
-
|
718
|
-
</
|
719
|
-
<p>
|
720
|
-
|
721
|
-
|
722
|
-
<
|
723
|
-
|
724
|
-
|
725
|
-
<
|
726
|
-
|
727
|
-
|
728
|
-
<
|
729
|
-
<
|
730
|
-
|
731
|
-
|
732
|
-
|
733
|
-
|
734
|
-
|
735
|
-
|
736
|
-
<
|
737
|
-
|
738
|
-
|
739
|
-
<
|
740
|
-
|
741
|
-
|
742
|
-
|
743
|
-
|
744
|
-
|
745
|
-
|
746
|
-
|
747
|
-
|
748
|
-
<
|
749
|
-
|
750
|
-
|
751
|
-
|
752
|
-
|
753
|
-
|
754
|
-
|
755
|
-
|
756
|
-
|
757
|
-
|
758
|
-
|
759
|
-
<
|
760
|
-
|
761
|
-
|
762
|
-
<
|
763
|
-
|
764
|
-
|
765
|
-
|
766
|
-
|
767
|
-
|
768
|
-
|
769
|
-
|
770
|
-
<
|
771
|
-
|
772
|
-
|
773
|
-
|
774
|
-
|
775
|
-
|
776
|
-
|
777
|
-
<
|
778
|
-
|
779
|
-
|
780
|
-
|
781
|
-
|
782
|
-
The
|
783
|
-
|
784
|
-
|
785
|
-
|
786
|
-
|
787
|
-
|
788
|
-
|
789
|
-
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
|
795
|
-
<
|
796
|
-
|
797
|
-
<
|
798
|
-
|
799
|
-
imaginary part
|
800
|
-
|
801
|
-
|
802
|
-
|
803
|
-
|
804
|
-
|
805
|
-
|
806
|
-
<
|
807
|
-
|
808
|
-
|
809
|
-
|
810
|
-
|
811
|
-
|
812
|
-
|
813
|
-
|
814
|
-
|
815
|
-
|
816
|
-
<
|
817
|
-
|
818
|
-
|
819
|
-
<
|
820
|
-
|
821
|
-
|
822
|
-
<p>
|
823
|
-
|
824
|
-
|
825
|
-
<p>
|
826
|
-
|
827
|
-
<
|
828
|
-
|
829
|
-
|
830
|
-
<p
|
831
|
-
|
832
|
-
|
833
|
-
<p>The user
|
834
|
-
|
835
|
-
|
836
|
-
|
837
|
-
|
838
|
-
|
839
|
-
|
840
|
-
|
841
|
-
|
842
|
-
|
843
|
-
<
|
844
|
-
|
845
|
-
|
846
|
-
|
847
|
-
|
848
|
-
|
849
|
-
|
850
|
-
|
851
|
-
<
|
852
|
-
|
853
|
-
|
854
|
-
<
|
855
|
-
|
856
|
-
|
857
|
-
<
|
858
|
-
|
859
|
-
|
860
|
-
|
861
|
-
|
862
|
-
<
|
863
|
-
|
864
|
-
|
865
|
-
<
|
866
|
-
|
867
|
-
|
868
|
-
<
|
869
|
-
|
870
|
-
|
871
|
-
<
|
872
|
-
|
873
|
-
|
874
|
-
|
875
|
-
|
876
|
-
<
|
877
|
-
|
878
|
-
|
879
|
-
<
|
880
|
-
|
881
|
-
|
882
|
-
<
|
883
|
-
|
884
|
-
|
885
|
-
|
886
|
-
|
887
|
-
|
888
|
-
|
889
|
-
|
890
|
-
<
|
891
|
-
|
892
|
-
|
893
|
-
<
|
894
|
-
|
895
|
-
|
896
|
-
|
897
|
-
|
898
|
-
|
899
|
-
|
900
|
-
|
901
|
-
<
|
902
|
-
|
903
|
-
|
904
|
-
<
|
905
|
-
|
906
|
-
|
907
|
-
<
|
908
|
-
|
909
|
-
|
910
|
-
|
911
|
-
|
912
|
-
|
913
|
-
|
914
|
-
|
915
|
-
<
|
916
|
-
|
917
|
-
|
918
|
-
<
|
919
|
-
|
920
|
-
|
921
|
-
<
|
922
|
-
|
923
|
-
|
924
|
-
|
925
|
-
|
926
|
-
<
|
927
|
-
|
928
|
-
|
929
|
-
<
|
930
|
-
|
931
|
-
|
932
|
-
<
|
933
|
-
|
934
|
-
|
935
|
-
|
936
|
-
<
|
937
|
-
|
938
|
-
|
939
|
-
<
|
940
|
-
|
941
|
-
|
942
|
-
<
|
943
|
-
|
944
|
-
|
945
|
-
|
946
|
-
|
947
|
-
|
948
|
-
|
949
|
-
<
|
950
|
-
|
951
|
-
<
|
952
|
-
|
953
|
-
|
954
|
-
<
|
955
|
-
|
956
|
-
|
957
|
-
|
958
|
-
|
959
|
-
|
960
|
-
|
961
|
-
|
962
|
-
|
963
|
-
<
|
964
|
-
<
|
965
|
-
<
|
966
|
-
<
|
967
|
-
|
968
|
-
<
|
969
|
-
|
970
|
-
|
971
|
-
<
|
972
|
-
|
973
|
-
|
974
|
-
<
|
975
|
-
|
976
|
-
|
977
|
-
|
978
|
-
|
979
|
-
|
980
|
-
|
981
|
-
|
982
|
-
<
|
983
|
-
|
984
|
-
|
985
|
-
|
986
|
-
|
987
|
-
|
988
|
-
|
989
|
-
|
990
|
-
<p>
|
991
|
-
<p>
|
992
|
-
|
993
|
-
|
994
|
-
<
|
995
|
-
|
996
|
-
</
|
997
|
-
<
|
998
|
-
|
999
|
-
|
1000
|
-
|
1001
|
-
|
1002
|
-
|
1003
|
-
|
1004
|
-
<
|
1005
|
-
|
1006
|
-
|
1007
|
-
|
1008
|
-
|
1009
|
-
|
1010
|
-
|
1011
|
-
|
1012
|
-
|
1013
|
-
|
1014
|
-
|
1015
|
-
|
1016
|
-
<
|
1017
|
-
|
1018
|
-
|
1019
|
-
<
|
1020
|
-
|
1021
|
-
|
1022
|
-
|
1023
|
-
|
1024
|
-
|
1025
|
-
|
1026
|
-
<
|
1027
|
-
|
1028
|
-
<
|
1029
|
-
<
|
1030
|
-
|
1031
|
-
<
|
1032
|
-
<span class="gp">>>> </span><span class="n">
|
1033
|
-
|
1034
|
-
|
1035
|
-
|
1036
|
-
|
1037
|
-
|
1038
|
-
|
1039
|
-
|
1040
|
-
<
|
1041
|
-
|
1042
|
-
|
1043
|
-
<
|
1044
|
-
|
1045
|
-
|
1046
|
-
<
|
1047
|
-
|
1048
|
-
|
1049
|
-
|
1050
|
-
|
1051
|
-
|
1052
|
-
|
1053
|
-
|
1054
|
-
<
|
1055
|
-
|
1056
|
-
|
1057
|
-
|
1058
|
-
|
1059
|
-
|
1060
|
-
|
1061
|
-
<
|
1062
|
-
|
1063
|
-
|
1064
|
-
<
|
1065
|
-
|
1066
|
-
|
1067
|
-
|
1068
|
-
|
1069
|
-
|
1070
|
-
|
1071
|
-
|
1072
|
-
|
1073
|
-
<
|
1074
|
-
<
|
1075
|
-
<
|
1076
|
-
|
1077
|
-
|
1078
|
-
|
1079
|
-
|
1080
|
-
|
1081
|
-
|
1082
|
-
|
1083
|
-
|
1084
|
-
<
|
1085
|
-
<
|
1086
|
-
<
|
1087
|
-
<
|
1088
|
-
|
1089
|
-
|
1090
|
-
|
1091
|
-
|
1092
|
-
|
1093
|
-
|
1094
|
-
|
1095
|
-
|
1096
|
-
<
|
1097
|
-
<
|
1098
|
-
|
1099
|
-
|
1100
|
-
|
1101
|
-
|
1102
|
-
|
1103
|
-
|
1104
|
-
|
1105
|
-
|
1106
|
-
<
|
1107
|
-
<
|
1108
|
-
|
1109
|
-
|
1110
|
-
|
1111
|
-
</
|
1112
|
-
|
1113
|
-
|
1114
|
-
</
|
1115
|
-
|
1116
|
-
|
1117
|
-
|
1118
|
-
|
1119
|
-
|
1120
|
-
|
1121
|
-
|
1122
|
-
|
1123
|
-
|
1124
|
-
|
1125
|
-
|
1126
|
-
|
1127
|
-
|
1128
|
-
|
1129
|
-
|
1130
|
-
|
1131
|
-
|
1132
|
-
|
1133
|
-
|
1134
|
-
|
1135
|
-
</
|
1136
|
-
|
1137
|
-
|
1138
|
-
|
1139
|
-
|
1140
|
-
|
1141
|
-
|
1142
|
-
|
1143
|
-
|
1144
|
-
</script>
|
1145
|
-
|
1146
|
-
</body>
|
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>Classes — SnapPy 3.2 documentation</title>
|
10
|
+
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
|
11
|
+
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=e59714d7" />
|
12
|
+
<link rel="stylesheet" type="text/css" href="_static/snappy_sphinx_rtd_theme.css?v=1b8ec2a8" />
|
13
|
+
|
14
|
+
|
15
|
+
<link rel="shortcut icon" href="_static/SnapPy.ico"/>
|
16
|
+
<script src="_static/jquery.js?v=5d32c60e"></script>
|
17
|
+
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
18
|
+
<script src="_static/documentation_options.js?v=828ea960"></script>
|
19
|
+
<script src="_static/doctools.js?v=9a2dae69"></script>
|
20
|
+
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
|
21
|
+
<script async="async" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
22
|
+
<script src="_static/js/theme.js"></script>
|
23
|
+
<link rel="index" title="Index" href="genindex.html" />
|
24
|
+
<link rel="search" title="Search" href="search.html" />
|
25
|
+
<link rel="next" title="News" href="news.html" />
|
26
|
+
<link rel="prev" title="Step-by-step examples: Part 4" href="ptolemy_examples4.html" />
|
27
|
+
</head>
|
28
|
+
|
29
|
+
<body class="wy-body-for-nav">
|
30
|
+
<div class="wy-grid-for-nav">
|
31
|
+
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
32
|
+
<div class="wy-side-scroll">
|
33
|
+
<div class="wy-side-nav-search" >
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
<a href="index.html" class="icon icon-home">
|
38
|
+
SnapPy
|
39
|
+
<img src="_static/SnapPy-horizontal-128.png" class="logo" alt="Logo"/>
|
40
|
+
</a>
|
41
|
+
<div role="search">
|
42
|
+
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
43
|
+
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
44
|
+
<input type="hidden" name="check_keywords" value="yes" />
|
45
|
+
<input type="hidden" name="area" value="default" />
|
46
|
+
</form>
|
47
|
+
</div>
|
48
|
+
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
49
|
+
<ul class="current">
|
50
|
+
<li class="toctree-l1"><a class="reference internal" href="installing.html">Installing SnapPy</a></li>
|
51
|
+
<li class="toctree-l1"><a class="reference internal" href="screenshots.html">Screenshots: SnapPy in action</a></li>
|
52
|
+
<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorial</a></li>
|
53
|
+
<li class="toctree-l1"><a class="reference internal" href="snappy.html">The snappy module and its classes</a></li>
|
54
|
+
<li class="toctree-l1"><a class="reference internal" href="plink.html">Using SnapPy’s link editor</a></li>
|
55
|
+
<li class="toctree-l1"><a class="reference internal" href="spherogram.html">Links: planar diagrams and invariants</a></li>
|
56
|
+
<li class="toctree-l1"><a class="reference internal" href="snap.html">Number theory of hyperbolic 3-manifolds</a></li>
|
57
|
+
<li class="toctree-l1"><a class="reference internal" href="verify.html">Verified computations</a></li>
|
58
|
+
<li class="toctree-l1 current"><a class="reference internal" href="other.html">Other components</a><ul class="current">
|
59
|
+
<li class="toctree-l2 current"><a class="reference internal" href="other.html#ptolemy-module">Ptolemy module</a><ul class="current">
|
60
|
+
<li class="toctree-l3 current"><a class="reference internal" href="ptolemy.html">The ptolemy module</a><ul class="current">
|
61
|
+
<li class="toctree-l4"><a class="reference internal" href="ptolemy.html#what-is-the-ptolemy-module">What is the ptolemy module?</a></li>
|
62
|
+
<li class="toctree-l4 current"><a class="reference internal" href="ptolemy.html#documentation">Documentation</a><ul class="current">
|
63
|
+
<li class="toctree-l5"><a class="reference internal" href="ptolemy_prelim.html">Mathematical preliminaries</a></li>
|
64
|
+
<li class="toctree-l5"><a class="reference internal" href="ptolemy_examples1.html">Step-by-step examples: Part 1</a></li>
|
65
|
+
<li class="toctree-l5"><a class="reference internal" href="ptolemy_examples2.html">Step-by-step examples: Part 2</a></li>
|
66
|
+
<li class="toctree-l5"><a class="reference internal" href="ptolemy_examples3.html">Step-by-step examples: Part 3</a></li>
|
67
|
+
<li class="toctree-l5"><a class="reference internal" href="ptolemy_examples4.html">Step-by-step examples: Part 4</a></li>
|
68
|
+
<li class="toctree-l5 current"><a class="current reference internal" href="#">Classes</a></li>
|
69
|
+
</ul>
|
70
|
+
</li>
|
71
|
+
</ul>
|
72
|
+
</li>
|
73
|
+
</ul>
|
74
|
+
</li>
|
75
|
+
<li class="toctree-l2"><a class="reference internal" href="other.html#twister">Twister</a></li>
|
76
|
+
</ul>
|
77
|
+
</li>
|
78
|
+
<li class="toctree-l1"><a class="reference internal" href="news.html">News</a></li>
|
79
|
+
<li class="toctree-l1"><a class="reference internal" href="credits.html">Credits</a></li>
|
80
|
+
<li class="toctree-l1"><a class="reference internal" href="bugs.html">Reporting bugs and other problems</a></li>
|
81
|
+
<li class="toctree-l1"><a class="reference internal" href="todo.html">To Do List</a></li>
|
82
|
+
<li class="toctree-l1"><a class="reference internal" href="development.html">Development Basics</a></li>
|
83
|
+
</ul>
|
84
|
+
|
85
|
+
</div>
|
86
|
+
</div>
|
87
|
+
</nav>
|
88
|
+
|
89
|
+
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
90
|
+
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
91
|
+
<a href="index.html">SnapPy</a>
|
92
|
+
</nav>
|
93
|
+
|
94
|
+
<div class="wy-nav-content">
|
95
|
+
<div class="rst-content">
|
96
|
+
<div role="navigation" aria-label="Page navigation">
|
97
|
+
<ul class="wy-breadcrumbs">
|
98
|
+
<li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
|
99
|
+
<li class="breadcrumb-item"><a href="other.html">Other components</a></li>
|
100
|
+
<li class="breadcrumb-item"><a href="ptolemy.html">The ptolemy module</a></li>
|
101
|
+
<li class="breadcrumb-item active">Classes</li>
|
102
|
+
<li class="wy-breadcrumbs-aside">
|
103
|
+
</li>
|
104
|
+
</ul>
|
105
|
+
<hr/>
|
106
|
+
</div>
|
107
|
+
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
108
|
+
<div itemprop="articleBody">
|
109
|
+
|
110
|
+
<section id="classes">
|
111
|
+
<h1>Classes<a class="headerlink" href="#classes" title="Link to this heading"></a></h1>
|
112
|
+
<section id="ptolemyvariety">
|
113
|
+
<h2>PtolemyVariety<a class="headerlink" href="#ptolemyvariety" title="Link to this heading"></a></h2>
|
114
|
+
<dl class="py class">
|
115
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.ptolemyVariety.PtolemyVariety">
|
116
|
+
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.ptolemy.ptolemyVariety.</span></span><span class="sig-name descname"><span class="pre">PtolemyVariety</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">manifold</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">N</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">obstruction_class</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">simplify</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">eliminate_fixed_ptolemys</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.ptolemyVariety.PtolemyVariety" title="Link to this definition"></a></dt>
|
117
|
+
<dd><p>Holds a reduced Ptolemy variety.</p>
|
118
|
+
<p>=== Examples ===</p>
|
119
|
+
<p>To generate such a variety, call:</p>
|
120
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">snappy</span> <span class="kn">import</span> <span class="n">Manifold</span>
|
121
|
+
<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">"4_1"</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="n">obstruction_class</span> <span class="o">=</span> <span class="mi">1</span><span class="p">)</span>
|
122
|
+
</pre></div>
|
123
|
+
</div>
|
124
|
+
<p>Show the equations and variables:</p>
|
125
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">p</span><span class="o">.</span><span class="n">equations</span><span class="p">:</span> <span class="nb">print</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
|
126
|
+
<span class="go">- c_0011_0 * c_0101_0 + c_0011_0^2 + c_0101_0^2</span>
|
127
|
+
<span class="go">c_0011_0 * c_0101_0 - c_0011_0^2 - c_0101_0^2</span>
|
128
|
+
<span class="go">- 1 + c_0011_0</span>
|
129
|
+
<span class="gp">>>> </span><span class="n">p</span><span class="o">.</span><span class="n">variables</span>
|
130
|
+
<span class="go">['c_0011_0', 'c_0101_0']</span>
|
131
|
+
</pre></div>
|
132
|
+
</div>
|
133
|
+
<p>Show as an ideal (sage object):</p>
|
134
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">p</span><span class="o">.</span><span class="n">ideal</span>
|
135
|
+
<span class="go">Ideal (-c_0011_0^2 + c_0011_0*c_0101_0 + c_0101_0^2, -c_0011_0^2 - c_0011_0*c_0101_0 + c_0101_0^2, c_0011_0 - 1) of Multivariate Polynomial Ring in c_0011_0, c_0101_0 over Rational Field</span>
|
136
|
+
<span class="go">(skip doctest because example only works in sage and not plain python)</span>
|
137
|
+
</pre></div>
|
138
|
+
</div>
|
139
|
+
<p>Produce magma input:</p>
|
140
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">s</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">to_magma</span><span class="p">()</span>
|
141
|
+
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">s</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'ring and ideal'</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span>
|
142
|
+
<span class="go">R<c_0011_0, c_0101_0> := PolynomialRing(RationalField(), 2, "grevlex");</span>
|
143
|
+
<span class="go">MyIdeal := ideal<R |</span>
|
144
|
+
<span class="go"> - c_0011_0 * c_0101_0 + c_0011_0^2 + c_0101_0^2,</span>
|
145
|
+
<span class="go"> ...</span>
|
146
|
+
</pre></div>
|
147
|
+
</div>
|
148
|
+
<p>Call <code class="docutils literal notranslate"><span class="pre">p.compute_solutions()</span></code> to automatically compute solutions!</p>
|
149
|
+
<p>Show canonical representatives:</p>
|
150
|
+
<p>(The Ptolemy coordinates c_0110_0 and c_0101_0 are identified, this
|
151
|
+
information is needed to recover all Ptolemy coordinates from the solutions
|
152
|
+
of a simplified Ptolemy variety. The information is also packaged into a
|
153
|
+
python section by py_eval_variable_dict().)</p>
|
154
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">p</span><span class="o">.</span><span class="n">canonical_representative</span><span class="p">[</span><span class="s2">"c_0110_0"</span><span class="p">]</span>
|
155
|
+
<span class="go">(1, 0, 'c_0101_0')</span>
|
156
|
+
</pre></div>
|
157
|
+
</div>
|
158
|
+
<dl class="py method">
|
159
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.ptolemyVariety.PtolemyVariety.compute_decomposition">
|
160
|
+
<span class="sig-name descname"><span class="pre">compute_decomposition</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">engine</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">memory_limit</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">750000000</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">directory</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">verbose</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">template_path</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'magma/default.magma_template'</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.ptolemyVariety.PtolemyVariety.compute_decomposition" title="Link to this definition"></a></dt>
|
161
|
+
<dd><p>Starts an engine such as magma to compute the
|
162
|
+
radical decomposition of the Ptolemy variety.</p>
|
163
|
+
<p>If started in sage, uses sage, otherwise, uses magma.</p>
|
164
|
+
<p>=== Arguments ===</p>
|
165
|
+
<p>engine — engine to use, currently, only support magma and sage
|
166
|
+
memory_limit — maximal allowed memory in bytes
|
167
|
+
directory — location for input and output files, temporary directory used if not specified
|
168
|
+
verbose — print extra information</p>
|
169
|
+
</dd></dl>
|
170
|
+
|
171
|
+
<dl class="py method">
|
172
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.ptolemyVariety.PtolemyVariety.compute_solutions">
|
173
|
+
<span class="sig-name descname"><span class="pre">compute_solutions</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">engine</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">numerical</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">template_path</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'magma/default.magma_template'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">memory_limit</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">750000000</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">directory</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">verbose</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.ptolemyVariety.PtolemyVariety.compute_solutions" title="Link to this definition"></a></dt>
|
174
|
+
<dd><p>Starts an engine such as magma to compute the
|
175
|
+
radical decomposition of the ideal and computes exact solutions.</p>
|
176
|
+
<p>If started in sage, uses sage, otherwise, uses magma.</p>
|
177
|
+
<p>=== Arguments ===</p>
|
178
|
+
<p>engine — engine to use, currently, only support magma and sage
|
179
|
+
numerical — get numerical solutions from magma instead of exact ones
|
180
|
+
memory_limit — maximal allowed memory in bytes
|
181
|
+
directory — location for input and output files, temporary directory used if not specified
|
182
|
+
verbose — print extra information</p>
|
183
|
+
</dd></dl>
|
184
|
+
|
185
|
+
<dl class="py method">
|
186
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.ptolemyVariety.PtolemyVariety.degree_to_shapes">
|
187
|
+
<span class="sig-name descname"><span class="pre">degree_to_shapes</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.ptolemyVariety.PtolemyVariety.degree_to_shapes" title="Link to this definition"></a></dt>
|
188
|
+
<dd><p>In general, there can be d different solutions to the (reduced) Ptolemy
|
189
|
+
variety for each solution to the gluing equations (with peripheral
|
190
|
+
equations). This method computes d which is also the number of elements
|
191
|
+
in H^1(Mhat; Z/N) where Mhat is the non-manifold cell comples obtained
|
192
|
+
by gluing together the tetrahedra as non-ideal tetrahedra.</p>
|
193
|
+
<p>For example, the Ptolemy variety for m009 has 4 points but there are
|
194
|
+
only 2 distinct boundary-unipotent PSL(2,C) representations.
|
195
|
+
Thus the following call returns 2 = 4 / 2</p>
|
196
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">snappy</span> <span class="kn">import</span> <span class="n">Manifold</span>
|
197
|
+
<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="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">degree_to_shapes</span><span class="p">()</span>
|
198
|
+
<span class="go">2</span>
|
199
|
+
</pre></div>
|
200
|
+
</div>
|
201
|
+
<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">"m010"</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="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">degree_to_shapes</span><span class="p">()</span>
|
202
|
+
<span class="go">2</span>
|
203
|
+
<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="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">degree_to_shapes</span><span class="p">()</span>
|
204
|
+
<span class="go">1</span>
|
205
|
+
</pre></div>
|
206
|
+
</div>
|
207
|
+
<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">3</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">degree_to_shapes</span><span class="p">()</span>
|
208
|
+
<span class="go">1</span>
|
209
|
+
<span class="gp">>>> </span><span class="n">Manifold</span><span class="p">(</span><span class="s2">"m010"</span><span class="p">)</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">degree_to_shapes</span><span class="p">()</span>
|
210
|
+
<span class="go">3</span>
|
211
|
+
<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">3</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">degree_to_shapes</span><span class="p">()</span>
|
212
|
+
<span class="go">1</span>
|
213
|
+
</pre></div>
|
214
|
+
</div>
|
215
|
+
</dd></dl>
|
216
|
+
|
217
|
+
<dl class="py method">
|
218
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.ptolemyVariety.PtolemyVariety.filename_base">
|
219
|
+
<span class="sig-name descname"><span class="pre">filename_base</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.ptolemyVariety.PtolemyVariety.filename_base" title="Link to this definition"></a></dt>
|
220
|
+
<dd><p>Preferred filename base for writing out this Ptolemy variety</p>
|
221
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">snappy</span> <span class="kn">import</span> <span class="o">*</span>
|
222
|
+
<span class="gp">>>> </span><span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'4_1'</span><span class="p">)</span>
|
223
|
+
<span class="gp">>>> </span><span class="n">p</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="n">obstruction_class</span> <span class="o">=</span> <span class="mi">1</span><span class="p">)</span>
|
224
|
+
<span class="gp">>>> </span><span class="n">p</span><span class="o">.</span><span class="n">filename_base</span><span class="p">()</span>
|
225
|
+
<span class="go">'4_1__sl2_c1'</span>
|
226
|
+
</pre></div>
|
227
|
+
</div>
|
228
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">p</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
|
229
|
+
<span class="gp">>>> </span><span class="n">p</span><span class="o">.</span><span class="n">filename_base</span><span class="p">()</span>
|
230
|
+
<span class="go">'4_1__sl2_c0'</span>
|
231
|
+
</pre></div>
|
232
|
+
</div>
|
233
|
+
</dd></dl>
|
234
|
+
|
235
|
+
<dl class="py method">
|
236
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.ptolemyVariety.PtolemyVariety.py_eval_section">
|
237
|
+
<span class="sig-name descname"><span class="pre">py_eval_section</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.ptolemyVariety.PtolemyVariety.py_eval_section" title="Link to this definition"></a></dt>
|
238
|
+
<dd><p>Returns a string that can be evaluated in python and contains extra
|
239
|
+
information needed to recover solutions from a simplified Ptolemy
|
240
|
+
variety.</p>
|
241
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">snappy</span> <span class="kn">import</span> <span class="n">Manifold</span><span class="p">,</span> <span class="n">pari</span>
|
242
|
+
<span class="gp">>>> </span><span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">'4_1'</span><span class="p">)</span>
|
243
|
+
<span class="gp">>>> </span><span class="n">p</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="n">obstruction_class</span> <span class="o">=</span> <span class="mi">1</span><span class="p">)</span>
|
244
|
+
</pre></div>
|
245
|
+
</div>
|
246
|
+
<p>Get extra information</p>
|
247
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">eval_section</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">py_eval_section</span><span class="p">()</span>
|
248
|
+
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">eval_section</span><span class="p">)</span>
|
249
|
+
<span class="go">{'variable_dict' :</span>
|
250
|
+
<span class="go"> (lambda d: {</span>
|
251
|
+
<span class="go"> ...</span>
|
252
|
+
</pre></div>
|
253
|
+
</div>
|
254
|
+
<p>Turn it into a python object by evaluation.</p>
|
255
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">obj</span> <span class="o">=</span> <span class="nb">eval</span><span class="p">(</span><span class="n">eval_section</span><span class="p">)</span>
|
256
|
+
</pre></div>
|
257
|
+
</div>
|
258
|
+
<p>Access the function that expands a solution to the simplified
|
259
|
+
Ptolemy variety to a full solution.</p>
|
260
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">variable_dict</span> <span class="o">=</span> <span class="n">obj</span><span class="p">[</span><span class="s1">'variable_dict'</span><span class="p">]</span>
|
261
|
+
</pre></div>
|
262
|
+
</div>
|
263
|
+
<p>Setup a solution and expand it to a full solution, ‘1’ must map to 1</p>
|
264
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">simplified_solution</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'c_0101_0'</span> <span class="p">:</span> <span class="n">pari</span><span class="p">(</span><span class="s1">'0.5 - 0.866025403784439*I'</span><span class="p">),</span> <span class="s1">'1'</span> <span class="p">:</span> <span class="n">pari</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> <span class="s1">'c_0011_0'</span> <span class="p">:</span> <span class="n">pari</span><span class="p">(</span><span class="mi">1</span><span class="p">)}</span>
|
265
|
+
<span class="gp">>>> </span><span class="n">full_solution</span> <span class="o">=</span> <span class="n">variable_dict</span><span class="p">(</span><span class="n">simplified_solution</span><span class="p">)</span>
|
266
|
+
</pre></div>
|
267
|
+
</div>
|
268
|
+
<p>Full solution is a dictionary with a key for every Ptolemy coordinate</p>
|
269
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">full_solution</span><span class="p">[</span><span class="s1">'c_1010_1'</span><span class="p">]</span>
|
270
|
+
<span class="go">1</span>
|
271
|
+
<span class="gp">>>> </span><span class="k">for</span> <span class="n">tet</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">2</span><span class="p">):</span>
|
272
|
+
<span class="gp">... </span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">utilities</span><span class="o">.</span><span class="n">quadruples_with_fixed_sum_iterator</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="n">skipVertices</span> <span class="o">=</span> <span class="kc">True</span><span class="p">):</span>
|
273
|
+
<span class="gp">... </span> <span class="n">c</span> <span class="o">=</span> <span class="s2">"c_</span><span class="si">%d%d%d%d</span><span class="s2">"</span> <span class="o">%</span> <span class="n">i</span> <span class="o">+</span> <span class="s2">"_</span><span class="si">%d</span><span class="s2">"</span> <span class="o">%</span> <span class="n">tet</span>
|
274
|
+
<span class="gp">... </span> <span class="k">assert</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">full_solution</span>
|
275
|
+
</pre></div>
|
276
|
+
</div>
|
277
|
+
</dd></dl>
|
278
|
+
|
279
|
+
<dl class="py method">
|
280
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.ptolemyVariety.PtolemyVariety.to_magma">
|
281
|
+
<span class="sig-name descname"><span class="pre">to_magma</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">template_path</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'magma/default.magma_template'</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.ptolemyVariety.PtolemyVariety.to_magma" title="Link to this definition"></a></dt>
|
282
|
+
<dd><p>Returns a string with the ideal that can be used as input for magma.</p>
|
283
|
+
<p>The advanced user can provide a template string to write own magma
|
284
|
+
code to process the equations.</p>
|
285
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">snappy</span> <span class="kn">import</span> <span class="o">*</span>
|
286
|
+
<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">"4_1"</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="n">obstruction_class</span> <span class="o">=</span> <span class="mi">1</span><span class="p">)</span>
|
287
|
+
</pre></div>
|
288
|
+
</div>
|
289
|
+
<p>Magma input to compute radical Decomposition
|
290
|
+
>>> s = p.to_magma()
|
291
|
+
>>> print(s.split(‘ring and ideal’)[1].strip()) #doctest: +ELLIPSIS +NORMALIZE_WHITESPACE
|
292
|
+
R<c_0011_0, c_0101_0> := PolynomialRing(RationalField(), 2, “grevlex”);
|
293
|
+
MyIdeal := ideal<R | - c_0011_0 * c_0101_0 + c_0011_0^2 + c_0101_0^2,
|
294
|
+
…
|
295
|
+
>>> “RadicalDecomposition” in p.to_magma()
|
296
|
+
True</p>
|
297
|
+
</dd></dl>
|
298
|
+
|
299
|
+
<dl class="py method">
|
300
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.ptolemyVariety.PtolemyVariety.to_magma_file">
|
301
|
+
<span class="sig-name descname"><span class="pre">to_magma_file</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">template_path</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'magma/default.magma_template'</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.ptolemyVariety.PtolemyVariety.to_magma_file" title="Link to this definition"></a></dt>
|
302
|
+
<dd><div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">os</span><span class="o">,</span> <span class="nn">tempfile</span>
|
303
|
+
<span class="gp">>>> </span><span class="kn">from</span> <span class="nn">snappy</span> <span class="kn">import</span> <span class="n">Manifold</span>
|
304
|
+
<span class="gp">>>> </span><span class="n">handle</span><span class="p">,</span> <span class="n">name</span> <span class="o">=</span> <span class="n">tempfile</span><span class="o">.</span><span class="n">mkstemp</span><span class="p">()</span>
|
305
|
+
<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">"4_1"</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="n">obstruction_class</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
|
306
|
+
<span class="gp">>>> </span><span class="n">p</span><span class="o">.</span><span class="n">to_magma_file</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
307
|
+
<span class="gp">>>> </span><span class="n">os</span><span class="o">.</span><span class="n">close</span><span class="p">(</span><span class="n">handle</span><span class="p">);</span> <span class="n">os</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
308
|
+
</pre></div>
|
309
|
+
</div>
|
310
|
+
</dd></dl>
|
311
|
+
|
312
|
+
</dd></dl>
|
313
|
+
|
314
|
+
</section>
|
315
|
+
<section id="ptolemycoordinates">
|
316
|
+
<h2>PtolemyCoordinates<a class="headerlink" href="#ptolemycoordinates" title="Link to this heading"></a></h2>
|
317
|
+
<dl class="py class">
|
318
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.PtolemyCoordinates">
|
319
|
+
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.ptolemy.coordinates.</span></span><span class="sig-name descname"><span class="pre">PtolemyCoordinates</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">d</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">is_numerical=True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">py_eval_section=None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">manifold_thunk=<function</span> <span class="pre">PtolemyCoordinates.<lambda>></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">non_trivial_generalized_obstruction_class=False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.PtolemyCoordinates" title="Link to this definition"></a></dt>
|
320
|
+
<dd><p>Represents a solution of a Ptolemy variety as python dictionary.</p>
|
321
|
+
<p>=== Examples ===</p>
|
322
|
+
<p>Construct solution from magma output:</p>
|
323
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">snappy.ptolemy.processMagmaFile</span> <span class="kn">import</span> <span class="n">_magma_output_for_4_1__sl3</span><span class="p">,</span> <span class="n">solutions_from_magma</span>
|
324
|
+
<span class="gp">>>> </span><span class="kn">from</span> <span class="nn">snappy</span> <span class="kn">import</span> <span class="n">Manifold</span>
|
325
|
+
<span class="gp">>>> </span><span class="n">solutions</span> <span class="o">=</span> <span class="n">solutions_from_magma</span><span class="p">(</span><span class="n">_magma_output_for_4_1__sl3</span><span class="p">)</span>
|
326
|
+
<span class="gp">>>> </span><span class="n">solution</span> <span class="o">=</span> <span class="n">solutions</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
|
327
|
+
</pre></div>
|
328
|
+
</div>
|
329
|
+
<p>Access a Ptolemy coordinate:</p>
|
330
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">solution</span><span class="p">[</span><span class="s1">'c_2100_0'</span><span class="p">]</span>
|
331
|
+
<span class="go">1</span>
|
332
|
+
</pre></div>
|
333
|
+
</div>
|
334
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">solution</span><span class="o">.</span><span class="n">number_field</span><span class="p">()</span>
|
335
|
+
<span class="go">x^2 + x + 1</span>
|
336
|
+
</pre></div>
|
337
|
+
</div>
|
338
|
+
<p>Solution is always 0 dimensional:</p>
|
339
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">solution</span><span class="o">.</span><span class="n">dimension</span>
|
340
|
+
<span class="go">0</span>
|
341
|
+
</pre></div>
|
342
|
+
</div>
|
343
|
+
<p>Check that it is really a solution, exactly:</p>
|
344
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">solution</span><span class="o">.</span><span class="n">check_against_manifold</span><span class="p">()</span>
|
345
|
+
</pre></div>
|
346
|
+
</div>
|
347
|
+
<p>If the solution was not created through the ptolemy module
|
348
|
+
and thus not associated to a manifold, we need to explicitly
|
349
|
+
specify one:</p>
|
350
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">myDict</span> <span class="o">=</span> <span class="p">{}</span>
|
351
|
+
<span class="gp">>>> </span><span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">solution</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
352
|
+
<span class="gp">... </span> <span class="n">myDict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
|
353
|
+
<span class="gp">>>> </span><span class="n">mysolution</span> <span class="o">=</span> <span class="n">PtolemyCoordinates</span><span class="p">(</span><span class="n">myDict</span><span class="p">)</span>
|
354
|
+
<span class="gp">>>> </span><span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">"4_1"</span><span class="p">)</span>
|
355
|
+
<span class="gp">>>> </span><span class="n">solution</span><span class="o">.</span><span class="n">check_against_manifold</span><span class="p">(</span><span class="n">M</span><span class="p">)</span>
|
356
|
+
</pre></div>
|
357
|
+
</div>
|
358
|
+
<p>Turn into (Galois conjugate) numerical solutions:</p>
|
359
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">old_precision</span> <span class="o">=</span> <span class="n">pari</span><span class="o">.</span><span class="n">set_real_precision</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span> <span class="c1"># with high precision</span>
|
360
|
+
<span class="gp">>>> </span><span class="n">numerical_solutions</span> <span class="o">=</span> <span class="n">solution</span><span class="o">.</span><span class="n">numerical</span><span class="p">()</span>
|
361
|
+
</pre></div>
|
362
|
+
</div>
|
363
|
+
<p>Check that it is a solution, numerically:</p>
|
364
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">numerical_solutions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">check_against_manifold</span><span class="p">(</span><span class="n">M</span><span class="p">,</span> <span class="mf">1e-80</span><span class="p">)</span>
|
365
|
+
<span class="gp">>>> </span><span class="n">pari</span><span class="o">.</span><span class="n">set_real_precision</span><span class="p">(</span><span class="n">old_precision</span><span class="p">)</span> <span class="c1"># reset pari engine</span>
|
366
|
+
<span class="go">100</span>
|
367
|
+
</pre></div>
|
368
|
+
</div>
|
369
|
+
<p>Compute cross ratios from the Ptolemy coordinates (cross ratios
|
370
|
+
according to SnapPy convention, see help(solution.cross_ratios):</p>
|
371
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">cross</span> <span class="o">=</span> <span class="n">solution</span><span class="o">.</span><span class="n">cross_ratios</span><span class="p">()</span>
|
372
|
+
<span class="gp">>>> </span><span class="n">cross</span><span class="p">[</span><span class="s1">'z_0001_0'</span><span class="p">]</span>
|
373
|
+
<span class="go">Mod(-x, x^2 + x + 1)</span>
|
374
|
+
</pre></div>
|
375
|
+
</div>
|
376
|
+
<p>Compute volumes:</p>
|
377
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">volumes</span> <span class="o">=</span> <span class="n">cross</span><span class="o">.</span><span class="n">volume_numerical</span><span class="p">()</span>
|
378
|
+
</pre></div>
|
379
|
+
</div>
|
380
|
+
<p>Check that volume is 4 times the geometric one:</p>
|
381
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">volume</span> <span class="o">=</span> <span class="n">volumes</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">abs</span><span class="p">()</span>
|
382
|
+
<span class="gp">>>> </span><span class="n">diff</span> <span class="o">=</span> <span class="nb">abs</span><span class="p">(</span><span class="mi">4</span> <span class="o">*</span> <span class="n">M</span><span class="o">.</span><span class="n">volume</span><span class="p">()</span> <span class="o">-</span> <span class="n">volume</span><span class="p">)</span>
|
383
|
+
<span class="gp">>>> </span><span class="n">diff</span> <span class="o"><</span> <span class="mf">1e-9</span>
|
384
|
+
<span class="go">True</span>
|
385
|
+
</pre></div>
|
386
|
+
</div>
|
387
|
+
<p>Compute flattenings:</p>
|
388
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">flattenings</span> <span class="o">=</span> <span class="n">solution</span><span class="o">.</span><span class="n">flattenings_numerical</span><span class="p">()</span>
|
389
|
+
</pre></div>
|
390
|
+
</div>
|
391
|
+
<p>Compute complex volumes:</p>
|
392
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">cvols</span> <span class="o">=</span> <span class="p">[</span><span class="n">flattening</span><span class="o">.</span><span class="n">complex_volume</span><span class="p">()</span> <span class="k">for</span> <span class="n">flattening</span> <span class="ow">in</span> <span class="n">flattenings</span><span class="p">]</span>
|
393
|
+
<span class="gp">>>> </span><span class="n">volume</span> <span class="o">=</span> <span class="n">cvols</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">real</span><span class="p">()</span><span class="o">.</span><span class="n">abs</span><span class="p">()</span>
|
394
|
+
<span class="gp">>>> </span><span class="n">chernSimons</span> <span class="o">=</span> <span class="n">cvols</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">imag</span><span class="p">()</span>
|
395
|
+
<span class="gp">>>> </span><span class="n">diff</span> <span class="o">=</span> <span class="nb">abs</span><span class="p">(</span><span class="mi">4</span> <span class="o">*</span> <span class="n">M</span><span class="o">.</span><span class="n">volume</span><span class="p">()</span> <span class="o">-</span> <span class="n">volume</span><span class="p">)</span>
|
396
|
+
<span class="gp">>>> </span><span class="n">diff</span> <span class="o"><</span> <span class="mf">1e-9</span>
|
397
|
+
<span class="go">True</span>
|
398
|
+
</pre></div>
|
399
|
+
</div>
|
400
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">snappy</span> <span class="kn">import</span> <span class="n">pari</span>
|
401
|
+
<span class="gp">>>> </span><span class="n">normalized</span> <span class="o">=</span> <span class="n">chernSimons</span> <span class="o">*</span> <span class="mi">6</span> <span class="o">/</span> <span class="p">(</span><span class="n">pari</span><span class="p">(</span><span class="s1">'Pi'</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>
|
402
|
+
</pre></div>
|
403
|
+
</div>
|
404
|
+
<p>Check that Chern Simons is zero up to 6 torsion:</p>
|
405
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">normalized</span> <span class="o">-</span> <span class="n">normalized</span><span class="o">.</span><span class="n">round</span><span class="p">()</span> <span class="o"><</span> <span class="mf">1e-9</span>
|
406
|
+
<span class="go">True</span>
|
407
|
+
</pre></div>
|
408
|
+
</div>
|
409
|
+
<dl class="py method">
|
410
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.PtolemyCoordinates.N">
|
411
|
+
<span class="sig-name descname"><span class="pre">N</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.PtolemyCoordinates.N" title="Link to this definition"></a></dt>
|
412
|
+
<dd><p>Get the <em>N</em> where these coordinates are for SL/PSL(<em>N</em>, <strong>C</strong>)-representations.</p>
|
413
|
+
</dd></dl>
|
414
|
+
|
415
|
+
<dl class="py method">
|
416
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.PtolemyCoordinates.check_against_manifold">
|
417
|
+
<span class="sig-name descname"><span class="pre">check_against_manifold</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">M</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">epsilon</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.PtolemyCoordinates.check_against_manifold" title="Link to this definition"></a></dt>
|
418
|
+
<dd><p>Checks that the given solution really is a solution to the Ptolemy
|
419
|
+
variety of a manifold. See help(ptolemy.PtolemyCoordinates) for
|
420
|
+
more example.</p>
|
421
|
+
<p>=== Arguments ===</p>
|
422
|
+
<ul class="simple">
|
423
|
+
<li><p>M — manifold to check this for</p></li>
|
424
|
+
<li><p>epsilon — maximal allowed error when checking the relations, use
|
425
|
+
None for exact comparison.</p></li>
|
426
|
+
</ul>
|
427
|
+
</dd></dl>
|
428
|
+
|
429
|
+
<dl class="py method">
|
430
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.PtolemyCoordinates.complex_volume_numerical">
|
431
|
+
<span class="sig-name descname"><span class="pre">complex_volume_numerical</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">drop_negative_vols</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">with_modulo</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.PtolemyCoordinates.complex_volume_numerical" title="Link to this definition"></a></dt>
|
432
|
+
<dd><p>Turn into (Galois conjugate) numerical solutions and compute complex
|
433
|
+
volumes. If already numerical, return the volume.</p>
|
434
|
+
<p>Complex volume is defined up to i*pi**2/6.</p>
|
435
|
+
<p>See numerical(). If drop_negative_vols = True is given as optional
|
436
|
+
argument, only return complex volumes with non-negative real part.</p>
|
437
|
+
</dd></dl>
|
438
|
+
|
439
|
+
<dl class="py method">
|
440
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.PtolemyCoordinates.cross_ratios">
|
441
|
+
<span class="sig-name descname"><span class="pre">cross_ratios</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.PtolemyCoordinates.cross_ratios" title="Link to this definition"></a></dt>
|
442
|
+
<dd><p>Compute cross ratios from Ptolemy coordinates. The cross ratios are
|
443
|
+
according to the SnapPy convention, so we have:</p>
|
444
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">z</span> <span class="o">=</span> <span class="mi">1</span> <span class="o">-</span> <span class="mi">1</span><span class="o">/</span><span class="n">zp</span><span class="p">,</span> <span class="n">zp</span> <span class="o">=</span> <span class="mi">1</span> <span class="o">-</span> <span class="mi">1</span><span class="o">/</span><span class="n">zpp</span><span class="p">,</span> <span class="n">zpp</span> <span class="o">=</span> <span class="mi">1</span> <span class="o">-</span> <span class="mi">1</span><span class="o">/</span><span class="n">z</span>
|
445
|
+
</pre></div>
|
446
|
+
</div>
|
447
|
+
<p>where:</p>
|
448
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">z</span> <span class="ow">is</span> <span class="n">at</span> <span class="n">the</span> <span class="n">edge</span> <span class="mi">01</span> <span class="ow">and</span> <span class="n">equal</span> <span class="n">to</span> <span class="n">s0</span> <span class="o">*</span> <span class="n">s1</span> <span class="o">*</span> <span class="p">(</span><span class="n">c_1010</span> <span class="o">*</span> <span class="n">c_0101</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="n">c_1001</span> <span class="o">*</span> <span class="n">c_0110</span><span class="p">)</span>
|
449
|
+
<span class="n">zp</span> <span class="ow">is</span> <span class="n">at</span> <span class="n">the</span> <span class="n">edge</span> <span class="mi">02</span> <span class="ow">and</span> <span class="n">equal</span> <span class="n">to</span> <span class="o">-</span> <span class="n">s0</span> <span class="o">*</span> <span class="n">s2</span> <span class="o">*</span> <span class="p">(</span><span class="n">c_1001</span> <span class="o">*</span> <span class="n">c_0110</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="n">c_1100</span> <span class="o">*</span> <span class="n">c_0011</span><span class="p">)</span>
|
450
|
+
<span class="n">zpp</span> <span class="ow">is</span> <span class="n">at</span> <span class="n">the</span> <span class="n">edge</span> <span class="mi">03</span> <span class="ow">and</span> <span class="n">equal</span> <span class="n">to</span> <span class="n">s0</span> <span class="o">*</span> <span class="n">s3</span> <span class="o">*</span> <span class="p">(</span><span class="n">c_1100</span> <span class="o">*</span> <span class="n">c_0011</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="n">c_0101</span> <span class="o">*</span> <span class="n">c_1010</span><span class="p">)</span><span class="o">.</span>
|
451
|
+
</pre></div>
|
452
|
+
</div>
|
453
|
+
<p>Note that this is different from the convention used in
|
454
|
+
Garoufalidis, Goerner, Zickert:
|
455
|
+
Gluing Equations for PGL(n,C)-Representations of 3-Manifolds
|
456
|
+
<a class="reference external" href="https://arxiv.org/abs/1207.6711">https://arxiv.org/abs/1207.6711</a></p>
|
457
|
+
<p>Take an exact solution:</p>
|
458
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">snappy.ptolemy.processMagmaFile</span> <span class="kn">import</span> <span class="n">_magma_output_for_4_1__sl3</span><span class="p">,</span> <span class="n">solutions_from_magma</span>
|
459
|
+
<span class="gp">>>> </span><span class="n">solutions</span> <span class="o">=</span> <span class="n">solutions_from_magma</span><span class="p">(</span><span class="n">_magma_output_for_4_1__sl3</span><span class="p">)</span>
|
460
|
+
<span class="gp">>>> </span><span class="n">solution</span> <span class="o">=</span> <span class="n">solutions</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
|
461
|
+
</pre></div>
|
462
|
+
</div>
|
463
|
+
<p>Turn into cross Ratios:</p>
|
464
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">crossRatios</span> <span class="o">=</span> <span class="n">solution</span><span class="o">.</span><span class="n">cross_ratios</span><span class="p">()</span>
|
465
|
+
</pre></div>
|
466
|
+
</div>
|
467
|
+
<p>Get a cross ratio:</p>
|
468
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">crossRatios</span><span class="p">[</span><span class="s1">'zp_0010_0'</span><span class="p">]</span>
|
469
|
+
<span class="go">Mod(-x, x^2 + x + 1)</span>
|
470
|
+
</pre></div>
|
471
|
+
</div>
|
472
|
+
<p>Check the relationship between cross ratios:</p>
|
473
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">crossRatios</span><span class="p">[</span><span class="s1">'z_0010_0'</span><span class="p">]</span> <span class="o">==</span> <span class="mi">1</span> <span class="o">-</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">crossRatios</span><span class="p">[</span><span class="s1">'zp_0010_0'</span><span class="p">]</span>
|
474
|
+
<span class="go">True</span>
|
475
|
+
</pre></div>
|
476
|
+
</div>
|
477
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">crossRatios</span><span class="p">[</span><span class="s1">'zp_0010_0'</span><span class="p">]</span> <span class="o">==</span> <span class="mi">1</span> <span class="o">-</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">crossRatios</span><span class="p">[</span><span class="s1">'zpp_0010_0'</span><span class="p">]</span>
|
478
|
+
<span class="go">True</span>
|
479
|
+
</pre></div>
|
480
|
+
</div>
|
481
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">crossRatios</span><span class="p">[</span><span class="s1">'zpp_0010_0'</span><span class="p">]</span> <span class="o">==</span> <span class="mi">1</span> <span class="o">-</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">crossRatios</span><span class="p">[</span><span class="s1">'z_0010_0'</span><span class="p">]</span>
|
482
|
+
<span class="go">True</span>
|
483
|
+
</pre></div>
|
484
|
+
</div>
|
485
|
+
<p>Get information about what one can do with cross ratios</p>
|
486
|
+
</dd></dl>
|
487
|
+
|
488
|
+
<dl class="py method">
|
489
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.PtolemyCoordinates.cross_ratios_numerical">
|
490
|
+
<span class="sig-name descname"><span class="pre">cross_ratios_numerical</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.PtolemyCoordinates.cross_ratios_numerical" title="Link to this definition"></a></dt>
|
491
|
+
<dd><p>Turn exact solutions into numerical and then compute cross ratios.
|
492
|
+
See numerical() and cross_ratios().</p>
|
493
|
+
</dd></dl>
|
494
|
+
|
495
|
+
<dl class="py method">
|
496
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.PtolemyCoordinates.diamond_coordinate">
|
497
|
+
<span class="sig-name descname"><span class="pre">diamond_coordinate</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tet</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">v0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">v1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">v2</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pt</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.PtolemyCoordinates.diamond_coordinate" title="Link to this definition"></a></dt>
|
498
|
+
<dd><p>Returns the diamond coordinate for tetrahedron with index tet
|
499
|
+
for the face with vertices v0, v1, v2 (integers between 0 and 3) and
|
500
|
+
integral point pt (quadruple adding up to N-2).</p>
|
501
|
+
<p>See Definition 10.1:
|
502
|
+
Garoufalidis, Goerner, Zickert:
|
503
|
+
Gluing Equations for PGL(n,C)-Representations of 3-Manifolds
|
504
|
+
<a class="reference external" href="https://arxiv.org/abs/1207.6711">https://arxiv.org/abs/1207.6711</a></p>
|
505
|
+
</dd></dl>
|
506
|
+
|
507
|
+
<dl class="py method">
|
508
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.PtolemyCoordinates.evaluate_word">
|
509
|
+
<span class="sig-name descname"><span class="pre">evaluate_word</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">word</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">G</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.PtolemyCoordinates.evaluate_word" title="Link to this definition"></a></dt>
|
510
|
+
<dd><p>Given a word in the generators of the fundamental group,
|
511
|
+
compute the corresponding matrix. By default, these are the
|
512
|
+
generators of the unsimplified presentation of the fundamental
|
513
|
+
group. An optional SnapPy fundamental group can be given if the
|
514
|
+
words are in generators of a different presentation, e.g.,
|
515
|
+
c.evaluate_word(word, M.fundamental_group(True)) to
|
516
|
+
evaluate a word in the simplified presentation returned by
|
517
|
+
M.fundamental_group(True).</p>
|
518
|
+
<p>For now, the matrix is returned as list of lists.</p>
|
519
|
+
</dd></dl>
|
520
|
+
|
521
|
+
<dl class="py method">
|
522
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.PtolemyCoordinates.flattenings_numerical">
|
523
|
+
<span class="sig-name descname"><span class="pre">flattenings_numerical</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.PtolemyCoordinates.flattenings_numerical" title="Link to this definition"></a></dt>
|
524
|
+
<dd><p>Turn into numerical solutions and compute flattenings, see
|
525
|
+
help(snappy.ptolemy.coordinates.Flattenings)
|
526
|
+
Also see numerical()</p>
|
527
|
+
<p>Get Ptolemy coordinates.</p>
|
528
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">snappy.ptolemy.processMagmaFile</span> <span class="kn">import</span> <span class="n">_magma_output_for_4_1__sl3</span><span class="p">,</span> <span class="n">solutions_from_magma</span>
|
529
|
+
<span class="gp">>>> </span><span class="n">solutions</span> <span class="o">=</span> <span class="n">solutions_from_magma</span><span class="p">(</span><span class="n">_magma_output_for_4_1__sl3</span><span class="p">)</span>
|
530
|
+
<span class="gp">>>> </span><span class="n">solution</span> <span class="o">=</span> <span class="n">solutions</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
|
531
|
+
</pre></div>
|
532
|
+
</div>
|
533
|
+
<p>Compute a numerical solution</p>
|
534
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">flattenings</span> <span class="o">=</span> <span class="n">solution</span><span class="o">.</span><span class="n">flattenings_numerical</span><span class="p">()</span>
|
535
|
+
</pre></div>
|
536
|
+
</div>
|
537
|
+
<p>Get more information with help(flattenings[0])</p>
|
538
|
+
</dd></dl>
|
539
|
+
|
540
|
+
<dl class="py method">
|
541
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.PtolemyCoordinates.get_manifold">
|
542
|
+
<span class="sig-name descname"><span class="pre">get_manifold</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.PtolemyCoordinates.get_manifold" title="Link to this definition"></a></dt>
|
543
|
+
<dd><p>Get the manifold for which this structure represents a solution
|
544
|
+
to the Ptolemy variety.</p>
|
545
|
+
</dd></dl>
|
546
|
+
|
547
|
+
<dl class="py method">
|
548
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.PtolemyCoordinates.has_obstruction">
|
549
|
+
<span class="sig-name descname"><span class="pre">has_obstruction</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.PtolemyCoordinates.has_obstruction" title="Link to this definition"></a></dt>
|
550
|
+
<dd><p>Whether the Ptolemy variety has legacy obstruction class that
|
551
|
+
modifies the Ptolemy relation to</p>
|
552
|
+
</dd></dl>
|
553
|
+
|
554
|
+
<dl class="py method">
|
555
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.PtolemyCoordinates.is_geometric">
|
556
|
+
<span class="sig-name descname"><span class="pre">is_geometric</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">epsilon</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1e-06</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.PtolemyCoordinates.is_geometric" title="Link to this definition"></a></dt>
|
557
|
+
<dd><p>Returns true if all shapes corresponding to this solution have positive
|
558
|
+
imaginary part.</p>
|
559
|
+
<p>If the solutions are exact, it returns true if one of the corresponding
|
560
|
+
numerical solutions is geometric.</p>
|
561
|
+
<p>An optional epsilon can be given. An imaginary part of a shape is
|
562
|
+
considered positive if it is larger than this epsilon.</p>
|
563
|
+
</dd></dl>
|
564
|
+
|
565
|
+
<dl class="py method">
|
566
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.PtolemyCoordinates.long_edge">
|
567
|
+
<span class="sig-name descname"><span class="pre">long_edge</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tet</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">v0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">v1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">v2</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.PtolemyCoordinates.long_edge" title="Link to this definition"></a></dt>
|
568
|
+
<dd><p>The matrix that labels a long edge from v0 to v1 (integers between 0
|
569
|
+
and 3) of a (doubly) truncated simplex corresponding to an ideal
|
570
|
+
tetrahedron with index tet.</p>
|
571
|
+
<p>This matrix was labeled alpha^{v0v1v2} (v2 does not matter for non
|
572
|
+
double-truncated simplex) in Figure 18 of
|
573
|
+
Garoufalidis, Goerner, Zickert:
|
574
|
+
Gluing Equations for PGL(n,C)-Representations of 3-Manifolds
|
575
|
+
<a class="reference external" href="https://arxiv.org/abs/1207.6711">https://arxiv.org/abs/1207.6711</a></p>
|
576
|
+
<p>It is computed using equation 10.4. Note that the ratio coordinate
|
577
|
+
is different from the definition in the paper (see ratio_coordinate).</p>
|
578
|
+
<p>The resulting matrix is given as a python list of lists.</p>
|
579
|
+
</dd></dl>
|
580
|
+
|
581
|
+
<dl class="py method">
|
582
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.PtolemyCoordinates.middle_edge">
|
583
|
+
<span class="sig-name descname"><span class="pre">middle_edge</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tet</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">v0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">v1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">v2</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.PtolemyCoordinates.middle_edge" title="Link to this definition"></a></dt>
|
584
|
+
<dd><p>The matrix that labels a middle edge on the face v0, v1, v2 (integers
|
585
|
+
between 0 and 3) of a doubly truncated simplex (or a short edge of the
|
586
|
+
truncated simplex) corresponding to an ideal tetrahedron with index
|
587
|
+
tet.</p>
|
588
|
+
<p>This matrix was labeled beta^{v0v1v2} in Figure 18 of
|
589
|
+
Garoufalidis, Goerner, Zickert:
|
590
|
+
Gluing Equations for PGL(n,C)-Representations of 3-Manifolds
|
591
|
+
<a class="reference external" href="https://arxiv.org/abs/1207.6711">https://arxiv.org/abs/1207.6711</a></p>
|
592
|
+
<p>It is computed using equation 10.4.</p>
|
593
|
+
<p>The resulting matrix is given as a python list of lists.</p>
|
594
|
+
</dd></dl>
|
595
|
+
|
596
|
+
<dl class="py method">
|
597
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.PtolemyCoordinates.multiply_and_simplify_terms_in_RUR">
|
598
|
+
<span class="sig-name descname"><span class="pre">multiply_and_simplify_terms_in_RUR</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.PtolemyCoordinates.multiply_and_simplify_terms_in_RUR" title="Link to this definition"></a></dt>
|
599
|
+
<dd><p>If a Ptolemy coordinate is given as Rational Univariate Representation
|
600
|
+
with numerator and denominator being a product, multiply the terms,
|
601
|
+
reduce the fraction and return the result.</p>
|
602
|
+
<p>See multiply_and_simplify_terms of RUR.</p>
|
603
|
+
<p>This loses information about how the numerator and denominator are
|
604
|
+
factorised.</p>
|
605
|
+
</dd></dl>
|
606
|
+
|
607
|
+
<dl class="py method">
|
608
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.PtolemyCoordinates.multiply_terms_in_RUR">
|
609
|
+
<span class="sig-name descname"><span class="pre">multiply_terms_in_RUR</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.PtolemyCoordinates.multiply_terms_in_RUR" title="Link to this definition"></a></dt>
|
610
|
+
<dd><p>If a Ptolemy coordinate is given as Rational Univariate Representation
|
611
|
+
with numerator and denominator being a product, multiply the terms and
|
612
|
+
return the result.</p>
|
613
|
+
<p>See multiply_terms of RUR.</p>
|
614
|
+
<p>This loses information about how the numerator and denominator are
|
615
|
+
factorised.</p>
|
616
|
+
</dd></dl>
|
617
|
+
|
618
|
+
<dl class="py method">
|
619
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.PtolemyCoordinates.num_tetrahedra">
|
620
|
+
<span class="sig-name descname"><span class="pre">num_tetrahedra</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.PtolemyCoordinates.num_tetrahedra" title="Link to this definition"></a></dt>
|
621
|
+
<dd><p>The number of tetrahedra for which we have Ptolemy coordinates.</p>
|
622
|
+
</dd></dl>
|
623
|
+
|
624
|
+
<dl class="py method">
|
625
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.PtolemyCoordinates.number_field">
|
626
|
+
<span class="sig-name descname"><span class="pre">number_field</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.PtolemyCoordinates.number_field" title="Link to this definition"></a></dt>
|
627
|
+
<dd><p>For an exact solution, return the number_field spanned by the
|
628
|
+
Ptolemy coordinates. If number_field is Q, return None.</p>
|
629
|
+
</dd></dl>
|
630
|
+
|
631
|
+
<dl class="py method">
|
632
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.PtolemyCoordinates.numerical">
|
633
|
+
<span class="sig-name descname"><span class="pre">numerical</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.PtolemyCoordinates.numerical" title="Link to this definition"></a></dt>
|
634
|
+
<dd><p>Turn exact solutions into numerical solutions using pari.</p>
|
635
|
+
<p>Take an exact solution:</p>
|
636
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">snappy.ptolemy.processMagmaFile</span> <span class="kn">import</span> <span class="n">_magma_output_for_4_1__sl3</span><span class="p">,</span> <span class="n">solutions_from_magma</span>
|
637
|
+
<span class="gp">>>> </span><span class="n">solutions</span> <span class="o">=</span> <span class="n">solutions_from_magma</span><span class="p">(</span><span class="n">_magma_output_for_4_1__sl3</span><span class="p">)</span>
|
638
|
+
<span class="gp">>>> </span><span class="n">solution</span> <span class="o">=</span> <span class="n">solutions</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
|
639
|
+
</pre></div>
|
640
|
+
</div>
|
641
|
+
<p>Turn into a numerical solution:</p>
|
642
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">old_precision</span> <span class="o">=</span> <span class="n">pari</span><span class="o">.</span><span class="n">set_real_precision</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span> <span class="c1"># with high precision</span>
|
643
|
+
<span class="gp">>>> </span><span class="n">numerical_solutions</span> <span class="o">=</span> <span class="n">solution</span><span class="o">.</span><span class="n">numerical</span><span class="p">()</span>
|
644
|
+
<span class="gp">>>> </span><span class="n">pari</span><span class="o">.</span><span class="n">set_real_precision</span><span class="p">(</span><span class="n">old_precision</span><span class="p">)</span> <span class="c1"># reset pari engine</span>
|
645
|
+
<span class="go">100</span>
|
646
|
+
</pre></div>
|
647
|
+
</div>
|
648
|
+
<p>Pick one of the Galois conjugates:</p>
|
649
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">numerical_solution</span> <span class="o">=</span> <span class="n">numerical_solutions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
650
|
+
<span class="gp">>>> </span><span class="n">value</span> <span class="o">=</span> <span class="n">numerical_solution</span><span class="p">[</span><span class="s1">'c_1110_0'</span><span class="p">]</span>
|
651
|
+
</pre></div>
|
652
|
+
</div>
|
653
|
+
</dd></dl>
|
654
|
+
|
655
|
+
<dl class="py method">
|
656
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.PtolemyCoordinates.ratio_coordinate">
|
657
|
+
<span class="sig-name descname"><span class="pre">ratio_coordinate</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tet</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">v0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">v1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pt</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.PtolemyCoordinates.ratio_coordinate" title="Link to this definition"></a></dt>
|
658
|
+
<dd><p>Returns the ratio coordinate for tetrahedron with index tet
|
659
|
+
for the edge from v0 to v1 (integers between 0 and 3) and integral
|
660
|
+
point pt (quadruple adding up N-1) on the edge.</p>
|
661
|
+
<p>See Definition 10.2:
|
662
|
+
Garoufalidis, Goerner, Zickert:
|
663
|
+
Gluing Equations for PGL(n,C)-Representations of 3-Manifolds
|
664
|
+
<a class="reference external" href="https://arxiv.org/abs/1207.6711">https://arxiv.org/abs/1207.6711</a></p>
|
665
|
+
<p>Note that this definition turned out to have the wrong sign. Multiply
|
666
|
+
the result by -1 if v1 < v0 and N is even.</p>
|
667
|
+
</dd></dl>
|
668
|
+
|
669
|
+
<dl class="py method">
|
670
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.PtolemyCoordinates.short_edge">
|
671
|
+
<span class="sig-name descname"><span class="pre">short_edge</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tet</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">v0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">v1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">v2</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.PtolemyCoordinates.short_edge" title="Link to this definition"></a></dt>
|
672
|
+
<dd><p>Returns the identity. This is because we can think of the matrices
|
673
|
+
given by Ptolemy coordinates of living on truncated simplices which
|
674
|
+
can be though of as doubly truncated simplices where all short edges
|
675
|
+
are collapsed, hence labeled by the identity.</p>
|
676
|
+
<p>See equation 10.4 in
|
677
|
+
Garoufalidis, Goerner, Zickert:
|
678
|
+
Gluing Equations for PGL(n,C)-Representations of 3-Manifolds
|
679
|
+
<a class="reference external" href="https://arxiv.org/abs/1207.6711">https://arxiv.org/abs/1207.6711</a></p>
|
680
|
+
</dd></dl>
|
681
|
+
|
682
|
+
<dl class="py method">
|
683
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.PtolemyCoordinates.to_PUR">
|
684
|
+
<span class="sig-name descname"><span class="pre">to_PUR</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.PtolemyCoordinates.to_PUR" title="Link to this definition"></a></dt>
|
685
|
+
<dd><p>If any Ptolemy coordinates are given as Rational Univariate
|
686
|
+
Representation, convert them to Polynomial Univariate Representation and
|
687
|
+
return the result.</p>
|
688
|
+
<p>See to_PUR of RUR.</p>
|
689
|
+
<p>This conversion might lead to very large coefficients.</p>
|
690
|
+
</dd></dl>
|
691
|
+
|
692
|
+
<dl class="py method">
|
693
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.PtolemyCoordinates.volume_numerical">
|
694
|
+
<span class="sig-name descname"><span class="pre">volume_numerical</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">drop_negative_vols</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.PtolemyCoordinates.volume_numerical" title="Link to this definition"></a></dt>
|
695
|
+
<dd><p>Turn into (Galois conjugate) numerical solutions and compute volumes.
|
696
|
+
If already numerical, only return the one volume.
|
697
|
+
See numerical().</p>
|
698
|
+
<p>If drop_negative_vols = True is given as optional argument,
|
699
|
+
only return non-negative volumes.</p>
|
700
|
+
</dd></dl>
|
701
|
+
|
702
|
+
</dd></dl>
|
703
|
+
|
704
|
+
</section>
|
705
|
+
<section id="crossratios">
|
706
|
+
<h2>CrossRatios<a class="headerlink" href="#crossratios" title="Link to this heading"></a></h2>
|
707
|
+
<dl class="py class">
|
708
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.CrossRatios">
|
709
|
+
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.ptolemy.coordinates.</span></span><span class="sig-name descname"><span class="pre">CrossRatios</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">d</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">is_numerical</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">manifold_thunk</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.CrossRatios" title="Link to this definition"></a></dt>
|
710
|
+
<dd><p>Represents assigned shape parameters/cross ratios as
|
711
|
+
dictionary. The cross ratios are according to SnapPy convention, so we
|
712
|
+
have:</p>
|
713
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">z</span> <span class="o">=</span> <span class="mi">1</span> <span class="o">-</span> <span class="mi">1</span><span class="o">/</span><span class="n">zp</span><span class="p">,</span> <span class="n">zp</span> <span class="o">=</span> <span class="mi">1</span> <span class="o">-</span> <span class="mi">1</span><span class="o">/</span><span class="n">zpp</span><span class="p">,</span> <span class="n">zpp</span> <span class="o">=</span> <span class="mi">1</span> <span class="o">-</span> <span class="mi">1</span><span class="o">/</span><span class="n">z</span>
|
714
|
+
</pre></div>
|
715
|
+
</div>
|
716
|
+
<p>where:</p>
|
717
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">z</span> <span class="ow">is</span> <span class="n">at</span> <span class="n">the</span> <span class="n">edge</span> <span class="mi">01</span> <span class="ow">and</span> <span class="n">equal</span> <span class="n">to</span> <span class="n">s0</span> <span class="o">*</span> <span class="n">s1</span> <span class="o">*</span> <span class="p">(</span><span class="n">c_1010</span> <span class="o">*</span> <span class="n">c_0101</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="n">c_1001</span> <span class="o">*</span> <span class="n">c_0110</span><span class="p">)</span>
|
718
|
+
<span class="n">zp</span> <span class="ow">is</span> <span class="n">at</span> <span class="n">the</span> <span class="n">edge</span> <span class="mi">02</span> <span class="ow">and</span> <span class="n">equal</span> <span class="n">to</span> <span class="n">s0</span> <span class="o">*</span> <span class="n">s2</span> <span class="o">*</span> <span class="p">(</span><span class="n">c_1001</span> <span class="o">*</span> <span class="n">c_0110</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="n">c_1100</span> <span class="o">*</span> <span class="n">c_0011</span><span class="p">)</span>
|
719
|
+
<span class="n">zpp</span> <span class="ow">is</span> <span class="n">at</span> <span class="n">the</span> <span class="n">edge</span> <span class="mi">03</span> <span class="ow">and</span> <span class="n">equal</span> <span class="n">to</span> <span class="n">s0</span> <span class="o">*</span> <span class="n">s3</span> <span class="o">*</span> <span class="p">(</span><span class="n">c_1100</span> <span class="o">*</span> <span class="n">c_0011</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="n">c_0101</span> <span class="o">*</span> <span class="n">c_1010</span><span class="p">)</span><span class="o">.</span>
|
720
|
+
</pre></div>
|
721
|
+
</div>
|
722
|
+
<p>Note that this is different from the convention used in
|
723
|
+
Garoufalidis, Goerner, Zickert:
|
724
|
+
Gluing Equations for PGL(n,C)-Representations of 3-Manifolds
|
725
|
+
<a class="reference external" href="https://arxiv.org/abs/1207.6711">https://arxiv.org/abs/1207.6711</a></p>
|
726
|
+
<dl class="py method">
|
727
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.CrossRatios.N">
|
728
|
+
<span class="sig-name descname"><span class="pre">N</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.CrossRatios.N" title="Link to this definition"></a></dt>
|
729
|
+
<dd><p>Get the N such that these cross ratios are for
|
730
|
+
SL/PSL(N,C)-representations.</p>
|
731
|
+
</dd></dl>
|
732
|
+
|
733
|
+
<dl class="py method">
|
734
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.CrossRatios.check_against_manifold">
|
735
|
+
<span class="sig-name descname"><span class="pre">check_against_manifold</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">M</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">epsilon</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.CrossRatios.check_against_manifold" title="Link to this definition"></a></dt>
|
736
|
+
<dd><p>Checks that the given solution really is a solution to the PGL(N,C) gluing
|
737
|
+
equations of a manifold. Usage similar to check_against_manifold of
|
738
|
+
PtolemyCoordinates. See help(ptolemy.PtolemtyCoordinates) for example.</p>
|
739
|
+
<p>=== Arguments ===</p>
|
740
|
+
<p>M — manifold to check this for
|
741
|
+
epsilon — maximal allowed error when checking the relations, use
|
742
|
+
None for exact comparison.</p>
|
743
|
+
</dd></dl>
|
744
|
+
|
745
|
+
<dl class="py method">
|
746
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.CrossRatios.evaluate_word">
|
747
|
+
<span class="sig-name descname"><span class="pre">evaluate_word</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">word</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">G</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.CrossRatios.evaluate_word" title="Link to this definition"></a></dt>
|
748
|
+
<dd><p>Given a word in the generators of the fundamental group,
|
749
|
+
compute the corresponding matrix. By default, these are the
|
750
|
+
generators of the unsimplified presentation of the fundamental
|
751
|
+
group. An optional SnapPy fundamental group can be given if the
|
752
|
+
words are in generators of a different presentation, e.g.,
|
753
|
+
c.evaluate_word(word, M.fundamental_group(True)) to
|
754
|
+
evaluate a word in the simplified presentation returned by
|
755
|
+
M.fundamental_group(True).</p>
|
756
|
+
<p>For now, the matrix is returned as list of lists.</p>
|
757
|
+
</dd></dl>
|
758
|
+
|
759
|
+
<dl class="py method">
|
760
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.CrossRatios.from_snappy_manifold">
|
761
|
+
<em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_snappy_manifold</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">M</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dec_prec</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bits_prec</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">intervals</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.CrossRatios.from_snappy_manifold" title="Link to this definition"></a></dt>
|
762
|
+
<dd><p>Constructs an assignment of shape parameters/cross ratios using
|
763
|
+
the tetrahehdra_shapes method of a given SnapPy manifold. The optional
|
764
|
+
parameters are the same as that of tetrahedra_shapes.</p>
|
765
|
+
</dd></dl>
|
766
|
+
|
767
|
+
<dl class="py method">
|
768
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.CrossRatios.get_manifold">
|
769
|
+
<span class="sig-name descname"><span class="pre">get_manifold</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.CrossRatios.get_manifold" title="Link to this definition"></a></dt>
|
770
|
+
<dd><p>Get the manifold for which this structure represents a solution
|
771
|
+
to the gluing equations.</p>
|
772
|
+
</dd></dl>
|
773
|
+
|
774
|
+
<dl class="py method">
|
775
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.CrossRatios.induced_representation">
|
776
|
+
<span class="sig-name descname"><span class="pre">induced_representation</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">N</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.CrossRatios.induced_representation" title="Link to this definition"></a></dt>
|
777
|
+
<dd><p>Given a PSL(2,C) representation constructs the induced representation
|
778
|
+
for the given N.
|
779
|
+
The induced representation is in SL(N,C) if N is odd and
|
780
|
+
SL(N,C) / {+1,-1} if N is even and is described in the Introduction of
|
781
|
+
Garoufalidis, Thurston, Zickert
|
782
|
+
The Complex Volume of SL(n,C)-Representations of 3-Manifolds
|
783
|
+
<a class="reference external" href="https://arxiv.org/abs/1111.2828">https://arxiv.org/abs/1111.2828</a></p>
|
784
|
+
<p>There is a canonical group homomorphism SL(2,C)->SL(N,C) coming from
|
785
|
+
the the natural SL(2,C)-action on the vector space Sym^{N-1}(C^2).
|
786
|
+
This homomorphisms decends to a homomorphism from PSL(2,C) if one
|
787
|
+
divides the right side by {+1,-1} when N is even.
|
788
|
+
Composing a representation with this homomorphism gives the induced
|
789
|
+
representation.</p>
|
790
|
+
</dd></dl>
|
791
|
+
|
792
|
+
<dl class="py method">
|
793
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.CrossRatios.is_geometric">
|
794
|
+
<span class="sig-name descname"><span class="pre">is_geometric</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">epsilon</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1e-06</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.CrossRatios.is_geometric" title="Link to this definition"></a></dt>
|
795
|
+
<dd><p>Returns true if all shapes corresponding to this solution have positive
|
796
|
+
imaginary part.</p>
|
797
|
+
<p>If the solutions are exact, it returns true if one of the corresponding
|
798
|
+
numerical solutions is geometric.</p>
|
799
|
+
<p>An optional epsilon can be given. An imaginary part of a shape is
|
800
|
+
considered positive if it is larger than this epsilon.</p>
|
801
|
+
</dd></dl>
|
802
|
+
|
803
|
+
<dl class="py method">
|
804
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.CrossRatios.is_induced_from_psl2">
|
805
|
+
<span class="sig-name descname"><span class="pre">is_induced_from_psl2</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">epsilon</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.CrossRatios.is_induced_from_psl2" title="Link to this definition"></a></dt>
|
806
|
+
<dd><p>For each simplex and each edges, checks that all cross ratios of that
|
807
|
+
simplex that are parallel to that each are the same (maximal absolute
|
808
|
+
difference is the epsilon given as argument).
|
809
|
+
This means that the corresponding representation is induced by a
|
810
|
+
PSL(2,C) representation.</p>
|
811
|
+
</dd></dl>
|
812
|
+
|
813
|
+
<dl class="py method">
|
814
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.CrossRatios.is_pu_2_1_representation">
|
815
|
+
<span class="sig-name descname"><span class="pre">is_pu_2_1_representation</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">epsilon</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">epsilon2</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.CrossRatios.is_pu_2_1_representation" title="Link to this definition"></a></dt>
|
816
|
+
<dd><p>Returns True if the representation is also a
|
817
|
+
PU(2,1)-representation. This uses Proposition 3.5 and the
|
818
|
+
remark following that proposition in <a class="reference internal" href="#fkr2013" id="id1"><span>[FKR2013]</span></a>.</p>
|
819
|
+
<p>If a condition given in that Proposition is violated, the method returns
|
820
|
+
an object whose Boolean value is still False and that indicates which condition
|
821
|
+
was violated. Thus, this method can still be used in <code class="docutils literal notranslate"><span class="pre">if</span></code> statements.</p>
|
822
|
+
<p>The method tests the following complex equalities and inequalities:</p>
|
823
|
+
<ul class="simple">
|
824
|
+
<li><p>the three complex equations given in (3.5.1) of <a class="reference internal" href="#fkr2013" id="id2"><span>[FKR2013]</span></a>.</p></li>
|
825
|
+
<li><p>the inequality z<sub>ijl</sub> <span class="math notranslate nohighlight">\(\\not=\)</span> -1.</p></li>
|
826
|
+
</ul>
|
827
|
+
<p><strong>Remark:</strong> It does not check whether all z<sub>ij</sub> * z<sub>ji</sub> are real or
|
828
|
+
not as these are still valid CR configurations, see the remark following
|
829
|
+
Proposition 3.5.</p>
|
830
|
+
<p>The user has to supply an epsilon: an equality/inequality is considered
|
831
|
+
to be true if and only if the absolute value | LHS - RHS | of difference between the
|
832
|
+
left and right hand side is less/greater than epsilon.</p>
|
833
|
+
<p>The user can supply another parameter, epsilon2. If any | LHS - RHS | is in
|
834
|
+
the interval [epsilon, epsilon2], this method fails with an exception
|
835
|
+
as the value of | LHS - RHS | is an ambiguous interval where
|
836
|
+
it is unclear whether inequality fails to hold because it truly does
|
837
|
+
hold or just because of numerical noise.</p>
|
838
|
+
</dd></dl>
|
839
|
+
|
840
|
+
<dl class="py method">
|
841
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.CrossRatios.is_real">
|
842
|
+
<span class="sig-name descname"><span class="pre">is_real</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">epsilon</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.CrossRatios.is_real" title="Link to this definition"></a></dt>
|
843
|
+
<dd><p>Returns True if all cross ratios are real (have absolute imaginary
|
844
|
+
part < epsilon where epsilon is given as argument).
|
845
|
+
This means that the corresponding representation is in PSL(N,R).</p>
|
846
|
+
</dd></dl>
|
847
|
+
|
848
|
+
<dl class="py method">
|
849
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.CrossRatios.long_edge">
|
850
|
+
<span class="sig-name descname"><span class="pre">long_edge</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tet</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">v0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">v1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">v2</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.CrossRatios.long_edge" title="Link to this definition"></a></dt>
|
851
|
+
<dd><p>The matrix that labels a long edge starting at vertex (v0, v1, v2)
|
852
|
+
of a doubly truncated simplex corresponding to the ideal tetrahedron
|
853
|
+
with index tet.</p>
|
854
|
+
<p>This matrix was labeled alpha^{v0v1v2} in Figure 18 of
|
855
|
+
Garoufalidis, Goerner, Zickert:
|
856
|
+
Gluing Equations for PGL(n,C)-Representations of 3-Manifolds
|
857
|
+
<a class="reference external" href="https://arxiv.org/abs/1207.6711">https://arxiv.org/abs/1207.6711</a></p>
|
858
|
+
<p>It is computed using equation 10.22.</p>
|
859
|
+
<p>The resulting matrix is given as a python list of lists.</p>
|
860
|
+
</dd></dl>
|
861
|
+
|
862
|
+
<dl class="py method">
|
863
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.CrossRatios.middle_edge">
|
864
|
+
<span class="sig-name descname"><span class="pre">middle_edge</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tet</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">v0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">v1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">v2</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.CrossRatios.middle_edge" title="Link to this definition"></a></dt>
|
865
|
+
<dd><p>The matrix that labels a middle edge starting at vertex (v0, v1, v2)
|
866
|
+
of a doubly truncated simplex corresponding to the ideal tetrahedron
|
867
|
+
with index tet.</p>
|
868
|
+
<p>This matrix was labeled beta^{v0v1v2} in Figure 18 of
|
869
|
+
Garoufalidis, Goerner, Zickert:
|
870
|
+
Gluing Equations for PGL(n,C)-Representations of 3-Manifolds
|
871
|
+
<a class="reference external" href="https://arxiv.org/abs/1207.6711">https://arxiv.org/abs/1207.6711</a></p>
|
872
|
+
<p>It is computed using equation 10.22.</p>
|
873
|
+
<p>The resulting matrix is given as a python list of lists.</p>
|
874
|
+
</dd></dl>
|
875
|
+
|
876
|
+
<dl class="py method">
|
877
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.CrossRatios.multiply_and_simplify_terms_in_RUR">
|
878
|
+
<span class="sig-name descname"><span class="pre">multiply_and_simplify_terms_in_RUR</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.CrossRatios.multiply_and_simplify_terms_in_RUR" title="Link to this definition"></a></dt>
|
879
|
+
<dd><p>If a cross ratio is given as Rational Univariate Representation
|
880
|
+
with numerator and denominator being a product, multiply the terms,
|
881
|
+
reduce the fraction and return the result.</p>
|
882
|
+
<p>See multiply_and_simplify_terms of RUR.</p>
|
883
|
+
<p>This loses information about how the numerator and denominator are
|
884
|
+
factorised.</p>
|
885
|
+
</dd></dl>
|
886
|
+
|
887
|
+
<dl class="py method">
|
888
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.CrossRatios.multiply_terms_in_RUR">
|
889
|
+
<span class="sig-name descname"><span class="pre">multiply_terms_in_RUR</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.CrossRatios.multiply_terms_in_RUR" title="Link to this definition"></a></dt>
|
890
|
+
<dd><p>If a cross ratio is given as Rational Univariate Representation
|
891
|
+
with numerator and denominator being a product, multiply the terms and
|
892
|
+
return the result.</p>
|
893
|
+
<p>See multiply_terms of RUR.</p>
|
894
|
+
<p>This loses information about how the numerator and denominator are
|
895
|
+
factorised.</p>
|
896
|
+
</dd></dl>
|
897
|
+
|
898
|
+
<dl class="py method">
|
899
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.CrossRatios.num_tetrahedra">
|
900
|
+
<span class="sig-name descname"><span class="pre">num_tetrahedra</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.CrossRatios.num_tetrahedra" title="Link to this definition"></a></dt>
|
901
|
+
<dd><p>The number of tetrahedra for which we have cross ratios.</p>
|
902
|
+
</dd></dl>
|
903
|
+
|
904
|
+
<dl class="py method">
|
905
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.CrossRatios.numerical">
|
906
|
+
<span class="sig-name descname"><span class="pre">numerical</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.CrossRatios.numerical" title="Link to this definition"></a></dt>
|
907
|
+
<dd><p>Turn exact solutions into numerical solutions using pari. Similar to
|
908
|
+
numerical() of PtolemyCoordinates. See help(ptolemy.PtolemyCoordinates)
|
909
|
+
for example.</p>
|
910
|
+
</dd></dl>
|
911
|
+
|
912
|
+
<dl class="py method">
|
913
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.CrossRatios.short_edge">
|
914
|
+
<span class="sig-name descname"><span class="pre">short_edge</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tet</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">v0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">v1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">v2</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.CrossRatios.short_edge" title="Link to this definition"></a></dt>
|
915
|
+
<dd><p>The matrix that labels a long edge starting at vertex (v0, v1, v2)
|
916
|
+
of a doubly truncated simplex corresponding to the ideal tetrahedron
|
917
|
+
with index tet.</p>
|
918
|
+
<p>This matrix was labeled gamma^{v0v1v2} in Figure 18 of
|
919
|
+
Garoufalidis, Goerner, Zickert:
|
920
|
+
Gluing Equations for PGL(n,C)-Representations of 3-Manifolds
|
921
|
+
<a class="reference external" href="https://arxiv.org/abs/1207.6711">https://arxiv.org/abs/1207.6711</a></p>
|
922
|
+
<p>It is computed using equation 10.22.</p>
|
923
|
+
<p>The resulting matrix is given as a python list of lists.</p>
|
924
|
+
</dd></dl>
|
925
|
+
|
926
|
+
<dl class="py method">
|
927
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.CrossRatios.to_PUR">
|
928
|
+
<span class="sig-name descname"><span class="pre">to_PUR</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.CrossRatios.to_PUR" title="Link to this definition"></a></dt>
|
929
|
+
<dd><p>If any Ptolemy coordinates are given as Rational Univariate
|
930
|
+
Representation, convert them to Polynomial Univariate Representation and
|
931
|
+
return the result.</p>
|
932
|
+
<p>See to_PUR of RUR.</p>
|
933
|
+
<p>This conversion might lead to very large coefficients.</p>
|
934
|
+
</dd></dl>
|
935
|
+
|
936
|
+
<dl class="py method">
|
937
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.CrossRatios.volume_numerical">
|
938
|
+
<span class="sig-name descname"><span class="pre">volume_numerical</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">drop_negative_vols</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.CrossRatios.volume_numerical" title="Link to this definition"></a></dt>
|
939
|
+
<dd><p>Turn into (Galois conjugate) numerical solutions and compute volumes.
|
940
|
+
If already numerical, only compute the one volume.
|
941
|
+
See numerical().</p>
|
942
|
+
<p>If drop_negative_vols = True is given as optional argument,
|
943
|
+
only return non-negative volumes.</p>
|
944
|
+
</dd></dl>
|
945
|
+
|
946
|
+
<dl class="py method">
|
947
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.CrossRatios.x_coordinate">
|
948
|
+
<span class="sig-name descname"><span class="pre">x_coordinate</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tet</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pt</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.CrossRatios.x_coordinate" title="Link to this definition"></a></dt>
|
949
|
+
<dd><p>Returns the X-coordinate for the tetrahedron with index tet
|
950
|
+
at the point pt (quadruple of integers adding up to N).</p>
|
951
|
+
<p>See Definition 10.9:
|
952
|
+
Garoufalidis, Goerner, Zickert:
|
953
|
+
Gluing Equations for PGL(n,C)-Representations of 3-Manifolds
|
954
|
+
<a class="reference external" href="https://arxiv.org/abs/1207.6711">https://arxiv.org/abs/1207.6711</a></p>
|
955
|
+
</dd></dl>
|
956
|
+
|
957
|
+
</dd></dl>
|
958
|
+
|
959
|
+
</section>
|
960
|
+
<section id="flattenings">
|
961
|
+
<h2>Flattenings<a class="headerlink" href="#flattenings" title="Link to this heading"></a></h2>
|
962
|
+
<dl class="py class">
|
963
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.Flattenings">
|
964
|
+
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.ptolemy.coordinates.</span></span><span class="sig-name descname"><span class="pre">Flattenings</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">d</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">manifold_thunk=<function</span> <span class="pre">Flattenings.<lambda>></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">evenN=2</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.Flattenings" title="Link to this definition"></a></dt>
|
965
|
+
<dd><p>Represents a flattening assigned to each edge of a simplex as dictionary.</p>
|
966
|
+
<p>We assign to each pair of parallel edges of each simplex a triple (w, z, p)
|
967
|
+
such that:</p>
|
968
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">w</span> <span class="o">=</span> <span class="n">log</span><span class="p">(</span><span class="n">z</span><span class="p">)</span> <span class="o">+</span> <span class="n">p</span> <span class="o">*</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">pi</span> <span class="o">*</span> <span class="n">i</span> <span class="o">/</span> <span class="n">N</span><span class="p">)</span> <span class="n">where</span> <span class="n">N</span> <span class="ow">is</span> <span class="n">fixed</span> <span class="ow">and</span> <span class="n">even</span><span class="o">.</span>
|
969
|
+
</pre></div>
|
970
|
+
</div>
|
971
|
+
<p>For N = 2, the three triples belonging to a simplex form a combinatorial
|
972
|
+
flattening (w0, w1, w2) as defined in Definition 3.1 in
|
973
|
+
Walter D. Neumann, Extended Bloch group and the Cheeger-Chern-Simons class
|
974
|
+
<a class="reference external" href="https://arxiv.org/abs/math.GT/0307092">https://arxiv.org/abs/math.GT/0307092</a></p>
|
975
|
+
<p>For N > 2, the three triples form a generalized combinatorial flattening
|
976
|
+
(w0, w1, w2) that gives an element in the generalized Extended Bloch group
|
977
|
+
which is the Extended Bloch group corresponding to the Riemann surface
|
978
|
+
given by:</p>
|
979
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">u1</span> <span class="o">*</span> <span class="n">e</span><span class="o">^</span><span class="n">w0</span> <span class="o">+</span> <span class="n">u2</span> <span class="o">*</span> <span class="n">e</span><span class="o">^</span><span class="n">w1</span> <span class="o">=</span> <span class="mi">1</span>
|
980
|
+
</pre></div>
|
981
|
+
</div>
|
982
|
+
<p>where u1^N = u2^N = 1.</p>
|
983
|
+
<p>A representation in SL(n,C) and SL(n,C)/{+1,-1} with n even gives an element
|
984
|
+
in the generalized Extended Bloch group for N = 2.
|
985
|
+
A representation in PSL(n,C) with n even in the group for N = n.
|
986
|
+
A representation in PSL(n,C) with n odd in the group for N = 2 * n.</p>
|
987
|
+
<p>This work has not been published yet.</p>
|
988
|
+
<p>If f is a flattening, then in the notation of Neumann, the value of:</p>
|
989
|
+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">f</span><span class="p">[</span><span class="s1">'z_xxxx_y'</span><span class="p">]</span> <span class="ow">is</span> <span class="p">(</span><span class="n">w0</span><span class="p">,</span> <span class="n">z</span><span class="p">,</span> <span class="n">p</span><span class="p">)</span>
|
990
|
+
<span class="n">f</span><span class="p">[</span><span class="s1">'zp_xxxx_y'</span><span class="p">]</span> <span class="ow">is</span> <span class="p">(</span><span class="n">w1</span><span class="p">,</span> <span class="n">z</span><span class="s1">', q)</span>
|
991
|
+
<span class="n">f</span><span class="p">[</span><span class="s1">'zpp_xxxx_y'</span><span class="p">]</span> <span class="ow">is</span> <span class="p">(</span><span class="n">w2</span><span class="p">,</span> <span class="n">z</span><span class="s1">''</span><span class="p">,</span> <span class="n">r</span><span class="p">)</span><span class="o">.</span>
|
992
|
+
</pre></div>
|
993
|
+
</div>
|
994
|
+
<dl class="py method">
|
995
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.Flattenings.N">
|
996
|
+
<span class="sig-name descname"><span class="pre">N</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.Flattenings.N" title="Link to this definition"></a></dt>
|
997
|
+
<dd><p>Get the N such that these cross ratios are for
|
998
|
+
SL/PSL(N,C)-representations.</p>
|
999
|
+
</dd></dl>
|
1000
|
+
|
1001
|
+
<dl class="py method">
|
1002
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.Flattenings.check_against_manifold">
|
1003
|
+
<span class="sig-name descname"><span class="pre">check_against_manifold</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">M</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">epsilon</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1e-10</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.Flattenings.check_against_manifold" title="Link to this definition"></a></dt>
|
1004
|
+
<dd><p>Checks that the flattening really is a solution to the logarithmic
|
1005
|
+
PGL(N,C) gluing equations of a manifold. Usage similar to
|
1006
|
+
check_against_manifold of Ptolemy Coordinates, see
|
1007
|
+
help(ptolemy.Coordinates) for similar examples.</p>
|
1008
|
+
<p>=== Arguments ===</p>
|
1009
|
+
<p>M — manifold to check this for
|
1010
|
+
epsilon — maximal allowed error when checking the equations</p>
|
1011
|
+
</dd></dl>
|
1012
|
+
|
1013
|
+
<dl class="py method">
|
1014
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.Flattenings.complex_volume">
|
1015
|
+
<span class="sig-name descname"><span class="pre">complex_volume</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">with_modulo</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.Flattenings.complex_volume" title="Link to this definition"></a></dt>
|
1016
|
+
<dd><p>Compute complex volume. The complex volume is defined only up to
|
1017
|
+
some multiple of m where m = i * pi**2/6 for PSL(2,C) and SL(N,C)
|
1018
|
+
and m = i * pi**2/18 for PSL(3,C).</p>
|
1019
|
+
<p>When called with with_modulo = True, gives a pair
|
1020
|
+
(volume, m)</p>
|
1021
|
+
</dd></dl>
|
1022
|
+
|
1023
|
+
<dl class="py method">
|
1024
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.Flattenings.from_tetrahedra_shapes_of_manifold">
|
1025
|
+
<em class="property"><span class="pre">classmethod</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_tetrahedra_shapes_of_manifold</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">M</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.Flattenings.from_tetrahedra_shapes_of_manifold" title="Link to this definition"></a></dt>
|
1026
|
+
<dd><p>Takes as argument a manifold and produces (weak) flattenings using
|
1027
|
+
the tetrahedra_shapes of the manifold M.</p>
|
1028
|
+
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">snappy</span> <span class="kn">import</span> <span class="n">Manifold</span>
|
1029
|
+
<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">"5_2"</span><span class="p">)</span>
|
1030
|
+
<span class="gp">>>> </span><span class="n">flattenings</span> <span class="o">=</span> <span class="n">Flattenings</span><span class="o">.</span><span class="n">from_tetrahedra_shapes_of_manifold</span><span class="p">(</span><span class="n">M</span><span class="p">)</span>
|
1031
|
+
<span class="gp">>>> </span><span class="n">flattenings</span><span class="o">.</span><span class="n">check_against_manifold</span><span class="p">(</span><span class="n">M</span><span class="p">)</span>
|
1032
|
+
<span class="gp">>>> </span><span class="n">flattenings</span><span class="o">.</span><span class="n">check_against_manifold</span><span class="p">()</span>
|
1033
|
+
</pre></div>
|
1034
|
+
</div>
|
1035
|
+
</dd></dl>
|
1036
|
+
|
1037
|
+
<dl class="py method">
|
1038
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.Flattenings.get_manifold">
|
1039
|
+
<span class="sig-name descname"><span class="pre">get_manifold</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.Flattenings.get_manifold" title="Link to this definition"></a></dt>
|
1040
|
+
<dd><p>Get the manifold for which this structure represents a flattening.</p>
|
1041
|
+
</dd></dl>
|
1042
|
+
|
1043
|
+
<dl class="py method">
|
1044
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.Flattenings.get_order">
|
1045
|
+
<span class="sig-name descname"><span class="pre">get_order</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.Flattenings.get_order" title="Link to this definition"></a></dt>
|
1046
|
+
<dd><p>Returns the number N. This flattening represents an element in the
|
1047
|
+
generalized Extended Bloch group for the Riemann surface given by
|
1048
|
+
u1 * e^w0 + u2 * e^w1 = 1 where u1^N = u2^N = 1.</p>
|
1049
|
+
</dd></dl>
|
1050
|
+
|
1051
|
+
<dl class="py method">
|
1052
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.Flattenings.get_zpq_triple">
|
1053
|
+
<span class="sig-name descname"><span class="pre">get_zpq_triple</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">key_z</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.Flattenings.get_zpq_triple" title="Link to this definition"></a></dt>
|
1054
|
+
<dd><p>Gives a flattening as triple [z;p,q] representing an element
|
1055
|
+
in the generalized Extended Bloch group similar to the way the
|
1056
|
+
triple [z;p,q] is used in Lemma 3.2 in
|
1057
|
+
Walter D. Neumann, Extended Bloch group and the Cheeger-Chern-Simons class
|
1058
|
+
<a class="reference external" href="https://arxiv.org/abs/math.GT/0307092">https://arxiv.org/abs/math.GT/0307092</a></p>
|
1059
|
+
</dd></dl>
|
1060
|
+
|
1061
|
+
<dl class="py method">
|
1062
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.coordinates.Flattenings.num_tetrahedra">
|
1063
|
+
<span class="sig-name descname"><span class="pre">num_tetrahedra</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.coordinates.Flattenings.num_tetrahedra" title="Link to this definition"></a></dt>
|
1064
|
+
<dd><p>The number of tetrahedra for which we have cross ratios.</p>
|
1065
|
+
</dd></dl>
|
1066
|
+
|
1067
|
+
</dd></dl>
|
1068
|
+
|
1069
|
+
</section>
|
1070
|
+
<section id="nonzerodimensionalcomponent">
|
1071
|
+
<h2>NonZeroDimensionalComponent<a class="headerlink" href="#nonzerodimensionalcomponent" title="Link to this heading"></a></h2>
|
1072
|
+
<dl class="py class">
|
1073
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.component.NonZeroDimensionalComponent">
|
1074
|
+
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.ptolemy.component.</span></span><span class="sig-name descname"><span class="pre">NonZeroDimensionalComponent</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">witnesses</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">[]</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dimension</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'unknown'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">free_variables</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">genus</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">p</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.component.NonZeroDimensionalComponent" title="Link to this definition"></a></dt>
|
1075
|
+
<dd><p>Represents a non-zero dimensional component in the
|
1076
|
+
Ptolemy variety. It is a list that can hold points sampled from that
|
1077
|
+
component (witnesses).</p>
|
1078
|
+
</dd></dl>
|
1079
|
+
|
1080
|
+
</section>
|
1081
|
+
<section id="other-functions">
|
1082
|
+
<h2>Other functions<a class="headerlink" href="#other-functions" title="Link to this heading"></a></h2>
|
1083
|
+
<dl class="py function">
|
1084
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.solutions_from_magma">
|
1085
|
+
<span class="sig-prename descclassname"><span class="pre">snappy.ptolemy.</span></span><span class="sig-name descname"><span class="pre">solutions_from_magma</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">output</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">numerical</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.solutions_from_magma" title="Link to this definition"></a></dt>
|
1086
|
+
<dd><p>Obsolete, use processFileDispatch.parse_solutions instead.</p>
|
1087
|
+
<p>Assumes the given string is the output of a magma computation, parses
|
1088
|
+
it and returns a list of solutions.
|
1089
|
+
A non-zero dimensional component of the variety is reported as
|
1090
|
+
NonZeroDimensionalComponent.</p>
|
1091
|
+
</dd></dl>
|
1092
|
+
|
1093
|
+
<dl class="py function">
|
1094
|
+
<dt class="sig sig-object py" id="snappy.ptolemy.solutions_from_magma_file">
|
1095
|
+
<span class="sig-prename descclassname"><span class="pre">snappy.ptolemy.</span></span><span class="sig-name descname"><span class="pre">solutions_from_magma_file</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">numerical</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.ptolemy.solutions_from_magma_file" title="Link to this definition"></a></dt>
|
1096
|
+
<dd><p>Obsolete, use processFileDispatch.parse_solutions_from_file instead.</p>
|
1097
|
+
<p>Reads the output from a magma computation from the file with the given
|
1098
|
+
filename and returns a list of solutions. Also see solutions_from_magma.
|
1099
|
+
A non-zero dimensional component of the variety is reported as
|
1100
|
+
NonZeroDimensionalComponent.</p>
|
1101
|
+
</dd></dl>
|
1102
|
+
|
1103
|
+
<div role="list" class="citation-list">
|
1104
|
+
<div class="citation" id="fkr2013" role="doc-biblioentry">
|
1105
|
+
<span class="label"><span class="fn-bracket">[</span>FKR2013<span class="fn-bracket">]</span></span>
|
1106
|
+
<span class="backrefs">(<a role="doc-backlink" href="#id1">1</a>,<a role="doc-backlink" href="#id2">2</a>)</span>
|
1107
|
+
<p>Falbel, Koseleff, Rouillier: Representations of Fundamental Groups of 3-Manifolds into PGL(3,C): Exact Computations in Low Complexity, <a class="reference external" href="http://arxiv.org/abs/1307.6697">http://arxiv.org/abs/1307.6697</a></p>
|
1108
|
+
</div>
|
1109
|
+
</div>
|
1110
|
+
</section>
|
1111
|
+
</section>
|
1112
|
+
|
1113
|
+
|
1114
|
+
</div>
|
1115
|
+
</div>
|
1116
|
+
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
1117
|
+
<a href="ptolemy_examples4.html" class="btn btn-neutral float-left" title="Step-by-step examples: Part 4" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
1118
|
+
<a href="news.html" class="btn btn-neutral float-right" title="News" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
1119
|
+
</div>
|
1120
|
+
|
1121
|
+
<hr/>
|
1122
|
+
|
1123
|
+
<div role="contentinfo">
|
1124
|
+
<p>© Copyright 2009-2025, by Marc Culler, Nathan Dunfield, Matthias Goerner, Jeffrey Weeks and others.</p>
|
1125
|
+
</div>
|
1126
|
+
|
1127
|
+
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
1128
|
+
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
1129
|
+
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
1130
|
+
|
1131
|
+
|
1132
|
+
</footer>
|
1133
|
+
</div>
|
1134
|
+
</div>
|
1135
|
+
</section>
|
1136
|
+
</div>
|
1137
|
+
<script>
|
1138
|
+
jQuery(function () {
|
1139
|
+
SphinxRtdTheme.Navigation.enable(true);
|
1140
|
+
});
|
1141
|
+
</script>
|
1142
|
+
|
1143
|
+
</body>
|
1147
1144
|
</html>
|