#10963: More functorial constructions
-------------------------------------+-------------------------------------
       Reporter:  nthiery            |        Owner:  stumpc5
           Type:  enhancement        |       Status:  needs_info
       Priority:  major              |    Milestone:  sage-6.2
      Component:  categories         |   Resolution:
       Keywords:  days54             |    Merged in:
        Authors:  Nicolas M. Thiéry  |    Reviewers:  Simon King, Frédéric
Report Upstream:  N/A                |  Chapoton
         Branch:                     |  Work issues:
  public/ticket/10963-doc-           |       Commit:
  distributive                       |  8bbbfe7dc8e5e9c4fbba758424208e35070272c4
   Dependencies:  #11224, #8327,     |     Stopgaps:
  #10193, #12895, #14516, #14722,    |
  #13589, #14471, #15069, #15094,    |
  #11688, #13394, #15150, #15506,    |
  #15757, #15759                     |
-------------------------------------+-------------------------------------

Comment (by darij):

 I am *not* reviewing this ticket (not enough skill), but I am trying to
 read up on the new features in the documentation. All commits I'm pushing,
 unless declared otherwise, fix minor issues I find with the latter. Please
 doublecheck them, because once again I am not exactly very competent at
 this...

 Some questions that I asked myself while reading the new categories primer
 and couldn't answer (some of them rhetorical, sorry):

 - What do you do if you have a subcategory A of a category B, but the
 notion of quotient objects in A is *NOT* a particular case (potentially
 with some extra structure) of the notion of quotient objects in B ? (I
 don't have any nice examples, but it's very easy to come up with examples
 for the similar notions of "equalizer", "coproduct" etc.) Am I allowed to
 override the `quotient` method on A? Can I expect that it will end up
 being always used on objects of A and never used on objects of B?

 - primer.py around line 890:
 {{{
 This implementation specifies a data structure for the parents and the
 elements, and makes a promise: the implemented parent is a
 semigroup. Then it fulfills the promise by implementing the basic
 operations ``product`` and ``semigroup_generators``. In exchange for
 }}}
 What promise does ``semigroup_generators`` fulfill? Why should a semigroup
 always come with such a method? Isn't ``__contains__`` more of a
 necessity?

 - This is not about something in the primer, but it's a question that has
 been preying on my mind for a while. When implementing a parent method
 like ``product(self, a, b)`` to multiply two elements `a` and `b`, can
 (should?) I WLOG assume that `a` and `b` are already in the parent
 ``self``, or should I first cast them into ``self``?

 - These TODOs, particularly the first one, might be helpful to fill out:
 {{{
 .. TODO::

     - Specifying the category of a parent
     - Adding code to an existing parent
 }}}

 - The primer mentions `Sets().Algebras(QQ)` as an example. What exactly
 does this mean? The repr string ("Category of set algebras over Rational
 Field") isn't very helpful, and an annoyance of mixins is that they don't
 have documentation.

 - The notions of "subcategory" and "full subcategory" used in the primer
 (and probably in the rest of the doc?) conflict with mathematics. For
 example, this (line 1236) is mathematically false:
 {{{
     sage: Algebras(QQ).FiniteDimensional().is_subcategory(
 Modules(QQ).FiniteDimensional() )
     True
 }}}
 A subcategory in accordance with mathematical notation cannot have any
 extra structure unless it is predetermined by its existence (like inverses
 in groups). If you want to keep to this usage of the notion in Sage,
 PLEASE HEAVILY DOCUMENT IT. The claim that all subcategories are
 automatically full (line 1100) is also mistaken; if it is supposed to mean
 that Sage only knows how to deal with full subcategories (i.e., if I
 define a subcategory, then Sage will automatically regard any morphism of
 the big category as a morphism of the small one), then again THIS SHOULD
 BE DOCUMENTED.

 - Curious question: Is there any connection between the
 AdditiveAssociative and Associative axioms? I.e., does the former profit
 from methods bound to the latter in any way? Whether yes or not, this
 might use a brief mention in the doc.

 - Line 1377 of the primer:
 {{{
 ``C.super_categories()`` *must* return a list of categories, namely
 the *immediate* super categories of `C`.
 }}}
 Does this mean that it is FORBIDDEN to provide non-immediate
 supercategories (i.e., categories with some supercategories inbetween)?
 This is somewhat important because if true, it means that one has to be
 particularly careful when introducing new categories into the graph, and
 remove all redundant paths when doing so. Again, something that the reader
 should be warned about. But I'm hoping that this is not the case, as I
 don't see a reason why this should be required.

 - Do the primer, along with the module-wide doc of
 `category_with_axiom.py`, document everything one needs to know when
 introducing new categories into the framework? I'm planning to read the
 latter in foreseeable time.

 Please don't get me wrong -- most of the primer is very readable and
 indeed quite fun to read. I'd in fact be happy if all of Sage's
 documentation was like that...

 Thanks a lot!

--
Ticket URL: <http://trac.sagemath.org/ticket/10963#comment:564>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.

Reply via email to