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.
Files changed (221) hide show
  1. passagemath_combinat/__init__.py +3 -0
  2. {passagemath_combinat-10.6.1.dist-info → passagemath_combinat-10.8.1a1.dist-info}/METADATA +17 -20
  3. {passagemath_combinat-10.6.1.dist-info → passagemath_combinat-10.8.1a1.dist-info}/RECORD +220 -218
  4. {passagemath_combinat-10.6.1.dist-info → passagemath_combinat-10.8.1a1.dist-info}/WHEEL +1 -1
  5. passagemath_combinat-10.8.1a1.dist-info/top_level.txt +3 -0
  6. sage/algebras/affine_nil_temperley_lieb.py +3 -3
  7. sage/algebras/all.py +0 -1
  8. sage/algebras/askey_wilson.py +1 -1
  9. sage/algebras/associated_graded.py +2 -2
  10. sage/algebras/cellular_basis.py +3 -6
  11. sage/algebras/cluster_algebra.py +2 -3
  12. sage/algebras/down_up_algebra.py +6 -6
  13. sage/algebras/free_algebra.py +3 -32
  14. sage/algebras/free_algebra_element.py +21 -25
  15. sage/algebras/free_algebra_quotient_element.py +9 -38
  16. sage/algebras/free_zinbiel_algebra.py +4 -3
  17. sage/algebras/hall_algebra.py +2 -2
  18. sage/algebras/hecke_algebras/ariki_koike_algebra.py +8 -8
  19. sage/algebras/hecke_algebras/ariki_koike_specht_modules.py +2 -2
  20. sage/algebras/hecke_algebras/cubic_hecke_algebra.py +11 -14
  21. sage/algebras/hecke_algebras/cubic_hecke_base_ring.py +1 -1
  22. sage/algebras/hecke_algebras/cubic_hecke_matrix_rep.py +5 -5
  23. sage/algebras/iwahori_hecke_algebra.py +59 -57
  24. sage/algebras/jordan_algebra.py +97 -89
  25. sage/algebras/lie_conformal_algebras/abelian_lie_conformal_algebra.py +6 -6
  26. sage/algebras/lie_conformal_algebras/affine_lie_conformal_algebra.py +14 -12
  27. sage/algebras/lie_conformal_algebras/bosonic_ghosts_lie_conformal_algebra.py +6 -6
  28. sage/algebras/lie_conformal_algebras/fermionic_ghosts_lie_conformal_algebra.py +4 -4
  29. sage/algebras/lie_conformal_algebras/finitely_freely_generated_lca.py +13 -13
  30. sage/algebras/lie_conformal_algebras/free_bosons_lie_conformal_algebra.py +8 -6
  31. sage/algebras/lie_conformal_algebras/free_fermions_lie_conformal_algebra.py +7 -5
  32. sage/algebras/lie_conformal_algebras/freely_generated_lie_conformal_algebra.py +7 -7
  33. sage/algebras/lie_conformal_algebras/graded_lie_conformal_algebra.py +6 -5
  34. sage/algebras/lie_conformal_algebras/lie_conformal_algebra.py +12 -11
  35. sage/algebras/lie_conformal_algebras/lie_conformal_algebra_element.py +3 -3
  36. sage/algebras/lie_conformal_algebras/lie_conformal_algebra_with_basis.py +3 -3
  37. sage/algebras/lie_conformal_algebras/lie_conformal_algebra_with_structure_coefs.py +11 -11
  38. sage/algebras/lie_conformal_algebras/n2_lie_conformal_algebra.py +3 -3
  39. sage/algebras/lie_conformal_algebras/neveu_schwarz_lie_conformal_algebra.py +8 -7
  40. sage/algebras/lie_conformal_algebras/virasoro_lie_conformal_algebra.py +9 -8
  41. sage/algebras/lie_conformal_algebras/weyl_lie_conformal_algebra.py +6 -5
  42. sage/algebras/nil_coxeter_algebra.py +4 -4
  43. sage/algebras/q_commuting_polynomials.py +6 -6
  44. sage/algebras/q_system.py +3 -3
  45. sage/algebras/quantum_clifford.py +8 -8
  46. sage/algebras/quantum_groups/fock_space.py +48 -8
  47. sage/algebras/quantum_groups/quantum_group_gap.py +5 -7
  48. sage/algebras/quantum_matrix_coordinate_algebra.py +7 -7
  49. sage/algebras/quantum_oscillator.py +3 -3
  50. sage/algebras/quaternion_algebra_element.py +5 -3
  51. sage/algebras/schur_algebra.py +3 -3
  52. sage/algebras/shuffle_algebra.py +5 -8
  53. sage/algebras/splitting_algebra.py +129 -85
  54. sage/algebras/tensor_algebra.py +7 -7
  55. sage/algebras/yangian.py +16 -15
  56. sage/algebras/yokonuma_hecke_algebra.py +13 -11
  57. sage/combinat/all.py +9 -0
  58. sage/combinat/all__sagemath_combinat.py +1 -0
  59. sage/combinat/alternating_sign_matrix.py +36 -29
  60. sage/combinat/baxter_permutations.py +32 -12
  61. sage/combinat/bijectionist.py +13 -17
  62. sage/combinat/chas/fsym.py +6 -6
  63. sage/combinat/chas/wqsym.py +23 -29
  64. sage/combinat/colored_permutations.py +9 -11
  65. sage/combinat/colored_permutations_representations.py +13 -12
  66. sage/combinat/composition_tableau.py +2 -2
  67. sage/combinat/constellation.py +57 -30
  68. sage/combinat/crystals/affine_factorization.py +5 -4
  69. sage/combinat/crystals/alcove_path.py +2 -2
  70. sage/combinat/crystals/fully_commutative_stable_grothendieck.py +3 -2
  71. sage/combinat/crystals/infinity_crystals.py +18 -18
  72. sage/combinat/crystals/kac_modules.py +1 -1
  73. sage/combinat/crystals/kirillov_reshetikhin.py +2 -2
  74. sage/combinat/crystals/letters.cpython-312-aarch64-linux-musl.so +0 -0
  75. sage/combinat/crystals/littelmann_path.py +1 -1
  76. sage/combinat/crystals/pbw_datum.cpython-312-aarch64-linux-musl.so +0 -0
  77. sage/combinat/crystals/pbw_datum.pyx +3 -2
  78. sage/combinat/crystals/spins.cpython-312-aarch64-linux-musl.so +0 -0
  79. sage/combinat/crystals/tensor_product.py +7 -5
  80. sage/combinat/crystals/tensor_product_element.cpython-312-aarch64-linux-musl.so +0 -0
  81. sage/combinat/debruijn_sequence.cpython-312-aarch64-linux-musl.so +0 -0
  82. sage/combinat/debruijn_sequence.pyx +1 -2
  83. sage/combinat/degree_sequences.cpython-312-aarch64-linux-musl.so +0 -0
  84. sage/combinat/degree_sequences.pyx +241 -188
  85. sage/combinat/derangements.py +28 -22
  86. sage/combinat/diagram_algebras.py +12 -14
  87. sage/combinat/dyck_word.py +15 -14
  88. sage/combinat/e_one_star.py +1 -1
  89. sage/combinat/expnums.cpython-312-aarch64-linux-musl.so +0 -0
  90. sage/combinat/fast_vector_partitions.cpython-312-aarch64-linux-musl.so +0 -0
  91. sage/combinat/fqsym.py +13 -19
  92. sage/combinat/free_dendriform_algebra.py +2 -2
  93. sage/combinat/free_prelie_algebra.py +2 -2
  94. sage/combinat/fully_commutative_elements.py +8 -8
  95. sage/combinat/fully_packed_loop.py +9 -9
  96. sage/combinat/gelfand_tsetlin_patterns.py +4 -5
  97. sage/combinat/gray_codes.py +3 -4
  98. sage/combinat/grossman_larson_algebras.py +2 -2
  99. sage/combinat/growth.py +13 -13
  100. sage/combinat/hall_polynomial.py +1 -1
  101. sage/combinat/hillman_grassl.py +1 -1
  102. sage/combinat/integer_matrices.py +5 -7
  103. sage/combinat/k_tableau.py +8 -7
  104. sage/combinat/kazhdan_lusztig.py +3 -3
  105. sage/combinat/key_polynomial.py +845 -298
  106. sage/combinat/knutson_tao_puzzles.py +11 -13
  107. sage/combinat/matrices/hadamard_matrix.py +1 -1
  108. sage/combinat/matrices/latin.py +75 -92
  109. sage/combinat/misc.py +3 -3
  110. sage/combinat/multiset_partition_into_sets_ordered.py +27 -10
  111. sage/combinat/ncsf_qsym/generic_basis_code.py +5 -5
  112. sage/combinat/ncsf_qsym/ncsf.py +6 -5
  113. sage/combinat/ncsf_qsym/qsym.py +9 -17
  114. sage/combinat/ncsym/ncsym.py +8 -12
  115. sage/combinat/nu_dyck_word.py +1 -1
  116. sage/combinat/parallelogram_polyomino.py +3 -5
  117. sage/combinat/parking_functions.py +6 -5
  118. sage/combinat/partition_algebra.py +22 -57
  119. sage/combinat/partition_kleshchev.py +4 -4
  120. sage/combinat/partition_tuple.py +12 -10
  121. sage/combinat/plane_partition.py +10 -13
  122. sage/combinat/positive_integer_semigroup_test.py +17 -0
  123. sage/combinat/q_bernoulli.cpython-312-aarch64-linux-musl.so +0 -0
  124. sage/combinat/quickref.py +2 -2
  125. sage/combinat/recognizable_series.py +2 -2
  126. sage/combinat/regular_sequence.py +7 -7
  127. sage/combinat/regular_sequence_bounded.py +15 -21
  128. sage/combinat/restricted_growth.py +3 -3
  129. sage/combinat/ribbon.py +3 -3
  130. sage/combinat/rigged_configurations/bijection.py +3 -3
  131. sage/combinat/rigged_configurations/rigged_partition.cpython-312-aarch64-linux-musl.so +0 -0
  132. sage/combinat/rsk.py +2 -0
  133. sage/combinat/schubert_polynomial.py +11 -2
  134. sage/combinat/set_partition.py +3 -7
  135. sage/combinat/set_partition_iterator.cpython-312-aarch64-linux-musl.so +0 -0
  136. sage/combinat/set_partition_iterator.pyx +0 -1
  137. sage/combinat/set_partition_ordered.py +2 -2
  138. sage/combinat/sf/classical.py +1 -1
  139. sage/combinat/sf/dual.py +4 -8
  140. sage/combinat/sf/elementary.py +13 -7
  141. sage/combinat/sf/hall_littlewood.py +10 -8
  142. sage/combinat/sf/homogeneous.py +6 -3
  143. sage/combinat/sf/jack.py +11 -9
  144. sage/combinat/sf/llt.py +4 -5
  145. sage/combinat/sf/macdonald.py +10 -11
  146. sage/combinat/sf/monomial.py +6 -0
  147. sage/combinat/sf/ns_macdonald.py +92 -51
  148. sage/combinat/sf/powersum.py +9 -14
  149. sage/combinat/sf/schur.py +6 -0
  150. sage/combinat/sf/sf.py +21 -19
  151. sage/combinat/sf/sfa.py +13 -64
  152. sage/combinat/shifted_primed_tableau.py +5 -7
  153. sage/combinat/shuffle.py +1 -1
  154. sage/combinat/sine_gordon.py +18 -38
  155. sage/combinat/skew_partition.py +9 -12
  156. sage/combinat/skew_tableau.py +2 -7
  157. sage/combinat/sloane_functions.py +1 -1
  158. sage/combinat/species/all.py +67 -2
  159. sage/combinat/species/characteristic_species.py +3 -0
  160. sage/combinat/species/composition_species.py +3 -0
  161. sage/combinat/species/cycle_species.py +4 -0
  162. sage/combinat/species/empty_species.py +3 -0
  163. sage/combinat/species/functorial_composition_species.py +3 -0
  164. sage/combinat/species/generating_series.py +3 -0
  165. sage/combinat/species/library.py +3 -0
  166. sage/combinat/species/linear_order_species.py +3 -0
  167. sage/combinat/species/partition_species.py +3 -0
  168. sage/combinat/species/permutation_species.py +4 -0
  169. sage/combinat/species/product_species.py +3 -0
  170. sage/combinat/species/recursive_species.py +3 -0
  171. sage/combinat/species/set_species.py +3 -0
  172. sage/combinat/species/species.py +13 -7
  173. sage/combinat/species/structure.py +8 -9
  174. sage/combinat/species/subset_species.py +3 -0
  175. sage/combinat/species/sum_species.py +3 -0
  176. sage/combinat/subword.py +4 -1
  177. sage/combinat/subword_complex.py +7 -7
  178. sage/combinat/subword_complex_c.cpython-312-aarch64-linux-musl.so +0 -0
  179. sage/combinat/superpartition.py +1 -1
  180. sage/combinat/symmetric_group_algebra.py +9 -9
  181. sage/combinat/symmetric_group_representations.py +5 -5
  182. sage/combinat/t_sequences.py +4 -4
  183. sage/combinat/tableau.py +3 -4
  184. sage/combinat/tableau_tuple.py +2 -2
  185. sage/combinat/tiling.py +39 -42
  186. sage/combinat/triangles_FHM.py +38 -15
  187. sage/combinat/tutorial.py +2 -2
  188. sage/combinat/vector_partition.py +43 -31
  189. sage/combinat/words/abstract_word.py +4 -4
  190. sage/combinat/words/alphabet.py +12 -12
  191. sage/combinat/words/finite_word.py +25 -229
  192. sage/combinat/words/infinite_word.py +1 -1
  193. sage/combinat/words/morphic.py +13 -13
  194. sage/combinat/words/morphism.py +3 -12
  195. sage/combinat/words/paths.py +16 -17
  196. sage/combinat/words/word.py +60 -35
  197. sage/combinat/words/word_char.cpython-312-aarch64-linux-musl.so +0 -0
  198. sage/combinat/words/word_char.pyx +46 -7
  199. sage/combinat/words/word_datatypes.cpython-312-aarch64-linux-musl.so +0 -0
  200. sage/combinat/words/word_generators.py +39 -38
  201. sage/databases/findstat.py +72 -31
  202. sage/databases/oeis.py +125 -25
  203. sage/databases/sloane.py +14 -8
  204. sage/games/sudoku_backtrack.cpython-312-aarch64-linux-musl.so +0 -0
  205. sage/groups/indexed_free_group.py +3 -4
  206. sage/libs/symmetrica/symmetrica.cpython-312-aarch64-linux-musl.so +0 -0
  207. sage/libs/symmetrica/symmetrica.pxi +1 -0
  208. sage/monoids/automatic_semigroup.py +1 -3
  209. sage/monoids/free_abelian_monoid.py +7 -33
  210. sage/monoids/free_abelian_monoid_element.cpython-312-aarch64-linux-musl.so +0 -0
  211. sage/monoids/free_monoid.py +8 -40
  212. sage/monoids/free_monoid_element.py +1 -9
  213. sage/monoids/string_monoid.py +5 -2
  214. sage/monoids/string_monoid_element.py +12 -66
  215. sage/rings/all__sagemath_combinat.py +7 -0
  216. sage/sat/solvers/__init__.py +3 -4
  217. sage/sat/solvers/cryptominisat.py +2 -3
  218. sage/sat/solvers/picosat.py +2 -3
  219. sage/sat/solvers/sat_lp.py +2 -2
  220. sage/sat/solvers/satsolver.cpython-312-aarch64-linux-musl.so +0 -0
  221. passagemath_combinat-10.6.1.dist-info/top_level.txt +0 -2
