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

Reply via email to