|
77 | 77 | # https://www.gnu.org/licenses/ |
78 | 78 | # **************************************************************************** |
79 | 79 |
|
| 80 | +from sage.categories.integral_domains import IntegralDomains |
80 | 81 | from sage.misc.cachefunc import cached_method |
81 | | -from sage.rings.ring import IntegralDomain |
| 82 | +from sage.structure.parent import Parent |
82 | 83 | from sage.structure.sequence import Sequence |
83 | 84 | from sage.rings.integer_ring import ZZ |
84 | 85 | import sage.rings.abc |
@@ -426,7 +427,7 @@ def EquationOrder(f, names, **kwds): |
426 | 427 | return K.order(K.gens()) |
427 | 428 |
|
428 | 429 |
|
429 | | -class Order(IntegralDomain, sage.rings.abc.Order): |
| 430 | +class Order(Parent, sage.rings.abc.Order): |
430 | 431 | r""" |
431 | 432 | An order in a number field. |
432 | 433 |
|
@@ -478,8 +479,8 @@ def __init__(self, K): |
478 | 479 | 0.0535229072603327 + 1.20934552493846*I |
479 | 480 | """ |
480 | 481 | self._K = K |
481 | | - IntegralDomain.__init__(self, ZZ, names=K.variable_names(), |
482 | | - normalize=False) |
| 482 | + Parent.__init__(self, base=ZZ, names=K.variable_names(), |
| 483 | + normalize=False, category=IntegralDomains()) |
483 | 484 | self._populate_coercion_lists_(embedding=self.number_field()) |
484 | 485 | if self.absolute_degree() == 2: |
485 | 486 | self.is_maximal() # cache |
@@ -665,7 +666,7 @@ def krull_dimension(self): |
665 | 666 | sage: O2.krull_dimension() |
666 | 667 | 1 |
667 | 668 | """ |
668 | | - return ZZ(1) |
| 669 | + return ZZ.one() |
669 | 670 |
|
670 | 671 | def integral_closure(self): |
671 | 672 | r""" |
@@ -733,6 +734,20 @@ def ngens(self): |
733 | 734 | """ |
734 | 735 | return self.absolute_degree() |
735 | 736 |
|
| 737 | + def gens(self) -> tuple: |
| 738 | + """ |
| 739 | + Return the generators as a tuple. |
| 740 | +
|
| 741 | + EXAMPLES:: |
| 742 | +
|
| 743 | + sage: x = polygen(ZZ, 'x') |
| 744 | + sage: K.<a> = NumberField(x^3 + x^2 - 2*x + 8) |
| 745 | + sage: O = K.maximal_order() |
| 746 | + sage: O.gens() |
| 747 | + (1, 1/2*a^2 + 1/2*a, a^2) |
| 748 | + """ |
| 749 | + return tuple(self.gen(i) for i in range(self.absolute_degree())) |
| 750 | + |
736 | 751 | def basis(self): # this must be defined in derived class |
737 | 752 | r""" |
738 | 753 | Return a basis over `\ZZ` of this order. |
|
0 commit comments