Hi Mark!

On Tue, Mar 04, 2014 at 06:09:12PM -0500, Mark Shimozono wrote:
> I covet your thoughts on the following.
> 
> It seems mostly hopeless to implement tensor products for random modules
> since this involves infinitely many generators and infinitely many relations.
> Therefore I will limit this discussion to ModulesWithBasis(R) for R a 
> commutative ring with 1.

+1!

Just for the record: it's among Aladin's plans to implement tensor
products of the form V \tensor_A W where V and W are finite
dimensional modules with basis and A is a finite dimensional (or at
least finitely generated) algebra acting on V (on the right) and W (on
the left). With immediate application to compute induction of
modules. But it's an orthogonal feature.

> Right now the ring R is not in the category of ModulesWithBasis(R),
> so you can't tensor with it.
> Even though tensoring an R-module over R with R is isomorphic to
> doing nothing, it is desirable to be able to do this, for reasons given below.

I agree! And in the long run, it would be nice to be able to use the
tensor notation to extend the base ring. But that's another story.

> Therefore I propose that the category of ModulesWithBasis(R).TensorProducts()
> should supply a special object (the identity object in the category),
> implemented by a CombinatorialFreeModule over R with a single basis element.
> I suppose for AlgebrasWithBasis(R).TensorProducts()
> the same object would also know that it is an AlgebraWithBasis.

This could be a sensible approach.

Hmm, let's see, we would want every category to provide the relevant
methods for this object (like product_on_basis for
AlgebrasWithBasis). I guess we can live for now with a single class
implementing all the methods, and then we just specify in which
category the object lives depending on whether we start from
ModulesWithBasis, AlgebrasWithBasis, or ...

What would you use as index for the single basis element?

One issue: with the current implementation of tensor products, if O is
this object and V is a module with basis, the tensor product O \otimes
V will be isomorphic to V, but not equal; the index set will indeed
consist of the pairs (o,v) where o indexes the single basis element of
O and v runs from the indices for V. Do we want to "flatten" things
like we do for associativity? At this point I lean for yes, since we
do it for associativity. How do we detect when to flatten?

If we decide for flattening, and thus plan to have some code to handle
this special case, then maybe it would be simpler to take control
earlier on, and instead make a special case to directly handle R
\otimes V, without a need for introducing O in the first place.

>From a technical viewpoint, I would need to dig back in the code to
see how much work it would take in both cases, but I guess we are
better off taking the decision from a user interface point of view.

> This would allow (together with my tensor-of-maps construction)
> for the natural and easy construction of somewhat complicated morphisms.
> For example, lots of the maps occurring in Hopf algebra theory
> require the presence of R as an object with which to tensor.
> 
> Moreover, if certain structure maps (say for Hopf algebras) were required to 
> be
> module morphisms rather than trickly little functions,
> then it would be possible (in fact really easy) to do things like 
> automatically
> provide Hopf structure on a tensor product, easily cobble together
> TestSuites to check commutativity of complicated diagrams
> involving tensoring, etc.

Yes! I definitely would love to see progress in that direction. In
MuPAD-Combinat, we could do things like:

        > lra := LodayRoncoAlgebra():
        > idTensorAntipode := lra::p::id # lra::p::antipode:
        > checkAntipode := lra::p::mu @ idTensorAntipode @ lra::p::coproduct:

        > t := lra::p::one;
        > checkAntipode(t)

where `#` and `@` were the tensor product and composition operators,
and `::` was the analogue of `.` in Python.

That was made easier because in MuPAD one could specify the domain and
codomain of plain functions (like id, antipode, mu, coproduct), which
was a step toward making them into morphisms.

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 unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to