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
sage/algebras/jordan_algebra.py
CHANGED
|
@@ -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)
|
|
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
|
|
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)
|
|
286
|
+
Jordan algebra of Free Algebra on 3 generators (x, y, z)
|
|
287
|
+
over Rational Field
|
|
281
288
|
"""
|
|
282
|
-
return "Jordan algebra of {
|
|
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]),
|
|
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
|
-
|
|
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))
|
|
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
|
-
|
|
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,
|
|
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 =
|
|
1180
|
-
R =
|
|
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(
|
|
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
|
-
|
|
1263
|
-
|
|
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
|
|
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
|
|
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
|
|
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]],
|
|
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
|
-
|
|
1689
|
-
|
|
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
|
-
#
|
|
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
|
|
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
|
-
|
|
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
|
-
#
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
129
|
-
|
|
130
|
-
|
|
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
|
-
|
|
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
|
-
#
|
|
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
|
-
|
|
109
|
-
|
|
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()]])
|