@@ -10,12 +10,12 @@ AUTHORS:
10
10
  Jordan algebra
11
11
  """
12
12
 
13
- #*****************************************************************************
13
+ # ***************************************************************************
14
14
  # Copyright (C) 2014, 2023 Travis Scrimshaw <tscrim at ucdavis.edu>
15
15
  #
16
16
  # Distributed under the terms of the GNU General Public License (GPL)
17
17
  # https://www.gnu.org/licenses/
18
- #*****************************************************************************
18
+ # ***************************************************************************
19
19
 
20
20
  from sage.structure.parent import Parent
21
21
  from sage.structure.unique_representation import UniqueRepresentation
@@ -166,7 +166,12 @@ class JordanAlgebra(UniqueRepresentation, Parent):
166
166
 
167
167
  sage: cat = Algebras(QQ).WithBasis().FiniteDimensional()
168
168
  sage: C = CombinatorialFreeModule(QQ, ['x','y','z'], category=cat)
169
- sage: J1 = JordanAlgebra(C, names=['a','b','c'])
169
+ sage: J1 = JordanAlgebra(C, names=['a','b','c']); J1
170
+ Jordan algebra of Free module generated by {'x', 'y', 'z'}
171
+ over Rational Field
172
+
173
+ In this case, the following syntactic sugar works::
174
+
170
175
  sage: J2.<a,b,c> = JordanAlgebra(C)
171
176
  sage: J1 is J2
172
177
  True
@@ -210,7 +215,7 @@ class JordanAlgebra(UniqueRepresentation, Parent):
210
215
  if not arg1.is_symmetric():
211
216
  raise ValueError("the bilinear form is not symmetric")
212
217
 
213
- arg1 = arg1.change_ring(arg0) # This makes a copy
218
+ arg1 = arg1.change_ring(arg0) # This makes a copy
214
219
  arg1.set_immutable()
215
220
  return JordanAlgebraSymmetricBilinear(arg0, arg1, names=names)
216
221
 
@@ -241,7 +246,7 @@ class SpecialJordanAlgebra(JordanAlgebra):
241
246
  r"""
