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

Sign up to get free protection for your applications and to get access to all the features.
Files changed (461) hide show
  1. snappy/CyOpenGL.cpython-312-darwin.so +0 -0
  2. snappy/SnapPy.cpython-312-darwin.so +0 -0
  3. snappy/SnapPyHP.cpython-312-darwin.so +0 -0
  4. snappy/__init__.py +271 -401
  5. snappy/app.py +70 -20
  6. snappy/browser.py +18 -17
  7. snappy/canonical.py +249 -0
  8. snappy/{verify/cusp_shapes.py → cusps/__init__.py} +8 -18
  9. snappy/cusps/cusp_area_matrix.py +101 -0
  10. snappy/{verify/cusp_areas.py → cusps/cusp_areas_from_matrix.py} +23 -39
  11. snappy/cusps/maximal_cusp_area_matrix.py +136 -0
  12. snappy/cusps/test.py +21 -0
  13. snappy/cusps/trig_cusp_area_matrix.py +63 -0
  14. snappy/database.py +10 -9
  15. snappy/decorated_isosig.py +337 -114
  16. snappy/dev/extended_ptolemy/complexVolumesClosed.py +40 -7
  17. snappy/dev/extended_ptolemy/extended.py +3 -3
  18. snappy/dev/extended_ptolemy/phc_wrapper.py +10 -10
  19. snappy/dev/vericlosed/oneVertexTruncatedComplex.py +1 -1
  20. snappy/doc/_images/m004_paper_plane_on_systole.jpg +0 -0
  21. snappy/doc/_images/m125_paper_plane.jpg +0 -0
  22. snappy/doc/_images/o9_00000_systole_paper_plane.jpg +0 -0
  23. snappy/doc/_images/o9_00000_systole_paper_plane_closer.jpg +0 -0
  24. snappy/doc/_sources/development.rst.txt +66 -46
  25. snappy/doc/_sources/index.rst.txt +72 -5
  26. snappy/doc/_sources/installing.rst.txt +145 -162
  27. snappy/doc/_sources/news.rst.txt +73 -1
  28. snappy/doc/_sources/ptolemy_examples1.rst.txt +8 -7
  29. snappy/doc/_sources/ptolemy_examples3.rst.txt +2 -2
  30. snappy/doc/_sources/triangulation.rst.txt +2 -2
  31. snappy/doc/_sources/verify.rst.txt +89 -29
  32. snappy/doc/_sources/verify_internals.rst.txt +5 -16
  33. snappy/doc/_static/basic.css +1 -1
  34. snappy/doc/_static/css/badge_only.css +1 -1
  35. snappy/doc/_static/css/theme.css +1 -1
  36. snappy/doc/_static/doctools.js +1 -1
  37. snappy/doc/_static/documentation_options.js +1 -1
  38. snappy/doc/_static/fonts/Lato/lato-bold.eot +0 -0
  39. snappy/doc/_static/fonts/Lato/lato-bold.ttf +0 -0
  40. snappy/doc/_static/fonts/Lato/lato-bold.woff +0 -0
  41. snappy/doc/_static/fonts/Lato/lato-bold.woff2 +0 -0
  42. snappy/doc/_static/fonts/Lato/lato-bolditalic.eot +0 -0
  43. snappy/doc/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
  44. snappy/doc/_static/fonts/Lato/lato-bolditalic.woff +0 -0
  45. snappy/doc/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
  46. snappy/doc/_static/fonts/Lato/lato-italic.eot +0 -0
  47. snappy/doc/_static/fonts/Lato/lato-italic.ttf +0 -0
  48. snappy/doc/_static/fonts/Lato/lato-italic.woff +0 -0
  49. snappy/doc/_static/fonts/Lato/lato-italic.woff2 +0 -0
  50. snappy/doc/_static/fonts/Lato/lato-regular.eot +0 -0
  51. snappy/doc/_static/fonts/Lato/lato-regular.ttf +0 -0
  52. snappy/doc/_static/fonts/Lato/lato-regular.woff +0 -0
  53. snappy/doc/_static/fonts/Lato/lato-regular.woff2 +0 -0
  54. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
  55. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
  56. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
  57. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
  58. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
  59. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
  60. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
  61. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
  62. snappy/doc/_static/js/versions.js +228 -0
  63. snappy/doc/_static/language_data.js +2 -2
  64. snappy/doc/_static/searchtools.js +108 -62
  65. snappy/doc/additional_classes.html +209 -40
  66. snappy/doc/bugs.html +16 -19
  67. snappy/doc/censuses.html +19 -38
  68. snappy/doc/credits.html +16 -19
  69. snappy/doc/development.html +84 -64
  70. snappy/doc/genindex.html +65 -144
  71. snappy/doc/index.html +81 -26
  72. snappy/doc/installing.html +158 -176
  73. snappy/doc/manifold.html +1119 -507
  74. snappy/doc/manifoldhp.html +16 -19
  75. snappy/doc/news.html +90 -32
  76. snappy/doc/objects.inv +0 -0
  77. snappy/doc/other.html +17 -19
  78. snappy/doc/platonic_census.html +16 -19
  79. snappy/doc/plink.html +16 -19
  80. snappy/doc/ptolemy.html +17 -19
  81. snappy/doc/ptolemy_classes.html +31 -34
  82. snappy/doc/ptolemy_examples1.html +23 -25
  83. snappy/doc/ptolemy_examples2.html +16 -19
  84. snappy/doc/ptolemy_examples3.html +18 -21
  85. snappy/doc/ptolemy_examples4.html +16 -19
  86. snappy/doc/ptolemy_prelim.html +17 -20
  87. snappy/doc/py-modindex.html +16 -19
  88. snappy/doc/screenshots.html +18 -20
  89. snappy/doc/search.html +15 -18
  90. snappy/doc/searchindex.js +1 -1
  91. snappy/doc/snap.html +16 -19
  92. snappy/doc/snappy.html +17 -19
  93. snappy/doc/spherogram.html +29 -32
  94. snappy/doc/todo.html +16 -19
  95. snappy/doc/triangulation.html +299 -190
  96. snappy/doc/tutorial.html +16 -19
  97. snappy/doc/verify.html +97 -43
  98. snappy/doc/verify_internals.html +59 -516
  99. snappy/drilling/__init__.py +153 -235
  100. snappy/drilling/barycentric.py +103 -0
  101. snappy/drilling/constants.py +0 -2
  102. snappy/drilling/crush.py +56 -130
  103. snappy/drilling/cusps.py +12 -6
  104. snappy/drilling/debug.py +2 -1
  105. snappy/drilling/exceptions.py +7 -40
  106. snappy/drilling/moves.py +302 -243
  107. snappy/drilling/perturb.py +63 -37
  108. snappy/drilling/shorten.py +36 -0
  109. snappy/drilling/subdivide.py +0 -5
  110. snappy/drilling/test.py +23 -0
  111. snappy/drilling/test_cases.py +126 -0
  112. snappy/drilling/tracing.py +9 -37
  113. snappy/exceptions.py +18 -5
  114. snappy/exterior_to_link/barycentric_geometry.py +2 -4
  115. snappy/exterior_to_link/main.py +8 -7
  116. snappy/exterior_to_link/mcomplex_with_link.py +2 -2
  117. snappy/exterior_to_link/rational_linear_algebra.py +1 -1
  118. snappy/exterior_to_link/rational_linear_algebra_wrapped.py +1 -1
  119. snappy/exterior_to_link/test.py +21 -33
  120. snappy/geometric_structure/__init__.py +212 -0
  121. snappy/geometric_structure/cusp_neighborhood/__init__.py +3 -0
  122. snappy/geometric_structure/cusp_neighborhood/complex_cusp_cross_section.py +697 -0
  123. snappy/geometric_structure/cusp_neighborhood/cusp_cross_section_base.py +484 -0
  124. snappy/geometric_structure/cusp_neighborhood/exceptions.py +42 -0
  125. snappy/geometric_structure/cusp_neighborhood/real_cusp_cross_section.py +298 -0
  126. snappy/geometric_structure/cusp_neighborhood/tiles_for_cusp_neighborhood.py +159 -0
  127. snappy/geometric_structure/cusp_neighborhood/vertices.py +32 -0
  128. snappy/geometric_structure/geodesic/__init__.py +0 -0
  129. snappy/geometric_structure/geodesic/add_core_curves.py +152 -0
  130. snappy/geometric_structure/geodesic/avoid_core_curves.py +369 -0
  131. snappy/geometric_structure/geodesic/canonical_keys.py +52 -0
  132. snappy/geometric_structure/geodesic/check_away_from_core_curve.py +60 -0
  133. snappy/geometric_structure/geodesic/constants.py +6 -0
  134. snappy/geometric_structure/geodesic/exceptions.py +22 -0
  135. snappy/{drilling → geometric_structure/geodesic}/fixed_points.py +34 -9
  136. snappy/{drilling/geodesic_info.py → geometric_structure/geodesic/geodesic_start_point_info.py} +139 -180
  137. snappy/geometric_structure/geodesic/graph_trace_helper.py +67 -0
  138. snappy/geometric_structure/geodesic/line.py +30 -0
  139. snappy/geometric_structure/geodesic/multiplicity.py +127 -0
  140. snappy/geometric_structure/geodesic/tiles_for_geodesic.py +101 -0
  141. snappy/geometric_structure/test.py +22 -0
  142. snappy/gui.py +23 -13
  143. snappy/horoviewer.py +7 -7
  144. snappy/hyperboloid/__init__.py +96 -31
  145. snappy/hyperboloid/distances.py +245 -0
  146. snappy/hyperboloid/horoball.py +19 -0
  147. snappy/hyperboloid/line.py +35 -0
  148. snappy/hyperboloid/point.py +9 -0
  149. snappy/hyperboloid/triangle.py +29 -0
  150. snappy/isometry_signature.py +382 -0
  151. snappy/len_spec/__init__.py +596 -0
  152. snappy/len_spec/geodesic_info.py +110 -0
  153. snappy/len_spec/geodesic_key_info_dict.py +117 -0
  154. snappy/len_spec/geodesic_piece.py +143 -0
  155. snappy/len_spec/geometric_structure.py +182 -0
  156. snappy/len_spec/geometry.py +80 -0
  157. snappy/len_spec/length_spectrum_geodesic_info.py +170 -0
  158. snappy/len_spec/spine.py +206 -0
  159. snappy/len_spec/test.py +24 -0
  160. snappy/len_spec/test_cases.py +69 -0
  161. snappy/len_spec/tile.py +275 -0
  162. snappy/len_spec/word.py +86 -0
  163. snappy/math_basics.py +39 -13
  164. snappy/matrix.py +52 -9
  165. snappy/number.py +12 -6
  166. snappy/numeric_output_checker.py +2 -3
  167. snappy/pari.py +6 -3
  168. snappy/polyviewer.py +8 -8
  169. snappy/ptolemy/__init__.py +1 -1
  170. snappy/ptolemy/component.py +2 -2
  171. snappy/ptolemy/coordinates.py +25 -25
  172. snappy/ptolemy/findLoops.py +9 -9
  173. snappy/ptolemy/manifoldMethods.py +27 -29
  174. snappy/ptolemy/polynomial.py +50 -57
  175. snappy/ptolemy/processFileBase.py +60 -0
  176. snappy/ptolemy/ptolemyVariety.py +109 -41
  177. snappy/ptolemy/reginaWrapper.py +4 -4
  178. snappy/ptolemy/rur.py +1 -1
  179. snappy/ptolemy/solutionsToPrimeIdealGroebnerBasis.py +9 -9
  180. snappy/ptolemy/test.py +99 -54
  181. snappy/ptolemy/utilities.py +1 -1
  182. snappy/raytracing/__init__.py +64 -0
  183. snappy/raytracing/additional_horospheres.py +64 -0
  184. snappy/raytracing/additional_len_spec_choices.py +63 -0
  185. snappy/raytracing/cohomology_fractal.py +0 -3
  186. snappy/raytracing/eyeball.py +123 -0
  187. snappy/raytracing/finite_raytracing_data.py +17 -17
  188. snappy/raytracing/finite_viewer.py +15 -15
  189. snappy/raytracing/geodesic_tube_info.py +93 -63
  190. snappy/raytracing/geodesics.py +94 -64
  191. snappy/raytracing/geodesics_window.py +56 -34
  192. snappy/raytracing/gui_utilities.py +21 -6
  193. snappy/raytracing/hyperboloid_navigation.py +29 -4
  194. snappy/raytracing/hyperboloid_utilities.py +73 -73
  195. snappy/raytracing/ideal_raytracing_data.py +121 -91
  196. snappy/raytracing/inside_viewer.py +199 -66
  197. snappy/raytracing/pack.py +22 -0
  198. snappy/raytracing/raytracing_data.py +37 -25
  199. snappy/raytracing/raytracing_view.py +70 -65
  200. snappy/raytracing/shaders/Eye.png +0 -0
  201. snappy/raytracing/shaders/NonGeometric.png +0 -0
  202. snappy/raytracing/shaders/__init__.py +39 -3
  203. snappy/raytracing/shaders/fragment.glsl +451 -133
  204. snappy/raytracing/test.py +29 -0
  205. snappy/raytracing/tooltip.py +146 -0
  206. snappy/raytracing/upper_halfspace_utilities.py +42 -9
  207. snappy/sage_helper.py +67 -134
  208. snappy/settings.py +90 -77
  209. snappy/shell.py +2 -0
  210. snappy/snap/character_varieties.py +2 -2
  211. snappy/snap/find_field.py +4 -3
  212. snappy/snap/fundamental_polyhedron.py +2 -2
  213. snappy/snap/kernel_structures.py +5 -1
  214. snappy/snap/nsagetools.py +9 -8
  215. snappy/snap/peripheral/dual_cellulation.py +4 -3
  216. snappy/snap/peripheral/peripheral.py +2 -2
  217. snappy/snap/peripheral/surface.py +5 -5
  218. snappy/snap/peripheral/test.py +1 -1
  219. snappy/snap/polished_reps.py +8 -8
  220. snappy/snap/slice_obs_HKL.py +16 -14
  221. snappy/snap/t3mlite/arrow.py +3 -3
  222. snappy/snap/t3mlite/edge.py +3 -3
  223. snappy/snap/t3mlite/homology.py +2 -2
  224. snappy/snap/t3mlite/mcomplex.py +3 -3
  225. snappy/snap/t3mlite/simplex.py +12 -0
  226. snappy/snap/t3mlite/spun.py +18 -17
  227. snappy/snap/t3mlite/test_vs_regina.py +4 -4
  228. snappy/snap/test.py +37 -53
  229. snappy/snap/utilities.py +4 -5
  230. snappy/test.py +121 -138
  231. snappy/test_cases.py +263 -0
  232. snappy/testing.py +131 -0
  233. snappy/tiling/__init__.py +2 -0
  234. snappy/tiling/canonical_key_dict.py +59 -0
  235. snappy/tiling/dict_based_set.py +79 -0
  236. snappy/tiling/floor.py +49 -0
  237. snappy/tiling/hyperboloid_dict.py +54 -0
  238. snappy/tiling/iter_utils.py +78 -0
  239. snappy/tiling/lifted_tetrahedron.py +22 -0
  240. snappy/tiling/lifted_tetrahedron_set.py +54 -0
  241. snappy/tiling/real_hash_dict.py +164 -0
  242. snappy/tiling/test.py +23 -0
  243. snappy/tiling/tile.py +215 -0
  244. snappy/tiling/triangle.py +33 -0
  245. snappy/tkterminal.py +113 -84
  246. snappy/twister/main.py +1 -7
  247. snappy/twister/twister_core.cpython-312-darwin.so +0 -0
  248. snappy/upper_halfspace/__init__.py +78 -17
  249. snappy/verify/__init__.py +3 -7
  250. snappy/verify/{verifyCanonical.py → canonical.py} +78 -70
  251. snappy/verify/complex_volume/adjust_torsion.py +1 -2
  252. snappy/verify/complex_volume/closed.py +13 -13
  253. snappy/verify/complex_volume/cusped.py +6 -6
  254. snappy/verify/complex_volume/extended_bloch.py +5 -8
  255. snappy/verify/{cuspTranslations.py → cusp_translations.py} +1 -1
  256. snappy/verify/edge_equations.py +80 -0
  257. snappy/verify/exceptions.py +0 -55
  258. snappy/verify/{verifyHyperbolicity.py → hyperbolicity.py} +3 -3
  259. snappy/verify/interval_newton_shapes_engine.py +7 -5
  260. snappy/verify/interval_tree.py +5 -5
  261. snappy/verify/krawczyk_shapes_engine.py +17 -18
  262. snappy/verify/maximal_cusp_area_matrix/__init__.py +7 -74
  263. snappy/verify/maximal_cusp_area_matrix/cusp_tiling_engine.py +3 -4
  264. snappy/verify/maximal_cusp_area_matrix/cusp_translate_engine.py +1 -1
  265. snappy/verify/{realAlgebra.py → real_algebra.py} +1 -1
  266. snappy/verify/shapes.py +5 -3
  267. snappy/verify/short_slopes.py +39 -41
  268. snappy/verify/{squareExtensions.py → square_extensions.py} +14 -11
  269. snappy/verify/test.py +57 -60
  270. snappy/verify/upper_halfspace/extended_matrix.py +1 -1
  271. snappy/verify/upper_halfspace/finite_point.py +3 -4
  272. snappy/verify/upper_halfspace/ideal_point.py +9 -9
  273. snappy/verify/volume.py +2 -2
  274. snappy/version.py +2 -2
  275. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/METADATA +25 -11
  276. snappy-3.2.dist-info/RECORD +503 -0
  277. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/WHEEL +1 -1
  278. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/top_level.txt +6 -1
  279. snappy/__pycache__/__init__.cpython-312.pyc +0 -0
  280. snappy/__pycache__/browser.cpython-312.pyc +0 -0
  281. snappy/__pycache__/cache.cpython-312.pyc +0 -0
  282. snappy/__pycache__/database.cpython-312.pyc +0 -0
  283. snappy/__pycache__/db_utilities.cpython-312.pyc +0 -0
  284. snappy/__pycache__/decorated_isosig.cpython-312.pyc +0 -0
  285. snappy/__pycache__/exceptions.cpython-312.pyc +0 -0
  286. snappy/__pycache__/export_stl.cpython-312.pyc +0 -0
  287. snappy/__pycache__/filedialog.cpython-312.pyc +0 -0
  288. snappy/__pycache__/gui.cpython-312.pyc +0 -0
  289. snappy/__pycache__/horoviewer.cpython-312.pyc +0 -0
  290. snappy/__pycache__/infowindow.cpython-312.pyc +0 -0
  291. snappy/__pycache__/math_basics.cpython-312.pyc +0 -0
  292. snappy/__pycache__/matrix.cpython-312.pyc +0 -0
  293. snappy/__pycache__/number.cpython-312.pyc +0 -0
  294. snappy/__pycache__/numeric_output_checker.cpython-312.pyc +0 -0
  295. snappy/__pycache__/pari.cpython-312.pyc +0 -0
  296. snappy/__pycache__/polyviewer.cpython-312.pyc +0 -0
  297. snappy/__pycache__/sage_helper.cpython-312.pyc +0 -0
  298. snappy/__pycache__/version.cpython-312.pyc +0 -0
  299. snappy/doc/_sources/verify_canon.rst.txt +0 -90
  300. snappy/doc/_static/js/html5shiv-printshiv.min.js +0 -4
  301. snappy/doc/_static/js/html5shiv.min.js +0 -4
  302. snappy/doc/verify_canon.html +0 -304
  303. snappy/drilling/__pycache__/__init__.cpython-312.pyc +0 -0
  304. snappy/drilling/__pycache__/constants.cpython-312.pyc +0 -0
  305. snappy/drilling/__pycache__/crush.cpython-312.pyc +0 -0
  306. snappy/drilling/__pycache__/cusps.cpython-312.pyc +0 -0
  307. snappy/drilling/__pycache__/debug.cpython-312.pyc +0 -0
  308. snappy/drilling/__pycache__/epsilons.cpython-312.pyc +0 -0
  309. snappy/drilling/__pycache__/exceptions.cpython-312.pyc +0 -0
  310. snappy/drilling/__pycache__/fixed_points.cpython-312.pyc +0 -0
  311. snappy/drilling/__pycache__/geodesic_info.cpython-312.pyc +0 -0
  312. snappy/drilling/__pycache__/geodesic_tube.cpython-312.pyc +0 -0
  313. snappy/drilling/__pycache__/geometric_structure.cpython-312.pyc +0 -0
  314. snappy/drilling/__pycache__/line.cpython-312.pyc +0 -0
  315. snappy/drilling/__pycache__/moves.cpython-312.pyc +0 -0
  316. snappy/drilling/__pycache__/peripheral_curves.cpython-312.pyc +0 -0
  317. snappy/drilling/__pycache__/perturb.cpython-312.pyc +0 -0
  318. snappy/drilling/__pycache__/quotient_space.cpython-312.pyc +0 -0
  319. snappy/drilling/__pycache__/spatial_dict.cpython-312.pyc +0 -0
  320. snappy/drilling/__pycache__/subdivide.cpython-312.pyc +0 -0
  321. snappy/drilling/__pycache__/tracing.cpython-312.pyc +0 -0
  322. snappy/drilling/geodesic_tube.py +0 -441
  323. snappy/drilling/geometric_structure.py +0 -366
  324. snappy/drilling/line.py +0 -122
  325. snappy/drilling/quotient_space.py +0 -94
  326. snappy/drilling/spatial_dict.py +0 -128
  327. snappy/exterior_to_link/__pycache__/__init__.cpython-312.pyc +0 -0
  328. snappy/exterior_to_link/__pycache__/barycentric_geometry.cpython-312.pyc +0 -0
  329. snappy/exterior_to_link/__pycache__/exceptions.cpython-312.pyc +0 -0
  330. snappy/exterior_to_link/__pycache__/hyp_utils.cpython-312.pyc +0 -0
  331. snappy/exterior_to_link/__pycache__/link_projection.cpython-312.pyc +0 -0
  332. snappy/exterior_to_link/__pycache__/main.cpython-312.pyc +0 -0
  333. snappy/exterior_to_link/__pycache__/mcomplex_with_expansion.cpython-312.pyc +0 -0
  334. snappy/exterior_to_link/__pycache__/mcomplex_with_link.cpython-312.pyc +0 -0
  335. snappy/exterior_to_link/__pycache__/mcomplex_with_memory.cpython-312.pyc +0 -0
  336. snappy/exterior_to_link/__pycache__/pl_utils.cpython-312.pyc +0 -0
  337. snappy/exterior_to_link/__pycache__/put_in_S3.cpython-312.pyc +0 -0
  338. snappy/exterior_to_link/__pycache__/rational_linear_algebra.cpython-312.pyc +0 -0
  339. snappy/exterior_to_link/__pycache__/simplify_to_base_tri.cpython-312.pyc +0 -0
  340. snappy/exterior_to_link/__pycache__/stored_moves.cpython-312.pyc +0 -0
  341. snappy/hyperboloid/__pycache__/__init__.cpython-312.pyc +0 -0
  342. snappy/manifolds/__pycache__/__init__.cpython-312.pyc +0 -0
  343. snappy/ptolemy/__pycache__/__init__.cpython-312.pyc +0 -0
  344. snappy/ptolemy/__pycache__/component.cpython-312.pyc +0 -0
  345. snappy/ptolemy/__pycache__/coordinates.cpython-312.pyc +0 -0
  346. snappy/ptolemy/__pycache__/fieldExtensions.cpython-312.pyc +0 -0
  347. snappy/ptolemy/__pycache__/findLoops.cpython-312.pyc +0 -0
  348. snappy/ptolemy/__pycache__/homology.cpython-312.pyc +0 -0
  349. snappy/ptolemy/__pycache__/manifoldMethods.cpython-312.pyc +0 -0
  350. snappy/ptolemy/__pycache__/matrix.cpython-312.pyc +0 -0
  351. snappy/ptolemy/__pycache__/numericalSolutionsToGroebnerBasis.cpython-312.pyc +0 -0
  352. snappy/ptolemy/__pycache__/polynomial.cpython-312.pyc +0 -0
  353. snappy/ptolemy/__pycache__/processComponents.cpython-312.pyc +0 -0
  354. snappy/ptolemy/__pycache__/processFileBase.cpython-312.pyc +0 -0
  355. snappy/ptolemy/__pycache__/processFileDispatch.cpython-312.pyc +0 -0
  356. snappy/ptolemy/__pycache__/processMagmaFile.cpython-312.pyc +0 -0
  357. snappy/ptolemy/__pycache__/processRurFile.cpython-312.pyc +0 -0
  358. snappy/ptolemy/__pycache__/ptolemyGeneralizedObstructionClass.cpython-312.pyc +0 -0
  359. snappy/ptolemy/__pycache__/ptolemyObstructionClass.cpython-312.pyc +0 -0
  360. snappy/ptolemy/__pycache__/ptolemyVariety.cpython-312.pyc +0 -0
  361. snappy/ptolemy/__pycache__/ptolemyVarietyPrimeIdealGroebnerBasis.cpython-312.pyc +0 -0
  362. snappy/ptolemy/__pycache__/rur.cpython-312.pyc +0 -0
  363. snappy/ptolemy/__pycache__/solutionsToPrimeIdealGroebnerBasis.cpython-312.pyc +0 -0
  364. snappy/ptolemy/__pycache__/utilities.cpython-312.pyc +0 -0
  365. snappy/raytracing/__pycache__/__init__.cpython-312.pyc +0 -0
  366. snappy/raytracing/__pycache__/finite_raytracing_data.cpython-312.pyc +0 -0
  367. snappy/raytracing/__pycache__/gui_utilities.cpython-312.pyc +0 -0
  368. snappy/raytracing/__pycache__/hyperboloid_navigation.cpython-312.pyc +0 -0
  369. snappy/raytracing/__pycache__/hyperboloid_utilities.cpython-312.pyc +0 -0
  370. snappy/raytracing/__pycache__/ideal_raytracing_data.cpython-312.pyc +0 -0
  371. snappy/raytracing/__pycache__/inside_viewer.cpython-312.pyc +0 -0
  372. snappy/raytracing/__pycache__/raytracing_data.cpython-312.pyc +0 -0
  373. snappy/raytracing/__pycache__/raytracing_view.cpython-312.pyc +0 -0
  374. snappy/raytracing/__pycache__/upper_halfspace_utilities.cpython-312.pyc +0 -0
  375. snappy/raytracing/__pycache__/view_scale_controller.cpython-312.pyc +0 -0
  376. snappy/raytracing/zoom_slider/__pycache__/__init__.cpython-312.pyc +0 -0
  377. snappy/snap/__pycache__/__init__.cpython-312.pyc +0 -0
  378. snappy/snap/__pycache__/character_varieties.cpython-312.pyc +0 -0
  379. snappy/snap/__pycache__/fundamental_polyhedron.cpython-312.pyc +0 -0
  380. snappy/snap/__pycache__/interval_reps.cpython-312.pyc +0 -0
  381. snappy/snap/__pycache__/kernel_structures.cpython-312.pyc +0 -0
  382. snappy/snap/__pycache__/mcomplex_base.cpython-312.pyc +0 -0
  383. snappy/snap/__pycache__/nsagetools.cpython-312.pyc +0 -0
  384. snappy/snap/__pycache__/polished_reps.cpython-312.pyc +0 -0
  385. snappy/snap/__pycache__/shapes.cpython-312.pyc +0 -0
  386. snappy/snap/__pycache__/slice_obs_HKL.cpython-312.pyc +0 -0
  387. snappy/snap/__pycache__/utilities.cpython-312.pyc +0 -0
  388. snappy/snap/peripheral/__pycache__/__init__.cpython-312.pyc +0 -0
  389. snappy/snap/peripheral/__pycache__/dual_cellulation.cpython-312.pyc +0 -0
  390. snappy/snap/peripheral/__pycache__/link.cpython-312.pyc +0 -0
  391. snappy/snap/peripheral/__pycache__/peripheral.cpython-312.pyc +0 -0
  392. snappy/snap/peripheral/__pycache__/surface.cpython-312.pyc +0 -0
  393. snappy/snap/t3mlite/__pycache__/__init__.cpython-312.pyc +0 -0
  394. snappy/snap/t3mlite/__pycache__/arrow.cpython-312.pyc +0 -0
  395. snappy/snap/t3mlite/__pycache__/corner.cpython-312.pyc +0 -0
  396. snappy/snap/t3mlite/__pycache__/edge.cpython-312.pyc +0 -0
  397. snappy/snap/t3mlite/__pycache__/face.cpython-312.pyc +0 -0
  398. snappy/snap/t3mlite/__pycache__/files.cpython-312.pyc +0 -0
  399. snappy/snap/t3mlite/__pycache__/homology.cpython-312.pyc +0 -0
  400. snappy/snap/t3mlite/__pycache__/linalg.cpython-312.pyc +0 -0
  401. snappy/snap/t3mlite/__pycache__/mcomplex.cpython-312.pyc +0 -0
  402. snappy/snap/t3mlite/__pycache__/perm4.cpython-312.pyc +0 -0
  403. snappy/snap/t3mlite/__pycache__/simplex.cpython-312.pyc +0 -0
  404. snappy/snap/t3mlite/__pycache__/spun.cpython-312.pyc +0 -0
  405. snappy/snap/t3mlite/__pycache__/surface.cpython-312.pyc +0 -0
  406. snappy/snap/t3mlite/__pycache__/tetrahedron.cpython-312.pyc +0 -0
  407. snappy/snap/t3mlite/__pycache__/vertex.cpython-312.pyc +0 -0
  408. snappy/togl/__init__.py +0 -3
  409. snappy/togl/darwin-tk8.6/Togl2.1/LICENSE +0 -28
  410. snappy/togl/darwin-tk8.6/Togl2.1/libTogl2.1.dylib +0 -0
  411. snappy/togl/darwin-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
  412. snappy/togl/darwin-tk8.7/Togl2.1/LICENSE +0 -28
  413. snappy/togl/darwin-tk8.7/Togl2.1/libTogl2.1.dylib +0 -0
  414. snappy/togl/darwin-tk8.7/Togl2.1/pkgIndex.tcl +0 -5
  415. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
  416. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/libTogl2.1.so +0 -0
  417. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
  418. snappy/togl/win32VC-tk8.6/Togl2.1/LICENSE +0 -28
  419. snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.dll +0 -0
  420. snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.lib +0 -0
  421. snappy/togl/win32VC-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
  422. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
  423. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.dll +0 -0
  424. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.lib +0 -0
  425. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
  426. snappy/twister/__pycache__/__init__.cpython-312.pyc +0 -0
  427. snappy/twister/__pycache__/main.cpython-312.pyc +0 -0
  428. snappy/upper_halfspace/__pycache__/__init__.cpython-312.pyc +0 -0
  429. snappy/upper_halfspace/__pycache__/ideal_point.cpython-312.pyc +0 -0
  430. snappy/verify/__pycache__/__init__.cpython-312.pyc +0 -0
  431. snappy/verify/__pycache__/cuspCrossSection.cpython-312.pyc +0 -0
  432. snappy/verify/__pycache__/cuspTranslations.cpython-312.pyc +0 -0
  433. snappy/verify/__pycache__/cusp_areas.cpython-312.pyc +0 -0
  434. snappy/verify/__pycache__/cusp_shapes.cpython-312.pyc +0 -0
  435. snappy/verify/__pycache__/exceptions.cpython-312.pyc +0 -0
  436. snappy/verify/__pycache__/interval_newton_shapes_engine.cpython-312.pyc +0 -0
  437. snappy/verify/__pycache__/interval_tree.cpython-312.pyc +0 -0
  438. snappy/verify/__pycache__/krawczyk_shapes_engine.cpython-312.pyc +0 -0
  439. snappy/verify/__pycache__/realAlgebra.cpython-312.pyc +0 -0
  440. snappy/verify/__pycache__/shapes.cpython-312.pyc +0 -0
  441. snappy/verify/__pycache__/short_slopes.cpython-312.pyc +0 -0
  442. snappy/verify/__pycache__/squareExtensions.cpython-312.pyc +0 -0
  443. snappy/verify/__pycache__/verifyCanonical.cpython-312.pyc +0 -0
  444. snappy/verify/__pycache__/verifyHyperbolicity.cpython-312.pyc +0 -0
  445. snappy/verify/__pycache__/volume.cpython-312.pyc +0 -0
  446. snappy/verify/complex_volume/__pycache__/__init__.cpython-312.pyc +0 -0
  447. snappy/verify/complex_volume/__pycache__/adjust_torsion.cpython-312.pyc +0 -0
  448. snappy/verify/complex_volume/__pycache__/closed.cpython-312.pyc +0 -0
  449. snappy/verify/complex_volume/__pycache__/compute_ptolemys.cpython-312.pyc +0 -0
  450. snappy/verify/complex_volume/__pycache__/cusped.cpython-312.pyc +0 -0
  451. snappy/verify/complex_volume/__pycache__/extended_bloch.cpython-312.pyc +0 -0
  452. snappy/verify/cuspCrossSection.py +0 -1422
  453. snappy/verify/maximal_cusp_area_matrix/__pycache__/__init__.cpython-312.pyc +0 -0
  454. snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_tiling_engine.cpython-312.pyc +0 -0
  455. snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_translate_engine.cpython-312.pyc +0 -0
  456. snappy/verify/upper_halfspace/__pycache__/__init__.cpython-312.pyc +0 -0
  457. snappy/verify/upper_halfspace/__pycache__/extended_matrix.cpython-312.pyc +0 -0
  458. snappy/verify/upper_halfspace/__pycache__/finite_point.cpython-312.pyc +0 -0
  459. snappy/verify/upper_halfspace/__pycache__/ideal_point.cpython-312.pyc +0 -0
  460. snappy-3.1.1.dist-info/RECORD +0 -585
  461. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/entry_points.txt +0 -0
