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
@@ -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: