#15150: Implement NCSym
------------------------------------+-----------------------------
       Reporter:  tscrim            |        Owner:  sage-combinat
           Type:  enhancement       |       Status:  needs_review
       Priority:  major             |    Milestone:  sage-5.13
      Component:  combinatorics     |   Resolution:
       Keywords:                    |    Merged in:
        Authors:  Travis Scrimshaw  |    Reviewers:
Report Upstream:  N/A               |  Work issues:
         Branch:                    |       Commit:
   Dependencies:  #15143, #15164    |     Stopgaps:
------------------------------------+-----------------------------

Comment (by tscrim):

 The method `_set_par_to_par` is needed because does a little bit more than
 just return the shape and is needed for the [inverse] coercion. The method
 `_set_par_to_par()` in effect takes a subset of set partitions which are
 in bijection with partitions and corresponds to leading terms in the
 coercion.

 With Mike's patch we have:
 {{{#!python
 sage: w = SymmetricFunctionsNonCommutingVariablesDual(QQ).w()
 sage: h = SymmetricFunctions(QQ).h()
 sage: h(w[[1,3],[2]])
 ---------------------------------------------------------------------------
 AssertionError                            Traceback (most recent call
 last)
 <ipython-input-3-5d0ec5476c79> in <module>()
 ----> 1 h(w[[Integer(1),Integer(3)],[Integer(2)]])

 /home/travis/sage-5.13.beta0/local/lib/python2.7/site-
 packages/sage/structure/parent.so in sage.structure.parent.Parent.__call__
 (sage/structure/parent.c:8372)()

 /home/travis/sage-5.13.beta0/local/lib/python2.7/site-
 packages/sage/categories/morphism.so in
 sage.categories.morphism.SetMorphism._call_
 (sage/categories/morphism.c:4837)()

 /home/travis/sage-5.13.beta0/local/lib/python2.7/site-
 packages/sage/categories/modules_with_basis.pyc in preimage(self, f)
    1715                     raise ValueError, "%s is not in the image of
 %s"%(f, self)
    1716             s = map(j_preimage)
 -> 1717             assert j == self._dominant_item(s)[0]
    1718
    1719             if not self._unitriangular:

 AssertionError:
 }}}
 While it shouldn't work, it is giving the wrong error.

 I've folded in your latest patch Mike, but reinstated `_set_par_to_par`
 with some documentation changes and some doctests. Hopefully it is more
 clear what it does, but perhaps the method could be renamed.

 > But it's in class NCSymBases(Category_realization_of_parent), not in
 some hypothetical class MultiplicativeNCSymBases(NCSymBases) right? Oooh,
 I see, this nevertheless means the multiplicative bases only, while all
 the others go through the NCSymBasis_abstract class. But IMHO this is
 confusing, and could be clarified at least in the class docstrings if not
 in the names of the classes...

 Not quite. We need the `NCSymBasis_abstract` class to overwrite the
 `_element_constructor_` from `Parent`. This is not a category object, and
 all bases inherit from this (as classes). The different categories are
 used as a slightly different type of abstraction, which includes (in a
 sense) a mathematical organization.

 I've also made the '''w''' basis inherit from `NCSymBasis_abstract`.

 For patchbot:

 Apply: trac_15150-ncsym-ts.patch

--
Ticket URL: <http://trac.sagemath.org/ticket/15150#comment:61>
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/groups/opt_out.

Reply via email to