242
247
  A (special) Jordan algebra `A^+` from an associative algebra `A`.
243
248
  """
244
- def __init__(self, A, names=None):
249
+ def __init__(self, A, names=None) -> None:
245
250
  """
246
251
  Initialize ``self``.
247
252
 
@@ -251,7 +256,8 @@ class SpecialJordanAlgebra(JordanAlgebra):
251
256
  sage: J = JordanAlgebra(F)
252
257
  sage: TestSuite(J).run()
253
258
  sage: J.category()
254
- Category of commutative unital algebras with basis over Rational Field
259
+ Category of commutative unital algebras with basis
260
+ over Rational Field
255
261
  """
256
262
  R = A.base_ring()
257
263
  C = MagmaticAlgebras(R)
@@ -269,7 +275,7 @@ class SpecialJordanAlgebra(JordanAlgebra):
269
275
 
270
276
  Parent.__init__(self, base=R, names=names, category=cat)
271
277
 
272
- def _repr_(self):
278
+ def _repr_(self) -> str:
273
279
  """
274
280
  Return a string representation of ``self``.
275
281
 
@@ -277,9 +283,10 @@ class SpecialJordanAlgebra(JordanAlgebra):
277
283
 
278
284
  sage: F.<x,y,z> = FreeAlgebra(QQ)
