Goto Chapter: Top 1 2 3 4 5 Bib Ind
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 

2 Algebras and their Actions
 2.1 Multipliers
 2.2 Commutative actions
 2.3 Algebra modules
 2.4 Actions on direct sums of algebras
 2.5 Other operations on algebras
 2.6 Lists of algebra homomorphisms

2 Algebras and their Actions

All the algebras considered in this package will be associative and commutative. Scalars belong to a commutative ring k with 1 ≠ 0.

(Why not a field? A group ring over the integers is not an algebra. [CDW])

2.1 Multipliers

A multiplier in a commutative algebra A is a function μ : A -> 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 μ(b1) = (μ 1)b and so μ = μ_a where a = μ 1. Since an ideal I of A is closed under multiplication, a multiplier μ may be restricted to I.

Question: Is there an example of an algebra A without a one which has multipliers not of the form μ_a?

2.1-1 RegularAlgebraMultiplier
‣ RegularAlgebraMultiplier( A, I, a )( operation )

This operation defines the multiplier μ_a : I -> 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) ]

2.1-2 IsAlgebraMultiplier
‣ IsAlgebraMultiplier( mu )( operation )

This function tests the condition μ(ab) = (μ a)b = a(μ 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

2.1-3 MultiplierAlgebraOfIdealBySubalgebra
‣ MultiplierAlgebraOfIdealBySubalgebra ( A, I, B )( operation )

The regular multipliers μ_b : I -> I for all b ∈ B, where I is an ideal in A and B is a subalgebra of A, form an algebra with product μ_b ∘ μ_b' = μ_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>

2.1-4 MultiplierAlgebra
‣ MultiplierAlgebra( A )( attribute )

The regular multipliers μ_a : A -> A for all a ∈ A form an algebra isomorphic to A by the map a ↦ μ_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)>>

2.1-5 MultiplierHomomorphism
‣ 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 μ_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)*() ]

2.2 Commutative actions

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:

for all k ∈k, r,r' ∈ R, and s,s' ∈ S.

Notice in particular that, for fixed r ∈ R, the map s ↦ r ⋅ s is a vector space homomorphism, but not in general an algebra homomorphism.

2.2-1 AlgebraAction
‣ AlgebraAction( args )( function )

This global function calls one of the following operations, depending on the arguments supplied.

2.2-2 AlgebraActionByMultipliers
‣ 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 ⋅ 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)

2.2-3 AlgebraActionBySurjection
‣ AlgebraActionBySurjection( hom )( operation )

Let θ : B -> A be a surjective algebra homomorphism such that kerθ is contained in the annihilator of B. Then A acts on B by a ⋅ b = pb where p ∈ (θ^-1a). Note that this action is well defined since θ^-1a = { p+k ~|~ k ∈ kerθ } 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 θ_1 : A1 -> Q1. The kernel of θ 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 ]

2.2-4 AlgebraActionByHomomorphism
‣ AlgebraActionByHomomorphism( hom, alg )( operation )

If α : A -> 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)*() 
    ] ]

2.3 Algebra modules

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 ]

2.3-1 ModuleAsAlgebra
‣ 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 ]] ]

2.3-2 IsModuleAsAlgebra
‣ IsModuleAsAlgebra( alg )( operation )

This is the property acquired when a module is converted into an algebra.


gap> IsModuleAsAlgebra( B4 );
true
gap> IsModuleAsAlgebra( A4 );   
false

2.3-3 ModuleToAlgebraIsomorphism
‣ 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

2.3-4 AlgebraActionByModule
‣ 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>

2.4 Actions on direct sums of algebras

2.4-1 DirectSumOfAlgebrasInfo
‣ 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 := [ ] ) );

2.4-2 Embedding
‣ 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) ]

2.4-3 DirectSumOfAlgebraHomomorphisms
‣ DirectSumOfAlgebraHomomorphisms( hom1, hom2 )( operation )

Let θ_1 : B_1 -> A_1 and θ_2 : B_2 -> A_2 be algebra homomorphisms. The embeddings into A = A_1 ⊕ A_2 and B = B_1 ⊕ B_2 may be used to construct θ = θ_1 ⊕ θ_2 : B -> A where θ(b_1,b_2) = (θ_1b_1,θ_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 ] )

2.4-4 AlgebraActionOnDirectSum
‣ AlgebraActionOnDirectSum( act, act )( operation )

If α_1 : A -> C_1 is an action on algebra B_1 and α_2 : A -> C_2 is an action on algebra B_2 by the same algebra A, then A acts on the direct sum B_1 ⊕ B_2 by a ⋅ (b_1,b_2) = (a ⋅ b_1, a ⋅ 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 ] ]

2.4-5 DirectSumOfAlgebraActions
‣ DirectSumOfAlgebraActions( act, act )( operation )

Let If α_1 : A_1 -> C_1 is an action on algebra B_1, and α_2 : A_2 -> C_2 is an action on algebra B_2, then A_1 ⊕ A_2 acts on the direct sum B_1 ⊕ B_2 by (a_1,a_2) ⋅ (b_1,b_2) = (a_1 ⋅ b_1, a_2 ⋅ 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 ]

2.5 Other operations on algebras

2.5-1 SemidirectProductOfAlgebras
‣ SemidirectProductOfAlgebras( R, act, S )( operation )

When R,S are commutative algebras and R acts on S then we can form the semidirect product R ⋉ 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 ⋉ 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 ]

2.5-2 SemidirectProductOfAlgebrasInfo
‣ SemidirectProductOfAlgebrasInfo( P )( attribute )

The SemidirectProductOfAlgebrasInfo(P) for P = R ⋉ S is a record with fields P.action; P.algebras; P.embeddings; and P.projections.

2.6 Lists of algebra homomorphisms

2.6-1 AllAlgebraHomomorphisms
‣ 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

 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 
Goto Chapter: Top 1 2 3 4 5 Bib Ind

generated by GAPDoc2HTML