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> id1 := One( A1 );; gap> L1 := List( BA1, v -> id1 );; 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> I2 := Image( act2 );; gap> BI2 := BasisVectors( Basis( I2 ) );; gap> b1 := BI2[1];; b2 := BI2[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 Rc3
are isomorphic algebras, so the resulting action is equivalent to the multiplier action of Rc3
on itself.
gap> m3 := [ [0,1,0], [0,0,1], [1,0,0,] ];; gap> A3 := Algebra( Rationals, [m3] );; gap> SetName( A3, "A3" );; gap> c3 := Group( (1,2,3) );; gap> Rc3 := GroupRing( Rationals, c3 );; gap> SetName( Rc3, "GR(c3)" ); gap> g3 := GeneratorsOfAlgebra( Rc3 )[2];; gap> mg3 := RegularAlgebraMultiplier( Rc3, Rc3, g3 );; gap> Amg3 := AlgebraByGenerators( Rationals, [ mg3 ] );; gap> homg3 := AlgebraHomomorphismByImages( A3, Amg3, [ m3 ], [ mg3 ] );; gap> actg3 := AlgebraActionByHomomorphism( homg3, Rc3 ); [ [ [ 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 V3 becomes an algebra module M3 with a left action by A3. Conversion between vectors in V3 and those in M3 is achieved using the operations ObjByExtRep
and ExtRepOfObj
. These vectors are indistinguishable when printed.
gap> V3 := Rationals^3;; gap> M3 := LeftAlgebraModule( A3, \*, V3 );; gap> SetName( M3, "M3" ); gap> famM3 := ElementsFamily( FamilyObj( M3 ) );; gap> v3 := [3,4,5];; gap> v3 := ObjByExtRep( famM3, v3 ); [ 3, 4, 5 ] gap> m3*v3; [ 4, 5, 3 ] gap> genM3 := GeneratorsOfLeftModule( M3 );; gap> u4 := 6*genM3[1] + 7*genM3[2] + 8*genM3[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> D3 := LeftActingDomain( M3 );; gap> T3 := EmptySCTable( Dimension(M3), Zero(D3), "symmetric" );; gap> B3a := AlgebraByStructureConstants( D3, T3 ); <algebra of dimension 3 over Rationals> gap> GeneratorsOfAlgebra( B3a ); [ v.1, v.2, v.3 ] gap> B3 := ModuleAsAlgebra( M3 ); A(M3) gap> GeneratorsOfAlgebra( B3 ); [ [[ 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( B3 ); true gap> IsModuleAsAlgebra( A3 ); 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( B3 ); [ "Name", "ZeroImmutable", "LeftActingDomain", "Dimension", "GeneratorsOfLeftOperatorAdditiveGroup", "GeneratorsOfLeftOperatorRing", "ModuleToAlgebraIsomorphism", "AlgebraToModuleIsomorphism" ] gap> M2B3 := ModuleToAlgebraIsomorphism( B3 ); [ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ] -> [ [[ 1, 0, 0 ]], [[ 0, 1, 0 ]], [[ 0, 0, 1 ]] ] gap> Source( M2B3 ) = M3; false gap> Source( M2B3 ) = V3; true gap> B2M3 := AlgebraToModuleIsomorphism( B3 ); [ [[ 1, 0, 0 ]], [[ 0, 1, 0 ]], [[ 0, 0, 1 ]] ] -> [ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ] gap> Range( B2M3 ) = M3; false gap> Range( B2M3 ) = V3; true
‣ AlgebraActionByModule ( alg, leftmod ) | ( operation ) |
This operation converts the action of A on M into an action of A on B.
gap> act3 := AlgebraActionByModule( A3, M3 ); [ [ [ 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> a3 := 2*m3 + 3*m3^2; [ [ 0, 2, 3 ], [ 3, 0, 2 ], [ 2, 3, 0 ] ] gap> Image( act3, a3 ); Basis( A(M3), [ [[ 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( act3 ); <algebra over Rationals, with 1 generator>
‣ DirectSumOfAlgebrasWithInfo ( A1, A2 ) | ( operation ) |
‣ 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
. In order to construct a direct sum with this information attribute the operation DirectSumOfAlgebrasWithInfo
may be used. This just calls DirectSumOfAlgebras
and sets up the attribute.
gap> A3Rc3 := DirectSumOfAlgebrasWithInfo( A3, Rc3 );; gap> SetName( A3Rc3, Concatenation( Name(A3), "(+)", Name(Rc3) ) ); gap> DirectSumOfAlgebrasInfo( A3Rc3 ); rec( algebras := [ A3, GR(c3) ], embeddings := [ 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 ], CanonicalBasis( GR(c3) ) -> [ v.4, v.5, v.6 ] ], first := [ 1, 4 ], projections := [ CanonicalBasis( A3(+)GR(c3) ) -> [ [ [ 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 ] ], [ [ 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 ] ] ], CanonicalBasis( A3(+)GR(c3) ) -> [ <zero> of ..., <zero> of ..., <zero> of ..., (1)*(), (1)*(1,2,3), (1)*(1,3,2) ] ] )
‣ 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( A3Rc3, 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( A3Rc3, 2 ); CanonicalBasis( A3(+)GR(c3) ) -> [ <zero> of ..., <zero> of ..., <zero> of ..., (1)*(), (1)*(1,2,3), (1)*(1,3,2) ]
‣ 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