| 15 | |
| 16 | Some of the things done in this ticket: |
| 17 | |
| 18 | - Categories: |
| 19 | - Infrastructure: |
| 20 | - sage.categories.category (500 lines of code) |
| 21 | - sage.structure.parent (100 lines of code) |
| 22 | - class manipulation: (25 lines of code) |
| 23 | - All the mathematical categories of Axiom and MuPAD (Courtesy of Teresa Gomez Diaz) |
| 24 | (except *WithSeveralBases which are not needed anymore; see .abstract_category()) |
| 25 | See the category graph: attachment:sage-category-graph.pdf |
| 26 | - (Infinite/Finite)EnumeratedSets (with example) (Courtesy of Florent Hivert) |
| 27 | - Semigroups (with example, basic methods, subquotients) |
| 28 | - FiniteSemigroups (with example, cayley graphs, basic representation theory, ...) |
| 29 | - ModulesWithBasis (with example, morphisms) |
| 30 | - HopfAlgebras & friends (with a couple examples) |
| 31 | - Cleanup: |
| 32 | - Have unique representation by default (no need to inherit from Category_uniq) |
| 33 | - Have construction / reduce by default |
| 34 | - Can systematically use the idiom P in Rings() |
| 35 | - Lattice structure (join, meet); meet needs cleanup; join and meet |
| 36 | should be swapped. |
| 37 | |
| 38 | - Reorganization of the Sage library to start using the category framework: |
| 39 | - Groups: |
| 40 | - AbelianGroup_class.__init__ was missing a call to Groups.__init__ |
| 41 | - Support for Group.__init__(category = ...) |
| 42 | - AbelianGroups was renamed to CommutativeAdditiveGroups (idem for Semigroups, ...) |
| 43 | (note: AbelianGroup are about commutative multiplicative groups) |
| 44 | - NumberFields: bug fix (categories-numberfield_homset-nt.patch): |
| 45 | Hom(SomeNumberField,SomeVectorSpace) returned a numberfield homset |
| 46 | - Fixed some import loops |
| 47 | - Square MatrixSpace in Algebras(...) |
| 48 | - Added temporary list() methods to: |
| 49 | - FreeModule_generic |
| 50 | - MatrixSpace_generic |
| 51 | - Set_object_enumerated |
| 52 | - ParentWithAdditiveAbelianGens |
| 53 | - ParentWithMultiplicativeAbelianGens |
| 54 | They should eventually be inherited from the EnumeratedSets() category |
| 55 | - Added sage.sets.finite_enumerated_set |
| 56 | - Naming conventions and cleanup: |
| 57 | - parent.product(x,y) parent.product parent.product_on_basis |
| 58 | (was: multiply, _multiply, multiply_basis, _multiply_basis) |
| 59 | - parent.summation(x,y) parent.summation # risk of confusion with infinite summation / ... |
| 60 | |
| 61 | - parent.sum ([x,y,z,y]) |
| 62 | - parent.prod([x,y,z,y]) |
| 63 | |
| 64 | - parent.coproduct, parent.coproduct_on_basis, parent.coproduct_on_generators |
| 65 | - parent.antipode, parent.antipode_on_basis, parent.antipode_on_generators |
| 66 | - cat.example() cat.counter_example() |
| 67 | - A.one() A.zero() a.is_one() a.is_zero() A(1) A(0) when it makes sense |
| 68 | A.one_element() A.zero_element() deprecated in the doc; fully deprecated later |
| 69 | Transitional aliases one = one_element, zero = zero_element |
| 70 | - Use class.an_instance() whenever meaningful |
| 71 | - parent.an_element() parent.some_elements(); possibly parent.example() parent.counterexample() |
| 72 | - all_weakly_super_categories -> all_super_categories(proper=False) |