Changes between Version 10 and Version 12 of Ticket #5891


Ignore:
Timestamp:
05/16/09 07:32:31 (10 years ago)
Author:
nthiery
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #5891 – Description

    v10 v12  
    22design pattern for organizing generic code.
    33
    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