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.
- passagemath_combinat/__init__.py +3 -0
- passagemath_combinat-10.6.42.dist-info/DELVEWHEEL +2 -0
- passagemath_combinat-10.6.42.dist-info/METADATA +160 -0
- passagemath_combinat-10.6.42.dist-info/RECORD +401 -0
- passagemath_combinat-10.6.42.dist-info/WHEEL +5 -0
- passagemath_combinat-10.6.42.dist-info/top_level.txt +3 -0
- passagemath_combinat.libs/libgmp-10-3a5f019e2510aeaad918cab2b57a689d.dll +0 -0
- passagemath_combinat.libs/libsymmetrica-3-7dcf900932804d0df5fd0919b4668720.dll +0 -0
- sage/algebras/affine_nil_temperley_lieb.py +263 -0
- sage/algebras/all.py +24 -0
- sage/algebras/all__sagemath_combinat.py +35 -0
- sage/algebras/askey_wilson.py +935 -0
- sage/algebras/associated_graded.py +345 -0
- sage/algebras/cellular_basis.py +350 -0
- sage/algebras/cluster_algebra.py +2766 -0
- sage/algebras/down_up_algebra.py +860 -0
- sage/algebras/free_algebra.py +1698 -0
- sage/algebras/free_algebra_element.py +345 -0
- sage/algebras/free_algebra_quotient.py +405 -0
- sage/algebras/free_algebra_quotient_element.py +295 -0
- sage/algebras/free_zinbiel_algebra.py +885 -0
- sage/algebras/hall_algebra.py +783 -0
- sage/algebras/hecke_algebras/all.py +4 -0
- sage/algebras/hecke_algebras/ariki_koike_algebra.py +1796 -0
- sage/algebras/hecke_algebras/ariki_koike_specht_modules.py +475 -0
- sage/algebras/hecke_algebras/cubic_hecke_algebra.py +3520 -0
- sage/algebras/hecke_algebras/cubic_hecke_base_ring.py +1473 -0
- sage/algebras/hecke_algebras/cubic_hecke_matrix_rep.py +1079 -0
- sage/algebras/iwahori_hecke_algebra.py +3095 -0
- sage/algebras/jordan_algebra.py +1773 -0
- sage/algebras/lie_conformal_algebras/abelian_lie_conformal_algebra.py +113 -0
- sage/algebras/lie_conformal_algebras/affine_lie_conformal_algebra.py +156 -0
- sage/algebras/lie_conformal_algebras/all.py +18 -0
- sage/algebras/lie_conformal_algebras/bosonic_ghosts_lie_conformal_algebra.py +134 -0
- sage/algebras/lie_conformal_algebras/examples.py +43 -0
- sage/algebras/lie_conformal_algebras/fermionic_ghosts_lie_conformal_algebra.py +131 -0
- sage/algebras/lie_conformal_algebras/finitely_freely_generated_lca.py +139 -0
- sage/algebras/lie_conformal_algebras/free_bosons_lie_conformal_algebra.py +174 -0
- sage/algebras/lie_conformal_algebras/free_fermions_lie_conformal_algebra.py +167 -0
- sage/algebras/lie_conformal_algebras/freely_generated_lie_conformal_algebra.py +107 -0
- sage/algebras/lie_conformal_algebras/graded_lie_conformal_algebra.py +135 -0
- sage/algebras/lie_conformal_algebras/lie_conformal_algebra.py +353 -0
- sage/algebras/lie_conformal_algebras/lie_conformal_algebra_element.py +236 -0
- sage/algebras/lie_conformal_algebras/lie_conformal_algebra_with_basis.py +78 -0
- sage/algebras/lie_conformal_algebras/lie_conformal_algebra_with_structure_coefs.py +328 -0
- sage/algebras/lie_conformal_algebras/n2_lie_conformal_algebra.py +117 -0
- sage/algebras/lie_conformal_algebras/neveu_schwarz_lie_conformal_algebra.py +86 -0
- sage/algebras/lie_conformal_algebras/virasoro_lie_conformal_algebra.py +82 -0
- sage/algebras/lie_conformal_algebras/weyl_lie_conformal_algebra.py +205 -0
- sage/algebras/nil_coxeter_algebra.py +191 -0
- sage/algebras/q_commuting_polynomials.py +673 -0
- sage/algebras/q_system.py +608 -0
- sage/algebras/quantum_clifford.py +959 -0
- sage/algebras/quantum_groups/ace_quantum_onsager.py +693 -0
- sage/algebras/quantum_groups/all.py +9 -0
- sage/algebras/quantum_groups/fock_space.py +2219 -0
- sage/algebras/quantum_groups/q_numbers.py +207 -0
- sage/algebras/quantum_groups/quantum_group_gap.py +2695 -0
- sage/algebras/quantum_groups/representations.py +591 -0
- sage/algebras/quantum_matrix_coordinate_algebra.py +1006 -0
- sage/algebras/quantum_oscillator.py +623 -0
- sage/algebras/quaternion_algebra.py +20 -0
- sage/algebras/quaternion_algebra_element.py +55 -0
- sage/algebras/rational_cherednik_algebra.py +525 -0
- sage/algebras/schur_algebra.py +670 -0
- sage/algebras/shuffle_algebra.py +1011 -0
- sage/algebras/splitting_algebra.py +779 -0
- sage/algebras/tensor_algebra.py +709 -0
- sage/algebras/yangian.py +1082 -0
- sage/algebras/yokonuma_hecke_algebra.py +1018 -0
- sage/all__sagemath_combinat.py +44 -0
- sage/combinat/SJT.py +255 -0
- sage/combinat/affine_permutation.py +2405 -0
- sage/combinat/algebraic_combinatorics.py +55 -0
- sage/combinat/all.py +53 -0
- sage/combinat/all__sagemath_combinat.py +195 -0
- sage/combinat/alternating_sign_matrix.py +2063 -0
- sage/combinat/baxter_permutations.py +346 -0
- sage/combinat/bijectionist.py +3220 -0
- sage/combinat/binary_recurrence_sequences.py +1180 -0
- sage/combinat/blob_algebra.py +685 -0
- sage/combinat/catalog_partitions.py +27 -0
- sage/combinat/chas/all.py +23 -0
- sage/combinat/chas/fsym.py +1180 -0
- sage/combinat/chas/wqsym.py +2601 -0
- sage/combinat/cluster_complex.py +326 -0
- sage/combinat/colored_permutations.py +2039 -0
- sage/combinat/colored_permutations_representations.py +964 -0
- sage/combinat/composition_signed.py +142 -0
- sage/combinat/composition_tableau.py +855 -0
- sage/combinat/constellation.py +1729 -0
- sage/combinat/core.py +751 -0
- sage/combinat/counting.py +12 -0
- sage/combinat/crystals/affine.py +742 -0
- sage/combinat/crystals/affine_factorization.py +518 -0
- sage/combinat/crystals/affinization.py +331 -0
- sage/combinat/crystals/alcove_path.py +2013 -0
- sage/combinat/crystals/all.py +22 -0
- sage/combinat/crystals/bkk_crystals.py +141 -0
- sage/combinat/crystals/catalog.py +115 -0
- sage/combinat/crystals/catalog_elementary_crystals.py +18 -0
- sage/combinat/crystals/catalog_infinity_crystals.py +33 -0
- sage/combinat/crystals/catalog_kirillov_reshetikhin.py +18 -0
- sage/combinat/crystals/crystals.py +257 -0
- sage/combinat/crystals/direct_sum.py +260 -0
- sage/combinat/crystals/elementary_crystals.py +1251 -0
- sage/combinat/crystals/fast_crystals.py +441 -0
- sage/combinat/crystals/fully_commutative_stable_grothendieck.py +1205 -0
- sage/combinat/crystals/generalized_young_walls.py +1076 -0
- sage/combinat/crystals/highest_weight_crystals.py +436 -0
- sage/combinat/crystals/induced_structure.py +695 -0
- sage/combinat/crystals/infinity_crystals.py +730 -0
- sage/combinat/crystals/kac_modules.py +863 -0
- sage/combinat/crystals/kirillov_reshetikhin.py +4196 -0
- sage/combinat/crystals/kyoto_path_model.py +497 -0
- sage/combinat/crystals/letters.cp314t-win_amd64.pyd +0 -0
- sage/combinat/crystals/letters.pxd +79 -0
- sage/combinat/crystals/letters.pyx +3056 -0
- sage/combinat/crystals/littelmann_path.py +1518 -0
- sage/combinat/crystals/monomial_crystals.py +1262 -0
- sage/combinat/crystals/multisegments.py +462 -0
- sage/combinat/crystals/mv_polytopes.py +467 -0
- sage/combinat/crystals/pbw_crystal.py +511 -0
- sage/combinat/crystals/pbw_datum.cp314t-win_amd64.pyd +0 -0
- sage/combinat/crystals/pbw_datum.pxd +4 -0
- sage/combinat/crystals/pbw_datum.pyx +487 -0
- sage/combinat/crystals/polyhedral_realization.py +372 -0
- sage/combinat/crystals/spins.cp314t-win_amd64.pyd +0 -0
- sage/combinat/crystals/spins.pxd +21 -0
- sage/combinat/crystals/spins.pyx +756 -0
- sage/combinat/crystals/star_crystal.py +290 -0
- sage/combinat/crystals/subcrystal.py +464 -0
- sage/combinat/crystals/tensor_product.py +1177 -0
- sage/combinat/crystals/tensor_product_element.cp314t-win_amd64.pyd +0 -0
- sage/combinat/crystals/tensor_product_element.pxd +35 -0
- sage/combinat/crystals/tensor_product_element.pyx +1870 -0
- sage/combinat/crystals/virtual_crystal.py +420 -0
- sage/combinat/cyclic_sieving_phenomenon.py +204 -0
- sage/combinat/debruijn_sequence.cp314t-win_amd64.pyd +0 -0
- sage/combinat/debruijn_sequence.pyx +355 -0
- sage/combinat/decorated_permutation.py +270 -0
- sage/combinat/degree_sequences.cp314t-win_amd64.pyd +0 -0
- sage/combinat/degree_sequences.pyx +588 -0
- sage/combinat/derangements.py +527 -0
- sage/combinat/descent_algebra.py +1008 -0
- sage/combinat/diagram.py +1551 -0
- sage/combinat/diagram_algebras.py +5886 -0
- sage/combinat/dyck_word.py +4349 -0
- sage/combinat/e_one_star.py +1623 -0
- sage/combinat/enumerated_sets.py +123 -0
- sage/combinat/expnums.cp314t-win_amd64.pyd +0 -0
- sage/combinat/expnums.pyx +148 -0
- sage/combinat/fast_vector_partitions.cp314t-win_amd64.pyd +0 -0
- sage/combinat/fast_vector_partitions.pyx +346 -0
- sage/combinat/fqsym.py +1977 -0
- sage/combinat/free_dendriform_algebra.py +954 -0
- sage/combinat/free_prelie_algebra.py +1141 -0
- sage/combinat/fully_commutative_elements.py +1077 -0
- sage/combinat/fully_packed_loop.py +1523 -0
- sage/combinat/gelfand_tsetlin_patterns.py +1409 -0
- sage/combinat/gray_codes.py +311 -0
- sage/combinat/grossman_larson_algebras.py +667 -0
- sage/combinat/growth.py +4352 -0
- sage/combinat/hall_polynomial.py +188 -0
- sage/combinat/hillman_grassl.py +866 -0
- sage/combinat/integer_matrices.py +329 -0
- sage/combinat/integer_vectors_mod_permgroup.py +1238 -0
- sage/combinat/k_tableau.py +4564 -0
- sage/combinat/kazhdan_lusztig.py +215 -0
- sage/combinat/key_polynomial.py +885 -0
- sage/combinat/knutson_tao_puzzles.py +2286 -0
- sage/combinat/lr_tableau.py +311 -0
- sage/combinat/matrices/all.py +24 -0
- sage/combinat/matrices/hadamard_matrix.py +3790 -0
- sage/combinat/matrices/latin.py +2912 -0
- sage/combinat/misc.py +401 -0
- sage/combinat/multiset_partition_into_sets_ordered.py +3541 -0
- sage/combinat/ncsf_qsym/all.py +21 -0
- sage/combinat/ncsf_qsym/combinatorics.py +317 -0
- sage/combinat/ncsf_qsym/generic_basis_code.py +1427 -0
- sage/combinat/ncsf_qsym/ncsf.py +5637 -0
- sage/combinat/ncsf_qsym/qsym.py +4053 -0
- sage/combinat/ncsf_qsym/tutorial.py +447 -0
- sage/combinat/ncsym/all.py +21 -0
- sage/combinat/ncsym/bases.py +855 -0
- sage/combinat/ncsym/dual.py +593 -0
- sage/combinat/ncsym/ncsym.py +2076 -0
- sage/combinat/necklace.py +551 -0
- sage/combinat/non_decreasing_parking_function.py +634 -0
- sage/combinat/nu_dyck_word.py +1474 -0
- sage/combinat/output.py +861 -0
- sage/combinat/parallelogram_polyomino.py +4326 -0
- sage/combinat/parking_functions.py +1602 -0
- sage/combinat/partition_algebra.py +1998 -0
- sage/combinat/partition_kleshchev.py +1982 -0
- sage/combinat/partition_shifting_algebras.py +584 -0
- sage/combinat/partition_tuple.py +3114 -0
- sage/combinat/path_tableaux/all.py +13 -0
- sage/combinat/path_tableaux/catalog.py +29 -0
- sage/combinat/path_tableaux/dyck_path.py +380 -0
- sage/combinat/path_tableaux/frieze.py +476 -0
- sage/combinat/path_tableaux/path_tableau.py +728 -0
- sage/combinat/path_tableaux/semistandard.py +510 -0
- sage/combinat/perfect_matching.py +779 -0
- sage/combinat/plane_partition.py +3300 -0
- sage/combinat/q_bernoulli.cp314t-win_amd64.pyd +0 -0
- sage/combinat/q_bernoulli.pyx +128 -0
- sage/combinat/quickref.py +81 -0
- sage/combinat/recognizable_series.py +2051 -0
- sage/combinat/regular_sequence.py +4316 -0
- sage/combinat/regular_sequence_bounded.py +543 -0
- sage/combinat/restricted_growth.py +81 -0
- sage/combinat/ribbon.py +20 -0
- sage/combinat/ribbon_shaped_tableau.py +489 -0
- sage/combinat/ribbon_tableau.py +1180 -0
- sage/combinat/rigged_configurations/all.py +46 -0
- sage/combinat/rigged_configurations/bij_abstract_class.py +548 -0
- sage/combinat/rigged_configurations/bij_infinity.py +370 -0
- sage/combinat/rigged_configurations/bij_type_A.py +163 -0
- sage/combinat/rigged_configurations/bij_type_A2_dual.py +338 -0
- sage/combinat/rigged_configurations/bij_type_A2_even.py +218 -0
- sage/combinat/rigged_configurations/bij_type_A2_odd.py +199 -0
- sage/combinat/rigged_configurations/bij_type_B.py +900 -0
- sage/combinat/rigged_configurations/bij_type_C.py +267 -0
- sage/combinat/rigged_configurations/bij_type_D.py +771 -0
- sage/combinat/rigged_configurations/bij_type_D_tri.py +392 -0
- sage/combinat/rigged_configurations/bij_type_D_twisted.py +576 -0
- sage/combinat/rigged_configurations/bij_type_E67.py +402 -0
- sage/combinat/rigged_configurations/bijection.py +143 -0
- sage/combinat/rigged_configurations/kleber_tree.py +1475 -0
- sage/combinat/rigged_configurations/kr_tableaux.py +1898 -0
- sage/combinat/rigged_configurations/rc_crystal.py +461 -0
- sage/combinat/rigged_configurations/rc_infinity.py +540 -0
- sage/combinat/rigged_configurations/rigged_configuration_element.py +2403 -0
- sage/combinat/rigged_configurations/rigged_configurations.py +1918 -0
- sage/combinat/rigged_configurations/rigged_partition.cp314t-win_amd64.pyd +0 -0
- sage/combinat/rigged_configurations/rigged_partition.pxd +15 -0
- sage/combinat/rigged_configurations/rigged_partition.pyx +680 -0
- sage/combinat/rigged_configurations/tensor_product_kr_tableaux.py +499 -0
- sage/combinat/rigged_configurations/tensor_product_kr_tableaux_element.py +428 -0
- sage/combinat/rsk.py +3438 -0
- sage/combinat/schubert_polynomial.py +508 -0
- sage/combinat/set_partition.py +3318 -0
- sage/combinat/set_partition_iterator.cp314t-win_amd64.pyd +0 -0
- sage/combinat/set_partition_iterator.pyx +136 -0
- sage/combinat/set_partition_ordered.py +1590 -0
- sage/combinat/sf/abreu_nigro.py +346 -0
- sage/combinat/sf/all.py +52 -0
- sage/combinat/sf/character.py +576 -0
- sage/combinat/sf/classical.py +319 -0
- sage/combinat/sf/dual.py +996 -0
- sage/combinat/sf/elementary.py +549 -0
- sage/combinat/sf/hall_littlewood.py +1028 -0
- sage/combinat/sf/hecke.py +336 -0
- sage/combinat/sf/homogeneous.py +464 -0
- sage/combinat/sf/jack.py +1428 -0
- sage/combinat/sf/k_dual.py +1458 -0
- sage/combinat/sf/kfpoly.py +447 -0
- sage/combinat/sf/llt.py +789 -0
- sage/combinat/sf/macdonald.py +2019 -0
- sage/combinat/sf/monomial.py +525 -0
- sage/combinat/sf/multiplicative.py +113 -0
- sage/combinat/sf/new_kschur.py +1786 -0
- sage/combinat/sf/ns_macdonald.py +964 -0
- sage/combinat/sf/orthogonal.py +246 -0
- sage/combinat/sf/orthotriang.py +355 -0
- sage/combinat/sf/powersum.py +963 -0
- sage/combinat/sf/schur.py +880 -0
- sage/combinat/sf/sf.py +1653 -0
- sage/combinat/sf/sfa.py +7053 -0
- sage/combinat/sf/symplectic.py +253 -0
- sage/combinat/sf/witt.py +721 -0
- sage/combinat/shifted_primed_tableau.py +2735 -0
- sage/combinat/shuffle.py +830 -0
- sage/combinat/sidon_sets.py +146 -0
- sage/combinat/similarity_class_type.py +1721 -0
- sage/combinat/sine_gordon.py +618 -0
- sage/combinat/six_vertex_model.py +784 -0
- sage/combinat/skew_partition.py +2053 -0
- sage/combinat/skew_tableau.py +2989 -0
- sage/combinat/sloane_functions.py +8935 -0
- sage/combinat/specht_module.py +1403 -0
- sage/combinat/species/all.py +48 -0
- sage/combinat/species/characteristic_species.py +321 -0
- sage/combinat/species/composition_species.py +273 -0
- sage/combinat/species/cycle_species.py +284 -0
- sage/combinat/species/empty_species.py +155 -0
- sage/combinat/species/functorial_composition_species.py +148 -0
- sage/combinat/species/generating_series.py +673 -0
- sage/combinat/species/library.py +148 -0
- sage/combinat/species/linear_order_species.py +169 -0
- sage/combinat/species/misc.py +83 -0
- sage/combinat/species/partition_species.py +290 -0
- sage/combinat/species/permutation_species.py +268 -0
- sage/combinat/species/product_species.py +423 -0
- sage/combinat/species/recursive_species.py +476 -0
- sage/combinat/species/set_species.py +192 -0
- sage/combinat/species/species.py +820 -0
- sage/combinat/species/structure.py +539 -0
- sage/combinat/species/subset_species.py +243 -0
- sage/combinat/species/sum_species.py +225 -0
- sage/combinat/subword.py +564 -0
- sage/combinat/subword_complex.py +2122 -0
- sage/combinat/subword_complex_c.cp314t-win_amd64.pyd +0 -0
- sage/combinat/subword_complex_c.pyx +119 -0
- sage/combinat/super_tableau.py +821 -0
- sage/combinat/superpartition.py +1154 -0
- sage/combinat/symmetric_group_algebra.py +3774 -0
- sage/combinat/symmetric_group_representations.py +1830 -0
- sage/combinat/t_sequences.py +877 -0
- sage/combinat/tableau.py +9506 -0
- sage/combinat/tableau_residues.py +860 -0
- sage/combinat/tableau_tuple.py +5353 -0
- sage/combinat/tiling.py +2432 -0
- sage/combinat/triangles_FHM.py +777 -0
- sage/combinat/tutorial.py +1857 -0
- sage/combinat/vector_partition.py +337 -0
- sage/combinat/words/abstract_word.py +1722 -0
- sage/combinat/words/all.py +59 -0
- sage/combinat/words/alphabet.py +268 -0
- sage/combinat/words/finite_word.py +7201 -0
- sage/combinat/words/infinite_word.py +113 -0
- sage/combinat/words/lyndon_word.py +652 -0
- sage/combinat/words/morphic.py +351 -0
- sage/combinat/words/morphism.py +3878 -0
- sage/combinat/words/paths.py +2932 -0
- sage/combinat/words/shuffle_product.py +278 -0
- sage/combinat/words/suffix_trees.py +1873 -0
- sage/combinat/words/word.py +769 -0
- sage/combinat/words/word_char.cp314t-win_amd64.pyd +0 -0
- sage/combinat/words/word_char.pyx +847 -0
- sage/combinat/words/word_datatypes.cp314t-win_amd64.pyd +0 -0
- sage/combinat/words/word_datatypes.pxd +4 -0
- sage/combinat/words/word_datatypes.pyx +1067 -0
- sage/combinat/words/word_generators.py +2026 -0
- sage/combinat/words/word_infinite_datatypes.py +1218 -0
- sage/combinat/words/word_options.py +99 -0
- sage/combinat/words/words.py +2396 -0
- sage/data_structures/all__sagemath_combinat.py +1 -0
- sage/databases/all__sagemath_combinat.py +13 -0
- sage/databases/findstat.py +4897 -0
- sage/databases/oeis.py +2058 -0
- sage/databases/sloane.py +393 -0
- sage/dynamics/all__sagemath_combinat.py +14 -0
- sage/dynamics/cellular_automata/all.py +7 -0
- sage/dynamics/cellular_automata/catalog.py +34 -0
- sage/dynamics/cellular_automata/elementary.py +612 -0
- sage/dynamics/cellular_automata/glca.py +477 -0
- sage/dynamics/cellular_automata/solitons.py +1463 -0
- sage/dynamics/finite_dynamical_system.py +1249 -0
- sage/dynamics/finite_dynamical_system_catalog.py +382 -0
- sage/games/all.py +7 -0
- sage/games/hexad.py +704 -0
- sage/games/quantumino.py +591 -0
- sage/games/sudoku.py +889 -0
- sage/games/sudoku_backtrack.cp314t-win_amd64.pyd +0 -0
- sage/games/sudoku_backtrack.pyx +189 -0
- sage/groups/all__sagemath_combinat.py +1 -0
- sage/groups/indexed_free_group.py +489 -0
- sage/libs/all__sagemath_combinat.py +6 -0
- sage/libs/lrcalc/__init__.py +1 -0
- sage/libs/lrcalc/lrcalc.py +525 -0
- sage/libs/symmetrica/__init__.py +7 -0
- sage/libs/symmetrica/all.py +101 -0
- sage/libs/symmetrica/kostka.pxi +168 -0
- sage/libs/symmetrica/part.pxi +193 -0
- sage/libs/symmetrica/plet.pxi +42 -0
- sage/libs/symmetrica/sab.pxi +196 -0
- sage/libs/symmetrica/sb.pxi +332 -0
- sage/libs/symmetrica/sc.pxi +192 -0
- sage/libs/symmetrica/schur.pxi +956 -0
- sage/libs/symmetrica/symmetrica.cp314t-win_amd64.pyd +0 -0
- sage/libs/symmetrica/symmetrica.pxi +1172 -0
- sage/libs/symmetrica/symmetrica.pyx +39 -0
- sage/monoids/all.py +13 -0
- sage/monoids/automatic_semigroup.py +1054 -0
- sage/monoids/free_abelian_monoid.py +315 -0
- sage/monoids/free_abelian_monoid_element.cp314t-win_amd64.pyd +0 -0
- sage/monoids/free_abelian_monoid_element.pxd +16 -0
- sage/monoids/free_abelian_monoid_element.pyx +397 -0
- sage/monoids/free_monoid.py +335 -0
- sage/monoids/free_monoid_element.py +431 -0
- sage/monoids/hecke_monoid.py +65 -0
- sage/monoids/string_monoid.py +817 -0
- sage/monoids/string_monoid_element.py +547 -0
- sage/monoids/string_ops.py +143 -0
- sage/monoids/trace_monoid.py +972 -0
- sage/rings/all__sagemath_combinat.py +2 -0
- sage/sat/all.py +4 -0
- sage/sat/boolean_polynomials.py +405 -0
- sage/sat/converters/__init__.py +6 -0
- sage/sat/converters/anf2cnf.py +14 -0
- sage/sat/converters/polybori.py +611 -0
- sage/sat/solvers/__init__.py +5 -0
- sage/sat/solvers/cryptominisat.py +287 -0
- sage/sat/solvers/dimacs.py +783 -0
- sage/sat/solvers/picosat.py +228 -0
- sage/sat/solvers/sat_lp.py +156 -0
- sage/sat/solvers/satsolver.cp314t-win_amd64.pyd +0 -0
- sage/sat/solvers/satsolver.pxd +3 -0
- sage/sat/solvers/satsolver.pyx +405 -0
sage/combinat/sf/llt.py
ADDED
|
@@ -0,0 +1,789 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-combinat
|
|
2
|
+
# sage.doctest: needs sage.combinat sage.modules
|
|
3
|
+
r"""
|
|
4
|
+
LLT symmetric functions
|
|
5
|
+
|
|
6
|
+
REFERENCES:
|
|
7
|
+
|
|
8
|
+
.. [LLT1997] Alain Lascoux, Bernard Leclerc, Jean-Yves Thibon,
|
|
9
|
+
Ribbon tableaux, Hall-Littlewood functions, quantum affine algebras, and unipotent varieties,
|
|
10
|
+
J. Math. Phys. 38 (1997), no. 2, 1041-1068,
|
|
11
|
+
:arxiv:`q-alg/9512031v1` [math.q.alg]
|
|
12
|
+
|
|
13
|
+
.. [LT2000] Bernard Leclerc and Jean-Yves Thibon,
|
|
14
|
+
Littlewood-Richardson coefficients and Kazhdan-Lusztig polynomials,
|
|
15
|
+
in: Combinatorial methods in representation theory (Kyoto)
|
|
16
|
+
Adv. Stud. Pure Math., vol. 28, Kinokuniya, Tokyo, 2000, pp 155-220
|
|
17
|
+
:arxiv:`math/9809122v3` [math.q-alg]
|
|
18
|
+
"""
|
|
19
|
+
# ****************************************************************************
|
|
20
|
+
# Copyright (C) 2007 Mike Hansen <mhansen@gmail.com>
|
|
21
|
+
# 2012 Mike Zabrocki <mike.zabrocki@gmail.com>
|
|
22
|
+
#
|
|
23
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
24
|
+
#
|
|
25
|
+
# This code is distributed in the hope that it will be useful,
|
|
26
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
27
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
28
|
+
# General Public License for more details.
|
|
29
|
+
#
|
|
30
|
+
# The full text of the GPL is available at:
|
|
31
|
+
#
|
|
32
|
+
# https://www.gnu.org/licenses/
|
|
33
|
+
# ****************************************************************************
|
|
34
|
+
import sage.combinat.skew_partition
|
|
35
|
+
from sage.categories.homset import Hom
|
|
36
|
+
from sage.categories.morphism import SetMorphism
|
|
37
|
+
from sage.combinat import ribbon_tableau
|
|
38
|
+
from sage.combinat.partition import Partition, Partitions, _Partitions
|
|
39
|
+
from sage.rings.integer_ring import ZZ
|
|
40
|
+
from sage.rings.rational_field import QQ
|
|
41
|
+
from sage.structure.unique_representation import UniqueRepresentation
|
|
42
|
+
|
|
43
|
+
from . import sfa
|
|
44
|
+
|
|
45
|
+
# cache for H spin basis
|
|
46
|
+
hsp_to_m_cache = {}
|
|
47
|
+
m_to_hsp_cache = {}
|
|
48
|
+
|
|
49
|
+
# cache for H cospin basis
|
|
50
|
+
hcosp_to_m_cache = {}
|
|
51
|
+
m_to_hcosp_cache = {}
|
|
52
|
+
|
|
53
|
+
QQt = QQ['t'].fraction_field()
|
|
54
|
+
# This is to become the "abstract algebra" for llt polynomials
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
class LLT_class(UniqueRepresentation):
|
|
58
|
+
r"""
|
|
59
|
+
A class for working with LLT symmetric functions.
|
|
60
|
+
|
|
61
|
+
EXAMPLES::
|
|
62
|
+
|
|
63
|
+
sage: Sym = SymmetricFunctions(FractionField(QQ['t']))
|
|
64
|
+
sage: L3 = Sym.llt(3); L3
|
|
65
|
+
level 3 LLT polynomials over Fraction Field of Univariate Polynomial Ring in t over Rational Field
|
|
66
|
+
sage: L3.cospin([3,2,1])
|
|
67
|
+
(t+1)*m[1, 1] + m[2]
|
|
68
|
+
sage: HC3 = L3.hcospin(); HC3
|
|
69
|
+
Symmetric Functions over Fraction Field of Univariate Polynomial Ring in t over Rational Field in the level 3 LLT cospin basis
|
|
70
|
+
sage: m = Sym.monomial()
|
|
71
|
+
sage: m( HC3[1,1] )
|
|
72
|
+
(t+1)*m[1, 1] + m[2]
|
|
73
|
+
|
|
74
|
+
We require that the parameter `t` must be in the base ring::
|
|
75
|
+
|
|
76
|
+
sage: # needs sage.symbolic
|
|
77
|
+
sage: Symxt = SymmetricFunctions(QQ['x','t'].fraction_field())
|
|
78
|
+
sage: (x,t) = Symxt.base_ring().gens()
|
|
79
|
+
sage: LLT3x = Symxt.llt(3,t=x)
|
|
80
|
+
sage: LLT3 = Symxt.llt(3)
|
|
81
|
+
sage: HS3x = LLT3x.hspin()
|
|
82
|
+
sage: HS3t = LLT3.hspin()
|
|
83
|
+
sage: s = Symxt.schur()
|
|
84
|
+
sage: s(HS3x[2,1])
|
|
85
|
+
s[2, 1] + x*s[3]
|
|
86
|
+
sage: s(HS3t[2,1])
|
|
87
|
+
s[2, 1] + t*s[3]
|
|
88
|
+
sage: HS3x(HS3t[2,1])
|
|
89
|
+
HSp3[2, 1] - (x-t)*HSp3[3]
|
|
90
|
+
sage: s(HS3x(HS3t[2,1]))
|
|
91
|
+
s[2, 1] + t*s[3]
|
|
92
|
+
sage: LLT3t2 = Symxt.llt(3,t=2)
|
|
93
|
+
sage: HC3t2 = LLT3t2.hcospin()
|
|
94
|
+
sage: HS3x(HC3t2[3,1])
|
|
95
|
+
2*HSp3[3, 1] - (2*x-1)*HSp3[4]
|
|
96
|
+
"""
|
|
97
|
+
@staticmethod
|
|
98
|
+
def __classcall__(cls, Sym, k, t='t'):
|
|
99
|
+
"""
|
|
100
|
+
Normalize the arguments.
|
|
101
|
+
|
|
102
|
+
TESTS::
|
|
103
|
+
|
|
104
|
+
sage: R.<q, t> = QQ[]
|
|
105
|
+
sage: B1 = SymmetricFunctions(R).llt(3).hspin()
|
|
106
|
+
sage: B2 = SymmetricFunctions(R).llt(3, t).hspin()
|
|
107
|
+
sage: B3 = SymmetricFunctions(R).llt(3, q).hspin()
|
|
108
|
+
sage: B1 is B2
|
|
109
|
+
True
|
|
110
|
+
sage: B1 == B3
|
|
111
|
+
False
|
|
112
|
+
"""
|
|
113
|
+
return super().__classcall__(cls, Sym, k, Sym.base_ring()(t))
|
|
114
|
+
|
|
115
|
+
def __init__(self, Sym, k, t):
|
|
116
|
+
r"""
|
|
117
|
+
Class of LLT symmetric function bases.
|
|
118
|
+
|
|
119
|
+
INPUT:
|
|
120
|
+
|
|
121
|
+
- ``self`` -- a family of LLT symmetric function bases
|
|
122
|
+
- ``k`` -- positive integer (the level)
|
|
123
|
+
- ``t`` -- a parameter (default: `t`)
|
|
124
|
+
|
|
125
|
+
EXAMPLES::
|
|
126
|
+
|
|
127
|
+
sage: L3 = SymmetricFunctions(FractionField(QQ['t'])).llt(3)
|
|
128
|
+
sage: L3 == loads(dumps(L3))
|
|
129
|
+
True
|
|
130
|
+
sage: TestSuite(L3).run(skip=["_test_associativity","_test_distributivity","_test_prod"])
|
|
131
|
+
|
|
132
|
+
TESTS::
|
|
133
|
+
|
|
134
|
+
sage: L3 != SymmetricFunctions(FractionField(QQ['t'])).llt(2)
|
|
135
|
+
True
|
|
136
|
+
sage: L3p = SymmetricFunctions(FractionField(QQ['t'])).llt(3,t=1)
|
|
137
|
+
sage: L3 != L3p
|
|
138
|
+
True
|
|
139
|
+
sage: L3p != SymmetricFunctions(QQ).llt(3,t=1)
|
|
140
|
+
True
|
|
141
|
+
|
|
142
|
+
sage: Sym = SymmetricFunctions(QQ['t'])
|
|
143
|
+
sage: ks3 = Sym.kschur(3)
|
|
144
|
+
sage: llt3 = Sym.llt(3)
|
|
145
|
+
sage: f = llt3.cospin([[1],[2,1],[1,1]]).omega()
|
|
146
|
+
sage: ks3(f)
|
|
147
|
+
ks3[2, 2, 1, 1] + ks3[2, 2, 2] + t*ks3[3, 1, 1, 1] + t^2*ks3[3, 2, 1]
|
|
148
|
+
"""
|
|
149
|
+
self._k = k
|
|
150
|
+
self._sym = Sym
|
|
151
|
+
self._name = "level %s LLT polynomials" % self._k
|
|
152
|
+
self.t = t
|
|
153
|
+
self._name_suffix = ""
|
|
154
|
+
if str(t) != 't':
|
|
155
|
+
self._name_suffix += " with t=%s" % self.t
|
|
156
|
+
self._name += self._name_suffix + " over %s" % self._sym.base_ring()
|
|
157
|
+
self._m = Sym.monomial()
|
|
158
|
+
|
|
159
|
+
def __repr__(self):
|
|
160
|
+
r"""
|
|
161
|
+
Representation of the LLT symmetric functions.
|
|
162
|
+
|
|
163
|
+
INPUT:
|
|
164
|
+
|
|
165
|
+
- ``self`` -- a family of LLT symmetric function bases
|
|
166
|
+
|
|
167
|
+
OUTPUT: a string representing the LLT symmetric functions
|
|
168
|
+
|
|
169
|
+
EXAMPLES::
|
|
170
|
+
|
|
171
|
+
sage: SymmetricFunctions(FractionField(QQ['t'])).llt(3)
|
|
172
|
+
level 3 LLT polynomials over Fraction Field of Univariate Polynomial Ring in t over Rational Field
|
|
173
|
+
sage: SymmetricFunctions(QQ).llt(3,t=2)
|
|
174
|
+
level 3 LLT polynomials with t=2 over Rational Field
|
|
175
|
+
"""
|
|
176
|
+
return self._name
|
|
177
|
+
|
|
178
|
+
def symmetric_function_ring( self ):
|
|
179
|
+
r"""
|
|
180
|
+
The symmetric function algebra associated to the family of LLT
|
|
181
|
+
symmetric function bases
|
|
182
|
+
|
|
183
|
+
INPUT:
|
|
184
|
+
|
|
185
|
+
- ``self`` -- a family of LLT symmetric functions bases
|
|
186
|
+
|
|
187
|
+
OUTPUT: the symmetric function ring associated to ``self``
|
|
188
|
+
|
|
189
|
+
EXAMPLES::
|
|
190
|
+
|
|
191
|
+
sage: L3 = SymmetricFunctions(FractionField(QQ['t'])).llt(3)
|
|
192
|
+
sage: L3.symmetric_function_ring()
|
|
193
|
+
Symmetric Functions over Fraction Field of Univariate Polynomial Ring in t over Rational Field
|
|
194
|
+
"""
|
|
195
|
+
return self._sym
|
|
196
|
+
|
|
197
|
+
def base_ring(self):
|
|
198
|
+
r"""
|
|
199
|
+
Return the base ring of ``self``.
|
|
200
|
+
|
|
201
|
+
INPUT:
|
|
202
|
+
|
|
203
|
+
- ``self`` -- a family of LLT symmetric functions bases
|
|
204
|
+
|
|
205
|
+
OUTPUT: the base ring of the symmetric function ring associated to ``self``
|
|
206
|
+
|
|
207
|
+
EXAMPLES::
|
|
208
|
+
|
|
209
|
+
sage: SymmetricFunctions(FractionField(QQ['t'])).llt(3).base_ring()
|
|
210
|
+
Fraction Field of Univariate Polynomial Ring in t over Rational Field
|
|
211
|
+
"""
|
|
212
|
+
return self._sym.base_ring()
|
|
213
|
+
|
|
214
|
+
def level(self):
|
|
215
|
+
r"""
|
|
216
|
+
Return the level of ``self``.
|
|
217
|
+
|
|
218
|
+
INPUT:
|
|
219
|
+
|
|
220
|
+
- ``self`` -- a family of LLT symmetric functions bases
|
|
221
|
+
|
|
222
|
+
OUTPUT: the level is the parameter of `k` in the basis
|
|
223
|
+
|
|
224
|
+
EXAMPLES::
|
|
225
|
+
|
|
226
|
+
sage: SymmetricFunctions(FractionField(QQ['t'])).llt(3).level()
|
|
227
|
+
3
|
|
228
|
+
"""
|
|
229
|
+
return self._k
|
|
230
|
+
|
|
231
|
+
def _llt_generic(self, skp, stat):
|
|
232
|
+
r"""
|
|
233
|
+
Take in partition, list of partitions, or a list of skew
|
|
234
|
+
partitions as well as a function which takes in two partitions and
|
|
235
|
+
a level and return a coefficient.
|
|
236
|
+
|
|
237
|
+
INPUT:
|
|
238
|
+
|
|
239
|
+
- ``self`` -- a family of LLT symmetric functions bases
|
|
240
|
+
- ``skp`` -- a partition or a list of partitions or a list of skew partitions
|
|
241
|
+
- ``stat`` -- a function which accepts two partitions and a value
|
|
242
|
+
for the level and returns a coefficient which is a polynomial
|
|
243
|
+
in a parameter `t`. The first partition is the index of the
|
|
244
|
+
LLT function, the second partition is the index of the monomial
|
|
245
|
+
basis element.
|
|
246
|
+
|
|
247
|
+
OUTPUT:
|
|
248
|
+
|
|
249
|
+
- returns the monomial expansion of the LLT symmetric function
|
|
250
|
+
indexed by ``skp``
|
|
251
|
+
|
|
252
|
+
EXAMPLES::
|
|
253
|
+
|
|
254
|
+
sage: L3 = SymmetricFunctions(FractionField(QQ['t'])).llt(3)
|
|
255
|
+
sage: f = lambda skp,mu,level: QQ(1)
|
|
256
|
+
sage: L3._llt_generic([3,2,1],f)
|
|
257
|
+
m[1, 1] + m[2]
|
|
258
|
+
sage: L3._llt_generic([[2,1],[1],[2]],f)
|
|
259
|
+
m[1, 1, 1, 1, 1, 1] + m[2, 1, 1, 1, 1] + m[2, 2, 1, 1] + m[2, 2, 2] + m[3, 1, 1, 1] + m[3, 2, 1] + m[3, 3] + m[4, 1, 1] + m[4, 2] + m[5, 1] + m[6]
|
|
260
|
+
sage: L3._llt_generic([[[2,2],[1]],[[2,1],[]]],f)
|
|
261
|
+
m[1, 1, 1, 1] + m[2, 1, 1] + m[2, 2] + m[3, 1] + m[4]
|
|
262
|
+
"""
|
|
263
|
+
if skp in _Partitions:
|
|
264
|
+
m = (sum(skp) / self.level()).floor()
|
|
265
|
+
if m == 0:
|
|
266
|
+
raise ValueError("level (%s=) must divide %s " % (sum(skp),
|
|
267
|
+
self.level()))
|
|
268
|
+
mu = Partitions( ZZ(sum(skp) / self.level()) )
|
|
269
|
+
|
|
270
|
+
elif isinstance(skp, list) and skp[0] in sage.combinat.skew_partition.SkewPartitions():
|
|
271
|
+
#skp is a list of skew partitions
|
|
272
|
+
skp2 = [Partition(core=[], quotient=[skp[i][0] for i in range(len(skp))])]
|
|
273
|
+
skp2 += [Partition(core=[], quotient=[skp[i][1] for i in range(len(skp))])]
|
|
274
|
+
mu = Partitions(ZZ((skp2[0].size()-skp2[1].size()) / self.level()))
|
|
275
|
+
skp = skp2
|
|
276
|
+
elif isinstance(skp, list) and skp[0] in _Partitions:
|
|
277
|
+
#skp is a list of partitions
|
|
278
|
+
skp = Partition(core=[], quotient=skp)
|
|
279
|
+
mu = Partitions( ZZ(sum(skp) / self.level()) )
|
|
280
|
+
else:
|
|
281
|
+
raise ValueError("LLT polynomials not defined for %s" % skp)
|
|
282
|
+
|
|
283
|
+
BR = self.base_ring()
|
|
284
|
+
return sum([ BR(stat(skp,nu,self.level()).subs(t=self.t))*self._m(nu) for nu in mu])
|
|
285
|
+
|
|
286
|
+
def spin_square(self, skp):
|
|
287
|
+
r"""
|
|
288
|
+
Calculate a single instance of a spin squared LLT symmetric function
|
|
289
|
+
associated with a partition, list of partitions, or a list of skew partitions.
|
|
290
|
+
|
|
291
|
+
This family of symmetric functions is defined in [LT2000]_ equation (43).
|
|
292
|
+
|
|
293
|
+
INPUT:
|
|
294
|
+
|
|
295
|
+
- ``self`` -- a family of LLT symmetric functions bases
|
|
296
|
+
- ``skp`` -- a partition of a list of partitions or a list of skew
|
|
297
|
+
partitions
|
|
298
|
+
|
|
299
|
+
OUTPUT:
|
|
300
|
+
|
|
301
|
+
the monomial expansion of the LLT symmetric function spin-square
|
|
302
|
+
functions indexed by ``skp``
|
|
303
|
+
|
|
304
|
+
EXAMPLES::
|
|
305
|
+
|
|
306
|
+
sage: L3 = SymmetricFunctions(FractionField(QQ['t'])).llt(3)
|
|
307
|
+
sage: L3.spin_square([2,1])
|
|
308
|
+
t*m[1]
|
|
309
|
+
sage: L3.spin_square([3,2,1])
|
|
310
|
+
(t^3+t)*m[1, 1] + t^3*m[2]
|
|
311
|
+
sage: L3.spin_square([[1],[1],[1]])
|
|
312
|
+
(t^6+2*t^4+2*t^2+1)*m[1, 1, 1] + (t^6+t^4+t^2)*m[2, 1] + t^6*m[3]
|
|
313
|
+
sage: L3.spin_square([[[2,2],[1]],[[2,1],[]]])
|
|
314
|
+
(2*t^4+3*t^2+1)*m[1, 1, 1, 1] + (t^4+t^2)*m[2, 1, 1] + t^4*m[2, 2]
|
|
315
|
+
"""
|
|
316
|
+
return self._llt_generic(skp, ribbon_tableau.spin_polynomial_square)
|
|
317
|
+
|
|
318
|
+
def cospin(self, skp):
|
|
319
|
+
r"""
|
|
320
|
+
Calculate a single instance of the cospin symmetric functions.
|
|
321
|
+
|
|
322
|
+
These are the functions defined in [LLT1997]_ equation (26).
|
|
323
|
+
|
|
324
|
+
INPUT:
|
|
325
|
+
|
|
326
|
+
- ``self`` -- a family of LLT symmetric functions bases
|
|
327
|
+
- ``skp`` -- a partition or a list of partitions or a list of skew
|
|
328
|
+
partitions
|
|
329
|
+
|
|
330
|
+
OUTPUT:
|
|
331
|
+
|
|
332
|
+
the monomial expansion of the LLT symmetric function cospin
|
|
333
|
+
functions indexed by ``skp``
|
|
334
|
+
|
|
335
|
+
EXAMPLES::
|
|
336
|
+
|
|
337
|
+
sage: Sym = SymmetricFunctions(FractionField(QQ['t']))
|
|
338
|
+
sage: L3 = Sym.llt(3)
|
|
339
|
+
sage: L3.cospin([2,1])
|
|
340
|
+
m[1]
|
|
341
|
+
sage: L3.cospin([3,2,1])
|
|
342
|
+
(t+1)*m[1, 1] + m[2]
|
|
343
|
+
sage: s = Sym.schur()
|
|
344
|
+
sage: s(L3.cospin([[2],[1],[2]]))
|
|
345
|
+
t^4*s[2, 2, 1] + t^3*s[3, 1, 1] + (t^3+t^2)*s[3, 2] + (t^2+t)*s[4, 1] + s[5]
|
|
346
|
+
"""
|
|
347
|
+
return self._llt_generic(skp, ribbon_tableau.cospin_polynomial)
|
|
348
|
+
|
|
349
|
+
#### Is it safe to delete this function?
|
|
350
|
+
## def llt_inv(self, skp):
|
|
351
|
+
## """
|
|
352
|
+
## """
|
|
353
|
+
## l = sage.combinat.partitions( sum( [ p.size() for p in skp ] ) ).list()
|
|
354
|
+
## res = m(0)
|
|
355
|
+
## for p in l:
|
|
356
|
+
## inv_p = [ ktuple.inversions() for ktuple in kTupleTableaux(skp, p) ]
|
|
357
|
+
## res += sum([t**x for x in inv_p])*m(p)
|
|
358
|
+
## return res
|
|
359
|
+
|
|
360
|
+
def hcospin(self):
|
|
361
|
+
r"""
|
|
362
|
+
Return the HCospin basis.
|
|
363
|
+
This basis is defined [LLT1997]_ equation (27).
|
|
364
|
+
|
|
365
|
+
INPUT:
|
|
366
|
+
|
|
367
|
+
- ``self`` -- a family of LLT symmetric functions bases
|
|
368
|
+
|
|
369
|
+
OUTPUT: the h-cospin basis of the LLT symmetric functions
|
|
370
|
+
|
|
371
|
+
EXAMPLES::
|
|
372
|
+
|
|
373
|
+
sage: Sym = SymmetricFunctions(FractionField(QQ['t']))
|
|
374
|
+
sage: HCosp3 = Sym.llt(3).hcospin(); HCosp3
|
|
375
|
+
Symmetric Functions
|
|
376
|
+
over Fraction Field of Univariate Polynomial Ring in t over Rational Field
|
|
377
|
+
in the level 3 LLT cospin basis
|
|
378
|
+
sage: HCosp3([1])^2
|
|
379
|
+
1/t*HCosp3[1, 1] + ((t-1)/t)*HCosp3[2]
|
|
380
|
+
|
|
381
|
+
sage: s = Sym.schur()
|
|
382
|
+
sage: HCosp3(s([2]))
|
|
383
|
+
HCosp3[2]
|
|
384
|
+
sage: HCosp3(s([1,1]))
|
|
385
|
+
1/t*HCosp3[1, 1] - 1/t*HCosp3[2]
|
|
386
|
+
sage: s(HCosp3([2,1]))
|
|
387
|
+
t*s[2, 1] + s[3]
|
|
388
|
+
"""
|
|
389
|
+
return LLT_cospin(self)
|
|
390
|
+
|
|
391
|
+
def hspin(self):
|
|
392
|
+
r"""
|
|
393
|
+
Return the HSpin basis.
|
|
394
|
+
|
|
395
|
+
This basis is defined [LLT1997]_ equation (28).
|
|
396
|
+
|
|
397
|
+
INPUT:
|
|
398
|
+
|
|
399
|
+
- ``self`` -- a family of LLT symmetric functions bases
|
|
400
|
+
|
|
401
|
+
OUTPUT: the h-spin basis of the LLT symmetric functions
|
|
402
|
+
|
|
403
|
+
EXAMPLES::
|
|
404
|
+
|
|
405
|
+
sage: Sym = SymmetricFunctions(FractionField(QQ['t']))
|
|
406
|
+
|
|
407
|
+
sage: # needs sage.symbolic
|
|
408
|
+
sage: HSp3 = Sym.llt(3).hspin(); HSp3
|
|
409
|
+
Symmetric Functions
|
|
410
|
+
over Fraction Field of Univariate Polynomial Ring in t over Rational Field
|
|
411
|
+
in the level 3 LLT spin basis
|
|
412
|
+
sage: HSp3([1])^2
|
|
413
|
+
HSp3[1, 1] + (-t+1)*HSp3[2]
|
|
414
|
+
sage: s = Sym.schur()
|
|
415
|
+
sage: HSp3(s([2]))
|
|
416
|
+
HSp3[2]
|
|
417
|
+
sage: HSp3(s([1,1]))
|
|
418
|
+
HSp3[1, 1] - t*HSp3[2]
|
|
419
|
+
sage: s(HSp3([2,1]))
|
|
420
|
+
s[2, 1] + t*s[3]
|
|
421
|
+
"""
|
|
422
|
+
return LLT_spin(self)
|
|
423
|
+
|
|
424
|
+
|
|
425
|
+
class LLT_generic(sfa.SymmetricFunctionAlgebra_generic):
|
|
426
|
+
|
|
427
|
+
def __init__(self, llt, prefix):
|
|
428
|
+
r"""
|
|
429
|
+
A class of methods which are common to both the hspin and hcospin
|
|
430
|
+
of the LLT symmetric functions.
|
|
431
|
+
|
|
432
|
+
INPUT:
|
|
433
|
+
|
|
434
|
+
- ``self`` -- an instance of the LLT hspin or hcospin basis
|
|
435
|
+
- ``llt`` -- a family of LLT symmetric functions
|
|
436
|
+
|
|
437
|
+
EXAMPLES::
|
|
438
|
+
|
|
439
|
+
sage: SymmetricFunctions(FractionField(QQ['t'])).llt(3).hspin()
|
|
440
|
+
Symmetric Functions
|
|
441
|
+
over Fraction Field of Univariate Polynomial Ring in t over Rational Field
|
|
442
|
+
in the level 3 LLT spin basis
|
|
443
|
+
sage: SymmetricFunctions(QQ).llt(3,t=2).hspin()
|
|
444
|
+
Symmetric Functions over Rational Field in the level 3 LLT spin with t=2 basis
|
|
445
|
+
sage: QQz = FractionField(QQ['z']); z = QQz.gen()
|
|
446
|
+
sage: SymmetricFunctions(QQz).llt(3,t=z).hspin()
|
|
447
|
+
Symmetric Functions
|
|
448
|
+
over Fraction Field of Univariate Polynomial Ring in z over Rational Field
|
|
449
|
+
in the level 3 LLT spin with t=z basis
|
|
450
|
+
"""
|
|
451
|
+
s = self.__class__.__name__[4:]
|
|
452
|
+
sfa.SymmetricFunctionAlgebra_generic.__init__(
|
|
453
|
+
self, llt._sym,
|
|
454
|
+
basis_name="level %s LLT " % llt.level() + s + llt._name_suffix,
|
|
455
|
+
prefix=prefix)
|
|
456
|
+
|
|
457
|
+
self.t = llt.t
|
|
458
|
+
self._sym = llt._sym
|
|
459
|
+
self._llt = llt
|
|
460
|
+
self._k = llt._k
|
|
461
|
+
|
|
462
|
+
sfa.SymmetricFunctionAlgebra_generic.__init__(self, self._sym, self._basis_name)
|
|
463
|
+
|
|
464
|
+
# temporary until Hom(GradedHopfAlgebrasWithBasis work better)
|
|
465
|
+
category = sage.categories.all.ModulesWithBasis(self._sym.base_ring())
|
|
466
|
+
self._m = llt._sym.m()
|
|
467
|
+
self .register_coercion(SetMorphism(Hom(self._m, self, category), self._m_to_self))
|
|
468
|
+
self._m.register_coercion(SetMorphism(Hom(self, self._m, category), self._self_to_m))
|
|
469
|
+
|
|
470
|
+
def construction(self):
|
|
471
|
+
"""
|
|
472
|
+
Return a pair ``(F, R)``, where ``F`` is a
|
|
473
|
+
:class:`SymmetricFunctionsFunctor` and `R` is a ring, such
|
|
474
|
+
that ``F(R)`` returns ``self``.
|
|
475
|
+
|
|
476
|
+
EXAMPLES::
|
|
477
|
+
|
|
478
|
+
sage: Sym = SymmetricFunctions(FractionField(QQ['t']))
|
|
479
|
+
sage: HSp3 = Sym.llt(3).hspin()
|
|
480
|
+
sage: HSp3.construction()
|
|
481
|
+
(SymmetricFunctionsFunctor[level 3 LLT spin],
|
|
482
|
+
Fraction Field of Univariate Polynomial Ring in t over Rational Field)
|
|
483
|
+
"""
|
|
484
|
+
from sage.combinat.sf.sfa import SymmetricFunctionsFamilyFunctor
|
|
485
|
+
return (SymmetricFunctionsFamilyFunctor(self, LLT_class,
|
|
486
|
+
self.basis_name(),
|
|
487
|
+
self._k, self.t),
|
|
488
|
+
self.base_ring())
|
|
489
|
+
|
|
490
|
+
def _m_to_self(self, x):
|
|
491
|
+
r"""
|
|
492
|
+
Isomorphism from the monomial basis into ``self``.
|
|
493
|
+
|
|
494
|
+
INPUT:
|
|
495
|
+
|
|
496
|
+
- ``self`` -- an instance of the LLT hspin or hcospin basis
|
|
497
|
+
- ``x`` -- an element of the monomial basis
|
|
498
|
+
|
|
499
|
+
OUTPUT: ``x`` expanded in the basis ``self``
|
|
500
|
+
|
|
501
|
+
EXAMPLES::
|
|
502
|
+
|
|
503
|
+
sage: # needs sage.symbolic
|
|
504
|
+
sage: Sym = SymmetricFunctions(FractionField(QQ['t']))
|
|
505
|
+
sage: HSp3 = Sym.llt(3).hspin()
|
|
506
|
+
sage: m = Sym.monomial()
|
|
507
|
+
sage: HSp3._m_to_self(m[2,1])
|
|
508
|
+
-2*HSp3[1, 1, 1] + (2*t^2+2*t+1)*HSp3[2, 1] + (-2*t^2-t)*HSp3[3]
|
|
509
|
+
|
|
510
|
+
This is for internal use only. Please use instead::
|
|
511
|
+
|
|
512
|
+
sage: HSp3(m[2,1]) # needs sage.symbolic
|
|
513
|
+
-2*HSp3[1, 1, 1] + (2*t^2+2*t+1)*HSp3[2, 1] + (-2*t^2-t)*HSp3[3]
|
|
514
|
+
"""
|
|
515
|
+
return self._from_cache(x, self._m_cache, self._m_to_self_cache,
|
|
516
|
+
t=self.t)
|
|
517
|
+
|
|
518
|
+
def _self_to_m(self, x):
|
|
519
|
+
r"""
|
|
520
|
+
Isomorphism from ``self`` to the monomial basis.
|
|
521
|
+
|
|
522
|
+
INPUT:
|
|
523
|
+
|
|
524
|
+
- ``self`` -- an instance of the LLT hspin or hcospin basis
|
|
525
|
+
- ``x`` -- an element of ``self``
|
|
526
|
+
|
|
527
|
+
OUTPUT: ``x`` expanded in the monomial basis
|
|
528
|
+
|
|
529
|
+
EXAMPLES::
|
|
530
|
+
|
|
531
|
+
sage: # needs sage.symbolic
|
|
532
|
+
sage: Sym = SymmetricFunctions(FractionField(QQ['t']))
|
|
533
|
+
sage: HSp3 = Sym.llt(3).hspin()
|
|
534
|
+
sage: m = Sym.monomial()
|
|
535
|
+
sage: HSp3._self_to_m(HSp3[2,1])
|
|
536
|
+
(t+2)*m[1, 1, 1] + (t+1)*m[2, 1] + t*m[3]
|
|
537
|
+
|
|
538
|
+
This is for internal use only. Please use instead::
|
|
539
|
+
|
|
540
|
+
sage: m(HSp3[2,1]) # needs sage.symbolic
|
|
541
|
+
(t+2)*m[1, 1, 1] + (t+1)*m[2, 1] + t*m[3]
|
|
542
|
+
"""
|
|
543
|
+
return self._m._from_cache(x, self._m_cache, self._self_to_m_cache,
|
|
544
|
+
t=self.t)
|
|
545
|
+
|
|
546
|
+
def level(self):
|
|
547
|
+
r"""
|
|
548
|
+
Return the level of ``self``.
|
|
549
|
+
|
|
550
|
+
INPUT:
|
|
551
|
+
|
|
552
|
+
- ``self`` -- an instance of the LLT hspin or hcospin basis
|
|
553
|
+
|
|
554
|
+
OUTPUT: the level associated to the basis ``self``
|
|
555
|
+
|
|
556
|
+
EXAMPLES::
|
|
557
|
+
|
|
558
|
+
sage: HSp3 = SymmetricFunctions(FractionField(QQ['t'])).llt(3).hspin()
|
|
559
|
+
sage: HSp3.level()
|
|
560
|
+
3
|
|
561
|
+
"""
|
|
562
|
+
return self._k
|
|
563
|
+
|
|
564
|
+
def llt_family( self ):
|
|
565
|
+
r"""
|
|
566
|
+
The family of the llt bases of the symmetric functions.
|
|
567
|
+
|
|
568
|
+
INPUT:
|
|
569
|
+
|
|
570
|
+
- ``self`` -- an instance of the LLT hspin or hcospin basis
|
|
571
|
+
|
|
572
|
+
OUTPUT: an instance of the family of LLT bases associated to ``self``
|
|
573
|
+
|
|
574
|
+
EXAMPLES::
|
|
575
|
+
|
|
576
|
+
sage: HSp3 = SymmetricFunctions(FractionField(QQ['t'])).llt(3).hspin()
|
|
577
|
+
sage: HSp3.llt_family()
|
|
578
|
+
level 3 LLT polynomials
|
|
579
|
+
over Fraction Field of Univariate Polynomial Ring in t over Rational Field
|
|
580
|
+
"""
|
|
581
|
+
return self._llt
|
|
582
|
+
|
|
583
|
+
def product(self, left, right):
|
|
584
|
+
r"""
|
|
585
|
+
Convert to the monomial basis, do the multiplication there, and
|
|
586
|
+
convert back to the basis ``self``.
|
|
587
|
+
|
|
588
|
+
INPUT:
|
|
589
|
+
|
|
590
|
+
- ``self`` -- an instance of the LLT hspin or hcospin basis
|
|
591
|
+
- ``left``, ``right`` -- elements of the symmetric functions
|
|
592
|
+
|
|
593
|
+
OUTPUT: the product of ``left`` and ``right`` expanded in the basis ``self``
|
|
594
|
+
|
|
595
|
+
EXAMPLES::
|
|
596
|
+
|
|
597
|
+
sage: # needs sage.symbolic
|
|
598
|
+
sage: HSp3 = SymmetricFunctions(FractionField(QQ['t'])).llt(3).hspin()
|
|
599
|
+
sage: HSp3.product(HSp3([1]), HSp3([2]))
|
|
600
|
+
HSp3[2, 1] + (-t+1)*HSp3[3]
|
|
601
|
+
sage: HCosp3 = SymmetricFunctions(FractionField(QQ['t'])).llt(3).hcospin()
|
|
602
|
+
sage: HCosp3.product(HCosp3([1]), HSp3([2]))
|
|
603
|
+
1/t*HCosp3[2, 1] + ((t-1)/t)*HCosp3[3]
|
|
604
|
+
"""
|
|
605
|
+
return self(self._m(left) * self._m(right))
|
|
606
|
+
|
|
607
|
+
def _m_cache(self, n):
|
|
608
|
+
r"""
|
|
609
|
+
Compute the change of basis from the monomial symmetric functions
|
|
610
|
+
to ``self``.
|
|
611
|
+
|
|
612
|
+
INPUT:
|
|
613
|
+
|
|
614
|
+
- ``self`` -- an instance of the LLT hspin or hcospin basis
|
|
615
|
+
- ``n`` -- positive integer representing the degree
|
|
616
|
+
|
|
617
|
+
EXAMPLES::
|
|
618
|
+
|
|
619
|
+
sage: # needs sage.symbolic
|
|
620
|
+
sage: HSp3 = SymmetricFunctions(FractionField(QQ['t'])).llt(3).hspin()
|
|
621
|
+
sage: HSp3._m_cache(2)
|
|
622
|
+
sage: l = lambda c: [ (i[0],[j for j in sorted(i[1].items())]) for i in sorted(c.items())]
|
|
623
|
+
sage: l( HSp3._self_to_m_cache[2] )
|
|
624
|
+
[([1, 1], [([1, 1], t + 1), ([2], t)]), ([2], [([1, 1], 1), ([2], 1)])]
|
|
625
|
+
sage: l( HSp3._m_to_self_cache[2] )
|
|
626
|
+
[([1, 1], [([1, 1], 1), ([2], -t)]), ([2], [([1, 1], -1), ([2], t + 1)])]
|
|
627
|
+
sage: HCosp3 = SymmetricFunctions(FractionField(QQ['t'])).llt(3).hcospin()
|
|
628
|
+
sage: HCosp3._m_cache(2)
|
|
629
|
+
sage: l = lambda c: [ (i[0],[j for j in sorted(i[1].items())]) for i in sorted(c.items())]
|
|
630
|
+
sage: l( HCosp3._self_to_m_cache[2] )
|
|
631
|
+
[([1, 1], [([1, 1], t + 1), ([2], 1)]), ([2], [([1, 1], 1), ([2], 1)])]
|
|
632
|
+
sage: l( HCosp3._m_to_self_cache[2] )
|
|
633
|
+
[([1, 1], [([1, 1], 1/t), ([2], -1/t)]),
|
|
634
|
+
([2], [([1, 1], -1/t), ([2], (t + 1)/t)])]
|
|
635
|
+
"""
|
|
636
|
+
self._invert_morphism(n, QQt, self._self_to_m_cache,
|
|
637
|
+
self._m_to_self_cache,
|
|
638
|
+
to_other_function=self._to_m)
|
|
639
|
+
|
|
640
|
+
class Element(sfa.SymmetricFunctionAlgebra_generic.Element):
|
|
641
|
+
pass
|
|
642
|
+
|
|
643
|
+
|
|
644
|
+
# the H-spin basis
|
|
645
|
+
class LLT_spin(LLT_generic):
|
|
646
|
+
|
|
647
|
+
def __init__(self, llt):
|
|
648
|
+
r"""
|
|
649
|
+
A class of methods for the h-spin LLT basis of the symmetric functions.
|
|
650
|
+
|
|
651
|
+
INPUT:
|
|
652
|
+
|
|
653
|
+
- ``self`` -- an instance of the LLT hcospin basis
|
|
654
|
+
- ``llt`` -- a family of LLT symmetric function bases
|
|
655
|
+
|
|
656
|
+
TESTS::
|
|
657
|
+
|
|
658
|
+
sage: HSp3 = SymmetricFunctions(FractionField(QQ['t'])).llt(3).hspin()
|
|
659
|
+
sage: TestSuite(HSp3).run(skip = ["_test_associativity", "_test_distributivity", "_test_prod"]) # products are too expensive, long time (10s on sage.math, 2012)
|
|
660
|
+
sage: TestSuite(HSp3).run(elements = [HSp3.t*HSp3[1,1]+HSp3.t*HSp3[2], HSp3[1]+(1+HSp3.t)*HSp3[1,1]]) # long time (depends on previous)
|
|
661
|
+
|
|
662
|
+
::
|
|
663
|
+
|
|
664
|
+
sage: HS3t2 = SymmetricFunctions(QQ).llt(3,t=2).hspin()
|
|
665
|
+
sage: TestSuite(HS3t2).run() # products are too expensive, long time (7s on sage.math, 2012)
|
|
666
|
+
|
|
667
|
+
::
|
|
668
|
+
|
|
669
|
+
sage: R.<x> = QQ[]
|
|
670
|
+
sage: HS3x = SymmetricFunctions(FractionField(R)).llt(3, t=x).hspin()
|
|
671
|
+
sage: TestSuite(HS3x).run(skip = ["_test_associativity", "_test_distributivity", "_test_prod"]) # products are too expensive, long time (4s on sage.math, 2012)
|
|
672
|
+
sage: TestSuite(HS3x).run(elements = [HS3x.t*HS3x[1,1]+HS3x.t*HS3x[2], HS3x[1]+(1+HS3x.t)*HS3x[1,1]]) # long time (depends on previous)
|
|
673
|
+
"""
|
|
674
|
+
level = llt._k
|
|
675
|
+
if level not in hsp_to_m_cache:
|
|
676
|
+
hsp_to_m_cache[level] = {}
|
|
677
|
+
m_to_hsp_cache[level] = {}
|
|
678
|
+
self._self_to_m_cache = hsp_to_m_cache[level]
|
|
679
|
+
self._m_to_self_cache = m_to_hsp_cache[level]
|
|
680
|
+
|
|
681
|
+
LLT_generic.__init__(self, llt, prefix="HSp%s" % level)
|
|
682
|
+
|
|
683
|
+
def _to_m(self, part):
|
|
684
|
+
r"""
|
|
685
|
+
Return a function which gives the coefficient of a partition
|
|
686
|
+
in the monomial expansion of self(part).
|
|
687
|
+
|
|
688
|
+
INPUT:
|
|
689
|
+
|
|
690
|
+
- ``self`` -- an instance of the LLT hspin basis
|
|
691
|
+
- ``part`` -- a partition
|
|
692
|
+
|
|
693
|
+
OUTPUT:
|
|
694
|
+
|
|
695
|
+
- returns a function which accepts a partition and returns the coefficient
|
|
696
|
+
in the expansion of the monomial basis
|
|
697
|
+
|
|
698
|
+
EXAMPLES::
|
|
699
|
+
|
|
700
|
+
sage: # needs sage.symbolic
|
|
701
|
+
sage: HSp3 = SymmetricFunctions(FractionField(QQ['t'])).llt(3).hspin()
|
|
702
|
+
sage: f21 = HSp3._to_m(Partition([2,1]))
|
|
703
|
+
sage: [f21(p) for p in Partitions(3)]
|
|
704
|
+
[t, t + 1, t + 2]
|
|
705
|
+
sage: HSp3.symmetric_function_ring().m()( HSp3[2,1] )
|
|
706
|
+
(t+2)*m[1, 1, 1] + (t+1)*m[2, 1] + t*m[3]
|
|
707
|
+
"""
|
|
708
|
+
level = self.level()
|
|
709
|
+
f = lambda part2: QQt(ribbon_tableau.spin_polynomial([level*i for i in part], part2, level))
|
|
710
|
+
return f
|
|
711
|
+
|
|
712
|
+
class Element(LLT_generic.Element):
|
|
713
|
+
pass
|
|
714
|
+
|
|
715
|
+
|
|
716
|
+
# the h-cospin basis
|
|
717
|
+
class LLT_cospin(LLT_generic):
|
|
718
|
+
def __init__(self, llt):
|
|
719
|
+
r"""
|
|
720
|
+
A class of methods for the h-cospin LLT basis of the symmetric functions.
|
|
721
|
+
|
|
722
|
+
INPUT:
|
|
723
|
+
|
|
724
|
+
- ``self`` -- an instance of the LLT hcospin basis
|
|
725
|
+
- ``llt`` -- a family of LLT symmetric function bases
|
|
726
|
+
|
|
727
|
+
TESTS::
|
|
728
|
+
|
|
729
|
+
sage: HCosp3 = SymmetricFunctions(FractionField(QQ['t'])).llt(3).hcospin()
|
|
730
|
+
sage: TestSuite(HCosp3).run(skip = ["_test_associativity", "_test_distributivity", "_test_prod"]) # products are too expensive, long time (11s on sage.math, 2012)
|
|
731
|
+
sage: TestSuite(HCosp3).run(elements = [HCosp3.t*HCosp3[1,1]+HCosp3.t*HCosp3[2], HCosp3[1]+(1+HCosp3.t)*HCosp3[1,1]]) # long time (depends on previous)
|
|
732
|
+
|
|
733
|
+
::
|
|
734
|
+
|
|
735
|
+
sage: HC3t2 = SymmetricFunctions(QQ).llt(3,t=2).hcospin()
|
|
736
|
+
sage: TestSuite(HC3t2).run() # products are too expensive, long time (6s on sage.math, 2012)
|
|
737
|
+
|
|
738
|
+
::
|
|
739
|
+
|
|
740
|
+
sage: R.<x> = QQ[]
|
|
741
|
+
sage: HC3x = SymmetricFunctions(FractionField(R)).llt(3, t=x).hcospin()
|
|
742
|
+
sage: TestSuite(HC3x).run(skip = ["_test_associativity", "_test_distributivity", "_test_prod"]) # products are too expensive, long time (5s on sage.math, 2012)
|
|
743
|
+
sage: TestSuite(HC3x).run(elements = [HC3x.t*HC3x[1,1]+HC3x.t*HC3x[2], HC3x[1]+(1+HC3x.t)*HC3x[1,1]]) # long time (depends on previous)
|
|
744
|
+
"""
|
|
745
|
+
level = llt._k
|
|
746
|
+
if level not in hcosp_to_m_cache:
|
|
747
|
+
hcosp_to_m_cache[level] = {}
|
|
748
|
+
m_to_hcosp_cache[level] = {}
|
|
749
|
+
self._self_to_m_cache = hcosp_to_m_cache[level]
|
|
750
|
+
self._m_to_self_cache = m_to_hcosp_cache[level]
|
|
751
|
+
LLT_generic.__init__(self, llt, prefix="HCosp%s" % level)
|
|
752
|
+
|
|
753
|
+
def _to_m(self, part):
|
|
754
|
+
r"""
|
|
755
|
+
Return a function which gives the coefficient of part2 in the
|
|
756
|
+
monomial expansion of self(part).
|
|
757
|
+
|
|
758
|
+
INPUT:
|
|
759
|
+
|
|
760
|
+
- ``self`` -- an instance of the LLT hcospin basis
|
|
761
|
+
- ``part`` -- a partition
|
|
762
|
+
|
|
763
|
+
OUTPUT:
|
|
764
|
+
|
|
765
|
+
- returns a function which accepts a partition and returns the coefficient
|
|
766
|
+
in the expansion of the monomial basis
|
|
767
|
+
|
|
768
|
+
EXAMPLES::
|
|
769
|
+
|
|
770
|
+
sage: HCosp3 = SymmetricFunctions(FractionField(QQ['t'])).llt(3).hcospin()
|
|
771
|
+
sage: f21 = HCosp3._to_m(Partition([2,1]))
|
|
772
|
+
sage: [f21(p) for p in Partitions(3)]
|
|
773
|
+
[1, t + 1, 2*t + 1]
|
|
774
|
+
sage: HCosp3.symmetric_function_ring().m()( HCosp3[2,1] )
|
|
775
|
+
(2*t+1)*m[1, 1, 1] + (t+1)*m[2, 1] + m[3]
|
|
776
|
+
"""
|
|
777
|
+
level = self.level()
|
|
778
|
+
f = lambda part2: QQt(ribbon_tableau.cospin_polynomial([level*i for i in part], part2, level))
|
|
779
|
+
return f
|
|
780
|
+
|
|
781
|
+
class Element(LLT_generic.Element):
|
|
782
|
+
pass
|
|
783
|
+
|
|
784
|
+
|
|
785
|
+
# Backward compatibility for unpickling
|
|
786
|
+
from sage.misc.persist import register_unpickle_override
|
|
787
|
+
|
|
788
|
+
register_unpickle_override('sage.combinat.sf.llt', 'LLTElement_spin', LLT_spin.Element)
|
|
789
|
+
register_unpickle_override('sage.combinat.sf.llt', 'LLTElement_cospin', LLT_cospin.Element)
|