snappy 3.1.1__cp311-cp311-macosx_11_0_arm64.whl → 3.2__cp311-cp311-macosx_11_0_arm64.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (464) hide show
  1. snappy/CyOpenGL.cpython-311-darwin.so +0 -0
  2. snappy/SnapPy.cpython-311-darwin.so +0 -0
  3. snappy/SnapPyHP.cpython-311-darwin.so +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/development.rst.txt +66 -46
  25. snappy/doc/_sources/index.rst.txt +72 -5
  26. snappy/doc/_sources/installing.rst.txt +145 -162
  27. snappy/doc/_sources/news.rst.txt +73 -1
  28. snappy/doc/_sources/ptolemy_examples1.rst.txt +8 -7
  29. snappy/doc/_sources/ptolemy_examples3.rst.txt +2 -2
  30. snappy/doc/_sources/triangulation.rst.txt +2 -2
  31. snappy/doc/_sources/verify.rst.txt +89 -29
  32. snappy/doc/_sources/verify_internals.rst.txt +5 -16
  33. snappy/doc/_static/basic.css +23 -1
  34. snappy/doc/_static/css/badge_only.css +1 -1
  35. snappy/doc/_static/css/theme.css +1 -1
  36. snappy/doc/_static/doctools.js +1 -1
  37. snappy/doc/_static/documentation_options.js +2 -3
  38. snappy/doc/_static/fonts/Lato/lato-bold.eot +0 -0
  39. snappy/doc/_static/fonts/Lato/lato-bold.ttf +0 -0
  40. snappy/doc/_static/fonts/Lato/lato-bold.woff +0 -0
  41. snappy/doc/_static/fonts/Lato/lato-bold.woff2 +0 -0
  42. snappy/doc/_static/fonts/Lato/lato-bolditalic.eot +0 -0
  43. snappy/doc/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
  44. snappy/doc/_static/fonts/Lato/lato-bolditalic.woff +0 -0
  45. snappy/doc/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
  46. snappy/doc/_static/fonts/Lato/lato-italic.eot +0 -0
  47. snappy/doc/_static/fonts/Lato/lato-italic.ttf +0 -0
  48. snappy/doc/_static/fonts/Lato/lato-italic.woff +0 -0
  49. snappy/doc/_static/fonts/Lato/lato-italic.woff2 +0 -0
  50. snappy/doc/_static/fonts/Lato/lato-regular.eot +0 -0
  51. snappy/doc/_static/fonts/Lato/lato-regular.ttf +0 -0
  52. snappy/doc/_static/fonts/Lato/lato-regular.woff +0 -0
  53. snappy/doc/_static/fonts/Lato/lato-regular.woff2 +0 -0
  54. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
  55. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
  56. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
  57. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
  58. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
  59. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
  60. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
  61. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
  62. snappy/doc/_static/js/versions.js +228 -0
  63. snappy/doc/_static/language_data.js +2 -2
  64. snappy/doc/_static/pygments.css +1 -0
  65. snappy/doc/_static/searchtools.js +125 -71
  66. snappy/doc/_static/sphinx_highlight.js +13 -3
  67. snappy/doc/additional_classes.html +291 -122
  68. snappy/doc/bugs.html +17 -20
  69. snappy/doc/censuses.html +34 -53
  70. snappy/doc/credits.html +18 -21
  71. snappy/doc/development.html +88 -68
  72. snappy/doc/genindex.html +66 -145
  73. snappy/doc/index.html +86 -31
  74. snappy/doc/installing.html +164 -182
  75. snappy/doc/manifold.html +1168 -556
  76. snappy/doc/manifoldhp.html +18 -21
  77. snappy/doc/news.html +91 -33
  78. snappy/doc/objects.inv +0 -0
  79. snappy/doc/other.html +20 -22
  80. snappy/doc/platonic_census.html +31 -34
  81. snappy/doc/plink.html +19 -22
  82. snappy/doc/ptolemy.html +20 -22
  83. snappy/doc/ptolemy_classes.html +102 -105
  84. snappy/doc/ptolemy_examples1.html +34 -36
  85. snappy/doc/ptolemy_examples2.html +28 -31
  86. snappy/doc/ptolemy_examples3.html +26 -29
  87. snappy/doc/ptolemy_examples4.html +20 -23
  88. snappy/doc/ptolemy_prelim.html +25 -28
  89. snappy/doc/py-modindex.html +16 -19
  90. snappy/doc/screenshots.html +22 -24
  91. snappy/doc/search.html +15 -18
  92. snappy/doc/searchindex.js +1 -1
  93. snappy/doc/snap.html +18 -21
  94. snappy/doc/snappy.html +18 -20
  95. snappy/doc/spherogram.html +84 -87
  96. snappy/doc/todo.html +17 -20
  97. snappy/doc/triangulation.html +324 -215
  98. snappy/doc/tutorial.html +17 -20
  99. snappy/doc/verify.html +100 -46
  100. snappy/doc/verify_internals.html +106 -563
  101. snappy/drilling/__init__.py +153 -235
  102. snappy/drilling/barycentric.py +103 -0
  103. snappy/drilling/constants.py +0 -2
  104. snappy/drilling/crush.py +56 -130
  105. snappy/drilling/cusps.py +12 -6
  106. snappy/drilling/debug.py +2 -1
  107. snappy/drilling/exceptions.py +7 -40
  108. snappy/drilling/moves.py +302 -243
  109. snappy/drilling/perturb.py +63 -37
  110. snappy/drilling/shorten.py +36 -0
  111. snappy/drilling/subdivide.py +0 -5
  112. snappy/drilling/test.py +23 -0
  113. snappy/drilling/test_cases.py +126 -0
  114. snappy/drilling/tracing.py +9 -37
  115. snappy/exceptions.py +18 -5
  116. snappy/exterior_to_link/barycentric_geometry.py +2 -4
  117. snappy/exterior_to_link/main.py +8 -7
  118. snappy/exterior_to_link/mcomplex_with_link.py +2 -2
  119. snappy/exterior_to_link/rational_linear_algebra.py +1 -1
  120. snappy/exterior_to_link/rational_linear_algebra_wrapped.py +1 -1
  121. snappy/exterior_to_link/test.py +21 -33
  122. snappy/geometric_structure/__init__.py +212 -0
  123. snappy/geometric_structure/cusp_neighborhood/__init__.py +3 -0
  124. snappy/geometric_structure/cusp_neighborhood/complex_cusp_cross_section.py +697 -0
  125. snappy/geometric_structure/cusp_neighborhood/cusp_cross_section_base.py +484 -0
  126. snappy/geometric_structure/cusp_neighborhood/exceptions.py +42 -0
  127. snappy/geometric_structure/cusp_neighborhood/real_cusp_cross_section.py +298 -0
  128. snappy/geometric_structure/cusp_neighborhood/tiles_for_cusp_neighborhood.py +159 -0
  129. snappy/geometric_structure/cusp_neighborhood/vertices.py +32 -0
  130. snappy/geometric_structure/geodesic/__init__.py +0 -0
  131. snappy/geometric_structure/geodesic/add_core_curves.py +152 -0
  132. snappy/geometric_structure/geodesic/avoid_core_curves.py +369 -0
  133. snappy/geometric_structure/geodesic/canonical_keys.py +52 -0
  134. snappy/geometric_structure/geodesic/check_away_from_core_curve.py +60 -0
  135. snappy/geometric_structure/geodesic/constants.py +6 -0
  136. snappy/geometric_structure/geodesic/exceptions.py +22 -0
  137. snappy/{drilling → geometric_structure/geodesic}/fixed_points.py +34 -9
  138. snappy/{drilling/geodesic_info.py → geometric_structure/geodesic/geodesic_start_point_info.py} +139 -180
  139. snappy/geometric_structure/geodesic/graph_trace_helper.py +67 -0
  140. snappy/geometric_structure/geodesic/line.py +30 -0
  141. snappy/geometric_structure/geodesic/multiplicity.py +127 -0
  142. snappy/geometric_structure/geodesic/tiles_for_geodesic.py +101 -0
  143. snappy/geometric_structure/test.py +22 -0
  144. snappy/gui.py +23 -13
  145. snappy/horoviewer.py +7 -7
  146. snappy/hyperboloid/__init__.py +96 -31
  147. snappy/hyperboloid/distances.py +245 -0
  148. snappy/hyperboloid/horoball.py +19 -0
  149. snappy/hyperboloid/line.py +35 -0
  150. snappy/hyperboloid/point.py +9 -0
  151. snappy/hyperboloid/triangle.py +29 -0
  152. snappy/isometry_signature.py +382 -0
  153. snappy/len_spec/__init__.py +596 -0
  154. snappy/len_spec/geodesic_info.py +110 -0
  155. snappy/len_spec/geodesic_key_info_dict.py +117 -0
  156. snappy/len_spec/geodesic_piece.py +143 -0
  157. snappy/len_spec/geometric_structure.py +182 -0
  158. snappy/len_spec/geometry.py +80 -0
  159. snappy/len_spec/length_spectrum_geodesic_info.py +170 -0
  160. snappy/len_spec/spine.py +206 -0
  161. snappy/len_spec/test.py +24 -0
  162. snappy/len_spec/test_cases.py +69 -0
  163. snappy/len_spec/tile.py +275 -0
  164. snappy/len_spec/word.py +86 -0
  165. snappy/math_basics.py +39 -13
  166. snappy/matrix.py +52 -9
  167. snappy/number.py +12 -6
  168. snappy/numeric_output_checker.py +2 -3
  169. snappy/pari.py +8 -4
  170. snappy/phone_home.py +2 -1
  171. snappy/polyviewer.py +8 -8
  172. snappy/ptolemy/__init__.py +1 -1
  173. snappy/ptolemy/component.py +2 -2
  174. snappy/ptolemy/coordinates.py +25 -25
  175. snappy/ptolemy/findLoops.py +9 -9
  176. snappy/ptolemy/manifoldMethods.py +27 -29
  177. snappy/ptolemy/polynomial.py +50 -57
  178. snappy/ptolemy/processFileBase.py +60 -0
  179. snappy/ptolemy/ptolemyVariety.py +109 -41
  180. snappy/ptolemy/reginaWrapper.py +4 -4
  181. snappy/ptolemy/rur.py +1 -1
  182. snappy/ptolemy/solutionsToPrimeIdealGroebnerBasis.py +9 -9
  183. snappy/ptolemy/test.py +99 -54
  184. snappy/ptolemy/utilities.py +1 -1
  185. snappy/raytracing/__init__.py +64 -0
  186. snappy/raytracing/additional_horospheres.py +64 -0
  187. snappy/raytracing/additional_len_spec_choices.py +63 -0
  188. snappy/raytracing/cohomology_fractal.py +0 -3
  189. snappy/raytracing/eyeball.py +123 -0
  190. snappy/raytracing/finite_raytracing_data.py +17 -17
  191. snappy/raytracing/finite_viewer.py +15 -15
  192. snappy/raytracing/geodesic_tube_info.py +93 -63
  193. snappy/raytracing/geodesics.py +94 -64
  194. snappy/raytracing/geodesics_window.py +56 -34
  195. snappy/raytracing/gui_utilities.py +21 -6
  196. snappy/raytracing/hyperboloid_navigation.py +29 -4
  197. snappy/raytracing/hyperboloid_utilities.py +73 -73
  198. snappy/raytracing/ideal_raytracing_data.py +121 -91
  199. snappy/raytracing/inside_viewer.py +199 -66
  200. snappy/raytracing/pack.py +22 -0
  201. snappy/raytracing/raytracing_data.py +37 -25
  202. snappy/raytracing/raytracing_view.py +70 -65
  203. snappy/raytracing/shaders/Eye.png +0 -0
  204. snappy/raytracing/shaders/NonGeometric.png +0 -0
  205. snappy/raytracing/shaders/__init__.py +39 -3
  206. snappy/raytracing/shaders/fragment.glsl +451 -133
  207. snappy/raytracing/test.py +29 -0
  208. snappy/raytracing/tooltip.py +146 -0
  209. snappy/raytracing/upper_halfspace_utilities.py +42 -9
  210. snappy/sage_helper.py +67 -134
  211. snappy/settings.py +90 -77
  212. snappy/shell.py +2 -0
  213. snappy/snap/character_varieties.py +2 -2
  214. snappy/snap/find_field.py +4 -3
  215. snappy/snap/fundamental_polyhedron.py +2 -2
  216. snappy/snap/kernel_structures.py +5 -1
  217. snappy/snap/nsagetools.py +9 -8
  218. snappy/snap/peripheral/dual_cellulation.py +4 -3
  219. snappy/snap/peripheral/peripheral.py +2 -2
  220. snappy/snap/peripheral/surface.py +5 -5
  221. snappy/snap/peripheral/test.py +1 -1
  222. snappy/snap/polished_reps.py +8 -8
  223. snappy/snap/slice_obs_HKL.py +16 -14
  224. snappy/snap/t3mlite/arrow.py +3 -3
  225. snappy/snap/t3mlite/edge.py +3 -3
  226. snappy/snap/t3mlite/homology.py +2 -2
  227. snappy/snap/t3mlite/mcomplex.py +3 -3
  228. snappy/snap/t3mlite/simplex.py +12 -0
  229. snappy/snap/t3mlite/spun.py +18 -17
  230. snappy/snap/t3mlite/test_vs_regina.py +4 -4
  231. snappy/snap/test.py +37 -53
  232. snappy/snap/utilities.py +4 -5
  233. snappy/test.py +121 -138
  234. snappy/test_cases.py +263 -0
  235. snappy/testing.py +131 -0
  236. snappy/tiling/__init__.py +2 -0
  237. snappy/tiling/canonical_key_dict.py +59 -0
  238. snappy/tiling/dict_based_set.py +79 -0
  239. snappy/tiling/floor.py +49 -0
  240. snappy/tiling/hyperboloid_dict.py +54 -0
  241. snappy/tiling/iter_utils.py +78 -0
  242. snappy/tiling/lifted_tetrahedron.py +22 -0
  243. snappy/tiling/lifted_tetrahedron_set.py +54 -0
  244. snappy/tiling/real_hash_dict.py +164 -0
  245. snappy/tiling/test.py +23 -0
  246. snappy/tiling/tile.py +215 -0
  247. snappy/tiling/triangle.py +33 -0
  248. snappy/tkterminal.py +113 -84
  249. snappy/twister/main.py +1 -7
  250. snappy/twister/twister_core.cpython-311-darwin.so +0 -0
  251. snappy/upper_halfspace/__init__.py +78 -17
  252. snappy/verify/__init__.py +3 -7
  253. snappy/verify/{verifyCanonical.py → canonical.py} +78 -70
  254. snappy/verify/complex_volume/adjust_torsion.py +1 -2
  255. snappy/verify/complex_volume/closed.py +13 -13
  256. snappy/verify/complex_volume/cusped.py +6 -6
  257. snappy/verify/complex_volume/extended_bloch.py +5 -8
  258. snappy/verify/{cuspTranslations.py → cusp_translations.py} +1 -1
  259. snappy/verify/edge_equations.py +80 -0
  260. snappy/verify/exceptions.py +0 -55
  261. snappy/verify/{verifyHyperbolicity.py → hyperbolicity.py} +3 -3
  262. snappy/verify/interval_newton_shapes_engine.py +7 -5
  263. snappy/verify/interval_tree.py +5 -5
  264. snappy/verify/krawczyk_shapes_engine.py +17 -18
  265. snappy/verify/maximal_cusp_area_matrix/__init__.py +7 -74
  266. snappy/verify/maximal_cusp_area_matrix/cusp_tiling_engine.py +3 -4
  267. snappy/verify/maximal_cusp_area_matrix/cusp_translate_engine.py +1 -1
  268. snappy/verify/{realAlgebra.py → real_algebra.py} +1 -1
  269. snappy/verify/shapes.py +5 -3
  270. snappy/verify/short_slopes.py +39 -41
  271. snappy/verify/{squareExtensions.py → square_extensions.py} +14 -11
  272. snappy/verify/test.py +57 -60
  273. snappy/verify/upper_halfspace/extended_matrix.py +1 -1
  274. snappy/verify/upper_halfspace/finite_point.py +3 -4
  275. snappy/verify/upper_halfspace/ideal_point.py +9 -9
  276. snappy/verify/volume.py +2 -2
  277. snappy/version.py +2 -2
  278. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/METADATA +26 -11
  279. snappy-3.2.dist-info/RECORD +503 -0
  280. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/WHEEL +1 -1
  281. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/top_level.txt +6 -1
  282. snappy/__pycache__/__init__.cpython-311.pyc +0 -0
  283. snappy/__pycache__/browser.cpython-311.pyc +0 -0
  284. snappy/__pycache__/cache.cpython-311.pyc +0 -0
  285. snappy/__pycache__/database.cpython-311.pyc +0 -0
  286. snappy/__pycache__/db_utilities.cpython-311.pyc +0 -0
  287. snappy/__pycache__/decorated_isosig.cpython-311.pyc +0 -0
  288. snappy/__pycache__/exceptions.cpython-311.pyc +0 -0
  289. snappy/__pycache__/export_stl.cpython-311.pyc +0 -0
  290. snappy/__pycache__/filedialog.cpython-311.pyc +0 -0
  291. snappy/__pycache__/gui.cpython-311.pyc +0 -0
  292. snappy/__pycache__/horoviewer.cpython-311.pyc +0 -0
  293. snappy/__pycache__/infowindow.cpython-311.pyc +0 -0
  294. snappy/__pycache__/math_basics.cpython-311.pyc +0 -0
  295. snappy/__pycache__/matrix.cpython-311.pyc +0 -0
  296. snappy/__pycache__/number.cpython-311.pyc +0 -0
  297. snappy/__pycache__/numeric_output_checker.cpython-311.pyc +0 -0
  298. snappy/__pycache__/pari.cpython-311.pyc +0 -0
  299. snappy/__pycache__/polyviewer.cpython-311.pyc +0 -0
  300. snappy/__pycache__/sage_helper.cpython-311.pyc +0 -0
  301. snappy/__pycache__/version.cpython-311.pyc +0 -0
  302. snappy/doc/_sources/verify_canon.rst.txt +0 -90
  303. snappy/doc/_static/js/html5shiv-printshiv.min.js +0 -4
  304. snappy/doc/_static/js/html5shiv.min.js +0 -4
  305. snappy/doc/verify_canon.html +0 -304
  306. snappy/drilling/__pycache__/__init__.cpython-311.pyc +0 -0
  307. snappy/drilling/__pycache__/constants.cpython-311.pyc +0 -0
  308. snappy/drilling/__pycache__/crush.cpython-311.pyc +0 -0
  309. snappy/drilling/__pycache__/cusps.cpython-311.pyc +0 -0
  310. snappy/drilling/__pycache__/debug.cpython-311.pyc +0 -0
  311. snappy/drilling/__pycache__/epsilons.cpython-311.pyc +0 -0
  312. snappy/drilling/__pycache__/exceptions.cpython-311.pyc +0 -0
  313. snappy/drilling/__pycache__/fixed_points.cpython-311.pyc +0 -0
  314. snappy/drilling/__pycache__/geodesic_info.cpython-311.pyc +0 -0
  315. snappy/drilling/__pycache__/geodesic_tube.cpython-311.pyc +0 -0
  316. snappy/drilling/__pycache__/geometric_structure.cpython-311.pyc +0 -0
  317. snappy/drilling/__pycache__/line.cpython-311.pyc +0 -0
  318. snappy/drilling/__pycache__/moves.cpython-311.pyc +0 -0
  319. snappy/drilling/__pycache__/peripheral_curves.cpython-311.pyc +0 -0
  320. snappy/drilling/__pycache__/perturb.cpython-311.pyc +0 -0
  321. snappy/drilling/__pycache__/quotient_space.cpython-311.pyc +0 -0
  322. snappy/drilling/__pycache__/spatial_dict.cpython-311.pyc +0 -0
  323. snappy/drilling/__pycache__/subdivide.cpython-311.pyc +0 -0
  324. snappy/drilling/__pycache__/tracing.cpython-311.pyc +0 -0
  325. snappy/drilling/geodesic_tube.py +0 -441
  326. snappy/drilling/geometric_structure.py +0 -366
  327. snappy/drilling/line.py +0 -122
  328. snappy/drilling/quotient_space.py +0 -94
  329. snappy/drilling/spatial_dict.py +0 -128
  330. snappy/exterior_to_link/__pycache__/__init__.cpython-311.pyc +0 -0
  331. snappy/exterior_to_link/__pycache__/barycentric_geometry.cpython-311.pyc +0 -0
  332. snappy/exterior_to_link/__pycache__/exceptions.cpython-311.pyc +0 -0
  333. snappy/exterior_to_link/__pycache__/hyp_utils.cpython-311.pyc +0 -0
  334. snappy/exterior_to_link/__pycache__/link_projection.cpython-311.pyc +0 -0
  335. snappy/exterior_to_link/__pycache__/main.cpython-311.pyc +0 -0
  336. snappy/exterior_to_link/__pycache__/mcomplex_with_expansion.cpython-311.pyc +0 -0
  337. snappy/exterior_to_link/__pycache__/mcomplex_with_link.cpython-311.pyc +0 -0
  338. snappy/exterior_to_link/__pycache__/mcomplex_with_memory.cpython-311.pyc +0 -0
  339. snappy/exterior_to_link/__pycache__/pl_utils.cpython-311.pyc +0 -0
  340. snappy/exterior_to_link/__pycache__/put_in_S3.cpython-311.pyc +0 -0
  341. snappy/exterior_to_link/__pycache__/rational_linear_algebra.cpython-311.pyc +0 -0
  342. snappy/exterior_to_link/__pycache__/simplify_to_base_tri.cpython-311.pyc +0 -0
  343. snappy/exterior_to_link/__pycache__/stored_moves.cpython-311.pyc +0 -0
  344. snappy/hyperboloid/__pycache__/__init__.cpython-311.pyc +0 -0
  345. snappy/manifolds/__pycache__/__init__.cpython-311.pyc +0 -0
  346. snappy/ptolemy/__pycache__/__init__.cpython-311.pyc +0 -0
  347. snappy/ptolemy/__pycache__/component.cpython-311.pyc +0 -0
  348. snappy/ptolemy/__pycache__/coordinates.cpython-311.pyc +0 -0
  349. snappy/ptolemy/__pycache__/fieldExtensions.cpython-311.pyc +0 -0
  350. snappy/ptolemy/__pycache__/findLoops.cpython-311.pyc +0 -0
  351. snappy/ptolemy/__pycache__/homology.cpython-311.pyc +0 -0
  352. snappy/ptolemy/__pycache__/manifoldMethods.cpython-311.pyc +0 -0
  353. snappy/ptolemy/__pycache__/matrix.cpython-311.pyc +0 -0
  354. snappy/ptolemy/__pycache__/numericalSolutionsToGroebnerBasis.cpython-311.pyc +0 -0
  355. snappy/ptolemy/__pycache__/polynomial.cpython-311.pyc +0 -0
  356. snappy/ptolemy/__pycache__/processComponents.cpython-311.pyc +0 -0
  357. snappy/ptolemy/__pycache__/processFileBase.cpython-311.pyc +0 -0
  358. snappy/ptolemy/__pycache__/processFileDispatch.cpython-311.pyc +0 -0
  359. snappy/ptolemy/__pycache__/processMagmaFile.cpython-311.pyc +0 -0
  360. snappy/ptolemy/__pycache__/processRurFile.cpython-311.pyc +0 -0
  361. snappy/ptolemy/__pycache__/ptolemyGeneralizedObstructionClass.cpython-311.pyc +0 -0
  362. snappy/ptolemy/__pycache__/ptolemyObstructionClass.cpython-311.pyc +0 -0
  363. snappy/ptolemy/__pycache__/ptolemyVariety.cpython-311.pyc +0 -0
  364. snappy/ptolemy/__pycache__/ptolemyVarietyPrimeIdealGroebnerBasis.cpython-311.pyc +0 -0
  365. snappy/ptolemy/__pycache__/rur.cpython-311.pyc +0 -0
  366. snappy/ptolemy/__pycache__/solutionsToPrimeIdealGroebnerBasis.cpython-311.pyc +0 -0
  367. snappy/ptolemy/__pycache__/utilities.cpython-311.pyc +0 -0
  368. snappy/raytracing/__pycache__/__init__.cpython-311.pyc +0 -0
  369. snappy/raytracing/__pycache__/finite_raytracing_data.cpython-311.pyc +0 -0
  370. snappy/raytracing/__pycache__/gui_utilities.cpython-311.pyc +0 -0
  371. snappy/raytracing/__pycache__/hyperboloid_navigation.cpython-311.pyc +0 -0
  372. snappy/raytracing/__pycache__/hyperboloid_utilities.cpython-311.pyc +0 -0
  373. snappy/raytracing/__pycache__/ideal_raytracing_data.cpython-311.pyc +0 -0
  374. snappy/raytracing/__pycache__/inside_viewer.cpython-311.pyc +0 -0
  375. snappy/raytracing/__pycache__/raytracing_data.cpython-311.pyc +0 -0
  376. snappy/raytracing/__pycache__/raytracing_view.cpython-311.pyc +0 -0
  377. snappy/raytracing/__pycache__/upper_halfspace_utilities.cpython-311.pyc +0 -0
  378. snappy/raytracing/__pycache__/view_scale_controller.cpython-311.pyc +0 -0
  379. snappy/raytracing/zoom_slider/__pycache__/__init__.cpython-311.pyc +0 -0
  380. snappy/snap/__pycache__/__init__.cpython-311.pyc +0 -0
  381. snappy/snap/__pycache__/character_varieties.cpython-311.pyc +0 -0
  382. snappy/snap/__pycache__/fundamental_polyhedron.cpython-311.pyc +0 -0
  383. snappy/snap/__pycache__/interval_reps.cpython-311.pyc +0 -0
  384. snappy/snap/__pycache__/kernel_structures.cpython-311.pyc +0 -0
  385. snappy/snap/__pycache__/mcomplex_base.cpython-311.pyc +0 -0
  386. snappy/snap/__pycache__/nsagetools.cpython-311.pyc +0 -0
  387. snappy/snap/__pycache__/polished_reps.cpython-311.pyc +0 -0
  388. snappy/snap/__pycache__/shapes.cpython-311.pyc +0 -0
  389. snappy/snap/__pycache__/slice_obs_HKL.cpython-311.pyc +0 -0
  390. snappy/snap/__pycache__/utilities.cpython-311.pyc +0 -0
  391. snappy/snap/peripheral/__pycache__/__init__.cpython-311.pyc +0 -0
  392. snappy/snap/peripheral/__pycache__/dual_cellulation.cpython-311.pyc +0 -0
  393. snappy/snap/peripheral/__pycache__/link.cpython-311.pyc +0 -0
  394. snappy/snap/peripheral/__pycache__/peripheral.cpython-311.pyc +0 -0
  395. snappy/snap/peripheral/__pycache__/surface.cpython-311.pyc +0 -0
  396. snappy/snap/t3mlite/__pycache__/__init__.cpython-311.pyc +0 -0
  397. snappy/snap/t3mlite/__pycache__/arrow.cpython-311.pyc +0 -0
  398. snappy/snap/t3mlite/__pycache__/corner.cpython-311.pyc +0 -0
  399. snappy/snap/t3mlite/__pycache__/edge.cpython-311.pyc +0 -0
  400. snappy/snap/t3mlite/__pycache__/face.cpython-311.pyc +0 -0
  401. snappy/snap/t3mlite/__pycache__/files.cpython-311.pyc +0 -0
  402. snappy/snap/t3mlite/__pycache__/homology.cpython-311.pyc +0 -0
  403. snappy/snap/t3mlite/__pycache__/linalg.cpython-311.pyc +0 -0
  404. snappy/snap/t3mlite/__pycache__/mcomplex.cpython-311.pyc +0 -0
  405. snappy/snap/t3mlite/__pycache__/perm4.cpython-311.pyc +0 -0
  406. snappy/snap/t3mlite/__pycache__/simplex.cpython-311.pyc +0 -0
  407. snappy/snap/t3mlite/__pycache__/spun.cpython-311.pyc +0 -0
  408. snappy/snap/t3mlite/__pycache__/surface.cpython-311.pyc +0 -0
  409. snappy/snap/t3mlite/__pycache__/tetrahedron.cpython-311.pyc +0 -0
  410. snappy/snap/t3mlite/__pycache__/vertex.cpython-311.pyc +0 -0
  411. snappy/togl/__init__.py +0 -3
  412. snappy/togl/darwin-tk8.6/Togl2.1/LICENSE +0 -28
  413. snappy/togl/darwin-tk8.6/Togl2.1/libTogl2.1.dylib +0 -0
  414. snappy/togl/darwin-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
  415. snappy/togl/darwin-tk8.7/Togl2.1/LICENSE +0 -28
  416. snappy/togl/darwin-tk8.7/Togl2.1/libTogl2.1.dylib +0 -0
  417. snappy/togl/darwin-tk8.7/Togl2.1/pkgIndex.tcl +0 -5
  418. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
  419. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/libTogl2.1.so +0 -0
  420. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
  421. snappy/togl/win32VC-tk8.6/Togl2.1/LICENSE +0 -28
  422. snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.dll +0 -0
  423. snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.lib +0 -0
  424. snappy/togl/win32VC-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
  425. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
  426. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.dll +0 -0
  427. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.lib +0 -0
  428. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
  429. snappy/twister/__pycache__/__init__.cpython-311.pyc +0 -0
  430. snappy/twister/__pycache__/main.cpython-311.pyc +0 -0
  431. snappy/upper_halfspace/__pycache__/__init__.cpython-311.pyc +0 -0
  432. snappy/upper_halfspace/__pycache__/ideal_point.cpython-311.pyc +0 -0
  433. snappy/verify/__pycache__/__init__.cpython-311.pyc +0 -0
  434. snappy/verify/__pycache__/cuspCrossSection.cpython-311.pyc +0 -0
  435. snappy/verify/__pycache__/cuspTranslations.cpython-311.pyc +0 -0
  436. snappy/verify/__pycache__/cusp_areas.cpython-311.pyc +0 -0
  437. snappy/verify/__pycache__/cusp_shapes.cpython-311.pyc +0 -0
  438. snappy/verify/__pycache__/exceptions.cpython-311.pyc +0 -0
  439. snappy/verify/__pycache__/interval_newton_shapes_engine.cpython-311.pyc +0 -0
  440. snappy/verify/__pycache__/interval_tree.cpython-311.pyc +0 -0
  441. snappy/verify/__pycache__/krawczyk_shapes_engine.cpython-311.pyc +0 -0
  442. snappy/verify/__pycache__/realAlgebra.cpython-311.pyc +0 -0
  443. snappy/verify/__pycache__/shapes.cpython-311.pyc +0 -0
  444. snappy/verify/__pycache__/short_slopes.cpython-311.pyc +0 -0
  445. snappy/verify/__pycache__/squareExtensions.cpython-311.pyc +0 -0
  446. snappy/verify/__pycache__/verifyCanonical.cpython-311.pyc +0 -0
  447. snappy/verify/__pycache__/verifyHyperbolicity.cpython-311.pyc +0 -0
  448. snappy/verify/__pycache__/volume.cpython-311.pyc +0 -0
  449. snappy/verify/complex_volume/__pycache__/__init__.cpython-311.pyc +0 -0
  450. snappy/verify/complex_volume/__pycache__/adjust_torsion.cpython-311.pyc +0 -0
  451. snappy/verify/complex_volume/__pycache__/closed.cpython-311.pyc +0 -0
  452. snappy/verify/complex_volume/__pycache__/compute_ptolemys.cpython-311.pyc +0 -0
  453. snappy/verify/complex_volume/__pycache__/cusped.cpython-311.pyc +0 -0
  454. snappy/verify/complex_volume/__pycache__/extended_bloch.cpython-311.pyc +0 -0
  455. snappy/verify/cuspCrossSection.py +0 -1422
  456. snappy/verify/maximal_cusp_area_matrix/__pycache__/__init__.cpython-311.pyc +0 -0
  457. snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_tiling_engine.cpython-311.pyc +0 -0
  458. snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_translate_engine.cpython-311.pyc +0 -0
  459. snappy/verify/upper_halfspace/__pycache__/__init__.cpython-311.pyc +0 -0
  460. snappy/verify/upper_halfspace/__pycache__/extended_matrix.cpython-311.pyc +0 -0
  461. snappy/verify/upper_halfspace/__pycache__/finite_point.cpython-311.pyc +0 -0
  462. snappy/verify/upper_halfspace/__pycache__/ideal_point.cpython-311.pyc +0 -0
  463. snappy-3.1.1.dist-info/RECORD +0 -585
  464. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/entry_points.txt +0 -0
