passagemath-combinat 10.6.42__cp314-cp314t-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (401) hide show
  1. passagemath_combinat/__init__.py +3 -0
  2. passagemath_combinat-10.6.42.dist-info/DELVEWHEEL +2 -0
  3. passagemath_combinat-10.6.42.dist-info/METADATA +160 -0
  4. passagemath_combinat-10.6.42.dist-info/RECORD +401 -0
  5. passagemath_combinat-10.6.42.dist-info/WHEEL +5 -0
  6. passagemath_combinat-10.6.42.dist-info/top_level.txt +3 -0
  7. passagemath_combinat.libs/libgmp-10-3a5f019e2510aeaad918cab2b57a689d.dll +0 -0
  8. passagemath_combinat.libs/libsymmetrica-3-7dcf900932804d0df5fd0919b4668720.dll +0 -0
  9. sage/algebras/affine_nil_temperley_lieb.py +263 -0
  10. sage/algebras/all.py +24 -0
  11. sage/algebras/all__sagemath_combinat.py +35 -0
  12. sage/algebras/askey_wilson.py +935 -0
  13. sage/algebras/associated_graded.py +345 -0
  14. sage/algebras/cellular_basis.py +350 -0
  15. sage/algebras/cluster_algebra.py +2766 -0
  16. sage/algebras/down_up_algebra.py +860 -0
  17. sage/algebras/free_algebra.py +1698 -0
  18. sage/algebras/free_algebra_element.py +345 -0
  19. sage/algebras/free_algebra_quotient.py +405 -0
  20. sage/algebras/free_algebra_quotient_element.py +295 -0
  21. sage/algebras/free_zinbiel_algebra.py +885 -0
  22. sage/algebras/hall_algebra.py +783 -0
  23. sage/algebras/hecke_algebras/all.py +4 -0
  24. sage/algebras/hecke_algebras/ariki_koike_algebra.py +1796 -0
  25. sage/algebras/hecke_algebras/ariki_koike_specht_modules.py +475 -0
  26. sage/algebras/hecke_algebras/cubic_hecke_algebra.py +3520 -0
  27. sage/algebras/hecke_algebras/cubic_hecke_base_ring.py +1473 -0
  28. sage/algebras/hecke_algebras/cubic_hecke_matrix_rep.py +1079 -0
  29. sage/algebras/iwahori_hecke_algebra.py +3095 -0
  30. sage/algebras/jordan_algebra.py +1773 -0
  31. sage/algebras/lie_conformal_algebras/abelian_lie_conformal_algebra.py +113 -0
  32. sage/algebras/lie_conformal_algebras/affine_lie_conformal_algebra.py +156 -0
  33. sage/algebras/lie_conformal_algebras/all.py +18 -0
  34. sage/algebras/lie_conformal_algebras/bosonic_ghosts_lie_conformal_algebra.py +134 -0
  35. sage/algebras/lie_conformal_algebras/examples.py +43 -0
  36. sage/algebras/lie_conformal_algebras/fermionic_ghosts_lie_conformal_algebra.py +131 -0
  37. sage/algebras/lie_conformal_algebras/finitely_freely_generated_lca.py +139 -0
  38. sage/algebras/lie_conformal_algebras/free_bosons_lie_conformal_algebra.py +174 -0
  39. sage/algebras/lie_conformal_algebras/free_fermions_lie_conformal_algebra.py +167 -0
  40. sage/algebras/lie_conformal_algebras/freely_generated_lie_conformal_algebra.py +107 -0
  41. sage/algebras/lie_conformal_algebras/graded_lie_conformal_algebra.py +135 -0
  42. sage/algebras/lie_conformal_algebras/lie_conformal_algebra.py +353 -0
  43. sage/algebras/lie_conformal_algebras/lie_conformal_algebra_element.py +236 -0
  44. sage/algebras/lie_conformal_algebras/lie_conformal_algebra_with_basis.py +78 -0
  45. sage/algebras/lie_conformal_algebras/lie_conformal_algebra_with_structure_coefs.py +328 -0
  46. sage/algebras/lie_conformal_algebras/n2_lie_conformal_algebra.py +117 -0
  47. sage/algebras/lie_conformal_algebras/neveu_schwarz_lie_conformal_algebra.py +86 -0
  48. sage/algebras/lie_conformal_algebras/virasoro_lie_conformal_algebra.py +82 -0
  49. sage/algebras/lie_conformal_algebras/weyl_lie_conformal_algebra.py +205 -0
  50. sage/algebras/nil_coxeter_algebra.py +191 -0
  51. sage/algebras/q_commuting_polynomials.py +673 -0
  52. sage/algebras/q_system.py +608 -0
  53. sage/algebras/quantum_clifford.py +959 -0
  54. sage/algebras/quantum_groups/ace_quantum_onsager.py +693 -0
  55. sage/algebras/quantum_groups/all.py +9 -0
  56. sage/algebras/quantum_groups/fock_space.py +2219 -0
  57. sage/algebras/quantum_groups/q_numbers.py +207 -0
  58. sage/algebras/quantum_groups/quantum_group_gap.py +2695 -0
  59. sage/algebras/quantum_groups/representations.py +591 -0
  60. sage/algebras/quantum_matrix_coordinate_algebra.py +1006 -0
  61. sage/algebras/quantum_oscillator.py +623 -0
  62. sage/algebras/quaternion_algebra.py +20 -0
  63. sage/algebras/quaternion_algebra_element.py +55 -0
  64. sage/algebras/rational_cherednik_algebra.py +525 -0
  65. sage/algebras/schur_algebra.py +670 -0
  66. sage/algebras/shuffle_algebra.py +1011 -0
  67. sage/algebras/splitting_algebra.py +779 -0
  68. sage/algebras/tensor_algebra.py +709 -0
  69. sage/algebras/yangian.py +1082 -0
  70. sage/algebras/yokonuma_hecke_algebra.py +1018 -0
  71. sage/all__sagemath_combinat.py +44 -0
  72. sage/combinat/SJT.py +255 -0
  73. sage/combinat/affine_permutation.py +2405 -0
  74. sage/combinat/algebraic_combinatorics.py +55 -0
  75. sage/combinat/all.py +53 -0
  76. sage/combinat/all__sagemath_combinat.py +195 -0
  77. sage/combinat/alternating_sign_matrix.py +2063 -0
  78. sage/combinat/baxter_permutations.py +346 -0
  79. sage/combinat/bijectionist.py +3220 -0
  80. sage/combinat/binary_recurrence_sequences.py +1180 -0
  81. sage/combinat/blob_algebra.py +685 -0
  82. sage/combinat/catalog_partitions.py +27 -0
  83. sage/combinat/chas/all.py +23 -0
  84. sage/combinat/chas/fsym.py +1180 -0
  85. sage/combinat/chas/wqsym.py +2601 -0
  86. sage/combinat/cluster_complex.py +326 -0
  87. sage/combinat/colored_permutations.py +2039 -0
  88. sage/combinat/colored_permutations_representations.py +964 -0
  89. sage/combinat/composition_signed.py +142 -0
  90. sage/combinat/composition_tableau.py +855 -0
  91. sage/combinat/constellation.py +1729 -0
  92. sage/combinat/core.py +751 -0
  93. sage/combinat/counting.py +12 -0
  94. sage/combinat/crystals/affine.py +742 -0
  95. sage/combinat/crystals/affine_factorization.py +518 -0
  96. sage/combinat/crystals/affinization.py +331 -0
  97. sage/combinat/crystals/alcove_path.py +2013 -0
  98. sage/combinat/crystals/all.py +22 -0
  99. sage/combinat/crystals/bkk_crystals.py +141 -0
  100. sage/combinat/crystals/catalog.py +115 -0
  101. sage/combinat/crystals/catalog_elementary_crystals.py +18 -0
  102. sage/combinat/crystals/catalog_infinity_crystals.py +33 -0
  103. sage/combinat/crystals/catalog_kirillov_reshetikhin.py +18 -0
  104. sage/combinat/crystals/crystals.py +257 -0
  105. sage/combinat/crystals/direct_sum.py +260 -0
  106. sage/combinat/crystals/elementary_crystals.py +1251 -0
  107. sage/combinat/crystals/fast_crystals.py +441 -0
  108. sage/combinat/crystals/fully_commutative_stable_grothendieck.py +1205 -0
  109. sage/combinat/crystals/generalized_young_walls.py +1076 -0
  110. sage/combinat/crystals/highest_weight_crystals.py +436 -0
  111. sage/combinat/crystals/induced_structure.py +695 -0
  112. sage/combinat/crystals/infinity_crystals.py +730 -0
  113. sage/combinat/crystals/kac_modules.py +863 -0
  114. sage/combinat/crystals/kirillov_reshetikhin.py +4196 -0
  115. sage/combinat/crystals/kyoto_path_model.py +497 -0
  116. sage/combinat/crystals/letters.cp314t-win_amd64.pyd +0 -0
  117. sage/combinat/crystals/letters.pxd +79 -0
  118. sage/combinat/crystals/letters.pyx +3056 -0
  119. sage/combinat/crystals/littelmann_path.py +1518 -0
  120. sage/combinat/crystals/monomial_crystals.py +1262 -0
  121. sage/combinat/crystals/multisegments.py +462 -0
  122. sage/combinat/crystals/mv_polytopes.py +467 -0
  123. sage/combinat/crystals/pbw_crystal.py +511 -0
  124. sage/combinat/crystals/pbw_datum.cp314t-win_amd64.pyd +0 -0
  125. sage/combinat/crystals/pbw_datum.pxd +4 -0
  126. sage/combinat/crystals/pbw_datum.pyx +487 -0
  127. sage/combinat/crystals/polyhedral_realization.py +372 -0
  128. sage/combinat/crystals/spins.cp314t-win_amd64.pyd +0 -0
  129. sage/combinat/crystals/spins.pxd +21 -0
  130. sage/combinat/crystals/spins.pyx +756 -0
  131. sage/combinat/crystals/star_crystal.py +290 -0
  132. sage/combinat/crystals/subcrystal.py +464 -0
  133. sage/combinat/crystals/tensor_product.py +1177 -0
  134. sage/combinat/crystals/tensor_product_element.cp314t-win_amd64.pyd +0 -0
  135. sage/combinat/crystals/tensor_product_element.pxd +35 -0
  136. sage/combinat/crystals/tensor_product_element.pyx +1870 -0
  137. sage/combinat/crystals/virtual_crystal.py +420 -0
  138. sage/combinat/cyclic_sieving_phenomenon.py +204 -0
  139. sage/combinat/debruijn_sequence.cp314t-win_amd64.pyd +0 -0
  140. sage/combinat/debruijn_sequence.pyx +355 -0
  141. sage/combinat/decorated_permutation.py +270 -0
  142. sage/combinat/degree_sequences.cp314t-win_amd64.pyd +0 -0
  143. sage/combinat/degree_sequences.pyx +588 -0
  144. sage/combinat/derangements.py +527 -0
  145. sage/combinat/descent_algebra.py +1008 -0
  146. sage/combinat/diagram.py +1551 -0
  147. sage/combinat/diagram_algebras.py +5886 -0
  148. sage/combinat/dyck_word.py +4349 -0
  149. sage/combinat/e_one_star.py +1623 -0
  150. sage/combinat/enumerated_sets.py +123 -0
  151. sage/combinat/expnums.cp314t-win_amd64.pyd +0 -0
  152. sage/combinat/expnums.pyx +148 -0
  153. sage/combinat/fast_vector_partitions.cp314t-win_amd64.pyd +0 -0
  154. sage/combinat/fast_vector_partitions.pyx +346 -0
  155. sage/combinat/fqsym.py +1977 -0
  156. sage/combinat/free_dendriform_algebra.py +954 -0
  157. sage/combinat/free_prelie_algebra.py +1141 -0
  158. sage/combinat/fully_commutative_elements.py +1077 -0
  159. sage/combinat/fully_packed_loop.py +1523 -0
  160. sage/combinat/gelfand_tsetlin_patterns.py +1409 -0
  161. sage/combinat/gray_codes.py +311 -0
  162. sage/combinat/grossman_larson_algebras.py +667 -0
  163. sage/combinat/growth.py +4352 -0
  164. sage/combinat/hall_polynomial.py +188 -0
  165. sage/combinat/hillman_grassl.py +866 -0
  166. sage/combinat/integer_matrices.py +329 -0
  167. sage/combinat/integer_vectors_mod_permgroup.py +1238 -0
  168. sage/combinat/k_tableau.py +4564 -0
  169. sage/combinat/kazhdan_lusztig.py +215 -0
  170. sage/combinat/key_polynomial.py +885 -0
  171. sage/combinat/knutson_tao_puzzles.py +2286 -0
  172. sage/combinat/lr_tableau.py +311 -0
  173. sage/combinat/matrices/all.py +24 -0
  174. sage/combinat/matrices/hadamard_matrix.py +3790 -0
  175. sage/combinat/matrices/latin.py +2912 -0
  176. sage/combinat/misc.py +401 -0
  177. sage/combinat/multiset_partition_into_sets_ordered.py +3541 -0
  178. sage/combinat/ncsf_qsym/all.py +21 -0
  179. sage/combinat/ncsf_qsym/combinatorics.py +317 -0
  180. sage/combinat/ncsf_qsym/generic_basis_code.py +1427 -0
  181. sage/combinat/ncsf_qsym/ncsf.py +5637 -0
  182. sage/combinat/ncsf_qsym/qsym.py +4053 -0
  183. sage/combinat/ncsf_qsym/tutorial.py +447 -0
  184. sage/combinat/ncsym/all.py +21 -0
  185. sage/combinat/ncsym/bases.py +855 -0
  186. sage/combinat/ncsym/dual.py +593 -0
  187. sage/combinat/ncsym/ncsym.py +2076 -0
  188. sage/combinat/necklace.py +551 -0
  189. sage/combinat/non_decreasing_parking_function.py +634 -0
  190. sage/combinat/nu_dyck_word.py +1474 -0
  191. sage/combinat/output.py +861 -0
  192. sage/combinat/parallelogram_polyomino.py +4326 -0
  193. sage/combinat/parking_functions.py +1602 -0
  194. sage/combinat/partition_algebra.py +1998 -0
  195. sage/combinat/partition_kleshchev.py +1982 -0
  196. sage/combinat/partition_shifting_algebras.py +584 -0
  197. sage/combinat/partition_tuple.py +3114 -0
  198. sage/combinat/path_tableaux/all.py +13 -0
  199. sage/combinat/path_tableaux/catalog.py +29 -0
  200. sage/combinat/path_tableaux/dyck_path.py +380 -0
  201. sage/combinat/path_tableaux/frieze.py +476 -0
  202. sage/combinat/path_tableaux/path_tableau.py +728 -0
  203. sage/combinat/path_tableaux/semistandard.py +510 -0
  204. sage/combinat/perfect_matching.py +779 -0
  205. sage/combinat/plane_partition.py +3300 -0
  206. sage/combinat/q_bernoulli.cp314t-win_amd64.pyd +0 -0
  207. sage/combinat/q_bernoulli.pyx +128 -0
  208. sage/combinat/quickref.py +81 -0
  209. sage/combinat/recognizable_series.py +2051 -0
  210. sage/combinat/regular_sequence.py +4316 -0
  211. sage/combinat/regular_sequence_bounded.py +543 -0
  212. sage/combinat/restricted_growth.py +81 -0
  213. sage/combinat/ribbon.py +20 -0
  214. sage/combinat/ribbon_shaped_tableau.py +489 -0
  215. sage/combinat/ribbon_tableau.py +1180 -0
  216. sage/combinat/rigged_configurations/all.py +46 -0
  217. sage/combinat/rigged_configurations/bij_abstract_class.py +548 -0
  218. sage/combinat/rigged_configurations/bij_infinity.py +370 -0
  219. sage/combinat/rigged_configurations/bij_type_A.py +163 -0
  220. sage/combinat/rigged_configurations/bij_type_A2_dual.py +338 -0
  221. sage/combinat/rigged_configurations/bij_type_A2_even.py +218 -0
  222. sage/combinat/rigged_configurations/bij_type_A2_odd.py +199 -0
  223. sage/combinat/rigged_configurations/bij_type_B.py +900 -0
  224. sage/combinat/rigged_configurations/bij_type_C.py +267 -0
  225. sage/combinat/rigged_configurations/bij_type_D.py +771 -0
  226. sage/combinat/rigged_configurations/bij_type_D_tri.py +392 -0
  227. sage/combinat/rigged_configurations/bij_type_D_twisted.py +576 -0
  228. sage/combinat/rigged_configurations/bij_type_E67.py +402 -0
  229. sage/combinat/rigged_configurations/bijection.py +143 -0
  230. sage/combinat/rigged_configurations/kleber_tree.py +1475 -0
  231. sage/combinat/rigged_configurations/kr_tableaux.py +1898 -0
  232. sage/combinat/rigged_configurations/rc_crystal.py +461 -0
  233. sage/combinat/rigged_configurations/rc_infinity.py +540 -0
  234. sage/combinat/rigged_configurations/rigged_configuration_element.py +2403 -0
  235. sage/combinat/rigged_configurations/rigged_configurations.py +1918 -0
  236. sage/combinat/rigged_configurations/rigged_partition.cp314t-win_amd64.pyd +0 -0
  237. sage/combinat/rigged_configurations/rigged_partition.pxd +15 -0
  238. sage/combinat/rigged_configurations/rigged_partition.pyx +680 -0
  239. sage/combinat/rigged_configurations/tensor_product_kr_tableaux.py +499 -0
  240. sage/combinat/rigged_configurations/tensor_product_kr_tableaux_element.py +428 -0
  241. sage/combinat/rsk.py +3438 -0
  242. sage/combinat/schubert_polynomial.py +508 -0
  243. sage/combinat/set_partition.py +3318 -0
  244. sage/combinat/set_partition_iterator.cp314t-win_amd64.pyd +0 -0
  245. sage/combinat/set_partition_iterator.pyx +136 -0
  246. sage/combinat/set_partition_ordered.py +1590 -0
  247. sage/combinat/sf/abreu_nigro.py +346 -0
  248. sage/combinat/sf/all.py +52 -0
  249. sage/combinat/sf/character.py +576 -0
  250. sage/combinat/sf/classical.py +319 -0
  251. sage/combinat/sf/dual.py +996 -0
  252. sage/combinat/sf/elementary.py +549 -0
  253. sage/combinat/sf/hall_littlewood.py +1028 -0
  254. sage/combinat/sf/hecke.py +336 -0
  255. sage/combinat/sf/homogeneous.py +464 -0
  256. sage/combinat/sf/jack.py +1428 -0
  257. sage/combinat/sf/k_dual.py +1458 -0
  258. sage/combinat/sf/kfpoly.py +447 -0
  259. sage/combinat/sf/llt.py +789 -0
  260. sage/combinat/sf/macdonald.py +2019 -0
  261. sage/combinat/sf/monomial.py +525 -0
  262. sage/combinat/sf/multiplicative.py +113 -0
  263. sage/combinat/sf/new_kschur.py +1786 -0
  264. sage/combinat/sf/ns_macdonald.py +964 -0
  265. sage/combinat/sf/orthogonal.py +246 -0
  266. sage/combinat/sf/orthotriang.py +355 -0
  267. sage/combinat/sf/powersum.py +963 -0
  268. sage/combinat/sf/schur.py +880 -0
  269. sage/combinat/sf/sf.py +1653 -0
  270. sage/combinat/sf/sfa.py +7053 -0
  271. sage/combinat/sf/symplectic.py +253 -0
  272. sage/combinat/sf/witt.py +721 -0
  273. sage/combinat/shifted_primed_tableau.py +2735 -0
  274. sage/combinat/shuffle.py +830 -0
  275. sage/combinat/sidon_sets.py +146 -0
  276. sage/combinat/similarity_class_type.py +1721 -0
  277. sage/combinat/sine_gordon.py +618 -0
  278. sage/combinat/six_vertex_model.py +784 -0
  279. sage/combinat/skew_partition.py +2053 -0
  280. sage/combinat/skew_tableau.py +2989 -0
  281. sage/combinat/sloane_functions.py +8935 -0
  282. sage/combinat/specht_module.py +1403 -0
  283. sage/combinat/species/all.py +48 -0
  284. sage/combinat/species/characteristic_species.py +321 -0
  285. sage/combinat/species/composition_species.py +273 -0
  286. sage/combinat/species/cycle_species.py +284 -0
  287. sage/combinat/species/empty_species.py +155 -0
  288. sage/combinat/species/functorial_composition_species.py +148 -0
  289. sage/combinat/species/generating_series.py +673 -0
  290. sage/combinat/species/library.py +148 -0
  291. sage/combinat/species/linear_order_species.py +169 -0
  292. sage/combinat/species/misc.py +83 -0
  293. sage/combinat/species/partition_species.py +290 -0
  294. sage/combinat/species/permutation_species.py +268 -0
  295. sage/combinat/species/product_species.py +423 -0
  296. sage/combinat/species/recursive_species.py +476 -0
  297. sage/combinat/species/set_species.py +192 -0
  298. sage/combinat/species/species.py +820 -0
  299. sage/combinat/species/structure.py +539 -0
  300. sage/combinat/species/subset_species.py +243 -0
  301. sage/combinat/species/sum_species.py +225 -0
  302. sage/combinat/subword.py +564 -0
  303. sage/combinat/subword_complex.py +2122 -0
  304. sage/combinat/subword_complex_c.cp314t-win_amd64.pyd +0 -0
  305. sage/combinat/subword_complex_c.pyx +119 -0
  306. sage/combinat/super_tableau.py +821 -0
  307. sage/combinat/superpartition.py +1154 -0
  308. sage/combinat/symmetric_group_algebra.py +3774 -0
  309. sage/combinat/symmetric_group_representations.py +1830 -0
  310. sage/combinat/t_sequences.py +877 -0
  311. sage/combinat/tableau.py +9506 -0
  312. sage/combinat/tableau_residues.py +860 -0
  313. sage/combinat/tableau_tuple.py +5353 -0
  314. sage/combinat/tiling.py +2432 -0
  315. sage/combinat/triangles_FHM.py +777 -0
  316. sage/combinat/tutorial.py +1857 -0
  317. sage/combinat/vector_partition.py +337 -0
  318. sage/combinat/words/abstract_word.py +1722 -0
  319. sage/combinat/words/all.py +59 -0
  320. sage/combinat/words/alphabet.py +268 -0
  321. sage/combinat/words/finite_word.py +7201 -0
  322. sage/combinat/words/infinite_word.py +113 -0
  323. sage/combinat/words/lyndon_word.py +652 -0
  324. sage/combinat/words/morphic.py +351 -0
  325. sage/combinat/words/morphism.py +3878 -0
  326. sage/combinat/words/paths.py +2932 -0
  327. sage/combinat/words/shuffle_product.py +278 -0
  328. sage/combinat/words/suffix_trees.py +1873 -0
  329. sage/combinat/words/word.py +769 -0
  330. sage/combinat/words/word_char.cp314t-win_amd64.pyd +0 -0
  331. sage/combinat/words/word_char.pyx +847 -0
  332. sage/combinat/words/word_datatypes.cp314t-win_amd64.pyd +0 -0
  333. sage/combinat/words/word_datatypes.pxd +4 -0
  334. sage/combinat/words/word_datatypes.pyx +1067 -0
  335. sage/combinat/words/word_generators.py +2026 -0
  336. sage/combinat/words/word_infinite_datatypes.py +1218 -0
  337. sage/combinat/words/word_options.py +99 -0
  338. sage/combinat/words/words.py +2396 -0
  339. sage/data_structures/all__sagemath_combinat.py +1 -0
  340. sage/databases/all__sagemath_combinat.py +13 -0
  341. sage/databases/findstat.py +4897 -0
  342. sage/databases/oeis.py +2058 -0
  343. sage/databases/sloane.py +393 -0
  344. sage/dynamics/all__sagemath_combinat.py +14 -0
  345. sage/dynamics/cellular_automata/all.py +7 -0
  346. sage/dynamics/cellular_automata/catalog.py +34 -0
  347. sage/dynamics/cellular_automata/elementary.py +612 -0
  348. sage/dynamics/cellular_automata/glca.py +477 -0
  349. sage/dynamics/cellular_automata/solitons.py +1463 -0
  350. sage/dynamics/finite_dynamical_system.py +1249 -0
  351. sage/dynamics/finite_dynamical_system_catalog.py +382 -0
  352. sage/games/all.py +7 -0
  353. sage/games/hexad.py +704 -0
  354. sage/games/quantumino.py +591 -0
  355. sage/games/sudoku.py +889 -0
  356. sage/games/sudoku_backtrack.cp314t-win_amd64.pyd +0 -0
  357. sage/games/sudoku_backtrack.pyx +189 -0
  358. sage/groups/all__sagemath_combinat.py +1 -0
  359. sage/groups/indexed_free_group.py +489 -0
  360. sage/libs/all__sagemath_combinat.py +6 -0
  361. sage/libs/lrcalc/__init__.py +1 -0
  362. sage/libs/lrcalc/lrcalc.py +525 -0
  363. sage/libs/symmetrica/__init__.py +7 -0
  364. sage/libs/symmetrica/all.py +101 -0
  365. sage/libs/symmetrica/kostka.pxi +168 -0
  366. sage/libs/symmetrica/part.pxi +193 -0
  367. sage/libs/symmetrica/plet.pxi +42 -0
  368. sage/libs/symmetrica/sab.pxi +196 -0
  369. sage/libs/symmetrica/sb.pxi +332 -0
  370. sage/libs/symmetrica/sc.pxi +192 -0
  371. sage/libs/symmetrica/schur.pxi +956 -0
  372. sage/libs/symmetrica/symmetrica.cp314t-win_amd64.pyd +0 -0
  373. sage/libs/symmetrica/symmetrica.pxi +1172 -0
  374. sage/libs/symmetrica/symmetrica.pyx +39 -0
  375. sage/monoids/all.py +13 -0
  376. sage/monoids/automatic_semigroup.py +1054 -0
  377. sage/monoids/free_abelian_monoid.py +315 -0
  378. sage/monoids/free_abelian_monoid_element.cp314t-win_amd64.pyd +0 -0
  379. sage/monoids/free_abelian_monoid_element.pxd +16 -0
  380. sage/monoids/free_abelian_monoid_element.pyx +397 -0
  381. sage/monoids/free_monoid.py +335 -0
  382. sage/monoids/free_monoid_element.py +431 -0
  383. sage/monoids/hecke_monoid.py +65 -0
  384. sage/monoids/string_monoid.py +817 -0
  385. sage/monoids/string_monoid_element.py +547 -0
  386. sage/monoids/string_ops.py +143 -0
  387. sage/monoids/trace_monoid.py +972 -0
  388. sage/rings/all__sagemath_combinat.py +2 -0
  389. sage/sat/all.py +4 -0
  390. sage/sat/boolean_polynomials.py +405 -0
  391. sage/sat/converters/__init__.py +6 -0
  392. sage/sat/converters/anf2cnf.py +14 -0
  393. sage/sat/converters/polybori.py +611 -0
  394. sage/sat/solvers/__init__.py +5 -0
  395. sage/sat/solvers/cryptominisat.py +287 -0
  396. sage/sat/solvers/dimacs.py +783 -0
  397. sage/sat/solvers/picosat.py +228 -0
  398. sage/sat/solvers/sat_lp.py +156 -0
  399. sage/sat/solvers/satsolver.cp314t-win_amd64.pyd +0 -0
  400. sage/sat/solvers/satsolver.pxd +3 -0
  401. sage/sat/solvers/satsolver.pyx +405 -0
