#4738: base_ring of orders in relative number fields is wrong and finding
maximal_orders of relative number fields is very slow
---------------------------------------------------+------------------------
 Reporter:  ncalexan                               |        Owner:  was       
     Type:  defect                                 |       Status:  new       
 Priority:  major                                  |    Milestone:  sage-3.2.2
Component:  number theory                          |   Resolution:            
 Keywords:  base ring relative number field order  |  
---------------------------------------------------+------------------------
Changes (by ncalexan):

  * summary:  base_ring of orders in relative number fields is wrong =>
              base_ring of orders in relative number fields
              is wrong and finding maximal_orders of relative
              number fields is very slow

Comment:

 While trying to fix this, I discovered that finding orders in relative
 number fields is ridiculously slow.  I think pari probably will help here,
 either but computing it directly or by computing a basis for the absolute
 order and then constructing a basis for the relative order from it.

 {{{
 sage: K.<a,b> = NumberField([x^4 + 1, x^4 - 3])
 sage: K.base_field().maximal_order()
 Maximal Order in Number Field in b with defining polynomial x^4 - 3
 sage: K.absolute_field('c').maximal_order()
 Maximal Order in Number Field in c with defining polynomial x^16 - 8*x^12
 + 432*x^8 + 640*x^4 + 256
 sage: K.absolute_field('c').maximal_order().basis()
 [3/512*c^14 + 3/352*c^12 + 3/128*c^10 + 3/704*c^8 + 1/32*c^6 + 15/176*c^4
 + 1/44, 7/1024*c^15 + 1/512*c^14 + 3/704*c^13 + 1/256*c^12 + 3/256*c^11 +
 1/128*c^10 + 3/1408*c^9 + 3/64*c^8 + 1/64*c^7 + 1/32*c^6 + 15/352*c^5 +
 1/16*c^4 + 1/88*c, 35/5632*c^14 + 3/256*c^12 + 7/704*c^10 + 3/64*c^8 +
 1/88*c^6 + 1/16*c^4 + 1/88*c^2, 79/11264*c^15 + 3/512*c^14 + 7/512*c^13 +
 1/128*c^12 + 7/1408*c^11 + 1/128*c^10 + 3/128*c^9 + 1/32*c^8 + 1/176*c^7 +
 1/32*c^6 + 1/32*c^5 + 1/176*c^3, 1/128*c^12 + 1/32*c^8 + 1/8*c^4,
 1/256*c^15 + 3/256*c^13 + 1/64*c^9 + 1/16*c^5, 1/256*c^14 + 1/64*c^10 +
 1/16*c^6, 1/512*c^15 + 1/128*c^13 + 1/128*c^11 + 1/32*c^7, 1/16*c^8,
 1/256*c^15 + 1/32*c^9, 1/32*c^10, 1/256*c^15 + 1/128*c^13 + 1/64*c^11,
 1/64*c^12, 1/64*c^13, 1/128*c^14, 1/128*c^15]
 sage: K.maximal_order()
   C-c
 C-c---------------------------------------------------------------------------
 KeyboardInterrupt                         Traceback (most recent call
 last)

 
/Users/ncalexan/.sage/temp/pv139196.reshsg.uci.edu/47346/_Users_ncalexan__sage_init_sage_0.py
 in <module>()
 ----> 1
       2
       3
       4
       5

 /Users/ncalexan/sage-3.2.1.alpha1/local/lib/python2.5/site-
 packages/sage/rings/number_field/number_field.pyc in maximal_order(self)
    4894         O = K.maximal_order()
    4895         B = [from_K(z) for z in O.basis()]
 -> 4896         OK = self.order(B, check_is_integral=False,
 check_rank=False)
    4897         self.__maximal_order = OK
    4898         return OK

 /Users/ncalexan/sage-3.2.1.alpha1/local/lib/python2.5/site-
 packages/sage/rings/number_field/number_field.pyc in order(self, *gens,
 **kwds)
    5630             gens = gens[0]
    5631         gens = [self(x) for x in gens]
 -> 5632         return order.relative_order_from_ring_generators(gens,
 **kwds)
    5633
    5634

 /Users/ncalexan/sage-3.2.1.alpha1/local/lib/python2.5/site-
 packages/sage/rings/number_field/order.pyc in
 relative_order_from_ring_generators(gens, check_is_integral, check_rank,
 is_maximal, allow_subfield)
    1640     module_gens = [to_Kabs(a) for a in gens]
    1641     n = [a.absolute_minpoly().degree() for a in gens]
 -> 1642     absolute_order_module_gens = monomials(module_gens, n)
    1643
    1644     abs_order =
 absolute_order_from_module_generators(absolute_order_module_gens,

 /Users/ncalexan/sage-3.2.1.alpha1/local/lib/python2.5/site-
 packages/sage/rings/monomials.pyc in monomials(v, n)
      52     v = Sequence(v)
      53     R = v.universe()
 ---> 54     return _monomials(v, R, n, 0)
      55
      56

 /Users/ncalexan/sage-3.2.1.alpha1/local/lib/python2.5/site-
 packages/sage/rings/monomials.pyc in _monomials(gens, R, n, i)
      15         nn = list(n)
      16         del nn[i]
 ---> 17         v = monomials(w, nn)
      18         k = len(v)
      19         for _ in range(n[i]-1):

 /Users/ncalexan/sage-3.2.1.alpha1/local/lib/python2.5/site-
 packages/sage/rings/monomials.pyc in monomials(v, n)
      52     v = Sequence(v)
      53     R = v.universe()
 ---> 54     return _monomials(v, R, n, 0)
      55
      56

 /Users/ncalexan/sage-3.2.1.alpha1/local/lib/python2.5/site-
 packages/sage/rings/monomials.pyc in _monomials(gens, R, n, i)
      15         nn = list(n)
      16         del nn[i]
 ---> 17         v = monomials(w, nn)
      18         k = len(v)
      19         for _ in range(n[i]-1):

 /Users/ncalexan/sage-3.2.1.alpha1/local/lib/python2.5/site-
 packages/sage/rings/monomials.pyc in monomials(v, n)
      52     v = Sequence(v)
      53     R = v.universe()
 ---> 54     return _monomials(v, R, n, 0)
      55
      56

 /Users/ncalexan/sage-3.2.1.alpha1/local/lib/python2.5/site-
 packages/sage/rings/monomials.pyc in _monomials(gens, R, n, i)
      15         nn = list(n)
      16         del nn[i]
 ---> 17         v = monomials(w, nn)
      18         k = len(v)
      19         for _ in range(n[i]-1):

 /Users/ncalexan/sage-3.2.1.alpha1/local/lib/python2.5/site-
 packages/sage/rings/monomials.pyc in monomials(v, n)
      52     v = Sequence(v)
      53     R = v.universe()
 ---> 54     return _monomials(v, R, n, 0)
      55
      56

 /Users/ncalexan/sage-3.2.1.alpha1/local/lib/python2.5/site-
 packages/sage/rings/monomials.pyc in _monomials(gens, R, n, i)
      15         nn = list(n)
      16         del nn[i]
 ---> 17         v = monomials(w, nn)
      18         k = len(v)
      19         for _ in range(n[i]-1):

 /Users/ncalexan/sage-3.2.1.alpha1/local/lib/python2.5/site-
 packages/sage/rings/monomials.pyc in monomials(v, n)
      52     v = Sequence(v)
      53     R = v.universe()
 ---> 54     return _monomials(v, R, n, 0)
      55
      56

 /Users/ncalexan/sage-3.2.1.alpha1/local/lib/python2.5/site-
 packages/sage/rings/monomials.pyc in _monomials(gens, R, n, i)
      15         nn = list(n)
      16         del nn[i]
 ---> 17         v = monomials(w, nn)
      18         k = len(v)
      19         for _ in range(n[i]-1):

 /Users/ncalexan/sage-3.2.1.alpha1/local/lib/python2.5/site-
 packages/sage/rings/monomials.pyc in monomials(v, n)
      52     v = Sequence(v)
      53     R = v.universe()
 ---> 54     return _monomials(v, R, n, 0)
      55
      56

 /Users/ncalexan/sage-3.2.1.alpha1/local/lib/python2.5/site-
 packages/sage/rings/monomials.pyc in _monomials(gens, R, n, i)
      15         nn = list(n)
      16         del nn[i]
 ---> 17         v = monomials(w, nn)
      18         k = len(v)
      19         for _ in range(n[i]-1):

 /Users/ncalexan/sage-3.2.1.alpha1/local/lib/python2.5/site-
 packages/sage/rings/monomials.pyc in monomials(v, n)
      52     v = Sequence(v)
      53     R = v.universe()
 ---> 54     return _monomials(v, R, n, 0)
      55
      56

 /Users/ncalexan/sage-3.2.1.alpha1/local/lib/python2.5/site-
 packages/sage/rings/monomials.pyc in _monomials(gens, R, n, i)
      15         nn = list(n)
      16         del nn[i]
 ---> 17         v = monomials(w, nn)
      18         k = len(v)
      19         for _ in range(n[i]-1):

 /Users/ncalexan/sage-3.2.1.alpha1/local/lib/python2.5/site-
 packages/sage/rings/monomials.pyc in monomials(v, n)
      52     v = Sequence(v)
      53     R = v.universe()
 ---> 54     return _monomials(v, R, n, 0)
      55
      56

 /Users/ncalexan/sage-3.2.1.alpha1/local/lib/python2.5/site-
 packages/sage/rings/monomials.pyc in _monomials(gens, R, n, i)
      15         nn = list(n)
      16         del nn[i]
 ---> 17         v = monomials(w, nn)
      18         k = len(v)
      19         for _ in range(n[i]-1):

 /Users/ncalexan/sage-3.2.1.alpha1/local/lib/python2.5/site-
 packages/sage/rings/monomials.pyc in monomials(v, n)
      52     v = Sequence(v)
      53     R = v.universe()
 ---> 54     return _monomials(v, R, n, 0)
      55
      56

 /Users/ncalexan/sage-3.2.1.alpha1/local/lib/python2.5/site-
 packages/sage/rings/monomials.pyc in _monomials(gens, R, n, i)
      15         nn = list(n)
      16         del nn[i]
 ---> 17         v = monomials(w, nn)
      18         k = len(v)
      19         for _ in range(n[i]-1):

 /Users/ncalexan/sage-3.2.1.alpha1/local/lib/python2.5/site-
 packages/sage/rings/monomials.pyc in monomials(v, n)
      52     v = Sequence(v)
      53     R = v.universe()
 ---> 54     return _monomials(v, R, n, 0)
      55
      56

 /Users/ncalexan/sage-3.2.1.alpha1/local/lib/python2.5/site-
 packages/sage/rings/monomials.pyc in _monomials(gens, R, n, i)
      15         nn = list(n)
      16         del nn[i]
 ---> 17         v = monomials(w, nn)
      18         k = len(v)
      19         for _ in range(n[i]-1):

 /Users/ncalexan/sage-3.2.1.alpha1/local/lib/python2.5/site-
 packages/sage/rings/monomials.pyc in monomials(v, n)
      52     v = Sequence(v)
      53     R = v.universe()
 ---> 54     return _monomials(v, R, n, 0)
      55
      56

 /Users/ncalexan/sage-3.2.1.alpha1/local/lib/python2.5/site-
 packages/sage/rings/monomials.pyc in _monomials(gens, R, n, i)
      15         nn = list(n)
      16         del nn[i]
 ---> 17         v = monomials(w, nn)
      18         k = len(v)
      19         for _ in range(n[i]-1):

 /Users/ncalexan/sage-3.2.1.alpha1/local/lib/python2.5/site-
 packages/sage/rings/monomials.pyc in monomials(v, n)
      52     v = Sequence(v)
      53     R = v.universe()
 ---> 54     return _monomials(v, R, n, 0)
      55
      56

 /Users/ncalexan/sage-3.2.1.alpha1/local/lib/python2.5/site-
 packages/sage/rings/monomials.pyc in _monomials(gens, R, n, i)
      19         for _ in range(n[i]-1):
      20             for j in range(k):
 ---> 21                 v.append(v[j]*z)
      22             z *= gens[i]
      23         return v

 /Users/ncalexan/sage-3.2.1.alpha1/local/lib/python2.5/site-
 packages/sage/interfaces/get_sigs.pyc in my_sigint(x, n)
       7
       8 def my_sigint(x, n):
 ----> 9     raise KeyboardInterrupt
      10
      11 def my_sigfpe(x, n):

 KeyboardInterrupt:
 }}}

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/4738#comment:2>
Sage <http://sagemath.org/>
Sage - Open Source Mathematical Software: Building the Car Instead of 
Reinventing the Wheel
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sage-trac?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to