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