@@ -1,28 +1,28 @@
1
+
2
+
1
3
  <!DOCTYPE html>
2
- <html class="writer-html5" lang="en" >
4
+ <html class="writer-html5" lang="en" data-content_root="./">
3
5
  <head>
4
- <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
6
+ <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
5
7
 
6
8
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
- <title>Internals of verified computations &mdash; SnapPy 3.1.1 documentation</title>
8
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
9
- <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
10
- <link rel="stylesheet" href="_static/snappy_sphinx_rtd_theme.css" type="text/css" />
11
- <link rel="shortcut icon" href="_static/SnapPy.ico"/>
12
- <!--[if lt IE 9]>
13
- <script src="_static/js/html5shiv.min.js"></script>
14
- <![endif]-->
9
+ <title>Internals of verified computations &mdash; SnapPy 3.2 documentation</title>
10
+ <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
11
+ <link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=e59714d7" />
12
+ <link rel="stylesheet" type="text/css" href="_static/snappy_sphinx_rtd_theme.css?v=1b8ec2a8" />
13
+
15
14
 
16
- <script src="_static/jquery.js"></script>
17
- <script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
18
- <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
19
- <script src="_static/doctools.js"></script>
20
- <script src="_static/sphinx_highlight.js"></script>
15
+ <link rel="shortcut icon" href="_static/SnapPy.ico"/>
16
+ <script src="_static/jquery.js?v=5d32c60e"></script>
17
+ <script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
18
+ <script src="_static/documentation_options.js?v=828ea960"></script>
19
+ <script src="_static/doctools.js?v=9a2dae69"></script>
20
+ <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
21
21
  <script src="_static/js/theme.js"></script>