279
285
  sage: JordanAlgebra(F)
280
- Jordan algebra of Free Algebra on 3 generators (x, y, z) over Rational Field
286
+ Jordan algebra of Free Algebra on 3 generators (x, y, z)
287
+ over Rational Field
281
288
  """
282
- return "Jordan algebra of {}".format(self._A)
289
+ return f"Jordan algebra of {self._A}"
283
290
 
284
291
  def _element_constructor_(self, x):
285
292
  """
@@ -312,7 +319,7 @@ class SpecialJordanAlgebra(JordanAlgebra):
312
319
  return self.element_class(self, self._A.an_element())
313
320
 
314
321
  @cached_method
315
- def basis(self):
322
+ def basis(self) -> Family:
316
323
  """
317
324
  Return the basis of ``self``.
318
325
 
@@ -324,21 +331,25 @@ class SpecialJordanAlgebra(JordanAlgebra):
324
331
  Lazy family (Term map(i))_{i in Free monoid on 3 generators (x, y, z)}
325
332
  """
326
333
  B = self._A.basis()
327
- return Family(B.keys(), lambda x: self.element_class(self, B[x]), name="Term map")
334
+ return Family(B.keys(), lambda x: self.element_class(self, B[x]),
335
+ name="Term map")
328
336
 
329
337
  algebra_generators = basis
330
338
 
331
339
  # TODO: Keep this until we can better handle R.<...> shorthand
332
340
  def gens(self) -> tuple:
333
341
  """
334
- Return the generators of ``self``.
342
+ Return the generators of ``self`` as a tuple.
343
+
344
+ This fails with :exc:`NotImplementedError`
345
+ when there are infinitely many.
335
346
 
336
347
  EXAMPLES::
337
348
 
338
349
  sage: cat = Algebras(QQ).WithBasis().FiniteDimensional()
339
350
  sage: C = CombinatorialFreeModule(QQ, ['x','y','z'], category=cat)
340
351
  sage: J = JordanAlgebra(C)
341
- sage: J.gens()
352
+ sage: tuple(map(J, C.gens()))
342
353
  (B['x'], B['y'], B['z'])
343
354
 
344
355
  sage: F.<x,y,z> = FreeAlgebra(QQ)
@@ -348,7 +359,10 @@ class SpecialJordanAlgebra(JordanAlgebra):
348
359
  ...
349
360
  NotImplementedError: infinite set
350
361
  """
351
- return tuple(self.algebra_generators())
362
+ F = self.algebra_generators()
363
+ if F.is_finite():
364
+ return tuple(F)
365
+ raise NotImplementedError('infinite set')
352
366
 
353
367
  @cached_method
354
368
  def zero(self):
@@ -382,7 +396,7 @@ class SpecialJordanAlgebra(JordanAlgebra):
382
396
  """
383
397
  An element of a special Jordan algebra.
384
398
  """
385
- def __init__(self, parent, x):
399
+ def __init__(self, parent, x) -> None:
386
400
  """
387
401
  Initialize ``self``.
388
402
 
@@ -396,7 +410,7 @@ class SpecialJordanAlgebra(JordanAlgebra):
396
410
  self._x = x
397
411
  AlgebraElement.__init__(self, parent)
398
412
 
399
- def _repr_(self):
413
+ def _repr_(self) -> str:
400
414
  """
401
415
  Return a string representation of ``self``.
402
416
 
@@ -410,7 +424,7 @@ class SpecialJordanAlgebra(JordanAlgebra):
410
424
  """
411
425
  return repr(self._x)
412
426
 
413
- def _latex_(self):
427
+ def _latex_(self) -> str:
414
428
  """
415
429
  Return a latex representation of ``self``.
416
430
 
@@ -439,7 +453,7 @@ class SpecialJordanAlgebra(JordanAlgebra):
439
453
  """
440
454
  return bool(self._x)
441
455
 
442
- def __eq__(self, other):
456
+ def __eq__(self, other) -> bool:
443
457
  """
444
458
  Check equality.
445
459
 
@@ -462,7 +476,7 @@ class SpecialJordanAlgebra(JordanAlgebra):
462
476
  return False
463
477
  return self._x == other._x
464
478
 
465
- def __ne__(self, other):
479
+ def __ne__(self, other) -> bool:
466
480
  """
467
481
  Check inequality.
468
482
 
@@ -576,7 +590,7 @@ class SpecialJordanAlgebra(JordanAlgebra):
576
590
  """
577
591
  return self.__class__(self.parent(), other * self._x)
578
592
 
579
- def monomial_coefficients(self, copy=True):
593
+ def monomial_coefficients(self, copy=True) -> dict:
580
594
  """
581
595
  Return a dictionary whose keys are indices of basis elements in
582
596
  the support of ``self`` and whose values are the corresponding
@@ -604,8 +618,15 @@ class SpecialJordanAlgebra(JordanAlgebra):
604
618
  class JordanAlgebraSymmetricBilinear(JordanAlgebra):
605
619
  r"""
