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

4 Crossed modules
 4.1 Definition and Examples
 4.2 (Pre-)Crossed Module Morphisms

4 Crossed modules

In this chapter we will present the notion of crossed modules of commutative algebras and their implementation in this package.

4.1 Definition and Examples

A crossed module is a k-algebra morphism mathcalX:=(∂:S→ R) with a left action of R on S satisfying

{\bf XModAlg\ 1} ~:~ \partial(r \cdot s) = r(\partial s), \qquad {\bf XModAlg\ 2} ~:~ (\partial s) \cdot s^{\prime} = ss^{\prime},

for all s,s^' ∈ S, r∈ R. The morphism is called the boundary map of mathcalX

Note that, although in this definition we have used a left action, in the category of commutative algebras left and right actions coincide.

4.1-1 XModAlgebra
‣ XModAlgebra( args )( function )

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

4.1-2 XModAlgebraByIdeal
‣ XModAlgebraByIdeal( A, I )( operation )

Let A be an algebra and I an ideal of A. Then mathcalX = (inc:I→ A) is a crossed module whose action is left multiplication of A on I. Conversely, given a crossed module mathcalX = (∂ : S → R), it is the case that ∂(S) is an ideal of R.


gap> F := GF(5);;
gap> one := One(F);;
gap> two := Z(5);; 
gap> z := Zero( F );; 
gap> l := [ [one,z,z], [z,one,z], [z,z,one] ];; 
gap> m := [ [z,one,two^3], [z,z,one], [z,z,z] ];;
gap> n := [ [z,z,one], [z,z,z], [z,z,z] ];; 
gap> A := Algebra( F, [l,m] );; 
gap> SetName( A, "A(l,m)" ); 
gap> B := Subalgebra( A, [m] );; 
gap> SetName( B, "A(m)" ); 
gap> IsIdeal( A, B ); 
true
gap> act := AlgebraActionByMultipliers( A, B );; 
gap> XAB := XModAlgebraByIdeal( A, B ); 
[ A(m) -> A(l,m) ]
gap> SetName( XAB, "XAB" ); 

4.1-3 AugmentationXMod
‣ AugmentationXMod( A )( attribute )

As a special case of the previous operation, the attribute AugmentationXMod(A) of a group algebra A is the XModAlgebraByIdeal formed using the AugmentationIdeal of the group algebra.


gap> Ak4 := GroupRing( GF(5), DihedralGroup(4) );
<algebra-with-one over GF(5), with 2 generators>
gap> Size( Ak4 );
625
gap> SetName( Ak4, "GF5[k4]" );
gap> IAk4 := AugmentationIdeal( Ak4 );
<two-sided ideal in GF5[k4], (2 generators)>
gap> Size( IAk4 );
125
gap> SetName( IAk4, "I(GF5[k4])" );
gap> XIAk4 := XModAlgebraByIdeal( Ak4, IAk4 );
[ I(GF5[k4]) -> GF5[k4] ]
gap> Display( XIAk4 );

Crossed module [I(GF5[k4])->GF5[k4]] :- 
: Source algebra I(GF5[k4]) has generators:
  [ (Z(5)^2)*<identity> of ...+(Z(5)^0)*f1, (Z(5)^2)*<identity> of ...+(Z(5)^
    0)*f2 ]
: Range algebra GF5[k4] has generators:
  [ (Z(5)^0)*<identity> of ..., (Z(5)^0)*f1, (Z(5)^0)*f2 ]
: Boundary homomorphism maps source generators to:
  [ (Z(5)^2)*<identity> of ...+(Z(5)^0)*f1, (Z(5)^2)*<identity> of ...+(Z(5)^
    0)*f2 ]

gap> Size2d( XIAk4 );
[ 125, 625 ]

4.1-4 XModAlgebraByMultiplierAlgebra
‣ XModAlgebraByMultiplierAlgebra( A )( operation )

When A is an algebra with multiplier algebra M, then the map A -> M, ~ a ↦ μ_a is the boundary of a crossed module in which the action is the identity map on M.


gap> XA := XModAlgebraByMultiplierAlgebra( A );
[ A(l,m) -> <algebra of dimension 3 over GF(5)> ]
gap> XModAlgebraAction( XA );
IdentityMapping( <algebra of dimension 3 over GF(5)> )

4.1-5 XModAlgebraBySurjection
‣ XModAlgebraBySurjection( f )( operation )

Let ∂ : S→ R be a surjective algebra homomorphism whose kernel lise in the annihilator of S. Define the action of R on S by r⋅ s = widetilders where widetilder ∈ ∂^-1(r), as described in section AlgebraActionBySurjection (2.2-2) Then mathcalX=(∂ : S→ R) is a crossed module with the defined action.

Continuing with the example in that section,