22
22
  <link rel="index" title="Index" href="genindex.html" />
23
23
  <link rel="search" title="Search" href="search.html" />
24
24
  <link rel="next" title="Other components" href="other.html" />
25
- <link rel="prev" title="Canonical retriangulation and isometry signature" href="verify_canon.html" />
25
+ <link rel="prev" title="Verified computations" href="verify.html" />
26
26
  </head>
27
27
 
28
28
  <body class="wy-body-for-nav">
@@ -37,9 +37,6 @@
37
37
  SnapPy
38
38
  <img src="_static/SnapPy-horizontal-128.png" class="logo" alt="Logo"/>
39
39
  </a>
40
- <div class="version">
41
- 3.1.1
42
- </div>
43
40
  <div role="search">
44
41
  <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
45
42
  <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
@@ -57,9 +54,9 @@
57
54
  <li class="toctree-l1"><a class="reference internal" href="spherogram.html">Links: planar diagrams and invariants</a></li>
58
55
  <li class="toctree-l1"><a class="reference internal" href="snap.html">Number theory of hyperbolic 3-manifolds</a></li>
59
56
  <li class="toctree-l1 current"><a class="reference internal" href="verify.html">Verified computations</a><ul class="current">
57
+ <li class="toctree-l2"><a class="reference internal" href="verify.html#introduction">Introduction</a></li>
60
58
  <li class="toctree-l2"><a class="reference internal" href="verify.html#overview">Overview</a></li>
61
59
  <li class="toctree-l2 current"><a class="reference internal" href="verify.html#verified-computation-topics">Verified computation topics</a><ul class="current">
62
- <li class="toctree-l3"><a class="reference internal" href="verify_canon.html">Canonical retriangulation and isometry signature</a></li>
63
60
  <li class="toctree-l3 current"><a class="current reference internal" href="#">Internals of verified computations</a><ul>
64
61
  <li class="toctree-l4"><a class="reference internal" href="#naming">Naming</a></li>
65
62
  <li class="toctree-l4"><a class="reference internal" href="#generating-certified-shape-intervals">Generating certified shape intervals</a><ul>
@@ -69,31 +66,22 @@
69
66
  </ul>
70
67
  </li>
71
68
  <li class="toctree-l4"><a class="reference internal" href="#verification-of-hyperbolicity">Verification of hyperbolicity</a><ul>
72
- <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.verifyHyperbolicity.check_logarithmic_gluing_equations_and_positively_oriented_tets"><code class="docutils literal notranslate"><span class="pre">check_logarithmic_gluing_equations_and_positively_oriented_tets()</span></code></a></li>
73
- </ul>
74
- </li>
75
- <li class="toctree-l4"><a class="reference internal" href="#cusp-cross-sections">Cusp cross sections</a><ul>
76
- <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.RealCuspCrossSection"><code class="docutils literal notranslate"><span class="pre">RealCuspCrossSection</span></code></a></li>
77
- <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.ComplexCuspCrossSection"><code class="docutils literal notranslate"><span class="pre">ComplexCuspCrossSection</span></code></a></li>
69
+ <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.hyperbolicity.check_logarithmic_gluing_equations_and_positively_oriented_tets"><code class="docutils literal notranslate"><span class="pre">check_logarithmic_gluing_equations_and_positively_oriented_tets()</span></code></a></li>
78
70
  </ul>
79
71
  </li>
80
72
  <li class="toctree-l4"><a class="reference internal" href="#verified-canonical-cell-decompositions">Verified canonical cell decompositions</a><ul>
81
- <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.verifyCanonical.interval_checked_canonical_triangulation"><code class="docutils literal notranslate"><span class="pre">interval_checked_canonical_triangulation()</span></code></a></li>
82
- <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.verifyCanonical.exactly_checked_canonical_retriangulation"><code class="docutils literal notranslate"><span class="pre">exactly_checked_canonical_retriangulation()</span></code></a></li>
73
+ <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.canonical.interval_checked_canonical_triangulation"><code class="docutils literal notranslate"><span class="pre">interval_checked_canonical_triangulation()</span></code></a></li>
74
+ <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.canonical.exactly_checked_canonical_retriangulation"><code class="docutils literal notranslate"><span class="pre">exactly_checked_canonical_retriangulation()</span></code></a></li>
83
75
  </ul>
84
76
  </li>
85
- <li class="toctree-l4"><a class="reference internal" href="#module-snappy.verify.squareExtensions">Exact computations for cusp cross sections</a><ul>
86
- <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.squareExtensions.find_shapes_as_complex_sqrt_lin_combinations"><code class="docutils literal notranslate"><span class="pre">find_shapes_as_complex_sqrt_lin_combinations()</span></code></a></li>
87
- <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.squareExtensions.SqrtLinCombination"><code class="docutils literal notranslate"><span class="pre">SqrtLinCombination</span></code></a></li>
88
- <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.squareExtensions.ComplexSqrtLinCombination"><code class="docutils literal notranslate"><span class="pre">ComplexSqrtLinCombination</span></code></a></li>
77
+ <li class="toctree-l4"><a class="reference internal" href="#module-snappy.verify.square_extensions">Exact computations for cusp cross sections</a><ul>
78
+ <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.square_extensions.find_shapes_as_complex_sqrt_lin_combinations"><code class="docutils literal notranslate"><span class="pre">find_shapes_as_complex_sqrt_lin_combinations()</span></code></a></li>
79
+ <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.square_extensions.SqrtLinCombination"><code class="docutils literal notranslate"><span class="pre">SqrtLinCombination</span></code></a></li>
80
+ <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.square_extensions.ComplexSqrtLinCombination"><code class="docutils literal notranslate"><span class="pre">ComplexSqrtLinCombination</span></code></a></li>
89
81
  </ul>
90
82
  </li>
91
83
  <li class="toctree-l4"><a class="reference internal" href="#module-snappy.verify.exceptions">Exceptions</a><ul>
92
- <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.exceptions.ConsistencyWithSnapPeaNumericalVerifyError"><code class="docutils literal notranslate"><span class="pre">ConsistencyWithSnapPeaNumericalVerifyError</span></code></a></li>
93
- <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.exceptions.ConsistencyWithSnapPeaType"><code class="docutils literal notranslate"><span class="pre">ConsistencyWithSnapPeaType</span></code></a></li>
94
84
  <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.exceptions.CuspConsistencyType"><code class="docutils literal notranslate"><span class="pre">CuspConsistencyType</span></code></a></li>
95
- <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.exceptions.CuspDevelopmentExactVerifyError"><code class="docutils literal notranslate"><span class="pre">CuspDevelopmentExactVerifyError</span></code></a></li>
96
- <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.exceptions.CuspDevelopmentType"><code class="docutils literal notranslate"><span class="pre">CuspDevelopmentType</span></code></a></li>
97
85
  <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.exceptions.CuspEquationExactVerifyError"><code class="docutils literal notranslate"><span class="pre">CuspEquationExactVerifyError</span></code></a></li>
98
86
  <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.exceptions.CuspEquationLogLiftNumericalVerifyError"><code class="docutils literal notranslate"><span class="pre">CuspEquationLogLiftNumericalVerifyError</span></code></a></li>
99
87
  <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.exceptions.CuspEquationType"><code class="docutils literal notranslate"><span class="pre">CuspEquationType</span></code></a></li>
@@ -154,9 +142,9 @@
154
142
  <div itemprop="articleBody">
155
143
 
156
144
  <section id="internals-of-verified-computations">
157
- <h1>Internals of verified computations<a class="headerlink" href="#internals-of-verified-computations" title="Permalink to this heading"></a></h1>
145
+ <h1>Internals of verified computations<a class="headerlink" href="#internals-of-verified-computations" title="Link to this heading"></a></h1>
158
146
  <section id="naming">
159
- <h2>Naming<a class="headerlink" href="#naming" title="Permalink to this heading"></a></h2>
147
+ <h2>Naming<a class="headerlink" href="#naming" title="Link to this heading"></a></h2>
160
148
  <p>The names of methods containing <code class="docutils literal notranslate"><span class="pre">check</span></code> will raise an exception if
161
149
  the desired property cannot be certified. There are different types of
162
150
  Exceptions to indicate how the certification failed. This type can be
@@ -167,7 +155,7 @@ triangulation or increasing precision or to give up.</p>
167
155
  <code class="docutils literal notranslate"><span class="pre">None</span></code> in such a case.</p>
168
156
  </section>
169
157
  <section id="generating-certified-shape-intervals">
170
- <h2>Generating certified shape intervals<a class="headerlink" href="#generating-certified-shape-intervals" title="Permalink to this heading"></a></h2>
158
+ <h2>Generating certified shape intervals<a class="headerlink" href="#generating-certified-shape-intervals" title="Link to this heading"></a></h2>
171
159
  <p>The recommended way to obtain certified intervals for the shapes is via
172
160
  <code class="docutils literal notranslate"><span class="pre">manifold.tetrahedra_shapes(intervals=True)</span></code> as <a class="reference internal" href="verify.html"><span class="doc">described
173
161
  earlier</span></a>. Here we document the <code class="docutils literal notranslate"><span class="pre">KrawczykShapesEngine</span></code> and
@@ -178,15 +166,15 @@ interval method or the Krawczyk test. <code class="docutils literal notranslate
178
166
  alias of either <code class="docutils literal notranslate"><span class="pre">KrawczykShapesEngine</span></code> or
179
167
  <code class="docutils literal notranslate"><span class="pre">IntervalNewtonShapesEngine</span></code> to determine the default method used by
180
168
  verify.</p>
181
- <span class="target" id="module-snappy.verify"></span><dl class="py attribute">
169
+ <dl class="py attribute" id="module-snappy.verify">
182
170
  <dt class="sig sig-object py" id="snappy.verify.CertifiedShapesEngine">
183
- <span class="sig-prename descclassname"><span class="pre">snappy.verify.</span></span><span class="sig-name descname"><span class="pre">CertifiedShapesEngine</span></span><a class="headerlink" href="#snappy.verify.CertifiedShapesEngine" title="Permalink to this definition"></a></dt>
171
+ <span class="sig-prename descclassname"><span class="pre">snappy.verify.</span></span><span class="sig-name descname"><span class="pre">CertifiedShapesEngine</span></span><a class="headerlink" href="#snappy.verify.CertifiedShapesEngine" title="Link to this definition"></a></dt>
184
172
  <dd><p>alias of <a class="reference internal" href="#snappy.verify.KrawczykShapesEngine" title="snappy.verify.krawczyk_shapes_engine.KrawczykShapesEngine"><code class="xref py py-class docutils literal notranslate"><span class="pre">KrawczykShapesEngine</span></code></a></p>
185
173
  </dd></dl>
186
174
 
187
175
  <dl class="py class">
188
176
  <dt class="sig sig-object py" id="snappy.verify.IntervalNewtonShapesEngine">
189
- <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.</span></span><span class="sig-name descname"><span class="pre">IntervalNewtonShapesEngine</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">M</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">initial_shapes</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bits_prec</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dec_prec</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.IntervalNewtonShapesEngine" title="Permalink to this definition"></a></dt>
177
+ <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.</span></span><span class="sig-name descname"><span class="pre">IntervalNewtonShapesEngine</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">M</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">initial_shapes</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bits_prec</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dec_prec</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.IntervalNewtonShapesEngine" title="Link to this definition"></a></dt>
190
178
  <dd><p>An engine that is initialized with an approximated candidate solution to
191
179
  the rectangular gluing equations and produces intervals certified to
192
180
  contain a true solution. After the engine is successfully run, the
@@ -245,7 +233,7 @@ sage: C.certified_shapes # doctest: +ELLIPSIS
245
233
  </div>
246
234
  <dl class="py method">
247
235
  <dt class="sig sig-object py" id="snappy.verify.IntervalNewtonShapesEngine.certified_newton_iteration">
248
- <em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">certified_newton_iteration</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">equations</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">shape_intervals</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">point_in_intervals</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">interval_value_at_point</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.IntervalNewtonShapesEngine.certified_newton_iteration" title="Permalink to this definition"></a></dt>
236
+ <em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">certified_newton_iteration</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">equations</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">shape_intervals</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">point_in_intervals</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">interval_value_at_point</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.IntervalNewtonShapesEngine.certified_newton_iteration" title="Link to this definition"></a></dt>
249
237
  <dd><p>Given shape intervals z, performs a Newton interval iteration N(z)
250
238
  as described in newton_iteration. Returns a pair (boolean, N(z)) where
251
239
  the boolean is True if N(z) is contained in z.</p>
@@ -261,7 +249,8 @@ solution, e.g., a point for which f is truly zero.</p>
261
249
  </pre></div>
262
250
  </div>
263
251
  <p>Intervals containing the true solution:</p>