@@ -1,23 +1,24 @@
1
+
2
+
1
3
  <!DOCTYPE html>
2
- <html class="writer-html5" lang="en" >
4
+ <html class="writer-html5" lang="en" data-content_root="./">
3
5
  <head>
4
- <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
6
+ <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
5
7
 
6
8
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
- <title>Triangulation &mdash; SnapPy 3.1.1 documentation</title>
8
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
9
- <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
10
- <link rel="stylesheet" href="_static/snappy_sphinx_rtd_theme.css" type="text/css" />
11
- <link rel="shortcut icon" href="_static/SnapPy.ico"/>
12
- <!--[if lt IE 9]>
13
- <script src="_static/js/html5shiv.min.js"></script>
14
- <![endif]-->
9
+ <title>Triangulation &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
+
15
14
 
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=796a81b5"></script>
19
- <script src="_static/doctools.js?v=888ff710"></script>
20
- <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
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 async="async" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
21
22
  <script src="_static/js/theme.js"></script>
22
23
  <link rel="index" title="Index" href="genindex.html" />
23
24
  <link rel="search" title="Search" href="search.html" />
@@ -37,9 +38,6 @@
37
38
  SnapPy
38
39
  <img src="_static/SnapPy-horizontal-128.png" class="logo" alt="Logo"/>
