snappy 3.0.3__cp38-cp38-macosx_11_0_arm64.whl → 3.2__cp38-cp38-macosx_11_0_arm64.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (401) hide show
  1. snappy/CyOpenGL.cpython-38-darwin.so +0 -0
  2. snappy/SnapPy.cpython-38-darwin.so +0 -0
  3. snappy/SnapPyHP.cpython-38-darwin.so +0 -0
  4. snappy/__init__.py +373 -426
  5. snappy/app.py +240 -75
  6. snappy/app_menus.py +93 -78
  7. snappy/browser.py +87 -63
  8. snappy/cache.py +5 -8
  9. snappy/canonical.py +249 -0
  10. snappy/{verify/cusp_shapes.py → cusps/__init__.py} +11 -19
  11. snappy/cusps/cusp_area_matrix.py +101 -0
  12. snappy/{verify/cusp_areas.py → cusps/cusp_areas_from_matrix.py} +39 -54
  13. snappy/cusps/maximal_cusp_area_matrix.py +136 -0
  14. snappy/cusps/test.py +21 -0
  15. snappy/cusps/trig_cusp_area_matrix.py +63 -0
  16. snappy/database.py +40 -31
  17. snappy/db_utilities.py +13 -14
  18. snappy/decorated_isosig.py +377 -133
  19. snappy/dev/extended_ptolemy/complexVolumesClosed.py +42 -9
  20. snappy/dev/extended_ptolemy/extended.py +32 -25
  21. snappy/dev/extended_ptolemy/giac_rur.py +23 -8
  22. snappy/dev/extended_ptolemy/phc_wrapper.py +10 -10
  23. snappy/dev/vericlosed/computeApproxHyperbolicStructureOrb.py +2 -1
  24. snappy/dev/vericlosed/gimbalLoopFinder.py +5 -5
  25. snappy/dev/vericlosed/hyperbolicStructure.py +3 -3
  26. snappy/dev/vericlosed/oneVertexTruncatedComplex.py +2 -2
  27. snappy/dev/vericlosed/truncatedComplex.py +3 -2
  28. snappy/dev/vericlosed/verifyHyperbolicStructureEngine.py +4 -3
  29. snappy/doc/_images/geodesics.jpg +0 -0
  30. snappy/doc/_images/m004_paper_plane_on_systole.jpg +0 -0
  31. snappy/doc/_images/m125_paper_plane.jpg +0 -0
  32. snappy/doc/_images/o9_00000_systole_paper_plane.jpg +0 -0
  33. snappy/doc/_images/o9_00000_systole_paper_plane_closer.jpg +0 -0
  34. snappy/doc/_sources/additional_classes.rst.txt +1 -0
  35. snappy/doc/_sources/credits.rst.txt +6 -1
  36. snappy/doc/_sources/development.rst.txt +69 -50
  37. snappy/doc/_sources/index.rst.txt +101 -66
  38. snappy/doc/_sources/installing.rst.txt +148 -165
  39. snappy/doc/_sources/news.rst.txt +136 -32
  40. snappy/doc/_sources/ptolemy.rst.txt +1 -1
  41. snappy/doc/_sources/ptolemy_examples1.rst.txt +9 -8
  42. snappy/doc/_sources/ptolemy_examples2.rst.txt +3 -3
  43. snappy/doc/_sources/ptolemy_examples3.rst.txt +14 -14
  44. snappy/doc/_sources/ptolemy_prelim.rst.txt +1 -1
  45. snappy/doc/_sources/snap.rst.txt +2 -2
  46. snappy/doc/_sources/snappy.rst.txt +1 -1
  47. snappy/doc/_sources/triangulation.rst.txt +3 -2
  48. snappy/doc/_sources/verify.rst.txt +89 -29
  49. snappy/doc/_sources/verify_internals.rst.txt +5 -16
  50. snappy/doc/_static/SnapPy-horizontal-128.png +0 -0
  51. snappy/doc/_static/SnapPy.ico +0 -0
  52. snappy/doc/_static/_sphinx_javascript_frameworks_compat.js +123 -0
  53. snappy/doc/_static/basic.css +47 -27
  54. snappy/doc/_static/css/badge_only.css +1 -0
  55. snappy/doc/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
  56. snappy/doc/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
  57. snappy/doc/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
  58. snappy/doc/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
  59. snappy/doc/_static/css/fonts/fontawesome-webfont.eot +0 -0
  60. snappy/doc/_static/css/fonts/fontawesome-webfont.svg +2671 -0
  61. snappy/doc/_static/css/fonts/fontawesome-webfont.ttf +0 -0
  62. snappy/doc/_static/css/fonts/fontawesome-webfont.woff +0 -0
  63. snappy/doc/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
  64. snappy/doc/_static/css/fonts/lato-bold-italic.woff +0 -0
  65. snappy/doc/_static/css/fonts/lato-bold-italic.woff2 +0 -0
  66. snappy/doc/_static/css/fonts/lato-bold.woff +0 -0
  67. snappy/doc/_static/css/fonts/lato-bold.woff2 +0 -0
  68. snappy/doc/_static/css/fonts/lato-normal-italic.woff +0 -0
  69. snappy/doc/_static/css/fonts/lato-normal-italic.woff2 +0 -0
  70. snappy/doc/_static/css/fonts/lato-normal.woff +0 -0
  71. snappy/doc/_static/css/fonts/lato-normal.woff2 +0 -0
  72. snappy/doc/_static/css/theme.css +4 -0
  73. snappy/doc/_static/doctools.js +107 -274
  74. snappy/doc/_static/documentation_options.js +6 -5
  75. snappy/doc/_static/fonts/Lato/lato-bold.eot +0 -0
  76. snappy/doc/_static/fonts/Lato/lato-bold.ttf +0 -0
  77. snappy/doc/_static/fonts/Lato/lato-bold.woff +0 -0
  78. snappy/doc/_static/fonts/Lato/lato-bold.woff2 +0 -0
  79. snappy/doc/_static/fonts/Lato/lato-bolditalic.eot +0 -0
  80. snappy/doc/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
  81. snappy/doc/_static/fonts/Lato/lato-bolditalic.woff +0 -0
  82. snappy/doc/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
  83. snappy/doc/_static/fonts/Lato/lato-italic.eot +0 -0
  84. snappy/doc/_static/fonts/Lato/lato-italic.ttf +0 -0
  85. snappy/doc/_static/fonts/Lato/lato-italic.woff +0 -0
  86. snappy/doc/_static/fonts/Lato/lato-italic.woff2 +0 -0
  87. snappy/doc/_static/fonts/Lato/lato-regular.eot +0 -0
  88. snappy/doc/_static/fonts/Lato/lato-regular.ttf +0 -0
  89. snappy/doc/_static/fonts/Lato/lato-regular.woff +0 -0
  90. snappy/doc/_static/fonts/Lato/lato-regular.woff2 +0 -0
  91. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
  92. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
  93. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
  94. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
  95. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
  96. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
  97. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
  98. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
  99. snappy/doc/_static/jquery.js +2 -2
  100. snappy/doc/_static/js/badge_only.js +1 -0
  101. snappy/doc/_static/js/theme.js +1 -0
  102. snappy/doc/_static/js/versions.js +228 -0
  103. snappy/doc/_static/language_data.js +3 -101
  104. snappy/doc/_static/pygments.css +1 -0
  105. snappy/doc/_static/searchtools.js +489 -398
  106. snappy/doc/_static/snappy_furo.css +33 -0
  107. snappy/doc/_static/snappy_sphinx_rtd_theme.css +42 -0
  108. snappy/doc/_static/sphinx_highlight.js +154 -0
  109. snappy/doc/additional_classes.html +688 -263
  110. snappy/doc/bugs.html +107 -94
  111. snappy/doc/censuses.html +155 -127
  112. snappy/doc/credits.html +115 -104
  113. snappy/doc/development.html +184 -146
  114. snappy/doc/genindex.html +287 -204
  115. snappy/doc/index.html +189 -150
  116. snappy/doc/installing.html +259 -266
  117. snappy/doc/manifold.html +1626 -592
  118. snappy/doc/manifoldhp.html +119 -105
  119. snappy/doc/news.html +198 -104
  120. snappy/doc/objects.inv +0 -0
  121. snappy/doc/other.html +117 -105
  122. snappy/doc/platonic_census.html +161 -114
  123. snappy/doc/plink.html +113 -105
  124. snappy/doc/ptolemy.html +131 -108
  125. snappy/doc/ptolemy_classes.html +242 -223
  126. snappy/doc/ptolemy_examples1.html +144 -130
  127. snappy/doc/ptolemy_examples2.html +141 -129
  128. snappy/doc/ptolemy_examples3.html +148 -132
  129. snappy/doc/ptolemy_examples4.html +131 -111
  130. snappy/doc/ptolemy_prelim.html +162 -138
  131. snappy/doc/py-modindex.html +104 -69
  132. snappy/doc/screenshots.html +117 -108
  133. snappy/doc/search.html +115 -84
  134. snappy/doc/searchindex.js +1 -1
  135. snappy/doc/snap.html +109 -96
  136. snappy/doc/snappy.html +134 -97
  137. snappy/doc/spherogram.html +259 -187
  138. snappy/doc/todo.html +107 -94
  139. snappy/doc/triangulation.html +1380 -111
  140. snappy/doc/tutorial.html +107 -94
  141. snappy/doc/verify.html +194 -125
  142. snappy/doc/verify_internals.html +248 -686
  143. snappy/drilling/__init__.py +456 -0
  144. snappy/drilling/barycentric.py +103 -0
  145. snappy/drilling/constants.py +5 -0
  146. snappy/drilling/crush.py +270 -0
  147. snappy/drilling/cusps.py +125 -0
  148. snappy/drilling/debug.py +242 -0
  149. snappy/drilling/epsilons.py +6 -0
  150. snappy/drilling/exceptions.py +55 -0
  151. snappy/drilling/moves.py +620 -0
  152. snappy/drilling/peripheral_curves.py +210 -0
  153. snappy/drilling/perturb.py +188 -0
  154. snappy/drilling/shorten.py +36 -0
  155. snappy/drilling/subdivide.py +274 -0
  156. snappy/drilling/test.py +23 -0
  157. snappy/drilling/test_cases.py +126 -0
  158. snappy/drilling/tracing.py +351 -0
  159. snappy/exceptions.py +23 -3
  160. snappy/export_stl.py +20 -14
  161. snappy/exterior_to_link/__init__.py +2 -0
  162. snappy/exterior_to_link/barycentric_geometry.py +463 -0
  163. snappy/exterior_to_link/exceptions.py +6 -0
  164. snappy/exterior_to_link/geodesic_map.json +14408 -0
  165. snappy/exterior_to_link/hyp_utils.py +112 -0
  166. snappy/exterior_to_link/link_projection.py +323 -0
  167. snappy/exterior_to_link/main.py +197 -0
  168. snappy/exterior_to_link/mcomplex_with_expansion.py +261 -0
  169. snappy/exterior_to_link/mcomplex_with_link.py +687 -0
  170. snappy/exterior_to_link/mcomplex_with_memory.py +162 -0
  171. snappy/exterior_to_link/pl_utils.py +491 -0
  172. snappy/exterior_to_link/put_in_S3.py +156 -0
  173. snappy/exterior_to_link/rational_linear_algebra.py +123 -0
  174. snappy/exterior_to_link/rational_linear_algebra_wrapped.py +135 -0
  175. snappy/exterior_to_link/simplify_to_base_tri.py +114 -0
  176. snappy/exterior_to_link/stored_moves.py +475 -0
  177. snappy/exterior_to_link/test.py +31 -0
  178. snappy/geometric_structure/__init__.py +212 -0
  179. snappy/geometric_structure/cusp_neighborhood/__init__.py +3 -0
  180. snappy/geometric_structure/cusp_neighborhood/complex_cusp_cross_section.py +697 -0
  181. snappy/geometric_structure/cusp_neighborhood/cusp_cross_section_base.py +484 -0
  182. snappy/geometric_structure/cusp_neighborhood/exceptions.py +42 -0
  183. snappy/geometric_structure/cusp_neighborhood/real_cusp_cross_section.py +298 -0
  184. snappy/geometric_structure/cusp_neighborhood/tiles_for_cusp_neighborhood.py +159 -0
  185. snappy/geometric_structure/cusp_neighborhood/vertices.py +32 -0
  186. snappy/geometric_structure/geodesic/__init__.py +0 -0
  187. snappy/geometric_structure/geodesic/add_core_curves.py +152 -0
  188. snappy/geometric_structure/geodesic/avoid_core_curves.py +369 -0
  189. snappy/geometric_structure/geodesic/canonical_keys.py +52 -0
  190. snappy/geometric_structure/geodesic/check_away_from_core_curve.py +60 -0
  191. snappy/geometric_structure/geodesic/constants.py +6 -0
  192. snappy/geometric_structure/geodesic/exceptions.py +22 -0
  193. snappy/geometric_structure/geodesic/fixed_points.py +93 -0
  194. snappy/geometric_structure/geodesic/geodesic_start_point_info.py +435 -0
  195. snappy/geometric_structure/geodesic/graph_trace_helper.py +67 -0
  196. snappy/geometric_structure/geodesic/line.py +30 -0
  197. snappy/geometric_structure/geodesic/multiplicity.py +127 -0
  198. snappy/geometric_structure/geodesic/tiles_for_geodesic.py +101 -0
  199. snappy/geometric_structure/test.py +22 -0
  200. snappy/gui.py +36 -36
  201. snappy/horoviewer.py +50 -48
  202. snappy/hyperboloid/__init__.py +212 -0
  203. snappy/hyperboloid/distances.py +245 -0
  204. snappy/hyperboloid/horoball.py +19 -0
  205. snappy/hyperboloid/line.py +35 -0
  206. snappy/hyperboloid/point.py +9 -0
  207. snappy/hyperboloid/triangle.py +29 -0
  208. snappy/{infodialog.py → infowindow.py} +32 -33
  209. snappy/isometry_signature.py +382 -0
  210. snappy/len_spec/__init__.py +596 -0
  211. snappy/len_spec/geodesic_info.py +110 -0
  212. snappy/len_spec/geodesic_key_info_dict.py +117 -0
  213. snappy/len_spec/geodesic_piece.py +143 -0
  214. snappy/len_spec/geometric_structure.py +182 -0
  215. snappy/len_spec/geometry.py +80 -0
  216. snappy/len_spec/length_spectrum_geodesic_info.py +170 -0
  217. snappy/len_spec/spine.py +206 -0
  218. snappy/len_spec/test.py +24 -0
  219. snappy/len_spec/test_cases.py +69 -0
  220. snappy/len_spec/tile.py +275 -0
  221. snappy/len_spec/word.py +86 -0
  222. snappy/manifolds/__init__.py +1 -1
  223. snappy/math_basics.py +176 -0
  224. snappy/matrix.py +525 -0
  225. snappy/number.py +97 -21
  226. snappy/numeric_output_checker.py +37 -27
  227. snappy/pari.py +30 -69
  228. snappy/phone_home.py +25 -20
  229. snappy/polyviewer.py +39 -37
  230. snappy/ptolemy/__init__.py +4 -6
  231. snappy/ptolemy/component.py +14 -12
  232. snappy/ptolemy/coordinates.py +312 -295
  233. snappy/ptolemy/fieldExtensions.py +14 -12
  234. snappy/ptolemy/findLoops.py +43 -31
  235. snappy/ptolemy/geometricRep.py +24 -26
  236. snappy/ptolemy/homology.py +12 -7
  237. snappy/ptolemy/manifoldMethods.py +69 -70
  238. snappy/ptolemy/matrix.py +65 -26
  239. snappy/ptolemy/numericalSolutionsToGroebnerBasis.py +18 -14
  240. snappy/ptolemy/polynomial.py +125 -119
  241. snappy/ptolemy/processComponents.py +36 -30
  242. snappy/ptolemy/processFileBase.py +79 -18
  243. snappy/ptolemy/processFileDispatch.py +13 -14
  244. snappy/ptolemy/processMagmaFile.py +44 -39
  245. snappy/ptolemy/processRurFile.py +18 -11
  246. snappy/ptolemy/ptolemyGeneralizedObstructionClass.py +20 -17
  247. snappy/ptolemy/ptolemyObstructionClass.py +13 -17
  248. snappy/ptolemy/ptolemyVariety.py +190 -121
  249. snappy/ptolemy/ptolemyVarietyPrimeIdealGroebnerBasis.py +20 -19
  250. snappy/ptolemy/reginaWrapper.py +25 -29
  251. snappy/ptolemy/rur.py +6 -14
  252. snappy/ptolemy/solutionsToPrimeIdealGroebnerBasis.py +27 -22
  253. snappy/ptolemy/test.py +247 -188
  254. snappy/ptolemy/utilities.py +41 -43
  255. snappy/raytracing/__init__.py +64 -0
  256. snappy/raytracing/additional_horospheres.py +64 -0
  257. snappy/raytracing/additional_len_spec_choices.py +63 -0
  258. snappy/raytracing/cohomology_fractal.py +10 -6
  259. snappy/raytracing/eyeball.py +123 -0
  260. snappy/raytracing/finite_raytracing_data.py +48 -38
  261. snappy/raytracing/finite_viewer.py +218 -210
  262. snappy/raytracing/geodesic_tube_info.py +174 -0
  263. snappy/raytracing/geodesics.py +246 -0
  264. snappy/raytracing/geodesics_window.py +258 -0
  265. snappy/raytracing/gui_utilities.py +152 -40
  266. snappy/raytracing/hyperboloid_navigation.py +102 -52
  267. snappy/raytracing/hyperboloid_utilities.py +114 -261
  268. snappy/raytracing/ideal_raytracing_data.py +256 -179
  269. snappy/raytracing/inside_viewer.py +522 -253
  270. snappy/raytracing/pack.py +22 -0
  271. snappy/raytracing/raytracing_data.py +46 -34
  272. snappy/raytracing/raytracing_view.py +190 -109
  273. snappy/raytracing/shaders/Eye.png +0 -0
  274. snappy/raytracing/shaders/NonGeometric.png +0 -0
  275. snappy/raytracing/shaders/__init__.py +60 -4
  276. snappy/raytracing/shaders/fragment.glsl +575 -148
  277. snappy/raytracing/test.py +29 -0
  278. snappy/raytracing/tooltip.py +146 -0
  279. snappy/raytracing/upper_halfspace_utilities.py +98 -0
  280. snappy/raytracing/view_scale_controller.py +98 -0
  281. snappy/raytracing/zoom_slider/__init__.py +32 -29
  282. snappy/raytracing/zoom_slider/test.py +2 -0
  283. snappy/sage_helper.py +69 -123
  284. snappy/{preferences.py → settings.py} +167 -145
  285. snappy/shell.py +4 -0
  286. snappy/snap/__init__.py +12 -8
  287. snappy/snap/character_varieties.py +24 -18
  288. snappy/snap/find_field.py +35 -34
  289. snappy/snap/fundamental_polyhedron.py +99 -85
  290. snappy/snap/generators.py +6 -8
  291. snappy/snap/interval_reps.py +18 -6
  292. snappy/snap/kernel_structures.py +8 -3
  293. snappy/snap/mcomplex_base.py +1 -2
  294. snappy/snap/nsagetools.py +107 -53
  295. snappy/snap/peripheral/__init__.py +1 -1
  296. snappy/snap/peripheral/dual_cellulation.py +15 -7
  297. snappy/snap/peripheral/link.py +20 -16
  298. snappy/snap/peripheral/peripheral.py +22 -14
  299. snappy/snap/peripheral/surface.py +47 -50
  300. snappy/snap/peripheral/test.py +8 -8
  301. snappy/snap/polished_reps.py +65 -40
  302. snappy/snap/shapes.py +41 -22
  303. snappy/snap/slice_obs_HKL.py +64 -25
  304. snappy/snap/t3mlite/arrow.py +88 -51
  305. snappy/snap/t3mlite/corner.py +5 -6
  306. snappy/snap/t3mlite/edge.py +32 -21
  307. snappy/snap/t3mlite/face.py +7 -9
  308. snappy/snap/t3mlite/files.py +31 -23
  309. snappy/snap/t3mlite/homology.py +14 -10
  310. snappy/snap/t3mlite/linalg.py +158 -56
  311. snappy/snap/t3mlite/mcomplex.py +739 -291
  312. snappy/snap/t3mlite/perm4.py +236 -84
  313. snappy/snap/t3mlite/setup.py +9 -10
  314. snappy/snap/t3mlite/simplex.py +65 -48
  315. snappy/snap/t3mlite/spun.py +42 -30
  316. snappy/snap/t3mlite/surface.py +45 -45
  317. snappy/snap/t3mlite/test.py +3 -0
  318. snappy/snap/t3mlite/test_vs_regina.py +17 -13
  319. snappy/snap/t3mlite/tetrahedron.py +25 -24
  320. snappy/snap/t3mlite/vertex.py +8 -13
  321. snappy/snap/test.py +45 -52
  322. snappy/snap/utilities.py +66 -65
  323. snappy/test.py +155 -158
  324. snappy/test_cases.py +263 -0
  325. snappy/testing.py +131 -0
  326. snappy/tiling/__init__.py +2 -0
  327. snappy/tiling/canonical_key_dict.py +59 -0
  328. snappy/tiling/dict_based_set.py +79 -0
  329. snappy/tiling/floor.py +49 -0
  330. snappy/tiling/hyperboloid_dict.py +54 -0
  331. snappy/tiling/iter_utils.py +78 -0
  332. snappy/tiling/lifted_tetrahedron.py +22 -0
  333. snappy/tiling/lifted_tetrahedron_set.py +54 -0
  334. snappy/tiling/real_hash_dict.py +164 -0
  335. snappy/tiling/test.py +23 -0
  336. snappy/tiling/tile.py +215 -0
  337. snappy/tiling/triangle.py +33 -0
  338. snappy/tkterminal.py +313 -203
  339. snappy/twister/main.py +1 -8
  340. snappy/twister/twister_core.cpython-38-darwin.so +0 -0
  341. snappy/upper_halfspace/__init__.py +146 -0
  342. snappy/upper_halfspace/ideal_point.py +26 -0
  343. snappy/verify/__init__.py +4 -8
  344. snappy/verify/{verifyCanonical.py → canonical.py} +114 -97
  345. snappy/verify/complex_volume/__init__.py +3 -2
  346. snappy/verify/complex_volume/adjust_torsion.py +13 -11
  347. snappy/verify/complex_volume/closed.py +29 -24
  348. snappy/verify/complex_volume/compute_ptolemys.py +8 -6
  349. snappy/verify/complex_volume/cusped.py +10 -9
  350. snappy/verify/complex_volume/extended_bloch.py +14 -12
  351. snappy/verify/{cuspTranslations.py → cusp_translations.py} +15 -14
  352. snappy/verify/edge_equations.py +80 -0
  353. snappy/verify/exceptions.py +23 -56
  354. snappy/verify/{verifyHyperbolicity.py → hyperbolicity.py} +19 -15
  355. snappy/verify/interval_newton_shapes_engine.py +51 -211
  356. snappy/verify/interval_tree.py +27 -25
  357. snappy/verify/krawczyk_shapes_engine.py +47 -50
  358. snappy/verify/maximal_cusp_area_matrix/__init__.py +17 -86
  359. snappy/verify/maximal_cusp_area_matrix/cusp_tiling_engine.py +58 -48
  360. snappy/verify/maximal_cusp_area_matrix/cusp_translate_engine.py +53 -57
  361. snappy/verify/{realAlgebra.py → real_algebra.py} +26 -20
  362. snappy/verify/shapes.py +10 -7
  363. snappy/verify/short_slopes.py +41 -42
  364. snappy/verify/{squareExtensions.py → square_extensions.py} +96 -92
  365. snappy/verify/test.py +59 -57
  366. snappy/verify/upper_halfspace/extended_matrix.py +5 -5
  367. snappy/verify/upper_halfspace/finite_point.py +44 -31
  368. snappy/verify/upper_halfspace/ideal_point.py +69 -57
  369. snappy/verify/volume.py +15 -12
  370. snappy/version.py +2 -3
  371. {snappy-3.0.3.dist-info → snappy-3.2.dist-info}/METADATA +14 -12
  372. snappy-3.2.dist-info/RECORD +503 -0
  373. {snappy-3.0.3.dist-info → snappy-3.2.dist-info}/WHEEL +1 -1
  374. {snappy-3.0.3.dist-info → snappy-3.2.dist-info}/entry_points.txt +0 -1
  375. {snappy-3.0.3.dist-info → snappy-3.2.dist-info}/top_level.txt +10 -1
  376. snappy/doc/_sources/verify_canon.rst.txt +0 -90
  377. snappy/doc/_static/classic.css +0 -266
  378. snappy/doc/_static/jquery-3.5.1.js +0 -10872
  379. snappy/doc/_static/sidebar.js +0 -159
  380. snappy/doc/_static/underscore-1.13.1.js +0 -2042
  381. snappy/doc/_static/underscore.js +0 -6
  382. snappy/doc/verify_canon.html +0 -283
  383. snappy/ppm_to_png.py +0 -243
  384. snappy/togl/__init__.py +0 -3
  385. snappy/togl/darwin-tk8.6/Togl2.1/LICENSE +0 -28
  386. snappy/togl/darwin-tk8.6/Togl2.1/libTogl2.1.dylib +0 -0
  387. snappy/togl/darwin-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
  388. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
  389. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/libTogl2.1.so +0 -0
  390. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
  391. snappy/togl/win32VC-tk8.6/Togl2.1/LICENSE +0 -28
  392. snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.dll +0 -0
  393. snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.lib +0 -0
  394. snappy/togl/win32VC-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
  395. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
  396. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.dll +0 -0
  397. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.lib +0 -0
  398. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
  399. snappy/verify/cuspCrossSection.py +0 -1413
  400. snappy/verify/mathHelpers.py +0 -64
  401. snappy-3.0.3.dist-info/RECORD +0 -360
