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])
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?
‣ 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) ]
‣ 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
‣ 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>
‣ 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)>>
‣ 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)*() ]
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 ⋅ s) ~=~ (kr) ⋅ s ~=~ r ⋅ (ks),
r ⋅ (s + s') ~=~ r ⋅ s + r ⋅ s', qquad (so r ⋅ 0_S = 0_S ~∀~ r ∈ R),
(r + r') ⋅ s ~=~ r ⋅ s + r' ⋅ s, qquad (so 0_R ⋅ s = 0_S ~∀~ s ∈ S),
r ⋅ (ss') ~=~ (r ⋅ s)s' = s(r ⋅ s'),
(rr') ⋅ s ~=~ r ⋅ (r' ⋅ s), qquad (so 1_R ⋅ s = s ~∀~ s ∈ S when R has a one),
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.
‣ 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 ⋅ 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 θ : 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 ]
‣ 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)*() ] ]
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 θ_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 ] )
‣ 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 ] ]
‣ 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 ]
‣ 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 ]
‣ SemidirectProductOfAlgebrasInfo ( P ) | ( attribute ) |
The SemidirectProductOfAlgebrasInfo(P)
for P = R ⋉ 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