39
40
  </a>
40
- <div class="version">
41
- 3.1.1
42
- </div>
43
41
  <div role="search">
44
42
  <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
45
43
  <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
@@ -83,7 +81,6 @@
83
81
  <li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.num_cusps"><code class="docutils literal notranslate"><span class="pre">Triangulation.num_cusps()</span></code></a></li>
84
82
  <li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.num_tetrahedra"><code class="docutils literal notranslate"><span class="pre">Triangulation.num_tetrahedra()</span></code></a></li>
85
83
  <li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.orientation_cover"><code class="docutils literal notranslate"><span class="pre">Triangulation.orientation_cover()</span></code></a></li>
86
- <li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.pickle"><code class="docutils literal notranslate"><span class="pre">Triangulation.pickle()</span></code></a></li>
87
84
  <li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.plink"><code class="docutils literal notranslate"><span class="pre">Triangulation.plink()</span></code></a></li>
88
85
  <li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.ptolemy_generalized_obstruction_classes"><code class="docutils literal notranslate"><span class="pre">Triangulation.ptolemy_generalized_obstruction_classes()</span></code></a></li>
89
86
  <li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.ptolemy_obstruction_classes"><code class="docutils literal notranslate"><span class="pre">Triangulation.ptolemy_obstruction_classes()</span></code></a></li>
@@ -95,6 +92,7 @@
95
92
  <li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.set_peripheral_curves"><code class="docutils literal notranslate"><span class="pre">Triangulation.set_peripheral_curves()</span></code></a></li>
96
93
  <li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.simplify"><code class="docutils literal notranslate"><span class="pre">Triangulation.simplify()</span></code></a></li>
97
94
  <li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.slice_obstruction_HKL"><code class="docutils literal notranslate"><span class="pre">Triangulation.slice_obstruction_HKL()</span></code></a></li>
95
+ <li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.symplectic_basis"><code class="docutils literal notranslate"><span class="pre">Triangulation.symplectic_basis()</span></code></a></li>
98
96
  <li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.triangulation_isosig"><code class="docutils literal notranslate"><span class="pre">Triangulation.triangulation_isosig()</span></code></a></li>
99
97
  <li class="toctree-l4"><a class="reference internal" href="#snappy.Triangulation.with_hyperbolic_structure"><code class="docutils literal notranslate"><span class="pre">Triangulation.with_hyperbolic_structure()</span></code></a></li>
100
98
  </ul>
@@ -143,7 +141,7 @@
143
141
 
144
142
  <section id="triangulation">
145
143
  <h1>Triangulation<a class="headerlink" href="#triangulation" title="Link to this heading"></a></h1>
146
- <p>The main snappy class, namely Manifold, is derived from more
144
+ <p>The main snappy class, namely Manifold, is derived from the more
147
145
  basic class below.</p>
148
146
  <dl class="py class">
149
147
  <dt class="sig sig-object py" id="snappy.Triangulation">
@@ -178,16 +176,16 @@ specify a link complement.</p></li>
178
176
  information on Dehn fillings added.</p>
179
177
  <ul>
180
178
  <li><p>SnapPea cusped census manifolds: e.g. ‘m123’, ‘s123’, ‘v123’.</p></li>
181
- <li><dl class="simple">
182
- <dt>Link complements:</dt><dd><ul class="simple">
179
+ <li><p>Link complements:</p>
180
+ <blockquote>
181
+ <div><ul class="simple">
183
182
  <li><p>Rolfsen’s table: e.g. ‘4_1’, ‘04_1’, ‘5^2_6’, ‘6_4^7’, ‘L20935’, ‘l104001’.</p></li>