@@ -1,55 +1,150 @@
1
1
 
2
- <!DOCTYPE html>
3
2
 
4
- <html>
5
- <head>
6
- <meta charset="utf-8" />
7
- <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
8
-
9
- <title>Internals of verified computations &#8212; SnapPy 3.0.3 documentation</title>
10
- <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
11
- <link rel="stylesheet" type="text/css" href="_static/classic.css" />
12
-
13
- <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
14
- <script src="_static/jquery.js"></script>
15
- <script src="_static/underscore.js"></script>
16
- <script src="_static/doctools.js"></script>
17
-
3
+ <!DOCTYPE html>
4
+ <html class="writer-html5" lang="en" data-content_root="./">
5
+ <head>
6
+ <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
7
+
8
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
9
+ <title>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
+
14
+
15
+ <link rel="shortcut icon" href="_static/SnapPy.ico"/>
16
+ <script src="_static/jquery.js?v=5d32c60e"></script>
17
+ <script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
18
+ <script src="_static/documentation_options.js?v=828ea960"></script>
19
+ <script src="_static/doctools.js?v=9a2dae69"></script>
20
+ <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
21
+ <script src="_static/js/theme.js"></script>
18
22
  <link rel="index" title="Index" href="genindex.html" />
19
23
  <link rel="search" title="Search" href="search.html" />
