passagemath-combinat 10.6.31rc3__cp314-cp314-macosx_13_0_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.
Potentially problematic release.
This version of passagemath-combinat might be problematic. Click here for more details.
- passagemath_combinat-10.6.31rc3.dist-info/METADATA +160 -0
- passagemath_combinat-10.6.31rc3.dist-info/RECORD +399 -0
- passagemath_combinat-10.6.31rc3.dist-info/WHEEL +6 -0
- passagemath_combinat-10.6.31rc3.dist-info/top_level.txt +2 -0
- passagemath_combinat.dylibs/libgmp.10.dylib +0 -0
- passagemath_combinat.dylibs/libsymmetrica.3.0.0.dylib +0 -0
- sage/algebras/affine_nil_temperley_lieb.py +263 -0
- sage/algebras/all.py +25 -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-darwin.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-darwin.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-darwin.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-darwin.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-darwin.so +0 -0
- sage/combinat/debruijn_sequence.pyx +355 -0
- sage/combinat/decorated_permutation.py +270 -0
- sage/combinat/degree_sequences.cpython-314-darwin.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-darwin.so +0 -0
- sage/combinat/expnums.pyx +148 -0
- sage/combinat/fast_vector_partitions.cpython-314-darwin.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-darwin.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-darwin.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-darwin.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-darwin.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 +765 -0
- sage/combinat/words/word_char.cpython-314-darwin.so +0 -0
- sage/combinat/words/word_char.pyx +847 -0
- sage/combinat/words/word_datatypes.cpython-314-darwin.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-darwin.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-darwin.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-darwin.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-darwin.so +0 -0
- sage/sat/solvers/satsolver.pxd +3 -0
- sage/sat/solvers/satsolver.pyx +405 -0
|
@@ -0,0 +1,591 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-combinat
|
|
2
|
+
# sage.doctest: needs sage.combinat sage.graphs sage.modules
|
|
3
|
+
r"""
|
|
4
|
+
Quantum Group Representations
|
|
5
|
+
|
|
6
|
+
AUTHORS:
|
|
7
|
+
|
|
8
|
+
- Travis Scrimshaw (2018): initial version
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
#*****************************************************************************
|
|
12
|
+
# Copyright (C) 2018 Travis Scrimshaw <tcscrims at gmail.com>
|
|
13
|
+
#
|
|
14
|
+
# This program is free software: you can redistribute it and/or modify
|
|
15
|
+
# it under the terms of the GNU General Public License as published by
|
|
16
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
17
|
+
# (at your option) any later version.
|
|
18
|
+
# http://www.gnu.org/licenses/
|
|
19
|
+
#*****************************************************************************
|
|
20
|
+
|
|
21
|
+
from sage.combinat.free_module import CombinatorialFreeModule
|
|
22
|
+
from sage.misc.lazy_attribute import lazy_attribute
|
|
23
|
+
from sage.misc.cachefunc import cached_method
|
|
24
|
+
from sage.algebras.quantum_groups.q_numbers import q_int
|
|
25
|
+
from sage.categories.crystals import Crystals
|
|
26
|
+
from sage.categories.quantum_group_representations import QuantumGroupRepresentations
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class QuantumGroupRepresentation(CombinatorialFreeModule):
|
|
30
|
+
"""
|
|
31
|
+
A representation of a quantum group whose basis is indexed
|
|
32
|
+
by the corresponding (combinatorial) crystal.
|
|
33
|
+
|
|
34
|
+
INPUT:
|
|
35
|
+
|
|
36
|
+
- ``C`` -- the crystal corresponding to the representation
|
|
37
|
+
- ``R`` -- the base ring
|
|
38
|
+
- ``q`` -- (default: the generator of ``R``) the parameter `q`
|
|
39
|
+
of the quantum group
|
|
40
|
+
"""
|
|
41
|
+
@staticmethod
|
|
42
|
+
def __classcall__(cls, R, C, q=None):
|
|
43
|
+
"""
|
|
44
|
+
Normalize input to ensure a unique representation.
|
|
45
|
+
|
|
46
|
+
EXAMPLES::
|
|
47
|
+
|
|
48
|
+
sage: from sage.algebras.quantum_groups.representations import MinusculeRepresentation
|
|
49
|
+
sage: C = crystals.Tableaux(['A',3], shape=[1,1])
|
|
50
|
+
sage: R = ZZ['q'].fraction_field()
|
|
51
|
+
sage: V1 = MinusculeRepresentation(R, C)
|
|
52
|
+
sage: V2 = MinusculeRepresentation(R, C, R.gen())
|
|
53
|
+
sage: V1 is V2
|
|
54
|
+
True
|
|
55
|
+
"""
|
|
56
|
+
if q is None:
|
|
57
|
+
q = R.gen()
|
|
58
|
+
return super().__classcall__(cls, R, C, q)
|
|
59
|
+
|
|
60
|
+
def __init__(self, R, C, q):
|
|
61
|
+
"""
|
|
62
|
+
Initialize ``self``.
|
|
63
|
+
|
|
64
|
+
EXAMPLES::
|
|
65
|
+
|
|
66
|
+
sage: from sage.algebras.quantum_groups.representations import MinusculeRepresentation
|
|
67
|
+
sage: C = crystals.Tableaux(['A',3], shape=[1,1])
|
|
68
|
+
sage: R = ZZ['q'].fraction_field()
|
|
69
|
+
sage: V = MinusculeRepresentation(R, C)
|
|
70
|
+
sage: TestSuite(V).run()
|
|
71
|
+
"""
|
|
72
|
+
self._q = q
|
|
73
|
+
self._d = C.cartan_type().symmetrizer()
|
|
74
|
+
cat = QuantumGroupRepresentations(R).WithBasis()
|
|
75
|
+
if C in Crystals().Finite():
|
|
76
|
+
cat = cat.FiniteDimensional()
|
|
77
|
+
CombinatorialFreeModule.__init__(self, R, C, category=cat)
|
|
78
|
+
|
|
79
|
+
def cartan_type(self):
|
|
80
|
+
"""
|
|
81
|
+
Return the Cartan type of ``self``.
|
|
82
|
+
|
|
83
|
+
EXAMPLES::
|
|
84
|
+
|
|
85
|
+
sage: from sage.algebras.quantum_groups.representations import AdjointRepresentation
|
|
86
|
+
sage: C = crystals.Tableaux(['C',3], shape=[1])
|
|
87
|
+
sage: R = ZZ['q'].fraction_field()
|
|
88
|
+
sage: V = AdjointRepresentation(R, C)
|
|
89
|
+
sage: V.cartan_type()
|
|
90
|
+
['C', 3]
|
|
91
|
+
"""
|
|
92
|
+
return self.basis().keys().cartan_type()
|
|
93
|
+
|
|
94
|
+
def K_on_basis(self, i, b, power=1):
|
|
95
|
+
r"""
|
|
96
|
+
Return the action of `K_i` on the basis element indexed by ``b``
|
|
97
|
+
to the power ``power``.
|
|
98
|
+
|
|
99
|
+
INPUT:
|
|
100
|
+
|
|
101
|
+
- ``i`` -- an element of the index set
|
|
102
|
+
- ``b`` -- an element of basis keys
|
|
103
|
+
- ``power`` -- (default: 1) the power of `K_i`
|
|
104
|
+
|
|
105
|
+
EXAMPLES::
|
|
106
|
+
|
|
107
|
+
sage: from sage.algebras.quantum_groups.representations import MinusculeRepresentation
|
|
108
|
+
sage: C = crystals.Tableaux(['A',3], shape=[1,1])
|
|
109
|
+
sage: R = ZZ['q'].fraction_field()
|
|
110
|
+
sage: V = MinusculeRepresentation(R, C)
|
|
111
|
+
sage: [[V.K_on_basis(i, b) for i in V.index_set()] for b in C]
|
|
112
|
+
[[B[[[1], [2]]], q*B[[[1], [2]]], B[[[1], [2]]]],
|
|
113
|
+
[q*B[[[1], [3]]], 1/q*B[[[1], [3]]], q*B[[[1], [3]]]],
|
|
114
|
+
[1/q*B[[[2], [3]]], B[[[2], [3]]], q*B[[[2], [3]]]],
|
|
115
|
+
[q*B[[[1], [4]]], B[[[1], [4]]], 1/q*B[[[1], [4]]]],
|
|
116
|
+
[1/q*B[[[2], [4]]], q*B[[[2], [4]]], 1/q*B[[[2], [4]]]],
|
|
117
|
+
[B[[[3], [4]]], 1/q*B[[[3], [4]]], B[[[3], [4]]]]]
|
|
118
|
+
sage: [[V.K_on_basis(i, b, -1) for i in V.index_set()] for b in C]
|
|
119
|
+
[[B[[[1], [2]]], 1/q*B[[[1], [2]]], B[[[1], [2]]]],
|
|
120
|
+
[1/q*B[[[1], [3]]], q*B[[[1], [3]]], 1/q*B[[[1], [3]]]],
|
|
121
|
+
[q*B[[[2], [3]]], B[[[2], [3]]], 1/q*B[[[2], [3]]]],
|
|
122
|
+
[1/q*B[[[1], [4]]], B[[[1], [4]]], q*B[[[1], [4]]]],
|
|
123
|
+
[q*B[[[2], [4]]], 1/q*B[[[2], [4]]], q*B[[[2], [4]]]],
|
|
124
|
+
[B[[[3], [4]]], q*B[[[3], [4]]], B[[[3], [4]]]]]
|
|
125
|
+
"""
|
|
126
|
+
WLR = self.basis().keys().weight_lattice_realization()
|
|
127
|
+
alc = WLR.simple_coroots()
|
|
128
|
+
return self.term(b, self._q**(b.weight().scalar(alc[i]) * self._d[i] * power))
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
class CyclicRepresentation(QuantumGroupRepresentation):
|
|
132
|
+
"""
|
|
133
|
+
A cyclic quantum group representation that is indexed by either a
|
|
134
|
+
highest weight crystal or Kirillov-Reshetikhin crystal.
|
|
135
|
+
|
|
136
|
+
The crystal ``C`` must either allow ``C.module_generator()``,
|
|
137
|
+
otherwise it is assumed to be generated by ``C.module_generators[0]``.
|
|
138
|
+
|
|
139
|
+
This is meant as an abstract base class for
|
|
140
|
+
:class:`~sage.algebras.quantum_groups.representation.AdjointRepresentation`
|
|
141
|
+
and
|
|
142
|
+
:class:`~sage.algebras.quantum_groups.representation.MinusculeRepresentation`.
|
|
143
|
+
"""
|
|
144
|
+
def _repr_(self):
|
|
145
|
+
"""
|
|
146
|
+
Return a string representation of ``self``.
|
|
147
|
+
|
|
148
|
+
EXAMPLES::
|
|
149
|
+
|
|
150
|
+
sage: from sage.algebras.quantum_groups.representations import AdjointRepresentation
|
|
151
|
+
sage: C = crystals.Tableaux(['C',3], shape=[1])
|
|
152
|
+
sage: R = ZZ['q'].fraction_field()
|
|
153
|
+
sage: AdjointRepresentation(R, C)
|
|
154
|
+
V((1, 0, 0))
|
|
155
|
+
"""
|
|
156
|
+
try:
|
|
157
|
+
mg = self.basis().keys().module_generator()
|
|
158
|
+
except (TypeError, AttributeError):
|
|
159
|
+
mg = self.basis().keys().module_generators[0]
|
|
160
|
+
return "V({})".format(mg.weight())
|
|
161
|
+
|
|
162
|
+
def _latex_(self):
|
|
163
|
+
r"""
|
|
164
|
+
Return a latex representation of ``self``.
|
|
165
|
+
|
|
166
|
+
EXAMPLES::
|
|
167
|
+
|
|
168
|
+
sage: from sage.algebras.quantum_groups.representations import AdjointRepresentation
|
|
169
|
+
sage: C = crystals.Tableaux(['G',2], shape=[1])
|
|
170
|
+
sage: R = ZZ['q'].fraction_field()
|
|
171
|
+
sage: V = AdjointRepresentation(R, C)
|
|
172
|
+
sage: latex(V)
|
|
173
|
+
V\left( e_{0} - e_{2} \right)
|
|
174
|
+
|
|
175
|
+
sage: La = RootSystem(['E',7,1]).weight_space().fundamental_weights()
|
|
176
|
+
sage: K = crystals.ProjectedLevelZeroLSPaths(La[1])
|
|
177
|
+
sage: A = AdjointRepresentation(R, K)
|
|
178
|
+
sage: latex(A)
|
|
179
|
+
V\left( -2 \Lambda_{0} + \Lambda_{1} \right)
|
|
180
|
+
"""
|
|
181
|
+
try:
|
|
182
|
+
mg = self.basis().keys().module_generator()
|
|
183
|
+
except (TypeError, AttributeError):
|
|
184
|
+
mg = self.basis().keys().module_generators[0]
|
|
185
|
+
from sage.misc.latex import latex
|
|
186
|
+
return r"V\left( {} \right)".format(latex(mg.weight()))
|
|
187
|
+
|
|
188
|
+
@cached_method
|
|
189
|
+
def module_generator(self):
|
|
190
|
+
"""
|
|
191
|
+
Return the module generator of ``self``.
|
|
192
|
+
|
|
193
|
+
EXAMPLES::
|
|
194
|
+
|
|
195
|
+
sage: from sage.algebras.quantum_groups.representations import AdjointRepresentation
|
|
196
|
+
sage: C = crystals.Tableaux(['G',2], shape=[1,1])
|
|
197
|
+
sage: R = ZZ['q'].fraction_field()
|
|
198
|
+
sage: V = AdjointRepresentation(R, C)
|
|
199
|
+
sage: V.module_generator()
|
|
200
|
+
B[[[1], [2]]]
|
|
201
|
+
|
|
202
|
+
sage: K = crystals.KirillovReshetikhin(['D',4,2], 1,1)
|
|
203
|
+
sage: A = AdjointRepresentation(R, K)
|
|
204
|
+
sage: A.module_generator()
|
|
205
|
+
B[[[1]]]
|
|
206
|
+
"""
|
|
207
|
+
try:
|
|
208
|
+
mg = self.basis().keys().module_generator()
|
|
209
|
+
except (TypeError, AttributeError):
|
|
210
|
+
mg = self.basis().keys().module_generators[0]
|
|
211
|
+
return self.monomial(mg)
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
class AdjointRepresentation(CyclicRepresentation):
|
|
215
|
+
r"""
|
|
216
|
+
An (generalized) adjoint representation of a quantum group.
|
|
217
|
+
|
|
218
|
+
We define an *(generalized) adjoint representation* `V` of a
|
|
219
|
+
quantum group `U_q` to be a cyclic `U_q`-module with a weight
|
|
220
|
+
space decomposition `V = \bigoplus_{\mu} V_{\mu}` such that
|
|
221
|
+
`\dim V_{\mu} \leq 1` unless `\mu = 0`. Moreover, we require
|
|
222
|
+
that there exists a basis `\{y_j | j \in J\}` for `V_0` such
|
|
223
|
+
that `e_i y_j = 0` for all `j \neq i \in I`.
|
|
224
|
+
|
|
225
|
+
For a base ring `R`, we construct an adjoint representation from
|
|
226
|
+
its (combinatorial) crystal `B` by `V = R \{v_b | b \in B\}` with
|
|
227
|
+
|
|
228
|
+
.. MATH::
|
|
229
|
+
|
|
230
|
+
\begin{aligned}
|
|
231
|
+
e_i v_b & = \begin{cases}
|
|
232
|
+
v_{e_i b} / [\varphi_i(e_i b)]_{q_i},
|
|
233
|
+
& \text{if } \operatorname{wt}(b) \neq 0, \\
|
|
234
|
+
v_{e_i b} + \sum_{j \neq i} [-A_{ij}]_{q_i} / [2]_{q_i} v_{y_j}
|
|
235
|
+
& \text{otherwise}
|
|
236
|
+
\end{cases} \\
|
|
237
|
+
f_i v_b & = \begin{cases}
|
|
238
|
+
v_{f_i b} / [\varepsilon_i(f_i b)]_{q_i},
|
|
239
|
+
& \text{if } \operatorname{wt}(b) \neq 0, \\
|
|
240
|
+
v_{f_i b} + \sum_{j \neq i} [-A_{ij}]_{q_i} / [2]_{q_i} v_{y_j}
|
|
241
|
+
& \text{otherwise}
|
|
242
|
+
\end{cases} \\
|
|
243
|
+
K_i v_b & = q^{\langle h_i, \operatorname{wt}(b) \rangle} v_b,
|
|
244
|
+
\end{aligned}
|
|
245
|
+
|
|
246
|
+
where `(A_{ij})_{i,j \in I}` is the Cartan matrix, and we
|
|
247
|
+
consider `v_0 := 0`.
|
|
248
|
+
|
|
249
|
+
INPUT:
|
|
250
|
+
|
|
251
|
+
- ``C`` -- the crystal corresponding to the representation
|
|
252
|
+
- ``R`` -- the base ring
|
|
253
|
+
- ``q`` -- (default: the generator of ``R``) the parameter `q`
|
|
254
|
+
of the quantum group
|
|
255
|
+
|
|
256
|
+
.. WARNING::
|
|
257
|
+
|
|
258
|
+
This assumes that `q` is generic.
|
|
259
|
+
|
|
260
|
+
EXAMPLES::
|
|
261
|
+
|
|
262
|
+
sage: from sage.algebras.quantum_groups.representations import AdjointRepresentation
|
|
263
|
+
sage: R = ZZ['q'].fraction_field()
|
|
264
|
+
sage: C = crystals.Tableaux(['D',4], shape=[1,1])
|
|
265
|
+
sage: V = AdjointRepresentation(R, C)
|
|
266
|
+
sage: V
|
|
267
|
+
V((1, 1, 0, 0))
|
|
268
|
+
sage: v = V.an_element(); v
|
|
269
|
+
2*B[[[1], [2]]] + 2*B[[[1], [3]]] + 3*B[[[2], [3]]]
|
|
270
|
+
sage: v.e(2)
|
|
271
|
+
2*B[[[1], [2]]]
|
|
272
|
+
sage: v.f(2)
|
|
273
|
+
2*B[[[1], [3]]]
|
|
274
|
+
sage: v.f(4)
|
|
275
|
+
2*B[[[1], [-4]]] + 3*B[[[2], [-4]]]
|
|
276
|
+
sage: v.K(3)
|
|
277
|
+
2*B[[[1], [2]]] + 2*q*B[[[1], [3]]] + 3*q*B[[[2], [3]]]
|
|
278
|
+
sage: v.K(2,-2)
|
|
279
|
+
2/q^2*B[[[1], [2]]] + 2*q^2*B[[[1], [3]]] + 3*B[[[2], [3]]]
|
|
280
|
+
|
|
281
|
+
sage: La = RootSystem(['F',4,1]).weight_space().fundamental_weights()
|
|
282
|
+
sage: K = crystals.ProjectedLevelZeroLSPaths(La[4])
|
|
283
|
+
sage: A = AdjointRepresentation(R, K)
|
|
284
|
+
sage: A
|
|
285
|
+
V(-Lambda[0] + Lambda[4])
|
|
286
|
+
|
|
287
|
+
Sort the summands uniformly in Python 2 and Python 3::
|
|
288
|
+
|
|
289
|
+
sage: A.print_options(sorting_key=lambda x: str(x))
|
|
290
|
+
sage: v = A.an_element(); v
|
|
291
|
+
2*B[(-Lambda[0] + Lambda[3] - Lambda[4],)]
|
|
292
|
+
+ 2*B[(-Lambda[0] + Lambda[4],)]
|
|
293
|
+
+ 3*B[(Lambda[0] - Lambda[1] + Lambda[4],)]
|
|
294
|
+
sage: v.e(0)
|
|
295
|
+
2*B[(Lambda[0] - Lambda[1] + Lambda[3] - Lambda[4],)]
|
|
296
|
+
+ 2*B[(Lambda[0] - Lambda[1] + Lambda[4],)]
|
|
297
|
+
sage: v.f(0)
|
|
298
|
+
3*B[(-Lambda[0] + Lambda[4],)]
|
|
299
|
+
|
|
300
|
+
REFERENCES:
|
|
301
|
+
|
|
302
|
+
- [OS2018]_
|
|
303
|
+
"""
|
|
304
|
+
def __init__(self, R, C, q):
|
|
305
|
+
"""
|
|
306
|
+
Initialize ``self``.
|
|
307
|
+
|
|
308
|
+
EXAMPLES::
|
|
309
|
+
|
|
310
|
+
sage: from sage.algebras.quantum_groups.representations import AdjointRepresentation
|
|
311
|
+
sage: C = crystals.Tableaux(['B',3], shape=[1,1])
|
|
312
|
+
sage: R = ZZ['q'].fraction_field()
|
|
313
|
+
sage: V = AdjointRepresentation(R, C)
|
|
314
|
+
sage: TestSuite(V).run()
|
|
315
|
+
|
|
316
|
+
sage: A = crystals.Tableaux(['A',2], shape=[2,1])
|
|
317
|
+
sage: VA = AdjointRepresentation(R, A)
|
|
318
|
+
sage: TestSuite(VA).run()
|
|
319
|
+
|
|
320
|
+
sage: K1 = crystals.KirillovReshetikhin(['C',3,1], 1,1)
|
|
321
|
+
sage: A1 = AdjointRepresentation(R, K1)
|
|
322
|
+
sage: TestSuite(A1).run()
|
|
323
|
+
sage: K2 = crystals.KirillovReshetikhin(['C',2,1], 1,2)
|
|
324
|
+
sage: A2 = AdjointRepresentation(R, K2)
|
|
325
|
+
sage: TestSuite(A2).run()
|
|
326
|
+
"""
|
|
327
|
+
self._WLR_zero = C.weight_lattice_realization().zero()
|
|
328
|
+
CyclicRepresentation.__init__(self, R, C, q)
|
|
329
|
+
ct = C.cartan_type()
|
|
330
|
+
if ct.is_finite() and ct.type() == 'A':
|
|
331
|
+
def test_zero(x):
|
|
332
|
+
wt = x.weight()
|
|
333
|
+
return all(wt.scalar(ac) == 0
|
|
334
|
+
for ac in self._WLR_zero.parent().simple_coroots())
|
|
335
|
+
self._check_zero_wt = test_zero
|
|
336
|
+
else:
|
|
337
|
+
self._check_zero_wt = lambda x: x.weight() == self._WLR_zero
|
|
338
|
+
|
|
339
|
+
@lazy_attribute
|
|
340
|
+
def _zero_elts(self):
|
|
341
|
+
r"""
|
|
342
|
+
Find all of the elements of weight `0` in the basis keys.
|
|
343
|
+
|
|
344
|
+
EXAMPLES::
|
|
345
|
+
|
|
346
|
+
sage: from sage.algebras.quantum_groups.representations import AdjointRepresentation
|
|
347
|
+
sage: K = crystals.KirillovReshetikhin(['D',4,1], 2,1)
|
|
348
|
+
sage: R = ZZ['q'].fraction_field()
|
|
349
|
+
sage: V = AdjointRepresentation(R, K)
|
|
350
|
+
sage: V._zero_elts
|
|
351
|
+
{0: [], 1: [[2], [-2]], 2: [[3], [-3]],
|
|
352
|
+
3: [[4], [-4]], 4: [[-4], [4]]}
|
|
353
|
+
"""
|
|
354
|
+
C = self.basis().keys()
|
|
355
|
+
ret = {}
|
|
356
|
+
for x in C:
|
|
357
|
+
if self._check_zero_wt(x):
|
|
358
|
+
for i in C.index_set():
|
|
359
|
+
if x.epsilon(i) > 0:
|
|
360
|
+
ret[i] = x
|
|
361
|
+
break
|
|
362
|
+
return ret
|
|
363
|
+
|
|
364
|
+
def e_on_basis(self, i, b):
|
|
365
|
+
r"""
|
|
366
|
+
Return the action of `e_i` on the basis element indexed by ``b``.
|
|
367
|
+
|
|
368
|
+
INPUT:
|
|
369
|
+
|
|
370
|
+
- ``i`` -- an element of the index set
|
|
371
|
+
- ``b`` -- an element of basis keys
|
|
372
|
+
|
|
373
|
+
EXAMPLES::
|
|
374
|
+
|
|
375
|
+
sage: from sage.algebras.quantum_groups.representations import AdjointRepresentation
|
|
376
|
+
sage: K = crystals.KirillovReshetikhin(['D',3,2], 1,1)
|
|
377
|
+
sage: R = ZZ['q'].fraction_field()
|
|
378
|
+
sage: V = AdjointRepresentation(R, K)
|
|
379
|
+
sage: mg0 = K.module_generators[0]; mg0
|
|
380
|
+
[]
|
|
381
|
+
sage: mg1 = K.module_generators[1]; mg1
|
|
382
|
+
[[1]]
|
|
383
|
+
sage: V.e_on_basis(0, mg0)
|
|
384
|
+
((q^2+1)/q)*B[[[-1]]]
|
|
385
|
+
sage: V.e_on_basis(0, mg1)
|
|
386
|
+
B[[]]
|
|
387
|
+
sage: V.e_on_basis(1, mg0)
|
|
388
|
+
0
|
|
389
|
+
sage: V.e_on_basis(1, mg1)
|
|
390
|
+
0
|
|
391
|
+
sage: V.e_on_basis(2, mg0)
|
|
392
|
+
0
|
|
393
|
+
sage: V.e_on_basis(2, mg1)
|
|
394
|
+
0
|
|
395
|
+
|
|
396
|
+
sage: K = crystals.KirillovReshetikhin(['D',4,3], 1,1)
|
|
397
|
+
sage: V = AdjointRepresentation(R, K)
|
|
398
|
+
sage: V.e_on_basis(0, K.module_generator())
|
|
399
|
+
B[[]] + (q/(q^2+1))*B[[[0]]]
|
|
400
|
+
"""
|
|
401
|
+
C = self.basis().keys()
|
|
402
|
+
x = b.e(i)
|
|
403
|
+
if x is None:
|
|
404
|
+
return self.zero()
|
|
405
|
+
I = {j: pos for pos,j in enumerate(C.index_set())}
|
|
406
|
+
if self._check_zero_wt(x):
|
|
407
|
+
A = C.cartan_type().cartan_matrix()
|
|
408
|
+
return self.monomial(x) + sum(self.term(self._zero_elts[j],
|
|
409
|
+
q_int(-A[I[i],I[j]], self._q**self._d[i])
|
|
410
|
+
/ q_int(2, self._q**self._d[j]))
|
|
411
|
+
for j in C.index_set()
|
|
412
|
+
if A[I[i],I[j]] < 0 and j in self._zero_elts)
|
|
413
|
+
return self.term(x, q_int(x.phi(i), self._q**self._d[i]))
|
|
414
|
+
|
|
415
|
+
def f_on_basis(self, i, b):
|
|
416
|
+
r"""
|
|
417
|
+
Return the action of `f_i` on the basis element indexed by ``b``.
|
|
418
|
+
|
|
419
|
+
INPUT:
|
|
420
|
+
|
|
421
|
+
- ``i`` -- an element of the index set
|
|
422
|
+
- ``b`` -- an element of basis keys
|
|
423
|
+
|
|
424
|
+
EXAMPLES::
|
|
425
|
+
|
|
426
|
+
sage: from sage.algebras.quantum_groups.representations import AdjointRepresentation
|
|
427
|
+
sage: K = crystals.KirillovReshetikhin(['D',3,2], 1,1)
|
|
428
|
+
sage: R = ZZ['q'].fraction_field()
|
|
429
|
+
sage: V = AdjointRepresentation(R, K)
|
|
430
|
+
sage: mg0 = K.module_generators[0]; mg0
|
|
431
|
+
[]
|
|
432
|
+
sage: mg1 = K.module_generators[1]; mg1
|
|
433
|
+
[[1]]
|
|
434
|
+
sage: V.f_on_basis(0, mg0)
|
|
435
|
+
((q^2+1)/q)*B[[[1]]]
|
|
436
|
+
sage: V.f_on_basis(0, mg1)
|
|
437
|
+
0
|
|
438
|
+
sage: V.f_on_basis(1, mg0)
|
|
439
|
+
0
|
|
440
|
+
sage: V.f_on_basis(1, mg1)
|
|
441
|
+
B[[[2]]]
|
|
442
|
+
sage: V.f_on_basis(2, mg0)
|
|
443
|
+
0
|
|
444
|
+
sage: V.f_on_basis(2, mg1)
|
|
445
|
+
0
|
|
446
|
+
|
|
447
|
+
sage: K = crystals.KirillovReshetikhin(['D',4,3], 1,1)
|
|
448
|
+
sage: V = AdjointRepresentation(R, K)
|
|
449
|
+
sage: lw = K.module_generator().to_lowest_weight([1,2])[0]
|
|
450
|
+
sage: V.f_on_basis(0, lw)
|
|
451
|
+
B[[]] + (q/(q^2+1))*B[[[0]]]
|
|
452
|
+
"""
|
|
453
|
+
C = self.basis().keys()
|
|
454
|
+
x = b.f(i)
|
|
455
|
+
if x is None:
|
|
456
|
+
return self.zero()
|
|
457
|
+
I = {j: pos for pos,j in enumerate(C.index_set())}
|
|
458
|
+
if self._check_zero_wt(x):
|
|
459
|
+
A = C.cartan_type().cartan_matrix()
|
|
460
|
+
return self.monomial(x) + sum(self.term(self._zero_elts[j],
|
|
461
|
+
q_int(-A[I[i],I[j]],
|
|
462
|
+
self._q**self._d[i])
|
|
463
|
+
/ q_int(2, self._q**self._d[j]))
|
|
464
|
+
for j in C.index_set()
|
|
465
|
+
if A[I[i],I[j]] < 0 and j in self._zero_elts)
|
|
466
|
+
return self.term(x, q_int(x.epsilon(i), self._q**self._d[i]))
|
|
467
|
+
|
|
468
|
+
|
|
469
|
+
class MinusculeRepresentation(CyclicRepresentation):
|
|
470
|
+
r"""
|
|
471
|
+
A minuscule representation of a quantum group.
|
|
472
|
+
|
|
473
|
+
A quantum group representation `V` is *minuscule* if it is
|
|
474
|
+
cyclic, there is a weight space decomposition
|
|
475
|
+
`V = \bigoplus_{\mu} V_{\mu}` with `\dim V_{\mu} \leq 1`,
|
|
476
|
+
and `e_i^2 V = 0` and `f_i^2 V = 0`.
|
|
477
|
+
|
|
478
|
+
For a base ring `R`, we construct a minuscule representation from
|
|
479
|
+
its (combinatorial) crystal `B` by `V = R \{v_b | b \in B\}` with
|
|
480
|
+
`e_i v_b = v_{e_i b}`, `f_i v_b = v_{f_i b}`, and
|
|
481
|
+
`K_i v_b = q^{\langle h_i, \operatorname{wt}(b) \rangle} v_b`,
|
|
482
|
+
where we consider `v_0 := 0`.
|
|
483
|
+
|
|
484
|
+
INPUT:
|
|
485
|
+
|
|
486
|
+
- ``C`` -- the crystal corresponding to the representation
|
|
487
|
+
- ``R`` -- the base ring
|
|
488
|
+
- ``q`` -- (default: the generator of ``R``) the parameter `q`
|
|
489
|
+
of the quantum group
|
|
490
|
+
|
|
491
|
+
.. WARNING::
|
|
492
|
+
|
|
493
|
+
This assumes that `q` is generic.
|
|
494
|
+
|
|
495
|
+
EXAMPLES::
|
|
496
|
+
|
|
497
|
+
sage: from sage.algebras.quantum_groups.representations import MinusculeRepresentation
|
|
498
|
+
sage: R = ZZ['q'].fraction_field()
|
|
499
|
+
sage: C = crystals.Tableaux(['B',3], shape=[1/2,1/2,1/2])
|
|
500
|
+
sage: V = MinusculeRepresentation(R, C)
|
|
501
|
+
sage: V
|
|
502
|
+
V((1/2, 1/2, 1/2))
|
|
503
|
+
sage: v = V.an_element(); v
|
|
504
|
+
2*B[[+++, []]] + 2*B[[++-, []]] + 3*B[[+-+, []]]
|
|
505
|
+
sage: v.e(3)
|
|
506
|
+
2*B[[+++, []]]
|
|
507
|
+
sage: v.f(1)
|
|
508
|
+
3*B[[-++, []]]
|
|
509
|
+
sage: v.f(3)
|
|
510
|
+
2*B[[++-, []]] + 3*B[[+--, []]]
|
|
511
|
+
sage: v.K(2)
|
|
512
|
+
2*B[[+++, []]] + 2*q^2*B[[++-, []]] + 3/q^2*B[[+-+, []]]
|
|
513
|
+
sage: v.K(3, -2)
|
|
514
|
+
2/q^2*B[[+++, []]] + 2*q^2*B[[++-, []]] + 3/q^2*B[[+-+, []]]
|
|
515
|
+
|
|
516
|
+
sage: K = crystals.KirillovReshetikhin(['D',4,2], 3,1)
|
|
517
|
+
sage: A = MinusculeRepresentation(R, K)
|
|
518
|
+
sage: A
|
|
519
|
+
V(-Lambda[0] + Lambda[3])
|
|
520
|
+
sage: v = A.an_element(); v
|
|
521
|
+
2*B[[+++, []]] + 2*B[[++-, []]] + 3*B[[+-+, []]]
|
|
522
|
+
sage: v.f(0)
|
|
523
|
+
0
|
|
524
|
+
sage: v.e(0)
|
|
525
|
+
2*B[[-++, []]] + 2*B[[-+-, []]] + 3*B[[--+, []]]
|
|
526
|
+
|
|
527
|
+
REFERENCES:
|
|
528
|
+
|
|
529
|
+
- [OS2018]_
|
|
530
|
+
"""
|
|
531
|
+
def e_on_basis(self, i, b):
|
|
532
|
+
r"""
|
|
533
|
+
Return the action of `e_i` on the basis element indexed by ``b``.
|
|
534
|
+
|
|
535
|
+
INPUT:
|
|
536
|
+
|
|
537
|
+
- ``i`` -- an element of the index set
|
|
538
|
+
- ``b`` -- an element of basis keys
|
|
539
|
+
|
|
540
|
+
EXAMPLES::
|
|
541
|
+
|
|
542
|
+
sage: from sage.algebras.quantum_groups.representations import MinusculeRepresentation
|
|
543
|
+
sage: C = crystals.Tableaux(['A',3], shape=[1,1])
|
|
544
|
+
sage: R = ZZ['q'].fraction_field()
|
|
545
|
+
sage: V = MinusculeRepresentation(R, C)
|
|
546
|
+
sage: lw = C.lowest_weight_vectors()[0]
|
|
547
|
+
sage: V.e_on_basis(1, lw)
|
|
548
|
+
0
|
|
549
|
+
sage: V.e_on_basis(2, lw)
|
|
550
|
+
B[[[2], [4]]]
|
|
551
|
+
sage: V.e_on_basis(3, lw)
|
|
552
|
+
0
|
|
553
|
+
sage: hw = C.highest_weight_vectors()[0]
|
|
554
|
+
sage: all(V.e_on_basis(i, hw) == V.zero() for i in V.index_set())
|
|
555
|
+
True
|
|
556
|
+
"""
|
|
557
|
+
x = b.e(i)
|
|
558
|
+
if x is None:
|
|
559
|
+
return self.zero()
|
|
560
|
+
return self.monomial(x)
|
|
561
|
+
|
|
562
|
+
def f_on_basis(self, i, b):
|
|
563
|
+
r"""
|
|
564
|
+
Return the action of `f_i` on the basis element indexed by ``b``.
|
|
565
|
+
|
|
566
|
+
INPUT:
|
|
567
|
+
|
|
568
|
+
- ``i`` -- an element of the index set
|
|
569
|
+
- ``b`` -- an element of basis keys
|
|
570
|
+
|
|
571
|
+
EXAMPLES::
|
|
572
|
+
|
|
573
|
+
sage: from sage.algebras.quantum_groups.representations import MinusculeRepresentation
|
|
574
|
+
sage: C = crystals.Tableaux(['A',3], shape=[1,1])
|
|
575
|
+
sage: R = ZZ['q'].fraction_field()
|
|
576
|
+
sage: V = MinusculeRepresentation(R, C)
|
|
577
|
+
sage: hw = C.highest_weight_vectors()[0]
|
|
578
|
+
sage: V.f_on_basis(1, hw)
|
|
579
|
+
0
|
|
580
|
+
sage: V.f_on_basis(2, hw)
|
|
581
|
+
B[[[1], [3]]]
|
|
582
|
+
sage: V.f_on_basis(3, hw)
|
|
583
|
+
0
|
|
584
|
+
sage: lw = C.lowest_weight_vectors()[0]
|
|
585
|
+
sage: all(V.f_on_basis(i, lw) == V.zero() for i in V.index_set())
|
|
586
|
+
True
|
|
587
|
+
"""
|
|
588
|
+
x = b.f(i)
|
|
589
|
+
if x is None:
|
|
590
|
+
return self.zero()
|
|
591
|
+
return self.monomial(x)
|