606
620
  A Jordan algebra given by a symmetric bilinear form `m`.
621
+
622
+ TESTS::
623
+
624
+ sage: m = matrix([[0,1],[1,1]])
625
+ sage: J = JordanAlgebra(m)
626
+ sage: J.gens()
627
+ (1 + (0, 0), 0 + (1, 0), 0 + (0, 1))
607
628
  """
608
- def __init__(self, R, form, names=None):
629
+ def __init__(self, R, form, names=None) -> None:
609
630
  """
610
631
  Initialize ``self``.
611
632
 
@@ -620,7 +641,7 @@ class JordanAlgebraSymmetricBilinear(JordanAlgebra):
620
641
  cat = MagmaticAlgebras(R).Commutative().Unital().FiniteDimensional().WithBasis()
621
642
  Parent.__init__(self, base=R, names=names, category=cat)
622
643
 
623
- def _repr_(self):
644
+ def _repr_(self) -> str:
624
645
  """
625
646
  Return a string representation of ``self``.
626
647
 
@@ -708,7 +729,8 @@ class JordanAlgebraSymmetricBilinear(JordanAlgebra):
708
729
 
709
730
  return self.element_class(self, R(s), self._M.zero())
710
731
 
711
- if len(args) == 2 and (isinstance(args[1], (list, tuple)) or args[1] in self._M):
732
+ if len(args) == 2 and (isinstance(args[1], (list, tuple))
733
+ or args[1] in self._M):
712
734
  return self.element_class(self, R(args[0]), self._M(args[1]))
713
735
 
714
736
  if len(args) == self._form.ncols() + 1:
@@ -742,7 +764,7 @@ class JordanAlgebraSymmetricBilinear(JordanAlgebra):
742
764
  return self._generic_coerce_map(self.base_ring())
743
765
 
744
766
  @cached_method
745
- def basis(self):
767
+ def basis(self) -> Family:
746
768
  """
747
769
  Return a basis of ``self``.
748
770
 
@@ -764,19 +786,6 @@ class JordanAlgebraSymmetricBilinear(JordanAlgebra):
764
786
 
765
787
  algebra_generators = basis
766
788
 
767
- def gens(self) -> tuple:
768
- """
769
- Return the generators of ``self``.
770
-
771
- EXAMPLES::
772
-
773
- sage: m = matrix([[0,1],[1,1]])
774
- sage: J = JordanAlgebra(m)
775
- sage: J.gens()
776
- (1 + (0, 0), 0 + (1, 0), 0 + (0, 1))
777
- """
778
- return tuple(self.algebra_generators())
779
-
780
789
  @cached_method
781
790
  def zero(self):
782
791
  """
@@ -809,7 +818,7 @@ class JordanAlgebraSymmetricBilinear(JordanAlgebra):
809
818
  """
810
819
  An element of a Jordan algebra defined by a symmetric bilinear form.
811
820
  """
812
- def __init__(self, parent, s, v):
821
+ def __init__(self, parent, s, v) -> None:
813
822
  """
814
823
  Initialize ``self``.
815
824
 
@@ -823,7 +832,7 @@ class JordanAlgebraSymmetricBilinear(JordanAlgebra):
823
832
  self._v = v
824
833
  AlgebraElement.__init__(self, parent)
825
834
 
826
- def _repr_(self):
835
+ def _repr_(self) -> str:
827
836
  """
828
837
  Return a string representation of ``self``.
829
838
 
@@ -836,7 +845,7 @@ class JordanAlgebraSymmetricBilinear(JordanAlgebra):
836
845
  """
837
846
  return "{} + {}".format(self._s, self._v)
838
847
 
839
- def _latex_(self):
848
+ def _latex_(self) -> str:
840
849
  r"""
841
850
  Return a latex representation of ``self``.
842
851
 
@@ -867,7 +876,7 @@ class JordanAlgebraSymmetricBilinear(JordanAlgebra):
867
876
  """
868
877
  return bool(self._s) or bool(self._v)
869
878
 
870
- def __eq__(self, other):
879
+ def __eq__(self, other) -> bool:
871
880
  """
872
881
  Check equality.
873
882
 
@@ -892,7 +901,7 @@ class JordanAlgebraSymmetricBilinear(JordanAlgebra):
892
901
  return False
893
902
  return self._s == other._s and self._v == other._v
894
903
 
895
- def __ne__(self, other):
904
+ def __ne__(self, other) -> bool:
896
905
  """
897
906
  Check inequality.
898
907
 
@@ -975,7 +984,7 @@ class JordanAlgebraSymmetricBilinear(JordanAlgebra):
975
984
  P = self.parent()
976
985
  return self.__class__(P,
977
986
  self._s * other._s
978
- + (self._v * P._form * other._v.column())[0],
987
+ + (self._v * P._form * other._v.column())[0],
979
988
  other._s * self._v + self._s * other._v)
980
989
 
981
990
  def _lmul_(self, other):
@@ -1005,7 +1014,7 @@ class JordanAlgebraSymmetricBilinear(JordanAlgebra):
1005
1014
  """
1006
1015
  return self.__class__(self.parent(), other * self._s, other * self._v)
1007
1016
 
1008
- def monomial_coefficients(self, copy=True):
1017
+ def monomial_coefficients(self, copy=True) -> dict:
1009
1018
  """
1010
1019
  Return a dictionary whose keys are indices of basis elements in
1011
1020
  the support of ``self`` and whose values are the corresponding
@@ -1024,7 +1033,7 @@ class JordanAlgebraSymmetricBilinear(JordanAlgebra):
1024
1033
  {0: 1, 1: 2, 2: -1}
1025
1034
  """
1026
1035
  d = {0: self._s}
1027
- for i,c in enumerate(self._v):
1036
+ for i, c in enumerate(self._v):
1028
1037
  d[i+1] = c
1029
1038
  return d
1030
1039
 
@@ -1151,7 +1160,7 @@ class ExceptionalJordanAlgebra(JordanAlgebra):
1151
1160
  - :wikipedia:`Hurwitz's_theorem_(composition_algebras)#Applications_to_Jordan_algebras`
1152
1161
  - `<https://math.ucr.edu/home/baez/octonions/octonions.pdf>`_
1153
1162
  """
