passagemath-combinat 10.6.42__cp314-cp314-musllinux_1_2_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- passagemath_combinat/__init__.py +3 -0
- passagemath_combinat-10.6.42.dist-info/METADATA +160 -0
- passagemath_combinat-10.6.42.dist-info/RECORD +400 -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-0e7fc84e.so.10.5.0 +0 -0
- passagemath_combinat.libs/libsymmetrica-81fe8739.so.3.0.0 +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 +35 -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.cpython-314-x86_64-linux-musl.so +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.cpython-314-x86_64-linux-musl.so +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.cpython-314-x86_64-linux-musl.so +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.cpython-314-x86_64-linux-musl.so +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.cpython-314-x86_64-linux-musl.so +0 -0
- sage/combinat/debruijn_sequence.pyx +355 -0
- sage/combinat/decorated_permutation.py +270 -0
- sage/combinat/degree_sequences.cpython-314-x86_64-linux-musl.so +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.cpython-314-x86_64-linux-musl.so +0 -0
- sage/combinat/expnums.pyx +148 -0
- sage/combinat/fast_vector_partitions.cpython-314-x86_64-linux-musl.so +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.cpython-314-x86_64-linux-musl.so +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.cpython-314-x86_64-linux-musl.so +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.cpython-314-x86_64-linux-musl.so +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.cpython-314-x86_64-linux-musl.so +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.cpython-314-x86_64-linux-musl.so +0 -0
- sage/combinat/words/word_char.pyx +847 -0
- sage/combinat/words/word_datatypes.cpython-314-x86_64-linux-musl.so +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.cpython-314-x86_64-linux-musl.so +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.cpython-314-x86_64-linux-musl.so +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.cpython-314-x86_64-linux-musl.so +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.cpython-314-x86_64-linux-musl.so +0 -0
- sage/sat/solvers/satsolver.pxd +3 -0
- sage/sat/solvers/satsolver.pyx +405 -0
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-combinat
|
|
2
|
+
# sage.doctest: needs sage.combinat sage.graphs sage.modules
|
|
3
|
+
r"""
|
|
4
|
+
Bijection classes for type `E_{6,7}^{(1)}`
|
|
5
|
+
|
|
6
|
+
Part of the (internal) classes which runs the bijection between rigged
|
|
7
|
+
configurations and KR tableaux of type `E_{6,7}^{(1)}`.
|
|
8
|
+
|
|
9
|
+
AUTHORS:
|
|
10
|
+
|
|
11
|
+
- Travis Scrimshaw (2011-04-15): Initial version
|
|
12
|
+
|
|
13
|
+
TESTS::
|
|
14
|
+
|
|
15
|
+
sage: from sage.combinat.rigged_configurations.bij_type_E67 import KRTToRCBijectionTypeE67
|
|
16
|
+
sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['E', 6, 1], [[3,1]])
|
|
17
|
+
sage: bijection = KRTToRCBijectionTypeE67(KRT.module_generators[0])
|
|
18
|
+
sage: TestSuite(bijection).run()
|
|
19
|
+
sage: RC = RiggedConfigurations(['E', 6, 1], [[2, 1]])
|
|
20
|
+
sage: from sage.combinat.rigged_configurations.bij_type_E67 import RCToKRTBijectionTypeE67
|
|
21
|
+
sage: bijection = RCToKRTBijectionTypeE67(RC(partition_list=[[1],[1,1],[1,1],[1,1,1], [1,1],[1]]))
|
|
22
|
+
sage: TestSuite(bijection).run()
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
# ****************************************************************************
|
|
26
|
+
# Copyright (C) 2011, 2012 Travis Scrimshaw <tscrim@ucdavis.edu>
|
|
27
|
+
#
|
|
28
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
29
|
+
#
|
|
30
|
+
# This code is distributed in the hope that it will be useful,
|
|
31
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
32
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
33
|
+
# General Public License for more details.
|
|
34
|
+
#
|
|
35
|
+
# The full text of the GPL is available at:
|
|
36
|
+
#
|
|
37
|
+
# https://www.gnu.org/licenses/
|
|
38
|
+
# ****************************************************************************
|
|
39
|
+
|
|
40
|
+
from sage.combinat.rigged_configurations.bij_abstract_class import KRTToRCBijectionAbstract
|
|
41
|
+
from sage.combinat.rigged_configurations.bij_abstract_class import RCToKRTBijectionAbstract
|
|
42
|
+
from sage.combinat.crystals.letters import CrystalOfLetters
|
|
43
|
+
from sage.misc.lazy_attribute import lazy_attribute
|
|
44
|
+
from sage.misc.cachefunc import cached_method
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class KRTToRCBijectionTypeE67(KRTToRCBijectionAbstract):
|
|
48
|
+
r"""
|
|
49
|
+
Specific implementation of the bijection from KR tableaux to rigged
|
|
50
|
+
configurations for type `E_{6,7}^{(1)}`.
|
|
51
|
+
"""
|
|
52
|
+
|
|
53
|
+
def next_state(self, val):
|
|
54
|
+
r"""
|
|
55
|
+
Build the next state for type `E_{6,7}^{(1)}`.
|
|
56
|
+
|
|
57
|
+
TESTS::
|
|
58
|
+
|
|
59
|
+
sage: from sage.combinat.rigged_configurations.bij_type_E67 import KRTToRCBijectionTypeE67
|
|
60
|
+
sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['E', 6, 1], [[3,1]])
|
|
61
|
+
sage: bijection = KRTToRCBijectionTypeE67(KRT.module_generators[0])
|
|
62
|
+
sage: bijection.cur_path.insert(0, [])
|
|
63
|
+
sage: bijection.cur_dims.insert(0, [1, 1])
|
|
64
|
+
sage: bijection.cur_path[0].insert(0, [(-3,4)])
|
|
65
|
+
sage: bijection.next_state((-3,4))
|
|
66
|
+
"""
|
|
67
|
+
def find_singular_string(p, max_width):
|
|
68
|
+
max_pos = -1
|
|
69
|
+
if max_width > 0:
|
|
70
|
+
for i, vac_num in enumerate(p.vacancy_numbers):
|
|
71
|
+
if p[i] <= max_width and vac_num == p.rigging[i]:
|
|
72
|
+
max_pos = i
|
|
73
|
+
break
|
|
74
|
+
if max_pos == -1:
|
|
75
|
+
return 0
|
|
76
|
+
return p[max_pos]
|
|
77
|
+
|
|
78
|
+
b = self.tp_krt.parent().letters(val)
|
|
79
|
+
end = self._endpoint(self.cur_dims[0][0])
|
|
80
|
+
|
|
81
|
+
# Do nothing except update the vacancy numbers
|
|
82
|
+
if b == end:
|
|
83
|
+
for a in range(len(self.ret_rig_con)):
|
|
84
|
+
self._update_vacancy_nums(a)
|
|
85
|
+
return
|
|
86
|
+
|
|
87
|
+
max_width = max(nu[0] if nu else 0 for nu in self.ret_rig_con) + 1
|
|
88
|
+
found = True
|
|
89
|
+
while found:
|
|
90
|
+
found = False
|
|
91
|
+
data = [(-a, find_singular_string(self.ret_rig_con[-a-1], max_width))
|
|
92
|
+
for a in b.value if a < 0]
|
|
93
|
+
if not data:
|
|
94
|
+
break
|
|
95
|
+
|
|
96
|
+
max_val = max(l for a, l in data)
|
|
97
|
+
for a, l in data:
|
|
98
|
+
if l == max_val:
|
|
99
|
+
self.ret_rig_con[a-1].insert_cell(max_width)
|
|
100
|
+
max_width = l
|
|
101
|
+
b = b.e(a)
|
|
102
|
+
found = (b != self._top)
|
|
103
|
+
break
|
|
104
|
+
|
|
105
|
+
for a in end.to_highest_weight()[1]:
|
|
106
|
+
p = self.ret_rig_con[a-1]
|
|
107
|
+
for i in range(len(p)-1, -1, -1):
|
|
108
|
+
if p.rigging[i] is None:
|
|
109
|
+
assert p[i] == 1
|
|
110
|
+
p._list.pop(i)
|
|
111
|
+
p.vacancy_numbers.pop(i)
|
|
112
|
+
p.rigging.pop(i)
|
|
113
|
+
break
|
|
114
|
+
|
|
115
|
+
for a in range(len(self.ret_rig_con)):
|
|
116
|
+
self._update_vacancy_nums(a)
|
|
117
|
+
self._update_partition_values(a)
|
|
118
|
+
|
|
119
|
+
def _next_index(self, r, target):
|
|
120
|
+
"""
|
|
121
|
+
Return the next index after ``r`` when performing a step
|
|
122
|
+
in the bijection going towards ``target``.
|
|
123
|
+
|
|
124
|
+
TESTS::
|
|
125
|
+
|
|
126
|
+
sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['E', 6, 1], [[5,1]])
|
|
127
|
+
sage: from sage.combinat.rigged_configurations.bij_type_E67 import KRTToRCBijectionTypeE67
|
|
128
|
+
sage: bijection = KRTToRCBijectionTypeE67(KRT.module_generators[0])
|
|
129
|
+
sage: bijection._next_index(3, 5)
|
|
130
|
+
2
|
|
131
|
+
sage: bijection._next_index(2, 5)
|
|
132
|
+
5
|
|
133
|
+
sage: bijection._next_index(3, 4)
|
|
134
|
+
4
|
|
135
|
+
sage: bijection._next_index(1, 5)
|
|
136
|
+
3
|
|
137
|
+
sage: bijection._next_index(1, 4)
|
|
138
|
+
3
|
|
139
|
+
sage: bijection._next_index(1, 6)
|
|
140
|
+
6
|
|
141
|
+
"""
|
|
142
|
+
if self.tp_krt.cartan_type().classical().rank() == 6:
|
|
143
|
+
# 6 2 - 5
|
|
144
|
+
# / /
|
|
145
|
+
# 0 - 1 - 3 - 4
|
|
146
|
+
if r == 0:
|
|
147
|
+
return 1
|
|
148
|
+
if r == 1:
|
|
149
|
+
if target == 6:
|
|
150
|
+
return 6
|
|
151
|
+
return 3
|
|
152
|
+
if r == 3:
|
|
153
|
+
if target == 4:
|
|
154
|
+
return 4
|
|
155
|
+
return 2
|
|
156
|
+
if r == 2:
|
|
157
|
+
return 5
|
|
158
|
+
else: # rank == 7
|
|
159
|
+
# 1-2-3
|
|
160
|
+
# /
|
|
161
|
+
# 0-7-6-5-4
|
|
162
|
+
if r == 0:
|
|
163
|
+
return 7
|
|
164
|
+
if r == 7:
|
|
165
|
+
if target <= 3:
|
|
166
|
+
return 1
|
|
167
|
+
return 6
|
|
168
|
+
if r <= 3:
|
|
169
|
+
return r + 1
|
|
170
|
+
# r = 6,5
|
|
171
|
+
return r - 1
|
|
172
|
+
|
|
173
|
+
@lazy_attribute
|
|
174
|
+
def _top(self):
|
|
175
|
+
"""
|
|
176
|
+
Return the highest weight element in the basic crystal used
|
|
177
|
+
in the bijection ``self``.
|
|
178
|
+
|
|
179
|
+
TESTS::
|
|
180
|
+
|
|
181
|
+
sage: from sage.combinat.rigged_configurations.bij_type_E67 import KRTToRCBijectionTypeE67
|
|
182
|
+
sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['E', 6, 1], [[3,1]])
|
|
183
|
+
sage: bijection = KRTToRCBijectionTypeE67(KRT.module_generators[0])
|
|
184
|
+
sage: bijection._top
|
|
185
|
+
(1,)
|
|
186
|
+
sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['E', 7, 1], [[6,1]])
|
|
187
|
+
sage: bijection = KRTToRCBijectionTypeE67(KRT.module_generators[0])
|
|
188
|
+
sage: bijection._top
|
|
189
|
+
(7,)
|
|
190
|
+
"""
|
|
191
|
+
if self.tp_krt.cartan_type().classical().rank() == 6:
|
|
192
|
+
return endpoint6(1)
|
|
193
|
+
else:
|
|
194
|
+
return endpoint7(7)
|
|
195
|
+
|
|
196
|
+
@cached_method
|
|
197
|
+
def _endpoint(self, r):
|
|
198
|
+
r"""
|
|
199
|
+
Return the endpoint for the bijection in type `E_6^{(1)}`.
|
|
200
|
+
|
|
201
|
+
EXAMPLES::
|
|
202
|
+
|
|
203
|
+
sage: from sage.combinat.rigged_configurations.bij_type_E67 import KRTToRCBijectionTypeE67, endpoint6, endpoint7
|
|
204
|
+
sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['E', 6, 1], [[3,1]])
|
|
205
|
+
sage: bijection = KRTToRCBijectionTypeE67(KRT.module_generators[0])
|
|
206
|
+
sage: all(bijection._endpoint(r) == endpoint6(r) for r in range(1,7))
|
|
207
|
+
True
|
|
208
|
+
sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['E', 7, 1], [[6,1]])
|
|
209
|
+
sage: bijection = KRTToRCBijectionTypeE67(KRT.module_generators[0])
|
|
210
|
+
sage: all(bijection._endpoint(r) == endpoint7(r) for r in range(1,8))
|
|
211
|
+
True
|
|
212
|
+
"""
|
|
213
|
+
if self.tp_krt.cartan_type().classical().rank() == 6:
|
|
214
|
+
return endpoint6(r)
|
|
215
|
+
else:
|
|
216
|
+
return endpoint7(r)
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
class RCToKRTBijectionTypeE67(RCToKRTBijectionAbstract):
|
|
220
|
+
r"""
|
|
221
|
+
Specific implementation of the bijection from rigged configurations
|
|
222
|
+
to tensor products of KR tableaux for type `E_{6,7}^{(1)}`.
|
|
223
|
+
"""
|
|
224
|
+
|
|
225
|
+
def next_state(self, r):
|
|
226
|
+
r"""
|
|
227
|
+
Build the next state for type `E_{6,7}^{(1)}`.
|
|
228
|
+
|
|
229
|
+
TESTS::
|
|
230
|
+
|
|
231
|
+
sage: RC = RiggedConfigurations(['E', 6, 1], [[2, 1]])
|
|
232
|
+
sage: from sage.combinat.rigged_configurations.bij_type_E67 import RCToKRTBijectionTypeE67
|
|
233
|
+
sage: bijection = RCToKRTBijectionTypeE67(RC(partition_list=[[1],[1,1],[1,1],[1,1,1],[1,1],[1]]))
|
|
234
|
+
sage: bijection.next_state(1)
|
|
235
|
+
(-2, 1)
|
|
236
|
+
"""
|
|
237
|
+
last_size = 0
|
|
238
|
+
found = True
|
|
239
|
+
b = self._endpoint(r)
|
|
240
|
+
while found:
|
|
241
|
+
found = False
|
|
242
|
+
data = [(a, self._find_singular_string(self.cur_partitions[a-1], last_size))
|
|
243
|
+
for a in b.value if a > 0]
|
|
244
|
+
data = [(val, a, self.cur_partitions[a-1][val])
|
|
245
|
+
for a, val in data if val is not None]
|
|
246
|
+
if not data:
|
|
247
|
+
break
|
|
248
|
+
|
|
249
|
+
min_val = min(l for i, a, l in data)
|
|
250
|
+
for i, a, l in data:
|
|
251
|
+
if l == min_val:
|
|
252
|
+
found = True
|
|
253
|
+
last_size = l
|
|
254
|
+
self.cur_partitions[a-1].remove_cell(i)
|
|
255
|
+
b = b.f(a)
|
|
256
|
+
break
|
|
257
|
+
|
|
258
|
+
for a, p in enumerate(self.cur_partitions):
|
|
259
|
+
self._update_vacancy_numbers(a)
|
|
260
|
+
for i in range(len(p)):
|
|
261
|
+
if p.rigging[i] is None:
|
|
262
|
+
p.rigging[i] = p.vacancy_numbers[i]
|
|
263
|
+
|
|
264
|
+
return b
|
|
265
|
+
|
|
266
|
+
def _next_index(self, r):
|
|
267
|
+
"""
|
|
268
|
+
Return the next index after ``r`` when performing a step
|
|
269
|
+
in the bijection.
|
|
270
|
+
|
|
271
|
+
TESTS::
|
|
272
|
+
|
|
273
|
+
sage: RC = RiggedConfigurations(['E', 6, 1], [[2, 1]])
|
|
274
|
+
sage: from sage.combinat.rigged_configurations.bij_type_E67 import RCToKRTBijectionTypeE67
|
|
275
|
+
sage: bijection = RCToKRTBijectionTypeE67(RC(partition_list=[[1],[1,1],[1,1],[1,1,1], [1,1],[1]]))
|
|
276
|
+
sage: bijection._next_index(2)
|
|
277
|
+
3
|
|
278
|
+
"""
|
|
279
|
+
if self.KRT.cartan_type().classical().rank() == 6:
|
|
280
|
+
# 6 2 - 5
|
|
281
|
+
# / /
|
|
282
|
+
# 0 - 1 - 3 - 4
|
|
283
|
+
if r == 1:
|
|
284
|
+
return 0
|
|
285
|
+
if r == 2:
|
|
286
|
+
return 3
|
|
287
|
+
if r == 3:
|
|
288
|
+
return 1
|
|
289
|
+
if r == 4:
|
|
290
|
+
return 3
|
|
291
|
+
if r == 5:
|
|
292
|
+
return 2
|
|
293
|
+
if r == 6:
|
|
294
|
+
return 1
|
|
295
|
+
else: # rank == 7
|
|
296
|
+
# 1-2-3
|
|
297
|
+
# /
|
|
298
|
+
# 0-7-6-5-4
|
|
299
|
+
if r == 1:
|
|
300
|
+
return 7
|
|
301
|
+
if r == 7:
|
|
302
|
+
return 0
|
|
303
|
+
if r <= 3:
|
|
304
|
+
return r - 1
|
|
305
|
+
# r = 4,5,6
|
|
306
|
+
return r + 1
|
|
307
|
+
|
|
308
|
+
@cached_method
|
|
309
|
+
def _endpoint(self, r):
|
|
310
|
+
r"""
|
|
311
|
+
Return the endpoint for the bijection in type `E_{6,7}^{(1)}`.
|
|
312
|
+
|
|
313
|
+
EXAMPLES::
|
|
314
|
+
|
|
315
|
+
sage: from sage.combinat.rigged_configurations.bij_type_E67 import RCToKRTBijectionTypeE67, endpoint6, endpoint7
|
|
316
|
+
sage: RC = RiggedConfigurations(['E', 6, 1], [[2, 1]])
|
|
317
|
+
sage: bijection = RCToKRTBijectionTypeE67(RC(partition_list=[[1],[1,1],[1,1],[1,1,1], [1,1],[1]]))
|
|
318
|
+
sage: all(bijection._endpoint(r) == endpoint6(r) for r in range(1,7))
|
|
319
|
+
True
|
|
320
|
+
sage: RC = RiggedConfigurations(['E', 7, 1], [[6, 1]])
|
|
321
|
+
sage: bijection = RCToKRTBijectionTypeE67(RC(partition_list=[[1],[1,1],[1,1],[1,1],[1],[1],[]]))
|
|
322
|
+
sage: all(bijection._endpoint(r) == endpoint7(r) for r in range(1,8))
|
|
323
|
+
True
|
|
324
|
+
"""
|
|
325
|
+
if self.KRT.cartan_type().classical().rank() == 6:
|
|
326
|
+
return endpoint6(r)
|
|
327
|
+
else:
|
|
328
|
+
return endpoint7(r)
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
def endpoint6(r):
|
|
332
|
+
"""
|
|
333
|
+
Return the endpoint for `B^{r,1}` in type `E_6^{(1)}`.
|
|
334
|
+
|
|
335
|
+
EXAMPLES::
|
|
336
|
+
|
|
337
|
+
sage: from sage.combinat.rigged_configurations.bij_type_E67 import endpoint6
|
|
338
|
+
sage: endpoint6(1)
|
|
339
|
+
(1,)
|
|
340
|
+
sage: endpoint6(2)
|
|
341
|
+
(-3, 2)
|
|
342
|
+
sage: endpoint6(3)
|
|
343
|
+
(-1, 3)
|
|
344
|
+
sage: endpoint6(4)
|
|
345
|
+
(-3, 4)
|
|
346
|
+
sage: endpoint6(5)
|
|
347
|
+
(-2, 5)
|
|
348
|
+
sage: endpoint6(6)
|
|
349
|
+
(-1, 6)
|
|
350
|
+
"""
|
|
351
|
+
C = CrystalOfLetters(['E', 6])
|
|
352
|
+
if r == 1:
|
|
353
|
+
return C.module_generators[0] # C((1,))
|
|
354
|
+
elif r == 2:
|
|
355
|
+
return C((-3, 2))
|
|
356
|
+
elif r == 3:
|
|
357
|
+
return C((-1, 3))
|
|
358
|
+
elif r == 4:
|
|
359
|
+
return C((-3, 4))
|
|
360
|
+
elif r == 5:
|
|
361
|
+
return C((-2, 5))
|
|
362
|
+
elif r == 6:
|
|
363
|
+
return C((-1, 6))
|
|
364
|
+
|
|
365
|
+
|
|
366
|
+
def endpoint7(r):
|
|
367
|
+
"""
|
|
368
|
+
Return the endpoint for `B^{r,1}` in type `E_7^{(1)}`.
|
|
369
|
+
|
|
370
|
+
EXAMPLES::
|
|
371
|
+
|
|
372
|
+
sage: from sage.combinat.rigged_configurations.bij_type_E67 import endpoint7
|
|
373
|
+
sage: endpoint7(1)
|
|
374
|
+
(-7, 1)
|
|
375
|
+
sage: endpoint7(2)
|
|
376
|
+
(-1, 2)
|
|
377
|
+
sage: endpoint7(3)
|
|
378
|
+
(-2, 3)
|
|
379
|
+
sage: endpoint7(4)
|
|
380
|
+
(-5, 4)
|
|
381
|
+
sage: endpoint7(5)
|
|
382
|
+
(-6, 5)
|
|
383
|
+
sage: endpoint7(6)
|
|
384
|
+
(-7, 6)
|
|
385
|
+
sage: endpoint7(7)
|
|
386
|
+
(7,)
|
|
387
|
+
"""
|
|
388
|
+
C = CrystalOfLetters(['E', 7])
|
|
389
|
+
if r == 1:
|
|
390
|
+
return C((-7, 1))
|
|
391
|
+
elif r == 2:
|
|
392
|
+
return C((-1, 2))
|
|
393
|
+
elif r == 3:
|
|
394
|
+
return C((-2, 3))
|
|
395
|
+
elif r == 4:
|
|
396
|
+
return C((-5, 4))
|
|
397
|
+
elif r == 5:
|
|
398
|
+
return C((-6, 5))
|
|
399
|
+
elif r == 6:
|
|
400
|
+
return C((-7, 6))
|
|
401
|
+
elif r == 7:
|
|
402
|
+
return C.module_generators[0] # C((7,))
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-combinat
|
|
2
|
+
# sage.doctest: needs sage.combinat sage.graphs sage.modules
|
|
3
|
+
r"""
|
|
4
|
+
Bijection between rigged configurations and KR tableaux
|
|
5
|
+
|
|
6
|
+
Functions which are big switch statements to create the bijection class of the
|
|
7
|
+
correct type.
|
|
8
|
+
|
|
9
|
+
AUTHORS:
|
|
10
|
+
|
|
11
|
+
- Travis Scrimshaw (2011-04-15): Initial version
|
|
12
|
+
- Travis Scrimshaw (2012-12-21): Added all non-exceptional bijection types
|
|
13
|
+
- Travis Scrimshaw (2014-09-10): Added type `D_4^{(3)}`
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
#*****************************************************************************
|
|
17
|
+
# Copyright (C) 2011-2015 Travis Scrimshaw <tscrim@ucdavis.edu>
|
|
18
|
+
#
|
|
19
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
20
|
+
#
|
|
21
|
+
# This code is distributed in the hope that it will be useful,
|
|
22
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
23
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
24
|
+
# General Public License for more details.
|
|
25
|
+
#
|
|
26
|
+
# The full text of the GPL is available at:
|
|
27
|
+
#
|
|
28
|
+
# http://www.gnu.org/licenses/
|
|
29
|
+
#*****************************************************************************
|
|
30
|
+
|
|
31
|
+
from sage.combinat.rigged_configurations.bij_type_A import KRTToRCBijectionTypeA
|
|
32
|
+
from sage.combinat.rigged_configurations.bij_type_A import RCToKRTBijectionTypeA
|
|
33
|
+
|
|
34
|
+
from sage.combinat.rigged_configurations.bij_type_B import KRTToRCBijectionTypeB
|
|
35
|
+
from sage.combinat.rigged_configurations.bij_type_B import RCToKRTBijectionTypeB
|
|
36
|
+
|
|
37
|
+
from sage.combinat.rigged_configurations.bij_type_C import KRTToRCBijectionTypeC
|
|
38
|
+
from sage.combinat.rigged_configurations.bij_type_C import RCToKRTBijectionTypeC
|
|
39
|
+
|
|
40
|
+
from sage.combinat.rigged_configurations.bij_type_D import KRTToRCBijectionTypeD
|
|
41
|
+
from sage.combinat.rigged_configurations.bij_type_D import RCToKRTBijectionTypeD
|
|
42
|
+
|
|
43
|
+
from sage.combinat.rigged_configurations.bij_type_D_twisted import KRTToRCBijectionTypeDTwisted
|
|
44
|
+
from sage.combinat.rigged_configurations.bij_type_D_twisted import RCToKRTBijectionTypeDTwisted
|
|
45
|
+
|
|
46
|
+
from sage.combinat.rigged_configurations.bij_type_A2_even import KRTToRCBijectionTypeA2Even
|
|
47
|
+
from sage.combinat.rigged_configurations.bij_type_A2_even import RCToKRTBijectionTypeA2Even
|
|
48
|
+
|
|
49
|
+
from sage.combinat.rigged_configurations.bij_type_A2_dual import KRTToRCBijectionTypeA2Dual
|
|
50
|
+
from sage.combinat.rigged_configurations.bij_type_A2_dual import RCToKRTBijectionTypeA2Dual
|
|
51
|
+
|
|
52
|
+
from sage.combinat.rigged_configurations.bij_type_A2_odd import KRTToRCBijectionTypeA2Odd
|
|
53
|
+
from sage.combinat.rigged_configurations.bij_type_A2_odd import RCToKRTBijectionTypeA2Odd
|
|
54
|
+
|
|
55
|
+
from sage.combinat.rigged_configurations.bij_type_D_tri import KRTToRCBijectionTypeDTri
|
|
56
|
+
from sage.combinat.rigged_configurations.bij_type_D_tri import RCToKRTBijectionTypeDTri
|
|
57
|
+
|
|
58
|
+
from sage.combinat.rigged_configurations.bij_type_E67 import KRTToRCBijectionTypeE67
|
|
59
|
+
from sage.combinat.rigged_configurations.bij_type_E67 import RCToKRTBijectionTypeE67
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def KRTToRCBijection(tp_krt):
|
|
63
|
+
r"""
|
|
64
|
+
Return the correct KR tableaux to rigged configuration bijection helper class.
|
|
65
|
+
|
|
66
|
+
TESTS::
|
|
67
|
+
|
|
68
|
+
sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A', 4, 1], [[2,1]])
|
|
69
|
+
sage: from sage.combinat.rigged_configurations.bijection import KRTToRCBijection
|
|
70
|
+
sage: bijection = KRTToRCBijection(KRT(pathlist=[[5,2]]))
|
|
71
|
+
"""
|
|
72
|
+
ct = tp_krt.cartan_type()
|
|
73
|
+
typ = ct.type()
|
|
74
|
+
if ct.is_untwisted_affine():
|
|
75
|
+
if typ == 'A':
|
|
76
|
+
return KRTToRCBijectionTypeA(tp_krt)
|
|
77
|
+
if typ == 'B':
|
|
78
|
+
return KRTToRCBijectionTypeB(tp_krt)
|
|
79
|
+
if typ == 'C':
|
|
80
|
+
return KRTToRCBijectionTypeC(tp_krt)
|
|
81
|
+
if typ == 'D':
|
|
82
|
+
return KRTToRCBijectionTypeD(tp_krt)
|
|
83
|
+
if typ == 'E':
|
|
84
|
+
if ct.classical().rank() < 8:
|
|
85
|
+
return KRTToRCBijectionTypeE67(tp_krt)
|
|
86
|
+
#if typ == 'F':
|
|
87
|
+
#if typ == 'G':
|
|
88
|
+
else:
|
|
89
|
+
if typ == 'BC': # A_{2n}^{(2)}
|
|
90
|
+
return KRTToRCBijectionTypeA2Even(tp_krt)
|
|
91
|
+
typ = ct.dual().type()
|
|
92
|
+
if typ == 'BC': # A_{2n}^{(2)\dagger}
|
|
93
|
+
return KRTToRCBijectionTypeA2Dual(tp_krt)
|
|
94
|
+
if typ == 'B': # A_{2n-1}^{(2)}
|
|
95
|
+
return KRTToRCBijectionTypeA2Odd(tp_krt)
|
|
96
|
+
if typ == 'C': # D_{n+1}^{(2)}
|
|
97
|
+
return KRTToRCBijectionTypeDTwisted(tp_krt)
|
|
98
|
+
#if typ == 'F': # E_6^{(2)}
|
|
99
|
+
if typ == 'G': # D_4^{(3)}
|
|
100
|
+
return KRTToRCBijectionTypeDTri(tp_krt)
|
|
101
|
+
raise NotImplementedError
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
def RCToKRTBijection(rigged_configuration_elt):
|
|
105
|
+
r"""
|
|
106
|
+
Return the correct rigged configuration to KR tableaux bijection helper class.
|
|
107
|
+
|
|
108
|
+
TESTS::
|
|
109
|
+
|
|
110
|
+
sage: RC = RiggedConfigurations(['A', 4, 1], [[2, 1]])
|
|
111
|
+
sage: from sage.combinat.rigged_configurations.bijection import RCToKRTBijection
|
|
112
|
+
sage: bijection = RCToKRTBijection(RC(partition_list=[[1],[1],[1],[1]]))
|
|
113
|
+
"""
|
|
114
|
+
ct = rigged_configuration_elt.cartan_type()
|
|
115
|
+
typ = ct.type()
|
|
116
|
+
if not ct.is_affine() or ct.is_untwisted_affine():
|
|
117
|
+
if typ == 'A':
|
|
118
|
+
return RCToKRTBijectionTypeA(rigged_configuration_elt)
|
|
119
|
+
if typ == 'B':
|
|
120
|
+
return RCToKRTBijectionTypeB(rigged_configuration_elt)
|
|
121
|
+
if typ == 'C':
|
|
122
|
+
return RCToKRTBijectionTypeC(rigged_configuration_elt)
|
|
123
|
+
if typ == 'D':
|
|
124
|
+
return RCToKRTBijectionTypeD(rigged_configuration_elt)
|
|
125
|
+
if typ == 'E':
|
|
126
|
+
if ct.classical().rank() < 8:
|
|
127
|
+
return RCToKRTBijectionTypeE67(rigged_configuration_elt)
|
|
128
|
+
#if typ == 'F':
|
|
129
|
+
#if typ == 'G':
|
|
130
|
+
else:
|
|
131
|
+
if typ == 'BC': # A_{2n}^{(2)}
|
|
132
|
+
return RCToKRTBijectionTypeA2Even(rigged_configuration_elt)
|
|
133
|
+
typ = ct.dual().type()
|
|
134
|
+
if typ == 'BC': # A_{2n}^{(2)\dagger}
|
|
135
|
+
return RCToKRTBijectionTypeA2Dual(rigged_configuration_elt)
|
|
136
|
+
if typ == 'B': # A_{2n-1}^{(2)}
|
|
137
|
+
return RCToKRTBijectionTypeA2Odd(rigged_configuration_elt)
|
|
138
|
+
if typ == 'C': # D_{n+1}^{(2)}
|
|
139
|
+
return RCToKRTBijectionTypeDTwisted(rigged_configuration_elt)
|
|
140
|
+
#if typ == 'F': # E_6^{(2)}
|
|
141
|
+
if typ == 'G': # D_4^{(3)}
|
|
142
|
+
return RCToKRTBijectionTypeDTri(rigged_configuration_elt)
|
|
143
|
+
raise NotImplementedError
|