184
183
  <li><p>Knots and links up to 14 crossings from tabulations by Hoste
185
184
  and Thistlethwaite: e.g. ‘K12a456’ or ‘L13n579’.</p></li>
186
185
  <li><p>Hoste-Thistlethwaite Knotscape table: e.g. ‘11a17’ or ‘12n345’</p></li>
187
186
  <li><p>Dowker-Thistlethwaite code: e.g. ‘DT:[(6,8,2,4)]’, ‘DT:dadbcda’</p></li>
188
187
  </ul>
189
- </dd>
190
- </dl>
188
+ </div></blockquote>
191
189
  </li>
192
190
  <li><p>Once-punctured torus bundles: e.g. ‘b++LLR’, ‘b+-llR’, ‘bo-RRL’, ‘bn+LRLR’</p></li>
193
191
  <li><p>Fibered manifold associated to a braid: ‘Braid:[1,2,-3,4]’</p>
@@ -242,7 +240,8 @@ only, which is set only when the manifold was created.</p>
242
240
  <span class="n">a</span><span class="o">^</span><span class="mi">2</span><span class="o">*</span><span class="n">b</span> <span class="o">+</span> <span class="n">a</span><span class="o">*</span><span class="n">b</span><span class="o">^</span><span class="mi">2</span> <span class="o">+</span> <span class="n">a</span><span class="o">*</span><span class="n">b</span> <span class="o">+</span> <span class="n">a</span> <span class="o">+</span> <span class="n">b</span>
243
241
  </pre></div>
244
242
  </div>
245
- <p>Any provided keyword arguments are passed to fundamental_group and
243
+ <p>Any provided keyword arguments are passed to
244
+ <a class="reference internal" href="#snappy.Triangulation.fundamental_group" title="snappy.Triangulation.fundamental_group"><code class="xref py py-meth docutils literal notranslate"><span class="pre">fundamental_group</span></code></a> and
246
245
  so affect the group presentation used in the computation.</p>
247
246
  </dd></dl>
248
247
 
@@ -258,14 +257,13 @@ so affect the group presentation used in the computation.</p>
258
257
 
259
258
  <dl class="py method">
260
259
  <dt class="sig sig-object py" id="snappy.Triangulation.cover">
