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