#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                       |  977a940beba7ed96722a24e36cd81595336350ef
   Dependencies:  #11224, #8327,     |     Stopgaps:
  #10193, #12895, #14516, #14722,    |
  #13589, #14471, #15069, #15094,    |
  #11688, #13394, #15150, #15506,    |
  #15757, #15759                     |
-------------------------------------+-------------------------------------

Comment (by nthiery):

 Replying to [comment:556 vbraun]:
 > Replying to [comment:555 nthiery]:
 > > > but there you cannot have accidental clashes either.
 > > Take two unrelated classes `C` and `D` that both *define* a method
 > > `x.foo()` but with different semantic. Take a subclass `E` of `C` and
 > > `D` [...]
 >
 > There is still no accidental clash. If you inherit from C and D then you
 get exactly what you ask for.
 > Your example is simply one where the programmer actually does not want
 to inherit from both C and D.
 > That is fine, you also have the possibility to inherit only from one of
 them or from neither.

 That's precisely my point. Similarly, if two independent categories Cs
 and Ds define an axiom with the same name but different semantic, and
 someone creates a subcategory Es of both Cs and Ds, then there is no
 *accidental* clash. The programmer actually does not want to build a
 subcategory of both Cs and Ds. That's what I meant when I said that
 axioms are properly local in the current implementation.

 > And you have that flexibility precisely because a) you have a clear
 > and concise syntax for specifying the parents and b) distinct
 > classes stay separate as long as you don't explictly tie them
 > together.

 Well, I further claim that the programmer won't get a subcategory of
 both Cs and Ds by accident, for the subcategory relations that are
 computed implicitly during joins are always *full* subcategory
 relations: the structure and semantic does not change; you only gain
 more knowledge allowing you to use better algorithms.

 > All of Sage is about modeling natural mathematical facts. Just
 > because you know Wedderburns theorem does not mean that everybody
 > who ends up implementing a ring knows it. And it certainly does not
 > mean that somebody who reads the code is going to expect that it is
 > magically applied behind the scenes. In fact, I claim that it is
 > quite astonishing when you encounter it for the first time.

 Good. I worked hard so that we could have this *pleasant* surprise :-)

 > And if I may quote
 > http://en.wikipedia.org/wiki/Principle_of_least_astonishment: "If a
 > necessary feature has a high astonishment factor, it may be
 > necessary to redesign the feature."

 Yes. And explicit is nice as well. But this is to be weighted against
 the DRY principle.

 Now, what is your point about:

 (1) The syntax for implementing an axiom

 (2) Deduction rules like Wedderburn's theorem

 (3) The whole axioms and join business

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