#5891: Categories for the working mathematics programmer
-------------------------+--------------------------------------------------
Reporter: nthiery | Owner: nthiery
Type: enhancement | Status: new
Priority: major | Milestone: sage-combinat
Component: misc | Keywords: categories parents
-------------------------+--------------------------------------------------
Description changed by nthiery:
Old description:
> This (series of) patch(es) extends the Sage category framework as a
> design pattern for organizing generic code.
>
> Under development on combinat.sagemath.org/patches:
>
> - categories-nt.patch: the category framework itself
> + updates to combinatorial free modules (will be
> split before submission)
>
> Related patches (will need to be applied to recover all previous
> functionalities):
> - family_enumset-fh.patch
> - enumset_unions-fh.patch
> - categories-sf-nt.patch Symmetric functions
> - ncsf-nt.patch Non commutative Symmetric Functions
> - root_systems-4326-nt.patch
>
> Small technical patches they depend on:
> - unique_representation-5120-submitted.patch
> - lazy_attributes-fixes-5783-final.patch
> - element_wrapper-nt.patch
> - 5598-coerce-declare.patch
> - cached_in_parent_method-5449.new
> - explain-pickle-v1.patch
> - cPickle-copy_reg_classes-nt.patch
> - cPickle-nested-classes-nt.patch
> - dynamic_class-nt.patch
> - compositions-cleanup-5600-nt.patch
> - transitive_ideal-nt.patch
>
> Current status:
>
> * Documentation:
> sage.categories? Category quickref card
> sage.categories.primer? Element/Parent/Category primer (in writing)
> Category? Technical background on categories
> Semigroups().example()?? A template of semigroup
> See also the discussion on sage-devel in November 2009:
> http://groups.google.com/group/sage-devel/msg/d4065154e2e8cbd9
>
> * Real life applications:
> see related patches, automatic monoids, ...
>
> * Categories:
> - All the mathematical categories of Axiom and MuPAD
> - EnumeratedSets (with example)
> - Semigroups (with example, basic methods, subquotients)
> - FiniteSemigroups (with example, cayley graphs, basic
> representation theory, ...)
> - ModulesWithBasis (with example, morphisms)
> - HopfAlgebras & friends (with example)
> - Cleanup:
> - Have unique representation by default (no need to inherit from
> Category_uniq)
> - Have construction / reduce by default
>
> * Functorial constructions:
> - direct sum
> - tensor product
> - cartesian product (todo)
> - dual (in progress)
> - subquotient, subset, quotient (in progress)
> - isomorphism type (todo)
>
> * Homomorphisms
> - Integrates with current sage morphisms
> - Adds morphisms for some categories
> - Some general infrastructure
>
> * Generic test framework
> - Functional, final design clear, needs cleanup (2/3 hours)
>
> * Combinatorial free modules
> * Have unique representation
>
> * Reorganization of the Sage library to start using the category
> framework:
> * Fixed some import loops
> * Added temporary list() methods to:
> - FreeModule_generic
> - MatrixSpace_generic
> - Set_object_enumerated
> - ParentWithAdditiveAbelianGens
> - ParentWithMultiplicativeAbelianGens
> They should eventually be inherited from the EnumeratedSets()
> category
> * ...
>
> * Todo:
> * Naming cleanup:
> * Parent -> ParentMethods (or _ParentMethods? or ?)
> * Element -> ElementMethods + move them as a nested class of
> ParentMethods
> * super_categories should be a method
> * zero, one should be methods
> * standardize the names: mult / product / multiplication / multiply?
> * check -> test
> * self.tester(**keywords)
> * intrusive cat.tensor_category / ...
> * cat.example() -> /an_example/an_object/... ?
> * class.an_instance() ?
> * all_weakly_super_categories -> ?
> * Category graph picture
>
> * Fixes:
> * Pickling: essentially works; polish the remaining
> * Integration in the Sage library: some tests are broken. Help
> welcome!
> * Pickling from old sage: technically feasible. Need help!
> * Inheritance from category for Cython classes: technically feasible.
> Need help!
>
> * Hom is *not* a functorial construction, the design and user
> interface needs to be discussed
>
> * Support for multivariate morphims, i.e. morphisms A x B -> C where
> the specializations A x b -> C are morphisms for a given category
> and a x B -> C are morphisms for a possibly different category
>
> * Discussion:
> * Defining new inline operators, at least within the sage interpreter
New description:
This (series of) patch(es) extends the Sage category framework as a
design pattern for organizing generic code.
Under development on http://combinat.sagemath.org/patches:
- categories-nt.patch: the category framework itself
+ updates to combinatorial free modules (will be
split before submission)
Related patches (will need to be applied to recover all previous
functionalities):
- family_enumset-fh.patch
- enumset_unions-fh.patch
- categories-sf-nt.patch Symmetric functions
- ncsf-nt.patch Non commutative Symmetric Functions
- root_systems-4326-nt.patch
Small technical patches they depend on:
- unique_representation-5120-submitted.patch
- lazy_attributes-fixes-5783-final.patch
- element_wrapper-nt.patch
- 5598-coerce-declare.patch
- cached_in_parent_method-5449.new
- explain-pickle-v1.patch
- cPickle-copy_reg_classes-nt.patch
- cPickle-nested-classes-nt.patch
- dynamic_class-nt.patch
- compositions-cleanup-5600-nt.patch
- transitive_ideal-nt.patch
Current status:
* Documentation:
sage.categories? Category quickref card
sage.categories.primer? Element/Parent/Category primer (in writing)
Category? Technical background on categories
Semigroups().example()?? A template of semigroup
See also the discussion on sage-devel in November 2009:
http://groups.google.com/group/sage-devel/msg/d4065154e2e8cbd9
* Real life applications:
see related patches, automatic monoids, ...
* Categories:
- All the mathematical categories of Axiom and MuPAD
- EnumeratedSets (with example)
- Semigroups (with example, basic methods, subquotients)
- FiniteSemigroups (with example, cayley graphs, basic
representation theory, ...)
- ModulesWithBasis (with example, morphisms)
- HopfAlgebras & friends (with example)
- Cleanup:
- Have unique representation by default (no need to inherit from
Category_uniq)
- Have construction / reduce by default
* Functorial constructions:
- direct sum
- tensor product
- cartesian product (todo)
- dual (in progress)
- subquotient, subset, quotient (in progress)
- isomorphism type (todo)
* Homomorphisms
- Integrates with current sage morphisms
- Adds morphisms for some categories
- Some general infrastructure
* Generic test framework
- Functional, final design clear, needs cleanup (2/3 hours)
* Combinatorial free modules
* Have unique representation
* Reorganization of the Sage library to start using the category
framework:
* Fixed some import loops
* Added temporary list() methods to:
- FreeModule_generic
- MatrixSpace_generic
- Set_object_enumerated
- ParentWithAdditiveAbelianGens
- ParentWithMultiplicativeAbelianGens
They should eventually be inherited from the EnumeratedSets() category
* ...
* Todo:
* Naming cleanup:
* Parent -> ParentMethods (or _ParentMethods? or ?)
* Element -> ElementMethods + move them as a nested class of
ParentMethods
* super_categories should be a method
* zero, one should be methods
* standardize the names: mult / product / multiplication / multiply?
* check -> test
* self.tester(**keywords)
* intrusive cat.tensor_category / ...
* cat.example() -> /an_example/an_object/... ?
* class.an_instance() ?
* all_weakly_super_categories -> ?
* Category graph picture
* Fixes:
* Pickling: essentially works; polish the remaining
* Integration in the Sage library: some tests are broken. Help
welcome!
* Pickling from old sage: technically feasible. Need help!
* Inheritance from category for Cython classes: technically feasible.
Need help!
* Hom is *not* a functorial construction, the design and user
interface needs to be discussed
* Support for multivariate morphims, i.e. morphisms A x B -> C where
the specializations A x b -> C are morphisms for a given category
and a x B -> C are morphisms for a possibly different category
* Discussion:
* Defining new inline operators, at least within the sage interpreter
--
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/5891#comment:1>
Sage <http://sagemath.org/>
Sage - Open Source Mathematical Software: Building the Car Instead of
Reinventing the Wheel
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sage-trac?hl=en
-~----------~----~----~----~------~----~------~--~---