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

2 Crossed modules
 2.1 Definition and Examples
 2.2 (Pre-)Crossed Module Morphisms

2 Crossed modules

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

2.1 Definition and Examples

Let k be a fixed commutative ring with 1 ≠ 0. From now on, all k-algebras will be associative and commutative.

A crossed module is a k-algebra morphism mathcalX:=(∂:S→ R) with an 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

In this definition we used the left action notation. In the category of commutative algebras the right and the left actions coincide.

We can produce crossed modules by using the following methods.

2.1-1 XModAlgebra
‣ XModAlgebra( args )( function )
‣ XModAlgebraByBoundaryAndAction( bdy, act )( operation )
‣ XModAlgebraByIdeal( A, I )( operation )
‣ XModAlgebraByModule( M, R )( operation )
‣ XModAlgebraByCentralExtension( f )( operation )
‣ XModAlgebraByMultipleAlgebra( A )( operation )

Here are the standard constructions which these operations implement:

2.1-2 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> A := GroupRing(GF(5),DihedralGroup(4));
<algebra-with-one over GF(5), with 2 generators>
gap> Size(A);
625
gap> SetName(A,"GF5[D4]");
gap> I := AugmentationIdeal(A);
<two-sided ideal in GF5[D4], (2 generators)>
gap> Size(I);
125
gap> SetName(I,"Aug");
gap> CM := XModAlgebraByIdeal(A,I);
[Aug->GF5[D4]]
gap> Display(CM);

Crossed module [Aug->GF5[D4]] :- 
: Source algebra Aug has generators:
  [ (Z(5)^2)*<identity> of ...+(Z(5)^0)*f1, (Z(5)^2)*<identity> of ...
  +(Z(5)^0)*f2 ]
: Range algebra GF5[D4] 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> Size(CM);
[ 125, 625 ]
gap> f := Boundary(CM);
MappingByFunction( Aug, GF5[D4], function( i ) ... end )
gap> Print( RepresentationsOfObject(CM), "\n" ); 
[ "IsComponentObjectRep", "IsAttributeStoringRep", "IsPreXModAlgebraObj" ]
gap> props := [ "CanEasilyCompareElements", "CanEasilySortElements", 
>  "IsDuplicateFree", "IsLeftActedOnByDivisionRing", "IsAdditivelyCommutative", 
>  "IsLDistributive", "IsRDistributive", "IsPreXModDomain", "Is2dAlgebraObject", 
>  "IsPreXModAlgebra", "IsXModAlgebra" ];;
gap> known := KnownPropertiesOfObject(CM);;
gap> ForAll( props, p -> (p in known) );
true 
gap> Print( KnownAttributesOfObject(CM), "\n" ); 
[ "Name", "Size", "Range", "Source", "Boundary", "XModAlgebraAction" ]

2.1-3 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(I)[4];
(Z(5)^0)*<identity> of ...+(Z(5)^0)*f1+(Z(5)^2)*f2+(Z(5)^2)*f1*f2
gap> J := Ideal( I, [e4] );
<two-sided ideal in Aug, (1 generators)>
gap> Size(J);
5
gap> SetName( J, "<e4>" ); 
gap> PM := XModAlgebraByIdeal( A, J );
[<e4>->GF5[D4]]
gap> Display( PM );        

Crossed module [<e4>->GF5[D4]] :- 
: 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[D(4)] 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( CM, PM );
true

2.1-4 PreXModAlgebraByBoundaryAndAction
‣ PreXModAlgebraByBoundaryAndAction( bdy, act )( operation )
‣ IsPreXModAlgebra( X0 )( property )

An R-algebra homomorphism mathcalX := (∂ : S → R) which satisfy 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] ); 
<algebra over GF(2^2), with 1 generators>
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 ]

2.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 Make2AlgMorphism.

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

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


gap> A:=GroupRing(GF(2),CyclicGroup(4));
<algebra-with-one over GF(2), with 2 generators>
gap> B:=AugmentationIdeal(A);
<two-sided ideal in <algebra-with-one over GF(2), with 2 generators>, 
(dimension 3)>
gap> X1:=XModAlgebra(A,B);
[Algebra( GF(2), [ (Z(2)^0)*<identity> of ...+(Z(2)^0)*f2, 
(Z(2)^0)*f1+(Z(2)^0)*f2, (Z(2)^0)*f2+(Z(2)^0)*f1*f2
 ] )->AlgebraWithOne( GF(2), [ (Z(2)^0)*f1, (Z(2)^0)*f2 ] )]
