snappy 3.2__cp311-cp311-macosx_10_12_x86_64.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (503) hide show
  1. snappy/CyOpenGL.cpython-311-darwin.so +0 -0
  2. snappy/SnapPy.cpython-311-darwin.so +0 -0
  3. snappy/SnapPy.ico +0 -0
  4. snappy/SnapPy.png +0 -0
  5. snappy/SnapPyHP.cpython-311-darwin.so +0 -0
  6. snappy/__init__.py +760 -0
  7. snappy/app.py +605 -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 +38 -0
  13. snappy/cusps/cusp_area_matrix.py +101 -0
  14. snappy/cusps/cusp_areas_from_matrix.py +173 -0
  15. snappy/cusps/maximal_cusp_area_matrix.py +136 -0
  16. snappy/cusps/test.py +21 -0
  17. snappy/cusps/trig_cusp_area_matrix.py +63 -0
  18. snappy/database.py +454 -0
  19. snappy/db_utilities.py +79 -0
  20. snappy/decorated_isosig.py +710 -0
  21. snappy/dev/__init__.py +0 -0
  22. snappy/dev/extended_ptolemy/__init__.py +8 -0
  23. snappy/dev/extended_ptolemy/closed.py +106 -0
  24. snappy/dev/extended_ptolemy/complexVolumesClosed.py +149 -0
  25. snappy/dev/extended_ptolemy/direct.py +42 -0
  26. snappy/dev/extended_ptolemy/extended.py +406 -0
  27. snappy/dev/extended_ptolemy/giac_helper.py +43 -0
  28. snappy/dev/extended_ptolemy/giac_rur.py +129 -0
  29. snappy/dev/extended_ptolemy/gluing.py +46 -0
  30. snappy/dev/extended_ptolemy/phc_wrapper.py +220 -0
  31. snappy/dev/extended_ptolemy/printMatrices.py +70 -0
  32. snappy/dev/vericlosed/__init__.py +1 -0
  33. snappy/dev/vericlosed/computeApproxHyperbolicStructureNew.py +159 -0
  34. snappy/dev/vericlosed/computeApproxHyperbolicStructureOrb.py +90 -0
  35. snappy/dev/vericlosed/computeVerifiedHyperbolicStructure.py +111 -0
  36. snappy/dev/vericlosed/gimbalLoopFinder.py +130 -0
  37. snappy/dev/vericlosed/hyperbolicStructure.py +313 -0
  38. snappy/dev/vericlosed/krawczykCertifiedEdgeLengthsEngine.py +165 -0
  39. snappy/dev/vericlosed/oneVertexTruncatedComplex.py +122 -0
  40. snappy/dev/vericlosed/orb/__init__.py +1 -0
  41. snappy/dev/vericlosed/orb/orb_solution_for_snappea_finite_triangulation_mac +0 -0
  42. snappy/dev/vericlosed/parseVertexGramMatrixFile.py +47 -0
  43. snappy/dev/vericlosed/polishApproxHyperbolicStructure.py +61 -0
  44. snappy/dev/vericlosed/test.py +54 -0
  45. snappy/dev/vericlosed/truncatedComplex.py +176 -0
  46. snappy/dev/vericlosed/verificationError.py +58 -0
  47. snappy/dev/vericlosed/verifyHyperbolicStructureEngine.py +177 -0
  48. snappy/doc/_images/SnapPy-196.png +0 -0
  49. snappy/doc/_images/geodesics.jpg +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 +51 -0
  61. snappy/doc/_sources/credits.rst.txt +75 -0
  62. snappy/doc/_sources/development.rst.txt +259 -0
  63. snappy/doc/_sources/index.rst.txt +182 -0
  64. snappy/doc/_sources/installing.rst.txt +247 -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 +355 -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 +925 -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 +156 -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 +199 -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 +620 -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 +427 -0
  152. snappy/doc/credits.html +181 -0
  153. snappy/doc/development.html +384 -0
  154. snappy/doc/genindex.html +1331 -0
  155. snappy/doc/index.html +262 -0
  156. snappy/doc/installing.html +346 -0
  157. snappy/doc/manifold.html +3452 -0
  158. snappy/doc/manifoldhp.html +180 -0
  159. snappy/doc/news.html +388 -0
  160. snappy/doc/objects.inv +0 -0
  161. snappy/doc/other.html +161 -0
  162. snappy/doc/platonic_census.html +375 -0
  163. snappy/doc/plink.html +210 -0
  164. snappy/doc/ptolemy.html +254 -0
  165. snappy/doc/ptolemy_classes.html +1144 -0
  166. snappy/doc/ptolemy_examples1.html +409 -0
  167. snappy/doc/ptolemy_examples2.html +471 -0
  168. snappy/doc/ptolemy_examples3.html +414 -0
  169. snappy/doc/ptolemy_examples4.html +195 -0
  170. snappy/doc/ptolemy_prelim.html +248 -0
  171. snappy/doc/py-modindex.html +165 -0
  172. snappy/doc/screenshots.html +141 -0
  173. snappy/doc/search.html +135 -0
  174. snappy/doc/searchindex.js +1 -0
  175. snappy/doc/snap.html +202 -0
  176. snappy/doc/snappy.html +181 -0
  177. snappy/doc/spherogram.html +1211 -0
  178. snappy/doc/todo.html +166 -0
  179. snappy/doc/triangulation.html +1584 -0
  180. snappy/doc/tutorial.html +159 -0
  181. snappy/doc/verify.html +330 -0
  182. snappy/doc/verify_internals.html +1235 -0
  183. snappy/drilling/__init__.py +456 -0
  184. snappy/drilling/barycentric.py +103 -0
  185. snappy/drilling/constants.py +5 -0
  186. snappy/drilling/crush.py +270 -0
  187. snappy/drilling/cusps.py +125 -0
  188. snappy/drilling/debug.py +242 -0
  189. snappy/drilling/epsilons.py +6 -0
  190. snappy/drilling/exceptions.py +55 -0
  191. snappy/drilling/moves.py +620 -0
  192. snappy/drilling/peripheral_curves.py +210 -0
  193. snappy/drilling/perturb.py +188 -0
  194. snappy/drilling/shorten.py +36 -0
  195. snappy/drilling/subdivide.py +274 -0
  196. snappy/drilling/test.py +23 -0
  197. snappy/drilling/test_cases.py +126 -0
  198. snappy/drilling/tracing.py +351 -0
  199. snappy/exceptions.py +26 -0
  200. snappy/export_stl.py +120 -0
  201. snappy/exterior_to_link/__init__.py +2 -0
  202. snappy/exterior_to_link/barycentric_geometry.py +463 -0
  203. snappy/exterior_to_link/exceptions.py +6 -0
  204. snappy/exterior_to_link/geodesic_map.json +14408 -0
  205. snappy/exterior_to_link/hyp_utils.py +112 -0
  206. snappy/exterior_to_link/link_projection.py +323 -0
  207. snappy/exterior_to_link/main.py +197 -0
  208. snappy/exterior_to_link/mcomplex_with_expansion.py +261 -0
  209. snappy/exterior_to_link/mcomplex_with_link.py +687 -0
  210. snappy/exterior_to_link/mcomplex_with_memory.py +162 -0
  211. snappy/exterior_to_link/pl_utils.py +491 -0
  212. snappy/exterior_to_link/put_in_S3.py +156 -0
  213. snappy/exterior_to_link/rational_linear_algebra.py +123 -0
  214. snappy/exterior_to_link/rational_linear_algebra_wrapped.py +135 -0
  215. snappy/exterior_to_link/simplify_to_base_tri.py +114 -0
  216. snappy/exterior_to_link/stored_moves.py +475 -0
  217. snappy/exterior_to_link/test.py +31 -0
  218. snappy/filedialog.py +28 -0
  219. snappy/geometric_structure/__init__.py +212 -0
  220. snappy/geometric_structure/cusp_neighborhood/__init__.py +3 -0
  221. snappy/geometric_structure/cusp_neighborhood/complex_cusp_cross_section.py +697 -0
  222. snappy/geometric_structure/cusp_neighborhood/cusp_cross_section_base.py +484 -0
  223. snappy/geometric_structure/cusp_neighborhood/exceptions.py +42 -0
  224. snappy/geometric_structure/cusp_neighborhood/real_cusp_cross_section.py +298 -0
  225. snappy/geometric_structure/cusp_neighborhood/tiles_for_cusp_neighborhood.py +159 -0
  226. snappy/geometric_structure/cusp_neighborhood/vertices.py +32 -0
  227. snappy/geometric_structure/geodesic/__init__.py +0 -0
  228. snappy/geometric_structure/geodesic/add_core_curves.py +152 -0
  229. snappy/geometric_structure/geodesic/avoid_core_curves.py +369 -0
  230. snappy/geometric_structure/geodesic/canonical_keys.py +52 -0
  231. snappy/geometric_structure/geodesic/check_away_from_core_curve.py +60 -0
  232. snappy/geometric_structure/geodesic/constants.py +6 -0
  233. snappy/geometric_structure/geodesic/exceptions.py +22 -0
  234. snappy/geometric_structure/geodesic/fixed_points.py +93 -0
  235. snappy/geometric_structure/geodesic/geodesic_start_point_info.py +435 -0
  236. snappy/geometric_structure/geodesic/graph_trace_helper.py +67 -0
  237. snappy/geometric_structure/geodesic/line.py +30 -0
  238. snappy/geometric_structure/geodesic/multiplicity.py +127 -0
  239. snappy/geometric_structure/geodesic/tiles_for_geodesic.py +101 -0
  240. snappy/geometric_structure/test.py +22 -0
  241. snappy/gui.py +121 -0
  242. snappy/horoviewer.py +443 -0
  243. snappy/hyperboloid/__init__.py +212 -0
  244. snappy/hyperboloid/distances.py +245 -0
  245. snappy/hyperboloid/horoball.py +19 -0
  246. snappy/hyperboloid/line.py +35 -0
  247. snappy/hyperboloid/point.py +9 -0
  248. snappy/hyperboloid/triangle.py +29 -0
  249. snappy/info_icon.gif +0 -0
  250. snappy/infowindow.py +65 -0
  251. snappy/isometry_signature.py +382 -0
  252. snappy/len_spec/__init__.py +596 -0
  253. snappy/len_spec/geodesic_info.py +110 -0
  254. snappy/len_spec/geodesic_key_info_dict.py +117 -0
  255. snappy/len_spec/geodesic_piece.py +143 -0
  256. snappy/len_spec/geometric_structure.py +182 -0
  257. snappy/len_spec/geometry.py +80 -0
  258. snappy/len_spec/length_spectrum_geodesic_info.py +170 -0
  259. snappy/len_spec/spine.py +206 -0
  260. snappy/len_spec/test.py +24 -0
  261. snappy/len_spec/test_cases.py +69 -0
  262. snappy/len_spec/tile.py +275 -0
  263. snappy/len_spec/word.py +86 -0
  264. snappy/manifolds/HTWKnots/alternating.gz +0 -0
  265. snappy/manifolds/HTWKnots/nonalternating.gz +0 -0
  266. snappy/manifolds/__init__.py +3 -0
  267. snappy/math_basics.py +176 -0
  268. snappy/matrix.py +525 -0
  269. snappy/number.py +657 -0
  270. snappy/numeric_output_checker.py +345 -0
  271. snappy/pari.py +41 -0
  272. snappy/phone_home.py +57 -0
  273. snappy/polyviewer.py +259 -0
  274. snappy/ptolemy/__init__.py +17 -0
  275. snappy/ptolemy/component.py +103 -0
  276. snappy/ptolemy/coordinates.py +2290 -0
  277. snappy/ptolemy/fieldExtensions.py +153 -0
  278. snappy/ptolemy/findLoops.py +473 -0
  279. snappy/ptolemy/geometricRep.py +59 -0
  280. snappy/ptolemy/homology.py +165 -0
  281. snappy/ptolemy/magma/default.magma_template +229 -0
  282. snappy/ptolemy/magma/radicalsOfPrimaryDecomposition.magma_template +79 -0
  283. snappy/ptolemy/manifoldMethods.py +395 -0
  284. snappy/ptolemy/matrix.py +350 -0
  285. snappy/ptolemy/numericalSolutionsToGroebnerBasis.py +113 -0
  286. snappy/ptolemy/polynomial.py +857 -0
  287. snappy/ptolemy/processComponents.py +173 -0
  288. snappy/ptolemy/processFileBase.py +247 -0
  289. snappy/ptolemy/processFileDispatch.py +46 -0
  290. snappy/ptolemy/processMagmaFile.py +392 -0
  291. snappy/ptolemy/processRurFile.py +150 -0
  292. snappy/ptolemy/ptolemyGeneralizedObstructionClass.py +102 -0
  293. snappy/ptolemy/ptolemyObstructionClass.py +64 -0
  294. snappy/ptolemy/ptolemyVariety.py +1029 -0
  295. snappy/ptolemy/ptolemyVarietyPrimeIdealGroebnerBasis.py +140 -0
  296. snappy/ptolemy/reginaWrapper.py +698 -0
  297. snappy/ptolemy/regina_testing_files/DT_mcbbiceaibjklmdfgh__sl2_c0.magma_out.bz2 +0 -0
  298. snappy/ptolemy/regina_testing_files/DT_mcbbiceaibjklmdfgh__sl2_c1.magma_out.bz2 +0 -0
  299. snappy/ptolemy/regina_testing_files/DT_mcbbiceaibjklmdfgh__sl2_c2.magma_out.bz2 +0 -0
  300. snappy/ptolemy/regina_testing_files/DT_mcbbiceaibjklmdfgh__sl2_c3.magma_out.bz2 +0 -0
  301. snappy/ptolemy/regina_testing_files/DT_mcbbiceaibjklmdfgh__sl2_c4.magma_out.bz2 +0 -0
  302. snappy/ptolemy/regina_testing_files/DT_mcbbiceaibjklmdfgh__sl2_c5.magma_out.bz2 +0 -0
  303. snappy/ptolemy/regina_testing_files/DT_mcbbiceaibjklmdfgh__sl2_c6.magma_out.bz2 +0 -0
  304. snappy/ptolemy/regina_testing_files/DT_mcbbiceaibjklmdfgh__sl2_c7.magma_out.bz2 +0 -0
  305. snappy/ptolemy/regina_testing_files_generalized/m003__sl3_c0.magma_out.bz2 +0 -0
  306. snappy/ptolemy/regina_testing_files_generalized/m003__sl3_c1.magma_out.bz2 +0 -0
  307. snappy/ptolemy/regina_testing_files_generalized/m015__sl2_c0.magma_out.bz2 +0 -0
  308. snappy/ptolemy/regina_testing_files_generalized/m015__sl2_c1.magma_out.bz2 +0 -0
  309. snappy/ptolemy/regina_testing_files_generalized/m015__sl3_c0.magma_out.bz2 +0 -0
  310. snappy/ptolemy/regina_testing_files_generalized/m015__sl3_c1.magma_out.bz2 +0 -0
  311. snappy/ptolemy/rur.py +545 -0
  312. snappy/ptolemy/solutionsToPrimeIdealGroebnerBasis.py +277 -0
  313. snappy/ptolemy/test.py +1126 -0
  314. snappy/ptolemy/testing_files/3_1__sl2_c0.magma_out.bz2 +0 -0
  315. snappy/ptolemy/testing_files/3_1__sl2_c1.magma_out.bz2 +0 -0
  316. snappy/ptolemy/testing_files/4_1__sl2_c0.magma_out.bz2 +0 -0
  317. snappy/ptolemy/testing_files/4_1__sl2_c1.magma_out.bz2 +0 -0
  318. snappy/ptolemy/testing_files/4_1__sl3_c0.magma_out.bz2 +0 -0
  319. snappy/ptolemy/testing_files/4_1__sl4_c0.magma_out.bz2 +0 -0
  320. snappy/ptolemy/testing_files/4_1__sl4_c1.magma_out.bz2 +0 -0
  321. snappy/ptolemy/testing_files/5_2__sl2_c0.magma_out.bz2 +0 -0
  322. snappy/ptolemy/testing_files/5_2__sl2_c1.magma_out.bz2 +0 -0
  323. snappy/ptolemy/testing_files/DT_mcbbiceaibjklmdfgh__sl2_c0.magma_out.bz2 +0 -0
  324. snappy/ptolemy/testing_files/DT_mcbbiceaibjklmdfgh__sl2_c1.magma_out.bz2 +0 -0
  325. snappy/ptolemy/testing_files/DT_mcbbiceaibjklmdfgh__sl2_c2.magma_out.bz2 +0 -0
  326. snappy/ptolemy/testing_files/DT_mcbbiceaibjklmdfgh__sl2_c3.magma_out.bz2 +0 -0
  327. snappy/ptolemy/testing_files/DT_mcbbiceaibjklmdfgh__sl2_c4.magma_out.bz2 +0 -0
  328. snappy/ptolemy/testing_files/DT_mcbbiceaibjklmdfgh__sl2_c5.magma_out.bz2 +0 -0
  329. snappy/ptolemy/testing_files/DT_mcbbiceaibjklmdfgh__sl2_c6.magma_out.bz2 +0 -0
  330. snappy/ptolemy/testing_files/DT_mcbbiceaibjklmdfgh__sl2_c7.magma_out.bz2 +0 -0
  331. snappy/ptolemy/testing_files/data/pgl2/OrientableCuspedCensus/03_tetrahedra/m019__sl2_c0.magma_out +95 -0
  332. snappy/ptolemy/testing_files/data/pgl2/OrientableCuspedCensus/03_tetrahedra/m019__sl2_c1.magma_out +95 -0
  333. snappy/ptolemy/testing_files/m015__sl3_c0.magma_out.bz2 +0 -0
  334. snappy/ptolemy/testing_files/m135__sl2_c0.magma_out.bz2 +0 -0
  335. snappy/ptolemy/testing_files/m135__sl2_c1.magma_out.bz2 +0 -0
  336. snappy/ptolemy/testing_files/m135__sl2_c2.magma_out.bz2 +0 -0
  337. snappy/ptolemy/testing_files/m135__sl2_c3.magma_out.bz2 +0 -0
  338. snappy/ptolemy/testing_files/m135__sl2_c4.magma_out.bz2 +0 -0
  339. snappy/ptolemy/testing_files/m135__sl2_c5.magma_out.bz2 +0 -0
  340. snappy/ptolemy/testing_files/m135__sl2_c6.magma_out.bz2 +0 -0
  341. snappy/ptolemy/testing_files/m135__sl2_c7.magma_out.bz2 +0 -0
  342. snappy/ptolemy/testing_files/s000__sl2_c0.magma_out.bz2 +0 -0
  343. snappy/ptolemy/testing_files/s000__sl2_c1.magma_out.bz2 +0 -0
  344. snappy/ptolemy/testing_files/t00000__sl2_c0.magma_out.bz2 +0 -0
  345. snappy/ptolemy/testing_files/t00000__sl2_c1.magma_out.bz2 +0 -0
  346. snappy/ptolemy/testing_files/v0000__sl2_c0.magma_out.bz2 +0 -0
  347. snappy/ptolemy/testing_files/v0000__sl2_c1.magma_out.bz2 +0 -0
  348. snappy/ptolemy/testing_files/v0000__sl2_c2.magma_out.bz2 +0 -0
  349. snappy/ptolemy/testing_files/v0000__sl2_c3.magma_out.bz2 +0 -0
  350. snappy/ptolemy/testing_files_generalized/m003__sl2_c0.magma_out.bz2 +0 -0
  351. snappy/ptolemy/testing_files_generalized/m003__sl2_c1.magma_out.bz2 +0 -0
  352. snappy/ptolemy/testing_files_generalized/m003__sl3_c0.magma_out.bz2 +0 -0
  353. snappy/ptolemy/testing_files_generalized/m003__sl3_c1.magma_out.bz2 +0 -0
  354. snappy/ptolemy/testing_files_generalized/m004__sl2_c0.magma_out.bz2 +0 -0
  355. snappy/ptolemy/testing_files_generalized/m004__sl2_c1.magma_out.bz2 +0 -0
  356. snappy/ptolemy/testing_files_generalized/m015__sl2_c1.magma_out.bz2 +0 -0
  357. snappy/ptolemy/testing_files_generalized/m015__sl3_c0.magma_out.bz2 +0 -0
  358. snappy/ptolemy/testing_files_rur/m052__sl3_c0.rur.bz2 +0 -0
  359. snappy/ptolemy/utilities.py +236 -0
  360. snappy/raytracing/__init__.py +64 -0
  361. snappy/raytracing/additional_horospheres.py +64 -0
  362. snappy/raytracing/additional_len_spec_choices.py +63 -0
  363. snappy/raytracing/cohomology_fractal.py +197 -0
  364. snappy/raytracing/eyeball.py +123 -0
  365. snappy/raytracing/finite_raytracing_data.py +237 -0
  366. snappy/raytracing/finite_viewer.py +590 -0
  367. snappy/raytracing/geodesic_tube_info.py +174 -0
  368. snappy/raytracing/geodesics.py +246 -0
  369. snappy/raytracing/geodesics_window.py +258 -0
  370. snappy/raytracing/gui_utilities.py +293 -0
  371. snappy/raytracing/hyperboloid_navigation.py +556 -0
  372. snappy/raytracing/hyperboloid_utilities.py +234 -0
  373. snappy/raytracing/ideal_raytracing_data.py +592 -0
  374. snappy/raytracing/inside_viewer.py +974 -0
  375. snappy/raytracing/pack.py +22 -0
  376. snappy/raytracing/raytracing_data.py +126 -0
  377. snappy/raytracing/raytracing_view.py +454 -0
  378. snappy/raytracing/shaders/Eye.png +0 -0
  379. snappy/raytracing/shaders/NonGeometric.png +0 -0
  380. snappy/raytracing/shaders/__init__.py +101 -0
  381. snappy/raytracing/shaders/fragment.glsl +1744 -0
  382. snappy/raytracing/test.py +29 -0
  383. snappy/raytracing/tooltip.py +146 -0
  384. snappy/raytracing/upper_halfspace_utilities.py +98 -0
  385. snappy/raytracing/view_scale_controller.py +98 -0
  386. snappy/raytracing/zoom_slider/__init__.py +263 -0
  387. snappy/raytracing/zoom_slider/inward.png +0 -0
  388. snappy/raytracing/zoom_slider/inward18.png +0 -0
  389. snappy/raytracing/zoom_slider/outward.png +0 -0
  390. snappy/raytracing/zoom_slider/outward18.png +0 -0
  391. snappy/raytracing/zoom_slider/test.py +20 -0
  392. snappy/sage_helper.py +117 -0
  393. snappy/settings.py +409 -0
  394. snappy/shell.py +53 -0
  395. snappy/snap/__init__.py +114 -0
  396. snappy/snap/character_varieties.py +375 -0
  397. snappy/snap/find_field.py +372 -0
  398. snappy/snap/fundamental_polyhedron.py +569 -0
  399. snappy/snap/generators.py +39 -0
  400. snappy/snap/interval_reps.py +81 -0
  401. snappy/snap/kernel_structures.py +128 -0
  402. snappy/snap/mcomplex_base.py +18 -0
  403. snappy/snap/nsagetools.py +702 -0
  404. snappy/snap/peripheral/__init__.py +1 -0
  405. snappy/snap/peripheral/dual_cellulation.py +219 -0
  406. snappy/snap/peripheral/link.py +127 -0
  407. snappy/snap/peripheral/peripheral.py +159 -0
  408. snappy/snap/peripheral/surface.py +522 -0
  409. snappy/snap/peripheral/test.py +35 -0
  410. snappy/snap/polished_reps.py +335 -0
  411. snappy/snap/shapes.py +152 -0
  412. snappy/snap/slice_obs_HKL.py +668 -0
  413. snappy/snap/t3mlite/__init__.py +2 -0
  414. snappy/snap/t3mlite/arrow.py +243 -0
  415. snappy/snap/t3mlite/corner.py +22 -0
  416. snappy/snap/t3mlite/edge.py +172 -0
  417. snappy/snap/t3mlite/face.py +37 -0
  418. snappy/snap/t3mlite/files.py +211 -0
  419. snappy/snap/t3mlite/homology.py +53 -0
  420. snappy/snap/t3mlite/linalg.py +419 -0
  421. snappy/snap/t3mlite/mcomplex.py +1499 -0
  422. snappy/snap/t3mlite/perm4.py +320 -0
  423. snappy/snap/t3mlite/setup.py +12 -0
  424. snappy/snap/t3mlite/simplex.py +199 -0
  425. snappy/snap/t3mlite/spun.py +297 -0
  426. snappy/snap/t3mlite/surface.py +519 -0
  427. snappy/snap/t3mlite/test.py +20 -0
  428. snappy/snap/t3mlite/test_vs_regina.py +86 -0
  429. snappy/snap/t3mlite/tetrahedron.py +109 -0
  430. snappy/snap/t3mlite/vertex.py +42 -0
  431. snappy/snap/test.py +134 -0
  432. snappy/snap/utilities.py +288 -0
  433. snappy/test.py +209 -0
  434. snappy/test_cases.py +263 -0
  435. snappy/testing.py +131 -0
  436. snappy/tiling/__init__.py +2 -0
  437. snappy/tiling/canonical_key_dict.py +59 -0
  438. snappy/tiling/dict_based_set.py +79 -0
  439. snappy/tiling/floor.py +49 -0
  440. snappy/tiling/hyperboloid_dict.py +54 -0
  441. snappy/tiling/iter_utils.py +78 -0
  442. snappy/tiling/lifted_tetrahedron.py +22 -0
  443. snappy/tiling/lifted_tetrahedron_set.py +54 -0
  444. snappy/tiling/real_hash_dict.py +164 -0
  445. snappy/tiling/test.py +23 -0
  446. snappy/tiling/tile.py +215 -0
  447. snappy/tiling/triangle.py +33 -0
  448. snappy/tkterminal.py +920 -0
  449. snappy/twister/__init__.py +20 -0
  450. snappy/twister/main.py +646 -0
  451. snappy/twister/surfaces/S_0_1 +3 -0
  452. snappy/twister/surfaces/S_0_2 +3 -0
  453. snappy/twister/surfaces/S_0_4 +7 -0
  454. snappy/twister/surfaces/S_0_4_Lantern +8 -0
  455. snappy/twister/surfaces/S_1 +3 -0
  456. snappy/twister/surfaces/S_1_1 +4 -0
  457. snappy/twister/surfaces/S_1_2 +5 -0
  458. snappy/twister/surfaces/S_1_2_5 +6 -0
  459. snappy/twister/surfaces/S_2 +6 -0
  460. snappy/twister/surfaces/S_2_1 +8 -0
  461. snappy/twister/surfaces/S_2_heeg +10 -0
  462. snappy/twister/surfaces/S_3 +8 -0
  463. snappy/twister/surfaces/S_3_1 +10 -0
  464. snappy/twister/surfaces/S_4_1 +12 -0
  465. snappy/twister/surfaces/S_5_1 +14 -0
  466. snappy/twister/surfaces/heeg_fig8 +9 -0
  467. snappy/twister/twister_core.cpython-311-darwin.so +0 -0
  468. snappy/upper_halfspace/__init__.py +146 -0
  469. snappy/upper_halfspace/ideal_point.py +26 -0
  470. snappy/verify/__init__.py +13 -0
  471. snappy/verify/canonical.py +542 -0
  472. snappy/verify/complex_volume/__init__.py +18 -0
  473. snappy/verify/complex_volume/adjust_torsion.py +86 -0
  474. snappy/verify/complex_volume/closed.py +168 -0
  475. snappy/verify/complex_volume/compute_ptolemys.py +90 -0
  476. snappy/verify/complex_volume/cusped.py +56 -0
  477. snappy/verify/complex_volume/extended_bloch.py +201 -0
  478. snappy/verify/cusp_translations.py +85 -0
  479. snappy/verify/edge_equations.py +80 -0
  480. snappy/verify/exceptions.py +254 -0
  481. snappy/verify/hyperbolicity.py +224 -0
  482. snappy/verify/interval_newton_shapes_engine.py +523 -0
  483. snappy/verify/interval_tree.py +400 -0
  484. snappy/verify/krawczyk_shapes_engine.py +518 -0
  485. snappy/verify/maximal_cusp_area_matrix/__init__.py +46 -0
  486. snappy/verify/maximal_cusp_area_matrix/cusp_tiling_engine.py +419 -0
  487. snappy/verify/maximal_cusp_area_matrix/cusp_translate_engine.py +153 -0
  488. snappy/verify/real_algebra.py +286 -0
  489. snappy/verify/shapes.py +25 -0
  490. snappy/verify/short_slopes.py +200 -0
  491. snappy/verify/square_extensions.py +1005 -0
  492. snappy/verify/test.py +78 -0
  493. snappy/verify/upper_halfspace/__init__.py +9 -0
  494. snappy/verify/upper_halfspace/extended_matrix.py +100 -0
  495. snappy/verify/upper_halfspace/finite_point.py +283 -0
  496. snappy/verify/upper_halfspace/ideal_point.py +426 -0
  497. snappy/verify/volume.py +128 -0
  498. snappy/version.py +2 -0
  499. snappy-3.2.dist-info/METADATA +58 -0
  500. snappy-3.2.dist-info/RECORD +503 -0
  501. snappy-3.2.dist-info/WHEEL +5 -0
  502. snappy-3.2.dist-info/entry_points.txt +2 -0
  503. snappy-3.2.dist-info/top_level.txt +28 -0