20
24
  <link rel="next" title="Other components" href="other.html" />
21
- <link rel="prev" title="Canonical retriangulation and isometry signature" href="verify_canon.html" />
22
- </head><body>
23
- <div class="related" role="navigation" aria-label="related navigation">
24
- <h3>Navigation</h3>
25
- <ul>
26
- <li class="right" style="margin-right: 10px">
27
- <a href="genindex.html" title="General Index"
28
- accesskey="I">index</a></li>
29
- <li class="right" >
30
- <a href="py-modindex.html" title="Python Module Index"
31
- >modules</a> |</li>
32
- <li class="right" >
33
- <a href="other.html" title="Other components"
34
- accesskey="N">next</a> |</li>
35
- <li class="right" >
36
- <a href="verify_canon.html" title="Canonical retriangulation and isometry signature"
37
- accesskey="P">previous</a> |</li>
38
- <li class="nav-item nav-item-0"><a href="index.html">SnapPy 3.0.3 documentation</a> &#187;</li>
39
- <li class="nav-item nav-item-1"><a href="verify.html" accesskey="U">Verified computations</a> &#187;</li>
40
- <li class="nav-item nav-item-this"><a href="">Internals of verified computations</a></li>
41
- </ul>
42
- </div>
43
-
44
- <div class="document">
45
- <div class="documentwrapper">
46
- <div class="bodywrapper">
47
- <div class="body" role="main">
48
-
25
+ <link rel="prev" title="Verified computations" href="verify.html" />
26
+ </head>
27
+
28
+ <body class="wy-body-for-nav">
29
+ <div class="wy-grid-for-nav">
30
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
31
+ <div class="wy-side-scroll">
32
+ <div class="wy-side-nav-search" >
33
+
34
+
35
+
36
+ <a href="index.html" class="icon icon-home">
37
+ SnapPy
38
+ <img src="_static/SnapPy-horizontal-128.png" class="logo" alt="Logo"/>
39
+ </a>
40
+ <div role="search">
41
+ <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
42
+ <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
43
+ <input type="hidden" name="check_keywords" value="yes" />
44
+ <input type="hidden" name="area" value="default" />
45
+ </form>
46
+ </div>
47
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
48
+ <ul class="current">
49
+ <li class="toctree-l1"><a class="reference internal" href="installing.html">Installing SnapPy</a></li>
50
+ <li class="toctree-l1"><a class="reference internal" href="screenshots.html">Screenshots: SnapPy in action</a></li>
51
+ <li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorial</a></li>
52
+ <li class="toctree-l1"><a class="reference internal" href="snappy.html">The snappy module and its classes</a></li>
53
+ <li class="toctree-l1"><a class="reference internal" href="plink.html">Using SnapPy’s link editor</a></li>
54
+ <li class="toctree-l1"><a class="reference internal" href="spherogram.html">Links: planar diagrams and invariants</a></li>
55
+ <li class="toctree-l1"><a class="reference internal" href="snap.html">Number theory of hyperbolic 3-manifolds</a></li>
56
+ <li class="toctree-l1 current"><a class="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>
58
+ <li class="toctree-l2"><a class="reference internal" href="verify.html#overview">Overview</a></li>
59
+ <li class="toctree-l2 current"><a class="reference internal" href="verify.html#verified-computation-topics">Verified computation topics</a><ul class="current">
60
+ <li class="toctree-l3 current"><a class="current reference internal" href="#">Internals of verified computations</a><ul>
61
+ <li class="toctree-l4"><a class="reference internal" href="#naming">Naming</a></li>
62
+ <li class="toctree-l4"><a class="reference internal" href="#generating-certified-shape-intervals">Generating certified shape intervals</a><ul>
63
+ <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.CertifiedShapesEngine"><code class="docutils literal notranslate"><span class="pre">CertifiedShapesEngine</span></code></a></li>
64
+ <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.IntervalNewtonShapesEngine"><code class="docutils literal notranslate"><span class="pre">IntervalNewtonShapesEngine</span></code></a></li>
65
+ <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.KrawczykShapesEngine"><code class="docutils literal notranslate"><span class="pre">KrawczykShapesEngine</span></code></a></li>
66
+ </ul>
67
+ </li>
68
+ <li class="toctree-l4"><a class="reference internal" href="#verification-of-hyperbolicity">Verification of hyperbolicity</a><ul>
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>
70
+ </ul>
71
+ </li>
72
+ <li class="toctree-l4"><a class="reference internal" href="#verified-canonical-cell-decompositions">Verified canonical cell decompositions</a><ul>
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>
75
+ </ul>
76
+ </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>
81
+ </ul>
82
+ </li>
83
+ <li class="toctree-l4"><a class="reference internal" href="#module-snappy.verify.exceptions">Exceptions</a><ul>
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>
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>
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>
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>
88
+ <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.exceptions.EdgeEquationExactVerifyError"><code class="docutils literal notranslate"><span class="pre">EdgeEquationExactVerifyError</span></code></a></li>
89
+ <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.exceptions.EdgeEquationLogLiftNumericalVerifyError"><code class="docutils literal notranslate"><span class="pre">EdgeEquationLogLiftNumericalVerifyError</span></code></a></li>
90
+ <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.exceptions.EdgeEquationType"><code class="docutils literal notranslate"><span class="pre">EdgeEquationType</span></code></a></li>
91
+ <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.exceptions.EquationType"><code class="docutils literal notranslate"><span class="pre">EquationType</span></code></a></li>
92
+ <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.exceptions.ExactVerifyError"><code class="docutils literal notranslate"><span class="pre">ExactVerifyError</span></code></a></li>
93
+ <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.exceptions.InequalityNumericalVerifyError"><code class="docutils literal notranslate"><span class="pre">InequalityNumericalVerifyError</span></code></a></li>
94
+ <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.exceptions.IsZeroExactVerifyError"><code class="docutils literal notranslate"><span class="pre">IsZeroExactVerifyError</span></code></a></li>
95
+ <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.exceptions.LogLiftNumericalVerifyError"><code class="docutils literal notranslate"><span class="pre">LogLiftNumericalVerifyError</span></code></a></li>
96
+ <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.exceptions.NumericalVerifyError"><code class="docutils literal notranslate"><span class="pre">NumericalVerifyError</span></code></a></li>
97
+ <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.exceptions.ShapePositiveImaginaryPartNumericalVerifyError"><code class="docutils literal notranslate"><span class="pre">ShapePositiveImaginaryPartNumericalVerifyError</span></code></a></li>
98
+ <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.exceptions.ShapeType"><code class="docutils literal notranslate"><span class="pre">ShapeType</span></code></a></li>
99
+ <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.exceptions.TiltInequalityNumericalVerifyError"><code class="docutils literal notranslate"><span class="pre">TiltInequalityNumericalVerifyError</span></code></a></li>
100
+ <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.exceptions.TiltIsZeroExactVerifyError"><code class="docutils literal notranslate"><span class="pre">TiltIsZeroExactVerifyError</span></code></a></li>
101
+ <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.exceptions.TiltProvenPositiveNumericalVerifyError"><code class="docutils literal notranslate"><span class="pre">TiltProvenPositiveNumericalVerifyError</span></code></a></li>
102
+ <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.exceptions.TiltType"><code class="docutils literal notranslate"><span class="pre">TiltType</span></code></a></li>
103
+ <li class="toctree-l5"><a class="reference internal" href="#snappy.verify.exceptions.VerifyErrorBase"><code class="docutils literal notranslate"><span class="pre">VerifyErrorBase</span></code></a></li>
104
+ </ul>
105
+ </li>
106
+ </ul>
107
+ </li>
108
+ </ul>
109
+ </li>
110
+ </ul>
111
+ </li>
112
+ <li class="toctree-l1"><a class="reference internal" href="other.html">Other components</a></li>
113
+ <li class="toctree-l1"><a class="reference internal" href="news.html">News</a></li>
114
+ <li class="toctree-l1"><a class="reference internal" href="credits.html">Credits</a></li>
115
+ <li class="toctree-l1"><a class="reference internal" href="bugs.html">Reporting bugs and other problems</a></li>
116
+ <li class="toctree-l1"><a class="reference internal" href="todo.html">To Do List</a></li>
117
+ <li class="toctree-l1"><a class="reference internal" href="development.html">Development Basics</a></li>
118
+ </ul>
119
+
120
+ </div>
121
+ </div>
122
+ </nav>
123
+
124
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
125
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
126
+ <a href="index.html">SnapPy</a>
127
+ </nav>
128
+
129
+ <div class="wy-nav-content">
130
+ <div class="rst-content">
131
+ <div role="navigation" aria-label="Page navigation">
132
+ <ul class="wy-breadcrumbs">
133
+ <li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
134
+ <li class="breadcrumb-item"><a href="verify.html">Verified computations</a></li>
135
+ <li class="breadcrumb-item active">Internals of verified computations</li>
136
+ <li class="wy-breadcrumbs-aside">
137
+ </li>
138
+ </ul>
139
+ <hr/>
140
+ </div>
141
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
142
+ <div itemprop="articleBody">
143
+
49
144
  <section id="internals-of-verified-computations">
50
- <h1>Internals of verified computations<a class="headerlink" href="#internals-of-verified-computations" title="Permalink to this headline">¶</a></h1>
145
+ <h1>Internals of verified computations<a class="headerlink" href="#internals-of-verified-computations" title="Link to this heading"></a></h1>
51
146
  <section id="naming">
52
- <h2>Naming<a class="headerlink" href="#naming" title="Permalink to this headline">¶</a></h2>
147
+ <h2>Naming<a class="headerlink" href="#naming" title="Link to this heading"></a></h2>
53
148
  <p>The names of methods containing <code class="docutils literal notranslate"><span class="pre">check</span></code> will raise an exception if
54
149
  the desired property cannot be certified. There are different types of
55
150
  Exceptions to indicate how the certification failed. This type can be