1154
- def __init__(self, O):
1163
+ def __init__(self, Octo) -> None:
1155
1164
  r"""
1156
1165
  Initialize ``self``.
1157
1166
 
@@ -1175,23 +1184,41 @@ class ExceptionalJordanAlgebra(JordanAlgebra):
1175
1184
  Traceback (most recent call last):
1176
1185
  ...
1177
1186
  ValueError: 2 must be invertible
1187
+
1188
+ TESTS::
1189
+
1190
+ sage: O = OctonionAlgebra(QQ)
1191
+ sage: J = JordanAlgebra(O)
1192
+ sage: G = J.gens()
1193
+ sage: G[0]
1194
+ [1 0 0]
1195
+ [0 0 0]
1196
+ [0 0 0]
1197
+ sage: G[5]
1198
+ [ 0 j 0]
1199
+ [-j 0 0]
1200
+ [ 0 0 0]
1201
+ sage: G[22]
1202
+ [ 0 0 0]
1203
+ [ 0 0 k]
1204
+ [ 0 -k 0]
1178
1205
  """
1179
- self._O = O
1180
- R = O.base_ring()
1206
+ self._O = Octo
1207
+ R = Octo.base_ring()
1181
1208
 
1182
1209
  if not R(2).is_unit():
1183
1210
  raise ValueError("2 must be invertible")
1184
1211
  self._half = R(2).inverse_of_unit()
1185
1212
 
1186
1213
  from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
1187
- Onames = list(O.variable_names())
1214
+ Onames = list(Octo.variable_names())
1188
1215
  Onames.extend(Onames[3] + Onames[i] for i in range(3))
1189
1216
  self._repr_poly_ring = PolynomialRing(R, Onames)
1190
1217
 
1191
1218
  cat = MagmaticAlgebras(R).Unital().FiniteDimensional().WithBasis()
1192
1219
  Parent.__init__(self, base=R, category=cat)
1193
1220
 
1194
- def _repr_(self):
1221
+ def _repr_(self) -> str:
1195
1222
  r"""
1196
1223
  Return a string representation of ``self``.
1197
1224
 
@@ -1259,8 +1286,8 @@ class ExceptionalJordanAlgebra(JordanAlgebra):
1259
1286
  [SD[3].conjugate(), SD[1], SD[5]],
1260
1287
  [SD[4].conjugate(), SD[5].conjugate(), SD[2]]]
1261
1288
  Y = [[OD[0], OD[3], OD[4]],
1262
- [OD[3].conjugate(), OD[1], OD[5]],
1263
- [OD[4].conjugate(), OD[5].conjugate(), OD[2]]]
1289
+ [OD[3].conjugate(), OD[1], OD[5]],
1290
+ [OD[4].conjugate(), OD[5].conjugate(), OD[2]]]
1264
1291
  for r, c in data_pairs:
1265
1292
  if r != c:
1266
1293
  val = sum(X[r][i] * Y[i][c] + Y[r][i] * X[i][c] for i in range(3)) * self._half
@@ -1271,7 +1298,7 @@ class ExceptionalJordanAlgebra(JordanAlgebra):
1271
1298
  tester.assertEqual(val.imag_part(), zerO)
1272
1299
 
1273
1300
  @cached_method
1274
- def basis(self):
1301
+ def basis(self) -> Family:
1275
1302
  r"""
1276
1303
  Return a basis of ``self``.
1277
1304
 
@@ -1316,30 +1343,6 @@ class ExceptionalJordanAlgebra(JordanAlgebra):
1316
1343
 
1317
1344
  algebra_generators = basis
1318
1345
 
1319
- def gens(self) -> tuple:
1320
- """
1321
- Return the generators of ``self``.
1322
-
1323
- EXAMPLES::
1324
-
1325
- sage: O = OctonionAlgebra(QQ)
1326
- sage: J = JordanAlgebra(O)
1327
- sage: G = J.gens()
1328
- sage: G[0]
1329
- [1 0 0]
1330
- [0 0 0]
1331
- [0 0 0]
1332
- sage: G[5]
1333
- [ 0 j 0]
1334
- [-j 0 0]
1335
- [ 0 0 0]
1336
- sage: G[22]
1337
- [ 0 0 0]
1338
- [ 0 0 k]
1339
- [ 0 -k 0]
1340
- """
1341
- return tuple(self.algebra_generators())
1342
-
1343
1346
  @cached_method
1344
1347
  def zero(self):
1345
1348
  r"""
@@ -1378,7 +1381,7 @@ class ExceptionalJordanAlgebra(JordanAlgebra):
1378
1381
  zero = self._O.zero()
1379
1382
  return self.element_class(self, (one, one, one, zero, zero, zero))
1380
1383
 
1381
- def some_elements(self):
1384
+ def some_elements(self) -> list:
1382
1385
  r"""
1383
1386
  Return some elements of ``self``.
1384
1387
 
@@ -1457,14 +1460,15 @@ class ExceptionalJordanAlgebra(JordanAlgebra):
1457
1460
  B[1], B[5], B[17], B[1] + self._half*B[25],
1458
1461
  self.one() + B[13] + 2*B[16]]
1459
1462
  S.append(sum(B[::5]))
1460
- S.append(sum(self._half * ind * b for ind, b in enumerate(B[::7], start=2)))
1463
+ S.append(sum(self._half * ind * b
1464
+ for ind, b in enumerate(B[::7], start=2)))
1461
1465
  return S
1462
1466
 
1463
1467
  class Element(AlgebraElement):
1464
1468
  r"""
1465
1469
  An element of an exceptional Jordan algebra.
1466
1470
  """
