snappy 3.3__cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (541) hide show
  1. snappy/CyOpenGL.cpython-310-aarch64-linux-gnu.so +0 -0
  2. snappy/SnapPy.cpython-310-aarch64-linux-gnu.so +0 -0
  3. snappy/SnapPy.ico +0 -0
  4. snappy/SnapPy.png +0 -0
  5. snappy/SnapPyHP.cpython-310-aarch64-linux-gnu.so +0 -0
  6. snappy/__init__.py +534 -0
  7. snappy/app.py +604 -0
  8. snappy/app_menus.py +372 -0
  9. snappy/browser.py +998 -0
  10. snappy/cache.py +25 -0
  11. snappy/canonical.py +249 -0
  12. snappy/cusps/__init__.py +280 -0
  13. snappy/cusps/cusp_area_matrix.py +98 -0
  14. snappy/cusps/cusp_areas_from_matrix.py +96 -0
  15. snappy/cusps/maximal_cusp_area_matrix.py +136 -0
  16. snappy/cusps/short_slopes_for_cusp.py +217 -0
  17. snappy/cusps/test.py +22 -0
  18. snappy/cusps/trig_cusp_area_matrix.py +63 -0
  19. snappy/database.py +454 -0
  20. snappy/db_utilities.py +79 -0
  21. snappy/decorated_isosig.py +717 -0
  22. snappy/dev/__init__.py +0 -0
  23. snappy/dev/extended_ptolemy/__init__.py +8 -0
  24. snappy/dev/extended_ptolemy/closed.py +106 -0
  25. snappy/dev/extended_ptolemy/complexVolumesClosed.py +149 -0
  26. snappy/dev/extended_ptolemy/direct.py +42 -0
  27. snappy/dev/extended_ptolemy/extended.py +406 -0
  28. snappy/dev/extended_ptolemy/giac_helper.py +43 -0
  29. snappy/dev/extended_ptolemy/giac_rur.py +129 -0
  30. snappy/dev/extended_ptolemy/gluing.py +46 -0
  31. snappy/dev/extended_ptolemy/phc_wrapper.py +220 -0
  32. snappy/dev/extended_ptolemy/printMatrices.py +70 -0
  33. snappy/dev/vericlosed/__init__.py +1 -0
  34. snappy/dev/vericlosed/computeApproxHyperbolicStructureNew.py +159 -0
  35. snappy/dev/vericlosed/computeApproxHyperbolicStructureOrb.py +90 -0
  36. snappy/dev/vericlosed/computeVerifiedHyperbolicStructure.py +111 -0
  37. snappy/dev/vericlosed/gimbalLoopFinder.py +130 -0
  38. snappy/dev/vericlosed/hyperbolicStructure.py +313 -0
  39. snappy/dev/vericlosed/krawczykCertifiedEdgeLengthsEngine.py +165 -0
  40. snappy/dev/vericlosed/oneVertexTruncatedComplex.py +122 -0
  41. snappy/dev/vericlosed/orb/__init__.py +1 -0
  42. snappy/dev/vericlosed/orb/orb_solution_for_snappea_finite_triangulation_mac +0 -0
  43. snappy/dev/vericlosed/parseVertexGramMatrixFile.py +47 -0
  44. snappy/dev/vericlosed/polishApproxHyperbolicStructure.py +61 -0
  45. snappy/dev/vericlosed/test.py +54 -0
  46. snappy/dev/vericlosed/truncatedComplex.py +176 -0
  47. snappy/dev/vericlosed/verificationError.py +58 -0
  48. snappy/dev/vericlosed/verifyHyperbolicStructureEngine.py +177 -0
  49. snappy/doc/_images/SnapPy-196.png +0 -0
  50. snappy/doc/_images/m004_paper_plane_on_systole.jpg +0 -0
  51. snappy/doc/_images/m125_paper_plane.jpg +0 -0
  52. snappy/doc/_images/mac.png +0 -0
  53. snappy/doc/_images/o9_00000_systole_paper_plane.jpg +0 -0
  54. snappy/doc/_images/o9_00000_systole_paper_plane_closer.jpg +0 -0
  55. snappy/doc/_images/plink-action.png +0 -0
  56. snappy/doc/_images/ubuntu.png +0 -0
  57. snappy/doc/_images/win7.png +0 -0
  58. snappy/doc/_sources/additional_classes.rst.txt +40 -0
  59. snappy/doc/_sources/bugs.rst.txt +14 -0
  60. snappy/doc/_sources/censuses.rst.txt +52 -0
  61. snappy/doc/_sources/credits.rst.txt +81 -0
  62. snappy/doc/_sources/development.rst.txt +261 -0
  63. snappy/doc/_sources/index.rst.txt +215 -0
  64. snappy/doc/_sources/installing.rst.txt +249 -0
  65. snappy/doc/_sources/manifold.rst.txt +6 -0
  66. snappy/doc/_sources/manifoldhp.rst.txt +46 -0
  67. snappy/doc/_sources/news.rst.txt +425 -0
  68. snappy/doc/_sources/other.rst.txt +25 -0
  69. snappy/doc/_sources/platonic_census.rst.txt +20 -0
  70. snappy/doc/_sources/plink.rst.txt +102 -0
  71. snappy/doc/_sources/ptolemy.rst.txt +66 -0
  72. snappy/doc/_sources/ptolemy_classes.rst.txt +42 -0
  73. snappy/doc/_sources/ptolemy_examples1.rst.txt +298 -0
  74. snappy/doc/_sources/ptolemy_examples2.rst.txt +363 -0
  75. snappy/doc/_sources/ptolemy_examples3.rst.txt +301 -0
  76. snappy/doc/_sources/ptolemy_examples4.rst.txt +61 -0
  77. snappy/doc/_sources/ptolemy_prelim.rst.txt +105 -0
  78. snappy/doc/_sources/screenshots.rst.txt +21 -0
  79. snappy/doc/_sources/snap.rst.txt +87 -0
  80. snappy/doc/_sources/snappy.rst.txt +28 -0
  81. snappy/doc/_sources/spherogram.rst.txt +103 -0
  82. snappy/doc/_sources/todo.rst.txt +47 -0
  83. snappy/doc/_sources/triangulation.rst.txt +11 -0
  84. snappy/doc/_sources/tutorial.rst.txt +49 -0
  85. snappy/doc/_sources/verify.rst.txt +210 -0
  86. snappy/doc/_sources/verify_internals.rst.txt +79 -0
  87. snappy/doc/_static/SnapPy-horizontal-128.png +0 -0
  88. snappy/doc/_static/SnapPy.ico +0 -0
  89. snappy/doc/_static/_sphinx_javascript_frameworks_compat.js +123 -0
  90. snappy/doc/_static/basic.css +906 -0
  91. snappy/doc/_static/css/badge_only.css +1 -0
  92. snappy/doc/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
  93. snappy/doc/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
  94. snappy/doc/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
  95. snappy/doc/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
  96. snappy/doc/_static/css/fonts/fontawesome-webfont.eot +0 -0
  97. snappy/doc/_static/css/fonts/fontawesome-webfont.svg +2671 -0
  98. snappy/doc/_static/css/fonts/fontawesome-webfont.ttf +0 -0
  99. snappy/doc/_static/css/fonts/fontawesome-webfont.woff +0 -0
  100. snappy/doc/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
  101. snappy/doc/_static/css/fonts/lato-bold-italic.woff +0 -0
  102. snappy/doc/_static/css/fonts/lato-bold-italic.woff2 +0 -0
  103. snappy/doc/_static/css/fonts/lato-bold.woff +0 -0
  104. snappy/doc/_static/css/fonts/lato-bold.woff2 +0 -0
  105. snappy/doc/_static/css/fonts/lato-normal-italic.woff +0 -0
  106. snappy/doc/_static/css/fonts/lato-normal-italic.woff2 +0 -0
  107. snappy/doc/_static/css/fonts/lato-normal.woff +0 -0
  108. snappy/doc/_static/css/fonts/lato-normal.woff2 +0 -0
  109. snappy/doc/_static/css/theme.css +4 -0
  110. snappy/doc/_static/doctools.js +149 -0
  111. snappy/doc/_static/documentation_options.js +13 -0
  112. snappy/doc/_static/file.png +0 -0
  113. snappy/doc/_static/fonts/Lato/lato-bold.eot +0 -0
  114. snappy/doc/_static/fonts/Lato/lato-bold.ttf +0 -0
  115. snappy/doc/_static/fonts/Lato/lato-bold.woff +0 -0
  116. snappy/doc/_static/fonts/Lato/lato-bold.woff2 +0 -0
  117. snappy/doc/_static/fonts/Lato/lato-bolditalic.eot +0 -0
  118. snappy/doc/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
  119. snappy/doc/_static/fonts/Lato/lato-bolditalic.woff +0 -0
  120. snappy/doc/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
  121. snappy/doc/_static/fonts/Lato/lato-italic.eot +0 -0
  122. snappy/doc/_static/fonts/Lato/lato-italic.ttf +0 -0
  123. snappy/doc/_static/fonts/Lato/lato-italic.woff +0 -0
  124. snappy/doc/_static/fonts/Lato/lato-italic.woff2 +0 -0
  125. snappy/doc/_static/fonts/Lato/lato-regular.eot +0 -0
  126. snappy/doc/_static/fonts/Lato/lato-regular.ttf +0 -0
  127. snappy/doc/_static/fonts/Lato/lato-regular.woff +0 -0
  128. snappy/doc/_static/fonts/Lato/lato-regular.woff2 +0 -0
  129. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
  130. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
  131. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
  132. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
  133. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
  134. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
  135. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
  136. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
  137. snappy/doc/_static/jquery.js +2 -0
  138. snappy/doc/_static/js/badge_only.js +1 -0
  139. snappy/doc/_static/js/theme.js +1 -0
  140. snappy/doc/_static/js/versions.js +228 -0
  141. snappy/doc/_static/language_data.js +192 -0
  142. snappy/doc/_static/minus.png +0 -0
  143. snappy/doc/_static/plus.png +0 -0
  144. snappy/doc/_static/pygments.css +75 -0
  145. snappy/doc/_static/searchtools.js +635 -0
  146. snappy/doc/_static/snappy_furo.css +33 -0
  147. snappy/doc/_static/snappy_sphinx_rtd_theme.css +42 -0
  148. snappy/doc/_static/sphinx_highlight.js +154 -0
  149. snappy/doc/additional_classes.html +1500 -0
  150. snappy/doc/bugs.html +132 -0
  151. snappy/doc/censuses.html +453 -0
  152. snappy/doc/credits.html +184 -0
  153. snappy/doc/development.html +385 -0
  154. snappy/doc/doc-latest/additional_classes.html +1500 -0
  155. snappy/doc/doc-latest/bugs.html +132 -0
  156. snappy/doc/doc-latest/censuses.html +453 -0
  157. snappy/doc/doc-latest/credits.html +184 -0
  158. snappy/doc/doc-latest/development.html +385 -0
  159. snappy/doc/doc-latest/genindex.html +1349 -0
  160. snappy/doc/doc-latest/index.html +287 -0
  161. snappy/doc/doc-latest/installing.html +346 -0
  162. snappy/doc/doc-latest/manifold.html +3632 -0
  163. snappy/doc/doc-latest/manifoldhp.html +180 -0
  164. snappy/doc/doc-latest/news.html +438 -0
  165. snappy/doc/doc-latest/objects.inv +0 -0
  166. snappy/doc/doc-latest/other.html +160 -0
  167. snappy/doc/doc-latest/platonic_census.html +376 -0
  168. snappy/doc/doc-latest/plink.html +210 -0
  169. snappy/doc/doc-latest/ptolemy.html +253 -0
  170. snappy/doc/doc-latest/ptolemy_classes.html +1144 -0
  171. snappy/doc/doc-latest/ptolemy_examples1.html +409 -0
  172. snappy/doc/doc-latest/ptolemy_examples2.html +471 -0
  173. snappy/doc/doc-latest/ptolemy_examples3.html +414 -0
  174. snappy/doc/doc-latest/ptolemy_examples4.html +195 -0
  175. snappy/doc/doc-latest/ptolemy_prelim.html +248 -0
  176. snappy/doc/doc-latest/py-modindex.html +165 -0
  177. snappy/doc/doc-latest/screenshots.html +141 -0
  178. snappy/doc/doc-latest/search.html +135 -0
  179. snappy/doc/doc-latest/searchindex.js +1 -0
  180. snappy/doc/doc-latest/snap.html +202 -0
  181. snappy/doc/doc-latest/snappy.html +181 -0
  182. snappy/doc/doc-latest/spherogram.html +1346 -0
  183. snappy/doc/doc-latest/todo.html +166 -0
  184. snappy/doc/doc-latest/triangulation.html +1676 -0
  185. snappy/doc/doc-latest/tutorial.html +159 -0
  186. snappy/doc/doc-latest/verify.html +330 -0
  187. snappy/doc/doc-latest/verify_internals.html +1235 -0
  188. snappy/doc/genindex.html +1349 -0
  189. snappy/doc/index.html +287 -0
  190. snappy/doc/installing.html +346 -0
  191. snappy/doc/manifold.html +3632 -0
  192. snappy/doc/manifoldhp.html +180 -0
  193. snappy/doc/news.html +438 -0
  194. snappy/doc/objects.inv +0 -0
  195. snappy/doc/other.html +160 -0
  196. snappy/doc/platonic_census.html +376 -0
  197. snappy/doc/plink.html +210 -0
  198. snappy/doc/ptolemy.html +253 -0
  199. snappy/doc/ptolemy_classes.html +1144 -0
  200. snappy/doc/ptolemy_examples1.html +409 -0
  201. snappy/doc/ptolemy_examples2.html +471 -0
  202. snappy/doc/ptolemy_examples3.html +414 -0
  203. snappy/doc/ptolemy_examples4.html +195 -0
  204. snappy/doc/ptolemy_prelim.html +248 -0
  205. snappy/doc/py-modindex.html +165 -0
  206. snappy/doc/screenshots.html +141 -0
  207. snappy/doc/search.html +135 -0
  208. snappy/doc/searchindex.js +1 -0
  209. snappy/doc/snap.html +202 -0
  210. snappy/doc/snappy.html +181 -0
  211. snappy/doc/spherogram.html +1346 -0
  212. snappy/doc/todo.html +166 -0
  213. snappy/doc/triangulation.html +1676 -0
  214. snappy/doc/tutorial.html +159 -0
  215. snappy/doc/verify.html +330 -0
  216. snappy/doc/verify_internals.html +1235 -0
  217. snappy/drilling/__init__.py +456 -0
  218. snappy/drilling/barycentric.py +103 -0
  219. snappy/drilling/constants.py +5 -0
  220. snappy/drilling/crush.py +270 -0
  221. snappy/drilling/cusps.py +125 -0
  222. snappy/drilling/debug.py +242 -0
  223. snappy/drilling/epsilons.py +6 -0
  224. snappy/drilling/exceptions.py +55 -0
  225. snappy/drilling/moves.py +620 -0
  226. snappy/drilling/peripheral_curves.py +210 -0
  227. snappy/drilling/perturb.py +188 -0
  228. snappy/drilling/shorten.py +36 -0
  229. snappy/drilling/subdivide.py +274 -0
  230. snappy/drilling/test.py +23 -0
  231. snappy/drilling/test_cases.py +132 -0
  232. snappy/drilling/tracing.py +351 -0
  233. snappy/exceptions.py +26 -0
  234. snappy/export_stl.py +120 -0
  235. snappy/exterior_to_link/__init__.py +2 -0
  236. snappy/exterior_to_link/barycentric_geometry.py +463 -0
  237. snappy/exterior_to_link/exceptions.py +6 -0
  238. snappy/exterior_to_link/geodesic_map.json +14408 -0
  239. snappy/exterior_to_link/hyp_utils.py +112 -0
  240. snappy/exterior_to_link/link_projection.py +323 -0
  241. snappy/exterior_to_link/main.py +198 -0
  242. snappy/exterior_to_link/mcomplex_with_expansion.py +261 -0
  243. snappy/exterior_to_link/mcomplex_with_link.py +687 -0
  244. snappy/exterior_to_link/mcomplex_with_memory.py +162 -0
  245. snappy/exterior_to_link/pl_utils.py +491 -0
  246. snappy/exterior_to_link/put_in_S3.py +156 -0
  247. snappy/exterior_to_link/rational_linear_algebra.py +130 -0
  248. snappy/exterior_to_link/rational_linear_algebra_wrapped.py +135 -0
  249. snappy/exterior_to_link/simplify_to_base_tri.py +114 -0
  250. snappy/exterior_to_link/stored_moves.py +475 -0
  251. snappy/exterior_to_link/test.py +31 -0
  252. snappy/filedialog.py +28 -0
  253. snappy/geometric_structure/__init__.py +212 -0
  254. snappy/geometric_structure/cusp_neighborhood/__init__.py +3 -0
  255. snappy/geometric_structure/cusp_neighborhood/complex_cusp_cross_section.py +691 -0
  256. snappy/geometric_structure/cusp_neighborhood/cusp_cross_section_base.py +480 -0
  257. snappy/geometric_structure/cusp_neighborhood/exceptions.py +41 -0
  258. snappy/geometric_structure/cusp_neighborhood/real_cusp_cross_section.py +294 -0
  259. snappy/geometric_structure/cusp_neighborhood/tiles_for_cusp_neighborhood.py +156 -0
  260. snappy/geometric_structure/cusp_neighborhood/vertices.py +35 -0
  261. snappy/geometric_structure/geodesic/__init__.py +0 -0
  262. snappy/geometric_structure/geodesic/add_core_curves.py +152 -0
  263. snappy/geometric_structure/geodesic/avoid_core_curves.py +369 -0
  264. snappy/geometric_structure/geodesic/canonical_representatives.py +52 -0
  265. snappy/geometric_structure/geodesic/check_away_from_core_curve.py +60 -0
  266. snappy/geometric_structure/geodesic/constants.py +6 -0
  267. snappy/geometric_structure/geodesic/exceptions.py +22 -0
  268. snappy/geometric_structure/geodesic/fixed_points.py +106 -0
  269. snappy/geometric_structure/geodesic/geodesic_start_point_info.py +435 -0
  270. snappy/geometric_structure/geodesic/graph_trace_helper.py +67 -0
  271. snappy/geometric_structure/geodesic/line.py +30 -0
  272. snappy/geometric_structure/geodesic/multiplicity.py +127 -0
  273. snappy/geometric_structure/geodesic/tiles_for_geodesic.py +128 -0
  274. snappy/geometric_structure/test.py +22 -0
  275. snappy/gui.py +121 -0
  276. snappy/horoviewer.py +443 -0
  277. snappy/hyperboloid/__init__.py +212 -0
  278. snappy/hyperboloid/distances.py +259 -0
  279. snappy/hyperboloid/horoball.py +19 -0
  280. snappy/hyperboloid/line.py +35 -0
  281. snappy/hyperboloid/point.py +9 -0
  282. snappy/hyperboloid/triangle.py +29 -0
  283. snappy/info_icon.gif +0 -0
  284. snappy/infowindow.py +65 -0
  285. snappy/isometry_signature.py +389 -0
  286. snappy/len_spec/__init__.py +609 -0
  287. snappy/len_spec/geodesic_info.py +129 -0
  288. snappy/len_spec/geodesic_key_info_dict.py +116 -0
  289. snappy/len_spec/geodesic_piece.py +146 -0
  290. snappy/len_spec/geometric_structure.py +182 -0
  291. snappy/len_spec/geometry.py +136 -0
  292. snappy/len_spec/length_spectrum_geodesic_info.py +185 -0
  293. snappy/len_spec/spine.py +128 -0
  294. snappy/len_spec/test.py +24 -0
  295. snappy/len_spec/test_cases.py +69 -0
  296. snappy/len_spec/tile.py +276 -0
  297. snappy/len_spec/word.py +86 -0
  298. snappy/manifolds/HTWKnots/alternating.gz +0 -0
  299. snappy/manifolds/HTWKnots/nonalternating.gz +0 -0
  300. snappy/manifolds/__init__.py +3 -0
  301. snappy/margulis/__init__.py +332 -0
  302. snappy/margulis/cusp_neighborhood_neighborhood.py +66 -0
  303. snappy/margulis/geodesic_neighborhood.py +152 -0
  304. snappy/margulis/margulis_info.py +21 -0
  305. snappy/margulis/mu_from_neighborhood_pair.py +175 -0
  306. snappy/margulis/neighborhood.py +29 -0
  307. snappy/margulis/test.py +22 -0
  308. snappy/math_basics.py +187 -0
  309. snappy/matrix.py +525 -0
  310. snappy/number.py +657 -0
  311. snappy/numeric_output_checker.py +345 -0
  312. snappy/pari.py +41 -0
  313. snappy/phone_home.py +57 -0
  314. snappy/polyviewer.py +259 -0
  315. snappy/ptolemy/__init__.py +17 -0
  316. snappy/ptolemy/component.py +103 -0
  317. snappy/ptolemy/coordinates.py +2290 -0
  318. snappy/ptolemy/fieldExtensions.py +153 -0
  319. snappy/ptolemy/findLoops.py +473 -0
  320. snappy/ptolemy/geometricRep.py +59 -0
  321. snappy/ptolemy/homology.py +165 -0
  322. snappy/ptolemy/magma/default.magma_template +229 -0
  323. snappy/ptolemy/magma/radicalsOfPrimaryDecomposition.magma_template +79 -0
  324. snappy/ptolemy/manifoldMethods.py +395 -0
  325. snappy/ptolemy/matrix.py +350 -0
  326. snappy/ptolemy/numericalSolutionsToGroebnerBasis.py +113 -0
  327. snappy/ptolemy/polynomial.py +856 -0
  328. snappy/ptolemy/processComponents.py +173 -0
  329. snappy/ptolemy/processFileBase.py +247 -0
  330. snappy/ptolemy/processFileDispatch.py +46 -0
  331. snappy/ptolemy/processMagmaFile.py +392 -0
  332. snappy/ptolemy/processRurFile.py +150 -0
  333. snappy/ptolemy/ptolemyGeneralizedObstructionClass.py +102 -0
  334. snappy/ptolemy/ptolemyObstructionClass.py +64 -0
  335. snappy/ptolemy/ptolemyVariety.py +995 -0
  336. snappy/ptolemy/ptolemyVarietyPrimeIdealGroebnerBasis.py +140 -0
  337. snappy/ptolemy/reginaWrapper.py +698 -0
  338. snappy/ptolemy/regina_testing_files/DT_mcbbiceaibjklmdfgh__sl2_c0.magma_out.bz2 +0 -0
  339. snappy/ptolemy/regina_testing_files/DT_mcbbiceaibjklmdfgh__sl2_c1.magma_out.bz2 +0 -0
  340. snappy/ptolemy/regina_testing_files/DT_mcbbiceaibjklmdfgh__sl2_c2.magma_out.bz2 +0 -0
  341. snappy/ptolemy/regina_testing_files/DT_mcbbiceaibjklmdfgh__sl2_c3.magma_out.bz2 +0 -0
  342. snappy/ptolemy/regina_testing_files/DT_mcbbiceaibjklmdfgh__sl2_c4.magma_out.bz2 +0 -0
  343. snappy/ptolemy/regina_testing_files/DT_mcbbiceaibjklmdfgh__sl2_c5.magma_out.bz2 +0 -0
  344. snappy/ptolemy/regina_testing_files/DT_mcbbiceaibjklmdfgh__sl2_c6.magma_out.bz2 +0 -0
  345. snappy/ptolemy/regina_testing_files/DT_mcbbiceaibjklmdfgh__sl2_c7.magma_out.bz2 +0 -0
  346. snappy/ptolemy/regina_testing_files_generalized/m003__sl3_c0.magma_out.bz2 +0 -0
  347. snappy/ptolemy/regina_testing_files_generalized/m003__sl3_c1.magma_out.bz2 +0 -0
  348. snappy/ptolemy/regina_testing_files_generalized/m015__sl2_c0.magma_out.bz2 +0 -0
  349. snappy/ptolemy/regina_testing_files_generalized/m015__sl2_c1.magma_out.bz2 +0 -0
  350. snappy/ptolemy/regina_testing_files_generalized/m015__sl3_c0.magma_out.bz2 +0 -0
  351. snappy/ptolemy/regina_testing_files_generalized/m015__sl3_c1.magma_out.bz2 +0 -0
  352. snappy/ptolemy/rur.py +545 -0
  353. snappy/ptolemy/solutionsToPrimeIdealGroebnerBasis.py +277 -0
  354. snappy/ptolemy/test.py +1126 -0
  355. snappy/ptolemy/testing_files/3_1__sl2_c0.magma_out.bz2 +0 -0
  356. snappy/ptolemy/testing_files/3_1__sl2_c1.magma_out.bz2 +0 -0
  357. snappy/ptolemy/testing_files/4_1__sl2_c0.magma_out.bz2 +0 -0
  358. snappy/ptolemy/testing_files/4_1__sl2_c1.magma_out.bz2 +0 -0
  359. snappy/ptolemy/testing_files/4_1__sl3_c0.magma_out.bz2 +0 -0
  360. snappy/ptolemy/testing_files/4_1__sl4_c0.magma_out.bz2 +0 -0
  361. snappy/ptolemy/testing_files/4_1__sl4_c1.magma_out.bz2 +0 -0
  362. snappy/ptolemy/testing_files/5_2__sl2_c0.magma_out.bz2 +0 -0
  363. snappy/ptolemy/testing_files/5_2__sl2_c1.magma_out.bz2 +0 -0
  364. snappy/ptolemy/testing_files/DT_mcbbiceaibjklmdfgh__sl2_c0.magma_out.bz2 +0 -0
  365. snappy/ptolemy/testing_files/DT_mcbbiceaibjklmdfgh__sl2_c1.magma_out.bz2 +0 -0
  366. snappy/ptolemy/testing_files/DT_mcbbiceaibjklmdfgh__sl2_c2.magma_out.bz2 +0 -0
  367. snappy/ptolemy/testing_files/DT_mcbbiceaibjklmdfgh__sl2_c3.magma_out.bz2 +0 -0
  368. snappy/ptolemy/testing_files/DT_mcbbiceaibjklmdfgh__sl2_c4.magma_out.bz2 +0 -0
  369. snappy/ptolemy/testing_files/DT_mcbbiceaibjklmdfgh__sl2_c5.magma_out.bz2 +0 -0
  370. snappy/ptolemy/testing_files/DT_mcbbiceaibjklmdfgh__sl2_c6.magma_out.bz2 +0 -0
  371. snappy/ptolemy/testing_files/DT_mcbbiceaibjklmdfgh__sl2_c7.magma_out.bz2 +0 -0
  372. snappy/ptolemy/testing_files/data/pgl2/OrientableCuspedCensus/03_tetrahedra/m019__sl2_c0.magma_out +95 -0
  373. snappy/ptolemy/testing_files/data/pgl2/OrientableCuspedCensus/03_tetrahedra/m019__sl2_c1.magma_out +95 -0
  374. snappy/ptolemy/testing_files/m015__sl3_c0.magma_out.bz2 +0 -0
  375. snappy/ptolemy/testing_files/m135__sl2_c0.magma_out.bz2 +0 -0
  376. snappy/ptolemy/testing_files/m135__sl2_c1.magma_out.bz2 +0 -0
  377. snappy/ptolemy/testing_files/m135__sl2_c2.magma_out.bz2 +0 -0
  378. snappy/ptolemy/testing_files/m135__sl2_c3.magma_out.bz2 +0 -0
  379. snappy/ptolemy/testing_files/m135__sl2_c4.magma_out.bz2 +0 -0
  380. snappy/ptolemy/testing_files/m135__sl2_c5.magma_out.bz2 +0 -0
  381. snappy/ptolemy/testing_files/m135__sl2_c6.magma_out.bz2 +0 -0
  382. snappy/ptolemy/testing_files/m135__sl2_c7.magma_out.bz2 +0 -0
  383. snappy/ptolemy/testing_files/s000__sl2_c0.magma_out.bz2 +0 -0
  384. snappy/ptolemy/testing_files/s000__sl2_c1.magma_out.bz2 +0 -0
  385. snappy/ptolemy/testing_files/t00000__sl2_c0.magma_out.bz2 +0 -0
  386. snappy/ptolemy/testing_files/t00000__sl2_c1.magma_out.bz2 +0 -0
  387. snappy/ptolemy/testing_files/v0000__sl2_c0.magma_out.bz2 +0 -0
  388. snappy/ptolemy/testing_files/v0000__sl2_c1.magma_out.bz2 +0 -0
  389. snappy/ptolemy/testing_files/v0000__sl2_c2.magma_out.bz2 +0 -0
  390. snappy/ptolemy/testing_files/v0000__sl2_c3.magma_out.bz2 +0 -0
  391. snappy/ptolemy/testing_files_generalized/m003__sl2_c0.magma_out.bz2 +0 -0
  392. snappy/ptolemy/testing_files_generalized/m003__sl2_c1.magma_out.bz2 +0 -0
  393. snappy/ptolemy/testing_files_generalized/m003__sl3_c0.magma_out.bz2 +0 -0
  394. snappy/ptolemy/testing_files_generalized/m003__sl3_c1.magma_out.bz2 +0 -0
  395. snappy/ptolemy/testing_files_generalized/m004__sl2_c0.magma_out.bz2 +0 -0
  396. snappy/ptolemy/testing_files_generalized/m004__sl2_c1.magma_out.bz2 +0 -0
  397. snappy/ptolemy/testing_files_generalized/m015__sl2_c1.magma_out.bz2 +0 -0
  398. snappy/ptolemy/testing_files_generalized/m015__sl3_c0.magma_out.bz2 +0 -0
  399. snappy/ptolemy/testing_files_rur/m052__sl3_c0.rur.bz2 +0 -0
  400. snappy/ptolemy/utilities.py +236 -0
  401. snappy/raytracing/__init__.py +64 -0
  402. snappy/raytracing/additional_horospheres.py +64 -0
  403. snappy/raytracing/additional_len_spec_choices.py +63 -0
  404. snappy/raytracing/cohomology_fractal.py +197 -0
  405. snappy/raytracing/eyeball.py +124 -0
  406. snappy/raytracing/finite_raytracing_data.py +237 -0
  407. snappy/raytracing/finite_viewer.py +590 -0
  408. snappy/raytracing/geodesic_tube_info.py +174 -0
  409. snappy/raytracing/geodesics.py +246 -0
  410. snappy/raytracing/geodesics_window.py +258 -0
  411. snappy/raytracing/gui_utilities.py +293 -0
  412. snappy/raytracing/hyperboloid_navigation.py +556 -0
  413. snappy/raytracing/hyperboloid_utilities.py +234 -0
  414. snappy/raytracing/ideal_raytracing_data.py +592 -0
  415. snappy/raytracing/inside_viewer.py +974 -0
  416. snappy/raytracing/pack.py +22 -0
  417. snappy/raytracing/raytracing_data.py +126 -0
  418. snappy/raytracing/raytracing_view.py +454 -0
  419. snappy/raytracing/shaders/Eye.png +0 -0
  420. snappy/raytracing/shaders/NonGeometric.png +0 -0
  421. snappy/raytracing/shaders/__init__.py +101 -0
  422. snappy/raytracing/shaders/fragment.glsl +1744 -0
  423. snappy/raytracing/test.py +29 -0
  424. snappy/raytracing/tooltip.py +146 -0
  425. snappy/raytracing/upper_halfspace_utilities.py +98 -0
  426. snappy/raytracing/view_scale_controller.py +98 -0
  427. snappy/raytracing/zoom_slider/__init__.py +263 -0
  428. snappy/raytracing/zoom_slider/inward.png +0 -0
  429. snappy/raytracing/zoom_slider/inward18.png +0 -0
  430. snappy/raytracing/zoom_slider/outward.png +0 -0
  431. snappy/raytracing/zoom_slider/outward18.png +0 -0
  432. snappy/raytracing/zoom_slider/test.py +20 -0
  433. snappy/sage_helper.py +119 -0
  434. snappy/settings.py +407 -0
  435. snappy/shell.py +53 -0
  436. snappy/snap/__init__.py +117 -0
  437. snappy/snap/character_varieties.py +375 -0
  438. snappy/snap/find_field.py +372 -0
  439. snappy/snap/fox_milnor.py +271 -0
  440. snappy/snap/fundamental_polyhedron.py +569 -0
  441. snappy/snap/generators.py +39 -0
  442. snappy/snap/interval_reps.py +81 -0
  443. snappy/snap/kernel_structures.py +128 -0
  444. snappy/snap/mcomplex_base.py +18 -0
  445. snappy/snap/nsagetools.py +716 -0
  446. snappy/snap/peripheral/__init__.py +1 -0
  447. snappy/snap/peripheral/dual_cellulation.py +219 -0
  448. snappy/snap/peripheral/link.py +127 -0
  449. snappy/snap/peripheral/peripheral.py +159 -0
  450. snappy/snap/peripheral/surface.py +522 -0
  451. snappy/snap/peripheral/test.py +35 -0
  452. snappy/snap/polished_reps.py +335 -0
  453. snappy/snap/shapes.py +152 -0
  454. snappy/snap/slice_obs_HKL/__init__.py +194 -0
  455. snappy/snap/slice_obs_HKL/basics.py +236 -0
  456. snappy/snap/slice_obs_HKL/direct.py +217 -0
  457. snappy/snap/slice_obs_HKL/poly_norm.py +212 -0
  458. snappy/snap/slice_obs_HKL/rep_theory.py +424 -0
  459. snappy/snap/t3mlite/__init__.py +2 -0
  460. snappy/snap/t3mlite/arrow.py +243 -0
  461. snappy/snap/t3mlite/corner.py +22 -0
  462. snappy/snap/t3mlite/edge.py +172 -0
  463. snappy/snap/t3mlite/face.py +37 -0
  464. snappy/snap/t3mlite/files.py +211 -0
  465. snappy/snap/t3mlite/homology.py +53 -0
  466. snappy/snap/t3mlite/linalg.py +419 -0
  467. snappy/snap/t3mlite/mcomplex.py +1499 -0
  468. snappy/snap/t3mlite/perm4.py +320 -0
  469. snappy/snap/t3mlite/setup.py +12 -0
  470. snappy/snap/t3mlite/simplex.py +199 -0
  471. snappy/snap/t3mlite/spun.py +297 -0
  472. snappy/snap/t3mlite/surface.py +519 -0
  473. snappy/snap/t3mlite/test.py +20 -0
  474. snappy/snap/t3mlite/test_vs_regina.py +86 -0
  475. snappy/snap/t3mlite/tetrahedron.py +109 -0
  476. snappy/snap/t3mlite/vertex.py +42 -0
  477. snappy/snap/test.py +139 -0
  478. snappy/snap/utilities.py +288 -0
  479. snappy/test.py +213 -0
  480. snappy/test_cases.py +263 -0
  481. snappy/testing.py +131 -0
  482. snappy/tiling/__init__.py +2 -0
  483. snappy/tiling/dict_based_set.py +79 -0
  484. snappy/tiling/floor.py +49 -0
  485. snappy/tiling/hyperboloid_dict.py +54 -0
  486. snappy/tiling/iter_utils.py +78 -0
  487. snappy/tiling/lifted_tetrahedron.py +22 -0
  488. snappy/tiling/lifted_tetrahedron_set.py +54 -0
  489. snappy/tiling/quotient_dict.py +70 -0
  490. snappy/tiling/real_hash_dict.py +164 -0
  491. snappy/tiling/test.py +23 -0
  492. snappy/tiling/tile.py +224 -0
  493. snappy/tiling/triangle.py +33 -0
  494. snappy/tkterminal.py +920 -0
  495. snappy/twister/__init__.py +20 -0
  496. snappy/twister/main.py +646 -0
  497. snappy/twister/surfaces/S_0_1 +3 -0
  498. snappy/twister/surfaces/S_0_2 +3 -0
  499. snappy/twister/surfaces/S_0_4 +7 -0
  500. snappy/twister/surfaces/S_0_4_Lantern +8 -0
  501. snappy/twister/surfaces/S_1 +3 -0
  502. snappy/twister/surfaces/S_1_1 +4 -0
  503. snappy/twister/surfaces/S_1_2 +5 -0
  504. snappy/twister/surfaces/S_1_2_5 +6 -0
  505. snappy/twister/surfaces/S_2 +6 -0
  506. snappy/twister/surfaces/S_2_1 +8 -0
  507. snappy/twister/surfaces/S_2_heeg +10 -0
  508. snappy/twister/surfaces/S_3 +8 -0
  509. snappy/twister/surfaces/S_3_1 +10 -0
  510. snappy/twister/surfaces/S_4_1 +12 -0
  511. snappy/twister/surfaces/S_5_1 +14 -0
  512. snappy/twister/surfaces/heeg_fig8 +9 -0
  513. snappy/twister/twister_core.cpython-310-aarch64-linux-gnu.so +0 -0
  514. snappy/upper_halfspace/__init__.py +146 -0
  515. snappy/upper_halfspace/ideal_point.py +29 -0
  516. snappy/verify/__init__.py +13 -0
  517. snappy/verify/canonical.py +542 -0
  518. snappy/verify/complex_volume/__init__.py +18 -0
  519. snappy/verify/complex_volume/adjust_torsion.py +86 -0
  520. snappy/verify/complex_volume/closed.py +168 -0
  521. snappy/verify/complex_volume/compute_ptolemys.py +90 -0
  522. snappy/verify/complex_volume/cusped.py +56 -0
  523. snappy/verify/complex_volume/extended_bloch.py +201 -0
  524. snappy/verify/cusp_translations.py +85 -0
  525. snappy/verify/edge_equations.py +80 -0
  526. snappy/verify/exceptions.py +254 -0
  527. snappy/verify/hyperbolicity.py +224 -0
  528. snappy/verify/interval_newton_shapes_engine.py +523 -0
  529. snappy/verify/interval_tree.py +400 -0
  530. snappy/verify/krawczyk_shapes_engine.py +518 -0
  531. snappy/verify/real_algebra.py +286 -0
  532. snappy/verify/shapes.py +25 -0
  533. snappy/verify/square_extensions.py +1005 -0
  534. snappy/verify/test.py +72 -0
  535. snappy/verify/volume.py +128 -0
  536. snappy/version.py +2 -0
  537. snappy-3.3.dist-info/METADATA +58 -0
  538. snappy-3.3.dist-info/RECORD +541 -0
  539. snappy-3.3.dist-info/WHEEL +6 -0
  540. snappy-3.3.dist-info/entry_points.txt +2 -0
  541. snappy-3.3.dist-info/top_level.txt +28 -0
