Hellooooooooooooooooooooooo !!

> Thanks Nathann for starting the discussion (though I sometimes think that
> being a little less aggressive wouldn't hurt).

Yes, sorry about that. But it takes a lifetime to get people to admit the
most elementary things. I mean, my first message contained two lines of
which I said "please tell me if you acknowledge this or not", and so far
nobody cared even to answer "no" to them.

> Let me start with what the positive sides of a combinatorial_map decorator
> are for us (and I think several of the combinat people do agree here):

Hmm.... I probably agree with all advantages, what find_stat does is nice
and useful. But a decorator is not to me a clean way to do it. That' s
really the only thing I have been defending all along. Wrapping the method
into classes instead of just registering them somewhere, and requiring the
addition of new Sage methods just because find_stat needs them.

Those are really the only points that I try to make. But I probably agree
with all advantages that you list below, it's just totally unrelated.

> - we obtain a better image of which maps between combinatorial collections
> exist (see in particular the graph at the bottom of
> http://www.findstat.org/, and the linked more detailed pdf, this is not
only
> interesting for FindStat but provides a nice visualization of how many
> combinatorial objects in Sage are linked together),

That's cool.
+1

> - we can thus easier work on completing the picture. Indeed, we
implemented
> many (~20-30 would be my guess, but I don't know) new maps between
> combinatorial objects that are interesting for combinatorialists (even
those
> not interested in FindStat).

That's cool.
+1

> - we can automatize checks if maps do indeed map to the proper codomain
> (e.g., StandardTableau.conjugate
> returned a Tableau, and not a StandardTableau as desired, see #14258),

That's cool.
+1

> - we can automatize many corner case checks (of course, such checks should
> as well go into the doctests, but if
> we automatically apply all these maps on hundreds of elements including
> corner cases, we already found various bugs in the pre-existing code that
> were not captured by the doc tests, see e.g. #14724, #14718, #13624).

That's cool.
+1

> - we would like more mathematical information to the decorator (though
this
> is not yet done). This would provide more refined automated requests like
> "Which bijections between Dyck paths and NoncrossingSetPartitions are
> implemented?". Currently, we can only ask "Which maps from Dyck paths to
> NoncrossingSetPartitions are implemented?", but I think that is nice to
get
> as well.

That's cool.
+1

But still totally unrelated to the points I try to make.

> - I implemented the decorator word by word following the (old)
cached_method
> decorator, this might have been good or not, but it was the best I was
able
> to do.

Well, just returning the function as it is while registering the
decorator's information somewhere seems to be nice.

The decorator could even add some information to the docstring so that this
information would automatically appear in the doc !

> - Nathann himself tested that the cost of the wrapper when calling the
> method is very much negligible, here is a test when creating the object

The correct phrasing for this changed since, and will from now on be called
masturbation.

> if there is any better test to check this issue, please do so.

Well, I called the methods while you created the class, but really it's
pretty much for free. Only the code has no reason at all to be run when the
function is called. And if you want to improve your decorator perhaps you
will add more stuff to it, and if you do it like that then it means that
the stuff that you will add in the decorator necessarily stays free, from
fear that it would add a non-negligible amount of computations when the
function is called.
Honestly, if you just register the functions somewhere else and do not
change them at all I would be very happy.

Besides, it would mean that there is a way to add more functions and
information to your database WITHOUT creating additional Sage methods, and
this would be nice because as Dima said here, Graph(my_poset) makes much
more sense that my_poset.to_graph().
And there is this .to_partition() method too, which to me was only added
because of find_stat.

> Anyway, the current implementation might be good enough to use, or someone
> might provide a better implementation, but this is not the point for me,
and
> - if I understand it right - it's not the point for Nathann either. Two of
> his point are yet to be answered/discussed a bit further:
>
>
> "Right now, find_stat seems to work with decorators over Sage's functions.
> It is all very nice. But then whenever some addition must be made to
> find_stat's combinatorial maps there must be a corresponding Sage
function,
> and I think that adding functions to Sage just because find_stat needs
them
> is really going too far. "
>
> My answer: it is right that - in the current implementation - we need to
> implement a map between combinatorial collections in Sage and decorate it
> with @combinatorial_map in order to use this map in FindStat. But we only
> want to use maps in FindStat that are interesting for mathematicians, and
if
> this is the case, then it should be very valid to have this map as well in
> Sage.

In the particular case of .to_partition(), I do not think so. In the
particular case of .to_graph() I do not think so either, because
Graph(my_poset) makes more sense according to Sage's syntax. Is that a
valid objection to the idea that all maps should correspond to Sage methods
?

> If anyone is interested I could provide a list with methods we
> implemented for (or better in) Sage because we wanted to have them in
> FindStat. We can then see if it would have better to implement all these
> maps in a different project without allowing Sage users to use them as
well.

This last sentence ignores the possibility of Graph(my_poset) instead of
.to_graph().

> "But it is a website and an independent project, and I don't see why on
> earth Sage should now be developped according to find_stat's needs."
>
> My answer: All we do is to decorate maps between certain combinatorial
> collections to provide further information about this map. We then use
this
> information in FindStat, but this information is not only useful for
> FindStat (at least in my opinion), see as well my comments above about the
> "positive sides". There might be something not perfect in the actual
> implementation, but the so far discussed drawbacks seem to be very little,
> compared to the advantage that a user is e.g. not annoyed anymore that the
> conjugate of a StandardTableau is not standard anymore, or that there are
> now all these new maps between the objects implemented. Anyway, if there
is
> a better way of achieving such possibilities I am very positive of doing
so
> (though this will again use someone's time that she might want to use
> differently). And: we are Sage users and/or developers, so if we want Sage
> to do sth for us that doesn't hurt (@Nathann: except for philosophical
> reasons), I don't see the point of not getting Sage doing it for us (as
> others did similar things before, according to John Cremona and others
> comments earlier on this thread) and for the combinat community.

What you do on the math level is nice, find_stat is nice, using Sage to do
that too, and Sage benefits from it. Agreed. Now :

1) Is there any need to wrap the methods instead of returning them as they
are, while registering the information somewhere. If not, could it be
changed ?
2) If you agree that not all find_stat maps should be Sage function (and if
you don't please tell me why the two examples above are invalid), could we
remove those .to_poset() and .to_partition() things and add the entries to
the find_stat database without touching those classes ?

> Finally, I think that the combinat part of Sage would have been less
> explored without the implementations done in the context of FindStat, and
> several combinatorialists only started implementing some maps or new
> combinatorial objects because FindStat uses them. So imho, the advantages
> outweigh the drawbacks by far, though there might be the point in
minimizing
> the drawbacks even further.

The advantages outweigh the drawbacks, and it may even be possible to have
only advantages and no drawbacks. What do you think ?

Nathann

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to