passagemath-combinat 10.6.42__cp314-cp314-musllinux_1_2_x86_64.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 (400) hide show
  1. passagemath_combinat/__init__.py +3 -0
  2. passagemath_combinat-10.6.42.dist-info/METADATA +160 -0
  3. passagemath_combinat-10.6.42.dist-info/RECORD +400 -0
  4. passagemath_combinat-10.6.42.dist-info/WHEEL +5 -0
  5. passagemath_combinat-10.6.42.dist-info/top_level.txt +3 -0
  6. passagemath_combinat.libs/libgmp-0e7fc84e.so.10.5.0 +0 -0
  7. passagemath_combinat.libs/libsymmetrica-81fe8739.so.3.0.0 +0 -0
  8. sage/algebras/affine_nil_temperley_lieb.py +263 -0
  9. sage/algebras/all.py +24 -0
  10. sage/algebras/all__sagemath_combinat.py +35 -0
  11. sage/algebras/askey_wilson.py +935 -0
  12. sage/algebras/associated_graded.py +345 -0
  13. sage/algebras/cellular_basis.py +350 -0
  14. sage/algebras/cluster_algebra.py +2766 -0
  15. sage/algebras/down_up_algebra.py +860 -0
  16. sage/algebras/free_algebra.py +1698 -0
  17. sage/algebras/free_algebra_element.py +345 -0
  18. sage/algebras/free_algebra_quotient.py +405 -0
  19. sage/algebras/free_algebra_quotient_element.py +295 -0
  20. sage/algebras/free_zinbiel_algebra.py +885 -0
  21. sage/algebras/hall_algebra.py +783 -0
  22. sage/algebras/hecke_algebras/all.py +4 -0
  23. sage/algebras/hecke_algebras/ariki_koike_algebra.py +1796 -0
  24. sage/algebras/hecke_algebras/ariki_koike_specht_modules.py +475 -0
  25. sage/algebras/hecke_algebras/cubic_hecke_algebra.py +3520 -0
  26. sage/algebras/hecke_algebras/cubic_hecke_base_ring.py +1473 -0
  27. sage/algebras/hecke_algebras/cubic_hecke_matrix_rep.py +1079 -0
  28. sage/algebras/iwahori_hecke_algebra.py +3095 -0
  29. sage/algebras/jordan_algebra.py +1773 -0
  30. sage/algebras/lie_conformal_algebras/abelian_lie_conformal_algebra.py +113 -0
  31. sage/algebras/lie_conformal_algebras/affine_lie_conformal_algebra.py +156 -0
  32. sage/algebras/lie_conformal_algebras/all.py +18 -0
  33. sage/algebras/lie_conformal_algebras/bosonic_ghosts_lie_conformal_algebra.py +134 -0
  34. sage/algebras/lie_conformal_algebras/examples.py +43 -0
  35. sage/algebras/lie_conformal_algebras/fermionic_ghosts_lie_conformal_algebra.py +131 -0
  36. sage/algebras/lie_conformal_algebras/finitely_freely_generated_lca.py +139 -0
  37. sage/algebras/lie_conformal_algebras/free_bosons_lie_conformal_algebra.py +174 -0
  38. sage/algebras/lie_conformal_algebras/free_fermions_lie_conformal_algebra.py +167 -0
  39. sage/algebras/lie_conformal_algebras/freely_generated_lie_conformal_algebra.py +107 -0
  40. sage/algebras/lie_conformal_algebras/graded_lie_conformal_algebra.py +135 -0
  41. sage/algebras/lie_conformal_algebras/lie_conformal_algebra.py +353 -0
  42. sage/algebras/lie_conformal_algebras/lie_conformal_algebra_element.py +236 -0
  43. sage/algebras/lie_conformal_algebras/lie_conformal_algebra_with_basis.py +78 -0
  44. sage/algebras/lie_conformal_algebras/lie_conformal_algebra_with_structure_coefs.py +328 -0
  45. sage/algebras/lie_conformal_algebras/n2_lie_conformal_algebra.py +117 -0
  46. sage/algebras/lie_conformal_algebras/neveu_schwarz_lie_conformal_algebra.py +86 -0
  47. sage/algebras/lie_conformal_algebras/virasoro_lie_conformal_algebra.py +82 -0
  48. sage/algebras/lie_conformal_algebras/weyl_lie_conformal_algebra.py +205 -0
  49. sage/algebras/nil_coxeter_algebra.py +191 -0
  50. sage/algebras/q_commuting_polynomials.py +673 -0
  51. sage/algebras/q_system.py +608 -0
  52. sage/algebras/quantum_clifford.py +959 -0
  53. sage/algebras/quantum_groups/ace_quantum_onsager.py +693 -0
  54. sage/algebras/quantum_groups/all.py +9 -0
  55. sage/algebras/quantum_groups/fock_space.py +2219 -0
  56. sage/algebras/quantum_groups/q_numbers.py +207 -0
  57. sage/algebras/quantum_groups/quantum_group_gap.py +2695 -0
  58. sage/algebras/quantum_groups/representations.py +591 -0
  59. sage/algebras/quantum_matrix_coordinate_algebra.py +1006 -0
  60. sage/algebras/quantum_oscillator.py +623 -0
  61. sage/algebras/quaternion_algebra.py +20 -0
  62. sage/algebras/quaternion_algebra_element.py +55 -0
  63. sage/algebras/rational_cherednik_algebra.py +525 -0
  64. sage/algebras/schur_algebra.py +670 -0
  65. sage/algebras/shuffle_algebra.py +1011 -0
  66. sage/algebras/splitting_algebra.py +779 -0
  67. sage/algebras/tensor_algebra.py +709 -0
  68. sage/algebras/yangian.py +1082 -0
  69. sage/algebras/yokonuma_hecke_algebra.py +1018 -0
  70. sage/all__sagemath_combinat.py +35 -0
  71. sage/combinat/SJT.py +255 -0
  72. sage/combinat/affine_permutation.py +2405 -0
  73. sage/combinat/algebraic_combinatorics.py +55 -0
  74. sage/combinat/all.py +53 -0
  75. sage/combinat/all__sagemath_combinat.py +195 -0
  76. sage/combinat/alternating_sign_matrix.py +2063 -0
  77. sage/combinat/baxter_permutations.py +346 -0
  78. sage/combinat/bijectionist.py +3220 -0
  79. sage/combinat/binary_recurrence_sequences.py +1180 -0
  80. sage/combinat/blob_algebra.py +685 -0
  81. sage/combinat/catalog_partitions.py +27 -0
  82. sage/combinat/chas/all.py +23 -0
  83. sage/combinat/chas/fsym.py +1180 -0
  84. sage/combinat/chas/wqsym.py +2601 -0
  85. sage/combinat/cluster_complex.py +326 -0
  86. sage/combinat/colored_permutations.py +2039 -0
  87. sage/combinat/colored_permutations_representations.py +964 -0
  88. sage/combinat/composition_signed.py +142 -0
  89. sage/combinat/composition_tableau.py +855 -0
  90. sage/combinat/constellation.py +1729 -0
  91. sage/combinat/core.py +751 -0
  92. sage/combinat/counting.py +12 -0
  93. sage/combinat/crystals/affine.py +742 -0
  94. sage/combinat/crystals/affine_factorization.py +518 -0
  95. sage/combinat/crystals/affinization.py +331 -0
  96. sage/combinat/crystals/alcove_path.py +2013 -0
  97. sage/combinat/crystals/all.py +22 -0
  98. sage/combinat/crystals/bkk_crystals.py +141 -0
  99. sage/combinat/crystals/catalog.py +115 -0
  100. sage/combinat/crystals/catalog_elementary_crystals.py +18 -0
  101. sage/combinat/crystals/catalog_infinity_crystals.py +33 -0
  102. sage/combinat/crystals/catalog_kirillov_reshetikhin.py +18 -0
  103. sage/combinat/crystals/crystals.py +257 -0
  104. sage/combinat/crystals/direct_sum.py +260 -0
  105. sage/combinat/crystals/elementary_crystals.py +1251 -0
  106. sage/combinat/crystals/fast_crystals.py +441 -0
  107. sage/combinat/crystals/fully_commutative_stable_grothendieck.py +1205 -0
  108. sage/combinat/crystals/generalized_young_walls.py +1076 -0
  109. sage/combinat/crystals/highest_weight_crystals.py +436 -0
  110. sage/combinat/crystals/induced_structure.py +695 -0
  111. sage/combinat/crystals/infinity_crystals.py +730 -0
  112. sage/combinat/crystals/kac_modules.py +863 -0
  113. sage/combinat/crystals/kirillov_reshetikhin.py +4196 -0
  114. sage/combinat/crystals/kyoto_path_model.py +497 -0
  115. sage/combinat/crystals/letters.cpython-314-x86_64-linux-musl.so +0 -0
  116. sage/combinat/crystals/letters.pxd +79 -0
  117. sage/combinat/crystals/letters.pyx +3056 -0
  118. sage/combinat/crystals/littelmann_path.py +1518 -0
  119. sage/combinat/crystals/monomial_crystals.py +1262 -0
  120. sage/combinat/crystals/multisegments.py +462 -0
  121. sage/combinat/crystals/mv_polytopes.py +467 -0
  122. sage/combinat/crystals/pbw_crystal.py +511 -0
  123. sage/combinat/crystals/pbw_datum.cpython-314-x86_64-linux-musl.so +0 -0
  124. sage/combinat/crystals/pbw_datum.pxd +4 -0
  125. sage/combinat/crystals/pbw_datum.pyx +487 -0
  126. sage/combinat/crystals/polyhedral_realization.py +372 -0
  127. sage/combinat/crystals/spins.cpython-314-x86_64-linux-musl.so +0 -0
  128. sage/combinat/crystals/spins.pxd +21 -0
  129. sage/combinat/crystals/spins.pyx +756 -0
  130. sage/combinat/crystals/star_crystal.py +290 -0
  131. sage/combinat/crystals/subcrystal.py +464 -0
  132. sage/combinat/crystals/tensor_product.py +1177 -0
  133. sage/combinat/crystals/tensor_product_element.cpython-314-x86_64-linux-musl.so +0 -0
  134. sage/combinat/crystals/tensor_product_element.pxd +35 -0
  135. sage/combinat/crystals/tensor_product_element.pyx +1870 -0
  136. sage/combinat/crystals/virtual_crystal.py +420 -0
  137. sage/combinat/cyclic_sieving_phenomenon.py +204 -0
  138. sage/combinat/debruijn_sequence.cpython-314-x86_64-linux-musl.so +0 -0
  139. sage/combinat/debruijn_sequence.pyx +355 -0
  140. sage/combinat/decorated_permutation.py +270 -0
  141. sage/combinat/degree_sequences.cpython-314-x86_64-linux-musl.so +0 -0
  142. sage/combinat/degree_sequences.pyx +588 -0
  143. sage/combinat/derangements.py +527 -0
  144. sage/combinat/descent_algebra.py +1008 -0
  145. sage/combinat/diagram.py +1551 -0
  146. sage/combinat/diagram_algebras.py +5886 -0
  147. sage/combinat/dyck_word.py +4349 -0
  148. sage/combinat/e_one_star.py +1623 -0
  149. sage/combinat/enumerated_sets.py +123 -0
  150. sage/combinat/expnums.cpython-314-x86_64-linux-musl.so +0 -0
  151. sage/combinat/expnums.pyx +148 -0
  152. sage/combinat/fast_vector_partitions.cpython-314-x86_64-linux-musl.so +0 -0
  153. sage/combinat/fast_vector_partitions.pyx +346 -0
  154. sage/combinat/fqsym.py +1977 -0
  155. sage/combinat/free_dendriform_algebra.py +954 -0
  156. sage/combinat/free_prelie_algebra.py +1141 -0
  157. sage/combinat/fully_commutative_elements.py +1077 -0
  158. sage/combinat/fully_packed_loop.py +1523 -0
  159. sage/combinat/gelfand_tsetlin_patterns.py +1409 -0
  160. sage/combinat/gray_codes.py +311 -0
  161. sage/combinat/grossman_larson_algebras.py +667 -0
  162. sage/combinat/growth.py +4352 -0
  163. sage/combinat/hall_polynomial.py +188 -0
  164. sage/combinat/hillman_grassl.py +866 -0
  165. sage/combinat/integer_matrices.py +329 -0
  166. sage/combinat/integer_vectors_mod_permgroup.py +1238 -0
  167. sage/combinat/k_tableau.py +4564 -0
  168. sage/combinat/kazhdan_lusztig.py +215 -0
  169. sage/combinat/key_polynomial.py +885 -0
  170. sage/combinat/knutson_tao_puzzles.py +2286 -0
  171. sage/combinat/lr_tableau.py +311 -0
  172. sage/combinat/matrices/all.py +24 -0
  173. sage/combinat/matrices/hadamard_matrix.py +3790 -0
  174. sage/combinat/matrices/latin.py +2912 -0
  175. sage/combinat/misc.py +401 -0
  176. sage/combinat/multiset_partition_into_sets_ordered.py +3541 -0
  177. sage/combinat/ncsf_qsym/all.py +21 -0
  178. sage/combinat/ncsf_qsym/combinatorics.py +317 -0
  179. sage/combinat/ncsf_qsym/generic_basis_code.py +1427 -0
  180. sage/combinat/ncsf_qsym/ncsf.py +5637 -0
  181. sage/combinat/ncsf_qsym/qsym.py +4053 -0
  182. sage/combinat/ncsf_qsym/tutorial.py +447 -0
  183. sage/combinat/ncsym/all.py +21 -0
  184. sage/combinat/ncsym/bases.py +855 -0
  185. sage/combinat/ncsym/dual.py +593 -0
  186. sage/combinat/ncsym/ncsym.py +2076 -0
  187. sage/combinat/necklace.py +551 -0
  188. sage/combinat/non_decreasing_parking_function.py +634 -0
  189. sage/combinat/nu_dyck_word.py +1474 -0
  190. sage/combinat/output.py +861 -0
  191. sage/combinat/parallelogram_polyomino.py +4326 -0
  192. sage/combinat/parking_functions.py +1602 -0
  193. sage/combinat/partition_algebra.py +1998 -0
  194. sage/combinat/partition_kleshchev.py +1982 -0
  195. sage/combinat/partition_shifting_algebras.py +584 -0
  196. sage/combinat/partition_tuple.py +3114 -0
  197. sage/combinat/path_tableaux/all.py +13 -0
  198. sage/combinat/path_tableaux/catalog.py +29 -0
  199. sage/combinat/path_tableaux/dyck_path.py +380 -0
  200. sage/combinat/path_tableaux/frieze.py +476 -0
  201. sage/combinat/path_tableaux/path_tableau.py +728 -0
  202. sage/combinat/path_tableaux/semistandard.py +510 -0
  203. sage/combinat/perfect_matching.py +779 -0
  204. sage/combinat/plane_partition.py +3300 -0
  205. sage/combinat/q_bernoulli.cpython-314-x86_64-linux-musl.so +0 -0
  206. sage/combinat/q_bernoulli.pyx +128 -0
  207. sage/combinat/quickref.py +81 -0
  208. sage/combinat/recognizable_series.py +2051 -0
  209. sage/combinat/regular_sequence.py +4316 -0
  210. sage/combinat/regular_sequence_bounded.py +543 -0
  211. sage/combinat/restricted_growth.py +81 -0
  212. sage/combinat/ribbon.py +20 -0
  213. sage/combinat/ribbon_shaped_tableau.py +489 -0
  214. sage/combinat/ribbon_tableau.py +1180 -0
  215. sage/combinat/rigged_configurations/all.py +46 -0
  216. sage/combinat/rigged_configurations/bij_abstract_class.py +548 -0
  217. sage/combinat/rigged_configurations/bij_infinity.py +370 -0
  218. sage/combinat/rigged_configurations/bij_type_A.py +163 -0
  219. sage/combinat/rigged_configurations/bij_type_A2_dual.py +338 -0
  220. sage/combinat/rigged_configurations/bij_type_A2_even.py +218 -0
  221. sage/combinat/rigged_configurations/bij_type_A2_odd.py +199 -0
  222. sage/combinat/rigged_configurations/bij_type_B.py +900 -0
  223. sage/combinat/rigged_configurations/bij_type_C.py +267 -0
  224. sage/combinat/rigged_configurations/bij_type_D.py +771 -0
  225. sage/combinat/rigged_configurations/bij_type_D_tri.py +392 -0
  226. sage/combinat/rigged_configurations/bij_type_D_twisted.py +576 -0
  227. sage/combinat/rigged_configurations/bij_type_E67.py +402 -0
  228. sage/combinat/rigged_configurations/bijection.py +143 -0
  229. sage/combinat/rigged_configurations/kleber_tree.py +1475 -0
  230. sage/combinat/rigged_configurations/kr_tableaux.py +1898 -0
  231. sage/combinat/rigged_configurations/rc_crystal.py +461 -0
  232. sage/combinat/rigged_configurations/rc_infinity.py +540 -0
  233. sage/combinat/rigged_configurations/rigged_configuration_element.py +2403 -0
  234. sage/combinat/rigged_configurations/rigged_configurations.py +1918 -0
  235. sage/combinat/rigged_configurations/rigged_partition.cpython-314-x86_64-linux-musl.so +0 -0
  236. sage/combinat/rigged_configurations/rigged_partition.pxd +15 -0
  237. sage/combinat/rigged_configurations/rigged_partition.pyx +680 -0
  238. sage/combinat/rigged_configurations/tensor_product_kr_tableaux.py +499 -0
  239. sage/combinat/rigged_configurations/tensor_product_kr_tableaux_element.py +428 -0
  240. sage/combinat/rsk.py +3438 -0
  241. sage/combinat/schubert_polynomial.py +508 -0
  242. sage/combinat/set_partition.py +3318 -0
  243. sage/combinat/set_partition_iterator.cpython-314-x86_64-linux-musl.so +0 -0
  244. sage/combinat/set_partition_iterator.pyx +136 -0
  245. sage/combinat/set_partition_ordered.py +1590 -0
  246. sage/combinat/sf/abreu_nigro.py +346 -0
  247. sage/combinat/sf/all.py +52 -0
  248. sage/combinat/sf/character.py +576 -0
  249. sage/combinat/sf/classical.py +319 -0
  250. sage/combinat/sf/dual.py +996 -0
  251. sage/combinat/sf/elementary.py +549 -0
  252. sage/combinat/sf/hall_littlewood.py +1028 -0
  253. sage/combinat/sf/hecke.py +336 -0
  254. sage/combinat/sf/homogeneous.py +464 -0
  255. sage/combinat/sf/jack.py +1428 -0
  256. sage/combinat/sf/k_dual.py +1458 -0
  257. sage/combinat/sf/kfpoly.py +447 -0
  258. sage/combinat/sf/llt.py +789 -0
  259. sage/combinat/sf/macdonald.py +2019 -0
  260. sage/combinat/sf/monomial.py +525 -0
  261. sage/combinat/sf/multiplicative.py +113 -0
  262. sage/combinat/sf/new_kschur.py +1786 -0
  263. sage/combinat/sf/ns_macdonald.py +964 -0
  264. sage/combinat/sf/orthogonal.py +246 -0
  265. sage/combinat/sf/orthotriang.py +355 -0
  266. sage/combinat/sf/powersum.py +963 -0
  267. sage/combinat/sf/schur.py +880 -0
  268. sage/combinat/sf/sf.py +1653 -0
  269. sage/combinat/sf/sfa.py +7053 -0
  270. sage/combinat/sf/symplectic.py +253 -0
  271. sage/combinat/sf/witt.py +721 -0
  272. sage/combinat/shifted_primed_tableau.py +2735 -0
  273. sage/combinat/shuffle.py +830 -0
  274. sage/combinat/sidon_sets.py +146 -0
  275. sage/combinat/similarity_class_type.py +1721 -0
  276. sage/combinat/sine_gordon.py +618 -0
  277. sage/combinat/six_vertex_model.py +784 -0
  278. sage/combinat/skew_partition.py +2053 -0
  279. sage/combinat/skew_tableau.py +2989 -0
  280. sage/combinat/sloane_functions.py +8935 -0
  281. sage/combinat/specht_module.py +1403 -0
  282. sage/combinat/species/all.py +48 -0
  283. sage/combinat/species/characteristic_species.py +321 -0
  284. sage/combinat/species/composition_species.py +273 -0
  285. sage/combinat/species/cycle_species.py +284 -0
  286. sage/combinat/species/empty_species.py +155 -0
  287. sage/combinat/species/functorial_composition_species.py +148 -0
  288. sage/combinat/species/generating_series.py +673 -0
  289. sage/combinat/species/library.py +148 -0
  290. sage/combinat/species/linear_order_species.py +169 -0
  291. sage/combinat/species/misc.py +83 -0
  292. sage/combinat/species/partition_species.py +290 -0
  293. sage/combinat/species/permutation_species.py +268 -0
  294. sage/combinat/species/product_species.py +423 -0
  295. sage/combinat/species/recursive_species.py +476 -0
  296. sage/combinat/species/set_species.py +192 -0
  297. sage/combinat/species/species.py +820 -0
  298. sage/combinat/species/structure.py +539 -0
  299. sage/combinat/species/subset_species.py +243 -0
  300. sage/combinat/species/sum_species.py +225 -0
  301. sage/combinat/subword.py +564 -0
  302. sage/combinat/subword_complex.py +2122 -0
  303. sage/combinat/subword_complex_c.cpython-314-x86_64-linux-musl.so +0 -0
  304. sage/combinat/subword_complex_c.pyx +119 -0
  305. sage/combinat/super_tableau.py +821 -0
  306. sage/combinat/superpartition.py +1154 -0
  307. sage/combinat/symmetric_group_algebra.py +3774 -0
  308. sage/combinat/symmetric_group_representations.py +1830 -0
  309. sage/combinat/t_sequences.py +877 -0
  310. sage/combinat/tableau.py +9506 -0
  311. sage/combinat/tableau_residues.py +860 -0
  312. sage/combinat/tableau_tuple.py +5353 -0
  313. sage/combinat/tiling.py +2432 -0
  314. sage/combinat/triangles_FHM.py +777 -0
  315. sage/combinat/tutorial.py +1857 -0
  316. sage/combinat/vector_partition.py +337 -0
  317. sage/combinat/words/abstract_word.py +1722 -0
  318. sage/combinat/words/all.py +59 -0
  319. sage/combinat/words/alphabet.py +268 -0
  320. sage/combinat/words/finite_word.py +7201 -0
  321. sage/combinat/words/infinite_word.py +113 -0
  322. sage/combinat/words/lyndon_word.py +652 -0
  323. sage/combinat/words/morphic.py +351 -0
  324. sage/combinat/words/morphism.py +3878 -0
  325. sage/combinat/words/paths.py +2932 -0
  326. sage/combinat/words/shuffle_product.py +278 -0
  327. sage/combinat/words/suffix_trees.py +1873 -0
  328. sage/combinat/words/word.py +769 -0
  329. sage/combinat/words/word_char.cpython-314-x86_64-linux-musl.so +0 -0
  330. sage/combinat/words/word_char.pyx +847 -0
  331. sage/combinat/words/word_datatypes.cpython-314-x86_64-linux-musl.so +0 -0
  332. sage/combinat/words/word_datatypes.pxd +4 -0
  333. sage/combinat/words/word_datatypes.pyx +1067 -0
  334. sage/combinat/words/word_generators.py +2026 -0
  335. sage/combinat/words/word_infinite_datatypes.py +1218 -0
  336. sage/combinat/words/word_options.py +99 -0
  337. sage/combinat/words/words.py +2396 -0
  338. sage/data_structures/all__sagemath_combinat.py +1 -0
  339. sage/databases/all__sagemath_combinat.py +13 -0
  340. sage/databases/findstat.py +4897 -0
  341. sage/databases/oeis.py +2058 -0
  342. sage/databases/sloane.py +393 -0
  343. sage/dynamics/all__sagemath_combinat.py +14 -0
  344. sage/dynamics/cellular_automata/all.py +7 -0
  345. sage/dynamics/cellular_automata/catalog.py +34 -0
  346. sage/dynamics/cellular_automata/elementary.py +612 -0
  347. sage/dynamics/cellular_automata/glca.py +477 -0
  348. sage/dynamics/cellular_automata/solitons.py +1463 -0
  349. sage/dynamics/finite_dynamical_system.py +1249 -0
  350. sage/dynamics/finite_dynamical_system_catalog.py +382 -0
  351. sage/games/all.py +7 -0
  352. sage/games/hexad.py +704 -0
  353. sage/games/quantumino.py +591 -0
  354. sage/games/sudoku.py +889 -0
  355. sage/games/sudoku_backtrack.cpython-314-x86_64-linux-musl.so +0 -0
  356. sage/games/sudoku_backtrack.pyx +189 -0
  357. sage/groups/all__sagemath_combinat.py +1 -0
  358. sage/groups/indexed_free_group.py +489 -0
  359. sage/libs/all__sagemath_combinat.py +6 -0
  360. sage/libs/lrcalc/__init__.py +1 -0
  361. sage/libs/lrcalc/lrcalc.py +525 -0
  362. sage/libs/symmetrica/__init__.py +7 -0
  363. sage/libs/symmetrica/all.py +101 -0
  364. sage/libs/symmetrica/kostka.pxi +168 -0
  365. sage/libs/symmetrica/part.pxi +193 -0
  366. sage/libs/symmetrica/plet.pxi +42 -0
  367. sage/libs/symmetrica/sab.pxi +196 -0
  368. sage/libs/symmetrica/sb.pxi +332 -0
  369. sage/libs/symmetrica/sc.pxi +192 -0
  370. sage/libs/symmetrica/schur.pxi +956 -0
  371. sage/libs/symmetrica/symmetrica.cpython-314-x86_64-linux-musl.so +0 -0
  372. sage/libs/symmetrica/symmetrica.pxi +1172 -0
  373. sage/libs/symmetrica/symmetrica.pyx +39 -0
  374. sage/monoids/all.py +13 -0
  375. sage/monoids/automatic_semigroup.py +1054 -0
  376. sage/monoids/free_abelian_monoid.py +315 -0
  377. sage/monoids/free_abelian_monoid_element.cpython-314-x86_64-linux-musl.so +0 -0
  378. sage/monoids/free_abelian_monoid_element.pxd +16 -0
  379. sage/monoids/free_abelian_monoid_element.pyx +397 -0
  380. sage/monoids/free_monoid.py +335 -0
  381. sage/monoids/free_monoid_element.py +431 -0
  382. sage/monoids/hecke_monoid.py +65 -0
  383. sage/monoids/string_monoid.py +817 -0
  384. sage/monoids/string_monoid_element.py +547 -0
  385. sage/monoids/string_ops.py +143 -0
  386. sage/monoids/trace_monoid.py +972 -0
  387. sage/rings/all__sagemath_combinat.py +2 -0
  388. sage/sat/all.py +4 -0
  389. sage/sat/boolean_polynomials.py +405 -0
  390. sage/sat/converters/__init__.py +6 -0
  391. sage/sat/converters/anf2cnf.py +14 -0
  392. sage/sat/converters/polybori.py +611 -0
  393. sage/sat/solvers/__init__.py +5 -0
  394. sage/sat/solvers/cryptominisat.py +287 -0
  395. sage/sat/solvers/dimacs.py +783 -0
  396. sage/sat/solvers/picosat.py +228 -0
  397. sage/sat/solvers/sat_lp.py +156 -0
  398. sage/sat/solvers/satsolver.cpython-314-x86_64-linux-musl.so +0 -0
  399. sage/sat/solvers/satsolver.pxd +3 -0
  400. sage/sat/solvers/satsolver.pyx +405 -0