@@ -0,0 +1,409 @@
1
+
2
+
3
+ <!DOCTYPE html>
4
+ <html class="writer-html5" lang="en" data-content_root="./">
5
+ <head>
6
+ <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
7
+
8
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
9
+ <title>Step-by-step examples: Part 1 &mdash; SnapPy 3.2 documentation</title>
10
+ <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
11
+ <link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=e59714d7" />
12
+ <link rel="stylesheet" type="text/css" href="_static/snappy_sphinx_rtd_theme.css?v=1b8ec2a8" />
13
+
14
+
15
+ <link rel="shortcut icon" href="_static/SnapPy.ico"/>
16
+ <script src="_static/jquery.js?v=5d32c60e"></script>
17
+ <script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
18
+ <script src="_static/documentation_options.js?v=828ea960"></script>
19
+ <script src="_static/doctools.js?v=9a2dae69"></script>
20
+ <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
21
+ <script src="_static/js/theme.js"></script>
22
+ <link rel="index" title="Index" href="genindex.html" />
23
+ <link rel="search" title="Search" href="search.html" />
24
+ <link rel="next" title="Step-by-step examples: Part 2" href="ptolemy_examples2.html" />
25
+ <link rel="prev" title="Mathematical preliminaries" href="ptolemy_prelim.html" />
26
+ </head>
27
+
28
+ <body class="wy-body-for-nav">
29
+ <div class="wy-grid-for-nav">
30
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
31
+ <div class="wy-side-scroll">
32
+ <div class="wy-side-nav-search" >
33
+
34
+
35
+
36
+ <a href="index.html" class="icon icon-home">
37
+ SnapPy
38
+ <img src="_static/SnapPy-horizontal-128.png" class="logo" alt="Logo"/>
39
+ </a>
40
+ <div role="search">
41
+ <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
42
+ <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
43
+ <input type="hidden" name="check_keywords" value="yes" />
44
+ <input type="hidden" name="area" value="default" />
45
+ </form>
46
+ </div>
47
+ </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
48
+ <ul class="current">
49
+ <li class="toctree-l1"><a class="reference internal" href="installing.html">Installing SnapPy</a></li>
50
+ <li class="toctree-l1"><a class="reference internal" href="screenshots.html">Screenshots: SnapPy in action</a></li>
51
+ <li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorial</a></li>
52
+ <li class="toctree-l1"><a class="reference internal" href="snappy.html">The snappy module and its classes</a></li>
53
+ <li class="toctree-l1"><a class="reference internal" href="plink.html">Using SnapPy’s link editor</a></li>
54
+ <li class="toctree-l1"><a class="reference internal" href="spherogram.html">Links: planar diagrams and invariants</a></li>
55
+ <li class="toctree-l1"><a class="reference internal" href="snap.html">Number theory of hyperbolic 3-manifolds</a></li>
56
+ <li class="toctree-l1"><a class="reference internal" href="verify.html">Verified computations</a></li>
57
+ <li class="toctree-l1 current"><a class="reference internal" href="other.html">Other components</a><ul class="current">
58
+ <li class="toctree-l2 current"><a class="reference internal" href="other.html#ptolemy-module">Ptolemy module</a><ul class="current">
59
+ <li class="toctree-l3 current"><a class="reference internal" href="ptolemy.html">The ptolemy module</a><ul class="current">
60
+ <li class="toctree-l4"><a class="reference internal" href="ptolemy.html#what-is-the-ptolemy-module">What is the ptolemy module?</a></li>
61
+ <li class="toctree-l4 current"><a class="reference internal" href="ptolemy.html#documentation">Documentation</a><ul class="current">
62
+ <li class="toctree-l5"><a class="reference internal" href="ptolemy_prelim.html">Mathematical preliminaries</a></li>
63
+ <li class="toctree-l5 current"><a class="current reference internal" href="#">Step-by-step examples: Part 1</a></li>
64
+ <li class="toctree-l5"><a class="reference internal" href="ptolemy_examples2.html">Step-by-step examples: Part 2</a></li>
65
+ <li class="toctree-l5"><a class="reference internal" href="ptolemy_examples3.html">Step-by-step examples: Part 3</a></li>
66
+ <li class="toctree-l5"><a class="reference internal" href="ptolemy_examples4.html">Step-by-step examples: Part 4</a></li>
67
+ <li class="toctree-l5"><a class="reference internal" href="ptolemy_classes.html">Classes</a></li>
68
+ </ul>
69
+ </li>
70
+ </ul>
71
+ </li>
72
+ </ul>
73
+ </li>
74
+ <li class="toctree-l2"><a class="reference internal" href="other.html#twister">Twister</a></li>
75
+ </ul>
76
+ </li>
77
+ <li class="toctree-l1"><a class="reference internal" href="news.html">News</a></li>
78
+ <li class="toctree-l1"><a class="reference internal" href="credits.html">Credits</a></li>
79
+ <li class="toctree-l1"><a class="reference internal" href="bugs.html">Reporting bugs and other problems</a></li>
80
+ <li class="toctree-l1"><a class="reference internal" href="todo.html">To Do List</a></li>
81
+ <li class="toctree-l1"><a class="reference internal" href="development.html">Development Basics</a></li>
82
+ </ul>
83
+
84
+ </div>
85
+ </div>
86
+ </nav>
87
+
88
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
89
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
90
+ <a href="index.html">SnapPy</a>
91
+ </nav>
92
+
93
+ <div class="wy-nav-content">
94
+ <div class="rst-content">
95
+ <div role="navigation" aria-label="Page navigation">
96
+ <ul class="wy-breadcrumbs">
97
+ <li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
98
+ <li class="breadcrumb-item"><a href="other.html">Other components</a></li>
99
+ <li class="breadcrumb-item"><a href="ptolemy.html">The ptolemy module</a></li>
100
+ <li class="breadcrumb-item active">Step-by-step examples: Part 1</li>
101
+ <li class="wy-breadcrumbs-aside">
102
+ </li>
103
+ </ul>
104
+ <hr/>
105
+ </div>
106
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
107
+ <div itemprop="articleBody">
108
+
109
+ <section id="step-by-step-examples-part-1">
110
+ <h1>Step-by-step examples: Part 1<a class="headerlink" href="#step-by-step-examples-part-1" title="Link to this heading"></a></h1>
111
+ <section id="the-ptolemy-variety-for-sl-n-c">
112
+ <span id="ptolemy-example-basic"></span><h2>The Ptolemy variety for SL(<em>N</em>, <strong>C</strong>)<a class="headerlink" href="#the-ptolemy-variety-for-sl-n-c" title="Link to this heading"></a></h2>
113
+ <p>Given a SnapPy triangulation, we obtain the reduced Ptolemy variety to find
114
+ SL(2, <strong>C</strong>)-representations as follows:</p>
115
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">M</span><span class="o">=</span><span class="n">Manifold</span><span class="p">(</span><span class="s2">&quot;m003&quot;</span><span class="p">)</span>
116
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">M</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="n">N</span> <span class="o">=</span> <span class="mi">2</span><span class="p">)</span>
117
+ <span class="go">Ptolemy Variety for m003, N = 2</span>
118
+ <span class="go"> c_0011_0 * c_0101_0 + c_0011_0^2 - c_0101_0^2</span>
119
+ <span class="go"> c_0011_0 * c_0101_0 + c_0011_0^2 - c_0101_0^2</span>
120
+ <span class="go"> - 1 + c_0011_0</span>
121
+ </pre></div>
122
+ </div>
123
+ <p>The result of <code class="docutils literal notranslate"><span class="pre">M.ptolemy_variety(2)</span></code> is an object of type <code class="docutils literal notranslate"><span class="pre">PtolemyVariety</span></code>.</p>
124
+ <p><strong>Remark:</strong> The exact formatting of the output might change between SnapPy versions and sage.</p>
125
+ <p><strong>Remark:</strong> The first two equations are the two Ptolemy relations
126
+ for the two tetrahedra in <code class="docutils literal notranslate"><span class="pre">m003</span></code>. The last equation <a class="reference internal" href="ptolemy_prelim.html#ptolemy-reduced-variety"><span class="std std-ref">reduces</span></a> the Ptolemy variety.</p>
127
+ <p>Similar, we can obtain the Ptolemy variety for higher <em>N</em>, say SL(3, <strong>C</strong>):</p>
128
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">M</span><span class="o">=</span><span class="n">Manifold</span><span class="p">(</span><span class="s2">&quot;m004&quot;</span><span class="p">)</span>
129
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">M</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
130
+ <span class="go">Ptolemy Variety for m003, N = 3</span>
131
+ <span class="go"> c_0012_0 * c_1101_0 + c_0012_1 * c_0111_0 - c_0102_0 * c_1011_0</span>
132
+ <span class="go"> c_0012_1 * c_1110_0 - c_0102_0 * c_0111_0 + c_0102_1 * c_1011_0</span>
133
+ <span class="go"> c_0012_0 * c_0111_0 + c_0102_0 * c_1101_0 - c_0102_1 * c_1110_0</span>
134
+ <span class="go"> c_0012_0 * c_1110_0 + c_0012_1 * c_1011_0 - c_0102_1 * c_1101_0</span>
135
+ <span class="go"> - c_0012_0 * c_0111_0 - c_0012_1 * c_1101_0 + c_0102_1 * c_1011_0</span>
136
+ <span class="go"> - c_0012_0 * c_1110_0 - c_0102_0 * c_1011_0 + c_0102_1 * c_0111_0</span>
137
+ <span class="go"> - c_0012_1 * c_0111_0 + c_0102_0 * c_1110_0 - c_0102_1 * c_1101_0</span>
138
+ <span class="go"> - c_0012_0 * c_1011_0 - c_0012_1 * c_1110_0 + c_0102_0 * c_1101_0</span>
139
+ <span class="go"> - 1 + c_0012_0</span>
140
+ <span class="go"> - 1 + c_0111_0</span>
141
+ </pre></div>
142
+ </div>
143
+ <p><strong>Remark:</strong> Similarly, we obtain four Ptolemy relations for each of the two tetrahedra in <code class="docutils literal notranslate"><span class="pre">m004</span></code> corresponding to the four subsimplices of a tetrahedron we get for <em>N</em>=3 (see Figure 2 of <a class="reference internal" href="ptolemy_prelim.html#gtz2011" id="id1"><span>[GTZ2011]</span></a>).</p>
144
+ </section>
145
+ <section id="using-auto-completion">
146
+ <h2>Using auto-completion<a class="headerlink" href="#using-auto-completion" title="Link to this heading"></a></h2>
147
+ <p>Let us assign a Ptolemy variety to <code class="docutils literal notranslate"><span class="pre">p</span></code> and then type <code class="docutils literal notranslate"><span class="pre">p.</span></code>:</p>
148
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">p</span><span class="o">=</span><span class="n">Manifold</span><span class="p">(</span><span class="s2">&quot;m003&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
149
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">p</span><span class="o">.</span>
150
+ </pre></div>
151
+ </div>
152
+ <p>If we are in SnapPy, sage or ipython, we can now hit the tab-key and see a list of attributes and methods available for a Ptolemy variety:</p>
153
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">p</span><span class="o">.</span>
154
+ <span class="go">p.canonical_representative p.filename_base p.to_magma</span>
155
+ <span class="go">p.compute_decomposition p.path_to_file p.to_magma_file</span>
156
+ <span class="go">p.compute_solutions p.py_eval_section p.variables</span>
157
+ <span class="go">p.degree_to_shapes p.py_eval_variable_dict p.variables_with_non_zero_condition</span>
158
+ <span class="go">p.equations p.retrieve_decomposition</span>
159
+ <span class="go">p.equations_with_non_zero_condition p.retrieve_solutions</span>
160
+ </pre></div>
161
+ </div>
162
+ <p>We can get further help by using the <code class="docutils literal notranslate"><span class="pre">?</span></code>:</p>
163
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>&gt;&gt;&gt; p.filename_base?
164
+ ...
165
+ Definition: p.filename_base(self)
166
+ Docstring:
167
+ Preferred filename base for writing out this Ptolemy variety
168
+ ...
169
+ </pre></div>
170
+ </div>
171
+ <p>This is a general mechanism and works for all objects in SnapPy, sage or ipython.</p>
172
+ </section>
173
+ <section id="retrieving-exact-solutions-from-the-database">
174
+ <span id="ptolemy-example-retrieve-exact-solutions"></span><h2>Retrieving exact solutions from the database<a class="headerlink" href="#retrieving-exact-solutions-from-the-database" title="Link to this heading"></a></h2>
175
+ <p>Given a Ptolemy variety, we can access the database at <a class="reference external" href="http://ptolemy.unhyperbolic.org/">ptolemy.unhyperbolic.org</a> to retrieve solutions for it with <code class="docutils literal notranslate"><span class="pre">retrieve_solutions</span></code> (if this is not working, please check your Internet connection):</p>
176
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">p</span><span class="o">=</span><span class="n">Manifold</span><span class="p">(</span><span class="s2">&quot;m003&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
177
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">sols</span><span class="o">=</span><span class="n">p</span><span class="o">.</span><span class="n">retrieve_solutions</span><span class="p">()</span>
178
+ <span class="go">Trying to retrieve solutions from http://ptolemy.unhyperbolic.org/data/pgl2/OrientableCuspedCensus/02_tetrahedra/m003__sl2_c0.magma_out ...</span>
179
+ <span class="go">Parsing..</span>
180
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">sols</span>
181
+ <span class="go">[PtolemyCoordinates(</span>
182
+ <span class="go"> {&#39;c_0011_0&#39;: 1,</span>
183
+ <span class="go"> &#39;c_0011_1&#39;: -1,</span>
184
+ <span class="go"> &#39;c_0101_0&#39;: Mod(x, x^2 - x - 1),</span>
185
+ <span class="go"> &#39;c_0101_1&#39;: Mod(-x, x^2 - x - 1),</span>
186
+ <span class="go"> &#39;c_0110_0&#39;: Mod(-x, x^2 - x - 1),</span>
187
+ <span class="go"> &#39;c_0110_1&#39;: Mod(x, x^2 - x - 1),</span>
188
+ <span class="go"> &#39;c_1001_0&#39;: -1,</span>
189
+ <span class="go"> &#39;c_1001_1&#39;: 1,</span>
190
+ <span class="go"> &#39;c_1010_0&#39;: Mod(x, x^2 - x - 1),</span>
191
+ <span class="go"> &#39;c_1010_1&#39;: Mod(-x, x^2 - x - 1),</span>
192
+ <span class="go"> &#39;c_1100_0&#39;: 1,</span>
193
+ <span class="go"> &#39;c_1100_1&#39;: -1,</span>
194
+ <span class="go"> &#39;s_0_0&#39;: 1,</span>
195
+ <span class="go"> &#39;s_0_1&#39;: 1,</span>
196
+ <span class="go"> &#39;s_1_0&#39;: 1,</span>
197
+ <span class="go"> &#39;s_1_1&#39;: 1,</span>
198
+ <span class="go"> &#39;s_2_0&#39;: 1,</span>
199
+ <span class="go"> &#39;s_2_1&#39;: 1,</span>
200
+ <span class="go"> &#39;s_3_0&#39;: 1,</span>
201
+ <span class="go"> &#39;s_3_1&#39;: 1},</span>
202
+ <span class="go"> is_numerical = False, ...)]</span>
203
+ </pre></div>
204
+ </div>
205
+ <p>The result is a list of solutions (up to Galois conjugation), here the list contains only one solution. Let us pick that one:</p>
206
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="nb">len</span><span class="p">(</span><span class="n">sols</span><span class="p">)</span>
207
+ <span class="go">1</span>
208
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">sol</span> <span class="o">=</span> <span class="n">sols</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
209
+ <span class="go">PtolemyCoordinates(</span>
210
+ <span class="go"> {&#39;c_0011_0&#39;: 1,</span>
211
+ <span class="go"> &#39;c_0011_1&#39;: -1,</span>
212
+ <span class="go"> &#39;c_0101_0&#39;: Mod(x, x^2 - x - 1),</span>
213
+ <span class="go"> &#39;c_0101_1&#39;: Mod(-x, x^2 - x - 1),</span>
214
+ <span class="go"> &#39;c_0110_0&#39;: Mod(-x, x^2 - x - 1),</span>
215
+ <span class="go"> &#39;c_0110_1&#39;: Mod(x, x^2 - x - 1),</span>
216
+ <span class="go"> &#39;c_1001_0&#39;: -1,</span>
217
+ <span class="go"> &#39;c_1001_1&#39;: 1,</span>
218
+ <span class="go"> &#39;c_1010_0&#39;: Mod(x, x^2 - x - 1),</span>
219
+ <span class="go"> &#39;c_1010_1&#39;: Mod(-x, x^2 - x - 1),</span>
220
+ <span class="go"> &#39;c_1100_0&#39;: 1,</span>
221
+ <span class="go"> &#39;c_1100_1&#39;: -1,</span>
222
+ <span class="go"> &#39;s_0_0&#39;: 1,</span>
223
+ <span class="go"> &#39;s_0_1&#39;: 1,</span>
224
+ <span class="go"> &#39;s_1_0&#39;: 1,</span>
225
+ <span class="go"> &#39;s_1_1&#39;: 1,</span>
226
+ <span class="go"> &#39;s_2_0&#39;: 1,</span>
227
+ <span class="go"> &#39;s_2_1&#39;: 1,</span>
228
+ <span class="go"> &#39;s_3_0&#39;: 1,</span>
229
+ <span class="go"> &#39;s_3_1&#39;: 1},</span>
230
+ <span class="go"> is_numerical = False, ...)</span>
231
+ </pre></div>
232
+ </div>
233
+ <p>As we can see, a solution assigns a value to each Ptolemy coordinate c<sub>…</sub>. It is of type <code class="docutils literal notranslate"><span class="pre">PtolemyCoordinates</span></code> (a subclass of python’s <code class="docutils literal notranslate"><span class="pre">dict</span></code>) and more details are discussed in <a class="reference internal" href="ptolemy_examples4.html#ptolemy-example-structure-of-solution"><span class="std std-ref">a later example</span></a>.</p>
234
+ <p><strong>Remark:</strong> We can give the additional argument <code class="docutils literal notranslate"><span class="pre">verbose=False</span></code> to suppress the messages about the database access:</p>
235
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">sols</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">&quot;m003&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span><span class="o">.</span><span class="n">retrieve_solutions</span><span class="p">(</span><span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
236
+ </pre></div>
237
+ </div>
238
+ </section>
239
+ <section id="compute-the-matrices-for-a-representation">
240
+ <span id="ptolemy-example-matrices"></span><h2>Compute the matrices for a representation<a class="headerlink" href="#compute-the-matrices-for-a-representation" title="Link to this heading"></a></h2>
241
+ <p><strong>Remark:</strong> Requires SnapPy 2.3 or later.</p>
242
+ <p>Given a solution as above, we can take a word in the fundamental group and get its image under the representation using <a class="reference internal" href="ptolemy_classes.html#snappy.ptolemy.coordinates.PtolemyCoordinates.evaluate_word" title="snappy.ptolemy.coordinates.PtolemyCoordinates.evaluate_word"><code class="xref py py-meth docutils literal notranslate"><span class="pre">evaluate_word()</span></code></a>. Here, we do it for the two generators:</p>
243
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">&quot;m003&quot;</span><span class="p">)</span>
244
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">sol</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span><span class="o">.</span><span class="n">retrieve_solutions</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span>
245
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">sol</span><span class="o">.</span><span class="n">evaluate_word</span><span class="p">(</span><span class="s1">&#39;a&#39;</span><span class="p">)</span>
246
+ <span class="go">[[0, Mod(1, x^2 - x - 1)], [Mod(-1, x^2 - x - 1), Mod(-x, x^2 - x - 1)]]</span>
247
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">sol</span><span class="o">.</span><span class="n">evaluate_word</span><span class="p">(</span><span class="s1">&#39;b&#39;</span><span class="p">)</span>
248
+ <span class="go">[[Mod(x, x^2 - x - 1), Mod(x, x^2 - x - 1)],</span>
249
+ <span class="go">[Mod(-x, x^2 - x - 1), Mod(-1, x^2 - x - 1)]]</span>
250
+ </pre></div>
251
+ </div>
252
+ <p>By default, this word is with respect to the unsimplified presentation of the fundamental group. Thus, we expect the identity matrix when we evaluate a relator (for PSL(<em>N</em>, <strong>C</strong>) the diagonal element will be an <em>N</em>-th root of unity):</p>
253
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">M</span><span class="o">.</span><span class="n">fundamental_group</span><span class="p">(</span><span class="n">simplify_presentation</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
254
+ <span class="go">Generators:</span>
255
+ <span class="go"> a,b,c</span>
256
+ <span class="go">Relators:</span>
257
+ <span class="go"> BCaC</span>
258
+ <span class="go"> AbCbA</span>
259
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">sol</span><span class="o">.</span><span class="n">evaluate_word</span><span class="p">(</span><span class="s1">&#39;BCaC&#39;</span><span class="p">)</span>
260
+ <span class="go">[[Mod(1, x^2 - x - 1), 0], [0, Mod(1, x^2 - x - 1)]]</span>
261
+ </pre></div>
262
+ </div>
263
+ <p>We revisit computing the matrices <a class="reference internal" href="ptolemy_examples3.html#ptolemy-detailed-example-matrices"><span class="std std-ref">here</span></a> to explain how to use a different presentation of the fundamental group.</p>
264
+ <p><strong>Remark:</strong> The matrices are currently returned as a list of list of pari <code class="docutils literal notranslate"><span class="pre">POLMOD</span></code> objects. In the future, the ptolemy module should return the matrices as sage matrices over a <a class="reference external" href="http://doc.sagemath.org/html/en/reference/number_fields/sage/rings/number_field/number_field.html">sage NumberField</a>.</p>
265
+ </section>
266
+ <section id="compute-the-traces">
267
+ <span id="ptolemy-example-traces"></span><h2>Compute the traces<a class="headerlink" href="#compute-the-traces" title="Link to this heading"></a></h2>
268
+ <p><strong>Remark:</strong> Requires SnapPy 2.3.2 or later.</p>
269
+ <p>We can compute the traces of these matrices:</p>
270
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">sol</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">&quot;m003&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span><span class="o">.</span><span class="n">retrieve_solutions</span><span class="p">(</span><span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
271
+ <span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">snappy.ptolemy.matrix</span> <span class="kn">import</span> <span class="n">matrix_trace</span>
272
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">matrix_trace</span><span class="p">(</span><span class="n">sol</span><span class="o">.</span><span class="n">evaluate_word</span><span class="p">(</span><span class="s1">&#39;a&#39;</span><span class="p">))</span>
273
+ <span class="go">Mod(-1, x^2 - x - 1)</span>
274
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">matrix_trace</span><span class="p">(</span><span class="n">sol</span><span class="o">.</span><span class="n">evaluate_word</span><span class="p">(</span><span class="s1">&#39;b&#39;</span><span class="p">))</span>
275
+ <span class="go">Mod(-x -1, x^2 -x -1)</span>
276
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">matrix_trace</span><span class="p">(</span><span class="n">sol</span><span class="o">.</span><span class="n">evaluate_word</span><span class="p">(</span><span class="s1">&#39;ab&#39;</span><span class="p">))</span>
277
+ <span class="go">Mod(-x + 2, x^2 + x + 1)</span>
278
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">matrix_trace</span><span class="p">(</span><span class="n">sol</span><span class="o">.</span><span class="n">evaluate_word</span><span class="p">(</span><span class="s1">&#39;ba&#39;</span><span class="p">))</span>
279
+ <span class="go">Mod(-x + 2, x^2 + x + 1)</span>
280
+ </pre></div>
281
+ </div>
282
+ <p><strong>Remark:</strong> Since this representation is irreducible, it is uniquely determined up to conjugacy by the above 4 traces, see Slide 30 of
283
+ <a class="reference external" href="http://www.math.illinois.edu/GEAR/resources/Culler/Culler-lecture3-slides.pdf">Marc Culler’s slides</a>.</p>
284
+ </section>
285
+ <section id="compute-the-trace-field-for-a-psl-2-c-representation">
286
+ <span id="ptolemy-examples-trace-field"></span><h2>Compute the trace field for a PSL(<em>2</em>, <strong>C</strong>)-representation<a class="headerlink" href="#compute-the-trace-field-for-a-psl-2-c-representation" title="Link to this heading"></a></h2>
287
+ <div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">sol</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">&quot;m003&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span><span class="o">.</span><span class="n">retrieve_solutions</span><span class="p">(</span><span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
288
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">sol</span><span class="o">.</span><span class="n">number_field</span><span class="p">()</span>
289
+ <span class="go">x^2 + x + 1</span>
290
+ </pre></div>
291
+ </div>
292
+ <p>This is the Ptolemy field which is equal to the trace field if <em>N</em>= 2 by results of <a class="reference internal" href="ptolemy_prelim.html#ggz2014" id="id2"><span>[GGZ2014]</span></a>.</p>
293
+ </section>
294
+ <section id="compute-the-volume">
295
+ <span id="ptolemy-example-volume"></span><h2>Compute the volume<a class="headerlink" href="#compute-the-volume" title="Link to this heading"></a></h2>
296
+ <p>We can also compute the volume of the representations:</p>
297
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">sol</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">&quot;m003&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span><span class="o">.</span><span class="n">retrieve_solutions</span><span class="p">(</span><span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
298
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">sol</span><span class="o">.</span><span class="n">volume_numerical</span><span class="p">()</span>
299
+ <span class="go">[0.E-38, 1.88266550875941 E-14]</span>
300
+ </pre></div>
301
+ </div>
302
+ <p>Recall that we had an algebraic solution in the number field with defining polynomial x<sup>2</sup>+x+1. This number field has two embeddings into <strong>C</strong>, yielding two representations. This is why the result is a list of two volumes. In this case, they are both zero up to numerical precision.</p>
303
+ </section>
304
+ <section id="increase-precision">
305
+ <span id="ptolemy-example-increase-precision"></span><h2>Increase precision<a class="headerlink" href="#increase-precision" title="Link to this heading"></a></h2>
306
+ <p>We can get higher precision be setting it in pari (in decimal digits):</p>
307
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">sol</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">&quot;m011&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span><span class="o">.</span><span class="n">retrieve_solutions</span><span class="p">(</span><span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
308
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">sol</span><span class="o">.</span><span class="n">volume_numerical</span><span class="p">()</span>
309
+ <span class="go">[-4.30211422042248 E-16, -0.942707362776931, 0.942707362776931]</span>
310
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">pari</span><span class="o">.</span><span class="n">set_real_precision</span><span class="p">(</span><span class="mi">40</span><span class="p">)</span>
311
+ <span class="go">15</span>
312
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">sol</span><span class="o">.</span><span class="n">volume_numerical</span><span class="p">()</span>
313
+ <span class="go">[-1.5819817649675358086 E-40,</span>
314
+ <span class="go"> -0.9427073627769277209212996030922116475902,</span>
315
+ <span class="go"> 0.9427073627769277209212996030922116475902]</span>
316
+ </pre></div>
317
+ </div>
318
+ <p><strong>Remark:</strong> This is not using interval arithmetics (although this is planned for the future). For now, the computed value of a quantity might differ from the real value by far more than the number of displayed digits suggests. To be confident about the result, we can increase the precision and see how many digits of the result are stabilizing.</p>
319
+ </section>
320
+ <section id="ptolemy-varieties-for-psl-n-c-representations">
321
+ <span id="ptolemy-example-obstruction-class"></span><h2>Ptolemy varieties for PSL(<em>N</em>, <strong>C</strong>)-representations<a class="headerlink" href="#ptolemy-varieties-for-psl-n-c-representations" title="Link to this heading"></a></h2>
322
+ <p>The representations of <code class="docutils literal notranslate"><span class="pre">m003</span></code> we detected so far had trivial volume and thus cannot include the geometric representation. This is because the geometric representation is a boundary-unipotent PSL(2, <strong>C</strong>)-representation but not a <a class="reference internal" href="ptolemy_prelim.html#ptolemy-boundary-unipotent"><span class="std std-ref">boundary-unipotent SL(2, C)-representation</span></a> and we only detect the latter ones above.</p>
323
+ <p>We can obtain the Ptolemy varieties for all <a class="reference internal" href="ptolemy_prelim.html#obstruction-class"><span class="std std-ref">obstruction classes</span></a> to find the PSL(<em>N</em>, <strong>C</strong>)-representation that do not lift to boundary-unipotent SL(<em>N</em>, <strong>C</strong>)-representations as well:</p>
324
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">&quot;m003&quot;</span><span class="p">)</span>
325
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">M</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="n">N</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span> <span class="n">obstruction_class</span> <span class="o">=</span> <span class="s1">&#39;all&#39;</span><span class="p">)</span>
326
+ <span class="go">[Ptolemy Variety for m003, N = 2, obstruction_class = 0</span>
327
+ <span class="go"> c_0011_0 * c_0101_0 + c_0011_0^2 - c_0101_0^2</span>
328
+ <span class="go"> c_0011_0 * c_0101_0 + c_0011_0^2 - c_0101_0^2</span>
329
+ <span class="go"> - 1 + c_0011_0,</span>
330
+ <span class="go"> Ptolemy Variety for m003, N = 2, obstruction_class = 1</span>
331
+ <span class="go"> - c_0011_0 * c_0101_0 - c_0011_0^2 - c_0101_0^2</span>
332
+ <span class="go"> - c_0011_0 * c_0101_0 - c_0011_0^2 - c_0101_0^2</span>
333
+ <span class="go"> - 1 + c_0011_0]</span>
334
+ </pre></div>
335
+ </div>
336
+ <p>The first Ptolemy variety in this list always corresponds to the trivial obstruction class. Let us try the non-trivial obstruction class:</p>
337
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">p</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="s1">&#39;all&#39;</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span>
338
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">sols</span><span class="o">=</span><span class="n">p</span><span class="o">.</span><span class="n">retrieve_solutions</span><span class="p">(</span><span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
339
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">sols</span><span class="o">.</span><span class="n">volume_numerical</span><span class="p">()</span>
340
+ <span class="go">[[2.02988321281931, -2.02988321281931]]</span>
341
+ </pre></div>
342
+ </div>
343
+ <p>We now see a representation with volume twice that of a regular ideal tetrahedron. This is the geometric representation of <code class="docutils literal notranslate"><span class="pre">m003</span></code>.
344
+ Here is python code to iterate over all obstruction classes:</p>
345
+ <div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">&quot;m003&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="s1">&#39;all&#39;</span><span class="p">):</span>
346
+ <span class="gp">... </span> <span class="n">sols</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">retrieve_solutions</span><span class="p">(</span><span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
347
+ <span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="n">sols</span><span class="o">.</span><span class="n">volume_numerical</span><span class="p">())</span>
348
+ <span class="go">[[0.E-19, 1.88267370443418 E-14]]</span>
349
+ <span class="go">[[2.02988321281931, -2.02988321281931]]</span>
350
+ </pre></div>
351
+ </div>
352
+ <p>And in functional style:</p>
353
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="p">[</span><span class="n">p</span><span class="o">.</span><span class="n">retrieve_solutions</span><span class="p">()</span><span class="o">.</span><span class="n">volume_numerical</span><span class="p">()</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">&quot;m003&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="s1">&#39;all&#39;</span><span class="p">)]</span>
354
+ <span class="go">Trying to retrieve solutions from http://ptolemy.unhyperbolic.org/data/pgl2/OrientableCuspedCensus/02_tetrahedra/m003__sl2_c0.magma_out ...</span>
355
+ <span class="go">Parsing...</span>
356
+ <span class="go">Trying to retrieve solutions from http://ptolemy.unhyperbolic.org/data/pgl2/OrientableCuspedCensus/02_tetrahedra/m003__sl2_c1.magma_out ...</span>
357
+ <span class="go">Parsing...</span>
358
+ <span class="go">[[[0.E-19, 1.88267370443418 E-14]], [[2.02988321281931, -2.02988321281931]]]</span>
359
+ </pre></div>
360
+ </div>
361
+ <p><strong>Remark</strong>: As we see, it is not necessary to use named arguments <code class="docutils literal notranslate"><span class="pre">N</span> <span class="pre">=</span> <span class="pre">2</span></code> and <code class="docutils literal notranslate"><span class="pre">obstruction_class</span> <span class="pre">=</span> <span class="pre">'all'</span></code> for faster typing. However, for better readability of our code, we recommend to include the names.</p>
362
+ </section>
363
+ <section id="a-short-cut-for-a-psl-n-c-ptolemy-variety">
364
+ <h2>A short cut for a PSL(<em>N</em>, <strong>C</strong>) Ptolemy variety<a class="headerlink" href="#a-short-cut-for-a-psl-n-c-ptolemy-variety" title="Link to this heading"></a></h2>
365
+ <p>We have seen that <code class="docutils literal notranslate"><span class="pre">M.ptolemy_variety(2,</span> <span class="pre">'all')</span></code> gives a Ptolemy variety for each obstruction class. We used <code class="docutils literal notranslate"><span class="pre">M.ptolemy_variety(2,</span> <span class="pre">'all')[3]</span></code> to pick one, here the fourth, of those varieties. A shorter form of doing this is:</p>
366
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">M</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s2">&quot;m009&quot;</span><span class="p">)</span>
367
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">M</span><span class="o">.</span><span class="n">ptolemy_variety</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span>
368
+ <span class="go">Ptolemy Variety for m009, N = 2, obstruction_class = 3</span>
369
+ <span class="go"> c_0011_0^2 + c_0101_0 * c_0101_1 + c_0101_1^2</span>
370
+ <span class="go"> - c_0011_0^2 + c_0101_0^2 + c_0101_1^2</span>
371
+ <span class="go"> - c_0011_0^2 - c_0101_0 * c_0101_1 - c_0101_1^2</span>
372
+ <span class="go"> - 1 + c_0011_0</span>
373
+ </pre></div>
374
+ </div>
375
+ </section>
376
+ </section>
377
+
378
+
379
+ </div>
380
+ </div>
381
+ <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
382
+ <a href="ptolemy_prelim.html" class="btn btn-neutral float-left" title="Mathematical preliminaries" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
383
+ <a href="ptolemy_examples2.html" class="btn btn-neutral float-right" title="Step-by-step examples: Part 2" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
384
+ </div>
385
+
386
+ <hr/>
387
+
388
+ <div role="contentinfo">
389
+ <p>&#169; Copyright 2009-2025, by Marc Culler, Nathan Dunfield, Matthias Goerner, Jeffrey Weeks and others.</p>
390
+ </div>
391
+
392
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
393
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
394
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
395
+
396
+
397
+ </footer>
398
+ </div>
399
+ </div>
400
+ </section>
401
+ </div>
402
+ <script>
403
+ jQuery(function () {
404
+ SphinxRtdTheme.Navigation.enable(true);
405
+ });
406
+ </script>
407
+
408
+ </body>
409
+ </html>