passagemath-combinat 10.6.1__cp312-cp312-musllinux_1_2_aarch64.whl → 10.8.1a1__cp312-cp312-musllinux_1_2_aarch64.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.1.dist-info → passagemath_combinat-10.8.1a1.dist-info}/METADATA +17 -20
- {passagemath_combinat-10.6.1.dist-info → passagemath_combinat-10.8.1a1.dist-info}/RECORD +220 -218
- {passagemath_combinat-10.6.1.dist-info → passagemath_combinat-10.8.1a1.dist-info}/WHEEL +1 -1
- passagemath_combinat-10.8.1a1.dist-info/top_level.txt +3 -0
- sage/algebras/affine_nil_temperley_lieb.py +3 -3
- sage/algebras/all.py +0 -1
- sage/algebras/askey_wilson.py +1 -1
- sage/algebras/associated_graded.py +2 -2
- sage/algebras/cellular_basis.py +3 -6
- sage/algebras/cluster_algebra.py +2 -3
- sage/algebras/down_up_algebra.py +6 -6
- sage/algebras/free_algebra.py +3 -32
- sage/algebras/free_algebra_element.py +21 -25
- sage/algebras/free_algebra_quotient_element.py +9 -38
- sage/algebras/free_zinbiel_algebra.py +4 -3
- sage/algebras/hall_algebra.py +2 -2
- sage/algebras/hecke_algebras/ariki_koike_algebra.py +8 -8
- sage/algebras/hecke_algebras/ariki_koike_specht_modules.py +2 -2
- sage/algebras/hecke_algebras/cubic_hecke_algebra.py +11 -14
- sage/algebras/hecke_algebras/cubic_hecke_base_ring.py +1 -1
- sage/algebras/hecke_algebras/cubic_hecke_matrix_rep.py +5 -5
- sage/algebras/iwahori_hecke_algebra.py +59 -57
- sage/algebras/jordan_algebra.py +97 -89
- sage/algebras/lie_conformal_algebras/abelian_lie_conformal_algebra.py +6 -6
- sage/algebras/lie_conformal_algebras/affine_lie_conformal_algebra.py +14 -12
- sage/algebras/lie_conformal_algebras/bosonic_ghosts_lie_conformal_algebra.py +6 -6
- sage/algebras/lie_conformal_algebras/fermionic_ghosts_lie_conformal_algebra.py +4 -4
- sage/algebras/lie_conformal_algebras/finitely_freely_generated_lca.py +13 -13
- sage/algebras/lie_conformal_algebras/free_bosons_lie_conformal_algebra.py +8 -6
- sage/algebras/lie_conformal_algebras/free_fermions_lie_conformal_algebra.py +7 -5
- sage/algebras/lie_conformal_algebras/freely_generated_lie_conformal_algebra.py +7 -7
- sage/algebras/lie_conformal_algebras/graded_lie_conformal_algebra.py +6 -5
- sage/algebras/lie_conformal_algebras/lie_conformal_algebra.py +12 -11
- sage/algebras/lie_conformal_algebras/lie_conformal_algebra_element.py +3 -3
- sage/algebras/lie_conformal_algebras/lie_conformal_algebra_with_basis.py +3 -3
- sage/algebras/lie_conformal_algebras/lie_conformal_algebra_with_structure_coefs.py +11 -11
- sage/algebras/lie_conformal_algebras/n2_lie_conformal_algebra.py +3 -3
- sage/algebras/lie_conformal_algebras/neveu_schwarz_lie_conformal_algebra.py +8 -7
- sage/algebras/lie_conformal_algebras/virasoro_lie_conformal_algebra.py +9 -8
- sage/algebras/lie_conformal_algebras/weyl_lie_conformal_algebra.py +6 -5
- sage/algebras/nil_coxeter_algebra.py +4 -4
- sage/algebras/q_commuting_polynomials.py +6 -6
- sage/algebras/q_system.py +3 -3
- sage/algebras/quantum_clifford.py +8 -8
- sage/algebras/quantum_groups/fock_space.py +48 -8
- sage/algebras/quantum_groups/quantum_group_gap.py +5 -7
- sage/algebras/quantum_matrix_coordinate_algebra.py +7 -7
- sage/algebras/quantum_oscillator.py +3 -3
- sage/algebras/quaternion_algebra_element.py +5 -3
- sage/algebras/schur_algebra.py +3 -3
- sage/algebras/shuffle_algebra.py +5 -8
- sage/algebras/splitting_algebra.py +129 -85
- sage/algebras/tensor_algebra.py +7 -7
- sage/algebras/yangian.py +16 -15
- sage/algebras/yokonuma_hecke_algebra.py +13 -11
- sage/combinat/all.py +9 -0
- sage/combinat/all__sagemath_combinat.py +1 -0
- sage/combinat/alternating_sign_matrix.py +36 -29
- sage/combinat/baxter_permutations.py +32 -12
- sage/combinat/bijectionist.py +13 -17
- sage/combinat/chas/fsym.py +6 -6
- sage/combinat/chas/wqsym.py +23 -29
- sage/combinat/colored_permutations.py +9 -11
- sage/combinat/colored_permutations_representations.py +13 -12
- sage/combinat/composition_tableau.py +2 -2
- sage/combinat/constellation.py +57 -30
- sage/combinat/crystals/affine_factorization.py +5 -4
- sage/combinat/crystals/alcove_path.py +2 -2
- sage/combinat/crystals/fully_commutative_stable_grothendieck.py +3 -2
- sage/combinat/crystals/infinity_crystals.py +18 -18
- sage/combinat/crystals/kac_modules.py +1 -1
- sage/combinat/crystals/kirillov_reshetikhin.py +2 -2
- sage/combinat/crystals/letters.cpython-312-aarch64-linux-musl.so +0 -0
- sage/combinat/crystals/littelmann_path.py +1 -1
- sage/combinat/crystals/pbw_datum.cpython-312-aarch64-linux-musl.so +0 -0
- sage/combinat/crystals/pbw_datum.pyx +3 -2
- sage/combinat/crystals/spins.cpython-312-aarch64-linux-musl.so +0 -0
- sage/combinat/crystals/tensor_product.py +7 -5
- sage/combinat/crystals/tensor_product_element.cpython-312-aarch64-linux-musl.so +0 -0
- sage/combinat/debruijn_sequence.cpython-312-aarch64-linux-musl.so +0 -0
- sage/combinat/debruijn_sequence.pyx +1 -2
- sage/combinat/degree_sequences.cpython-312-aarch64-linux-musl.so +0 -0
- sage/combinat/degree_sequences.pyx +241 -188
- sage/combinat/derangements.py +28 -22
- sage/combinat/diagram_algebras.py +12 -14
- sage/combinat/dyck_word.py +15 -14
- sage/combinat/e_one_star.py +1 -1
- sage/combinat/expnums.cpython-312-aarch64-linux-musl.so +0 -0
- sage/combinat/fast_vector_partitions.cpython-312-aarch64-linux-musl.so +0 -0
- sage/combinat/fqsym.py +13 -19
- sage/combinat/free_dendriform_algebra.py +2 -2
- sage/combinat/free_prelie_algebra.py +2 -2
- sage/combinat/fully_commutative_elements.py +8 -8
- sage/combinat/fully_packed_loop.py +9 -9
- sage/combinat/gelfand_tsetlin_patterns.py +4 -5
- sage/combinat/gray_codes.py +3 -4
- sage/combinat/grossman_larson_algebras.py +2 -2
- sage/combinat/growth.py +13 -13
- sage/combinat/hall_polynomial.py +1 -1
- sage/combinat/hillman_grassl.py +1 -1
- sage/combinat/integer_matrices.py +5 -7
- sage/combinat/k_tableau.py +8 -7
- sage/combinat/kazhdan_lusztig.py +3 -3
- sage/combinat/key_polynomial.py +845 -298
- sage/combinat/knutson_tao_puzzles.py +11 -13
- sage/combinat/matrices/hadamard_matrix.py +1 -1
- sage/combinat/matrices/latin.py +75 -92
- sage/combinat/misc.py +3 -3
- sage/combinat/multiset_partition_into_sets_ordered.py +27 -10
- sage/combinat/ncsf_qsym/generic_basis_code.py +5 -5
- sage/combinat/ncsf_qsym/ncsf.py +6 -5
- sage/combinat/ncsf_qsym/qsym.py +9 -17
- sage/combinat/ncsym/ncsym.py +8 -12
- sage/combinat/nu_dyck_word.py +1 -1
- sage/combinat/parallelogram_polyomino.py +3 -5
- sage/combinat/parking_functions.py +6 -5
- sage/combinat/partition_algebra.py +22 -57
- sage/combinat/partition_kleshchev.py +4 -4
- sage/combinat/partition_tuple.py +12 -10
- sage/combinat/plane_partition.py +10 -13
- sage/combinat/positive_integer_semigroup_test.py +17 -0
- sage/combinat/q_bernoulli.cpython-312-aarch64-linux-musl.so +0 -0
- sage/combinat/quickref.py +2 -2
- sage/combinat/recognizable_series.py +2 -2
- sage/combinat/regular_sequence.py +7 -7
- sage/combinat/regular_sequence_bounded.py +15 -21
- sage/combinat/restricted_growth.py +3 -3
- sage/combinat/ribbon.py +3 -3
- sage/combinat/rigged_configurations/bijection.py +3 -3
- sage/combinat/rigged_configurations/rigged_partition.cpython-312-aarch64-linux-musl.so +0 -0
- sage/combinat/rsk.py +2 -0
- sage/combinat/schubert_polynomial.py +11 -2
- sage/combinat/set_partition.py +3 -7
- sage/combinat/set_partition_iterator.cpython-312-aarch64-linux-musl.so +0 -0
- sage/combinat/set_partition_iterator.pyx +0 -1
- sage/combinat/set_partition_ordered.py +2 -2
- sage/combinat/sf/classical.py +1 -1
- sage/combinat/sf/dual.py +4 -8
- sage/combinat/sf/elementary.py +13 -7
- sage/combinat/sf/hall_littlewood.py +10 -8
- sage/combinat/sf/homogeneous.py +6 -3
- sage/combinat/sf/jack.py +11 -9
- sage/combinat/sf/llt.py +4 -5
- sage/combinat/sf/macdonald.py +10 -11
- sage/combinat/sf/monomial.py +6 -0
- sage/combinat/sf/ns_macdonald.py +92 -51
- sage/combinat/sf/powersum.py +9 -14
- sage/combinat/sf/schur.py +6 -0
- sage/combinat/sf/sf.py +21 -19
- sage/combinat/sf/sfa.py +13 -64
- sage/combinat/shifted_primed_tableau.py +5 -7
- sage/combinat/shuffle.py +1 -1
- sage/combinat/sine_gordon.py +18 -38
- sage/combinat/skew_partition.py +9 -12
- sage/combinat/skew_tableau.py +2 -7
- sage/combinat/sloane_functions.py +1 -1
- sage/combinat/species/all.py +67 -2
- sage/combinat/species/characteristic_species.py +3 -0
- sage/combinat/species/composition_species.py +3 -0
- sage/combinat/species/cycle_species.py +4 -0
- sage/combinat/species/empty_species.py +3 -0
- sage/combinat/species/functorial_composition_species.py +3 -0
- sage/combinat/species/generating_series.py +3 -0
- sage/combinat/species/library.py +3 -0
- sage/combinat/species/linear_order_species.py +3 -0
- sage/combinat/species/partition_species.py +3 -0
- sage/combinat/species/permutation_species.py +4 -0
- sage/combinat/species/product_species.py +3 -0
- sage/combinat/species/recursive_species.py +3 -0
- sage/combinat/species/set_species.py +3 -0
- sage/combinat/species/species.py +13 -7
- sage/combinat/species/structure.py +8 -9
- sage/combinat/species/subset_species.py +3 -0
- sage/combinat/species/sum_species.py +3 -0
- sage/combinat/subword.py +4 -1
- sage/combinat/subword_complex.py +7 -7
- sage/combinat/subword_complex_c.cpython-312-aarch64-linux-musl.so +0 -0
- sage/combinat/superpartition.py +1 -1
- sage/combinat/symmetric_group_algebra.py +9 -9
- sage/combinat/symmetric_group_representations.py +5 -5
- sage/combinat/t_sequences.py +4 -4
- sage/combinat/tableau.py +3 -4
- sage/combinat/tableau_tuple.py +2 -2
- sage/combinat/tiling.py +39 -42
- sage/combinat/triangles_FHM.py +38 -15
- sage/combinat/tutorial.py +2 -2
- sage/combinat/vector_partition.py +43 -31
- sage/combinat/words/abstract_word.py +4 -4
- sage/combinat/words/alphabet.py +12 -12
- sage/combinat/words/finite_word.py +25 -229
- sage/combinat/words/infinite_word.py +1 -1
- sage/combinat/words/morphic.py +13 -13
- sage/combinat/words/morphism.py +3 -12
- sage/combinat/words/paths.py +16 -17
- sage/combinat/words/word.py +60 -35
- sage/combinat/words/word_char.cpython-312-aarch64-linux-musl.so +0 -0
- sage/combinat/words/word_char.pyx +46 -7
- sage/combinat/words/word_datatypes.cpython-312-aarch64-linux-musl.so +0 -0
- sage/combinat/words/word_generators.py +39 -38
- sage/databases/findstat.py +72 -31
- sage/databases/oeis.py +125 -25
- sage/databases/sloane.py +14 -8
- sage/games/sudoku_backtrack.cpython-312-aarch64-linux-musl.so +0 -0
- sage/groups/indexed_free_group.py +3 -4
- sage/libs/symmetrica/symmetrica.cpython-312-aarch64-linux-musl.so +0 -0
- sage/libs/symmetrica/symmetrica.pxi +1 -0
- sage/monoids/automatic_semigroup.py +1 -3
- sage/monoids/free_abelian_monoid.py +7 -33
- sage/monoids/free_abelian_monoid_element.cpython-312-aarch64-linux-musl.so +0 -0
- sage/monoids/free_monoid.py +8 -40
- sage/monoids/free_monoid_element.py +1 -9
- sage/monoids/string_monoid.py +5 -2
- sage/monoids/string_monoid_element.py +12 -66
- sage/rings/all__sagemath_combinat.py +7 -0
- sage/sat/solvers/__init__.py +3 -4
- sage/sat/solvers/cryptominisat.py +2 -3
- sage/sat/solvers/picosat.py +2 -3
- sage/sat/solvers/sat_lp.py +2 -2
- sage/sat/solvers/satsolver.cpython-312-aarch64-linux-musl.so +0 -0
- passagemath_combinat-10.6.1.dist-info/top_level.txt +0 -2
|
@@ -1043,7 +1043,7 @@ class OrderedMultisetPartitionIntoSets(ClonableArray,
|
|
|
1043
1043
|
w = []
|
|
1044
1044
|
v = [0]
|
|
1045
1045
|
for eblock in ew:
|
|
1046
|
-
for
|
|
1046
|
+
for i, wj in sorted(eblock, reverse=True):
|
|
1047
1047
|
vj = v[-1]
|
|
1048
1048
|
if i == 0:
|
|
1049
1049
|
vj += 1
|
|
@@ -1561,7 +1561,7 @@ class OrderedMultisetPartitionsIntoSets(UniqueRepresentation, Parent):
|
|
|
1561
1561
|
|
|
1562
1562
|
# pop keys with empty values, with the exception of 'size' or 'order'
|
|
1563
1563
|
self.constraints = {}
|
|
1564
|
-
for
|
|
1564
|
+
for key, val in constraints.items():
|
|
1565
1565
|
if val:
|
|
1566
1566
|
self.constraints[key] = val
|
|
1567
1567
|
elif key in ("size", "order", "length") and val is not None:
|
|
@@ -1954,7 +1954,8 @@ class OrderedMultisetPartitionsIntoSets(UniqueRepresentation, Parent):
|
|
|
1954
1954
|
|
|
1955
1955
|
# slice by 'order'
|
|
1956
1956
|
if "alphabet" in fc:
|
|
1957
|
-
no_alpha = {k: v for
|
|
1957
|
+
no_alpha = {k: v for k, v in self.constraints.items()
|
|
1958
|
+
if k != "alphabet"}
|
|
1958
1959
|
return OrderedMultisetPartitionsIntoSets(fc["alphabet"], size, **no_alpha)
|
|
1959
1960
|
|
|
1960
1961
|
# slice by 'size'
|
|
@@ -2028,7 +2029,12 @@ class OrderedMultisetPartitionsIntoSets_n(OrderedMultisetPartitionsIntoSets):
|
|
|
2028
2029
|
TESTS::
|
|
2029
2030
|
|
|
2030
2031
|
sage: C = OrderedMultisetPartitionsIntoSets(Integer(4))
|
|
2031
|
-
|
|
2032
|
+
|
|
2033
|
+
We have to skip checking that elements are produced uniformly
|
|
2034
|
+
at random by :meth:`random_element`, because this is not the
|
|
2035
|
+
case.::
|
|
2036
|
+
|
|
2037
|
+
sage: TestSuite(C).run(skip="_test_random")
|
|
2032
2038
|
sage: C2 = OrderedMultisetPartitionsIntoSets(int(4))
|
|
2033
2039
|
sage: C is C2
|
|
2034
2040
|
True
|
|
@@ -2202,18 +2208,24 @@ class OrderedMultisetPartitionsIntoSets_X(OrderedMultisetPartitionsIntoSets):
|
|
|
2202
2208
|
TESTS::
|
|
2203
2209
|
|
|
2204
2210
|
sage: C = OrderedMultisetPartitionsIntoSets([1,1,4])
|
|
2205
|
-
|
|
2211
|
+
|
|
2212
|
+
We have to skip checking that elements are produced uniformly
|
|
2213
|
+
at random by :meth:`random_element`, because this is not the
|
|
2214
|
+
case.::
|
|
2215
|
+
|
|
2216
|
+
sage: TestSuite(C).run(skip="_test_random")
|
|
2206
2217
|
|
|
2207
2218
|
sage: C2 = OrderedMultisetPartitionsIntoSets({1:2, 4:1})
|
|
2208
2219
|
sage: C is C2
|
|
2209
2220
|
True
|
|
2221
|
+
|
|
2210
2222
|
"""
|
|
2211
2223
|
self._X = X
|
|
2212
2224
|
# sort the multiset
|
|
2213
|
-
if all((k in ZZ and k > 0) for
|
|
2214
|
-
self._Xtup = tuple([k for
|
|
2225
|
+
if all((k in ZZ and k > 0) for k, v in X):
|
|
2226
|
+
self._Xtup = tuple([k for k, v in sorted(X) for _ in range(v)])
|
|
2215
2227
|
else:
|
|
2216
|
-
self._Xtup = tuple([k for
|
|
2228
|
+
self._Xtup = tuple([k for k, v in sorted(X, key=str) for _ in range(v)])
|
|
2217
2229
|
OrderedMultisetPartitionsIntoSets.__init__(self, True)
|
|
2218
2230
|
|
|
2219
2231
|
def _repr_(self):
|
|
@@ -2379,7 +2391,7 @@ class OrderedMultisetPartitionsIntoSets_X_constraints(OrderedMultisetPartitionsI
|
|
|
2379
2391
|
sage: TestSuite(C).run()
|
|
2380
2392
|
"""
|
|
2381
2393
|
self._X = X
|
|
2382
|
-
self._Xtup = tuple(k for
|
|
2394
|
+
self._Xtup = tuple(k for k, v in sorted(X) for _ in range(v))
|
|
2383
2395
|
OrderedMultisetPartitionsIntoSets.__init__(self, True, weight=X, **constraints)
|
|
2384
2396
|
|
|
2385
2397
|
def _repr_(self):
|
|
@@ -2415,7 +2427,12 @@ class OrderedMultisetPartitionsIntoSets_alph_d(OrderedMultisetPartitionsIntoSets
|
|
|
2415
2427
|
TESTS::
|
|
2416
2428
|
|
|
2417
2429
|
sage: C = OrderedMultisetPartitionsIntoSets(3, 2)
|
|
2418
|
-
|
|
2430
|
+
|
|
2431
|
+
We have to skip checking that elements are produced uniformly
|
|
2432
|
+
at random by :meth:`random_element`, because this is not the
|
|
2433
|
+
case.::
|
|
2434
|
+
|
|
2435
|
+
sage: TestSuite(C).run(skip="_test_random")
|
|
2419
2436
|
|
|
2420
2437
|
sage: C2 = OrderedMultisetPartitionsIntoSets([1,2,3], 2)
|
|
2421
2438
|
sage: C is C2
|
|
@@ -12,7 +12,7 @@ AUTHORS:
|
|
|
12
12
|
- Franco Saliola
|
|
13
13
|
- Chris Berg
|
|
14
14
|
"""
|
|
15
|
-
|
|
15
|
+
# ***************************************************************************
|
|
16
16
|
# Copyright (C) 2010 Jason Bandlow <jbandlow@gmail.com>,
|
|
17
17
|
# 2012 Franco Saliola <saliola@gmail.com>,
|
|
18
18
|
#
|
|
@@ -25,8 +25,8 @@ AUTHORS:
|
|
|
25
25
|
#
|
|
26
26
|
# The full text of the GPL is available at:
|
|
27
27
|
#
|
|
28
|
-
#
|
|
29
|
-
|
|
28
|
+
# https://www.gnu.org/licenses/
|
|
29
|
+
# ***************************************************************************
|
|
30
30
|
|
|
31
31
|
from sage.misc.cachefunc import cached_method
|
|
32
32
|
from sage.categories.realizations import Category_realization_of_parent
|
|
@@ -950,7 +950,7 @@ class BasesOfQSymOrNCSF(Category_realization_of_parent):
|
|
|
950
950
|
EXAMPLES::
|
|
951
951
|
|
|
952
952
|
sage: S = NonCommutativeSymmetricFunctions(QQ).S()
|
|
953
|
-
sage:
|
|
953
|
+
sage: x, y = S[2], S[3]
|
|
954
954
|
sage: x.degree()
|
|
955
955
|
2
|
|
956
956
|
sage: (x^3 + 4*y^2).degree()
|
|
@@ -961,7 +961,7 @@ class BasesOfQSymOrNCSF(Category_realization_of_parent):
|
|
|
961
961
|
::
|
|
962
962
|
|
|
963
963
|
sage: F = QuasiSymmetricFunctions(QQ).F()
|
|
964
|
-
sage:
|
|
964
|
+
sage: x, y = F[2], F[3]
|
|
965
965
|
sage: x.degree()
|
|
966
966
|
2
|
|
967
967
|
sage: (x^3 + 4*y^2).degree()
|
sage/combinat/ncsf_qsym/ncsf.py
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
Noncommutative symmetric functions
|
|
5
5
|
"""
|
|
6
6
|
# ****************************************************************************
|
|
7
|
-
# Copyright (C) 2009 Nicolas M.
|
|
7
|
+
# Copyright (C) 2009 Nicolas M. Thiéry <nthiery at users.sf.net>,
|
|
8
8
|
# 2012 Franco Saliola <saliola@gmail.com>,
|
|
9
9
|
# 2012 Chris Berg <chrisjamesberg@gmail.com>
|
|
10
10
|
#
|
|
@@ -17,7 +17,7 @@ Noncommutative symmetric functions
|
|
|
17
17
|
#
|
|
18
18
|
# The full text of the GPL is available at:
|
|
19
19
|
#
|
|
20
|
-
#
|
|
20
|
+
# https://www.gnu.org/licenses/
|
|
21
21
|
# ****************************************************************************
|
|
22
22
|
|
|
23
23
|
# TODO: Make Coercion run faster between multiple bases
|
|
@@ -401,7 +401,7 @@ class NonCommutativeSymmetricFunctions(UniqueRepresentation, Parent):
|
|
|
401
401
|
sage: TestSuite(complete).run()
|
|
402
402
|
"""
|
|
403
403
|
|
|
404
|
-
def __init__(self, R):
|
|
404
|
+
def __init__(self, R) -> None:
|
|
405
405
|
r"""
|
|
406
406
|
TESTS::
|
|
407
407
|
|
|
@@ -443,7 +443,7 @@ class NonCommutativeSymmetricFunctions(UniqueRepresentation, Parent):
|
|
|
443
443
|
Phi.algebra_morphism(Phi._to_complete_on_generators,
|
|
444
444
|
codomain=complete).register_as_coercion()
|
|
445
445
|
|
|
446
|
-
def _repr_(self):
|
|
446
|
+
def _repr_(self) -> str: # could be taken care of by the category
|
|
447
447
|
r"""
|
|
448
448
|
EXAMPLES::
|
|
449
449
|
|
|
@@ -470,7 +470,8 @@ class NonCommutativeSymmetricFunctions(UniqueRepresentation, Parent):
|
|
|
470
470
|
"""
|
|
471
471
|
return self.complete()
|
|
472
472
|
|
|
473
|
-
_shorthands =
|
|
473
|
+
_shorthands = ('S', 'R', 'L', 'Phi', 'Psi', 'nM', 'I',
|
|
474
|
+
'dQS', 'dYQS', 'ZL', 'ZR')
|
|
474
475
|
|
|
475
476
|
def dual(self):
|
|
476
477
|
r"""
|
sage/combinat/ncsf_qsym/qsym.py
CHANGED
|
@@ -92,15 +92,15 @@ from sage.combinat.partition import Partitions, _Partitions
|
|
|
92
92
|
from sage.combinat.free_module import CombinatorialFreeModule
|
|
93
93
|
from sage.combinat.sf.sf import SymmetricFunctions
|
|
94
94
|
from sage.combinat.ncsf_qsym.generic_basis_code import BasesOfQSymOrNCSF
|
|
95
|
-
from sage.combinat.ncsf_qsym.combinatorics import (
|
|
96
|
-
|
|
95
|
+
from sage.combinat.ncsf_qsym.combinatorics import (
|
|
96
|
+
number_of_fCT, number_of_SSRCT,
|
|
97
|
+
compositions_order, coeff_pi, coeff_lp, coeff_sp, coeff_ell)
|
|
97
98
|
from sage.combinat.ncsf_qsym.ncsf import NonCommutativeSymmetricFunctions
|
|
98
99
|
from sage.combinat.words.word import Word
|
|
99
100
|
from sage.combinat.tableau import StandardTableaux
|
|
100
101
|
from sage.misc.bindable_class import BindableClass
|
|
101
102
|
from sage.misc.cachefunc import cached_method
|
|
102
103
|
from sage.misc.lazy_import import lazy_import
|
|
103
|
-
from sage.misc.superseded import deprecated_function_alias
|
|
104
104
|
from sage.structure.parent import Parent
|
|
105
105
|
from sage.structure.unique_representation import UniqueRepresentation
|
|
106
106
|
|
|
@@ -547,7 +547,7 @@ class QuasiSymmetricFunctions(UniqueRepresentation, Parent):
|
|
|
547
547
|
True
|
|
548
548
|
"""
|
|
549
549
|
|
|
550
|
-
def __init__(self, R):
|
|
550
|
+
def __init__(self, R) -> None:
|
|
551
551
|
"""
|
|
552
552
|
The Hopf algebra of quasi-symmetric functions.
|
|
553
553
|
See ``QuasiSymmetricFunctions`` for full documentation.
|
|
@@ -610,7 +610,7 @@ class QuasiSymmetricFunctions(UniqueRepresentation, Parent):
|
|
|
610
610
|
codomain=Fundamental, category=category)
|
|
611
611
|
Sym_s_to_F.register_as_coercion()
|
|
612
612
|
|
|
613
|
-
def _repr_(self):
|
|
613
|
+
def _repr_(self) -> str:
|
|
614
614
|
r"""
|
|
615
615
|
EXAMPLES::
|
|
616
616
|
|
|
@@ -633,7 +633,7 @@ class QuasiSymmetricFunctions(UniqueRepresentation, Parent):
|
|
|
633
633
|
"""
|
|
634
634
|
return self.Monomial()
|
|
635
635
|
|
|
636
|
-
_shorthands =
|
|
636
|
+
_shorthands = ('M', 'F', 'E', 'dI', 'QS', 'YQS', 'phi', 'psi')
|
|
637
637
|
|
|
638
638
|
def dual(self):
|
|
639
639
|
r"""
|
|
@@ -1156,8 +1156,6 @@ class QuasiSymmetricFunctions(UniqueRepresentation, Parent):
|
|
|
1156
1156
|
result_in_M_basis = M._from_dict(dct)
|
|
1157
1157
|
return parent(result_in_M_basis)
|
|
1158
1158
|
|
|
1159
|
-
frobenius = deprecated_function_alias(36396, adams_operator)
|
|
1160
|
-
|
|
1161
1159
|
def star_involution(self):
|
|
1162
1160
|
r"""
|
|
1163
1161
|
Return the image of the quasisymmetric function ``self`` under
|
|
@@ -3538,26 +3536,20 @@ class QuasiSymmetricFunctions(UniqueRepresentation, Parent):
|
|
|
3538
3536
|
|
|
3539
3537
|
# For every composition I of size n, expand self[I] in terms
|
|
3540
3538
|
# of the monomial basis M.
|
|
3541
|
-
i
|
|
3542
|
-
for I in compositions_n:
|
|
3539
|
+
for i, I in enumerate(compositions_n):
|
|
3543
3540
|
# M_coeffs will be M(self[I])._monomial_coefficients
|
|
3544
3541
|
M_coeffs = {}
|
|
3545
3542
|
|
|
3546
3543
|
self_I_in_M_basis = M.prod([from_self_gen_function(self._indices(list(J)))
|
|
3547
3544
|
for J in Word(I).lyndon_factorization()])
|
|
3548
3545
|
|
|
3549
|
-
j
|
|
3550
|
-
|
|
3551
|
-
for J in compositions_n:
|
|
3546
|
+
for j, J in enumerate(compositions_n):
|
|
3552
3547
|
if J in self_I_in_M_basis._monomial_coefficients:
|
|
3553
3548
|
sp = self_I_in_M_basis._monomial_coefficients[J]
|
|
3554
3549
|
M_coeffs[J] = sp
|
|
3555
|
-
transition_matrix_n[i,j] = sp
|
|
3556
|
-
|
|
3557
|
-
j += 1
|
|
3550
|
+
transition_matrix_n[i, j] = sp
|
|
3558
3551
|
|
|
3559
3552
|
from_self_cache[I] = M_coeffs
|
|
3560
|
-
i += 1
|
|
3561
3553
|
|
|
3562
3554
|
# Save the transition matrix
|
|
3563
3555
|
inverse_transition_matrices[n] = transition_matrix_n
|
sage/combinat/ncsym/ncsym.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# sage_setup: distribution = sagemath-combinat
|
|
2
2
|
# sage.doctest: needs sage.combinat sage.modules
|
|
3
3
|
"""
|
|
4
|
-
Symmetric functions in
|
|
4
|
+
Symmetric functions in non-commuting variables
|
|
5
5
|
|
|
6
6
|
AUTHORS:
|
|
7
7
|
|
|
@@ -294,7 +294,7 @@ class SymmetricFunctionsNonCommutingVariables(UniqueRepresentation, Parent):
|
|
|
294
294
|
-4*p[] + 2*p[1] + p[2, 2]
|
|
295
295
|
"""
|
|
296
296
|
|
|
297
|
-
def __init__(self, R):
|
|
297
|
+
def __init__(self, R) -> None:
|
|
298
298
|
"""
|
|
299
299
|
Initialize ``self``.
|
|
300
300
|
|
|
@@ -310,7 +310,7 @@ class SymmetricFunctionsNonCommutingVariables(UniqueRepresentation, Parent):
|
|
|
310
310
|
category = GradedHopfAlgebras(R).Cocommutative()
|
|
311
311
|
Parent.__init__(self, category=category.WithRealizations())
|
|
312
312
|
|
|
313
|
-
def _repr_(self):
|
|
313
|
+
def _repr_(self) -> str:
|
|
314
314
|
r"""
|
|
315
315
|
EXAMPLES::
|
|
316
316
|
|
|
@@ -332,7 +332,7 @@ class SymmetricFunctionsNonCommutingVariables(UniqueRepresentation, Parent):
|
|
|
332
332
|
"""
|
|
333
333
|
return self.powersum()
|
|
334
334
|
|
|
335
|
-
_shorthands =
|
|
335
|
+
_shorthands = ('chi', 'cp', 'm', 'e', 'h', 'p', 'rho', 'x')
|
|
336
336
|
|
|
337
337
|
def dual(self):
|
|
338
338
|
r"""
|
|
@@ -400,10 +400,8 @@ class SymmetricFunctionsNonCommutingVariables(UniqueRepresentation, Parent):
|
|
|
400
400
|
def lt(s, t):
|
|
401
401
|
if s == t:
|
|
402
402
|
return False
|
|
403
|
-
for
|
|
404
|
-
|
|
405
|
-
return False
|
|
406
|
-
return True
|
|
403
|
+
return all(len([1 for z in t if z.intersection(p)]) == 1
|
|
404
|
+
for p in s)
|
|
407
405
|
|
|
408
406
|
p = self.realization_of().p()
|
|
409
407
|
P = Poset((A.coarsenings(), lt))
|
|
@@ -1734,10 +1732,8 @@ class SymmetricFunctionsNonCommutingVariables(UniqueRepresentation, Parent):
|
|
|
1734
1732
|
def lt(s, t):
|
|
1735
1733
|
if s == t:
|
|
1736
1734
|
return False
|
|
1737
|
-
for
|
|
1738
|
-
|
|
1739
|
-
return False
|
|
1740
|
-
return True
|
|
1735
|
+
return all(len([1 for z in t if z.intersection(p)]) == 1
|
|
1736
|
+
for p in s)
|
|
1741
1737
|
|
|
1742
1738
|
p = self.realization_of().p()
|
|
1743
1739
|
P_refine = Poset((A.refinements(), lt))
|
sage/combinat/nu_dyck_word.py
CHANGED
|
@@ -1463,7 +1463,7 @@ class ParallelogramPolyomino(ClonableList,
|
|
|
1463
1463
|
....: [1, 1, 0, 1, 1, 0, 0, 0, 1, 0]
|
|
1464
1464
|
....: ]
|
|
1465
1465
|
....: )
|
|
1466
|
-
sage: pp._to_binary_tree_Aval_Boussicault()
|
|
1466
|
+
sage: pp._to_binary_tree_Aval_Boussicault() # needs sage.graphs
|
|
1467
1467
|
[[., [[., .], [[., [., .]], .]]], [[., .], .]]
|
|
1468
1468
|
|
|
1469
1469
|
sage: pp = ParallelogramPolyomino([[0, 1], [1, 0]])
|
|
@@ -1522,7 +1522,7 @@ class ParallelogramPolyomino(ClonableList,
|
|
|
1522
1522
|
....: [1, 1, 0, 1, 1, 0, 0, 0, 1, 0]
|
|
1523
1523
|
....: ]
|
|
1524
1524
|
....: )
|
|
1525
|
-
sage: pp.to_binary_tree()
|
|
1525
|
+
sage: pp.to_binary_tree() # needs sage.graphs
|
|
1526
1526
|
[[., [[., .], [[., [., .]], .]]], [[., .], .]]
|
|
1527
1527
|
|
|
1528
1528
|
sage: pp = ParallelogramPolyomino([[0, 1], [1, 0]])
|
|
@@ -3149,9 +3149,7 @@ class ParallelogramPolyomino(ClonableList,
|
|
|
3149
3149
|
return False
|
|
3150
3150
|
if self[pos[0] - 1][pos[1]] == 0:
|
|
3151
3151
|
return True
|
|
3152
|
-
|
|
3153
|
-
return True
|
|
3154
|
-
return False
|
|
3152
|
+
return self[pos[0]][pos[1] - 1] == 0
|
|
3155
3153
|
|
|
3156
3154
|
def box_is_root(self, box) -> bool:
|
|
3157
3155
|
r"""
|
|
@@ -64,7 +64,6 @@ AUTHORS:
|
|
|
64
64
|
# https://www.gnu.org/licenses/
|
|
65
65
|
# ****************************************************************************
|
|
66
66
|
from __future__ import annotations
|
|
67
|
-
from collections.abc import Iterator
|
|
68
67
|
|
|
69
68
|
from sage.rings.integer import Integer
|
|
70
69
|
from sage.rings.rational_field import QQ
|
|
@@ -81,6 +80,10 @@ from sage.categories.infinite_enumerated_sets import InfiniteEnumeratedSets
|
|
|
81
80
|
from sage.categories.sets_with_grading import SetsWithGrading
|
|
82
81
|
from sage.structure.parent import Parent
|
|
83
82
|
from sage.structure.unique_representation import UniqueRepresentation
|
|
83
|
+
from typing import TYPE_CHECKING
|
|
84
|
+
|
|
85
|
+
if TYPE_CHECKING:
|
|
86
|
+
from collections.abc import Iterator
|
|
84
87
|
|
|
85
88
|
|
|
86
89
|
def is_a(x, n=None) -> bool:
|
|
@@ -1002,7 +1005,7 @@ class ParkingFunction(ClonableArray, metaclass=InheritComparisonClasscallMetacla
|
|
|
1002
1005
|
|
|
1003
1006
|
sage: # needs sage.modules
|
|
1004
1007
|
sage: R = QQ['q','t'].fraction_field()
|
|
1005
|
-
sage:
|
|
1008
|
+
sage: q, t = R.gens()
|
|
1006
1009
|
sage: cqf = sum(t**PF.area() * PF.characteristic_quasisymmetric_function()
|
|
1007
1010
|
....: for PF in ParkingFunctions(3)); cqf
|
|
1008
1011
|
(q^3+q^2*t+q*t^2+t^3+q*t)*F[1, 1, 1] + (q^2+q*t+t^2+q+t)*F[1, 2]
|
|
@@ -1399,9 +1402,7 @@ class ParkingFunctions_all(ParkingFunctions):
|
|
|
1399
1402
|
sage: x == y
|
|
1400
1403
|
True
|
|
1401
1404
|
"""
|
|
1402
|
-
|
|
1403
|
-
return True
|
|
1404
|
-
return False
|
|
1405
|
+
return isinstance(S, ParkingFunctions_n)
|
|
1405
1406
|
|
|
1406
1407
|
|
|
1407
1408
|
class ParkingFunctions_n(ParkingFunctions):
|
|
@@ -118,7 +118,7 @@ def SetPartitionsAk(k):
|
|
|
118
118
|
sage: A3.random_element() #random # needs sage.symbolic
|
|
119
119
|
{{1, 3, -3, -1}, {2, -2}}
|
|
120
120
|
|
|
121
|
-
sage: A3.cardinality()
|
|
121
|
+
sage: A3.cardinality() # needs sage.libs.flint
|
|
122
122
|
203
|
|
123
123
|
|
|
124
124
|
sage: A2p5 = SetPartitionsAk(2.5); A2p5
|
|
@@ -192,7 +192,7 @@ class SetPartitionsAkhalf_k(SetPartitions_set):
|
|
|
192
192
|
s = self.k + 1
|
|
193
193
|
return "Set partitions of {1, ..., %s, -1, ..., -%s} with %s and -%s in the same block" % (s, s, s, s)
|
|
194
194
|
|
|
195
|
-
def __contains__(self, x):
|
|
195
|
+
def __contains__(self, x) -> bool:
|
|
196
196
|
"""
|
|
197
197
|
TESTS::
|
|
198
198
|
|
|
@@ -208,11 +208,8 @@ class SetPartitionsAkhalf_k(SetPartitions_set):
|
|
|
208
208
|
if x not in SetPartitionsAk_k(self.k + 1):
|
|
209
209
|
return False
|
|
210
210
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
return False
|
|
214
|
-
|
|
215
|
-
return True
|
|
211
|
+
return all(self.k + 1 not in part or -self.k - 1 in part
|
|
212
|
+
for part in x)
|
|
216
213
|
|
|
217
214
|
def __iter__(self):
|
|
218
215
|
"""
|
|
@@ -326,10 +323,7 @@ class SetPartitionsSk_k(SetPartitionsAk_k):
|
|
|
326
323
|
if not SetPartitionsAk_k.__contains__(self, x):
|
|
327
324
|
return False
|
|
328
325
|
|
|
329
|
-
|
|
330
|
-
return False
|
|
331
|
-
|
|
332
|
-
return True
|
|
326
|
+
return propagating_number(x) == self.k
|
|
333
327
|
|
|
334
328
|
def cardinality(self):
|
|
335
329
|
"""
|
|
@@ -385,9 +379,7 @@ class SetPartitionsSkhalf_k(SetPartitionsAkhalf_k):
|
|
|
385
379
|
"""
|
|
386
380
|
if not SetPartitionsAkhalf_k.__contains__(self, x):
|
|
387
381
|
return False
|
|
388
|
-
|
|
389
|
-
return False
|
|
390
|
-
return True
|
|
382
|
+
return propagating_number(x) == self.k + 1
|
|
391
383
|
|
|
392
384
|
def _repr_(self):
|
|
393
385
|
"""
|
|
@@ -506,9 +498,7 @@ class SetPartitionsIk_k(SetPartitionsAk_k):
|
|
|
506
498
|
"""
|
|
507
499
|
if not SetPartitionsAk_k.__contains__(self, x):
|
|
508
500
|
return False
|
|
509
|
-
|
|
510
|
-
return False
|
|
511
|
-
return True
|
|
501
|
+
return propagating_number(x) < self.k
|
|
512
502
|
|
|
513
503
|
def cardinality(self):
|
|
514
504
|
"""
|
|
@@ -559,9 +549,7 @@ class SetPartitionsIkhalf_k(SetPartitionsAkhalf_k):
|
|
|
559
549
|
"""
|
|
560
550
|
if not SetPartitionsAkhalf_k.__contains__(self, x):
|
|
561
551
|
return False
|
|
562
|
-
|
|
563
|
-
return False
|
|
564
|
-
return True
|
|
552
|
+
return propagating_number(x) < self.k + 1
|
|
565
553
|
|
|
566
554
|
def _repr_(self):
|
|
567
555
|
"""
|
|
@@ -616,6 +604,7 @@ def SetPartitionsBk(k):
|
|
|
616
604
|
sage: B3 = SetPartitionsBk(3); B3
|
|
617
605
|
Set partitions of {1, ..., 3, -1, ..., -3} with block size 2
|
|
618
606
|
|
|
607
|
+
sage: # needs sage.graphs
|
|
619
608
|
sage: B3.first() #random
|
|
620
609
|
{{2, -2}, {1, -3}, {3, -1}}
|
|
621
610
|
sage: B3.last() #random
|
|
@@ -629,6 +618,7 @@ def SetPartitionsBk(k):
|
|
|
629
618
|
sage: B2p5 = SetPartitionsBk(2.5); B2p5
|
|
630
619
|
Set partitions of {1, ..., 3, -1, ..., -3} with 3 and -3 in the same block and with block size 2
|
|
631
620
|
|
|
621
|
+
sage: # needs sage.graphs
|
|
632
622
|
sage: B2p5.first() #random
|
|
633
623
|
{{2, -1}, {3, -3}, {1, -2}}
|
|
634
624
|
sage: B2p5.last() #random
|
|
@@ -669,11 +659,7 @@ class SetPartitionsBk_k(SetPartitionsAk_k):
|
|
|
669
659
|
if not SetPartitionsAk_k.__contains__(self, x):
|
|
670
660
|
return False
|
|
671
661
|
|
|
672
|
-
for part in x
|
|
673
|
-
if len(part) != 2:
|
|
674
|
-
return False
|
|
675
|
-
|
|
676
|
-
return True
|
|
662
|
+
return all(len(part) == 2 for part in x)
|
|
677
663
|
|
|
678
664
|
def cardinality(self):
|
|
679
665
|
r"""
|
|
@@ -703,14 +689,14 @@ class SetPartitionsBk_k(SetPartitionsAk_k):
|
|
|
703
689
|
"""
|
|
704
690
|
TESTS::
|
|
705
691
|
|
|
706
|
-
sage: SetPartitionsBk(1).list()
|
|
692
|
+
sage: SetPartitionsBk(1).list() # needs sage.graphs
|
|
707
693
|
[{{-1, 1}}]
|
|
708
694
|
|
|
709
695
|
::
|
|
710
696
|
|
|
711
|
-
sage: SetPartitionsBk(2).list() #random
|
|
697
|
+
sage: SetPartitionsBk(2).list() #random # needs sage.graphs
|
|
712
698
|
[{{2, -1}, {1, -2}}, {{2, -2}, {1, -1}}, {{1, 2}, {-1, -2}}]
|
|
713
|
-
sage: SetPartitionsBk(3).list() #random
|
|
699
|
+
sage: SetPartitionsBk(3).list() #random # needs sage.graphs
|
|
714
700
|
[{{2, -2}, {1, -3}, {3, -1}},
|
|
715
701
|
{{2, -1}, {1, -3}, {3, -2}},
|
|
716
702
|
{{1, -3}, {2, 3}, {-1, -2}},
|
|
@@ -733,7 +719,7 @@ class SetPartitionsBk_k(SetPartitionsAk_k):
|
|
|
733
719
|
::
|
|
734
720
|
|
|
735
721
|
sage: bks = [SetPartitionsBk(i) for i in range(1, 6)]
|
|
736
|
-
sage: all(bk.cardinality() == len(bk.list()) for bk in bks)
|
|
722
|
+
sage: all(bk.cardinality() == len(bk.list()) for bk in bks) # needs sage.graphs
|
|
737
723
|
True
|
|
738
724
|
"""
|
|
739
725
|
for sp in SetPartitions(self._set, [2] * (len(self._set) // 2)):
|
|
@@ -765,10 +751,7 @@ class SetPartitionsBkhalf_k(SetPartitionsAkhalf_k):
|
|
|
765
751
|
"""
|
|
766
752
|
if not SetPartitionsAkhalf_k.__contains__(self, x):
|
|
767
753
|
return False
|
|
768
|
-
for part in x
|
|
769
|
-
if len(part) != 2:
|
|
770
|
-
return False
|
|
771
|
-
return True
|
|
754
|
+
return all(len(part) == 2 for part in x)
|
|
772
755
|
|
|
773
756
|
def cardinality(self):
|
|
774
757
|
"""
|
|
@@ -880,10 +863,7 @@ class SetPartitionsPk_k(SetPartitionsAk_k):
|
|
|
880
863
|
if not SetPartitionsAk_k.__contains__(self, x):
|
|
881
864
|
return False
|
|
882
865
|
|
|
883
|
-
|
|
884
|
-
return False
|
|
885
|
-
|
|
886
|
-
return True
|
|
866
|
+
return is_planar(x)
|
|
887
867
|
|
|
888
868
|
def cardinality(self):
|
|
889
869
|
"""
|
|
@@ -939,10 +919,7 @@ class SetPartitionsPkhalf_k(SetPartitionsAkhalf_k):
|
|
|
939
919
|
"""
|
|
940
920
|
if not SetPartitionsAkhalf_k.__contains__(self, x):
|
|
941
921
|
return False
|
|
942
|
-
|
|
943
|
-
return False
|
|
944
|
-
|
|
945
|
-
return True
|
|
922
|
+
return is_planar(x)
|
|
946
923
|
|
|
947
924
|
def _repr_(self):
|
|
948
925
|
"""
|
|
@@ -1049,10 +1026,7 @@ class SetPartitionsTk_k(SetPartitionsBk_k):
|
|
|
1049
1026
|
if not SetPartitionsBk_k.__contains__(self, x):
|
|
1050
1027
|
return False
|
|
1051
1028
|
|
|
1052
|
-
|
|
1053
|
-
return False
|
|
1054
|
-
|
|
1055
|
-
return True
|
|
1029
|
+
return is_planar(x)
|
|
1056
1030
|
|
|
1057
1031
|
def cardinality(self):
|
|
1058
1032
|
"""
|
|
@@ -1102,10 +1076,7 @@ class SetPartitionsTkhalf_k(SetPartitionsBkhalf_k):
|
|
|
1102
1076
|
"""
|
|
1103
1077
|
if not SetPartitionsBkhalf_k.__contains__(self, x):
|
|
1104
1078
|
return False
|
|
1105
|
-
|
|
1106
|
-
return False
|
|
1107
|
-
|
|
1108
|
-
return True
|
|
1079
|
+
return is_planar(x)
|
|
1109
1080
|
|
|
1110
1081
|
def _repr_(self):
|
|
1111
1082
|
"""
|
|
@@ -1395,10 +1366,7 @@ class SetPartitionsPRk_k(SetPartitionsRk_k):
|
|
|
1395
1366
|
if not SetPartitionsRk_k.__contains__(self, x):
|
|
1396
1367
|
return False
|
|
1397
1368
|
|
|
1398
|
-
|
|
1399
|
-
return False
|
|
1400
|
-
|
|
1401
|
-
return True
|
|
1369
|
+
return is_planar(x)
|
|
1402
1370
|
|
|
1403
1371
|
def cardinality(self):
|
|
1404
1372
|
"""
|
|
@@ -1454,10 +1422,7 @@ class SetPartitionsPRkhalf_k(SetPartitionsRkhalf_k):
|
|
|
1454
1422
|
if not SetPartitionsRkhalf_k.__contains__(self, x):
|
|
1455
1423
|
return False
|
|
1456
1424
|
|
|
1457
|
-
|
|
1458
|
-
return False
|
|
1459
|
-
|
|
1460
|
-
return True
|
|
1425
|
+
return is_planar(x)
|
|
1461
1426
|
|
|
1462
1427
|
def _repr_(self):
|
|
1463
1428
|
"""
|
|
@@ -429,7 +429,7 @@ class KleshchevPartition(Partition):
|
|
|
429
429
|
KP = mu.parent()
|
|
430
430
|
return KP.element_class(KP, mu.add_cell(*mu.cogood_cells( r-c-self.parent()._multicharge[0]) ))
|
|
431
431
|
|
|
432
|
-
def is_regular(self):
|
|
432
|
+
def is_regular(self) -> bool:
|
|
433
433
|
r"""
|
|
434
434
|
Return ``True`` if ``self`` is a `e`-regular partition tuple.
|
|
435
435
|
|
|
@@ -455,7 +455,7 @@ class KleshchevPartition(Partition):
|
|
|
455
455
|
KP = self.parent()
|
|
456
456
|
return super().is_regular(KP._e, KP._multicharge)
|
|
457
457
|
|
|
458
|
-
def is_restricted(self):
|
|
458
|
+
def is_restricted(self) -> bool:
|
|
459
459
|
r"""
|
|
460
460
|
Return ``True`` if ``self`` is an `e`-restricted partition tuple.
|
|
461
461
|
|
|
@@ -812,7 +812,7 @@ class KleshchevPartitionTuple(PartitionTuple):
|
|
|
812
812
|
KP = mu.parent()
|
|
813
813
|
return KP.element_class(KP, mu.add_cell(*mu.cogood_cells( r-c-self.parent()._multicharge[k])))
|
|
814
814
|
|
|
815
|
-
def is_regular(self):
|
|
815
|
+
def is_regular(self) -> bool:
|
|
816
816
|
r"""
|
|
817
817
|
Return ``True`` if ``self`` is a `e`-regular partition tuple.
|
|
818
818
|
|
|
@@ -836,7 +836,7 @@ class KleshchevPartitionTuple(PartitionTuple):
|
|
|
836
836
|
KP = self.parent()
|
|
837
837
|
return _is_regular(self.to_list(), KP._multicharge, KP._convention)
|
|
838
838
|
|
|
839
|
-
def is_restricted(self):
|
|
839
|
+
def is_restricted(self) -> bool:
|
|
840
840
|
r"""
|
|
841
841
|
Return ``True`` if ``self`` is an `e`-restricted partition tuple.
|
|
842
842
|
|