def endomorphism_ring(self): k = NumberField(self._domain.frobenius().minpoly(), 'c') self._field = k self.endomorphism_index() basis = k.maximal_order().basis() basis = [basis[0] * self._index, basis[1] * self._index] self._order = k.order(basis)
def __init__(self, n): r""" Hecke triangle group (2, n, infinity). Namely the von Dyck group corresponding to the triangle group with angles (pi/2, pi/n, 0). INPUT: - ``n`` - ``infinity`` or an integer greater or equal to ``3``. OUTPUT: The Hecke triangle group for the given parameter ``n``. EXAMPLES:: sage: from sage.modular.modform_hecketriangle.hecke_triangle_groups import HeckeTriangleGroup sage: G = HeckeTriangleGroup(12) sage: G Hecke triangle group for n = 12 sage: G.category() Category of groups """ self._n = n self.element_repr_method("default") if n in [3, infinity]: self._base_ring = ZZ self._lam = ZZ(1) if n == 3 else ZZ(2) else: lam_symbolic = 2 * cos(pi / n) K = NumberField(self.lam_minpoly(), 'lam', embedding=coerce_AA(lam_symbolic)) #self._base_ring = K.order(K.gens()) self._base_ring = K.maximal_order() self._lam = self._base_ring.gen(1) T = matrix(self._base_ring, [[1, self._lam], [0, 1]]) S = matrix(self._base_ring, [[0, -1], [1, 0]]) FinitelyGeneratedMatrixGroup_generic.__init__(self, ZZ(2), self._base_ring, [S, T])
def __init__(self, n): r""" Hecke triangle group (2, n, infinity). Namely the von Dyck group corresponding to the triangle group with angles (pi/2, pi/n, 0). INPUT: - ``n`` - ``infinity`` or an integer greater or equal to ``3``. OUTPUT: The Hecke triangle group for the given parameter ``n``. EXAMPLES:: sage: from sage.modular.modform_hecketriangle.hecke_triangle_groups import HeckeTriangleGroup sage: G = HeckeTriangleGroup(12) sage: G Hecke triangle group for n = 12 sage: G.category() Category of groups """ self._n = n self.element_repr_method("default") if n in [3, infinity]: self._base_ring = ZZ self._lam = ZZ(1) if n==3 else ZZ(2) else: lam_symbolic = 2*cos(pi/n) K = NumberField(self.lam_minpoly(), 'lam', embedding = coerce_AA(lam_symbolic)) #self._base_ring = K.order(K.gens()) self._base_ring = K.maximal_order() self._lam = self._base_ring.gen(1) T = matrix(self._base_ring, [[1,self._lam],[0,1]]) S = matrix(self._base_ring, [[0,-1],[1,0]]) FinitelyGeneratedMatrixGroup_generic.__init__(self, ZZ(2), self._base_ring, [S, T])