1467
- def __init__(self, parent, data):
1471
+ def __init__(self, parent, data) -> None:
1468
1472
  """
1469
1473
  Initialize ``self``.
1470
1474
 
@@ -1495,16 +1499,20 @@ class ExceptionalJordanAlgebra(JordanAlgebra):
1495
1499
  PR = self.parent()._repr_poly_ring
1496
1500
  gens = [PR.one()] + list(PR.gens())
1497
1501
  data = [PR(self._data[i]) for i in range(3)]
1498
- data.extend(PR.sum(c * g for c, g in zip(self._data[3+i].vector(), gens))
1502
+ data.extend(PR.sum(c * g
1503
+ for c, g in zip(self._data[3+i].vector(), gens))
1499
1504
  for i in range(3))
1500
1505
  # add the conjugates
1501
1506
  for i in range(1, 8):
1502
1507
  gens[i] = -gens[i]
1503
- data.extend(PR.sum(c * g for c, g in zip(self._data[3+i].vector(), gens))
1508
+ data.extend(PR.sum(c * g
1509
+ for c, g in zip(self._data[3+i].vector(), gens))
1504
1510
  for i in range(3))
1505
- return matrix(PR, [[data[0], data[3], data[4]], [data[6], data[1], data[5]], [data[7], data[8], data[2]]])
1511
+ return matrix(PR, [[data[0], data[3], data[4]],
1512
+ [data[6], data[1], data[5]],
1513
+ [data[7], data[8], data[2]]])
1506
1514
 
1507
- def _repr_(self):
1515
+ def _repr_(self) -> str:
1508
1516
  r"""
1509
1517
  Return a string representation of ``self``.
1510
1518
 
@@ -1519,7 +1527,7 @@ class ExceptionalJordanAlgebra(JordanAlgebra):
1519
1527
  """
1520
1528
  return repr(self._to_print_matrix())
1521
1529
 
1522
- def _latex_(self):
1530
+ def _latex_(self) -> str:
1523
1531
  r"""
1524
1532
  Return a latex representation of ``self``.
1525
1533
 
@@ -1584,7 +1592,7 @@ class ExceptionalJordanAlgebra(JordanAlgebra):
1584
1592
  """
1585
1593
  return any(d for d in self._data)
1586
1594
 
1587
- def _richcmp_(self, other, op):
1595
+ def _richcmp_(self, other, op) -> bool:
1588
1596
  r"""
1589
1597
  Rich comparison of ``self`` with ``other`` by ``op``.
1590
1598
 
@@ -1685,8 +1693,8 @@ class ExceptionalJordanAlgebra(JordanAlgebra):
1685
1693
  [SD[3].conjugate(), SD[1], SD[5]],
1686
1694
  [SD[4].conjugate(), SD[5].conjugate(), SD[2]]]
1687
1695
  Y = [[OD[0], OD[3], OD[4]],
1688
- [OD[3].conjugate(), OD[1], OD[5]],
1689
- [OD[4].conjugate(), OD[5].conjugate(), OD[2]]]
1696
+ [OD[3].conjugate(), OD[1], OD[5]],
1697
+ [OD[4].conjugate(), OD[5].conjugate(), OD[2]]]
1690
1698
  # we do a simplified multiplication for the diagonal entries since
1691
1699
  # we have, e.g., \alpha * \alpha' + (x (x')^* + x' x^* + y (y')^* + y' y^*) / 2
1692
1700
  ret = [X[0][0] * Y[0][0] + (X[0][1] * Y[1][0]).real_part() + (X[0][2] * Y[2][0]).real_part(),
@@ -1735,7 +1743,7 @@ class ExceptionalJordanAlgebra(JordanAlgebra):
1735
1743
  """
1736
1744
  return self.__class__(self.parent(), [other * c for c in self._data])
1737
1745
 
1738
- def monomial_coefficients(self, copy=True):
1746
+ def monomial_coefficients(self, copy=True) -> dict:
1739
1747
  r"""
1740
1748
  Return a dictionary whose keys are indices of basis elements in
1741
1749
  the support of ``self`` and whose values are the corresponding
@@ -12,15 +12,15 @@ AUTHORS:
12
12
  - Reimundo Heluani (2020-06-15): Initial implementation.
13
13
  """
14
14
 
15
- #******************************************************************************
15
+ # ****************************************************************************
16
16
  # Copyright (C) 2019 Reimundo Heluani <heluani@potuz.net>
17
17
  #
18
18
  # This program is free software: you can redistribute it and/or modify
19
19
  # it under the terms of the GNU General Public License as published by
20
20
  # the Free Software Foundation, either version 2 of the License, or
21
21
  # (at your option) any later version.
22
- # http://www.gnu.org/licenses/
23
- #*****************************************************************************
22
+ # https://www.gnu.org/licenses/
23
+ # ***************************************************************************
24
24
 
25
25
  from .graded_lie_conformal_algebra import GradedLieConformalAlgebra
26
26
  from sage.structure.indexed_generators import standardize_names_index_set
@@ -77,7 +77,7 @@ class AbelianLieConformalAlgebra(GradedLieConformalAlgebra):
77
77
  case.
78
78
  """
79
79
  def __init__(self, R, ngens=1, weights=None,
80
- parity=None, names=None, index_set=None):
80
+ parity=None, names=None, index_set=None) -> None:
81
81
  """
82
82
  Initialize ``self``.
83
83
 
@@ -86,7 +86,7 @@ class AbelianLieConformalAlgebra(GradedLieConformalAlgebra):
86
86
  sage: V = lie_conformal_algebras.Abelian(QQ)
87
87
  sage: TestSuite(V).run()
88
88
  """
89
- if (names is None) and (index_set is None):
89
+ if names is None and index_set is None:
90
90
  names = 'a'
91
91
  self._latex_names = tuple(r'a_{%d}' % i for i in range(ngens))
92
92
 
@@ -110,4 +110,4 @@ class AbelianLieConformalAlgebra(GradedLieConformalAlgebra):
110
110
  The Abelian Lie conformal algebra with generators (a,) over Rational Field
111
111
  """
112
112
  return "The Abelian Lie conformal algebra with generators {} over {}"\
113
- .format(self.gens(), self.base_ring())
113
+ .format(self.gens(), self.base_ring())
@@ -22,15 +22,15 @@ AUTHORS:
22
22
  - Reimundo Heluani (2019-08-09): Initial implementation.
23
23
  """
