# Tor in QPA for commutative quiver algebras

Given a commutative quiver algebra $$A=KQ/I$$ in the GAP-package QPA and two (right) $$A$$-modules M and N.

Question 1: Is it possible to calculate $$Tor_A^i(M,N)=D(Ext_A^i(M,D(N))$$ with QPA?

The problem here is that M and N are both right modules while the second argument in Tor has to be a left module. But since $$A$$ is commutative we have that left and right modules can be identified, but I do not know how to do this with QPA.

Question 2: How to get a left $$A$$-module for example ($$D(M)$$) as a right $$A$$-module in QPA when $$A$$ is commutative?

Let $$M$$ be a right $$A$$-module. Then $$N = M_A$$ is a left $$A$$-module via defining $$a\cdot m = ma$$ for all $$a$$ in $$A$$ and all $$m$$ in $$M$$. Furthermore $$N$$ is a right $$A^{\operatorname{op}}$$-module via defining $$n \circ a^{\operatorname{op}} = a\cdot n,$$ which is by definition $$na$$, where $$a$$ is in $$A$$ and $$a^{\operatorname{op}}$$ is $$a$$ viewed as an element in $$A^{\operatorname{op}}$$. Hence, if $$M$$ is a right $$A$$-module, then $$M$$ as a left $$A$$-module is given as a right $$A^{\operatorname{op}}$$-module where action of $$A^{\operatorname{op}}$$ is given by the same matrices as the original action. This can be done as follows in QPA:

gap> Q := Quiver( 1, [[ 1,1,"a"],[1,1,"b"]] );;
gap> KQ := PathAlgebra( Rationals, Q );;
gap> AssignGeneratorVariables( KQ );;
#I  Assigned the global variables [ v1, a, b ]
gap> rels := [ a^2, a*b - b*a, b^2 ];;
gap> A := KQ/rels;;
gap> Aop := OppositeAlgebra( A );
<Rationals[<quiver with 1 vertices and 2 arrows>]/<two-sided ideal in <Rationals[<quiver with 1 vertices and 2 arrows>]>,
(3 generators)>>
gap> S := SimpleModules( A )[ 1 ];;
gap> M := DTr( S );
<[ 5 ]>
gap> mats := MatricesOfPathAlgebraModule( M );
[ [ [ 0, 0, 0, 0, 0 ], [ 1, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0 ], [ 0, 0, 0, 1, 0 ] ],
[ [ 0, 0, 0, 0, 0 ], [ 0, 0, 0, -1, 0 ], [ 1, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0 ] ] ]
gap> N := RightModuleOverPathAlgebra( Aop, mats );
<[ 5 ]>
gap> ext := ExtOverAlgebra(M,DualOfModule(N));
[ <<[ 7 ]> ---> <[ 12 ]>>, [ <<[ 7 ]> ---> <[ 5 ]>>, <<[ 7 ]> ---> <[ 5 ]>>, <<[ 7 ]> ---> <[ 5 ]>>,
<<[ 7 ]> ---> <[ 5 ]>>, <<[ 7 ]> ---> <[ 5 ]>>, <<[ 7 ]> ---> <[ 5 ]>> ], function( map ) ... end ]


It is always confusing with identifications which seemingly are the identity, but I hope that this is correct.