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,95 @@
1
+ Magma V2.19-8 Tue Aug 20 2013 16:07:18 on localhost [Seed = 947496497]
2
+ Type ? for help. Type <Ctrl>-D to quit.
3
+ ==TRIANGULATION=BEGINS==
4
+ % Triangulation
5
+ m019
6
+ geometric_solution 2.94410649
7
+ oriented_manifold
8
+ CS_known 0.0000000000000001
9
+
10
+ 1 0
11
+ torus 0.000000000000 0.000000000000
12
+
13
+ 3
14
+ 1 1 1 2
15
+ 0132 2103 0321 0132
16
+ 0 0 0 0
17
+ 0 0 0 0 -1 0 1 0 0 0 0 0 0 -1 1 0
18
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
19
+ 0 -1 0 1 0 0 0 0 0 0 0 0 1 0 -1 0
20
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
21
+ 0.780552527851 0.914473662968
22
+
23
+ 0 0 0 2
24
+ 0132 2103 0321 1023
25
+ 0 0 0 0
26
+ 0 0 0 0 1 0 -1 0 0 0 0 0 0 1 -1 0
27
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
28
+ 0 0 0 0 0 0 1 -1 -1 1 0 0 0 0 0 0
29
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
30
+ 0.780552527851 0.914473662968
31
+
32
+ 2 2 0 1
33
+ 1230 3012 0132 1023
34
+ 0 0 0 0
35
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
36
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
37
+ 0 0 -1 1 0 0 0 0 0 0 0 0 0 0 0 0
38
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
39
+ 0.460021175574 0.632624193605
40
+
41
+
42
+ ==TRIANGULATION=ENDS==
43
+ PY=EVAL=SECTION=BEGINS=HERE
44
+ {'variable_dict' :
45
+ (lambda d, negation = (lambda x:-x): {
46
+ 's_3_1' : d['1'],
47
+ 's_3_2' : d['1'],
48
+ 's_3_0' : d['1'],
49
+ 's_2_0' : d['1'],
50
+ 's_2_1' : d['1'],
51
+ 's_2_2' : d['1'],
52
+ 's_1_2' : d['1'],
53
+ 's_1_1' : d['1'],
54
+ 's_1_0' : d['1'],
55
+ 's_0_2' : d['1'],
56
+ 's_0_0' : d['1'],
57
+ 's_0_1' : d['1'],
58
+ 'c_1100_1' : negation(d['c_0011_0']),
59
+ 'c_1100_0' : d['c_0011_0'],
60
+ 'c_1100_2' : d['c_0011_0'],
61
+ 'c_0101_2' : negation(d['c_0101_0']),
62
+ 'c_0101_1' : negation(d['c_0101_0']),
63
+ 'c_0101_0' : d['c_0101_0'],
64
+ 'c_0011_1' : negation(d['c_0011_0']),
65
+ 'c_0011_0' : d['c_0011_0'],
66
+ 'c_0011_2' : d['c_0011_2'],
67
+ 'c_1001_1' : d['c_0011_0'],
68
+ 'c_1001_0' : negation(d['c_0011_0']),
69
+ 'c_1001_2' : negation(d['c_0011_2']),
70
+ 'c_0110_1' : d['c_0101_0'],
71
+ 'c_0110_0' : negation(d['c_0101_0']),
72
+ 'c_0110_2' : d['c_0011_2'],
73
+ 'c_1010_2' : d['c_0101_0'],
74
+ 'c_1010_1' : d['c_0011_2'],
75
+ 'c_1010_0' : negation(d['c_0011_2'])})}
76
+ PY=EVAL=SECTION=ENDS=HERE
77
+ PRIMARY=DECOMPOSITION=BEGINS=HERE
78
+ [
79
+ Ideal of Polynomial ring of rank 4 over Rational Field
80
+ Order: Lexicographical
81
+ Variables: t, c_0011_0, c_0011_2, c_0101_0
82
+ Inhomogeneous, Dimension 0, Radical, Prime
83
+ Size of variety over algebraically closed field: 4
84
+ Groebner basis:
85
+ [
86
+ t - c_0101_0^3 + c_0101_0^2 + c_0101_0 + 2,
87
+ c_0011_0 - 1,
88
+ c_0011_2 + c_0101_0^3 - 2*c_0101_0 - 2,
89
+ c_0101_0^4 - 2*c_0101_0^2 - 3*c_0101_0 - 1
90
+ ]
91
+ ]
92
+ PRIMARY=DECOMPOSITION=ENDS=HERE
93
+ CPUTIME : 0.000
94
+
95
+ Total time: 0.210 seconds, Total memory usage: 32.09MB
@@ -0,0 +1,95 @@
1
+ Magma V2.19-8 Tue Aug 20 2013 16:07:18 on localhost [Seed = 930523454]
2
+ Type ? for help. Type <Ctrl>-D to quit.
3
+ ==TRIANGULATION=BEGINS==
4
+ % Triangulation
5
+ m019
6
+ geometric_solution 2.94410649
7
+ oriented_manifold
8
+ CS_known 0.0000000000000001
9
+
10
+ 1 0
11
+ torus 0.000000000000 0.000000000000
12
+
13
+ 3
14
+ 1 1 1 2
15
+ 0132 2103 0321 0132
16
+ 0 0 0 0
17
+ 0 0 0 0 -1 0 1 0 0 0 0 0 0 -1 1 0
18
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
19
+ 0 -1 0 1 0 0 0 0 0 0 0 0 1 0 -1 0
20
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
21
+ 0.780552527851 0.914473662968
22
+
23
+ 0 0 0 2
24
+ 0132 2103 0321 1023
25
+ 0 0 0 0
26
+ 0 0 0 0 1 0 -1 0 0 0 0 0 0 1 -1 0
27
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
28
+ 0 0 0 0 0 0 1 -1 -1 1 0 0 0 0 0 0
29
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
30
+ 0.780552527851 0.914473662968
31
+
32
+ 2 2 0 1
33
+ 1230 3012 0132 1023
34
+ 0 0 0 0
35
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
36
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
37
+ 0 0 -1 1 0 0 0 0 0 0 0 0 0 0 0 0
38
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
39
+ 0.460021175574 0.632624193605
40
+
41
+
42
+ ==TRIANGULATION=ENDS==
43
+ PY=EVAL=SECTION=BEGINS=HERE
44
+ {'variable_dict' :
45
+ (lambda d, negation = (lambda x:-x): {
46
+ 's_3_1' : d['1'],
47
+ 's_3_2' : d['1'],
48
+ 's_3_0' : d['1'],
49
+ 's_2_0' : negation(d['1']),
50
+ 's_2_1' : negation(d['1']),
51
+ 's_2_2' : d['1'],
52
+ 's_1_2' : d['1'],
53
+ 's_1_1' : negation(d['1']),
54
+ 's_1_0' : negation(d['1']),
55
+ 's_0_2' : d['1'],
56
+ 's_0_0' : d['1'],
57
+ 's_0_1' : d['1'],
58
+ 'c_1100_1' : negation(d['c_0011_0']),
59
+ 'c_1100_0' : d['c_0011_0'],
60
+ 'c_1100_2' : d['c_0011_0'],
61
+ 'c_0101_2' : negation(d['c_0101_0']),
62
+ 'c_0101_1' : negation(d['c_0101_0']),
63
+ 'c_0101_0' : d['c_0101_0'],
64
+ 'c_0011_1' : negation(d['c_0011_0']),
65
+ 'c_0011_0' : d['c_0011_0'],
66
+ 'c_0011_2' : d['c_0011_2'],
67
+ 'c_1001_1' : d['c_0011_0'],
68
+ 'c_1001_0' : negation(d['c_0011_0']),
69
+ 'c_1001_2' : negation(d['c_0011_2']),
70
+ 'c_0110_1' : d['c_0101_0'],
71
+ 'c_0110_0' : negation(d['c_0101_0']),
72
+ 'c_0110_2' : d['c_0011_2'],
73
+ 'c_1010_2' : d['c_0101_0'],
74
+ 'c_1010_1' : d['c_0011_2'],
75
+ 'c_1010_0' : negation(d['c_0011_2'])})}
76
+ PY=EVAL=SECTION=ENDS=HERE
77
+ PRIMARY=DECOMPOSITION=BEGINS=HERE
78
+ [
79
+ Ideal of Polynomial ring of rank 4 over Rational Field
80
+ Order: Lexicographical
81
+ Variables: t, c_0011_0, c_0011_2, c_0101_0
82
+ Inhomogeneous, Dimension 0, Radical, Prime
83
+ Size of variety over algebraically closed field: 4
84
+ Groebner basis:
85
+ [
86
+ t + c_0101_0^3 + c_0101_0^2 + c_0101_0 + 2,
87
+ c_0011_0 - 1,
88
+ c_0011_2 + c_0101_0^3,
89
+ c_0101_0^4 + c_0101_0 - 1
90
+ ]
91
+ ]
92
+ PRIMARY=DECOMPOSITION=ENDS=HERE
93
+ CPUTIME : 0.000
94
+
95
+ Total time: 0.200 seconds, Total memory usage: 32.09MB
@@ -0,0 +1,236 @@
1
+ import re
2
+
3
+ ###########################################
4
+ # Methods to prepare and quote ASCII text
5
+
6
+
7
+ def _break_line_iterator(line, line_length):
8
+ for i in range(0, len(line), line_length):
9
+ yield line[i:i + line_length]
10
+
11
+
12
+ def break_long_lines(text, line_length=76):
13
+ """
14
+ Break lines in ASCII text text longer than line_length by inserting
15
+ newline characters preceded by backslash (thus the resulting lines might
16
+ be one character longer than line_length).
17
+
18
+ The reverse operation is join_long_lines, so
19
+ join_long_lines(break_long_lines(text)) is always returning text as long as
20
+ consisted of ASCII characters (even when text already had lines
21
+ ending in a backslash as those backslashes are specially escaped)!
22
+
23
+ This is consistent with the interpretation of the backslash newline
24
+ sequence by many languages such as magma, python, C, C++ which treat these
25
+ escaped newlines as non-existing. In particular, the result of
26
+ break_long_lines and the text itself is the same to these languages (as
27
+ long as the text didn't already contain lines ending in a backslash).
28
+
29
+ >>> text = "This is a long line.\\nThis is an even longer line.\\n"
30
+ >>> print(break_long_lines(text,8))
31
+ This is \\
32
+ a long l\\
33
+ ine.
34
+ This is \\
35
+ an even \\
36
+ longer l\\
37
+ ine.
38
+ <BLANKLINE>
39
+
40
+ >>> join_long_lines(break_long_lines(text, 8)) == text
41
+ True
42
+ """
43
+
44
+ def split_ending_backslash(line):
45
+ if len(line) > 0 and line[-1] == '\\':
46
+ return line[:-1], '\\\\\n'
47
+ return line, ''
48
+
49
+ def process_line(line):
50
+ line_without, ending_backslash = split_ending_backslash(line)
51
+
52
+ return ('\\\n'.join(_break_line_iterator(line_without, line_length)) +
53
+ ending_backslash)
54
+
55
+ return '\n'.join(process_line(line) for line in text.split('\n'))
56
+
57
+
58
+ def join_long_lines(text):
59
+ """
60
+ Deletes all backslash newline sequences. Inverse of break_long_lines.
61
+ """
62
+ return text.replace('\\\n', '')
63
+
64
+
65
+ def join_long_lines_deleting_whitespace(text):
66
+ """
67
+ Similar to join_long_lines, but also deletes whitespace following a
68
+ backslash newline sequence.
69
+
70
+ Programs such as magma break long integers by introducing a backslash
71
+ newline sequence and inserting extra whitespace for formatting.
72
+ join_long_lines_deleting_whitespace can be used to undo this and parse
73
+ the input normally.
74
+
75
+ >>> join_long_lines_deleting_whitespace("Text:\\\\\\n More")
76
+ 'Text:More'
77
+ >>> join_long_lines_deleting_whitespace(" 1234\\\\\\n 5678").strip()
78
+ '12345678'
79
+ """
80
+ return re.sub(r'\\\n\s*', '', text)
81
+
82
+
83
+ def quote_ascii_text(text):
84
+ r"""
85
+ Put the text in double quotes after escapes newlines, backslashes and
86
+ double quotes. Giving the result of quote_ascii_text to eval should give
87
+ the original string back if the string contained only ASCII characters.
88
+
89
+ Similarly, giving the result of quote_ascii_text to magma's print,
90
+ should give the original string back (magma's print might wrap long lines
91
+ though).
92
+
93
+ >>> text = 'Backslash:\\, Newline:\n, Quote: "'
94
+ >>> quote_ascii_text(text)
95
+ '"Backslash:\\\\, Newline:\\n, Quote: \\""'
96
+ >>> eval(quote_ascii_text(text)) == text
97
+ True
98
+ """
99
+
100
+ def process_char(char):
101
+ if char == '\n':
102
+ return '\\n'
103
+ if char == '\\':
104
+ return '\\\\'
105
+ if char == '"':
106
+ return '\\"'
107
+ return char
108
+
109
+ return '"' + ''.join(process_char(c) for c in text) + '"'
110
+
111
+
112
+ ##########################################################################
113
+ # Iterators going through all tuples of integers with a certain property
114
+
115
+ def _lists_with_fixed_sum_iterator(N, l):
116
+ if l == 1:
117
+ yield [N]
118
+ else:
119
+ for i in range(N + 1):
120
+ for j in _lists_with_fixed_sum_iterator(N - i, l - 1):
121
+ yield [i] + j
122
+
123
+
124
+ def tuples_with_fixed_sum_iterator(N, l, skipVertices=False):
125
+ """
126
+ Iterates through all l-tuples of non-negative integers summing up to N in
127
+ lexicographic order. If skipVertices is True, N-tuples containing N, i.e.,
128
+ of the form (0...0,N,0...0), are skipped.
129
+
130
+ >>> list(tuples_with_fixed_sum_iterator(2, 3))
131
+ [(0, 0, 2), (0, 1, 1), (0, 2, 0), (1, 0, 1), (1, 1, 0), (2, 0, 0)]
132
+ >>> list(tuples_with_fixed_sum_iterator(2, 3, skipVertices = True))
133
+ [(0, 1, 1), (1, 0, 1), (1, 1, 0)]
134
+
135
+ """
136
+ for i in _lists_with_fixed_sum_iterator(N, l):
137
+ if not (skipVertices and N in i):
138
+ yield tuple(i)
139
+
140
+
141
+ def triples_with_fixed_sum_iterator(N, skipVertices=False):
142
+ """
143
+ Similar to tuples_with_fixed_sum_iterator for triples.
144
+
145
+ >>> list(triples_with_fixed_sum_iterator(2, skipVertices = True))
146
+ [(0, 1, 1), (1, 0, 1), (1, 1, 0)]
147
+ """
148
+ return tuples_with_fixed_sum_iterator(N, 3, skipVertices=skipVertices)
149
+
150
+
151
+ def quadruples_with_fixed_sum_iterator(N, skipVertices=False):
152
+ """
153
+ Similar to tuples_with_fixed_sum_iterator for quadruples.
154
+
155
+ >>> list(quadruples_with_fixed_sum_iterator(2, skipVertices = True))
156
+ [(0, 0, 1, 1), (0, 1, 0, 1), (0, 1, 1, 0), (1, 0, 0, 1), (1, 0, 1, 0), (1, 1, 0, 0)]
157
+ """
158
+ return tuples_with_fixed_sum_iterator(N, 4, skipVertices=skipVertices)
159
+
160
+
161
+ ############################################################################
162
+ # A subclass of Python list such that calling a method calls the method on
163
+ # every object in the list.
164
+
165
+ def _flatten(l, depth=1):
166
+ """
167
+ Flatten a list or subclass of list. It will flatten the
168
+ list until the given depth.
169
+
170
+ >>> _flatten([0, [1, 2], [[3, 4], 5]], depth = 1)
171
+ [0, 1, 2, [3, 4], 5]
172
+ >>> _flatten([0, [1, 2], [[3, 4], 5]], depth = 2)
173
+ [0, 1, 2, 3, 4, 5]
174
+ """
175
+ if depth == 0:
176
+ return l
177
+
178
+ result = []
179
+
180
+ for e in l:
181
+ if isinstance(e, list):
182
+ result += _flatten(e, depth - 1)
183
+ else:
184
+ result.append(e)
185
+
186
+ if isinstance(l, MethodMappingList):
187
+ return type(l)(result, p=l)
188
+
189
+ return result
190
+
191
+
192
+ class MethodMappingList(list):
193
+ """
194
+ Like a list but allows calling a method on it means that it is called
195
+ for all its elements.
196
+
197
+ >>> a = MethodMappingList([2+1j, 3+2j, 4+2j])
198
+ >>> a.conjugate()
199
+ [(2-1j), (3-2j), (4-2j)]
200
+
201
+ This can be nested:
202
+
203
+ >>> b = MethodMappingList([1+1j, a])
204
+ >>> b.conjugate()
205
+ [(1-1j), [(2-1j), (3-2j), (4-2j)]]
206
+
207
+ Also supports flattening:
208
+
209
+ >>> b.flatten()
210
+ [(1+1j), (2+1j), (3+2j), (4+2j)]
211
+
212
+ """
213
+
214
+ def __init__(self, l=[], p=None):
215
+ super().__init__(l)
216
+
217
+ def __call__(self, *args, **kwargs):
218
+ return type(self)([elt(*args, **kwargs) for elt in self],
219
+ p=self)
220
+
221
+ def __getattr__(self, attr):
222
+ return type(self)([getattr(e, attr) for e in self],
223
+ p=self)
224
+
225
+ def flatten(self, depth=1):
226
+ return _flatten(self, depth=depth)
227
+
228
+
229
+ def _test():
230
+ """
231
+ >>> text = "Line\\\\nLong Line\\\\\\nVery long line and...\\nHere \\n\\n \\n\\n \\n \\\\n"
232
+ >>> for i in range(1, 80):
233
+ ... if not join_long_lines(break_long_lines(text, i)) == text:
234
+ ... raise Exception("Test failure")
235
+ """
236
+ pass
@@ -0,0 +1,64 @@
1
+ from ..exceptions import NonorientableManifoldError
2
+ from . import cohomology_fractal
3
+
4
+ try:
5
+ from ..gui import ViewerWindow
6
+ from .inside_viewer import InsideViewer
7
+ except ImportError as e:
8
+ InsideViewer = None
9
+ _importErrorRaytracing = str(e)
10
+
11
+ from typing import Sequence
12
+
13
+ def inside_view(self, cohomology_class=None, geodesics : Sequence[str]=[]):
14
+ r"""
15
+ Show raytraced inside view of hyperbolic manifold. See
16
+ `images <https://im.icerm.brown.edu/portfolio/snappy-views/>`_
17
+ and `demo video <https://youtu.be/CAERhmUCkRs>`_.
18
+
19
+ >>> M = Manifold("m004")
20
+ >>> M.inside_view() #doctest: +CYMODERNOPENGL
21
+
22
+ Or show the cohomology fractal:
23
+
24
+ >>> M = Manifold("m004")
25
+ >>> M.inside_view(cohomology_class = 0) #doctest: +CYMODERNOPENGL
26
+
27
+ The cohomology class in :math:`H^2(M, \partial M; \mathbb{R})` producing the
28
+ cohomology fractal can be specified as a cocycle or using an automatically
29
+ computed basis (of, say, length ``n``). Thus, ``cohomology_class`` can be
30
+ one of the following.
31
+
32
+ - An integer ``i`` between 0 and ``n`` - 1 to pick the ``i``-th basis
33
+ vector.
34
+ - An array of length ``n`` specifying the cohomology class as linear
35
+ combination of basis vectors.
36
+ - A weight for each face of each tetrahedron.
37
+
38
+ Geodesics can be specified as words in the unsimplified fundamental group:
39
+
40
+ >>> M = Manifold("m004")
41
+ >>> M.inside_view(geodesics=['a', 'bC']) #doctest: +CYMODERNOPENGL
42
+
43
+ """
44
+
45
+ if InsideViewer is None:
46
+ raise RuntimeError("Raytraced inside view not imported; "
47
+ "Tk or CyOpenGL is probably missing "
48
+ "(original error : %s)" % _importErrorRaytracing)
49
+
50
+ if not self.is_orientable():
51
+ raise NonorientableManifoldError("Manifold.inside_view", self)
52
+
53
+ weights, cohomology_basis, cohomology_class = (
54
+ cohomology_fractal.compute_weights_basis_class(
55
+ self, cohomology_class))
56
+
57
+ return ViewerWindow(
58
+ InsideViewer,
59
+ self,
60
+ title="Inside view of %s" % self.name(),
61
+ weights=weights,
62
+ cohomology_basis=cohomology_basis,
63
+ cohomology_class=cohomology_class,
64
+ geodesics=geodesics)
@@ -0,0 +1,64 @@
1
+ """
2
+ from snappy import *; from snappy.raytracing.additional_horospheres import *
3
+
4
+ M=Manifold("t10879")
5
+ M=CubicalOrientableCuspedCensus[0]
6
+ v = M.inside_view()
7
+ a=AdditionalHorospheres(M)
8
+ v.view.widget.additional_structures['horospheres'] = a; v.view.widget._update_shader()
9
+
10
+ """
11
+
12
+ from ..geometric_structure.cusp_neighborhood.tiles_for_cusp_neighborhood import mcomplex_for_tiling_cusp_neighborhoods
13
+ from .pack import pack_tet_data
14
+ from .upper_halfspace_utilities import add_coordinate_transform_to_mcomplex
15
+
16
+ class AdditionalHorospheres:
17
+ def __init__(self, manifold):
18
+
19
+ self.mcomplex = mcomplex_for_tiling_cusp_neighborhoods(
20
+ manifold, bits_prec = 53, verified = False)
21
+ add_coordinate_transform_to_mcomplex(self.mcomplex)
22
+
23
+ self.num_tetrahedra = manifold.num_tetrahedra()
24
+ self.RF = manifold.tetrahedra_shapes('rect')[0].real().parent()
25
+ self.cusp_areas = [ 1.0 for v in self.mcomplex.Vertices ]
26
+
27
+ self._num = 0
28
+
29
+ self.compute_bindings()
30
+
31
+ def get_compile_time_defs(self):
32
+ if self._num > 0:
33
+ num = max(100, self._num)
34
+ else:
35
+ num = 0
36
+
37
+ return { 'num_additional_horospheres' : num }
38
+
39
+ def get_uniform_bindings(self):
40
+ return self._uniform_bindings
41
+
42
+ def compute_bindings(self):
43
+
44
+ tets_to_data = [ [] for i in range(self.num_tetrahedra) ]
45
+
46
+ for cusp_index, v in enumerate(self.mcomplex.Vertices):
47
+ scale = (self.RF(self.cusp_areas[cusp_index]) / v.cusp_area).sqrt()
48
+
49
+ d = scale.log()
50
+
51
+ for tile in v.tiles():
52
+ if tile.lower_bound_distance > d:
53
+ break
54
+
55
+ tet = tile.lifted_tetrahedron.tet
56
+
57
+ s = (
58
+ tet.to_coordinates_in_symmetric_tet * tile.inverse_lifted_geometric_object.defining_vec) / scale
59
+
60
+ tets_to_data[tet.Index].append(
61
+ { 'Vec' : ('vec4', s),
62
+ 'CuspIndex' : ('int', cusp_index) })
63
+
64
+ self._uniform_bindings, self._num = pack_tet_data('additionalHorospheres.horosphere', tets_to_data)