passagemath-combinat 10.6.42__cp314-cp314t-win_amd64.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/DELVEWHEEL +2 -0
- passagemath_combinat-10.6.42.dist-info/METADATA +160 -0
- passagemath_combinat-10.6.42.dist-info/RECORD +401 -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-10-3a5f019e2510aeaad918cab2b57a689d.dll +0 -0
- passagemath_combinat.libs/libsymmetrica-3-7dcf900932804d0df5fd0919b4668720.dll +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 +44 -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.cp314t-win_amd64.pyd +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.cp314t-win_amd64.pyd +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.cp314t-win_amd64.pyd +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.cp314t-win_amd64.pyd +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.cp314t-win_amd64.pyd +0 -0
- sage/combinat/debruijn_sequence.pyx +355 -0
- sage/combinat/decorated_permutation.py +270 -0
- sage/combinat/degree_sequences.cp314t-win_amd64.pyd +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.cp314t-win_amd64.pyd +0 -0
- sage/combinat/expnums.pyx +148 -0
- sage/combinat/fast_vector_partitions.cp314t-win_amd64.pyd +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.cp314t-win_amd64.pyd +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.cp314t-win_amd64.pyd +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.cp314t-win_amd64.pyd +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.cp314t-win_amd64.pyd +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.cp314t-win_amd64.pyd +0 -0
- sage/combinat/words/word_char.pyx +847 -0
- sage/combinat/words/word_datatypes.cp314t-win_amd64.pyd +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.cp314t-win_amd64.pyd +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.cp314t-win_amd64.pyd +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.cp314t-win_amd64.pyd +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.cp314t-win_amd64.pyd +0 -0
- sage/sat/solvers/satsolver.pxd +3 -0
- sage/sat/solvers/satsolver.pyx +405 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-combinat
|
|
2
|
+
r"""
|
|
3
|
+
Combinatorics on words
|
|
4
|
+
|
|
5
|
+
**Main modules and their methods:**
|
|
6
|
+
|
|
7
|
+
- :ref:`sage.combinat.words.abstract_word`
|
|
8
|
+
- :ref:`sage.combinat.words.finite_word`
|
|
9
|
+
- :ref:`sage.combinat.words.infinite_word`
|
|
10
|
+
- :ref:`sage.combinat.words.alphabet`
|
|
11
|
+
- :ref:`sage.combinat.words.words`
|
|
12
|
+
- :ref:`sage.combinat.words.paths`
|
|
13
|
+
- :ref:`sage.combinat.words.morphism`
|
|
14
|
+
- :ref:`sage.combinat.words.shuffle_product`
|
|
15
|
+
- :ref:`sage.combinat.words.suffix_trees`
|
|
16
|
+
|
|
17
|
+
Main classes and functions meant to be used by the user:
|
|
18
|
+
|
|
19
|
+
:func:`~sage.combinat.words.word.Word`,
|
|
20
|
+
:class:`~sage.combinat.words.words.FiniteWords`,
|
|
21
|
+
:class:`~sage.combinat.words.words.InfiniteWords`,
|
|
22
|
+
:func:`~sage.combinat.words.words.Words`,
|
|
23
|
+
:func:`~sage.combinat.words.alphabet.Alphabet`,
|
|
24
|
+
:class:`~sage.combinat.words.morphism.WordMorphism`,
|
|
25
|
+
:class:`~sage.combinat.words.paths.WordPaths`.
|
|
26
|
+
|
|
27
|
+
A list of common words can be accessed through ``words.<tab>`` and are listed in
|
|
28
|
+
the :ref:`words catalog <sage.combinat.words.word_generators>`.
|
|
29
|
+
|
|
30
|
+
**Internal representation of words:**
|
|
31
|
+
|
|
32
|
+
- :ref:`sage.combinat.words.word`
|
|
33
|
+
- :ref:`sage.combinat.words.word_char`
|
|
34
|
+
- :ref:`sage.combinat.words.word_datatypes`
|
|
35
|
+
- :ref:`sage.combinat.words.word_infinite_datatypes`
|
|
36
|
+
|
|
37
|
+
**Options:**
|
|
38
|
+
|
|
39
|
+
- :ref:`sage.combinat.words.word_options`
|
|
40
|
+
|
|
41
|
+
See :func:`~sage.combinat.words.word_options.WordOptions`.
|
|
42
|
+
"""
|
|
43
|
+
# install the docstring of this module to the containing package
|
|
44
|
+
from sage.misc.namespace_package import install_doc
|
|
45
|
+
install_doc(__package__, __doc__)
|
|
46
|
+
|
|
47
|
+
from sage.misc.lazy_import import lazy_import
|
|
48
|
+
|
|
49
|
+
from sage.combinat.words.alphabet import Alphabet, build_alphabet
|
|
50
|
+
from sage.combinat.words.morphism import WordMorphism
|
|
51
|
+
lazy_import('sage.combinat.words.paths', 'WordPaths')
|
|
52
|
+
from sage.combinat.words.word import Word
|
|
53
|
+
from sage.combinat.words.word_options import WordOptions
|
|
54
|
+
from sage.combinat.words.word_generators import words
|
|
55
|
+
from sage.combinat.words.words import Words, FiniteWords, InfiniteWords
|
|
56
|
+
from sage.combinat.words.lyndon_word import LyndonWord, LyndonWords, StandardBracketedLyndonWords
|
|
57
|
+
|
|
58
|
+
del install_doc
|
|
59
|
+
del lazy_import
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-combinat
|
|
2
|
+
r"""
|
|
3
|
+
Alphabet
|
|
4
|
+
|
|
5
|
+
AUTHORS:
|
|
6
|
+
|
|
7
|
+
- Franco Saliola (2008-12-17) : merged into sage
|
|
8
|
+
- Vincent Delecroix and Stepan Starosta (2012): remove classes for alphabet and
|
|
9
|
+
use other Sage classes otherwise (TotallyOrderedFiniteSet,
|
|
10
|
+
FiniteEnumeratedSet, ...). More shortcut to standard alphabets.
|
|
11
|
+
|
|
12
|
+
EXAMPLES::
|
|
13
|
+
|
|
14
|
+
sage: build_alphabet("ab")
|
|
15
|
+
{'a', 'b'}
|
|
16
|
+
sage: build_alphabet([0,1,2])
|
|
17
|
+
{0, 1, 2}
|
|
18
|
+
sage: build_alphabet(name='PP')
|
|
19
|
+
Positive integers
|
|
20
|
+
sage: build_alphabet(name='NN')
|
|
21
|
+
Non negative integers
|
|
22
|
+
sage: build_alphabet(name='lower')
|
|
23
|
+
{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'}
|
|
24
|
+
"""
|
|
25
|
+
# ****************************************************************************
|
|
26
|
+
# Copyright (C) 2008 Franco Saliola <saliola@gmail.com>
|
|
27
|
+
#
|
|
28
|
+
# This program is free software: you can redistribute it and/or modify
|
|
29
|
+
# it under the terms of the GNU General Public License as published by
|
|
30
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
31
|
+
# (at your option) any later version.
|
|
32
|
+
# http://www.gnu.org/licenses/
|
|
33
|
+
# ****************************************************************************
|
|
34
|
+
|
|
35
|
+
import collections.abc
|
|
36
|
+
|
|
37
|
+
from sage.categories.sets_cat import Sets
|
|
38
|
+
from sage.rings.infinity import Infinity
|
|
39
|
+
from sage.rings.integer import Integer
|
|
40
|
+
from sage.sets.family import Family
|
|
41
|
+
from sage.sets.non_negative_integers import NonNegativeIntegers
|
|
42
|
+
from sage.sets.totally_ordered_finite_set import TotallyOrderedFiniteSet
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
set_of_letters = {
|
|
46
|
+
'lower' : "abcdefghijklmnopqrstuvwxyz",
|
|
47
|
+
'upper' : "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
|
|
48
|
+
'space' : " ",
|
|
49
|
+
'underscore' : "_",
|
|
50
|
+
'punctuation' : " ,.;:!?",
|
|
51
|
+
'printable' : "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",
|
|
52
|
+
'binary' : "01",
|
|
53
|
+
'octal' : "01234567",
|
|
54
|
+
'decimal' : "0123456789",
|
|
55
|
+
'hexadecimal' : "0123456789abcdef",
|
|
56
|
+
'radix64' : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"}
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def build_alphabet(data=None, names=None, name=None):
|
|
60
|
+
r"""
|
|
61
|
+
Return an object representing an ordered alphabet.
|
|
62
|
+
|
|
63
|
+
INPUT:
|
|
64
|
+
|
|
65
|
+
- ``data`` -- the letters of the alphabet; it can be:
|
|
66
|
+
|
|
67
|
+
* a list/tuple/iterable of letters; the iterable may be infinite
|
|
68
|
+
* an integer `n` to represent `\{1, \ldots, n\}`, or infinity to
|
|
69
|
+
represent `\NN`
|
|
70
|
+
|
|
71
|
+
- ``names`` -- (optional) a list for the letters (i.e. variable names) or
|
|
72
|
+
a string for prefix for all letters; if given a list, it must have the
|
|
73
|
+
same cardinality as the set represented by ``data``
|
|
74
|
+
|
|
75
|
+
- ``name`` -- (optional) if given, then return a named set and can be
|
|
76
|
+
equal to : ``'lower', 'upper', 'space',
|
|
77
|
+
'underscore', 'punctuation', 'printable', 'binary', 'octal', 'decimal',
|
|
78
|
+
'hexadecimal', 'radix64'``.
|
|
79
|
+
|
|
80
|
+
You can use many of them at once, separated by spaces : ``'lower
|
|
81
|
+
punctuation'`` represents the union of the two alphabets ``'lower'`` and
|
|
82
|
+
``'punctuation'``.
|
|
83
|
+
|
|
84
|
+
Alternatively, ``name`` can be set to ``'positive integers'`` (or
|
|
85
|
+
``'PP'``) or ``'natural numbers'`` (or ``'NN'``).
|
|
86
|
+
|
|
87
|
+
``name`` cannot be combined with ``data``.
|
|
88
|
+
|
|
89
|
+
EXAMPLES:
|
|
90
|
+
|
|
91
|
+
If the argument is a Set, it just returns it::
|
|
92
|
+
|
|
93
|
+
sage: build_alphabet(ZZ) is ZZ
|
|
94
|
+
True
|
|
95
|
+
sage: F = FiniteEnumeratedSet('abc')
|
|
96
|
+
sage: build_alphabet(F) is F
|
|
97
|
+
True
|
|
98
|
+
|
|
99
|
+
If a list, tuple or string is provided, then it builds a proper Sage class
|
|
100
|
+
(:class:`~sage.sets.totally_ordered_finite_set.TotallyOrderedFiniteSet`)::
|
|
101
|
+
|
|
102
|
+
sage: build_alphabet([0,1,2])
|
|
103
|
+
{0, 1, 2}
|
|
104
|
+
sage: F = build_alphabet('abc'); F
|
|
105
|
+
{'a', 'b', 'c'}
|
|
106
|
+
sage: print(type(F).__name__)
|
|
107
|
+
TotallyOrderedFiniteSet_with_category
|
|
108
|
+
|
|
109
|
+
If an integer and a set is given, then it constructs a
|
|
110
|
+
:class:`~sage.sets.totally_ordered_finite_set.TotallyOrderedFiniteSet`::
|
|
111
|
+
|
|
112
|
+
sage: build_alphabet(3, ['a','b','c'])
|
|
113
|
+
{'a', 'b', 'c'}
|
|
114
|
+
|
|
115
|
+
If an integer and a string is given, then it considers that string as a
|
|
116
|
+
prefix::
|
|
117
|
+
|
|
118
|
+
sage: build_alphabet(3, 'x')
|
|
119
|
+
{'x0', 'x1', 'x2'}
|
|
120
|
+
|
|
121
|
+
If no data is provided, ``name`` may be a string which describe an alphabet.
|
|
122
|
+
The available names decompose into two families. The first one are 'positive
|
|
123
|
+
integers', 'PP', 'natural numbers' or 'NN' which refer to standard set of
|
|
124
|
+
numbers::
|
|
125
|
+
|
|
126
|
+
sage: build_alphabet(name="positive integers")
|
|
127
|
+
Positive integers
|
|
128
|
+
sage: build_alphabet(name='PP')
|
|
129
|
+
Positive integers
|
|
130
|
+
sage: build_alphabet(name="natural numbers")
|
|
131
|
+
Non negative integers
|
|
132
|
+
sage: build_alphabet(name="NN")
|
|
133
|
+
Non negative integers
|
|
134
|
+
|
|
135
|
+
The other families for the option ``name`` are among 'lower', 'upper',
|
|
136
|
+
'space', 'underscore', 'punctuation', 'printable', 'binary', 'octal',
|
|
137
|
+
'decimal', 'hexadecimal', 'radix64' which refer to standard set of
|
|
138
|
+
characters. Theses names may be combined by separating them by a space::
|
|
139
|
+
|
|
140
|
+
sage: build_alphabet(name='lower')
|
|
141
|
+
{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'}
|
|
142
|
+
sage: build_alphabet(name='hexadecimal')
|
|
143
|
+
{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}
|
|
144
|
+
sage: build_alphabet(name="decimal punctuation")
|
|
145
|
+
{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ' ', ',', '.', ';', ':', '!', '?'}
|
|
146
|
+
|
|
147
|
+
In the case the alphabet is built from a list or a tuple, the order on the
|
|
148
|
+
alphabet is given by the elements themselves::
|
|
149
|
+
|
|
150
|
+
sage: A = build_alphabet([0,2,1])
|
|
151
|
+
sage: A(0) < A(2)
|
|
152
|
+
True
|
|
153
|
+
sage: A(2) < A(1)
|
|
154
|
+
False
|
|
155
|
+
|
|
156
|
+
If a different order is needed, you may use
|
|
157
|
+
:class:`~sage.sets.totally_ordered_finite_set.TotallyOrderedFiniteSet` and
|
|
158
|
+
set the option ``facade`` to ``False``. That way, the comparison fits the
|
|
159
|
+
order of the input::
|
|
160
|
+
|
|
161
|
+
sage: A = TotallyOrderedFiniteSet([4,2,6,1], facade=False)
|
|
162
|
+
sage: A(4) < A(2)
|
|
163
|
+
True
|
|
164
|
+
sage: A(1) < A(6)
|
|
165
|
+
False
|
|
166
|
+
|
|
167
|
+
Be careful, the element of the set in the last example are no more
|
|
168
|
+
integers and do not compare equal with integers::
|
|
169
|
+
|
|
170
|
+
sage: type(A.an_element())
|
|
171
|
+
<class 'sage.sets.totally_ordered_finite_set.TotallyOrderedFiniteSet_with_category.element_class'>
|
|
172
|
+
sage: A(1) == 1
|
|
173
|
+
False
|
|
174
|
+
sage: 1 == A(1)
|
|
175
|
+
False
|
|
176
|
+
|
|
177
|
+
We give an example of an infinite alphabet indexed by the positive
|
|
178
|
+
integers and the prime numbers::
|
|
179
|
+
|
|
180
|
+
sage: build_alphabet(oo, 'x')
|
|
181
|
+
Lazy family (x(i))_{i in Non negative integers}
|
|
182
|
+
sage: build_alphabet(Primes(), 'y')
|
|
183
|
+
Lazy family (y(i))_{i in Set of all prime numbers: 2, 3, 5, 7, ...}
|
|
184
|
+
|
|
185
|
+
TESTS::
|
|
186
|
+
|
|
187
|
+
sage: Alphabet(3, name='punctuation')
|
|
188
|
+
Traceback (most recent call last):
|
|
189
|
+
...
|
|
190
|
+
ValueError: name cannot be specified with any other argument
|
|
191
|
+
sage: Alphabet(8, ['e']*10)
|
|
192
|
+
Traceback (most recent call last):
|
|
193
|
+
...
|
|
194
|
+
ValueError: invalid value for names
|
|
195
|
+
sage: Alphabet(8, x) # needs sage.symbolic
|
|
196
|
+
Traceback (most recent call last):
|
|
197
|
+
...
|
|
198
|
+
ValueError: invalid value for names
|
|
199
|
+
sage: Alphabet(name=x, names='punctuation') # needs sage.symbolic
|
|
200
|
+
Traceback (most recent call last):
|
|
201
|
+
...
|
|
202
|
+
ValueError: name cannot be specified with any other argument
|
|
203
|
+
sage: Alphabet(x) # needs sage.symbolic
|
|
204
|
+
Traceback (most recent call last):
|
|
205
|
+
...
|
|
206
|
+
ValueError: unable to construct an alphabet from the given parameters
|
|
207
|
+
"""
|
|
208
|
+
# If both 'names' and 'data' are defined
|
|
209
|
+
if name is not None and (data is not None or names is not None):
|
|
210
|
+
raise ValueError("name cannot be specified with any other argument")
|
|
211
|
+
|
|
212
|
+
# Swap arguments if we need to try and make sure we have "good" user input
|
|
213
|
+
if isinstance(names, (int, Integer)) or names == Infinity \
|
|
214
|
+
or (data is None and names is not None):
|
|
215
|
+
data, names = names, data
|
|
216
|
+
|
|
217
|
+
# data is an integer
|
|
218
|
+
if isinstance(data, (int, Integer)):
|
|
219
|
+
if names is None:
|
|
220
|
+
from sage.sets.integer_range import IntegerRange
|
|
221
|
+
return IntegerRange(Integer(data))
|
|
222
|
+
if isinstance(names, str):
|
|
223
|
+
return TotallyOrderedFiniteSet([names + '%d' % i for i in range(data)])
|
|
224
|
+
if isinstance(names, collections.abc.Sequence) and len(names) == data:
|
|
225
|
+
return TotallyOrderedFiniteSet(names)
|
|
226
|
+
raise ValueError("invalid value for names")
|
|
227
|
+
|
|
228
|
+
if data == Infinity:
|
|
229
|
+
data = NonNegativeIntegers()
|
|
230
|
+
|
|
231
|
+
# data is an iterable
|
|
232
|
+
if isinstance(data, (tuple, list, str, range)) or data in Sets():
|
|
233
|
+
if names is not None:
|
|
234
|
+
if not isinstance(names, str):
|
|
235
|
+
raise TypeError("names must be a string when data is a set")
|
|
236
|
+
return Family(data, lambda i: names + str(i), name=names)
|
|
237
|
+
if data in Sets():
|
|
238
|
+
return data
|
|
239
|
+
return TotallyOrderedFiniteSet(data)
|
|
240
|
+
|
|
241
|
+
# Alphabet defined from a name
|
|
242
|
+
if name is not None:
|
|
243
|
+
if not isinstance(name, str):
|
|
244
|
+
raise TypeError("name must be a string")
|
|
245
|
+
if name == "positive integers" or name == "PP":
|
|
246
|
+
from sage.sets.positive_integers import PositiveIntegers
|
|
247
|
+
return PositiveIntegers()
|
|
248
|
+
if name == "natural numbers" or name == "NN":
|
|
249
|
+
return NonNegativeIntegers()
|
|
250
|
+
|
|
251
|
+
data = []
|
|
252
|
+
for alpha_name in name.split(' '):
|
|
253
|
+
try:
|
|
254
|
+
data.extend(list(set_of_letters[alpha_name]))
|
|
255
|
+
except KeyError:
|
|
256
|
+
raise TypeError("name is not recognized")
|
|
257
|
+
return TotallyOrderedFiniteSet(data)
|
|
258
|
+
|
|
259
|
+
# Alphabet(**nothing**)
|
|
260
|
+
if data is None: # name is also None
|
|
261
|
+
from sage.sets.pythonclass import Set_PythonType
|
|
262
|
+
return Set_PythonType(object)
|
|
263
|
+
|
|
264
|
+
raise ValueError("unable to construct an alphabet from the given parameters")
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
# TODO: should it be deprecated as it is no more a class ?
|
|
268
|
+
Alphabet = build_alphabet
|