Hi Jason!

On Wed, Sep 09, 2009 at 08:42:17AM -0400, Jason Bandlow wrote:
> > If you notice parts which feel clumsy (you will!), or have suggestions
> > for improvements, please take good notes of them. But don't implement
> > them right away, or only in a separate experiment. Instead, we should
> > discuss them and update systematically all the algebras according to
> > the outcome of the discussion.
> 
> I'll admit that I have only sat down once to really think about this
> since Sage days.  (Since classes start today, it will be at least a few
> weeks before I get to do this again.)  

Ok. Classes just started for me as wel ...

> But I will say what I got stuck on--that was the technical details
> of using Singular rings when we can.  In other words the 'usual'
> basis for multivariate polynomials in n variables is indexed by
> compositions of length n, with (a1, a2, ..., an) corresponding to
> x1^a1 ... xn^an.  This should be relatively straightforward to
> implement in a slow way, but I think we want to take advantage of
> Singular.  That is, multiplication should convert to Sage's
> polynomial ring, multiply there, and then convert back.  I can't
> remember the details, but I remember I found this tricky.
> Anyway, the point is that this is an implementation detail which does
> not show up in NCSF, so any advice from the master (Nicolas) will be
> appreciated, I'm sure, even if it is Adrien and not I who ends up using it.

If at all possible I would recommend using directly Sage's polynomial
ring (whose elements are indeed implemented in Singular), rather than
creating a new one. So now, we need to list the obstacles:

 (1) All the following should return True (they currently don't)
     sage: QQ['x,y,z'] in Algebras(QQ)
     sage: QQ['x,y,z'] in ModulesWithBasis(QQ)
     sage: QQ['x,y,z'] in GradedHopfAlgebrasWithWithBasis(QQ)

 (2) The implementation of QQ['x,y,z'] should fulfill the
     corresponding promises. In particular, the parent should know
     that the basis is indexed by integer vectors, and have all the
     methods like term, monomial, ...; the elements should have all
     the appropriate accessors.

     I hope there won't be conflicts with preexisting methods!

 (3) The parent should inherit from the category code.
     sage: QQ['x,y,z'](1).__class__.mro()
     ... 
     <class 'sage.categories.algebras.Algebras.parent_class'>,
     ...

     For the elements, this will require another category feature: the
     inheritance from category for Cython class. There is not
     theoretical problem (there is a proof of concept in the
     examples), but this has not yet been streamlined. Hopefuly, we
     won't need this right away.
     

Please create a ticket, and add anything else you may stumble upon.

Btw: the same thing should be done to make FreeModule an object of
FiniteDimensionalModulesWithBasis(). Volunteers?

Cheers,
                                Nicolas
--
Nicolas M. ThiƩry "Isil" <nthi...@users.sf.net>
http://Nicolas.Thiery.name/

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sage-combinat-devel" group.
To post to this group, send email to sage-combinat-devel@googlegroups.com
To unsubscribe from this group, send email to 
sage-combinat-devel+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sage-combinat-devel?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to