gap> X3 := XModAlgebraBySurjection( nat3 );; 
gap> Display( X3 ); 

Crossed module [..->..] :- 
: Source algebra has generators:
  [ [ [ 0, 1, 2, 3 ], [ 0, 0, 1, 2 ], [ 0, 0, 0, 1 ], [ 0, 0, 0, 0 ] ] ]
: Range algebra has generators:
  [ v.1, v.2 ]
: Boundary homomorphism maps source generators to:
  [ v.1 ]

4.1-6 XModAlgebraByBoundaryAndAction
‣ XModAlgebraByBoundaryAndAction( bdy, act )( operation )
‣ PreXModAlgebraByBoundaryAndAction( bdy, act )( operation )
‣ IsPreXModAlgebra( X0 )( property )

An R-algebra homomorphism mathcalX := (∂ : S → R) which satisfies the condition XModAlg 1 is called a precrossed module. The details of these implementations can be found in [Oda09].


gap> G := SmallGroup( 4, 2 );
<pc group of size 4 with 2 generators>
gap> F := GaloisField( 4 );
GF(2^2)
gap> R := GroupRing( F, G );
<algebra-with-one over GF(2^2), with 2 generators>
gap> Size( R );
256
gap> SetName( R, "GF(2^2)[k4]" ); 
gap> e5 := Elements( R )[5]; 
(Z(2)^0)*<identity> of ...+(Z(2)^0)*f1+(Z(2)^0)*f2+(Z(2)^0)*f1*f2
gap> S := Subalgebra( R, [e5] );;
gap> SetName( S, "<e5>" );
gap> RS := Cartesian( R, S );; 
gap> SetName( RS, "GF(2^2)[k4] x <e5>" ); 
gap> act := AlgebraAction( R, RS, S );;
gap> bdy := AlgebraHomomorphismByFunction( S, R, r->r );
MappingByFunction( <e5>, GF(2^2)[k4], function( r ) ... end )
gap> IsAlgebraAction( act ); 
true
gap> IsAlgebraHomomorphism( bdy );
true
gap> XM := PreXModAlgebraByBoundaryAndAction( bdy, act );
[<e5>->GF(2^2)[k4]]
gap> IsXModAlgebra( XM );
true
gap> Display( XM );

Crossed module [<e5>->GF(2^2)[k4]] :- 
: Source algebra has generators:
  [ (Z(2)^0)*<identity> of ...+(Z(2)^0)*f1+(Z(2)^0)*f2+(Z(2)^0)*f1*f2 ]
: Range algebra GF(2^2)[k4] has generators:
  [ (Z(2)^0)*<identity> of ..., (Z(2)^0)*f1, (Z(2)^0)*f2 ]
: Boundary homomorphism maps source generators to:
  [ (Z(2)^0)*<identity> of ...+(Z(2)^0)*f1+(Z(2)^0)*f2+(Z(2)^0)*f1*f2 ]


4.1-7 XModAlgebraByModule
‣ XModAlgebraByModule( M, R )( operation )

Let M be a R-module. Then mathcalX = (0:M→ R) is a crossed module. Conversely, given a crossed module mathcalX = (∂ :M→ R), one can get that ker∂ is a (R/∂ M)-module.


gap> ## example needed 

4.1-8 Source
‣ Source( X0 )( attribute )
‣ Range( X0 )( attribute )
‣ Boundary( X0 )( attribute )
‣ XModAlgebraAction( X0 )( attribute )

These four attributes are used in the construction of a crossed module mathcalX where:

The following standard GAP operations have special XModAlg implementations:

In the following example, we construct a crossed module by using the algebra GF_5D_4 and its augmentation ideal. We also show usage of the attributes listed above.


gap> f := Boundary( XIAk4 );
MappingByFunction( I(GF5[k4]), GF5[k4], function( i ) ... end )
gap> Print( RepresentationsOfObject(XIAk4), "\n" ); 
[ "IsComponentObjectRep", "IsAttributeStoringRep", "IsPreXModAlgebraObj" ]
gap> props := [ "CanEasilyCompareElements", "CanEasilySortElements", 
>  "IsDuplicateFree", "IsLeftActedOnByDivisionRing", "IsAdditivelyCommutative", 
>  "IsLDistributive", "IsRDistributive", "IsPreXModDomain", "Is2dAlgebraObject", 
>  "IsPreXModAlgebra", "IsXModAlgebra" ];;
gap> known := KnownPropertiesOfObject( XIAk4 );;
gap> ForAll( props, p -> (p in known) );
true
gap> Print( KnownAttributesOfObject(XIAk4), "\n" ); 
[ "Name", "Range", "Source", "Boundary", "Size2d", "XModAlgebraAction" ]

