my objection is that in order for your patch not to break things, you also have to patch irreducible_characters() in matrix_gps/matrix_group.py and perm_gps/permgroup.py (and perhaps in other places I might have missed)
Dima On Jan 26, 6:24 pm, Alex Ghitza <aghi...@gmail.com> wrote: > On Tue, 26 Jan 2010 01:23:10 -0800 (PST), Dima Pasechnik <dimp...@gmail.com> > wrote: > > it does not help: > > indeed, I do not see how e.g. the following: > > > --- a/sage/groups/class_function.py Wed Jan 20 15:09:32 2010 -0800 > > +++ b/sage/groups/class_function.py Tue Jan 26 09:10:38 2010 +1100 > > @@ -284,7 +284,7 @@ > > sage: S5 = SymmetricGroup(5) > > sage: irr = S5.irreducible_characters() > > sage: [x.degree() for x in irr] > > - [1, 4, 5, 6, 5, 4, 1] > > + [1, 1, 4, 4, 5, 5, 6] > > """ > > return Integer(self._gap_classfunction.DegreeOfCharacter()) > > > amounts to a fix; the thing is that you need to sort [x.degree() for x > > in irr] > > (e.g. just sort([x.degree() for x in irr])) before comparing it with > > [1, 1, 4, 4, 5, 5, 6] > > > (I do not know how to write such a test in Sage, though...) > > I'll explain the reasoning behind my patch. If you still think it > doesn't do the right thing then you are free to do things differently. > > In irreducible_characters(), Sage calls the GAP function Irr to get the > irreducible characters of a group as GAP objects. As you pointed out, > there is no natural *mathematical* ordering of these characters; in > other words, the right answer is the set of characters, independent of > the order in which they are listed. > > This can cause problems with testing (as it just did when you ran tests > with 4.4.12). When code gets rewritten in GAP, the order in which > things are listed might change; this is not a bug in GAP, the answer is > still mathematically correct, but it's silly for us to always have to > change our doctests when this happens. Or, if the GAP function uses a > randomised algorithm, there is no guarantee that the order will be the > same between different machines or different runs on the same machine. > One way to fix this is to explicitly sort things in the doctests, which > is I think what you are proposing above: > > sage: sorted([x.degree() for x in irr]) > [1, 1, 4, 4, 5, 5, 6] > > Another way, which I find more appealing, is to make > irreducible_characters() take the list from GAP and sort it, then return > the sorted list. I find this better because it is less error-prone, and > now the exact output of irreducible_characters() is no more dependent on > irrelevant factors such as architecture, GAP version, random seed, etc. > And someone who uses this function from Sage does not need to know > anything about GAP internals and how they might have changed from one > version to another. > > This is something that is done in a lot of places in the Sage library in > this type of situation. > > It is possible that I am misunderstanding your objection, though. > > Best, > Alex > > -- > Alex Ghitza -- Lecturer in Mathematics -- The University of Melbourne > -- Australia --http://www.ms.unimelb.edu.au/~aghitza/ -- To post to this group, send an email to sage-devel@googlegroups.com To unsubscribe from this group, send an email to sage-devel+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URL: http://www.sagemath.org