gap> C:=GroupRing(GF(2),SmallGroup(4,2));
<algebra-with-one over GF(2), with 2 generators>
gap> D:=AugmentationIdeal(C);
<two-sided ideal in <algebra-with-one over GF(2), with 2 generators>, 
(dimension 3)>
gap> X2:=XModAlgebra(C,D);
[Algebra( GF(2), [ (Z(2)^0)*<identity> of ...+(Z(2)^0)*f2, 
(Z(2)^0)*f1+(Z(2)^0)*f2, (Z(2)^0)*f2+(Z(2)^0)*f1*f2
 ] )->AlgebraWithOne( GF(2), [ (Z(2)^0)*f1, (Z(2)^0)*f2 ] )]
gap> B = D;
false
gap> all_f := AllHomsOfAlgebras(A,C);;
gap> all_g := AllHomsOfAlgebras(B,D);;
gap> mor := XModAlgebraMorphism(X1,X2,all_g[1],all_f[2]);
[[..] => [..]]
gap> Display(mor);

Morphism of crossed modules :-
: Source = [Algebra( GF(2), [ (Z(2)^0)*<identity> of ...+(Z(2)^0)*f2, 
  (Z(2)^0)*f1+(Z(2)^0)*f2, (Z(2)^0)*f2+(Z(2)^0)*f1*f2 ] )->AlgebraWithOne( GF(2), 
  [ (Z(2)^0)*f1, (Z(2)^0)*f2 ] )] with generating sets:
  [ (Z(2)^0)*<identity> of ...+(Z(2)^0)*f2, (Z(2)^0)*f1+(Z(2)^0)*f2, 
  (Z(2)^0)*f2+(Z(2)^0)*f1*f2 ]
  [ (Z(2)^0)*<identity> of ..., (Z(2)^0)*f1, (Z(2)^0)*f2 ]
:  Range = [Algebra( GF(2), [ (Z(2)^0)*<identity> of ...+(Z(2)^0)*f2, 
  (Z(2)^0)*f1+(Z(2)^0)*f2, (Z(2)^0)*f2+(Z(2)^0)*f1*f2 ] )->AlgebraWithOne( GF(2), 
  [ (Z(2)^0)*f1, (Z(2)^0)*f2 ] )] with generating sets:
  [ (Z(2)^0)*<identity> of ...+(Z(2)^0)*f2, (Z(2)^0)*f1+(Z(2)^0)*f2, 
  (Z(2)^0)*f2+(Z(2)^0)*f1*f2 ] 
  [ (Z(2)^0)*<identity> of ..., (Z(2)^0)*f1, (Z(2)^0)*f2 ]
: Source Homomorphism maps source generators to:
  [ <zero> of ..., <zero> of ..., <zero> of ... ]
: Range Homomorphism maps range generators to:
  [ (Z(2)^0)*<identity> of ..., (Z(2)^0)*<identity> of ..., 
  (Z(2)^0)*<identity> of ... ]

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


2.2-2 Kernel
‣ Kernel( X0 )( operation )

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> X3 := Kernel(mor);
[Algebra( GF(2), [ (Z(2)^0)*<identity> of ...+(Z(2)^0)*f2, 
(Z(2)^0)*f1+(Z(2)^0)*f2, (Z(2)^0)*f2+(Z(2)^0)*f1*f2
 ] )->Algebra( GF(2), [ (Z(2)^0)*f1+(Z(2)^0)*f2, 
 (Z(2)^0)*f1+(Z(2)^0)*f1*f2, (Z(2)^0)*<identity> of ...+(Z(2)^0)*f1
 ] )]
gap> IsXModAlgebra(X3);
true
gap> Size(X3);
[ 8, 8 ]
gap> IsSubXModAlgebra(X1,X3);
true

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

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

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

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

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

2.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> theta := SourceHom(mor);
[ (Z(2)^0)*<identity> of ...+(Z(2)^0)*f2, (Z(2)^0)*f1+(Z(2)^0)*f2, 
(Z(2)^0)*f2+(Z(2)^0)*f1*f2 ] ->
[ <zero> of ..., <zero> of ..., <zero> of ... ]
gap> phi := RangeHom(mor);
[ (Z(2)^0)*f1 ] -> [ (Z(2)^0)*<identity> of ... ]
gap> IsInjective(mor);
false
gap> IsSurjective(mor);
false

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

generated by GAPDoc2HTML