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.
Files changed (476) hide show
  1. snappy/CyOpenGL.cp38-win_amd64.pyd +0 -0
  2. snappy/SnapPy.cp38-win_amd64.pyd +0 -0
  3. snappy/SnapPyHP.cp38-win_amd64.pyd +0 -0
  4. snappy/__init__.py +299 -402
  5. snappy/app.py +70 -20
  6. snappy/browser.py +18 -17
  7. snappy/canonical.py +249 -0
  8. snappy/{verify/cusp_shapes.py → cusps/__init__.py} +8 -18
  9. snappy/cusps/cusp_area_matrix.py +101 -0
  10. snappy/{verify/cusp_areas.py → cusps/cusp_areas_from_matrix.py} +23 -39
  11. snappy/cusps/maximal_cusp_area_matrix.py +136 -0
  12. snappy/cusps/test.py +21 -0
  13. snappy/cusps/trig_cusp_area_matrix.py +63 -0
  14. snappy/database.py +10 -9
  15. snappy/decorated_isosig.py +337 -114
  16. snappy/dev/extended_ptolemy/complexVolumesClosed.py +40 -7
  17. snappy/dev/extended_ptolemy/extended.py +3 -3
  18. snappy/dev/extended_ptolemy/phc_wrapper.py +10 -10
  19. snappy/dev/vericlosed/oneVertexTruncatedComplex.py +1 -1
  20. snappy/doc/_images/m004_paper_plane_on_systole.jpg +0 -0
  21. snappy/doc/_images/m125_paper_plane.jpg +0 -0
  22. snappy/doc/_images/o9_00000_systole_paper_plane.jpg +0 -0
  23. snappy/doc/_images/o9_00000_systole_paper_plane_closer.jpg +0 -0
  24. snappy/doc/_sources/additional_classes.rst.txt +40 -40
  25. snappy/doc/_sources/bugs.rst.txt +14 -14
  26. snappy/doc/_sources/censuses.rst.txt +51 -51
  27. snappy/doc/_sources/credits.rst.txt +75 -75
  28. snappy/doc/_sources/development.rst.txt +259 -239
  29. snappy/doc/_sources/index.rst.txt +182 -115
  30. snappy/doc/_sources/installing.rst.txt +247 -264
  31. snappy/doc/_sources/manifold.rst.txt +6 -6
  32. snappy/doc/_sources/manifoldhp.rst.txt +46 -46
  33. snappy/doc/_sources/news.rst.txt +355 -283
  34. snappy/doc/_sources/other.rst.txt +25 -25
  35. snappy/doc/_sources/platonic_census.rst.txt +20 -20
  36. snappy/doc/_sources/plink.rst.txt +102 -102
  37. snappy/doc/_sources/ptolemy.rst.txt +66 -66
  38. snappy/doc/_sources/ptolemy_classes.rst.txt +42 -42
  39. snappy/doc/_sources/ptolemy_examples1.rst.txt +298 -297
  40. snappy/doc/_sources/ptolemy_examples2.rst.txt +363 -363
  41. snappy/doc/_sources/ptolemy_examples3.rst.txt +301 -301
  42. snappy/doc/_sources/ptolemy_examples4.rst.txt +61 -61
  43. snappy/doc/_sources/ptolemy_prelim.rst.txt +105 -105
  44. snappy/doc/_sources/screenshots.rst.txt +21 -21
  45. snappy/doc/_sources/snap.rst.txt +87 -87
  46. snappy/doc/_sources/snappy.rst.txt +28 -28
  47. snappy/doc/_sources/spherogram.rst.txt +103 -103
  48. snappy/doc/_sources/todo.rst.txt +47 -47
  49. snappy/doc/_sources/triangulation.rst.txt +11 -11
  50. snappy/doc/_sources/tutorial.rst.txt +49 -49
  51. snappy/doc/_sources/verify.rst.txt +210 -150
  52. snappy/doc/_sources/verify_internals.rst.txt +79 -90
  53. snappy/doc/_static/basic.css +924 -902
  54. snappy/doc/_static/css/badge_only.css +1 -1
  55. snappy/doc/_static/css/theme.css +1 -1
  56. snappy/doc/_static/doctools.js +1 -1
  57. snappy/doc/_static/documentation_options.js +12 -13
  58. snappy/doc/_static/fonts/Lato/lato-bold.eot +0 -0
  59. snappy/doc/_static/fonts/Lato/lato-bold.ttf +0 -0
  60. snappy/doc/_static/fonts/Lato/lato-bold.woff +0 -0
  61. snappy/doc/_static/fonts/Lato/lato-bold.woff2 +0 -0
  62. snappy/doc/_static/fonts/Lato/lato-bolditalic.eot +0 -0
  63. snappy/doc/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
  64. snappy/doc/_static/fonts/Lato/lato-bolditalic.woff +0 -0
  65. snappy/doc/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
  66. snappy/doc/_static/fonts/Lato/lato-italic.eot +0 -0
  67. snappy/doc/_static/fonts/Lato/lato-italic.ttf +0 -0
  68. snappy/doc/_static/fonts/Lato/lato-italic.woff +0 -0
  69. snappy/doc/_static/fonts/Lato/lato-italic.woff2 +0 -0
  70. snappy/doc/_static/fonts/Lato/lato-regular.eot +0 -0
  71. snappy/doc/_static/fonts/Lato/lato-regular.ttf +0 -0
  72. snappy/doc/_static/fonts/Lato/lato-regular.woff +0 -0
  73. snappy/doc/_static/fonts/Lato/lato-regular.woff2 +0 -0
  74. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
  75. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
  76. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
  77. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
  78. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
  79. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
  80. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
  81. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
  82. snappy/doc/_static/js/versions.js +228 -0
  83. snappy/doc/_static/language_data.js +199 -199
  84. snappy/doc/_static/pygments.css +74 -73
  85. snappy/doc/_static/searchtools.js +125 -71
  86. snappy/doc/_static/snappy_furo.css +33 -33
  87. snappy/doc/_static/snappy_sphinx_rtd_theme.css +42 -42
  88. snappy/doc/_static/sphinx_highlight.js +13 -3
  89. snappy/doc/additional_classes.html +1499 -1330
  90. snappy/doc/bugs.html +131 -134
  91. snappy/doc/censuses.html +426 -445
  92. snappy/doc/credits.html +180 -183
  93. snappy/doc/development.html +383 -363
  94. snappy/doc/genindex.html +1330 -1409
  95. snappy/doc/index.html +261 -206
  96. snappy/doc/installing.html +345 -363
  97. snappy/doc/manifold.html +3451 -2839
  98. snappy/doc/manifoldhp.html +179 -182
  99. snappy/doc/news.html +387 -329
  100. snappy/doc/objects.inv +0 -0
  101. snappy/doc/other.html +160 -162
  102. snappy/doc/platonic_census.html +374 -377
  103. snappy/doc/plink.html +209 -212
  104. snappy/doc/ptolemy.html +253 -255
  105. snappy/doc/ptolemy_classes.html +1143 -1146
  106. snappy/doc/ptolemy_examples1.html +408 -410
  107. snappy/doc/ptolemy_examples2.html +470 -473
  108. snappy/doc/ptolemy_examples3.html +413 -416
  109. snappy/doc/ptolemy_examples4.html +194 -197
  110. snappy/doc/ptolemy_prelim.html +247 -250
  111. snappy/doc/py-modindex.html +164 -167
  112. snappy/doc/screenshots.html +140 -142
  113. snappy/doc/search.html +134 -137
  114. snappy/doc/searchindex.js +1 -1
  115. snappy/doc/snap.html +201 -204
  116. snappy/doc/snappy.html +180 -182
  117. snappy/doc/spherogram.html +1210 -1213
  118. snappy/doc/todo.html +165 -168
  119. snappy/doc/triangulation.html +1583 -1474
  120. snappy/doc/tutorial.html +158 -161
  121. snappy/doc/verify.html +329 -275
  122. snappy/doc/verify_internals.html +1234 -1691
  123. snappy/drilling/__init__.py +153 -235
  124. snappy/drilling/barycentric.py +103 -0
  125. snappy/drilling/constants.py +0 -2
  126. snappy/drilling/crush.py +56 -130
  127. snappy/drilling/cusps.py +12 -6
  128. snappy/drilling/debug.py +2 -1
  129. snappy/drilling/exceptions.py +7 -40
  130. snappy/drilling/moves.py +302 -243
  131. snappy/drilling/perturb.py +63 -37
  132. snappy/drilling/shorten.py +36 -0
  133. snappy/drilling/subdivide.py +0 -5
  134. snappy/drilling/test.py +23 -0
  135. snappy/drilling/test_cases.py +126 -0
  136. snappy/drilling/tracing.py +9 -37
  137. snappy/exceptions.py +18 -5
  138. snappy/exterior_to_link/barycentric_geometry.py +2 -4
  139. snappy/exterior_to_link/main.py +8 -7
  140. snappy/exterior_to_link/mcomplex_with_link.py +2 -2
  141. snappy/exterior_to_link/rational_linear_algebra.py +1 -1
  142. snappy/exterior_to_link/rational_linear_algebra_wrapped.py +1 -1
  143. snappy/exterior_to_link/test.py +21 -33
  144. snappy/geometric_structure/__init__.py +212 -0
  145. snappy/geometric_structure/cusp_neighborhood/__init__.py +3 -0
  146. snappy/geometric_structure/cusp_neighborhood/complex_cusp_cross_section.py +697 -0
  147. snappy/geometric_structure/cusp_neighborhood/cusp_cross_section_base.py +484 -0
  148. snappy/geometric_structure/cusp_neighborhood/exceptions.py +42 -0
  149. snappy/geometric_structure/cusp_neighborhood/real_cusp_cross_section.py +298 -0
  150. snappy/geometric_structure/cusp_neighborhood/tiles_for_cusp_neighborhood.py +159 -0
  151. snappy/geometric_structure/cusp_neighborhood/vertices.py +32 -0
  152. snappy/geometric_structure/geodesic/__init__.py +0 -0
  153. snappy/geometric_structure/geodesic/add_core_curves.py +152 -0
  154. snappy/geometric_structure/geodesic/avoid_core_curves.py +369 -0
  155. snappy/geometric_structure/geodesic/canonical_keys.py +52 -0
  156. snappy/geometric_structure/geodesic/check_away_from_core_curve.py +60 -0
  157. snappy/geometric_structure/geodesic/constants.py +6 -0
  158. snappy/geometric_structure/geodesic/exceptions.py +22 -0
  159. snappy/{drilling → geometric_structure/geodesic}/fixed_points.py +34 -9
  160. snappy/{drilling/geodesic_info.py → geometric_structure/geodesic/geodesic_start_point_info.py} +139 -180
  161. snappy/geometric_structure/geodesic/graph_trace_helper.py +67 -0
  162. snappy/geometric_structure/geodesic/line.py +30 -0
  163. snappy/geometric_structure/geodesic/multiplicity.py +127 -0
  164. snappy/geometric_structure/geodesic/tiles_for_geodesic.py +101 -0
  165. snappy/geometric_structure/test.py +22 -0
  166. snappy/gui.py +23 -13
  167. snappy/horoviewer.py +7 -7
  168. snappy/hyperboloid/__init__.py +96 -31
  169. snappy/hyperboloid/distances.py +245 -0
  170. snappy/hyperboloid/horoball.py +19 -0
  171. snappy/hyperboloid/line.py +35 -0
  172. snappy/hyperboloid/point.py +9 -0
  173. snappy/hyperboloid/triangle.py +29 -0
  174. snappy/isometry_signature.py +382 -0
  175. snappy/len_spec/__init__.py +596 -0
  176. snappy/len_spec/geodesic_info.py +110 -0
  177. snappy/len_spec/geodesic_key_info_dict.py +117 -0
  178. snappy/len_spec/geodesic_piece.py +143 -0
  179. snappy/len_spec/geometric_structure.py +182 -0
  180. snappy/len_spec/geometry.py +80 -0
  181. snappy/len_spec/length_spectrum_geodesic_info.py +170 -0
  182. snappy/len_spec/spine.py +206 -0
  183. snappy/len_spec/test.py +24 -0
  184. snappy/len_spec/test_cases.py +69 -0
  185. snappy/len_spec/tile.py +275 -0
  186. snappy/len_spec/word.py +86 -0
  187. snappy/math_basics.py +39 -13
  188. snappy/matrix.py +52 -9
  189. snappy/number.py +12 -6
  190. snappy/numeric_output_checker.py +2 -3
  191. snappy/pari.py +8 -4
  192. snappy/phone_home.py +2 -1
  193. snappy/polyviewer.py +8 -8
  194. snappy/ptolemy/__init__.py +1 -1
  195. snappy/ptolemy/component.py +2 -2
  196. snappy/ptolemy/coordinates.py +25 -25
  197. snappy/ptolemy/findLoops.py +9 -9
  198. snappy/ptolemy/manifoldMethods.py +27 -29
  199. snappy/ptolemy/polynomial.py +50 -57
  200. snappy/ptolemy/processFileBase.py +60 -0
  201. snappy/ptolemy/ptolemyVariety.py +109 -41
  202. snappy/ptolemy/reginaWrapper.py +4 -4
  203. snappy/ptolemy/rur.py +1 -1
  204. snappy/ptolemy/solutionsToPrimeIdealGroebnerBasis.py +9 -9
  205. snappy/ptolemy/test.py +99 -54
  206. snappy/ptolemy/utilities.py +1 -1
  207. snappy/raytracing/__init__.py +64 -0
  208. snappy/raytracing/additional_horospheres.py +64 -0
  209. snappy/raytracing/additional_len_spec_choices.py +63 -0
  210. snappy/raytracing/cohomology_fractal.py +0 -3
  211. snappy/raytracing/eyeball.py +123 -0
  212. snappy/raytracing/finite_raytracing_data.py +17 -17
  213. snappy/raytracing/finite_viewer.py +15 -15
  214. snappy/raytracing/geodesic_tube_info.py +93 -63
  215. snappy/raytracing/geodesics.py +94 -64
  216. snappy/raytracing/geodesics_window.py +56 -34
  217. snappy/raytracing/gui_utilities.py +21 -6
  218. snappy/raytracing/hyperboloid_navigation.py +29 -4
  219. snappy/raytracing/hyperboloid_utilities.py +73 -73
  220. snappy/raytracing/ideal_raytracing_data.py +121 -91
  221. snappy/raytracing/inside_viewer.py +199 -66
  222. snappy/raytracing/pack.py +22 -0
  223. snappy/raytracing/raytracing_data.py +37 -25
  224. snappy/raytracing/raytracing_view.py +70 -65
  225. snappy/raytracing/shaders/Eye.png +0 -0
  226. snappy/raytracing/shaders/NonGeometric.png +0 -0
  227. snappy/raytracing/shaders/__init__.py +39 -3
  228. snappy/raytracing/shaders/fragment.glsl +451 -133
  229. snappy/raytracing/test.py +29 -0
  230. snappy/raytracing/tooltip.py +146 -0
  231. snappy/raytracing/upper_halfspace_utilities.py +42 -9
  232. snappy/sage_helper.py +67 -134
  233. snappy/settings.py +90 -77
  234. snappy/shell.py +2 -0
  235. snappy/snap/character_varieties.py +2 -2
  236. snappy/snap/find_field.py +4 -3
  237. snappy/snap/fundamental_polyhedron.py +2 -2
  238. snappy/snap/kernel_structures.py +5 -1
  239. snappy/snap/nsagetools.py +9 -8
  240. snappy/snap/peripheral/dual_cellulation.py +4 -3
  241. snappy/snap/peripheral/peripheral.py +2 -2
  242. snappy/snap/peripheral/surface.py +5 -5
  243. snappy/snap/peripheral/test.py +1 -1
  244. snappy/snap/polished_reps.py +8 -8
  245. snappy/snap/slice_obs_HKL.py +16 -14
  246. snappy/snap/t3mlite/arrow.py +3 -3
  247. snappy/snap/t3mlite/edge.py +3 -3
  248. snappy/snap/t3mlite/homology.py +2 -2
  249. snappy/snap/t3mlite/mcomplex.py +3 -3
  250. snappy/snap/t3mlite/simplex.py +12 -0
  251. snappy/snap/t3mlite/spun.py +18 -17
  252. snappy/snap/t3mlite/test_vs_regina.py +4 -4
  253. snappy/snap/test.py +37 -53
  254. snappy/snap/utilities.py +4 -5
  255. snappy/test.py +121 -138
  256. snappy/test_cases.py +263 -0
  257. snappy/testing.py +131 -0
  258. snappy/tiling/__init__.py +2 -0
  259. snappy/tiling/canonical_key_dict.py +59 -0
  260. snappy/tiling/dict_based_set.py +79 -0
  261. snappy/tiling/floor.py +49 -0
  262. snappy/tiling/hyperboloid_dict.py +54 -0
  263. snappy/tiling/iter_utils.py +78 -0
  264. snappy/tiling/lifted_tetrahedron.py +22 -0
  265. snappy/tiling/lifted_tetrahedron_set.py +54 -0
  266. snappy/tiling/real_hash_dict.py +164 -0
  267. snappy/tiling/test.py +23 -0
  268. snappy/tiling/tile.py +215 -0
  269. snappy/tiling/triangle.py +33 -0
  270. snappy/tkterminal.py +113 -84
  271. snappy/twister/main.py +1 -7
  272. snappy/twister/twister_core.cp38-win_amd64.pyd +0 -0
  273. snappy/upper_halfspace/__init__.py +78 -17
  274. snappy/verify/__init__.py +3 -7
  275. snappy/verify/{verifyCanonical.py → canonical.py} +78 -70
  276. snappy/verify/complex_volume/adjust_torsion.py +1 -2
  277. snappy/verify/complex_volume/closed.py +13 -13
  278. snappy/verify/complex_volume/cusped.py +6 -6
  279. snappy/verify/complex_volume/extended_bloch.py +5 -8
  280. snappy/verify/{cuspTranslations.py → cusp_translations.py} +1 -1
  281. snappy/verify/edge_equations.py +80 -0
  282. snappy/verify/exceptions.py +0 -55
  283. snappy/verify/{verifyHyperbolicity.py → hyperbolicity.py} +3 -3
  284. snappy/verify/interval_newton_shapes_engine.py +7 -5
  285. snappy/verify/interval_tree.py +5 -5
  286. snappy/verify/krawczyk_shapes_engine.py +17 -18
  287. snappy/verify/maximal_cusp_area_matrix/__init__.py +7 -74
  288. snappy/verify/maximal_cusp_area_matrix/cusp_tiling_engine.py +3 -4
  289. snappy/verify/maximal_cusp_area_matrix/cusp_translate_engine.py +1 -1
  290. snappy/verify/{realAlgebra.py → real_algebra.py} +1 -1
  291. snappy/verify/shapes.py +5 -3
  292. snappy/verify/short_slopes.py +39 -41
  293. snappy/verify/{squareExtensions.py → square_extensions.py} +14 -11
  294. snappy/verify/test.py +57 -60
  295. snappy/verify/upper_halfspace/extended_matrix.py +1 -1
  296. snappy/verify/upper_halfspace/finite_point.py +3 -4
  297. snappy/verify/upper_halfspace/ideal_point.py +9 -9
  298. snappy/verify/volume.py +2 -2
  299. snappy/version.py +2 -2
  300. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/METADATA +14 -10
  301. snappy-3.2.dist-info/RECORD +503 -0
  302. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/WHEEL +1 -1
  303. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/top_level.txt +6 -1
  304. snappy/__pycache__/__init__.cpython-38.pyc +0 -0
  305. snappy/__pycache__/browser.cpython-38.pyc +0 -0
  306. snappy/__pycache__/cache.cpython-38.pyc +0 -0
  307. snappy/__pycache__/database.cpython-38.pyc +0 -0
  308. snappy/__pycache__/db_utilities.cpython-38.pyc +0 -0
  309. snappy/__pycache__/decorated_isosig.cpython-38.pyc +0 -0
  310. snappy/__pycache__/exceptions.cpython-38.pyc +0 -0
  311. snappy/__pycache__/export_stl.cpython-38.pyc +0 -0
  312. snappy/__pycache__/filedialog.cpython-38.pyc +0 -0
  313. snappy/__pycache__/gui.cpython-38.pyc +0 -0
  314. snappy/__pycache__/horoviewer.cpython-38.pyc +0 -0
  315. snappy/__pycache__/math_basics.cpython-38.pyc +0 -0
  316. snappy/__pycache__/matrix.cpython-38.pyc +0 -0
  317. snappy/__pycache__/number.cpython-38.pyc +0 -0
  318. snappy/__pycache__/numeric_output_checker.cpython-38.pyc +0 -0
  319. snappy/__pycache__/pari.cpython-38.pyc +0 -0
  320. snappy/__pycache__/polyviewer.cpython-38.pyc +0 -0
  321. snappy/__pycache__/sage_helper.cpython-38.pyc +0 -0
  322. snappy/__pycache__/version.cpython-38.pyc +0 -0
  323. snappy/doc/_sources/verify_canon.rst.txt +0 -90
  324. snappy/doc/_static/jquery-3.6.0.js +0 -10881
  325. snappy/doc/_static/js/html5shiv-printshiv.min.js +0 -4
  326. snappy/doc/_static/js/html5shiv.min.js +0 -4
  327. snappy/doc/_static/underscore-1.13.1.js +0 -2042
  328. snappy/doc/_static/underscore.js +0 -6
  329. snappy/doc/verify_canon.html +0 -304
  330. snappy/drilling/__pycache__/__init__.cpython-38.pyc +0 -0
  331. snappy/drilling/__pycache__/constants.cpython-38.pyc +0 -0
  332. snappy/drilling/__pycache__/crush.cpython-38.pyc +0 -0
  333. snappy/drilling/__pycache__/cusps.cpython-38.pyc +0 -0
  334. snappy/drilling/__pycache__/debug.cpython-38.pyc +0 -0
  335. snappy/drilling/__pycache__/epsilons.cpython-38.pyc +0 -0
  336. snappy/drilling/__pycache__/exceptions.cpython-38.pyc +0 -0
  337. snappy/drilling/__pycache__/fixed_points.cpython-38.pyc +0 -0
  338. snappy/drilling/__pycache__/geodesic_info.cpython-38.pyc +0 -0
  339. snappy/drilling/__pycache__/geodesic_tube.cpython-38.pyc +0 -0
  340. snappy/drilling/__pycache__/geometric_structure.cpython-38.pyc +0 -0
  341. snappy/drilling/__pycache__/line.cpython-38.pyc +0 -0
  342. snappy/drilling/__pycache__/moves.cpython-38.pyc +0 -0
  343. snappy/drilling/__pycache__/peripheral_curves.cpython-38.pyc +0 -0
  344. snappy/drilling/__pycache__/perturb.cpython-38.pyc +0 -0
  345. snappy/drilling/__pycache__/quotient_space.cpython-38.pyc +0 -0
  346. snappy/drilling/__pycache__/spatial_dict.cpython-38.pyc +0 -0
  347. snappy/drilling/__pycache__/subdivide.cpython-38.pyc +0 -0
  348. snappy/drilling/__pycache__/tracing.cpython-38.pyc +0 -0
  349. snappy/drilling/geodesic_tube.py +0 -441
  350. snappy/drilling/geometric_structure.py +0 -366
  351. snappy/drilling/line.py +0 -122
  352. snappy/drilling/quotient_space.py +0 -94
  353. snappy/drilling/spatial_dict.py +0 -128
  354. snappy/exterior_to_link/__pycache__/__init__.cpython-38.pyc +0 -0
  355. snappy/exterior_to_link/__pycache__/barycentric_geometry.cpython-38.pyc +0 -0
  356. snappy/exterior_to_link/__pycache__/exceptions.cpython-38.pyc +0 -0
  357. snappy/exterior_to_link/__pycache__/hyp_utils.cpython-38.pyc +0 -0
  358. snappy/exterior_to_link/__pycache__/link_projection.cpython-38.pyc +0 -0
  359. snappy/exterior_to_link/__pycache__/main.cpython-38.pyc +0 -0
  360. snappy/exterior_to_link/__pycache__/mcomplex_with_expansion.cpython-38.pyc +0 -0
  361. snappy/exterior_to_link/__pycache__/mcomplex_with_link.cpython-38.pyc +0 -0
  362. snappy/exterior_to_link/__pycache__/mcomplex_with_memory.cpython-38.pyc +0 -0
  363. snappy/exterior_to_link/__pycache__/pl_utils.cpython-38.pyc +0 -0
  364. snappy/exterior_to_link/__pycache__/put_in_S3.cpython-38.pyc +0 -0
  365. snappy/exterior_to_link/__pycache__/rational_linear_algebra.cpython-38.pyc +0 -0
  366. snappy/exterior_to_link/__pycache__/simplify_to_base_tri.cpython-38.pyc +0 -0
  367. snappy/exterior_to_link/__pycache__/stored_moves.cpython-38.pyc +0 -0
  368. snappy/hyperboloid/__pycache__/__init__.cpython-38.pyc +0 -0
  369. snappy/manifolds/__pycache__/__init__.cpython-38.pyc +0 -0
  370. snappy/ptolemy/__pycache__/__init__.cpython-38.pyc +0 -0
  371. snappy/ptolemy/__pycache__/component.cpython-38.pyc +0 -0
  372. snappy/ptolemy/__pycache__/coordinates.cpython-38.pyc +0 -0
  373. snappy/ptolemy/__pycache__/fieldExtensions.cpython-38.pyc +0 -0
  374. snappy/ptolemy/__pycache__/findLoops.cpython-38.pyc +0 -0
  375. snappy/ptolemy/__pycache__/homology.cpython-38.pyc +0 -0
  376. snappy/ptolemy/__pycache__/manifoldMethods.cpython-38.pyc +0 -0
  377. snappy/ptolemy/__pycache__/matrix.cpython-38.pyc +0 -0
  378. snappy/ptolemy/__pycache__/numericalSolutionsToGroebnerBasis.cpython-38.pyc +0 -0
  379. snappy/ptolemy/__pycache__/polynomial.cpython-38.pyc +0 -0
  380. snappy/ptolemy/__pycache__/processComponents.cpython-38.pyc +0 -0
  381. snappy/ptolemy/__pycache__/processFileBase.cpython-38.pyc +0 -0
  382. snappy/ptolemy/__pycache__/processFileDispatch.cpython-38.pyc +0 -0
  383. snappy/ptolemy/__pycache__/processMagmaFile.cpython-38.pyc +0 -0
  384. snappy/ptolemy/__pycache__/processRurFile.cpython-38.pyc +0 -0
  385. snappy/ptolemy/__pycache__/ptolemyGeneralizedObstructionClass.cpython-38.pyc +0 -0
  386. snappy/ptolemy/__pycache__/ptolemyObstructionClass.cpython-38.pyc +0 -0
  387. snappy/ptolemy/__pycache__/ptolemyVariety.cpython-38.pyc +0 -0
  388. snappy/ptolemy/__pycache__/ptolemyVarietyPrimeIdealGroebnerBasis.cpython-38.pyc +0 -0
  389. snappy/ptolemy/__pycache__/rur.cpython-38.pyc +0 -0
  390. snappy/ptolemy/__pycache__/solutionsToPrimeIdealGroebnerBasis.cpython-38.pyc +0 -0
  391. snappy/ptolemy/__pycache__/utilities.cpython-38.pyc +0 -0
  392. snappy/snap/__pycache__/__init__.cpython-38.pyc +0 -0
  393. snappy/snap/__pycache__/character_varieties.cpython-38.pyc +0 -0
  394. snappy/snap/__pycache__/fundamental_polyhedron.cpython-38.pyc +0 -0
  395. snappy/snap/__pycache__/interval_reps.cpython-38.pyc +0 -0
  396. snappy/snap/__pycache__/kernel_structures.cpython-38.pyc +0 -0
  397. snappy/snap/__pycache__/mcomplex_base.cpython-38.pyc +0 -0
  398. snappy/snap/__pycache__/nsagetools.cpython-38.pyc +0 -0
  399. snappy/snap/__pycache__/polished_reps.cpython-38.pyc +0 -0
  400. snappy/snap/__pycache__/shapes.cpython-38.pyc +0 -0
  401. snappy/snap/__pycache__/slice_obs_HKL.cpython-38.pyc +0 -0
  402. snappy/snap/__pycache__/utilities.cpython-38.pyc +0 -0
  403. snappy/snap/peripheral/__pycache__/__init__.cpython-38.pyc +0 -0
  404. snappy/snap/peripheral/__pycache__/dual_cellulation.cpython-38.pyc +0 -0
  405. snappy/snap/peripheral/__pycache__/link.cpython-38.pyc +0 -0
  406. snappy/snap/peripheral/__pycache__/peripheral.cpython-38.pyc +0 -0
  407. snappy/snap/peripheral/__pycache__/surface.cpython-38.pyc +0 -0
  408. snappy/snap/t3mlite/__pycache__/__init__.cpython-38.pyc +0 -0
  409. snappy/snap/t3mlite/__pycache__/arrow.cpython-38.pyc +0 -0
  410. snappy/snap/t3mlite/__pycache__/corner.cpython-38.pyc +0 -0
  411. snappy/snap/t3mlite/__pycache__/edge.cpython-38.pyc +0 -0
  412. snappy/snap/t3mlite/__pycache__/face.cpython-38.pyc +0 -0
  413. snappy/snap/t3mlite/__pycache__/files.cpython-38.pyc +0 -0
  414. snappy/snap/t3mlite/__pycache__/homology.cpython-38.pyc +0 -0
  415. snappy/snap/t3mlite/__pycache__/linalg.cpython-38.pyc +0 -0
  416. snappy/snap/t3mlite/__pycache__/mcomplex.cpython-38.pyc +0 -0
  417. snappy/snap/t3mlite/__pycache__/perm4.cpython-38.pyc +0 -0
  418. snappy/snap/t3mlite/__pycache__/simplex.cpython-38.pyc +0 -0
  419. snappy/snap/t3mlite/__pycache__/spun.cpython-38.pyc +0 -0
  420. snappy/snap/t3mlite/__pycache__/surface.cpython-38.pyc +0 -0
  421. snappy/snap/t3mlite/__pycache__/tetrahedron.cpython-38.pyc +0 -0
  422. snappy/snap/t3mlite/__pycache__/vertex.cpython-38.pyc +0 -0
  423. snappy/togl/__init__.py +0 -3
  424. snappy/togl/darwin-tk8.6/Togl2.1/LICENSE +0 -28
  425. snappy/togl/darwin-tk8.6/Togl2.1/libTogl2.1.dylib +0 -0
  426. snappy/togl/darwin-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
  427. snappy/togl/darwin-tk8.7/Togl2.1/LICENSE +0 -28
  428. snappy/togl/darwin-tk8.7/Togl2.1/libTogl2.1.dylib +0 -0
  429. snappy/togl/darwin-tk8.7/Togl2.1/pkgIndex.tcl +0 -5
  430. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
  431. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/libTogl2.1.so +0 -0
  432. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
  433. snappy/togl/win32VC-tk8.6/Togl2.1/LICENSE +0 -28
  434. snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.dll +0 -0
  435. snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.lib +0 -0
  436. snappy/togl/win32VC-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
  437. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
  438. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.dll +0 -0
  439. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.lib +0 -0
  440. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
  441. snappy/twister/__pycache__/__init__.cpython-38.pyc +0 -0
  442. snappy/twister/__pycache__/main.cpython-38.pyc +0 -0
  443. snappy/upper_halfspace/__pycache__/__init__.cpython-38.pyc +0 -0
  444. snappy/upper_halfspace/__pycache__/ideal_point.cpython-38.pyc +0 -0
  445. snappy/verify/__pycache__/__init__.cpython-38.pyc +0 -0
  446. snappy/verify/__pycache__/cuspCrossSection.cpython-38.pyc +0 -0
  447. snappy/verify/__pycache__/cuspTranslations.cpython-38.pyc +0 -0
  448. snappy/verify/__pycache__/cusp_areas.cpython-38.pyc +0 -0
  449. snappy/verify/__pycache__/cusp_shapes.cpython-38.pyc +0 -0
  450. snappy/verify/__pycache__/exceptions.cpython-38.pyc +0 -0
  451. snappy/verify/__pycache__/interval_newton_shapes_engine.cpython-38.pyc +0 -0
  452. snappy/verify/__pycache__/interval_tree.cpython-38.pyc +0 -0
  453. snappy/verify/__pycache__/krawczyk_shapes_engine.cpython-38.pyc +0 -0
  454. snappy/verify/__pycache__/realAlgebra.cpython-38.pyc +0 -0
  455. snappy/verify/__pycache__/shapes.cpython-38.pyc +0 -0
  456. snappy/verify/__pycache__/short_slopes.cpython-38.pyc +0 -0
  457. snappy/verify/__pycache__/squareExtensions.cpython-38.pyc +0 -0
  458. snappy/verify/__pycache__/verifyCanonical.cpython-38.pyc +0 -0
  459. snappy/verify/__pycache__/verifyHyperbolicity.cpython-38.pyc +0 -0
  460. snappy/verify/__pycache__/volume.cpython-38.pyc +0 -0
  461. snappy/verify/complex_volume/__pycache__/__init__.cpython-38.pyc +0 -0
  462. snappy/verify/complex_volume/__pycache__/adjust_torsion.cpython-38.pyc +0 -0
  463. snappy/verify/complex_volume/__pycache__/closed.cpython-38.pyc +0 -0
  464. snappy/verify/complex_volume/__pycache__/compute_ptolemys.cpython-38.pyc +0 -0
  465. snappy/verify/complex_volume/__pycache__/cusped.cpython-38.pyc +0 -0
  466. snappy/verify/complex_volume/__pycache__/extended_bloch.cpython-38.pyc +0 -0
  467. snappy/verify/cuspCrossSection.py +0 -1422
  468. snappy/verify/maximal_cusp_area_matrix/__pycache__/__init__.cpython-38.pyc +0 -0
  469. snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_tiling_engine.cpython-38.pyc +0 -0
  470. snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_translate_engine.cpython-38.pyc +0 -0
  471. snappy/verify/upper_halfspace/__pycache__/__init__.cpython-38.pyc +0 -0
  472. snappy/verify/upper_halfspace/__pycache__/extended_matrix.cpython-38.pyc +0 -0
  473. snappy/verify/upper_halfspace/__pycache__/finite_point.cpython-38.pyc +0 -0
  474. snappy/verify/upper_halfspace/__pycache__/ideal_point.cpython-38.pyc +0 -0
  475. snappy-3.1.1.dist-info/RECORD +0 -575
  476. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/entry_points.txt +0 -0
