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,436 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-combinat
|
|
2
|
+
# sage.doctest: needs sage.combinat sage.graphs sage.modules
|
|
3
|
+
r"""
|
|
4
|
+
Highest weight crystals
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
#*****************************************************************************
|
|
8
|
+
# Copyright (C) 2009 Anne Schilling <anne at math.ucdavis.edu>
|
|
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
|
+
# http://www.gnu.org/licenses/
|
|
20
|
+
#****************************************************************************
|
|
21
|
+
|
|
22
|
+
from sage.categories.classical_crystals import ClassicalCrystals
|
|
23
|
+
from sage.structure.parent import Parent
|
|
24
|
+
from sage.combinat.crystals.letters import CrystalOfLetters
|
|
25
|
+
from sage.combinat.crystals.tensor_product import TensorProductOfCrystals, \
|
|
26
|
+
TensorProductOfRegularCrystalsElement
|
|
27
|
+
|
|
28
|
+
from sage.combinat.crystals.tensor_product import CrystalOfTableaux
|
|
29
|
+
from sage.combinat.crystals.alcove_path import CrystalOfAlcovePaths
|
|
30
|
+
from sage.combinat.crystals.littelmann_path import CrystalOfLSPaths
|
|
31
|
+
from sage.combinat.crystals.generalized_young_walls import CrystalOfGeneralizedYoungWalls
|
|
32
|
+
from sage.combinat.crystals.monomial_crystals import CrystalOfNakajimaMonomials
|
|
33
|
+
from sage.combinat.rigged_configurations.rc_crystal import CrystalOfRiggedConfigurations
|
|
34
|
+
from sage.rings.integer_ring import ZZ
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def HighestWeightCrystal(dominant_weight, model=None):
|
|
38
|
+
r"""
|
|
39
|
+
Return the highest weight crystal of highest weight ``dominant_weight``
|
|
40
|
+
of the given ``model``.
|
|
41
|
+
|
|
42
|
+
INPUT:
|
|
43
|
+
|
|
44
|
+
- ``dominant_weight`` -- a dominant weight
|
|
45
|
+
- ``model`` -- (optional) if not specified, then we have the following
|
|
46
|
+
default models:
|
|
47
|
+
|
|
48
|
+
* types `A_n, B_n, C_n, D_n, G_2` - :class:`tableaux
|
|
49
|
+
<sage.combinat.crystals.tensor_product.CrystalOfTableaux>`
|
|
50
|
+
* types `E_{6,7}` - :class:`type E finite dimensional crystal
|
|
51
|
+
<FiniteDimensionalHighestWeightCrystal_TypeE>`
|
|
52
|
+
* all other types - :class:`LS paths
|
|
53
|
+
<sage.combinat.crystals.littelmann_path.CrystalOfLSPaths>`
|
|
54
|
+
|
|
55
|
+
otherwise can be one of the following:
|
|
56
|
+
|
|
57
|
+
* ``'Tableaux'`` - :class:`KN tableaux
|
|
58
|
+
<sage.combinat.crystals.tensor_product.CrystalOfTableaux>`
|
|
59
|
+
* ``'TypeE'`` - :class:`type E finite dimensional crystal
|
|
60
|
+
<FiniteDimensionalHighestWeightCrystal_TypeE>`
|
|
61
|
+
* ``'NakajimaMonomials'`` - :class:`Nakajima monomials
|
|
62
|
+
<sage.combinat.crystals.monomial_crystals.CrystalOfNakajimaMonomials>`
|
|
63
|
+
* ``'LSPaths'`` - :class:`LS paths
|
|
64
|
+
<sage.combinat.crystals.littelmann_path.CrystalOfLSPaths>`
|
|
65
|
+
* ``'AlcovePaths'`` - :class:`alcove paths
|
|
66
|
+
<sage.combinat.crystals.alcove_path.CrystalOfAlcovePaths>`
|
|
67
|
+
* ``'GeneralizedYoungWalls'`` - :class:`generalized Young walls
|
|
68
|
+
<sage.combinat.crystals.generalized_young_walls.CrystalOfGeneralizedYoungWalls>`
|
|
69
|
+
* ``'RiggedConfigurations'`` - :class:`rigged configurations
|
|
70
|
+
<sage.combinat.rigged_configurations.rc_crystal.CrystalOfRiggedConfigurations>`
|
|
71
|
+
|
|
72
|
+
EXAMPLES::
|
|
73
|
+
|
|
74
|
+
sage: La = RootSystem(['A',2]).weight_lattice().fundamental_weights()
|
|
75
|
+
sage: wt = La[1] + La[2]
|
|
76
|
+
sage: crystals.HighestWeight(wt)
|
|
77
|
+
The crystal of tableaux of type ['A', 2] and shape(s) [[2, 1]]
|
|
78
|
+
|
|
79
|
+
sage: La = RootSystem(['C',2]).weight_lattice().fundamental_weights()
|
|
80
|
+
sage: wt = 5*La[1] + La[2]
|
|
81
|
+
sage: crystals.HighestWeight(wt)
|
|
82
|
+
The crystal of tableaux of type ['C', 2] and shape(s) [[6, 1]]
|
|
83
|
+
|
|
84
|
+
sage: La = RootSystem(['B',2]).weight_lattice().fundamental_weights()
|
|
85
|
+
sage: wt = La[1] + La[2]
|
|
86
|
+
sage: crystals.HighestWeight(wt)
|
|
87
|
+
The crystal of tableaux of type ['B', 2] and shape(s) [[3/2, 1/2]]
|
|
88
|
+
|
|
89
|
+
Some type `E` examples::
|
|
90
|
+
|
|
91
|
+
sage: C = CartanType(['E',6])
|
|
92
|
+
sage: La = C.root_system().weight_lattice().fundamental_weights()
|
|
93
|
+
sage: T = crystals.HighestWeight(La[1])
|
|
94
|
+
sage: T.cardinality()
|
|
95
|
+
27
|
|
96
|
+
sage: T = crystals.HighestWeight(La[6])
|
|
97
|
+
sage: T.cardinality()
|
|
98
|
+
27
|
|
99
|
+
sage: T = crystals.HighestWeight(La[2])
|
|
100
|
+
sage: T.cardinality()
|
|
101
|
+
78
|
|
102
|
+
sage: T = crystals.HighestWeight(La[4])
|
|
103
|
+
sage: T.cardinality()
|
|
104
|
+
2925
|
|
105
|
+
sage: T = crystals.HighestWeight(La[3])
|
|
106
|
+
sage: T.cardinality()
|
|
107
|
+
351
|
|
108
|
+
sage: T = crystals.HighestWeight(La[5])
|
|
109
|
+
sage: T.cardinality()
|
|
110
|
+
351
|
|
111
|
+
|
|
112
|
+
sage: C = CartanType(['E',7])
|
|
113
|
+
sage: La = C.root_system().weight_lattice().fundamental_weights()
|
|
114
|
+
sage: T = crystals.HighestWeight(La[1])
|
|
115
|
+
sage: T.cardinality()
|
|
116
|
+
133
|
|
117
|
+
sage: T = crystals.HighestWeight(La[2])
|
|
118
|
+
sage: T.cardinality()
|
|
119
|
+
912
|
|
120
|
+
sage: T = crystals.HighestWeight(La[3])
|
|
121
|
+
sage: T.cardinality()
|
|
122
|
+
8645
|
|
123
|
+
sage: T = crystals.HighestWeight(La[4])
|
|
124
|
+
sage: T.cardinality()
|
|
125
|
+
365750
|
|
126
|
+
sage: T = crystals.HighestWeight(La[5])
|
|
127
|
+
sage: T.cardinality()
|
|
128
|
+
27664
|
|
129
|
+
sage: T = crystals.HighestWeight(La[6])
|
|
130
|
+
sage: T.cardinality()
|
|
131
|
+
1539
|
|
132
|
+
sage: T = crystals.HighestWeight(La[7])
|
|
133
|
+
sage: T.cardinality()
|
|
134
|
+
56
|
|
135
|
+
|
|
136
|
+
An example with an affine type::
|
|
137
|
+
|
|
138
|
+
sage: C = CartanType(['C',2,1])
|
|
139
|
+
sage: La = C.root_system().weight_lattice().fundamental_weights()
|
|
140
|
+
sage: T = crystals.HighestWeight(La[1])
|
|
141
|
+
sage: sorted(T.subcrystal(max_depth=3), key=str)
|
|
142
|
+
[(-Lambda[0] + 3*Lambda[1] - Lambda[2] - delta,),
|
|
143
|
+
(-Lambda[0] + Lambda[1] + Lambda[2] - delta,),
|
|
144
|
+
(-Lambda[1] + 2*Lambda[2] - delta,),
|
|
145
|
+
(2*Lambda[0] - Lambda[1],),
|
|
146
|
+
(Lambda[0] + Lambda[1] - Lambda[2],),
|
|
147
|
+
(Lambda[0] - Lambda[1] + Lambda[2],),
|
|
148
|
+
(Lambda[1],)]
|
|
149
|
+
|
|
150
|
+
Using the various models::
|
|
151
|
+
|
|
152
|
+
sage: La = RootSystem(['F',4]).weight_lattice().fundamental_weights()
|
|
153
|
+
sage: wt = La[1] + La[4]
|
|
154
|
+
sage: crystals.HighestWeight(wt)
|
|
155
|
+
The crystal of LS paths of type ['F', 4] and weight Lambda[1] + Lambda[4]
|
|
156
|
+
sage: crystals.HighestWeight(wt, model='NakajimaMonomials')
|
|
157
|
+
Highest weight crystal of modified Nakajima monomials of
|
|
158
|
+
Cartan type ['F', 4] and highest weight Lambda[1] + Lambda[4]
|
|
159
|
+
sage: crystals.HighestWeight(wt, model='AlcovePaths')
|
|
160
|
+
Highest weight crystal of alcove paths of type ['F', 4] and weight Lambda[1] + Lambda[4]
|
|
161
|
+
sage: crystals.HighestWeight(wt, model='RiggedConfigurations')
|
|
162
|
+
Crystal of rigged configurations of type ['F', 4] and weight Lambda[1] + Lambda[4]
|
|
163
|
+
sage: La = RootSystem(['A',3,1]).weight_lattice().fundamental_weights()
|
|
164
|
+
sage: wt = La[0] + La[2]
|
|
165
|
+
sage: crystals.HighestWeight(wt, model='GeneralizedYoungWalls')
|
|
166
|
+
Highest weight crystal of generalized Young walls of
|
|
167
|
+
Cartan type ['A', 3, 1] and highest weight Lambda[0] + Lambda[2]
|
|
168
|
+
|
|
169
|
+
TESTS:
|
|
170
|
+
|
|
171
|
+
Check that the correct crystal is constructed for the fundamental weights::
|
|
172
|
+
|
|
173
|
+
sage: for ct in CartanType.samples(finite=True, crystallographic=True): # long time
|
|
174
|
+
....: L = ct.root_system().weight_lattice()
|
|
175
|
+
....: La = L.fundamental_weights()
|
|
176
|
+
....: for model in ['Tableaux', 'NakajimaMonomials', 'AlcovePaths', 'RiggedConfigurations']:
|
|
177
|
+
....: if model == 'Tableaux' and ct.type() in ["E", "F"]:
|
|
178
|
+
....: continue
|
|
179
|
+
....: for wt in La:
|
|
180
|
+
....: C = crystals.HighestWeight(wt, model=model)
|
|
181
|
+
....: assert L.weyl_dimension(wt) == C.cardinality(), "wrong cardinality in %s, weight %s" % (ct, wt)
|
|
182
|
+
....: assert C.highest_weight_vector().weight() == wt, "wrong weight in %s, weight %s" % (ct, wt)
|
|
183
|
+
|
|
184
|
+
Same thing for weights constructed from the simple roots::
|
|
185
|
+
|
|
186
|
+
sage: for ct in CartanType.samples(finite=True, crystallographic=True):
|
|
187
|
+
....: L = ct.root_system().root_space()
|
|
188
|
+
....: La = L.fundamental_weights_from_simple_roots()
|
|
189
|
+
....: for model in ['Tableaux', 'NakajimaMonomials', 'AlcovePaths', 'RiggedConfigurations']:
|
|
190
|
+
....: if model == 'Tableaux' and ct.type() in ["E", "F"]:
|
|
191
|
+
....: continue
|
|
192
|
+
....: for wt in La:
|
|
193
|
+
....: C1 = crystals.HighestWeight(wt.to_ambient().to_weight_space(ZZ), model=model)
|
|
194
|
+
....: C2 = crystals.HighestWeight(wt, model=model)
|
|
195
|
+
....: assert C1 == C2
|
|
196
|
+
"""
|
|
197
|
+
cartan_type = dominant_weight.parent().cartan_type()
|
|
198
|
+
if model is None:
|
|
199
|
+
if cartan_type.is_finite():
|
|
200
|
+
if cartan_type.type() == 'E':
|
|
201
|
+
model = 'TypeE'
|
|
202
|
+
elif cartan_type.type() in ['A','B','C','D','G']:
|
|
203
|
+
model = 'Tableaux'
|
|
204
|
+
else:
|
|
205
|
+
model = 'LSPaths'
|
|
206
|
+
else:
|
|
207
|
+
model = 'LSPaths'
|
|
208
|
+
|
|
209
|
+
# Make sure dominant_weight in the weight space
|
|
210
|
+
if cartan_type.is_finite():
|
|
211
|
+
dominant_weight = dominant_weight.to_ambient().to_weight_space(ZZ)
|
|
212
|
+
|
|
213
|
+
if model == 'Tableaux':
|
|
214
|
+
# we rely on the specific choice of positive roots here
|
|
215
|
+
# except in type G_2, the fundamental weights are realized by
|
|
216
|
+
# vectors with weakly decreasing nonnegative integer (or in
|
|
217
|
+
# type B_n and D_n, half-integer) entries
|
|
218
|
+
sh = dominant_weight.to_ambient().to_vector()
|
|
219
|
+
if cartan_type.type() == "G":
|
|
220
|
+
sh = (-sh)[2:0:-1]
|
|
221
|
+
return CrystalOfTableaux(cartan_type, shape=sh)
|
|
222
|
+
|
|
223
|
+
if model == 'TypeE':
|
|
224
|
+
if not cartan_type.is_finite() or cartan_type.type() != 'E':
|
|
225
|
+
raise ValueError("only for finite type E")
|
|
226
|
+
if cartan_type.rank() == 6:
|
|
227
|
+
return FiniteDimensionalHighestWeightCrystal_TypeE6(dominant_weight)
|
|
228
|
+
elif cartan_type.rank() == 7:
|
|
229
|
+
return FiniteDimensionalHighestWeightCrystal_TypeE7(dominant_weight)
|
|
230
|
+
raise NotImplementedError
|
|
231
|
+
|
|
232
|
+
if model == 'NakajimaMonomials':
|
|
233
|
+
return CrystalOfNakajimaMonomials(cartan_type, dominant_weight)
|
|
234
|
+
|
|
235
|
+
if model == 'LSPaths':
|
|
236
|
+
# Make sure it's in the (extended) weight space
|
|
237
|
+
if cartan_type.is_affine():
|
|
238
|
+
P = dominant_weight.parent().root_system.weight_space(extended=True)
|
|
239
|
+
else:
|
|
240
|
+
P = dominant_weight.parent().root_system.weight_space()
|
|
241
|
+
wt = P.sum_of_terms((i, c) for i,c in dominant_weight)
|
|
242
|
+
return CrystalOfLSPaths(wt)
|
|
243
|
+
|
|
244
|
+
if model == 'AlcovePaths':
|
|
245
|
+
return CrystalOfAlcovePaths(dominant_weight, highest_weight_crystal=True)
|
|
246
|
+
|
|
247
|
+
if model == 'GeneralizedYoungWalls':
|
|
248
|
+
if not cartan_type.is_affine():
|
|
249
|
+
raise ValueError("only for affine types")
|
|
250
|
+
if cartan_type.type() != 'A':
|
|
251
|
+
raise NotImplementedError("only for affine type A")
|
|
252
|
+
# Make sure it's in the weight lattice
|
|
253
|
+
P = dominant_weight.parent().root_system.weight_lattice(extended=True)
|
|
254
|
+
wt = P.sum_of_terms((i, c) for i,c in dominant_weight)
|
|
255
|
+
return CrystalOfGeneralizedYoungWalls(cartan_type.rank()-1, wt)
|
|
256
|
+
|
|
257
|
+
if model == 'RiggedConfigurations':
|
|
258
|
+
return CrystalOfRiggedConfigurations(cartan_type, dominant_weight)
|
|
259
|
+
|
|
260
|
+
raise ValueError("invalid model")
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
class FiniteDimensionalHighestWeightCrystal_TypeE(TensorProductOfCrystals):
|
|
264
|
+
"""
|
|
265
|
+
Commonalities for all finite dimensional type `E` highest weight crystals.
|
|
266
|
+
|
|
267
|
+
Subclasses should setup an attribute column_crystal in their
|
|
268
|
+
``__init__`` method before calling the ``__init__`` method of this class.
|
|
269
|
+
"""
|
|
270
|
+
|
|
271
|
+
def __init__(self, dominant_weight):
|
|
272
|
+
"""
|
|
273
|
+
EXAMPLES::
|
|
274
|
+
|
|
275
|
+
sage: C = CartanType(['E',6])
|
|
276
|
+
sage: La = C.root_system().weight_lattice().fundamental_weights()
|
|
277
|
+
sage: T = crystals.HighestWeight(2*La[2])
|
|
278
|
+
sage: T.cartan_type()
|
|
279
|
+
['E', 6]
|
|
280
|
+
sage: T.module_generators
|
|
281
|
+
[[[(2, -1), (1,)], [(2, -1), (1,)]]]
|
|
282
|
+
sage: T.cardinality()
|
|
283
|
+
2430
|
|
284
|
+
sage: T = crystals.HighestWeight(La[2])
|
|
285
|
+
sage: T.cardinality()
|
|
286
|
+
78
|
|
287
|
+
"""
|
|
288
|
+
self._cartan_type = dominant_weight.parent().cartan_type()
|
|
289
|
+
self._highest_weight = dominant_weight
|
|
290
|
+
assert dominant_weight.is_dominant()
|
|
291
|
+
self.rename()
|
|
292
|
+
Parent.__init__(self, category=ClassicalCrystals())
|
|
293
|
+
self.module_generators = [self.module_generator()]
|
|
294
|
+
|
|
295
|
+
def _repr_(self):
|
|
296
|
+
"""
|
|
297
|
+
Return a string representation of ``self``.
|
|
298
|
+
|
|
299
|
+
EXAMPLES::
|
|
300
|
+
|
|
301
|
+
sage: C = CartanType(['E',6])
|
|
302
|
+
sage: La = C.root_system().weight_lattice().fundamental_weights()
|
|
303
|
+
sage: crystals.HighestWeight(2*La[2])
|
|
304
|
+
Finite dimensional highest weight crystal of type ['E', 6] and highest weight 2*Lambda[2]
|
|
305
|
+
"""
|
|
306
|
+
return "Finite dimensional highest weight crystal of type {} and highest weight {}".format(
|
|
307
|
+
self._cartan_type, self._highest_weight)
|
|
308
|
+
|
|
309
|
+
Element = TensorProductOfRegularCrystalsElement
|
|
310
|
+
|
|
311
|
+
def module_generator(self):
|
|
312
|
+
"""
|
|
313
|
+
Yield the module generator (or highest weight element) of the classical
|
|
314
|
+
crystal of given dominant weight in ``self``.
|
|
315
|
+
|
|
316
|
+
EXAMPLES::
|
|
317
|
+
|
|
318
|
+
sage: C=CartanType(['E',6])
|
|
319
|
+
sage: La=C.root_system().weight_lattice().fundamental_weights()
|
|
320
|
+
sage: T = crystals.HighestWeight(La[2])
|
|
321
|
+
sage: T.module_generator()
|
|
322
|
+
[[(2, -1), (1,)]]
|
|
323
|
+
sage: T = crystals.HighestWeight(0*La[2])
|
|
324
|
+
sage: T.module_generator()
|
|
325
|
+
[]
|
|
326
|
+
|
|
327
|
+
sage: C=CartanType(['E',7])
|
|
328
|
+
sage: La=C.root_system().weight_lattice().fundamental_weights()
|
|
329
|
+
sage: T = crystals.HighestWeight(La[1])
|
|
330
|
+
sage: T.module_generator()
|
|
331
|
+
[[(-7, 1), (7,)]]
|
|
332
|
+
"""
|
|
333
|
+
dominant_weight = self._highest_weight
|
|
334
|
+
tensor = sum(( [self.column_crystal[i]]*dominant_weight.coefficient(i) for i in dominant_weight.support()), [])
|
|
335
|
+
return self._element_constructor_(*[B.module_generators[0] for B in tensor])
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
class FiniteDimensionalHighestWeightCrystal_TypeE6(FiniteDimensionalHighestWeightCrystal_TypeE):
|
|
339
|
+
r"""
|
|
340
|
+
Class of finite dimensional highest weight crystals of type `E_6`.
|
|
341
|
+
|
|
342
|
+
EXAMPLES::
|
|
343
|
+
|
|
344
|
+
sage: C=CartanType(['E',6])
|
|
345
|
+
sage: La=C.root_system().weight_lattice().fundamental_weights()
|
|
346
|
+
sage: T = crystals.HighestWeight(La[2]); T
|
|
347
|
+
Finite dimensional highest weight crystal of type ['E', 6] and highest weight Lambda[2]
|
|
348
|
+
sage: B1 = T.column_crystal[1]; B1
|
|
349
|
+
The crystal of letters for type ['E', 6]
|
|
350
|
+
sage: B6 = T.column_crystal[6]; B6
|
|
351
|
+
The crystal of letters for type ['E', 6] (dual)
|
|
352
|
+
sage: t = T(B6([-1]),B1([-1,3])); t
|
|
353
|
+
[(-1,), (-1, 3)]
|
|
354
|
+
sage: [t.epsilon(i) for i in T.index_set()]
|
|
355
|
+
[2, 0, 0, 0, 0, 0]
|
|
356
|
+
sage: [t.phi(i) for i in T.index_set()]
|
|
357
|
+
[0, 0, 1, 0, 0, 0]
|
|
358
|
+
sage: TestSuite(t).run()
|
|
359
|
+
"""
|
|
360
|
+
|
|
361
|
+
def __init__(self, dominant_weight):
|
|
362
|
+
"""
|
|
363
|
+
EXAMPLES::
|
|
364
|
+
|
|
365
|
+
sage: C=CartanType(['E',6])
|
|
366
|
+
sage: La=C.root_system().weight_lattice().fundamental_weights()
|
|
367
|
+
sage: p2=2*La[2]
|
|
368
|
+
sage: p1=La[2]
|
|
369
|
+
sage: p0=0*La[2]
|
|
370
|
+
sage: T = crystals.HighestWeight(0*La[2])
|
|
371
|
+
sage: T.cardinality()
|
|
372
|
+
1
|
|
373
|
+
sage: T = crystals.HighestWeight(La[2])
|
|
374
|
+
sage: T.cardinality()
|
|
375
|
+
78
|
|
376
|
+
sage: T = crystals.HighestWeight(2*La[2])
|
|
377
|
+
sage: T.cardinality()
|
|
378
|
+
2430
|
|
379
|
+
"""
|
|
380
|
+
B1 = CrystalOfLetters(['E',6])
|
|
381
|
+
B6 = CrystalOfLetters(['E',6], dual=True)
|
|
382
|
+
self.column_crystal = {1 : B1, 6 : B6,
|
|
383
|
+
4 : TensorProductOfCrystals(B1,B1,B1,generators=[[B1([-3,4]),B1([-1,3]),B1([1])]]),
|
|
384
|
+
3 : TensorProductOfCrystals(B1,B1,generators=[[B1([-1,3]),B1([1])]]),
|
|
385
|
+
5 : TensorProductOfCrystals(B6,B6,generators=[[B6([5,-6]),B6([6])]]),
|
|
386
|
+
2 : TensorProductOfCrystals(B6,B1,generators=[[B6([2,-1]),B1([1])]])}
|
|
387
|
+
FiniteDimensionalHighestWeightCrystal_TypeE.__init__(self, dominant_weight)
|
|
388
|
+
|
|
389
|
+
|
|
390
|
+
class FiniteDimensionalHighestWeightCrystal_TypeE7(FiniteDimensionalHighestWeightCrystal_TypeE):
|
|
391
|
+
r"""
|
|
392
|
+
Class of finite dimensional highest weight crystals of type `E_7`.
|
|
393
|
+
|
|
394
|
+
EXAMPLES::
|
|
395
|
+
|
|
396
|
+
sage: C=CartanType(['E',7])
|
|
397
|
+
sage: La=C.root_system().weight_lattice().fundamental_weights()
|
|
398
|
+
sage: T = crystals.HighestWeight(La[1])
|
|
399
|
+
sage: T.cardinality()
|
|
400
|
+
133
|
|
401
|
+
sage: B7 = T.column_crystal[7]; B7
|
|
402
|
+
The crystal of letters for type ['E', 7]
|
|
403
|
+
sage: t = T(B7([-5, 6]), B7([-2, 3])); t
|
|
404
|
+
[(-5, 6), (-2, 3)]
|
|
405
|
+
sage: [t.epsilon(i) for i in T.index_set()]
|
|
406
|
+
[0, 1, 0, 0, 1, 0, 0]
|
|
407
|
+
sage: [t.phi(i) for i in T.index_set()]
|
|
408
|
+
[0, 0, 1, 0, 0, 1, 0]
|
|
409
|
+
sage: TestSuite(t).run()
|
|
410
|
+
"""
|
|
411
|
+
|
|
412
|
+
def __init__(self, dominant_weight):
|
|
413
|
+
"""
|
|
414
|
+
EXAMPLES::
|
|
415
|
+
|
|
416
|
+
sage: C=CartanType(['E',7])
|
|
417
|
+
sage: La=C.root_system().weight_lattice().fundamental_weights()
|
|
418
|
+
sage: T = crystals.HighestWeight(0*La[1])
|
|
419
|
+
sage: T.cardinality()
|
|
420
|
+
1
|
|
421
|
+
sage: T = crystals.HighestWeight(La[1])
|
|
422
|
+
sage: T.cardinality()
|
|
423
|
+
133
|
|
424
|
+
sage: T = crystals.HighestWeight(2*La[1])
|
|
425
|
+
sage: T.cardinality()
|
|
426
|
+
7371
|
|
427
|
+
"""
|
|
428
|
+
B = CrystalOfLetters(['E',7])
|
|
429
|
+
self.column_crystal = {7 : B,
|
|
430
|
+
1 : TensorProductOfCrystals(B,B,generators=[[B([-7,1]),B([7])]]),
|
|
431
|
+
2 : TensorProductOfCrystals(B,B,B,generators=[[B([-1,2]),B([-7,1]),B([7])]]),
|
|
432
|
+
3 : TensorProductOfCrystals(B,B,B,B,generators=[[B([-2,3]),B([-1,2]),B([-7,1]),B([7])]]),
|
|
433
|
+
4 : TensorProductOfCrystals(B,B,B,B,generators=[[B([-5,4]),B([-6,5]),B([-7,6]),B([7])]]),
|
|
434
|
+
5 : TensorProductOfCrystals(B,B,B,generators=[[B([-6,5]),B([-7,6]),B([7])]]),
|
|
435
|
+
6 : TensorProductOfCrystals(B,B,generators=[[B([-7,6]),B([7])]])}
|
|
436
|
+
FiniteDimensionalHighestWeightCrystal_TypeE.__init__(self, dominant_weight)
|