Right. FiniteSet's sorting was designed so that - everything that knows how to sort itself does so - everything that does not know how to sort itself comes last and is sorted arbitrarily
hash will be machine dependent and so yes, this causes difficulties. I wasn't aware of default_sort_key while making FiniteSet. It is possible that it should be used instead of element_sort_fn. On Tue, Jun 19, 2012 at 5:41 PM, Sergiu Ivanov <[email protected]>wrote: > On Tue, Jun 19, 2012 at 11:51 AM, Tom Bachmann <[email protected]> wrote: > > The problem seems to rather be that FiniteSet does not print canonically. > > Indeed, those failures are related to how FiniteSet orders its > elements. > > > On 19.06.2012 09:44, Aaron Meurer wrote: > >> > >> We used to have this problem a lot, but then we made all printing > >> ordering canonical with sort_key. I suppose you should make sure that > >> the new category theory class printers use this. > > From what I can see in FiniteSet.__new__, FiniteSet always sorts its > elements with element_sort_fn which is defined just above the > definition of FiniteSet: > > def element_sort_fn(x): > try: > if x.is_comparable is True: > return x > except: > pass > return 1e9+abs(hash(x)) > > From what I can see in StrPrinter._print_FiniteSet, no sort_key > function is involved when printing the elements of a FiniteSet. > > Apparently, since is_comparable is not set for the objects of the > classes in sympy.categories.baseclasses, element_sort_fn(x) falls back > to the last line, which, I guess, is somewhat architecture and > a-lot-of-stuff dependent (at least because of the large float 1e9). > > Sergiu > > -- > You received this message because you are subscribed to the Google Groups > "sympy" 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/sympy?hl=en. > > -- You received this message because you are subscribed to the Google Groups "sympy" 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/sympy?hl=en.
