All the algebras considered in this package will be associative and commutative. Scalars belong to a commutative ring k with \(1 \neq 0\).
(Why not a field? A group ring over the integers is not an algebra. [CDW])
A multiplier in a commutative algebra \(A\) is a function \(\mu : A \to A\) such that
\[ \mu(ab) ~=~ (\mu a)b ~=~ a(\mu b) \quad \forall~ a,b \in A. \]
The regular multipliers of \(A\) are the functions
\[ \mu_a : A \to A ~:~ \mu_ab = ab \quad \forall~ b \in A. \]
When \(A\) has a one, it follows from the defining condition that \(\mu(b1) = (\mu 1)b\) and so \(\mu = \mu_a\) where \(a = \mu 1\). Since an ideal \(I\) of \(A\) is closed under multiplication, a multiplier \(\mu\) may be restricted to \(I\).
Question: Is there an example of an algebra \(A\) without a one which has multipliers not of the form \(\mu_a\)?
‣ RegularAlgebraMultiplier ( A, I, a ) | ( operation ) |
This operation defines the multiplier \(\mu_a : I \to I\) on an ideal \(I\) of \(A\).
gap> A1 := GroupRing( GF(5), Group( (1,2,3,4,5,6) ) );; gap> SetName( A1, "A1" ); gap> BA1 := BasisVectors( Basis( A1 ) );; gap> v := BA1[1] + BA1[3] + BA1[5]; (Z(5)^0)*()+(Z(5)^0)*(1,3,5)(2,4,6)+(Z(5)^0)*(1,5,3)(2,6,4) gap> I1 := Ideal( A1, [v] );; gap> SetName( I1, "I1" ); gap> v1 := BA1[2]; (Z(5)^0)*(1,2,3,4,5,6) gap> m1 := RegularAlgebraMultiplier( A1, I1, v1 ); [ (Z(5)^0)*()+(Z(5)^0)*(1,3,5)(2,4,6)+(Z(5)^0)*(1,5,3)(2,6,4), (Z(5)^0)*(1,2,3,4,5,6)+(Z(5)^0)*(1,4)(2,5)(3,6)+(Z(5)^0)*(1,6,5,4,3,2) ] -> [ (Z(5)^0)*(1,2,3,4,5,6)+(Z(5)^0)*(1,4)(2,5)(3,6)+(Z(5)^0)*(1,6,5,4,3,2), (Z(5)^0)*()+(Z(5)^0)*(1,3,5)(2,4,6)+(Z(5)^0)*(1,5,3)(2,6,4) ]
‣ IsAlgebraMultiplier ( mu ) | ( operation ) |
This function tests the condition \(\mu(ab) = (\mu a)b = a(\mu b)\) for all \(a,b\) in the basis for \(A\).
gap> IsAlgebraMultiplier( m1 ); true gap> one := One( A1 );; gap> L1 := List( BA1, v -> one );; gap> h1 := LeftModuleHomomorphismByImages( A1, A1, BA1, L1 ); [ (Z(5)^0)*(), (Z(5)^0)*(1,2,3,4,5,6), (Z(5)^0)*(1,3,5)(2,4,6), (Z(5)^0)*(1,4)(2,5)(3,6), (Z(5)^0)*(1,5,3)(2,6,4), (Z(5)^0)*(1,6,5,4,3,2) ] -> [ (Z(5)^0)*(), (Z(5)^0)*(), (Z(5)^0)*(), (Z(5)^0)*(), (Z(5)^0)*(), (Z(5)^0)*() ] gap> IsAlgebraMultiplier( h1 ); false
‣ MultiplierAlgebraOfIdealBySubalgebra ( A, I, B ) | ( operation ) |
The regular multipliers \(\mu_b : I \to I\) for all \(b \in B\), where \(I\) is an ideal in \(A\) and \(B\) is a subalgebra of \(A\), form an algebra with product \(\mu_b \circ \mu_{b'} = \mu_{bb'}\).
gap> u1 := BA1[3]; (Z(5)^0)*(1,3,5)(2,4,6) gap> S1 := Subalgebra( A3, [ u1 ] );; gap> SetName( S1, "S1" ); gap> MS1 := MultiplierAlgebraOfIdealBySubalgebra( A1, I1, S1 ); <algebra of dimension 1 over GF(5)> gap> SetName( MS1, "MS1" ); gap> BMS1 := BasisVectors( Basis( MS1 ) );; gap> BMS1[1]; <linear mapping by matrix, I1 -> I1>
‣ MultiplierAlgebra ( A ) | ( attribute ) |
The regular multipliers \(\mu_a : A \to A\) for all \(a \in A\) form an algebra isomorphic to \(A\) by the map \(a \mapsto \mu_a\). This operation returns MultiplierAlgebraOfIdealBySubalgebra(A,A,A);
.
gap> MA1 := MultiplierAlgebra( A1 ); <algebra of dimension 6 over GF(5)> gap> BMA1 := BasisVectors( Basis( MA1 ) );; gap> BMA1[3]; <linear mapping by matrix, <algebra-with-one of dimension 6 over GF(5)> -> <algebra-with-one of dimension 6 over GF(5)>>
‣ MultiplierHomomorphism ( M ) | ( attribute ) |
If \(M\) is a multiplier algebra with elements of a subalgebra \(B\) of an algebra \(A\) multiplying an ideal \(I\) then this operation returns the homomorphism from \(B\) to \(M\) mapping \(b\) to \(\mu_b\).
gap> hom1 := MultiplierHomomorphism( MA1 );; gap> ImageElm( hom1, BA1[2] ); Basis( A1, [ (Z(5)^0)*(), (Z(5)^0)*(1,2,3,4,5,6), (Z(5)^0)*(1,3,5)(2\ ,4,6), (Z(5)^0)*(1,4)(2,5)(3,6), (Z(5)^0)*(1,5,3)(2,6,4), (Z(5)^0)*(1,6,5,4,3,2) ] ) -> [ (Z(5)^0)*(1,2,3,4,5,6), (Z(5)^0)*(1,3,5)(2,4,6), (Z(5)^0)*(1,4)(2,5)(3,6), (Z(5)^0)*(1,5,3)(2,6,4), (Z(5)^0)*(1,6,5,4,3,2), (Z(5)^0)*() ]
If \(S\) and \(R\) are commutative k-algebras, a map
\[ R \times S ~\to~ S, \qquad (r,s) ~\mapsto~ r \cdot s \]
is a commutative action if and only if the following five axioms hold:
\(k(r \cdot s) ~=~ (kr) \cdot s ~=~ r \cdot (ks)\),
\(r \cdot (s + s') ~=~ r \cdot s + r \cdot s', \qquad\) (so \(r \cdot 0_S = 0_S ~\forall~ r \in R\)),
\((r + r') \cdot s ~=~ r \cdot s + r' \cdot s, \qquad\) (so \(0_R \cdot s = 0_S ~\forall~ s \in S\)),
\(r \cdot (ss') ~=~ (r \cdot s)s' = s(r \cdot s')\),
\((rr') \cdot s ~=~ r \cdot (r' \cdot s), \qquad\) (so \(1_R \cdot s = s ~\forall~ s \in S\) when \(R\) has a one),
for all \(k \in \)k, \(r,r' \in R\), and \(s,s' \in S\).
Notice in particular that, for fixed \(r \in R\), the map \(s \mapsto r \cdot s\) is a vector space homomorphism, but not in general an algebra homomorphism.
‣ AlgebraAction ( args ) | ( function ) |
This global function calls one of the following operations, depending on the arguments supplied.
‣ AlgebraActionByMultipliers ( A, I, B ) | ( operation ) |
When \(I\) is an ideal in \(A\) and \(B\) is a subalgebra of \(A\), we have seen that the multiplier homomorphism from \(A\) to MultiplierAlgebraOfIdealBySubalgebra(A,I,B)
is an action.
In the example the algebra is the group ring of the cyclic group \(C_6\) over the field \(GF(5)\). The ideal is generated by \(v = () + (1,3,5)(2,4,6) + (1,5,3)(2,6,4)\). The generator \(r = (1,2,3,4,5,6)\) acts on \(v\) by multiplication to give the vector \(r \cdot v = (1,2,3,4,5,6) + (1,4)(2,5)(3,6) + (1,6,5,4,3,2)\), as shown in AlgebraActionByHomomorphism
(2.2-4)
gap> A1 := GroupRing( GF(5), Group( (1,2,3,4,5,6) ) );; gap> BA1 := BasisVectors( Basis( A1 ) );; gap> v := BA1[1] + BA1[3] + BA1[5]; (Z(5)^0)*()+(Z(5)^0)*(1,3,5)(2,4,6)+(Z(5)^0)*(1,5,3)(2,6,4) gap> I1 := Ideal( A1, [v] );; gap> act1 := AlgebraActionByMultipliers( A1, I1, A1 );; gap> act12 := Image( act1, BA1[2] );; gap> Image( act12, v ); (Z(5)^0)*(1,2,3,4,5,6)+(Z(5)^0)*(1,4)(2,5)(3,6)+(Z(5)^0)*(1,6,5,4,3,2)
‣ AlgebraActionBySurjection ( hom ) | ( operation ) |
Let \(\theta : B \to A\) be a surjective algebra homomorphism such that \(\ker\theta\) is contained in the annihilator of \(B\). Then \(A\) acts on \(B\) by \(a \cdot b = pb\) where \(p \in (\theta^{-1}a)\). Note that this action is well defined since \(\theta^{-1}a = \{ p+k ~|~ k \in \ker\theta \}\) and \((p+k)b = pb+kb = pb+0\).
Continuing with the previous example, we construct the quotient algebra \(Q1 = A1/I1\), and the natural homomorphism \(\theta_1 : A1 \to Q1\). The kernel of \(\theta\) is not contained in the annihilator of \(A1\), so an attempt to form the action fails.
An alternative example involves a matrix algebra \(A_2\) with generator \(m_2\), basis \(\{m_2,m_2^2,m_2^3\}\), and where \(m_2^4=0\). The ideal \(I_2\) is generated by \(m_2^3\) and the quotient \(Q_2\) has basis \(\{[m_2],[m_2^2]\}\).
gap> theta1 := NaturalHomomorphismByIdeal( A1, I1 ); <linear mapping by matrix, <algebra-with-one of dimension 6 over GF(5)> -> <algebra of dimension 4 over GF(5)>> gap> List( BA1, v -> ImageElm( theta1, v ) ); [ v.1, v.2, v.3, v.4, (Z(5)^2)*v.1+(Z(5)^2)*v.3, (Z(5)^2)*v.2+(Z(5)^2)*v.4 ] gap> AlgebraActionBySurjection( theta1 ); kernel of hom is not in the annihilator of A fail gap> ## an example which does not fail: gap> m2 := [ [0,1,2,3], [0,0,1,2], [0,0,0,1], [0,0,0,0] ];; gap> m2^2; [ [ 0, 0, 1, 4 ], [ 0, 0, 0, 1 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ] ] gap> m2^3; [ [ 0, 0, 0, 1 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ] ] gap> A2 := Algebra( Rationals, [m2] );; gap> SetName( A2, "A2" ); gap> S2 := Subalgebra( A2, [m2^3] );; gap> SetName( S2, "S2" ); gap> nat2 := NaturalHomomorphismByIdeal( A2, S2 ); <linear mapping by matrix, A2 -> <algebra of dimension 2 over Ration\ als>> gap> Q2 := Image( nat2 );; gap> SetName( Q2, "Q2" ); gap> Display( nat2 ); LeftModuleHomomorphismByMatrix( Basis( A2, [ [ [ 0, 0, 0, 1 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ] ], [ [ 0, 1, 2, 3 ], [ 0, 0, 1, 2 ], [ 0, 0, 0, 1 ], [ 0, 0, 0, 0 ] ], [ [ 0, 0, 1, 4 ], [ 0, 0, 0, 1 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ] ] ] ), [ [ 0, 0 ], [ 1, 0 ], [ 0, 1 ] ], CanonicalBasis( Q2 ) ) gap> act2 := AlgebraActionBySurjection( nat2 );; gap> C2 := Image( act2 );; gap> BC2 := BasisVectors( Basis( C2 ) );; gap> b1 := BC2[1];; b2 := BC2[2];; gap> [ Image(b1,m2)=m2^2, Image(b1,m2^2)=m2^3, Image(b1,m2^3)=Zero(A2) ]; [ true, true, true ] gap> [ Image(b2,m2)=m2^3, b2=b1^2 ]; [true, true ]
‣ AlgebraActionByHomomorphism ( hom, alg ) | ( operation ) |
If \(\alpha : A \to C\) is an algebra homomorphism where \(C\) is an algebra of left module isomorphisms of an algebra \(B\), then AlgebraActionByHomomorphism( alpha, B )
attempts to return an action of \(A\) on \(B\).
In the example the matrix algebra A3
and the group algebra B3
are isomorphic algebras, so the resulting action is equivalent to the multiplier action of B3
on itself.
gap> m3 := [ [0,1,0], [0,0,1], [1,0,0,] ];; gap> A3 := Algebra( Rationals, [m3] );; gap> SetName( A3, "A3" );; gap> G := Group( (1,2,3) );; gap> B3 := GroupRing( Rationals, G );; gap> SetName( B3, "GR(G)" ); gap> g3 := GeneratorsOfAlgebra( B3 )[2];; gap> mg3 := RegularAlgebraMultiplier( B3, B3, g3 );; gap> MB3 := AlgebraByGenerators( Rationals, [ mg3 ] );; gap> hom3 := AlgebraHomomorphismByImages( A3, MB3, [ m3 ], [ mg3 ] );; gap> act3 := AlgebraActionByHomomorphism( hom3, B3 ); [ [ [ 0, 1, 0 ], [ 0, 0, 1 ], [ 1, 0, 0 ] ] ] -> [ [ (1)*(), (1)*(1,2,3), (1)*(1,3,2) ] -> [ (1)*(1,2,3), (1)*(1,3,2), (1)*() ] ]
Recall that a module can be made into an algebra by defining every product to be zero. When we apply this construction to a (left) algebra module, we obtain an algebra action on an algebra.
Recall the construction of algebra modules from Chapter 62 of the GAP reference manual. In the example, the vector space \(V\) becomes an algebra module \(M\) with a left action by \(A\). Conversion between vectors in \(V\) and those in \(M\) is achieved using the operations ObjByExtRep
and ExtRepOfObj
. These vectors are indistinguishable when printed.
gap> m3 := [ [0,1,0], [0,0,1], [1,0,0] ];; gap> A4 := Algebra( Rationals, [m3] );; gap> SetName( A4, "A4" );; gap> V4 := Rationals^3;; gap> M4 := LeftAlgebraModule( A4, \*, V4 );; gap> SetName( M4, "M4" ); gap> famM4 := ElementsFamily( FamilyObj( M4 ) );; gap> v4 := [3,4,5];; gap> v4 := ObjByExtRep( famM4, v4 ); [ 3, 4, 5 ] gap> m3*v4; [ 4, 5, 3 ] gap> genM4 := GeneratorsOfLeftModule( M4 );; gap> u4 := 6*genM4[1] + 7*genM4[2] + 8*genM4[3]; [ 6, 7, 8 ] gap> u4 := ExtRepOfObj( u4 ); [ 6, 7, 8 ]
‣ ModuleAsAlgebra ( leftmod ) | ( attribute ) |
To form an algebra \(B\) from \(M\) with zero products we may construct an algebra with the correct dimension using an empty structure constants table, as shown below. In doing so, the remaining information about \(M\) is lost, so it is essential to form isomorphisms between the corresponding underlying vector spaces.
If the module \(M\) has been given a name, then the operation ModuleAsAlgebra
assigns a name to the resulting algebra. The operation AlgebraByStructureConstants
assigns names \(v_i\) to the basis vectors unless a list of names is provided. The operation ModuleAsAlgebra
converts the basis elements of \(M\) into strings, with additional brackets added, and uses these as the names for the basis vectors. Note that these [[i,j,k]]
are just strings, and not vectors.
gap> D4 := LeftActingDomain( M4 );; gap> T4 := EmptySCTable( Dimension(M4), Zero(D4), "symmetric" );; gap> B4a := AlgebraByStructureConstants( D4, T4 ); <algebra of dimension 3 over Rationals> gap> GeneratorsOfAlgebra( B4a ); [ v.1, v.2, v.3 ] gap> B4 := ModuleAsAlgebra( M4 ); A(M4) gap> GeneratorsOfAlgebra( B4 ); [ [[ 1, 0, 0 ]], [[ 0, 1, 0 ]], [[ 0, 0, 1 ]] ]
‣ IsModuleAsAlgebra ( alg ) | ( operation ) |
This is the property acquired when a module is converted into an algebra.
gap> IsModuleAsAlgebra( B4 ); true gap> IsModuleAsAlgebra( A4 ); false
‣ ModuleToAlgebraIsomorphism ( alg ) | ( operation ) |
‣ AlgebraToModuleIsomorphism ( alg ) | ( operation ) |
These two algebra mappings are attributes of a module converted into an algebra. They are required for the process of converting the action of \(A\) on \(M\) into an action on \(B\). Note that these left module homomorphisms have as source or range the underlying module \(V\), not \(M\).
gap> KnownAttributesOfObject( B4 ); [ "Name", "ZeroImmutable", "LeftActingDomain", "Dimension", "GeneratorsOfLeftOperatorAdditiveGroup", "GeneratorsOfLeftOperatorRing", "ModuleToAlgebraIsomorphism", "AlgebraToModuleIsomorphism" ] gap> M2B4 := ModuleToAlgebraIsomorphism( B4 ); [ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ] -> [ [[ 1, 0, 0 ]], [[ 0, \ 1, 0 ]], [[ 0, 0, 1 ]] ] gap> Source( M2B4 ) = M4; false gap> Source( M2B4 ) = V4; true gap> B2M4 := AlgebraToModuleIsomorphism( B4 ); [ [[ 1, 0, 0 ]], [[ 0, 1, 0 ]], [[ 0, 0, 1 ]] ] -> [ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ] gap> Range( B2M4 ) = M4; false gap> Range( B2M4 ) = V4; true
‣ AlgebraActionByModule ( alg, leftmod ) | ( operation ) |
This operation converts the action of \(A\) on \(M\) into an action of \(A\) on \(B\).
gap> act4 := AlgebraActionByModule( A4, M4 ); [ [ [ 0, 1, 0 ], [ 0, 0, 1 ], [ 1, 0, 0 ] ] ] -> [ [ [[ 1, 0, 0 ]], [[ 0, 1, 0 ]], [[ 0, 0, 1 ]] ] -> [ [[ 0, 0, 1 ]], [[ 1, 0, 0 ]], [[ 0, 1, 0 ]] ] ] gap> a4 := 2*m3 + 3*m3^2; [ [ 0, 2, 3 ], [ 3, 0, 2 ], [ 2, 3, 0 ] ] gap> Image( act4, a4 ); Basis( A(M4), [ [[ 1, 0, 0 ]], [[ 0, 1, 0 ]], [[ 0, 0, 1 ]] ] ) -> [ (3)*[[ 0, 1, 0 ]]+(2)*[[ 0, 0, 1 ]], (2)*[[ 1, 0, 0 ]]+(3)*[[ 0, 0, 1 ]], (3)*[[ 1, 0, 0 ]]+(2)*[[ 0, 1, 0 ]] ] gap> Image( act4 ); <algebra over Rationals, with 1 generator>
‣ DirectSumOfAlgebrasInfo ( A ) | ( attribute ) |
This attribute for direct sums of algebras is missing from the main library, and is added here to be used in methods for Embedding
and Projection
.
gap> A3B3 := DirectSumOfAlgebras( A3, B3 );; gap> SetName( A3B3, Concatenation( Name(A3), "(+)", Name(B3) ) ); gap> SetDirectSumOfAlgebrasInfo( A3B3, > rec( algebras := [A3,B3], first := [1,Dimension(A3)+1], > embeddings := [ ], projections := [ ] ) );
‣ Embedding ( A, nr ) | ( operation ) |
‣ Projection ( A, nr ) | ( operation ) |
Methods for Embedding
and Projection
for direct sums of algebras are missing from the main library, and so are included here.
gap> Embedding( A3B3, 1 ); Basis( A3, [ [ [ 0, 1, 0 ], [ 0, 0, 1 ], [ 1, 0, 0 ] ], [ [ 0, 0, 1 ], [ 1, 0, 0 ], [ 0, 1, 0 ] ], [ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ] ] ) -> [ v.1, v.2, v.3 ] gap> Projection( A3B3, 2 ); CanonicalBasis( A3(+)GR(G) ) -> [ <zero> of ..., <zero> of ..., <zero> of ..., (1)*(), (1)*(1,2,3), (1)*(1,3,2) ]
‣ DirectSumOfAlgebraHomomorphisms ( hom1, hom2 ) | ( operation ) |
Let \(\theta_1 : B_1 \to A_1\) and \(\theta_2 : B_2 \to A_2\) be algebra homomorphisms. The embeddings into \(A = A_1 \oplus A_2\) and \(B = B_1 \oplus B_2\) may be used to construct \(\theta = \theta_1 \oplus \theta_2 : B \to A\) where \(\theta(b_1,b_2) = (\theta_1b_1,\theta_2b_2)\). The example uses the homomorphism hom3
used in Section 2.2-4
gap> hom := DirectSumOfAlgebraHomomorphisms( hom3, hom3 );; gap> Print( hom, "\n" ); AlgebraHomomorphismByImages( A3(+)A3, Algebra( Rationals, [ v.1, v.2, v.3, v.4, v.5, v.6 ] ), [ [ [ 0, 1, 0, 0, 0, 0 ], [ 0, 0, 1, 0, 0, 0 ], [ 1, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0 ] ], [ [ 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 0, 1 ], [ 0, 0, 0, 1, 0, 0 ] ] ], [ v.1, v.4 ] )
‣ AlgebraActionOnDirectSum ( act, act ) | ( operation ) |
If \(\alpha_1 : A \to C_1\) is an action on algebra \(B_1\) and \(\alpha_2 : A \to C_2\) is an action on algebra \(B_2\) by the same algebra \(A\), then \(A\) acts on the direct sum \(B_1 \oplus B_2\) by \(a \cdot (b_1,b_2) = (a \cdot b_1, a \cdot b_2)\).
In Section 2.3-4 there is created an action actB3
of A3
on an isomorphic B3
. In the example here we construct actA3
, with A3
acting on itself, formed using AlgebraActionByMultipliers
. Then we construct the direcct sum of these actions.
gap> actMA3 := AlgebraActionByMultipliers( A3, A3, A3 );; gap> act5 := AlgebraActionOnDirectSum( actMA3, act3 ); [ [ [ 0, 1, 0 ], [ 0, 0, 1 ], [ 1, 0, 0 ] ], [ [ 0, 0, 1 ], [ 1, 0, 0 ], [ 0, 1, 0 ] ], [ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ] ] -> [ [ v.1, v.2, v.3, v.4, v.5, v.6 ] -> [ v.2, v.3, v.1, v.5, v.6, v.4 ], [ v.1, v.2, v.3, v.4, v.5, v.6 ] -> [ v.3, v.1, v.2, v.6, v.4, v.5 ], [ v.1, v.2, v.3, v.4, v.5, v.6 ] -> [ v.1, v.2, v.3, v.4, v.5, v.6 ] ]
‣ DirectSumOfAlgebraActions ( act, act ) | ( operation ) |
Let If \(\alpha_1 : A_1 \to C_1\) is an action on algebra \(B_1\), and \(\alpha_2 : A_2 \to C_2\) is an action on algebra \(B_2\), then \(A_1 \oplus A_2\) acts on the direct sum \(B_1 \oplus B_2\) by \((a_1,a_2) \cdot (b_1,b_2) = (a_1 \cdot b_1, a_2 \cdot b_2)\). The example forms the direct sum of the actions constructed in sections 2.2-3 and 2.2-4
gap> act6 := DirectSumOfAlgebraActions( act3, act4 );; gap> A6 := Source( act6 ); A3(+)A4 gap> B6 := AlgebraActedOn( act6 ); GR(G)(+)A(M4) gap> em3 := ImageElm( Embedding( A6, 1 ), m3 ); [ [ 0, 1, 0, 0, 0, 0 ], [ 0, 0, 1, 0, 0, 0 ], [ 1, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0 ] ] gap> ImageElm( act6, em3 ); Basis( GR(G)(+)A(M4), [ v.1, v.2, v.3, v.4, v.5, v.6 ] ) -> [ v.2, v.3, v.1, 0*v.1, 0*v.1, 0*v.1 ] gap> ea4 := ImageElm( Embedding( A6, 2 ), a4 ); [ [ 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 2, 3 ], [ 0, 0, 0, 3, 0, 2 ], [ 0, 0, 0, 2, 3, 0 ] ] gap> ImageElm( act6, ea4 ); Basis( GR(G)(+)A(M4), [ v.1, v.2, v.3, v.4, v.5, v.6 ] ) -> [ 0*v.1, 0*v.1, 0*v.1, (3)*v.5+(2)*v.6, (2)*v.4+(3)*v.6, (3)*v.4+(2)*v.5 ]
‣ SemidirectProductOfAlgebras ( R, act, S ) | ( operation ) |
When \(R,S\) are commutative algebras and \(R\) acts on \(S\) then we can form the semidirect product \(R \ltimes S\), where the product is given by:
\[ (r_1,s_1)(r_2,s_2) ~=~ (r_1r_2,~ r_1 \cdot s_2 + r_2 \cdot s_1 + s_1s_2). \]
This product, as well as being commutative, is associative: \((r_1,s_1)(r_2,s_2)(r_3,s_3)\) expands as:
\[ (r_1r_2r_3,~ \left (r_1r_2)\cdot s3 + (r_1r_3)\cdot s_2 + (r_2r_3)\cdot s_1 + r_1 \cdot (s_2s_3) + r_2 \cdot (s_1s_3) + r_3 \cdot (s_1s_2) + s_1s_2s_3 \right). \]
If \(B_R, B_S\) are the sets of basis vectors for \(R\) and \(S\) then \(R \ltimes S\) has basis
\[ \{(r,0_S) ~|~ r \in B_R\} ~\cup~ \{(0_R,s) ~|~ s \in B_S\} \]
with defining products
\[ (r_1,0_S)(r_2,0_S) = (r_1r_2,0_S), \qquad (r,0_S)(0_R,s) = (0_R,r \cdot s), \qquad (0_R,s_1)(0_R,s_2) = (0_R,s_1s_2). \]
Continuing the example above,
gap> P1 := SemidirectProductOfAlgebras( A1, act1, I1 ); <algebra of dimension 8 over GF(5)> gap> Embedding( P1, 1 ); [ (Z(5)^0)*(), (Z(5)^0)*(1,2,3,4,5,6), (Z(5)^0)*(1,3,5)(2,4,6), (Z(5)^0)*(1,4)(2,5)(3,6), (Z(5)^0)*(1,5,3)(2,6,4), (Z(5)^0)*(1,6,5,4,3,2) ] -> [ v.1, v.2, v.3, v.4, v.5, v.6 ] gap> Embedding( P1, 2 ); [ (Z(5)^0)*()+(Z(5)^0)*(1,3,5)(2,4,6)+(Z(5)^0)*(1,5,3)(2,6,4), (Z(5)^0)*(1,2,3,4,5,6)+(Z(5)^0)*(1,4)(2,5)(3,6)+(Z(5)^0)*(1,6,5,4,3,2) ] -> [ v.7, v.8 ] gap> Projection( P1, 1 ); [ v.1, v.2, v.3, v.4, v.5, v.6, v.7, v.8 ] -> [ (Z(5)^0)*(), (Z(5)^0)*(1,2,3,4,5,6), (Z(5)^0)*(1,3,5)(2,4,6), (Z(5)^0)*(1,4)(2,5)(3,6), (Z(5)^0)*(1,5,3)(2,6,4), (Z(5)^0)*(1,6,5,4,3,2), <zero> of ..., <zero> of ... ] gap> P2 := SemidirectProductOfAlgebras( Q2, act2, A2 ); Q2 |X A2 gap> Embedding( P2, 1 ); [ v.1, v.2 ] -> [ v.1, v.2 ] gap> Embedding( P2, 2 ); [ [ [ 0, 1, 2, 3 ], [ 0, 0, 1, 2 ], [ 0, 0, 0, 1 ], [ 0, 0, 0, 0 ] ], [ [ 0, 0, 1, 4 ], [ 0, 0, 0, 1 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ] ], [ [ 0, 0, 0, 1 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ] ] ] -> [ v.3, v.4, v.5 ]
‣ SemidirectProductOfAlgebrasInfo ( P ) | ( attribute ) |
The SemidirectProductOfAlgebrasInfo(P)
for \(P = R \ltimes S\) is a record with fields P.action
; P.algebras
; P.embeddings
; and P.projections
.
‣ AllAlgebraHomomorphisms ( A, B ) | ( operation ) |
‣ AllBijectiveAlgebraHomomorphisms ( A, B ) | ( operation ) |
‣ AllIdempotentAlgebraHomomorphisms ( A, B ) | ( operation ) |
These three operations list all the homomorphisms from \(A\) to \(B\) of the specified type. These lists can get very long, so the operations should only be used with small algebras.
gap> A2c6 := GroupRing( GF(2), Group( (1,2,3,4,5,6) ) );; gap> R2c3 := GroupRing( GF(2), Group( (7,8,9) ) );; gap> homAR := AllAlgebraHomomorphisms( A2c6, R2c3 );; gap> List( homAR, h -> MappingGeneratorsImages(h) ); [ [ [ (Z(2)^0)*(1,6,5,4,3,2) ], [ <zero> of ... ] ], [ [ (Z(2)^0)*(1,6,5,4,3,2) ], [ (Z(2)^0)*() ] ], [ [ (Z(2)^0)*(1,6,5,4,3,2) ], [ (Z(2)^0)*()+(Z(2)^0)*(7,8,9) ] ], [ [ (Z(2)^0)*(1,6,5,4,3,2) ], [ (Z(2)^0)*()+(Z(2)^0)*(7,8,9)+(Z(2)^0)*(7,9,8) ] ], [ [ (Z(2)^0)*(1,6,5,4,3,2) ], [ (Z(2)^0)*()+(Z(2)^0)*(7,9,8) ] ], [ [ (Z(2)^0)*(1,6,5,4,3,2) ], [ (Z(2)^0)*(7,8,9) ] ], [ [ (Z(2)^0)*(1,6,5,4,3,2) ], [ (Z(2)^0)*(7,8,9)+(Z(2)^0)*(7,9,8) ] ], [ [ (Z(2)^0)*(1,6,5,4,3,2) ], [ (Z(2)^0)*(7,9,8) ] ] ] gap> homRA := AllAlgebraHomomorphisms( R2c3, A2c6 );; gap> List( homRA, h -> MappingGeneratorsImages(h) ); [ [ [ (Z(2)^0)*(7,8,9) ], [ <zero> of ... ] ], [ [ (Z(2)^0)*(7,8,9) ], [ (Z(2)^0)*() ] ], [ [ (Z(2)^0)*(7,8,9) ], [ (Z(2)^0)*()+(Z(2)^0)*(1,3,5)(2,4,6) ] ], [ [ (Z(2)^0)*(7,8,9) ], [ (Z(2)^0)*()+(Z(2)^0)*(1,3,5)(2,4,6)+(Z(2)^0)*(1,5,3)(2,6,4) ] ], [ [ (Z(2)^0)*(7,8,9) ], [ (Z(2)^0)*()+(Z(2)^0)*(1,5,3)(2,6,4) ] ], [ [ (Z(2)^0)*(7,8,9) ], [ (Z(2)^0)*(1,3,5)(2,4,6) ] ], [ [ (Z(2)^0)*(7,8,9) ], [ (Z(2)^0)*(1,3,5)(2,4,6)+(Z(2)^0)*(1,5,3)(2,6,4) ] ], [ [ (Z(2)^0)*(7,8,9) ], [ (Z(2)^0)*(1,5,3)(2,6,4) ] ] ] gap> bijAA := AllBijectiveAlgebraHomomorphisms( A2c6, A2c6 );; gap> List( bijAA, h -> MappingGeneratorsImages(h) ); [ [ [ (Z(2)^0)*(1,6,5,4,3,2) ], [ (Z(2)^0)*()+(Z(2)^0)*(1,3,5)(2,4,6)+(Z(2)^0)*(1,4)(2,5)(3,6) ] ], [ [ (Z(2)^0)*(1,6,5,4,3,2) ], [ (Z(2)^0)*()+(Z(2)^0)*(1,4)(2,5)(3,6)+(Z(2)^0)*(1,5,3)(2,6,4) ] ], [ [ (Z(2)^0)*(1,6,5,4,3,2) ], [ (Z(2)^0)*(1,2,3,4,5,6) ] ], [ [ (Z(2)^0)*(1,6,5,4,3,2) ], [ (Z(2)^0)*(1,2,3,4,5,6)+(Z(2)^0)*(1,3,5)(2,4,6)+(Z(2)^0)*(1,5,3) (2,6,4) ] ], [ [ (Z(2)^0)*(1,6,5,4,3,2) ], [ (Z(2)^0)*(1,3,5)(2,4,6)+(Z(2)^0)*(1,5,3)(2,6,4)+(Z(2)^0)* (1,6,5,4,3,2) ] ], [ [ (Z(2)^0)*(1,6,5,4,3,2) ], [ (Z(2)^0)*(1,6,5,4,3,2) ] ] ] gap> ideAA := AllIdempotentAlgebraHomomorphisms( A2c6, A2c6 );; gap> Length( ideAA ); 14
generated by GAPDoc2HTML