264
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>sage: good_shapes = vector([
252
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>sage: from sage.all import vector
253
+ sage: good_shapes = vector([
265
254
  ... C.CIF(C.RIF(0.78055, 0.78056), C.RIF(0.91447, 0.91448)),
266
255
  ... C.CIF(C.RIF(0.78055, 0.78056), C.RIF(0.91447, 0.91448)),
267
256
  ... C.CIF(C.RIF(0.46002, 0.46003), C.RIF(0.63262, 0.63263))])
@@ -277,7 +266,8 @@ sage: shapes # doctest: +ELLIPSIS
277
266
  contained in both the given intervals (good_shapes) and the returned
278
267
  intervals (shapes) which are a refinement of the given intervals.</p>
279
268
  <p>Intervals not containing a true solution:</p>
280
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="n">bad_shapes</span> <span class="o">=</span> <span class="n">vector</span><span class="p">([</span>
269
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="kn">from</span> <span class="nn">sage.all</span> <span class="kn">import</span> <span class="n">vector</span>
270
+ <span class="n">sage</span><span class="p">:</span> <span class="n">bad_shapes</span> <span class="o">=</span> <span class="n">vector</span><span class="p">([</span>
281
271
  <span class="o">...</span> <span class="n">C</span><span class="o">.</span><span class="n">CIF</span><span class="p">(</span><span class="n">C</span><span class="o">.</span><span class="n">RIF</span><span class="p">(</span><span class="mf">0.78054</span><span class="p">,</span> <span class="mf">0.78055</span><span class="p">),</span> <span class="n">C</span><span class="o">.</span><span class="n">RIF</span><span class="p">(</span><span class="mf">0.91447</span><span class="p">,</span> <span class="mf">0.91448</span><span class="p">)),</span>
282
272
  <span class="o">...</span> <span class="n">C</span><span class="o">.</span><span class="n">CIF</span><span class="p">(</span><span class="n">C</span><span class="o">.</span><span class="n">RIF</span><span class="p">(</span><span class="mf">0.78055</span><span class="p">,</span> <span class="mf">0.78056</span><span class="p">),</span> <span class="n">C</span><span class="o">.</span><span class="n">RIF</span><span class="p">(</span><span class="mf">0.91447</span><span class="p">,</span> <span class="mf">0.91448</span><span class="p">)),</span>
283
273
  <span class="o">...</span> <span class="n">C</span><span class="o">.</span><span class="n">CIF</span><span class="p">(</span><span class="n">C</span><span class="o">.</span><span class="n">RIF</span><span class="p">(</span><span class="mf">0.46002</span><span class="p">,</span> <span class="mf">0.46003</span><span class="p">),</span> <span class="n">C</span><span class="o">.</span><span class="n">RIF</span><span class="p">(</span><span class="mf">0.63262</span><span class="p">,</span> <span class="mf">0.63263</span><span class="p">))])</span>
@@ -290,7 +280,7 @@ intervals (shapes) which are a refinement of the given intervals.</p>
290
280
 
291
281
  <dl class="py method">
292
282
  <dt class="sig sig-object py" id="snappy.verify.IntervalNewtonShapesEngine.expand_until_certified">
293
- <span class="sig-name descname"><span class="pre">expand_until_certified</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">verbose</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.IntervalNewtonShapesEngine.expand_until_certified" title="Permalink to this definition"></a></dt>
283
+ <span class="sig-name descname"><span class="pre">expand_until_certified</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">verbose</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.IntervalNewtonShapesEngine.expand_until_certified" title="Link to this definition"></a></dt>
294
284
  <dd><p>Try Newton interval iterations, expanding the shape intervals
295
285
  until we can certify they contain a true solution.
296
286
  If succeeded, return True and write certified shapes to
@@ -300,7 +290,7 @@ Set verbose = True for printing additional information.</p>
300
290
 
301
291
  <dl class="py method">
302
292
  <dt class="sig sig-object py" id="snappy.verify.IntervalNewtonShapesEngine.interval_vector_is_contained_in">
303
- <em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">interval_vector_is_contained_in</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">vecA</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">vecB</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.IntervalNewtonShapesEngine.interval_vector_is_contained_in" title="Permalink to this definition"></a></dt>
293
+ <em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">interval_vector_is_contained_in</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">vecA</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">vecB</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.IntervalNewtonShapesEngine.interval_vector_is_contained_in" title="Link to this definition"></a></dt>
304
294
  <dd><p>Given two vectors of intervals, return whether the first one
305
295
  is contained in the second one. Examples:</p>
306
296
  <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="n">RIF</span> <span class="o">=</span> <span class="n">RealIntervalField</span><span class="p">(</span><span class="mi">80</span><span class="p">)</span>
@@ -328,21 +318,21 @@ is contained in the second one. Examples:</p>
328
318
 
329
319
  <dl class="py method">
330
320
  <dt class="sig sig-object py" id="snappy.verify.IntervalNewtonShapesEngine.interval_vector_mid_points">
331
- <em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">interval_vector_mid_points</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">vec</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.IntervalNewtonShapesEngine.interval_vector_mid_points" title="Permalink to this definition"></a></dt>
321
+ <em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">interval_vector_mid_points</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">vec</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.IntervalNewtonShapesEngine.interval_vector_mid_points" title="Link to this definition"></a></dt>
332
322
  <dd><p>Given a vector of complex intervals, return the midpoints (as 0-length
333
323
  complex intervals) of them.</p>
334
324
  </dd></dl>
335
325
 
336
326
  <dl class="py method">
337
327
  <dt class="sig sig-object py" id="snappy.verify.IntervalNewtonShapesEngine.interval_vector_union">
338
- <em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">interval_vector_union</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">vecA</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">vecB</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.IntervalNewtonShapesEngine.interval_vector_union" title="Permalink to this definition"></a></dt>
328
+ <em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">interval_vector_union</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">vecA</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">vecB</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.IntervalNewtonShapesEngine.interval_vector_union" title="Link to this definition"></a></dt>
339
329
  <dd><p>Given two vectors of intervals, return the vector of their unions,
340
330
  i.e., the smallest interval containing both intervals.</p>
341
331
  </dd></dl>
342
332
 
343
333
  <dl class="py method">
344
334
  <dt class="sig sig-object py" id="snappy.verify.IntervalNewtonShapesEngine.log_gluing_LHS_derivatives">
345
- <em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">log_gluing_LHS_derivatives</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">equations</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">shapes</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.IntervalNewtonShapesEngine.log_gluing_LHS_derivatives" title="Permalink to this definition"></a></dt>
335
+ <em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">log_gluing_LHS_derivatives</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">equations</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">shapes</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.IntervalNewtonShapesEngine.log_gluing_LHS_derivatives" title="Link to this definition"></a></dt>
346
336
  <dd><p>Compute the Jacobian of the vector-valued function f
347
337
  described in the above log_gluing_LHSs:</p>
348
338
  <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>sage: from snappy import Manifold
@@ -365,7 +355,7 @@ sage: IntervalNewtonShapesEngine.log_gluing_LHS_derivatives(equations, shapes) #
365
355
 
366
356
  <dl class="py method">
367
357
  <dt class="sig sig-object py" id="snappy.verify.IntervalNewtonShapesEngine.log_gluing_LHSs">
368
- <em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">log_gluing_LHSs</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">equations</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">shapes</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.IntervalNewtonShapesEngine.log_gluing_LHSs" title="Permalink to this definition"></a></dt>
358
+ <em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">log_gluing_LHSs</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">equations</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">shapes</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.IntervalNewtonShapesEngine.log_gluing_LHSs" title="Link to this definition"></a></dt>
369
359
  <dd><p>Given the result of M.gluing_equations(‘rect’) or a
370
360
  subset of rows of it and shapes, return a vector of
371
361
  log(LHS) where</p>
@@ -411,7 +401,7 @@ False
411
401
 
412
402
  <dl class="py method">
413
403
  <dt class="sig sig-object py" id="snappy.verify.IntervalNewtonShapesEngine.newton_iteration">
414
- <em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">newton_iteration</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">equations</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">shape_intervals</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">point_in_intervals</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">interval_value_at_point</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.IntervalNewtonShapesEngine.newton_iteration" title="Permalink to this definition"></a></dt>
404
+ <em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">newton_iteration</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">equations</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">shape_intervals</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">point_in_intervals</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">interval_value_at_point</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.IntervalNewtonShapesEngine.newton_iteration" title="Link to this definition"></a></dt>
415
405
  <dd><p>Perform a Newton interval method of iteration for
416
406
  the function f described in log_gluing_LHSs.</p>
417
407
  <p>Let z denote the shape intervals.
@@ -472,7 +462,7 @@ sage: print(shape_intervals) # doctest: +ELLIPSIS
472
462
 
473
463
  <dl class="py class">
474
464
  <dt class="sig sig-object py" id="snappy.verify.KrawczykShapesEngine">
475
- <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.</span></span><span class="sig-name descname"><span class="pre">KrawczykShapesEngine</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">M</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">initial_shapes</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bits_prec</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dec_prec</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.KrawczykShapesEngine" title="Permalink to this definition"></a></dt>
465
+ <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.</span></span><span class="sig-name descname"><span class="pre">KrawczykShapesEngine</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">M</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">initial_shapes</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bits_prec</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dec_prec</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.KrawczykShapesEngine" title="Link to this definition"></a></dt>
476
466
  <dd><p>An engine that is initialized with an approximated candidate solution to
477
467
  the rectangular gluing equations and produces intervals certified to
478
468
  contain a true solution. After the engine is successfully run, the
@@ -528,17 +518,17 @@ sage: C.certified_shapes # doctest: +NUMERIC12
528
518
  </div>
529
519
  <p>And here an example where the initial solution is somewhat off:</p>
530
520
  <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>sage: M = Manifold(&quot;m019&quot;)
531
- sage: shapes = [ 0.78+0.91j, 0.79+0.92j, 0.5 + 0.63j ]
532
- sage: C = KrawczykShapesEngine(M, shapes, bits_prec = 80)
521
+ sage: shapes = [0.780559+0.91449j, 0.780559+0.9144j, 0.46009+0.639j]
522
+ sage: C = KrawczykShapesEngine(M, shapes, bits_prec = 100)
533
523
  sage: C.expand_until_certified()
534
524
  True
535
- sage: C.certified_shapes
536
- (0.78? + 0.92?*I, 0.78? + 0.92?*I, 0.46? + 0.64?*I)
525
+ sage: C.certified_shapes # doctest: +ELLIPSIS
526
+ (0.7806? + 0.9145?*I, 0.7806? + 0.9145?*I, 0.460...? + 0.6326?*I)
537
527
  </pre></div>
538
528
  </div>
539
529
  <dl class="py method">
540
530
  <dt class="sig sig-object py" id="snappy.verify.KrawczykShapesEngine.expand_until_certified">
541
- <span class="sig-name descname"><span class="pre">expand_until_certified</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">verbose</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.KrawczykShapesEngine.expand_until_certified" title="Permalink to this definition"></a></dt>
531
+ <span class="sig-name descname"><span class="pre">expand_until_certified</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">verbose</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.KrawczykShapesEngine.expand_until_certified" title="Link to this definition"></a></dt>
542
532
  <dd><p>Try Krawczyk iterations (i.e., expanding the shape intervals [z]
543
533
  by the Krawczyk interval K(z0, [z], f)) until we can certify they
544
534
  contain a true solution.</p>
@@ -549,7 +539,7 @@ Set verbose = True for printing additional information.</p>
549
539
 
550
540
  <dl class="py method">
551
541
  <dt class="sig sig-object py" id="snappy.verify.KrawczykShapesEngine.interval_vector_is_contained_in">
552
- <em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">interval_vector_is_contained_in</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">vecA</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">vecB</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.KrawczykShapesEngine.interval_vector_is_contained_in" title="Permalink to this definition"></a></dt>
542
+ <em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">interval_vector_is_contained_in</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">vecA</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">vecB</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.KrawczykShapesEngine.interval_vector_is_contained_in" title="Link to this definition"></a></dt>
553
543
  <dd><p>Given two vectors of intervals, return whether the first one
554
544
  is contained in the second one. Examples:</p>
555
545
  <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="n">RIF</span> <span class="o">=</span> <span class="n">RealIntervalField</span><span class="p">(</span><span class="mi">80</span><span class="p">)</span>
@@ -577,21 +567,21 @@ is contained in the second one. Examples:</p>
577
567
 
578
568
  <dl class="py method">
579
569
  <dt class="sig sig-object py" id="snappy.verify.KrawczykShapesEngine.interval_vector_mid_points">
580
- <em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">interval_vector_mid_points</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">vec</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.KrawczykShapesEngine.interval_vector_mid_points" title="Permalink to this definition"></a></dt>
570
+ <em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">interval_vector_mid_points</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">vec</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.KrawczykShapesEngine.interval_vector_mid_points" title="Link to this definition"></a></dt>
581
571
  <dd><p>Given a vector of complex intervals, return the midpoints (as 0-length
582
572
  complex intervals) of them.</p>
583
573
  </dd></dl>
584
574
 
585
575
  <dl class="py method">
586
576
  <dt class="sig sig-object py" id="snappy.verify.KrawczykShapesEngine.interval_vector_union">
587
- <em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">interval_vector_union</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">vecA</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">vecB</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.KrawczykShapesEngine.interval_vector_union" title="Permalink to this definition"></a></dt>
577
+ <em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">interval_vector_union</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">vecA</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">vecB</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.KrawczykShapesEngine.interval_vector_union" title="Link to this definition"></a></dt>
588
578
  <dd><p>Given two vectors of intervals, return the vector of their unions,
589
579
  i.e., the smallest interval containing both intervals.</p>
590
580
  </dd></dl>
591
581
 
592
582
  <dl class="py method">
593
583
  <dt class="sig sig-object py" id="snappy.verify.KrawczykShapesEngine.krawczyk_interval">
594
- <span class="sig-name descname"><span class="pre">krawczyk_interval</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">shape_intervals</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.KrawczykShapesEngine.krawczyk_interval" title="Permalink to this definition"></a></dt>
584
+ <span class="sig-name descname"><span class="pre">krawczyk_interval</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">shape_intervals</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.KrawczykShapesEngine.krawczyk_interval" title="Link to this definition"></a></dt>
595
585
  <dd><p>Compute the interval in the Krawczyk test.</p>
596
586
  <p>It is given as</p>
597
587
  <blockquote>
@@ -612,7 +602,8 @@ containing only one value (the candidate solution given initially).</p>
612
602
  <p>If K is contained in [z], then we have proven that [z] contains a solution
613
603
  to the gluing equations.</p>
614
604
  <p>Do several Krawczyk operations to get a better solution:</p>
615
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>sage: M = Manifold(&quot;m019&quot;)
605
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>sage: from sage.all import vector
606
+ sage: M = Manifold(&quot;m019&quot;)
616
607
  sage: shapes = vector(ComplexIntervalField(53), [ 0.5+0.8j, 0.5+0.8j, 0.5+0.8j])
617
608
  sage: for i in range(15):
618
609
  ... penultimateShapes = shapes
@@ -627,7 +618,7 @@ sage: shapes # doctest: +NUMERIC12
627
618
 
628
619
  <dl class="py method">
629
620
  <dt class="sig sig-object py" id="snappy.verify.KrawczykShapesEngine.log_gluing_LHS_derivatives">
630
- <span class="sig-name descname"><span class="pre">log_gluing_LHS_derivatives</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">shapes</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.KrawczykShapesEngine.log_gluing_LHS_derivatives" title="Permalink to this definition"></a></dt>
621
+ <span class="sig-name descname"><span class="pre">log_gluing_LHS_derivatives</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">shapes</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.KrawczykShapesEngine.log_gluing_LHS_derivatives" title="Link to this definition"></a></dt>
631
622
  <dd><p>Compute the Jacobian of the vector-valued function f
632
623
  described in the above log_gluing_LHSs:</p>
633
624
  <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>sage: from snappy import Manifold
@@ -649,7 +640,7 @@ sage: C.log_gluing_LHS_derivatives(shapes) # doctest: +NUMERIC3
649
640
 
650
641
  <dl class="py method">
651
642
  <dt class="sig sig-object py" id="snappy.verify.KrawczykShapesEngine.log_gluing_LHS_derivatives_sparse">
652
- <span class="sig-name descname"><span class="pre">log_gluing_LHS_derivatives_sparse</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">shapes</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.KrawczykShapesEngine.log_gluing_LHS_derivatives_sparse" title="Permalink to this definition"></a></dt>
643
+ <span class="sig-name descname"><span class="pre">log_gluing_LHS_derivatives_sparse</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">shapes</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.KrawczykShapesEngine.log_gluing_LHS_derivatives_sparse" title="Link to this definition"></a></dt>
653
644
  <dd><p>A column-sparse matrix version of log_gluing_LHS_derivatives_sparse.
654
645
  The result is a list of list of pairs. Each list of pairs corresponds
655
646
  to a column, a pair being (index of row, value) where the index is
@@ -658,7 +649,7 @@ increasing.</p>
658
649
 
659
650
  <dl class="py method">
660
651
  <dt class="sig sig-object py" id="snappy.verify.KrawczykShapesEngine.log_gluing_LHSs">
661
- <span class="sig-name descname"><span class="pre">log_gluing_LHSs</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">shapes</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.KrawczykShapesEngine.log_gluing_LHSs" title="Permalink to this definition"></a></dt>
652
+ <span class="sig-name descname"><span class="pre">log_gluing_LHSs</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">shapes</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.KrawczykShapesEngine.log_gluing_LHSs" title="Link to this definition"></a></dt>
662
653
  <dd><p>Given the result of M.gluing_equations(‘rect’) or a
663
654
  subset of rows of it and shapes, return a vector of
664
655
  log(LHS) where</p>
@@ -705,7 +696,7 @@ False
705
696
 
706
697
  <dl class="py method">
707
698
  <dt class="sig sig-object py" id="snappy.verify.KrawczykShapesEngine.matrix_times_sparse">
708
- <em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">matrix_times_sparse</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">m</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sparse_m</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.KrawczykShapesEngine.matrix_times_sparse" title="Permalink to this definition"></a></dt>
699
+ <em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">matrix_times_sparse</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">m</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sparse_m</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.KrawczykShapesEngine.matrix_times_sparse" title="Link to this definition"></a></dt>
709
700
  <dd><p>Multiply a (dense) Sage matrix with a column-sparse matrix
710
701
  (in the format described in log_gluing_LHS_derivatives_sparse).</p>
711
702
  </dd></dl>
@@ -714,13 +705,13 @@ False
714
705
 
715
706
  </section>
716
707
  <section id="verification-of-hyperbolicity">
717
- <h2>Verification of hyperbolicity<a class="headerlink" href="#verification-of-hyperbolicity" title="Permalink to this heading"></a></h2>
708
+ <h2>Verification of hyperbolicity<a class="headerlink" href="#verification-of-hyperbolicity" title="Link to this heading"></a></h2>
718
709
  <p>Methods containing <code class="docutils literal notranslate"><span class="pre">check</span></code> will raise an exception if the desired property
719
710
  cannot be certified. Methods containing <code class="docutils literal notranslate"><span class="pre">verify</span></code> or <code class="docutils literal notranslate"><span class="pre">verified</span></code> will fail
720
711
  more gracefully returning <code class="docutils literal notranslate"><span class="pre">False</span></code> or <code class="docutils literal notranslate"><span class="pre">None</span></code> in such a case.</p>
721
712
  <dl class="py function">
722
- <dt class="sig sig-object py" id="snappy.verify.verifyHyperbolicity.check_logarithmic_gluing_equations_and_positively_oriented_tets">
723
- <span class="sig-prename descclassname"><span class="pre">snappy.verify.verifyHyperbolicity.</span></span><span class="sig-name descname"><span class="pre">check_logarithmic_gluing_equations_and_positively_oriented_tets</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">manifold</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">shape_intervals</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.verifyHyperbolicity.check_logarithmic_gluing_equations_and_positively_oriented_tets" title="Permalink to this definition"></a></dt>
713
+ <dt class="sig sig-object py" id="snappy.verify.hyperbolicity.check_logarithmic_gluing_equations_and_positively_oriented_tets">
714
+ <span class="sig-prename descclassname"><span class="pre">snappy.verify.hyperbolicity.</span></span><span class="sig-name descname"><span class="pre">check_logarithmic_gluing_equations_and_positively_oriented_tets</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">manifold</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">shape_intervals</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.hyperbolicity.check_logarithmic_gluing_equations_and_positively_oriented_tets" title="Link to this definition"></a></dt>
724
715
  <dd><p>Given a SnapPy manifold manifold and complex intervals for the shapes
725
716
  shape_intervals that are certified to contain a solution to the
726
717
  rectangular gluing equations, verify that the logarithmic gluing equations
@@ -751,418 +742,12 @@ ShapePositiveImaginaryPartNumericalVerifyError: Numerical verification that shap
751
742
  </div>
752
743
  </dd></dl>
753
744
 
754
- </section>
755
- <section id="cusp-cross-sections">
756
- <h2>Cusp cross sections<a class="headerlink" href="#cusp-cross-sections" title="Permalink to this heading"></a></h2>
757
- <dl class="py class">
758
- <dt class="sig sig-object py" id="snappy.verify.RealCuspCrossSection">
759
- <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.</span></span><span class="sig-name descname"><span class="pre">RealCuspCrossSection</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">mcomplex</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.RealCuspCrossSection" title="Permalink to this definition"></a></dt>
760
- <dd><p>A t3m triangulation with real edge lengths of cusp cross sections built
761
- from a cusped (possibly non-orientable) SnapPy manifold M with a hyperbolic
762
- structure specified by shapes. It can scale the cusps to areas that can be
763
- specified or scale them such that they are disjoint.
764
- It can also compute the “tilts” used in the Tilt Theorem, see
765
- <code class="docutils literal notranslate"><span class="pre">canonize_part_1.c</span></code>.</p>
766
- <p>The computations are agnostic about the type of numbers provided as shapes
767
- as long as they provide <code class="docutils literal notranslate"><span class="pre">+</span></code>, <code class="docutils literal notranslate"><span class="pre">-</span></code>, <code class="docutils literal notranslate"><span class="pre">*</span></code>, <code class="docutils literal notranslate"><span class="pre">/</span></code>, <code class="docutils literal notranslate"><span class="pre">conjugate()</span></code>,
768
- <code class="docutils literal notranslate"><span class="pre">im()</span></code>, <code class="docutils literal notranslate"><span class="pre">abs()</span></code>, <code class="docutils literal notranslate"><span class="pre">sqrt()</span></code>.
769
- Shapes can be a numerical type such as ComplexIntervalField or an exact
770
- type (supporting sqrt) such as QQbar.</p>
771
- <p>The resulting edge lengths and tilts will be of the type returned by
772
- applying the above operations to the shapes. For example, if the shapes
773
- are in ComplexIntervalField, the edge lengths and tilts are elements in
774
- RealIntervalField.</p>
775
- <p><strong>Remark:</strong> The real edge lengths could also be obtained from the complex
776
- edge lengths computed by <code class="docutils literal notranslate"><span class="pre">ComplexCuspCrossSection</span></code>, but this has two
777
- drawbacks. The times at which we apply <code class="docutils literal notranslate"><span class="pre">abs</span></code> or <code class="docutils literal notranslate"><span class="pre">sqrt</span></code> during the
778
- development and rescaling of the cusps would be different. Though this
779
- gives the same values, the resulting representation of these values by an
780
- exact number type (such as the ones in <code class="docutils literal notranslate"><span class="pre">squareExtension.py</span></code>) might be
781
- prohibitively more complicated. Furthermore, <code class="docutils literal notranslate"><span class="pre">ComplexCuspCrossSection</span></code>
782
- does not work for non-orientable manifolds (it does not implement working
783
- in a cusp’s double-cover like the SnapPea kernel does).</p>
784
- <dl class="py attribute">
785
- <dt class="sig sig-object py" id="snappy.verify.RealCuspCrossSection.HoroTriangle">
786
- <span class="sig-name descname"><span class="pre">HoroTriangle</span></span><a class="headerlink" href="#snappy.verify.RealCuspCrossSection.HoroTriangle" title="Permalink to this definition"></a></dt>
787
- <dd><p>alias of <code class="xref py py-class docutils literal notranslate"><span class="pre">RealHoroTriangle</span></code></p>
788
- </dd></dl>
789
-
790
- <dl class="py method">
791
- <dt class="sig sig-object py" id="snappy.verify.RealCuspCrossSection.check_cusp_development_exactly">
792
- <span class="sig-name descname"><span class="pre">check_cusp_development_exactly</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.RealCuspCrossSection.check_cusp_development_exactly" title="Permalink to this definition"></a></dt>
793
- <dd><p>Check that all side lengths of horo triangles are consistent.
794
- If the logarithmic edge equations are fulfilled, this implices
795
- that the all cusps are complete and thus the manifold is complete.</p>
796
- </dd></dl>
797
-
798
- <dl class="py method">
799
- <dt class="sig sig-object py" id="snappy.verify.RealCuspCrossSection.check_logarithmic_edge_equations_and_positivity">
800
- <span class="sig-name descname"><span class="pre">check_logarithmic_edge_equations_and_positivity</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">NumericalField</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.RealCuspCrossSection.check_logarithmic_edge_equations_and_positivity" title="Permalink to this definition"></a></dt>
801
- <dd><p>Check that the shapes have positive imaginary part and that the
802
- logarithmic gluing equations have small error.</p>
803
- <p>The shapes are coerced into the field given as argument before the
804
- logarithm is computed. It can be, e.g., a ComplexIntervalField.</p>
805
- </dd></dl>
806
-
807
- <dl class="py method">
808
- <dt class="sig sig-object py" id="snappy.verify.RealCuspCrossSection.check_polynomial_edge_equations_exactly">
809
- <span class="sig-name descname"><span class="pre">check_polynomial_edge_equations_exactly</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.RealCuspCrossSection.check_polynomial_edge_equations_exactly" title="Permalink to this definition"></a></dt>
810
- <dd><p>Check that the polynomial edge equations are fulfilled exactly.</p>
811
- <p>We use the conjugate inverse to support non-orientable manifolds.</p>
812
- </dd></dl>
813
-
814
- <dl class="py method">
815
- <dt class="sig sig-object py" id="snappy.verify.RealCuspCrossSection.compute_tilts">
816
- <span class="sig-name descname"><span class="pre">compute_tilts</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.RealCuspCrossSection.compute_tilts" title="Permalink to this definition"></a></dt>
817
- <dd><p>Computes all tilts. They are written to the instances of
818
- t3m.simplex.Face and can be accessed as
819
- [ face.Tilt for face in crossSection.Faces].</p>
820
- </dd></dl>
821
-
822
- <dl class="py method">
823
- <dt class="sig sig-object py" id="snappy.verify.RealCuspCrossSection.cusp_areas">
824
- <span class="sig-name descname"><span class="pre">cusp_areas</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.RealCuspCrossSection.cusp_areas" title="Permalink to this definition"></a></dt>
825
- <dd><p>List of all cusp areas.</p>
826
- </dd></dl>
827
-
828
- <dl class="py method">
829
- <dt class="sig sig-object py" id="snappy.verify.RealCuspCrossSection.ensure_disjoint_on_edges">
830
- <span class="sig-name descname"><span class="pre">ensure_disjoint_on_edges</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.RealCuspCrossSection.ensure_disjoint_on_edges" title="Permalink to this definition"></a></dt>
831
- <dd><p>Scales the cusp neighborhoods down until they are disjoint when
832
- intersected with the edges of the triangulations.</p>
833
- <p>Given an edge of a triangulation, we can easily compute the signed
834
- distance between the two cusp neighborhoods at the ends of the edge
835
- measured along that edge. Thus, we can easily check that all the
836
- distances measured along all the edges are positive and scale the
837
- cusps down if necessary.</p>
838
- <p>Unfortunately, this is not sufficient to ensure that two cusp
839
- neighborhoods are disjoint since there might be a geodesic between
840
- the two cusps such that the distance between the two cusps measured
841
- along the geodesic is shorter than measured along any edge of the
842
- triangulation.</p>
843
- <p>Thus, it is necessary to call ensure_std_form as well:
844
- it will make sure that the cusp neighborhoods are small enough so
845
- that they intersect the tetrahedra in “standard” form.
846
- Here, “standard” form means that the corresponding horoball about a
847
- vertex of a tetrahedron intersects the three faces of the tetrahedron
848
- adjacent to the vertex but not the one opposite to the vertex.</p>
849
- <p>For any geometric triangulation, standard form and positive distance
850
- measured along all edges of the triangulation is sufficient for
851
- disjoint neighborhoods.</p>
852
- <p>The SnapPea kernel uses the proto-canonical triangulation associated
853
- to the cusp neighborhood to get around this when computing the
854
- “reach” and the “stoppers” for the cusps.</p>
855
- <p><strong>Remark:</strong> This means that the cusp neighborhoods might be scaled down
856
- more than necessary. Related open questions are: given maximal disjoint
857
- cusp neighborhoods (maximal in the sense that no neighborhood can be
858
- expanded without bumping into another or itself), is there always a
859
- geometric triangulation intersecting the cusp neighborhoods in standard
860
- form? Is there an easy algorithm to find this triangulation, e.g., by
861
- applying a 2-3 move whenever we see a non-standard intersection?</p>
862
- </dd></dl>
863
-
864
- <dl class="py method">
865
- <dt class="sig sig-object py" id="snappy.verify.RealCuspCrossSection.ensure_std_form">
866
- <span class="sig-name descname"><span class="pre">ensure_std_form</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">allow_scaling_up</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.RealCuspCrossSection.ensure_std_form" title="Permalink to this definition"></a></dt>
867
- <dd><p>Makes sure that the cusp neighborhoods intersect each tetrahedron
868
- in standard form by scaling the cusp neighborhoods down if necessary.</p>
869
- </dd></dl>
870
-
871
- <dl class="py method">
872
- <dt class="sig sig-object py" id="snappy.verify.RealCuspCrossSection.fromManifoldAndShapes">
873
- <em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">fromManifoldAndShapes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">shapes</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.RealCuspCrossSection.fromManifoldAndShapes" title="Permalink to this definition"></a></dt>
874
- <dd><p><strong>Examples:</strong></p>
875
- <p>Initialize from shapes provided from the floats returned by
876
- tetrahedra_shapes. The tilts appear to be negative but are not
877
- verified by interval arithmetics:</p>
878
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">snappy</span> <span class="kn">import</span> <span class="n">Manifold</span>
879
- <span class="gp">&gt;&gt;&gt; </span><span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">&quot;m004&quot;</span><span class="p">)</span>
880
- <span class="gp">&gt;&gt;&gt; </span><span class="n">M</span><span class="o">.</span><span class="n">canonize</span><span class="p">()</span>
881
- <span class="gp">&gt;&gt;&gt; </span><span class="n">shapes</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">tetrahedra_shapes</span><span class="p">(</span><span class="s1">&#39;rect&#39;</span><span class="p">)</span>
882
- <span class="gp">&gt;&gt;&gt; </span><span class="n">e</span> <span class="o">=</span> <span class="n">RealCuspCrossSection</span><span class="o">.</span><span class="n">fromManifoldAndShapes</span><span class="p">(</span><span class="n">M</span><span class="p">,</span> <span class="n">shapes</span><span class="p">)</span>
883
- <span class="gp">&gt;&gt;&gt; </span><span class="n">e</span><span class="o">.</span><span class="n">normalize_cusps</span><span class="p">()</span>
884
- <span class="gp">&gt;&gt;&gt; </span><span class="n">e</span><span class="o">.</span><span class="n">compute_tilts</span><span class="p">()</span>
885
- <span class="gp">&gt;&gt;&gt; </span><span class="n">tilts</span> <span class="o">=</span> <span class="n">e</span><span class="o">.</span><span class="n">read_tilts</span><span class="p">()</span>
886
- <span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">tilt</span> <span class="ow">in</span> <span class="n">tilts</span><span class="p">:</span>
887
- <span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="si">%.8f</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">tilt</span><span class="p">)</span>
888
- <span class="go">-0.31020162</span>
889
- <span class="go">-0.31020162</span>
890
- <span class="go">-0.31020162</span>
891
- <span class="go">-0.31020162</span>
892
- <span class="go">-0.31020162</span>
893
- <span class="go">-0.31020162</span>
894
- <span class="go">-0.31020162</span>
895
- <span class="go">-0.31020162</span>
896
- </pre></div>
897
- </div>
898
- <p>Use verified intervals:</p>
899
- <p>sage: from snappy.verify import *
900
- sage: M = Manifold(“m004”)
901
- sage: M.canonize()
902
- sage: shapes = M.tetrahedra_shapes(‘rect’, intervals=True)</p>
903
- <p>Verify that the tetrahedra shapes form a complete manifold:</p>
904
- <p>sage: check_logarithmic_gluing_equations_and_positively_oriented_tets(M,shapes)
905
- sage: e = RealCuspCrossSection.fromManifoldAndShapes(M, shapes)
906
- sage: e.normalize_cusps()
907
- sage: e.compute_tilts()</p>
908
- <p>Tilts are verified to be negative:</p>
909
- <p>sage: [tilt &lt; 0 for tilt in e.read_tilts()]
910
- [True, True, True, True, True, True, True, True]</p>
911
- <p>Setup necessary things in Sage:</p>
912
- <p>sage: from sage.rings.qqbar import QQbar
913
- sage: from sage.rings.rational_field import RationalField
914
- sage: from sage.rings.polynomial.polynomial_ring import polygen
915
- sage: from sage.rings.real_mpfi import RealIntervalField
916
- sage: from sage.rings.complex_interval_field import ComplexIntervalField
917
- sage: x = polygen(RationalField())
918
- sage: RIF = RealIntervalField()
919
- sage: CIF = ComplexIntervalField()</p>
920
- <p>sage: M = Manifold(“m412”)
921
- sage: M.canonize()</p>
922
- <p>Make our own exact shapes using Sage. They are the root of the given
923
- polynomial isolated by the given interval.</p>
924
- <p>sage: r=QQbar.polynomial_root(x**2-x+1,CIF(RIF(0.49,0.51),RIF(0.86,0.87)))
925
- sage: shapes = 5 * [r]
926
- sage: e=RealCuspCrossSection.fromManifoldAndShapes(M, shapes)
927
- sage: e.normalize_cusps()</p>
928
- <p>The following three lines verify that we have shapes giving a complete
929
- hyperbolic structure. The last one uses complex interval arithmetics.</p>
930
- <p>sage: e.check_polynomial_edge_equations_exactly()
931
- sage: e.check_cusp_development_exactly()
932
- sage: e.check_logarithmic_edge_equations_and_positivity(CIF)</p>
933
- <p>Because we use exact types, we can verify that each tilt is either
934
- negative or exactly zero.</p>
935
- <p>sage: e.compute_tilts()
936
- sage: [(tilt &lt; 0, tilt == 0) for tilt in e.read_tilts()]
937
- [(True, False), (True, False), (False, True), (True, False), (True, False), (True, False), (True, False), (False, True), (True, False), (True, False), (True, False), (False, True), (False, True), (False, True), (False, True), (False, True), (True, False), (True, False), (False, True), (True, False)]</p>
938
- <p>Some are exactly zero, so the canonical cell decomposition has
939
- non-tetrahedral cells. In fact, the one cell is a cube. We can obtain
940
- the retriangulation of the canonical cell decomposition as follows:</p>
941
- <p>sage: e.compute_tilts()
942
- sage: opacities = [tilt &lt; 0 for tilt in e.read_tilts()]
943
- sage: N = M._canonical_retriangulation()
944
- sage: N.num_tetrahedra()
945
- 12</p>
946
- <p>The manifold m412 has 8 isometries, the above code certified that using
947
- exact arithmetic:
948
- sage: len(N.isomorphisms_to(N))
949
- 8</p>
950
- </dd></dl>
951
-
952
- <dl class="py method">
953
- <dt class="sig sig-object py" id="snappy.verify.RealCuspCrossSection.normalize_cusps">
954
- <span class="sig-name descname"><span class="pre">normalize_cusps</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">areas</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.RealCuspCrossSection.normalize_cusps" title="Permalink to this definition"></a></dt>
955
- <dd><p>Scale cusp so that they have the given target area.
956
- Without argument, each cusp is scaled to have area 1.
957
- If the argument is a number, scale each cusp to have that area.
958
- If the argument is an array, scale each cusp by the respective
959
- entry in the array.</p>
960
- </dd></dl>
961
-
962
- <dl class="py method">
963
- <dt class="sig sig-object py" id="snappy.verify.RealCuspCrossSection.read_tilts">
964
- <span class="sig-name descname"><span class="pre">read_tilts</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.RealCuspCrossSection.read_tilts" title="Permalink to this definition"></a></dt>
965
- <dd><p>After compute_tilts() has been called, put the tilt values into an
966
- array containing the tilt of face 0, 1, 2, 3 of the first tetrahedron,
967
- … of the second tetrahedron, ….</p>
968
- </dd></dl>
969
-
970
- <dl class="py method">
971
- <dt class="sig sig-object py" id="snappy.verify.RealCuspCrossSection.scale_cusps">
972
- <span class="sig-name descname"><span class="pre">scale_cusps</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">scales</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.RealCuspCrossSection.scale_cusps" title="Permalink to this definition"></a></dt>
973
- <dd><p>Scale each cusp by Euclidean dilation by values in given array.</p>
974
- </dd></dl>
975
-
976
- </dd></dl>
977
-
978
- <dl class="py class">
979
- <dt class="sig sig-object py" id="snappy.verify.ComplexCuspCrossSection">
980
- <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.</span></span><span class="sig-name descname"><span class="pre">ComplexCuspCrossSection</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">mcomplex</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.ComplexCuspCrossSection" title="Permalink to this definition"></a></dt>
981
- <dd><p>Similarly to RealCuspCrossSection with the following differences: it
982
- computes the complex edge lengths and the cusp translations (instead
983
- of the tilts) and it only works for orientable manifolds.</p>
984
- <p>The same comment applies about the type of the shapes. The resulting
985
- edge lengths and translations will be of the same type as the shapes.</p>
986
- <p>For shapes corresponding to a non-boundary unipotent representation
987
- (in other words, a manifold having an incomplete cusp), a cusp can
988
- be developed if an appropriate 1-cocycle is given. The 1-cocycle
989
- is a cellular cocycle in the dual of the cusp triangulations and
990
- represents an element in H^1(boundary M; C^*) that must match the
991
- PSL(2,C) boundary holonomy of the representation.
992
- It is encoded as dictionary with key (tet index, t3m face, t3m vertex).</p>
993
- <dl class="py attribute">
994
- <dt class="sig sig-object py" id="snappy.verify.ComplexCuspCrossSection.HoroTriangle">
995
- <span class="sig-name descname"><span class="pre">HoroTriangle</span></span><a class="headerlink" href="#snappy.verify.ComplexCuspCrossSection.HoroTriangle" title="Permalink to this definition"></a></dt>
996
- <dd><p>alias of <code class="xref py py-class docutils literal notranslate"><span class="pre">ComplexHoroTriangle</span></code></p>
997
- </dd></dl>
998
-
999
- <dl class="py method">
1000
- <dt class="sig sig-object py" id="snappy.verify.ComplexCuspCrossSection.add_vertex_positions_to_horotriangles">
1001
- <span class="sig-name descname"><span class="pre">add_vertex_positions_to_horotriangles</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.ComplexCuspCrossSection.add_vertex_positions_to_horotriangles" title="Permalink to this definition"></a></dt>
1002
- <dd><p>Develops cusp to assign to each horotriangle the positions of its three
1003
- vertices in the Euclidean plane.</p>
1004
- <p>Note: For a complete cusp, this is defined only up to translating the
1005
- entire triangle by translations generated by meridian and longitude.</p>
1006
- <p>For an incomplete cusp, this is defined only up to
1007
- similarities generated by the meridian and longitude. The
1008
- positions can be moved such that the fixed point of these
1009
- similarities is at the origin by calling
1010
- move_fixed_point_to_zero after
1011
- add_vertex_positions_to_horotriangles.</p>
1012
- <p>Note: This is not working when one_cocycle is passed during the
1013
- construction of the cusp cross section.</p>
1014
- </dd></dl>
1015
-
1016
- <dl class="py method">
1017
- <dt class="sig sig-object py" id="snappy.verify.ComplexCuspCrossSection.all_normalized_translations">
1018
- <span class="sig-name descname"><span class="pre">all_normalized_translations</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.ComplexCuspCrossSection.all_normalized_translations" title="Permalink to this definition"></a></dt>
1019
- <dd><p>Compute the translations corresponding to the meridian and longitude
1020
- for each cusp.</p>
1021
- </dd></dl>
1022
-
1023
- <dl class="py method">
1024
- <dt class="sig sig-object py" id="snappy.verify.ComplexCuspCrossSection.check_cusp_development_exactly">
1025
- <span class="sig-name descname"><span class="pre">check_cusp_development_exactly</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.ComplexCuspCrossSection.check_cusp_development_exactly" title="Permalink to this definition"></a></dt>
1026
- <dd><p>Check that all side lengths of horo triangles are consistent.
1027
- If the logarithmic edge equations are fulfilled, this implices
1028
- that the all cusps are complete and thus the manifold is complete.</p>
1029
- </dd></dl>
1030
-
1031
- <dl class="py method">
1032
- <dt class="sig sig-object py" id="snappy.verify.ComplexCuspCrossSection.check_logarithmic_edge_equations_and_positivity">
1033
- <span class="sig-name descname"><span class="pre">check_logarithmic_edge_equations_and_positivity</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">NumericalField</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.ComplexCuspCrossSection.check_logarithmic_edge_equations_and_positivity" title="Permalink to this definition"></a></dt>
1034
- <dd><p>Check that the shapes have positive imaginary part and that the
1035
- logarithmic gluing equations have small error.</p>
1036
- <p>The shapes are coerced into the field given as argument before the
1037
- logarithm is computed. It can be, e.g., a ComplexIntervalField.</p>
1038
- </dd></dl>
1039
-
1040
- <dl class="py method">
1041
- <dt class="sig sig-object py" id="snappy.verify.ComplexCuspCrossSection.check_polynomial_edge_equations_exactly">
1042
- <span class="sig-name descname"><span class="pre">check_polynomial_edge_equations_exactly</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.ComplexCuspCrossSection.check_polynomial_edge_equations_exactly" title="Permalink to this definition"></a></dt>
1043
- <dd><p>Check that the polynomial edge equations are fulfilled exactly.</p>
1044
- <p>We use the conjugate inverse to support non-orientable manifolds.</p>
1045
- </dd></dl>
1046
-
1047
- <dl class="py method">
1048
- <dt class="sig sig-object py" id="snappy.verify.ComplexCuspCrossSection.cusp_areas">
1049
- <span class="sig-name descname"><span class="pre">cusp_areas</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.ComplexCuspCrossSection.cusp_areas" title="Permalink to this definition"></a></dt>
1050
- <dd><p>List of all cusp areas.</p>
1051
- </dd></dl>
1052
-
1053
- <dl class="py method">
1054
- <dt class="sig sig-object py" id="snappy.verify.ComplexCuspCrossSection.cusp_shapes">
1055
- <span class="sig-name descname"><span class="pre">cusp_shapes</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.ComplexCuspCrossSection.cusp_shapes" title="Permalink to this definition"></a></dt>
1056
- <dd><p>Compute the cusp shapes as conjugate of the quotient of the translations
1057
- corresponding to the longitude and meridian for each cusp (SnapPea
1058
- kernel convention).</p>
1059
- </dd></dl>
1060
-
1061
- <dl class="py method">
1062
- <dt class="sig sig-object py" id="snappy.verify.ComplexCuspCrossSection.ensure_disjoint_on_edges">
1063
- <span class="sig-name descname"><span class="pre">ensure_disjoint_on_edges</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.ComplexCuspCrossSection.ensure_disjoint_on_edges" title="Permalink to this definition"></a></dt>
1064
- <dd><p>Scales the cusp neighborhoods down until they are disjoint when
1065
- intersected with the edges of the triangulations.</p>
1066
- <p>Given an edge of a triangulation, we can easily compute the signed
1067
- distance between the two cusp neighborhoods at the ends of the edge
1068
- measured along that edge. Thus, we can easily check that all the
1069
- distances measured along all the edges are positive and scale the
1070
- cusps down if necessary.</p>
1071
- <p>Unfortunately, this is not sufficient to ensure that two cusp
1072
- neighborhoods are disjoint since there might be a geodesic between
1073
- the two cusps such that the distance between the two cusps measured
1074
- along the geodesic is shorter than measured along any edge of the
1075
- triangulation.</p>
1076
- <p>Thus, it is necessary to call ensure_std_form as well:
1077
- it will make sure that the cusp neighborhoods are small enough so
1078
- that they intersect the tetrahedra in “standard” form.
1079
- Here, “standard” form means that the corresponding horoball about a
1080
- vertex of a tetrahedron intersects the three faces of the tetrahedron
1081
- adjacent to the vertex but not the one opposite to the vertex.</p>
1082
- <p>For any geometric triangulation, standard form and positive distance
1083
- measured along all edges of the triangulation is sufficient for
1084
- disjoint neighborhoods.</p>
1085
- <p>The SnapPea kernel uses the proto-canonical triangulation associated
1086
- to the cusp neighborhood to get around this when computing the
1087
- “reach” and the “stoppers” for the cusps.</p>
1088
- <p><strong>Remark:</strong> This means that the cusp neighborhoods might be scaled down
1089
- more than necessary. Related open questions are: given maximal disjoint
1090
- cusp neighborhoods (maximal in the sense that no neighborhood can be
1091
- expanded without bumping into another or itself), is there always a
1092
- geometric triangulation intersecting the cusp neighborhoods in standard
1093
- form? Is there an easy algorithm to find this triangulation, e.g., by
1094
- applying a 2-3 move whenever we see a non-standard intersection?</p>
1095
- </dd></dl>
1096
-
1097
- <dl class="py method">
1098
- <dt class="sig sig-object py" id="snappy.verify.ComplexCuspCrossSection.ensure_std_form">
1099
- <span class="sig-name descname"><span class="pre">ensure_std_form</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">allow_scaling_up</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.ComplexCuspCrossSection.ensure_std_form" title="Permalink to this definition"></a></dt>
1100
- <dd><p>Makes sure that the cusp neighborhoods intersect each tetrahedron
1101
- in standard form by scaling the cusp neighborhoods down if necessary.</p>
1102
- </dd></dl>
1103
-
1104
- <dl class="py method">
1105
- <dt class="sig sig-object py" id="snappy.verify.ComplexCuspCrossSection.lift_vertex_positions_of_horotriangles">
1106
- <span class="sig-name descname"><span class="pre">lift_vertex_positions_of_horotriangles</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.ComplexCuspCrossSection.lift_vertex_positions_of_horotriangles" title="Permalink to this definition"></a></dt>
1107
- <dd><p>After developing an incomplete cusp with
1108
- add_vertex_positions_to_horotriangles, this function moves the
1109
- vertex positions first to zero the fixed point (see
1110
- move_ffixed_point_to_zero) and computes logarithms for all the
1111
- vertex positions of the horotriangles in the Euclidean plane
1112
- in a consistent manner. These logarithms are written to a
1113
- dictionary lifted_vertex_positions on the HoroTriangle’s.</p>
1114
- <p>For an incomplete cusp, the respective value in lifted_vertex_positions
1115
- will be None.</p>
1116
- <p>The three logarithms of the vertex positions of a triangle are only
1117
- defined up to adding mu Z + lambda Z where mu and lambda are the
1118
- logarithmic holonomies of the meridian and longitude.</p>
1119
- </dd></dl>
1120
-
1121
- <dl class="py method">
1122
- <dt class="sig sig-object py" id="snappy.verify.ComplexCuspCrossSection.move_fixed_point_to_zero">
1123
- <span class="sig-name descname"><span class="pre">move_fixed_point_to_zero</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.ComplexCuspCrossSection.move_fixed_point_to_zero" title="Permalink to this definition"></a></dt>
1124
- <dd><p>Determines the fixed point of the holonomies for all
1125
- incomplete cusps. Then moves the vertex positions of the
1126
- corresponding cusp triangles so that the fixed point is at the
1127
- origin.</p>
1128
- <p>It also add the boolean v.is_complete to all vertices of the
1129
- triangulation to mark whether the corresponding cusp is
1130
- complete or not.</p>
1131
- </dd></dl>
1132
-
1133
- <dl class="py method">
1134
- <dt class="sig sig-object py" id="snappy.verify.ComplexCuspCrossSection.move_lifted_vertex_positions_to_zero_first">
1135
- <span class="sig-name descname"><span class="pre">move_lifted_vertex_positions_to_zero_first</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.ComplexCuspCrossSection.move_lifted_vertex_positions_to_zero_first" title="Permalink to this definition"></a></dt>
1136
- <dd><p>Shift the lifted vertex positions such that the one associated
1137
- to the first vertex when developing the incomplete cusp is
1138
- zero. This makes the values we obtain more stable when
1139
- changing the Dehn-surgery parameters.</p>
1140
- </dd></dl>
1141
-
1142
- <dl class="py method">
1143
- <dt class="sig sig-object py" id="snappy.verify.ComplexCuspCrossSection.normalize_cusps">
1144
- <span class="sig-name descname"><span class="pre">normalize_cusps</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">areas</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.ComplexCuspCrossSection.normalize_cusps" title="Permalink to this definition"></a></dt>
1145
- <dd><p>Scale cusp so that they have the given target area.
1146
- Without argument, each cusp is scaled to have area 1.
1147
- If the argument is a number, scale each cusp to have that area.
1148
- If the argument is an array, scale each cusp by the respective
1149
- entry in the array.</p>
1150
- </dd></dl>
1151
-
1152
- <dl class="py method">
1153
- <dt class="sig sig-object py" id="snappy.verify.ComplexCuspCrossSection.scale_cusps">
1154
- <span class="sig-name descname"><span class="pre">scale_cusps</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">scales</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.ComplexCuspCrossSection.scale_cusps" title="Permalink to this definition"></a></dt>
1155
- <dd><p>Scale each cusp by Euclidean dilation by values in given array.</p>
1156
- </dd></dl>
1157
-
1158
- </dd></dl>
1159
-
1160
745
  </section>
1161
746
  <section id="verified-canonical-cell-decompositions">
1162
- <h2>Verified canonical cell decompositions<a class="headerlink" href="#verified-canonical-cell-decompositions" title="Permalink to this heading"></a></h2>
747
+ <h2>Verified canonical cell decompositions<a class="headerlink" href="#verified-canonical-cell-decompositions" title="Link to this heading"></a></h2>
1163
748
  <dl class="py function">
1164
- <dt class="sig sig-object py" id="snappy.verify.verifyCanonical.interval_checked_canonical_triangulation">
1165
- <span class="sig-prename descclassname"><span class="pre">snappy.verify.verifyCanonical.</span></span><span class="sig-name descname"><span class="pre">interval_checked_canonical_triangulation</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">M</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bits_prec</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.verifyCanonical.interval_checked_canonical_triangulation" title="Permalink to this definition"></a></dt>
749
+ <dt class="sig sig-object py" id="snappy.verify.canonical.interval_checked_canonical_triangulation">
750
+ <span class="sig-prename descclassname"><span class="pre">snappy.verify.canonical.</span></span><span class="sig-name descname"><span class="pre">interval_checked_canonical_triangulation</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">M</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bits_prec</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.canonical.interval_checked_canonical_triangulation" title="Link to this definition"></a></dt>
1166
751
  <dd><p>Given a canonical triangulation of a cusped (possibly non-orientable)
1167
752
  manifold M, return this triangulation if it has tetrahedral cells and can
1168
753
  be verified using interval arithmetics with the optional, given precision.
@@ -1205,8 +790,8 @@ TiltInequalityNumericalVerifyError: Numerical verification that tilt is negative
1205
790
  </dd></dl>
1206
791
 
1207
792
  <dl class="py function">
1208
- <dt class="sig sig-object py" id="snappy.verify.verifyCanonical.exactly_checked_canonical_retriangulation">
1209
- <span class="sig-prename descclassname"><span class="pre">snappy.verify.verifyCanonical.</span></span><span class="sig-name descname"><span class="pre">exactly_checked_canonical_retriangulation</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">M</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bits_prec</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">degree</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.verifyCanonical.exactly_checked_canonical_retriangulation" title="Permalink to this definition"></a></dt>
793
+ <dt class="sig sig-object py" id="snappy.verify.canonical.exactly_checked_canonical_retriangulation">
794
+ <span class="sig-prename descclassname"><span class="pre">snappy.verify.canonical.</span></span><span class="sig-name descname"><span class="pre">exactly_checked_canonical_retriangulation</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">M</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bits_prec</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">degree</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.canonical.exactly_checked_canonical_retriangulation" title="Link to this definition"></a></dt>
1210
795
  <dd><p>Given a proto-canonical triangulation of a cusped (possibly non-orientable)
1211
796
  manifold M, return its canonical retriangulation which is computed from
1212
797
  exact shapes. The exact shapes are computed using snap (which uses the
@@ -1241,9 +826,9 @@ TiltProvenPositiveNumericalVerifyError: Numerical verification that tilt is nega
1241
826
  </dd></dl>
1242
827
 
1243
828
  </section>
1244
- <section id="module-snappy.verify.squareExtensions">
1245
- <span id="exact-computations-for-cusp-cross-sections"></span><h2>Exact computations for cusp cross sections<a class="headerlink" href="#module-snappy.verify.squareExtensions" title="Permalink to this heading"></a></h2>
1246
- <p>The squareExtensions module provides
829
+ <section id="module-snappy.verify.square_extensions">
830
+ <span id="exact-computations-for-cusp-cross-sections"></span><h2>Exact computations for cusp cross sections<a class="headerlink" href="#module-snappy.verify.square_extensions" title="Link to this heading"></a></h2>
831
+ <p>The square_extensions module provides
1247
832
  two special classes to give exact representations of the values
1248
833
  involved when computing a cusp cross section.</p>
1249
834
  <p>The method find_shapes_as_complex_sqrt_lin_combinations returns a list of
@@ -1257,8 +842,8 @@ square roots in N. To avoid computing in a massive tower of square extensions
1257
842
  of N, we implement SqrtLinCombination here that provides a special
1258
843
  implementation of the == operator.</p>
1259
844
  <dl class="py function">
1260
- <dt class="sig sig-object py" id="snappy.verify.squareExtensions.find_shapes_as_complex_sqrt_lin_combinations">
1261
- <span class="sig-prename descclassname"><span class="pre">snappy.verify.squareExtensions.</span></span><span class="sig-name descname"><span class="pre">find_shapes_as_complex_sqrt_lin_combinations</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">M</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">prec</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">degree</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.squareExtensions.find_shapes_as_complex_sqrt_lin_combinations" title="Permalink to this definition"></a></dt>
845
+ <dt class="sig sig-object py" id="snappy.verify.square_extensions.find_shapes_as_complex_sqrt_lin_combinations">
846
+ <span class="sig-prename descclassname"><span class="pre">snappy.verify.square_extensions.</span></span><span class="sig-name descname"><span class="pre">find_shapes_as_complex_sqrt_lin_combinations</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">M</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">prec</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">degree</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.square_extensions.find_shapes_as_complex_sqrt_lin_combinations" title="Link to this definition"></a></dt>
1262
847
  <dd><p>Given a manifold M, use snap (which uses LLL-algorithm) with the given
1263
848
  decimal precision and maximal degree to find exact values for the shapes’
1264
849
  real and imaginary part. Return the shapes as list of
@@ -1273,8 +858,8 @@ ComplexSqrtLinCombination’s. Return None on failure.</p>
1273
858
  </dd></dl>
1274
859
 
1275
860
  <dl class="py class">
1276
- <dt class="sig sig-object py" id="snappy.verify.squareExtensions.SqrtLinCombination">
1277
- <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.squareExtensions.</span></span><span class="sig-name descname"><span class="pre">SqrtLinCombination</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">d</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">{}</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">embed_cache</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.squareExtensions.SqrtLinCombination" title="Permalink to this definition"></a></dt>
861
+ <dt class="sig sig-object py" id="snappy.verify.square_extensions.SqrtLinCombination">
862
+ <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.square_extensions.</span></span><span class="sig-name descname"><span class="pre">SqrtLinCombination</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">d</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">{}</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">embed_cache</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.square_extensions.SqrtLinCombination" title="Link to this definition"></a></dt>
1278
863
  <dd><p>A class representing a linear combination</p>
1279
864
  <blockquote>
1280
865
  <div><p>c_1 * sqrt(r_1) + c_2 * sqrt(r_2) + … + c_n * sqrt(r_n)</p>
@@ -1369,16 +954,16 @@ True
1369
954
  </pre></div>
1370
955
  </div>
1371
956
  <dl class="py method">
1372
- <dt class="sig sig-object py" id="snappy.verify.squareExtensions.SqrtLinCombination.sign">
1373
- <span class="sig-name descname"><span class="pre">sign</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.squareExtensions.SqrtLinCombination.sign" title="Permalink to this definition"></a></dt>
957
+ <dt class="sig sig-object py" id="snappy.verify.square_extensions.SqrtLinCombination.sign">
958
+ <span class="sig-name descname"><span class="pre">sign</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.square_extensions.SqrtLinCombination.sign" title="Link to this definition"></a></dt>
1374
959
  <dd><p>Returns the +1, 0, -1 depending on whether the value is positive,
1375
960
  zero or negative. For the zero case, exact arithmetic is used to
1376
961
  certify. Otherwise, interval arithmetic is used.</p>
1377
962
  </dd></dl>
1378
963
 
1379
964
  <dl class="py method">
1380
- <dt class="sig sig-object py" id="snappy.verify.squareExtensions.SqrtLinCombination.sign_with_interval">
1381
- <span class="sig-name descname"><span class="pre">sign_with_interval</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.squareExtensions.SqrtLinCombination.sign_with_interval" title="Permalink to this definition"></a></dt>
965
+ <dt class="sig sig-object py" id="snappy.verify.square_extensions.SqrtLinCombination.sign_with_interval">
966
+ <span class="sig-name descname"><span class="pre">sign_with_interval</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.square_extensions.SqrtLinCombination.sign_with_interval" title="Link to this definition"></a></dt>
1382
967
  <dd><p>Similar to sign, but for the non-zero case, also return the interval
1383
968
  certifying the sign - useful for debugging.</p>
1384
969
  </dd></dl>
@@ -1386,20 +971,20 @@ certifying the sign - useful for debugging.</p>
1386
971
  </dd></dl>
1387
972
 
1388
973
  <dl class="py class">
1389
- <dt class="sig sig-object py" id="snappy.verify.squareExtensions.ComplexSqrtLinCombination">
1390
- <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.squareExtensions.</span></span><span class="sig-name descname"><span class="pre">ComplexSqrtLinCombination</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">real</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">imag</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">embed_cache</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.squareExtensions.ComplexSqrtLinCombination" title="Permalink to this definition"></a></dt>
974
+ <dt class="sig sig-object py" id="snappy.verify.square_extensions.ComplexSqrtLinCombination">
975
+ <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.square_extensions.</span></span><span class="sig-name descname"><span class="pre">ComplexSqrtLinCombination</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">real</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">imag</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">embed_cache</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.square_extensions.ComplexSqrtLinCombination" title="Link to this definition"></a></dt>
1391
976
  <dd><p>A pair (real, imag) of SqrtLinCombinations representing the complex number
1392
977
  real + imag * I. Supports <code class="docutils literal notranslate"><span class="pre">real()</span></code>, <code class="docutils literal notranslate"><span class="pre">imag()</span></code>, <code class="docutils literal notranslate"><span class="pre">+</span></code>, <code class="docutils literal notranslate"><span class="pre">-</span></code>, <code class="docutils literal notranslate"><span class="pre">*</span></code>, <code class="docutils literal notranslate"><span class="pre">/</span></code>,
1393
978
  <code class="docutils literal notranslate"><span class="pre">abs</span></code>, <code class="docutils literal notranslate"><span class="pre">conjugate()</span></code> and <code class="docutils literal notranslate"><span class="pre">==</span></code>.</p>
1394
979
  <dl class="py method">
1395
- <dt class="sig sig-object py" id="snappy.verify.squareExtensions.ComplexSqrtLinCombination.imag">
1396
- <span class="sig-name descname"><span class="pre">imag</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.squareExtensions.ComplexSqrtLinCombination.imag" title="Permalink to this definition"></a></dt>
980
+ <dt class="sig sig-object py" id="snappy.verify.square_extensions.ComplexSqrtLinCombination.imag">
981
+ <span class="sig-name descname"><span class="pre">imag</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.square_extensions.ComplexSqrtLinCombination.imag" title="Link to this definition"></a></dt>
1397
982
  <dd><p>Imaginary part.</p>
1398
983
  </dd></dl>
1399
984
 
1400
985
  <dl class="py method">
1401
- <dt class="sig sig-object py" id="snappy.verify.squareExtensions.ComplexSqrtLinCombination.real">
1402
- <span class="sig-name descname"><span class="pre">real</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.squareExtensions.ComplexSqrtLinCombination.real" title="Permalink to this definition"></a></dt>
986
+ <dt class="sig sig-object py" id="snappy.verify.square_extensions.ComplexSqrtLinCombination.real">
987
+ <span class="sig-name descname"><span class="pre">real</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.square_extensions.ComplexSqrtLinCombination.real" title="Link to this definition"></a></dt>
1403
988
  <dd><p>Real part.</p>
1404
989
  </dd></dl>
1405
990
 
@@ -1407,7 +992,7 @@ real + imag * I. Supports <code class="docutils literal notranslate"><span class
1407
992
 
1408
993
  </section>
1409
994
  <section id="module-snappy.verify.exceptions">
1410
- <span id="exceptions"></span><h2>Exceptions<a class="headerlink" href="#module-snappy.verify.exceptions" title="Permalink to this heading"></a></h2>
995
+ <span id="exceptions"></span><h2>Exceptions<a class="headerlink" href="#module-snappy.verify.exceptions" title="Link to this heading"></a></h2>
1411
996
  <p>All final exceptions are deriving from two base classes:</p>
1412
997
  <ul class="simple">
1413
998
  <li><p>a subclass of VerifyErrorBase to indicate whether a numerical or exact
@@ -1450,11 +1035,6 @@ raised.</p>
1450
1035
  <li><p>CuspEquationLogLiftNumericalVerifyError</p></li>
1451
1036
  </ul>
1452
1037
  </li>
1453
- <li><p>CuspDevelopmentType</p>
1454
- <ul>
1455
- <li><p>CuspDevelopmentTypeExactVerifyError</p></li>
1456
- </ul>
1457
- </li>
1458
1038
  </ul>
1459
1039
  </li>
1460
1040
  <li><p>TiltType</p>
@@ -1472,125 +1052,88 @@ raised.</p>
1472
1052
  <li><p>ShapePositiveImaginaryPartNumericalVerifyError</p></li>
1473
1053
  </ul>
1474
1054
  </li>
1475
- <li><p>ConsistencyWithSnapPeaType</p>
1476
- <ul>
1477
- <li><p>ConsistencyWithSnapPeaNumericalVerifyError</p></li>
1478
1055
  </ul>
1479
1056
  </li>
1480
1057
  </ul>
1481
- </li>
1482
- </ul>
1483
- <dl class="py exception">
1484
- <dt class="sig sig-object py" id="snappy.verify.exceptions.ConsistencyWithSnapPeaNumericalVerifyError">
1485
- <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">ConsistencyWithSnapPeaNumericalVerifyError</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">snappea_value</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.exceptions.ConsistencyWithSnapPeaNumericalVerifyError" title="Permalink to this definition"></a></dt>
1486
- <dd><p>Exception raised when there is a significant numerical difference
1487
- between the values computed by the SnapPea kernel and by this module
1488
- for a given quantity.</p>
1489
- </dd></dl>
1490
-
1491
- <dl class="py class">
1492
- <dt class="sig sig-object py" id="snappy.verify.exceptions.ConsistencyWithSnapPeaType">
1493
- <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">ConsistencyWithSnapPeaType</span></span><a class="headerlink" href="#snappy.verify.exceptions.ConsistencyWithSnapPeaType" title="Permalink to this definition"></a></dt>
1494
- <dd><p>A base class for exceptions raised when there is a difference
1495
- between the values computed by the SnapPea kernel and by this module
1496
- for a given quantity.</p>
1497
- </dd></dl>
1498
-
1499
1058
  <dl class="py class">
1500
1059
  <dt class="sig sig-object py" id="snappy.verify.exceptions.CuspConsistencyType">
1501
- <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">CuspConsistencyType</span></span><a class="headerlink" href="#snappy.verify.exceptions.CuspConsistencyType" title="Permalink to this definition"></a></dt>
1060
+ <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">CuspConsistencyType</span></span><a class="headerlink" href="#snappy.verify.exceptions.CuspConsistencyType" title="Link to this definition"></a></dt>
1502
1061
  <dd><p>A base class indicating that verificatin of an equation involving a cusp
1503
1062
  failed.</p>
1504
1063
  </dd></dl>
1505
1064
 
1506
- <dl class="py exception">
1507
- <dt class="sig sig-object py" id="snappy.verify.exceptions.CuspDevelopmentExactVerifyError">
1508
- <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">CuspDevelopmentExactVerifyError</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">value2</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.exceptions.CuspDevelopmentExactVerifyError" title="Permalink to this definition"></a></dt>
1509
- <dd><p>Raised when finding a consistent assignment of side lengths to the
1510
- Euclidean Horotriangles to form a Euclidean Horotorus for a cusp failed
1511
- using exact arithmetic.</p>
1512
- </dd></dl>
1513
-
1514
- <dl class="py class">
1515
- <dt class="sig sig-object py" id="snappy.verify.exceptions.CuspDevelopmentType">
1516
- <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">CuspDevelopmentType</span></span><a class="headerlink" href="#snappy.verify.exceptions.CuspDevelopmentType" title="Permalink to this definition"></a></dt>
1517
- <dd><p>A base class indicating that there was a failure to find a consistent
1518
- assignment of side lengths to the Euclidean Horotriangles to form a
1519
- Euclidean Horotorus for a cusp.</p>
1520
- </dd></dl>
1521
-
1522
1065
  <dl class="py exception">
1523
1066
  <dt class="sig sig-object py" id="snappy.verify.exceptions.CuspEquationExactVerifyError">
1524
- <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">CuspEquationExactVerifyError</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">expected_value</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.exceptions.CuspEquationExactVerifyError" title="Permalink to this definition"></a></dt>
1067
+ <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">CuspEquationExactVerifyError</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">expected_value</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.exceptions.CuspEquationExactVerifyError" title="Link to this definition"></a></dt>
1525
1068
  <dd><p>Exception for failed verification of a polynomial cusp gluing equation
1526
1069
  using exact arithmetics.</p>
1527
1070
  </dd></dl>
1528
1071
 
1529
1072
  <dl class="py exception">
1530
1073
  <dt class="sig sig-object py" id="snappy.verify.exceptions.CuspEquationLogLiftNumericalVerifyError">
1531
- <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">CuspEquationLogLiftNumericalVerifyError</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">expected_value</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.exceptions.CuspEquationLogLiftNumericalVerifyError" title="Permalink to this definition"></a></dt>
1074
+ <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">CuspEquationLogLiftNumericalVerifyError</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">expected_value</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.exceptions.CuspEquationLogLiftNumericalVerifyError" title="Link to this definition"></a></dt>
1532
1075
  <dd><p>Exception for failed numerical verification that a logarithmic cusp
1533
1076
  equation has error bound by epsilon.</p>
1534
1077
  </dd></dl>
1535
1078
 
1536
1079
  <dl class="py class">
1537
1080
  <dt class="sig sig-object py" id="snappy.verify.exceptions.CuspEquationType">
1538
- <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">CuspEquationType</span></span><a class="headerlink" href="#snappy.verify.exceptions.CuspEquationType" title="Permalink to this definition"></a></dt>
1081
+ <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">CuspEquationType</span></span><a class="headerlink" href="#snappy.verify.exceptions.CuspEquationType" title="Link to this definition"></a></dt>
1539
1082
  <dd><p>A base class indicating that a cusp gluing equation (involving the
1540
1083
  shapes) failed.</p>
1541
1084
  </dd></dl>
1542
1085
 
1543
1086
  <dl class="py exception">
1544
1087
  <dt class="sig sig-object py" id="snappy.verify.exceptions.EdgeEquationExactVerifyError">
1545
- <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">EdgeEquationExactVerifyError</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.exceptions.EdgeEquationExactVerifyError" title="Permalink to this definition"></a></dt>
1088
+ <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">EdgeEquationExactVerifyError</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.exceptions.EdgeEquationExactVerifyError" title="Link to this definition"></a></dt>
1546
1089
  <dd><p>Exception for failed verification of a polynomial edge equation
1547
1090
  using exact arithmetics.</p>
1548
1091
  </dd></dl>
1549
1092
 
1550
1093
  <dl class="py exception">
1551
1094
  <dt class="sig sig-object py" id="snappy.verify.exceptions.EdgeEquationLogLiftNumericalVerifyError">
1552
- <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">EdgeEquationLogLiftNumericalVerifyError</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.exceptions.EdgeEquationLogLiftNumericalVerifyError" title="Permalink to this definition"></a></dt>
1095
+ <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">EdgeEquationLogLiftNumericalVerifyError</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.exceptions.EdgeEquationLogLiftNumericalVerifyError" title="Link to this definition"></a></dt>
1553
1096
  <dd><p>Exception for failed numerical verification that a logarithmic edge
1554
1097
  equation has error bound by epsilon.</p>
1555
1098
  </dd></dl>
1556
1099
 
1557
1100
  <dl class="py class">
1558
1101
  <dt class="sig sig-object py" id="snappy.verify.exceptions.EdgeEquationType">
1559
- <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">EdgeEquationType</span></span><a class="headerlink" href="#snappy.verify.exceptions.EdgeEquationType" title="Permalink to this definition"></a></dt>
1102
+ <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">EdgeEquationType</span></span><a class="headerlink" href="#snappy.verify.exceptions.EdgeEquationType" title="Link to this definition"></a></dt>
1560
1103
  <dd><p>A base class indicating that an edge equation could not be verified.</p>
1561
1104
  </dd></dl>
1562
1105
 
1563
1106
  <dl class="py class">
1564
1107
  <dt class="sig sig-object py" id="snappy.verify.exceptions.EquationType">
1565
- <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">EquationType</span></span><a class="headerlink" href="#snappy.verify.exceptions.EquationType" title="Permalink to this definition"></a></dt>
1108
+ <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">EquationType</span></span><a class="headerlink" href="#snappy.verify.exceptions.EquationType" title="Link to this definition"></a></dt>
1566
1109
  <dd><p>A base class to derive subclasses which indicate what kind of
1567
1110
  equation failed to be verified.</p>
1568
1111
  </dd></dl>
1569
1112
 
1570
1113
  <dl class="py exception">
1571
1114
  <dt class="sig sig-object py" id="snappy.verify.exceptions.ExactVerifyError">
1572
- <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">ExactVerifyError</span></span><a class="headerlink" href="#snappy.verify.exceptions.ExactVerifyError" title="Permalink to this definition"></a></dt>
1115
+ <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">ExactVerifyError</span></span><a class="headerlink" href="#snappy.verify.exceptions.ExactVerifyError" title="Link to this definition"></a></dt>
1573
1116
  <dd><p>The base for all exceptions resulting from a failed verification of an
1574
1117
  equation using exact arithmetics.</p>
1575
1118
  </dd></dl>
1576
1119
 
1577
1120
  <dl class="py exception">
1578
1121
  <dt class="sig sig-object py" id="snappy.verify.exceptions.InequalityNumericalVerifyError">
1579
- <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">InequalityNumericalVerifyError</span></span><a class="headerlink" href="#snappy.verify.exceptions.InequalityNumericalVerifyError" title="Permalink to this definition"></a></dt>
1122
+ <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">InequalityNumericalVerifyError</span></span><a class="headerlink" href="#snappy.verify.exceptions.InequalityNumericalVerifyError" title="Link to this definition"></a></dt>
1580
1123
  <dd><p>The base for all exceptions resulting from a failed numerical
1581
1124
  verification of an inequality (typically by interval arithmetics).</p>
1582
1125
  </dd></dl>
1583
1126
 
1584
1127
  <dl class="py exception">
1585
1128
  <dt class="sig sig-object py" id="snappy.verify.exceptions.IsZeroExactVerifyError">
1586
- <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">IsZeroExactVerifyError</span></span><a class="headerlink" href="#snappy.verify.exceptions.IsZeroExactVerifyError" title="Permalink to this definition"></a></dt>
1129
+ <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">IsZeroExactVerifyError</span></span><a class="headerlink" href="#snappy.verify.exceptions.IsZeroExactVerifyError" title="Link to this definition"></a></dt>
1587
1130
  <dd><p>The base for all exceptions resulting from verifying that a desired
1588
1131
  quantity is zero using exact arithmetics.</p>
1589
1132
  </dd></dl>
1590
1133
 
1591
1134
  <dl class="py exception">
1592
1135
  <dt class="sig sig-object py" id="snappy.verify.exceptions.LogLiftNumericalVerifyError">
1593
- <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">LogLiftNumericalVerifyError</span></span><a class="headerlink" href="#snappy.verify.exceptions.LogLiftNumericalVerifyError" title="Permalink to this definition"></a></dt>
1136
+ <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">LogLiftNumericalVerifyError</span></span><a class="headerlink" href="#snappy.verify.exceptions.LogLiftNumericalVerifyError" title="Link to this definition"></a></dt>
1594
1137
  <dd><p>To verify a logarithmic gluing equation, the verify module will usually
1595
1138
  first verify the corresponding polynomial gluing equation.
1596
1139
  This means that the logarithmic gluing equation will be fulfilled up
@@ -1605,7 +1148,7 @@ failed.</p>
1605
1148
 
1606
1149
  <dl class="py exception">
1607
1150
  <dt class="sig sig-object py" id="snappy.verify.exceptions.NumericalVerifyError">
1608
- <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">NumericalVerifyError</span></span><a class="headerlink" href="#snappy.verify.exceptions.NumericalVerifyError" title="Permalink to this definition"></a></dt>
1151
+ <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">NumericalVerifyError</span></span><a class="headerlink" href="#snappy.verify.exceptions.NumericalVerifyError" title="Link to this definition"></a></dt>
1609
1152
  <dd><p>The base for all exceptions resulting from a failed numerical
1610
1153
  verification of an equality (using some epsilon) or inequality
1611
1154
  (typically by interval arithmetics).</p>
@@ -1613,31 +1156,31 @@ verification of an equality (using some epsilon) or inequality
1613
1156
 
1614
1157
  <dl class="py exception">
1615
1158
  <dt class="sig sig-object py" id="snappy.verify.exceptions.ShapePositiveImaginaryPartNumericalVerifyError">
1616
- <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">ShapePositiveImaginaryPartNumericalVerifyError</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.exceptions.ShapePositiveImaginaryPartNumericalVerifyError" title="Permalink to this definition"></a></dt>
1159
+ <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">ShapePositiveImaginaryPartNumericalVerifyError</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.exceptions.ShapePositiveImaginaryPartNumericalVerifyError" title="Link to this definition"></a></dt>
1617
1160
  <dd><p>Failed numerical verification of a shape having positive imaginary part.</p>
1618
1161
  </dd></dl>
1619
1162
 
1620
1163
  <dl class="py class">
1621
1164
  <dt class="sig sig-object py" id="snappy.verify.exceptions.ShapeType">
1622
- <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">ShapeType</span></span><a class="headerlink" href="#snappy.verify.exceptions.ShapeType" title="Permalink to this definition"></a></dt>
1165
+ <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">ShapeType</span></span><a class="headerlink" href="#snappy.verify.exceptions.ShapeType" title="Link to this definition"></a></dt>
1623
1166
  <dd><p>Base class for failed verification of legal shapes.</p>
1624
1167
  </dd></dl>
1625
1168
 
1626
1169
  <dl class="py exception">
1627
1170
  <dt class="sig sig-object py" id="snappy.verify.exceptions.TiltInequalityNumericalVerifyError">
1628
- <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">TiltInequalityNumericalVerifyError</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.exceptions.TiltInequalityNumericalVerifyError" title="Permalink to this definition"></a></dt>
1171
+ <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">TiltInequalityNumericalVerifyError</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.exceptions.TiltInequalityNumericalVerifyError" title="Link to this definition"></a></dt>
1629
1172
  <dd><p>Numerically verifying that a tilt is negative has failed.</p>
1630
1173
  </dd></dl>
1631
1174
 
1632
1175
  <dl class="py exception">
1633
1176
  <dt class="sig sig-object py" id="snappy.verify.exceptions.TiltIsZeroExactVerifyError">
1634
- <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">TiltIsZeroExactVerifyError</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.exceptions.TiltIsZeroExactVerifyError" title="Permalink to this definition"></a></dt>
1177
+ <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">TiltIsZeroExactVerifyError</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.exceptions.TiltIsZeroExactVerifyError" title="Link to this definition"></a></dt>
1635
1178
  <dd><p>Verifying that a tilt is zero has failed using exact arithmetic.</p>
1636
1179
  </dd></dl>
1637
1180
 
1638
1181
  <dl class="py exception">
1639
1182
  <dt class="sig sig-object py" id="snappy.verify.exceptions.TiltProvenPositiveNumericalVerifyError">
1640
- <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">TiltProvenPositiveNumericalVerifyError</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.exceptions.TiltProvenPositiveNumericalVerifyError" title="Permalink to this definition"></a></dt>
1183
+ <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">TiltProvenPositiveNumericalVerifyError</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.exceptions.TiltProvenPositiveNumericalVerifyError" title="Link to this definition"></a></dt>
1641
1184
  <dd><p>Numerically verifying that a tilt is negative has not only failed, we
1642
1185
  proved that the tilt is positive and thus that this cannot be a
1643
1186
  proto-canonical triangulation.</p>
@@ -1645,13 +1188,13 @@ proto-canonical triangulation.</p>
1645
1188
 
1646
1189
  <dl class="py class">
1647
1190
  <dt class="sig sig-object py" id="snappy.verify.exceptions.TiltType">
1648
- <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">TiltType</span></span><a class="headerlink" href="#snappy.verify.exceptions.TiltType" title="Permalink to this definition"></a></dt>
1191
+ <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">TiltType</span></span><a class="headerlink" href="#snappy.verify.exceptions.TiltType" title="Link to this definition"></a></dt>
1649
1192
  <dd><p>A base class relating to tilts.</p>
1650
1193
  </dd></dl>
1651
1194
 
1652
1195
  <dl class="py exception">
1653
1196
  <dt class="sig sig-object py" id="snappy.verify.exceptions.VerifyErrorBase">
1654
- <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">VerifyErrorBase</span></span><a class="headerlink" href="#snappy.verify.exceptions.VerifyErrorBase" title="Permalink to this definition"></a></dt>
1197
+ <em class="property"><span class="pre">exception</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">snappy.verify.exceptions.</span></span><span class="sig-name descname"><span class="pre">VerifyErrorBase</span></span><a class="headerlink" href="#snappy.verify.exceptions.VerifyErrorBase" title="Link to this definition"></a></dt>
1655
1198
  <dd><p>The base for all exceptions related to verification.</p>
1656
1199
  </dd></dl>
1657
1200
 
@@ -1662,14 +1205,14 @@ proto-canonical triangulation.</p>
1662
1205
  </div>
1663
1206
  </div>
1664
1207
  <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
1665
- <a href="verify_canon.html" class="btn btn-neutral float-left" title="Canonical retriangulation and isometry signature" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
1208
+ <a href="verify.html" class="btn btn-neutral float-left" title="Verified computations" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
1666
1209
  <a href="other.html" class="btn btn-neutral float-right" title="Other components" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
1667
1210
  </div>
1668
1211
 
1669
1212
  <hr/>
1670
1213
 
1671
1214
  <div role="contentinfo">
1672
- <p>&#169; Copyright 2009-2023, by Marc Culler, Nathan Dunfield, Matthias Goerner, Jeffrey Weeks and others.</p>
1215
+ <p>&#169; Copyright 2009-2025, by Marc Culler, Nathan Dunfield, Matthias Goerner, Jeffrey Weeks and others.</p>
1673
1216
  </div>
1674
1217
 
1675
1218
  Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a