#16340: Infrastructure for modelling full subcategories
-------------------------------------+-------------------------------------
Reporter: nthiery | Owner:
Type: enhancement | Status: needs_review
Priority: major | Milestone: sage-6.4
Component: categories | Resolution:
Keywords: full | Merged in:
subcategories, homset | Reviewers: Darij Grinberg,
Authors: Nicolas M. ThiƩry | Travis Scrimshaw
Report Upstream: N/A | Work issues:
Branch: | Commit:
public/categories/full_subcategories-16340|
d4c7a88563a397291b6cd5ddadb8f574cc1eedb5
Dependencies: | Stopgaps:
-------------------------------------+-------------------------------------
Comment (by pbruin):
Replying to [comment:38 nthiery]:
> Replying to [comment:36 pbruin]:
> > This actually strengthens my conviction that "structure category" is
> > not a well-defined notion.
>
> It's perfectly defined: C is a structure category if whenever A and B
> are in C and phi is a morphism between A and B for any strict super
> category of `C`, then phi is a `C` morphism. And it coincides with the
> intuition we have of it: does `C` define some additional structure
> (typically an operation) that has to be preserved by `C`-morphisms.
OK, but what I meant is that this notion depends on what supercategories
of `C` have been defined, not just on `C` itself.
> > In this example, it depends on how you define `Rings()`: either as
> > `Rngs() & Semigroups().Unital()`, in which case it is just a join of
> > categories without new structure, _or_ as `Rngs().Unital()`, in which
> > it does have extra structure (at least at first sight; you have to
> > know that the category code magically rearranges the construction to
> > turn `Rngs().Unital()` into a join of larger categories). In fact,
> > `Semigroups().Unital()` (= `Monoids()`) is not a structure category
> > either; it is the join of `Magmas().Unital()` and `Semigroups()`.
>
> I don't see why `Rngs().Unital()` should suggest it's a structure
> category. `A.Unital()` is never a structure category unless `A` is the
> category defining `Unital`. That is `A=Magmas()`.
Certainly, but this relies on the the implementation choice of defining
`Magmas().Unital()`. I admit this may be a slightly silly example, but I
could imagine a different scenario where the person implementing these
categories did not think anyone would need unital magmas, and hence chose
to define `Unital()` relative to a more specific category, which in an
extreme case could be `Rngs()`. In that case `Rings() = Rngs().Unital()`
would have been a structure category, while being mathematically exactly
the same as the actual `Rings()`.
> > I don't see why this should necessarily be the case; we would just
> > encode for each direct supercategory (of which there are usually
> > just one or two) whether it is a full supercategory.
>
> Well, I tried, and the code stunk with duplication, urging me to do it
> differently :-) Feel free to try for yourself.
I wish I had the time, but given that I don't, the best I can do is to
just add my perspective as a non-developer but potential user of the
category framework...
> > This makes computing all full supercategories not any slower (and
> > probably faster) than computing all supercategories,
>
> Yup.
>
> > or presumably all "structure supercategories" for that matter.
>
> Possibly so. There are few structure supercategories so that's rather
> cheap too.
But to find them I assume one needs to traverse all supercategories and
pick out the ones that are structure supercategories, so the time would
still depend on the number of all supercategories, or am I mistaken?
--
Ticket URL: <http://trac.sagemath.org/ticket/16340#comment:40>
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.