@@ -60,7 +155,7 @@ triangulation or increasing precision or to give up.</p>
60
155
  <code class="docutils literal notranslate"><span class="pre">None</span></code> in such a case.</p>
61
156
  </section>
62
157
  <section id="generating-certified-shape-intervals">
63
- <h2>Generating certified shape intervals<a class="headerlink" href="#generating-certified-shape-intervals" title="Permalink to this headline">¶</a></h2>
158
+ <h2>Generating certified shape intervals<a class="headerlink" href="#generating-certified-shape-intervals" title="Link to this heading"></a></h2>
64
159
  <p>The recommended way to obtain certified intervals for the shapes is via
65
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
66
161
  earlier</span></a>. Here we document the <code class="docutils literal notranslate"><span class="pre">KrawczykShapesEngine</span></code> and
@@ -71,15 +166,15 @@ interval method or the Krawczyk test. <code class="docutils literal notranslate
71
166
  alias of either <code class="docutils literal notranslate"><span class="pre">KrawczykShapesEngine</span></code> or
72
167
  <code class="docutils literal notranslate"><span class="pre">IntervalNewtonShapesEngine</span></code> to determine the default method used by
73
168
  verify.</p>
74
- <span class="target" id="module-snappy.verify"></span><dl class="py attribute">
169
+ <dl class="py attribute" id="module-snappy.verify">
75
170
  <dt class="sig sig-object py" id="snappy.verify.CertifiedShapesEngine">
76
- <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>
77
- <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">snappy.verify.krawczyk_shapes_engine.KrawczykShapesEngine</span></code></a></p>
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>
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>
78
173
  </dd></dl>
79
174
 
80
175
  <dl class="py class">
81
176
  <dt class="sig sig-object py" id="snappy.verify.IntervalNewtonShapesEngine">
82
- <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>
83
178
  <dd><p>An engine that is initialized with an approximated candidate solution to
84
179
  the rectangular gluing equations and produces intervals certified to
85
180
  contain a true solution. After the engine is successfully run, the
@@ -124,7 +219,7 @@ equations of the following form and try to solve them:</p>
124
219
  </li>
125
220
  </ol>
126
221
  <p>In contrast to HIKMOT, we use and return Sage’s native implementation of
127
- (complex) interval arithmetic here, which allows for increased interoperability.
222
+ (complex) interval arithmetic here, which allows for increased interoperability.
128
223
  Another advantage is that Sage supports arbitrary precision. Unfortunately,
129
224
  performance suffers and this implementation is 5-10 times slower than HIKMOT.</p>
130
225
  <p>Here is an example how to explicitly invoke the IntervalNewtonShapesEngine:</p>
@@ -138,7 +233,7 @@ sage: C.certified_shapes # doctest: +ELLIPSIS
138
233
  </div>
139
234
  <dl class="py method">
140
235
  <dt class="sig sig-object py" id="snappy.verify.IntervalNewtonShapesEngine.certified_newton_iteration">
141
- <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>
142
237
  <dd><p>Given shape intervals z, performs a Newton interval iteration N(z)
143
238
  as described in newton_iteration. Returns a pair (boolean, N(z)) where
144
239
  the boolean is True if N(z) is contained in z.</p>
@@ -154,7 +249,8 @@ solution, e.g., a point for which f is truly zero.</p>
154
249
  </pre></div>
155
250
  </div>
156
251
  <p>Intervals containing the true solution:</p>
157
- <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([
158
254
  ... C.CIF(C.RIF(0.78055, 0.78056), C.RIF(0.91447, 0.91448)),
159
255
  ... C.CIF(C.RIF(0.78055, 0.78056), C.RIF(0.91447, 0.91448)),
160
256
  ... C.CIF(C.RIF(0.46002, 0.46003), C.RIF(0.63262, 0.63263))])
@@ -170,7 +266,8 @@ sage: shapes # doctest: +ELLIPSIS
170
266
  contained in both the given intervals (good_shapes) and the returned
171
267
  intervals (shapes) which are a refinement of the given intervals.</p>
172
268
  <p>Intervals not containing a true solution:</p>
173
- <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>
174
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>
175
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>
176
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>
@@ -183,7 +280,7 @@ intervals (shapes) which are a refinement of the given intervals.</p>
183
280
 
184
281
  <dl class="py method">
185
282
  <dt class="sig sig-object py" id="snappy.verify.IntervalNewtonShapesEngine.expand_until_certified">
186
- <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>
187
284
  <dd><p>Try Newton interval iterations, expanding the shape intervals
188
285
  until we can certify they contain a true solution.
189
286
  If succeeded, return True and write certified shapes to
@@ -193,7 +290,7 @@ Set verbose = True for printing additional information.</p>
193
290
 
194
291
  <dl class="py method">
195
292
  <dt class="sig sig-object py" id="snappy.verify.IntervalNewtonShapesEngine.interval_vector_is_contained_in">
196
- <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>
197
294
  <dd><p>Given two vectors of intervals, return whether the first one
198
295
  is contained in the second one. Examples:</p>
199
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>
@@ -221,21 +318,21 @@ is contained in the second one. Examples:</p>
221
318
 
222
319
  <dl class="py method">
223
320
  <dt class="sig sig-object py" id="snappy.verify.IntervalNewtonShapesEngine.interval_vector_mid_points">
224
- <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>
225
322
  <dd><p>Given a vector of complex intervals, return the midpoints (as 0-length
226
323
  complex intervals) of them.</p>
227
324
  </dd></dl>
228
325
 
229
326
  <dl class="py method">
230
327
  <dt class="sig sig-object py" id="snappy.verify.IntervalNewtonShapesEngine.interval_vector_union">
231
- <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>
232
329
  <dd><p>Given two vectors of intervals, return the vector of their unions,
233
330
  i.e., the smallest interval containing both intervals.</p>
234
331
  </dd></dl>
235
332
 
236
333
  <dl class="py method">
237
334
  <dt class="sig sig-object py" id="snappy.verify.IntervalNewtonShapesEngine.log_gluing_LHS_derivatives">
238
- <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>
239
336
  <dd><p>Compute the Jacobian of the vector-valued function f
240
337
  described in the above log_gluing_LHSs:</p>
241
338
  <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>sage: from snappy import Manifold
@@ -258,7 +355,7 @@ sage: IntervalNewtonShapesEngine.log_gluing_LHS_derivatives(equations, shapes) #
258
355
 
259
356
  <dl class="py method">
260
357
  <dt class="sig sig-object py" id="snappy.verify.IntervalNewtonShapesEngine.log_gluing_LHSs">
261
- <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>
262
359
  <dd><p>Given the result of M.gluing_equations(‘rect’) or a
263
360
  subset of rows of it and shapes, return a vector of
264
361
  log(LHS) where</p>
@@ -302,55 +399,9 @@ False
302
399
  </div>
303
400
  </dd></dl>
304
401
 
