Changes between Version 1 and Version 4 of Ticket #5891
 Timestamp:
 05/14/09 21:24:13 (11 years ago)
Legend:
 Unmodified
 Added
 Removed
 Modified

Ticket #5891
 Property Cc roed saliola added

Ticket #5891 – Description
v1 v4 2 2 design pattern for organizing generic code. 3 3 4 Under development on http://combinat.sagemath.org/patches: 4 (with special thanks to Robert Bradshaw, Mike Hansen, Florent Hivert, 5 William Stein, ... for design discussions). 5 6 6  categoriesnt.patch: the category framework itself 7 + updates to combinatorial free modules (will be split before submission) 7 Under development on combinat.sagemath.org/patches: 8 8 9 Related patches (will need to be applied to recover all previous functionalities): 9  categoriesnt.patch: 10 the category framework itself 11 + updates to the sage library (import fixes, ... see below) 12 + updates to combinatorial free modules (will be split before submission) 13 14 Related patches (will need to be applied after to recover 100% doctest pass): 15  categoriescombinatnt.patch 16  categoriesnumberfield_homsetnt.patch 10 17  family_enumsetfh.patch 11 18  enumset_unionsfh.patch 12 19  categoriessfnt.patch Symmetric functions 20  categoriessymmetric_group_algebrant.patch 13 21  ncsfnt.patch Non commutative Symmetric Functions 14 22  root_systems4326nt.patch 15 23 16 Small technical patches they depend on: 24 Small technical patches the category patch depends on: 25  cached_in_parent_method5449submitted.patch 26  lazy_attributesfixes5783final.patch 17 27  unique_representation5120submitted.patch 18  lazy_attributesfixes5783final.patch 19  element_wrappernt.patch 28  element_wrapper5967submitted.patch 29  parentelement_constructorfix5979submitted.patch 30  explainpicklev1.patch 31  cPickle5985importsubmitted.patch 32  cPickle5985copy_reg_classessubmitted.patch 33  cPickle5986nestedclassessubmitted.patch 34  dynamic_class5991submitted.patch 20 35  5598coercedeclare.patch 21  cached_in_parent_method5449.new 22  explainpicklev1.patch 23  cPicklecopy_reg_classesnt.patch 24  cPicklenestedclassesnt.patch 25  dynamic_classnt.patch 26  compositionscleanup5600nt.patch 27  transitive_idealnt.patch 28 36  explainpicklev1.patch # probably can get rid of this dependency 37  transitive_ideal6000submitted.patch 29 38 30 39 Current status: 40 * All test pass except for: 41 sage t "devel/sage/sage/geometry/lattice_polytope.py" (apparently caused by categories, though I don't see how) 42 sage t "devel/sage/sage/structure/sage_object.pyx" (unpickling of old stuff) 31 43 32 44 * Documentation: … … 42 54 43 55 * Categories: 44  All the mathematical categories of Axiom and MuPAD 45  EnumeratedSets (with example)46  Semigroups (with example, basic methods, subquotients)47  FiniteSemigroups (with example, cayley graphs, basic representation theory, ...)48  ModulesWithBasis (with example, morphisms)49  HopfAlgebras & friends (with example)56  All the mathematical categories of Axiom and MuPAD (Courtesy of Teresa Gomez Diaz) 57  (Infinite/Finite)EnumeratedSets (with example) (Courtesy of Florent Hivert) 58  Semigroups (with example, basic methods, subquotients) 59  FiniteSemigroups (with example, cayley graphs, basic representation theory, ...) 60  ModulesWithBasis (with example, morphisms) 61  HopfAlgebras & friends (with example) 50 62  Cleanup: 51 63  Have unique representation by default (no need to inherit from Category_uniq) … … 64 76  Adds morphisms for some categories 65 77  Some general infrastructure 78  Hom: 79  Simplification of the logic. Hopefuly completely compatible. 80  X._Hom_(Y, category) may now return NotImplemented 81  failed attempt at using cached_function (to be pursued) 82  Systematic use of category = ... instead of cat = 83 This may be backward incompatible. 66 84 67 85 * Generic test framework 68 86  Functional, final design clear, needs cleanup (2/3 hours) 69 87 70 * Combinatorial free modules71 * Have unique representation72 73 88 * Reorganization of the Sage library to start using the category framework: 89 * Combinatorial free modules 90 * Have unique representation, use coercion, are more robust 91 * Improved _repr_ 92 * Handle combinatorial classes that can't be sorted as indices 93 * Groups: 94 * AbelianGroup_class.__init__ was missing a call to Groups.__init__ 95 * NAME CONFLICT: AbelianGroups are *not* in AbelianGroups() 96 With the current conventions: 97  AbelianGroups is about additive abelian groups 98  AbelianGroup is about multiplicative abelian group 99 * Support for Group.__init__(category = ...) 74 100 * Fixed some import loops 75 101 * Added temporary list() methods to: … … 80 106  ParentWithMultiplicativeAbelianGens 81 107 They should eventually be inherited from the EnumeratedSets() category 82 * ...108 * Added sage.sets.finite_enumerated_set 83 109 84 110 * Todo: … … 95 121 * class.an_instance() ? 96 122 * all_weakly_super_categories > ? 123 * move all examples in examples/ 124 * AbelianGroups() versus CommutativeGroups() 125 97 126 * Category graph picture 98 127 … … 112 141 * Discussion: 113 142 * Defining new inline operators, at least within the sage interpreter 143