#17096: Implement categories for filtered algebras
-------------------------------------+-------------------------------------
       Reporter:  tscrim             |        Owner:  tscrim
           Type:  enhancement        |       Status:  needs_review
       Priority:  major              |    Milestone:  sage-6.4
      Component:  categories         |   Resolution:
       Keywords:  filtered algebras  |    Merged in:
        Authors:  Travis Scrimshaw   |    Reviewers:
Report Upstream:  N/A                |  Work issues:
         Branch:                     |       Commit:
  public/categories/filtered_algebras-17096|  
096538121130679a55b971d3d3a5626e94b157a5
   Dependencies:                     |     Stopgaps:
-------------------------------------+-------------------------------------

Comment (by tscrim):

 Replying to [comment:43 darij]:
 > Care to explain this? I'm still a newbie to memory handling, so I might
 be missing more of the context than you expect. My worry was that every
 time `A.graded_algebra()` is called (and it will be called a lot, say,
 from the `to_graded_conversion` and `projection` methods), a new instance
 of this algebra is created, which takes time and space and might require
 additional work to make these instances coerce to each other nicely (I
 guess they will do so themselves automatically, but e.g. their polynomial
 rings might not).

 See Nils comment for the memory. Short version is you get a reference loop
 `A -> grA` and `grA -> A` such that `A` is stored as a global strong
 reference (making it uncollectible). I opted to make the output of
 `graded_algebra` be a non-`cached_method` as the `UniqueRepresentation` of
 `AssociatedGradedAlgebra` will make sure it's extremely rarely (re)created
 (and because I need the filtered algebra to do the computations, so it has
 to be part of the construction data). As this will likely be what gets
 created, we don't have to worry about this (and most parents will end up
 being UR's). If the user creates a non-UR parent for the assoc. gr., then
 they have to override `graded_algebra` anyways and can make it a cached
 method.

 > Also, should I then explain in the doc that everybody who overshadows
 `graded_algebra` must also overshadow `projection`, `to_graded_conversion`
 and `from_graded_conversion`?

 I don't think these methods would need to be overwritten as they are
 completely generic.

 > Great -- as long as this magic doesn't force every algebra which happens
 to be filtered as a module to automatically be considered a filtered
 algebra.

 I think that gets into the issue (and is related with John's comment) with
 what do for filtrations in general. I want to use `degree` for the
 filtration parameter so we don't have to duplicate code, it's natural for
 graded modules/algebras, and which filtration component is not well-
 defined (most elements belong to multiple, possibly infinite, F,,i,,
 components). Overall, we will need a framework for construction of general
 filtrations, but I don't think we can do that at the category level. What
 will probably be best (a quick thought) is to have a method `filtration`
 which returns the filtration of the module/algebra as a `Family` of
 submodules indexed by `I`. However we will still need a method `degree` to
 be computationally quick. This would allow filtrations different from the
 grading in a way and perhaps we could add a method to the graded
 categories such as `filtration_degree` which by default returns the usual
 degree. Anyways, I think about more later.

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