4.1-9 SubXModAlgebra
‣ SubXModAlgebra( X0 )( operation )
‣ IsSubXModAlgebra( X0 )( operation )

A crossed module mathcalX^' = (∂ ^' :S^'→ R^' ) is a subcrossed module of the crossed module mathcalX = (∂ :S→ R) if S^' ≤ S, R^'≤ R, ∂^' = ∂|_S^' }, and the action of S^' on R^' is induced by the action of R on S. The operation SubXModAlgebra is used to construct a subcrossed module of a given crossed module.


gap> e4 := Elements( IAk4 )[4];
(Z(5)^0)*<identity> of ...+(Z(5)^0)*f1+(Z(5)^2)*f2+(Z(5)^2)*f1*f2
gap> Je4 := Ideal( IAk4, [e4] );;
gap> Size( Je4 );
5
gap> SetName( Je4, "<e4>" ); 
gap> XJe4 := XModAlgebraByIdeal( Ak4, Je4 );
[ <e4> -> GF5[k4] ]
gap> Display( XJe4 );        

Crossed module [<e4>->GF5[k4]] :- 
: Source algebra <e4> has generators:
  [ (Z(5)^0)*<identity> of ...+(Z(5)^0)*f1+(Z(5)^2)*f2+(Z(5)^2)*f1*f2 ]
: Range algebra GF5[k4] has generators:
  [ (Z(5)^0)*<identity> of ..., (Z(5)^0)*f1, (Z(5)^0)*f2 ]
: Boundary homomorphism maps source generators to:
  [ (Z(5)^0)*<identity> of ...+(Z(5)^0)*f1+(Z(5)^2)*f2+(Z(5)^2)*f1*f2 ]

gap> IsSubXModAlgebra( XIAk4, XJe4 );
true

4.2 (Pre-)Crossed Module Morphisms

Let mathcalX = (∂:S→ R), mathcalX^' = (∂^' :S^' → R^' ) be (pre)crossed modules and θ :S→ S^', φ : R→ R^' be algebra homomorphisms. If

\varphi \circ \partial = \partial ^{\prime } \circ \theta, \qquad \theta (r\cdot s)=\varphi(r) \cdot \theta (s),

for all r∈ R, s∈ S, then the pair (θ ,φ ) is called a morphism between mathcalX and mathcalX^'

The conditions can be thought as the commutativity of the following diagrams:

\xymatrix@R=40pt@C=40pt{ S \ar[d]_{\partial} \ar[r]^{\theta} & S^{\prime } \ar[d]^{\partial^{\prime }} \\ R \ar[r]_{\varphi} & R^{\prime } } \ \ \ \ \xymatrix@R=40pt@C=40pt{ R \times S \ar[d] \ar[r]^{ \varphi \times \theta } & R^{\prime } \times S^{\prime } \ar[d] \\ S \ar[r]_{ \theta } & S^{\prime }. }

In GAP we define the morphisms between algebraic structures such as cat^1-algebras and crossed modules and they are investigated by the function Make2dAlgebraMorphism.

4.2-1 XModAlgebraMorphism
‣ XModAlgebraMorphism( arg )( function )
‣ IdentityMapping( X0 )( method )
‣ PreXModAlgebraMorphismByHoms( f, g )( operation )
‣ XModAlgebraMorphismByHoms( f, g )( operation )
‣ IsPreXModAlgebraMorphism( f )( property )
‣ IsXModAlgebraMorphism( f )( property )
‣ Source( m )( attribute )
‣ Range( m )( attribute )
‣ IsTotal( m )( method )
‣ IsSingleValued( m )( method )
‣ Name( m )( method )

These operations construct crossed module homomorphisms, which may have the attributes listed.


gap> c4 := CyclicGroup( 4 );;
gap> Ac4 := GroupRing( GF(2), c4 );
<algebra-with-one over GF(2), with 2 generators>
gap> SetName( Ac4, "GF2[c4]" );
gap> IAc4 := AugmentationIdeal( Ac4 );
<two-sided ideal in GF2[c4], (dimension 3)>
gap> SetName( IAc4, "I(GF2[c4])" );
gap> XIAc4 := XModAlgebra( Ac4, IAc4 );
[ I(GF2[c4]) -> GF2[c4] ]
gap> Bk4 := GroupRing( GF(2), SmallGroup( 4, 2 ) );
<algebra-with-one over GF(2), with 2 generators>
gap> SetName( Bk4, "GF2[k4]" );
gap> IBk4 := AugmentationIdeal( Bk4 );
<two-sided ideal in GF2[k4], (dimension 3)>
gap> SetName( IBk4, "I(GF2[k4])" );
gap> XIBk4 := XModAlgebra( Bk4, IBk4 );
[ I(GF2[k4]) -> GF2[k4] ]
gap> IAc4 = IBk4;
false
gap> homIAIB := AllHomsOfAlgebras( IAc4, IBk4 );; 
gap> theta := homIAIB[3];; 
gap> homAB := AllHomsOfAlgebras( Ac4, Bk4 );;
gap> phi := homAB[7];; 
gap> mor := XModAlgebraMorphism( XIAc4, XIBk4, theta, phi );
[[I(GF2[c4])->GF2[c4]] => [I(GF2[k4])->GF2[k4]]]
gap> Display( mor );

