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,139 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-combinat
|
|
2
|
+
# sage.doctest: needs sage.combinat sage.modules
|
|
3
|
+
"""
|
|
4
|
+
Finitely and Freely Generated Lie Conformal Algebras.
|
|
5
|
+
|
|
6
|
+
AUTHORS:
|
|
7
|
+
|
|
8
|
+
- Reimundo Heluani (2019-08-09): Initial implementation.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
#******************************************************************************
|
|
12
|
+
# Copyright (C) 2019 Reimundo Heluani <heluani@potuz.net>
|
|
13
|
+
#
|
|
14
|
+
# This program is free software: you can redistribute it and/or modify
|
|
15
|
+
# it under the terms of the GNU General Public License as published by
|
|
16
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
17
|
+
# (at your option) any later version.
|
|
18
|
+
# http://www.gnu.org/licenses/
|
|
19
|
+
#*****************************************************************************
|
|
20
|
+
|
|
21
|
+
from sage.misc.cachefunc import cached_method
|
|
22
|
+
from sage.categories.lie_conformal_algebras import LieConformalAlgebras
|
|
23
|
+
from .freely_generated_lie_conformal_algebra import \
|
|
24
|
+
FreelyGeneratedLieConformalAlgebra
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class FinitelyFreelyGeneratedLCA(FreelyGeneratedLieConformalAlgebra):
|
|
28
|
+
"""
|
|
29
|
+
Abstract base class for finitely generated Lie conformal
|
|
30
|
+
algebras.
|
|
31
|
+
|
|
32
|
+
This class provides minimal functionality, simply sets the
|
|
33
|
+
number of generators.
|
|
34
|
+
"""
|
|
35
|
+
def __init__(self, R, index_set=None, central_elements=None, category=None,
|
|
36
|
+
element_class=None, prefix=None, names=None, latex_names=None,
|
|
37
|
+
**kwds):
|
|
38
|
+
"""
|
|
39
|
+
Initialize ``self``.
|
|
40
|
+
|
|
41
|
+
TESTS::
|
|
42
|
+
|
|
43
|
+
sage: V = lie_conformal_algebras.Virasoro(QQ)
|
|
44
|
+
sage: TestSuite(V).run()
|
|
45
|
+
"""
|
|
46
|
+
default_category = LieConformalAlgebras(R).FinitelyGenerated()
|
|
47
|
+
try:
|
|
48
|
+
category = default_category.or_subcategory(category)
|
|
49
|
+
except ValueError:
|
|
50
|
+
category = default_category.Super().or_subcategory(category)
|
|
51
|
+
|
|
52
|
+
from sage.categories.sets_cat import Sets
|
|
53
|
+
if index_set not in Sets().Finite():
|
|
54
|
+
raise TypeError("index_set must be a finite set")
|
|
55
|
+
|
|
56
|
+
super().__init__(R,
|
|
57
|
+
index_set=index_set, central_elements=central_elements,
|
|
58
|
+
category=category, element_class=element_class,
|
|
59
|
+
prefix=prefix, **kwds)
|
|
60
|
+
self._ngens = len(self._generators)
|
|
61
|
+
self._names = names
|
|
62
|
+
self._latex_names = latex_names
|
|
63
|
+
|
|
64
|
+
def _repr_(self) -> str:
|
|
65
|
+
"""
|
|
66
|
+
The name of this Lie conformal algebra.
|
|
67
|
+
|
|
68
|
+
EXAMPLES::
|
|
69
|
+
|
|
70
|
+
sage: bosondict = {('a','a'):{1:{('K',0):1}}}
|
|
71
|
+
sage: R = LieConformalAlgebra(QQ,bosondict,names=('a',),central_elements=('K',))
|
|
72
|
+
sage: R
|
|
73
|
+
Lie conformal algebra with generators (a, K) over Rational Field
|
|
74
|
+
"""
|
|
75
|
+
if self._ngens == 1:
|
|
76
|
+
return "Lie conformal algebra generated by {} over {}".format(
|
|
77
|
+
self.gen(0), self.base_ring())
|
|
78
|
+
return "Lie conformal algebra with generators {} over {}".format(
|
|
79
|
+
self.gens(), self.base_ring())
|
|
80
|
+
|
|
81
|
+
def _an_element_(self):
|
|
82
|
+
"""
|
|
83
|
+
An element of this Lie conformal algebra.
|
|
84
|
+
|
|
85
|
+
EXAMPLES::
|
|
86
|
+
|
|
87
|
+
sage: R = lie_conformal_algebras.NeveuSchwarz(QQ); R.an_element()
|
|
88
|
+
L + G + C
|
|
89
|
+
"""
|
|
90
|
+
return self.sum(self.gens())
|
|
91
|
+
|
|
92
|
+
def ngens(self):
|
|
93
|
+
"""
|
|
94
|
+
The number of generators of this Lie conformal algebra.
|
|
95
|
+
|
|
96
|
+
EXAMPLES::
|
|
97
|
+
|
|
98
|
+
sage: Vir = lie_conformal_algebras.Virasoro(QQ); Vir.ngens()
|
|
99
|
+
2
|
|
100
|
+
sage: V = lie_conformal_algebras.Affine(QQ, 'A1'); V.ngens()
|
|
101
|
+
4
|
|
102
|
+
"""
|
|
103
|
+
return self._ngens
|
|
104
|
+
|
|
105
|
+
@cached_method
|
|
106
|
+
def gens(self):
|
|
107
|
+
"""
|
|
108
|
+
The generators for this Lie conformal algebra.
|
|
109
|
+
|
|
110
|
+
OUTPUT:
|
|
111
|
+
|
|
112
|
+
This method returns a tuple with the (finite) generators
|
|
113
|
+
of this Lie conformal algebra.
|
|
114
|
+
|
|
115
|
+
EXAMPLES::
|
|
116
|
+
|
|
117
|
+
sage: Vir = lie_conformal_algebras.Virasoro(QQ);
|
|
118
|
+
sage: Vir.gens()
|
|
119
|
+
(L, C)
|
|
120
|
+
|
|
121
|
+
.. SEEALSO::
|
|
122
|
+
|
|
123
|
+
:meth:`lie_conformal_algebra_generators<\
|
|
124
|
+
FreelyGeneratedLieConformalAlgebra.\
|
|
125
|
+
lie_conformal_algebra_generators>`
|
|
126
|
+
"""
|
|
127
|
+
return self.lie_conformal_algebra_generators()
|
|
128
|
+
|
|
129
|
+
@cached_method
|
|
130
|
+
def central_elements(self):
|
|
131
|
+
"""
|
|
132
|
+
The central elements of this Lie conformal algebra.
|
|
133
|
+
|
|
134
|
+
EXAMPLES::
|
|
135
|
+
|
|
136
|
+
sage: R = lie_conformal_algebras.NeveuSchwarz(QQ); R.central_elements()
|
|
137
|
+
(C,)
|
|
138
|
+
"""
|
|
139
|
+
return tuple(FreelyGeneratedLieConformalAlgebra.central_elements(self))
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-combinat
|
|
2
|
+
# sage.doctest: needs sage.combinat sage.modules
|
|
3
|
+
r"""
|
|
4
|
+
Free Bosons Lie Conformal Algebra
|
|
5
|
+
|
|
6
|
+
Given an `R`-module `M` with a symmetric, bilinear pairing
|
|
7
|
+
`(\cdot, \cdot): M\otimes_R M \rightarrow R`. The *Free Bosons*
|
|
8
|
+
Lie conformal algebra associated to this datum is the free
|
|
9
|
+
`R[T]`-module generated by `M` plus a central vector `K` satisfying
|
|
10
|
+
`TK=0`. The remaining `\lambda`-brackets are given by:
|
|
11
|
+
|
|
12
|
+
.. MATH::
|
|
13
|
+
|
|
14
|
+
[v_\lambda w] = \lambda (v,w)K,
|
|
15
|
+
|
|
16
|
+
where `v,w \in M`.
|
|
17
|
+
|
|
18
|
+
This is an H-graded Lie conformal algebra where every generator
|
|
19
|
+
`v \in M` has degree 1.
|
|
20
|
+
|
|
21
|
+
AUTHORS:
|
|
22
|
+
|
|
23
|
+
- Reimundo Heluani (2019-08-09): Initial implementation.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
#******************************************************************************
|
|
27
|
+
# Copyright (C) 2019 Reimundo Heluani <heluani@potuz.net>
|
|
28
|
+
#
|
|
29
|
+
# This program is free software: you can redistribute it and/or modify
|
|
30
|
+
# it under the terms of the GNU General Public License as published by
|
|
31
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
32
|
+
# (at your option) any later version.
|
|
33
|
+
# http://www.gnu.org/licenses/
|
|
34
|
+
#*****************************************************************************
|
|
35
|
+
|
|
36
|
+
from sage.matrix.special import identity_matrix
|
|
37
|
+
from .graded_lie_conformal_algebra import GradedLieConformalAlgebra
|
|
38
|
+
from sage.structure.indexed_generators import standardize_names_index_set
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class FreeBosonsLieConformalAlgebra(GradedLieConformalAlgebra):
|
|
42
|
+
r"""
|
|
43
|
+
The Free Bosons Lie conformal algebra.
|
|
44
|
+
|
|
45
|
+
INPUT:
|
|
46
|
+
|
|
47
|
+
- ``R`` -- a commutative ring
|
|
48
|
+
- ``ngens`` -- a positive Integer (default: `1`); the number of
|
|
49
|
+
non-central generators of this Lie conformal algebra.
|
|
50
|
+
- ``gram_matrix`` -- a symmetric square matrix with coefficients
|
|
51
|
+
in ``R`` (default: ``identity_matrix(ngens)``); the Gram
|
|
52
|
+
matrix of the inner product
|
|
53
|
+
- ``names`` -- tuple of strings; alternative names for the
|
|
54
|
+
generators
|
|
55
|
+
- ``index_set`` -- an enumerated set; alternative indexing set
|
|
56
|
+
for the generators
|
|
57
|
+
|
|
58
|
+
OUTPUT:
|
|
59
|
+
|
|
60
|
+
The Free Bosons Lie conformal algebra with generators
|
|
61
|
+
`\alpha_i`, `i=1,...,n` and `\lambda`-brackets
|
|
62
|
+
|
|
63
|
+
.. MATH::
|
|
64
|
+
|
|
65
|
+
[{\alpha_i}_{\lambda} \alpha_j] = \lambda M_{ij} K,
|
|
66
|
+
|
|
67
|
+
where `n` is the number of generators ``ngens`` and `M` is
|
|
68
|
+
the ``gram_matrix``. This Lie conformal
|
|
69
|
+
algebra is `H`-graded where every generator has conformal weight
|
|
70
|
+
`1`.
|
|
71
|
+
|
|
72
|
+
EXAMPLES::
|
|
73
|
+
|
|
74
|
+
sage: R = lie_conformal_algebras.FreeBosons(AA); R
|
|
75
|
+
The free Bosons Lie conformal algebra with generators (alpha, K) over Algebraic Real Field
|
|
76
|
+
sage: R.inject_variables()
|
|
77
|
+
Defining alpha, K
|
|
78
|
+
sage: alpha.bracket(alpha)
|
|
79
|
+
{1: K}
|
|
80
|
+
sage: M = identity_matrix(QQ,2); R = lie_conformal_algebras.FreeBosons(QQ,gram_matrix=M, names='alpha,beta'); R
|
|
81
|
+
The free Bosons Lie conformal algebra with generators (alpha, beta, K) over Rational Field
|
|
82
|
+
sage: R.inject_variables(); alpha.bracket(beta)
|
|
83
|
+
Defining alpha, beta, K
|
|
84
|
+
{}
|
|
85
|
+
sage: alpha.bracket(alpha)
|
|
86
|
+
{1: K}
|
|
87
|
+
sage: R = lie_conformal_algebras.FreeBosons(QQbar, ngens=3); R
|
|
88
|
+
The free Bosons Lie conformal algebra with generators (alpha0, alpha1, alpha2, K) over Algebraic Field
|
|
89
|
+
|
|
90
|
+
TESTS::
|
|
91
|
+
sage: R = lie_conformal_algebras.FreeBosons(QQ); R.0.degree()
|
|
92
|
+
1
|
|
93
|
+
sage: R = lie_conformal_algebras.FreeBosons(QQbar, ngens=2, gram_matrix=identity_matrix(QQ,1,1))
|
|
94
|
+
Traceback (most recent call last):
|
|
95
|
+
...
|
|
96
|
+
ValueError: the gram_matrix should be a symmetric 2 x 2 matrix, got [1]
|
|
97
|
+
sage: R = lie_conformal_algebras.FreeBosons(QQbar, ngens=2, gram_matrix=Matrix(QQ,[[0,1],[-1,0]]))
|
|
98
|
+
Traceback (most recent call last):
|
|
99
|
+
...
|
|
100
|
+
ValueError: the gram_matrix should be a symmetric 2 x 2 matrix, got [ 0 1]
|
|
101
|
+
[-1 0]
|
|
102
|
+
"""
|
|
103
|
+
def __init__(self, R, ngens=None, gram_matrix=None, names=None,
|
|
104
|
+
index_set=None):
|
|
105
|
+
"""
|
|
106
|
+
Initialize ``self``.
|
|
107
|
+
|
|
108
|
+
TESTS::
|
|
109
|
+
|
|
110
|
+
sage: V = lie_conformal_algebras.FreeBosons(QQ)
|
|
111
|
+
sage: TestSuite(V).run()
|
|
112
|
+
"""
|
|
113
|
+
from sage.matrix.matrix_space import MatrixSpace
|
|
114
|
+
if (gram_matrix is not None):
|
|
115
|
+
if ngens is None:
|
|
116
|
+
ngens = gram_matrix.dimensions()[0]
|
|
117
|
+
try:
|
|
118
|
+
assert (gram_matrix in MatrixSpace(R, ngens, ngens))
|
|
119
|
+
except AssertionError:
|
|
120
|
+
raise ValueError("the gram_matrix should be a symmetric " +
|
|
121
|
+
"{0} x {0} matrix, got {1}".format(ngens, gram_matrix))
|
|
122
|
+
if not gram_matrix.is_symmetric():
|
|
123
|
+
raise ValueError("the gram_matrix should be a symmetric " +
|
|
124
|
+
"{0} x {0} matrix, got {1}".format(ngens, gram_matrix))
|
|
125
|
+
else:
|
|
126
|
+
if ngens is None:
|
|
127
|
+
ngens = 1
|
|
128
|
+
gram_matrix = identity_matrix(R, ngens, ngens)
|
|
129
|
+
|
|
130
|
+
latex_names = None
|
|
131
|
+
if names is None and index_set is None:
|
|
132
|
+
names = 'alpha'
|
|
133
|
+
latex_names = tuple(r'\alpha_{%d}' % i
|
|
134
|
+
for i in range(ngens)) + ('K',)
|
|
135
|
+
names, index_set = standardize_names_index_set(names=names,
|
|
136
|
+
index_set=index_set,
|
|
137
|
+
ngens=ngens)
|
|
138
|
+
bosondict = {(i, j): {1: {('K', 0): gram_matrix[index_set.rank(i),
|
|
139
|
+
index_set.rank(j)]}}
|
|
140
|
+
for i in index_set for j in index_set}
|
|
141
|
+
|
|
142
|
+
GradedLieConformalAlgebra.__init__(self, R, bosondict,
|
|
143
|
+
names=names,
|
|
144
|
+
latex_names=latex_names,
|
|
145
|
+
index_set=index_set,
|
|
146
|
+
central_elements=('K',))
|
|
147
|
+
|
|
148
|
+
self._gram_matrix = gram_matrix
|
|
149
|
+
|
|
150
|
+
def _repr_(self) -> str:
|
|
151
|
+
"""
|
|
152
|
+
String representation.
|
|
153
|
+
|
|
154
|
+
EXAMPLES::
|
|
155
|
+
|
|
156
|
+
sage: lie_conformal_algebras.FreeBosons(AA)
|
|
157
|
+
The free Bosons Lie conformal algebra with generators (alpha, K) over Algebraic Real Field
|
|
158
|
+
"""
|
|
159
|
+
return "The free Bosons Lie conformal algebra with generators {}"\
|
|
160
|
+
" over {}".format(self.gens(), self.base_ring())
|
|
161
|
+
|
|
162
|
+
def gram_matrix(self):
|
|
163
|
+
r"""
|
|
164
|
+
The Gram matrix that specifies the `\lambda`-brackets of the
|
|
165
|
+
generators.
|
|
166
|
+
|
|
167
|
+
EXAMPLES::
|
|
168
|
+
|
|
169
|
+
sage: R = lie_conformal_algebras.FreeBosons(QQ,ngens=2);
|
|
170
|
+
sage: R.gram_matrix()
|
|
171
|
+
[1 0]
|
|
172
|
+
[0 1]
|
|
173
|
+
"""
|
|
174
|
+
return self._gram_matrix
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-combinat
|
|
2
|
+
# sage.doctest: needs sage.combinat sage.modules
|
|
3
|
+
r"""
|
|
4
|
+
Free Fermions Super Lie Conformal Algebra.
|
|
5
|
+
|
|
6
|
+
Given an `R`-module `M` with a skew-symmetric, bilinear pairing
|
|
7
|
+
`\langle\cdot, \cdot\rangle: M\otimes_R M \rightarrow R`. The
|
|
8
|
+
*Free Fermions* super Lie conformal algebra associated to this datum is
|
|
9
|
+
the free `R[T]`-super module generated by `\Pi M` (a purely odd copy
|
|
10
|
+
of `M`) plus a central vector `K` satisfying `TK=0`. The remaining
|
|
11
|
+
`\lambda`-brackets are given by:
|
|
12
|
+
|
|
13
|
+
.. MATH::
|
|
14
|
+
|
|
15
|
+
[v_\lambda w] = \langle v,w \rangle K,
|
|
16
|
+
|
|
17
|
+
where `v,w \in M`.
|
|
18
|
+
|
|
19
|
+
This is an H-graded Lie conformal algebra where every generator
|
|
20
|
+
`v \in M` has degree `1/2`.
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
AUTHORS:
|
|
24
|
+
|
|
25
|
+
- Reimundo Heluani (2020-06-03): Initial implementation.
|
|
26
|
+
"""
|
|
27
|
+
#******************************************************************************
|
|
28
|
+
# Copyright (C) 2020 Reimundo Heluani <heluani@potuz.net>
|
|
29
|
+
#
|
|
30
|
+
# This program is free software: you can redistribute it and/or modify
|
|
31
|
+
# it under the terms of the GNU General Public License as published by
|
|
32
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
33
|
+
# (at your option) any later version.
|
|
34
|
+
# http://www.gnu.org/licenses/
|
|
35
|
+
#*****************************************************************************
|
|
36
|
+
|
|
37
|
+
from .graded_lie_conformal_algebra import GradedLieConformalAlgebra
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class FreeFermionsLieConformalAlgebra(GradedLieConformalAlgebra):
|
|
41
|
+
r"""
|
|
42
|
+
The Free Fermions Super Lie conformal algebra.
|
|
43
|
+
|
|
44
|
+
INPUT:
|
|
45
|
+
|
|
46
|
+
- ``R`` -- a commutative ring
|
|
47
|
+
- ``ngens`` -- a positive Integer (default: ``1``); the number of
|
|
48
|
+
non-central generators of this Lie conformal algebra
|
|
49
|
+
- ``gram_matrix`` -- a symmetric square matrix with coefficients
|
|
50
|
+
in ``R`` (default: ``identity_matrix(ngens)``); the Gram
|
|
51
|
+
matrix of the inner product
|
|
52
|
+
|
|
53
|
+
OUTPUT:
|
|
54
|
+
|
|
55
|
+
The Free Fermions Lie conformal algebra with generators
|
|
56
|
+
`\psi_i`, `i=1,...,n` and `\lambda`-brackets
|
|
57
|
+
|
|
58
|
+
.. MATH::
|
|
59
|
+
|
|
60
|
+
[{\psi_i}_{\lambda} \psi_j] = M_{ij} K,
|
|
61
|
+
|
|
62
|
+
where `n` is the number of generators ``ngens`` and `M` is the
|
|
63
|
+
``gram_matrix``. This super Lie conformal
|
|
64
|
+
algebra is `H`-graded where every generator has degree `1/2`.
|
|
65
|
+
|
|
66
|
+
EXAMPLES::
|
|
67
|
+
|
|
68
|
+
sage: R = lie_conformal_algebras.FreeFermions(QQbar); R
|
|
69
|
+
The free Fermions super Lie conformal algebra with generators (psi, K) over Algebraic Field
|
|
70
|
+
sage: R.inject_variables()
|
|
71
|
+
Defining psi, K
|
|
72
|
+
sage: psi.bracket(psi)
|
|
73
|
+
{0: K}
|
|
74
|
+
|
|
75
|
+
sage: R = lie_conformal_algebras.FreeFermions(QQbar,gram_matrix=Matrix([[0,1],[1,0]])); R
|
|
76
|
+
The free Fermions super Lie conformal algebra with generators (psi_0, psi_1, K) over Algebraic Field
|
|
77
|
+
sage: R.inject_variables()
|
|
78
|
+
Defining psi_0, psi_1, K
|
|
79
|
+
sage: psi_0.bracket(psi_1)
|
|
80
|
+
{0: K}
|
|
81
|
+
sage: psi_0.degree()
|
|
82
|
+
1/2
|
|
83
|
+
sage: R.category()
|
|
84
|
+
Category of H-graded super finitely generated Lie conformal algebras with basis over Algebraic Field
|
|
85
|
+
"""
|
|
86
|
+
def __init__(self, R, ngens=None, gram_matrix=None, names=None,
|
|
87
|
+
index_set=None):
|
|
88
|
+
"""
|
|
89
|
+
Initialize ``self``.
|
|
90
|
+
|
|
91
|
+
TESTS::
|
|
92
|
+
|
|
93
|
+
sage: V = lie_conformal_algebras.FreeFermions(QQ)
|
|
94
|
+
sage: TestSuite(V).run()
|
|
95
|
+
"""
|
|
96
|
+
from sage.matrix.matrix_space import MatrixSpace
|
|
97
|
+
from sage.matrix.special import identity_matrix
|
|
98
|
+
if gram_matrix is not None:
|
|
99
|
+
if ngens is None:
|
|
100
|
+
ngens = gram_matrix.dimensions()[0]
|
|
101
|
+
try:
|
|
102
|
+
assert (gram_matrix in MatrixSpace(R, ngens, ngens))
|
|
103
|
+
except AssertionError:
|
|
104
|
+
raise ValueError("the Gram_matrix should be a symmetric " +
|
|
105
|
+
"{0} x {0} matrix, got {1}".format(ngens, gram_matrix))
|
|
106
|
+
if not gram_matrix.is_symmetric():
|
|
107
|
+
raise ValueError("the Gram_matrix should be a symmetric " +
|
|
108
|
+
"{0} x {0} matrix, got {1}".format(ngens, gram_matrix))
|
|
109
|
+
else:
|
|
110
|
+
if ngens is None:
|
|
111
|
+
ngens = 1
|
|
112
|
+
gram_matrix = identity_matrix(R, ngens, ngens)
|
|
113
|
+
|
|
114
|
+
latex_names = None
|
|
115
|
+
|
|
116
|
+
if names is None and index_set is None:
|
|
117
|
+
names = 'psi' if ngens == 1 else 'psi_'
|
|
118
|
+
latex_names = tuple(r"\psi_{%d}" % i
|
|
119
|
+
for i in range(ngens)) + ('K',)
|
|
120
|
+
|
|
121
|
+
from sage.structure.indexed_generators import \
|
|
122
|
+
standardize_names_index_set
|
|
123
|
+
names, index_set = standardize_names_index_set(names=names,
|
|
124
|
+
index_set=index_set,
|
|
125
|
+
ngens=ngens)
|
|
126
|
+
fermiondict = {(i, j): {0: {('K', 0): gram_matrix[index_set.rank(i),
|
|
127
|
+
index_set.rank(j)]}}
|
|
128
|
+
for i in index_set for j in index_set}
|
|
129
|
+
|
|
130
|
+
from sage.rings.rational_field import QQ
|
|
131
|
+
weights = (QQ((1, 2)),) * ngens
|
|
132
|
+
parity = (1,) * ngens
|
|
133
|
+
GradedLieConformalAlgebra.__init__(self, R, fermiondict, names=names,
|
|
134
|
+
latex_names=latex_names,
|
|
135
|
+
index_set=index_set,
|
|
136
|
+
weights=weights,
|
|
137
|
+
parity=parity,
|
|
138
|
+
central_elements=('K',))
|
|
139
|
+
|
|
140
|
+
self._gram_matrix = gram_matrix
|
|
141
|
+
|
|
142
|
+
def _repr_(self) -> str:
|
|
143
|
+
"""
|
|
144
|
+
String representation.
|
|
145
|
+
|
|
146
|
+
EXAMPLES::
|
|
147
|
+
|
|
148
|
+
sage: lie_conformal_algebras.FreeFermions(QQ)
|
|
149
|
+
The free Fermions super Lie conformal algebra with generators (psi, K) over Rational Field
|
|
150
|
+
"""
|
|
151
|
+
return "The free Fermions super Lie conformal algebra "\
|
|
152
|
+
"with generators {} over {}".format(self.gens(),
|
|
153
|
+
self.base_ring())
|
|
154
|
+
|
|
155
|
+
def gram_matrix(self):
|
|
156
|
+
r"""
|
|
157
|
+
The Gram matrix that specifies the `\lambda`-brackets of the
|
|
158
|
+
generators.
|
|
159
|
+
|
|
160
|
+
EXAMPLES::
|
|
161
|
+
|
|
162
|
+
sage: R = lie_conformal_algebras.FreeFermions(QQ,ngens=2);
|
|
163
|
+
sage: R.gram_matrix()
|
|
164
|
+
[1 0]
|
|
165
|
+
[0 1]
|
|
166
|
+
"""
|
|
167
|
+
return self._gram_matrix
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-combinat
|
|
2
|
+
# sage.doctest: needs sage.combinat sage.modules
|
|
3
|
+
"""
|
|
4
|
+
Freely Generated Lie Conformal Algebras
|
|
5
|
+
|
|
6
|
+
AUTHORS:
|
|
7
|
+
|
|
8
|
+
- Reimundo Heluani (2019-08-09): Initial implementation
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
#******************************************************************************
|
|
12
|
+
# Copyright (C) 2019 Reimundo Heluani <heluani@potuz.net>
|
|
13
|
+
#
|
|
14
|
+
# This program is free software: you can redistribute it and/or modify
|
|
15
|
+
# it under the terms of the GNU General Public License as published by
|
|
16
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
17
|
+
# (at your option) any later version.
|
|
18
|
+
# http://www.gnu.org/licenses/
|
|
19
|
+
#*****************************************************************************
|
|
20
|
+
|
|
21
|
+
from .lie_conformal_algebra_with_basis import LieConformalAlgebraWithBasis
|
|
22
|
+
from sage.sets.non_negative_integers import NonNegativeIntegers
|
|
23
|
+
from sage.categories.cartesian_product import cartesian_product
|
|
24
|
+
from sage.rings.integer import Integer
|
|
25
|
+
from sage.sets.family import Family
|
|
26
|
+
from sage.sets.disjoint_union_enumerated_sets import DisjointUnionEnumeratedSets
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class FreelyGeneratedLieConformalAlgebra(LieConformalAlgebraWithBasis):
|
|
30
|
+
"""
|
|
31
|
+
Base class for a central extension of a freely generated Lie
|
|
32
|
+
conformal algebra.
|
|
33
|
+
|
|
34
|
+
This class provides minimal functionality, it sets up the
|
|
35
|
+
family of Lie conformal algebra generators.
|
|
36
|
+
|
|
37
|
+
.. NOTE::
|
|
38
|
+
|
|
39
|
+
We now only accept direct sums of free modules plus
|
|
40
|
+
some central generators `C_i` such that `TC_i = 0`.
|
|
41
|
+
"""
|
|
42
|
+
def __init__(self, R, index_set=None, central_elements=None, category=None,
|
|
43
|
+
element_class=None, prefix=None, **kwds):
|
|
44
|
+
"""
|
|
45
|
+
Initialize ``self``.
|
|
46
|
+
|
|
47
|
+
TESTS::
|
|
48
|
+
|
|
49
|
+
sage: V = lie_conformal_algebras.Virasoro(QQ)
|
|
50
|
+
sage: TestSuite(V).run()
|
|
51
|
+
"""
|
|
52
|
+
self._generators = Family(index_set)
|
|
53
|
+
E = cartesian_product([index_set, NonNegativeIntegers()])
|
|
54
|
+
if central_elements is not None:
|
|
55
|
+
self._generators = DisjointUnionEnumeratedSets([index_set,
|
|
56
|
+
Family(central_elements)])
|
|
57
|
+
E = DisjointUnionEnumeratedSets((cartesian_product([
|
|
58
|
+
Family(central_elements), {Integer(0)}]), E))
|
|
59
|
+
|
|
60
|
+
super().__init__(R, basis_keys=E, element_class=element_class,
|
|
61
|
+
category=category, prefix=prefix, **kwds)
|
|
62
|
+
|
|
63
|
+
if central_elements is not None:
|
|
64
|
+
self._central_elements = Family(central_elements)
|
|
65
|
+
else:
|
|
66
|
+
self._central_elements = ()
|
|
67
|
+
|
|
68
|
+
def lie_conformal_algebra_generators(self):
|
|
69
|
+
"""
|
|
70
|
+
The generators of this Lie conformal algebra.
|
|
71
|
+
|
|
72
|
+
OUTPUT: a (possibly infinite) family of generators (as an
|
|
73
|
+
`R[T]`-module) of this Lie conformal algebra.
|
|
74
|
+
|
|
75
|
+
EXAMPLES::
|
|
76
|
+
|
|
77
|
+
sage: Vir = lie_conformal_algebras.Virasoro(QQ)
|
|
78
|
+
sage: Vir.lie_conformal_algebra_generators()
|
|
79
|
+
(L, C)
|
|
80
|
+
sage: V = lie_conformal_algebras.Affine(QQ,'A1')
|
|
81
|
+
sage: V.lie_conformal_algebra_generators()
|
|
82
|
+
(B[alpha[1]], B[alphacheck[1]], B[-alpha[1]], B['K'])
|
|
83
|
+
"""
|
|
84
|
+
F = Family(self._generators,
|
|
85
|
+
lambda i: self.monomial((i, Integer(0))),
|
|
86
|
+
name="generator map")
|
|
87
|
+
from sage.categories.sets_cat import Sets
|
|
88
|
+
if F in Sets().Finite():
|
|
89
|
+
return tuple(F)
|
|
90
|
+
return F
|
|
91
|
+
|
|
92
|
+
def central_elements(self):
|
|
93
|
+
"""
|
|
94
|
+
The central generators of this Lie conformal algebra.
|
|
95
|
+
|
|
96
|
+
EXAMPLES::
|
|
97
|
+
|
|
98
|
+
sage: Vir = lie_conformal_algebras.Virasoro(QQ)
|
|
99
|
+
sage: Vir.central_elements()
|
|
100
|
+
(C,)
|
|
101
|
+
sage: V = lie_conformal_algebras.Affine(QQ, 'A1')
|
|
102
|
+
sage: V.central_elements()
|
|
103
|
+
(B['K'],)
|
|
104
|
+
"""
|
|
105
|
+
return Family(self._central_elements,
|
|
106
|
+
lambda i: self.monomial((i, Integer(0))),
|
|
107
|
+
name="central_element map")
|