Re: [sage-combinat-devel] Constructing homs

2012-12-04 Thread Nicolas M. Thiery
Hi Andrew,

On Tue, Dec 04, 2012 at 05:56:31AM -0800, Andrew Mathas wrote:
>Good morning! I have been trolling through the manuals trying to
>understand how to construct a basis for a hom-space but I keep going
>around in circles. Can anyone help me out?
> 
>I have two CombinatorialFreeModules G and H which are modules for some
>algebra A. (The algebra A is not implemented in sage, although its action
>on G and H is.) The module G is cyclic, generated by z say, so every
>homomorphism f:G->H is determined by f(z). The basis of G takes the form
>{G(t) = z.psi( t )}, where t runs through a set of tableaux. (In case you
>are interested, G and H are Specht modules.) That is, the psi method tells
>me how to write G(t)=z*\phi_t so that f(G(t))=f(z).psi(t) as H also has a
>psi method.
> 
>I can construct a set of elements {h_1,...,h_d} in H such that the maps
>{f_1,,f_d} determined by f_i(z)=h_i, for 1\le i\le d, is a basis for
>Hom_A(G,H).
> 
>My questions are: how do I construct the maps f_i in sage and how do I
>tell sage that these maps are a basis of Hom_A(G,H)?

In short:

- For constructing the maps, you can use G.module_morphism. Not that
  this will only take care of linearity w.r.t. the ground ring. You
  currently have to handle by hand the fact that its a module over A.

- The vector space structure on Hom_A(G,H) (and on Hom_K(G,H) for that
  matter) is not yet implemented for G and H CombinatorialFreeModules,
  in particular arithmetic on morphisms and such. Note that it is
  implemented for Hom_K(G,H) for G,H FreeModules.

  In theory, the category infrastructure should make it easy to
  implement such homsets, but in practice the infrastructure is
  lagging behind (you know who to blame ...). In the mean time, I
  guess the closest you can get it to build some isomorphic vector
  space, and a map building morphisms from elements of this vector
  space.

Cheers,
Nicolas
--
Nicolas M. Thiéry "Isil" 
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.



Re: [sage-combinat-devel] Constructing homs

2012-12-04 Thread Andrew Mathas
Thanks Nicolas. I appreciate your efforts in putting the category framework 
in place! It's beginning to grow on me:) Depending how far my explorations 
go I may end up adding some of the missing pieces...

A.

-- 
You received this message because you are subscribed to the Google Groups 
"sage-combinat-devel" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sage-combinat-devel/-/5wsvHl8VwcYJ.
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.



Re: [sage-combinat-devel] Constructing homs

2012-12-05 Thread Nicolas M. Thiery
On Tue, Dec 04, 2012 at 08:00:57PM -0800, Andrew Mathas wrote:
>Thanks Nicolas. I appreciate your efforts in putting the category
>framework in place! It's beginning to grow on me:)


:-)

>Depending how far my explorations go I may end up adding some of
>the missing pieces...

You would be very welcome! One step that needs to be done at some
point, and that is fairly independent from the category framework
would be to implement:

- Matrices with rows and columns indexed by whatever objects

- Morphisms between two finite dimensional free modules G and H (using the 
above)
  with arithmetic, ...

  I.e. the analogue of sage.modules.matrix_morphism.MatrixMorphism.

- A parent for those.

  I.e the analogue of sage.modules.free_module_homspace.HomSpace

What would be missing would be the shortcuts so that we could just do
Hom(G,H), as well as generic methods that could be shared between.

Cheers,
Nicolas
--
Nicolas M. Thiéry "Isil" 
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.



Re: [sage-combinat-devel] Constructing homs

2012-12-05 Thread Andrew Mathas


> - Matrices with rows and columns indexed by whatever objects 
>
 
I have a (very) rough prototype for this as it is one of the things that I 
need. Rather than matrices, however, I am thinking of making the underlying 
object just an array/table as for my applications the full matrix is often 
not known and more entries are added as the calculations proceed whereas 
matrices are immutable. Perhaps I should finally learn about these 
cloneable arrays...

>
> - Morphisms between two finite dimensional free modules G and H (using the 
> above) 
>   with arithmetic, ... 
>

For what I am doing at the moment the following would be useful:

   - MorphismOfCombinatorialFreeModule
   - HomSpaceWthBasis
   - MorphismFromCyclicModule 

and graded versions of all of the above. I mainly care about (graded) homs 
between CombinatorialFreeModules and i f is such a hom, and t indexes a 
basis element of G then I'd like to have f(t)=f(G(t)). I have a hacked 
version of this, combining the three "categories" above, for my modules, 
without that many features. I'll have make this palatable for human 
consumption before I release this code:)
 

>   I.e. the analogue of sage.modules.matrix_morphism.MatrixMorphism. 
>
> - A parent for those. 
>
>   I.e the analogue of sage.modules.free_module_homspace.HomSpace 
>
> What would be missing would be the shortcuts so that we could just do 
> Hom(G,H), as well as generic methods that could be shared between. 
>

I think that I still don't really undestand what Hom(G,H) represents inside 
sage. Is it simply supposed to be the parent for all homs from G to H? 

Typically, it seems to me that Hom(G,H) doesn't -- and, in fact, can't -- 
do very much: if G and H are (free) modules then Hom(G,H) is just a bunch 
of matrices, which is easy.  But if G and H have any extra structure which 
these homs should preserve then there often won't even be an algorithm for 
computing Hom(G,H), and in many cases there won't even be a practical 
algorithm for determining when a linear map belongs to Hom(G,H). So what is 
Hom(G,H) suppose to do?

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
"sage-combinat-devel" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sage-combinat-devel/-/29S9CF9anMwJ.
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.