#11935: Make parent/element classes independent of base rings
----------------------------------------------------------------+-----------
Reporter: SimonKing |
Owner: nthiery
Type: enhancement |
Status: needs_work
Priority: major |
Milestone: sage-4.8
Component: categories |
Keywords: parent class, element class, category
Work_issues: Fix doctest in covariant functorial construction |
Upstream: N/A
Reviewer: |
Author: Simon King
Merged: |
Dependencies: #9138 #11900 #11943
----------------------------------------------------------------+-----------
Comment(by nthiery):
Replying to [comment:21 SimonKing]:
> I think the following could be a solution:
>
> 1. Do not use optimization for `Category.parent_class`. Hence, the
default is the good old "pickle by construction" approach.
> 1. Add a specialised `JoinCategory.parent_class` that uses default
pickling of a dynamic class (which means: The class is uniquely determined
by the base classes). Rationale: A join category is uniquely determined by
its super categories, and thus it is consequent if the parent class of a
join category is uniquely determined by the parent classes of its super
categories.
> 1. Add a specialised `Category_over_base.parent_class` using the
optimization (O) discussed above, in the "weak pickling by construction"
abbroach. Rationale: It's the purpose of this ticket to make the parent
class independent of the base ring, and "weak pickling by construction"
seems the most stable option.
>
> Apparently, the problem with functorial constructions would vanish -
they use the non-optimized old parent_class. But we would get a speed-up
where we need it: Polynomial rings belong to a join category, and one
super category of that join category is a `Category_over_base`.
>
> Of course, the same should be done with the element_class.
This sounds very good.
Just a suggestion: in Category, you may want to put a lazy attribute
_parent_class_from_base_classes, so that the categories that want the
optimization (like Modules or Bimodules) can just do parent_class =
_parent_class_from_base_classes (same for element_class of course)
parent_class
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/11935#comment:23>
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 post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sage-trac?hl=en.