#5792: [with patch, needs review] Dirichlet character bug
---------------------------+------------------------------------------------
 Reporter:  davidloeffler  |       Owner:  craigcitro          
     Type:  defect         |      Status:  new                 
 Priority:  major          |   Milestone:                      
Component:  modular forms  |    Keywords:  dirichlet characters
---------------------------+------------------------------------------------

Comment(by davidloeffler):

 There is a bit more too this, though.

 Basically, the whole Dirichlet character machinery goes a bit mad whenever
 you have two Dirichlet characters with the same modulus and base ring, but
 where the zeta orders aren't the same. For a start, the parent
 !DirichletGroups compare as equal but their elements are different -- or
 at least they will be if we fix the !__call!__ method properly.

 Similarly, arithmetic coercion is screwed up, in some interesting ways:

 {{{
 sage: K.<w> = NumberField(x^2 + x + 1)
 sage: G2 = DirichletGroup(7, K, zeta_order=2, zeta=K(-1))
 sage: G3 = DirichletGroup(7, K, zeta_order=3, zeta=w)
 sage: G2.0 * G3.0
 }}}

 Here the coercion model will fail miserably to find the right parent.

 One option would be to prevent Dirichlet groups ever being created for
 which the zeta order is not maximal for the given base ring. This would
 sort of work, but would restrict us to Dirichlet groups over integral
 domains (so we can guarantee that the group of roots of unity in the ring
 is cyclic) and it would make it a pain to implement base extension (at
 present the base_extend method for !DirichletGroup_class just base extends
 the zeta element it already knows about.

 The alternative is to be "honest" and make Dirichlet groups with the same
 modulus and base ring but different zeta order into genuinely different
 objects, comparing as unequal and with different string representations.
 One can then sort out coercion arithmetic using the machinery from
 sage.categories.pushout; I coded this up as an experiment (creating a
 class "DirichletGroupExtensionFunctor" whose effect was to extend
 Dirichlet groups by adding an nth root of unity into their value group).
 But it's a bit of a cheat since my "functors" aren't actually functors in
 any natural category I can think of.

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/5792#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