1 | initial version |

Hi,

it seems to me that R.module_morphism for R a parent inheriting from CombinatorialFreeModule does not support a definition on_gens (probably some code by Robert Bradshaw do that but I do not remember where it is in Sage...). So the only current way to define your morphism imply to do some math to get a definition on_basis instead on_gens.

For example, this work but is ugly :

sage: S3 = SymmetricGroup(3) sage: QG = GroupAlgebra(S3, QQ) sage: QG.gens() Finite family {(1,2,3): (1,2,3), (1,2): (1,2)} sage: M_3 = MatrixSpace(QQ, 2) sage: ma = M_3([[0,-1],[1,-1]]) sage: mb = M_3([[1,-1],[0,-1]]) sage: def img_of_perm(p, gens_mat): w = p.reduced_word() R = gens_mat[0].parent() return R.prod([gens_mat[i-1] for i in w]) ....: sage: f = QG.module_morphism(on_basis=lambda x: img_of_perm(x, [ma,mb]), codomain=ma.parent(), category=Algebras(QQ)) sage: f(QG.an_element()) [ 2 -5] [ 2 -3]

Another bug : if you replace category=Algebras(QQ) by category=AlgebrasWithBasis(QQ), you get the error : TypeError: Full MatrixSpace of 2 by 2 dense matrices over Rational Field is not in Category of algebras with basis over Rational Field

In a perfect world, the category should be at least FiniteDimensionnalAlgebraWithBasis(QQ) (because the parents should lies in it if I don't say something false)

The other way is trying to find stuff from Robert to define maps between parents on generators... I am not sure but I think it won't work either because it assume that elements of the two parents are not based on RingElement (old category stuff) and your group algebra is a CombinatorialFreeModule in data structure.

I hope that help a little... Cheers, Nicolas B.

2 | No.2 Revision |

Hi,

it seems to me that R.module_morphism for R a parent inheriting from CombinatorialFreeModule does not support a definition on_gens (probably some code by Robert Bradshaw do that but I do not remember where it is in Sage...). So the only current way to define your morphism imply to do some math to get a definition on_basis instead on_gens.

For example, this work but is ugly :

sage: S3 = ~~SymmetricGroup(3)
~~SymmetricGroup(3)

sage: QG = GroupAlgebra(S3, ~~QQ)
sage: QG.gens()
~~QQ)

sage: QG.gens()

Finite family {(1,2,3): (1,2,3), (1,2): ~~(1,2)}
~~(1,2)}

sage: M_3 = MatrixSpace(QQ, ~~2)
~~2)

sage: ma = ~~M_3([[0,-1],[1,-1]])
~~M_3([[0,-1],[1,-1]])

sage: mb = ~~M_3([[1,-1],[0,-1]])
~~M_3([[1,-1],[0,-1]])

sage: def img_of_perm(p, ~~gens_mat):
~~gens_mat):

```
w = p.reduced_word()
```~~ ~~ R = gens_mat[0].parent()
~~ ~~ return R.prod([gens_mat[i-1] for i in w])

....: ~~ ~~

sage: f = QG.module_morphism(on_basis=lambda x: img_of_perm(x, [ma,mb]),

codomain=ma.parent(), ~~category=Algebras(QQ))
sage: f(QG.an_element())
~~category=Algebras(QQ))

sage: f(QG.an_element())

[ 2 ~~-5]
~~-5]

[ 2 -3]

Another bug : if you replace category=Algebras(QQ) by category=AlgebrasWithBasis(QQ), you get the error : TypeError: Full MatrixSpace of 2 by 2 dense matrices over Rational Field is not in Category of algebras with basis over Rational Field

