4 | | (with special thanks to Robert Bradshaw, Mike Hansen, Florent Hivert, |
5 | | William Stein, ... for design discussions). |
6 | | |
7 | | The latest version of the patches are available from: |
8 | | http://combinat.sagemath.org/patches/file/ |
9 | | |
10 | | Main patch: |
11 | | |
12 | | - #5891: categories-nt.patch: |
13 | | the category framework itself |
14 | | + updates to the sage library (import fixes, ... see below) |
15 | | + updates to combinatorial free modules (will be split before submission) |
16 | | |
17 | | Related patches (will need to be applied after to recover 100% doctest pass): |
18 | | - categories-combinat-nt.patch |
19 | | - categories-numberfield_homset-nt.patch |
20 | | - family_enumset-fh.patch |
21 | | - enumset_unions-fh.patch |
22 | | - categories-sf-nt.patch Symmetric functions |
23 | | - categories-symmetric_group_algebra-nt.patch |
24 | | - ncsf-nt.patch Non commutative Symmetric Functions |
25 | | - #4326: root_systems-4326-nt.patch |
26 | | |
27 | | Small technical patches the category patch depends on: |
28 | | - #5449: cached_in_parent_method-5449-submitted.patch |
29 | | - #5783: lazy_attributes-fixes-5783-final.patch |
30 | | - #5120: unique_representation-5120-submitted.patch |
31 | | - #5967: element_wrapper-5967-submitted.patch |
32 | | - #5979: parent-element_constructor-fix-5979-submitted.patch |
33 | | - #5985: cPickle-5985-import-submitted.patch, cPickle-5985-copy_reg_classes-submitted.patch |
34 | | - #5986: cPickle-5986-nested-classes-submitted.patch |
35 | | - #5991: dynamic_class-5991-submitted.patch |
36 | | - #5598: 5598-coerce-declare.patch |
37 | | - #5483: explain-pickle-v1.patch # probably can get rid of this dependency |
38 | | - #6000: transitive_ideal-6000-submitted.patch |
39 | | |
40 | | Current status: |
41 | | |
42 | | - All test pass except for: |
43 | | - sage -t "devel/sage/sage/geometry/lattice_polytope.py" (apparently caused by categories, though I don't see how) |
44 | | - sage -t "devel/sage/sage/structure/sage_object.pyx" (unpickling of old stuff) |
45 | | |
46 | | - Documentation: |
47 | | - sage.categories? Category quickref card |
48 | | - sage.categories.primer? Element/Parent/Category primer (in writing) |
49 | | - Category? Technical background on categories |
50 | | - Semigroups().example()?? A template of semigroup |
51 | | - See also the discussion on sage-devel in November 2009: |
52 | | - http://groups.google.com/group/sage-devel/msg/d4065154e2e8cbd9 |
53 | | |
54 | | - Real life applications: |
55 | | see related patches, automatic monoids, ... |
56 | | |
57 | | - Categories: |
58 | | - All the mathematical categories of Axiom and MuPAD (Courtesy of Teresa Gomez Diaz) |
59 | | - (Infinite/Finite)EnumeratedSets (with example) (Courtesy of Florent Hivert) |
60 | | - Semigroups (with example, basic methods, subquotients) |
61 | | - FiniteSemigroups (with example, cayley graphs, basic representation theory, ...) |
62 | | - ModulesWithBasis (with example, morphisms) |
63 | | - HopfAlgebras & friends (with example) |
64 | | - Cleanup: |
65 | | - Have unique representation by default (no need to inherit from Category_uniq) |
66 | | - Have construction / reduce by default |
67 | | |
68 | | - Functorial constructions: |
69 | | - direct sum |
70 | | - tensor product |
71 | | - cartesian product (todo) |
72 | | - dual (in progress) |
73 | | - subquotient, subset, quotient (in progress) |
74 | | - isomorphism type (todo) |
75 | | |
76 | | - Homomorphisms |
77 | | - Integrates with current sage morphisms |
78 | | - Adds morphisms for some categories |
79 | | - Some general infrastructure |
80 | | - Hom: |
81 | | - Simplification of the logic. Hopefuly completely compatible. |
82 | | - X._Hom_(Y, category) may now return NotImplemented |
83 | | - failed attempt at using cached_function (to be pursued) |
84 | | - Systematic use of category = ... instead of cat = |
85 | | This may be backward incompatible. |
86 | | |
87 | | - Generic test framework |
88 | | - Functional, final design clear, needs cleanup (2/3 hours) |
89 | | |
90 | | - Reorganization of the Sage library to start using the category framework: |
91 | | * Combinatorial free modules |
92 | | * Have unique representation, use coercion, are more robust |
93 | | * Improved _repr_ |
94 | | * Handle combinatorial classes that can't be sorted as indices |
95 | | * Groups: |
96 | | * AbelianGroup_class.__init__ was missing a call to Groups.__init__ |
97 | | * NAME CONFLICT: AbelianGroups are *not* in AbelianGroups() |
98 | | With the current conventions: |
99 | | - AbelianGroups is about additive abelian groups |
100 | | - AbelianGroup is about multiplicative abelian group |
101 | | * Support for Group.__init__(category = ...) |
102 | | * Fixed some import loops |
103 | | * Added temporary list() methods to: |
104 | | - FreeModule_generic |
105 | | - MatrixSpace_generic |
106 | | - Set_object_enumerated |
107 | | - ParentWithAdditiveAbelianGens |
108 | | - ParentWithMultiplicativeAbelianGens |
109 | | They should eventually be inherited from the EnumeratedSets() category |
110 | | * Added sage.sets.finite_enumerated_set |
111 | | |
112 | | - Todo: |
113 | | * Naming cleanup: |
114 | | * Parent -> ParentMethods (or _ParentMethods? or ?) |
115 | | * Element -> ElementMethods + move them as a nested class of ParentMethods |
116 | | * super_categories should be a method |
117 | | * zero, one should be methods |
118 | | * standardize the names: mult / product / multiplication / multiply? |
119 | | * check -> test |
120 | | * self.tester(**keywords) |
121 | | * intrusive cat.tensor_category / ... |
122 | | * cat.example() -> /an_example/an_object/... ? |
123 | | * class.an_instance() ? |
124 | | * all_weakly_super_categories -> ? |
125 | | * move all examples in examples/ |
126 | | * AbelianGroups() versus CommutativeGroups() |
127 | | |
128 | | * Category graph picture |
129 | | |
130 | | * Fixes: |
131 | | * Pickling: essentially works; polish the remaining |
132 | | * Integration in the Sage library: some tests are broken. Help welcome! |
133 | | * Pickling from old sage: technically feasible. Need help! |
134 | | * Inheritance from category for Cython classes: technically feasible. Need help! |
135 | | |
136 | | * Hom is *not* a functorial construction, the design and user |
137 | | interface needs to be discussed |
138 | | |
139 | | * Support for multivariate morphims, i.e. morphisms A x B -> C where |
140 | | the specializations A x b -> C are morphisms for a given category |
141 | | and a x B -> C are morphisms for a possibly different category |
142 | | |
143 | | - Discussion: |
144 | | * Defining new inline operators, at least within the sage interpreter |
145 | | |
| 4 | - Latest version of the patches: http://combinat.sagemath.org/patches/file/ |
| 5 | - Status and roadmap: http://sagetrac.org/sage_trac/wiki/CategoriesRoadMap |