On 2012-11-12, Nicolas M. Thiery <nicolas.thi...@u-psud.fr> wrote: > On Mon, Nov 12, 2012 at 05:03:58AM +0000, Dima Pasechnik wrote: >> On 2012-11-11, Nathann Cohen <nathann.co...@gmail.com> wrote: >> > I spent many hours fighting with Posets under Sage. I enjoyed it a lot, but >> > I can already tell that it gets on Florent's and Nicolas' nerves, and so I >> > was thinking of whether I should put an end to it. For their sake. >> > >> > Here's the problem. With comments. >> > >> > ------------------------------- >> > Building the poset from a DiGraph defined on integers : >> > sage: g = DiGraph([(1,2),(1,3),(2,4),(3,4)]) >> > sage: p = Poset(g) >> > >> > Is 3 in the poset ? >> > >> > sage: 3 in p >> > True >> > >> > Of course it is ! >> > >> > sage: list(p) >> > [1, 2, 3, 4] >> > sage: 3 in list(p) >> > False >> > >> > Not it is not ! So what the hell is this list [1,2,3,4] that we get as a >> > result to list(p) ? >> > >> > sage: map(type,list(p)) >> > [<class >> > 'sage.combinat.posets.elements.FinitePoset_with_category.element_class'>, >> > ... >> > 'sage.combinat.posets.elements.FinitePoset_with_category.element_class'>] >> > >> > O_O;;; >> > >> > sage: p.cover_relations() >> > [[1, 2], [1, 3], [2, 4], [3, 4]] >> > sage: [1,3] in p.cover_relations() >> > False >> > sage: (1,3) in p.cover_relations() >> > False >> > >> > And of course : >> > >> > sage: p.hasse_diagraph() == g >> > False >> > ------------------------ >> > >> > WELL. I personally consider that this behaviour is totally crazy, and I >> > often say so (very loud, and very frequently. Just come eat with us anyday >> > at lunch and I will probably complain about that, or about LaTeX). This >> > being said, I also heard that it may possibly make sense in a very sick >> > logic, and that the correction of some code may actually depend on that. >> > >> > I personally think that having this as the default behaviour of Poset is >> > *madness*. I personally *ONLY* use Posets with he flag "facade = True" when >> > I do not forget it, and lose half an hour when I do forget it. What would >> > you think of making it the default behaviour of Poset ? This way, normal >> > people could use a Poset without having to know what a facade is. Without >> > having to hear about parents, elements, the .value() method and all. >> > I mean. Why the hell should this stay the default behaviour ? >> >> I agree that this looks very odd. A poset is a pair (set, binary >> relation), and one would fully expect that list() will produce >> the list of the elements in the set ordered in a way preserving >> the partial order... > > First thing: for those who want to know more on what a facade is: > > sage: S = Sets() > sage: S.Facade? > > Now, just to put this in perspective. I think many people would find > the following madness if the end result was 3 and not 0: > > sage: G = IntegerModRing(3) > sage: G.list() > [0, 1, 2] > sage: a,b,c=G.list() > sage: b+c > 0 > > In the above use case, you want the element of G, as returned by G, to > be aware that they live in G, so that arithmetic get done > accordingly. Similarly, for posets, there are use cases where one > wants a<b to compare a and b in the poset. Absolutely! But if one builds a poset from a set with '<' already defined (e.g. a subset of integers, or vertices of a directed acyclic graph), and keeps in mind this order, one should not have to jump any hoops. One way or another, I don't see a (mathematical) reason for the elements of the poset to be replaced by some strange creatures...
> > All of this to say that both facade and non facade posets are useful. > Now there is the question of the default value for this option. I > think we all agree (including the original poset authors; facades did > not exist back then), that facade=True is the natural default as this > is the most common use case. > > The single remaining question is whether the issue is important enough > to break backward compatibility (with an appropriate transition period > of course). the naturalness of interface should overwrite backwards compatibility. Thanks goodness, Sage is not M$oft Office :-) > >> Actually, I tried googling poset+facade, and all the maths hits are >> Sage, with an exception of a dissertation on posets, where the only >> place the word "facade" is used is the following quote: >> >> It turns out that an eerie type of chaos >> can lurk just behind a facade of order >> and yet, deep inside the chaos >> lurks an even eerier type of order. >> D. Hofstadter >> >> Thus indeed, we should not show "an eerie type of chaos", >> unless a user expicitly asks for it... > >:-) > > Cheers, > Nicolas > -- > Nicolas M. ThiƩry "Isil" <nthi...@users.sf.net> > http://Nicolas.Thiery.name/ > -- You received this message because you are subscribed to the Google Groups "sage-combinat-devel" group. To post to this group, send email to sage-combinat-devel@googlegroups.com. To unsubscribe from this group, send email to sage-combinat-devel+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sage-combinat-devel?hl=en.