@@ -0,0 +1,117 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ # sage.doctest: needs sage.combinat sage.modules sage.rings.number_field
3
+ r"""
4
+ N=2 Super Lie Conformal Algebra
5
+
6
+ The `N=2` super Lie conformal algebra is an extension of the Virasoro
7
+ Lie conformal algebra (with generators `L,C`) by an even generator `J`
8
+ which is primary of conformal weight `1` and two odd generators
9
+ `G_1,G_2` which are primary of conformal weight `3/2`. The remaining
10
+ `\lambda`-brackets are given by:
11
+
12
+ .. MATH::
13
+
14
+ [J_\lambda J] &= \frac{\lambda}{3} C, \\
15
+ [J_\lambda G_1] &= G_1, \\
16
+ [J_\lambda G_2] &= -G_2, \\
17
+ [{G_1}_\lambda G_1] &= [{G_2}_\lambda G_2 ] = 0, \\
18
+ [{G_1}_\lambda G_2] &= L + \frac{1}{2} TJ + \lambda J + \frac{\lambda^2}{6}C.
19
+
20
+ AUTHORS:
21
+
22
+ - Reimundo Heluani (2020-06-03): Initial implementation.
23
+ """
24
+ # *****************************************************************************
25
+ # Copyright (C) 2020 Reimundo Heluani <heluani@potuz.net>
26
+ #
27
+ # This program is free software: you can redistribute it and/or modify
28
+ # it under the terms of the GNU General Public License as published by
29
+ # the Free Software Foundation, either version 2 of the License, or
30
+ # (at your option) any later version.
31
+ # https://www.gnu.org/licenses/
32
+ # ****************************************************************************
33
+
34
+ from .graded_lie_conformal_algebra import GradedLieConformalAlgebra
35
+
36
+
37
+ class N2LieConformalAlgebra(GradedLieConformalAlgebra):
38
+ """
39
+ The N=2 super Lie conformal algebra.
40
+
41
+ INPUT:
42
+
43
+ - ``R`` -- a commutative ring; the base ring of this super
44
+ Lie conformal algebra
45
+
46
+ EXAMPLES::
47
+
48
+ sage: x = polygen(ZZ, 'x')
49
+ sage: F.<x> = NumberField(x^2 - 2)
50
+ sage: R = lie_conformal_algebras.N2(F); R
51
+ The N=2 super Lie conformal algebra over Number Field in x with defining polynomial x^2 - 2
52
+ sage: R.inject_variables()
53
+ Defining L, J, G1, G2, C
54
+ sage: G1.bracket(G2)
55
+ {0: L + 1/2*TJ, 1: J, 2: 1/3*C}
56
+ sage: G2.bracket(G1)
57
+ {0: L - 1/2*TJ, 1: -J, 2: 1/3*C}
58
+ sage: G1.degree()
59
+ 3/2
60
+ sage: J.degree()
61
+ 1
62
+
63
+ The topological twist is a Virasoro vector with central
64
+ charge 0::
65
+
66
+ sage: L2 = L - 1/2*J.T()
67
+ sage: L2.bracket(L2) == {0: L2.T(), 1: 2*L2}
68
+ True
69
+
70
+ The sum of the fermions is a generator of the Neveu-Schwarz
71
+ Lie conformal algebra::
72
+
73
+ sage: G = (G1 + G2)
74
+ sage: G.bracket(G)
75
+ {0: 2*L, 2: 2/3*C}
76
+ """
77
+ def __init__(self, R):
78
+ """
79
+ Initialize ``self``.
80
+
81
+ TESTS::
82
+
83
+ sage: V = lie_conformal_algebras.N2(QQ)
84
+ sage: TestSuite(V).run()
85
+ """
86
+ n2dict = {('L', 'L'): {0: {('L', 1): 1},
87
+ 1: {('L', 0): 2},
88
+ 3: {('C', 0): R(2).inverse_of_unit()}},
89
+ ('L', 'G1'): {0: {('G1', 1): 1},
90
+ 1: {('G1', 0): 3 * R(2).inverse_of_unit()}},
91
+ ('L', 'G2'): {0: {('G2', 1): 1},
92
+ 1: {('G2', 0): 3 * R(2).inverse_of_unit()}},
93
+ ('G1', 'G2'): {0: {('L', 0): 1, ('J', 1): R(2).inverse_of_unit()},
94
+ 1: {('J', 0): 1},
95
+ 2: {('C', 0): R(3).inverse_of_unit()}},
96
+ ('L', 'J'): {0: {('J', 1): 1}, 1: {('J', 0): 1}},
97
+ ('J', 'J'): {1: {('C', 0): R(3).inverse_of_unit()}},
98
+ ('J', 'G1'): {0: {('G1', 0): 1}},
99
+ ('J', 'G2'): {0: {('G2', 0): -1}}}
100
+ from sage.rings.rational_field import QQ
101
+ weights = (2, 1, QQ(3) / 2, QQ(3) / 2)
102
+ parity = (0, 0, 1, 1)
103
+ GradedLieConformalAlgebra.__init__(self, R, n2dict,
104
+ names=('L', 'J', 'G1', 'G2'),
105
+ central_elements=('C',),
106
+ weights=weights, parity=parity)
107
+
108
+ def _repr_(self):
109
+ """
110
+ The name of this Lie conformal algebra.
111
+
112
+ EXAMPLES::
113
+
114
+ sage: R = lie_conformal_algebras.N2(QQbar); R
115
+ The N=2 super Lie conformal algebra over Algebraic Field
116
+ """
117
+ return f"The N=2 super Lie conformal algebra over {self.base_ring()}"
@@ -0,0 +1,86 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ # sage.doctest: needs sage.combinat sage.modules
3
+ r"""
4
+ Neveu-Schwarz Super Lie Conformal Algebra
5
+
6
+ The `N=1` or *Neveu-Schwarz* super Lie conformal algebra is a super
7
+ extension of the Virasoro Lie conformal algebra with generators `L`
8
+ and `C` by an odd primary generator `G` of conformal weight `3/2`. The
9
+ remaining `\lambda`-bracket is given by:
10
+
11
+ .. MATH::
12
+
13
+ [G_\lambda G] = 2L + \frac{\lambda^2}{3} C.
14
+
15
+ AUTHORS:
16
+
17
+ - Reimundo Heluani (2020-06-03): Initial implementation.
18
+ """
19
+ #******************************************************************************
20
+ # Copyright (C) 2020 Reimundo Heluani <heluani@potuz.net>
21
+ #
22
+ # This program is free software: you can redistribute it and/or modify
23
+ # it under the terms of the GNU General Public License as published by
24
+ # the Free Software Foundation, either version 2 of the License, or
25
+ # (at your option) any later version.
26
+ # http://www.gnu.org/licenses/
27
+ #*****************************************************************************
28
+
29
+ from .graded_lie_conformal_algebra import GradedLieConformalAlgebra
30
+
31
+
32
+ class NeveuSchwarzLieConformalAlgebra(GradedLieConformalAlgebra):
33
+ """
34
+ The Neveu-Schwarz super Lie conformal algebra.
35
+
36
+ INPUT:
37
+
38
+ - ``R`` -- a commutative Ring; the base ring of this Lie
39
+ conformal algebra
40
+
41
+ EXAMPLES::
42
+
43
+ sage: R = lie_conformal_algebras.NeveuSchwarz(AA); R
44
+ The Neveu-Schwarz super Lie conformal algebra over Algebraic Real Field
45
+ sage: R.structure_coefficients()
46
+ Finite family {('G', 'G'): ((0, 2*L), (2, 2/3*C)), ('G', 'L'): ((0, 1/2*TG), (1, 3/2*G)), ('L', 'G'): ((0, TG), (1, 3/2*G)), ('L', 'L'): ((0, TL), (1, 2*L), (3, 1/2*C))}
47
+ sage: R.inject_variables()
48
+ Defining L, G, C
49
+ sage: G.nproduct(G,0)
50
+ 2*L
51
+ sage: G.degree()
52
+ 3/2
53
+ """
54
+ def __init__(self, R):
55
+ """
56
+ Initialize ``self``.
57
+
58
+ TESTS::
59
+
60
+ sage: V = lie_conformal_algebras.NeveuSchwarz(QQ)
61
+ sage: TestSuite(V).run()
62
+ """
63
+ nsdict = {('L', 'L'): {0: {('L', 1): 1},
64
+ 1: {('L', 0): 2},
65
+ 3: {('C', 0): R(2).inverse_of_unit()}},
66
+ ('L', 'G'): {0: {('G', 1): 1},
67
+ 1: {('G', 0): R(3) * R(2).inverse_of_unit()}},
68
+ ('G', 'G'): {0: {('L', 0): 2},
69
+ 2: {('C', 0): R(2) * R(3).inverse_of_unit()}}}
70
+ from sage.rings.rational_field import QQ
71
+ weights = (2, QQ((3, 2)))
72
+ parity = (0, 1)
73
+ GradedLieConformalAlgebra.__init__(self, R, nsdict, names=('L', 'G'),
74
+ central_elements=('C',), weights=weights, parity=parity)
75
+
76
+ def _repr_(self):
77
+ """
78
+ The name of this Lie Conformal algebra.
79
+
80
+ EXAMPLES::
81
+
82
+ sage: R = lie_conformal_algebras.NeveuSchwarz(GF(5)); R
83
+ The Neveu-Schwarz super Lie conformal algebra over Finite Field of size 5
84
+ """
85
+ return "The Neveu-Schwarz super Lie conformal algebra over {}".\
86
+ format(self.base_ring())
@@ -0,0 +1,82 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ # sage.doctest: needs sage.combinat sage.modules
3
+ r"""
4
+ Virasoro Lie Conformal Algebra
5
+
6
+ The Virasoro Lie conformal algebra is generated by `L` and a central
7
+ element `C`. The `\lambda`-brackets are given by:
8
+
9
+ .. MATH::
10
+
11
+ [L_\lambda L] = T L + 2 \lambda L + \frac{\lambda^3}{12} C.
12
+
13
+ It is an H-graded Lie conformal algebra with `L` of degree `2`.
14
+
15
+ AUTHORS:
16
+
17
+ - Reimundo Heluani (2019-08-09): Initial implementation.
18
+ """
19
+
20
+ #******************************************************************************
21
+ # Copyright (C) 2019 Reimundo Heluani <heluani@potuz.net>
22
+ #
23
+ # This program is free software: you can redistribute it and/or modify
24
+ # it under the terms of the GNU General Public License as published by
25
+ # the Free Software Foundation, either version 2 of the License, or
26
+ # (at your option) any later version.
27
+ # http://www.gnu.org/licenses/
28
+ #*****************************************************************************
29
+
30
+ from .graded_lie_conformal_algebra import GradedLieConformalAlgebra
31
+
32
+
33
+ class VirasoroLieConformalAlgebra(GradedLieConformalAlgebra):
34
+ """
35
+ The Virasoro Lie Conformal algebra over `R`.
36
+
37
+ INPUT:
38
+
39
+ - ``R`` -- a commutative ring; behaviour is undefined if `R` is
40
+ not a Field of characteristic zero
41
+
42
+ EXAMPLES::
43
+
44
+ sage: Vir = lie_conformal_algebras.Virasoro(QQ)
45
+ sage: Vir.category()
46
+ Category of H-graded finitely generated Lie conformal algebras with basis over Rational Field
47
+ sage: Vir.inject_variables()
48
+ Defining L, C
49
+ sage: L.bracket(L)
50
+ {0: TL, 1: 2*L, 3: 1/2*C}
51
+
52
+ TESTS::
53
+
54
+ sage: Vir.gens()
55
+ (L, C)
56
+ """
57
+ def __init__(self, R):
58
+ """
59
+ Initialize ``self``.
60
+
61
+ TESTS::
62
+
63
+ sage: V = lie_conformal_algebras.Virasoro(QQ)
64
+ sage: TestSuite(V).run()
65
+ """
66
+ virdict = {('L', 'L'): {0: {('L', 1): 1},
67
+ 1: {('L', 0): 2},
68
+ 3: {('C', 0): R(2).inverse_of_unit()}}}
69
+ GradedLieConformalAlgebra.__init__(self, R, virdict,
70
+ names=('L',), central_elements=('C',), weights=(2,))
71
+
72
+ def _repr_(self):
73
+ """
74
+ The name of this Lie conformal algebra.
75
+
76
+ EXAMPLES::
77
+
78
+ sage: lie_conformal_algebras.Virasoro(QQbar)
79
+ The Virasoro Lie conformal algebra over Algebraic Field
80
+ """
81
+ return "The Virasoro Lie conformal algebra over {}".format(
82
+ self.base_ring())
@@ -0,0 +1,205 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ # sage.doctest: needs sage.combinat sage.modules
3
+ r"""
4
+ Weyl Lie Conformal Algebra
5
+
6
+ Given a commutative ring `R`, a free `R`-module `M` and a
7
+ non-degenerate, skew-symmetric, bilinear pairing
8
+ `\langle \cdot,\cdot\rangle: M \otimes_R M \rightarrow R`. The *Weyl*
9
+ Lie conformal algebra associated to this datum is the free
10
+ `R[T]`-module generated by `M` plus a central vector `K`. The
11
+ non-vanishing `\lambda`-brackets are given by:
12
+
13
+ .. MATH::
14
+
15
+ [v_\lambda w] = \langle v, w\rangle K.
16
+
17
+ This is not an H-graded Lie conformal algebra. The choice of a
18
+ Lagrangian decomposition `M = L \oplus L^*` determines an H-graded
19
+ structure. For this H-graded Lie conformal algebra see the
20
+ :mod:`Bosonic Ghosts Lie conformal algebra<sage.algebras.\
21
+ lie_conformal_algebras.bosonic_ghosts_lie_conformal_algebra>`
22
+
23
+ AUTHORS:
24
+
25
+ - Reimundo Heluani (2019-08-09): Initial implementation.
26
+ """
27
+
28
+ # *****************************************************************************
29
+ # Copyright (C) 2019 Reimundo Heluani <heluani@potuz.net>
30
+ #
31
+ # This program is free software: you can redistribute it and/or modify
32
+ # it under the terms of the GNU General Public License as published by
33
+ # the Free Software Foundation, either version 2 of the License, or
34
+ # (at your option) any later version.
35
+ # https://www.gnu.org/licenses/
36
+ # ****************************************************************************
37
+
38
+ from .lie_conformal_algebra_with_structure_coefs import \
39
+ LieConformalAlgebraWithStructureCoefficients
40
+ from sage.matrix.special import identity_matrix
41
+ from sage.structure.indexed_generators import standardize_names_index_set
42
+
43
+
44
+ class WeylLieConformalAlgebra(LieConformalAlgebraWithStructureCoefficients):
45
+ r"""
46
+ The Weyl Lie conformal algebra.
47
+
48
+ INPUT:
49
+
50
+ - ``R`` -- a commutative ring; the base ring of this Lie
51
+ conformal algebra
52
+ - ``ngens`` -- an even positive Integer (default: `2`); the number
53
+ of non-central generators of this Lie conformal algebra
54
+ - ``gram_matrix`` -- a matrix (default: ``None``); a non-singular
55
+ skew-symmetric square matrix with coefficients in `R`
56
+ - ``names`` -- list or tuple of strings; alternative names
57
+ for the generators
58
+ - ``index_set`` -- an enumerated set; alternative indexing set
59
+ for the generators
60
+
61
+ OUTPUT:
62
+
63
+ The Weyl Lie conformal algebra with generators
64
+ `\alpha_i`, `i=1,...,ngens` and `\lambda`-brackets
65
+
66
+ .. MATH::
67
+
68
+ [{\alpha_i}_{\lambda} \alpha_j] = M_{ij} K,
69
+
70
+ where `M` is the ``gram_matrix`` above.
71
+
72
+ .. NOTE::
73
+
74
+ The returned Lie conformal algebra is not `H`-graded. For
75
+ a related `H`-graded Lie conformal algebra see
76
+ :class:`BosonicGhostsLieConformalAlgebra<sage.algebras.\
77
+ lie_conformal_algebras.bosonic_ghosts_lie_conformal_algebra\
78
+ .BosonicGhostsLieConformalAlgebra>`.
79
+
80
+ EXAMPLES::
81
+
82
+ sage: lie_conformal_algebras.Weyl(QQ)
83
+ The Weyl Lie conformal algebra with generators (alpha0, alpha1, K) over Rational Field
84
+ sage: R = lie_conformal_algebras.Weyl(QQbar, gram_matrix=Matrix(QQ,[[0,1],[-1,0]]), names = ('a','b'))
85
+ sage: R.inject_variables()
86
+ Defining a, b, K
87
+ sage: a.bracket(b)
88
+ {0: K}
89
+ sage: b.bracket(a)
90
+ {0: -K}
91
+
92
+ sage: R = lie_conformal_algebras.Weyl(QQbar, ngens=4)
93
+ sage: R.gram_matrix()
94
+ [ 0 0| 1 0]
95
+ [ 0 0| 0 1]
96
+ [-----+-----]
97
+ [-1 0| 0 0]
98
+ [ 0 -1| 0 0]
99
+ sage: R.inject_variables()
100
+ Defining alpha0, alpha1, alpha2, alpha3, K
101
+ sage: alpha0.bracket(alpha2)
102
+ {0: K}
103
+
104
+ sage: R = lie_conformal_algebras.Weyl(QQ); R.category()
105
+ Category of finitely generated Lie conformal algebras with basis over Rational Field
106
+ sage: R in LieConformalAlgebras(QQ).Graded()
107
+ False
108
+ sage: R.inject_variables()
109
+ Defining alpha0, alpha1, K
110
+ sage: alpha0.degree()
111
+ Traceback (most recent call last):
112
+ ...
113
+ AttributeError: 'WeylLieConformalAlgebra_with_category.element_class' object has no attribute 'degree'...
114
+
115
+ TESTS::
116
+
117
+ sage: lie_conformal_algebras.Weyl(ZZ, gram_matrix=identity_matrix(ZZ,3))
118
+ Traceback (most recent call last):
119
+ ...
120
+ ValueError: the Gram_matrix should be a non degenerate skew-symmetric 3 x 3 matrix, got [1 0 0]
121
+ [0 1 0]
122
+ [0 0 1]
123
+ """
124
+ def __init__(self, R, ngens=None, gram_matrix=None, names=None,
125
+ index_set=None):
126
+ """
127
+ Initialize ``self``.
128
+
129
+ TESTS::
130
+
131
+ sage: V = lie_conformal_algebras.Weyl(QQ)
132
+ sage: TestSuite(V).run()
133
+ """
134
+ from sage.matrix.matrix_space import MatrixSpace
135
+ if ngens:
136
+ from sage.rings.integer_ring import ZZ
137
+ if not (ngens in ZZ and not ngens % 2):
138
+ raise ValueError("ngens needs to be an even positive Integer, "
139
+ f"got {ngens}")
140
+ if gram_matrix is not None:
141
+ if ngens is None:
142
+ ngens = gram_matrix.dimensions()[0]
143
+ try:
144
+ assert (gram_matrix in MatrixSpace(R, ngens, ngens))
145
+ except AssertionError:
146
+ raise ValueError("the Gram_matrix should be a skew-symmetric "
147
+ "{0} x {0} matrix, got {1}".format(ngens, gram_matrix))
148
+ if (not gram_matrix.is_skew_symmetric() or
149
+ gram_matrix.is_singular()):
150
+ raise ValueError("the Gram_matrix should be a non degenerate "
151
+ "skew-symmetric {0} x {0} matrix, got {1}"
152
+ .format(ngens, gram_matrix))
153
+ elif gram_matrix is None:
154
+ if ngens is None:
155
+ ngens = 2
156
+ A = identity_matrix(R, ngens // 2)
157
+ from sage.matrix.special import block_matrix
158
+ gram_matrix = block_matrix([[R.zero(), A], [-A, R.zero()]])
159
+
160
+ latex_names = None
161
+ if (names is None) and (index_set is None):
162
+ names = 'alpha'
163
+ latex_names = tuple(r'\alpha_{%d}' % i
164
+ for i in range(ngens)) + ('K',)
165
+ names, index_set = standardize_names_index_set(names=names,
166
+ index_set=index_set,
167
+ ngens=ngens)
168
+ weyldict = {(i, j): {0: {('K', 0): gram_matrix[index_set.rank(i),
169
+ index_set.rank(j)]}}
170
+ for i in index_set for j in index_set}
171
+
172
+ super().__init__(R, weyldict, names=names,
173
+ latex_names=latex_names,
174
+ index_set=index_set,
175
+ central_elements=('K',))
176
+ self._gram_matrix = gram_matrix
177
+
178
+ def _repr_(self):
179
+ """
180
+ The name of this Lie conformal algebra.
181
+
182
+ EXAMPLES::
183
+
184
+ sage: R = lie_conformal_algebras.Weyl(ZZ); R
185
+ The Weyl Lie conformal algebra with generators (alpha0, alpha1, K) over Integer Ring
186
+ """
187
+ return "The Weyl Lie conformal algebra with generators {} over {}"\
188
+ .format(self.gens(), self.base_ring())
189
+
190
+ def gram_matrix(self):
191
+ r"""
192
+ The Gram matrix that specifies the `\lambda`-brackets of the
193
+ generators.
194
+
195
+ EXAMPLES::
196
+
197
+ sage: R = lie_conformal_algebras.Weyl(QQbar, ngens=4)
198
+ sage: R.gram_matrix()
199
+ [ 0 0| 1 0]
200
+ [ 0 0| 0 1]
201
+ [-----+-----]
202
+ [-1 0| 0 0]
203
+ [ 0 -1| 0 0]
204
+ """
205
+ return self._gram_matrix
@@ -0,0 +1,191 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ # sage.doctest: needs sage.combinat sage.modules
3
+ """
4
+ Nil-Coxeter Algebra
5
+ """
6
+ #*****************************************************************************
7
+ # Copyright (C) 2011 Chris Berg <cberg at fields.utoronto.ca>
8
+ # Anne Schilling <anne at math.ucdavis.edu>
9
+ #
10
+ # Distributed under the terms of the GNU General Public License (GPL)
11
+ # http://www.gnu.org/licenses/
12
+ #*****************************************************************************
13
+ from sage.algebras.iwahori_hecke_algebra import IwahoriHeckeAlgebra
14
+ from sage.combinat.sf.sf import SymmetricFunctions
15
+ from sage.misc.misc_c import prod
16
+ from sage.rings.rational_field import QQ
17
+ from sage.combinat.partition import Partitions
18
+
19
+
20
+ class NilCoxeterAlgebra(IwahoriHeckeAlgebra.T):
21
+ r"""
22
+ Construct the Nil-Coxeter algebra of given type.
23
+
24
+ This is the algebra
25
+ with generators `u_i` for every node `i` of the corresponding Dynkin
26
+ diagram. It has the usual braid relations (from the Weyl group) as well
27
+ as the quadratic relation `u_i^2 = 0`.
28
+
29
+ INPUT:
30
+
31
+ - ``W`` -- a Weyl group
32
+ - ``base_ring`` -- a ring (default: rational numbers)
33
+ - ``prefix`` -- a label for the generators (default: ``'u'``)
34
+
35
+ EXAMPLES::
36
+
37
+ sage: U = NilCoxeterAlgebra(WeylGroup(['A',3,1]))
38
+ sage: u0, u1, u2, u3 = U.algebra_generators()
39
+ sage: u1*u1
40
+ 0
41
+ sage: u2*u1*u2 == u1*u2*u1
42
+ True
43
+ sage: U.an_element()
44
+ u[0,1,2,3] + 2*u[0] + 3*u[1] + 1
45
+ """
46
+
47
+ def __init__(self, W, base_ring=QQ, prefix='u'):
48
+ r"""
49
+ Initiate the affine nil-Coxeter algebra corresponding to the Weyl
50
+ group `W` over the base ring.
51
+
52
+ EXAMPLES::
53
+
54
+ sage: U = NilCoxeterAlgebra(WeylGroup(['A',3,1])); U
55
+ The Nil-Coxeter Algebra of Type A3~ over Rational Field
56
+ sage: TestSuite(U).run()
57
+
58
+ sage: U = NilCoxeterAlgebra(WeylGroup(['C',3]), ZZ); U
59
+ The Nil-Coxeter Algebra of Type C3 over Integer Ring
60
+ sage: TestSuite(U).run()
61
+ """
62
+
63
+ self._W = W
64
+ self._n = W.n
65
+ self._base_ring = base_ring
66
+ self._cartan_type = W.cartan_type()
67
+ H = IwahoriHeckeAlgebra(W, 0, 0, base_ring=base_ring)
68
+ super(IwahoriHeckeAlgebra.T, self).__init__(H, prefix=prefix)
69
+
70
+ def _repr_(self):
71
+ r"""
72
+ EXAMPLES::
73
+
74
+ sage: NilCoxeterAlgebra(WeylGroup(['A',3,1])) # indirect doctest
75
+ The Nil-Coxeter Algebra of Type A3~ over Rational Field
76
+ """
77
+ return "The Nil-Coxeter Algebra of Type %s over %s" % (self._cartan_type._repr_(compact=True), self.base_ring())
78
+
79
+ def homogeneous_generator_noncommutative_variables(self, r):
80
+ r"""
81
+ Give the `r`-th homogeneous function inside the Nil-Coxeter algebra.
82
+ In finite type `A` this is the sum of all decreasing elements of length `r`.
83
+ In affine type `A` this is the sum of all cyclically decreasing elements of length `r`.
84
+ This is only defined in finite type `A`, `B` and affine types `A^{(1)}`, `B^{(1)}`, `C^{(1)}`, `D^{(1)}`.
85
+
86
+ INPUT:
87
+
88
+ - ``r`` -- positive integer at most the rank of the Weyl group
89
+
90
+ EXAMPLES::
91
+
92
+ sage: U = NilCoxeterAlgebra(WeylGroup(['A',3,1]))
93
+ sage: U.homogeneous_generator_noncommutative_variables(2)
94
+ u[1,0] + u[2,0] + u[0,3] + u[3,2] + u[3,1] + u[2,1]
95
+
96
+ sage: U = NilCoxeterAlgebra(WeylGroup(['B',4]))
97
+ sage: U.homogeneous_generator_noncommutative_variables(2)
98
+ u[1,2] + u[2,1] + u[3,1] + u[4,1] + u[2,3] + u[3,2] + u[4,2] + u[3,4] + u[4,3]
99
+
100
+ sage: U = NilCoxeterAlgebra(WeylGroup(['C',3]))
101
+ sage: U.homogeneous_generator_noncommutative_variables(2)
102
+ Traceback (most recent call last):
103
+ ...
104
+ AssertionError: Analogue of symmetric functions in noncommutative variables is not defined in type ['C', 3]
105
+
106
+ TESTS::
107
+
108
+ sage: U = NilCoxeterAlgebra(WeylGroup(['B',3,1]))
109
+ sage: U.homogeneous_generator_noncommutative_variables(-1)
110
+ 0
111
+ sage: U.homogeneous_generator_noncommutative_variables(0)
112
+ 1
113
+ """
114
+ ct = self._cartan_type
115
+ msg = f"Analogue of symmetric functions in noncommutative variables is not defined in type {ct}"
116
+ assert (len(ct) == 2 and ct[0] in ['A', 'B']) or (len(ct) == 3 and ct[2] == 1), msg
117
+ if r >= self._n:
118
+ return self.zero()
119
+ return self.sum_of_monomials(w for w in self._W.pieri_factors() if w.length() == r)
120
+
121
+ def homogeneous_noncommutative_variables(self, la):
122
+ r"""
123
+ Give the homogeneous function indexed by `la`, viewed inside the Nil-Coxeter algebra.
124
+
125
+ This is only defined in finite type `A`, `B` and affine types `A^{(1)}`, `B^{(1)}`, `C^{(1)}`, `D^{(1)}`.
126
+
127
+ INPUT:
128
+
129
+ - ``la`` -- a partition with first part bounded by the rank of the Weyl group
130
+
131
+ EXAMPLES::
132
+
133
+ sage: U = NilCoxeterAlgebra(WeylGroup(['B',2,1]))
134
+ sage: U.homogeneous_noncommutative_variables([2,1])
135
+ u[1,2,0] + 2*u[2,1,0] + u[0,2,0] + u[0,2,1] + u[1,2,1] + u[2,1,2] + u[2,0,2] + u[1,0,2]
136
+
137
+ TESTS::
138
+
139
+ sage: U = NilCoxeterAlgebra(WeylGroup(['B',2,1]))
140
+ sage: U.homogeneous_noncommutative_variables([])
141
+ 1
142
+ """
143
+ return prod(self.homogeneous_generator_noncommutative_variables(p) for p in la)
144
+
145
+ def k_schur_noncommutative_variables(self, la):
146
+ r"""
147
+ In type `A^{(1)}` this is the `k`-Schur function in noncommutative variables
148
+ defined by Thomas Lam [Lam2005]_.
149
+
150
+ This function is currently only defined in type `A^{(1)}`.
151
+
152
+ INPUT:
153
+
154
+ - ``la`` -- a partition with first part bounded by the rank of the Weyl group
155
+
156
+ EXAMPLES::
157
+
158
+ sage: A = NilCoxeterAlgebra(WeylGroup(['A',3,1]))
159
+ sage: A.k_schur_noncommutative_variables([2,2]) # needs lrcalc_python
160
+ u[0,3,1,0] + u[3,1,2,0] + u[1,2,0,1] + u[3,2,0,3] + u[2,0,3,1] + u[2,3,1,2]
161
+
162
+ TESTS::
163
+
164
+ sage: A = NilCoxeterAlgebra(WeylGroup(['A',3,1]))
165
+ sage: A.k_schur_noncommutative_variables([])
166
+ 1
167
+
168
+ sage: A.k_schur_noncommutative_variables([1,2])
169
+ Traceback (most recent call last):
170
+ ...
171
+ AssertionError: [1, 2] is not a partition.
172
+
173
+ sage: A.k_schur_noncommutative_variables([4,2])
174
+ Traceback (most recent call last):
175
+ ...
176
+ AssertionError: [4, 2] is not a 3-bounded partition.
177
+
178
+ sage: C = NilCoxeterAlgebra(WeylGroup(['C',3,1]))
179
+ sage: C.k_schur_noncommutative_variables([2,2])
180
+ Traceback (most recent call last):
181
+ ...
182
+ AssertionError: Weyl Group of type ['C', 3, 1] (as a matrix group acting on the root space) is not affine type A.
183
+ """
184
+ assert self._cartan_type[0] == 'A' and len(self._cartan_type) == 3 and self._cartan_type[2] == 1, "%s is not affine type A." % (self._W)
185
+ assert la in Partitions(), "%s is not a partition." % (la)
186
+ assert (len(la) == 0 or la[0] < self._W.n), "%s is not a %s-bounded partition." % (la, self._W.n-1)
187
+ Sym = SymmetricFunctions(self._base_ring)
188
+ h = Sym.homogeneous()
189
+ ks = Sym.kschur(self._n-1,1)
190
+ f = h(ks[la])
191
+ return sum(f.coefficient(x)*self.homogeneous_noncommutative_variables(x) for x in f.support())