#5891: Categories for the working mathematics programmer
-------------------------------------+-------------------------------------
       Reporter:  nthiery            |        Owner:  nthiery
           Type:  enhancement        |       Status:  closed
       Priority:  major              |    Milestone:  sage-4.3
      Component:  categories         |   Resolution:  fixed
       Keywords:  categories         |    Merged in:  sage-4.3.alpha0
  parents                            |    Reviewers:  Robert Bradshaw,
        Authors:  Nicolas M.         |  Craig Citro, Florent Hivert, David
  ThiƩry, Teresa Gomez-Diaz          |  Kohel, David Roe, Anne Schilling,
Report Upstream:  N/A                |  William Stein, Javier Vengoroso
         Branch:                     |  Work issues:
   Dependencies:                     |       Commit:
                                     |     Stopgaps:
-------------------------------------+-------------------------------------
Description changed by nthiery:

Old description:

> This (series of) patch(es) extends the Sage category framework as a
> design pattern for organizing generic code.
>
> Latest version of the patches:
>
>    - [http://combinat.sagemath.org/patches/file/tip/categories-framework-
> nt.patch categories-framework-nt.patch]          (reviewer: David Roe;
> review essentially complete up to some doctests)
>    - [http://combinat.sagemath.org/patches/file/tip/categories-
> categories-nt.patch categories-categories-nt.patch]         (reviewer:
> Florent Hivert, Javier, David Kohel, Anne Schilling, ...) See
> CategoriesCategoriesReview
>    - [http://combinat.sagemath.org/patches/file/tip/categories-
> fixsagelib-nt.patch categories-fixsagelib-nt.patch]         (positive
> review: Robert Bradshaw)
>    updates to the sage library (import fixes, ...)
>    - [http://combinat.sagemath.org/patches/file/tip/categories-fix-
> combinat-nt.patch categories-fix-combinat-nt.patch]       (positive
> review: Florent)
>    - [http://combinat.sagemath.org/patches/file/tip/categories-
> numberfield_homset-nt.patch categories-numberfield_homset-nt.patch]
> (reviewer: William)
>    - [http://combinat.sagemath.org/patches/file/tip/categories-
> unpickle_backward_compatibility_aliases-nt.patch categories-
> unpickle_backward_compatibility_aliases-nt.patch] (positive review:
> Florent)
>
> Status and roadmap:
> http://trac.sagemath.org/sage_trac/wiki/CategoriesRoadMap

New description:

 This (series of) patch(es) extends the Sage category framework as a
 design pattern for organizing generic code.

 Latest version of the patches:

    - [http://combinat.sagemath.org/patches/file/tip/categories-framework-
 nt.patch categories-framework-nt.patch]          (reviewer: David Roe;
 review essentially complete up to some doctests)
    - [http://combinat.sagemath.org/patches/file/tip/categories-categories-
 nt.patch categories-categories-nt.patch]         (reviewer: Florent
 Hivert, Javier, David Kohel, Anne Schilling, ...) See
 CategoriesCategoriesReview
    - [http://combinat.sagemath.org/patches/file/tip/categories-fixsagelib-
 nt.patch categories-fixsagelib-nt.patch]         (positive review: Robert
 Bradshaw)
    updates to the sage library (import fixes, ...)
    - [http://combinat.sagemath.org/patches/file/tip/categories-fix-
 combinat-nt.patch categories-fix-combinat-nt.patch]       (positive
 review: Florent)
    - [http://combinat.sagemath.org/patches/file/tip/categories-
 numberfield_homset-nt.patch categories-numberfield_homset-nt.patch]
 (reviewer: William)
    - [http://combinat.sagemath.org/patches/file/tip/categories-
 unpickle_backward_compatibility_aliases-nt.patch categories-
 unpickle_backward_compatibility_aliases-nt.patch] (positive review:
 Florent)

 Status and roadmap:
 http://trac.sagemath.org/sage_trac/wiki/CategoriesRoadMap

 Some of the things done in this ticket:

 - Categories:
   - Infrastructure:
     - sage.categories.category (500 lines of code)
     - sage.structure.parent (100 lines of code)
     - class manipulation: (25 lines of code)
   - All the mathematical categories of Axiom and MuPAD (Courtesy of Teresa
 Gomez Diaz)
     (except *WithSeveralBases which are not needed anymore; see
 .abstract_category())
     See the category graph: attachment:sage-category-graph.pdf
   - (Infinite/Finite)EnumeratedSets (with example) (Courtesy of Florent
 Hivert)
   - Semigroups                      (with example, basic methods,
 subquotients)
   - FiniteSemigroups                (with example, cayley graphs, basic
 representation theory, ...)
   - ModulesWithBasis                (with example, morphisms)
   - HopfAlgebras & friends          (with a couple examples)
   - Cleanup:
     - Have unique representation by default (no need to inherit from
 Category_uniq)
     - Have construction / reduce by default
     - Can systematically use the idiom P in Rings()
   - Lattice structure (join, meet); meet needs cleanup; join and meet
     should be swapped.

 - Reorganization of the Sage library to start using the category
 framework:
   - Groups:
     - AbelianGroup_class.__init__ was missing a call to Groups.__init__
     - Support for Group.__init__(category = ...)
     - AbelianGroups was renamed to CommutativeAdditiveGroups (idem for
 Semigroups, ...)
       (note: AbelianGroup are about commutative multiplicative groups)
   - NumberFields: bug fix (categories-numberfield_homset-nt.patch):
     Hom(SomeNumberField,SomeVectorSpace) returned a numberfield homset
   - Fixed some import loops
   - Square MatrixSpace in Algebras(...)
   - Added temporary list() methods to:
     - FreeModule_generic
     - MatrixSpace_generic
     - Set_object_enumerated
     - ParentWithAdditiveAbelianGens
     - ParentWithMultiplicativeAbelianGens
     They should eventually be inherited from the EnumeratedSets() category
   - Added sage.sets.finite_enumerated_set
   - Naming conventions and cleanup:
     - parent.product(x,y)   parent.product    parent.product_on_basis
       (was: multiply, _multiply, multiply_basis, _multiply_basis)
     - parent.summation(x,y) parent.summation        # risk of confusion
 with infinite summation / ...

     - parent.sum ([x,y,z,y])
     - parent.prod([x,y,z,y])

     - parent.coproduct, parent.coproduct_on_basis,
 parent.coproduct_on_generators
     - parent.antipode, parent.antipode_on_basis,
 parent.antipode_on_generators
     - cat.example()  cat.counter_example()
     - A.one() A.zero() a.is_one() a.is_zero()   A(1) A(0) when it makes
 sense
       A.one_element() A.zero_element() deprecated in the doc; fully
 deprecated later
       Transitional aliases one = one_element, zero = zero_element
     - Use class.an_instance() whenever meaningful
     - parent.an_element() parent.some_elements(); possibly
 parent.example() parent.counterexample()
     - all_weakly_super_categories -> all_super_categories(proper=False)

--

--
Ticket URL: <http://trac.sagemath.org/ticket/5891#comment:30>
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 unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.

Reply via email to