Changeset 6763:32acd12b38e0
- Timestamp:
- 10/05/07 00:48:50 (6 years ago)
- Branch:
- default
- File:
-
- 1 edited
-
sage/rings/number_field/order.py (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
sage/rings/number_field/order.py
r6500 r6763 9 9 from sage.structure.sequence import Sequence 10 10 from sage.rings.integer_ring import ZZ 11 from sage.structure.element import is_Element 11 12 12 13 from number_field_element import OrderElement_absolute, OrderElement_relative … … 66 67 self._K = K 67 68 self._is_maximal = is_maximal 69 DedekindDomain.__init__(self, base = K.base(), names = K.variable_names(), normalize = False) # base should probably change 68 70 69 71 def __mul__(self, right): … … 175 177 3 176 178 """ 177 return len(self.basis())179 return self.absolute_degree() 178 180 179 181 def basis(self): # this must be defined in derived class … … 261 263 return self._K 262 264 265 def residue_field(self, prime, name = None, check = False): 266 """ 267 Return the residue field of this number field at a given prime, ie $O_K / p O_K$. 268 269 INPUT: 270 prime -- a prime ideal of the maximal order in this number field. 271 name -- the name of the variable in the residue field 272 check -- whether or not to check the primality of prime. 273 OUTPUT: 274 The residue field at this prime. 275 276 EXAMPLES: 277 sage: R.<x> = QQ[] 278 sage: K.<a> = NumberField(x^4+3*x^2-17) 279 sage: P = K.ideal(61).factor()[0][0] 280 sage: OK = K.maximal_order() 281 sage: OK.residue_field(P) 282 Residue field of Fractional ideal (-2*a^2 + 1) of Number Field in a with defining polynomial x^4 + 3*x^2 - 17 283 """ 284 import sage.rings.residue_field 285 return sage.rings.residue_field.ResidueField(prime) 286 263 287 264 288 def fraction_field(self): … … 268 292 269 293 EXAMPLES: 270 sage: K.<b> = NumberField(x^4 + 17*x^2 + 17)271 sage: O = K.order(17*b); O272 Order with module basis 1, 17*b, 289*b^2, 4913*b^3 in Number Field in b with defining polynomial x^4 + 17*x^2 + 17273 sage: O.fraction_field()274 Number Field in b with defining polynomial x^4 + 17*x^2 + 17294 sage: K.<b> = NumberField(x^4 + 17*x^2 + 17) 295 sage: O = K.order(17*b); O 296 Order with module basis 1, 17*b, 289*b^2, 4913*b^3 in Number Field in b with defining polynomial x^4 + 17*x^2 + 17 297 sage: O.fraction_field() 298 Number Field in b with defining polynomial x^4 + 17*x^2 + 17 275 299 """ 276 300 return self._K … … 282 306 283 307 EXAMPLES: 284 sage: k.<c> = NumberField(x^3 + x^2 - 2*x+8)285 sage: o = k.maximal_order()286 sage: o.degree()287 3288 sage: o.rank()289 3308 sage: k.<c> = NumberField(x^3 + x^2 - 2*x+8) 309 sage: o = k.maximal_order() 310 sage: o.degree() 311 3 312 sage: o.rank() 313 3 290 314 """ 291 315 return self._K.degree() … … 400 424 return cmp(self._K, other._K) 401 425 return cmp(self._module_rep, other._module_rep) 426 427 def absolute_degree(self): 428 """ 429 Returns the absolute degree of this order, ie the degree of this order over ZZ. 430 431 EXAMPLES: 432 sage: K.<a> = NumberField(x^3 + 2) 433 sage: O = K.maximal_order() 434 sage: O.absolute_degree() 435 3 436 sage: K.<a> = NumberField([x^3 + 2, x^2 - 3]) 437 sage: O = K.maximal_order() 438 Traceback (most recent call last): 439 ... 440 NotImplementedError 441 """ 442 return self.polynomial().degree() * self.base_ring().absolute_degree() 443 444 def absolute_polynomial(self): 445 """ 446 Returns the absolute polynomial of this order, which is just the absolute polynomial of the number field. 447 448 EXAMPLES: 449 sage: K.<a, b> = NumberField([x^2 + 1, x^3 + x + 1]); OK = K.maximal_order() 450 Traceback (most recent call last): 451 ... 452 NotImplementedError 453 454 #sage: OK.absolute_polynomial() 455 #x^6 + 5*x^4 - 2*x^3 + 4*x^2 + 4*x + 1 456 """ 457 return self.number_field().absolute_polynomial() 458 459 def polynomial(self): 460 """ 461 Returns the polynomial defining self (current the polynomial defining self.number_field() 462 """ 463 return self.number_field().polynomial() 464 465 def polynomial_ntl(self): 466 """ 467 Return defining polynomial of this number field 468 as a pair, an ntl polynomial and a denominator. 469 470 This is used mainly to implement some internal arithmetic. 471 472 EXAMPLES: 473 sage: NumberField(x^2 + 1,'a').maximal_order().polynomial_ntl() 474 ([1 0 1], 1) 475 """ 476 return self.number_field().polynomial_ntl() 402 477 403 478 class AbsoluteOrder(Order): … … 444 519 sage: m(6*z) 445 520 6*z 446 """ 447 if x.parent() is not self._K: 521 sage: k(m(6*z)) 522 6*z 523 """ 524 if is_Element(x) and x.parent() is self: 525 return x 526 if not is_Element(x) or x.parent() is not self._K: 448 527 x = self._K(x) 449 528 V, _, embedding = self._K.vector_space()
Note: See TracChangeset
for help on using the changeset viewer.
