#10963: More functorial constructions
-------------------------------------+-------------------------------------
       Reporter:  nthiery            |        Owner:  stumpc5
           Type:  enhancement        |       Status:  needs_review
       Priority:  major              |    Milestone:  sage-6.1
      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                |       Commit:
   Dependencies:  #11224, #8327,     |  eb7b486c6fecac296052f980788e15e2ad1b59e4
  #10193, #12895, #14516, #14722,    |     Stopgaps:
  #13589, #14471, #15069, #15094,    |
  #11688, #13394, #15150, #15506     |
-------------------------------------+-------------------------------------

Comment (by nthiery):

 Replying to [comment:462 SimonKing]:
 > Replying to [comment:461 ncohen]:
 > > It looks like your problem is that the user should "decide" if the
 function is a function of `A.B` or a function of `B.A` when what you have
 in mind is a function of `{A,B}`. Why don't you have a syntax which takes
 as information a set of axioms (and a category if needed), and let some
 code decide automatically where it should be put (pick your spanning tree)
 ?

 Yes, I agree that this is a direction to explore (e.g. following
 Simon's database suggestions)! Yes we agree with Simon that this is
 for a later iteration as this requires non trivial experimentation and
 implementation work.

 Now I'd like to raise a point to mitigate the discussion. In most
 practical cases, we want to work incrementally. You'd rather describe
 FiniteFields as Fields with the axiom Finite rather than Magmas and
 AdditiveMagmas with all of the following axioms (besides Distributive):
 {{{
     sage: Fields().axioms()
     frozenset(['Division', 'AdditiveUnital', 'NoZeroDivisors',
 'Commutative',
                'AdditiveInverse', 'AdditiveAssociative', 'Unital',
                'AdditiveCommutative', 'Associative'])
 }}}

 Ok, a few of the above axioms are redundant but still, you see my
 point, right?

 In practice, among the 59 categories with axioms that are currently
 implemented in Sage, almost all admitted a natural choice of base
 category and single axiom to add. Only in a few cases did I really
 make a choice that felt mathematically arbitrary. That was essentially
 in this snippet of DistributiveMagmasAndAdditiveMagmas:

 {{{
     class AdditiveAssociative(CategoryWithAxiom):
         class AdditiveCommutative(CategoryWithAxiom):
             class AdditiveUnital(CategoryWithAxiom):
                 class AdditiveInverse(CategoryWithAxiom):
                     Associative = LazyImport('sage.categories.rngs',
 'Rngs', at_startup=True)
                 class Associative(CategoryWithAxiom):
                     Unital          =
 LazyImport('sage.categories.semirings', 'Semirings', at_startup=True)
 }}}

 And it's not even much worst than a syntax like
 {{{
     {AdditiveAssociative,AdditiveCommutative,AdditiveUnital} -> ...
 {{{

 > Really? I always thought of ''rooted'' trees (and that's what we have
 here) as being directed.

 True, we should have added "rooted" everywhere in our discussion. But
 if Nathann believes "out-arborescence" is better, we could change to
 that too.

 Cheers,
                                      Nicolas

--
Ticket URL: <http://trac.sagemath.org/ticket/10963#comment:464>
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/groups/opt_out.

Reply via email to