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,117 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-combinat
|
|
2
|
+
# sage.doctest: needs sage.combinat sage.modules sage.rings.number_field
|
|
3
|
+
r"""
|
|
4
|
+
N=2 Super Lie Conformal Algebra
|
|
5
|
+
|
|
6
|
+
The `N=2` super Lie conformal algebra is an extension of the Virasoro
|
|
7
|
+
Lie conformal algebra (with generators `L,C`) by an even generator `J`
|
|
8
|
+
which is primary of conformal weight `1` and two odd generators
|
|
9
|
+
`G_1,G_2` which are primary of conformal weight `3/2`. The remaining
|
|
10
|
+
`\lambda`-brackets are given by:
|
|
11
|
+
|
|
12
|
+
.. MATH::
|
|
13
|
+
|
|
14
|
+
[J_\lambda J] &= \frac{\lambda}{3} C, \\
|
|
15
|
+
[J_\lambda G_1] &= G_1, \\
|
|
16
|
+
[J_\lambda G_2] &= -G_2, \\
|
|
17
|
+
[{G_1}_\lambda G_1] &= [{G_2}_\lambda G_2 ] = 0, \\
|
|
18
|
+
[{G_1}_\lambda G_2] &= L + \frac{1}{2} TJ + \lambda J + \frac{\lambda^2}{6}C.
|
|
19
|
+
|
|
20
|
+
AUTHORS:
|
|
21
|
+
|
|
22
|
+
- Reimundo Heluani (2020-06-03): Initial implementation.
|
|
23
|
+
"""
|
|
24
|
+
# *****************************************************************************
|
|
25
|
+
# Copyright (C) 2020 Reimundo Heluani <heluani@potuz.net>
|
|
26
|
+
#
|
|
27
|
+
# This program is free software: you can redistribute it and/or modify
|
|
28
|
+
# it under the terms of the GNU General Public License as published by
|
|
29
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
30
|
+
# (at your option) any later version.
|
|
31
|
+
# https://www.gnu.org/licenses/
|
|
32
|
+
# ****************************************************************************
|
|
33
|
+
|
|
34
|
+
from .graded_lie_conformal_algebra import GradedLieConformalAlgebra
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class N2LieConformalAlgebra(GradedLieConformalAlgebra):
|
|
38
|
+
"""
|
|
39
|
+
The N=2 super Lie conformal algebra.
|
|
40
|
+
|
|
41
|
+
INPUT:
|
|
42
|
+
|
|
43
|
+
- ``R`` -- a commutative ring; the base ring of this super
|
|
44
|
+
Lie conformal algebra
|
|
45
|
+
|
|
46
|
+
EXAMPLES::
|
|
47
|
+
|
|
48
|
+
sage: x = polygen(ZZ, 'x')
|
|
49
|
+
sage: F.<x> = NumberField(x^2 - 2)
|
|
50
|
+
sage: R = lie_conformal_algebras.N2(F); R
|
|
51
|
+
The N=2 super Lie conformal algebra over Number Field in x with defining polynomial x^2 - 2
|
|
52
|
+
sage: R.inject_variables()
|
|
53
|
+
Defining L, J, G1, G2, C
|
|
54
|
+
sage: G1.bracket(G2)
|
|
55
|
+
{0: L + 1/2*TJ, 1: J, 2: 1/3*C}
|
|
56
|
+
sage: G2.bracket(G1)
|
|
57
|
+
{0: L - 1/2*TJ, 1: -J, 2: 1/3*C}
|
|
58
|
+
sage: G1.degree()
|
|
59
|
+
3/2
|
|
60
|
+
sage: J.degree()
|
|
61
|
+
1
|
|
62
|
+
|
|
63
|
+
The topological twist is a Virasoro vector with central
|
|
64
|
+
charge 0::
|
|
65
|
+
|
|
66
|
+
sage: L2 = L - 1/2*J.T()
|
|
67
|
+
sage: L2.bracket(L2) == {0: L2.T(), 1: 2*L2}
|
|
68
|
+
True
|
|
69
|
+
|
|
70
|
+
The sum of the fermions is a generator of the Neveu-Schwarz
|
|
71
|
+
Lie conformal algebra::
|
|
72
|
+
|
|
73
|
+
sage: G = (G1 + G2)
|
|
74
|
+
sage: G.bracket(G)
|
|
75
|
+
{0: 2*L, 2: 2/3*C}
|
|
76
|
+
"""
|
|
77
|
+
def __init__(self, R):
|
|
78
|
+
"""
|
|
79
|
+
Initialize ``self``.
|
|
80
|
+
|
|
81
|
+
TESTS::
|
|
82
|
+
|
|
83
|
+
sage: V = lie_conformal_algebras.N2(QQ)
|
|
84
|
+
sage: TestSuite(V).run()
|
|
85
|
+
"""
|
|
86
|
+
n2dict = {('L', 'L'): {0: {('L', 1): 1},
|
|
87
|
+
1: {('L', 0): 2},
|
|
88
|
+
3: {('C', 0): R(2).inverse_of_unit()}},
|
|
89
|
+
('L', 'G1'): {0: {('G1', 1): 1},
|
|
90
|
+
1: {('G1', 0): 3 * R(2).inverse_of_unit()}},
|
|
91
|
+
('L', 'G2'): {0: {('G2', 1): 1},
|
|
92
|
+
1: {('G2', 0): 3 * R(2).inverse_of_unit()}},
|
|
93
|
+
('G1', 'G2'): {0: {('L', 0): 1, ('J', 1): R(2).inverse_of_unit()},
|
|
94
|
+
1: {('J', 0): 1},
|
|
95
|
+
2: {('C', 0): R(3).inverse_of_unit()}},
|
|
96
|
+
('L', 'J'): {0: {('J', 1): 1}, 1: {('J', 0): 1}},
|
|
97
|
+
('J', 'J'): {1: {('C', 0): R(3).inverse_of_unit()}},
|
|
98
|
+
('J', 'G1'): {0: {('G1', 0): 1}},
|
|
99
|
+
('J', 'G2'): {0: {('G2', 0): -1}}}
|
|
100
|
+
from sage.rings.rational_field import QQ
|
|
101
|
+
weights = (2, 1, QQ(3) / 2, QQ(3) / 2)
|
|
102
|
+
parity = (0, 0, 1, 1)
|
|
103
|
+
GradedLieConformalAlgebra.__init__(self, R, n2dict,
|
|
104
|
+
names=('L', 'J', 'G1', 'G2'),
|
|
105
|
+
central_elements=('C',),
|
|
106
|
+
weights=weights, parity=parity)
|
|
107
|
+
|
|
108
|
+
def _repr_(self):
|
|
109
|
+
"""
|
|
110
|
+
The name of this Lie conformal algebra.
|
|
111
|
+
|
|
112
|
+
EXAMPLES::
|
|
113
|
+
|
|
114
|
+
sage: R = lie_conformal_algebras.N2(QQbar); R
|
|
115
|
+
The N=2 super Lie conformal algebra over Algebraic Field
|
|
116
|
+
"""
|
|
117
|
+
return f"The N=2 super Lie conformal algebra over {self.base_ring()}"
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-combinat
|
|
2
|
+
# sage.doctest: needs sage.combinat sage.modules
|
|
3
|
+
r"""
|
|
4
|
+
Neveu-Schwarz Super Lie Conformal Algebra
|
|
5
|
+
|
|
6
|
+
The `N=1` or *Neveu-Schwarz* super Lie conformal algebra is a super
|
|
7
|
+
extension of the Virasoro Lie conformal algebra with generators `L`
|
|
8
|
+
and `C` by an odd primary generator `G` of conformal weight `3/2`. The
|
|
9
|
+
remaining `\lambda`-bracket is given by:
|
|
10
|
+
|
|
11
|
+
.. MATH::
|
|
12
|
+
|
|
13
|
+
[G_\lambda G] = 2L + \frac{\lambda^2}{3} C.
|
|
14
|
+
|
|
15
|
+
AUTHORS:
|
|
16
|
+
|
|
17
|
+
- Reimundo Heluani (2020-06-03): Initial implementation.
|
|
18
|
+
"""
|
|
19
|
+
#******************************************************************************
|
|
20
|
+
# Copyright (C) 2020 Reimundo Heluani <heluani@potuz.net>
|
|
21
|
+
#
|
|
22
|
+
# This program is free software: you can redistribute it and/or modify
|
|
23
|
+
# it under the terms of the GNU General Public License as published by
|
|
24
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
25
|
+
# (at your option) any later version.
|
|
26
|
+
# http://www.gnu.org/licenses/
|
|
27
|
+
#*****************************************************************************
|
|
28
|
+
|
|
29
|
+
from .graded_lie_conformal_algebra import GradedLieConformalAlgebra
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class NeveuSchwarzLieConformalAlgebra(GradedLieConformalAlgebra):
|
|
33
|
+
"""
|
|
34
|
+
The Neveu-Schwarz super Lie conformal algebra.
|
|
35
|
+
|
|
36
|
+
INPUT:
|
|
37
|
+
|
|
38
|
+
- ``R`` -- a commutative Ring; the base ring of this Lie
|
|
39
|
+
conformal algebra
|
|
40
|
+
|
|
41
|
+
EXAMPLES::
|
|
42
|
+
|
|
43
|
+
sage: R = lie_conformal_algebras.NeveuSchwarz(AA); R
|
|
44
|
+
The Neveu-Schwarz super Lie conformal algebra over Algebraic Real Field
|
|
45
|
+
sage: R.structure_coefficients()
|
|
46
|
+
Finite family {('G', 'G'): ((0, 2*L), (2, 2/3*C)), ('G', 'L'): ((0, 1/2*TG), (1, 3/2*G)), ('L', 'G'): ((0, TG), (1, 3/2*G)), ('L', 'L'): ((0, TL), (1, 2*L), (3, 1/2*C))}
|
|
47
|
+
sage: R.inject_variables()
|
|
48
|
+
Defining L, G, C
|
|
49
|
+
sage: G.nproduct(G,0)
|
|
50
|
+
2*L
|
|
51
|
+
sage: G.degree()
|
|
52
|
+
3/2
|
|
53
|
+
"""
|
|
54
|
+
def __init__(self, R):
|
|
55
|
+
"""
|
|
56
|
+
Initialize ``self``.
|
|
57
|
+
|
|
58
|
+
TESTS::
|
|
59
|
+
|
|
60
|
+
sage: V = lie_conformal_algebras.NeveuSchwarz(QQ)
|
|
61
|
+
sage: TestSuite(V).run()
|
|
62
|
+
"""
|
|
63
|
+
nsdict = {('L', 'L'): {0: {('L', 1): 1},
|
|
64
|
+
1: {('L', 0): 2},
|
|
65
|
+
3: {('C', 0): R(2).inverse_of_unit()}},
|
|
66
|
+
('L', 'G'): {0: {('G', 1): 1},
|
|
67
|
+
1: {('G', 0): R(3) * R(2).inverse_of_unit()}},
|
|
68
|
+
('G', 'G'): {0: {('L', 0): 2},
|
|
69
|
+
2: {('C', 0): R(2) * R(3).inverse_of_unit()}}}
|
|
70
|
+
from sage.rings.rational_field import QQ
|
|
71
|
+
weights = (2, QQ((3, 2)))
|
|
72
|
+
parity = (0, 1)
|
|
73
|
+
GradedLieConformalAlgebra.__init__(self, R, nsdict, names=('L', 'G'),
|
|
74
|
+
central_elements=('C',), weights=weights, parity=parity)
|
|
75
|
+
|
|
76
|
+
def _repr_(self):
|
|
77
|
+
"""
|
|
78
|
+
The name of this Lie Conformal algebra.
|
|
79
|
+
|
|
80
|
+
EXAMPLES::
|
|
81
|
+
|
|
82
|
+
sage: R = lie_conformal_algebras.NeveuSchwarz(GF(5)); R
|
|
83
|
+
The Neveu-Schwarz super Lie conformal algebra over Finite Field of size 5
|
|
84
|
+
"""
|
|
85
|
+
return "The Neveu-Schwarz super Lie conformal algebra over {}".\
|
|
86
|
+
format(self.base_ring())
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-combinat
|
|
2
|
+
# sage.doctest: needs sage.combinat sage.modules
|
|
3
|
+
r"""
|
|
4
|
+
Virasoro Lie Conformal Algebra
|
|
5
|
+
|
|
6
|
+
The Virasoro Lie conformal algebra is generated by `L` and a central
|
|
7
|
+
element `C`. The `\lambda`-brackets are given by:
|
|
8
|
+
|
|
9
|
+
.. MATH::
|
|
10
|
+
|
|
11
|
+
[L_\lambda L] = T L + 2 \lambda L + \frac{\lambda^3}{12} C.
|
|
12
|
+
|
|
13
|
+
It is an H-graded Lie conformal algebra with `L` of degree `2`.
|
|
14
|
+
|
|
15
|
+
AUTHORS:
|
|
16
|
+
|
|
17
|
+
- Reimundo Heluani (2019-08-09): Initial implementation.
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
#******************************************************************************
|
|
21
|
+
# Copyright (C) 2019 Reimundo Heluani <heluani@potuz.net>
|
|
22
|
+
#
|
|
23
|
+
# This program is free software: you can redistribute it and/or modify
|
|
24
|
+
# it under the terms of the GNU General Public License as published by
|
|
25
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
26
|
+
# (at your option) any later version.
|
|
27
|
+
# http://www.gnu.org/licenses/
|
|
28
|
+
#*****************************************************************************
|
|
29
|
+
|
|
30
|
+
from .graded_lie_conformal_algebra import GradedLieConformalAlgebra
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class VirasoroLieConformalAlgebra(GradedLieConformalAlgebra):
|
|
34
|
+
"""
|
|
35
|
+
The Virasoro Lie Conformal algebra over `R`.
|
|
36
|
+
|
|
37
|
+
INPUT:
|
|
38
|
+
|
|
39
|
+
- ``R`` -- a commutative ring; behaviour is undefined if `R` is
|
|
40
|
+
not a Field of characteristic zero
|
|
41
|
+
|
|
42
|
+
EXAMPLES::
|
|
43
|
+
|
|
44
|
+
sage: Vir = lie_conformal_algebras.Virasoro(QQ)
|
|
45
|
+
sage: Vir.category()
|
|
46
|
+
Category of H-graded finitely generated Lie conformal algebras with basis over Rational Field
|
|
47
|
+
sage: Vir.inject_variables()
|
|
48
|
+
Defining L, C
|
|
49
|
+
sage: L.bracket(L)
|
|
50
|
+
{0: TL, 1: 2*L, 3: 1/2*C}
|
|
51
|
+
|
|
52
|
+
TESTS::
|
|
53
|
+
|
|
54
|
+
sage: Vir.gens()
|
|
55
|
+
(L, C)
|
|
56
|
+
"""
|
|
57
|
+
def __init__(self, R):
|
|
58
|
+
"""
|
|
59
|
+
Initialize ``self``.
|
|
60
|
+
|
|
61
|
+
TESTS::
|
|
62
|
+
|
|
63
|
+
sage: V = lie_conformal_algebras.Virasoro(QQ)
|
|
64
|
+
sage: TestSuite(V).run()
|
|
65
|
+
"""
|
|
66
|
+
virdict = {('L', 'L'): {0: {('L', 1): 1},
|
|
67
|
+
1: {('L', 0): 2},
|
|
68
|
+
3: {('C', 0): R(2).inverse_of_unit()}}}
|
|
69
|
+
GradedLieConformalAlgebra.__init__(self, R, virdict,
|
|
70
|
+
names=('L',), central_elements=('C',), weights=(2,))
|
|
71
|
+
|
|
72
|
+
def _repr_(self):
|
|
73
|
+
"""
|
|
74
|
+
The name of this Lie conformal algebra.
|
|
75
|
+
|
|
76
|
+
EXAMPLES::
|
|
77
|
+
|
|
78
|
+
sage: lie_conformal_algebras.Virasoro(QQbar)
|
|
79
|
+
The Virasoro Lie conformal algebra over Algebraic Field
|
|
80
|
+
"""
|
|
81
|
+
return "The Virasoro Lie conformal algebra over {}".format(
|
|
82
|
+
self.base_ring())
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-combinat
|
|
2
|
+
# sage.doctest: needs sage.combinat sage.modules
|
|
3
|
+
r"""
|
|
4
|
+
Weyl Lie Conformal Algebra
|
|
5
|
+
|
|
6
|
+
Given a commutative ring `R`, a free `R`-module `M` and a
|
|
7
|
+
non-degenerate, skew-symmetric, bilinear pairing
|
|
8
|
+
`\langle \cdot,\cdot\rangle: M \otimes_R M \rightarrow R`. The *Weyl*
|
|
9
|
+
Lie conformal algebra associated to this datum is the free
|
|
10
|
+
`R[T]`-module generated by `M` plus a central vector `K`. The
|
|
11
|
+
non-vanishing `\lambda`-brackets are given by:
|
|
12
|
+
|
|
13
|
+
.. MATH::
|
|
14
|
+
|
|
15
|
+
[v_\lambda w] = \langle v, w\rangle K.
|
|
16
|
+
|
|
17
|
+
This is not an H-graded Lie conformal algebra. The choice of a
|
|
18
|
+
Lagrangian decomposition `M = L \oplus L^*` determines an H-graded
|
|
19
|
+
structure. For this H-graded Lie conformal algebra see the
|
|
20
|
+
:mod:`Bosonic Ghosts Lie conformal algebra<sage.algebras.\
|
|
21
|
+
lie_conformal_algebras.bosonic_ghosts_lie_conformal_algebra>`
|
|
22
|
+
|
|
23
|
+
AUTHORS:
|
|
24
|
+
|
|
25
|
+
- Reimundo Heluani (2019-08-09): Initial implementation.
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
# *****************************************************************************
|
|
29
|
+
# Copyright (C) 2019 Reimundo Heluani <heluani@potuz.net>
|
|
30
|
+
#
|
|
31
|
+
# This program is free software: you can redistribute it and/or modify
|
|
32
|
+
# it under the terms of the GNU General Public License as published by
|
|
33
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
34
|
+
# (at your option) any later version.
|
|
35
|
+
# https://www.gnu.org/licenses/
|
|
36
|
+
# ****************************************************************************
|
|
37
|
+
|
|
38
|
+
from .lie_conformal_algebra_with_structure_coefs import \
|
|
39
|
+
LieConformalAlgebraWithStructureCoefficients
|
|
40
|
+
from sage.matrix.special import identity_matrix
|
|
41
|
+
from sage.structure.indexed_generators import standardize_names_index_set
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class WeylLieConformalAlgebra(LieConformalAlgebraWithStructureCoefficients):
|
|
45
|
+
r"""
|
|
46
|
+
The Weyl Lie conformal algebra.
|
|
47
|
+
|
|
48
|
+
INPUT:
|
|
49
|
+
|
|
50
|
+
- ``R`` -- a commutative ring; the base ring of this Lie
|
|
51
|
+
conformal algebra
|
|
52
|
+
- ``ngens`` -- an even positive Integer (default: `2`); the number
|
|
53
|
+
of non-central generators of this Lie conformal algebra
|
|
54
|
+
- ``gram_matrix`` -- a matrix (default: ``None``); a non-singular
|
|
55
|
+
skew-symmetric square matrix with coefficients in `R`
|
|
56
|
+
- ``names`` -- list or tuple of strings; alternative names
|
|
57
|
+
for the generators
|
|
58
|
+
- ``index_set`` -- an enumerated set; alternative indexing set
|
|
59
|
+
for the generators
|
|
60
|
+
|
|
61
|
+
OUTPUT:
|
|
62
|
+
|
|
63
|
+
The Weyl Lie conformal algebra with generators
|
|
64
|
+
`\alpha_i`, `i=1,...,ngens` and `\lambda`-brackets
|
|
65
|
+
|
|
66
|
+
.. MATH::
|
|
67
|
+
|
|
68
|
+
[{\alpha_i}_{\lambda} \alpha_j] = M_{ij} K,
|
|
69
|
+
|
|
70
|
+
where `M` is the ``gram_matrix`` above.
|
|
71
|
+
|
|
72
|
+
.. NOTE::
|
|
73
|
+
|
|
74
|
+
The returned Lie conformal algebra is not `H`-graded. For
|
|
75
|
+
a related `H`-graded Lie conformal algebra see
|
|
76
|
+
:class:`BosonicGhostsLieConformalAlgebra<sage.algebras.\
|
|
77
|
+
lie_conformal_algebras.bosonic_ghosts_lie_conformal_algebra\
|
|
78
|
+
.BosonicGhostsLieConformalAlgebra>`.
|
|
79
|
+
|
|
80
|
+
EXAMPLES::
|
|
81
|
+
|
|
82
|
+
sage: lie_conformal_algebras.Weyl(QQ)
|
|
83
|
+
The Weyl Lie conformal algebra with generators (alpha0, alpha1, K) over Rational Field
|
|
84
|
+
sage: R = lie_conformal_algebras.Weyl(QQbar, gram_matrix=Matrix(QQ,[[0,1],[-1,0]]), names = ('a','b'))
|
|
85
|
+
sage: R.inject_variables()
|
|
86
|
+
Defining a, b, K
|
|
87
|
+
sage: a.bracket(b)
|
|
88
|
+
{0: K}
|
|
89
|
+
sage: b.bracket(a)
|
|
90
|
+
{0: -K}
|
|
91
|
+
|
|
92
|
+
sage: R = lie_conformal_algebras.Weyl(QQbar, ngens=4)
|
|
93
|
+
sage: R.gram_matrix()
|
|
94
|
+
[ 0 0| 1 0]
|
|
95
|
+
[ 0 0| 0 1]
|
|
96
|
+
[-----+-----]
|
|
97
|
+
[-1 0| 0 0]
|
|
98
|
+
[ 0 -1| 0 0]
|
|
99
|
+
sage: R.inject_variables()
|
|
100
|
+
Defining alpha0, alpha1, alpha2, alpha3, K
|
|
101
|
+
sage: alpha0.bracket(alpha2)
|
|
102
|
+
{0: K}
|
|
103
|
+
|
|
104
|
+
sage: R = lie_conformal_algebras.Weyl(QQ); R.category()
|
|
105
|
+
Category of finitely generated Lie conformal algebras with basis over Rational Field
|
|
106
|
+
sage: R in LieConformalAlgebras(QQ).Graded()
|
|
107
|
+
False
|
|
108
|
+
sage: R.inject_variables()
|
|
109
|
+
Defining alpha0, alpha1, K
|
|
110
|
+
sage: alpha0.degree()
|
|
111
|
+
Traceback (most recent call last):
|
|
112
|
+
...
|
|
113
|
+
AttributeError: 'WeylLieConformalAlgebra_with_category.element_class' object has no attribute 'degree'...
|
|
114
|
+
|
|
115
|
+
TESTS::
|
|
116
|
+
|
|
117
|
+
sage: lie_conformal_algebras.Weyl(ZZ, gram_matrix=identity_matrix(ZZ,3))
|
|
118
|
+
Traceback (most recent call last):
|
|
119
|
+
...
|
|
120
|
+
ValueError: the Gram_matrix should be a non degenerate skew-symmetric 3 x 3 matrix, got [1 0 0]
|
|
121
|
+
[0 1 0]
|
|
122
|
+
[0 0 1]
|
|
123
|
+
"""
|
|
124
|
+
def __init__(self, R, ngens=None, gram_matrix=None, names=None,
|
|
125
|
+
index_set=None):
|
|
126
|
+
"""
|
|
127
|
+
Initialize ``self``.
|
|
128
|
+
|
|
129
|
+
TESTS::
|
|
130
|
+
|
|
131
|
+
sage: V = lie_conformal_algebras.Weyl(QQ)
|
|
132
|
+
sage: TestSuite(V).run()
|
|
133
|
+
"""
|
|
134
|
+
from sage.matrix.matrix_space import MatrixSpace
|
|
135
|
+
if ngens:
|
|
136
|
+
from sage.rings.integer_ring import ZZ
|
|
137
|
+
if not (ngens in ZZ and not ngens % 2):
|
|
138
|
+
raise ValueError("ngens needs to be an even positive Integer, "
|
|
139
|
+
f"got {ngens}")
|
|
140
|
+
if gram_matrix is not None:
|
|
141
|
+
if ngens is None:
|
|
142
|
+
ngens = gram_matrix.dimensions()[0]
|
|
143
|
+
try:
|
|
144
|
+
assert (gram_matrix in MatrixSpace(R, ngens, ngens))
|
|
145
|
+
except AssertionError:
|
|
146
|
+
raise ValueError("the Gram_matrix should be a skew-symmetric "
|
|
147
|
+
"{0} x {0} matrix, got {1}".format(ngens, gram_matrix))
|
|
148
|
+
if (not gram_matrix.is_skew_symmetric() or
|
|
149
|
+
gram_matrix.is_singular()):
|
|
150
|
+
raise ValueError("the Gram_matrix should be a non degenerate "
|
|
151
|
+
"skew-symmetric {0} x {0} matrix, got {1}"
|
|
152
|
+
.format(ngens, gram_matrix))
|
|
153
|
+
elif gram_matrix is None:
|
|
154
|
+
if ngens is None:
|
|
155
|
+
ngens = 2
|
|
156
|
+
A = identity_matrix(R, ngens // 2)
|
|
157
|
+
from sage.matrix.special import block_matrix
|
|
158
|
+
gram_matrix = block_matrix([[R.zero(), A], [-A, R.zero()]])
|
|
159
|
+
|
|
160
|
+
latex_names = None
|
|
161
|
+
if (names is None) and (index_set is None):
|
|
162
|
+
names = 'alpha'
|
|
163
|
+
latex_names = tuple(r'\alpha_{%d}' % i
|
|
164
|
+
for i in range(ngens)) + ('K',)
|
|
165
|
+
names, index_set = standardize_names_index_set(names=names,
|
|
166
|
+
index_set=index_set,
|
|
167
|
+
ngens=ngens)
|
|
168
|
+
weyldict = {(i, j): {0: {('K', 0): gram_matrix[index_set.rank(i),
|
|
169
|
+
index_set.rank(j)]}}
|
|
170
|
+
for i in index_set for j in index_set}
|
|
171
|
+
|
|
172
|
+
super().__init__(R, weyldict, names=names,
|
|
173
|
+
latex_names=latex_names,
|
|
174
|
+
index_set=index_set,
|
|
175
|
+
central_elements=('K',))
|
|
176
|
+
self._gram_matrix = gram_matrix
|
|
177
|
+
|
|
178
|
+
def _repr_(self):
|
|
179
|
+
"""
|
|
180
|
+
The name of this Lie conformal algebra.
|
|
181
|
+
|
|
182
|
+
EXAMPLES::
|
|
183
|
+
|
|
184
|
+
sage: R = lie_conformal_algebras.Weyl(ZZ); R
|
|
185
|
+
The Weyl Lie conformal algebra with generators (alpha0, alpha1, K) over Integer Ring
|
|
186
|
+
"""
|
|
187
|
+
return "The Weyl Lie conformal algebra with generators {} over {}"\
|
|
188
|
+
.format(self.gens(), self.base_ring())
|
|
189
|
+
|
|
190
|
+
def gram_matrix(self):
|
|
191
|
+
r"""
|
|
192
|
+
The Gram matrix that specifies the `\lambda`-brackets of the
|
|
193
|
+
generators.
|
|
194
|
+
|
|
195
|
+
EXAMPLES::
|
|
196
|
+
|
|
197
|
+
sage: R = lie_conformal_algebras.Weyl(QQbar, ngens=4)
|
|
198
|
+
sage: R.gram_matrix()
|
|
199
|
+
[ 0 0| 1 0]
|
|
200
|
+
[ 0 0| 0 1]
|
|
201
|
+
[-----+-----]
|
|
202
|
+
[-1 0| 0 0]
|
|
203
|
+
[ 0 -1| 0 0]
|
|
204
|
+
"""
|
|
205
|
+
return self._gram_matrix
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-combinat
|
|
2
|
+
# sage.doctest: needs sage.combinat sage.modules
|
|
3
|
+
"""
|
|
4
|
+
Nil-Coxeter Algebra
|
|
5
|
+
"""
|
|
6
|
+
#*****************************************************************************
|
|
7
|
+
# Copyright (C) 2011 Chris Berg <cberg at fields.utoronto.ca>
|
|
8
|
+
# Anne Schilling <anne at math.ucdavis.edu>
|
|
9
|
+
#
|
|
10
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
11
|
+
# http://www.gnu.org/licenses/
|
|
12
|
+
#*****************************************************************************
|
|
13
|
+
from sage.algebras.iwahori_hecke_algebra import IwahoriHeckeAlgebra
|
|
14
|
+
from sage.combinat.sf.sf import SymmetricFunctions
|
|
15
|
+
from sage.misc.misc_c import prod
|
|
16
|
+
from sage.rings.rational_field import QQ
|
|
17
|
+
from sage.combinat.partition import Partitions
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class NilCoxeterAlgebra(IwahoriHeckeAlgebra.T):
|
|
21
|
+
r"""
|
|
22
|
+
Construct the Nil-Coxeter algebra of given type.
|
|
23
|
+
|
|
24
|
+
This is the algebra
|
|
25
|
+
with generators `u_i` for every node `i` of the corresponding Dynkin
|
|
26
|
+
diagram. It has the usual braid relations (from the Weyl group) as well
|
|
27
|
+
as the quadratic relation `u_i^2 = 0`.
|
|
28
|
+
|
|
29
|
+
INPUT:
|
|
30
|
+
|
|
31
|
+
- ``W`` -- a Weyl group
|
|
32
|
+
- ``base_ring`` -- a ring (default: rational numbers)
|
|
33
|
+
- ``prefix`` -- a label for the generators (default: ``'u'``)
|
|
34
|
+
|
|
35
|
+
EXAMPLES::
|
|
36
|
+
|
|
37
|
+
sage: U = NilCoxeterAlgebra(WeylGroup(['A',3,1]))
|
|
38
|
+
sage: u0, u1, u2, u3 = U.algebra_generators()
|
|
39
|
+
sage: u1*u1
|
|
40
|
+
0
|
|
41
|
+
sage: u2*u1*u2 == u1*u2*u1
|
|
42
|
+
True
|
|
43
|
+
sage: U.an_element()
|
|
44
|
+
u[0,1,2,3] + 2*u[0] + 3*u[1] + 1
|
|
45
|
+
"""
|
|
46
|
+
|
|
47
|
+
def __init__(self, W, base_ring=QQ, prefix='u'):
|
|
48
|
+
r"""
|
|
49
|
+
Initiate the affine nil-Coxeter algebra corresponding to the Weyl
|
|
50
|
+
group `W` over the base ring.
|
|
51
|
+
|
|
52
|
+
EXAMPLES::
|
|
53
|
+
|
|
54
|
+
sage: U = NilCoxeterAlgebra(WeylGroup(['A',3,1])); U
|
|
55
|
+
The Nil-Coxeter Algebra of Type A3~ over Rational Field
|
|
56
|
+
sage: TestSuite(U).run()
|
|
57
|
+
|
|
58
|
+
sage: U = NilCoxeterAlgebra(WeylGroup(['C',3]), ZZ); U
|
|
59
|
+
The Nil-Coxeter Algebra of Type C3 over Integer Ring
|
|
60
|
+
sage: TestSuite(U).run()
|
|
61
|
+
"""
|
|
62
|
+
|
|
63
|
+
self._W = W
|
|
64
|
+
self._n = W.n
|
|
65
|
+
self._base_ring = base_ring
|
|
66
|
+
self._cartan_type = W.cartan_type()
|
|
67
|
+
H = IwahoriHeckeAlgebra(W, 0, 0, base_ring=base_ring)
|
|
68
|
+
super(IwahoriHeckeAlgebra.T, self).__init__(H, prefix=prefix)
|
|
69
|
+
|
|
70
|
+
def _repr_(self):
|
|
71
|
+
r"""
|
|
72
|
+
EXAMPLES::
|
|
73
|
+
|
|
74
|
+
sage: NilCoxeterAlgebra(WeylGroup(['A',3,1])) # indirect doctest
|
|
75
|
+
The Nil-Coxeter Algebra of Type A3~ over Rational Field
|
|
76
|
+
"""
|
|
77
|
+
return "The Nil-Coxeter Algebra of Type %s over %s" % (self._cartan_type._repr_(compact=True), self.base_ring())
|
|
78
|
+
|
|
79
|
+
def homogeneous_generator_noncommutative_variables(self, r):
|
|
80
|
+
r"""
|
|
81
|
+
Give the `r`-th homogeneous function inside the Nil-Coxeter algebra.
|
|
82
|
+
In finite type `A` this is the sum of all decreasing elements of length `r`.
|
|
83
|
+
In affine type `A` this is the sum of all cyclically decreasing elements of length `r`.
|
|
84
|
+
This is only defined in finite type `A`, `B` and affine types `A^{(1)}`, `B^{(1)}`, `C^{(1)}`, `D^{(1)}`.
|
|
85
|
+
|
|
86
|
+
INPUT:
|
|
87
|
+
|
|
88
|
+
- ``r`` -- positive integer at most the rank of the Weyl group
|
|
89
|
+
|
|
90
|
+
EXAMPLES::
|
|
91
|
+
|
|
92
|
+
sage: U = NilCoxeterAlgebra(WeylGroup(['A',3,1]))
|
|
93
|
+
sage: U.homogeneous_generator_noncommutative_variables(2)
|
|
94
|
+
u[1,0] + u[2,0] + u[0,3] + u[3,2] + u[3,1] + u[2,1]
|
|
95
|
+
|
|
96
|
+
sage: U = NilCoxeterAlgebra(WeylGroup(['B',4]))
|
|
97
|
+
sage: U.homogeneous_generator_noncommutative_variables(2)
|
|
98
|
+
u[1,2] + u[2,1] + u[3,1] + u[4,1] + u[2,3] + u[3,2] + u[4,2] + u[3,4] + u[4,3]
|
|
99
|
+
|
|
100
|
+
sage: U = NilCoxeterAlgebra(WeylGroup(['C',3]))
|
|
101
|
+
sage: U.homogeneous_generator_noncommutative_variables(2)
|
|
102
|
+
Traceback (most recent call last):
|
|
103
|
+
...
|
|
104
|
+
AssertionError: Analogue of symmetric functions in noncommutative variables is not defined in type ['C', 3]
|
|
105
|
+
|
|
106
|
+
TESTS::
|
|
107
|
+
|
|
108
|
+
sage: U = NilCoxeterAlgebra(WeylGroup(['B',3,1]))
|
|
109
|
+
sage: U.homogeneous_generator_noncommutative_variables(-1)
|
|
110
|
+
0
|
|
111
|
+
sage: U.homogeneous_generator_noncommutative_variables(0)
|
|
112
|
+
1
|
|
113
|
+
"""
|
|
114
|
+
ct = self._cartan_type
|
|
115
|
+
msg = f"Analogue of symmetric functions in noncommutative variables is not defined in type {ct}"
|
|
116
|
+
assert (len(ct) == 2 and ct[0] in ['A', 'B']) or (len(ct) == 3 and ct[2] == 1), msg
|
|
117
|
+
if r >= self._n:
|
|
118
|
+
return self.zero()
|
|
119
|
+
return self.sum_of_monomials(w for w in self._W.pieri_factors() if w.length() == r)
|
|
120
|
+
|
|
121
|
+
def homogeneous_noncommutative_variables(self, la):
|
|
122
|
+
r"""
|
|
123
|
+
Give the homogeneous function indexed by `la`, viewed inside the Nil-Coxeter algebra.
|
|
124
|
+
|
|
125
|
+
This is only defined in finite type `A`, `B` and affine types `A^{(1)}`, `B^{(1)}`, `C^{(1)}`, `D^{(1)}`.
|
|
126
|
+
|
|
127
|
+
INPUT:
|
|
128
|
+
|
|
129
|
+
- ``la`` -- a partition with first part bounded by the rank of the Weyl group
|
|
130
|
+
|
|
131
|
+
EXAMPLES::
|
|
132
|
+
|
|
133
|
+
sage: U = NilCoxeterAlgebra(WeylGroup(['B',2,1]))
|
|
134
|
+
sage: U.homogeneous_noncommutative_variables([2,1])
|
|
135
|
+
u[1,2,0] + 2*u[2,1,0] + u[0,2,0] + u[0,2,1] + u[1,2,1] + u[2,1,2] + u[2,0,2] + u[1,0,2]
|
|
136
|
+
|
|
137
|
+
TESTS::
|
|
138
|
+
|
|
139
|
+
sage: U = NilCoxeterAlgebra(WeylGroup(['B',2,1]))
|
|
140
|
+
sage: U.homogeneous_noncommutative_variables([])
|
|
141
|
+
1
|
|
142
|
+
"""
|
|
143
|
+
return prod(self.homogeneous_generator_noncommutative_variables(p) for p in la)
|
|
144
|
+
|
|
145
|
+
def k_schur_noncommutative_variables(self, la):
|
|
146
|
+
r"""
|
|
147
|
+
In type `A^{(1)}` this is the `k`-Schur function in noncommutative variables
|
|
148
|
+
defined by Thomas Lam [Lam2005]_.
|
|
149
|
+
|
|
150
|
+
This function is currently only defined in type `A^{(1)}`.
|
|
151
|
+
|
|
152
|
+
INPUT:
|
|
153
|
+
|
|
154
|
+
- ``la`` -- a partition with first part bounded by the rank of the Weyl group
|
|
155
|
+
|
|
156
|
+
EXAMPLES::
|
|
157
|
+
|
|
158
|
+
sage: A = NilCoxeterAlgebra(WeylGroup(['A',3,1]))
|
|
159
|
+
sage: A.k_schur_noncommutative_variables([2,2]) # needs lrcalc_python
|
|
160
|
+
u[0,3,1,0] + u[3,1,2,0] + u[1,2,0,1] + u[3,2,0,3] + u[2,0,3,1] + u[2,3,1,2]
|
|
161
|
+
|
|
162
|
+
TESTS::
|
|
163
|
+
|
|
164
|
+
sage: A = NilCoxeterAlgebra(WeylGroup(['A',3,1]))
|
|
165
|
+
sage: A.k_schur_noncommutative_variables([])
|
|
166
|
+
1
|
|
167
|
+
|
|
168
|
+
sage: A.k_schur_noncommutative_variables([1,2])
|
|
169
|
+
Traceback (most recent call last):
|
|
170
|
+
...
|
|
171
|
+
AssertionError: [1, 2] is not a partition.
|
|
172
|
+
|
|
173
|
+
sage: A.k_schur_noncommutative_variables([4,2])
|
|
174
|
+
Traceback (most recent call last):
|
|
175
|
+
...
|
|
176
|
+
AssertionError: [4, 2] is not a 3-bounded partition.
|
|
177
|
+
|
|
178
|
+
sage: C = NilCoxeterAlgebra(WeylGroup(['C',3,1]))
|
|
179
|
+
sage: C.k_schur_noncommutative_variables([2,2])
|
|
180
|
+
Traceback (most recent call last):
|
|
181
|
+
...
|
|
182
|
+
AssertionError: Weyl Group of type ['C', 3, 1] (as a matrix group acting on the root space) is not affine type A.
|
|
183
|
+
"""
|
|
184
|
+
assert self._cartan_type[0] == 'A' and len(self._cartan_type) == 3 and self._cartan_type[2] == 1, "%s is not affine type A." % (self._W)
|
|
185
|
+
assert la in Partitions(), "%s is not a partition." % (la)
|
|
186
|
+
assert (len(la) == 0 or la[0] < self._W.n), "%s is not a %s-bounded partition." % (la, self._W.n-1)
|
|
187
|
+
Sym = SymmetricFunctions(self._base_ring)
|
|
188
|
+
h = Sym.homogeneous()
|
|
189
|
+
ks = Sym.kschur(self._n-1,1)
|
|
190
|
+
f = h(ks[la])
|
|
191
|
+
return sum(f.coefficient(x)*self.homogeneous_noncommutative_variables(x) for x in f.support())
|