#15801: Categories over a base ring category
-------------------------------------+-------------------------------------
       Reporter:  nthiery            |        Owner:
           Type:  enhancement        |       Status:  new
       Priority:  major              |    Milestone:  sage-6.2
      Component:  categories         |   Resolution:
       Keywords:                     |    Merged in:
        Authors:                     |    Reviewers:
Report Upstream:  N/A                |  Work issues:
         Branch:                     |       Commit:
  public/categories/over-a-base-     |  12afbe46ebafe56cf74661bb6d5ea81af583ba83
  ring-category-15801                |     Stopgaps:
   Dependencies:  #10963             |
-------------------------------------+-------------------------------------

Old description:

> Currently, to construct a category of algebras, we need to specify the
> base ring:
> {{{
>     sage: Algebras(QQ)
> }}}
>
> A side effect is that the construction of e.g. {{{GF(p)['x']}}} for a
> lot of `p`'s in number theoretic calculations triggers the
> construction of many parallel hierarchies of categories.
>
> This is a waste because in most situations only the category of the
> base ring is relevant. In particular, the generic code provided to
> parents/elements/... only depends on the latter.
>
> The purpose of this ticket is to allow for only specifying the
> category of the base ring, as in:
> {{{
>     sage: Algebras(Fields())
> }}}
> with
> {{{
>     sage: Algebras(QQ)
> }}}
> constructing a subcategory of the former. Then go trough the code,
> decide in each case whether we want to use {{{Algebras(QQ)}} or
> {{{Algebras(Fields())}}}, and update the doctests accordingly. In most
> case, the latter idiom will be preferable, unless we need some
> operation on the category itself.
>
> This would fix the regression noted on #15792 and made worse by
> #10963.
>
> Further features for this ticket or follow-up tickets would be to:
>
> - make {{{Modules(...)}}} into a covariant functorial
>   constructions. This would give a proper framework for the feature
>   {{{Modules(QQ)}}} -> {{{VectorSpaces(QQ)}}} instead of having to
>   tackle it with a special hack.
>
> - implement a {{{PolynomialRings(...)}}}  covariant functorial
>   construction.

New description:

 Currently, to construct a category of algebras, we need to specify the
 base ring:
 {{{
     sage: Algebras(QQ)
 }}}

 A side effect is that the construction of e.g. {{{GF(p)['x']}}} for a
 lot of `p`'s in number theoretic calculations triggers the
 construction of many parallel hierarchies of categories.

 This is a waste because in most situations only the category of the
 base ring is relevant. In particular, the generic code provided to
 parents/elements/... only depends on the latter.

 The purpose of this ticket is to allow for only specifying the
 category of the base ring, as in:
 {{{
     sage: Algebras(Fields())
 }}}
 with
 {{{
     sage: Algebras(QQ)
 }}}
 constructing a subcategory of the former. Then go trough the code,
 decide in each case whether we want to use {{{Algebras(QQ)}}} or
 {{{Algebras(Fields())}}}, and update the doctests accordingly. In most
 case, the latter idiom will be preferable, unless we need some
 operation on the category itself.

 This would fix the regression noted on #15792 and made worse by
 #10963.

 Further features for this ticket or follow-up tickets would be to:

 - make {{{Modules(...)}}} into a covariant functorial
   constructions. This would give a proper framework for the feature
   {{{Modules(QQ)}}} -> {{{VectorSpaces(QQ)}}} instead of having to
   tackle it with a special hack.

 - implement a {{{PolynomialRings(...)}}}  covariant functorial
   construction.

--

Comment (by tscrim):

 So `Algebras(Rings())` would cover any algebra (well...any assoc & unital
 algebra)?

 Also I think we should not loose support for having the category of
 algebras over a fixed base ring. For example, given two representations
 `V`, `W` of a group algebra `RG` over `R`, the morphisms from `V` to `W`
 as `RG`-modules is (significantly) smaller than the morphisms as
 `R`-modules. Currently our set of morphisms depends on the category, which
 if we keep the current setup, would give that `Hom(V, W, Modules(RG)) is
 Hom(V, W, Modules(R))` (well, maybe only `==`).

 Actually...`RG` would be the category of group algebras whereas `R` would
 be in the category of rings, unless `R` was also the group algebra of some
 other group (okay, it's very contrived, but possible). My point is that
 just passing the category into `Modules` doesn't always tell us the full
 structure (of the homset), and is there some way we can work around this?

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