Morphism of crossed modules :- 
: Source = [I(GF2[c4])->GF2[c4]]
:  Range = [I(GF2[k4])->GF2[k4]]
: Source Homomorphism maps source generators to:
  [ <zero> of ..., (Z(2)^0)*<identity> of ...+(Z(2)^0)*f1+(Z(2)^0)*f2+(Z(2)^
    0)*f1*f2, (Z(2)^0)*<identity> of ...+(Z(2)^0)*f1+(Z(2)^0)*f2+(Z(2)^
    0)*f1*f2 ]
: Range Homomorphism maps range generators to:
  [ (Z(2)^0)*<identity> of ..., (Z(2)^0)*f1+(Z(2)^0)*f2+(Z(2)^0)*f1*f2, 
  (Z(2)^0)*<identity> of ... ]

gap> IsTotal( mor );
true
gap> IsSingleValued( mor );
true

4.2-2 Kernel
‣ Kernel( X0 )( method )

Let (θ,φ) : mathcalX = (∂ : S → R) → mathcalX^' = (∂^' : S^' → R^') be a crossed module homomorphism. Then the crossed module

\ker(\theta,\varphi) = (\partial| : \ker\theta \rightarrow \ker\varphi )

is called the kernel of (θ,φ). Also, ker(θ ,φ ) is an ideal of mathcalX. An example is given below.


gap> Xmor := Kernel( mor );
[ <algebra of dimension 2 over GF(2)> -> <algebra of dimension 2 over GF(2)> ]
gap> IsXModAlgebra( Xmor );
true
gap> Size2d( Xmor );
[ 4, 4 ]
gap> IsSubXModAlgebra( XIAc4, Xmor );
true

4.2-3 Image
‣ Image( X0 )( operation )

Let (θ,φ) : mathcalX = (∂ : S → R) → mathcalX^' = (∂^' : S^' → R^') be a crossed module homomorphism. Then the crossed module

\Im(\theta,\varphi) = (\partial^{\prime}| : \Im\theta \rightarrow \Im\varphi)

is called the image of (θ,φ). Further, ℑ(θ,φ) is a subcrossed module of (S^',R^',∂^').

In this package, the image of a crossed module homomorphism can be obtained by the command ImagesSource. The operation Sub2dAlgObject is effectively used for finding the kernel and image crossed modules induced from a given crossed module homomorphism.

4.2-4 SourceHom
‣ SourceHom( m )( attribute )
‣ RangeHom( m )( attribute )
‣ IsInjective( m )( property )
‣ IsSurjective( m )( property )
‣ IsBijjective( m )( property )

Let (θ,φ) be a homomorphism of crossed modules. If the homomorphisms θ and φ are injective (surjective) then (θ,φ) is injective (surjective).

The attributes SourceHom and RangeHom store the two algebra homomorphisms θ and φ.


gap> ic4 := One( Ac4 );;                                      
gap> e1 := ic4*c4.1 + ic4*c4.2;
(Z(2)^0)*f1+(Z(2)^0)*f2
gap> ImageElm( theta, e1 );  
(Z(2)^0)*<identity> of ...+(Z(2)^0)*f1+(Z(2)^0)*f2+(Z(2)^0)*f1*f2
gap> e2 := ic4*c4.1;
(Z(2)^0)*f1
gap> ImageElm( phi, e2 );
(Z(2)^0)*f1+(Z(2)^0)*f2+(Z(2)^0)*f1*f2
gap> IsInjective( mor );
false
gap> IsSurjective( mor );
false
gap> immor := ImagesSource2DimensionalMapping( mor );;
gap> Display( immor );

Crossed module [..->..] :- 
: Source algebra has generators:
  [ (Z(2)^0)*<identity> of ...+(Z(2)^0)*f1+(Z(2)^0)*f2+(Z(2)^0)*f1*f2 ]
: Range algebra has generators:
  [ (Z(2)^0)*f1+(Z(2)^0)*f2+(Z(2)^0)*f1*f2, (Z(2)^0)*<identity> of ... ]
: Boundary homomorphism maps source generators to:
  [ (Z(2)^0)*<identity> of ...+(Z(2)^0)*f1+(Z(2)^0)*f2+(Z(2)^0)*f1*f2 ]


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

generated by GAPDoc2HTML