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,464 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-combinat
|
|
2
|
+
# sage.doctest: needs sage.combinat sage.graphs sage.modules
|
|
3
|
+
r"""
|
|
4
|
+
Subcrystals
|
|
5
|
+
|
|
6
|
+
These are the crystals that are subsets of a larger ambient crystal.
|
|
7
|
+
|
|
8
|
+
AUTHORS:
|
|
9
|
+
|
|
10
|
+
- Travis Scrimshaw (2013-10-16): Initial implementation
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
#*****************************************************************************
|
|
14
|
+
# Copyright (C) 2013 Travis Scrimshaw <tscrim at ucdavis.edu>
|
|
15
|
+
#
|
|
16
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
17
|
+
#
|
|
18
|
+
# This code is distributed in the hope that it will be useful,
|
|
19
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
20
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
21
|
+
# General Public License for more details.
|
|
22
|
+
#
|
|
23
|
+
# The full text of the GPL is available at:
|
|
24
|
+
#
|
|
25
|
+
# http://www.gnu.org/licenses/
|
|
26
|
+
#****************************************************************************
|
|
27
|
+
|
|
28
|
+
import collections.abc
|
|
29
|
+
|
|
30
|
+
from sage.misc.lazy_attribute import lazy_attribute
|
|
31
|
+
from sage.structure.unique_representation import UniqueRepresentation
|
|
32
|
+
from sage.structure.parent import Parent
|
|
33
|
+
from sage.structure.element_wrapper import ElementWrapper
|
|
34
|
+
from sage.categories.crystals import Crystals
|
|
35
|
+
from sage.categories.finite_crystals import FiniteCrystals
|
|
36
|
+
from sage.categories.supercrystals import SuperCrystals
|
|
37
|
+
from sage.combinat.root_system.cartan_type import CartanType
|
|
38
|
+
from sage.rings.integer import Integer
|
|
39
|
+
from sage.rings.infinity import infinity
|
|
40
|
+
from sage.structure.richcmp import richcmp
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class Subcrystal(UniqueRepresentation, Parent):
|
|
44
|
+
r"""
|
|
45
|
+
A subcrystal `X` of an ambient crystal `Y` is a crystal formed by taking a
|
|
46
|
+
subset of `Y` and whose crystal structure is induced by `Y`.
|
|
47
|
+
|
|
48
|
+
INPUT:
|
|
49
|
+
|
|
50
|
+
- ``ambient`` -- the ambient crystal
|
|
51
|
+
- ``contained`` -- (optional) a set (or function) which specifies when an
|
|
52
|
+
element is contained in the subcrystal; the default is everything
|
|
53
|
+
possible is included
|
|
54
|
+
- ``generators`` -- (optional) the generators for the subcrystal; the
|
|
55
|
+
default is the generators for the ambient crystal
|
|
56
|
+
- ``virtualization``, ``scaling_factors`` -- (optional)
|
|
57
|
+
dictionaries whose key `i` corresponds to the sets `\sigma_i`
|
|
58
|
+
and `\gamma_i` respectively used to define virtual crystals; see
|
|
59
|
+
:class:`~sage.combinat.crystals.virtual_crystal.VirtualCrystal`
|
|
60
|
+
- ``cartan_type`` -- (optional) the Cartan type for the subcrystal; the
|
|
61
|
+
default is the Cartan type for the ambient crystal
|
|
62
|
+
- ``index_set`` -- (optional) the index set for the subcrystal; the
|
|
63
|
+
default is the index set for the Cartan type
|
|
64
|
+
- ``category`` -- (optional) the category for the subcrystal; the
|
|
65
|
+
default is the :class:`~sage.categories.crystals.Crystals` category
|
|
66
|
+
|
|
67
|
+
.. SEEALSO::
|
|
68
|
+
|
|
69
|
+
:meth:`~sage.categories.crystals.Crystals.ParentMethods.subcrystal`
|
|
70
|
+
|
|
71
|
+
EXAMPLES:
|
|
72
|
+
|
|
73
|
+
We build out a subcrystal starting from an element and only going
|
|
74
|
+
to the lowest weight::
|
|
75
|
+
|
|
76
|
+
sage: B = crystals.Tableaux(['A',3], shape=[2,1])
|
|
77
|
+
sage: S = B.subcrystal(generators=[B(3,1,2)], direction='lower')
|
|
78
|
+
sage: S.cardinality()
|
|
79
|
+
11
|
|
80
|
+
|
|
81
|
+
Here we build out in both directions starting from an element, but we
|
|
82
|
+
also have restricted ourselves to type `A_2`::
|
|
83
|
+
|
|
84
|
+
sage: T = B.subcrystal(index_set=[1,2], generators=[B(3,1,1)])
|
|
85
|
+
sage: T.cardinality()
|
|
86
|
+
8
|
|
87
|
+
sage: list(T)
|
|
88
|
+
[[[1, 1], [3]],
|
|
89
|
+
[[1, 2], [3]],
|
|
90
|
+
[[1, 1], [2]],
|
|
91
|
+
[[2, 2], [3]],
|
|
92
|
+
[[1, 2], [2]],
|
|
93
|
+
[[2, 3], [3]],
|
|
94
|
+
[[1, 3], [2]],
|
|
95
|
+
[[1, 3], [3]]]
|
|
96
|
+
|
|
97
|
+
Now we take the crystal corresponding to the intersection of
|
|
98
|
+
the previous two subcrystals::
|
|
99
|
+
|
|
100
|
+
sage: U = B.subcrystal(contained=lambda x: x in S and x in T, generators=B)
|
|
101
|
+
sage: list(U)
|
|
102
|
+
[[[2, 3], [3]], [[1, 2], [3]], [[2, 2], [3]]]
|
|
103
|
+
|
|
104
|
+
.. TODO::
|
|
105
|
+
|
|
106
|
+
Include support for subcrystals which only contains certain arrows.
|
|
107
|
+
|
|
108
|
+
TESTS:
|
|
109
|
+
|
|
110
|
+
Check that the subcrystal respects being in the category
|
|
111
|
+
of supercrystals (:issue:`27368`)::
|
|
112
|
+
|
|
113
|
+
sage: T = crystals.Tableaux(['A',[1,1]], [2,1])
|
|
114
|
+
sage: S = T.subcrystal(max_depth=3)
|
|
115
|
+
sage: S.category()
|
|
116
|
+
Category of finite super crystals
|
|
117
|
+
"""
|
|
118
|
+
@staticmethod
|
|
119
|
+
def __classcall_private__(cls, ambient, contained=None, generators=None,
|
|
120
|
+
virtualization=None, scaling_factors=None,
|
|
121
|
+
cartan_type=None, index_set=None, category=None):
|
|
122
|
+
"""
|
|
123
|
+
Normalize arguments to ensure a (relatively) unique representation.
|
|
124
|
+
|
|
125
|
+
EXAMPLES::
|
|
126
|
+
|
|
127
|
+
sage: B = crystals.Tableaux(['A',4], shape=[2,1])
|
|
128
|
+
sage: S1 = B.subcrystal(generators=(B(2,1,1), B(5,2,4)), index_set=[1,2])
|
|
129
|
+
sage: S2 = B.subcrystal(generators=[B(2,1,1), B(5,2,4)], cartan_type=['A',4], index_set=(1,2))
|
|
130
|
+
sage: S1 is S2
|
|
131
|
+
True
|
|
132
|
+
"""
|
|
133
|
+
if isinstance(contained, (collections.abc.Sequence, collections.abc.Set)):
|
|
134
|
+
contained = frozenset(contained)
|
|
135
|
+
#elif contained in Sets():
|
|
136
|
+
|
|
137
|
+
if cartan_type is None:
|
|
138
|
+
cartan_type = ambient.cartan_type()
|
|
139
|
+
else:
|
|
140
|
+
cartan_type = CartanType(cartan_type)
|
|
141
|
+
if index_set is None:
|
|
142
|
+
index_set = cartan_type.index_set
|
|
143
|
+
if generators is None:
|
|
144
|
+
generators = ambient.module_generators
|
|
145
|
+
|
|
146
|
+
category = Crystals().or_subcategory(category)
|
|
147
|
+
if ambient in SuperCrystals():
|
|
148
|
+
category = category & SuperCrystals()
|
|
149
|
+
if ambient in FiniteCrystals() or isinstance(contained, frozenset):
|
|
150
|
+
category = category.Finite()
|
|
151
|
+
|
|
152
|
+
if virtualization is not None:
|
|
153
|
+
if scaling_factors is None:
|
|
154
|
+
scaling_factors = {i:1 for i in index_set}
|
|
155
|
+
from sage.combinat.crystals.virtual_crystal import VirtualCrystal
|
|
156
|
+
return VirtualCrystal(ambient, virtualization, scaling_factors, contained,
|
|
157
|
+
generators, cartan_type, index_set, category)
|
|
158
|
+
if scaling_factors is not None:
|
|
159
|
+
# virtualization must be None
|
|
160
|
+
virtualization = {i:(i,) for i in index_set}
|
|
161
|
+
from sage.combinat.crystals.virtual_crystal import VirtualCrystal
|
|
162
|
+
return VirtualCrystal(ambient, virtualization, scaling_factors, contained,
|
|
163
|
+
generators, cartan_type, index_set, category)
|
|
164
|
+
|
|
165
|
+
# We need to give these as optional arguments so it unpickles correctly
|
|
166
|
+
return super().__classcall__(cls, ambient, contained,
|
|
167
|
+
tuple(generators),
|
|
168
|
+
cartan_type=cartan_type,
|
|
169
|
+
index_set=tuple(index_set),
|
|
170
|
+
category=category)
|
|
171
|
+
|
|
172
|
+
def __init__(self, ambient, contained, generators, cartan_type, index_set, category):
|
|
173
|
+
"""
|
|
174
|
+
Initialize ``self``.
|
|
175
|
+
|
|
176
|
+
EXAMPLES::
|
|
177
|
+
|
|
178
|
+
sage: B = crystals.Tableaux(['A',4], shape=[2,1])
|
|
179
|
+
sage: S = B.subcrystal(generators=(B(2,1,1), B(5,2,4)), index_set=[1,2])
|
|
180
|
+
sage: TestSuite(S).run()
|
|
181
|
+
"""
|
|
182
|
+
self._ambient = ambient
|
|
183
|
+
self._contained = contained
|
|
184
|
+
self._cardinality = None # ``None`` means currently unknown
|
|
185
|
+
self._cartan_type = cartan_type
|
|
186
|
+
self._index_set = tuple(index_set)
|
|
187
|
+
Parent.__init__(self, category=category)
|
|
188
|
+
self.module_generators = tuple(self.element_class(self, g) for g in generators
|
|
189
|
+
if self._containing(g))
|
|
190
|
+
|
|
191
|
+
if isinstance(contained, frozenset):
|
|
192
|
+
self._cardinality = Integer(len(contained))
|
|
193
|
+
self._list = [self.element_class(self, x) for x in contained]
|
|
194
|
+
|
|
195
|
+
def _repr_(self):
|
|
196
|
+
"""
|
|
197
|
+
Return a string representation of ``self``.
|
|
198
|
+
|
|
199
|
+
EXAMPLES::
|
|
200
|
+
|
|
201
|
+
sage: B = crystals.Tableaux(['A',4], shape=[2,1])
|
|
202
|
+
sage: B.subcrystal(generators=(B(2,1,1), B(5,2,4)), index_set=[1,2])
|
|
203
|
+
Subcrystal of The crystal of tableaux of type ['A', 4] and shape(s) [[2, 1]]
|
|
204
|
+
"""
|
|
205
|
+
return "Subcrystal of {}".format(self._ambient)
|
|
206
|
+
|
|
207
|
+
@lazy_attribute
|
|
208
|
+
def _containing(self):
|
|
209
|
+
"""
|
|
210
|
+
Check if ``x`` is contained in ``self``.
|
|
211
|
+
|
|
212
|
+
EXAMPLES::
|
|
213
|
+
|
|
214
|
+
sage: B = crystals.Tableaux(['A',4], shape=[2,1])
|
|
215
|
+
sage: S = B.subcrystal(generators=(B(2,1,1), B(5,2,4)), index_set=[1,2])
|
|
216
|
+
sage: S._containing(B(5,2,4))
|
|
217
|
+
True
|
|
218
|
+
sage: S._containing(B(4,2,4))
|
|
219
|
+
True
|
|
220
|
+
"""
|
|
221
|
+
if self._contained is None:
|
|
222
|
+
return lambda x: True
|
|
223
|
+
if isinstance(self._contained, frozenset):
|
|
224
|
+
return self._contained.__contains__
|
|
225
|
+
return self._contained # Otherwise it should be a function
|
|
226
|
+
|
|
227
|
+
def __contains__(self, x):
|
|
228
|
+
"""
|
|
229
|
+
Check if ``x`` is in ``self``.
|
|
230
|
+
|
|
231
|
+
EXAMPLES::
|
|
232
|
+
|
|
233
|
+
sage: B = crystals.Tableaux(['A',4], shape=[2,1])
|
|
234
|
+
sage: S = B.subcrystal(generators=(B(2,1,1), B(5,2,4)), index_set=[1,2])
|
|
235
|
+
sage: B(5,2,4) in S
|
|
236
|
+
True
|
|
237
|
+
sage: mg = B.module_generators[0]
|
|
238
|
+
sage: mg in S
|
|
239
|
+
True
|
|
240
|
+
sage: mg.f(2).f(3) in S
|
|
241
|
+
False
|
|
242
|
+
"""
|
|
243
|
+
if isinstance(x, Subcrystal.Element) and x.parent() == self:
|
|
244
|
+
return True
|
|
245
|
+
|
|
246
|
+
if x in self._ambient:
|
|
247
|
+
if not self._containing(x):
|
|
248
|
+
return False
|
|
249
|
+
x = self.element_class(self, x)
|
|
250
|
+
|
|
251
|
+
if self in FiniteCrystals():
|
|
252
|
+
return x in self.list()
|
|
253
|
+
|
|
254
|
+
# TODO: make this work for infinite crystals
|
|
255
|
+
import warnings
|
|
256
|
+
warnings.warn("Testing containment in an infinite crystal"
|
|
257
|
+
" defaults to returning True")
|
|
258
|
+
return True
|
|
259
|
+
|
|
260
|
+
def cardinality(self):
|
|
261
|
+
"""
|
|
262
|
+
Return the cardinality of ``self``.
|
|
263
|
+
|
|
264
|
+
EXAMPLES::
|
|
265
|
+
|
|
266
|
+
sage: B = crystals.Tableaux(['A',4], shape=[2,1])
|
|
267
|
+
sage: S = B.subcrystal(generators=[B(2,1,1)], index_set=[1,2])
|
|
268
|
+
sage: S.cardinality()
|
|
269
|
+
8
|
|
270
|
+
sage: B = crystals.infinity.Tableaux(['A',2])
|
|
271
|
+
sage: S = B.subcrystal(max_depth=4)
|
|
272
|
+
sage: S.cardinality()
|
|
273
|
+
22
|
|
274
|
+
|
|
275
|
+
TESTS:
|
|
276
|
+
|
|
277
|
+
Check that :issue:`19481` is fixed::
|
|
278
|
+
|
|
279
|
+
sage: from sage.combinat.crystals.virtual_crystal import VirtualCrystal
|
|
280
|
+
sage: A = crystals.infinity.Tableaux(['A',3])
|
|
281
|
+
sage: V = VirtualCrystal(A, {1:(1,3), 2:(2,)}, {1:1, 2:2}, cartan_type=['C',2])
|
|
282
|
+
sage: V.cardinality()
|
|
283
|
+
Traceback (most recent call last):
|
|
284
|
+
...
|
|
285
|
+
NotImplementedError: unknown cardinality
|
|
286
|
+
"""
|
|
287
|
+
if self._cardinality is not None:
|
|
288
|
+
return self._cardinality
|
|
289
|
+
|
|
290
|
+
try:
|
|
291
|
+
card = Integer(len(self._list))
|
|
292
|
+
self._cardinality = card
|
|
293
|
+
return self._cardinality
|
|
294
|
+
except AttributeError:
|
|
295
|
+
if self in FiniteCrystals():
|
|
296
|
+
return Integer(len(self.list()))
|
|
297
|
+
try:
|
|
298
|
+
card = super().cardinality()
|
|
299
|
+
except AttributeError:
|
|
300
|
+
raise NotImplementedError("unknown cardinality")
|
|
301
|
+
if card == infinity:
|
|
302
|
+
self._cardinality = card
|
|
303
|
+
return card
|
|
304
|
+
self._cardinality = Integer(len(self.list()))
|
|
305
|
+
return self._cardinality
|
|
306
|
+
|
|
307
|
+
def index_set(self):
|
|
308
|
+
"""
|
|
309
|
+
Return the index set of ``self``.
|
|
310
|
+
|
|
311
|
+
EXAMPLES::
|
|
312
|
+
|
|
313
|
+
sage: B = crystals.Tableaux(['A',4], shape=[2,1])
|
|
314
|
+
sage: S = B.subcrystal(generators=(B(2,1,1), B(5,2,4)), index_set=[1,2])
|
|
315
|
+
sage: S.index_set()
|
|
316
|
+
(1, 2)
|
|
317
|
+
"""
|
|
318
|
+
return self._index_set
|
|
319
|
+
|
|
320
|
+
class Element(ElementWrapper):
|
|
321
|
+
"""
|
|
322
|
+
An element of a subcrystal. Wraps an element in the ambient crystal.
|
|
323
|
+
"""
|
|
324
|
+
|
|
325
|
+
def _richcmp_(self, other, op):
|
|
326
|
+
"""
|
|
327
|
+
EXAMPLES:
|
|
328
|
+
|
|
329
|
+
For == operator::
|
|
330
|
+
|
|
331
|
+
sage: A = crystals.KirillovReshetikhin(['C',2,1], 1,2).affinization()
|
|
332
|
+
sage: S = A.subcrystal(max_depth=2)
|
|
333
|
+
sage: sorted(S)
|
|
334
|
+
[[[1, 1]](-1),
|
|
335
|
+
[[1, 2]](-1),
|
|
336
|
+
[](0),
|
|
337
|
+
[[1, 1]](0),
|
|
338
|
+
[[1, 2]](0),
|
|
339
|
+
[[1, -2]](0),
|
|
340
|
+
[[2, 2]](0),
|
|
341
|
+
[](1),
|
|
342
|
+
[[2, -1]](1),
|
|
343
|
+
[[-2, -1]](1),
|
|
344
|
+
[[-1, -1]](1),
|
|
345
|
+
[[-1, -1]](2)]
|
|
346
|
+
|
|
347
|
+
For != operator::
|
|
348
|
+
|
|
349
|
+
sage: ([(i,j) for i in range(len(S)) for j in range(len(S)) if S[i]!=S[j]]
|
|
350
|
+
....: == [(i,j) for i in range(len(S)) for j in range(len(S)) if
|
|
351
|
+
....: S[i].value!=S[j].value])
|
|
352
|
+
True
|
|
353
|
+
|
|
354
|
+
For < operator::
|
|
355
|
+
|
|
356
|
+
sage: ([(i,j) for i in range(len(S)) for j in range(len(S)) if S[i]<S[j]]
|
|
357
|
+
....: == [(i,j) for i in range(len(S)) for j in range(len(S)) if
|
|
358
|
+
....: S[i].value<S[j].value])
|
|
359
|
+
True
|
|
360
|
+
|
|
361
|
+
For <= operator::
|
|
362
|
+
|
|
363
|
+
sage: ([(i,j) for i in range(len(S)) for j in range(len(S)) if S[i]<=S[j]]
|
|
364
|
+
....: == [(i,j) for i in range(len(S)) for j in range(len(S)) if
|
|
365
|
+
....: S[i].value<=S[j].value])
|
|
366
|
+
True
|
|
367
|
+
|
|
368
|
+
For > operator::
|
|
369
|
+
|
|
370
|
+
sage: ([(i,j) for i in range(len(S)) for j in range(len(S)) if S[i]>S[j]]
|
|
371
|
+
....: == [(i,j) for i in range(len(S)) for j in range(len(S)) if
|
|
372
|
+
....: S[i].value>S[j].value])
|
|
373
|
+
True
|
|
374
|
+
|
|
375
|
+
For >= operator::
|
|
376
|
+
|
|
377
|
+
sage: ([(i,j) for i in range(len(S)) for j in range(len(S)) if S[i]>=S[j]]
|
|
378
|
+
....: == [(i,j) for i in range(len(S)) for j in range(len(S)) if
|
|
379
|
+
....: S[i].value>=S[j].value])
|
|
380
|
+
True
|
|
381
|
+
"""
|
|
382
|
+
return richcmp(self.value, other.value, op)
|
|
383
|
+
|
|
384
|
+
def e(self, i):
|
|
385
|
+
"""
|
|
386
|
+
Return `e_i` of ``self``.
|
|
387
|
+
|
|
388
|
+
EXAMPLES::
|
|
389
|
+
|
|
390
|
+
sage: B = crystals.Tableaux(['A',4], shape=[2,1])
|
|
391
|
+
sage: S = B.subcrystal(generators=(B(2,1,1), B(5,2,4)), index_set=[1,2])
|
|
392
|
+
sage: mg = S.module_generators[1]
|
|
393
|
+
sage: mg.e(2)
|
|
394
|
+
sage: mg.e(1)
|
|
395
|
+
[[1, 4], [5]]
|
|
396
|
+
"""
|
|
397
|
+
ret = self.value.e(i)
|
|
398
|
+
if ret is None or not self.parent()._containing(ret):
|
|
399
|
+
return None
|
|
400
|
+
return self.__class__(self.parent(), ret)
|
|
401
|
+
|
|
402
|
+
def f(self, i):
|
|
403
|
+
"""
|
|
404
|
+
Return `f_i` of ``self``.
|
|
405
|
+
|
|
406
|
+
EXAMPLES::
|
|
407
|
+
|
|
408
|
+
sage: B = crystals.Tableaux(['A',4], shape=[2,1])
|
|
409
|
+
sage: S = B.subcrystal(generators=(B(2,1,1), B(5,2,4)), index_set=[1,2])
|
|
410
|
+
sage: mg = S.module_generators[1]
|
|
411
|
+
sage: mg.f(1)
|
|
412
|
+
sage: mg.f(2)
|
|
413
|
+
[[3, 4], [5]]
|
|
414
|
+
"""
|
|
415
|
+
ret = self.value.f(i)
|
|
416
|
+
if ret is None or not self.parent()._containing(ret):
|
|
417
|
+
return None
|
|
418
|
+
return self.__class__(self.parent(), ret)
|
|
419
|
+
|
|
420
|
+
def epsilon(self, i):
|
|
421
|
+
r"""
|
|
422
|
+
Return `\varepsilon_i` of ``self``.
|
|
423
|
+
|
|
424
|
+
EXAMPLES::
|
|
425
|
+
|
|
426
|
+
sage: B = crystals.Tableaux(['A',4], shape=[2,1])
|
|
427
|
+
sage: S = B.subcrystal(generators=(B(2,1,1), B(5,2,4)), index_set=[1,2])
|
|
428
|
+
sage: mg = S.module_generators[1]
|
|
429
|
+
sage: mg.epsilon(1)
|
|
430
|
+
1
|
|
431
|
+
sage: mg.epsilon(2)
|
|
432
|
+
0
|
|
433
|
+
"""
|
|
434
|
+
return self.value.epsilon(i)
|
|
435
|
+
|
|
436
|
+
def phi(self, i):
|
|
437
|
+
r"""
|
|
438
|
+
Return `\varphi_i` of ``self``.
|
|
439
|
+
|
|
440
|
+
EXAMPLES::
|
|
441
|
+
|
|
442
|
+
sage: B = crystals.Tableaux(['A',4], shape=[2,1])
|
|
443
|
+
sage: S = B.subcrystal(generators=(B(2,1,1), B(5,2,4)), index_set=[1,2])
|
|
444
|
+
sage: mg = S.module_generators[1]
|
|
445
|
+
sage: mg.phi(1)
|
|
446
|
+
0
|
|
447
|
+
sage: mg.phi(2)
|
|
448
|
+
1
|
|
449
|
+
"""
|
|
450
|
+
return self.value.phi(i)
|
|
451
|
+
|
|
452
|
+
def weight(self):
|
|
453
|
+
"""
|
|
454
|
+
Return the weight of ``self``.
|
|
455
|
+
|
|
456
|
+
EXAMPLES::
|
|
457
|
+
|
|
458
|
+
sage: B = crystals.Tableaux(['A',4], shape=[2,1])
|
|
459
|
+
sage: S = B.subcrystal(generators=(B(2,1,1), B(5,2,4)), index_set=[1,2])
|
|
460
|
+
sage: mg = S.module_generators[1]
|
|
461
|
+
sage: mg.weight()
|
|
462
|
+
(0, 1, 0, 1, 1)
|
|
463
|
+
"""
|
|
464
|
+
return self.value.weight()
|