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,372 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-combinat
|
|
2
|
+
# sage.doctest: needs sage.combinat sage.graphs sage.modules
|
|
3
|
+
r"""
|
|
4
|
+
Polyhedral realization of `B(\infty)`
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
# ***************************************************************************
|
|
8
|
+
# Copyright (C) 2015 Travis Scrimshaw <tscrim at 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.structure.parent import Parent
|
|
23
|
+
from sage.categories.infinite_enumerated_sets import InfiniteEnumeratedSets
|
|
24
|
+
from sage.categories.highest_weight_crystals import HighestWeightCrystals
|
|
25
|
+
from sage.combinat.crystals.tensor_product import TensorProductOfCrystals, \
|
|
26
|
+
TensorProductOfCrystalsElement
|
|
27
|
+
from sage.combinat.crystals.elementary_crystals import ElementaryCrystal
|
|
28
|
+
from sage.combinat.root_system.cartan_type import CartanType
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class InfinityCrystalAsPolyhedralRealization(TensorProductOfCrystals):
|
|
32
|
+
r"""
|
|
33
|
+
The polyhedral realization of `B(\infty)`.
|
|
34
|
+
|
|
35
|
+
.. NOTE::
|
|
36
|
+
|
|
37
|
+
Here we are using anti-Kashiwara notation and might differ from
|
|
38
|
+
some of the literature.
|
|
39
|
+
|
|
40
|
+
Consider a Kac-Moody algebra `\mathfrak{g}` of Cartan type `X` with
|
|
41
|
+
index set `I`, and consider a finite sequence `J = (j_1, j_2, \ldots, j_m)`
|
|
42
|
+
whose support equals `I`. We extend this to an infinite sequence
|
|
43
|
+
by taking `\bar{J} = J \cdot J \cdot J \cdots`, where `\cdot` denotes
|
|
44
|
+
concatenation of sequences. Let
|
|
45
|
+
|
|
46
|
+
.. MATH::
|
|
47
|
+
|
|
48
|
+
B_J = B_{j_m} \otimes \cdots \otimes B_{j_2} \otimes B_{j_1},
|
|
49
|
+
|
|
50
|
+
where `B_i` is an
|
|
51
|
+
:class:`~sage.combinat.crystals.elementary_crystals.ElementaryCrystal`.
|
|
52
|
+
|
|
53
|
+
As given in Theorem 2.1.1 of [Ka1993]_, there exists a strict crystal embedding
|
|
54
|
+
`\Psi_i \colon B(\infty) \to B_i \otimes B(\infty)` defined by `u_{\infty}
|
|
55
|
+
\mapsto b_i(0) \otimes u_{\infty}`, where `b_i(0) \in B_i` and `u_{\infty}`
|
|
56
|
+
is the (unique) highest weight element in `B(\infty)`. This is sometimes
|
|
57
|
+
known as the *Kashiwara embedding* [NZ1997]_ (though, in [NZ1997]_, the target
|
|
58
|
+
of this map is denoted by `\ZZ_J^\infty`). By iterating this embedding by
|
|
59
|
+
taking `\Psi_J = \Psi_{j_n} \circ \Psi_{j_{n-1}} \circ \cdots \circ
|
|
60
|
+
\Psi_{j_1}`, we obtain the following strict crystal embedding:
|
|
61
|
+
|
|
62
|
+
.. MATH::
|
|
63
|
+
|
|
64
|
+
\Psi_J^n \colon B(\infty) \to B_J^{\otimes n} \otimes B(\infty).
|
|
65
|
+
|
|
66
|
+
We note there is a natural analog of Lemma 10.6.2 in [HK2002]_ that
|
|
67
|
+
for any `b \in B(\infty)`, there exists a positive integer `N` such that
|
|
68
|
+
|
|
69
|
+
.. MATH::
|
|
70
|
+
|
|
71
|
+
\Psi^N_J(b) = \left( \bigotimes_{k=1}^N b^{(k)} \right)
|
|
72
|
+
\otimes u_{\infty}.
|
|
73
|
+
|
|
74
|
+
Therefore we can model elements `b \in B(\infty)` by considering
|
|
75
|
+
an infinite list of elements `b^{(k)} \in B_J` and defining the crystal
|
|
76
|
+
structure by:
|
|
77
|
+
|
|
78
|
+
.. MATH::
|
|
79
|
+
|
|
80
|
+
\begin{aligned}
|
|
81
|
+
\mathrm{wt}(b) & = \sum_{k=1}^N \mathrm{wt}(b^{(k)})
|
|
82
|
+
\\ e_i(b) & = e_i\left( \left( \bigotimes_{k=1}^N b^{(k)} \right)
|
|
83
|
+
\right) \otimes u_{\infty},
|
|
84
|
+
\\ f_i(b) & = f_i\left( \left( \bigotimes_{k=1}^N b^{(k)} \right)
|
|
85
|
+
\right) \otimes u_{\infty},
|
|
86
|
+
\\ \varepsilon_i(b) & = \max_{ e_i^k(b) \neq 0 } k,
|
|
87
|
+
\\ \varphi_i(b) & = \varepsilon_i(b) - \langle \mathrm{wt}(b),
|
|
88
|
+
h_i^{\vee} \rangle.
|
|
89
|
+
\end{aligned}
|
|
90
|
+
|
|
91
|
+
To translate this into a finite list, we consider a finite sequence
|
|
92
|
+
`b_1 \otimes \cdots \otimes b_N` and if
|
|
93
|
+
|
|
94
|
+
.. MATH::
|
|
95
|
+
|
|
96
|
+
f_i\left( b^{(1)} \otimes \cdots b^{(N-1)} \otimes b^{(N)} \right)
|
|
97
|
+
= b^{(1)} \otimes \cdots \otimes b^{(N-1)} \otimes
|
|
98
|
+
f_i\left( b^{(N)} \right),
|
|
99
|
+
|
|
100
|
+
then we take the image as `b^{(1)} \otimes \cdots \otimes f_i\left(
|
|
101
|
+
b^{(N)} \right) \otimes b^{(N+1)}`. Similarly we remove `b^{(N)}` if
|
|
102
|
+
we have `b^{(N)} = \bigotimes_{k=1}^m b_{j_k}(0)`. Additionally if
|
|
103
|
+
|
|
104
|
+
.. MATH::
|
|
105
|
+
|
|
106
|
+
e_i\left( b^{(1)} \otimes \cdots \otimes b^{(N-1)} \otimes
|
|
107
|
+
b^{(N)} \right) = b^{(1)} \otimes \cdots \otimes b^{(N-1)}
|
|
108
|
+
\otimes e_i\left( b^{(N)} \right),
|
|
109
|
+
|
|
110
|
+
then we consider this to be `0`.
|
|
111
|
+
|
|
112
|
+
INPUT:
|
|
113
|
+
|
|
114
|
+
- ``cartan_type`` -- a Cartan type
|
|
115
|
+
- ``seq`` -- (default: ``None``) a finite sequence whose support
|
|
116
|
+
equals the index set of the Cartan type; if ``None``, then this
|
|
117
|
+
is the index set
|
|
118
|
+
|
|
119
|
+
EXAMPLES::
|
|
120
|
+
|
|
121
|
+
sage: B = crystals.infinity.PolyhedralRealization(['A',2])
|
|
122
|
+
sage: mg = B.module_generators[0]; mg
|
|
123
|
+
[0, 0]
|
|
124
|
+
sage: mg.f_string([2,1,2,2])
|
|
125
|
+
[0, -3, -1, 0, 0, 0]
|
|
126
|
+
|
|
127
|
+
An example of type `B_2`::
|
|
128
|
+
|
|
129
|
+
sage: B = crystals.infinity.PolyhedralRealization(['B',2])
|
|
130
|
+
sage: mg = B.module_generators[0]; mg
|
|
131
|
+
[0, 0]
|
|
132
|
+
sage: mg.f_string([2,1,2,2])
|
|
133
|
+
[0, -2, -1, -1, 0, 0]
|
|
134
|
+
|
|
135
|
+
An example of type `G_2`::
|
|
136
|
+
|
|
137
|
+
sage: B = crystals.infinity.PolyhedralRealization(['G',2])
|
|
138
|
+
sage: mg = B.module_generators[0]; mg
|
|
139
|
+
[0, 0]
|
|
140
|
+
sage: mg.f_string([2,1,2,2])
|
|
141
|
+
[0, -3, -1, 0, 0, 0]
|
|
142
|
+
"""
|
|
143
|
+
@staticmethod
|
|
144
|
+
def __classcall_private__(cls, cartan_type, seq=None):
|
|
145
|
+
"""
|
|
146
|
+
Normalize input to ensure a unique representation.
|
|
147
|
+
|
|
148
|
+
EXAMPLES::
|
|
149
|
+
|
|
150
|
+
sage: B1 = crystals.infinity.PolyhedralRealization(['A',2])
|
|
151
|
+
sage: B2 = crystals.infinity.PolyhedralRealization(['A',2], [1,2])
|
|
152
|
+
sage: B1 is B2
|
|
153
|
+
True
|
|
154
|
+
"""
|
|
155
|
+
cartan_type = CartanType(cartan_type)
|
|
156
|
+
if seq is None:
|
|
157
|
+
seq = cartan_type.index_set()
|
|
158
|
+
else:
|
|
159
|
+
seq = tuple(seq)
|
|
160
|
+
if set(seq) != set(cartan_type.index_set()):
|
|
161
|
+
raise ValueError("the support of seq is not the index set")
|
|
162
|
+
return super().__classcall__(cls, cartan_type, seq)
|
|
163
|
+
|
|
164
|
+
def __init__(self, cartan_type, seq):
|
|
165
|
+
"""
|
|
166
|
+
Initialize ``self``.
|
|
167
|
+
|
|
168
|
+
EXAMPLES::
|
|
169
|
+
|
|
170
|
+
sage: B = crystals.infinity.PolyhedralRealization(['A',2])
|
|
171
|
+
sage: TestSuite(B).run() # long time
|
|
172
|
+
"""
|
|
173
|
+
cat = (HighestWeightCrystals(), InfiniteEnumeratedSets())
|
|
174
|
+
Parent.__init__(self, category=cat)
|
|
175
|
+
self._cartan_type = cartan_type
|
|
176
|
+
self._seq = seq
|
|
177
|
+
# These are the additional factors we add as necessary
|
|
178
|
+
self._factors = tuple([ElementaryCrystal(cartan_type, i) for i in seq])
|
|
179
|
+
# public for TensorProductOfCrystals
|
|
180
|
+
self.crystals = self._factors
|
|
181
|
+
self._tp = [C.module_generators[0] for C in self.crystals]
|
|
182
|
+
self.module_generators = (self.element_class(self, self._tp),)
|
|
183
|
+
|
|
184
|
+
def _repr_(self):
|
|
185
|
+
"""
|
|
186
|
+
Return a string representation of ``self``.
|
|
187
|
+
|
|
188
|
+
EXAMPLES::
|
|
189
|
+
|
|
190
|
+
sage: crystals.infinity.PolyhedralRealization(['A',2])
|
|
191
|
+
Polyhedral realization of B(oo) of type ['A', 2] using (1, 2)
|
|
192
|
+
"""
|
|
193
|
+
return "Polyhedral realization of B(oo) of type {} using {}".format(self._cartan_type, self._seq)
|
|
194
|
+
|
|
195
|
+
def finite_tensor_product(self, k):
|
|
196
|
+
"""
|
|
197
|
+
Return the finite tensor product of crystals of length ``k``
|
|
198
|
+
by truncating ``self``.
|
|
199
|
+
|
|
200
|
+
EXAMPLES::
|
|
201
|
+
|
|
202
|
+
sage: B = crystals.infinity.PolyhedralRealization(['A',2])
|
|
203
|
+
sage: B.finite_tensor_product(5)
|
|
204
|
+
Full tensor product of the crystals
|
|
205
|
+
[The 1-elementary crystal of type ['A', 2],
|
|
206
|
+
The 2-elementary crystal of type ['A', 2],
|
|
207
|
+
The 1-elementary crystal of type ['A', 2],
|
|
208
|
+
The 2-elementary crystal of type ['A', 2],
|
|
209
|
+
The 1-elementary crystal of type ['A', 2]]
|
|
210
|
+
"""
|
|
211
|
+
N = len(self._factors)
|
|
212
|
+
crystals = [self._factors[i % N] for i in range(k)]
|
|
213
|
+
return TensorProductOfCrystals(*crystals)
|
|
214
|
+
|
|
215
|
+
class Element(TensorProductOfCrystalsElement):
|
|
216
|
+
r"""
|
|
217
|
+
An element in the polyhedral realization of `B(\infty)`.
|
|
218
|
+
"""
|
|
219
|
+
# For simplicity (and safety), we use the regular crystals implementation
|
|
220
|
+
|
|
221
|
+
def epsilon(self, i):
|
|
222
|
+
r"""
|
|
223
|
+
Return `\varepsilon_i` of ``self``.
|
|
224
|
+
|
|
225
|
+
EXAMPLES::
|
|
226
|
+
|
|
227
|
+
sage: B = crystals.infinity.PolyhedralRealization(['A',2,1])
|
|
228
|
+
sage: mg = B.module_generators[0]
|
|
229
|
+
sage: [mg.epsilon(i) for i in B.index_set()]
|
|
230
|
+
[0, 0, 0]
|
|
231
|
+
sage: elt = mg.f(0)
|
|
232
|
+
sage: [elt.epsilon(i) for i in B.index_set()]
|
|
233
|
+
[1, 0, 0]
|
|
234
|
+
sage: elt = mg.f_string([0,1,2])
|
|
235
|
+
sage: [elt.epsilon(i) for i in B.index_set()]
|
|
236
|
+
[0, 0, 1]
|
|
237
|
+
sage: elt = mg.f_string([0,1,2,2])
|
|
238
|
+
sage: [elt.epsilon(i) for i in B.index_set()]
|
|
239
|
+
[0, 0, 2]
|
|
240
|
+
"""
|
|
241
|
+
x = self.e(i)
|
|
242
|
+
eps = 0
|
|
243
|
+
while x is not None:
|
|
244
|
+
x = x.e(i)
|
|
245
|
+
eps = eps + 1
|
|
246
|
+
return eps
|
|
247
|
+
|
|
248
|
+
def phi(self, i):
|
|
249
|
+
r"""
|
|
250
|
+
Return `\varphi_i` of ``self``.
|
|
251
|
+
|
|
252
|
+
EXAMPLES::
|
|
253
|
+
|
|
254
|
+
sage: B = crystals.infinity.PolyhedralRealization(['A',2,1])
|
|
255
|
+
sage: mg = B.module_generators[0]
|
|
256
|
+
sage: [mg.phi(i) for i in B.index_set()]
|
|
257
|
+
[0, 0, 0]
|
|
258
|
+
sage: elt = mg.f(0)
|
|
259
|
+
sage: [elt.phi(i) for i in B.index_set()]
|
|
260
|
+
[-1, 1, 1]
|
|
261
|
+
sage: elt = mg.f_string([0,1])
|
|
262
|
+
sage: [elt.phi(i) for i in B.index_set()]
|
|
263
|
+
[-1, 0, 2]
|
|
264
|
+
sage: elt = mg.f_string([0,1,2,2])
|
|
265
|
+
sage: [elt.phi(i) for i in B.index_set()]
|
|
266
|
+
[1, 1, 0]
|
|
267
|
+
"""
|
|
268
|
+
P = self.parent().weight_lattice_realization()
|
|
269
|
+
h = P.simple_coroots()
|
|
270
|
+
omega = P(self.weight()).scalar(h[i])
|
|
271
|
+
return self.epsilon(i) + omega
|
|
272
|
+
|
|
273
|
+
def e(self, i):
|
|
274
|
+
"""
|
|
275
|
+
Return the action of `e_i` on ``self``.
|
|
276
|
+
|
|
277
|
+
EXAMPLES::
|
|
278
|
+
|
|
279
|
+
sage: B = crystals.infinity.PolyhedralRealization(['A',2])
|
|
280
|
+
sage: mg = B.module_generators[0]
|
|
281
|
+
sage: all(mg.e(i) is None for i in B.index_set())
|
|
282
|
+
True
|
|
283
|
+
sage: mg.f(1).e(1) == mg
|
|
284
|
+
True
|
|
285
|
+
"""
|
|
286
|
+
N = len(self) + 1
|
|
287
|
+
pos = None
|
|
288
|
+
for k in range(1, N):
|
|
289
|
+
if all(self._sig(i,k) > self._sig(i,j) for j in range(1, k)) and \
|
|
290
|
+
all(self._sig(i,k) >= self._sig(i,j) for j in range(k+1, N)):
|
|
291
|
+
crystal = self[-k].e(i)
|
|
292
|
+
pos = k
|
|
293
|
+
break
|
|
294
|
+
|
|
295
|
+
nf = len(self.parent()._factors)
|
|
296
|
+
if pos is None or pos <= nf:
|
|
297
|
+
return None
|
|
298
|
+
|
|
299
|
+
l = list(self)
|
|
300
|
+
l[-pos] = crystal
|
|
301
|
+
if pos <= 2*nf and all(b._m == 0 for b in l[-2*nf:-nf]):
|
|
302
|
+
return self.__class__(self.parent(), l[:-nf])
|
|
303
|
+
return self.__class__(self.parent(), l)
|
|
304
|
+
|
|
305
|
+
def f(self, i):
|
|
306
|
+
"""
|
|
307
|
+
Return the action of `f_i` on ``self``.
|
|
308
|
+
|
|
309
|
+
EXAMPLES::
|
|
310
|
+
|
|
311
|
+
sage: B = crystals.infinity.PolyhedralRealization(['A',2])
|
|
312
|
+
sage: mg = B.module_generators[0]
|
|
313
|
+
sage: mg.f(1)
|
|
314
|
+
[-1, 0, 0, 0]
|
|
315
|
+
sage: mg.f_string([1,2,2,1])
|
|
316
|
+
[-1, -2, -1, 0, 0, 0]
|
|
317
|
+
"""
|
|
318
|
+
N = len(self) + 1
|
|
319
|
+
pos = None
|
|
320
|
+
for k in range(1, N):
|
|
321
|
+
if all(self._sig(i,k) >= self._sig(i,j) for j in range(1, k)) and \
|
|
322
|
+
all(self._sig(i,k) > self._sig(i,j) for j in range(k+1, N)):
|
|
323
|
+
crystal = self[-k].f(i)
|
|
324
|
+
pos = k
|
|
325
|
+
break
|
|
326
|
+
|
|
327
|
+
nf = len(self.parent()._factors)
|
|
328
|
+
if pos <= nf:
|
|
329
|
+
l = list(self)
|
|
330
|
+
l[-pos] = l[-pos].f(i)
|
|
331
|
+
return self.__class__(self.parent(), l + self.parent()._tp)
|
|
332
|
+
return self._set_index(-pos, crystal)
|
|
333
|
+
|
|
334
|
+
def truncate(self, k=None):
|
|
335
|
+
r"""
|
|
336
|
+
Truncate ``self`` to have length ``k`` and return as an element
|
|
337
|
+
in a (finite) tensor product of crystals.
|
|
338
|
+
|
|
339
|
+
INPUT:
|
|
340
|
+
|
|
341
|
+
- ``k`` -- (optional) the length of the truncation; if not
|
|
342
|
+
specified, then returns one more than the current non-ground-state
|
|
343
|
+
elements (i.e. the current list in ``self``)
|
|
344
|
+
|
|
345
|
+
EXAMPLES::
|
|
346
|
+
|
|
347
|
+
sage: B = crystals.infinity.PolyhedralRealization(['A',2])
|
|
348
|
+
sage: mg = B.module_generators[0]
|
|
349
|
+
sage: elt = mg.f_string([1,2,2,1]); elt
|
|
350
|
+
[-1, -2, -1, 0, 0, 0]
|
|
351
|
+
sage: t = elt.truncate(); t
|
|
352
|
+
[-1, -2, -1, 0, 0, 0]
|
|
353
|
+
sage: t.parent() is B.finite_tensor_product(6)
|
|
354
|
+
True
|
|
355
|
+
sage: elt.truncate(2)
|
|
356
|
+
[-1, -2]
|
|
357
|
+
sage: elt.truncate(10)
|
|
358
|
+
[-1, -2, -1, 0, 0, 0, 0, 0, 0, 0]
|
|
359
|
+
"""
|
|
360
|
+
if k is None:
|
|
361
|
+
k = len(self)
|
|
362
|
+
|
|
363
|
+
P = self.parent().finite_tensor_product(k)
|
|
364
|
+
if k <= len(self):
|
|
365
|
+
l = self[:k]
|
|
366
|
+
else:
|
|
367
|
+
l = list(self)
|
|
368
|
+
N = len(self.parent()._tp)
|
|
369
|
+
while len(l) < k:
|
|
370
|
+
i = len(l) % N
|
|
371
|
+
l.append(self.parent()._tp[i])
|
|
372
|
+
return P(*l)
|
|
Binary file
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-combinat
|
|
2
|
+
from sage.structure.element cimport Element
|
|
3
|
+
|
|
4
|
+
cdef class Spin(Element):
|
|
5
|
+
cdef bint* _value
|
|
6
|
+
cdef int _n
|
|
7
|
+
cdef long _hash
|
|
8
|
+
|
|
9
|
+
cdef Spin _new_c(self, bint* value)
|
|
10
|
+
|
|
11
|
+
cdef class Spin_crystal_type_B_element(Spin):
|
|
12
|
+
cpdef Spin e(self, int i)
|
|
13
|
+
cpdef Spin f(self, int i)
|
|
14
|
+
cpdef int epsilon(self, int i) noexcept
|
|
15
|
+
cpdef int phi(self, int i) noexcept
|
|
16
|
+
|
|
17
|
+
cdef class Spin_crystal_type_D_element(Spin):
|
|
18
|
+
cpdef Spin e(self, int i)
|
|
19
|
+
cpdef Spin f(self, int i)
|
|
20
|
+
cpdef int epsilon(self, int i) noexcept
|
|
21
|
+
cpdef int phi(self, int i) noexcept
|