305
- <dl class="py method">
306
- <dt class="sig sig-object py" id="snappy.verify.IntervalNewtonShapesEngine.mat_solve">
307
- <em class="property"><span class="pre">static</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">mat_solve</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">v</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.verify.IntervalNewtonShapesEngine.mat_solve" title="Permalink to this definition">¶</a></dt>
308
- <dd><p>Given a matrix m and a vector v of (complex) intervals, returns
309
- the vector a such that v = m * a preserving interval
310
- arithmetics: if m’ is a matrix with values in the intervals of m and
311
- v’ is a vector with values in the intervals of v, then the intervals
312
- of the result a returned by this method are guaranteed to contain
313
- the entries of m’^-1 * v’.</p>
314
- <p>Sage already provides a method for inverting matrices. However, it
315
- has a flaw and fails inverting interval matrices even though the
316
- interval determinant is far from containing zero (it returns
317
- unusable matrices with entries (-inf, inf).</p>
318
- <p>Our implementation improves on this by swapping rows to avoid
319
- diagonal entries close to zero during Gaussian elimination.</p>
320
- <p>Setup a complex interval for example:</p>
321
- <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>
322
- <span class="n">sage</span><span class="p">:</span> <span class="n">CIF</span> <span class="o">=</span> <span class="n">ComplexIntervalField</span><span class="p">(</span><span class="mi">80</span><span class="p">)</span>
323
- <span class="n">sage</span><span class="p">:</span> <span class="n">fuzzy_four</span> <span class="o">=</span> <span class="n">CIF</span><span class="p">(</span><span class="n">RIF</span><span class="p">(</span><span class="mf">3.9999</span><span class="p">,</span><span class="mf">4.0001</span><span class="p">),</span><span class="n">RIF</span><span class="p">(</span><span class="o">-</span><span class="mf">0.0001</span><span class="p">,</span><span class="mf">0.0001</span><span class="p">))</span>
324
- </pre></div>
325
- </div>
326
- <p>Construct a matrix/vector with complex interval coefficients. One entry
327
- is a complex interval with non-zero diameter:</p>
328
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="n">m</span> <span class="o">=</span> <span class="n">matrix</span><span class="p">(</span><span class="n">CIF</span><span class="p">,</span>
329
- <span class="o">...</span> <span class="p">[</span> <span class="p">[</span> <span class="n">fuzzy_four</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">],</span>
330
- <span class="o">...</span> <span class="p">[</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="mi">2</span><span class="p">],</span>
331
- <span class="o">...</span> <span class="p">[</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">6</span><span class="p">],</span>
332
- <span class="o">...</span> <span class="p">[</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span><span class="o">-</span><span class="mi">5</span><span class="p">,</span> <span class="mi">2</span><span class="p">]])</span>
333
- <span class="n">sage</span><span class="p">:</span> <span class="n">v</span> <span class="o">=</span> <span class="n">vector</span><span class="p">(</span><span class="n">CIF</span><span class="p">,</span> <span class="p">[</span><span class="n">fuzzy_four</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">0</span> <span class="p">,</span><span class="mi">1</span><span class="p">])</span>
334
- </pre></div>
335
- </div>
336
- <p>Now compute the solutions a to v = m * a:</p>
337
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>sage: a = IntervalNewtonShapesEngine.mat_solve(m, v)
338
- sage: a # doctest: +ELLIPSIS
339
- (1.5...? + 0.000?*I, -1.2...? + 0.000?*I, 0.34...? + 0.0000?*I, 0.24...? + 0.000?*I)
340
- sage: m * a # doctest: +ELLIPSIS
341
- (4.0...? + 0.00?*I, 2.0...? + 0.00?*I, 0.0...? + 0.00?*I, 1.00? + 0.00?*I)
342
- </pre></div>
343
- </div>
344
- <p>The product actually contains the vector v, we check entry wise:</p>
345
- <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="p">[</span><span class="n">s</span> <span class="ow">in</span> <span class="n">t</span> <span class="k">for</span> <span class="n">s</span><span class="p">,</span> <span class="n">t</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">m</span> <span class="o">*</span> <span class="n">a</span><span class="p">)]</span>
346
- <span class="p">[</span><span class="kc">True</span><span class="p">,</span> <span class="kc">True</span><span class="p">,</span> <span class="kc">True</span><span class="p">,</span> <span class="kc">True</span><span class="p">]</span>
347
- </pre></div>
348
- </div>
349
- </dd></dl>
350
-
351
402
  <dl class="py method">
352
403
  <dt class="sig sig-object py" id="snappy.verify.IntervalNewtonShapesEngine.newton_iteration">
353
- <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>
354
405
  <dd><p>Perform a Newton interval method of iteration for
355
406
  the function f described in log_gluing_LHSs.</p>
356
407
  <p>Let z denote the shape intervals.
@@ -399,7 +450,7 @@ stable in the sense that the interval size decreases:</p>
399
450
  sage: shape_intervals = C.initial_shapes.apply_map(lambda shape: shape + box)
400
451
  sage: shape_intervals
401
452
  (0.700? + 1.000?*I, 0.700? + 1.000?*I, 0.500? + 0.500?*I)
402
- sage: for i in range(7):
453
+ sage: for i in range(7):
403
454
  ... shape_intervals = IntervalNewtonShapesEngine.newton_iteration(C.equations, shape_intervals)
404
455
  sage: print(shape_intervals) # doctest: +ELLIPSIS
405
456
  (0.78055252785072483798...? + 0.91447366296772645593...?*I, 0.7805525278507248379869? + 0.914473662967726455938...?*I, 0.460021175573717872891...? + 0.632624193605256171637...?*I)
@@ -411,7 +462,7 @@ sage: print(shape_intervals) # doctest: +ELLIPSIS
411
462
 
412
463
  <dl class="py class">
413
464
  <dt class="sig sig-object py" id="snappy.verify.KrawczykShapesEngine">
414
- <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>
415
466
  <dd><p>An engine that is initialized with an approximated candidate solution to
416
467
  the rectangular gluing equations and produces intervals certified to
417
468
  contain a true solution. After the engine is successfully run, the
@@ -454,7 +505,7 @@ equations of the following form and try to solve them:</p>
454
505
  double’s. Some intermediate matrix computations are performed sparsely.</p></li>
455
506
  </ol>
456
507
  <p>In contrast to HIKMOT, we use and return Sage’s native implementation of
457
- (complex) interval arithmetic here, which allows for increased interoperability.
508
+ (complex) interval arithmetic here, which allows for increased interoperability.
458
509
  Another advantage is that Sage supports arbitrary precision.</p>
459
510
  <p>Here is an example how to explicitly invoke the KrawczykShapesEngine:</p>
460
511
  <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>sage: shapes = M.tetrahedra_shapes(&#39;rect&#39;, bits_prec = 80)
@@ -467,17 +518,17 @@ sage: C.certified_shapes # doctest: +NUMERIC12
467
518
  </div>
468
519
  <p>And here an example where the initial solution is somewhat off:</p>
469
520
  <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>sage: M = Manifold(&quot;m019&quot;)
470
- sage: shapes = [ 0.78+0.91j, 0.79+0.92j, 0.5 + 0.63j ]
471
- 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)
472
523
  sage: C.expand_until_certified()
473
524
  True
474
- sage: C.certified_shapes
475
- (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)
476
527
  </pre></div>
477
528
  </div>
478
529
  <dl class="py method">
479
530
  <dt class="sig sig-object py" id="snappy.verify.KrawczykShapesEngine.expand_until_certified">
480
- <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>
481
532
  <dd><p>Try Krawczyk iterations (i.e., expanding the shape intervals [z]
482
533
  by the Krawczyk interval K(z0, [z], f)) until we can certify they
483
534
  contain a true solution.</p>
@@ -488,7 +539,7 @@ Set verbose = True for printing additional information.</p>
488
539
 
489
540
  <dl class="py method">
490
541
  <dt class="sig sig-object py" id="snappy.verify.KrawczykShapesEngine.interval_vector_is_contained_in">
491
- <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>
492
543
  <dd><p>Given two vectors of intervals, return whether the first one
493
544
  is contained in the second one. Examples:</p>
494
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>
@@ -516,21 +567,21 @@ is contained in the second one. Examples:</p>
516
567
 
517
568
  <dl class="py method">
518
569
  <dt class="sig sig-object py" id="snappy.verify.KrawczykShapesEngine.interval_vector_mid_points">
519
- <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>
520
571
  <dd><p>Given a vector of complex intervals, return the midpoints (as 0-length
521
572
  complex intervals) of them.</p>
522
573
  </dd></dl>
523
574
 
524
575
  <dl class="py method">
525
576
  <dt class="sig sig-object py" id="snappy.verify.KrawczykShapesEngine.interval_vector_union">
526
- <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>
527
578
  <dd><p>Given two vectors of intervals, return the vector of their unions,
528
579
  i.e., the smallest interval containing both intervals.</p>
529
580
  </dd></dl>
530
581
 
531
582
  <dl class="py method">
532
583
  <dt class="sig sig-object py" id="snappy.verify.KrawczykShapesEngine.krawczyk_interval">
533
- <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>
534
585
  <dd><p>Compute the interval in the Krawczyk test.</p>
535
586
  <p>It is given as</p>
536
587
  <blockquote>
@@ -551,7 +602,8 @@ containing only one value (the candidate solution given initially).</p>
551
602
  <p>If K is contained in [z], then we have proven that [z] contains a solution
552
603
  to the gluing equations.</p>
553
604
  <p>Do several Krawczyk operations to get a better solution:</p>
554
- <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;)
555
607
  sage: shapes = vector(ComplexIntervalField(53), [ 0.5+0.8j, 0.5+0.8j, 0.5+0.8j])
556
608
  sage: for i in range(15):
557
609
  ... penultimateShapes = shapes
@@ -566,7 +618,7 @@ sage: shapes # doctest: +NUMERIC12
566
618
 
567
619
  <dl class="py method">
568
620
  <dt class="sig sig-object py" id="snappy.verify.KrawczykShapesEngine.log_gluing_LHS_derivatives">
569
- <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>
570
622
  <dd><p>Compute the Jacobian of the vector-valued function f
571
623
  described in the above log_gluing_LHSs:</p>
572
624
  <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>sage: from snappy import Manifold
@@ -588,7 +640,7 @@ sage: C.log_gluing_LHS_derivatives(shapes) # doctest: +NUMERIC3
588
640
 
589
641
  <dl class="py method">
590
642
  <dt class="sig sig-object py" id="snappy.verify.KrawczykShapesEngine.log_gluing_LHS_derivatives_sparse">
591
- <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>
592
644
  <dd><p>A column-sparse matrix version of log_gluing_LHS_derivatives_sparse.
593
645
  The result is a list of list of pairs. Each list of pairs corresponds
594
646
  to a column, a pair being (index of row, value) where the index is
@@ -597,7 +649,7 @@ increasing.</p>
597
649
 
598
650
  <dl class="py method">
599
651
  <dt class="sig sig-object py" id="snappy.verify.KrawczykShapesEngine.log_gluing_LHSs">
600
- <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>
601
653
  <dd><p>Given the result of M.gluing_equations(‘rect’) or a
602
654
  subset of rows of it and shapes, return a vector of
603
655
  log(LHS) where</p>
@@ -644,7 +696,7 @@ False
644
696
 
645
697
  <dl class="py method">
646
698
  <dt class="sig sig-object py" id="snappy.verify.KrawczykShapesEngine.matrix_times_sparse">
647
- <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>
648
700
  <dd><p>Multiply a (dense) Sage matrix with a column-sparse matrix
649
701
  (in the format described in log_gluing_LHS_derivatives_sparse).</p>
650
702
  </dd></dl>
@@ -653,13 +705,13 @@ False
653
705
 
654
706
  </section>
655
707
  <section id="verification-of-hyperbolicity">
656
- <h2>Verification of hyperbolicity<a class="headerlink" href="#verification-of-hyperbolicity" title="Permalink to this headline">¶</a></h2>
708
+ <h2>Verification of hyperbolicity<a class="headerlink" href="#verification-of-hyperbolicity" title="Link to this heading"></a></h2>
657
709
  <p>Methods containing <code class="docutils literal notranslate"><span class="pre">check</span></code> will raise an exception if the desired property
658
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
659
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>
660
712
  <dl class="py function">
661
- <dt class="sig sig-object py" id="snappy.verify.verifyHyperbolicity.check_logarithmic_gluing_equations_and_positively_oriented_tets">
662
- <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>
663
715
  <dd><p>Given a SnapPy manifold manifold and complex intervals for the shapes
664
716
  shape_intervals that are certified to contain a solution to the
665
717
  rectangular gluing equations, verify that the logarithmic gluing equations
@@ -690,418 +742,12 @@ ShapePositiveImaginaryPartNumericalVerifyError: Numerical verification that shap
690
742
  </div>
691
743
  </dd></dl>
692
744
 
693
- </section>
694
- <section id="cusp-cross-sections">
695
- <h2>Cusp cross sections<a class="headerlink" href="#cusp-cross-sections" title="Permalink to this headline">¶</a></h2>
696
- <dl class="py class">
697
- <dt class="sig sig-object py" id="snappy.verify.RealCuspCrossSection">
698
- <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>
699
- <dd><p>A t3m triangulation with real edge lengths of cusp cross sections built
700
- from a cusped (possibly non-orientable) SnapPy manifold M with a hyperbolic
701
- structure specified by shapes. It can scale the cusps to areas that can be
702
- specified or scale them such that they are disjoint.
703
- It can also compute the “tilts” used in the Tilt Theorem, see
704
- <code class="docutils literal notranslate"><span class="pre">canonize_part_1.c</span></code>.</p>
705
- <p>The computations are agnostic about the type of numbers provided as shapes
706
- 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>,
707
- <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>.
708
- Shapes can be a numerical type such as ComplexIntervalField or an exact
709
- type (supporting sqrt) such as QQbar.</p>
710
- <p>The resulting edge lengths and tilts will be of the type returned by
711
- applying the above operations to the shapes. For example, if the shapes
712
- are in ComplexIntervalField, the edge lengths and tilts are elements in
713
- RealIntervalField.</p>
714
- <p><strong>Remark:</strong> The real edge lengths could also be obtained from the complex
715
- edge lengths computed by <code class="docutils literal notranslate"><span class="pre">ComplexCuspCrossSection</span></code>, but this has two
716
- 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
717
- development and rescaling of the cusps would be different. Though this
718
- gives the same values, the resulting representation of these values by an
719
- exact number type (such as the ones in <code class="docutils literal notranslate"><span class="pre">squareExtension.py</span></code>) might be
720
- prohibitively more complicated. Furthermore, <code class="docutils literal notranslate"><span class="pre">ComplexCuspCrossSection</span></code>
721
- does not work for non-orientable manifolds (it does not implement working
722
- in a cusp’s double-cover like the SnapPea kernel does).</p>
723
- <dl class="py attribute">
724
- <dt class="sig sig-object py" id="snappy.verify.RealCuspCrossSection.HoroTriangle">
725
- <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>
726
- <dd><p>alias of <code class="xref py py-class docutils literal notranslate"><span class="pre">snappy.verify.cuspCrossSection.RealHoroTriangle</span></code></p>
727
- </dd></dl>
728
-
729
- <dl class="py method">
730
- <dt class="sig sig-object py" id="snappy.verify.RealCuspCrossSection.check_cusp_development_exactly">
731
- <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>
732
- <dd><p>Check that all side lengths of horo triangles are consistent.
733
- If the logarithmic edge equations are fulfilled, this implices
734
- that the all cusps are complete and thus the manifold is complete.</p>
735
- </dd></dl>
736
-
737
- <dl class="py method">
738
- <dt class="sig sig-object py" id="snappy.verify.RealCuspCrossSection.check_logarithmic_edge_equations_and_positivity">
739
- <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>
740
- <dd><p>Check that the shapes have positive imaginary part and that the
741
- logarithmic gluing equations have small error.</p>
742
- <p>The shapes are coerced into the field given as argument before the
743
- logarithm is computed. It can be, e.g., a ComplexIntervalField.</p>
744
- </dd></dl>
745
-
746
- <dl class="py method">
747
- <dt class="sig sig-object py" id="snappy.verify.RealCuspCrossSection.check_polynomial_edge_equations_exactly">
748
- <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>
749
- <dd><p>Check that the polynomial edge equations are fulfilled exactly.</p>
750
- <p>We use the conjugate inverse to support non-orientable manifolds.</p>
751
- </dd></dl>
752
-
753
- <dl class="py method">
754
- <dt class="sig sig-object py" id="snappy.verify.RealCuspCrossSection.compute_tilts">
755
- <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>
756
- <dd><p>Computes all tilts. They are written to the instances of
757
- t3m.simplex.Face and can be accessed as
758
- [ face.Tilt for face in crossSection.Faces].</p>
759
- </dd></dl>
760
-
761
- <dl class="py method">
762
- <dt class="sig sig-object py" id="snappy.verify.RealCuspCrossSection.cusp_areas">
763
- <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>
764
- <dd><p>List of all cusp areas.</p>
765
- </dd></dl>
766
-
767
- <dl class="py method">
768
- <dt class="sig sig-object py" id="snappy.verify.RealCuspCrossSection.ensure_disjoint_on_edges">
769
- <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>
770
- <dd><p>Scales the cusp neighborhoods down until they are disjoint when
771
- intersected with the edges of the triangulations.</p>
772
- <p>Given an edge of a triangulation, we can easily compute the signed
773
- distance between the two cusp neighborhoods at the ends of the edge
774
- measured along that edge. Thus, we can easily check that all the
775
- distances measured along all the edges are positive and scale the
776
- cusps down if necessary.</p>
777
- <p>Unfortunately, this is not sufficient to ensure that two cusp
778
- neighborhoods are disjoint since there might be a geodesic between
779
- the two cusps such that the distance between the two cusps measured
780
- along the geodesic is shorter than measured along any edge of the
781
- triangulation.</p>
782
- <p>Thus, it is necessary to call ensure_std_form as well:
783
- it will make sure that the cusp neighborhoods are small enough so
784
- that they intersect the tetrahedra in “standard” form.
785
- Here, “standard” form means that the corresponding horoball about a
786
- vertex of a tetrahedron intersects the three faces of the tetrahedron
787
- adjacent to the vertex but not the one opposite to the vertex.</p>
788
- <p>For any geometric triangulation, standard form and positive distance
789
- measured along all edges of the triangulation is sufficient for
790
- disjoint neighborhoods.</p>
791
- <p>The SnapPea kernel uses the proto-canonical triangulation associated
792
- to the cusp neighborhood to get around this when computing the
793
- “reach” and the “stoppers” for the cusps.</p>
794
- <p><strong>Remark:</strong> This means that the cusp neighborhoods might be scaled down
795
- more than necessary. Related open questions are: given maximal disjoint
796
- cusp neighborhoods (maximal in the sense that no neighborhood can be
797
- expanded without bumping into another or itself), is there always a
798
- geometric triangulation intersecting the cusp neighborhoods in standard
799
- form? Is there an easy algorithm to find this triangulation, e.g., by
800
- applying a 2-3 move whenever we see a non-standard intersection?</p>
801
- </dd></dl>
802
-
803
- <dl class="py method">
804
- <dt class="sig sig-object py" id="snappy.verify.RealCuspCrossSection.ensure_std_form">
805
- <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>
806
- <dd><p>Makes sure that the cusp neighborhoods intersect each tetrahedron
807
- in standard form by scaling the cusp neighborhoods down if necessary.</p>
808
- </dd></dl>
809
-
810
- <dl class="py method">
811
- <dt class="sig sig-object py" id="snappy.verify.RealCuspCrossSection.fromManifoldAndShapes">
812
- <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>
813
- <dd><p><strong>Examples:</strong></p>
814
- <p>Initialize from shapes provided from the floats returned by
815
- tetrahedra_shapes. The tilts appear to be negative but are not
816
- verified by interval arithmetics:</p>
817
- <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>
818
- <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>
819
- <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>
820
- <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>
821
- <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>
822
- <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>
823
- <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>
824
- <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>
825
- <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>
826
- <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>
827
- <span class="go">-0.31020162</span>
828
- <span class="go">-0.31020162</span>
829
- <span class="go">-0.31020162</span>
830
- <span class="go">-0.31020162</span>
831
- <span class="go">-0.31020162</span>
832
- <span class="go">-0.31020162</span>
833
- <span class="go">-0.31020162</span>
834
- <span class="go">-0.31020162</span>
835
- </pre></div>
836
- </div>
837
- <p>Use verified intervals:</p>
838
- <p>sage: from snappy.verify import *
839
- sage: M = Manifold(“m004”)
840
- sage: M.canonize()
841
- sage: shapes = M.tetrahedra_shapes(‘rect’, intervals=True)</p>
842
- <p>Verify that the tetrahedra shapes form a complete manifold:</p>
843
- <p>sage: check_logarithmic_gluing_equations_and_positively_oriented_tets(M,shapes)
844
- sage: e = RealCuspCrossSection.fromManifoldAndShapes(M, shapes)
845
- sage: e.normalize_cusps()
846
- sage: e.compute_tilts()</p>
847
- <p>Tilts are verified to be negative:</p>
848
- <p>sage: [tilt &lt; 0 for tilt in e.read_tilts()]
849
- [True, True, True, True, True, True, True, True]</p>
850
- <p>Setup necessary things in Sage:</p>
851
- <p>sage: from sage.rings.qqbar import QQbar
852
- sage: from sage.rings.rational_field import RationalField
853
- sage: from sage.rings.polynomial.polynomial_ring import polygen
854
- sage: from sage.rings.real_mpfi import RealIntervalField
855
- sage: from sage.rings.complex_interval_field import ComplexIntervalField
856
- sage: x = polygen(RationalField())
857
- sage: RIF = RealIntervalField()
858
- sage: CIF = ComplexIntervalField()</p>
859
- <p>sage: M = Manifold(“m412”)
860
- sage: M.canonize()</p>
861
- <p>Make our own exact shapes using Sage. They are the root of the given
862
- polynomial isolated by the given interval.</p>
863
- <p>sage: r=QQbar.polynomial_root(x**2-x+1,CIF(RIF(0.49,0.51),RIF(0.86,0.87)))
864
- sage: shapes = 5 * [r]
865
- sage: e=RealCuspCrossSection.fromManifoldAndShapes(M, shapes)
866
- sage: e.normalize_cusps()</p>
867
- <p>The following three lines verify that we have shapes giving a complete
868
- hyperbolic structure. The last one uses complex interval arithmetics.</p>
869
- <p>sage: e.check_polynomial_edge_equations_exactly()
870
- sage: e.check_cusp_development_exactly()
871
- sage: e.check_logarithmic_edge_equations_and_positivity(CIF)</p>
872
- <p>Because we use exact types, we can verify that each tilt is either
873
- negative or exactly zero.</p>
874
- <p>sage: e.compute_tilts()
875
- sage: [(tilt &lt; 0, tilt == 0) for tilt in e.read_tilts()]
876
- [(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>
877
- <p>Some are exactly zero, so the canonical cell decomposition has
878
- non-tetrahedral cells. In fact, the one cell is a cube. We can obtain
879
- the retriangulation of the canonical cell decomposition as follows:</p>
880
- <p>sage: e.compute_tilts()
881
- sage: opacities = [tilt &lt; 0 for tilt in e.read_tilts()]
882
- sage: N = M._canonical_retriangulation()
883
- sage: N.num_tetrahedra()
884
- 12</p>
885
- <p>The manifold m412 has 8 isometries, the above code certified that using
886
- exact arithmetic:
887
- sage: len(N.isomorphisms_to(N))
888
- 8</p>
889
- </dd></dl>
890
-
891
- <dl class="py method">
892
- <dt class="sig sig-object py" id="snappy.verify.RealCuspCrossSection.normalize_cusps">
893
- <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>
894
- <dd><p>Scale cusp so that they have the given target area.
895
- Without argument, each cusp is scaled to have area 1.
896
- If the argument is a number, scale each cusp to have that area.
897
- If the argument is an array, scale each cusp by the respective
898
- entry in the array.</p>
899
- </dd></dl>
900
-
901
- <dl class="py method">
902
- <dt class="sig sig-object py" id="snappy.verify.RealCuspCrossSection.read_tilts">
903
- <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>
904
- <dd><p>After compute_tilts() has been called, put the tilt values into an
905
- array containing the tilt of face 0, 1, 2, 3 of the first tetrahedron,
906
- … of the second tetrahedron, ….</p>
907
- </dd></dl>
908
-
909
- <dl class="py method">
910
- <dt class="sig sig-object py" id="snappy.verify.RealCuspCrossSection.scale_cusps">
911
- <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>
912
- <dd><p>Scale each cusp by Euclidean dilation by values in given array.</p>
913
- </dd></dl>
914
-
915
- </dd></dl>
916
-
917
- <dl class="py class">
918
- <dt class="sig sig-object py" id="snappy.verify.ComplexCuspCrossSection">
919
- <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>
920
- <dd><p>Similarly to RealCuspCrossSection with the following differences: it
921
- computes the complex edge lengths and the cusp translations (instead
922
- of the tilts) and it only works for orientable manifolds.</p>
923
- <p>The same comment applies about the type of the shapes. The resulting
924
- edge lengths and translations will be of the same type as the shapes.</p>
925
- <p>For shapes corresponding to a non-boundary unipotent representation
926
- (in other words, a manifold having an incomplete cusp), a cusp can
927
- be developed if an appropriate 1-cocycle is given. The 1-cocycle
928
- is a cellular cocycle in the dual of the cusp triangulations and
929
- represents an element in H^1(boundary M; C^*) that must match the
930
- PSL(2,C) boundary holonomy of the representation.
931
- It is encoded as dictionary with key (tet index, t3m face, t3m vertex).</p>
932
- <dl class="py attribute">
933
- <dt class="sig sig-object py" id="snappy.verify.ComplexCuspCrossSection.HoroTriangle">
934
- <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>
935
- <dd><p>alias of <code class="xref py py-class docutils literal notranslate"><span class="pre">snappy.verify.cuspCrossSection.ComplexHoroTriangle</span></code></p>
936
- </dd></dl>
937
-
938
- <dl class="py method">
939
- <dt class="sig sig-object py" id="snappy.verify.ComplexCuspCrossSection.add_vertex_positions_to_horotriangles">
940
- <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>
941
- <dd><p>Develops cusp to assign to each horotriangle the positions of its three
942
- vertices in the Euclidean plane.</p>
943
- <p>Note: For a complete cusp, this is defined only up to translating the
944
- entire triangle by translations generated by meridian and longitude.</p>
945
- <p>For an incomplete cusp, this is defined only up to
946
- similarities generated by the meridian and longitude. The
947
- positions can be moved such that the fixed point of these
948
- similarities is at the origin by calling
949
- move_fixed_point_to_zero after
950
- add_vertex_positions_to_horotriangles.</p>
951
- <p>Note: This is not working when one_cocycle is passed during the
952
- construction of the cusp cross section.</p>
953
- </dd></dl>
954
-
955
- <dl class="py method">
956
- <dt class="sig sig-object py" id="snappy.verify.ComplexCuspCrossSection.all_normalized_translations">
957
- <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>
958
- <dd><p>Compute the translations corresponding to the meridian and longitude
959
- for each cusp.</p>
960
- </dd></dl>
961
-
962
- <dl class="py method">
963
- <dt class="sig sig-object py" id="snappy.verify.ComplexCuspCrossSection.check_cusp_development_exactly">
964
- <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>
965
- <dd><p>Check that all side lengths of horo triangles are consistent.
966
- If the logarithmic edge equations are fulfilled, this implices
967
- that the all cusps are complete and thus the manifold is complete.</p>
968
- </dd></dl>
969
-
970
- <dl class="py method">
971
- <dt class="sig sig-object py" id="snappy.verify.ComplexCuspCrossSection.check_logarithmic_edge_equations_and_positivity">
972
- <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>
973
- <dd><p>Check that the shapes have positive imaginary part and that the
974
- logarithmic gluing equations have small error.</p>
975
- <p>The shapes are coerced into the field given as argument before the
976
- logarithm is computed. It can be, e.g., a ComplexIntervalField.</p>
977
- </dd></dl>
978
-
979
- <dl class="py method">
980
- <dt class="sig sig-object py" id="snappy.verify.ComplexCuspCrossSection.check_polynomial_edge_equations_exactly">
981
- <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>
982
- <dd><p>Check that the polynomial edge equations are fulfilled exactly.</p>
983
- <p>We use the conjugate inverse to support non-orientable manifolds.</p>
984
- </dd></dl>
985
-
986
- <dl class="py method">
987
- <dt class="sig sig-object py" id="snappy.verify.ComplexCuspCrossSection.cusp_areas">
988
- <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>
989
- <dd><p>List of all cusp areas.</p>
990
- </dd></dl>
991
-
992
- <dl class="py method">
993
- <dt class="sig sig-object py" id="snappy.verify.ComplexCuspCrossSection.cusp_shapes">
994
- <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>
995
- <dd><p>Compute the cusp shapes as conjugate of the quotient of the translations
996
- corresponding to the longitude and meridian for each cusp (SnapPea
997
- kernel convention).</p>
998
- </dd></dl>
999
-
1000
- <dl class="py method">
1001
- <dt class="sig sig-object py" id="snappy.verify.ComplexCuspCrossSection.ensure_disjoint_on_edges">
1002
- <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>
1003
- <dd><p>Scales the cusp neighborhoods down until they are disjoint when
1004
- intersected with the edges of the triangulations.</p>
1005
- <p>Given an edge of a triangulation, we can easily compute the signed
1006
- distance between the two cusp neighborhoods at the ends of the edge
1007
- measured along that edge. Thus, we can easily check that all the
1008
- distances measured along all the edges are positive and scale the
1009
- cusps down if necessary.</p>
1010
- <p>Unfortunately, this is not sufficient to ensure that two cusp
1011
- neighborhoods are disjoint since there might be a geodesic between
1012
- the two cusps such that the distance between the two cusps measured
1013
- along the geodesic is shorter than measured along any edge of the
1014
- triangulation.</p>
1015
- <p>Thus, it is necessary to call ensure_std_form as well:
1016
- it will make sure that the cusp neighborhoods are small enough so
1017
- that they intersect the tetrahedra in “standard” form.
1018
- Here, “standard” form means that the corresponding horoball about a
1019
- vertex of a tetrahedron intersects the three faces of the tetrahedron
1020
- adjacent to the vertex but not the one opposite to the vertex.</p>
1021
- <p>For any geometric triangulation, standard form and positive distance
1022
- measured along all edges of the triangulation is sufficient for
1023
- disjoint neighborhoods.</p>
1024
- <p>The SnapPea kernel uses the proto-canonical triangulation associated
1025
- to the cusp neighborhood to get around this when computing the
1026
- “reach” and the “stoppers” for the cusps.</p>
1027
- <p><strong>Remark:</strong> This means that the cusp neighborhoods might be scaled down
1028
- more than necessary. Related open questions are: given maximal disjoint
1029
- cusp neighborhoods (maximal in the sense that no neighborhood can be
1030
- expanded without bumping into another or itself), is there always a
1031
- geometric triangulation intersecting the cusp neighborhoods in standard
1032
- form? Is there an easy algorithm to find this triangulation, e.g., by
1033
- applying a 2-3 move whenever we see a non-standard intersection?</p>
1034
- </dd></dl>
1035
-
1036
- <dl class="py method">
1037
- <dt class="sig sig-object py" id="snappy.verify.ComplexCuspCrossSection.ensure_std_form">
1038
- <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>
1039
- <dd><p>Makes sure that the cusp neighborhoods intersect each tetrahedron
1040
- in standard form by scaling the cusp neighborhoods down if necessary.</p>
1041
- </dd></dl>
1042
-
1043
- <dl class="py method">
1044
- <dt class="sig sig-object py" id="snappy.verify.ComplexCuspCrossSection.lift_vertex_positions_of_horotriangles">
1045
- <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>
1046
- <dd><p>After developing an incomplete cusp with
1047
- add_vertex_positions_to_horotriangles, this function moves the
1048
- vertex positions first to zero the fixed point (see
1049
- move_ffixed_point_to_zero) and computes logarithms for all the
1050
- vertex positions of the horotriangles in the Euclidean plane
1051
- in a consistent manner. These logarithms are written to a
1052
- dictionary lifted_vertex_positions on the HoroTriangle’s.</p>
1053
- <p>For an incomplete cusp, the respective value in lifted_vertex_positions
1054
- will be None.</p>
1055
- <p>The three logarithms of the vertex positions of a triangle are only
1056
- defined up to adding mu Z + lambda Z where mu and lambda are the
1057
- logarithmic holonomies of the meridian and longitude.</p>
1058
- </dd></dl>
1059
-
1060
- <dl class="py method">
1061
- <dt class="sig sig-object py" id="snappy.verify.ComplexCuspCrossSection.move_fixed_point_to_zero">
1062
- <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>
1063
- <dd><p>Determines the fixed point of the holonomies for all
1064
- incomplete cusps. Then moves the vertex positions of the
1065
- corresponding cusp triangles so that the fixed point is at the
1066
- origin.</p>
1067
- <p>It also add the boolean v.is_complete to all vertices of the
1068
- triangulation to mark whether the corresponding cusp is
1069
- complete or not.</p>
1070
- </dd></dl>
1071
-
1072
- <dl class="py method">
1073
- <dt class="sig sig-object py" id="snappy.verify.ComplexCuspCrossSection.move_lifted_vertex_positions_to_zero_first">
1074
- <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>
1075
- <dd><p>Shift the lifted vertex positions such that the one associated
1076
- to the first vertex when developing the incomplete cusp is
1077
- zero. This makes the values we obtain more stable when
1078
- changing the Dehn-surgery parameters.</p>
1079
- </dd></dl>
1080
-
1081
- <dl class="py method">
1082
- <dt class="sig sig-object py" id="snappy.verify.ComplexCuspCrossSection.normalize_cusps">
1083
- <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>
1084
- <dd><p>Scale cusp so that they have the given target area.
1085
- Without argument, each cusp is scaled to have area 1.
1086
- If the argument is a number, scale each cusp to have that area.
1087
- If the argument is an array, scale each cusp by the respective
1088
- entry in the array.</p>
1089
- </dd></dl>
1090
-
1091
- <dl class="py method">
1092
- <dt class="sig sig-object py" id="snappy.verify.ComplexCuspCrossSection.scale_cusps">
1093
- <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>
1094
- <dd><p>Scale each cusp by Euclidean dilation by values in given array.</p>
1095
- </dd></dl>
1096
-
1097
- </dd></dl>
1098
-
1099
745
  </section>
1100
746
  <section id="verified-canonical-cell-decompositions">
1101
- <h2>Verified canonical cell decompositions<a class="headerlink" href="#verified-canonical-cell-decompositions" title="Permalink to this headline">¶</a></h2>
747
+ <h2>Verified canonical cell decompositions<a class="headerlink" href="#verified-canonical-cell-decompositions" title="Link to this heading"></a></h2>
1102
748
  <dl class="py function">
1103
- <dt class="sig sig-object py" id="snappy.verify.verifyCanonical.interval_checked_canonical_triangulation">
1104
- <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>
1105
751
  <dd><p>Given a canonical triangulation of a cusped (possibly non-orientable)
1106
752
  manifold M, return this triangulation if it has tetrahedral cells and can
1107
753
  be verified using interval arithmetics with the optional, given precision.
@@ -1144,8 +790,8 @@ TiltInequalityNumericalVerifyError: Numerical verification that tilt is negative
1144
790
  </dd></dl>
1145
791
 
1146
792
  <dl class="py function">
1147
- <dt class="sig sig-object py" id="snappy.verify.verifyCanonical.exactly_checked_canonical_retriangulation">
1148
- <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>
1149
795
  <dd><p>Given a proto-canonical triangulation of a cusped (possibly non-orientable)
1150
796
  manifold M, return its canonical retriangulation which is computed from
1151
797
  exact shapes. The exact shapes are computed using snap (which uses the
@@ -1180,9 +826,9 @@ TiltProvenPositiveNumericalVerifyError: Numerical verification that tilt is nega
1180
826
  </dd></dl>
1181
827
 
1182
828
  </section>
1183
- <section id="module-snappy.verify.squareExtensions">
1184
- <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 headline">¶</a></h2>
1185
- <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
1186
832
  two special classes to give exact representations of the values
1187
833
  involved when computing a cusp cross section.</p>
1188
834
  <p>The method find_shapes_as_complex_sqrt_lin_combinations returns a list of
@@ -1196,8 +842,8 @@ square roots in N. To avoid computing in a massive tower of square extensions
1196
842
  of N, we implement SqrtLinCombination here that provides a special
1197
843
  implementation of the == operator.</p>
1198
844
  <dl class="py function">
1199
- <dt class="sig sig-object py" id="snappy.verify.squareExtensions.find_shapes_as_complex_sqrt_lin_combinations">
1200
- <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>
1201
847
  <dd><p>Given a manifold M, use snap (which uses LLL-algorithm) with the given
1202
848
  decimal precision and maximal degree to find exact values for the shapes’
1203
849
  real and imaginary part. Return the shapes as list of
@@ -1212,8 +858,8 @@ ComplexSqrtLinCombination’s. Return None on failure.</p>
1212
858
  </dd></dl>
1213
859
 
1214
860
  <dl class="py class">
1215
- <dt class="sig sig-object py" id="snappy.verify.squareExtensions.SqrtLinCombination">
1216
- <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>
1217
863
  <dd><p>A class representing a linear combination</p>
1218
864
  <blockquote>
1219
865
  <div><p>c_1 * sqrt(r_1) + c_2 * sqrt(r_2) + … + c_n * sqrt(r_n)</p>
@@ -1308,16 +954,16 @@ True
1308
954
  </pre></div>
1309
955
  </div>
1310
956
  <dl class="py method">
1311
- <dt class="sig sig-object py" id="snappy.verify.squareExtensions.SqrtLinCombination.sign">
1312
- <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>
1313
959
  <dd><p>Returns the +1, 0, -1 depending on whether the value is positive,
1314
960
  zero or negative. For the zero case, exact arithmetic is used to
1315
961
  certify. Otherwise, interval arithmetic is used.</p>
1316
962
  </dd></dl>
1317
963
 
1318
964
  <dl class="py method">
1319
- <dt class="sig sig-object py" id="snappy.verify.squareExtensions.SqrtLinCombination.sign_with_interval">
1320
- <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>
1321
967
  <dd><p>Similar to sign, but for the non-zero case, also return the interval
1322
968
  certifying the sign - useful for debugging.</p>
1323
969
  </dd></dl>
@@ -1325,20 +971,20 @@ certifying the sign - useful for debugging.</p>
1325
971
  </dd></dl>
1326
972
 
1327
973
  <dl class="py class">
1328
- <dt class="sig sig-object py" id="snappy.verify.squareExtensions.ComplexSqrtLinCombination">
1329
- <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>
1330
976
  <dd><p>A pair (real, imag) of SqrtLinCombinations representing the complex number
1331
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>,
1332
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>
1333
979
  <dl class="py method">
1334
- <dt class="sig sig-object py" id="snappy.verify.squareExtensions.ComplexSqrtLinCombination.imag">
1335
- <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>
1336
982
  <dd><p>Imaginary part.</p>
1337
983
  </dd></dl>
1338
984
 
1339
985
  <dl class="py method">
1340
- <dt class="sig sig-object py" id="snappy.verify.squareExtensions.ComplexSqrtLinCombination.real">
1341
- <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>
1342
988
  <dd><p>Real part.</p>
1343
989
  </dd></dl>
1344
990
 
@@ -1346,7 +992,7 @@ real + imag * I. Supports <code class="docutils literal notranslate"><span class
1346
992
 
1347
993
  </section>
1348
994
  <section id="module-snappy.verify.exceptions">
1349
- <span id="exceptions"></span><h2>Exceptions<a class="headerlink" href="#module-snappy.verify.exceptions" title="Permalink to this headline">¶</a></h2>
995
+ <span id="exceptions"></span><h2>Exceptions<a class="headerlink" href="#module-snappy.verify.exceptions" title="Link to this heading"></a></h2>
1350
996
  <p>All final exceptions are deriving from two base classes:</p>
1351
997
  <ul class="simple">
1352
998
  <li><p>a subclass of VerifyErrorBase to indicate whether a numerical or exact
@@ -1389,11 +1035,6 @@ raised.</p>
1389
1035
  <li><p>CuspEquationLogLiftNumericalVerifyError</p></li>
1390
1036
  </ul>
1391
1037
  </li>
1392
- <li><p>CuspDevelopmentType</p>
1393
- <ul>
1394
- <li><p>CuspDevelopmentTypeExactVerifyError</p></li>
1395
- </ul>
1396
- </li>
1397
1038
  </ul>
1398
1039
  </li>
1399
1040
  <li><p>TiltType</p>
@@ -1411,125 +1052,88 @@ raised.</p>
1411
1052
  <li><p>ShapePositiveImaginaryPartNumericalVerifyError</p></li>
1412
1053
  </ul>
1413
1054
  </li>
1414
- <li><p>ConsistencyWithSnapPeaType</p>
1415
- <ul>
1416
- <li><p>ConsistencyWithSnapPeaNumericalVerifyError</p></li>
1417
1055
  </ul>
1418
1056
  </li>
1419
1057
  </ul>
1420
- </li>
1421
- </ul>
1422
- <dl class="py exception">
1423
- <dt class="sig sig-object py" id="snappy.verify.exceptions.ConsistencyWithSnapPeaNumericalVerifyError">
1424
- <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>
1425
- <dd><p>Exception raised when there is a significant numerical difference
1426
- between the values computed by the SnapPea kernel and by this module
1427
- for a given quantity.</p>
1428
- </dd></dl>
1429
-
1430
- <dl class="py class">
1431
- <dt class="sig sig-object py" id="snappy.verify.exceptions.ConsistencyWithSnapPeaType">
1432
- <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>
1433
- <dd><p>A base class for exceptions raised when there is a difference
1434
- between the values computed by the SnapPea kernel and by this module
1435
- for a given quantity.</p>
1436
- </dd></dl>
1437
-
1438
1058
  <dl class="py class">
1439
1059
  <dt class="sig sig-object py" id="snappy.verify.exceptions.CuspConsistencyType">
1440
- <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>
1441
1061
  <dd><p>A base class indicating that verificatin of an equation involving a cusp
1442
1062
  failed.</p>
1443
1063
  </dd></dl>
1444
1064
 
1445
- <dl class="py exception">
1446
- <dt class="sig sig-object py" id="snappy.verify.exceptions.CuspDevelopmentExactVerifyError">
1447
- <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>
1448
- <dd><p>Raised when finding a consistent assignment of side lengths to the
1449
- Euclidean Horotriangles to form a Euclidean Horotorus for a cusp failed
1450
- using exact arithmetic.</p>
1451
- </dd></dl>
1452
-
1453
- <dl class="py class">
1454
- <dt class="sig sig-object py" id="snappy.verify.exceptions.CuspDevelopmentType">
1455
- <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>
1456
- <dd><p>A base class indicating that there was a failure to find a consistent
1457
- assignment of side lengths to the Euclidean Horotriangles to form a
1458
- Euclidean Horotorus for a cusp.</p>
1459
- </dd></dl>
1460
-
1461
1065
  <dl class="py exception">
1462
1066
  <dt class="sig sig-object py" id="snappy.verify.exceptions.CuspEquationExactVerifyError">
1463
- <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>
1464
1068
  <dd><p>Exception for failed verification of a polynomial cusp gluing equation
1465
1069
  using exact arithmetics.</p>
1466
1070
  </dd></dl>
1467
1071
 
1468
1072
  <dl class="py exception">
1469
1073
  <dt class="sig sig-object py" id="snappy.verify.exceptions.CuspEquationLogLiftNumericalVerifyError">
1470
- <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>
1471
1075
  <dd><p>Exception for failed numerical verification that a logarithmic cusp
1472
1076
  equation has error bound by epsilon.</p>
1473
1077
  </dd></dl>
1474
1078
 
1475
1079
  <dl class="py class">
1476
1080
  <dt class="sig sig-object py" id="snappy.verify.exceptions.CuspEquationType">
1477
- <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>
1478
1082
  <dd><p>A base class indicating that a cusp gluing equation (involving the
1479
1083
  shapes) failed.</p>
1480
1084
  </dd></dl>
1481
1085
 
1482
1086
  <dl class="py exception">
1483
1087
  <dt class="sig sig-object py" id="snappy.verify.exceptions.EdgeEquationExactVerifyError">
1484
- <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>
1485
1089
  <dd><p>Exception for failed verification of a polynomial edge equation
1486
1090
  using exact arithmetics.</p>
1487
1091
  </dd></dl>
1488
1092
 
1489
1093
  <dl class="py exception">
1490
1094
  <dt class="sig sig-object py" id="snappy.verify.exceptions.EdgeEquationLogLiftNumericalVerifyError">
1491
- <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>
1492
1096
  <dd><p>Exception for failed numerical verification that a logarithmic edge
1493
1097
  equation has error bound by epsilon.</p>
1494
1098
  </dd></dl>
1495
1099
 
1496
1100
  <dl class="py class">
1497
1101
  <dt class="sig sig-object py" id="snappy.verify.exceptions.EdgeEquationType">
1498
- <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>
1499
1103
  <dd><p>A base class indicating that an edge equation could not be verified.</p>
1500
1104
  </dd></dl>
1501
1105
 
1502
1106
  <dl class="py class">
1503
1107
  <dt class="sig sig-object py" id="snappy.verify.exceptions.EquationType">
1504
- <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>
1505
1109
  <dd><p>A base class to derive subclasses which indicate what kind of
1506
1110
  equation failed to be verified.</p>
1507
1111
  </dd></dl>
1508
1112
 
1509
1113
  <dl class="py exception">
1510
1114
  <dt class="sig sig-object py" id="snappy.verify.exceptions.ExactVerifyError">
1511
- <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>
1512
1116
  <dd><p>The base for all exceptions resulting from a failed verification of an
1513
1117
  equation using exact arithmetics.</p>
1514
1118
  </dd></dl>
1515
1119
 
1516
1120
  <dl class="py exception">
1517
1121
  <dt class="sig sig-object py" id="snappy.verify.exceptions.InequalityNumericalVerifyError">
1518
- <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>
1519
1123
  <dd><p>The base for all exceptions resulting from a failed numerical
1520
1124
  verification of an inequality (typically by interval arithmetics).</p>
1521
1125
  </dd></dl>
1522
1126
 
1523
1127
  <dl class="py exception">
1524
1128
  <dt class="sig sig-object py" id="snappy.verify.exceptions.IsZeroExactVerifyError">
1525
- <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>
1526
1130
  <dd><p>The base for all exceptions resulting from verifying that a desired
1527
1131
  quantity is zero using exact arithmetics.</p>
1528
1132
  </dd></dl>
1529
1133
 
1530
1134
  <dl class="py exception">
1531
1135
  <dt class="sig sig-object py" id="snappy.verify.exceptions.LogLiftNumericalVerifyError">
1532
- <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>
1533
1137
  <dd><p>To verify a logarithmic gluing equation, the verify module will usually
1534
1138
  first verify the corresponding polynomial gluing equation.
1535
1139
  This means that the logarithmic gluing equation will be fulfilled up
@@ -1544,7 +1148,7 @@ failed.</p>
1544
1148
 
1545
1149
  <dl class="py exception">
1546
1150
  <dt class="sig sig-object py" id="snappy.verify.exceptions.NumericalVerifyError">
1547
- <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>
1548
1152
  <dd><p>The base for all exceptions resulting from a failed numerical
1549
1153
  verification of an equality (using some epsilon) or inequality
1550
1154
  (typically by interval arithmetics).</p>
@@ -1552,31 +1156,31 @@ verification of an equality (using some epsilon) or inequality
1552
1156
 
1553
1157
  <dl class="py exception">
1554
1158
  <dt class="sig sig-object py" id="snappy.verify.exceptions.ShapePositiveImaginaryPartNumericalVerifyError">
1555
- <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>
1556
1160
  <dd><p>Failed numerical verification of a shape having positive imaginary part.</p>
1557
1161
  </dd></dl>
1558
1162
 
1559
1163
  <dl class="py class">
1560
1164
  <dt class="sig sig-object py" id="snappy.verify.exceptions.ShapeType">
1561
- <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>
1562
1166
  <dd><p>Base class for failed verification of legal shapes.</p>
1563
1167
  </dd></dl>
1564
1168
 
1565
1169
  <dl class="py exception">
1566
1170
  <dt class="sig sig-object py" id="snappy.verify.exceptions.TiltInequalityNumericalVerifyError">
1567
- <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>
1568
1172
  <dd><p>Numerically verifying that a tilt is negative has failed.</p>
1569
1173
  </dd></dl>
1570
1174
 
1571
1175
  <dl class="py exception">
1572
1176
  <dt class="sig sig-object py" id="snappy.verify.exceptions.TiltIsZeroExactVerifyError">
1573
- <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>
1574
1178
  <dd><p>Verifying that a tilt is zero has failed using exact arithmetic.</p>
1575
1179
  </dd></dl>
1576
1180
 
1577
1181
  <dl class="py exception">
1578
1182
  <dt class="sig sig-object py" id="snappy.verify.exceptions.TiltProvenPositiveNumericalVerifyError">
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">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>
1580
1184
  <dd><p>Numerically verifying that a tilt is negative has not only failed, we
1581
1185
  proved that the tilt is positive and thus that this cannot be a
1582
1186
  proto-canonical triangulation.</p>
@@ -1584,13 +1188,13 @@ proto-canonical triangulation.</p>
1584
1188
 
1585
1189
  <dl class="py class">
1586
1190
  <dt class="sig sig-object py" id="snappy.verify.exceptions.TiltType">
1587
- <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>
1588
1192
  <dd><p>A base class relating to tilts.</p>
1589
1193
  </dd></dl>
1590
1194
 
1591
1195
  <dl class="py exception">
1592
1196
  <dt class="sig sig-object py" id="snappy.verify.exceptions.VerifyErrorBase">
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">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>
1594
1198
  <dd><p>The base for all exceptions related to verification.</p>
1595
1199
  </dd></dl>
1596
1200
 
@@ -1598,76 +1202,34 @@ proto-canonical triangulation.</p>
1598
1202
  </section>
1599
1203
 
1600
1204
 
1601
- <div class="clearer"></div>
1205
+ </div>
1602
1206
  </div>
1603
- </div>
1604
- </div>
1605
- <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
1606
- <div class="sphinxsidebarwrapper">
1607
- <h3><a href="index.html">Table of Contents</a></h3>
1608
- <ul>
1609
- <li><a class="reference internal" href="#">Internals of verified computations</a><ul>
1610
- <li><a class="reference internal" href="#naming">Naming</a></li>
1611
- <li><a class="reference internal" href="#generating-certified-shape-intervals">Generating certified shape intervals</a></li>
1612
- <li><a class="reference internal" href="#verification-of-hyperbolicity">Verification of hyperbolicity</a></li>
1613
- <li><a class="reference internal" href="#cusp-cross-sections">Cusp cross sections</a></li>
1614
- <li><a class="reference internal" href="#verified-canonical-cell-decompositions">Verified canonical cell decompositions</a></li>
1615
- <li><a class="reference internal" href="#module-snappy.verify.squareExtensions">Exact computations for cusp cross sections</a></li>
1616
- <li><a class="reference internal" href="#module-snappy.verify.exceptions">Exceptions</a></li>
1617
- </ul>
1618
- </li>
1619
- </ul>
1620
-
1621
- <h4>Previous topic</h4>
1622
- <p class="topless"><a href="verify_canon.html"
1623
- title="previous chapter">Canonical retriangulation and isometry signature</a></p>
1624
- <h4>Next topic</h4>
1625
- <p class="topless"><a href="other.html"
1626
- title="next chapter">Other components</a></p>
1627
- <div role="note" aria-label="source link">
1628
- <h3>This Page</h3>
1629
- <ul class="this-page-menu">
1630
- <li><a href="_sources/verify_internals.rst.txt"
1631
- rel="nofollow">Show Source</a></li>
1632
- </ul>
1633
- </div>
1634
- <div id="searchbox" style="display: none" role="search">
1635
- <h3 id="searchlabel">Quick search</h3>
1636
- <div class="searchformwrapper">
1637
- <form class="search" action="search.html" method="get">
1638
- <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
1639
- <input type="submit" value="Go" />
1640
- </form>
1207
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
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>
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>
1641
1210
  </div>
1642
- </div>
1643
- <script>$('#searchbox').show(0);</script>
1211
+
1212
+ <hr/>
1213
+
1214
+ <div role="contentinfo">
1215
+ <p>&#169; Copyright 2009-2025, by Marc Culler, Nathan Dunfield, Matthias Goerner, Jeffrey Weeks and others.</p>
1216
+ </div>
1217
+
1218
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
1219
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
1220
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
1221
+
1222
+
1223
+ </footer>
1644
1224
  </div>
1645
1225
  </div>
1646
- <div class="clearer"></div>
1647
- </div>
1648
- <div class="related" role="navigation" aria-label="related navigation">
1649
- <h3>Navigation</h3>
1650
- <ul>
1651
- <li class="right" style="margin-right: 10px">
1652
- <a href="genindex.html" title="General Index"
1653
- >index</a></li>
1654
- <li class="right" >
1655
- <a href="py-modindex.html" title="Python Module Index"
1656
- >modules</a> |</li>
1657
- <li class="right" >
1658
- <a href="other.html" title="Other components"
1659
- >next</a> |</li>
1660
- <li class="right" >
1661
- <a href="verify_canon.html" title="Canonical retriangulation and isometry signature"
1662
- >previous</a> |</li>
1663
- <li class="nav-item nav-item-0"><a href="index.html">SnapPy 3.0.3 documentation</a> &#187;</li>
1664
- <li class="nav-item nav-item-1"><a href="verify.html" >Verified computations</a> &#187;</li>
1665
- <li class="nav-item nav-item-this"><a href="">Internals of verified computations</a></li>
1666
- </ul>
1667
- </div>
1668
- <div class="footer" role="contentinfo">
1669
- &#169; Copyright 2009-2021, by Marc Culler, Nathan Dunfield, Matthias Goerner, Jeffrey Weeks and others.
1670
- Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 4.3.1.
1671
- </div>
1672
- </body>
1226
+ </section>
1227
+ </div>
1228
+ <script>
1229
+ jQuery(function () {
1230
+ SphinxRtdTheme.Navigation.enable(true);
1231
+ });
1232
+ </script>
1233
+
1234
+ </body>
1673
1235
  </html>