Dear all,

Let me try to draw a consensus (in fact I believe it's already there),
so that we can ignore the irrelevant historical details of the
discussion and move forward toward what we can do to improve the
situation.

Here are a couple statements that might be agreed upon by everybody:

(1) Per se, adding semantic information to Sage is a good thing (e.g.
    function XXX is actually an isomorphism). Of course this good
    thing is to be put into balance with other good things, among
    which is performance.

(1') It's interesting to explore what can possibly be done with such
    semantic information; it's great that findstat is doing that.
    And we will certainly find other use cases.

(2) Using a decorator on the function XXX is one possible syntax for
    achieving (1). Another alternative is to add the info to the
    documentation string. Another is to have a separate "database".
    Etc.

(3) There are some advantages in using a decorator:

    - It's checked by the Python parser; so the odds of a syntax error
      not getting detected is low.

    - Code locality: information about XXX is close to XXX.

    - Part of the Sage library is already tagged using this syntax.

(4) The overhead of the combinatorial_map decorator upon loading a
    Python file is negligible.

(5) The overhead of the combinatorial_map decorator upon calling the
    function is currently non trivial. But it could be made to zero by
    having the decorator return the decorated function as is.

    findstat would just need to instrument the Sage code to have the
    decorator register the function to its database.

    Volunteers?

(6) The name of some of the recently added methods could be improved:

    - Graph.to_partition is ambiguous: there are many ways to make a
      partition out of a graph (degree sequence, size of connected
      components, ...).

      Suggestions for improvements?

    - Poset.to_graph is ambiguous: there are several ways to make an
      unoriented graph out of a poset (e.g. hasse diagram or its
      transitive closure). Note that the alternative syntax
      Graph(poset) has the same problem.

      My personal recommendation would be:

      - Add a combinatorial map decorator on Poset.hasse_diagram
      - Add a combinatorial map from oriented to non oriented graph
        (which possibly calls for a syntax to declare that a
        constructor implements a combinatorial map between two sets)
      - Use transitivity

    Volunteers?

(7) It would be nice for the findstat project to have an alternative
    mean to declare some of the combinatorial maps either in its own
    source code or database. Two use cases:

    - As a temporary mean to move forward quicker than Sage when needed.

    - For some methods that are so trivial that their addition to Sage
      is subject to controversy.

Please let me know (concisely) in case of disagreement on one of the
points above or if I left out some important point in the discussion.

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-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