snappy 3.1.1__cp312-cp312-win_amd64.whl → 3.2__cp312-cp312-win_amd64.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (471) hide show
  1. snappy/CyOpenGL.cp312-win_amd64.pyd +0 -0
  2. snappy/SnapPy.cp312-win_amd64.pyd +0 -0
  3. snappy/SnapPyHP.cp312-win_amd64.pyd +0 -0
  4. snappy/__init__.py +271 -401
  5. snappy/app.py +70 -20
  6. snappy/browser.py +18 -17
  7. snappy/canonical.py +249 -0
  8. snappy/{verify/cusp_shapes.py → cusps/__init__.py} +8 -18
  9. snappy/cusps/cusp_area_matrix.py +101 -0
  10. snappy/{verify/cusp_areas.py → cusps/cusp_areas_from_matrix.py} +23 -39
  11. snappy/cusps/maximal_cusp_area_matrix.py +136 -0
  12. snappy/cusps/test.py +21 -0
  13. snappy/cusps/trig_cusp_area_matrix.py +63 -0
  14. snappy/database.py +10 -9
  15. snappy/decorated_isosig.py +337 -114
  16. snappy/dev/extended_ptolemy/complexVolumesClosed.py +40 -7
  17. snappy/dev/extended_ptolemy/extended.py +3 -3
  18. snappy/dev/extended_ptolemy/phc_wrapper.py +10 -10
  19. snappy/dev/vericlosed/oneVertexTruncatedComplex.py +1 -1
  20. snappy/doc/_images/m004_paper_plane_on_systole.jpg +0 -0
  21. snappy/doc/_images/m125_paper_plane.jpg +0 -0
  22. snappy/doc/_images/o9_00000_systole_paper_plane.jpg +0 -0
  23. snappy/doc/_images/o9_00000_systole_paper_plane_closer.jpg +0 -0
  24. snappy/doc/_sources/additional_classes.rst.txt +40 -40
  25. snappy/doc/_sources/bugs.rst.txt +14 -14
  26. snappy/doc/_sources/censuses.rst.txt +51 -51
  27. snappy/doc/_sources/credits.rst.txt +75 -75
  28. snappy/doc/_sources/development.rst.txt +259 -239
  29. snappy/doc/_sources/index.rst.txt +182 -115
  30. snappy/doc/_sources/installing.rst.txt +247 -264
  31. snappy/doc/_sources/manifold.rst.txt +6 -6
  32. snappy/doc/_sources/manifoldhp.rst.txt +46 -46
  33. snappy/doc/_sources/news.rst.txt +355 -283
  34. snappy/doc/_sources/other.rst.txt +25 -25
  35. snappy/doc/_sources/platonic_census.rst.txt +20 -20
  36. snappy/doc/_sources/plink.rst.txt +102 -102
  37. snappy/doc/_sources/ptolemy.rst.txt +66 -66
  38. snappy/doc/_sources/ptolemy_classes.rst.txt +42 -42
  39. snappy/doc/_sources/ptolemy_examples1.rst.txt +298 -297
  40. snappy/doc/_sources/ptolemy_examples2.rst.txt +363 -363
  41. snappy/doc/_sources/ptolemy_examples3.rst.txt +301 -301
  42. snappy/doc/_sources/ptolemy_examples4.rst.txt +61 -61
  43. snappy/doc/_sources/ptolemy_prelim.rst.txt +105 -105
  44. snappy/doc/_sources/screenshots.rst.txt +21 -21
  45. snappy/doc/_sources/snap.rst.txt +87 -87
  46. snappy/doc/_sources/snappy.rst.txt +28 -28
  47. snappy/doc/_sources/spherogram.rst.txt +103 -103
  48. snappy/doc/_sources/todo.rst.txt +47 -47
  49. snappy/doc/_sources/triangulation.rst.txt +11 -11
  50. snappy/doc/_sources/tutorial.rst.txt +49 -49
  51. snappy/doc/_sources/verify.rst.txt +210 -150
  52. snappy/doc/_sources/verify_internals.rst.txt +79 -90
  53. snappy/doc/_static/basic.css +924 -924
  54. snappy/doc/_static/css/badge_only.css +1 -1
  55. snappy/doc/_static/css/theme.css +1 -1
  56. snappy/doc/_static/doctools.js +1 -1
  57. snappy/doc/_static/documentation_options.js +12 -12
  58. snappy/doc/_static/fonts/Lato/lato-bold.eot +0 -0
  59. snappy/doc/_static/fonts/Lato/lato-bold.ttf +0 -0
  60. snappy/doc/_static/fonts/Lato/lato-bold.woff +0 -0
  61. snappy/doc/_static/fonts/Lato/lato-bold.woff2 +0 -0
  62. snappy/doc/_static/fonts/Lato/lato-bolditalic.eot +0 -0
  63. snappy/doc/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
  64. snappy/doc/_static/fonts/Lato/lato-bolditalic.woff +0 -0
  65. snappy/doc/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
  66. snappy/doc/_static/fonts/Lato/lato-italic.eot +0 -0
  67. snappy/doc/_static/fonts/Lato/lato-italic.ttf +0 -0
  68. snappy/doc/_static/fonts/Lato/lato-italic.woff +0 -0
  69. snappy/doc/_static/fonts/Lato/lato-italic.woff2 +0 -0
  70. snappy/doc/_static/fonts/Lato/lato-regular.eot +0 -0
  71. snappy/doc/_static/fonts/Lato/lato-regular.ttf +0 -0
  72. snappy/doc/_static/fonts/Lato/lato-regular.woff +0 -0
  73. snappy/doc/_static/fonts/Lato/lato-regular.woff2 +0 -0
  74. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
  75. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
  76. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
  77. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
  78. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
  79. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
  80. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
  81. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
  82. snappy/doc/_static/js/versions.js +228 -0
  83. snappy/doc/_static/language_data.js +199 -199
  84. snappy/doc/_static/pygments.css +74 -74
  85. snappy/doc/_static/searchtools.js +108 -62
  86. snappy/doc/_static/snappy_furo.css +33 -33
  87. snappy/doc/_static/snappy_sphinx_rtd_theme.css +42 -42
  88. snappy/doc/additional_classes.html +1499 -1330
  89. snappy/doc/bugs.html +131 -134
  90. snappy/doc/censuses.html +426 -445
  91. snappy/doc/credits.html +180 -183
  92. snappy/doc/development.html +383 -363
  93. snappy/doc/genindex.html +1330 -1409
  94. snappy/doc/index.html +261 -206
  95. snappy/doc/installing.html +345 -363
  96. snappy/doc/manifold.html +3451 -2839
  97. snappy/doc/manifoldhp.html +179 -182
  98. snappy/doc/news.html +387 -329
  99. snappy/doc/objects.inv +0 -0
  100. snappy/doc/other.html +160 -162
  101. snappy/doc/platonic_census.html +374 -377
  102. snappy/doc/plink.html +209 -212
  103. snappy/doc/ptolemy.html +253 -255
  104. snappy/doc/ptolemy_classes.html +1143 -1146
  105. snappy/doc/ptolemy_examples1.html +408 -410
  106. snappy/doc/ptolemy_examples2.html +470 -473
  107. snappy/doc/ptolemy_examples3.html +413 -416
  108. snappy/doc/ptolemy_examples4.html +194 -197
  109. snappy/doc/ptolemy_prelim.html +247 -250
  110. snappy/doc/py-modindex.html +164 -167
  111. snappy/doc/screenshots.html +140 -142
  112. snappy/doc/search.html +134 -137
  113. snappy/doc/searchindex.js +1 -1
  114. snappy/doc/snap.html +201 -204
  115. snappy/doc/snappy.html +180 -182
  116. snappy/doc/spherogram.html +1210 -1213
  117. snappy/doc/todo.html +165 -168
  118. snappy/doc/triangulation.html +1583 -1474
  119. snappy/doc/tutorial.html +158 -161
  120. snappy/doc/verify.html +329 -275
  121. snappy/doc/verify_internals.html +1234 -1691
  122. snappy/drilling/__init__.py +153 -235
  123. snappy/drilling/barycentric.py +103 -0
  124. snappy/drilling/constants.py +0 -2
  125. snappy/drilling/crush.py +56 -130
  126. snappy/drilling/cusps.py +12 -6
  127. snappy/drilling/debug.py +2 -1
  128. snappy/drilling/exceptions.py +7 -40
  129. snappy/drilling/moves.py +302 -243
  130. snappy/drilling/perturb.py +63 -37
  131. snappy/drilling/shorten.py +36 -0
  132. snappy/drilling/subdivide.py +0 -5
  133. snappy/drilling/test.py +23 -0
  134. snappy/drilling/test_cases.py +126 -0
  135. snappy/drilling/tracing.py +9 -37
  136. snappy/exceptions.py +18 -5
  137. snappy/exterior_to_link/barycentric_geometry.py +2 -4
  138. snappy/exterior_to_link/main.py +8 -7
  139. snappy/exterior_to_link/mcomplex_with_link.py +2 -2
  140. snappy/exterior_to_link/rational_linear_algebra.py +1 -1
  141. snappy/exterior_to_link/rational_linear_algebra_wrapped.py +1 -1
  142. snappy/exterior_to_link/test.py +21 -33
  143. snappy/geometric_structure/__init__.py +212 -0
  144. snappy/geometric_structure/cusp_neighborhood/__init__.py +3 -0
  145. snappy/geometric_structure/cusp_neighborhood/complex_cusp_cross_section.py +697 -0
  146. snappy/geometric_structure/cusp_neighborhood/cusp_cross_section_base.py +484 -0
  147. snappy/geometric_structure/cusp_neighborhood/exceptions.py +42 -0
  148. snappy/geometric_structure/cusp_neighborhood/real_cusp_cross_section.py +298 -0
  149. snappy/geometric_structure/cusp_neighborhood/tiles_for_cusp_neighborhood.py +159 -0
  150. snappy/geometric_structure/cusp_neighborhood/vertices.py +32 -0
  151. snappy/geometric_structure/geodesic/__init__.py +0 -0
  152. snappy/geometric_structure/geodesic/add_core_curves.py +152 -0
  153. snappy/geometric_structure/geodesic/avoid_core_curves.py +369 -0
  154. snappy/geometric_structure/geodesic/canonical_keys.py +52 -0
  155. snappy/geometric_structure/geodesic/check_away_from_core_curve.py +60 -0
  156. snappy/geometric_structure/geodesic/constants.py +6 -0
  157. snappy/geometric_structure/geodesic/exceptions.py +22 -0
  158. snappy/{drilling → geometric_structure/geodesic}/fixed_points.py +34 -9
  159. snappy/{drilling/geodesic_info.py → geometric_structure/geodesic/geodesic_start_point_info.py} +139 -180
  160. snappy/geometric_structure/geodesic/graph_trace_helper.py +67 -0
  161. snappy/geometric_structure/geodesic/line.py +30 -0
  162. snappy/geometric_structure/geodesic/multiplicity.py +127 -0
  163. snappy/geometric_structure/geodesic/tiles_for_geodesic.py +101 -0
  164. snappy/geometric_structure/test.py +22 -0
  165. snappy/gui.py +23 -13
  166. snappy/horoviewer.py +7 -7
  167. snappy/hyperboloid/__init__.py +96 -31
  168. snappy/hyperboloid/distances.py +245 -0
  169. snappy/hyperboloid/horoball.py +19 -0
  170. snappy/hyperboloid/line.py +35 -0
  171. snappy/hyperboloid/point.py +9 -0
  172. snappy/hyperboloid/triangle.py +29 -0
  173. snappy/isometry_signature.py +382 -0
  174. snappy/len_spec/__init__.py +596 -0
  175. snappy/len_spec/geodesic_info.py +110 -0
  176. snappy/len_spec/geodesic_key_info_dict.py +117 -0
  177. snappy/len_spec/geodesic_piece.py +143 -0
  178. snappy/len_spec/geometric_structure.py +182 -0
  179. snappy/len_spec/geometry.py +80 -0
  180. snappy/len_spec/length_spectrum_geodesic_info.py +170 -0
  181. snappy/len_spec/spine.py +206 -0
  182. snappy/len_spec/test.py +24 -0
  183. snappy/len_spec/test_cases.py +69 -0
  184. snappy/len_spec/tile.py +275 -0
  185. snappy/len_spec/word.py +86 -0
  186. snappy/math_basics.py +39 -13
  187. snappy/matrix.py +52 -9
  188. snappy/number.py +12 -6
  189. snappy/numeric_output_checker.py +2 -3
  190. snappy/pari.py +6 -3
  191. snappy/polyviewer.py +8 -8
  192. snappy/ptolemy/__init__.py +1 -1
  193. snappy/ptolemy/component.py +2 -2
  194. snappy/ptolemy/coordinates.py +25 -25
  195. snappy/ptolemy/findLoops.py +9 -9
  196. snappy/ptolemy/manifoldMethods.py +27 -29
  197. snappy/ptolemy/polynomial.py +50 -57
  198. snappy/ptolemy/processFileBase.py +60 -0
  199. snappy/ptolemy/ptolemyVariety.py +109 -41
  200. snappy/ptolemy/reginaWrapper.py +4 -4
  201. snappy/ptolemy/rur.py +1 -1
  202. snappy/ptolemy/solutionsToPrimeIdealGroebnerBasis.py +9 -9
  203. snappy/ptolemy/test.py +99 -54
  204. snappy/ptolemy/utilities.py +1 -1
  205. snappy/raytracing/__init__.py +64 -0
  206. snappy/raytracing/additional_horospheres.py +64 -0
  207. snappy/raytracing/additional_len_spec_choices.py +63 -0
  208. snappy/raytracing/cohomology_fractal.py +0 -3
  209. snappy/raytracing/eyeball.py +123 -0
  210. snappy/raytracing/finite_raytracing_data.py +17 -17
  211. snappy/raytracing/finite_viewer.py +15 -15
  212. snappy/raytracing/geodesic_tube_info.py +93 -63
  213. snappy/raytracing/geodesics.py +94 -64
  214. snappy/raytracing/geodesics_window.py +56 -34
  215. snappy/raytracing/gui_utilities.py +21 -6
  216. snappy/raytracing/hyperboloid_navigation.py +29 -4
  217. snappy/raytracing/hyperboloid_utilities.py +73 -73
  218. snappy/raytracing/ideal_raytracing_data.py +121 -91
  219. snappy/raytracing/inside_viewer.py +199 -66
  220. snappy/raytracing/pack.py +22 -0
  221. snappy/raytracing/raytracing_data.py +37 -25
  222. snappy/raytracing/raytracing_view.py +70 -65
  223. snappy/raytracing/shaders/Eye.png +0 -0
  224. snappy/raytracing/shaders/NonGeometric.png +0 -0
  225. snappy/raytracing/shaders/__init__.py +39 -3
  226. snappy/raytracing/shaders/fragment.glsl +451 -133
  227. snappy/raytracing/test.py +29 -0
  228. snappy/raytracing/tooltip.py +146 -0
  229. snappy/raytracing/upper_halfspace_utilities.py +42 -9
  230. snappy/sage_helper.py +67 -134
  231. snappy/settings.py +90 -77
  232. snappy/shell.py +2 -0
  233. snappy/snap/character_varieties.py +2 -2
  234. snappy/snap/find_field.py +4 -3
  235. snappy/snap/fundamental_polyhedron.py +2 -2
  236. snappy/snap/kernel_structures.py +5 -1
  237. snappy/snap/nsagetools.py +9 -8
  238. snappy/snap/peripheral/dual_cellulation.py +4 -3
  239. snappy/snap/peripheral/peripheral.py +2 -2
  240. snappy/snap/peripheral/surface.py +5 -5
  241. snappy/snap/peripheral/test.py +1 -1
  242. snappy/snap/polished_reps.py +8 -8
  243. snappy/snap/slice_obs_HKL.py +16 -14
  244. snappy/snap/t3mlite/arrow.py +3 -3
  245. snappy/snap/t3mlite/edge.py +3 -3
  246. snappy/snap/t3mlite/homology.py +2 -2
  247. snappy/snap/t3mlite/mcomplex.py +3 -3
  248. snappy/snap/t3mlite/simplex.py +12 -0
  249. snappy/snap/t3mlite/spun.py +18 -17
  250. snappy/snap/t3mlite/test_vs_regina.py +4 -4
  251. snappy/snap/test.py +37 -53
  252. snappy/snap/utilities.py +4 -5
  253. snappy/test.py +121 -138
  254. snappy/test_cases.py +263 -0
  255. snappy/testing.py +131 -0
  256. snappy/tiling/__init__.py +2 -0
  257. snappy/tiling/canonical_key_dict.py +59 -0
  258. snappy/tiling/dict_based_set.py +79 -0
  259. snappy/tiling/floor.py +49 -0
  260. snappy/tiling/hyperboloid_dict.py +54 -0
  261. snappy/tiling/iter_utils.py +78 -0
  262. snappy/tiling/lifted_tetrahedron.py +22 -0
  263. snappy/tiling/lifted_tetrahedron_set.py +54 -0
  264. snappy/tiling/real_hash_dict.py +164 -0
  265. snappy/tiling/test.py +23 -0
  266. snappy/tiling/tile.py +215 -0
  267. snappy/tiling/triangle.py +33 -0
  268. snappy/tkterminal.py +113 -84
  269. snappy/twister/main.py +1 -7
  270. snappy/twister/twister_core.cp312-win_amd64.pyd +0 -0
  271. snappy/upper_halfspace/__init__.py +78 -17
  272. snappy/verify/__init__.py +3 -7
  273. snappy/verify/{verifyCanonical.py → canonical.py} +78 -70
  274. snappy/verify/complex_volume/adjust_torsion.py +1 -2
  275. snappy/verify/complex_volume/closed.py +13 -13
  276. snappy/verify/complex_volume/cusped.py +6 -6
  277. snappy/verify/complex_volume/extended_bloch.py +5 -8
  278. snappy/verify/{cuspTranslations.py → cusp_translations.py} +1 -1
  279. snappy/verify/edge_equations.py +80 -0
  280. snappy/verify/exceptions.py +0 -55
  281. snappy/verify/{verifyHyperbolicity.py → hyperbolicity.py} +3 -3
  282. snappy/verify/interval_newton_shapes_engine.py +7 -5
  283. snappy/verify/interval_tree.py +5 -5
  284. snappy/verify/krawczyk_shapes_engine.py +17 -18
  285. snappy/verify/maximal_cusp_area_matrix/__init__.py +7 -74
  286. snappy/verify/maximal_cusp_area_matrix/cusp_tiling_engine.py +3 -4
  287. snappy/verify/maximal_cusp_area_matrix/cusp_translate_engine.py +1 -1
  288. snappy/verify/{realAlgebra.py → real_algebra.py} +1 -1
  289. snappy/verify/shapes.py +5 -3
  290. snappy/verify/short_slopes.py +39 -41
  291. snappy/verify/{squareExtensions.py → square_extensions.py} +14 -11
  292. snappy/verify/test.py +57 -60
  293. snappy/verify/upper_halfspace/extended_matrix.py +1 -1
  294. snappy/verify/upper_halfspace/finite_point.py +3 -4
  295. snappy/verify/upper_halfspace/ideal_point.py +9 -9
  296. snappy/verify/volume.py +2 -2
  297. snappy/version.py +2 -2
  298. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/METADATA +25 -11
  299. snappy-3.2.dist-info/RECORD +503 -0
  300. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/WHEEL +1 -1
  301. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/top_level.txt +6 -1
  302. snappy/__pycache__/__init__.cpython-312.pyc +0 -0
  303. snappy/__pycache__/browser.cpython-312.pyc +0 -0
  304. snappy/__pycache__/cache.cpython-312.pyc +0 -0
  305. snappy/__pycache__/database.cpython-312.pyc +0 -0
  306. snappy/__pycache__/db_utilities.cpython-312.pyc +0 -0
  307. snappy/__pycache__/decorated_isosig.cpython-312.pyc +0 -0
  308. snappy/__pycache__/exceptions.cpython-312.pyc +0 -0
  309. snappy/__pycache__/export_stl.cpython-312.pyc +0 -0
  310. snappy/__pycache__/filedialog.cpython-312.pyc +0 -0
  311. snappy/__pycache__/gui.cpython-312.pyc +0 -0
  312. snappy/__pycache__/horoviewer.cpython-312.pyc +0 -0
  313. snappy/__pycache__/math_basics.cpython-312.pyc +0 -0
  314. snappy/__pycache__/matrix.cpython-312.pyc +0 -0
  315. snappy/__pycache__/number.cpython-312.pyc +0 -0
  316. snappy/__pycache__/numeric_output_checker.cpython-312.pyc +0 -0
  317. snappy/__pycache__/pari.cpython-312.pyc +0 -0
  318. snappy/__pycache__/polyviewer.cpython-312.pyc +0 -0
  319. snappy/__pycache__/sage_helper.cpython-312.pyc +0 -0
  320. snappy/__pycache__/version.cpython-312.pyc +0 -0
  321. snappy/doc/_sources/verify_canon.rst.txt +0 -90
  322. snappy/doc/_static/js/html5shiv-printshiv.min.js +0 -4
  323. snappy/doc/_static/js/html5shiv.min.js +0 -4
  324. snappy/doc/verify_canon.html +0 -304
  325. snappy/drilling/__pycache__/__init__.cpython-312.pyc +0 -0
  326. snappy/drilling/__pycache__/constants.cpython-312.pyc +0 -0
  327. snappy/drilling/__pycache__/crush.cpython-312.pyc +0 -0
  328. snappy/drilling/__pycache__/cusps.cpython-312.pyc +0 -0
  329. snappy/drilling/__pycache__/debug.cpython-312.pyc +0 -0
  330. snappy/drilling/__pycache__/epsilons.cpython-312.pyc +0 -0
  331. snappy/drilling/__pycache__/exceptions.cpython-312.pyc +0 -0
  332. snappy/drilling/__pycache__/fixed_points.cpython-312.pyc +0 -0
  333. snappy/drilling/__pycache__/geodesic_info.cpython-312.pyc +0 -0
  334. snappy/drilling/__pycache__/geodesic_tube.cpython-312.pyc +0 -0
  335. snappy/drilling/__pycache__/geometric_structure.cpython-312.pyc +0 -0
  336. snappy/drilling/__pycache__/line.cpython-312.pyc +0 -0
  337. snappy/drilling/__pycache__/moves.cpython-312.pyc +0 -0
  338. snappy/drilling/__pycache__/peripheral_curves.cpython-312.pyc +0 -0
  339. snappy/drilling/__pycache__/perturb.cpython-312.pyc +0 -0
  340. snappy/drilling/__pycache__/quotient_space.cpython-312.pyc +0 -0
  341. snappy/drilling/__pycache__/spatial_dict.cpython-312.pyc +0 -0
  342. snappy/drilling/__pycache__/subdivide.cpython-312.pyc +0 -0
  343. snappy/drilling/__pycache__/tracing.cpython-312.pyc +0 -0
  344. snappy/drilling/geodesic_tube.py +0 -441
  345. snappy/drilling/geometric_structure.py +0 -366
  346. snappy/drilling/line.py +0 -122
  347. snappy/drilling/quotient_space.py +0 -94
  348. snappy/drilling/spatial_dict.py +0 -128
  349. snappy/exterior_to_link/__pycache__/__init__.cpython-312.pyc +0 -0
  350. snappy/exterior_to_link/__pycache__/barycentric_geometry.cpython-312.pyc +0 -0
  351. snappy/exterior_to_link/__pycache__/exceptions.cpython-312.pyc +0 -0
  352. snappy/exterior_to_link/__pycache__/hyp_utils.cpython-312.pyc +0 -0
  353. snappy/exterior_to_link/__pycache__/link_projection.cpython-312.pyc +0 -0
  354. snappy/exterior_to_link/__pycache__/main.cpython-312.pyc +0 -0
  355. snappy/exterior_to_link/__pycache__/mcomplex_with_expansion.cpython-312.pyc +0 -0
  356. snappy/exterior_to_link/__pycache__/mcomplex_with_link.cpython-312.pyc +0 -0
  357. snappy/exterior_to_link/__pycache__/mcomplex_with_memory.cpython-312.pyc +0 -0
  358. snappy/exterior_to_link/__pycache__/pl_utils.cpython-312.pyc +0 -0
  359. snappy/exterior_to_link/__pycache__/put_in_S3.cpython-312.pyc +0 -0
  360. snappy/exterior_to_link/__pycache__/rational_linear_algebra.cpython-312.pyc +0 -0
  361. snappy/exterior_to_link/__pycache__/simplify_to_base_tri.cpython-312.pyc +0 -0
  362. snappy/exterior_to_link/__pycache__/stored_moves.cpython-312.pyc +0 -0
  363. snappy/hyperboloid/__pycache__/__init__.cpython-312.pyc +0 -0
  364. snappy/manifolds/__pycache__/__init__.cpython-312.pyc +0 -0
  365. snappy/ptolemy/__pycache__/__init__.cpython-312.pyc +0 -0
  366. snappy/ptolemy/__pycache__/component.cpython-312.pyc +0 -0
  367. snappy/ptolemy/__pycache__/coordinates.cpython-312.pyc +0 -0
  368. snappy/ptolemy/__pycache__/fieldExtensions.cpython-312.pyc +0 -0
  369. snappy/ptolemy/__pycache__/findLoops.cpython-312.pyc +0 -0
  370. snappy/ptolemy/__pycache__/homology.cpython-312.pyc +0 -0
  371. snappy/ptolemy/__pycache__/manifoldMethods.cpython-312.pyc +0 -0
  372. snappy/ptolemy/__pycache__/matrix.cpython-312.pyc +0 -0
  373. snappy/ptolemy/__pycache__/numericalSolutionsToGroebnerBasis.cpython-312.pyc +0 -0
  374. snappy/ptolemy/__pycache__/polynomial.cpython-312.pyc +0 -0
  375. snappy/ptolemy/__pycache__/processComponents.cpython-312.pyc +0 -0
  376. snappy/ptolemy/__pycache__/processFileBase.cpython-312.pyc +0 -0
  377. snappy/ptolemy/__pycache__/processFileDispatch.cpython-312.pyc +0 -0
  378. snappy/ptolemy/__pycache__/processMagmaFile.cpython-312.pyc +0 -0
  379. snappy/ptolemy/__pycache__/processRurFile.cpython-312.pyc +0 -0
  380. snappy/ptolemy/__pycache__/ptolemyGeneralizedObstructionClass.cpython-312.pyc +0 -0
  381. snappy/ptolemy/__pycache__/ptolemyObstructionClass.cpython-312.pyc +0 -0
  382. snappy/ptolemy/__pycache__/ptolemyVariety.cpython-312.pyc +0 -0
  383. snappy/ptolemy/__pycache__/ptolemyVarietyPrimeIdealGroebnerBasis.cpython-312.pyc +0 -0
  384. snappy/ptolemy/__pycache__/rur.cpython-312.pyc +0 -0
  385. snappy/ptolemy/__pycache__/solutionsToPrimeIdealGroebnerBasis.cpython-312.pyc +0 -0
  386. snappy/ptolemy/__pycache__/utilities.cpython-312.pyc +0 -0
  387. snappy/snap/__pycache__/__init__.cpython-312.pyc +0 -0
  388. snappy/snap/__pycache__/character_varieties.cpython-312.pyc +0 -0
  389. snappy/snap/__pycache__/fundamental_polyhedron.cpython-312.pyc +0 -0
  390. snappy/snap/__pycache__/interval_reps.cpython-312.pyc +0 -0
  391. snappy/snap/__pycache__/kernel_structures.cpython-312.pyc +0 -0
  392. snappy/snap/__pycache__/mcomplex_base.cpython-312.pyc +0 -0
  393. snappy/snap/__pycache__/nsagetools.cpython-312.pyc +0 -0
  394. snappy/snap/__pycache__/polished_reps.cpython-312.pyc +0 -0
  395. snappy/snap/__pycache__/shapes.cpython-312.pyc +0 -0
  396. snappy/snap/__pycache__/slice_obs_HKL.cpython-312.pyc +0 -0
  397. snappy/snap/__pycache__/utilities.cpython-312.pyc +0 -0
  398. snappy/snap/peripheral/__pycache__/__init__.cpython-312.pyc +0 -0
  399. snappy/snap/peripheral/__pycache__/dual_cellulation.cpython-312.pyc +0 -0
  400. snappy/snap/peripheral/__pycache__/link.cpython-312.pyc +0 -0
  401. snappy/snap/peripheral/__pycache__/peripheral.cpython-312.pyc +0 -0
  402. snappy/snap/peripheral/__pycache__/surface.cpython-312.pyc +0 -0
  403. snappy/snap/t3mlite/__pycache__/__init__.cpython-312.pyc +0 -0
  404. snappy/snap/t3mlite/__pycache__/arrow.cpython-312.pyc +0 -0
  405. snappy/snap/t3mlite/__pycache__/corner.cpython-312.pyc +0 -0
  406. snappy/snap/t3mlite/__pycache__/edge.cpython-312.pyc +0 -0
  407. snappy/snap/t3mlite/__pycache__/face.cpython-312.pyc +0 -0
  408. snappy/snap/t3mlite/__pycache__/files.cpython-312.pyc +0 -0
  409. snappy/snap/t3mlite/__pycache__/homology.cpython-312.pyc +0 -0
  410. snappy/snap/t3mlite/__pycache__/linalg.cpython-312.pyc +0 -0
  411. snappy/snap/t3mlite/__pycache__/mcomplex.cpython-312.pyc +0 -0
  412. snappy/snap/t3mlite/__pycache__/perm4.cpython-312.pyc +0 -0
  413. snappy/snap/t3mlite/__pycache__/simplex.cpython-312.pyc +0 -0
  414. snappy/snap/t3mlite/__pycache__/spun.cpython-312.pyc +0 -0
  415. snappy/snap/t3mlite/__pycache__/surface.cpython-312.pyc +0 -0
  416. snappy/snap/t3mlite/__pycache__/tetrahedron.cpython-312.pyc +0 -0
  417. snappy/snap/t3mlite/__pycache__/vertex.cpython-312.pyc +0 -0
  418. snappy/togl/__init__.py +0 -3
  419. snappy/togl/darwin-tk8.6/Togl2.1/LICENSE +0 -28
  420. snappy/togl/darwin-tk8.6/Togl2.1/libTogl2.1.dylib +0 -0
  421. snappy/togl/darwin-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
  422. snappy/togl/darwin-tk8.7/Togl2.1/LICENSE +0 -28
  423. snappy/togl/darwin-tk8.7/Togl2.1/libTogl2.1.dylib +0 -0
  424. snappy/togl/darwin-tk8.7/Togl2.1/pkgIndex.tcl +0 -5
  425. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
  426. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/libTogl2.1.so +0 -0
  427. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
  428. snappy/togl/win32VC-tk8.6/Togl2.1/LICENSE +0 -28
  429. snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.dll +0 -0
  430. snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.lib +0 -0
  431. snappy/togl/win32VC-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
  432. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
  433. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.dll +0 -0
  434. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.lib +0 -0
  435. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
  436. snappy/twister/__pycache__/__init__.cpython-312.pyc +0 -0
  437. snappy/twister/__pycache__/main.cpython-312.pyc +0 -0
  438. snappy/upper_halfspace/__pycache__/__init__.cpython-312.pyc +0 -0
  439. snappy/upper_halfspace/__pycache__/ideal_point.cpython-312.pyc +0 -0
  440. snappy/verify/__pycache__/__init__.cpython-312.pyc +0 -0
  441. snappy/verify/__pycache__/cuspCrossSection.cpython-312.pyc +0 -0
  442. snappy/verify/__pycache__/cuspTranslations.cpython-312.pyc +0 -0
  443. snappy/verify/__pycache__/cusp_areas.cpython-312.pyc +0 -0
  444. snappy/verify/__pycache__/cusp_shapes.cpython-312.pyc +0 -0
  445. snappy/verify/__pycache__/exceptions.cpython-312.pyc +0 -0
  446. snappy/verify/__pycache__/interval_newton_shapes_engine.cpython-312.pyc +0 -0
  447. snappy/verify/__pycache__/interval_tree.cpython-312.pyc +0 -0
  448. snappy/verify/__pycache__/krawczyk_shapes_engine.cpython-312.pyc +0 -0
  449. snappy/verify/__pycache__/realAlgebra.cpython-312.pyc +0 -0
  450. snappy/verify/__pycache__/shapes.cpython-312.pyc +0 -0
  451. snappy/verify/__pycache__/short_slopes.cpython-312.pyc +0 -0
  452. snappy/verify/__pycache__/squareExtensions.cpython-312.pyc +0 -0
  453. snappy/verify/__pycache__/verifyCanonical.cpython-312.pyc +0 -0
  454. snappy/verify/__pycache__/verifyHyperbolicity.cpython-312.pyc +0 -0
  455. snappy/verify/__pycache__/volume.cpython-312.pyc +0 -0
  456. snappy/verify/complex_volume/__pycache__/__init__.cpython-312.pyc +0 -0
  457. snappy/verify/complex_volume/__pycache__/adjust_torsion.cpython-312.pyc +0 -0
  458. snappy/verify/complex_volume/__pycache__/closed.cpython-312.pyc +0 -0
  459. snappy/verify/complex_volume/__pycache__/compute_ptolemys.cpython-312.pyc +0 -0
  460. snappy/verify/complex_volume/__pycache__/cusped.cpython-312.pyc +0 -0
  461. snappy/verify/complex_volume/__pycache__/extended_bloch.cpython-312.pyc +0 -0
  462. snappy/verify/cuspCrossSection.py +0 -1422
  463. snappy/verify/maximal_cusp_area_matrix/__pycache__/__init__.cpython-312.pyc +0 -0
  464. snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_tiling_engine.cpython-312.pyc +0 -0
  465. snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_translate_engine.cpython-312.pyc +0 -0
  466. snappy/verify/upper_halfspace/__pycache__/__init__.cpython-312.pyc +0 -0
  467. snappy/verify/upper_halfspace/__pycache__/extended_matrix.cpython-312.pyc +0 -0
  468. snappy/verify/upper_halfspace/__pycache__/finite_point.cpython-312.pyc +0 -0
  469. snappy/verify/upper_halfspace/__pycache__/ideal_point.cpython-312.pyc +0 -0
  470. snappy-3.1.1.dist-info/RECORD +0 -572
  471. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/entry_points.txt +0 -0
