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,246 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ # sage.doctest: needs lrcalc_python sage.combinat sage.modules
3
+ """
4
+ Orthogonal symmetric functions
5
+
6
+ AUTHORS:
7
+
8
+ - Travis Scrimshaw (2013-11-10): Initial version
9
+ """
10
+ # ****************************************************************************
11
+ # Copyright (C) 2013 Travis Scrimshaw <tscrim at ucdavis.edu>
12
+ #
13
+ # Distributed under the terms of the GNU General Public License (GPL)
14
+ #
15
+ # This code is distributed in the hope that it will be useful,
16
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
17
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18
+ # General Public License for more details.
19
+ #
20
+ # The full text of the GPL is available at:
21
+ #
22
+ # https://www.gnu.org/licenses/
23
+ # ****************************************************************************
24
+
25
+ from sage.combinat.partition import Partitions
26
+ from sage.libs.lrcalc import lrcalc
27
+ from sage.misc.cachefunc import cached_method
28
+
29
+ from . import sfa
30
+
31
+
32
+ class SymmetricFunctionAlgebra_orthogonal(sfa.SymmetricFunctionAlgebra_generic):
33
+ r"""
34
+ The orthogonal symmetric function basis (or orthogonal basis, to be short).
35
+
36
+ The orthogonal basis `\{ o_{\lambda} \}` where `\lambda` is taken over
37
+ all partitions is defined by the following change of basis with the
38
+ Schur functions:
39
+
40
+ .. MATH::
41
+
42
+ s_{\lambda} = \sum_{\mu} \left( \sum_{\nu \in H} c^{\lambda}_{\mu\nu}
43
+ \right) o_{\mu}
44
+
45
+ where `H` is the set of all partitions with even-width rows and
46
+ `c^{\lambda}_{\mu\nu}` is the usual Littlewood-Richardson (LR)
47
+ coefficients. By the properties of LR coefficients, this can be shown to
48
+ be a upper unitriangular change of basis.
49
+
50
+ .. NOTE::
51
+
52
+ This is only a filtered basis, not a `\ZZ`-graded basis. However this
53
+ does respect the induced `(\ZZ/2\ZZ)`-grading.
54
+
55
+ INPUT:
56
+
57
+ - ``Sym`` -- an instance of the ring of the symmetric functions
58
+
59
+ REFERENCES:
60
+
61
+ - [ChariKleber2000]_
62
+ - [KoikeTerada1987]_
63
+ - [ShimozonoZabrocki2006]_
64
+
65
+ EXAMPLES:
66
+
67
+ Here are the first few orthogonal symmetric functions, in various bases::
68
+
69
+ sage: Sym = SymmetricFunctions(QQ)
70
+ sage: o = Sym.o()
71
+ sage: e = Sym.e()
72
+ sage: h = Sym.h()
73
+ sage: p = Sym.p()
74
+ sage: s = Sym.s()
75
+ sage: m = Sym.m()
76
+
77
+ sage: p(o([1]))
78
+ p[1]
79
+ sage: m(o([1]))
80
+ m[1]
81
+ sage: e(o([1]))
82
+ e[1]
83
+ sage: h(o([1]))
84
+ h[1]
85
+ sage: s(o([1]))
86
+ s[1]
87
+
88
+ sage: p(o([2]))
89
+ -p[] + 1/2*p[1, 1] + 1/2*p[2]
90
+ sage: m(o([2]))
91
+ -m[] + m[1, 1] + m[2]
92
+ sage: e(o([2]))
93
+ -e[] + e[1, 1] - e[2]
94
+ sage: h(o([2]))
95
+ -h[] + h[2]
96
+ sage: s(o([2]))
97
+ -s[] + s[2]
98
+
99
+ sage: p(o([3]))
100
+ -p[1] + 1/6*p[1, 1, 1] + 1/2*p[2, 1] + 1/3*p[3]
101
+ sage: m(o([3]))
102
+ -m[1] + m[1, 1, 1] + m[2, 1] + m[3]
103
+ sage: e(o([3]))
104
+ -e[1] + e[1, 1, 1] - 2*e[2, 1] + e[3]
105
+ sage: h(o([3]))
106
+ -h[1] + h[3]
107
+ sage: s(o([3]))
108
+ -s[1] + s[3]
109
+
110
+ sage: Sym = SymmetricFunctions(ZZ)
111
+ sage: o = Sym.o()
112
+ sage: e = Sym.e()
113
+ sage: h = Sym.h()
114
+ sage: s = Sym.s()
115
+ sage: m = Sym.m()
116
+ sage: p = Sym.p()
117
+ sage: m(o([4]))
118
+ -m[1, 1] + m[1, 1, 1, 1] - m[2] + m[2, 1, 1] + m[2, 2] + m[3, 1] + m[4]
119
+ sage: e(o([4]))
120
+ -e[1, 1] + e[1, 1, 1, 1] + e[2] - 3*e[2, 1, 1] + e[2, 2] + 2*e[3, 1] - e[4]
121
+ sage: h(o([4]))
122
+ -h[2] + h[4]
123
+ sage: s(o([4]))
124
+ -s[2] + s[4]
125
+
126
+ Some examples of conversions the other way::
127
+
128
+ sage: o(h[3])
129
+ o[1] + o[3]
130
+ sage: o(e[3])
131
+ o[1, 1, 1]
132
+ sage: o(m[2,1])
133
+ o[1] - 2*o[1, 1, 1] + o[2, 1]
134
+ sage: o(p[3])
135
+ o[1, 1, 1] - o[2, 1] + o[3]
136
+
137
+ Some multiplication::
138
+
139
+ sage: o([2]) * o([1,1])
140
+ o[1, 1] + o[2] + o[2, 1, 1] + o[3, 1]
141
+ sage: o([2,1,1]) * o([2])
142
+ o[1, 1] + o[1, 1, 1, 1] + 2*o[2, 1, 1] + o[2, 2] + o[2, 2, 1, 1]
143
+ + o[3, 1] + o[3, 1, 1, 1] + o[3, 2, 1] + o[4, 1, 1]
144
+ sage: o([1,1]) * o([2,1])
145
+ o[1] + o[1, 1, 1] + 2*o[2, 1] + o[2, 1, 1, 1] + o[2, 2, 1]
146
+ + o[3] + o[3, 1, 1] + o[3, 2]
147
+
148
+ Examples of the Hopf algebra structure::
149
+
150
+ sage: o([1]).antipode()
151
+ -o[1]
152
+ sage: o([2]).antipode()
153
+ -o[] + o[1, 1]
154
+ sage: o([1]).coproduct()
155
+ o[] # o[1] + o[1] # o[]
156
+ sage: o([2]).coproduct()
157
+ o[] # o[] + o[] # o[2] + o[1] # o[1] + o[2] # o[]
158
+ sage: o([1]).counit()
159
+ 0
160
+ sage: o.one().counit()
161
+ 1
162
+ """
163
+
164
+ def __init__(self, Sym):
165
+ """
166
+ Initialize ``self``.
167
+
168
+ TESTS::
169
+
170
+ sage: o = SymmetricFunctions(QQ).o()
171
+ sage: TestSuite(o).run()
172
+ """
173
+ sfa.SymmetricFunctionAlgebra_generic.__init__(self, Sym, "orthogonal",
174
+ 'o', graded=False)
175
+
176
+ # We make a strong reference since we use it for our computations
177
+ # and so we can define the coercion below (only codomains have
178
+ # strong references)
179
+ self._s = Sym.schur()
180
+
181
+ # Setup the coercions
182
+ M = self._s.module_morphism(self._s_to_o_on_basis, codomain=self,
183
+ triangular='upper', unitriangular=True)
184
+ M.register_as_coercion()
185
+ Mi = self.module_morphism(self._o_to_s_on_basis, codomain=self._s,
186
+ triangular='upper', unitriangular=True)
187
+ Mi.register_as_coercion()
188
+
189
+ @cached_method
190
+ def _o_to_s_on_basis(self, lam):
191
+ r"""
192
+ Return the orthogonal symmetric function ``o[lam]`` expanded in
193
+ the Schur basis, where ``lam`` is a partition.
194
+
195
+ TESTS:
196
+
197
+ Check that this is the inverse::
198
+
199
+ sage: o = SymmetricFunctions(QQ).o()
200
+ sage: s = SymmetricFunctions(QQ).s()
201
+ sage: all(o(s(o[la])) == o[la] for i in range(5) for la in Partitions(i))
202
+ True
203
+ sage: all(s(o(s[la])) == s[la] for i in range(5) for la in Partitions(i))
204
+ True
205
+ """
206
+ R = self.base_ring()
207
+ n = sum(lam)
208
+ return self._s._from_dict({ mu: R.sum( (-1)**j * lrcalc.lrcoef_unsafe(lam, mu, nu)
209
+ for nu in Partitions(2*j)
210
+ if all(nu.arm_length(i,i) == nu.leg_length(i,i)+1
211
+ for i in range(nu.frobenius_rank()))
212
+ )
213
+ for j in range(n//2+1) # // 2 for horizontal dominoes
214
+ for mu in Partitions(n-2*j) })
215
+
216
+ @cached_method
217
+ def _s_to_o_on_basis(self, lam):
218
+ r"""
219
+ Return the Schur symmetric function ``s[lam]`` expanded in
220
+ the orthogonal basis, where ``lam`` is a partition.
221
+
222
+ INPUT:
223
+
224
+ - ``lam`` -- a partition
225
+
226
+ OUTPUT: the expansion of ``s[lam]`` in the orthogonal basis ``self``
227
+
228
+ EXAMPLES::
229
+
230
+ sage: Sym = SymmetricFunctions(QQ)
231
+ sage: s = Sym.schur()
232
+ sage: o = Sym.orthogonal()
233
+ sage: o._s_to_o_on_basis(Partition([]))
234
+ o[]
235
+ sage: o._s_to_o_on_basis(Partition([4,2,1]))
236
+ o[1] + 2*o[2, 1] + o[2, 2, 1] + o[3]
237
+ + o[3, 1, 1] + o[3, 2] + o[4, 1] + o[4, 2, 1]
238
+ sage: s(o._s_to_o_on_basis(Partition([3,1]))) == s[3,1]
239
+ True
240
+ """
241
+ R = self.base_ring()
242
+ n = sum(lam)
243
+ return self._from_dict({ mu: R.sum( lrcalc.lrcoef_unsafe(lam, mu, [2*x for x in nu])
244
+ for nu in Partitions(j) )
245
+ for j in range(n//2+1) # // 2 for horizontal dominoes
246
+ for mu in Partitions(n-2*j) })
@@ -0,0 +1,355 @@
1
+ # sage_setup: distribution = sagemath-combinat
2
+ # sage.doctest: needs sage.combinat sage.modules
3
+ """
4
+ Symmetric functions defined by orthogonality and triangularity
5
+
6
+ One characterization of Schur functions is that they are upper
7
+ triangularly related to the monomial symmetric functions and
8
+ orthogonal with respect to the Hall scalar product. We can use the
9
+ class SymmetricFunctionAlgebra_orthotriang to obtain the Schur
10
+ functions from this definition.
11
+
12
+ ::
13
+
14
+ sage: from sage.combinat.sf.sfa import zee
15
+ sage: from sage.combinat.sf.orthotriang import SymmetricFunctionAlgebra_orthotriang
16
+ sage: Sym = SymmetricFunctions(QQ)
17
+ sage: m = Sym.m()
18
+ sage: s = SymmetricFunctionAlgebra_orthotriang(Sym, m, zee, 's', 'Schur functions')
19
+ sage: s([2,1])^2
20
+ s[2, 2, 1, 1] + s[2, 2, 2] + s[3, 1, 1, 1] + 2*s[3, 2, 1] + s[3, 3] + s[4, 1, 1] + s[4, 2]
21
+
22
+ ::
23
+
24
+ sage: s2 = SymmetricFunctions(QQ).s()
25
+ sage: s2([2,1])^2 # needs lrcalc_python
26
+ s[2, 2, 1, 1] + s[2, 2, 2] + s[3, 1, 1, 1] + 2*s[3, 2, 1] + s[3, 3] + s[4, 1, 1] + s[4, 2]
27
+ """
28
+ # ****************************************************************************
29
+ # Copyright (C) 2007 Mike Hansen <mhansen@gmail.com>
30
+ # 2012 Mike Zabrocki <mike.zabrocki@gmail.com>
31
+ #
32
+ # Distributed under the terms of the GNU General Public License (GPL)
33
+ #
34
+ # This code is distributed in the hope that it will be useful,
35
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
36
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
37
+ # General Public License for more details.
38
+ #
39
+ # The full text of the GPL is available at:
40
+ #
41
+ # https://www.gnu.org/licenses/
42
+ # ****************************************************************************
43
+
44
+ from sage.categories.homset import Hom
45
+ from sage.categories.morphism import SetMorphism
46
+
47
+ from . import sfa
48
+
49
+
50
+ class SymmetricFunctionAlgebra_orthotriang(sfa.SymmetricFunctionAlgebra_generic):
51
+
52
+ class Element(sfa.SymmetricFunctionAlgebra_generic.Element):
53
+ pass
54
+
55
+ @staticmethod
56
+ def __classcall__(cls, Sym, base, scalar, prefix, basis_name, leading_coeff=None):
57
+ """
58
+ Normalize the arguments.
59
+
60
+ TESTS::
61
+
62
+ sage: from sage.combinat.sf.sfa import zee
63
+ sage: from sage.combinat.sf.orthotriang import SymmetricFunctionAlgebra_orthotriang
64
+ sage: Sym = SymmetricFunctions(QQ)
65
+ sage: m = Sym.m()
66
+ sage: B1 = SymmetricFunctionAlgebra_orthotriang(Sym, m, zee, 's', 'Schur')
67
+ sage: B2 = SymmetricFunctionAlgebra_orthotriang(Sym, m, zee, 's', 'Schur', None)
68
+ sage: B1 is B2
69
+ True
70
+ """
71
+ return super().__classcall__(cls, Sym, base, scalar, prefix, basis_name, leading_coeff)
72
+
73
+ def __init__(self, Sym, base, scalar, prefix, basis_name, leading_coeff):
74
+ r"""
75
+ Initialization of the symmetric function algebra defined via orthotriangular rules.
76
+
77
+ INPUT:
78
+
79
+ - ``self`` -- a basis determined by an orthotriangular definition
80
+ - ``Sym`` -- ring of symmetric functions
81
+ - ``base`` -- an instance of a basis of the ring of symmetric functions
82
+ (e.g. the Schur functions)
83
+ - ``scalar`` -- a function ``zee`` on partitions. The function
84
+ ``zee`` determines the scalar product on the power sum basis
85
+ with normalization `\langle p_{\mu}, p_{\mu} \rangle =
86
+ \mathrm{zee}(\mu)`.
87
+ - ``prefix`` -- the prefix used to display the basis
88
+ - ``basis_name`` -- the name used for the basis
89
+
90
+ .. NOTE::
91
+
92
+ The base ring is required to be a `\QQ`-algebra for this
93
+ method to be usable, since the scalar product is defined by
94
+ its values on the power sum basis.
95
+
96
+ EXAMPLES::
97
+
98
+ sage: from sage.combinat.sf.sfa import zee
99
+ sage: from sage.combinat.sf.orthotriang import SymmetricFunctionAlgebra_orthotriang
100
+ sage: Sym = SymmetricFunctions(QQ)
101
+ sage: m = Sym.m()
102
+ sage: s = SymmetricFunctionAlgebra_orthotriang(Sym, m, zee, 's', 'Schur'); s
103
+ Symmetric Functions over Rational Field in the Schur basis
104
+
105
+ TESTS::
106
+
107
+ sage: # needs lrcalc_python
108
+ sage: TestSuite(s).run(elements=[s[1,1]+2*s[2], s[1]+3*s[1,1]])
109
+ sage: TestSuite(s).run(skip=["_test_associativity", "_test_prod"]) # long time (7s on sage.math, 2011)
110
+
111
+ Note: ``s.an_element()`` is of degree 4; so we skip
112
+ ``_test_associativity`` and ``_test_prod`` which involve
113
+ (currently?) expensive calculations up to degree 12.
114
+ """
115
+ self._sym = Sym
116
+ self._sf_base = base
117
+ self._scalar = scalar
118
+ self._leading_coeff = leading_coeff
119
+ sfa.SymmetricFunctionAlgebra_generic.__init__(self, Sym, prefix=prefix, basis_name=basis_name)
120
+
121
+ self._self_to_base_cache = {}
122
+ self._base_to_self_cache = {}
123
+ self.register_coercion(SetMorphism(Hom(base, self), self._base_to_self))
124
+ base.register_coercion(SetMorphism(Hom(self, base), self._self_to_base))
125
+
126
+ def construction(self):
127
+ """
128
+ Return a pair ``(F, R)``, where ``F`` is a
129
+ :class:`SymmetricFunctionsFunctor` and `R` is a ring, such
130
+ that ``F(R)`` returns ``self``.
131
+
132
+ EXAMPLES::
133
+
134
+ sage: from sage.combinat.sf.sfa import zee
135
+ sage: from sage.combinat.sf.orthotriang import SymmetricFunctionAlgebra_orthotriang
136
+ sage: Sym = SymmetricFunctions(QQ)
137
+ sage: m = Sym.m()
138
+ sage: s = SymmetricFunctionAlgebra_orthotriang(Sym, m, zee, 's', 'Schur')
139
+ sage: s.construction()
140
+ (SymmetricFunctionsFunctor[Schur], Rational Field)
141
+ """
142
+ return OrthotriangBasisFunctor(self), self.base_ring()
143
+
144
+ def _base_to_self(self, x):
145
+ """
146
+ Coerce a symmetric function in base ``x`` into ``self``.
147
+
148
+ INPUT:
149
+
150
+ - ``self`` -- a basis determined by an orthotriangular definition
151
+ - ``x`` -- an element of the basis `base` to which ``self`` is triangularly related
152
+
153
+ OUTPUT: an element of ``self`` equivalent to ``x``
154
+
155
+ EXAMPLES::
156
+
157
+ sage: from sage.combinat.sf.sfa import zee
158
+ sage: from sage.combinat.sf.orthotriang import SymmetricFunctionAlgebra_orthotriang
159
+ sage: Sym = SymmetricFunctions(QQ)
160
+ sage: m = Sym.m()
161
+ sage: s = SymmetricFunctionAlgebra_orthotriang(Sym, m, zee, 's', 'Schur functions')
162
+ sage: s._base_to_self(m([2,1]))
163
+ -2*s[1, 1, 1] + s[2, 1]
164
+ """
165
+ return self._from_cache(x, self._base_cache, self._base_to_self_cache)
166
+
167
+ def _self_to_base(self, x):
168
+ """
169
+ Coerce a symmetric function in ``self`` into base ``x``.
170
+
171
+ INPUT:
172
+
173
+ - ``self`` -- a basis determined by an orthotriangular definition
174
+ - ``x`` -- an element of ``self`` as a basis of the ring of symmetric functions
175
+
176
+ OUTPUT: the element ``x`` expressed in the basis to which ``self`` is triangularly related
177
+
178
+ EXAMPLES::
179
+
180
+ sage: from sage.combinat.sf.sfa import zee
181
+ sage: from sage.combinat.sf.orthotriang import SymmetricFunctionAlgebra_orthotriang
182
+ sage: Sym = SymmetricFunctions(QQ)
183
+ sage: m = Sym.m()
184
+ sage: s = SymmetricFunctionAlgebra_orthotriang(Sym, m, zee, 's', 'Schur functions')
185
+ sage: s._self_to_base(s([2,1]))
186
+ 2*m[1, 1, 1] + m[2, 1]
187
+ """
188
+ return self._sf_base._from_cache(x, self._base_cache, self._self_to_base_cache)
189
+
190
+ def _base_cache(self, n):
191
+ """
192
+ Compute the change of basis between ``self`` and base for the
193
+ homogeneous component of size ``n``
194
+
195
+ INPUT:
196
+
197
+ - ``self`` -- a basis determined by an orthotriangular definition
198
+ - ``n`` -- nonnegative integer
199
+
200
+ EXAMPLES::
201
+
202
+ sage: from sage.combinat.sf.sfa import zee
203
+ sage: from sage.combinat.sf.orthotriang import SymmetricFunctionAlgebra_orthotriang
204
+ sage: Sym = SymmetricFunctions(QQ)
205
+ sage: m = Sym.m()
206
+ sage: s = SymmetricFunctionAlgebra_orthotriang(Sym, m, zee, 's', 'Schur functions')
207
+ sage: s._base_cache(2)
208
+ sage: l = lambda c: [ (i[0],[j for j in sorted(i[1].items())]) for i in sorted(c.items())]
209
+ sage: l(s._base_to_self_cache[2])
210
+ [([1, 1], [([1, 1], 1)]), ([2], [([1, 1], -1), ([2], 1)])]
211
+ sage: l(s._self_to_base_cache[2])
212
+ [([1, 1], [([1, 1], 1)]), ([2], [([1, 1], 1), ([2], 1)])]
213
+ """
214
+ if n in self._self_to_base_cache:
215
+ return
216
+ else:
217
+ self._self_to_base_cache[n] = {}
218
+
219
+ self._gram_schmidt(n, self._sf_base, self._scalar,
220
+ self._self_to_base_cache,
221
+ leading_coeff=self._leading_coeff,
222
+ upper_triangular=True)
223
+ self._invert_morphism(n, self.base_ring(), self._self_to_base_cache,
224
+ self._base_to_self_cache,
225
+ to_other_function=self._to_base)
226
+
227
+ def _to_base(self, part):
228
+ r"""
229
+ Return a function which takes in a partition `\mu` and returns the
230
+ coefficient of a partition in the expansion of ``self`` `(part)` in base.
231
+
232
+ INPUT:
233
+
234
+ - ``self`` -- a basis determined by an orthotriangular definition
235
+ - ``part`` -- a partition
236
+
237
+ .. NOTE::
238
+
239
+ We assume that self._gram_schmidt has been called before
240
+ self._to_base is called.
241
+
242
+ OUTPUT:
243
+
244
+ - a function which accepts a partition ``mu`` and returns the coefficients
245
+ in the expansion of ``self(part)`` in the triangularly related basis.
246
+
247
+ EXAMPLES::
248
+
249
+ sage: from sage.combinat.sf.sfa import zee
250
+ sage: from sage.combinat.sf.orthotriang import SymmetricFunctionAlgebra_orthotriang
251
+ sage: Sym = SymmetricFunctions(QQ)
252
+ sage: m = Sym.m()
253
+ sage: s = SymmetricFunctionAlgebra_orthotriang(Sym, m, zee, 's', 'Schur functions')
254
+ sage: m(s([2,1]))
255
+ 2*m[1, 1, 1] + m[2, 1]
256
+ sage: f = s._to_base(Partition([2,1]))
257
+ sage: [f(p) for p in Partitions(3)]
258
+ [0, 1, 2]
259
+ """
260
+ f = lambda mu: self._self_to_base_cache[part].get(mu, 0)
261
+ return f
262
+
263
+ def product(self, left, right):
264
+ """
265
+ Return ``left`` * ``right`` by converting both to the base and then
266
+ converting back to ``self``.
267
+
268
+ INPUT:
269
+
270
+ - ``self`` -- a basis determined by an orthotriangular definition
271
+ - ``left``, ``right`` -- elements in ``self``
272
+
273
+ OUTPUT: the expansion of the product of ``left`` and ``right`` in the basis ``self``
274
+
275
+ EXAMPLES::
276
+
277
+ sage: from sage.combinat.sf.sfa import zee
278
+ sage: from sage.combinat.sf.orthotriang import SymmetricFunctionAlgebra_orthotriang
279
+ sage: Sym = SymmetricFunctions(QQ)
280
+ sage: m = Sym.m()
281
+ sage: s = SymmetricFunctionAlgebra_orthotriang(Sym, m, zee, 's', 'Schur functions')
282
+ sage: s([1])*s([2,1]) #indirect doctest
283
+ s[2, 1, 1] + s[2, 2] + s[3, 1]
284
+ """
285
+ return self(self._sf_base(left) * self._sf_base(right))
286
+
287
+
288
+ from sage.combinat.sf.sfa import SymmetricFunctionsFunctor
289
+
290
+
291
+ class OrthotriangBasisFunctor(SymmetricFunctionsFunctor):
292
+ """
293
+ A constructor for algebras of symmetric functions constructed by
294
+ orthogonality and triangularity.
295
+
296
+ EXAMPLES::
297
+
298
+ sage: from sage.combinat.sf.sfa import zee
299
+ sage: from sage.combinat.sf.orthotriang import SymmetricFunctionAlgebra_orthotriang
300
+ sage: Sym = SymmetricFunctions(QQ)
301
+ sage: m = Sym.m()
302
+ sage: s = SymmetricFunctionAlgebra_orthotriang(Sym, m, zee, 's', 'Schur')
303
+ sage: s.construction()
304
+ (SymmetricFunctionsFunctor[Schur], Rational Field)
305
+ """
306
+ def __init__(self, basis):
307
+ r"""
308
+ Initialize the functor.
309
+
310
+ INPUT:
311
+
312
+ - ``basis`` -- the basis of the symmetric function algebra
313
+
314
+ TESTS::
315
+
316
+ sage: from sage.combinat.sf.sfa import zee
317
+ sage: from sage.combinat.sf.orthotriang import SymmetricFunctionAlgebra_orthotriang
318
+ sage: Sym = SymmetricFunctions(QQ)
319
+ sage: m = Sym.m()
320
+ sage: s = SymmetricFunctionAlgebra_orthotriang(Sym, m, zee, 's', 'Schur')
321
+ sage: F, R = s.construction()
322
+ sage: TestSuite(F).run()
323
+ """
324
+ self._basis_name = basis.basis_name()
325
+ self._sf_base = basis._sf_base
326
+ self._scalar = basis._scalar
327
+ self._leading_coeff = basis._leading_coeff
328
+ self._prefix = basis._prefix
329
+ super().__init__(basis, self._basis_name)
330
+
331
+ def _apply_functor(self, R):
332
+ """
333
+ Apply the functor to an object of ``self``'s domain.
334
+
335
+ EXAMPLES::
336
+
337
+ sage: from sage.combinat.sf.sfa import zee
338
+ sage: from sage.combinat.sf.orthotriang import SymmetricFunctionAlgebra_orthotriang
339
+ sage: Sym = SymmetricFunctions(ZZ)
340
+ sage: m = Sym.m()
341
+ sage: s = SymmetricFunctionAlgebra_orthotriang(Sym, m, zee, 's', 'Schur functions')
342
+ sage: F, R = s.construction() # indirect doctest
343
+ sage: F(QQbar) # needs sage.rings.number_field
344
+ Symmetric Functions over Algebraic Field in the Schur functions basis
345
+ """
346
+ from sage.combinat.sf.sf import SymmetricFunctions
347
+ return self._basis(SymmetricFunctions(R), self._sf_base.change_ring(R),
348
+ self._scalar, self._prefix, self._basis_name,
349
+ self._leading_coeff)
350
+
351
+
352
+ # Backward compatibility for unpickling
353
+ from sage.misc.persist import register_unpickle_override
354
+
355
+ register_unpickle_override('sage.combinat.sf.orthotriang', 'SymmetricFunctionAlgebraElement_orthotriang', SymmetricFunctionAlgebra_orthotriang.Element)