snappy/doc/verify.html CHANGED
@@ -1,276 +1,330 @@
1
- <!DOCTYPE html>
2
- <html class="writer-html5" lang="en" >
3
- <head>
4
- <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
5
-
6
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
- <title>Verified computations &mdash; SnapPy 3.1.1 documentation</title>
8
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
9
- <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
10
- <link rel="stylesheet" href="_static/snappy_sphinx_rtd_theme.css" type="text/css" />
11
- <link rel="shortcut icon" href="_static/SnapPy.ico"/>
12
- <!--[if lt IE 9]>
13
- <script src="_static/js/html5shiv.min.js"></script>
14
- <![endif]-->
15
-
16
- <script src="_static/jquery.js"></script>
17
- <script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
18
- <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
19
- <script src="_static/doctools.js"></script>
20
- <script src="_static/sphinx_highlight.js"></script>
21
- <script src="_static/js/theme.js"></script>
22
- <link rel="index" title="Index" href="genindex.html" />
23
- <link rel="search" title="Search" href="search.html" />
24
- <link rel="next" title="Canonical retriangulation and isometry signature" href="verify_canon.html" />
25
- <link rel="prev" title="Number theory of hyperbolic 3-manifolds" href="snap.html" />
26
- </head>
27
-
28
- <body class="wy-body-for-nav">
29
- <div class="wy-grid-for-nav">
30
- <nav data-toggle="wy-nav-shift" class="wy-nav-side">
31
- <div class="wy-side-scroll">
32
- <div class="wy-side-nav-search" >
33
-
34
-
35
-
36
- <a href="index.html" class="icon icon-home">
37
- SnapPy
38
- <img src="_static/SnapPy-horizontal-128.png" class="logo" alt="Logo"/>
39
- </a>
40
- <div class="version">
41
- 3.1.1
42
- </div>
43
- <div role="search">
44
- <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
45
- <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
46
- <input type="hidden" name="check_keywords" value="yes" />
47
- <input type="hidden" name="area" value="default" />
48
- </form>
49
- </div>
50
- </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
51
- <ul class="current">
52
- <li class="toctree-l1"><a class="reference internal" href="installing.html">Installing SnapPy</a></li>
53
- <li class="toctree-l1"><a class="reference internal" href="screenshots.html">Screenshots: SnapPy in action</a></li>
54
- <li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorial</a></li>
55
- <li class="toctree-l1"><a class="reference internal" href="snappy.html">The snappy module and its classes</a></li>
56
- <li class="toctree-l1"><a class="reference internal" href="plink.html">Using SnapPy’s link editor</a></li>
57
- <li class="toctree-l1"><a class="reference internal" href="spherogram.html">Links: planar diagrams and invariants</a></li>
58
- <li class="toctree-l1"><a class="reference internal" href="snap.html">Number theory of hyperbolic 3-manifolds</a></li>
59
- <li class="toctree-l1 current"><a class="current reference internal" href="#">Verified computations</a><ul>
60
- <li class="toctree-l2"><a class="reference internal" href="#overview">Overview</a></li>
61
- <li class="toctree-l2"><a class="reference internal" href="#verified-computation-topics">Verified computation topics</a><ul>
62
- <li class="toctree-l3"><a class="reference internal" href="verify_canon.html">Canonical retriangulation and isometry signature</a></li>
63
- <li class="toctree-l3"><a class="reference internal" href="verify_internals.html">Internals of verified computations</a></li>
64
- </ul>
65
- </li>
66
- </ul>
67
- </li>
68
- <li class="toctree-l1"><a class="reference internal" href="other.html">Other components</a></li>
69
- <li class="toctree-l1"><a class="reference internal" href="news.html">News</a></li>
70
- <li class="toctree-l1"><a class="reference internal" href="credits.html">Credits</a></li>
71
- <li class="toctree-l1"><a class="reference internal" href="bugs.html">Reporting bugs and other problems</a></li>
72
- <li class="toctree-l1"><a class="reference internal" href="todo.html">To Do List</a></li>
73
- <li class="toctree-l1"><a class="reference internal" href="development.html">Development Basics</a></li>
74
- </ul>
75
-
76
- </div>
77
- </div>
78
- </nav>
79
-
80
- <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
81
- <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
82
- <a href="index.html">SnapPy</a>
83
- </nav>
84
-
85
- <div class="wy-nav-content">
86
- <div class="rst-content">
87
- <div role="navigation" aria-label="Page navigation">
88
- <ul class="wy-breadcrumbs">
89
- <li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
90
- <li class="breadcrumb-item active">Verified computations</li>
91
- <li class="wy-breadcrumbs-aside">
92
- </li>
93
- </ul>
94
- <hr/>
95
- </div>
96
- <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
97
- <div itemprop="articleBody">
98
-
99
- <section id="verified-computations">
100
- <h1>Verified computations<a class="headerlink" href="#verified-computations" title="Permalink to this heading"></a></h1>
101
- <section id="overview">
102
- <h2>Overview<a class="headerlink" href="#overview" title="Permalink to this heading"></a></h2>
103
- <p>When used inside <a class="reference external" href="http://sagemath.org">Sage</a>, SnapPy can verify the
104
- following computations:</p>
105
- <ul>
106
- <li><p>Complex intervals for the shapes that are guaranteed to contain a true
107
- but not necessarily geometric solution to the rectangular gluing equations:</p>
108
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>sage: M = Manifold(&quot;m015(3,1)&quot;)
109
- sage: M.tetrahedra_shapes(&#39;rect&#39;, intervals=True)
110
- [0.625222762246? + 3.177940133813?*I,
111
- -0.0075523593782? + 0.5131157955971?*I,
112
- 0.6515818912107? - 0.1955023488930?*I]
113
- </pre></div>
114
- </div>
115
- <p>(Specify <code class="xref py py-attr docutils literal notranslate"><span class="pre">bits_prec</span></code> or <code class="xref py py-attr docutils literal notranslate"><span class="pre">dec_prec</span></code> for higher precision intervals.)</p>
116
- </li>
117
- <li><p>Verify the hyperbolicity
118
- of an orientable 3-manifold giving complex intervals for the
119
- shapes corresponding to a hyperbolic structure or holonomy representation with
120
- <a class="reference internal" href="manifold.html#snappy.Manifold.verify_hyperbolicity" title="snappy.Manifold.verify_hyperbolicity"><code class="xref py py-meth docutils literal notranslate"><span class="pre">verify_hyperbolicity()</span></code></a>:</p>
121
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>sage: M = Manifold(&quot;m015&quot;)
122
- sage: M.verify_hyperbolicity()
123
- (True,
124
- [0.6623589786224? + 0.5622795120623?*I,
125
- 0.6623589786224? + 0.5622795120623?*I,
126
- 0.6623589786224? + 0.5622795120623?*I])
127
- sage: M.verify_hyperbolicity(holonomy=True)[1].SL2C(&#39;a&#39;)
128
- [-0.324717957? - 1.124559024?*I -0.704807293? + 0.398888830?*I]
129
- [ 1.409614585? - 0.797777659?*I -1.000000000? + 0.?e-9*I]
130
- </pre></div>
131
- </div>
132
- </li>
133
- <li><p>Intervals for the volume and complex volume of a hyperbolic orientable 3-manifold:</p>
134
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>sage: M = Manifold(&quot;m003(-3,1)&quot;)
135
- sage: M.volume(verified=True, bits_prec = 100)
136
- 0.942707362776927720921299603?
137
- sage: M = Manifold(&quot;m015&quot;)
138
- sage: M.complex_volume(verified_modulo_2_torsion=True)
139
- 2.8281220883? + 1.9106738240?*I
140
- </pre></div>
141
- </div>
142
- <p>(Note that when using verified computation, the Chern-Simons invariant is only computed
143
- modulo pi^2/2 even though it is defined modulo pi^2.)</p>
144
- </li>
145
- <li><p>Give the <a class="reference internal" href="verify_canon.html"><span class="doc">canonical retriangulation</span></a> (a close
146
- relative to the canonical cell decomposition) of a cusped hyperbolic
147
- manifold using intervals or exact arithmetic if necessary with
148
- <a class="reference internal" href="manifold.html#snappy.Manifold.canonical_retriangulation" title="snappy.Manifold.canonical_retriangulation"><code class="xref py py-meth docutils literal notranslate"><span class="pre">canonical_retriangulation()</span></code></a>:</p>
149
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">&quot;m412&quot;</span><span class="p">)</span>
150
- <span class="n">sage</span><span class="p">:</span> <span class="n">K</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">canonical_retriangulation</span><span class="p">(</span><span class="n">verified</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span>
151
- <span class="n">sage</span><span class="p">:</span> <span class="nb">len</span><span class="p">(</span><span class="n">K</span><span class="o">.</span><span class="n">isomorphisms_to</span><span class="p">(</span><span class="n">K</span><span class="p">))</span> <span class="c1"># Certified size of isometry group</span>
152
- <span class="mi">8</span>
153
- </pre></div>
154
- </div>
155
- <p><strong>Remark:</strong> For the case of non-tetrahedral canonical cell, exact values
156
- are used which are found
157
- using the <a class="reference external" href="http://en.wikipedia.org/wiki/Lenstra%E2%80%93Lenstra%E2%80%93Lov%C3%A1sz_lattice_basis_reduction_algorithm">LLL-algorithm</a>
158
- and then verified using exact computations. These computations can be slow. A massive speed-up was achieved by
159
- recent improvements so that the computation of the isometry signature of any manifold in <code class="docutils literal notranslate"><span class="pre">OrientableCuspedCensus</span></code>
160
- takes at most a couple of seconds, typically, far less. Manifolds with more simplices might require setting
161
- a higher value for
162
- <code class="xref py py-attr docutils literal notranslate"><span class="pre">exact_bits_prec_and_degrees</span></code>.</p>
163
- </li>
164
- <li><p>The <a class="reference internal" href="verify_canon.html"><span class="doc">isometry signature</span></a> which is a complete invariant of the isometry type
165
- of a cusped hyperbolic manifold (i.e., two manifolds are isometric if and only
166
- if they have the same isometry signature):</p>
167
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">&quot;m412&quot;</span><span class="p">)</span>
168
- <span class="n">sage</span><span class="p">:</span> <span class="n">M</span><span class="o">.</span><span class="n">isometry_signature</span><span class="p">(</span><span class="n">verified</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span>
169
- <span class="s1">&#39;mvvLALQQQhfghjjlilkjklaaaaaffffffff&#39;</span>
170
- </pre></div>
171
- </div>
172
- <p>The isometry signature can be strengthened to include the peripheral curves
173
- such that it is a complete invariant of a hyperbolic link:</p>
174
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">&quot;L5a1&quot;</span><span class="p">)</span>
175
- <span class="n">sage</span><span class="p">:</span> <span class="n">M</span><span class="o">.</span><span class="n">isometry_signature</span><span class="p">(</span><span class="n">of_link</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">verified</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span>
176
- <span class="s1">&#39;eLPkbdcddhgggb_baCbbaCb&#39;</span>
177
- </pre></div>
178
- </div>
179
- <p>See <a class="reference internal" href="manifold.html#snappy.Manifold.isometry_signature" title="snappy.Manifold.isometry_signature"><code class="xref py py-meth docutils literal notranslate"><span class="pre">isometry_signature()</span></code></a> for details.</p>
180
- <p><strong>Remark:</strong> The isometry signature is based on the canonical
181
- retriangulation so the same warning applies.</p>
182
- </li>
183
- <li><p>The maximal cusp area matrix which characterizes the configuration
184
- space of disjoint cusp neighborhoods with
185
- <a class="reference internal" href="manifold.html#snappy.Manifold.cusp_area_matrix" title="snappy.Manifold.cusp_area_matrix"><code class="xref py py-meth docutils literal notranslate"><span class="pre">cusp_area_matrix()</span></code></a>:</p>
186
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>sage: M=Manifold(&quot;m203&quot;)
187
- sage: M.cusp_area_matrix(method=&#39;maximal&#39;, verified=True)
188
- [ 27.000000? 9.0000000000?]
189
- [9.0000000000? 27.0000000?]
190
- </pre></div>
191
- </div>
192
- <p>In this example, the cusp neighborhood about cusp 0 or 1 is only
193
- embedded if and only if its area is less than sqrt(27). The cusp
194
- neighborhood about cusp 0 is only disjoint from the one about cusp 1
195
- if and only if the product of their areas is less than 9.</p>
196
- </li>
197
- <li><p>Compute areas for disjoint cusp neighborhoods with
198
- <a class="reference internal" href="manifold.html#snappy.Manifold.cusp_areas" title="snappy.Manifold.cusp_areas"><code class="xref py py-meth docutils literal notranslate"><span class="pre">cusp_areas()</span></code></a>:</p>
199
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>sage: M=Manifold(&quot;m203&quot;)
200
- sage: M.cusp_areas(policy = &#39;unbiased&#39;, method=&#39;maximal&#39;, verified = True)
201
- [3.00000000000?, 3.00000000000?]
202
- </pre></div>
203
- </div>
204
- <p>With the above parameters, the result is intrinsic to the hyperbolic
205
- manifold with labeled cusped.</p>
206
- </li>
207
- <li><p>Find all slopes of length less or equal to 6 when measured on the boundary
208
- of disjoint cusp neighborhoods:</p>
209
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="n">M</span><span class="o">=</span><span class="n">Manifold</span><span class="p">(</span><span class="s2">&quot;m203&quot;</span><span class="p">)</span>
210
- <span class="n">sage</span><span class="p">:</span> <span class="n">M</span><span class="o">.</span><span class="n">short_slopes</span><span class="p">(</span><span class="n">policy</span> <span class="o">=</span> <span class="s1">&#39;unbiased&#39;</span><span class="p">,</span> <span class="n">method</span><span class="o">=</span><span class="s1">&#39;maximal&#39;</span><span class="p">,</span> <span class="n">verified</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span>
211
- <span class="p">[[(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="o">...</span><span class="p">,</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">)],</span> <span class="p">[(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="o">...</span><span class="p">,</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">)]]</span>
212
- </pre></div>
213
- </div>
214
- <p>First block has all short slopes for first cusp, …, see
215
- <a class="reference internal" href="manifold.html#snappy.Manifold.short_slopes" title="snappy.Manifold.short_slopes"><code class="xref py py-meth docutils literal notranslate"><span class="pre">short_slopes()</span></code></a> for details.</p>
216
- <p>By <a class="reference external" href="http://arxiv.org/abs/math/9906183">Agol’s</a> and <a class="reference external" href="http://arxiv.org/abs/math/9808120">Lackenby’s</a> 6-Theorem any Dehn-filling
217
- resulting in a non-hyperbolic manifold must contain one of the above
218
- slopes. Thus, <a class="reference internal" href="manifold.html#snappy.Manifold.short_slopes" title="snappy.Manifold.short_slopes"><code class="xref py py-meth docutils literal notranslate"><span class="pre">short_slopes()</span></code></a> can be used
219
- to implement the techniques to find exceptional Dehn surgeries
220
- (<a class="reference external" href="https://arxiv.org/abs/1109.0903">arXiv:1109.0903</a> and
221
- <a class="reference external" href="https://arxiv.org/abs/1310.3472">arXiv:1310.3472</a>).</p>
222
- </li>
223
- </ul>
224
- <p>This is all based on a reimplementation of <a class="reference external" href="http://www.oishi.info.waseda.ac.jp/~takayasu/hikmot/">HIKMOT</a> which
225
- pioneered the use of interval methods for hyperbolic manifolds (also see
226
- <a class="reference external" href="http://ww2.ii.uj.edu.pl/~zgliczyn/cap07/krawczyk.pdf">Zgliczynski’s notes</a>). It
227
- can be used in a way very similar to HIKMOT, but uses Sage’s complex
228
- interval types for certification. It furthermore makes use of code by
229
- <a class="reference external" href="http://arxiv.org/abs/1407.7827/">Dunfield, Hoffman, Licata</a>. The code to
230
- compute the isomorphism signature was ported over from
231
- <a class="reference external" href="https://regina-normal.github.io/">Regina</a>.</p>
232
- <p>This verification code was contributed by Matthias Goerner.</p>
233
- </section>
234
- <section id="verified-computation-topics">
235
- <h2>Verified computation topics<a class="headerlink" href="#verified-computation-topics" title="Permalink to this heading"></a></h2>
236
- <div class="toctree-wrapper compound">
237
- <ul>
238
- <li class="toctree-l1"><a class="reference internal" href="verify_canon.html">Canonical retriangulation and isometry signature</a></li>
239
- <li class="toctree-l1"><a class="reference internal" href="verify_internals.html">Internals of verified computations</a></li>
240
- </ul>
241
- </div>
242
- </section>
243
- </section>
244
-
245
-
246
- </div>
247
- </div>
248
- <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
249
- <a href="snap.html" class="btn btn-neutral float-left" title="Number theory of hyperbolic 3-manifolds" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
250
- <a href="verify_canon.html" class="btn btn-neutral float-right" title="Canonical retriangulation and isometry signature" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
251
- </div>
252
-
253
- <hr/>
254
-
255
- <div role="contentinfo">
256
- <p>&#169; Copyright 2009-2023, by Marc Culler, Nathan Dunfield, Matthias Goerner, Jeffrey Weeks and others.</p>
257
- </div>
258
-
259
- Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
260
- <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
261
- provided by <a href="https://readthedocs.org">Read the Docs</a>.
262
-
263
-
264
- </footer>
265
- </div>
266
- </div>
267
- </section>
268
- </div>
269
- <script>
270
- jQuery(function () {
271
- SphinxRtdTheme.Navigation.enable(true);
272
- });
273
- </script>
274
-
275
- </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>Verified computations &mdash; SnapPy 3.2 documentation</title>
10
+ <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
11
+ <link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=e59714d7" />
12
+ <link rel="stylesheet" type="text/css" href="_static/snappy_sphinx_rtd_theme.css?v=1b8ec2a8" />
13
+
14
+
15
+ <link rel="shortcut icon" href="_static/SnapPy.ico"/>
16
+ <script src="_static/jquery.js?v=5d32c60e"></script>
17
+ <script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
18
+ <script src="_static/documentation_options.js?v=828ea960"></script>
19
+ <script src="_static/doctools.js?v=9a2dae69"></script>
20
+ <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
21
+ <script src="_static/js/theme.js"></script>
22
+ <link rel="index" title="Index" href="genindex.html" />
23
+ <link rel="search" title="Search" href="search.html" />
24
+ <link rel="next" title="Internals of verified computations" href="verify_internals.html" />
25
+ <link rel="prev" title="Number theory of hyperbolic 3-manifolds" href="snap.html" />
26
+ </head>
27
+
28
+ <body class="wy-body-for-nav">
29
+ <div class="wy-grid-for-nav">
30
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
31
+ <div class="wy-side-scroll">
32
+ <div class="wy-side-nav-search" >
33
+
34
+
35
+
36
+ <a href="index.html" class="icon icon-home">
37
+ SnapPy
38
+ <img src="_static/SnapPy-horizontal-128.png" class="logo" alt="Logo"/>
39
+ </a>
40
+ <div role="search">
41
+ <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
42
+ <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
43
+ <input type="hidden" name="check_keywords" value="yes" />
44
+ <input type="hidden" name="area" value="default" />
45
+ </form>
46
+ </div>
47
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
48
+ <ul class="current">
49
+ <li class="toctree-l1"><a class="reference internal" href="installing.html">Installing SnapPy</a></li>
50
+ <li class="toctree-l1"><a class="reference internal" href="screenshots.html">Screenshots: SnapPy in action</a></li>
51
+ <li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorial</a></li>
52
+ <li class="toctree-l1"><a class="reference internal" href="snappy.html">The snappy module and its classes</a></li>
53
+ <li class="toctree-l1"><a class="reference internal" href="plink.html">Using SnapPy’s link editor</a></li>
54
+ <li class="toctree-l1"><a class="reference internal" href="spherogram.html">Links: planar diagrams and invariants</a></li>
55
+ <li class="toctree-l1"><a class="reference internal" href="snap.html">Number theory of hyperbolic 3-manifolds</a></li>
56
+ <li class="toctree-l1 current"><a class="current reference internal" href="#">Verified computations</a><ul>
57
+ <li class="toctree-l2"><a class="reference internal" href="#introduction">Introduction</a></li>
58
+ <li class="toctree-l2"><a class="reference internal" href="#overview">Overview</a></li>
59
+ <li class="toctree-l2"><a class="reference internal" href="#verified-computation-topics">Verified computation topics</a><ul>
60
+ <li class="toctree-l3"><a class="reference internal" href="verify_internals.html">Internals of verified computations</a></li>
61
+ </ul>
62
+ </li>
63
+ </ul>
64
+ </li>
65
+ <li class="toctree-l1"><a class="reference internal" href="other.html">Other components</a></li>
66
+ <li class="toctree-l1"><a class="reference internal" href="news.html">News</a></li>
67
+ <li class="toctree-l1"><a class="reference internal" href="credits.html">Credits</a></li>
68
+ <li class="toctree-l1"><a class="reference internal" href="bugs.html">Reporting bugs and other problems</a></li>
69
+ <li class="toctree-l1"><a class="reference internal" href="todo.html">To Do List</a></li>
70
+ <li class="toctree-l1"><a class="reference internal" href="development.html">Development Basics</a></li>
71
+ </ul>
72
+
73
+ </div>
74
+ </div>
75
+ </nav>
76
+
77
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
78
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
79
+ <a href="index.html">SnapPy</a>
80
+ </nav>
81
+
82
+ <div class="wy-nav-content">
83
+ <div class="rst-content">
84
+ <div role="navigation" aria-label="Page navigation">
85
+ <ul class="wy-breadcrumbs">
86
+ <li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
87
+ <li class="breadcrumb-item active">Verified computations</li>
88
+ <li class="wy-breadcrumbs-aside">
89
+ </li>
90
+ </ul>
91
+ <hr/>
92
+ </div>
93
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
94
+ <div itemprop="articleBody">
95
+
96
+ <section id="verified-computations">
97
+ <h1>Verified computations<a class="headerlink" href="#verified-computations" title="Link to this heading"></a></h1>
98
+ <section id="introduction">
99
+ <span id="verify-primer"></span><h2>Introduction<a class="headerlink" href="#introduction" title="Link to this heading"></a></h2>
100
+ <p>Several SnapPy methods use numerical computations with floating point
101
+ approximations and can potentially result in incorrect results. This even
102
+ applies to methods whose output is purely combinatorial such as
103
+ <a class="reference internal" href="manifold.html#snappy.Manifold.canonical_retriangulation" title="snappy.Manifold.canonical_retriangulation"><code class="xref py py-meth docutils literal notranslate"><span class="pre">canonical_retriangulation()</span></code></a>.</p>
104
+ <p>Many of these SnapPy methods can be supplied with a <code class="xref py py-attr docutils literal notranslate"><span class="pre">verified</span></code> flag to
105
+ ensure that the result is provably correct. Note that verified computations are
106
+ only available when using SnapPy inside <a class="reference external" href="http://sagemath.org">SageMath</a>.
107
+ If the flag <code class="xref py py-attr docutils literal notranslate"><span class="pre">verified=True</span></code> is specified, an incorrect result is
108
+ never returned. Instead the method clearly indicates a failure, usually through
109
+ an exception:</p>
110
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="n">M</span><span class="o">=</span><span class="n">Manifold</span><span class="p">(</span><span class="s2">&quot;m004&quot;</span><span class="p">)</span>
111
+ <span class="n">sage</span><span class="p">:</span> <span class="n">M</span><span class="o">.</span><span class="n">drill_word</span><span class="p">(</span><span class="s1">&#39;abc&#39;</span><span class="p">,</span> <span class="n">verified</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">bits_prec</span> <span class="o">=</span> <span class="mi">40</span><span class="p">)</span>
112
+ <span class="o">...</span>
113
+ <span class="n">InsufficientPrecisionError</span><span class="p">:</span> <span class="n">When</span> <span class="n">re</span><span class="o">-</span><span class="n">tracing</span> <span class="n">the</span> <span class="n">geodesic</span><span class="p">,</span> <span class="n">the</span> <span class="n">intersection</span> <span class="k">with</span> <span class="n">the</span> <span class="nb">next</span> <span class="n">tetrahedron</span> <span class="n">face</span> <span class="n">was</span> <span class="n">too</span> <span class="n">close</span> <span class="n">to</span> <span class="n">the</span> <span class="n">previous</span> <span class="n">to</span> <span class="n">tell</span> <span class="n">them</span> <span class="n">apart</span><span class="o">.</span> <span class="n">Increasing</span> <span class="n">the</span> <span class="n">precision</span> <span class="n">will</span> <span class="n">probably</span> <span class="n">avoid</span> <span class="n">this</span> <span class="n">problem</span><span class="o">.</span>
114
+ </pre></div>
115
+ </div>
116
+ <p>Often, such a failure can be advoided by increasing the precision. In
117
+ particular, this applies if the exception is a (subclass of)
118
+ <code class="xref py py-class docutils literal notranslate"><span class="pre">InsufficientPrecisionError</span></code>:</p>
119
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="n">M</span><span class="o">.</span><span class="n">drill_word</span><span class="p">(</span><span class="s1">&#39;abc&#39;</span><span class="p">,</span> <span class="n">verified</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">bits_prec</span> <span class="o">=</span> <span class="mi">60</span><span class="p">)</span>
120
+ <span class="n">m004_drilled</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">)(</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">)</span>
121
+ </pre></div>
122
+ </div>
123
+ <p>Note that, <a class="reference internal" href="manifold.html#snappy.Manifold.verify_hyperbolicity" title="snappy.Manifold.verify_hyperbolicity"><code class="xref py py-meth docutils literal notranslate"><span class="pre">verify_hyperbolicity()</span></code></a> is different though
124
+ and does not throw an exception. Instead, it returns a bool indicating success
125
+ as part of its output. This is for compatibility with
126
+ <a class="reference external" href="http://www.oishi.info.waseda.ac.jp/~takayasu/hikmot/">HIKMOT</a>’s
127
+ <code class="docutils literal notranslate"><span class="pre">verify_hyperbolicty</span></code>:</p>
128
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>sage: M.verify_hyperbolicity(bits_prec=10)
129
+ (False, [])
130
+ sage: M.verify_hyperbolicity()
131
+ (True,
132
+ [0.50000000000000? + 0.86602540378444?*I,
133
+ 0.50000000000000? + 0.86602540378444?*I])
134
+ </pre></div>
135
+ </div>
136
+ <p>As illustrated above, the result consists of intervals
137
+ (of type SageMath’s <code class="docutils literal notranslate"><span class="pre">RealIntervalField</span></code> or
138
+ <code class="docutils literal notranslate"><span class="pre">ComplexIntervalField</span></code>) if the output of a computation is numerical
139
+ and <code class="xref py py-attr docutils literal notranslate"><span class="pre">verified=True</span></code> is specified. These intervals contain the true
140
+ value.</p>
141
+ </section>
142
+ <section id="overview">
143
+ <h2>Overview<a class="headerlink" href="#overview" title="Link to this heading"></a></h2>
144
+ <p>Some examples of verified computations are:</p>
145
+ <ul>
146
+ <li><p>Verify the hyperbolicity
147
+ of an orientable 3-manifold giving complex intervals for the
148
+ shapes corresponding to a hyperbolic structure or holonomy representation with
149
+ <a class="reference internal" href="manifold.html#snappy.Manifold.verify_hyperbolicity" title="snappy.Manifold.verify_hyperbolicity"><code class="xref py py-meth docutils literal notranslate"><span class="pre">verify_hyperbolicity()</span></code></a>:</p>
150
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>sage: M = Manifold(&quot;m015&quot;)
151
+ sage: M.verify_hyperbolicity()
152
+ (True,
153
+ [0.6623589786224? + 0.5622795120623?*I,
154
+ 0.6623589786224? + 0.5622795120623?*I,
155
+ 0.6623589786224? + 0.5622795120623?*I])
156
+ sage: M.verify_hyperbolicity(holonomy=True)[1].SL2C(&#39;a&#39;)
157
+ [-0.324717957? - 1.124559024?*I -0.704807293? + 0.398888830?*I]
158
+ [ 1.409614585? - 0.797777659?*I -1.000000000? + 0.?e-9*I]
159
+ </pre></div>
160
+ </div>
161
+ </li>
162
+ <li><p>Intervals for the volume and complex volume of a hyperbolic orientable 3-manifold:</p>
163
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>sage: M = Manifold(&quot;m003(-3,1)&quot;)
164
+ sage: M.volume(verified=True, bits_prec = 100)
165
+ 0.942707362776927720921299603?
166
+ sage: M = Manifold(&quot;m015&quot;)
167
+ sage: M.complex_volume(verified_modulo_2_torsion=True)
168
+ 2.8281220883? + 1.9106738240?*I
169
+ </pre></div>
170
+ </div>
171
+ <p>(Note that when using verified computation, the Chern-Simons invariant is only computed
172
+ modulo pi^2/2 even though it is defined modulo pi^2.)</p>
173
+ </li>
174
+ <li><p>Give the (a close relative to the canonical cell decomposition) of a cusped
175
+ hyperbolic manifold using intervals or exact arithmetic if necessary with
176
+ <a class="reference internal" href="manifold.html#snappy.Manifold.canonical_retriangulation" title="snappy.Manifold.canonical_retriangulation"><code class="xref py py-meth docutils literal notranslate"><span class="pre">canonical_retriangulation()</span></code></a>:</p>
177
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">&quot;m412&quot;</span><span class="p">)</span>
178
+ <span class="n">sage</span><span class="p">:</span> <span class="n">K</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">canonical_retriangulation</span><span class="p">(</span><span class="n">verified</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span>
179
+ <span class="n">sage</span><span class="p">:</span> <span class="nb">len</span><span class="p">(</span><span class="n">K</span><span class="o">.</span><span class="n">isomorphisms_to</span><span class="p">(</span><span class="n">K</span><span class="p">))</span> <span class="c1"># Certified size of isometry group</span>
180
+ <span class="mi">8</span>
181
+ </pre></div>
182
+ </div>
183
+ <p><strong>Remark:</strong> For the case of non-tetrahedral canonical cell, exact values
184
+ are used which are found
185
+ using the <a class="reference external" href="http://en.wikipedia.org/wiki/Lenstra%E2%80%93Lenstra%E2%80%93Lov%C3%A1sz_lattice_basis_reduction_algorithm">LLL-algorithm</a>
186
+ and then verified using exact computations. These computations can be slow. A massive speed-up was achieved by
187
+ recent improvements so that the computation of the isometry signature of any manifold in <code class="docutils literal notranslate"><span class="pre">OrientableCuspedCensus</span></code>
188
+ takes at most a couple of seconds, typically, far less. Manifolds with more simplices might require setting
189
+ a higher value for
190
+ <code class="xref py py-attr docutils literal notranslate"><span class="pre">exact_bits_prec_and_degrees</span></code>.</p>
191
+ </li>
192
+ <li><p>The isometry signature which is a complete invariant of the isometry type
193
+ of a cusped hyperbolic manifold (i.e., two manifolds are isometric if and only
194
+ if they have the same isometry signature):</p>
195
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">&quot;m412&quot;</span><span class="p">)</span>
196
+ <span class="n">sage</span><span class="p">:</span> <span class="n">M</span><span class="o">.</span><span class="n">isometry_signature</span><span class="p">(</span><span class="n">verified</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span>
197
+ <span class="s1">&#39;mvvLALQQQhfghjjlilkjklaaaaaffffffff&#39;</span>
198
+ </pre></div>
199
+ </div>
200
+ <p>The isometry signature can be strengthened to include the peripheral curves
201
+ such that it is a complete invariant of a hyperbolic link:</p>
202
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">&quot;L5a1&quot;</span><span class="p">)</span>
203
+ <span class="n">sage</span><span class="p">:</span> <span class="n">M</span><span class="o">.</span><span class="n">isometry_signature</span><span class="p">(</span><span class="n">of_link</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">verified</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span>
204
+ <span class="s1">&#39;eLPkbdcddhgggb_baCbbaCb&#39;</span>
205
+ </pre></div>
206
+ </div>
207
+ <p>See <a class="reference internal" href="manifold.html#snappy.Manifold.isometry_signature" title="snappy.Manifold.isometry_signature"><code class="xref py py-meth docutils literal notranslate"><span class="pre">isometry_signature()</span></code></a> for details.</p>
208
+ <p><strong>Remark:</strong> The isometry signature is based on the canonical
209
+ retriangulation so the same warning applies.</p>
210
+ </li>
211
+ <li><p>The maximal cusp area matrix which characterizes the configuration
212
+ space of disjoint cusp neighborhoods with
213
+ <a class="reference internal" href="manifold.html#snappy.Manifold.cusp_area_matrix" title="snappy.Manifold.cusp_area_matrix"><code class="xref py py-meth docutils literal notranslate"><span class="pre">cusp_area_matrix()</span></code></a>:</p>
214
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>sage: M=Manifold(&quot;m203&quot;)
215
+ sage: M.cusp_area_matrix(method=&#39;maximal&#39;, verified=True)
216
+ [ 27.000000? 9.0000000000?]
217
+ [9.0000000000? 27.0000000?]
218
+ </pre></div>
219
+ </div>
220
+ <p>In this example, the cusp neighborhood about cusp 0 or 1 is only
221
+ embedded if and only if its area is less than sqrt(27). The cusp
222
+ neighborhood about cusp 0 is only disjoint from the one about cusp 1
223
+ if and only if the product of their areas is less than 9.</p>
224
+ </li>
225
+ <li><p>Compute areas for disjoint cusp neighborhoods with
226
+ <a class="reference internal" href="manifold.html#snappy.Manifold.cusp_areas" title="snappy.Manifold.cusp_areas"><code class="xref py py-meth docutils literal notranslate"><span class="pre">cusp_areas()</span></code></a>:</p>
227
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>sage: M=Manifold(&quot;m203&quot;)
228
+ sage: M.cusp_areas(policy = &#39;unbiased&#39;, method=&#39;maximal&#39;, verified = True)
229
+ [3.00000000000?, 3.00000000000?]
230
+ </pre></div>
231
+ </div>
232
+ <p>With the above parameters, the result is intrinsic to the hyperbolic
233
+ manifold with labeled cusped.</p>
234
+ </li>
235
+ <li><p>Find all slopes of length less or equal to 6 when measured on the boundary
236
+ of disjoint cusp neighborhoods:</p>
237
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="n">M</span><span class="o">=</span><span class="n">Manifold</span><span class="p">(</span><span class="s2">&quot;m203&quot;</span><span class="p">)</span>
238
+ <span class="n">sage</span><span class="p">:</span> <span class="n">M</span><span class="o">.</span><span class="n">short_slopes</span><span class="p">(</span><span class="n">policy</span> <span class="o">=</span> <span class="s1">&#39;unbiased&#39;</span><span class="p">,</span> <span class="n">method</span><span class="o">=</span><span class="s1">&#39;maximal&#39;</span><span class="p">,</span> <span class="n">verified</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span>
239
+ <span class="p">[[(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="o">...</span><span class="p">,</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">)],</span> <span class="p">[(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="o">...</span><span class="p">,</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">)]]</span>
240
+ </pre></div>
241
+ </div>
242
+ <p>First block has all short slopes for first cusp, …, see
243
+ <a class="reference internal" href="manifold.html#snappy.Manifold.short_slopes" title="snappy.Manifold.short_slopes"><code class="xref py py-meth docutils literal notranslate"><span class="pre">short_slopes()</span></code></a> for details.</p>
244
+ <p>By <a class="reference external" href="http://arxiv.org/abs/math/9906183">Agol’s</a> and <a class="reference external" href="http://arxiv.org/abs/math/9808120">Lackenby’s</a> 6-Theorem any Dehn-filling
245
+ resulting in a non-hyperbolic manifold must contain one of the above
246
+ slopes. Thus, <a class="reference internal" href="manifold.html#snappy.Manifold.short_slopes" title="snappy.Manifold.short_slopes"><code class="xref py py-meth docutils literal notranslate"><span class="pre">short_slopes()</span></code></a> can be used
247
+ to implement the techniques to find exceptional Dehn surgeries
248
+ (<a class="reference external" href="https://arxiv.org/abs/1109.0903">arXiv:1109.0903</a> and
249
+ <a class="reference external" href="https://arxiv.org/abs/1310.3472">arXiv:1310.3472</a>).</p>
250
+ </li>
251
+ <li><p>An example of finding all geodesics up to length 1:</p>
252
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="kn">from</span> <span class="nn">sage.all</span> <span class="kn">import</span> <span class="n">RIF</span>
253
+ <span class="n">sage</span><span class="p">:</span> <span class="n">L</span> <span class="o">=</span> <span class="n">RIF</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
254
+ <span class="n">sage</span><span class="p">:</span> <span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">&quot;m003&quot;</span><span class="p">)</span>
255
+ <span class="n">sage</span><span class="p">:</span> <span class="n">spec</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">length_spectrum_alt_gen</span><span class="p">(</span><span class="n">verified</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
256
+ <span class="n">sage</span><span class="p">:</span> <span class="n">n</span> <span class="o">=</span> <span class="mi">0</span>
257
+ <span class="n">sage</span><span class="p">:</span> <span class="k">for</span> <span class="n">g</span> <span class="ow">in</span> <span class="n">spec</span><span class="p">:</span>
258
+ <span class="o">...</span> <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">length</span><span class="o">.</span><span class="n">real</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">L</span><span class="p">:</span>
259
+ <span class="o">...</span> <span class="k">break</span> <span class="c1"># Done! All subsequent geodesics will be longer.</span>
260
+ <span class="o">...</span> <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">length</span><span class="o">.</span><span class="n">real</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">L</span><span class="p">:</span>
261
+ <span class="o">...</span> <span class="n">n</span> <span class="o">+=</span> <span class="mi">1</span>
262
+ <span class="o">...</span> <span class="k">continue</span>
263
+ <span class="o">...</span> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;Interval too large. Increase precision.&quot;</span><span class="p">)</span>
264
+ <span class="n">sage</span><span class="p">:</span> <span class="n">n</span>
265
+ <span class="mi">4</span>
266
+ </pre></div>
267
+ </div>
268
+ </li>
269
+ </ul>
270
+ <p>Additionally, we can compute complex intervals for the shapes that are
271
+ guaranteed to contain a true solution to the rectangular gluing equations
272
+ that is not necessarily a geometric solution (specify <code class="xref py py-attr docutils literal notranslate"><span class="pre">bits_prec</span></code>
273
+ or <code class="xref py py-attr docutils literal notranslate"><span class="pre">dec_prec</span></code> for higher precision intervals.):</p>
274
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>sage: M = Manifold(&quot;m015(3,1)&quot;)
275
+ sage: M.tetrahedra_shapes(&#39;rect&#39;, intervals=True)
276
+ [0.625222762246? + 3.177940133813?*I,
277
+ -0.0075523593782? + 0.5131157955971?*I,
278
+ 0.6515818912107? - 0.1955023488930?*I]
279
+ </pre></div>
280
+ </div>
281
+ <p>This is all based on a reimplementation of <a class="reference external" href="http://www.oishi.info.waseda.ac.jp/~takayasu/hikmot/">HIKMOT</a> which
282
+ pioneered the use of interval methods for hyperbolic manifolds (also see
283
+ <a class="reference external" href="http://ww2.ii.uj.edu.pl/~zgliczyn/cap07/krawczyk.pdf">Zgliczynski’s notes</a>). It
284
+ can be used in a way very similar to HIKMOT, but uses Sage’s complex
285
+ interval types for certification. It furthermore makes use of code by
286
+ <a class="reference external" href="http://arxiv.org/abs/1407.7827/">Dunfield, Hoffman, Licata</a>.</p>
287
+ <p>This verification code was contributed by Matthias Goerner.</p>
288
+ </section>
289
+ <section id="verified-computation-topics">
290
+ <h2>Verified computation topics<a class="headerlink" href="#verified-computation-topics" title="Link to this heading"></a></h2>
291
+ <div class="toctree-wrapper compound">
292
+ <ul>
293
+ <li class="toctree-l1"><a class="reference internal" href="verify_internals.html">Internals of verified computations</a></li>
294
+ </ul>
295
+ </div>
296
+ </section>
297
+ </section>
298
+
299
+
300
+ </div>
301
+ </div>
302
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
303
+ <a href="snap.html" class="btn btn-neutral float-left" title="Number theory of hyperbolic 3-manifolds" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
304
+ <a href="verify_internals.html" class="btn btn-neutral float-right" title="Internals of verified computations" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
305
+ </div>
306
+
307
+ <hr/>
308
+
309
+ <div role="contentinfo">
310
+ <p>&#169; Copyright 2009-2025, by Marc Culler, Nathan Dunfield, Matthias Goerner, Jeffrey Weeks and others.</p>
311
+ </div>
312
+
313
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
314
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
315
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
316
+
317
+
318
+ </footer>
319
+ </div>
320
+ </div>
321
+ </section>
322
+ </div>
323
+ <script>
324
+ jQuery(function () {
325
+ SphinxRtdTheme.Navigation.enable(true);
326
+ });
327
+ </script>
328
+
329
+ </body>
276
330
  </html>