24
24
 
25
- #******************************************************************************
25
+ # ****************************************************************************
26
26
  # Copyright (C) 2019 Reimundo Heluani <heluani@potuz.net>
27
27
  #
28
28
  # This program is free software: you can redistribute it and/or modify
29
29
  # it under the terms of the GNU General Public License as published by
30
30
  # the Free Software Foundation, either version 2 of the License, or
31
31
  # (at your option) any later version.
32
- # http://www.gnu.org/licenses/
33
- #*****************************************************************************
32
+ # https://www.gnu.org/licenses/
33
+ # ***************************************************************************
34
34
 
35
35
  from sage.rings.integer import Integer
36
36
  from sage.algebras.lie_algebras.lie_algebra import LieAlgebra
@@ -82,7 +82,7 @@ class AffineLieConformalAlgebra(GradedLieConformalAlgebra):
82
82
  The Affine Lie conformal algebra associated with the finite
83
83
  dimensional simple Lie algebra of Cartan type ``ct``.
84
84
  """
85
- def __init__(self, R, ct, names=None, prefix=None, bracket=None):
85
+ def __init__(self, R, ct, names=None, prefix=None, bracket=None) -> None:
86
86
  """
87
87
  Initialize ``self``.
88
88
 
@@ -91,7 +91,7 @@ class AffineLieConformalAlgebra(GradedLieConformalAlgebra):
91
91
  sage: V = lie_conformal_algebras.Affine(QQ,'A1')
92
92
  sage: TestSuite(V).run()
93
93
  """
94
- if type(ct) is str:
94
+ if isinstance(ct, str):
95
95
  from sage.combinat.root_system.cartan_type import CartanType
96
96
  try:
97
97
  ct = CartanType(ct)
@@ -99,7 +99,7 @@ class AffineLieConformalAlgebra(GradedLieConformalAlgebra):
99
99
  raise ValueError("ct must be a valid Cartan Type")
100
100
  if not (ct.is_finite() and ct.is_irreducible):
101
101
  raise ValueError("only affine algebras of simple finite dimensional"
102
- "Lie algebras are implemented")
102
+ "Lie algebras are implemented")
103
103
  hv = Integer(ct.dual_coxeter_number())
104
104
  g = LieAlgebra(R, cartan_type=ct)
105
105
  B = g.basis()
@@ -109,8 +109,8 @@ class AffineLieConformalAlgebra(GradedLieConformalAlgebra):
109
109
  for k2 in S:
110
110
  if S.rank(k2) <= S.rank(k1):
111
111
  myb = B[k1].bracket(B[k2]).monomial_coefficients()
112
- myf = R(2).inverse_of_unit()*R(hv).inverse_of_unit()\
113
- * g.killing_form(B[k1], B[k2])
112
+ myf = R(2).inverse_of_unit() * R(hv).inverse_of_unit()\
113
+ * g.killing_form(B[k1], B[k2])
114
114
  if myb or myf:
115
115
  gdict[(k1, k2)] = {}
116
116
  if myb:
@@ -125,9 +125,11 @@ class AffineLieConformalAlgebra(GradedLieConformalAlgebra):
125
125
  prefix = 'B'
126
126
 
127
127
  GradedLieConformalAlgebra.__init__(self,
128
- R, gdict, index_set=S,
129
- central_elements=('K',), weights=weights,
130
- names=names, prefix=prefix, bracket=bracket)
128
+ R, gdict, index_set=S,
129
+ central_elements=('K',),
130
+ weights=weights,
131
+ names=names, prefix=prefix,
132
+ bracket=bracket)
131
133
 
132
134
  def cartan_type(self):
133
135
  """
@@ -153,4 +155,4 @@ class AffineLieConformalAlgebra(GradedLieConformalAlgebra):
153
155
  The affine Lie conformal algebra of type ['A', 1] over Rational Field
154
156
  """
155
157
  return "The affine Lie conformal algebra of type {} over {}".format(
156
- self._ct, self.base_ring())
158
+ self._ct, self.base_ring())
@@ -20,15 +20,15 @@ AUTHORS:
20
20
  - Reimundo Heluani (2020-06-15): Initial implementation.
21
21
  """
22
22
 
23
- #******************************************************************************
23
+ # ***************************************************************************
24
24
  # Copyright (C) 2019 Reimundo Heluani <heluani@potuz.net>
25
25
  #
26
26
  # This program is free software: you can redistribute it and/or modify
27
27
  # it under the terms of the GNU General Public License as published by
28
28
  # the Free Software Foundation, either version 2 of the License, or
29
29
  # (at your option) any later version.
30
- # http://www.gnu.org/licenses/
31
- #*****************************************************************************
30
+ # https://www.gnu.org/licenses/
31
+ # ***************************************************************************
32
32
 
33
33
  from sage.matrix.special import identity_matrix
34
34
  from sage.structure.indexed_generators import standardize_names_index_set
@@ -80,7 +80,7 @@ class BosonicGhostsLieConformalAlgebra(GradedLieConformalAlgebra):
80
80
  Category of H-graded finitely generated Lie conformal algebras with basis over Algebraic Real Field
81
81
  """
82
82
 
83
- def __init__(self, R, ngens=2, names=None, index_set=None):
83
+ def __init__(self, R, ngens=2, names=None, index_set=None) -> None:
84
84
  """
85
85
  Initialize ``self``.
86
86
 
@@ -105,8 +105,8 @@ class BosonicGhostsLieConformalAlgebra(GradedLieConformalAlgebra):
105
105
  laxnames(half, r'\gamma')) + ('K',)
106
106
 
107
107
  names, index_set = standardize_names_index_set(names=names,
108
- index_set=index_set,
109
- ngens=ngens)
108
+ index_set=index_set,
109
+ ngens=ngens)
110
110
  A = identity_matrix(R, half)
111
111
  from sage.matrix.special import block_matrix
112
112
  gram_matrix = block_matrix([[R.zero(), A], [-A, R.zero()]])