Skip to content

Commit

Permalink
suggested fix
Browse files Browse the repository at this point in the history
  • Loading branch information
fchapoton committed Nov 6, 2023
1 parent 69d7cda commit 46a1441
Showing 1 changed file with 18 additions and 18 deletions.
36 changes: 18 additions & 18 deletions src/sage/modular/abvar/homspace.py
Original file line number Diff line number Diff line change
Expand Up @@ -168,15 +168,15 @@
- Craig Citro, Robert Bradshaw (2008-03): Rewrote with modabvar overhaul
"""

#*****************************************************************************
# ****************************************************************************
# Copyright (C) 2007 William Stein <[email protected]>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
# http://www.gnu.org/licenses/
#*****************************************************************************
# https://www.gnu.org/licenses/
# ****************************************************************************


from copy import copy
Expand All @@ -188,7 +188,6 @@

from . import morphism

import sage.rings.integer_ring
from sage.rings.infinity import Infinity

from sage.rings.ring import Ring
Expand Down Expand Up @@ -276,7 +275,7 @@ def _matrix_space(self):
sage: Hom(J0(11), J0(22))._matrix_space
Full MatrixSpace of 2 by 4 dense matrices over Integer Ring
"""
return MatrixSpace(ZZ,2*self.domain().dimension(), 2*self.codomain().dimension())
return MatrixSpace(ZZ, 2*self.domain().dimension(), 2*self.codomain().dimension())

def _element_constructor_from_element_class(self, *args, **keywords):
"""
Expand Down Expand Up @@ -479,7 +478,7 @@ def free_module(self):
"""
self.calculate_generators()
V = ZZ**(4*self.domain().dimension() * self.codomain().dimension())
return V.submodule([ V(m.matrix().list()) for m in self.gens() ])
return V.submodule([V(m.matrix().list()) for m in self.gens()])

def gen(self, i=0):
"""
Expand Down Expand Up @@ -570,7 +569,7 @@ def calculate_generators(self):
return

if (self.domain() == self.codomain()) and (self.domain().dimension() == 1):
self._gens = ( identity_matrix(ZZ,2), )
self._gens = (identity_matrix(ZZ, 2),)
return

phi = self.domain()._isogeny_to_product_of_powers()
Expand All @@ -583,9 +582,9 @@ def calculate_generators(self):
Mt = psi.complementary_isogeny().matrix()

R = ZZ**(4*self.domain().dimension()*self.codomain().dimension())
gens = R.submodule([ (M*self._get_matrix(g)*Mt).list()
for g in im_gens ]).saturation().basis()
self._gens = tuple([ self._get_matrix(g) for g in gens ])
gens = R.submodule([(M*self._get_matrix(g)*Mt).list()
for g in im_gens]).saturation().basis()
self._gens = tuple([self._get_matrix(g) for g in gens])

def _calculate_product_gens(self):
"""
Expand Down Expand Up @@ -746,7 +745,8 @@ def _calculate_simple_gens(self):
Mf = f.matrix()
Mg = g.matrix()

return [ Mf * self._get_matrix(e) * Mg for e in ls ]
return [Mf * self._get_matrix(e) * Mg for e in ls]


# NOTE/WARNING/TODO: Below in the __init__, etc. we do *not* check
# that the input gens are give something that spans a sub*ring*, as apposed
Expand Down Expand Up @@ -820,7 +820,7 @@ def __init__(self, A, gens=None, category=None):
if gens is None:
self._gens = None
else:
self._gens = tuple([ self._get_matrix(g) for g in gens ])
self._gens = tuple([self._get_matrix(g) for g in gens])
self._is_full_ring = gens is None

def _repr_(self):
Expand Down Expand Up @@ -903,7 +903,7 @@ def index_in_saturation(self):
A = self.abelian_variety()
d = A.dimension()
M = ZZ**(4*d**2)
gens = [ x.matrix().list() for x in self.gens() ]
gens = [x.matrix().list() for x in self.gens()]
R = M.submodule(gens)
return R.index_in_saturation()

Expand Down Expand Up @@ -934,8 +934,8 @@ def discriminant(self):
2
"""
g = self.gens()
M = Matrix(ZZ,len(g), [ (g[i]*g[j]).trace()
for i in range(len(g)) for j in range(len(g)) ])
M = Matrix(ZZ, len(g), [(g[i]*g[j]).trace()
for i in range(len(g)) for j in range(len(g))])
return M.determinant()

def image_of_hecke_algebra(self, check_every=1):
Expand Down Expand Up @@ -1002,18 +1002,18 @@ def image_of_hecke_algebra(self, check_every=1):
EndVecZ = ZZ**(4*d**2)

if d == 1:
self.__hecke_algebra_image = EndomorphismSubring(A, [[1,0,0,1]])
self.__hecke_algebra_image = EndomorphismSubring(A, [[1, 0, 0, 1]])
return self.__hecke_algebra_image

V = EndVecZ.submodule([A.hecke_operator(1).matrix().list()])

for n in range(2,M.sturm_bound()+1):
for n in range(2, M.sturm_bound()+1):
if (check_every > 0 and
n % check_every == 0 and
V.dimension() == d and
V.index_in_saturation() == 1):
break
V += EndVecZ.submodule([ A.hecke_operator(n).matrix().list() ])
V += EndVecZ.submodule([A.hecke_operator(n).matrix().list()])

self.__hecke_algebra_image = EndomorphismSubring(A, V.basis())
return self.__hecke_algebra_image

0 comments on commit 46a1441

Please sign in to comment.