snappy 3.1.1__cp310-cp310-win_amd64.whl → 3.2__cp310-cp310-win_amd64.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (476) hide show
  1. snappy/CyOpenGL.cp310-win_amd64.pyd +0 -0
  2. snappy/SnapPy.cp310-win_amd64.pyd +0 -0
  3. snappy/SnapPyHP.cp310-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.cp310-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 +26 -11
  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-310.pyc +0 -0
  305. snappy/__pycache__/browser.cpython-310.pyc +0 -0
  306. snappy/__pycache__/cache.cpython-310.pyc +0 -0
  307. snappy/__pycache__/database.cpython-310.pyc +0 -0
  308. snappy/__pycache__/db_utilities.cpython-310.pyc +0 -0
  309. snappy/__pycache__/decorated_isosig.cpython-310.pyc +0 -0
  310. snappy/__pycache__/exceptions.cpython-310.pyc +0 -0
  311. snappy/__pycache__/export_stl.cpython-310.pyc +0 -0
  312. snappy/__pycache__/filedialog.cpython-310.pyc +0 -0
  313. snappy/__pycache__/gui.cpython-310.pyc +0 -0
  314. snappy/__pycache__/horoviewer.cpython-310.pyc +0 -0
  315. snappy/__pycache__/math_basics.cpython-310.pyc +0 -0
  316. snappy/__pycache__/matrix.cpython-310.pyc +0 -0
  317. snappy/__pycache__/number.cpython-310.pyc +0 -0
  318. snappy/__pycache__/numeric_output_checker.cpython-310.pyc +0 -0
  319. snappy/__pycache__/pari.cpython-310.pyc +0 -0
  320. snappy/__pycache__/polyviewer.cpython-310.pyc +0 -0
  321. snappy/__pycache__/sage_helper.cpython-310.pyc +0 -0
  322. snappy/__pycache__/version.cpython-310.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-310.pyc +0 -0
  331. snappy/drilling/__pycache__/constants.cpython-310.pyc +0 -0
  332. snappy/drilling/__pycache__/crush.cpython-310.pyc +0 -0
  333. snappy/drilling/__pycache__/cusps.cpython-310.pyc +0 -0
  334. snappy/drilling/__pycache__/debug.cpython-310.pyc +0 -0
  335. snappy/drilling/__pycache__/epsilons.cpython-310.pyc +0 -0
  336. snappy/drilling/__pycache__/exceptions.cpython-310.pyc +0 -0
  337. snappy/drilling/__pycache__/fixed_points.cpython-310.pyc +0 -0
  338. snappy/drilling/__pycache__/geodesic_info.cpython-310.pyc +0 -0
  339. snappy/drilling/__pycache__/geodesic_tube.cpython-310.pyc +0 -0
  340. snappy/drilling/__pycache__/geometric_structure.cpython-310.pyc +0 -0
  341. snappy/drilling/__pycache__/line.cpython-310.pyc +0 -0
  342. snappy/drilling/__pycache__/moves.cpython-310.pyc +0 -0
  343. snappy/drilling/__pycache__/peripheral_curves.cpython-310.pyc +0 -0
  344. snappy/drilling/__pycache__/perturb.cpython-310.pyc +0 -0
  345. snappy/drilling/__pycache__/quotient_space.cpython-310.pyc +0 -0
  346. snappy/drilling/__pycache__/spatial_dict.cpython-310.pyc +0 -0
  347. snappy/drilling/__pycache__/subdivide.cpython-310.pyc +0 -0
  348. snappy/drilling/__pycache__/tracing.cpython-310.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-310.pyc +0 -0
  355. snappy/exterior_to_link/__pycache__/barycentric_geometry.cpython-310.pyc +0 -0
  356. snappy/exterior_to_link/__pycache__/exceptions.cpython-310.pyc +0 -0
  357. snappy/exterior_to_link/__pycache__/hyp_utils.cpython-310.pyc +0 -0
  358. snappy/exterior_to_link/__pycache__/link_projection.cpython-310.pyc +0 -0
  359. snappy/exterior_to_link/__pycache__/main.cpython-310.pyc +0 -0
  360. snappy/exterior_to_link/__pycache__/mcomplex_with_expansion.cpython-310.pyc +0 -0
  361. snappy/exterior_to_link/__pycache__/mcomplex_with_link.cpython-310.pyc +0 -0
  362. snappy/exterior_to_link/__pycache__/mcomplex_with_memory.cpython-310.pyc +0 -0
  363. snappy/exterior_to_link/__pycache__/pl_utils.cpython-310.pyc +0 -0
  364. snappy/exterior_to_link/__pycache__/put_in_S3.cpython-310.pyc +0 -0
  365. snappy/exterior_to_link/__pycache__/rational_linear_algebra.cpython-310.pyc +0 -0
  366. snappy/exterior_to_link/__pycache__/simplify_to_base_tri.cpython-310.pyc +0 -0
  367. snappy/exterior_to_link/__pycache__/stored_moves.cpython-310.pyc +0 -0
  368. snappy/hyperboloid/__pycache__/__init__.cpython-310.pyc +0 -0
  369. snappy/manifolds/__pycache__/__init__.cpython-310.pyc +0 -0
  370. snappy/ptolemy/__pycache__/__init__.cpython-310.pyc +0 -0
  371. snappy/ptolemy/__pycache__/component.cpython-310.pyc +0 -0
  372. snappy/ptolemy/__pycache__/coordinates.cpython-310.pyc +0 -0
  373. snappy/ptolemy/__pycache__/fieldExtensions.cpython-310.pyc +0 -0
  374. snappy/ptolemy/__pycache__/findLoops.cpython-310.pyc +0 -0
  375. snappy/ptolemy/__pycache__/homology.cpython-310.pyc +0 -0
  376. snappy/ptolemy/__pycache__/manifoldMethods.cpython-310.pyc +0 -0
  377. snappy/ptolemy/__pycache__/matrix.cpython-310.pyc +0 -0
  378. snappy/ptolemy/__pycache__/numericalSolutionsToGroebnerBasis.cpython-310.pyc +0 -0
  379. snappy/ptolemy/__pycache__/polynomial.cpython-310.pyc +0 -0
  380. snappy/ptolemy/__pycache__/processComponents.cpython-310.pyc +0 -0
  381. snappy/ptolemy/__pycache__/processFileBase.cpython-310.pyc +0 -0
  382. snappy/ptolemy/__pycache__/processFileDispatch.cpython-310.pyc +0 -0
  383. snappy/ptolemy/__pycache__/processMagmaFile.cpython-310.pyc +0 -0
  384. snappy/ptolemy/__pycache__/processRurFile.cpython-310.pyc +0 -0
  385. snappy/ptolemy/__pycache__/ptolemyGeneralizedObstructionClass.cpython-310.pyc +0 -0
  386. snappy/ptolemy/__pycache__/ptolemyObstructionClass.cpython-310.pyc +0 -0
  387. snappy/ptolemy/__pycache__/ptolemyVariety.cpython-310.pyc +0 -0
  388. snappy/ptolemy/__pycache__/ptolemyVarietyPrimeIdealGroebnerBasis.cpython-310.pyc +0 -0
  389. snappy/ptolemy/__pycache__/rur.cpython-310.pyc +0 -0
  390. snappy/ptolemy/__pycache__/solutionsToPrimeIdealGroebnerBasis.cpython-310.pyc +0 -0
  391. snappy/ptolemy/__pycache__/utilities.cpython-310.pyc +0 -0
  392. snappy/snap/__pycache__/__init__.cpython-310.pyc +0 -0
  393. snappy/snap/__pycache__/character_varieties.cpython-310.pyc +0 -0
  394. snappy/snap/__pycache__/fundamental_polyhedron.cpython-310.pyc +0 -0
  395. snappy/snap/__pycache__/interval_reps.cpython-310.pyc +0 -0
  396. snappy/snap/__pycache__/kernel_structures.cpython-310.pyc +0 -0
  397. snappy/snap/__pycache__/mcomplex_base.cpython-310.pyc +0 -0
  398. snappy/snap/__pycache__/nsagetools.cpython-310.pyc +0 -0
  399. snappy/snap/__pycache__/polished_reps.cpython-310.pyc +0 -0
  400. snappy/snap/__pycache__/shapes.cpython-310.pyc +0 -0
  401. snappy/snap/__pycache__/slice_obs_HKL.cpython-310.pyc +0 -0
  402. snappy/snap/__pycache__/utilities.cpython-310.pyc +0 -0
  403. snappy/snap/peripheral/__pycache__/__init__.cpython-310.pyc +0 -0
  404. snappy/snap/peripheral/__pycache__/dual_cellulation.cpython-310.pyc +0 -0
  405. snappy/snap/peripheral/__pycache__/link.cpython-310.pyc +0 -0
  406. snappy/snap/peripheral/__pycache__/peripheral.cpython-310.pyc +0 -0
  407. snappy/snap/peripheral/__pycache__/surface.cpython-310.pyc +0 -0
  408. snappy/snap/t3mlite/__pycache__/__init__.cpython-310.pyc +0 -0
  409. snappy/snap/t3mlite/__pycache__/arrow.cpython-310.pyc +0 -0
  410. snappy/snap/t3mlite/__pycache__/corner.cpython-310.pyc +0 -0
  411. snappy/snap/t3mlite/__pycache__/edge.cpython-310.pyc +0 -0
  412. snappy/snap/t3mlite/__pycache__/face.cpython-310.pyc +0 -0
  413. snappy/snap/t3mlite/__pycache__/files.cpython-310.pyc +0 -0
  414. snappy/snap/t3mlite/__pycache__/homology.cpython-310.pyc +0 -0
  415. snappy/snap/t3mlite/__pycache__/linalg.cpython-310.pyc +0 -0
  416. snappy/snap/t3mlite/__pycache__/mcomplex.cpython-310.pyc +0 -0
  417. snappy/snap/t3mlite/__pycache__/perm4.cpython-310.pyc +0 -0
  418. snappy/snap/t3mlite/__pycache__/simplex.cpython-310.pyc +0 -0
  419. snappy/snap/t3mlite/__pycache__/spun.cpython-310.pyc +0 -0
  420. snappy/snap/t3mlite/__pycache__/surface.cpython-310.pyc +0 -0
  421. snappy/snap/t3mlite/__pycache__/tetrahedron.cpython-310.pyc +0 -0
  422. snappy/snap/t3mlite/__pycache__/vertex.cpython-310.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-310.pyc +0 -0
  442. snappy/twister/__pycache__/main.cpython-310.pyc +0 -0
  443. snappy/upper_halfspace/__pycache__/__init__.cpython-310.pyc +0 -0
  444. snappy/upper_halfspace/__pycache__/ideal_point.cpython-310.pyc +0 -0
  445. snappy/verify/__pycache__/__init__.cpython-310.pyc +0 -0
  446. snappy/verify/__pycache__/cuspCrossSection.cpython-310.pyc +0 -0
  447. snappy/verify/__pycache__/cuspTranslations.cpython-310.pyc +0 -0
  448. snappy/verify/__pycache__/cusp_areas.cpython-310.pyc +0 -0
  449. snappy/verify/__pycache__/cusp_shapes.cpython-310.pyc +0 -0
  450. snappy/verify/__pycache__/exceptions.cpython-310.pyc +0 -0
  451. snappy/verify/__pycache__/interval_newton_shapes_engine.cpython-310.pyc +0 -0
  452. snappy/verify/__pycache__/interval_tree.cpython-310.pyc +0 -0
  453. snappy/verify/__pycache__/krawczyk_shapes_engine.cpython-310.pyc +0 -0
  454. snappy/verify/__pycache__/realAlgebra.cpython-310.pyc +0 -0
  455. snappy/verify/__pycache__/shapes.cpython-310.pyc +0 -0
  456. snappy/verify/__pycache__/short_slopes.cpython-310.pyc +0 -0
  457. snappy/verify/__pycache__/squareExtensions.cpython-310.pyc +0 -0
  458. snappy/verify/__pycache__/verifyCanonical.cpython-310.pyc +0 -0
  459. snappy/verify/__pycache__/verifyHyperbolicity.cpython-310.pyc +0 -0
  460. snappy/verify/__pycache__/volume.cpython-310.pyc +0 -0
  461. snappy/verify/complex_volume/__pycache__/__init__.cpython-310.pyc +0 -0
  462. snappy/verify/complex_volume/__pycache__/adjust_torsion.cpython-310.pyc +0 -0
  463. snappy/verify/complex_volume/__pycache__/closed.cpython-310.pyc +0 -0
  464. snappy/verify/complex_volume/__pycache__/compute_ptolemys.cpython-310.pyc +0 -0
  465. snappy/verify/complex_volume/__pycache__/cusped.cpython-310.pyc +0 -0
  466. snappy/verify/complex_volume/__pycache__/extended_bloch.cpython-310.pyc +0 -0
  467. snappy/verify/cuspCrossSection.py +0 -1422
  468. snappy/verify/maximal_cusp_area_matrix/__pycache__/__init__.cpython-310.pyc +0 -0
  469. snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_tiling_engine.cpython-310.pyc +0 -0
  470. snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_translate_engine.cpython-310.pyc +0 -0
  471. snappy/verify/upper_halfspace/__pycache__/__init__.cpython-310.pyc +0 -0
  472. snappy/verify/upper_halfspace/__pycache__/extended_matrix.cpython-310.pyc +0 -0
  473. snappy/verify/upper_halfspace/__pycache__/finite_point.cpython-310.pyc +0 -0
  474. snappy/verify/upper_halfspace/__pycache__/ideal_point.cpython-310.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