@@ -1,61 +1,61 @@
1
- Step-by-step examples: Part 4
2
- =============================
3
-
4
- **Advanced topics. Still under construction.**
5
-
6
- .. _ptolemy-example-structure-of-solution:
7
-
8
- The structure of an exact solution
9
- ----------------------------------
10
-
11
- A solution to the Ptolemy variety (here ``sol``) is an object of type ``PtolemyCoordinates`` which is a subclass of a python dictionary. It assigns a value to each Ptolemy coordinate c\ :sub:`...` (the s\ :sub:`...` are related to the obstruction class which is trivial here). We can get the value assigned to a particular Ptolemy coordinate as follows::
12
-
13
- >>> sol = Manifold("m003").ptolemy_variety(2).retrieve_solutions()[0]
14
- >>> sol['c_0101_1']
15
- Mod(-x, x^2 - x - 1)
16
-
17
- This is a pari object of type `POLMOD`. It means that the solution is in the number field with defining polynomial *x*\ :sup:`2`\ - *x* - 1 and that it is equal to - *x* where *x* is a root in the defining polynomial.
18
-
19
- We can get to the parts of a pari `POLMOD` object by::
20
-
21
- >>> sol['c_0101_1'].lift()
22
- -x
23
- >>> sol['c_0101_1'].mod()
24
- x^2 - x - 1
25
-
26
- These objects also support the field operations, here we are computing a cross ratio::
27
-
28
- >>> (sol['c_0101_0'] * sol['c_1010_0']) / (sol['c_1001_0'] * sol['c_0110_0'])
29
- Mod(x, x^2 - x - 1)
30
-
31
- **Remark:** We would prefer to represent these using types that are better suited when using sage such as NumberField and NumberFieldElement. In the future, we might jettison support of the ptolemy module outside of sage and use sage's native types.
32
-
33
- Rational Univariate Representation
34
- ----------------------------------
35
-
36
- We have some limited support for the `Rational Univariate Representation`, for example::
37
-
38
- >>> sols = Manifold("m069").ptolemy_variety(3).retrieve_solutions()
39
- >>> sols[4]
40
- PtolemyCoordinates(
41
- { 'c_0201_0': ( Mod(-426088934700737884313191344*x^24 + 4110489425474123899213651272*x^23 ...
42
- - 67064980598091504185767190,
43
- x^25 ... - 196124*x^4 + 14010*x^3 - 1560*x^2 + 72*x - 1)
44
- ) / ( Mod(875895332415105303646551573*x^24 - 8450034810535061601312104296*x^23 ...
45
- + 137871639973525691285247446,
46
- x^25 ... - 196124*x^4 + 14010*x^3 - 1560*x^2 + 72*x - 1) ),
47
- ...
48
- },
49
- is_numerical = False, ...)
50
-
51
- This means that ``c_0201_0`` is assigned the fraction of those two ``POLDMOD`` objects.
52
-
53
- **Remark:** This is still under development.
54
-
55
- TODO
56
- ----
57
-
58
- * Give an overview of the classes and the methods.
59
- * Explain how the magma file are generated. Say that magma computes the RadicalDecomposition. Ptolemy module can process the lexicographic Groebner basis of a prime ideal.
60
-
61
-
1
+ Step-by-step examples: Part 4
2
+ =============================
3
+
4
+ **Advanced topics. Still under construction.**
5
+
6
+ .. _ptolemy-example-structure-of-solution:
7
+
8
+ The structure of an exact solution
9
+ ----------------------------------
10
+
11
+ A solution to the Ptolemy variety (here ``sol``) is an object of type ``PtolemyCoordinates`` which is a subclass of a python dictionary. It assigns a value to each Ptolemy coordinate c\ :sub:`...` (the s\ :sub:`...` are related to the obstruction class which is trivial here). We can get the value assigned to a particular Ptolemy coordinate as follows::
12
+
13
+ >>> sol = Manifold("m003").ptolemy_variety(2).retrieve_solutions()[0]
14
+ >>> sol['c_0101_1']
15
+ Mod(-x, x^2 - x - 1)
16
+
17
+ This is a pari object of type `POLMOD`. It means that the solution is in the number field with defining polynomial *x*\ :sup:`2`\ - *x* - 1 and that it is equal to - *x* where *x* is a root in the defining polynomial.
18
+
19
+ We can get to the parts of a pari `POLMOD` object by::
20
+
21
+ >>> sol['c_0101_1'].lift()
22
+ -x
23
+ >>> sol['c_0101_1'].mod()
24
+ x^2 - x - 1
25
+
26
+ These objects also support the field operations, here we are computing a cross ratio::
27
+
28
+ >>> (sol['c_0101_0'] * sol['c_1010_0']) / (sol['c_1001_0'] * sol['c_0110_0'])
29
+ Mod(x, x^2 - x - 1)
30
+
31
+ **Remark:** We would prefer to represent these using types that are better suited when using sage such as NumberField and NumberFieldElement. In the future, we might jettison support of the ptolemy module outside of sage and use sage's native types.
32
+
33
+ Rational Univariate Representation
34
+ ----------------------------------
35
+
36
+ We have some limited support for the `Rational Univariate Representation`, for example::
37
+
38
+ >>> sols = Manifold("m069").ptolemy_variety(3).retrieve_solutions()
39
+ >>> sols[4]
40
+ PtolemyCoordinates(
41
+ { 'c_0201_0': ( Mod(-426088934700737884313191344*x^24 + 4110489425474123899213651272*x^23 ...
42
+ - 67064980598091504185767190,
43
+ x^25 ... - 196124*x^4 + 14010*x^3 - 1560*x^2 + 72*x - 1)
44
+ ) / ( Mod(875895332415105303646551573*x^24 - 8450034810535061601312104296*x^23 ...
45
+ + 137871639973525691285247446,
46
+ x^25 ... - 196124*x^4 + 14010*x^3 - 1560*x^2 + 72*x - 1) ),
47
+ ...
48
+ },
49
+ is_numerical = False, ...)
50
+
51
+ This means that ``c_0201_0`` is assigned the fraction of those two ``POLDMOD`` objects.
52
+
53
+ **Remark:** This is still under development.
54
+
55
+ TODO
56
+ ----
57
+
58
+ * Give an overview of the classes and the methods.
59
+ * Explain how the magma file are generated. Say that magma computes the RadicalDecomposition. Ptolemy module can process the lexicographic Groebner basis of a prime ideal.
60
+
61
+
@@ -1,105 +1,105 @@
1
- Mathematical preliminaries
2
- ==========================
3
-
4
- Given a triangulation, the ptolemy module will produce a system of equation that is equivalent to
5
- the reduced Ptolemy variety (see [GTZ2011]_, Section 5 of [GGZ2012]_, and Proposition 4.7 of [GGZ2014]_).
6
-
7
- A solution
8
- to this system of equations where no Ptolemy coordinate is zero yields a :ref:`boundary-unipotent <ptolemy-boundary-unipotent>`
9
- SL(*N*, **C**)-representation, respectively, PSL(*N*, **C**)-representation (see :ref:`obstruction-class`).
10
-
11
- Note that a solution where some Ptolemy coordinates are zero might not have enough information
12
- to recover the representation - thus the ptolemy module discards those and thus might miss some
13
- boundary-unipotent representations for the chosen triangulation (see :ref:`ptolemy-generically-decorated`).
14
- This is the same problem that the
15
- gluing equations for finding PGL(2, **C**)-representations suffer from where simplices in the developing
16
- map can be degenerate and yielding cross ratios that are 0, 1, or :math:`\infty`\ .
17
-
18
- .. _ptolemy-boundary-unipotent:
19
-
20
- Boundary-unipotent
21
- ------------------
22
-
23
- We call a SL(*N*, **C**)-representation *boundary-unipotent* if each peripheral subgroup is taken to
24
- a conjugate of the unipotent group *P* of upper unit-triangular matrices. Similarly, we call
25
- a PSL(*N*, **C**)-representation *boundary-unipotent* if each peripheral subgroup is taken to a conjugate
26
- of the unipotent group of PSL(*N*, **C**), i.e., the image of *P* under the projection SL(*N*, **C**)\ :math:`\rightarrow`\ PSL(*N*, **C**).
27
-
28
- Note that even when boundary-unipotent PSL(*N*, **C**)-representation can be lifted to an
29
- SL(*N*, **C**)-representation, the lift might no longer be boundary-unipotent, i.e., there might be
30
- a peripheral curve whose image now is conjugate to an upper triangular matrix with an *N*-th root
31
- of unity on the diagonal. For example, if the manifold is hyperbolic and has one cusp,
32
- any lift of the geometric representation will take the longitude
33
- to a matrix with trace -2 and is thus not boundary-unipotent as SL(2, **C**)-representation.
34
-
35
- .. _obstruction-class:
36
-
37
- Obstruction class
38
- -----------------
39
-
40
- Given a boundary-unipotent PSL(*N*, **C**)-representation, we obtain an *obstruction class* in H\ :sup:`2`\ (M,\ :math:`\partial`\ M; **Z**/*N*)
41
- that is trivial if and only if the representations lifts to a boundary-unipotent SL(*N*, **C**)-representation (see Section 9.1 of [GTZ2011]_ and Section 1.3 of [GGZ2014]_).
42
- Given a triangulation and an element in H\ :sup:`2`\ (M,\ :math:`\partial`\ M; **Z**/*N*), the Ptolemy variety can be modified to find
43
- the boundary-unipotent
44
- PSL(*N*, **C**)-representations with that obstruction class (for *N* > 2 this is implemented here but has not been published yet).
45
-
46
- Note that two elements in H\ :sup:`2`\ (M,\ :math:`\partial`\ M; **Z**/*N*)
47
- related by multiplication by an element in (**Z**/*N*)\ :sup:`*` yield Ptolemy
48
- varieties corresponding to picking different Galois conjugates for the *N*-th root of unity. Thus, it is enough
49
- to consider a representative for each element in the quotient H\ :sup:`2`\ (M,\ :math:`\partial`\ M; **Z**/*N*)/(**Z**/*N*)\ :sup:`*`\ .
50
-
51
- .. _ptolemy-psl-multiplicity:
52
-
53
- SL(*N*, **C**) vs PSL(*N*, **C**)
54
- ---------------------------------
55
-
56
- The reduced Ptolemy variety for the trivial obstruction class can have several points (say *d*) giving different SL(*N*, **C**)-representations that are the same as PSL(*N*, **C**)-representations. Similarly, for the non-trivial obstruction class we can have *d* points in the reduced Ptolemy variety yielding the same PSL(*N*, **C**)-representation.
57
-
58
- The degree *d* of this correspondence is the size of H\ :sup:`1`\ (\ :math:`\hat{M}`\ ; **Z**/*N*) where :math:`\hat{M}` is the cell complex obtained from collapsing each cusp to a point.
59
-
60
- .. _ptolemy-generically-decorated:
61
-
62
- Generically decorated representations
63
- -------------------------------------
64
-
65
- We want to point out two important facts when using the reduced Ptolemy variety to find boundary-unipotent representations:
66
-
67
- * We miss representations that are not generically decorated (as mentioned above). This happens but rarely.
68
- * A positively dimensional component in the reduced Ptolemy variety might mean two things (which we can distinguish by looking at the images of the peripheral groups):
69
- * a positively dimensional family of boundary-unipotent representations or
70
- * a family of decorations of the same representation.
71
-
72
- The reason for this is that the reduced Ptolmey variety does not parametrize representations but generically decorated representations (which can also be thought of as development maps). We just list the facts about decorations important to us here and refer the reader for details to Section 4 of [GTZ2011]_ and Section 8 of [GGZ2012]_ (where decoration would be called *B*-decoration or (SL(*N*), **C**), *B*)-decoration with *B* the Borel group of upper triangular matrices):
73
-
74
- * Every boundary-unipotent representation of a cusped manifold admits a decoration. The set of decorations of a representation is intrinsic to the representation and independent of the triangulation.
75
- * The representation determines the decoration uniquely if and only if the representation is boundary-non-degenerate (which most representations are).
76
- * Given a decorated representation and an ideal triangulation of a cusped manifold, we obtain Ptolemy coordinates.
77
- * If all the resulting Ptolemy coordinates are non-zero, we call the representation *generically decorated* - a notion that depends on the chosen triangulation.
78
- * The reduced Ptolemy variety parametrizes generically decorated and boundary-unipotent representations.
79
-
80
-
81
- .. _ptolemy-reduced-variety:
82
-
83
- Reduced Ptolemy variety
84
- -----------------------
85
-
86
- We will actually always use the reduced Ptolemy variety, i.e., the system of equation that consists of the Ptolemy relations (always of the form
87
- :math:`\pm` c\ :sub:`...` c\ :sub:`...` :math:`\pm` c\ :sub:`...` c\ :sub:`...` :math:`\pm` c\ :sub:`...` c\ :sub:`...`\) and extra equations fixing an appropriate set of (N-1) Ptolemy coordinates per cusp as described in Proposition 4.7 of [GGZ2014]_. This is because the Ptolemy relations alone admit an action by (**C**\ :sup:`*`\ )\ :sup:`(N-1)` for each cusp that does not change the representation it yields.
88
-
89
- In other words, the Ptolemy variety parametrizes *P*-decorations and the reduced Ptolemy variety parametrizes *B*-decorations.
90
-
91
- Future work
92
- -----------
93
-
94
- In unpublished work, we developed an algorithm that takes some triangulation of a manifold and constructs a set of triangulations and corresponding Ptolemy varieties (with extra edge relations) such that we can guarantee that all boundary-unipotent PSL(2,C)-representations are found - not just the ones that are generically decorated with respect to the chosen triangulation. This is inspired by [S2009]_. The ptolemy module might support this in the future.
95
-
96
- In [Z2014]_, the Ptolemy variety was extended to detect non boundary-unipotent representations as well. The ptolemy module might produce these varieties in the future. This might offer another way of computing A-polynomials - that when combined with the above algorithm is guaranteed to be the full A-polynomial and not just a factor of it.
97
-
98
- References
99
- ----------
100
-
101
- .. [S2009] Henry Segerman: A generalisation of the deformation variety, http://arxiv.org/abs/0904.1893
102
- .. [GTZ2011] Stavros Garoufalidis, Dylan P. Thurston, and Christian K. Zickert: The Complex Volume of SL(n,C)-Representations of 3-Manifolds, http://arxiv.org/abs/1111.2828
103
- .. [GGZ2012] Stavros Garoufalidis, Matthias Goerner, and Christian K. Zickert: Gluing Equations for PGL(n,C)-Representations of 3-Manifolds, http://arxiv.org/abs/1207.6711
104
- .. [GGZ2014] Stavros Garoufalidis, Matthias Goerner, and Christian K. Zickert: The Ptolemy Field of 3-Manifold Representations, http://arxiv.org/abs/1401.5542
105
- .. [Z2014] Christian K. Zickert: Ptolemy coordinates, Dehn invariant, and the A-polynomial, http://arxiv.org/abs/1405.0025
1
+ Mathematical preliminaries
2
+ ==========================
3
+
4
+ Given a triangulation, the ptolemy module will produce a system of equation that is equivalent to
5
+ the reduced Ptolemy variety (see [GTZ2011]_, Section 5 of [GGZ2012]_, and Proposition 4.7 of [GGZ2014]_).
6
+
7
+ A solution
8
+ to this system of equations where no Ptolemy coordinate is zero yields a :ref:`boundary-unipotent <ptolemy-boundary-unipotent>`
9
+ SL(*N*, **C**)-representation, respectively, PSL(*N*, **C**)-representation (see :ref:`obstruction-class`).
10
+
11
+ Note that a solution where some Ptolemy coordinates are zero might not have enough information
12
+ to recover the representation - thus the ptolemy module discards those and thus might miss some
13
+ boundary-unipotent representations for the chosen triangulation (see :ref:`ptolemy-generically-decorated`).
14
+ This is the same problem that the
15
+ gluing equations for finding PGL(2, **C**)-representations suffer from where simplices in the developing
16
+ map can be degenerate and yielding cross ratios that are 0, 1, or :math:`\infty`\ .
17
+
18
+ .. _ptolemy-boundary-unipotent:
19
+
20
+ Boundary-unipotent
21
+ ------------------
22
+
23
+ We call a SL(*N*, **C**)-representation *boundary-unipotent* if each peripheral subgroup is taken to
24
+ a conjugate of the unipotent group *P* of upper unit-triangular matrices. Similarly, we call
25
+ a PSL(*N*, **C**)-representation *boundary-unipotent* if each peripheral subgroup is taken to a conjugate
26
+ of the unipotent group of PSL(*N*, **C**), i.e., the image of *P* under the projection SL(*N*, **C**)\ :math:`\rightarrow`\ PSL(*N*, **C**).
27
+
28
+ Note that even when boundary-unipotent PSL(*N*, **C**)-representation can be lifted to an
29
+ SL(*N*, **C**)-representation, the lift might no longer be boundary-unipotent, i.e., there might be
30
+ a peripheral curve whose image now is conjugate to an upper triangular matrix with an *N*-th root
31
+ of unity on the diagonal. For example, if the manifold is hyperbolic and has one cusp,
32
+ any lift of the geometric representation will take the longitude
33
+ to a matrix with trace -2 and is thus not boundary-unipotent as SL(2, **C**)-representation.
34
+
35
+ .. _obstruction-class:
36
+
37
+ Obstruction class
38
+ -----------------
39
+
40
+ Given a boundary-unipotent PSL(*N*, **C**)-representation, we obtain an *obstruction class* in H\ :sup:`2`\ (M,\ :math:`\partial`\ M; **Z**/*N*)
41
+ that is trivial if and only if the representations lifts to a boundary-unipotent SL(*N*, **C**)-representation (see Section 9.1 of [GTZ2011]_ and Section 1.3 of [GGZ2014]_).
42
+ Given a triangulation and an element in H\ :sup:`2`\ (M,\ :math:`\partial`\ M; **Z**/*N*), the Ptolemy variety can be modified to find
43
+ the boundary-unipotent
44
+ PSL(*N*, **C**)-representations with that obstruction class (for *N* > 2 this is implemented here but has not been published yet).
45
+
46
+ Note that two elements in H\ :sup:`2`\ (M,\ :math:`\partial`\ M; **Z**/*N*)
47
+ related by multiplication by an element in (**Z**/*N*)\ :sup:`*` yield Ptolemy
48
+ varieties corresponding to picking different Galois conjugates for the *N*-th root of unity. Thus, it is enough
49
+ to consider a representative for each element in the quotient H\ :sup:`2`\ (M,\ :math:`\partial`\ M; **Z**/*N*)/(**Z**/*N*)\ :sup:`*`\ .
50
+
51
+ .. _ptolemy-psl-multiplicity:
52
+
53
+ SL(*N*, **C**) vs PSL(*N*, **C**)
54
+ ---------------------------------
55
+
56
+ The reduced Ptolemy variety for the trivial obstruction class can have several points (say *d*) giving different SL(*N*, **C**)-representations that are the same as PSL(*N*, **C**)-representations. Similarly, for the non-trivial obstruction class we can have *d* points in the reduced Ptolemy variety yielding the same PSL(*N*, **C**)-representation.
57
+
58
+ The degree *d* of this correspondence is the size of H\ :sup:`1`\ (\ :math:`\hat{M}`\ ; **Z**/*N*) where :math:`\hat{M}` is the cell complex obtained from collapsing each cusp to a point.
59
+
60
+ .. _ptolemy-generically-decorated:
61
+
62
+ Generically decorated representations
63
+ -------------------------------------
64
+
65
+ We want to point out two important facts when using the reduced Ptolemy variety to find boundary-unipotent representations:
66
+
67
+ * We miss representations that are not generically decorated (as mentioned above). This happens but rarely.
68
+ * A positively dimensional component in the reduced Ptolemy variety might mean two things (which we can distinguish by looking at the images of the peripheral groups):
69
+ * a positively dimensional family of boundary-unipotent representations or
70
+ * a family of decorations of the same representation.
71
+
72
+ The reason for this is that the reduced Ptolmey variety does not parametrize representations but generically decorated representations (which can also be thought of as development maps). We just list the facts about decorations important to us here and refer the reader for details to Section 4 of [GTZ2011]_ and Section 8 of [GGZ2012]_ (where decoration would be called *B*-decoration or (SL(*N*), **C**), *B*)-decoration with *B* the Borel group of upper triangular matrices):
73
+
74
+ * Every boundary-unipotent representation of a cusped manifold admits a decoration. The set of decorations of a representation is intrinsic to the representation and independent of the triangulation.
75
+ * The representation determines the decoration uniquely if and only if the representation is boundary-non-degenerate (which most representations are).
76
+ * Given a decorated representation and an ideal triangulation of a cusped manifold, we obtain Ptolemy coordinates.
77
+ * If all the resulting Ptolemy coordinates are non-zero, we call the representation *generically decorated* - a notion that depends on the chosen triangulation.
78
+ * The reduced Ptolemy variety parametrizes generically decorated and boundary-unipotent representations.
79
+
80
+
81
+ .. _ptolemy-reduced-variety:
82
+
83
+ Reduced Ptolemy variety
84
+ -----------------------
85
+
86
+ We will actually always use the reduced Ptolemy variety, i.e., the system of equation that consists of the Ptolemy relations (always of the form
87
+ :math:`\pm` c\ :sub:`...` c\ :sub:`...` :math:`\pm` c\ :sub:`...` c\ :sub:`...` :math:`\pm` c\ :sub:`...` c\ :sub:`...`\) and extra equations fixing an appropriate set of (N-1) Ptolemy coordinates per cusp as described in Proposition 4.7 of [GGZ2014]_. This is because the Ptolemy relations alone admit an action by (**C**\ :sup:`*`\ )\ :sup:`(N-1)` for each cusp that does not change the representation it yields.
88
+
89
+ In other words, the Ptolemy variety parametrizes *P*-decorations and the reduced Ptolemy variety parametrizes *B*-decorations.
90
+
91
+ Future work
92
+ -----------
93
+
94
+ In unpublished work, we developed an algorithm that takes some triangulation of a manifold and constructs a set of triangulations and corresponding Ptolemy varieties (with extra edge relations) such that we can guarantee that all boundary-unipotent PSL(2,C)-representations are found - not just the ones that are generically decorated with respect to the chosen triangulation. This is inspired by [S2009]_. The ptolemy module might support this in the future.
95
+
96
+ In [Z2014]_, the Ptolemy variety was extended to detect non boundary-unipotent representations as well. The ptolemy module might produce these varieties in the future. This might offer another way of computing A-polynomials - that when combined with the above algorithm is guaranteed to be the full A-polynomial and not just a factor of it.
97
+
98
+ References
99
+ ----------
100
+
101
+ .. [S2009] Henry Segerman: A generalisation of the deformation variety, http://arxiv.org/abs/0904.1893
102
+ .. [GTZ2011] Stavros Garoufalidis, Dylan P. Thurston, and Christian K. Zickert: The Complex Volume of SL(n,C)-Representations of 3-Manifolds, http://arxiv.org/abs/1111.2828
103
+ .. [GGZ2012] Stavros Garoufalidis, Matthias Goerner, and Christian K. Zickert: Gluing Equations for PGL(n,C)-Representations of 3-Manifolds, http://arxiv.org/abs/1207.6711
104
+ .. [GGZ2014] Stavros Garoufalidis, Matthias Goerner, and Christian K. Zickert: The Ptolemy Field of 3-Manifold Representations, http://arxiv.org/abs/1401.5542
105
+ .. [Z2014] Christian K. Zickert: Ptolemy coordinates, Dehn invariant, and the A-polynomial, http://arxiv.org/abs/1405.0025
@@ -1,21 +1,21 @@
1
- ==============================
2
- Screenshots: SnapPy in action
3
- ==============================
4
-
5
- Mac OS X
6
- ---------
7
-
8
- .. image:: images/mac.png
9
- :width: 717 px
10
-
11
-
12
- Linux (Ubuntu 13.10)
13
- ------------------------
14
-
15
- .. image:: images/ubuntu.png
16
-
17
-
18
- Windows 7
19
- --------------------
20
-
21
- .. image:: images/win7.png
1
+ ==============================
2
+ Screenshots: SnapPy in action
3
+ ==============================
4
+
5
+ Mac OS X
6
+ ---------
7
+
8
+ .. image:: images/mac.png
9
+ :width: 717 px
10
+
11
+
12
+ Linux (Ubuntu 13.10)
13
+ ------------------------
14
+
15
+ .. image:: images/ubuntu.png
16
+
17
+
18
+ Windows 7
19
+ --------------------
20
+
21
+ .. image:: images/win7.png
@@ -1,87 +1,87 @@
1
- .. Documentation of the Snap part of SnapPy
2
- .. automodule:: snappy.snap
3
-
4
- Number theory of hyperbolic 3-manifolds
5
- =======================================
6
-
7
- SnapPy has support for arbitrary-precision computation and for
8
- identifying number fields associated to hyperbolic 3-manifolds. While
9
- this functionality is less than that of `Snap
10
- <http://snap-pari.sf.net/>`_, it is already useful. Except for the
11
- first example, one currently needs to use SnapPy inside of `Sage
12
- <http://sagemath.org>`_ to have access to these features. Here's how
13
- to find the tetrahedra shapes to high-precision::
14
-
15
- sage: import snappy
16
- sage: M = snappy.Manifold('m004')
17
- sage: M.tetrahedra_shapes('rect', bits_prec=100)
18
- [0.50000000000000000000000000000 + 0.86602540378443864676372317075*I, 0.50000000000000000000000000000 + 0.86602540378443864676372317075*I]
19
- sage: M.tetrahedra_shapes('rect', dec_prec=100)[0]
20
- 0.500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +
21
- 0.866025403784438646763723170752936183471402626905190314027903489725966508454400018540573093378624288*I
22
-
23
- One can also compute the holonomy representation to any precision::
24
-
25
- sage: G = M.polished_holonomy(bits_prec=100)
26
- sage: G.SL2C('a')
27
- [0.50000000000000000000000000000 + 0.86602540378443864676372317075*I -1.0000000000000000000000000000*I]
28
- [ 1.0000000000000000000000000000*I 1.0000000000000000000000000000 - 1.7320508075688772935274463415*I]
29
-
30
- You can also try to guess the shapes exactly using an LLL-based
31
- algorithm of the type pioneered by Snap::
32
-
33
- sage: T = M.tetrahedra_field_gens()
34
- sage: T.find_field(prec=100, degree=10, optimize=True)
35
- (Number Field in z with defining polynomial x^2 - x + 1, <ApproxAN: 0.5 + 0.866025403784*I>, [x, x])
36
-
37
- You can do the same for various other fields via the methods
38
- ``trace_field_gens``, ``invariant_trace_field_gens``, and ``holonomy_matrix_entries``.
39
-
40
- In more complicated examples, one needs to use higher precision and/or
41
- degree to actually find the exact values::
42
-
43
- sage: N = snappy.Manifold('m004(1,3)')
44
- sage: K = N.trace_field_gens()
45
- sage: K.find_field(prec=100, degree=10, optimize=True) # Fails, so no output
46
- sage: K.find_field(prec=200, degree=20, optimize=True)[0]
47
- Number Field in z with defining polynomial x^11 - 2*x^10 - 8*x^9 + 16*x^8 + 22*x^7 - 44*x^6 - 25*x^5 + 50*x^4 + 11*x^3 - 22*x^2 - x + 1
48
-
49
- We can also compute various hyperbolicly-twisted Alexander
50
- polynomials, as described `here <http://dunfield.info/torsion>`_::
51
-
52
- sage: M = snappy.Manifold('5_2')
53
- sage: M.alexander_polynomial()
54
- 2*a^2 - 3*a + 2
55
- sage: M.hyperbolic_torsion(bits_prec=100)
56
- (2.3376410213776269870195455729 - 0.56227951206230124389918214504*I)*a^2
57
- - 4.0000000000000000000000000003*a
58
- + 2.3376410213776269870195455731 - 0.56227951206230124389918214477*I
59
- sage: M.hyperbolic_SLN_torsion(3, 100) # Dubois-Yamagachi adjoint torsion
60
- (0.40431358073618481197132660504 +
61
- 0.75939451500971650241038772223*I)*a^3
62
- + (2.9032849613891083021420278850 -
63
- 4.1185388389935516999882632998*I)*a^2
64
- + (-2.9032849613891083021420278809 +
65
- 4.1185388389935516999882633007*I)*a
66
- - 0.40431358073618481197132661847 - 0.75939451500971650241038771418*I
67
- sage: M.hyperbolic_SLN_torsion(4, 100) # Why not?
68
- (2.5890988184099251088892745185 + 3.5126610817613336586374292713*I)*a^4
69
- + (10.357403823939297224437742077 - 13.378446302375451727042633120*I)*a^3
70
- + (-26.821802363180149782221451472 + 7.0253221635226673172748587283*I)*a^2
71
- + (10.357403823939297224437738856 - 13.378446302375451727042631346*I)*a
72
- + 2.5890988184099251088892549440 + 3.5126610817613336586374448040*I
73
-
74
- You can find out more about each of these methods using
75
- introspection::
76
-
77
- sage: M.hyperbolic_torsion?
78
- Definition: M.hyperbolic_torsion(M, bits_prec=100, all_lifts=False, wada_conventions=False, phi=None)
79
- Docstring:
80
- Computes the hyperbolic torsion polynomial as defined in [DFJ].
81
-
82
- >>> M = Manifold('K11n42')
83
- >>> M.alexander_polynomial()
84
- 1
85
- >>> tau = M.hyperbolic_torsion(bits_prec=200)
86
- >>> tau.degree()
87
- 6
1
+ .. Documentation of the Snap part of SnapPy
2
+ .. automodule:: snappy.snap
3
+
4
+ Number theory of hyperbolic 3-manifolds
5
+ =======================================
6
+
7
+ SnapPy has support for arbitrary-precision computation and for
8
+ identifying number fields associated to hyperbolic 3-manifolds. While
9
+ this functionality is less than that of `Snap
10
+ <http://snap-pari.sf.net/>`_, it is already useful. Except for the
11
+ first example, one currently needs to use SnapPy inside of `Sage
12
+ <http://sagemath.org>`_ to have access to these features. Here's how
13
+ to find the tetrahedra shapes to high-precision::
14
+
15
+ sage: import snappy
16
+ sage: M = snappy.Manifold('m004')
17
+ sage: M.tetrahedra_shapes('rect', bits_prec=100)
18
+ [0.50000000000000000000000000000 + 0.86602540378443864676372317075*I, 0.50000000000000000000000000000 + 0.86602540378443864676372317075*I]
19
+ sage: M.tetrahedra_shapes('rect', dec_prec=100)[0]
20
+ 0.500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +
21
+ 0.866025403784438646763723170752936183471402626905190314027903489725966508454400018540573093378624288*I
22
+
23
+ One can also compute the holonomy representation to any precision::
24
+
25
+ sage: G = M.polished_holonomy(bits_prec=100)
26
+ sage: G.SL2C('a')
27
+ [0.50000000000000000000000000000 + 0.86602540378443864676372317075*I -1.0000000000000000000000000000*I]
28
+ [ 1.0000000000000000000000000000*I 1.0000000000000000000000000000 - 1.7320508075688772935274463415*I]
29
+
30
+ You can also try to guess the shapes exactly using an LLL-based
31
+ algorithm of the type pioneered by Snap::
32
+
33
+ sage: T = M.tetrahedra_field_gens()
34
+ sage: T.find_field(prec=100, degree=10, optimize=True)
35
+ (Number Field in z with defining polynomial x^2 - x + 1, <ApproxAN: 0.5 + 0.866025403784*I>, [x, x])
36
+
37
+ You can do the same for various other fields via the methods
38
+ ``trace_field_gens``, ``invariant_trace_field_gens``, and ``holonomy_matrix_entries``.
39
+
40
+ In more complicated examples, one needs to use higher precision and/or
41
+ degree to actually find the exact values::
42
+
43
+ sage: N = snappy.Manifold('m004(1,3)')
44
+ sage: K = N.trace_field_gens()
45
+ sage: K.find_field(prec=100, degree=10, optimize=True) # Fails, so no output
46
+ sage: K.find_field(prec=200, degree=20, optimize=True)[0]
47
+ Number Field in z with defining polynomial x^11 - 2*x^10 - 8*x^9 + 16*x^8 + 22*x^7 - 44*x^6 - 25*x^5 + 50*x^4 + 11*x^3 - 22*x^2 - x + 1
48
+
49
+ We can also compute various hyperbolicly-twisted Alexander
50
+ polynomials, as described `here <http://dunfield.info/torsion>`_::
51
+
52
+ sage: M = snappy.Manifold('5_2')
53
+ sage: M.alexander_polynomial()
54
+ 2*a^2 - 3*a + 2
55
+ sage: M.hyperbolic_torsion(bits_prec=100)
56
+ (2.3376410213776269870195455729 - 0.56227951206230124389918214504*I)*a^2
57
+ - 4.0000000000000000000000000003*a
58
+ + 2.3376410213776269870195455731 - 0.56227951206230124389918214477*I
59
+ sage: M.hyperbolic_SLN_torsion(3, 100) # Dubois-Yamagachi adjoint torsion
60
+ (0.40431358073618481197132660504 +
61
+ 0.75939451500971650241038772223*I)*a^3
62
+ + (2.9032849613891083021420278850 -
63
+ 4.1185388389935516999882632998*I)*a^2
64
+ + (-2.9032849613891083021420278809 +
65
+ 4.1185388389935516999882633007*I)*a
66
+ - 0.40431358073618481197132661847 - 0.75939451500971650241038771418*I
67
+ sage: M.hyperbolic_SLN_torsion(4, 100) # Why not?
68
+ (2.5890988184099251088892745185 + 3.5126610817613336586374292713*I)*a^4
69
+ + (10.357403823939297224437742077 - 13.378446302375451727042633120*I)*a^3
70
+ + (-26.821802363180149782221451472 + 7.0253221635226673172748587283*I)*a^2
71
+ + (10.357403823939297224437738856 - 13.378446302375451727042631346*I)*a
72
+ + 2.5890988184099251088892549440 + 3.5126610817613336586374448040*I
73
+
74
+ You can find out more about each of these methods using
75
+ introspection::
76
+
77
+ sage: M.hyperbolic_torsion?
78
+ Definition: M.hyperbolic_torsion(M, bits_prec=100, all_lifts=False, wada_conventions=False, phi=None)
79
+ Docstring:
80
+ Computes the hyperbolic torsion polynomial as defined in [DFJ].
81
+
82
+ >>> M = Manifold('K11n42')
83
+ >>> M.alexander_polynomial()
84
+ 1
85
+ >>> tau = M.hyperbolic_torsion(bits_prec=200)
86
+ >>> tau.degree()
87
+ 6
@@ -1,28 +1,28 @@
1
- .. Documentation of the Python part of SnapPy
2
-
3
- The snappy module and its classes
4
- =======================================
5
-
6
- SnapPy is centered around a Python interface for SnapPea called
7
- "snappy", and this is what you're interacting with in the main "SnapPy
8
- command shell" window. The main class is Manifold, which is an ideal
9
- triangulation of the interior of a compact 3-manifold with torus
10
- boundary, where each tetrahedron has been assigned the geometry of
11
- an ideal tetrahedron in hyperbolic 3-space. A Dehn-filling can be
12
- specified for each boundary component, allowing the description of
13
- closed 3-manifolds and some orbifolds. The class Manifold is derived
14
- from the simpler Triangulation class which lacks any geometric
15
- structure. There are also some additional classes for things like
16
- fundamental groups, Dirichlet domains, etc. Snappy comes with a large
17
- library of 3-manifolds, some of which are grouped together in censuses.
18
-
19
-
20
- .. toctree::
21
- :maxdepth: 2
22
-
23
- manifold
24
- manifoldhp
25
- triangulation
26
- additional_classes
27
- censuses
28
-
1
+ .. Documentation of the Python part of SnapPy
2
+
3
+ The snappy module and its classes
4
+ =======================================
5
+
6
+ SnapPy is centered around a Python interface for SnapPea called
7
+ "snappy", and this is what you're interacting with in the main "SnapPy
8
+ command shell" window. The main class is Manifold, which is an ideal
9
+ triangulation of the interior of a compact 3-manifold with torus
10
+ boundary, where each tetrahedron has been assigned the geometry of
11
+ an ideal tetrahedron in hyperbolic 3-space. A Dehn-filling can be
12
+ specified for each boundary component, allowing the description of
13
+ closed 3-manifolds and some orbifolds. The class Manifold is derived
14
+ from the simpler Triangulation class which lacks any geometric
15
+ structure. There are also some additional classes for things like
16
+ fundamental groups, Dirichlet domains, etc. Snappy comes with a large
17
+ library of 3-manifolds, some of which are grouped together in censuses.
18
+
19
+
20
+ .. toctree::
21
+ :maxdepth: 2
22
+
23
+ manifold
24
+ manifoldhp
25
+ triangulation
26
+ additional_classes
27
+ censuses
28
+