@@ -0,0 +1,177 @@
1
+ from .gimbalLoopFinder import GimbalLoopFinder
2
+ from .truncatedComplex import TruncatedComplex
3
+ from .hyperbolicStructure import HyperbolicStructure
4
+ from .verificationError import *
5
+
6
+ from sage.all import matrix, prod, RealDoubleField, pi
7
+
8
+ __all__ = [ 'VerifyHyperbolicStructureEngine']
9
+
10
+
11
+ class VerifyHyperbolicStructureEngine:
12
+ def __init__(self, hyperbolic_structure):
13
+ self.hyperbolic_structure = hyperbolic_structure
14
+ self.mcomplex = self.hyperbolic_structure.mcomplex
15
+
16
+ if not hyperbolic_structure.exact_edges:
17
+ raise RuntimeError(
18
+ 'Need to specify "exact edges", i.e., edges for which we '
19
+ 'already know by, e.g., the Krawczyk test that their edge '
20
+ 'equations are fullfilled')
21
+
22
+ num_edges = len(self.mcomplex.Edges)
23
+ exact_edges = set(hyperbolic_structure.exact_edges)
24
+
25
+ self.approx_edges = [i for i in range(num_edges)
26
+ if i not in exact_edges]
27
+
28
+ self.truncated_complex = TruncatedComplex(self.mcomplex)
29
+
30
+ self.gimbal_loops = [
31
+ GimbalLoopFinder(self.truncated_complex,
32
+ vertex,
33
+ self.approx_edges).compute_grouped_loop()
34
+ for vertex in self.mcomplex.Vertices ]
35
+
36
+ self.rotations_and_derivatives_for_approx_edges = {
37
+ e : HyperbolicStructure.so3_matrix_and_derivative_for_z_rotation(
38
+ self.hyperbolic_structure.angle_sums[e])
39
+ for e in self.approx_edges
40
+ }
41
+
42
+ def gimbal_derivative(self):
43
+
44
+ self.edge_index_to_column_index = {
45
+ e : i for i, e in enumerate(self.approx_edges)
46
+ }
47
+
48
+ RIF = self.hyperbolic_structure.vertex_gram_matrices[0].base_ring()
49
+ num_rows = 3 * len(self.mcomplex.Vertices)
50
+ num_cols = len(self.approx_edges)
51
+ result = matrix(RIF, num_rows, num_cols)
52
+
53
+ for i, gimbal_loop in enumerate(self.gimbal_loops):
54
+ path_matrices = [
55
+ self.hyperbolic_structure.so3_matrix_for_path(edgePath)
56
+ for edgeLoop, edgePath in gimbal_loop ]
57
+
58
+ for j, (edgeLoop, edgePath) in enumerate(gimbal_loop):
59
+ col = self.edge_index_to_column_index[edgeLoop.edge_index]
60
+ m = self._gimbal_derivative_matrix(
61
+ gimbal_loop, path_matrices, j)
62
+ result[3 * i , col] += m[0,1]
63
+ result[3 * i + 1, col] += m[0,2]
64
+ result[3 * i + 2, col] += m[1,2]
65
+
66
+ return result
67
+
68
+ def assert_avoiding_gimbal_lock(self):
69
+ d = self.gimbal_derivative()
70
+ if not VerifyHyperbolicStructureEngine.is_invertible(d):
71
+ raise GimbalDerivativeNotInvertibleError(d, d.determinant())
72
+
73
+ def assert_two_pi_in_ange_sum_intervals(self):
74
+ RIF = self.hyperbolic_structure.angle_sums[0].parent()
75
+ two_pi = RIF(2 * pi)
76
+
77
+ for angle in self.hyperbolic_structure.angle_sums:
78
+ if two_pi not in angle:
79
+ raise AngleSumIntervalNotContainingTwoPiError()
80
+
81
+ def assert_vertex_gram_matrices_valid(self):
82
+ for G_adj in self.hyperbolic_structure.vertex_gram_adjoints:
83
+ _assert_vertex_gram_adjoint_valid(G_adj)
84
+ for G in self.hyperbolic_structure.vertex_gram_matrices:
85
+ _assert_vertex_gram_matrix_valid (G )
86
+
87
+ def assert_verified_hyperbolic(self):
88
+ self.assert_vertex_gram_matrices_valid()
89
+ self.assert_avoiding_gimbal_lock()
90
+ self.assert_two_pi_in_ange_sum_intervals()
91
+
92
+ @staticmethod
93
+ def is_invertible(m):
94
+ r, c = m.dimensions()
95
+ if r != c:
96
+ raise AssertionError("Not a square matrix in invertible check "
97
+ "of VerifyHyperbolicStructureEngine.")
98
+
99
+ RIF = m.base_ring()
100
+ max_entry = RIF(1) / (r * c)
101
+
102
+ real_m = matrix(RealDoubleField(), m)
103
+ try:
104
+ real_approx_inv = real_m.inverse()
105
+ except ZeroDivisionError:
106
+ return False
107
+
108
+ approx_inv = real_approx_inv.change_ring(RIF)
109
+ idMatrix = matrix.identity(RIF, r)
110
+ t = approx_inv * m - idMatrix
111
+
112
+ for row in t:
113
+ for entry in row:
114
+ if not (entry < max_entry):
115
+ return False
116
+ return True
117
+
118
+ def _gimbal_derivative_matrix(self, gimbal_loop, path_matrices, j):
119
+
120
+ def term(i):
121
+ edgeLoop, path = gimbal_loop[i]
122
+ rotation_and_derivative = (
123
+ self.rotations_and_derivatives_for_approx_edges[
124
+ edgeLoop.edge_index])
125
+
126
+ if i == j:
127
+ return path_matrices[i] * rotation_and_derivative[1]
128
+ else:
129
+ return path_matrices[i] * rotation_and_derivative[0]
130
+
131
+ return prod([term(i) for i in range(len(gimbal_loop) - 1, -1, -1)])
132
+
133
+ def _assert_vertex_gram_adjoint_valid(G_adj):
134
+ for i in range(4):
135
+ if not (G_adj[i, i] < 0):
136
+ raise BadVertexGramMatrixError(
137
+ "Failed to verify diagonal %d cofactor < 0" % i)
138
+ for j in range(4):
139
+ if i != j:
140
+ if not (G_adj[i, j] ** 2 < G_adj[i, i] * G_adj[j, j]):
141
+ raise BadVertexGramMatrixError(
142
+ "Failed to verify cofactor inequality for (%d,%d)" % (i,j))
143
+
144
+ def _assert_vertex_gram_matrix_valid(G):
145
+ for i in range(4):
146
+ for j in range(4):
147
+ if not (G[i,j] <= -1):
148
+ raise BadVertexGramMatrixError(
149
+ "Failed to verify entry (%d,%d) <= - 1" % (i, j))
150
+
151
+ p = G.characteristic_polynomial()
152
+
153
+ # Budan-Fourier theorem (see e.g.,
154
+ # Saugata Basu, Richard Pollack, Marie-Francoise Roy
155
+ # Algorithms in Real Algebraic Geometry)
156
+ # it is sufficient to verify that a_0 < 0, a_1 > 0, a_2 < 0.
157
+ # for the characteristic polynomial
158
+ # p_G(x) = det(xI-G) = x^4 + 4x^3 + a_2 x^2 + a_1x + a_0.
159
+ #
160
+ a0, a1, a2, a3, a4 = p.coefficients(sparse = False)
161
+
162
+ if not a3 == 4:
163
+ raise BadVertexGramMatrixError(
164
+ "Failed to verify a3 = 4 for characteristic polynomial")
165
+ if not a4 == 1:
166
+ raise BadVertexGramMatrixError(
167
+ "Failed to verify a4 = 1 for characteristic polynomial")
168
+
169
+ if not (a0 < 0):
170
+ raise BadVertexGramMatrixError(
171
+ "Failed to verify a0 < 0 for characteristic polynomial")
172
+ if not (a1 > 0):
173
+ raise BadVertexGramMatrixError(
174
+ "Failed to verify a1 > 0 for characteristic polynomial")
175
+ if not (a2 < 0):
176
+ raise BadVertexGramMatrixError(
177
+ "Failed to verify a2 < 0 for characteristic polynomial")
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,40 @@
1
+ ==================
2
+ Additional Classes
3
+ ==================
4
+
5
+ .. automodule:: snappy
6
+
7
+ AbelianGroup
8
+ ============
9
+
10
+
11
+ .. autoclass:: AbelianGroup
12
+ :members:
13
+ :inherited-members:
14
+ :exclude-members: coefficients
15
+
16
+ FundamentalGroup
17
+ ================
18
+
19
+ .. autoclass:: HolonomyGroup
20
+ :members:
21
+ :inherited-members:
22
+
23
+ SymmetryGroup
24
+ =============
25
+ .. autoclass:: SymmetryGroup
26
+ :members:
27
+ :inherited-members:
28
+
29
+ DirichletDomain
30
+ ===============
31
+ .. autoclass:: DirichletDomain
32
+ :members:
33
+ :inherited-members:
34
+
35
+ CuspNeighborhood
36
+ ================
37
+
38
+ .. autoclass:: CuspNeighborhood
39
+ :members:
40
+ :inherited-members:
@@ -0,0 +1,14 @@
1
+ .. Reporting bugs and other problems
2
+
3
+ Reporting bugs and other problems
4
+ =================================
5
+
6
+ We very much welcome reports of any difficulties you encounter
7
+ installing or using SnapPy. While we do significant testing before
8
+ each release, with so many supported platforms/configurations and only
9
+ three core developers, we need your help to keep things running
10
+ smoothly. To report a problem, you may either `open a formal issue
11
+ ticket <https://github.com/3-manifolds/SnapPy/issues>`_ or `write to the
12
+ developers <snappy-help@computop.org>`_. As always, it is most helpful
13
+ if you include the details of your computer's configuration as well as
14
+ verbatim copies of any error messages.
@@ -0,0 +1,52 @@
1
+ Census manifolds
2
+ ================
3
+
4
+ Snappy comes with a large library of manifolds, which can be accessed
5
+ individually through the Manifold and Triangulation constructors but
6
+ can also be iterated through using the objects described on this
7
+ page.
8
+
9
+ SnapPy's iterators support several flexible methods for accessing
10
+ manifolds. They can be sliced (i.e. restricted to subranges) either
11
+ by index or by volume. Calling the iterator with keyword arguments
12
+ such as num_tets=1, betti=2 or num_cusps=3 returns an iterator which
13
+ is filtered by the specified conditions. In addition these iterators
14
+ can determine whether they contain a given manifold. They support
15
+ python's "A in B" syntax, and also provide an identify method which
16
+ will return a copy of the census manifold which is isometric to the
17
+ manifold passed as an argument.
18
+
19
+ .. currentmodule:: snappy
20
+ .. autodata:: OrientableCuspedCensus
21
+ .. autodata:: OrientableClosedCensus
22
+ .. autodata:: CensusKnots
23
+ .. autodata:: LinkExteriors
24
+ .. autodata:: HTLinkExteriors
25
+ .. autodata:: RibbonLinks
26
+ .. autodata:: NonorientableCuspedCensus
27
+ .. autodata:: NonorientableClosedCensus
28
+
29
+ There are also:
30
+
31
+ .. toctree::
32
+ :maxdepth: 1
33
+
34
+ platonic_census
35
+
36
+ As instances of subclasses of ManifoldTable, the objects above
37
+ support the following methods.
38
+
39
+ .. autoclass:: snappy.database.ManifoldTable
40
+ :members:
41
+ :inherited-members:
42
+
43
+ Because of the large size of their datasets, the classes below
44
+ can only iterate through slices by index, and do not provide
45
+ the identification methods.
46
+
47
+ .. autoclass:: AlternatingKnotExteriors
48
+ :members:
49
+ :inherited-members:
50
+ .. autoclass:: NonalternatingKnotExteriors
51
+ :members:
52
+ :inherited-members:
@@ -0,0 +1,81 @@
1
+ Credits
2
+ =======
3
+
4
+ Primary development and maintenance:
5
+
6
+ * `Marc Culler <http://www.math.uic.edu/~culler>`_
7
+ * `Nathan Dunfield <http://dunfield.info>`_
8
+ * `Matthias Goerner <http://www.unhyperbolic.org/>`_
9
+ * `Jeff Weeks <http://www.geometrygames.org>`_
10
+
11
+ Additional contributions:
12
+
13
+ * Mark Bell, Tracy Hall, Saul Schleimer, `Twister <https://github.com/MarkCBell/twister>`_.
14
+
15
+ * Jim Hoste and Morwen Thistlethwaite, manifold and link censuses.
16
+
17
+ * Ben Burton, manifold censuses and isosig code.
18
+
19
+ * Abhijit Champanerkar and Ilya Kofman, knot censuses.
20
+
21
+ * Robert Lipschitz and Jennet Dickinson, improvements to Spherogram.
22
+
23
+ * Malik Obeidin, improvements to Spherogram and the manifold
24
+ databases.
25
+
26
+ * Malik Obeidin and Cameron Rudd, exterior to link diagram code.
27
+
28
+ * Jose Sanchez, 3D printing code.
29
+
30
+ * Jean-Philippe Burelle, SL(2, C) character variety code.
31
+
32
+ * David Bachman, Henry Segerman and Saul Schleimer, initial code the
33
+ raytraced inside view is based on.
34
+
35
+ * Zoltán Szabó, computing the knot Floer homology calculator.
36
+
37
+ * `PARI library <http://pari.math.u-bordeaux.fr/>`_.
38
+
39
+ * `QD quad-double library
40
+ <http://crd-legacy.lbl.gov/~dhbailey/mpdist/>`_.
41
+
42
+ * Frédéric Chapoton, code cleanup and linting.
43
+
44
+ * Sherry Gong for code related to ribbon concordances and slice
45
+ obstrutions `[DG] <https://arXiv.org/abs/2512.21825>`_.
46
+
47
+ * Shana Li for the census of 10 tetrahedra cusped manfiolds `[Li]
48
+ <https://arXiv.org/abs/2512.02142>`_.
49
+
50
+ * Others, please let Marc or Nathan know if we've forgotten you.
51
+
52
+ Citing SnapPy
53
+ -------------
54
+
55
+ Please cite as:
56
+
57
+ M. Culler, N. M. Dunfield, M. Goerner, and J. R. Weeks, SnapPy, a computer program
58
+ for studying the geometry and topology of 3-manifolds, http://snappy.computop.org
59
+
60
+ or in BibTeX format ::
61
+
62
+ @misc{SnapPy,
63
+ author={Culler, Marc and Dunfield, Nathan M. and Goerner,
64
+ Matthias and Weeks, Jeffrey R.},
65
+ title={Snap{P}y, a computer program for studying the geometry and topology of $3$-manifolds},
66
+ howpublished={Available at \url{http://snappy.computop.org} (DD/MM/YYYY)},
67
+ }
68
+
69
+ or as an AMSRef::
70
+
71
+ \bib{SnapPy}{misc}{
72
+ author={Culler, Marc},
73
+ author={Dunfield, Nathan M.},
74
+ author={Goerner, Matthias},
75
+ author={Weeks, Jeffrey R.},
76
+ title={Snap{P}y, a computer program for studying the geometry and topology of $3$-manifolds},
77
+ note={Available at \url{http://snappy.computop.org} (DD/MM/YYYY)}
78
+ }
79
+
80
+ where DD/MM/YYYY should be replaced by the date when you downloaded your
81
+ copy of SnapPy.
@@ -0,0 +1,261 @@
1
+ Development Basics
2
+ ==================
3
+
4
+ Submitting patches
5
+ ------------------
6
+
7
+ The source code for SnapPy and its various parts are `hosted on GitHub
8
+ <https://github.com/3-manifolds>`_ as `Git repositories
9
+ <https://git-scm.com/>`_. To contribute a patch, create a free
10
+ GitHub account, fork the appropriate repository, and then send us a
11
+ pull request, as described in `here
12
+ <https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request>`_.
13
+
14
+
15
+ macOS
16
+ -----
17
+
18
+ Here is how to get a clean development setup under macOS.
19
+
20
+ - Install the latest Python 3.13 from Python.org using the `Mac
21
+ Installer Disk Image <http://www.python.org/download/>`_. Set your
22
+ path so that "python3" is::
23
+
24
+ /Library/Frameworks/Python.framework/Versions/3.13/bin/python3
25
+
26
+ - Use `pip <https://pip.pypa.io/en/latest/index.html>`_ to install the
27
+ following packages::
28
+
29
+ python3 -m pip install --upgrade setuptools virtualenv wheel pip
30
+ python3 -m pip install cython # Used for Python-C interfacing
31
+ python3 -m pip install sphinx # For building the documentation
32
+ python3 -m pip install ipython # Improved Python shell
33
+ python3 -m pip install py2app # For making app bundles
34
+ python3 -m pip install pyx FXrays low_index
35
+
36
+ - Get the source code from the repository, using Git. For
37
+ example you can install Git via its `package installer
38
+ <https://www.git-scm.org/>`_. Now do::
39
+
40
+ git clone https://github.com/3-manifolds/plink.git
41
+ git clone https://github.com/3-manifolds/spherogram.git
42
+ git clone https://github.com/3-manifolds/snappy.git
43
+
44
+ - Test the stand-alone link editor::
45
+
46
+ cd plink
47
+ python3 setup.py pip_install
48
+ python3 -m plink.app # Link editor appears!
49
+
50
+ This last command runs the script ``plink/app.py``; the real code for
51
+ the link editor is in ``plink/__init__.py``.
52
+
53
+ - Build and install Spherogram::
54
+
55
+ cd ../spherogram
56
+ python3 setup.py pip_install
57
+ python3 setup.py test
58
+
59
+ - Now build SnapPy itself. One builds it twice to generate the
60
+ documentation, much of which is extracted from the installed module::
61
+
62
+ cd ../snappy
63
+ python3 setup.py pip_install
64
+ python3 setup.py test # Run the tests; pretty picture should appear.
65
+ python3 -m snappy.app #SnapPy starts!
66
+
67
+ To build the clickable app, just do the following::
68
+
69
+ cd mac_osx_app
70
+ python3 release.py --manual
71
+
72
+ though for general development purposes ``python3 -m snappy.app`` is
73
+ usually the way to go.
74
+
75
+ Some major parts of the SnapPy codebase are:
76
+
77
+ - ``SnapPy.pyx``, ``SnapPycore.pxi``, ``SnapPy.pxi``: The Cython interface
78
+ to the SnapPea kernel
79
+ - ``opengl/CyOpenGL*.pyx``: The Cython interface to OpenGL*
80
+ - ``snappy/app.py``: The core GUI code
81
+ - ``snappy/polyviewer.py``: The GUI code for Dirichlet domains
82
+ - ``snappy/horoviewer.py``: The GUI code for horoball pictures
83
+ - ``snappy/database.py``: Interacts with the sqlite3 manifold database
84
+
85
+
86
+ Windows
87
+ -------
88
+
89
+ These instructions have been tested on Windows 10, and describe
90
+ setting up a development environment using the (free) MSVC
91
+ compiler. To build the CyPari subcomponent, which few will want or
92
+ need to do, one must install additional tools.
93
+
94
+ - Install `Python 3.13.1
95
+ <https://www.python.org/downloads/windows/>`_, specifically the
96
+ default 64-bit version (the file name will end in ``amd64.exe``).
97
+ These instructions assume it has been installed in the directory
98
+ ``C:\Python313`` which is not the default.
99
+
100
+ - With Python 3.13.1, you need the MSVC command line tools. You can
101
+ get them by using Microsoft's free `Build Tools for Visual Studio 2019
102
+ <https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools&rel=16>`_
103
+ installer and selecting the "C++ command line tools" and installing
104
+ the following subpackages: "MSVC v142 - VS 2019 C++ build tools",
105
+ "Testing tools core features", "C++/CLI support for v142", and
106
+ "Windows 10 SDK (most recent version)".
107
+
108
+ If you would like to make your own installer you will also need
109
+ `Inno Setup <http://www.jrsoftware.org/isdl.php>`_, specifically the
110
+ unicode version; tested with version 5.5.9.
111
+
112
+ - In the unlikely event you want to build `CyPari
113
+ <https://github.com/3-manifolds/CyPari>`_ from source, you'll need
114
+ `MSYS2 <http://msys2.github.io>`_. Follow the instructions on the
115
+ webpage to update everything to the very latest MSYS2 (``pacman -Sy
116
+ pacman; pacman -Syu; pacman -Su`` etc.). You should also install
117
+ the ucrt toolchain::
118
+
119
+ pacman -S mingw-w64-ucrt-x86_64-toolchain
120
+
121
+ - Make a shortcut to ``c:\msys64\msys2.exe`` as you will be using it all
122
+ the time; alternatively, pin ``mys2.exe`` to your taskbar.
123
+
124
+ - Install some additional packages::
125
+
126
+ pacman -S git make nano openssh perl tar unzip wget winpty patch
127
+
128
+ - Install your favorite text editor, for example you can install Emacs
129
+ via::
130
+
131
+ pacman -S mingw-w64-x86_64-emacs
132
+
133
+ - Make it so that MinGW, Python, and Inno Setup are all in your PATH,
134
+ as well as work around some stupid bug, by making the end of your
135
+ "~/.bash_profile" file to read::
136
+
137
+ PATH=/c/Python313:/c/Python313/Scripts:$PATH
138
+ PATH=$PATH:'/c/Program Files (x86)/Inno Setup 5'
139
+ export PATH
140
+ alias emacs="/mingw64/bin/emacs"
141
+ winpty bash; exit
142
+
143
+ For example, do::
144
+
145
+ nano ~/.bash_profile
146
+
147
+ - Make sure you have the right version of Python in your path by
148
+ typing::
149
+
150
+ python --version
151
+
152
+ You should see something like ``Python 3.13.1``.
153
+
154
+ - Use pip to install some basic tools::
155
+
156
+ python -m pip install --upgrade pip setuptools wheel # Upgrades pip to the current version.
157
+ python -m pip install sphinx cython cypari pyx FXrays low_index
158
+
159
+ - Fetch the latest development versions of the source straight from
160
+ the t3m repository::
161
+
162
+ git clone https://github.com/3-manifolds/plink.git
163
+ git clone https://github.com/3-manifolds/spherogram.git
164
+ git clone https://github.com/3-manifolds/snappy.git
165
+
166
+ - Build the components, from easiest to hardest, and then test::
167
+
168
+ cd plink
169
+ python setup.py pip_install
170
+ cd ../Spherogram
171
+ python setup.py pip_install
172
+ cd ../SnapPy
173
+ python setup.py pip_install
174
+ cd ..
175
+ python -m SnapPy.test
176
+
177
+ - To run the app, you can just do::
178
+
179
+ python -m snappy.app
180
+
181
+ - To build the binary installer, you need PyInstaller::
182
+
183
+ python -m pip install pyinstaller
184
+
185
+ To build the binary installer do::
186
+
187
+ cd windows_exe
188
+ python make.py
189
+
190
+ You will need to close the SnapPy window that pops up here to
191
+ complete the build process.
192
+
193
+ - Useful tips for those coming from Unix. In MSYS2, your home
194
+ directory is really something like::
195
+
196
+ c:\msys2\home\Nathan Dunfield
197
+
198
+ whereas your Windows 10 home directory is::
199
+
200
+ c:\Users\Nathan Dunfield
201
+
202
+ It is handy to have symbolic links from your MSYS2 home directory to
203
+ the Downloads and Desktop folders on the Windows side. `See this
204
+ discussion <http://www.howtogeek.com/howto/16226/>`_, but basically
205
+ you start a "Command Prompt" as Administrator and do::
206
+
207
+ cd "C:\msys64\home\Nathan Dunfield"
208
+ mklink /D Desktop "C:\Users\Nathan Dunfield\Desktop"
209
+ mklink /D Downloads "C:\Users\Nathan Dunfield\Downloads"
210
+
211
+
212
+ Linux
213
+ -----
214
+
215
+ Things you'll need:
216
+
217
+ - Python 3 with Tkinter: You'll need to have `Python
218
+ <http://python.org>`_ (version 3.9 or newer) and `Tk
219
+ <http://tcl.tk>`_ (at least version 8.5) with `Tkinter
220
+ <http://wiki.python.org/moin/TkInter>`_ to connect them, including
221
+ the header files. For instance, on Debian or Ubuntu, install the
222
+ packages "python3-tk", "python3-pip", and "python3-dev". On Fedora,
223
+ you'll want e.g. "python3-tkinter", "python3-pip", and
224
+ "python3-devel", and "python3-wheel".
225
+
226
+ - Test that Python is in order by installing PLink from source::
227
+
228
+ python3 -m pip install --user plink
229
+ python3 -m plink.app # Should start the link editor!
230
+
231
+ .. _openglmesa:
232
+
233
+ - Support for OpenGL (3D graphics): This is built in on OS X and the
234
+ most installations of Fedora and Ubuntu. But you'll need the `MESA
235
+ <http://www.mesa3d.org/>`_ header files "gl.h" and "glu.h" to compile
236
+ SnapPy. On Debian and Ubuntu, install "libglu1-mesa-dev"; On Fedora install
237
+ "mesa-libGLU-devel".
238
+
239
+ - `Cython <http://cython.org>`_, which you can install via::
240
+
241
+ python3 -m pip install --user cython
242
+
243
+ - The gcc C++ compiler, g++.
244
+
245
+ - Fetch the latest development versions of the source straight from
246
+ the repository::
247
+
248
+ git clone https://github.com/3-manifolds/PLink.git
249
+ git clone https://github.com/3-manifolds/Spherogram.git
250
+ git clone https://github.com/3-manifolds/Snappy.git
251
+
252
+ - Build the components, from easiest to hardest, and then test::
253
+
254
+ cd PLink
255
+ python setup.py pip_install
256
+ cd ../Spherogram
257
+ python setup.py pip_install
258
+ cd ../SnapPy
259
+ python setup.py pip_install
260
+ cd ..
261
+ python -m SnapPy.test