@@ -1,150 +1,210 @@
1
- Verified computations
2
- ========================================
3
-
4
- Overview
5
- --------
6
-
7
- When used inside `Sage <http://sagemath.org>`_, SnapPy can verify the
8
- following computations:
9
-
10
- * Complex intervals for the shapes that are guaranteed to contain a true
11
- but not necessarily geometric solution to the rectangular gluing equations::
12
-
13
- sage: M = Manifold("m015(3,1)")
14
- sage: M.tetrahedra_shapes('rect', intervals=True)
15
- [0.625222762246? + 3.177940133813?*I,
16
- -0.0075523593782? + 0.5131157955971?*I,
17
- 0.6515818912107? - 0.1955023488930?*I]
18
-
19
- (Specify :py:attr:`bits_prec` or :py:attr:`dec_prec` for higher precision intervals.)
20
-
21
- * Verify the hyperbolicity
22
- of an orientable 3-manifold giving complex intervals for the
23
- shapes corresponding to a hyperbolic structure or holonomy representation with
24
- :py:meth:`~snappy.Manifold.verify_hyperbolicity`::
25
-
26
- sage: M = Manifold("m015")
27
- sage: M.verify_hyperbolicity()
28
- (True,
29
- [0.6623589786224? + 0.5622795120623?*I,
30
- 0.6623589786224? + 0.5622795120623?*I,
31
- 0.6623589786224? + 0.5622795120623?*I])
32
- sage: M.verify_hyperbolicity(holonomy=True)[1].SL2C('a')
33
- [-0.324717957? - 1.124559024?*I -0.704807293? + 0.398888830?*I]
34
- [ 1.409614585? - 0.797777659?*I -1.000000000? + 0.?e-9*I]
35
-
36
- * Intervals for the volume and complex volume of a hyperbolic orientable 3-manifold::
37
-
38
- sage: M = Manifold("m003(-3,1)")
39
- sage: M.volume(verified=True, bits_prec = 100)
40
- 0.942707362776927720921299603?
41
- sage: M = Manifold("m015")
42
- sage: M.complex_volume(verified_modulo_2_torsion=True)
43
- 2.8281220883? + 1.9106738240?*I
44
-
45
- (Note that when using verified computation, the Chern-Simons invariant is only computed
46
- modulo pi^2/2 even though it is defined modulo pi^2.)
47
-
48
- * Give the :doc:`canonical retriangulation <verify_canon>` (a close
49
- relative to the canonical cell decomposition) of a cusped hyperbolic
50
- manifold using intervals or exact arithmetic if necessary with
51
- :py:meth:`~snappy.Manifold.canonical_retriangulation`::
52
-
53
- sage: M = Manifold("m412")
54
- sage: K = M.canonical_retriangulation(verified = True)
55
- sage: len(K.isomorphisms_to(K)) # Certified size of isometry group
56
- 8
57
-
58
- **Remark:** For the case of non-tetrahedral canonical cell, exact values
59
- are used which are found
60
- using the `LLL-algorithm
61
- <http://en.wikipedia.org/wiki/Lenstra%E2%80%93Lenstra%E2%80%93Lov%C3%A1sz_lattice_basis_reduction_algorithm>`_
62
- and then verified using exact computations. These computations can be slow. A massive speed-up was achieved by
63
- recent improvements so that the computation of the isometry signature of any manifold in ``OrientableCuspedCensus``
64
- takes at most a couple of seconds, typically, far less. Manifolds with more simplices might require setting
65
- a higher value for
66
- :py:attr:`exact_bits_prec_and_degrees`.
67
-
68
- * The :doc:`isometry signature <verify_canon>` which is a complete invariant of the isometry type
69
- of a cusped hyperbolic manifold (i.e., two manifolds are isometric if and only
70
- if they have the same isometry signature)::
71
-
72
- sage: M = Manifold("m412")
73
- sage: M.isometry_signature(verified = True)
74
- 'mvvLALQQQhfghjjlilkjklaaaaaffffffff'
75
-
76
- The isometry signature can be strengthened to include the peripheral curves
77
- such that it is a complete invariant of a hyperbolic link::
78
-
79
- sage: M = Manifold("L5a1")
80
- sage: M.isometry_signature(of_link = True, verified = True)
81
- 'eLPkbdcddhgggb_baCbbaCb'
82
-
83
- See :py:meth:`~snappy.Manifold.isometry_signature` for details.
84
-
85
- **Remark:** The isometry signature is based on the canonical
86
- retriangulation so the same warning applies.
87
-
88
- * The maximal cusp area matrix which characterizes the configuration
89
- space of disjoint cusp neighborhoods with
90
- :py:meth:`~snappy.Manifold.cusp_area_matrix`::
91
-
92
- sage: M=Manifold("m203")
93
- sage: M.cusp_area_matrix(method='maximal', verified=True)
94
- [ 27.000000? 9.0000000000?]
95
- [9.0000000000? 27.0000000?]
96
-
97
- In this example, the cusp neighborhood about cusp 0 or 1 is only
98
- embedded if and only if its area is less than sqrt(27). The cusp
99
- neighborhood about cusp 0 is only disjoint from the one about cusp 1
100
- if and only if the product of their areas is less than 9.
101
-
102
- * Compute areas for disjoint cusp neighborhoods with
103
- :py:meth:`~snappy.Manifold.cusp_areas`::
104
-
105
- sage: M=Manifold("m203")
106
- sage: M.cusp_areas(policy = 'unbiased', method='maximal', verified = True)
107
- [3.00000000000?, 3.00000000000?]
108
-
109
- With the above parameters, the result is intrinsic to the hyperbolic
110
- manifold with labeled cusped.
111
-
112
- * Find all slopes of length less or equal to 6 when measured on the boundary
113
- of disjoint cusp neighborhoods::
114
-
115
- sage: M=Manifold("m203")
116
- sage: M.short_slopes(policy = 'unbiased', method='maximal', verified = True)
117
- [[(1, 0), ..., (1, 2)], [(1, 0), ..., (1, 2)]]
118
-
119
- First block has all short slopes for first cusp, ..., see
120
- :py:meth:`~snappy.Manifold.short_slopes` for details.
121
-
122
- By `Agol's <http://arxiv.org/abs/math/9906183>`_ and `Lackenby's
123
- <http://arxiv.org/abs/math/9808120>`_ 6-Theorem any Dehn-filling
124
- resulting in a non-hyperbolic manifold must contain one of the above
125
- slopes. Thus, :py:meth:`~snappy.Manifold.short_slopes` can be used
126
- to implement the techniques to find exceptional Dehn surgeries
127
- (`arXiv:1109.0903 <https://arxiv.org/abs/1109.0903>`_ and
128
- `arXiv:1310.3472 <https://arxiv.org/abs/1310.3472>`_).
129
-
130
- This is all based on a reimplementation of `HIKMOT
131
- <http://www.oishi.info.waseda.ac.jp/~takayasu/hikmot/>`_ which
132
- pioneered the use of interval methods for hyperbolic manifolds (also see
133
- `Zgliczynski's notes <http://ww2.ii.uj.edu.pl/~zgliczyn/cap07/krawczyk.pdf>`_). It
134
- can be used in a way very similar to HIKMOT, but uses Sage's complex
135
- interval types for certification. It furthermore makes use of code by
136
- `Dunfield, Hoffman, Licata <http://arxiv.org/abs/1407.7827/>`_. The code to
137
- compute the isomorphism signature was ported over from
138
- `Regina <https://regina-normal.github.io/>`_.
139
-
140
- This verification code was contributed by Matthias Goerner.
141
-
142
-
143
- Verified computation topics
144
- ---------------------------
145
-
146
- .. toctree::
147
- :maxdepth: 1
148
-
149
- verify_canon
150
- verify_internals
1
+ Verified computations
2
+ ========================================
3
+
4
+ .. _verify-primer:
5
+
6
+ Introduction
7
+ ------------
8
+
9
+ Several SnapPy methods use numerical computations with floating point
10
+ approximations and can potentially result in incorrect results. This even
11
+ applies to methods whose output is purely combinatorial such as
12
+ :meth:`~snappy.Manifold.canonical_retriangulation`.
13
+
14
+ Many of these SnapPy methods can be supplied with a :attr:`verified` flag to
15
+ ensure that the result is provably correct. Note that verified computations are
16
+ only available when using SnapPy inside `SageMath <http://sagemath.org>`_.
17
+ If the flag :attr:`verified=True` is specified, an incorrect result is
18
+ never returned. Instead the method clearly indicates a failure, usually through
19
+ an exception::
20
+
21
+ sage: M=Manifold("m004")
22
+ sage: M.drill_word('abc', verified=True, bits_prec = 40)
23
+ ...
24
+ InsufficientPrecisionError: When re-tracing the geodesic, the intersection with the next tetrahedron face was too close to the previous to tell them apart. Increasing the precision will probably avoid this problem.
25
+
26
+ Often, such a failure can be advoided by increasing the precision. In
27
+ particular, this applies if the exception is a (subclass of)
28
+ :class:`InsufficientPrecisionError`::
29
+
30
+ sage: M.drill_word('abc', verified=True, bits_prec = 60)
31
+ m004_drilled(0,0)(0,0)
32
+
33
+ Note that, :meth:`~snappy.Manifold.verify_hyperbolicity` is different though
34
+ and does not throw an exception. Instead, it returns a bool indicating success
35
+ as part of its output. This is for compatibility with
36
+ `HIKMOT <http://www.oishi.info.waseda.ac.jp/~takayasu/hikmot/>`_'s
37
+ ``verify_hyperbolicty``::
38
+
39
+ sage: M.verify_hyperbolicity(bits_prec=10)
40
+ (False, [])
41
+ sage: M.verify_hyperbolicity()
42
+ (True,
43
+ [0.50000000000000? + 0.86602540378444?*I,
44
+ 0.50000000000000? + 0.86602540378444?*I])
45
+
46
+ As illustrated above, the result consists of intervals
47
+ (of type SageMath's ``RealIntervalField`` or
48
+ ``ComplexIntervalField``) if the output of a computation is numerical
49
+ and :attr:`verified=True` is specified. These intervals contain the true
50
+ value.
51
+
52
+ Overview
53
+ --------
54
+
55
+ Some examples of verified computations are:
56
+
57
+ * Verify the hyperbolicity
58
+ of an orientable 3-manifold giving complex intervals for the
59
+ shapes corresponding to a hyperbolic structure or holonomy representation with
60
+ :meth:`~snappy.Manifold.verify_hyperbolicity`::
61
+
62
+ sage: M = Manifold("m015")
63
+ sage: M.verify_hyperbolicity()
64
+ (True,
65
+ [0.6623589786224? + 0.5622795120623?*I,
66
+ 0.6623589786224? + 0.5622795120623?*I,
67
+ 0.6623589786224? + 0.5622795120623?*I])
68
+ sage: M.verify_hyperbolicity(holonomy=True)[1].SL2C('a')
69
+ [-0.324717957? - 1.124559024?*I -0.704807293? + 0.398888830?*I]
70
+ [ 1.409614585? - 0.797777659?*I -1.000000000? + 0.?e-9*I]
71
+
72
+ * Intervals for the volume and complex volume of a hyperbolic orientable 3-manifold::
73
+
74
+ sage: M = Manifold("m003(-3,1)")
75
+ sage: M.volume(verified=True, bits_prec = 100)
76
+ 0.942707362776927720921299603?
77
+ sage: M = Manifold("m015")
78
+ sage: M.complex_volume(verified_modulo_2_torsion=True)
79
+ 2.8281220883? + 1.9106738240?*I
80
+
81
+ (Note that when using verified computation, the Chern-Simons invariant is only computed
82
+ modulo pi^2/2 even though it is defined modulo pi^2.)
83
+
84
+ * Give the (a close relative to the canonical cell decomposition) of a cusped
85
+ hyperbolic manifold using intervals or exact arithmetic if necessary with
86
+ :meth:`~snappy.Manifold.canonical_retriangulation`::
87
+
88
+ sage: M = Manifold("m412")
89
+ sage: K = M.canonical_retriangulation(verified = True)
90
+ sage: len(K.isomorphisms_to(K)) # Certified size of isometry group
91
+ 8
92
+
93
+ **Remark:** For the case of non-tetrahedral canonical cell, exact values
94
+ are used which are found
95
+ using the `LLL-algorithm
96
+ <http://en.wikipedia.org/wiki/Lenstra%E2%80%93Lenstra%E2%80%93Lov%C3%A1sz_lattice_basis_reduction_algorithm>`_
97
+ and then verified using exact computations. These computations can be slow. A massive speed-up was achieved by
98
+ recent improvements so that the computation of the isometry signature of any manifold in ``OrientableCuspedCensus``
99
+ takes at most a couple of seconds, typically, far less. Manifolds with more simplices might require setting
100
+ a higher value for
101
+ :attr:`exact_bits_prec_and_degrees`.
102
+
103
+ * The isometry signature which is a complete invariant of the isometry type
104
+ of a cusped hyperbolic manifold (i.e., two manifolds are isometric if and only
105
+ if they have the same isometry signature)::
106
+
107
+ sage: M = Manifold("m412")
108
+ sage: M.isometry_signature(verified = True)
109
+ 'mvvLALQQQhfghjjlilkjklaaaaaffffffff'
110
+
111
+ The isometry signature can be strengthened to include the peripheral curves
112
+ such that it is a complete invariant of a hyperbolic link::
113
+
114
+ sage: M = Manifold("L5a1")
115
+ sage: M.isometry_signature(of_link = True, verified = True)
116
+ 'eLPkbdcddhgggb_baCbbaCb'
117
+
118
+ See :meth:`~snappy.Manifold.isometry_signature` for details.
119
+
120
+ **Remark:** The isometry signature is based on the canonical
121
+ retriangulation so the same warning applies.
122
+
123
+ * The maximal cusp area matrix which characterizes the configuration
124
+ space of disjoint cusp neighborhoods with
125
+ :meth:`~snappy.Manifold.cusp_area_matrix`::
126
+
127
+ sage: M=Manifold("m203")
128
+ sage: M.cusp_area_matrix(method='maximal', verified=True)
129
+ [ 27.000000? 9.0000000000?]
130
+ [9.0000000000? 27.0000000?]
131
+
132
+ In this example, the cusp neighborhood about cusp 0 or 1 is only
133
+ embedded if and only if its area is less than sqrt(27). The cusp
134
+ neighborhood about cusp 0 is only disjoint from the one about cusp 1
135
+ if and only if the product of their areas is less than 9.
136
+
137
+ * Compute areas for disjoint cusp neighborhoods with
138
+ :meth:`~snappy.Manifold.cusp_areas`::
139
+
140
+ sage: M=Manifold("m203")
141
+ sage: M.cusp_areas(policy = 'unbiased', method='maximal', verified = True)
142
+ [3.00000000000?, 3.00000000000?]
143
+
144
+ With the above parameters, the result is intrinsic to the hyperbolic
145
+ manifold with labeled cusped.
146
+
147
+ * Find all slopes of length less or equal to 6 when measured on the boundary
148
+ of disjoint cusp neighborhoods::
149
+
150
+ sage: M=Manifold("m203")
151
+ sage: M.short_slopes(policy = 'unbiased', method='maximal', verified = True)
152
+ [[(1, 0), ..., (1, 2)], [(1, 0), ..., (1, 2)]]
153
+
154
+ First block has all short slopes for first cusp, ..., see
155
+ :meth:`~snappy.Manifold.short_slopes` for details.
156
+
157
+ By `Agol's <http://arxiv.org/abs/math/9906183>`_ and `Lackenby's
158
+ <http://arxiv.org/abs/math/9808120>`_ 6-Theorem any Dehn-filling
159
+ resulting in a non-hyperbolic manifold must contain one of the above
160
+ slopes. Thus, :meth:`~snappy.Manifold.short_slopes` can be used
161
+ to implement the techniques to find exceptional Dehn surgeries
162
+ (`arXiv:1109.0903 <https://arxiv.org/abs/1109.0903>`_ and
163
+ `arXiv:1310.3472 <https://arxiv.org/abs/1310.3472>`_).
164
+
165
+ * An example of finding all geodesics up to length 1::
166
+
167
+ sage: from sage.all import RIF
168
+ sage: L = RIF(1)
169
+ sage: M = Manifold("m003")
170
+ sage: spec = M.length_spectrum_alt_gen(verified=True)
171
+ sage: n = 0
172
+ sage: for g in spec:
173
+ ... if g.length.real() > L:
174
+ ... break # Done! All subsequent geodesics will be longer.
175
+ ... if g.length.real() < L:
176
+ ... n += 1
177
+ ... continue
178
+ ... raise Exception("Interval too large. Increase precision.")
179
+ sage: n
180
+ 4
181
+
182
+ Additionally, we can compute complex intervals for the shapes that are
183
+ guaranteed to contain a true solution to the rectangular gluing equations
184
+ that is not necessarily a geometric solution (specify :attr:`bits_prec`
185
+ or :attr:`dec_prec` for higher precision intervals.)::
186
+
187
+ sage: M = Manifold("m015(3,1)")
188
+ sage: M.tetrahedra_shapes('rect', intervals=True)
189
+ [0.625222762246? + 3.177940133813?*I,
190
+ -0.0075523593782? + 0.5131157955971?*I,
191
+ 0.6515818912107? - 0.1955023488930?*I]
192
+
193
+ This is all based on a reimplementation of `HIKMOT
194
+ <http://www.oishi.info.waseda.ac.jp/~takayasu/hikmot/>`_ which
195
+ pioneered the use of interval methods for hyperbolic manifolds (also see
196
+ `Zgliczynski's notes <http://ww2.ii.uj.edu.pl/~zgliczyn/cap07/krawczyk.pdf>`_). It
197
+ can be used in a way very similar to HIKMOT, but uses Sage's complex
198
+ interval types for certification. It furthermore makes use of code by
199
+ `Dunfield, Hoffman, Licata <http://arxiv.org/abs/1407.7827/>`_.
200
+
201
+ This verification code was contributed by Matthias Goerner.
202
+
203
+
204
+ Verified computation topics
205
+ ---------------------------
206
+
207
+ .. toctree::
208
+ :maxdepth: 1
209
+
210
+ verify_internals
@@ -1,90 +1,79 @@
1
- Internals of verified computations
2
- ==================================
3
-
4
-
5
-
6
- Naming
7
- ------
8
-
9
- The names of methods containing ``check`` will raise an exception if
10
- the desired property cannot be certified. There are different types of
11
- Exceptions to indicate how the certification failed. This type can be
12
- used by other methods to perform some action such as changing the
13
- triangulation or increasing precision or to give up.
14
-
15
- The user-facing methods have names starting with ``verify`` or
16
- ``verified`` and will fail more gracefully returning ``False`` or
17
- ``None`` in such a case.
18
-
19
-
20
-
21
- Generating certified shape intervals
22
- ------------------------------------
23
-
24
- The recommended way to obtain certified intervals for the shapes is via
25
- ``manifold.tetrahedra_shapes(intervals=True)`` as :doc:`described
26
- earlier <verify>`. Here we document the ``KrawczykShapesEngine`` and
27
- ``IntervalNewtonShapesEngine`` which is implemented internally to
28
- generate the intervals. It is of interest for those users who want to
29
- understand the underlying interval math and experiment with the Newton
30
- interval method or the Krawczyk test. ``CertifiedShapesEngine`` is an
31
- alias of either ``KrawczykShapesEngine`` or
32
- ``IntervalNewtonShapesEngine`` to determine the default method used by
33
- verify.
34
-
35
- .. automodule:: snappy.verify
36
- .. autoclass:: CertifiedShapesEngine
37
- :members:
38
- :inherited-members:
39
-
40
- .. autoclass:: IntervalNewtonShapesEngine
41
- :members:
42
- :inherited-members:
43
-
44
- .. autoclass:: KrawczykShapesEngine
45
- :members:
46
- :inherited-members:
47
-
48
-
49
- Verification of hyperbolicity
50
- -----------------------------
51
-
52
- Methods containing ``check`` will raise an exception if the desired property
53
- cannot be certified. Methods containing ``verify`` or ``verified`` will fail
54
- more gracefully returning ``False`` or ``None`` in such a case.
55
-
56
- .. autofunction:: snappy.verify.verifyHyperbolicity.check_logarithmic_gluing_equations_and_positively_oriented_tets
57
-
58
- Cusp cross sections
59
- -------------------
60
-
61
- .. autoclass:: snappy.verify.RealCuspCrossSection
62
- :members:
63
- :inherited-members:
64
-
65
- .. autoclass:: snappy.verify.ComplexCuspCrossSection
66
- :members:
67
- :inherited-members:
68
-
69
- Verified canonical cell decompositions
70
- --------------------------------------
71
-
72
- .. autofunction:: snappy.verify.verifyCanonical.interval_checked_canonical_triangulation
73
- .. autofunction:: snappy.verify.verifyCanonical.exactly_checked_canonical_retriangulation
74
-
75
- Exact computations for cusp cross sections
76
- ------------------------------------------
77
-
78
- .. automodule:: snappy.verify.squareExtensions
79
-
80
- .. autofunction:: snappy.verify.squareExtensions.find_shapes_as_complex_sqrt_lin_combinations
81
- .. autoclass:: SqrtLinCombination
82
- :members:
83
- .. autoclass:: ComplexSqrtLinCombination
84
- :members:
85
-
86
- Exceptions
87
- ----------
88
-
89
- .. automodule:: snappy.verify.exceptions
90
- :members:
1
+ Internals of verified computations
2
+ ==================================
3
+
4
+
5
+
6
+ Naming
7
+ ------
8
+
9
+ The names of methods containing ``check`` will raise an exception if
10
+ the desired property cannot be certified. There are different types of
11
+ Exceptions to indicate how the certification failed. This type can be
12
+ used by other methods to perform some action such as changing the
13
+ triangulation or increasing precision or to give up.
14
+
15
+ The user-facing methods have names starting with ``verify`` or
16
+ ``verified`` and will fail more gracefully returning ``False`` or
17
+ ``None`` in such a case.
18
+
19
+
20
+
21
+ Generating certified shape intervals
22
+ ------------------------------------
23
+
24
+ The recommended way to obtain certified intervals for the shapes is via
25
+ ``manifold.tetrahedra_shapes(intervals=True)`` as :doc:`described
26
+ earlier <verify>`. Here we document the ``KrawczykShapesEngine`` and
27
+ ``IntervalNewtonShapesEngine`` which is implemented internally to
28
+ generate the intervals. It is of interest for those users who want to
29
+ understand the underlying interval math and experiment with the Newton
30
+ interval method or the Krawczyk test. ``CertifiedShapesEngine`` is an
31
+ alias of either ``KrawczykShapesEngine`` or
32
+ ``IntervalNewtonShapesEngine`` to determine the default method used by
33
+ verify.
34
+
35
+ .. automodule:: snappy.verify
36
+ .. autoclass:: CertifiedShapesEngine
37
+ :members:
38
+ :inherited-members:
39
+
40
+ .. autoclass:: IntervalNewtonShapesEngine
41
+ :members:
42
+ :inherited-members:
43
+
44
+ .. autoclass:: KrawczykShapesEngine
45
+ :members:
46
+ :inherited-members:
47
+
48
+
49
+ Verification of hyperbolicity
50
+ -----------------------------
51
+
52
+ Methods containing ``check`` will raise an exception if the desired property
53
+ cannot be certified. Methods containing ``verify`` or ``verified`` will fail
54
+ more gracefully returning ``False`` or ``None`` in such a case.
55
+
56
+ .. autofunction:: snappy.verify.hyperbolicity.check_logarithmic_gluing_equations_and_positively_oriented_tets
57
+
58
+ Verified canonical cell decompositions
59
+ --------------------------------------
60
+
61
+ .. autofunction:: snappy.verify.canonical.interval_checked_canonical_triangulation
62
+ .. autofunction:: snappy.verify.canonical.exactly_checked_canonical_retriangulation
63
+
64
+ Exact computations for cusp cross sections
65
+ ------------------------------------------
66
+
67
+ .. automodule:: snappy.verify.square_extensions
68
+
69
+ .. autofunction:: snappy.verify.square_extensions.find_shapes_as_complex_sqrt_lin_combinations
70
+ .. autoclass:: SqrtLinCombination
71
+ :members:
72
+ .. autoclass:: ComplexSqrtLinCombination
73
+ :members:
74
+
75
+ Exceptions
76
+ ----------
77
+
78
+ .. automodule:: snappy.verify.exceptions
79
+ :members: