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
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-combinat
|
|
2
|
+
# sage.doctest: needs sage.combinat sage.modules
|
|
3
|
+
"""
|
|
4
|
+
Classical symmetric functions
|
|
5
|
+
"""
|
|
6
|
+
# ****************************************************************************
|
|
7
|
+
# Copyright (C) 2007 Mike Hansen <mhansen@gmail.com>
|
|
8
|
+
# 2012 Mike Zabrocki <mike.zabrocki@gmail.com>
|
|
9
|
+
#
|
|
10
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
11
|
+
#
|
|
12
|
+
# This code is distributed in the hope that it will be useful,
|
|
13
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
14
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
15
|
+
# General Public License for more details.
|
|
16
|
+
#
|
|
17
|
+
# The full text of the GPL is available at:
|
|
18
|
+
#
|
|
19
|
+
# https://www.gnu.org/licenses/
|
|
20
|
+
# ****************************************************************************
|
|
21
|
+
from sage.combinat.partition import _Partitions
|
|
22
|
+
from sage.rings.integer import Integer
|
|
23
|
+
from sage.rings.integer_ring import ZZ
|
|
24
|
+
from sage.rings.rational_field import QQ
|
|
25
|
+
|
|
26
|
+
from . import hall_littlewood, jack, llt, macdonald, orthotriang, sfa
|
|
27
|
+
|
|
28
|
+
translate = {'monomial': 'MONOMIAL',
|
|
29
|
+
'homogeneous': 'HOMSYM',
|
|
30
|
+
'powersum': 'POWSYM',
|
|
31
|
+
'elementary': 'ELMSYM',
|
|
32
|
+
'Schur': 'SCHUR'}
|
|
33
|
+
|
|
34
|
+
conversion_functions = {}
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def init():
|
|
38
|
+
"""
|
|
39
|
+
Set up the conversion functions between the classical bases.
|
|
40
|
+
|
|
41
|
+
EXAMPLES::
|
|
42
|
+
|
|
43
|
+
sage: from sage.combinat.sf.classical import init
|
|
44
|
+
sage: sage.combinat.sf.classical.conversion_functions = {}
|
|
45
|
+
sage: init()
|
|
46
|
+
sage: sage.combinat.sf.classical.conversion_functions[('Schur', 'powersum')]
|
|
47
|
+
<built-in function t_SCHUR_POWSYM_symmetrica>
|
|
48
|
+
|
|
49
|
+
The following checks if the bug described in :issue:`15312` is fixed. ::
|
|
50
|
+
|
|
51
|
+
sage: change = sage.combinat.sf.classical.conversion_functions[('powersum', 'Schur')]
|
|
52
|
+
sage: hideme = change({Partition([1]*47):ZZ(1)}) # long time
|
|
53
|
+
sage: change({Partition([2,2]):QQ(1)})
|
|
54
|
+
s[1, 1, 1, 1] - s[2, 1, 1] + 2*s[2, 2] - s[3, 1] + s[4]
|
|
55
|
+
"""
|
|
56
|
+
import sage.libs.symmetrica.all as symmetrica
|
|
57
|
+
for other_basis, other_name in translate.items():
|
|
58
|
+
for basis, name in translate.items():
|
|
59
|
+
try:
|
|
60
|
+
conversion_functions[(other_basis, basis)] = getattr(symmetrica,
|
|
61
|
+
f't_{other_name}_{name}')
|
|
62
|
+
except AttributeError:
|
|
63
|
+
pass
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
init()
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
###################################
|
|
70
|
+
# #
|
|
71
|
+
# Classical Symmetric Functions #
|
|
72
|
+
# #
|
|
73
|
+
###################################
|
|
74
|
+
class SymmetricFunctionAlgebra_classical(sfa.SymmetricFunctionAlgebra_generic):
|
|
75
|
+
"""
|
|
76
|
+
The class of classical symmetric functions.
|
|
77
|
+
|
|
78
|
+
.. TODO:: delete this class once all coercions will be handled by Sage's coercion model
|
|
79
|
+
|
|
80
|
+
TESTS::
|
|
81
|
+
|
|
82
|
+
sage: # needs lrcalc_python
|
|
83
|
+
sage: TestSuite(SymmetricFunctions(QQ).s()).run()
|
|
84
|
+
sage: TestSuite(SymmetricFunctions(QQ).h()).run()
|
|
85
|
+
sage: TestSuite(SymmetricFunctions(QQ).m()).run()
|
|
86
|
+
sage: TestSuite(SymmetricFunctions(QQ).e()).run()
|
|
87
|
+
sage: TestSuite(SymmetricFunctions(QQ).p()).run()
|
|
88
|
+
"""
|
|
89
|
+
|
|
90
|
+
def _element_constructor_(self, x):
|
|
91
|
+
"""
|
|
92
|
+
Convert ``x`` into ``self``, if coercion failed.
|
|
93
|
+
|
|
94
|
+
INPUT:
|
|
95
|
+
|
|
96
|
+
- ``x`` -- an element of the symmetric functions
|
|
97
|
+
|
|
98
|
+
EXAMPLES::
|
|
99
|
+
|
|
100
|
+
sage: s = SymmetricFunctions(QQ).s()
|
|
101
|
+
sage: s(2)
|
|
102
|
+
2*s[]
|
|
103
|
+
sage: s([2,1]) # indirect doctest
|
|
104
|
+
s[2, 1]
|
|
105
|
+
|
|
106
|
+
sage: McdJ = SymmetricFunctions(QQ['q','t'].fraction_field()).macdonald().J()
|
|
107
|
+
sage: s = SymmetricFunctions(McdJ.base_ring()).s()
|
|
108
|
+
sage: s._element_constructor_(McdJ(s[2,1]))
|
|
109
|
+
s[2, 1]
|
|
110
|
+
|
|
111
|
+
TESTS:
|
|
112
|
+
|
|
113
|
+
Check that non-Schur bases raise an error when given skew partitions
|
|
114
|
+
(:issue:`19218`)::
|
|
115
|
+
|
|
116
|
+
sage: e = SymmetricFunctions(QQ).e()
|
|
117
|
+
sage: e([[2,1],[1]])
|
|
118
|
+
Traceback (most recent call last):
|
|
119
|
+
...
|
|
120
|
+
TypeError: do not know how to make x (= [[2, 1], [1]]) an element of self
|
|
121
|
+
|
|
122
|
+
Check that :issue:`34576` is fixed::
|
|
123
|
+
|
|
124
|
+
sage: s = SymmetricFunctions(ZZ).s()
|
|
125
|
+
sage: f = s(0/2); f
|
|
126
|
+
0
|
|
127
|
+
sage: f == 0
|
|
128
|
+
True
|
|
129
|
+
sage: f._monomial_coefficients
|
|
130
|
+
{}
|
|
131
|
+
|
|
132
|
+
sage: s2 = SymmetricFunctions(GF(2)).s()
|
|
133
|
+
sage: f = s2(2*s[2,1]); f
|
|
134
|
+
0
|
|
135
|
+
sage: f == 0
|
|
136
|
+
True
|
|
137
|
+
sage: f._monomial_coefficients
|
|
138
|
+
{}
|
|
139
|
+
"""
|
|
140
|
+
R = self.base_ring()
|
|
141
|
+
|
|
142
|
+
eclass = self.element_class
|
|
143
|
+
if isinstance(x, int):
|
|
144
|
+
x = Integer(x)
|
|
145
|
+
|
|
146
|
+
##############
|
|
147
|
+
# Partitions #
|
|
148
|
+
##############
|
|
149
|
+
if x in _Partitions:
|
|
150
|
+
return eclass(self, {_Partitions(x): R.one()})
|
|
151
|
+
|
|
152
|
+
# Todo: discard all of this which is taken care by Sage's coercion
|
|
153
|
+
# (up to changes of base ring)
|
|
154
|
+
|
|
155
|
+
##############
|
|
156
|
+
# Dual bases #
|
|
157
|
+
##############
|
|
158
|
+
elif isinstance(x, sfa.SymmetricFunctionAlgebra_generic.Element) and hasattr(x, 'dual'):
|
|
159
|
+
# Check to see if it is the dual of some other basis
|
|
160
|
+
# If it is, try to coerce its corresponding element
|
|
161
|
+
# in the other basis
|
|
162
|
+
return self(x.dual())
|
|
163
|
+
|
|
164
|
+
##################################################################
|
|
165
|
+
# Symmetric Functions, same basis, possibly different coeff ring #
|
|
166
|
+
##################################################################
|
|
167
|
+
|
|
168
|
+
# self.Element is used below to test if another symmetric
|
|
169
|
+
# function is expressed in the same basis but in another
|
|
170
|
+
# ground ring. This idiom is fragile and depends on the
|
|
171
|
+
# internal (unstable) specifications of parents and categories
|
|
172
|
+
#
|
|
173
|
+
# TODO: find the right idiom
|
|
174
|
+
#
|
|
175
|
+
# One cannot use anymore self.element_class: it is build by
|
|
176
|
+
# the category mechanism, and depends on the coeff ring.
|
|
177
|
+
|
|
178
|
+
elif isinstance(x, self.Element):
|
|
179
|
+
P = x.parent()
|
|
180
|
+
# same base ring
|
|
181
|
+
if P is self:
|
|
182
|
+
return x
|
|
183
|
+
# different base ring
|
|
184
|
+
else:
|
|
185
|
+
return eclass(self, {la: rc for la, c in x._monomial_coefficients.items()
|
|
186
|
+
if (rc := R(c))})
|
|
187
|
+
|
|
188
|
+
##################################################
|
|
189
|
+
# Classical Symmetric Functions, different basis #
|
|
190
|
+
##################################################
|
|
191
|
+
elif isinstance(x, SymmetricFunctionAlgebra_classical.Element):
|
|
192
|
+
|
|
193
|
+
P = x.parent()
|
|
194
|
+
m = x.monomial_coefficients()
|
|
195
|
+
|
|
196
|
+
# determine the conversion function.
|
|
197
|
+
try:
|
|
198
|
+
t = conversion_functions[(P.basis_name(), self.basis_name())]
|
|
199
|
+
except AttributeError:
|
|
200
|
+
raise TypeError("do not know how to convert from %s to %s"
|
|
201
|
+
% (P.basis_name(), self.basis_name()))
|
|
202
|
+
|
|
203
|
+
if R == QQ and P.base_ring() == QQ:
|
|
204
|
+
if m:
|
|
205
|
+
return self._from_dict(t(m)._monomial_coefficients,
|
|
206
|
+
coerce=True)
|
|
207
|
+
return self.zero()
|
|
208
|
+
else:
|
|
209
|
+
f = lambda part: self._from_dict(t({part: ZZ.one()})._monomial_coefficients)
|
|
210
|
+
return self._apply_module_endomorphism(x, f)
|
|
211
|
+
|
|
212
|
+
###############################
|
|
213
|
+
# Hall-Littlewood Polynomials #
|
|
214
|
+
###############################
|
|
215
|
+
elif isinstance(x, hall_littlewood.HallLittlewood_generic.Element):
|
|
216
|
+
#
|
|
217
|
+
# Qp: Convert to Schur basis and then convert to self
|
|
218
|
+
#
|
|
219
|
+
if isinstance(x, (hall_littlewood.HallLittlewood_qp.Element,
|
|
220
|
+
hall_littlewood.HallLittlewood_p.Element)):
|
|
221
|
+
P = x.parent()
|
|
222
|
+
sx = P._s._from_cache(x, P._s_cache, P._self_to_s_cache, t=P.t)
|
|
223
|
+
return self(sx)
|
|
224
|
+
#
|
|
225
|
+
# Q: Convert to P basis and then convert to self
|
|
226
|
+
#
|
|
227
|
+
elif isinstance(x, hall_littlewood.HallLittlewood_q.Element):
|
|
228
|
+
return self(x.parent()._P(x))
|
|
229
|
+
|
|
230
|
+
#######
|
|
231
|
+
# LLT #
|
|
232
|
+
#######
|
|
233
|
+
# Convert to m and then to self.
|
|
234
|
+
elif isinstance(x, llt.LLT_generic.Element):
|
|
235
|
+
P = x.parent()
|
|
236
|
+
Rx = P.base_ring()
|
|
237
|
+
zero = R.zero()
|
|
238
|
+
if not R.has_coerce_map_from(Rx):
|
|
239
|
+
raise TypeError("no coerce map from x's parent's base ring (= %s) to self's base ring (= %s)"
|
|
240
|
+
% (Rx, R))
|
|
241
|
+
|
|
242
|
+
z_elt = {}
|
|
243
|
+
for m, c in x._monomial_coefficients.items():
|
|
244
|
+
n = sum(m)
|
|
245
|
+
P._m_cache(n)
|
|
246
|
+
for part in P._self_to_m_cache[n][m]:
|
|
247
|
+
z_elt[part] = z_elt.get(part, zero) + R(c*P._self_to_m_cache[n][m][part].subs(t=P.t))
|
|
248
|
+
|
|
249
|
+
m = P._sym.monomial()
|
|
250
|
+
return self(m._from_dict(z_elt))
|
|
251
|
+
|
|
252
|
+
#########################
|
|
253
|
+
# Macdonald Polynomials #
|
|
254
|
+
#########################
|
|
255
|
+
elif isinstance(x, macdonald.MacdonaldPolynomials_generic.Element):
|
|
256
|
+
if isinstance(x, (macdonald.MacdonaldPolynomials_j.Element,
|
|
257
|
+
macdonald.MacdonaldPolynomials_s.Element)):
|
|
258
|
+
P = x.parent()
|
|
259
|
+
sx = P._s._from_cache(x, P._s_cache, P._self_to_s_cache, q=P.q, t=P.t)
|
|
260
|
+
return self(sx)
|
|
261
|
+
elif isinstance(x, (macdonald.MacdonaldPolynomials_q.Element,
|
|
262
|
+
macdonald.MacdonaldPolynomials_p.Element)):
|
|
263
|
+
J = x.parent()._J
|
|
264
|
+
jx = J(x)
|
|
265
|
+
sx = J._s._from_cache(jx, J._s_cache, J._self_to_s_cache, q=J.q, t=J.t)
|
|
266
|
+
return self(sx)
|
|
267
|
+
elif isinstance(x, (macdonald.MacdonaldPolynomials_h.Element,
|
|
268
|
+
macdonald.MacdonaldPolynomials_ht.Element)):
|
|
269
|
+
P = x.parent()
|
|
270
|
+
sx = P._self_to_s(x)
|
|
271
|
+
return self(sx)
|
|
272
|
+
else:
|
|
273
|
+
raise TypeError
|
|
274
|
+
|
|
275
|
+
####################
|
|
276
|
+
# Jack Polynomials #
|
|
277
|
+
####################
|
|
278
|
+
elif isinstance(x, jack.JackPolynomials_generic.Element):
|
|
279
|
+
if isinstance(x, jack.JackPolynomials_p.Element):
|
|
280
|
+
P = x.parent()
|
|
281
|
+
mx = P._m._from_cache(x, P._m_cache, P._self_to_m_cache, t=P.t)
|
|
282
|
+
return self(mx)
|
|
283
|
+
if isinstance(x, (jack.JackPolynomials_j.Element,
|
|
284
|
+
jack.JackPolynomials_q.Element)):
|
|
285
|
+
return self(x.parent()._P(x))
|
|
286
|
+
else:
|
|
287
|
+
raise TypeError
|
|
288
|
+
|
|
289
|
+
####################################################
|
|
290
|
+
# Bases defined by orthogonality and triangularity #
|
|
291
|
+
####################################################
|
|
292
|
+
elif isinstance(x, orthotriang.SymmetricFunctionAlgebra_orthotriang.Element):
|
|
293
|
+
# Convert to its base and then to self
|
|
294
|
+
P = x.parent()
|
|
295
|
+
if self is P._sf_base:
|
|
296
|
+
return P._sf_base._from_cache(x, P._base_cache, P._self_to_base_cache)
|
|
297
|
+
else:
|
|
298
|
+
return self( P._sf_base(x) )
|
|
299
|
+
|
|
300
|
+
#################################
|
|
301
|
+
# Last shot -- try calling R(x) #
|
|
302
|
+
#################################
|
|
303
|
+
else:
|
|
304
|
+
try:
|
|
305
|
+
c = R(x)
|
|
306
|
+
except (TypeError, ValueError):
|
|
307
|
+
raise TypeError("do not know how to make x (= {}) an element of self".format(x))
|
|
308
|
+
else:
|
|
309
|
+
if not c:
|
|
310
|
+
return self.zero()
|
|
311
|
+
return eclass(self, {_Partitions([]): c})
|
|
312
|
+
|
|
313
|
+
# This subclass is currently needed for the test above:
|
|
314
|
+
# isinstance(x, SymmetricFunctionAlgebra_classical.Element):
|
|
315
|
+
class Element(sfa.SymmetricFunctionAlgebra_generic.Element):
|
|
316
|
+
"""
|
|
317
|
+
A symmetric function.
|
|
318
|
+
"""
|
|
319
|
+
pass
|