@@ -0,0 +1,467 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ # sage.doctest: needs sage.combinat sage.graphs sage.modules
3
+ r"""
4
+ Crystal of Mirković-Vilonen polytopes
5
+
6
+ AUTHORS:
7
+
8
+ - Dinakar Muthiah, Travis Scrimshaw (2015-05-11): initial version
9
+ """
10
+
11
+ #*****************************************************************************
12
+ # Copyright (C) 2015 Dinakar Muthiah <muthiah at ualberta.ca>
13
+ # 2015 Travis Scrimshaw <tscrimsh at umn.edu>
14
+ #
15
+ # This program is free software: you can redistribute it and/or modify
16
+ # it under the terms of the GNU General Public License as published by
17
+ # the Free Software Foundation, either version 2 of the License, or
18
+ # (at your option) any later version.
19
+ # http://www.gnu.org/licenses/
20
+ #*****************************************************************************
21
+ from sage.combinat.crystals.pbw_crystal import PBWCrystalElement, PBWCrystal
22
+
23
+
24
+ class MVPolytope(PBWCrystalElement):
25
+ """
26
+ A Mirković-Vilonen (MV) polytope.
27
+
28
+ EXAMPLES:
29
+
30
+ We can create an animation showing how the MV polytope changes
31
+ under a string of crystal operators::
32
+
33
+ sage: MV = crystals.infinity.MVPolytopes(['C', 2])
34
+ sage: u = MV.highest_weight_vector()
35
+ sage: L = RootSystem(['C',2,1]).ambient_space()
36
+ sage: s = [1,2,1,2,2,2,1,1,1,1,2,1,2,2,1,2]
37
+ sage: BB = [[-9, 2], [-10, 2]]
38
+ sage: p = L.plot(reflection_hyperplanes=False, bounding_box=BB) # long time
39
+ sage: frames = [p + L.plot_mv_polytope(u.f_string(s[:i]), # long time
40
+ ....: circle_size=0.1,
41
+ ....: wireframe='green',
42
+ ....: fill='purple',
43
+ ....: bounding_box=BB)
44
+ ....: for i in range(len(s))]
45
+ sage: for f in frames: # long time
46
+ ....: f.axes(False)
47
+ sage: animate(frames).show(delay=60) # optional -- ImageMagick # long time
48
+ """
49
+
50
+ def _repr_(self):
51
+ """
52
+ Return a string representation of ``self``.
53
+
54
+ EXAMPLES::
55
+
56
+ sage: MV = crystals.infinity.MVPolytopes(['E', 6])
57
+ sage: b = MV.module_generators[0].f_string([1,2,6,4,3,2,5,2])
58
+ sage: b
59
+ MV polytope with Lusztig datum (0, 1, ..., 1, 0, 0, 0, 0, 0, 0, 3, 1)
60
+ """
61
+ pbw_datum = self._pbw_datum.convert_to_new_long_word(self.parent()._default_word)
62
+ return "MV polytope with Lusztig datum {}".format(pbw_datum.lusztig_datum)
63
+
64
+ def _latex_(self):
65
+ r"""
66
+ Return a latex representation of ``self``.
67
+
68
+ EXAMPLES::
69
+
70
+ sage: MV = crystals.infinity.MVPolytopes(['C', 2])
71
+ sage: b = MV.module_generators[0].f_string([1,2,1,2])
72
+ sage: latex(b)
73
+ \begin{tikzpicture}
74
+ \draw (0, 0) -- (0, -2) -- (-1, -3) -- (-1, -3) -- (-2, -2);
75
+ \draw (0, 0) -- (-1, 1) -- (-1, 1) -- (-2, 0) -- (-2, -2);
76
+ \draw[fill=black] (0, 0) circle (0.1);
77
+ \draw[fill=black] (-2, -2) circle (0.1);
78
+ \end{tikzpicture}
79
+ sage: MV = crystals.infinity.MVPolytopes(['D',4])
80
+ sage: b = MV.module_generators[0].f_string([1,2,1,2])
81
+ sage: latex(b)
82
+ \text{\texttt{MV{ }polytope{ }...}}
83
+
84
+ TESTS::
85
+
86
+ sage: MV = crystals.infinity.MVPolytopes(['A',2])
87
+ sage: u = MV.highest_weight_vector()
88
+ sage: b = u.f_string([1,2,2,1])
89
+ sage: latex(b) # needs sage.symbolic
90
+ \begin{tikzpicture}
91
+ \draw (0, 0) -- (3/2, -989/1142) -- (3/2, -2967/1142) -- (0, -1978/571);
92
+ \draw (0, 0) -- (-3/2, -989/1142) -- (-3/2, -2967/1142) -- (0, -1978/571);
93
+ \draw[fill=black] (0, 0) circle (0.1);
94
+ \draw[fill=black] (0, -1978/571) circle (0.1);
95
+ \end{tikzpicture}
96
+ """
97
+ latex_options = self.parent()._latex_options
98
+ P = latex_options['P']
99
+ plot_options = P.plot_parse_options(projection=latex_options["projection"])
100
+ proj = plot_options.projection
101
+ if proj(P.zero()).parent().dimension() != 2:
102
+ from sage.misc.latex import latex
103
+ return latex(repr(self))
104
+
105
+ # We need this to use tikz
106
+ from sage.graphs.graph_latex import setup_latex_preamble
107
+ setup_latex_preamble()
108
+
109
+ pbw_data = self._pbw_datum.parent
110
+ W = pbw_data.weyl_group
111
+ w0 = W.long_element()
112
+ al = P.simple_roots()
113
+ ret = "\\begin{tikzpicture}\n"
114
+
115
+ final = None
116
+ for red in sorted(w0.reduced_words()):
117
+ ret += "\\draw "
118
+ cur = proj(P.zero())
119
+ red = tuple(red)
120
+ ret += str(cur)
121
+ roots = [proj(P.sum(c*al[a] for a,c in root))
122
+ for root in pbw_data._root_list_from(red)]
123
+ datum = pbw_data.convert_to_new_long_word(self._pbw_datum, red)
124
+ for i in reversed(range(len(datum.lusztig_datum))):
125
+ cur -= roots[i] * datum.lusztig_datum[i]
126
+ ret += " -- " + str(cur)
127
+ final = cur
128
+ ret += ";\n"
129
+
130
+ if latex_options["mark_endpoints"]:
131
+ circle_size = latex_options["circle_size"]
132
+ ret += "\\draw[fill=black] {} circle ({});\n".format(proj(P.zero()), circle_size)
133
+ ret += "\\draw[fill=black] {} circle ({});\n".format(final, circle_size)
134
+ ret += "\\end{tikzpicture}"
135
+ return ret
136
+
137
+ def _polytope_vertices(self, P):
138
+ """
139
+ Return a list of the vertices of ``self`` in ``P``.
140
+
141
+ EXAMPLES::
142
+
143
+ sage: MV = crystals.infinity.MVPolytopes(['C', 3])
144
+ sage: b = MV.module_generators[0].f_string([1,2,1,2])
145
+ sage: sorted(b._polytope_vertices(MV.weight_lattice_realization()), key=attrcall('to_vector'))
146
+ [(0, 0, 0), (0, 2, -2), (2, 0, -2)]
147
+
148
+ sage: MV = crystals.infinity.MVPolytopes(['D', 4])
149
+ sage: b = MV.module_generators[0].f_string([1,2,3,4])
150
+ sage: P = RootSystem(['D',4]).weight_lattice()
151
+ sage: sorted(b._polytope_vertices(P), key=attrcall('to_vector')) # long time
152
+ [-Lambda[1] + Lambda[3] + Lambda[4],
153
+ -2*Lambda[2] + 2*Lambda[3] + 2*Lambda[4],
154
+ -Lambda[2] + 2*Lambda[4],
155
+ -Lambda[2] + 2*Lambda[3],
156
+ 0,
157
+ Lambda[1] - Lambda[2] + Lambda[3] + Lambda[4]]
158
+ """
159
+ pbw_data = self._pbw_datum.parent
160
+ W = pbw_data.weyl_group
161
+ w0 = W.long_element()
162
+ al = P.simple_roots()
163
+
164
+ vertices = set([P.zero()])
165
+ for red in sorted(w0.reduced_words()):
166
+ cur = P.zero()
167
+ red = tuple(red)
168
+ roots = [P.sum(c*al[a] for a,c in root)
169
+ for root in pbw_data._root_list_from(red)]
170
+ datum = pbw_data.convert_to_new_long_word(self._pbw_datum, red)
171
+ for i,c in enumerate(datum.lusztig_datum):
172
+ cur = cur + roots[i] * c
173
+ vertices.add(cur)
174
+ return list(vertices)
175
+
176
+ def polytope(self, P=None):
177
+ """
178
+ Return a polytope of ``self``.
179
+
180
+ INPUT:
181
+
182
+ - ``P`` -- (optional) a space to realize the polytope; default is
183
+ the weight lattice realization of the crystal
184
+
185
+ EXAMPLES::
186
+
187
+ sage: MV = crystals.infinity.MVPolytopes(['C', 3])
188
+ sage: b = MV.module_generators[0].f_string([3,2,3,2,1])
189
+ sage: P = b.polytope(); P
190
+ A 3-dimensional polyhedron in QQ^3 defined as the convex hull of 6 vertices
191
+ sage: P.vertices()
192
+ (A vertex at (0, 0, 0),
193
+ A vertex at (0, 1, -1),
194
+ A vertex at (0, 1, 1),
195
+ A vertex at (1, -1, 0),
196
+ A vertex at (1, 1, -2),
197
+ A vertex at (1, 1, 2))
198
+ """
199
+ if P is None:
200
+ P = self.parent().weight_lattice_realization()
201
+
202
+ from sage.geometry.polyhedron.constructor import Polyhedron
203
+ return Polyhedron([v.to_vector() for v in self._polytope_vertices(P)])
204
+
205
+ def plot(self, P=None, **options):
206
+ """
207
+ Plot ``self``.
208
+
209
+ INPUT:
210
+
211
+ - ``P`` -- (optional) a space to realize the polytope; default is
212
+ the weight lattice realization of the crystal
213
+
214
+ .. SEEALSO::
215
+
216
+ :meth:`~sage.combinat.root_system.root_lattice_realizations.RootLatticeRealizations.ParentMethods.plot_mv_polytope`
217
+
218
+ EXAMPLES::
219
+
220
+ sage: MV = crystals.infinity.MVPolytopes(['C', 2])
221
+ sage: b = MV.highest_weight_vector().f_string([1,2,1,2,2,2,1,1,1,1,2,1])
222
+ sage: b.plot() # needs sage.plot
223
+ Graphics object consisting of 12 graphics primitives
224
+
225
+ Here is the above example placed inside the ambient space
226
+ of type `C_2`:
227
+
228
+ .. PLOT::
229
+ :width: 300 px
230
+
231
+ MV = crystals.infinity.MVPolytopes(['C', 2])
232
+ b = MV.highest_weight_vector().f_string([1,2,1,2,2,2,1,1,1,1,2,1])
233
+ L = RootSystem(['C', 2, 1]).ambient_space()
234
+ p = L.plot(reflection_hyperplanes=False, bounding_box=[[-8,2], [-8,2]])
235
+ p += b.plot()
236
+ p.axes(False)
237
+ sphinx_plot(p)
238
+ """
239
+ if P is None:
240
+ P = self.parent().weight_lattice_realization()
241
+ return P.plot_mv_polytope(self, **options)
242
+
243
+
244
+ class MVPolytopes(PBWCrystal):
245
+ r"""
246
+ The crystal of Mirković-Vilonen (MV) polytopes.
247
+
248
+ Let `W` denote the corresponding Weyl group and `P_{\RR} = \RR \otimes P`.
249
+ Let `\Gamma = \{ w \Lambda_i \mid w \in W, i \in I \}`. Consider
250
+ `M = (M_{\gamma} \in \ZZ)_{\gamma \in \Gamma}` that satisfy the
251
+ *tropical Plücker relations* (see Proposition 7.1 of [BZ01]_).
252
+ The *MV polytope* is defined as
253
+
254
+ .. MATH::
255
+
256
+ P(M) = \{ \alpha \in P_{\RR} \mid
257
+ \langle \alpha, \gamma \rangle \geq M_{\gamma}
258
+ \text{ for all } \gamma \in \Gamma \}.
259
+
260
+ The vertices `\{\mu_w\}_{w \in W}` are given by
261
+
262
+ .. MATH::
263
+
264
+ \langle \mu_w, \gamma \rangle = M_{\gamma}
265
+
266
+ and are known as the GGMS datum of the MV polytope.
267
+
268
+ Each path from `\mu_e` to `\mu_{w_0}` corresponds to a reduced
269
+ expression `\mathbf{i} = (i_1, \ldots, i_m)` for `w_0` and the
270
+ corresponding edge lengths `(n_k)_{k=1}^m` from the Lusztig datum
271
+ with respect to `\mathbf{i}`. Explicitly, we have
272
+
273
+ .. MATH::
274
+
275
+ \begin{aligned}
276
+ n_k & = -M_{w_{k-1} \Lambda_{i_k}} - M_{w_k \Lambda_{i_k}}
277
+ - \sum_{j \neq i} a_{ji} M_{w_k \Lambda_j},
278
+ \\ \mu_{w_k} - \mu_{w_{k-1}} & = n_k w_{k-1} \alpha_{i_k},
279
+ \end{aligned}
280
+
281
+ where `w_k = s_{i_1} \cdots s_{i_k}` and `(a_{ji})` is the Cartan matrix.
282
+
283
+ MV polytopes have a crystal structure that corresponds to the
284
+ crystal structure, which is isomorphic to `\mathcal{B}(\infty)`
285
+ with `\mu_{w_0} = 0`, on
286
+ :class:`PBW data <sage.combinat.crystals.pbw_crystal.PBWCrystal>`.
287
+ Specifically, we have `f_j P(M)` as being the unique MV polytope
288
+ given by shifting `\mu_e` by `-\alpha_j` and fixing the vertices
289
+ `\mu_w` when `s_j w < w` (in Bruhat order) and the weight is given by
290
+ `\mu_e`. Furthermore, the `*`-involution is given by negating `P(M)`.
291
+
292
+ INPUT:
293
+
294
+ - ``cartan_type`` -- a Cartan type
295
+
296
+ EXAMPLES::
297
+
298
+ sage: MV = crystals.infinity.MVPolytopes(['B', 3])
299
+ sage: hw = MV.highest_weight_vector()
300
+ sage: x = hw.f_string([1,2,2,3,3,1,3,3,2,3,2,1,3,1,2,3,1,2,1,3,2]); x
301
+ MV polytope with Lusztig datum (1, 1, 1, 3, 1, 0, 0, 1, 1)
302
+
303
+ Elements are expressed in terms of Lusztig datum for a fixed
304
+ reduced expression of `w_0`::
305
+
306
+ sage: MV.default_long_word()
307
+ [1, 3, 2, 3, 1, 2, 3, 1, 2]
308
+ sage: MV.set_default_long_word([2,1,3,2,1,3,2,3,1])
309
+ sage: x
310
+ MV polytope with Lusztig datum (3, 1, 1, 0, 1, 0, 1, 3, 4)
311
+ sage: MV.set_default_long_word([1, 3, 2, 3, 1, 2, 3, 1, 2])
312
+
313
+ We can construct elements by giving it Lusztig data (with respect
314
+ to the default long word reduced expression)::
315
+
316
+ sage: MV([1,1,1,3,1,0,0,1,1])
317
+ MV polytope with Lusztig datum (1, 1, 1, 3, 1, 0, 0, 1, 1)
318
+
319
+ We can also construct elements by passing in a reduced expression
320
+ for a long word::
321
+
322
+ sage: x = MV([1,1,1,3,1,0,0,1,1], [3,2,1,3,2,3,2,1,2]); x
323
+ MV polytope with Lusztig datum (1, 1, 1, 0, 1, 0, 5, 1, 1)
324
+ sage: x.to_highest_weight()[1]
325
+ [1, 2, 2, 2, 2, 2, 1, 3, 3, 3, 3, 2, 3, 2, 3, 3, 2, 3, 3, 2, 1, 3]
326
+
327
+ The highest weight crystal `B(\lambda) \subseteq B(\infty)` is
328
+ characterized by the MV polytopes that sit inside of `W \lambda`
329
+ (translating `\mu_{w_0} \mapsto \lambda`)::
330
+
331
+ sage: MV = crystals.infinity.MVPolytopes(['A',2])
332
+ sage: La = MV.weight_lattice_realization().fundamental_weights()
333
+ sage: R = crystals.elementary.R(La[1]+La[2])
334
+ sage: T = tensor([R, MV])
335
+ sage: x = T(R.module_generators[0], MV.highest_weight_vector())
336
+ sage: lw = x.to_lowest_weight()[0]; lw
337
+ [(2, 1, 0), MV polytope with Lusztig datum (1, 1, 1)]
338
+ sage: lw[1].polytope().vertices()
339
+ (A vertex at (0, 0, 0),
340
+ A vertex at (0, 1, -1),
341
+ A vertex at (1, -1, 0),
342
+ A vertex at (1, 1, -2),
343
+ A vertex at (2, -1, -1),
344
+ A vertex at (2, 0, -2))
345
+
346
+ .. PLOT::
347
+ :width: 300 px
348
+
349
+ MV = crystals.infinity.MVPolytopes(['A',2])
350
+ x = MV.module_generators[0].f_string([1,2,2,1])
351
+ L = RootSystem(['A',2,1]).ambient_space()
352
+ p = L.plot(bounding_box=[[-2,2],[-4,2]]) + x.plot()
353
+ p.axes(False)
354
+ sphinx_plot(x.plot())
355
+
356
+ REFERENCES:
357
+
358
+ - [Kam2007]_
359
+ - [Kam2010]_
360
+ """
361
+
362
+ def __init__(self, cartan_type):
363
+ """
364
+ Initialize ``self``.
365
+
366
+ EXAMPLES::
367
+
368
+ sage: MV = crystals.infinity.MVPolytopes(['B', 2])
369
+ sage: TestSuite(MV).run()
370
+ """
371
+ PBWCrystal.__init__(self, cartan_type)
372
+ self._latex_options = {"projection": True,
373
+ "mark_endpoints": True,
374
+ "P": self.weight_lattice_realization(),
375
+ "circle_size": 0.1}
376
+
377
+ def _repr_(self):
378
+ """
379
+ Return a string representation of ``self``.
380
+
381
+ EXAMPLES::
382
+
383
+ sage: crystals.infinity.MVPolytopes(['F', 4])
384
+ MV polytopes of type ['F', 4]
385
+ """
386
+ return "MV polytopes of type {}".format(self._cartan_type)
387
+
388
+ def set_latex_options(self, **kwds):
389
+ r"""
390
+ Set the latex options for the elements of ``self``.
391
+
392
+ INPUT:
393
+
394
+ - ``projection`` -- the projection; set to ``True`` to use the
395
+ default projection of the specified weight lattice realization
396
+ (initial: ``True``)
397
+ - ``P`` -- the weight lattice realization to use (initial: the
398
+ weight lattice realization of ``self``)
399
+ - ``mark_endpoints`` -- whether to mark the endpoints (initial: ``True``)
400
+ - ``circle_size`` -- the size of the endpoint circles (initial: 0.1)
401
+
402
+ EXAMPLES::
403
+
404
+ sage: MV = crystals.infinity.MVPolytopes(['C', 2])
405
+ sage: P = RootSystem(['C', 2]).weight_lattice()
406
+ sage: b = MV.highest_weight_vector().f_string([1,2,1,2])
407
+ sage: latex(b)
408
+ \begin{tikzpicture}
409
+ \draw (0, 0) -- (0, -2) -- (-1, -3) -- (-1, -3) -- (-2, -2);
410
+ \draw (0, 0) -- (-1, 1) -- (-1, 1) -- (-2, 0) -- (-2, -2);
411
+ \draw[fill=black] (0, 0) circle (0.1);
412
+ \draw[fill=black] (-2, -2) circle (0.1);
413
+ \end{tikzpicture}
414
+ sage: MV.set_latex_options(P=P, circle_size=float(0.2))
415
+ sage: latex(b)
416
+ \begin{tikzpicture}
417
+ \draw (0, 0) -- (2, -2) -- (2, -3) -- (2, -3) -- (0, -2);
418
+ \draw (0, 0) -- (-2, 1) -- (-2, 1) -- (-2, 0) -- (0, -2);
419
+ \draw[fill=black] (0, 0) circle (0.2);
420
+ \draw[fill=black] (0, -2) circle (0.2);
421
+ \end{tikzpicture}
422
+ sage: MV.set_latex_options(mark_endpoints=False)
423
+ sage: latex(b)
424
+ \begin{tikzpicture}
425
+ \draw (0, 0) -- (2, -2) -- (2, -3) -- (2, -3) -- (0, -2);
426
+ \draw (0, 0) -- (-2, 1) -- (-2, 1) -- (-2, 0) -- (0, -2);
427
+ \end{tikzpicture}
428
+ sage: MV.set_latex_options(P=MV.weight_lattice_realization(),
429
+ ....: circle_size=0.2,
430
+ ....: mark_endpoints=True)
431
+ """
432
+ if "projection" in kwds:
433
+ self._latex_options["projection"] = True
434
+ del kwds["projection"]
435
+
436
+ if 'P' in kwds:
437
+ self._latex_options['P'] = kwds['P']
438
+ del kwds['P']
439
+
440
+ if "mark_endpoints" in kwds:
441
+ self._latex_options["mark_endpoints"] = kwds["mark_endpoints"]
442
+ del kwds["mark_endpoints"]
443
+
444
+ if "circle_size" in kwds:
445
+ self._latex_options["circle_size"] = kwds["circle_size"]
446
+ del kwds["circle_size"]
447
+
448
+ if kwds:
449
+ raise ValueError("invalid latex option")
450
+
451
+ def latex_options(self):
452
+ """
453
+ Return the latex options of ``self``.
454
+
455
+ EXAMPLES::
456
+
457
+ sage: MV = crystals.infinity.MVPolytopes(['F', 4])
458
+ sage: MV.latex_options()
459
+ {'P': Ambient space of the Root system of type ['F', 4],
460
+ 'circle_size': 0.1,
461
+ 'mark_endpoints': True,
462
+ 'projection': True}
463
+ """
464
+ from copy import copy
465
+ return copy(self._latex_options)
466
+
467
+ Element = MVPolytope