In a perfect world, the category should be at least FiniteDimensionnalAlgebraWithBasis(QQ) (because the parents should lies in it if I don't say something false)

The other way is trying to find stuff from Robert to define maps between parents on generators... I am not sure but I think it won't work either because it assume that elements of the two parents are not based on RingElement (old category stuff) and your group algebra is a CombinatorialFreeModule in data structure.

anyway, generally, define an algebra homomorphism between a group algebra and a matrix space imply there exist an algorithm to decompose each element of the domain in a polynomial over the algebra generators (I am not very sure it is a prerequisite but I think so...). For the symmetric group, we know how to do that with reduced word but a lot of combinatorial free module in Sage have a method algebra_generators() but do not know how to decompose an element along these algebra generators...

I hope that help a little... Cheers, Nicolas B.

PS : sorry, I did not manage to display nicely this message (which is my first on ask)

3 | No.3 Revision |

Hi,

it seems to me that R.module_morphism for R a parent inheriting from CombinatorialFreeModule does not support a definition on_gens (probably some code by Robert Bradshaw do that but I do not remember where it is in Sage...). So the only current way to define your morphism imply to do some math to get a definition on_basis instead on_gens.

For example, this work but is ugly :

`sage: S3 = `~~SymmetricGroup(3) ~~SymmetricGroup(3)
sage: QG = GroupAlgebra(S3, ~~QQ)~~

sage: QG.gens()

QQ)
sage: QG.gens()
Finite family {(1,2,3): (1,2,3), (1,2): ~~(1,2)}~~

(1,2)}
sage: M_3 = MatrixSpace(QQ, ~~2)~~

2)
sage: ma = ~~M_3([[0,-1],[1,-1]])~~

M_3([[0,-1],[1,-1]])
sage: mb = ~~M_3([[1,-1],[0,-1]])~~

M_3([[1,-1],[0,-1]])
sage: def img_of_perm(p, ~~gens_mat):~~

```
gens_mat):
w = p.reduced_word()
```~~ ~~ R = gens_mat[0].parent()
~~ ~~ return R.prod([gens_mat[i-1] for i in w])

....:

sage: f = QG.module_morphism(on_basis=lambda x: img_of_perm(x, [ma,mb]),

codomain=ma.parent(), ~~category=Algebras(QQ))~~

sage: f(QG.an_element())

category=Algebras(QQ))
sage: f(QG.an_element())
[ 2 ~~-5]~~

-5]
[ 2 ~~-3]~~

-3]

Another bug : if you replace category=Algebras(QQ) by category=AlgebrasWithBasis(QQ), you get the error : TypeError: Full MatrixSpace of 2 by 2 dense matrices over Rational Field is not in Category of algebras with basis over Rational Field

In a perfect world, the category should be at least FiniteDimensionnalAlgebraWithBasis(QQ) (because the parents should lies in it if I don't say something false)

The other way is trying to find stuff from Robert to define maps between parents on generators... I am not sure but I think it won't work either because it assume that elements of the two parents are not based on RingElement (old category stuff) and your group algebra is a CombinatorialFreeModule in data structure.

anyway, generally, define an algebra homomorphism between a group algebra and a matrix space imply there exist an algorithm to decompose each element of the domain in a polynomial over the algebra generators (I am not very sure it is a prerequisite but I think so...). For the symmetric group, we know how to do that with reduced word but a lot of combinatorial free module in Sage have a method algebra_generators() but do not know how to decompose an element along these algebra generators...

I hope that help a ~~little...
Cheers,
~~little...

Cheers,

Nicolas B.

PS : sorry, I did not manage to display nicely this message (which is my first on ask)

4 | No.4 Revision |

Hi,

For example, this work but is ugly :

```
sage: S3 = SymmetricGroup(3)
sage: QG = GroupAlgebra(S3, QQ)
sage: QG.gens()
Finite family {(1,2,3): (1,2,3), (1,2): (1,2)}
sage: M_3 = MatrixSpace(QQ, 2)
sage: ma = M_3([[0,-1],[1,-1]])
sage: mb = M_3([[1,-1],[0,-1]])
sage: def img_of_perm(p, gens_mat):
w = p.reduced_word()
R = gens_mat[0].parent()
return R.prod([gens_mat[i-1] for i in w])
....:
sage: f = QG.module_morphism(on_basis=lambda x: img_of_perm(x, [ma,mb]),
codomain=ma.parent(), category=Algebras(QQ))
sage: f(QG.an_element())
[ 2 -5]
[ 2 -3]
```

anyway, generally, define an algebra homomorphism between a group algebra and a matrix space ~~imply ~~implies there exist an algorithm to decompose each element of the domain in a polynomial over the algebra generators (I am not very sure it is a prerequisite but I think so...). For the symmetric group, we know how to do that with reduced word but a lot of combinatorial free module in Sage have a method algebra_generators() but do not know how to decompose an element along these algebra generators...

GAP do probably that very well but I also never tried (GAP knows how to decompose a group element along group generators...).

I hope that help a little...

Cheers,

Nicolas B.

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.