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,243 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-combinat
|
|
2
|
+
"""
|
|
3
|
+
Subset species
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
# ****************************************************************************
|
|
7
|
+
# Copyright (C) 2008 Mike Hansen <mhansen@gmail.com>,
|
|
8
|
+
#
|
|
9
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
10
|
+
#
|
|
11
|
+
# This code is distributed in the hope that it will be useful,
|
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
14
|
+
# General Public License for more details.
|
|
15
|
+
#
|
|
16
|
+
# The full text of the GPL is available at:
|
|
17
|
+
#
|
|
18
|
+
# http://www.gnu.org/licenses/
|
|
19
|
+
# ****************************************************************************
|
|
20
|
+
|
|
21
|
+
from .species import GenericCombinatorialSpecies
|
|
22
|
+
from .set_species import SetSpecies
|
|
23
|
+
from .structure import GenericSpeciesStructure
|
|
24
|
+
from sage.combinat.species.misc import accept_size
|
|
25
|
+
from sage.structure.unique_representation import UniqueRepresentation
|
|
26
|
+
from sage.arith.misc import factorial
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class SubsetSpeciesStructure(GenericSpeciesStructure):
|
|
30
|
+
def __repr__(self):
|
|
31
|
+
"""
|
|
32
|
+
EXAMPLES::
|
|
33
|
+
|
|
34
|
+
sage: set_random_seed(0)
|
|
35
|
+
sage: S = species.SubsetSpecies()
|
|
36
|
+
sage: a = S.structures(["a","b","c"])[0]; a
|
|
37
|
+
{}
|
|
38
|
+
"""
|
|
39
|
+
s = GenericSpeciesStructure.__repr__(self)
|
|
40
|
+
return "{"+s[1:-1]+"}"
|
|
41
|
+
|
|
42
|
+
def canonical_label(self):
|
|
43
|
+
"""
|
|
44
|
+
Return the canonical label of ``self``.
|
|
45
|
+
|
|
46
|
+
EXAMPLES::
|
|
47
|
+
|
|
48
|
+
sage: P = species.SubsetSpecies()
|
|
49
|
+
sage: S = P.structures(["a", "b", "c"])
|
|
50
|
+
sage: [s.canonical_label() for s in S]
|
|
51
|
+
[{}, {'a'}, {'a'}, {'a'}, {'a', 'b'}, {'a', 'b'}, {'a', 'b'}, {'a', 'b', 'c'}]
|
|
52
|
+
"""
|
|
53
|
+
rng = list(range(1, len(self._list) + 1))
|
|
54
|
+
return self.__class__(self.parent(), self._labels, rng)
|
|
55
|
+
|
|
56
|
+
def label_subset(self):
|
|
57
|
+
r"""
|
|
58
|
+
Return a subset of the labels that "appear" in this structure.
|
|
59
|
+
|
|
60
|
+
EXAMPLES::
|
|
61
|
+
|
|
62
|
+
sage: P = species.SubsetSpecies()
|
|
63
|
+
sage: S = P.structures(["a", "b", "c"])
|
|
64
|
+
sage: [s.label_subset() for s in S]
|
|
65
|
+
[[], ['a'], ['b'], ['c'], ['a', 'b'], ['a', 'c'], ['b', 'c'], ['a', 'b', 'c']]
|
|
66
|
+
"""
|
|
67
|
+
return [self._relabel(i) for i in self._list]
|
|
68
|
+
|
|
69
|
+
def transport(self, perm):
|
|
70
|
+
r"""
|
|
71
|
+
Return the transport of this subset along the permutation perm.
|
|
72
|
+
|
|
73
|
+
EXAMPLES::
|
|
74
|
+
|
|
75
|
+
sage: F = species.SubsetSpecies()
|
|
76
|
+
sage: a = F.structures(["a", "b", "c"])[5]; a
|
|
77
|
+
{'a', 'c'}
|
|
78
|
+
sage: p = PermutationGroupElement((1,2)) # needs sage.groups
|
|
79
|
+
sage: a.transport(p) # needs sage.groups
|
|
80
|
+
{'b', 'c'}
|
|
81
|
+
sage: p = PermutationGroupElement((1,3)) # needs sage.groups
|
|
82
|
+
sage: a.transport(p) # needs sage.groups
|
|
83
|
+
{'a', 'c'}
|
|
84
|
+
"""
|
|
85
|
+
l = sorted([perm(i) for i in self._list])
|
|
86
|
+
return SubsetSpeciesStructure(self.parent(), self._labels, l)
|
|
87
|
+
|
|
88
|
+
def automorphism_group(self):
|
|
89
|
+
r"""
|
|
90
|
+
Return the group of permutations whose action on this subset leave
|
|
91
|
+
it fixed.
|
|
92
|
+
|
|
93
|
+
EXAMPLES::
|
|
94
|
+
|
|
95
|
+
sage: F = species.SubsetSpecies()
|
|
96
|
+
sage: a = F.structures([1,2,3,4])[6]; a
|
|
97
|
+
{1, 3}
|
|
98
|
+
sage: a.automorphism_group() # needs sage.groups
|
|
99
|
+
Permutation Group with generators [(2,4), (1,3)]
|
|
100
|
+
|
|
101
|
+
::
|
|
102
|
+
|
|
103
|
+
sage: [a.transport(g) for g in a.automorphism_group()] # needs sage.groups
|
|
104
|
+
[{1, 3}, {1, 3}, {1, 3}, {1, 3}]
|
|
105
|
+
"""
|
|
106
|
+
from sage.groups.perm_gps.permgroup_named import SymmetricGroup
|
|
107
|
+
from sage.groups.perm_gps.permgroup import PermutationGroup
|
|
108
|
+
a = SymmetricGroup(self._list)
|
|
109
|
+
b = SymmetricGroup(self.complement()._list)
|
|
110
|
+
return PermutationGroup(a.gens() + b.gens())
|
|
111
|
+
|
|
112
|
+
def complement(self):
|
|
113
|
+
r"""
|
|
114
|
+
Return the complement of ``self``.
|
|
115
|
+
|
|
116
|
+
EXAMPLES::
|
|
117
|
+
|
|
118
|
+
sage: F = species.SubsetSpecies()
|
|
119
|
+
sage: a = F.structures(["a", "b", "c"])[5]; a
|
|
120
|
+
{'a', 'c'}
|
|
121
|
+
sage: a.complement()
|
|
122
|
+
{'b'}
|
|
123
|
+
"""
|
|
124
|
+
new_list = [i for i in range(1, len(self._labels)+1) if i not in self._list]
|
|
125
|
+
return SubsetSpeciesStructure(self.parent(), self._labels, new_list)
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
class SubsetSpecies(GenericCombinatorialSpecies, UniqueRepresentation):
|
|
129
|
+
@staticmethod
|
|
130
|
+
@accept_size
|
|
131
|
+
def __classcall__(cls, *args, **kwds):
|
|
132
|
+
"""
|
|
133
|
+
EXAMPLES::
|
|
134
|
+
|
|
135
|
+
sage: S = species.SubsetSpecies(); S
|
|
136
|
+
Subset species
|
|
137
|
+
"""
|
|
138
|
+
return super().__classcall__(cls, *args, **kwds)
|
|
139
|
+
|
|
140
|
+
def __init__(self, min=None, max=None, weight=None):
|
|
141
|
+
"""
|
|
142
|
+
Return the species of subsets.
|
|
143
|
+
|
|
144
|
+
EXAMPLES::
|
|
145
|
+
|
|
146
|
+
sage: S = species.SubsetSpecies()
|
|
147
|
+
sage: S.generating_series()[0:5]
|
|
148
|
+
[1, 2, 2, 4/3, 2/3]
|
|
149
|
+
sage: S.isotype_generating_series()[0:5]
|
|
150
|
+
[1, 2, 3, 4, 5]
|
|
151
|
+
|
|
152
|
+
sage: S = species.SubsetSpecies()
|
|
153
|
+
sage: c = S.generating_series()[0:3]
|
|
154
|
+
sage: S._check()
|
|
155
|
+
True
|
|
156
|
+
sage: S == loads(dumps(S))
|
|
157
|
+
True
|
|
158
|
+
"""
|
|
159
|
+
GenericCombinatorialSpecies.__init__(self, min=None, max=None, weight=None)
|
|
160
|
+
self._name = "Subset species"
|
|
161
|
+
|
|
162
|
+
_default_structure_class = SubsetSpeciesStructure
|
|
163
|
+
|
|
164
|
+
def _structures(self, structure_class, labels):
|
|
165
|
+
"""
|
|
166
|
+
EXAMPLES::
|
|
167
|
+
|
|
168
|
+
sage: S = species.SubsetSpecies()
|
|
169
|
+
sage: S.structures([1,2]).list()
|
|
170
|
+
[{}, {1}, {2}, {1, 2}]
|
|
171
|
+
sage: S.structures(['a','b']).list()
|
|
172
|
+
[{}, {'a'}, {'b'}, {'a', 'b'}]
|
|
173
|
+
"""
|
|
174
|
+
from sage.combinat.combination import Combinations
|
|
175
|
+
for c in Combinations(range(1, len(labels)+1)):
|
|
176
|
+
yield structure_class(self, labels, c)
|
|
177
|
+
|
|
178
|
+
def _isotypes(self, structure_class, labels):
|
|
179
|
+
"""
|
|
180
|
+
EXAMPLES::
|
|
181
|
+
|
|
182
|
+
sage: S = species.SubsetSpecies()
|
|
183
|
+
sage: S.isotypes([1,2]).list()
|
|
184
|
+
[{}, {1}, {1, 2}]
|
|
185
|
+
sage: S.isotypes(['a','b']).list()
|
|
186
|
+
[{}, {'a'}, {'a', 'b'}]
|
|
187
|
+
"""
|
|
188
|
+
for i in range(len(labels)+1):
|
|
189
|
+
yield structure_class(self, labels, range(1, i+1))
|
|
190
|
+
|
|
191
|
+
def _gs_callable(self, base_ring, n):
|
|
192
|
+
"""
|
|
193
|
+
The generating series for the species of subsets is
|
|
194
|
+
`e^{2x}`.
|
|
195
|
+
|
|
196
|
+
EXAMPLES::
|
|
197
|
+
|
|
198
|
+
sage: S = species.SubsetSpecies()
|
|
199
|
+
sage: [S.generating_series().coefficient(i) for i in range(5)]
|
|
200
|
+
[1, 2, 2, 4/3, 2/3]
|
|
201
|
+
"""
|
|
202
|
+
return base_ring(2)**n / base_ring(factorial(n))
|
|
203
|
+
|
|
204
|
+
def _itgs_callable(self, base_ring, n):
|
|
205
|
+
r"""
|
|
206
|
+
The generating series for the species of subsets is
|
|
207
|
+
`e^{2x}`.
|
|
208
|
+
|
|
209
|
+
EXAMPLES::
|
|
210
|
+
|
|
211
|
+
sage: S = species.SubsetSpecies()
|
|
212
|
+
sage: S.isotype_generating_series()[0:5]
|
|
213
|
+
[1, 2, 3, 4, 5]
|
|
214
|
+
"""
|
|
215
|
+
return base_ring(n + 1)
|
|
216
|
+
|
|
217
|
+
def _cis(self, series_ring, base_ring):
|
|
218
|
+
r"""
|
|
219
|
+
The cycle index series for the species of subsets satisfies.
|
|
220
|
+
|
|
221
|
+
.. MATH::
|
|
222
|
+
|
|
223
|
+
Z_{\mathfrak{p}} = Z_{\mathcal{E}} \cdot Z_{\mathcal{E}}.
|
|
224
|
+
|
|
225
|
+
EXAMPLES::
|
|
226
|
+
|
|
227
|
+
sage: S = species.SubsetSpecies()
|
|
228
|
+
sage: S.cycle_index_series()[0:5] # needs sage.modules
|
|
229
|
+
[p[],
|
|
230
|
+
2*p[1],
|
|
231
|
+
2*p[1, 1] + p[2],
|
|
232
|
+
4/3*p[1, 1, 1] + 2*p[2, 1] + 2/3*p[3],
|
|
233
|
+
2/3*p[1, 1, 1, 1] + 2*p[2, 1, 1] + 1/2*p[2, 2] + 4/3*p[3, 1] + 1/2*p[4]]
|
|
234
|
+
"""
|
|
235
|
+
ciset = SetSpecies().cycle_index_series(base_ring)
|
|
236
|
+
res = ciset**2
|
|
237
|
+
if self.is_weighted():
|
|
238
|
+
res *= self._weight
|
|
239
|
+
return res
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
#Backward compatibility
|
|
243
|
+
SubsetSpecies_class = SubsetSpecies
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-combinat
|
|
2
|
+
"""
|
|
3
|
+
Sum species
|
|
4
|
+
"""
|
|
5
|
+
#*****************************************************************************
|
|
6
|
+
# Copyright (C) 2008 Mike Hansen <mhansen@gmail.com>,
|
|
7
|
+
#
|
|
8
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
9
|
+
#
|
|
10
|
+
# This code is distributed in the hope that it will be useful,
|
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
13
|
+
# General Public License for more details.
|
|
14
|
+
#
|
|
15
|
+
# The full text of the GPL is available at:
|
|
16
|
+
#
|
|
17
|
+
# http://www.gnu.org/licenses/
|
|
18
|
+
#*****************************************************************************
|
|
19
|
+
from .species import GenericCombinatorialSpecies
|
|
20
|
+
from .structure import SpeciesStructureWrapper
|
|
21
|
+
from sage.structure.unique_representation import UniqueRepresentation
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class SumSpeciesStructure(SpeciesStructureWrapper):
|
|
25
|
+
pass
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class SumSpecies(GenericCombinatorialSpecies, UniqueRepresentation):
|
|
29
|
+
def __init__(self, F, G, min=None, max=None, weight=None):
|
|
30
|
+
"""
|
|
31
|
+
Return the sum of two species.
|
|
32
|
+
|
|
33
|
+
EXAMPLES::
|
|
34
|
+
|
|
35
|
+
sage: S = species.PermutationSpecies()
|
|
36
|
+
sage: A = S+S
|
|
37
|
+
sage: A.generating_series()[:5]
|
|
38
|
+
[2, 2, 2, 2, 2]
|
|
39
|
+
|
|
40
|
+
sage: P = species.PermutationSpecies()
|
|
41
|
+
sage: F = P + P
|
|
42
|
+
sage: F._check() # needs sage.libs.flint
|
|
43
|
+
True
|
|
44
|
+
sage: F == loads(dumps(F))
|
|
45
|
+
True
|
|
46
|
+
|
|
47
|
+
TESTS::
|
|
48
|
+
|
|
49
|
+
sage: A = species.SingletonSpecies() + species.SingletonSpecies()
|
|
50
|
+
sage: B = species.SingletonSpecies() + species.SingletonSpecies()
|
|
51
|
+
sage: C = species.SingletonSpecies() + species.SingletonSpecies(min=2)
|
|
52
|
+
sage: A is B
|
|
53
|
+
True
|
|
54
|
+
sage: (A is C) or (A == C)
|
|
55
|
+
False
|
|
56
|
+
"""
|
|
57
|
+
self._F = F
|
|
58
|
+
self._G = G
|
|
59
|
+
|
|
60
|
+
self._state_info = [F, G]
|
|
61
|
+
|
|
62
|
+
GenericCombinatorialSpecies.__init__(self, min=None, max=None, weight=None)
|
|
63
|
+
|
|
64
|
+
_default_structure_class = SumSpeciesStructure
|
|
65
|
+
|
|
66
|
+
def left_summand(self):
|
|
67
|
+
"""
|
|
68
|
+
Return the left summand of this species.
|
|
69
|
+
|
|
70
|
+
EXAMPLES::
|
|
71
|
+
|
|
72
|
+
sage: P = species.PermutationSpecies()
|
|
73
|
+
sage: F = P + P*P
|
|
74
|
+
sage: F.left_summand()
|
|
75
|
+
Permutation species
|
|
76
|
+
"""
|
|
77
|
+
return self._F
|
|
78
|
+
|
|
79
|
+
def right_summand(self):
|
|
80
|
+
"""
|
|
81
|
+
Return the right summand of this species.
|
|
82
|
+
|
|
83
|
+
EXAMPLES::
|
|
84
|
+
|
|
85
|
+
sage: P = species.PermutationSpecies()
|
|
86
|
+
sage: F = P + P*P
|
|
87
|
+
sage: F.right_summand()
|
|
88
|
+
Product of (Permutation species) and (Permutation species)
|
|
89
|
+
"""
|
|
90
|
+
return self._G
|
|
91
|
+
|
|
92
|
+
def _name(self):
|
|
93
|
+
"""
|
|
94
|
+
Note that we use a function to return the name of this species
|
|
95
|
+
because we can't do it in the __init__ method due to it
|
|
96
|
+
requiring that self.left_summand() and self.right_summand()
|
|
97
|
+
already be unpickled.
|
|
98
|
+
|
|
99
|
+
EXAMPLES::
|
|
100
|
+
|
|
101
|
+
sage: P = species.PermutationSpecies()
|
|
102
|
+
sage: F = P + P
|
|
103
|
+
sage: F._name()
|
|
104
|
+
'Sum of (Permutation species) and (Permutation species)'
|
|
105
|
+
"""
|
|
106
|
+
return "Sum of (%s) and (%s)" % (self.left_summand(),
|
|
107
|
+
self.right_summand())
|
|
108
|
+
|
|
109
|
+
def _structures(self, structure_class, labels):
|
|
110
|
+
"""
|
|
111
|
+
EXAMPLES::
|
|
112
|
+
|
|
113
|
+
sage: P = species.PermutationSpecies()
|
|
114
|
+
sage: F = P + P
|
|
115
|
+
sage: F.structures([1,2]).list()
|
|
116
|
+
[[1, 2], [2, 1], [1, 2], [2, 1]]
|
|
117
|
+
"""
|
|
118
|
+
for res in self.left_summand().structures(labels):
|
|
119
|
+
yield structure_class(self, res, tag='left')
|
|
120
|
+
|
|
121
|
+
for res in self.right_summand().structures(labels):
|
|
122
|
+
yield structure_class(self, res, tag='right')
|
|
123
|
+
|
|
124
|
+
def _isotypes(self, structure_class, labels):
|
|
125
|
+
"""
|
|
126
|
+
EXAMPLES::
|
|
127
|
+
|
|
128
|
+
sage: P = species.PermutationSpecies()
|
|
129
|
+
sage: F = P + P
|
|
130
|
+
sage: F.isotypes([1,2]).list() # needs sage.libs.flint
|
|
131
|
+
[[2, 1], [1, 2], [2, 1], [1, 2]]
|
|
132
|
+
"""
|
|
133
|
+
for res in self._F.isotypes(labels):
|
|
134
|
+
yield structure_class(self, res, tag='left')
|
|
135
|
+
|
|
136
|
+
for res in self._G.isotypes(labels):
|
|
137
|
+
yield structure_class(self, res, tag='right')
|
|
138
|
+
|
|
139
|
+
def _gs(self, series_ring, base_ring):
|
|
140
|
+
"""
|
|
141
|
+
Return the cycle index series of this species.
|
|
142
|
+
|
|
143
|
+
EXAMPLES::
|
|
144
|
+
|
|
145
|
+
sage: P = species.PermutationSpecies()
|
|
146
|
+
sage: F = P + P
|
|
147
|
+
sage: F.generating_series()[:5]
|
|
148
|
+
[2, 2, 2, 2, 2]
|
|
149
|
+
"""
|
|
150
|
+
return (self.left_summand().generating_series(base_ring) +
|
|
151
|
+
self.right_summand().generating_series(base_ring))
|
|
152
|
+
|
|
153
|
+
def _itgs(self, series_ring, base_ring):
|
|
154
|
+
"""
|
|
155
|
+
Return the isomorphism type generating series of this species.
|
|
156
|
+
|
|
157
|
+
EXAMPLES::
|
|
158
|
+
|
|
159
|
+
sage: P = species.PermutationSpecies()
|
|
160
|
+
sage: F = P + P
|
|
161
|
+
sage: F.isotype_generating_series()[:5] # needs sage.libs.flint
|
|
162
|
+
[2, 2, 4, 6, 10]
|
|
163
|
+
"""
|
|
164
|
+
return (self.left_summand().isotype_generating_series(base_ring) +
|
|
165
|
+
self.right_summand().isotype_generating_series(base_ring))
|
|
166
|
+
|
|
167
|
+
def _cis(self, series_ring, base_ring):
|
|
168
|
+
"""
|
|
169
|
+
Return the generating series of this species.
|
|
170
|
+
|
|
171
|
+
EXAMPLES::
|
|
172
|
+
|
|
173
|
+
sage: P = species.PermutationSpecies()
|
|
174
|
+
sage: F = P + P
|
|
175
|
+
sage: F.cycle_index_series()[:5] # needs sage.modules
|
|
176
|
+
[2*p[],
|
|
177
|
+
2*p[1],
|
|
178
|
+
2*p[1, 1] + 2*p[2],
|
|
179
|
+
2*p[1, 1, 1] + 2*p[2, 1] + 2*p[3],
|
|
180
|
+
2*p[1, 1, 1, 1] + 2*p[2, 1, 1] + 2*p[2, 2] + 2*p[3, 1] + 2*p[4]]
|
|
181
|
+
"""
|
|
182
|
+
return (self.left_summand().cycle_index_series(base_ring) +
|
|
183
|
+
self.right_summand().cycle_index_series(base_ring))
|
|
184
|
+
|
|
185
|
+
def weight_ring(self):
|
|
186
|
+
"""
|
|
187
|
+
Return the weight ring for this species. This is determined by
|
|
188
|
+
asking Sage's coercion model what the result is when you add
|
|
189
|
+
elements of the weight rings for each of the operands.
|
|
190
|
+
|
|
191
|
+
EXAMPLES::
|
|
192
|
+
|
|
193
|
+
sage: S = species.SetSpecies()
|
|
194
|
+
sage: C = S+S
|
|
195
|
+
sage: C.weight_ring()
|
|
196
|
+
Rational Field
|
|
197
|
+
|
|
198
|
+
::
|
|
199
|
+
|
|
200
|
+
sage: S = species.SetSpecies(weight=QQ['t'].gen())
|
|
201
|
+
sage: C = S + S
|
|
202
|
+
sage: C.weight_ring()
|
|
203
|
+
Univariate Polynomial Ring in t over Rational Field
|
|
204
|
+
"""
|
|
205
|
+
return self._common_parent([self.left_summand().weight_ring(),
|
|
206
|
+
self.right_summand().weight_ring()])
|
|
207
|
+
|
|
208
|
+
def _equation(self, var_mapping):
|
|
209
|
+
"""
|
|
210
|
+
Return the right hand side of an algebraic equation satisfied by
|
|
211
|
+
this species. This is a utility function called by the
|
|
212
|
+
algebraic_equation_system method.
|
|
213
|
+
|
|
214
|
+
EXAMPLES::
|
|
215
|
+
|
|
216
|
+
sage: X = species.SingletonSpecies()
|
|
217
|
+
sage: S = X + X
|
|
218
|
+
sage: S.algebraic_equation_system() # needs sage.graphs
|
|
219
|
+
[node1 + (-2*z)]
|
|
220
|
+
"""
|
|
221
|
+
return sum(var_mapping[operand] for operand in self._state_info)
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
#Backward compatibility
|
|
225
|
+
SumSpecies_class = SumSpecies
|