17
17
# https://www.gnu.org/licenses/
18
18
# ****************************************************************************
19
19
20
-
20
+ from sage .categories .category_with_axiom import CategoryWithAxiom_over_base_ring
21
+ from sage .categories .lie_algebras import LieAlgebras
22
+ from sage .categories .subobjects import SubobjectsCategory
21
23
from sage .misc .abstract_method import abstract_method
22
24
from sage .misc .cachefunc import cached_method
23
25
from sage .misc .lazy_attribute import lazy_attribute
24
26
from sage .misc .lazy_import import LazyImport
25
- from sage .categories .category_with_axiom import CategoryWithAxiom_over_base_ring
26
- from sage .categories .lie_algebras import LieAlgebras
27
- from sage .categories .subobjects import SubobjectsCategory
27
+ from sage .rings .integer import Integer
28
28
from sage .sets .family import Family
29
29
30
30
@@ -147,7 +147,7 @@ def names_map(x):
147
147
F = FreeAlgebra (self .base_ring (), names )
148
148
except ValueError :
149
149
names = ['b{}' .format (i ) for i in range (self .dimension ())]
150
- self ._UEA_names_map = {g : names [i ] for i ,g in enumerate (I )}
150
+ self ._UEA_names_map = {g : names [i ] for i , g in enumerate (I )}
151
151
names_map = self ._UEA_names_map .__getitem__
152
152
F = FreeAlgebra (self .base_ring (), names )
153
153
# ``F`` is the free algebra over the basis of ``self``. The
@@ -207,7 +207,7 @@ def _basis_key_inverse(self):
207
207
sage: [L._basis_key_inverse[k] for k in L._basis_ordering]
208
208
[0, 1, 2, 3, 4, 5]
209
209
"""
210
- return {k : i for i ,k in enumerate (self ._basis_ordering )}
210
+ return {k : i for i , k in enumerate (self ._basis_ordering )}
211
211
212
212
def _basis_key (self , x ):
213
213
"""
@@ -288,7 +288,7 @@ def from_vector(self, v, order=None):
288
288
if order is None :
289
289
order = self ._basis_ordering
290
290
B = self .basis ()
291
- return self .sum (v [i ] * B [k ] for i ,k in enumerate (order ) if v [i ] != 0 )
291
+ return self .sum (v [i ] * B [k ] for i , k in enumerate (order ) if v [i ] != 0 )
292
292
293
293
def killing_matrix (self , x , y ):
294
294
r"""
@@ -424,9 +424,9 @@ def structure_coefficients(self, include_zeros=False):
424
424
if not include_zeros and val == zero :
425
425
continue
426
426
if self ._basis_key (x ) > self ._basis_key (y ):
427
- d [y ,x ] = - val
427
+ d [y , x ] = - val
428
428
else :
429
- d [x ,y ] = val
429
+ d [x , y ] = val
430
430
return Family (d )
431
431
432
432
def centralizer_basis (self , S ):
@@ -478,8 +478,8 @@ def centralizer_basis(self, S):
478
478
"""
479
479
from sage .matrix .constructor import matrix
480
480
481
- #from sage.algebras.lie_algebras.subalgebra import LieSubalgebra
482
- #if isinstance(S, LieSubalgebra) or S is self:
481
+ # from sage.algebras.lie_algebras.subalgebra import LieSubalgebra
482
+ # if isinstance(S, LieSubalgebra) or S is self:
483
483
if S is self :
484
484
from sage .matrix .special import identity_matrix
485
485
m = identity_matrix (self .base_ring (), self .dimension ())
@@ -493,11 +493,11 @@ def centralizer_basis(self, S):
493
493
for k in S .keys ():
494
494
v = S [k ].to_vector ()
495
495
sc [k ] = v
496
- sc [k [1 ],k [0 ]] = - v
496
+ sc [k [1 ], k [0 ]] = - v
497
497
X = self .basis ().keys ()
498
498
d = len (X )
499
499
c_mat = matrix (self .base_ring (),
500
- [[sum (m [i ,j ] * sc [x ,xp ][k ] for j ,xp in enumerate (X )
500
+ [[sum (m [i , j ] * sc [x , xp ][k ] for j , xp in enumerate (X )
501
501
if (x , xp ) in sc )
502
502
for x in X ]
503
503
for i in range (m .nrows ()) for k in range (d )])
@@ -702,24 +702,24 @@ def derivations_basis(self):
702
702
R = self .base_ring ()
703
703
B = self .basis ()
704
704
keys = list (B .keys ())
705
- scoeffs = {(j ,y , i ): c for y in keys for i in keys
706
- for j ,c in self .bracket (B [y ], B [i ])
707
- }
705
+ scoeffs = {(j , y , i ): c for y in keys for i in keys
706
+ for j , c in self .bracket (B [y ], B [i ])
707
+ }
708
708
zero = R .zero ()
709
709
data = {}
710
710
N = len (keys )
711
- for ii ,i in enumerate (keys ):
712
- for ij ,j in enumerate (keys [ii + 1 :]):
711
+ for ii , i in enumerate (keys ):
712
+ for ij , j in enumerate (keys [ii + 1 :]):
713
713
ijp = ij + ii + 1
714
- for il ,l in enumerate (keys ):
714
+ for il , l in enumerate (keys ):
715
715
row = ii + N * il + N ** 2 * ij
716
- for ik ,k in enumerate (keys ):
717
- data [row ,ik + N * il ] = (data .get ((row ,ik + N * il ), zero )
718
- + scoeffs .get ((k , i , j ), zero ))
719
- data [row ,ii + N * ik ] = (data .get ((row ,ii + N * ik ), zero )
720
- - scoeffs .get ((l , k , j ), zero ))
721
- data [row ,ijp + N * ik ] = (data .get ((row ,ijp + N * ik ), zero )
722
- - scoeffs .get ((l , i , k ), zero ))
716
+ for ik , k in enumerate (keys ):
717
+ data [row , ik + N * il ] = (data .get ((row , ik + N * il ), zero )
718
+ + scoeffs .get ((k , i , j ), zero ))
719
+ data [row , ii + N * ik ] = (data .get ((row , ii + N * ik ), zero )
720
+ - scoeffs .get ((l , k , j ), zero ))
721
+ data [row , ijp + N * ik ] = (data .get ((row , ijp + N * ik ), zero )
722
+ - scoeffs .get ((l , i , k ), zero ))
723
723
mat = matrix (R , data , sparse = True )
724
724
return tuple ([matrix (R , N , N , list (b )) for b in mat .right_kernel ().basis ()])
725
725
@@ -1524,7 +1524,7 @@ def is_abelian(self):
1524
1524
"""
1525
1525
return len (self .structure_coefficients ()) == 0
1526
1526
# TODO: boolean handling of empty family
1527
- #return not self.structure_coefficients()
1527
+ # return not self.structure_coefficients()
1528
1528
1529
1529
def is_solvable (self ):
1530
1530
r"""
@@ -1699,9 +1699,7 @@ def chevalley_eilenberg_complex(self, M=None, dual=False, sparse=True, ncpus=Non
1699
1699
sparse = sparse ,
1700
1700
ncpus = ncpus ).dual ()
1701
1701
1702
- import itertools
1703
1702
from itertools import combinations , product
1704
- from sage .arith .misc import binomial
1705
1703
from sage .matrix .matrix_space import MatrixSpace
1706
1704
from sage .algebras .lie_algebras .representation import Representation_abstract
1707
1705
R = self .base_ring ()
@@ -1776,8 +1774,8 @@ def compute_diff(k):
1776
1774
Y .pop (i )
1777
1775
# This is where we would do the action on
1778
1776
# the coefficients module
1779
- #ret[indices[tuple(Y)]] += mone**i * zero
1780
- for j in range (i + 1 , k ):
1777
+ # ret[indices[tuple(Y)]] += mone**i * zero
1778
+ for j in range (i + 1 , k ):
1781
1779
# We shift j by 1 because we already removed
1782
1780
# an earlier element from X.
1783
1781
Z = tuple (Y [:j - 1 ] + Y [j :])
@@ -1807,8 +1805,9 @@ def compute_diff(k):
1807
1805
else :
1808
1806
p2_data .append (ret )
1809
1807
1810
- nrows = binomial (len (LI ), k )
1811
- ncols = binomial (len (LI ), k - 1 )
1808
+ lenLI = Integer (len (LI ))
1809
+ nrows = lenLI .binomial (k )
1810
+ ncols = lenLI .binomial (k - 1 )
1812
1811
MS = MatrixSpace (R , nrows , ncols , sparse = sparse )
1813
1812
if M is None :
1814
1813
p2 = MS (p2_data ).transpose ()
@@ -1852,7 +1851,7 @@ def compute_diff(k):
1852
1851
else :
1853
1852
p1_data .append (ret )
1854
1853
1855
- nrows = len (MI ) * binomial (len (LI ), k )
1854
+ nrows = len (MI ) * Integer (len (LI )). binomial ( k )
1856
1855
ncols = len (ten_ind )
1857
1856
MS = MatrixSpace (R , nrows , ncols , sparse = sparse )
1858
1857
ret = MS (p1_data ).transpose () + p2
@@ -1862,8 +1861,7 @@ def compute_diff(k):
1862
1861
from sage .homology .chain_complex import ChainComplex
1863
1862
ind = list (range (1 , len (LI ) + 1 ))
1864
1863
chain_data = {X [0 ][0 ]: M for X , M in compute_diff (ind )}
1865
- C = ChainComplex (chain_data , degree_of_differential = - 1 )
1866
- return C
1864
+ return ChainComplex (chain_data , degree_of_differential = - 1 )
1867
1865
1868
1866
def homology (self , deg = None , M = None , sparse = True , ncpus = None ):
1869
1867
r"""
@@ -2019,11 +2017,11 @@ def as_finite_dimensional_algebra(self):
2019
2017
M = []
2020
2018
for kp in K :
2021
2019
if (k , kp ) in S :
2022
- M .append ( - S [k ,kp ].to_vector () )
2020
+ M .append (- S [k , kp ].to_vector ())
2023
2021
elif (kp , k ) in S :
2024
- M .append ( S [kp ,k ].to_vector () )
2022
+ M .append (S [kp , k ].to_vector ())
2025
2023
else :
2026
- M .append ( zero_vec )
2024
+ M .append (zero_vec )
2027
2025
mats .append (matrix (R , M ))
2028
2026
from sage .algebras .finite_dimensional_algebras .finite_dimensional_algebra import FiniteDimensionalAlgebra
2029
2027
return FiniteDimensionalAlgebra (R , mats , names = self ._names )
@@ -2172,7 +2170,7 @@ def sc(i, j):
2172
2170
vs = 'X{}_{}'
2173
2171
else :
2174
2172
vs = 'X{}{}'
2175
- R = PolynomialRing (self .base_ring (), ',' .join (vs .format (i ,j )
2173
+ R = PolynomialRing (self .base_ring (), ',' .join (vs .format (i , j )
2176
2174
for i in range (n )
2177
2175
for j in range (n )))
2178
2176
X = [[R .gen (i + n * j ) for i in range (n )] for j in range (n )]
@@ -2184,10 +2182,10 @@ def sc(i, j):
2184
2182
if i != j :
2185
2183
s = sc (i , j )
2186
2184
d [k ] = (R .sum (s [I [u ]] * X [a ][u ] for u in range (n ))
2187
- - R .sum (sc (s ,t )[I [a ]] * X [s ][i ] * X [t ][j ]
2185
+ - R .sum (sc (s , t )[I [a ]] * X [s ][i ] * X [t ][j ]
2188
2186
for s in range (n ) for t in range (n ) if s != t ))
2189
2187
else :
2190
- d [k ] = - R .sum (sc (s ,t )[I [a ]] * X [s ][i ] * X [t ][j ]
2188
+ d [k ] = - R .sum (sc (s , t )[I [a ]] * X [s ][i ] * X [t ][j ]
2191
2189
for s in range (n ) for t in range (n ) if s != t )
2192
2190
return Family (keys , d .__getitem__ )
2193
2191
@@ -2494,7 +2492,8 @@ def faithful_representation(self, algorithm=None):
2494
2492
raise ValueError ("invalid algorithm '{}'" .format (algorithm ))
2495
2493
2496
2494
class ElementMethods :
2497
- def adjoint_matrix (self , sparse = False ): # In #11111 (more or less) by using matrix of a morphism
2495
+ def adjoint_matrix (self , sparse = False ):
2496
+ # In #11111 (more or less) by using matrix of a morphism
2498
2497
"""
2499
2498
Return the matrix of the adjoint action of ``self``.
2500
2499
@@ -2598,7 +2597,7 @@ def to_vector(self, sparse=False, order=None):
2598
2597
from sage .modules .free_module import FreeModule
2599
2598
M = FreeModule (self .parent ().base_ring (), self .dimension (), sparse = True )
2600
2599
if order is None :
2601
- order = {b : i for i ,b in enumerate (self .parent ()._basis_ordering )}
2600
+ order = {b : i for i , b in enumerate (self .parent ()._basis_ordering )}
2602
2601
return M ({order [k ]: c for k , c in mc .items ()})
2603
2602
else :
2604
2603
M = self .parent ().module ()
0 commit comments