From 8de95f8af8dddb34eadde121ca1227d9a1320870 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Chapoton?= Date: Tue, 13 Feb 2024 09:52:01 +0100 Subject: [PATCH] use CommutativeRing in ring_extension --- src/sage/rings/ring_extension.pxd | 4 +-- src/sage/rings/ring_extension.pyx | 49 +++++++++++++++---------------- 2 files changed, 26 insertions(+), 27 deletions(-) diff --git a/src/sage/rings/ring_extension.pxd b/src/sage/rings/ring_extension.pxd index 995bb23a976..99dc036da79 100644 --- a/src/sage/rings/ring_extension.pxd +++ b/src/sage/rings/ring_extension.pxd @@ -1,8 +1,8 @@ from sage.categories.map cimport Map -from sage.rings.ring cimport CommutativeRing, CommutativeAlgebra +from sage.rings.ring cimport CommutativeRing -cdef class RingExtension_generic(CommutativeAlgebra): +cdef class RingExtension_generic(CommutativeRing): cdef _type cdef _backend cdef _defining_morphism diff --git a/src/sage/rings/ring_extension.pyx b/src/sage/rings/ring_extension.pyx index fb8b04bf129..441c85966e1 100644 --- a/src/sage/rings/ring_extension.pyx +++ b/src/sage/rings/ring_extension.pyx @@ -122,7 +122,7 @@ from sage.structure.category_object import normalize_names from sage.categories.map cimport Map from sage.categories.commutative_rings import CommutativeRings from sage.categories.fields import Fields -from sage.rings.ring cimport CommutativeRing, CommutativeAlgebra +from sage.rings.ring cimport CommutativeRing from sage.rings.integer_ring import ZZ from sage.rings.infinity import Infinity @@ -174,8 +174,8 @@ def tower_bases(ring, degree): 5-adic Field with capped relative precision 20], [1, 3, 6]) """ - bases = [ ] - degrees = [ ] + bases = [] + degrees = [] base = ring deg = 1 while True: @@ -454,7 +454,7 @@ class RingExtensionFactory(UniqueFactory): # We figure out what are the best constructors if constructors is None: - constructors = [ ] + constructors = [] if gens is not None and len(gens) == 1: constructors.append((RingExtensionWithGen, {'gen': gens[0], 'names': names, @@ -498,7 +498,7 @@ RingExtension = RingExtensionFactory("sage.rings.ring_extension.RingExtension") # General extensions #################### -cdef class RingExtension_generic(CommutativeAlgebra): +cdef class RingExtension_generic(CommutativeRing): r""" A generic class for all ring extensions. @@ -580,7 +580,7 @@ cdef class RingExtension_generic(CommutativeAlgebra): # but CommutativeRings() seems safer, especially when dealing with # morphisms which do not need to preserve the base category = CommutativeRings() - CommutativeAlgebra.__init__(self, ZZ, category=category) + CommutativeRing.__init__(self, ZZ, category=category) self._base = base self._backend = ring self._backend_defining_morphism = defining_morphism @@ -1135,7 +1135,7 @@ cdef class RingExtension_generic(CommutativeAlgebra): :meth:`base`, :meth:`absolute_base`, :meth:`is_defined_over` """ - L = [ self ] + L = [self] base = self while isinstance(base, RingExtension_generic): base = base.base_ring() @@ -1358,7 +1358,8 @@ cdef class RingExtension_generic(CommutativeAlgebra): (y, x) """ self._check_base(base) - return tuple([ self(x) for x in generators(self._backend, backend_parent(self._base)) ]) + return tuple([self(x) for x in generators(self._backend, + backend_parent(self._base))]) def ngens(self, base=None): r""" @@ -2026,7 +2027,6 @@ cdef class RingExtensionFractionField(RingExtension_generic): Maximal Order generated by a in Number Field in a with defining polynomial x^2 - 2 over its base sage: TestSuite(K).run() - """ RingExtension_generic.__init__(self, defining_morphism, **kwargs) if ring is None: @@ -2138,9 +2138,9 @@ cdef class RingExtensionWithBasis(RingExtension_generic): sage: TestSuite(E).run() # needs sage.rings.number_field """ RingExtension_generic.__init__(self, defining_morphism, **kwargs) - self._basis = [ self(b) for b in basis ] + self._basis = [self(b) for b in basis] if names is None: - names = [ ] + names = [] for b in self._basis: b = b._backend if b == 1: @@ -2154,7 +2154,7 @@ cdef class RingExtensionWithBasis(RingExtension_generic): if len(names) != len(self._basis): raise ValueError("the number of names does not match the cardinality of the basis") self._basis_names = names - self._basis_latex_names = [ latex_variable_name(name) for name in names ] + self._basis_latex_names = [latex_variable_name(name) for name in names] self._names = tuple(names) if check: try: @@ -2335,12 +2335,11 @@ cdef class RingExtensionWithBasis(RingExtension_generic): [1, u, u^2] """ if base is self: - return [ self.one() ] - elif base is self._base: + return [self.one()] + if base is self._base: return self._basis[:] - else: - b = self._base._basis_over(base) - return [ x*y for x in self._basis for y in b ] + b = self._base._basis_over(base) + return [x * y for x in self._basis for y in b] def free_module(self, base=None, map=True): r""" @@ -2461,8 +2460,8 @@ cdef class RingExtensionWithBasis(RingExtension_generic): sage: L = GF(7^15).over(K) # needs sage.rings.finite_rings sage: for base in L.bases(): # needs sage.rings.finite_rings ....: V, i, j = L.free_module(base) - ....: assert([ i(v) for v in V.basis() ] == L.basis_over(base)) - ....: assert([ j(x) for x in L.basis_over(base) ] == V.basis()) + ....: assert([i(v) for v in V.basis()] == L.basis_over(base)) + ....: assert([j(x) for x in L.basis_over(base)] == V.basis()) """ d = self._degree_over(base) @@ -2599,15 +2598,15 @@ cdef class RingExtensionWithGen(RingExtensionWithBasis): backend_base = backend_parent(defining_morphism.domain()) _, deg_domain, deg_codomain = common_base(backend_base, defining_morphism.codomain(), True) degree = deg_codomain // deg_domain - basis_names = [ "" ] - basis_latex_names = [ "" ] + basis_names = [""] + basis_latex_names = [""] if degree == 1: self._name = None else: - basis_names += [ self._name ] + [ "%s^%s" % (self._name, i) for i in range(2,degree) ] + basis_names += [self._name] + ["%s^%s" % (self._name, i) for i in range(2, degree)] latex_name = latex_variable_name(self._name) - basis_latex_names += [ latex_name ] + [ "%s^{%s}" % (latex_name, i) for i in range(2,degree) ] - basis = [ gen ** i for i in range(degree) ] + basis_latex_names += [latex_name] + ["%s^{%s}" % (latex_name, i) for i in range(2, degree)] + basis = [gen ** i for i in range(degree)] RingExtensionWithBasis.__init__(self, defining_morphism, basis, basis_names, check, **kwargs) self._gen = self._backend(gen) self._names = (self._name,) @@ -2681,7 +2680,7 @@ cdef class RingExtensionWithGen(RingExtensionWithBasis): from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing _, _, j = self.free_module(map=True) d = self.relative_degree() - coeffs = [ -c for c in j(self._gen**d) ] + [ 1 ] + coeffs = [-c for c in j(self._gen**d)] + [1] S = PolynomialRing(self._base, name=var) return S(coeffs)