261
- <span class="sig-name descname"><span class="pre">cover</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">permutation_rep</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.cover" title="Link to this definition"></a></dt>
262
- <dd><p>Returns a Triangulation representing the finite cover
263
- specified by a transitive permutation representation. The
264
- representation is specified by a list of permutations, one for
265
- each generator of the simplified presentation of the
266
- fundamental group. Each permutation is specified as a list P
267
- such that set(P) == set(range(d)) where d is the degree of the
268
- cover.</p>
260
+ <span class="sig-name descname"><span class="pre">cover</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">permutation_rep</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#snappy.Triangulation" title="snappy.Triangulation"><span class="pre">snappy.Triangulation</span></a></span></span><a class="headerlink" href="#snappy.Triangulation.cover" title="Link to this definition"></a></dt>
261
+ <dd><p>Returns a <a class="reference internal" href="#snappy.Triangulation" title="snappy.Triangulation"><code class="xref py py-class docutils literal notranslate"><span class="pre">Triangulation</span></code></a> representing the finite cover specified
262
+ by a transitive permutation representation. The representation is
263
+ specified by a list of permutations, one for each generator of the
264
+ simplified presentation of the fundamental group. Each permutation is
265
+ specified as a list <code class="docutils literal notranslate"><span class="pre">P</span></code> such that <code class="docutils literal notranslate"><span class="pre">set(P)</span> <span class="pre">==</span> <span class="pre">set(range(d))</span></code> where
266
+ <code class="docutils literal notranslate"><span class="pre">d</span></code> is the degree of the cover.</p>
269
267
  <div class="doctest 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">Triangulation</span><span class="p">(</span><span class="s1">&#39;m004&#39;</span><span class="p">)</span>
270
268
  <span class="gp">&gt;&gt;&gt; </span><span class="n">N0</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">cover</span><span class="p">([[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">2</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">3</span><span class="p">]])</span>
271
269
  <span class="gp">&gt;&gt;&gt; </span><span class="n">N0</span><span class="o">.</span><span class="n">homology</span><span class="p">()</span>
@@ -279,10 +277,10 @@ cover.</p>
279
277
  </pre></div>
280
278
  </div>
281
279
  <p>Within Sage the permutations can also be of type
282
- PermutationGroupElement, in which case they act on the set
283
- range(1, d + 1). Or, you can specify a GAP or Magma subgroup
284
- of the fundamental group. For examples, see the docstring for
285
- Manifold.cover</p>
280
+ <code class="docutils literal notranslate"><span class="pre">PermutationGroupElement</span></code>, in which case they act on the set
281
+ <code class="docutils literal notranslate"><span class="pre">range(1,</span> <span class="pre">d</span> <span class="pre">+</span> <span class="pre">1)</span></code>. Or, you can specify a GAP or Magma subgroup
282
+ of the fundamental group. For more examples, see the docstring for
283
+ <a class="reference internal" href="manifold.html#snappy.Manifold.cover" title="snappy.Manifold.cover"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Manifold.cover()</span></code></a>.</p>
286
284
  </dd></dl>
287
285
 
288
286
  <dl class="py method">
@@ -295,9 +293,8 @@ return 0. The dictionary keys are ‘base’, ‘type’ and ‘degree’.</p>
295
293
 
296
294
  <dl class="py method">
297
295
  <dt class="sig sig-object py" id="snappy.Triangulation.covers">
298
- <span class="sig-name descname"><span class="pre">covers</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">degree</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">method</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cover_type</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'all'</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.covers" title="Link to this definition"></a></dt>
299
- <dd><p>M.covers(degree, method=None, cover_type=’all’)</p>
300
- <p>Returns a list of Triangulations corresponding to all of the
296
+ <span class="sig-name descname"><span class="pre">covers</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">degree</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">method</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cover_type</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'all'</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#snappy.Triangulation" title="snappy.Triangulation"><span class="pre">snappy.Triangulation</span></a><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#snappy.Triangulation.covers" title="Link to this definition"></a></dt>
297
+ <dd><p>Returns a list of Triangulations corresponding to all of the
301
298
  finite covers of the given degree. The default method is
302
299
  ‘low_index’ for general covers and ‘snappea’ for cyclic
303
300
  covers. The former uses Sim’s algorithm while the latter
@@ -359,7 +356,7 @@ cusp. Usage:</p>
359
356
 
360
357
  <dl class="py method">
361
358
  <dt class="sig sig-object py" id="snappy.Triangulation.dehn_fill">
362
- <span class="sig-name descname"><span class="pre">dehn_fill</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filling_data</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">which_cusp</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.dehn_fill" title="Link to this definition"></a></dt>
359
+ <span class="sig-name descname"><span class="pre">dehn_fill</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filling_data</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">which_cusp</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#snappy.Triangulation.dehn_fill" title="Link to this definition"></a></dt>
363
360
  <dd><p>Set the Dehn filling coefficients of the cusps. This can be
364
361
  specified in the following ways, where the cusps are numbered
365
362
  by 0,1,…,(num_cusps - 1).</p>
@@ -395,7 +392,7 @@ by 0,1,…,(num_cusps - 1).</p>
395
392
  </div>
396
393
  </li>
397
394
  </ul>
398
- <p>Does not return a new Triangulation.</p>
395
+ <p>Does not return a new <a class="reference internal" href="#snappy.Triangulation" title="snappy.Triangulation"><code class="xref py py-class docutils literal notranslate"><span class="pre">Triangulation</span></code></a>.</p>
399
396
  </dd></dl>
400
397
 
401
398
  <dl class="py method">
@@ -413,7 +410,7 @@ number of edges of that valence.</p>
413
410
 
414
411
  <dl class="py method">
415
412
  <dt class="sig sig-object py" id="snappy.Triangulation.exterior_to_link">
416
- <span class="sig-name descname"><span class="pre">exterior_to_link</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">verbose</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">check_input</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">check_answer</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">careful_perturbation</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">simplify_link</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pachner_search_tries</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">10</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">seed</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.exterior_to_link" title="Link to this definition"></a></dt>
413
+ <span class="sig-name descname"><span class="pre">exterior_to_link</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">verbose</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">check_input</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">check_answer</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">careful_perturbation</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">simplify_link</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pachner_search_tries</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">10</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">seed</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="spherogram.html#spherogram.Link" title="spherogram.Link"><span class="pre">Link</span></a></span></span><a class="headerlink" href="#snappy.Triangulation.exterior_to_link" title="Link to this definition"></a></dt>
417
414
  <dd><p>For a triangulation of the exterior of a link in the 3-sphere,
418
415
  return a planar diagram for the link. The peripheral curves whose
419
416
  Dehn filling is the 3-sphere are <strong>part of the input</strong>, specified
@@ -477,7 +474,7 @@ each component of the link may not be preserved.</p>
477
474
 
478
475
  <dl class="py method">
479
476
  <dt class="sig sig-object py" id="snappy.Triangulation.filled_triangulation">
480
- <span class="sig-name descname"><span class="pre">filled_triangulation</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cusps_to_fill</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'all'</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.filled_triangulation" title="Link to this definition"></a></dt>
477
+ <span class="sig-name descname"><span class="pre">filled_triangulation</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cusps_to_fill</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'all'</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#snappy.Triangulation" title="snappy.Triangulation"><span class="pre">snappy.Triangulation</span></a></span></span><a class="headerlink" href="#snappy.Triangulation.filled_triangulation" title="Link to this definition"></a></dt>
481
478
  <dd><p>Return a new manifold where the specified cusps have been
482
479
  permanently filled in. Examples:</p>
483
480
  <p>Filling all the cusps:</p>
@@ -497,8 +494,8 @@ permanently filled in. Examples:</p>
497
494
 
498
495
  <dl class="py method">
499
496
  <dt class="sig sig-object py" id="snappy.Triangulation.fundamental_group">
500
- <span class="sig-name descname"><span class="pre">fundamental_group</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">simplify_presentation</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">fillings_may_affect_generators</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">minimize_number_of_generators</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">try_hard_to_shorten_relators</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.fundamental_group" title="Link to this definition"></a></dt>
501
- <dd><p>Returns a FundamentalGroup object representing the fundamental
497
+ <span class="sig-name descname"><span class="pre">fundamental_group</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">simplify_presentation</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">fillings_may_affect_generators</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">minimize_number_of_generators</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">try_hard_to_shorten_relators</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">FundamentalGroup</span></span></span><a class="headerlink" href="#snappy.Triangulation.fundamental_group" title="Link to this definition"></a></dt>
498
+ <dd><p>Returns a <code class="xref py py-class docutils literal notranslate"><span class="pre">FundamentalGroup</span></code> object representing the fundamental
502
499
  group of the manifold. If integer Dehn surgery parameters
503
500
  have been set, then the corresponding peripheral elements are
504
501
  killed.</p>
@@ -574,8 +571,7 @@ function returns a list of tuples of the form:</p>
574
571
  <dl class="py method">
575
572
  <dt class="sig sig-object py" id="snappy.Triangulation.gluing_equations_pgl">
576
573
  <span class="sig-name descname"><span class="pre">gluing_equations_pgl</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">N</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">2</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">equation_type</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'all'</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.gluing_equations_pgl" title="Link to this definition"></a></dt>
577
- <dd><p>M.gluing_equations_pgl(N = 2, equation_type=’all’)</p>
578
- <p>Returns a NeumannZagierTypeEquations object that contains a matrix
574
+ <dd><p>Returns a NeumannZagierTypeEquations object that contains a matrix
579
575
  encoding the gluing equations for boundary-parabolic PGL(N,C)
580
576
  representations together with explanations of the meaning
581
577
  of the rows and the columns of the matrix.</p>
@@ -584,7 +580,7 @@ as described in
584
580
  Stavros Garoufalidis, Matthias Goerner, Christian K. Zickert:
585
581
  “Gluing Equations for PGL(n,C)-Representations of 3-Manifolds”
586
582
  (<a class="reference external" href="http://arxiv.org/abs/1207.6711">http://arxiv.org/abs/1207.6711</a>).</p>
587
- <p>The result of the traditional gluing_equations() can be obtained from
583
+ <p>The result of the <a class="reference internal" href="#snappy.Triangulation.gluing_equations" title="snappy.Triangulation.gluing_equations"><code class="xref py py-meth docutils literal notranslate"><span class="pre">gluing_equations()</span></code></a> can be obtained from
588
584
  the general method by:</p>
589
585
  <div class="doctest 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">Triangulation</span><span class="p">(</span><span class="s1">&#39;m004&#39;</span><span class="p">)</span>
590
586
  <span class="gp">&gt;&gt;&gt; </span><span class="n">M</span><span class="o">.</span><span class="n">gluing_equations_pgl</span><span class="p">()</span><span class="o">.</span><span class="n">matrix</span>
@@ -609,17 +605,17 @@ the columns and rows:</p>
609
605
  </div>
610
606
  <p>The first row of the matrix means that the edge equation for
611
607
  edge 0 is</p>
612
- <blockquote>
613
- <div><p>z_0000_0 ^ 2 * zp_0000_0 * z_0000_1 * zpp_0000_1 ^ 2 = 1.</p>
614
- </div></blockquote>
608
+ <div class="math notranslate nohighlight">
609
+ \[{z_{0000,0}}^2 * z'_{0000,0} * z_{0000,1} * {z''_{0000,1}}^2 = 1.\]</div>
615
610
  <p>Similarly, the next row encodes the edge equation for the other edge
616
611
  and the next two rows encode peripheral equations.</p>
617
- <p>Following the SnapPy convention, a z denotes the cross ratio z at the
618
- edge (0,1), a zp the cross ratio z’ at the edge (0,2) and a zpp the cross
619
- ratio z” at the edge (1,2). The entire symbol z_xxxx_y then
612
+ <p>Following the SnapPy convention, a <code class="docutils literal notranslate"><span class="pre">z</span></code> denotes the cross ratio
613
+ <span class="math notranslate nohighlight">\(z\)</span> at the edge (0,1), a <code class="docutils literal notranslate"><span class="pre">zp</span></code> the cross ratio <span class="math notranslate nohighlight">\(z'\)</span> at
614
+ the edge (0,2) and a <code class="docutils literal notranslate"><span class="pre">zpp</span></code> the cross
615
+ ratio <span class="math notranslate nohighlight">\(z''\)</span> at the edge (1,2). The entire symbol <code class="docutils literal notranslate"><span class="pre">z_xxxx_y</span></code> then
620
616
  denotes the cross ratio belonging to the subsimplex at integral
621
- point xxxx (always 0000 for N = 2) of the simplex y. Note: the
622
- SnapPy convention is different from the paper
617
+ point <code class="docutils literal notranslate"><span class="pre">xxxx</span></code> (always <code class="docutils literal notranslate"><span class="pre">0000</span></code> for <code class="docutils literal notranslate"><span class="pre">N</span> <span class="pre">=</span> <span class="pre">2</span></code>) of the simplex <code class="docutils literal notranslate"><span class="pre">y</span></code>.</p>
618
+ <p>Note: the SnapPy convention is different from the paper
623
619
  mentioned above, e.g., compare
624
620
  kernel_code/edge_classes.c with Figure 3. We follow the SnapPy
625
621
  convention here so that all computations done in SnapPy are
@@ -632,20 +628,20 @@ consistent.</p>
632
628
  </pre></div>
633
629
  </div>
634
630
  <p>A subset of all gluing equations can be obtained by setting the
635
- equation_type:</p>
631
+ <code class="docutils literal notranslate"><span class="pre">equation_type</span></code>:</p>
636
632
  <ul class="simple">
637
- <li><p>all gluing equations: all’</p></li>
638
- <li><p>non-peripheral equations: non_peripheral’</p>
633
+ <li><p>all gluing equations: <code class="docutils literal notranslate"><span class="pre">all</span></code></p></li>
634
+ <li><p>non-peripheral equations: <code class="docutils literal notranslate"><span class="pre">non_peripheral</span></code></p>
639
635
  <ul>
640
- <li><p>edge gluing equations: edge’</p></li>
641
- <li><p>face gluing equations: face’</p></li>
642
- <li><p>internal gluing equations: internal’</p></li>
636
+ <li><p>edge gluing equations: <code class="docutils literal notranslate"><span class="pre">edge</span></code></p></li>
637
+ <li><p>face gluing equations: <code class="docutils literal notranslate"><span class="pre">face</span></code></p></li>
638
+ <li><p>internal gluing equations: <code class="docutils literal notranslate"><span class="pre">internal</span></code></p></li>
643
639
  </ul>
644
640
  </li>
645
- <li><p>cusp gluing equations: peripheral’</p>
641
+ <li><p>cusp gluing equations: <code class="docutils literal notranslate"><span class="pre">peripheral</span></code></p>
646
642
  <ul>
647
- <li><p>cusp gluing equations for meridians: meridian’</p></li>
648
- <li><p>cusp gluing equations for longitudes: longitude’</p></li>
643
+ <li><p>cusp gluing equations for meridians: <code class="docutils literal notranslate"><span class="pre">meridian</span></code></p></li>
644
+ <li><p>cusp gluing equations for longitudes: <code class="docutils literal notranslate"><span class="pre">longitude</span></code></p></li>
649
645
  </ul>
650
646
  </li>
651
647
  </ul>
@@ -653,8 +649,8 @@ equation_type:</p>
653
649
 
654
650
  <dl class="py method">
655
651
  <dt class="sig sig-object py" id="snappy.Triangulation.has_finite_vertices">
656
- <span class="sig-name descname"><span class="pre">has_finite_vertices</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.has_finite_vertices" title="Link to this definition"></a></dt>
657
- <dd><p>Returns True if and only if the triangulation has finite (non-ideal)
652
+ <span class="sig-name descname"><span class="pre">has_finite_vertices</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="headerlink" href="#snappy.Triangulation.has_finite_vertices" title="Link to this definition"></a></dt>
653
+ <dd><p>Returns <code class="docutils literal notranslate"><span class="pre">True</span></code> if and only if the triangulation has finite (non-ideal)
658
654
  vertices.</p>
659
655
  <div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">T</span> <span class="o">=</span> <span class="n">Triangulation</span><span class="p">(</span><span class="s2">&quot;m004&quot;</span><span class="p">)</span>
660
656
  <span class="gp">&gt;&gt;&gt; </span><span class="n">T</span><span class="o">.</span><span class="n">has_finite_vertices</span><span class="p">()</span>
@@ -711,8 +707,8 @@ the manifold, an exception is raised:</p>
711
707
 
712
708
  <dl class="py method">
713
709
  <dt class="sig sig-object py" id="snappy.Triangulation.homology">
714
- <span class="sig-name descname"><span class="pre">homology</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.homology" title="Link to this definition"></a></dt>
715
- <dd><p>Returns an AbelianGroup representing the first integral
710
+ <span class="sig-name descname"><span class="pre">homology</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="additional_classes.html#snappy.AbelianGroup" title="SnapPy.AbelianGroup"><span class="pre">AbelianGroup</span></a></span></span><a class="headerlink" href="#snappy.Triangulation.homology" title="Link to this definition"></a></dt>
711
+ <dd><p>Returns an <a class="reference internal" href="additional_classes.html#snappy.AbelianGroup" title="snappy.AbelianGroup"><code class="xref py py-class docutils literal notranslate"><span class="pre">AbelianGroup</span></code></a> representing the first integral
716
712
  homology group of the underlying (Dehn filled) manifold.</p>
717
713
  <div class="doctest 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">Triangulation</span><span class="p">(</span><span class="s1">&#39;m003&#39;</span><span class="p">)</span>
718
714
  <span class="gp">&gt;&gt;&gt; </span><span class="n">M</span><span class="o">.</span><span class="n">homology</span><span class="p">()</span>
@@ -723,7 +719,7 @@ homology group of the underlying (Dehn filled) manifold.</p>
723
719
 
724
720
  <dl class="py method">
725
721
  <dt class="sig sig-object py" id="snappy.Triangulation.is_orientable">
726
- <span class="sig-name descname"><span class="pre">is_orientable</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.is_orientable" title="Link to this definition"></a></dt>
722
+ <span class="sig-name descname"><span class="pre">is_orientable</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="headerlink" href="#snappy.Triangulation.is_orientable" title="Link to this definition"></a></dt>
727
723
  <dd><p>Return whether the underlying 3-manifold is orientable.</p>
728
724
  <div class="doctest 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">Triangulation</span><span class="p">(</span><span class="s1">&#39;x124&#39;</span><span class="p">)</span>
729
725
  <span class="gp">&gt;&gt;&gt; </span><span class="n">M</span><span class="o">.</span><span class="n">is_orientable</span><span class="p">()</span>
@@ -734,7 +730,7 @@ homology group of the underlying (Dehn filled) manifold.</p>
734
730
 
735
731
  <dl class="py method">
736
732
  <dt class="sig sig-object py" id="snappy.Triangulation.isomorphisms_to">
737
- <span class="sig-name descname"><span class="pre">isomorphisms_to</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">Triangulation</span> <span class="pre">other</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.isomorphisms_to" title="Link to this definition"></a></dt>
733
+ <span class="sig-name descname"><span class="pre">isomorphisms_to</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">other</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#snappy.Triangulation" title="snappy.Triangulation"><span class="pre">Triangulation</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">TriangulationHP</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Isometry</span><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#snappy.Triangulation.isomorphisms_to" title="Link to this definition"></a></dt>
738
734
  <dd><p>Returns a complete list of combinatorial isomorphisms between
739
735
  the two triangulations:</p>
740
736
  <div class="doctest 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="s1">&#39;5^2_1&#39;</span><span class="p">)</span>
@@ -762,12 +758,12 @@ meridian of cusp 1.</p>
762
758
  current session then it returns the number of components
763
759
  and crossing of the link. To view and interact with the
764
760
  link see <a class="reference internal" href="spherogram.html#spherogram.Link.view" title="spherogram.Link.view"><code class="xref py py-meth docutils literal notranslate"><span class="pre">spherogram.Link.view()</span></code></a>
765
- and <a class="reference internal" href="manifold.html#snappy.Manifold.plink" title="snappy.Manifold.plink"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Manifold.plink()</span></code></a>.</p>
761
+ and <a class="reference internal" href="#snappy.Triangulation.plink" title="snappy.Triangulation.plink"><code class="xref py py-meth docutils literal notranslate"><span class="pre">plink</span></code></a>.</p>
766
762
  </dd></dl>
767
763
 
768
764
  <dl class="py method">
769
765
  <dt class="sig sig-object py" id="snappy.Triangulation.name">
770
- <span class="sig-name descname"><span class="pre">name</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.name" title="Link to this definition"></a></dt>
766
+ <span class="sig-name descname"><span class="pre">name</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="headerlink" href="#snappy.Triangulation.name" title="Link to this definition"></a></dt>
771
767
  <dd><p>Return the name of the triangulation.</p>
772
768
  <div class="doctest 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">Triangulation</span><span class="p">(</span><span class="s1">&#39;4_1&#39;</span><span class="p">)</span>
773
769
  <span class="gp">&gt;&gt;&gt; </span><span class="n">M</span><span class="o">.</span><span class="n">name</span><span class="p">()</span>
@@ -791,8 +787,9 @@ semifiber) must be listed here.</p>
791
787
  </div>
792
788
  <p>If the <code class="docutils literal notranslate"><span class="pre">subset</span></code> flag is set to <code class="docutils literal notranslate"><span class="pre">'kabaya'</span></code>, then it only
793
789
  returns boundary slopes associated to vertex surfaces with a quad
794
- in every tetrahedron; by Theorem 1.1. of <a class="reference external" href="http://arxiv.org/abs/1102.4588">[DG]</a> these are all strict boundary
795
- slopes.</p>
790
+ in every tetrahedron; by Theorem 1.1. of
791
+ <a class="reference external" href="http://arxiv.org/abs/1102.4588">Dunfield and Garoufalidis ‘12</a>
792
+ these are all strict boundary slopes.</p>
796
793
  <div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">N</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">&#39;m113&#39;</span><span class="p">)</span>
797
794
  <span class="gp">&gt;&gt;&gt; </span><span class="n">N</span><span class="o">.</span><span class="n">normal_boundary_slopes</span><span class="p">()</span>
798
795
  <span class="go">[(1, 1), (1, 2), (2, -1), (2, 3), (8, 11)]</span>
@@ -825,7 +822,7 @@ giving isolated rays in the space of embedded normal surfaces.</p>
825
822
 
826
823
  <dl class="py method">
827
824
  <dt class="sig sig-object py" id="snappy.Triangulation.num_cusps">
828
- <span class="sig-name descname"><span class="pre">num_cusps</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cusp_type</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'all'</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.num_cusps" title="Link to this definition"></a></dt>
825
+ <span class="sig-name descname"><span class="pre">num_cusps</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cusp_type</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'all'</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">int</span></span></span><a class="headerlink" href="#snappy.Triangulation.num_cusps" title="Link to this definition"></a></dt>
829
826
  <dd><p>Return the total number of cusps. By giving the optional argument
830
827
  ‘orientable’ or ‘nonorientable’ it will only count cusps of that type.</p>
831
828
  <div class="doctest 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">Triangulation</span><span class="p">(</span><span class="s1">&#39;m125&#39;</span><span class="p">)</span>
@@ -837,7 +834,7 @@ giving isolated rays in the space of embedded normal surfaces.</p>
837
834
 
838
835
  <dl class="py method">
839
836
  <dt class="sig sig-object py" id="snappy.Triangulation.num_tetrahedra">
840
- <span class="sig-name descname"><span class="pre">num_tetrahedra</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.num_tetrahedra" title="Link to this definition"></a></dt>
837
+ <span class="sig-name descname"><span class="pre">num_tetrahedra</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">int</span></span></span><a class="headerlink" href="#snappy.Triangulation.num_tetrahedra" title="Link to this definition"></a></dt>
841
838
  <dd><p>Return the number of tetrahedra in the triangulation.</p>
842
839
  <div class="doctest 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">Triangulation</span><span class="p">(</span><span class="s1">&#39;m004&#39;</span><span class="p">)</span>
843
840
  <span class="gp">&gt;&gt;&gt; </span><span class="n">M</span><span class="o">.</span><span class="n">num_tetrahedra</span><span class="p">()</span>
@@ -863,11 +860,6 @@ is orientable.</p>
863
860
  </div>
864
861
  </dd></dl>
865
862
 
866
- <dl class="py method">
867
- <dt class="sig sig-object py" id="snappy.Triangulation.pickle">
868
- <span class="sig-name descname"><span class="pre">pickle</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.pickle" title="Link to this definition"></a></dt>
869
- <dd></dd></dl>
870
-
871
863
  <dl class="py method">
872
864
  <dt class="sig sig-object py" id="snappy.Triangulation.plink">
873
865
  <span class="sig-name descname"><span class="pre">plink</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.plink" title="Link to this definition"></a></dt>
@@ -888,8 +880,7 @@ as a link complement in your current session.</p>
888
880
  <dl class="py method">
889
881
  <dt class="sig sig-object py" id="snappy.Triangulation.ptolemy_generalized_obstruction_classes">
890
882
  <span class="sig-name descname"><span class="pre">ptolemy_generalized_obstruction_classes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">N</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.ptolemy_generalized_obstruction_classes" title="Link to this definition"></a></dt>
891
- <dd><p>M.ptolemy_generalized_obstruction_classes(N)</p>
892
- <p>Returns the obstruction classes needed to compute
883
+ <dd><p>Returns the obstruction classes needed to compute
893
884
  PGL(N,C)-representations for any N, i.e., it returns a list with
894
885
  a representative cocycle for each element in
895
886
  H^2(M, boundary M; Z/N) / (Z/N)^* where (Z/N)^* are the units in Z/N.
@@ -1004,8 +995,7 @@ hence the cocycle takes the same value on those two faces (s_3_0 = s_1_1).</p>
1004
995
  <dl class="py method">
1005
996
  <dt class="sig sig-object py" id="snappy.Triangulation.ptolemy_variety">
1006
997
  <span class="sig-name descname"><span class="pre">ptolemy_variety</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">N</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">obstruction_class</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">simplify</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">eliminate_fixed_ptolemys</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.ptolemy_variety" title="Link to this definition"></a></dt>
1007
- <dd><p>M.ptolemy_variety(N, obstruction_class = None, simplify = True, eliminate_fixed_ptolemys = False)</p>
1008
- <p>Returns a Ptolemy variety as described in</p>
998
+ <dd><p>Returns a Ptolemy variety as described in</p>
1009
999
  <ul class="simple">
1010
1000
  <li><p>Stavros Garoufalidis, Dyland Thurston, Christian K. Zickert:
1011
1001
  “The Complex Volume of SL(n,C)-Representations of 3-Manifolds”
@@ -1184,7 +1174,7 @@ tetrahedra by blowup_multiple.</p>
1184
1174
 
1185
1175
  <dl class="py method">
1186
1176
  <dt class="sig sig-object py" id="snappy.Triangulation.reverse_orientation">
1187
- <span class="sig-name descname"><span class="pre">reverse_orientation</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.reverse_orientation" title="Link to this definition"></a></dt>
1177
+ <span class="sig-name descname"><span class="pre">reverse_orientation</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#snappy.Triangulation.reverse_orientation" title="Link to this definition"></a></dt>
1188
1178
  <dd><p>Reverses the orientation of the Triangulation, presuming that
1189
1179
  it is orientable.</p>
1190
1180
  <div class="doctest 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="s1">&#39;m015&#39;</span><span class="p">)</span>
@@ -1216,7 +1206,7 @@ with Dehn coefficients (2,3).</p>
1216
1206
 
1217
1207
  <dl class="py method">
1218
1208
  <dt class="sig sig-object py" id="snappy.Triangulation.set_name">
1219
- <span class="sig-name descname"><span class="pre">set_name</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">new_name</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.set_name" title="Link to this definition"></a></dt>
1209
+ <span class="sig-name descname"><span class="pre">set_name</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">new_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#snappy.Triangulation.set_name" title="Link to this definition"></a></dt>
1220
1210
  <dd><p>Give the triangulation a new name.</p>
1221
1211
  <div class="doctest 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">Triangulation</span><span class="p">(</span><span class="s1">&#39;4_1&#39;</span><span class="p">)</span>
1222
1212
  <span class="gp">&gt;&gt;&gt; </span><span class="n">M</span><span class="o">.</span><span class="n">set_name</span><span class="p">(</span><span class="s1">&#39;figure-eight-comp&#39;</span><span class="p">)</span>
@@ -1284,7 +1274,6 @@ slice), and otherwise returns None:</p>
1284
1274
  <span class="n">sage</span><span class="p">:</span> <span class="n">spec</span> <span class="o">=</span> <span class="p">[(</span><span class="mi">10</span><span class="p">,</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">20</span><span class="p">]),</span> <span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">10</span><span class="p">])]</span>
1285
1275
  <span class="n">sage</span><span class="p">:</span> <span class="n">M</span><span class="o">.</span><span class="n">slice_obstruction_HKL</span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
1286
1276
  <span class="n">Looking</span> <span class="n">at</span> <span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span> <span class="o">...</span>
1287
- <span class="n">Looking</span> <span class="n">at</span> <span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> <span class="o">...</span>
1288
1277
  <span class="n">Looking</span> <span class="n">at</span> <span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">7</span><span class="p">)</span> <span class="o">...</span>
1289
1278
  <span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">7</span><span class="p">)</span>
1290
1279
  </pre></div>
@@ -1293,7 +1282,6 @@ slice), and otherwise returns None:</p>
1293
1282
  the q by just q_max:</p>
1294
1283
  <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sage</span><span class="p">:</span> <span class="n">spec</span> <span class="o">=</span> <span class="p">[([</span><span class="mi">3</span><span class="p">,</span> <span class="mi">10</span><span class="p">],</span> <span class="mi">10</span><span class="p">)]</span>
1295
1284
  <span class="n">sage</span><span class="p">:</span> <span class="n">M</span><span class="o">.</span><span class="n">slice_obstruction_HKL</span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
1296
- <span class="n">Looking</span> <span class="n">at</span> <span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> <span class="o">...</span>
1297
1285
  <span class="n">Looking</span> <span class="n">at</span> <span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">7</span><span class="p">)</span> <span class="o">...</span>
1298
1286
  <span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">7</span><span class="p">)</span>
1299
1287
  </pre></div>
@@ -1312,123 +1300,244 @@ broadly, but other cases requires computing many more twisted
1312
1300
  Alexander polynomials.</p>
1313
1301
  </dd></dl>
1314
1302
 
1303
+ <dl class="py method">
1304
+ <dt class="sig sig-object py" id="snappy.Triangulation.symplectic_basis">
1305
+ <span class="sig-name descname"><span class="pre">symplectic_basis</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">verify</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.symplectic_basis" title="Link to this definition"></a></dt>
1306
+ <dd><p>Extend the Neumann-Zagier matrix to one which is symplectic
1307
+ (up to factors of 2) using oscillating curves, see
1308
+ <a class="reference external" href="https://arxiv.org/abs/2208.06969">Mathews and Purcell ‘22</a>.
1309
+ Only accepts triangulations with 1 cusp.</p>
1310
+ <div class="doctest 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;4_1&quot;</span><span class="p">)</span>
1311
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">M</span><span class="o">.</span><span class="n">symplectic_basis</span><span class="p">()</span>
1312
+ <span class="go">[-1 0 -1 -1]</span>
1313
+ <span class="go">[ 2 0 -2 0]</span>
1314
+ <span class="go">[-2 -1 -2 -1]</span>
1315
+ <span class="go">[ 0 -1 -2 -1]</span>
1316
+ </pre></div>
1317
+ </div>
1318
+ <dl class="field-list simple">
1319
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
1320
+ <dd class="field-odd"><p><strong>verify</strong> – Explicitly test if the resulting matrix is symplectic.</p>
1321
+ </dd>
1322
+ </dl>
1323
+ </dd></dl>
1324
+
1315
1325
  <dl class="py method">
1316
1326
  <dt class="sig sig-object py" id="snappy.Triangulation.triangulation_isosig">
1317
- <span class="sig-name descname"><span class="pre">triangulation_isosig</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">decorated</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_cusp_ordering</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_curve_orientations</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_orientation</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.triangulation_isosig" title="Link to this definition"></a></dt>
1318
- <dd><p>Returns a compact text representation of the triangulation, called a
1319
- “decorated isomorphism signature”</p>
1320
- <div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">T</span> <span class="o">=</span> <span class="n">Triangulation</span><span class="p">(</span><span class="s1">&#39;m004&#39;</span><span class="p">)</span>
1327
+ <span class="sig-name descname"><span class="pre">triangulation_isosig</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">decorated</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_cusp_ordering</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_curves</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_curve_orientations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_filling_orientations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_orientation</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="headerlink" href="#snappy.Triangulation.triangulation_isosig" title="Link to this definition"></a></dt>
1328
+ <dd><p>Returns the “(decorated) isomorphism signature”, a compact text
1329
+ representation of the triangulation:</p>
1330
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">T</span> <span class="o">=</span> <span class="n">Triangulation</span><span class="p">(</span><span class="s1">&#39;m004&#39;</span><span class="p">)</span>
1321
1331
  <span class="gp">&gt;&gt;&gt; </span><span class="n">T</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">()</span>
1322
1332
  <span class="go">&#39;cPcbbbiht_BaCB&#39;</span>
1323
1333
  </pre></div>
1324
1334
  </div>
1325
- <p>You can use this string to recreate an isomorphic triangulation later</p>
1326
- <div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">A</span> <span class="o">=</span> <span class="n">Triangulation</span><span class="p">(</span><span class="s1">&#39;y233&#39;</span><span class="p">)</span>
1327
- <span class="gp">&gt;&gt;&gt; </span><span class="n">A</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">()</span>
1328
- <span class="go">&#39;hLMzMkbcdefggghhhqxqhx_BaaB&#39;</span>
1329
- <span class="gp">&gt;&gt;&gt; </span><span class="n">B</span> <span class="o">=</span> <span class="n">Triangulation</span><span class="p">(</span><span class="s1">&#39;hLMzMkbcdefggghhhqxqhx_BaaB&#39;</span><span class="p">)</span>
1330
- <span class="gp">&gt;&gt;&gt; </span><span class="n">A</span> <span class="o">==</span> <span class="n">B</span>
1335
+ <p>This string can be used later to recreate an isomorphic triangulation:</p>
1336
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">U</span> <span class="o">=</span> <span class="n">Triangulation</span><span class="p">(</span><span class="s1">&#39;cPcbbbiht_BaCB&#39;</span><span class="p">)</span>
1337
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">T</span> <span class="o">==</span> <span class="n">U</span>
1331
1338
  <span class="go">True</span>
1332
1339
  </pre></div>
1333
1340
  </div>
1334
- <p>By default, the returned string encodes the peripheral curves (and
1335
- slopes of Dehn-fillings if any are present), but you can request
1336
- only the “isomorphism signature” which can be given to
1337
- <a class="reference external" href="https://regina-normal.github.io/">Regina</a>.</p>
1338
- <div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">E</span> <span class="o">=</span> <span class="n">Triangulation</span><span class="p">(</span><span class="s1">&#39;K3_1&#39;</span><span class="p">)</span> <span class="c1"># the (-2, 3, 7) exterior</span>
1339
- <span class="gp">&gt;&gt;&gt; </span><span class="n">isosig</span> <span class="o">=</span> <span class="n">E</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">(</span><span class="n">decorated</span> <span class="o">=</span> <span class="kc">False</span><span class="p">);</span> <span class="n">isosig</span>
1340
- <span class="go">&#39;dLQacccjsnk&#39;</span>
1341
- <span class="gp">&gt;&gt;&gt; </span><span class="n">F</span> <span class="o">=</span> <span class="n">Triangulation</span><span class="p">(</span><span class="n">isosig</span><span class="p">)</span>
1342
- <span class="gp">&gt;&gt;&gt; </span><span class="n">E</span><span class="o">.</span><span class="n">isomorphisms_to</span><span class="p">(</span><span class="n">F</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span>
1343
- <span class="go">0 -&gt; 0</span>
1344
- <span class="go">[1 18]</span>
1345
- <span class="go">[0 1]</span>
1346
- <span class="go">Extends to link</span>
1347
- <span class="gp">&gt;&gt;&gt; </span><span class="n">E</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">()</span>
1348
- <span class="go">&#39;dLQacccjsnk_BaRsB&#39;</span>
1349
- <span class="gp">&gt;&gt;&gt; </span><span class="n">F</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">()</span>
1350
- <span class="go">&#39;dLQacccjsnk_BaaB&#39;</span>
1351
- <span class="gp">&gt;&gt;&gt; </span><span class="n">G</span> <span class="o">=</span> <span class="n">Triangulation</span><span class="p">(</span><span class="s1">&#39;dLQacccjsnk_BaRsB&#39;</span><span class="p">)</span>
1352
- <span class="gp">&gt;&gt;&gt; </span><span class="n">E</span><span class="o">.</span><span class="n">isomorphisms_to</span><span class="p">(</span><span class="n">G</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
1353
- <span class="go">0 -&gt; 0</span>
1354
- <span class="go">[1 0]</span>
1355
- <span class="go">[0 1]</span>
1356
- <span class="go">Extends to link</span>
1357
- </pre></div>
1358
- </div>
1359
- <p>If you do not care about the indexing of the cusps when using a
1360
- decorated signature, use ignore_cusp_ordering</p>
1361
- <div class="doctest 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;L14n64110(1,2)(2,3)(-2,1)(3,4)(0,0)&quot;</span><span class="p">)</span>
1362
- <span class="gp">&gt;&gt;&gt; </span><span class="n">isosig</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">(</span><span class="n">decorated</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">ignore_cusp_ordering</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span>
1363
- <span class="gp">&gt;&gt;&gt; </span><span class="n">isosig</span>
1364
- <span class="go">&#39;xLLvLvMLPMPLAMQQcceflnjmmmospsrttvvvtswwwiieiifdeauinasltltahmbjn_bacBbaaBBaBbBbbaabba(2,3)(-2,1)(1,2)(3,4)(0,0)&#39;</span>
1365
- <span class="gp">&gt;&gt;&gt; </span><span class="n">N</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="n">isosig</span><span class="p">)</span><span class="o">.</span><span class="n">filled_triangulation</span><span class="p">()</span>
1366
- <span class="gp">&gt;&gt;&gt; </span><span class="n">N</span><span class="o">.</span><span class="n">is_isometric_to</span><span class="p">(</span><span class="n">M</span><span class="o">.</span><span class="n">filled_triangulation</span><span class="p">())</span>
1367
- <span class="go">True</span>
1368
- </pre></div>
1369
- </div>
1370
- <p>If you do not care about the orientations of the peripheral curves,
1371
- use ignore_curve_orientations</p>
1372
- <div class="doctest 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;L6a1&quot;</span><span class="p">)</span>
1373
- <span class="gp">&gt;&gt;&gt; </span><span class="n">M</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">()</span>
1374
- <span class="go">&#39;gLLAQcdeefffdopuado_BabbBaab&#39;</span>
1375
- <span class="gp">&gt;&gt;&gt; </span><span class="n">isosig</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">(</span><span class="n">decorated</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">ignore_curve_orientations</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span>
1376
- <span class="gp">&gt;&gt;&gt; </span><span class="n">isosig</span>
1377
- <span class="go">&#39;gLLAQcdeefffdopuado_babbbaab&#39;</span>
1378
- <span class="gp">&gt;&gt;&gt; </span><span class="n">N</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="n">isosig</span><span class="p">)</span>
1379
- <span class="gp">&gt;&gt;&gt; </span><span class="n">M</span><span class="o">.</span><span class="n">isomorphisms_to</span><span class="p">(</span><span class="n">N</span><span class="p">)</span>
1341
+ <p>The isomorphism signature is also used to compute the
1342
+ <a class="reference internal" href="manifold.html#snappy.Manifold.isometry_signature" title="snappy.Manifold.isometry_signature"><code class="xref py py-meth docutils literal notranslate"><span class="pre">isometry_signature</span></code></a>.
1343
+ It comes in two flavors controlled by the <code class="xref py py-attr docutils literal notranslate"><span class="pre">decorated</span></code> flag.</p>
1344
+ <p><strong>Undecorated isomorphism signature</strong></p>
1345
+ <p>The undecorated isomorphism signature is a complete invariant of the
1346
+ (oriented) triangulation up to combinatorial isomorphism:</p>
1347
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">T</span> <span class="o">=</span> <span class="n">Triangulation</span><span class="p">(</span><span class="s1">&#39;m015&#39;</span><span class="p">)</span>
1348
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">T</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">(</span><span class="n">decorated</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
1349
+ <span class="go">&#39;dLQbcccdero&#39;</span>
1350
+ </pre></div>
1351
+ </div>
1352
+ <p>It was introduced in
1353
+ <a class="reference external" href="http://arxiv.org/abs/1110.6080">Burton ‘11</a>. It canonizes and
1354
+ generalizes the ealier dehydration string by
1355
+ <a class="reference external" href="https://doi.org/10.1090/S0025-5718-99-01036-4">Callahan, Hildebrand and Weeks ‘99</a>.
1356
+ The undecorated isomorphism signature can also be given to
1357
+ <a class="reference external" href="https://regina-normal.github.io/">Regina</a>’s
1358
+ <code class="docutils literal notranslate"><span class="pre">Triangulation3.fromIsoSig</span></code>.</p>
1359
+ <p>By default, the orientation (if orientable) is ignored. More
1360
+ precisely, it computes the string for both orientations (if orientable)
1361
+ and uses the lexicographically smaller string:</p>
1362
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">T</span> <span class="o">=</span> <span class="n">Triangulation</span><span class="p">(</span><span class="s1">&#39;m015&#39;</span><span class="p">)</span>
1363
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">T</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">(</span><span class="n">decorated</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
1364
+ <span class="go">&#39;dLQbcccdero&#39;</span>
1365
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">T</span><span class="o">.</span><span class="n">reverse_orientation</span><span class="p">()</span>
1366
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">T</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">(</span><span class="n">decorated</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
1367
+ <span class="go">&#39;dLQbcccdero&#39;</span>
1368
+ </pre></div>
1369
+ </div>
1370
+ <p>When specifying <code class="xref py py-attr docutils literal notranslate"><span class="pre">ignore_orientation</span> <span class="pre">=</span> <span class="pre">False</span></code>, the result
1371
+ encodes the orientation (if orientable). Now the result is
1372
+ different if we change the orientation of a chiral triangulation:</p>
1373
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">T</span> <span class="o">=</span> <span class="n">Triangulation</span><span class="p">(</span><span class="s1">&#39;m015&#39;</span><span class="p">)</span>
1374
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">T</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">(</span><span class="n">decorated</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">ignore_orientation</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
1375
+ <span class="go">&#39;dLQbcccdero&#39;</span>
1376
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">T</span><span class="o">.</span><span class="n">reverse_orientation</span><span class="p">()</span>
1377
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">T</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">(</span><span class="n">decorated</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">ignore_orientation</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
1378
+ <span class="go">&#39;dLQbccceekg&#39;</span>
1379
+ </pre></div>
1380
+ </div>
1381
+ <p><strong>Decorated isomorphism signature (default)</strong></p>
1382
+ <p>SnapPy can decorate the isomorphism signature to include the following
1383
+ peripheral information in a canonical way (that is invariant under
1384
+ the action by combinatorial isomorphisms of the triangulation):</p>
1385
+ <ol class="arabic simple">
1386
+ <li><p>Indexing of the cusps (that is, ideal vertices).</p>
1387
+ <ul class="simple">
1388
+ <li><p>Included by default.
1389
+ Can be suppressed with <code class="xref py py-attr docutils literal notranslate"><span class="pre">ignore_cusp_ordering</span> <span class="pre">=</span> <span class="pre">True</span></code>.</p></li>
1390
+ </ul>
1391
+ </li>
1392
+ <li><p>Peripheral curves (aka meridian and longitude, up to homotopy).</p>
1393
+ <ul class="simple">
1394
+ <li><p>Included by default.
1395
+ Can be suppressed with <code class="xref py py-attr docutils literal notranslate"><span class="pre">ignore_curves</span> <span class="pre">=</span> <span class="pre">True</span></code>.</p></li>
1396
+ <li><p>By default, the decoration encodes the oriented peripheral curves.
1397
+ By specifying <code class="xref py py-attr docutils literal notranslate"><span class="pre">ignore_curve_orientations</span> <span class="pre">=</span> <span class="pre">True</span></code>, it encodes
1398
+ the unoriented peripheral curves instead.</p></li>
1399
+ </ul>
1400
+ </li>
1401
+ <li><p>Dehn-fillings (if present).</p>
1402
+ <ul class="simple">
1403
+ <li><p>By default, the decoration encodes the oriented Dehn-fillings.
1404
+ That is, we also encodes the orientation of the peripheral curve
1405
+ that is used for the Dehn-filling (this explanation only
1406
+ works if the coefficients are integral).
1407
+ By specifying <code class="xref py py-attr docutils literal notranslate"><span class="pre">ignore_filling_orientations</span> <span class="pre">=</span> <span class="pre">True</span></code>, the
1408
+ decoration encodes the unoriented Dehn-fillings.
1409
+ That is, it normalizes the Dehn-filling coefficients by picking
1410
+ a canonical pair among <span class="math notranslate nohighlight">\((m,l)\)</span> and <span class="math notranslate nohighlight">\((-m,-l)\)</span>.</p></li>
1411
+ </ul>
1412
+ </li>
1413
+ </ol>
1414
+ <p>Details of the encoding are explained in the
1415
+ <a class="reference external" href="https://github.com/3-manifolds/SnapPy/blob/master/python/decorated_isosig.py">SnapPy source code</a>.</p>
1416
+ <p><strong>Example</strong></p>
1417
+ <p>Let us consider the links <span class="math notranslate nohighlight">\(9^2_{34}\)</span> and <code class="docutils literal notranslate"><span class="pre">L9a21</span></code>. Note that we use
1418
+ <a class="reference internal" href="manifold.html#snappy.Manifold.canonical_retriangulation" title="snappy.Manifold.canonical_retriangulation"><code class="xref py py-meth docutils literal notranslate"><span class="pre">canonical_retriangulation</span></code></a>
1419
+ to make the following examples say something intrinsic about the
1420
+ hyperbolic manifold:</p>
1421
+ <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">snappy</span> <span class="kn">import</span> <span class="n">Manifold</span>
1422
+ <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="s1">&#39;9^2_34&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">canonical_retriangulation</span><span class="p">()</span>
1423
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">N</span> <span class="o">=</span> <span class="n">Manifold</span><span class="p">(</span><span class="s1">&#39;L9a21&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">canonical_retriangulation</span><span class="p">()</span>
1424
+ </pre></div>
1425
+ </div>
1426
+ <p>The decorated isosig recovers the entire peripheral information faithfully
1427
+ (including orientation, see below):</p>
1428
+ <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">triangulation_isosig</span><span class="p">()</span>
1429
+ <span class="go">&#39;oLLvzQLLQQccdhifihnlmkmlnnpvuvbvouggbggoo_baBabbbBbC&#39;</span>
1430
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">K</span> <span class="o">=</span> <span class="n">Triangulation</span><span class="p">(</span><span class="s1">&#39;oLLvzQLLQQccdhifihnlmkmlnnpvuvbvouggbggoo_baBabbbBbC&#39;</span><span class="p">)</span>
1431
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">M</span><span class="o">.</span><span class="n">isomorphisms_to</span><span class="p">(</span><span class="n">K</span><span class="p">)</span>
1380
1432
  <span class="go">[0 -&gt; 0 1 -&gt; 1</span>
1381
- <span class="go">[-1 0] [-1 0]</span>
1382
- <span class="go">[ 0 1] [ 0 1]</span>
1383
- <span class="go">Extends to link, 0 -&gt; 0 1 -&gt; 1</span>
1384
- <span class="go">[1 0] [1 0]</span>
1385
- <span class="go">[0 -1] [0 -1]</span>
1433
+ <span class="go">[1 0] [1 0]</span>
1434
+ <span class="go">[0 1] [0 1]</span>
1386
1435
  <span class="go">Extends to link]</span>
1387
1436
  </pre></div>
1388
1437
  </div>
1389
- <p>By default, the isomorphism signature does not capture the orientation
1390
- of an orientable triangulation. If you specify
1391
- <cite>ignore_orientation = False</cite>, the isomorphism signature for an oriented
1392
- triangulation and its mirror image will be different if the
1393
- triangulation is cheiral.</p>
1394
- <div class="doctest 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;m006&quot;</span><span class="p">)</span>
1395
- <span class="gp">&gt;&gt;&gt; </span><span class="n">M</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">(</span><span class="n">decorated</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">ignore_orientation</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span>
1396
- <span class="go">&#39;dLQacccjnjs&#39;</span>
1397
- <span class="gp">&gt;&gt;&gt; </span><span class="n">M</span><span class="o">.</span><span class="n">reverse_orientation</span><span class="p">()</span>
1398
- <span class="gp">&gt;&gt;&gt; </span><span class="n">M</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">(</span><span class="n">decorated</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">ignore_orientation</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span>
1399
- <span class="go">&#39;dLQacccnsnk&#39;</span>
1400
- </pre></div>
1401
- </div>
1402
- <p>Note that a decorated triangulation isosig with the default values
1403
- <cite>ignore_orientation = True</cite> but <cite>ignore_curve_orientations = False</cite>
1404
- still captures the orientations of the triangulation through the
1405
- peripheral curves.</p>
1406
- <div class="doctest 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;m006&quot;</span><span class="p">)</span>
1407
- <span class="gp">&gt;&gt;&gt; </span><span class="n">M</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">()</span>
1408
- <span class="go">&#39;dLQacccjnjs_aBbB&#39;</span>
1409
- <span class="gp">&gt;&gt;&gt; </span><span class="n">M</span><span class="o">.</span><span class="n">reverse_orientation</span><span class="p">()</span>
1410
- <span class="gp">&gt;&gt;&gt; </span><span class="n">M</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">()</span>
1411
- <span class="go">&#39;dLQacccjnjs_aBBb&#39;</span>
1412
- </pre></div>
1413
- </div>
1414
- <p>The code has been copied from <a class="reference external" href="https://regina-normal.github.io/">Regina</a> where
1415
- the corresponding method is called “isoSig”.</p>
1416
- <p>Unlike dehydrations for 3-manifold triangulations, an
1417
- isomorphism signature uniquely determines a triangulation up
1418
- to combinatorial isomorphism. That is, two triangulations of
1419
- 3-dimensional manifolds are combinatorially isomorphic if and
1420
- only if their isomorphism signatures are the same string. For
1421
- full details, see <a class="reference external" href="http://arxiv.org/abs/1110.6080">Simplification paths in the Pachner graphs
1422
- of closed orientable 3-manifold triangulations, Burton, 2011</a>.</p>
1423
- <p>For details about how the peripheral decorations work, see
1424
- the SnapPy source code.</p>
1438
+ <p>The two links have isometric complements:</p>
1439
+ <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">triangulation_isosig</span><span class="p">(</span><span class="n">decorated</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
1440
+ <span class="go">&#39;oLLvzQLLQQccdhifihnlmkmlnnpvuvbvouggbggoo&#39;</span>
1441
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">N</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">(</span><span class="n">decorated</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
1442
+ <span class="go">&#39;oLLvzQLLQQccdhifihnlmkmlnnpvuvbvouggbggoo&#39;</span>
1443
+ </pre></div>
1444
+ </div>
1445
+ <p>However, the complements have different handedness:</p>
1446
+ <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">triangulation_isosig</span><span class="p">(</span><span class="n">decorated</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span><span class="n">ignore_orientation</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
1447
+ <span class="go">&#39;oLLzLPwzQQccdeghjiiklmnmnnuvuvvavovvffffo&#39;</span>
1448
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">N</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">(</span><span class="n">decorated</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span><span class="n">ignore_orientation</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
1449
+ <span class="go">&#39;oLLvzQLLQQccdhifihnlmkmlnnpvuvbvouggbggoo&#39;</span>
1450
+ </pre></div>
1451
+ </div>
1452
+ <p>Also, the cusps/components of the link are indexed differently:</p>
1453
+ <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">triangulation_isosig</span><span class="p">(</span><span class="n">ignore_curves</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
1454
+ <span class="go">&#39;oLLvzQLLQQccdhifihnlmkmlnnpvuvbvouggbggoo_ba&#39;</span>
1455
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">N</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">(</span><span class="n">ignore_curves</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
1456
+ <span class="go">&#39;oLLvzQLLQQccdhifihnlmkmlnnpvuvbvouggbggoo_ab&#39;</span>
1457
+ </pre></div>
1458
+ </div>
1459
+ <p>Ignoring the indexing, we also see that the oriented merdians and
1460
+ longitudes do not match:</p>
1461
+ <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">triangulation_isosig</span><span class="p">(</span><span class="n">ignore_cusp_ordering</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
1462
+ <span class="go">&#39;oLLvzQLLQQccdhifihnlmkmlnnpvuvbvouggbggoo_bBbCBabb&#39;</span>
1463
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">N</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">(</span><span class="n">ignore_cusp_ordering</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
1464
+ <span class="go">&#39;oLLvzQLLQQccdhifihnlmkmlnnpvuvbvouggbggoo_BbbCbabb&#39;</span>
1465
+ </pre></div>
1466
+ </div>
1467
+ <p>However, they are the same links (ignoring indexing and orientation):</p>
1468
+ <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">triangulation_isosig</span><span class="p">(</span><span class="n">ignore_cusp_ordering</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">ignore_curve_orientations</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
1469
+ <span class="go">&#39;oLLvzQLLQQccdhifihnlmkmlnnpvuvbvouggbggoo_bBBcbabb&#39;</span>
1470
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">N</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">(</span><span class="n">ignore_cusp_ordering</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">ignore_curve_orientations</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
1471
+ <span class="go">&#39;oLLvzQLLQQccdhifihnlmkmlnnpvuvbvouggbggoo_bBBcbabb&#39;</span>
1472
+ </pre></div>
1473
+ </div>
1474
+ <p>Let us create two surgery presentations from the links (note that we
1475
+ fill after
1476
+ <a class="reference internal" href="manifold.html#snappy.Manifold.canonical_retriangulation" title="snappy.Manifold.canonical_retriangulation"><code class="xref py py-meth docutils literal notranslate"><span class="pre">canonical_retriangulation</span></code></a>
1477
+ since it rejects Dehn-fillings):</p>
1478
+ <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">dehn_fill</span><span class="p">((</span><span class="mi">4</span><span class="p">,</span> <span class="mi">5</span><span class="p">),</span><span class="mi">0</span><span class="p">)</span>
1479
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">N</span><span class="o">.</span><span class="n">dehn_fill</span><span class="p">((</span><span class="mi">4</span><span class="p">,</span><span class="o">-</span><span class="mi">5</span><span class="p">),</span><span class="mi">1</span><span class="p">)</span>
1480
+ </pre></div>
1481
+ </div>
1482
+ <p>They are equivalent surgery presentations (of the same manifold):</p>
1483
+ <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">triangulation_isosig</span><span class="p">(</span>
1484
+ <span class="gp">... </span> <span class="n">ignore_cusp_ordering</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
1485
+ <span class="gp">... </span> <span class="n">ignore_curves</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
1486
+ <span class="gp">... </span> <span class="n">ignore_filling_orientations</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
1487
+ <span class="go">&#39;oLLvzQLLQQccdhifihnlmkmlnnpvuvbvouggbggoo(0,0)(1,5)&#39;</span>
1488
+ <span class="gp">&gt;&gt;&gt; </span><span class="n">N</span><span class="o">.</span><span class="n">triangulation_isosig</span><span class="p">(</span>
1489
+ <span class="gp">... </span> <span class="n">ignore_cusp_ordering</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
1490
+ <span class="gp">... </span> <span class="n">ignore_curves</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
1491
+ <span class="gp">... </span> <span class="n">ignore_filling_orientations</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
1492
+ <span class="go">&#39;oLLvzQLLQQccdhifihnlmkmlnnpvuvbvouggbggoo(0,0)(1,5)&#39;</span>
1493
+ </pre></div>
1494
+ </div>
1495
+ <p><strong>Orientation</strong></p>
1496
+ <p>Note that <code class="xref py py-attr docutils literal notranslate"><span class="pre">ignore_orientation=True</span></code> only applies to the undecorated
1497
+ part of the isomorphism signature. The decoration can still capture the
1498
+ the orientation.
1499
+ More, precisely, the result of <a class="reference internal" href="#snappy.Triangulation.triangulation_isosig" title="snappy.Triangulation.triangulation_isosig"><code class="xref py py-meth docutils literal notranslate"><span class="pre">triangulation_isosig()</span></code></a> depends on
1500
+ the orientation (if the triangulation is orientable and chiral) if any
1501
+ of the following is true:</p>
1502
+ <ol class="arabic simple">
1503
+ <li><p><code class="xref py py-attr docutils literal notranslate"><span class="pre">ignore_orientation</span> <span class="pre">=</span> <span class="pre">False</span></code>.</p></li>
1504
+ <li><p><code class="xref py py-attr docutils literal notranslate"><span class="pre">decorated</span> <span class="pre">=</span> <span class="pre">True</span></code> and
1505
+ <code class="xref py py-attr docutils literal notranslate"><span class="pre">ignore_curves</span> <span class="pre">=</span> <span class="pre">False</span></code> and
1506
+ <code class="xref py py-attr docutils literal notranslate"><span class="pre">ignore_filling_orientations</span> <span class="pre">=</span> <span class="pre">False</span></code>.</p></li>
1507
+ </ol>
1508
+ <p>In these cases, re-constructing a triangulation from the isomorphism
1509
+ signature yields a triangulation with the same handedness.</p>
1510
+ <dl class="field-list simple">
1511
+ <dt class="field-odd">Parameters<span class="colon">:</span></dt>
1512
+ <dd class="field-odd"><ul class="simple">
1513
+ <li><p><strong>decorated</strong> – Include peripheral information such as indexing of the cusps,
1514
+ (oriented or unoriented) peripheral curves and
1515
+ (oriented or unoriented) Dehn-fillings.</p></li>
1516
+ <li><p><strong>ignore_cusp_ordering</strong> – Do not encode the indexing of the cusps.
1517
+ Only relevant if <code class="xref py py-attr docutils literal notranslate"><span class="pre">decorated</span> <span class="pre">=</span> <span class="pre">True</span></code>.</p></li>
1518
+ <li><p><strong>ignore_curves</strong> – Do not encode the peripheral curves.
1519
+ Only relevant if <code class="xref py py-attr docutils literal notranslate"><span class="pre">decorated</span> <span class="pre">=</span> <span class="pre">True</span></code>.
1520
+ This is new in SnapPy version 3.2.
1521
+ If <code class="xref py py-attr docutils literal notranslate"><span class="pre">ignore_curves</span> <span class="pre">=</span> <span class="pre">True</span></code>, the result of this method cannot
1522
+ be given to prior versions.</p></li>
1523
+ <li><p><strong>ignore_curve_orientations</strong> – Do not encode the orientations of the peripheral curves.
1524
+ Only relevant if <code class="xref py py-attr docutils literal notranslate"><span class="pre">decorated</span> <span class="pre">=</span> <span class="pre">True</span></code> and
1525
+ <code class="xref py py-attr docutils literal notranslate"><span class="pre">ignore_curves</span> <span class="pre">=</span> <span class="pre">False</span></code>.</p></li>
1526
+ <li><p><strong>ignore_filling_orientations</strong> – Do not encode the orientations of the Dehn-fillings.
1527
+ Only relevant if <code class="xref py py-attr docutils literal notranslate"><span class="pre">decorated</span> <span class="pre">=</span> <span class="pre">True</span></code>.</p></li>
1528
+ <li><p><strong>ignore_orientation</strong> – Do not encode the orientation of the triangulation in the
1529
+ undecorated part of the triangulation isosig.
1530
+ See above section about orientation.</p></li>
1531
+ </ul>
1532
+ </dd>
1533
+ </dl>
1425
1534
  </dd></dl>
1426
1535
 
1427
1536
  <dl class="py method">
1428
1537
  <dt class="sig sig-object py" id="snappy.Triangulation.with_hyperbolic_structure">
1429
1538
  <span class="sig-name descname"><span class="pre">with_hyperbolic_structure</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#snappy.Triangulation.with_hyperbolic_structure" title="Link to this definition"></a></dt>
1430
1539
  <dd><p>Add a (possibly degenerate) hyperbolic structure, turning the
1431
- Triangulation into a Manifold.</p>
1540
+ <a class="reference internal" href="#snappy.Triangulation" title="snappy.Triangulation"><code class="xref py py-class docutils literal notranslate"><span class="pre">Triangulation</span></code></a> into a <a class="reference internal" href="manifold.html#snappy.Manifold" title="snappy.Manifold"><code class="xref py py-class docutils literal notranslate"><span class="pre">Manifold</span></code></a>.</p>
1432
1541
  <div class="doctest 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">Triangulation</span><span class="p">(</span><span class="s1">&#39;m004&#39;</span><span class="p">)</span>
1433
1542
  <span class="gp">&gt;&gt;&gt; </span><span class="n">N</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">with_hyperbolic_structure</span><span class="p">()</span>
1434
1543
  <span class="gp">&gt;&gt;&gt; </span><span class="n">N</span><span class="o">.</span><span class="n">volume</span><span class="p">()</span>
@@ -1452,7 +1561,7 @@ Triangulation into a Manifold.</p>
1452
1561
  <hr/>
1453
1562
 
1454
1563
  <div role="contentinfo">
1455
- <p>&#169; Copyright 2009-2023, by Marc Culler, Nathan Dunfield, Matthias Goerner, Jeffrey Weeks and others.</p>
1564
+ <p>&#169; Copyright 2009-2025, by Marc Culler, Nathan Dunfield, Matthias Goerner, Jeffrey Weeks and others.</p>
1456
1565
  </div>
1457
1566
 
1458
1567
  Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a