  
  [1X3 [33X[0;0YCrossed modules[133X[101X
  
  [33X[0;0YIn this chapter we will present the notion of crossed modules of commutative
  algebras and their implementation in this package.[133X
  
  
  [1X3.1 [33X[0;0YDefinition and Examples[133X[101X
  
  [33X[0;0YLet  [12Xk[112X  be  a fixed commutative ring with [22X1 ≠ 0[122X. From now on, all [12Xk[112X-algebras
  will be associative and commutative.[133X
  
  [33X[0;0YA  [13Xcrossed  module[113X is a [12Xk[112X-algebra morphism [22XmathcalX:=(∂:S→ R)[122X with an action
  of [22XR[122X on [22XS[122X satisfying[133X
  
  
  [24X[33X[0;6Y{\bf  XModAlg\  1}  ~:~  \partial(r  \cdot  s)  = r(\partial s), \qquad {\bf
  XModAlg\ 2} ~:~ (\partial s) \cdot s^{\prime} = ss^{\prime},[133X
  
  [124X
  
  [33X[0;0Yfor  all  [22Xs,s^'  ∈  S,  r∈  R[122X.  The morphism [22X∂[122X is called the [13Xboundary map[113X of
  [22XmathcalX[122X[133X
  
  [33X[0;0YIn  this  definition  we  used  the left action notation. In the category of
  commutative algebras the right and the left actions coincide.[133X
  
  [33X[0;0YWe can produce crossed modules by using the following methods.[133X
  
  [1X3.1-1 XModAlgebra[101X
  
  [33X[1;0Y[29X[2XXModAlgebra[102X( [3Xargs[103X ) [32X function[133X
  [33X[1;0Y[29X[2XXModAlgebraByBoundaryAndAction[102X( [3Xbdy[103X, [3Xact[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XXModAlgebraByIdeal[102X( [3XA[103X, [3XI[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XXModAlgebraByModule[102X( [3XM[103X, [3XR[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XXModAlgebraByCentralExtension[102X( [3Xf[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XXModAlgebraByMultipleAlgebra[102X( [3XA[103X ) [32X operation[133X
  
  [33X[0;0YHere are the standard constructions which these operations implement:[133X
  
  [30X    [33X[0;6YLet [22XA[122X be an algebra and [22XI[122X an ideal of [22XA[122X. Then [22XmathcalX = (inc:I→ A)[122X is
        a crossed module with the multiplication action of [22XA[122X on [22XI[122X. Conversely,
        given  a  crossed  module  [22XmathcalX = (∂ : S → R)[122X, it is the case that
        [22X∂(S)[122X is an ideal of [22XR[122X.[133X
  
  [30X    [33X[0;6YLet  [22XM[122X  be  a  [22XR[122X-module. Then [22XmathcalX = (0:M→ R)[122X is a crossed module.
        Conversely,  given  a crossed module [22XmathcalX = (∂ :M→ R)[122X, one can get
        that [22Xker∂[122X is a [22X(R/∂ M)[122X-module.[133X
  
  [30X    [33X[0;6YLet  [22X∂  : S→ R[122X be a surjective algebra homomorphism. Define the action
        of  [22XR[122X  on  [22XS[122X  by  [22Xr⋅  s = widetilders[122X where [22Xwidetilder ∈ ∂^-1(r)[122X. Then
        [22XmathcalX=(∂ : S→ R)[122X is a crossed module with the defined action.[133X
  
  [30X    [33X[0;6YLet  [22XS[122X  be a [12Xk[112X-algebra such that [22XAnn(S)=0[122X or [22XS^2 = S[122X. Then [22X∂ : S→ M(S)[122X
        is a crossed module, where [22XM(S)[122X is the algebra of multipliers of [22XS[122X and
        [22X∂[122X is the canonical homomorphism, [AE03].[133X
  
  [1X3.1-2 Source[101X
  
  [33X[1;0Y[29X[2XSource[102X( [3XX0[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XRange[102X( [3XX0[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XBoundary[102X( [3XX0[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XXModAlgebraAction[102X( [3XX0[103X ) [32X attribute[133X
  
  [33X[0;0YThese  four  attributes  are  used  in  the construction of a crossed module
  [22XmathcalX[122X where:[133X
  
  [30X    [33X[0;6Y[10XSource(X)[110X  and  [10XRange(X)[110X  are the [13Xsource[113X and the [13Xrange[113X of the boundary
        map respectively;[133X
  
  [30X    [33X[0;6Y[10XBoundary(X)[110X is the boundary map of the crossed module [22XmathcalX[122X;[133X
  
  [30X    [33X[0;6Y[10XXModAlgebraAction(X)[110X is the action used in the crossed module.[133X
  
  [33X[0;0YThe following standard [5XGAP[105X operations have special [5XXModAlg[105X implementations:[133X
  
  [30X    [33X[0;6Y[10XDisplay(X)[110X is used to list the components of [22XmathcalX[122X;[133X
  
  [30X    [33X[0;6Y[10XSize(X)[110X  is  used  for  calculating  the  order  of the crossed module
        [22XmathcalX[122X;[133X
  
  [30X    [33X[0;6Y[10XName(X)[110X  is  used  for giving a name to the crossed module [22XmathcalX[122X by
        associating the names of source and range algebras.[133X
  
  [33X[0;0YIn the following example, we construct a crossed module by using the algebra
  [22XGF_5D_4[122X  and  its  augmentation  ideal. We also show usage of the attributes
  listed above.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XAk4 := GroupRing( GF(5), DihedralGroup(4) );[127X[104X
    [4X[28X<algebra-with-one over GF(5), with 2 generators>[128X[104X
    [4X[25Xgap>[125X [27XSize( Ak4 );[127X[104X
    [4X[28X625[128X[104X
    [4X[25Xgap>[125X [27XSetName( Ak4, "GF5[k4]" );[127X[104X
    [4X[25Xgap>[125X [27XIAk4 := AugmentationIdeal( Ak4 );[127X[104X
    [4X[28X<two-sided ideal in GF5[k4], (2 generators)>[128X[104X
    [4X[25Xgap>[125X [27XSize( IAk4 );[127X[104X
    [4X[28X125[128X[104X
    [4X[25Xgap>[125X [27XSetName( IAk4, "I(GF5[k4])" );[127X[104X
    [4X[25Xgap>[125X [27XXIAk4 := XModAlgebraByIdeal( Ak4, IAk4 );[127X[104X
    [4X[28X[ I(GF5[k4]) -> GF5[k4] ][128X[104X
    [4X[25Xgap>[125X [27XDisplay( XIAk4 );[127X[104X
    [4X[28X[128X[104X
    [4X[28XCrossed module [I(GF5[k4])->GF5[k4]] :- [128X[104X
    [4X[28X: Source algebra I(GF5[k4]) has generators:[128X[104X
    [4X[28X  [ (Z(5)^2)*<identity> of ...+(Z(5)^0)*f1, (Z(5)^2)*<identity> of ...+(Z(5)^[128X[104X
    [4X[28X    0)*f2 ][128X[104X
    [4X[28X: Range algebra GF5[k4] has generators:[128X[104X
    [4X[28X  [ (Z(5)^0)*<identity> of ..., (Z(5)^0)*f1, (Z(5)^0)*f2 ][128X[104X
    [4X[28X: Boundary homomorphism maps source generators to:[128X[104X
    [4X[28X  [ (Z(5)^2)*<identity> of ...+(Z(5)^0)*f1, (Z(5)^2)*<identity> of ...+(Z(5)^[128X[104X
    [4X[28X    0)*f2 ][128X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XSize( XIAk4 );[127X[104X
    [4X[28X[ 125, 625 ][128X[104X
    [4X[25Xgap>[125X [27Xf := Boundary( XIAk4 );[127X[104X
    [4X[28XMappingByFunction( I(GF5[k4]), GF5[k4], function( i ) ... end )[128X[104X
    [4X[25Xgap>[125X [27XPrint( RepresentationsOfObject(XIAk4), "\n" ); [127X[104X
    [4X[28X[ "IsComponentObjectRep", "IsAttributeStoringRep", "IsPreXModAlgebraObj" ][128X[104X
    [4X[25Xgap>[125X [27Xprops := [ "CanEasilyCompareElements", "CanEasilySortElements", [127X[104X
    [4X[25X>[125X [27X "IsDuplicateFree", "IsLeftActedOnByDivisionRing", "IsAdditivelyCommutative", [127X[104X
    [4X[25X>[125X [27X "IsLDistributive", "IsRDistributive", "IsPreXModDomain", "Is2dAlgebraObject", [127X[104X
    [4X[25X>[125X [27X "IsPreXModAlgebra", "IsXModAlgebra" ];;[127X[104X
    [4X[25Xgap>[125X [27Xknown := KnownPropertiesOfObject( XIAk4 );;[127X[104X
    [4X[25Xgap>[125X [27XForAll( props, p -> (p in known) );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XPrint( KnownAttributesOfObject(XIAk4), "\n" ); [127X[104X
    [4X[28X[ "Name", "Size", "Range", "Source", "Boundary", "XModAlgebraAction" ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [1X3.1-3 SubXModAlgebra[101X
  
  [33X[1;0Y[29X[2XSubXModAlgebra[102X( [3XX0[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XIsSubXModAlgebra[102X( [3XX0[103X ) [32X operation[133X
  
  [33X[0;0YA  crossed  module  [22XmathcalX^' = (∂ ^' :S^'→ R^' )[122X is a subcrossed module of
  the  crossed module [22XmathcalX = (∂ :S→ R)[122X if [22XS^' ≤ S[122X, [22XR^'≤ R[122X, [22X∂^' = ∂|_S^' }[122X,
  and  the  action  of  [22XS^'[122X  on  [22XR^'[122X  is  induced by the action of [22XR[122X on [22XS[122X. The
  operation [10XSubXModAlgebra[110X is used to construct a subcrossed module of a given
  crossed module.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27Xe4 := Elements( IAk4 )[4];[127X[104X
    [4X[28X(Z(5)^0)*<identity> of ...+(Z(5)^0)*f1+(Z(5)^2)*f2+(Z(5)^2)*f1*f2[128X[104X
    [4X[25Xgap>[125X [27XJe4 := Ideal( IAk4, [e4] );[127X[104X
    [4X[28X<two-sided ideal in I(GF5[k4]), (1 generators)>[128X[104X
    [4X[25Xgap>[125X [27XSize( Je4 );[127X[104X
    [4X[28X5[128X[104X
    [4X[25Xgap>[125X [27XSetName( Je4, "<e4>" ); [127X[104X
    [4X[25Xgap>[125X [27XXJe4 := XModAlgebraByIdeal( Ak4, Je4 );[127X[104X
    [4X[28X[ <e4> -> GF5[k4] ][128X[104X
    [4X[25Xgap>[125X [27XDisplay( XJe4 );        [127X[104X
    [4X[28X[128X[104X
    [4X[28XCrossed module [<e4>->GF5[k4]] :- [128X[104X
    [4X[28X: Source algebra <e4> has generators:[128X[104X
    [4X[28X  [ (Z(5)^0)*<identity> of ...+(Z(5)^0)*f1+(Z(5)^2)*f2+(Z(5)^2)*f1*f2 ][128X[104X
    [4X[28X: Range algebra GF5[k4] has generators:[128X[104X
    [4X[28X  [ (Z(5)^0)*<identity> of ..., (Z(5)^0)*f1, (Z(5)^0)*f2 ][128X[104X
    [4X[28X: Boundary homomorphism maps source generators to:[128X[104X
    [4X[28X  [ (Z(5)^0)*<identity> of ...+(Z(5)^0)*f1+(Z(5)^2)*f2+(Z(5)^2)*f1*f2 ][128X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XIsSubXModAlgebra( XIAk4, XJe4 );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [1X3.1-4 PreXModAlgebraByBoundaryAndAction[101X
  
  [33X[1;0Y[29X[2XPreXModAlgebraByBoundaryAndAction[102X( [3Xbdy[103X, [3Xact[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XIsPreXModAlgebra[102X( [3XX0[103X ) [32X property[133X
  
  [33X[0;0YAn  [22XR[122X-algebra  homomorphism  [22XmathcalX  :=  (∂  :  S → R)[122X which satisfies the
  condition  [22XXModAlg  1[122X  is  called  a [13Xprecrossed module[113X. The details of these
  implementations can be found in [Oda09].[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XG := SmallGroup( 4, 2 );[127X[104X
    [4X[28X<pc group of size 4 with 2 generators>[128X[104X
    [4X[25Xgap>[125X [27XF := GaloisField( 4 );[127X[104X
    [4X[28XGF(2^2)[128X[104X
    [4X[25Xgap>[125X [27XR := GroupRing( F, G );[127X[104X
    [4X[28X<algebra-with-one over GF(2^2), with 2 generators>[128X[104X
    [4X[25Xgap>[125X [27XSize( R );[127X[104X
    [4X[28X256[128X[104X
    [4X[25Xgap>[125X [27XSetName( R, "GF(2^2)[k4]" ); [127X[104X
    [4X[25Xgap>[125X [27Xe5 := Elements( R )[5]; [127X[104X
    [4X[28X(Z(2)^0)*<identity> of ...+(Z(2)^0)*f1+(Z(2)^0)*f2+(Z(2)^0)*f1*f2[128X[104X
    [4X[25Xgap>[125X [27XS := Subalgebra( R, [e5] ); [127X[104X
    [4X[28X<algebra over GF(2^2), with 1 generators>[128X[104X
    [4X[25Xgap>[125X [27XSetName( S, "<e5>" );[127X[104X
    [4X[25Xgap>[125X [27XRS := Cartesian( R, S );; [127X[104X
    [4X[25Xgap>[125X [27XSetName( RS, "GF(2^2)[k4] x <e5>" ); [127X[104X
    [4X[25Xgap>[125X [27Xact := AlgebraAction( R, RS, S );;[127X[104X
    [4X[25Xgap>[125X [27Xbdy := AlgebraHomomorphismByFunction( S, R, r->r );[127X[104X
    [4X[28XMappingByFunction( <e5>, GF(2^2)[k4], function( r ) ... end )[128X[104X
    [4X[25Xgap>[125X [27XIsAlgebraAction( act ); [127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XIsAlgebraHomomorphism( bdy );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XXM := PreXModAlgebraByBoundaryAndAction( bdy, act );[127X[104X
    [4X[28X[<e5>->GF(2^2)[k4]][128X[104X
    [4X[25Xgap>[125X [27XIsXModAlgebra( XM );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XDisplay( XM );[127X[104X
    [4X[28X[128X[104X
    [4X[28XCrossed module [<e5>->GF(2^2)[k4]] :- [128X[104X
    [4X[28X: Source algebra has generators:[128X[104X
    [4X[28X  [ (Z(2)^0)*<identity> of ...+(Z(2)^0)*f1+(Z(2)^0)*f2+(Z(2)^0)*f1*f2 ][128X[104X
    [4X[28X: Range algebra GF(2^2)[k4] has generators:[128X[104X
    [4X[28X  [ (Z(2)^0)*<identity> of ..., (Z(2)^0)*f1, (Z(2)^0)*f2 ][128X[104X
    [4X[28X: Boundary homomorphism maps source generators to:[128X[104X
    [4X[28X  [ (Z(2)^0)*<identity> of ...+(Z(2)^0)*f1+(Z(2)^0)*f2+(Z(2)^0)*f1*f2 ][128X[104X
    [4X[28X[128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  
  [1X3.2 [33X[0;0Y(Pre-)Crossed Module Morphisms[133X[101X
  
  [33X[0;0YLet  [22XmathcalX  =  (∂:S→  R)[122X,  [22XmathcalX^' = (∂^' :S^' → R^' )[122X be (pre)crossed
  modules and [22Xθ :S→ S^'[122X, [22Xφ : R→ R^'[122X be algebra homomorphisms. If[133X
  
  
  [24X[33X[0;6Y\varphi  \circ  \partial  =  \partial ^{\prime } \circ \theta, \qquad \theta
  (r\cdot s)=\varphi(r) \cdot \theta (s),[133X
  
  [124X
  
  [33X[0;0Yfor  all  [22Xr∈  R[122X,  [22Xs∈  S,[122X  then the pair [22X(θ ,φ )[122X is called a morphism between
  [22XmathcalX[122X and [22XmathcalX^'[122X[133X
  
  [33X[0;0YThe  conditions  can  be  thought  as  the  commutativity  of  the following
  diagrams:[133X
  
  
  [24X[33X[0;6Y\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
  }. }[133X
  
  [124X
  
  [33X[0;0YIn  [5XGAP[105X  we  define  the  morphisms  between  algebraic  structures  such as
  cat[22X^1[122X-algebras and crossed modules and they are investigated by the function
  [10XMake2dAlgebraMorphism[110X.[133X
  
  [1X3.2-1 XModAlgebraMorphism[101X
  
  [33X[1;0Y[29X[2XXModAlgebraMorphism[102X( [3Xarg[103X ) [32X function[133X
  [33X[1;0Y[29X[2XIdentityMapping[102X( [3XX0[103X ) [32X method[133X
  [33X[1;0Y[29X[2XPreXModAlgebraMorphismByHoms[102X( [3Xf[103X, [3Xg[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XXModAlgebraMorphismByHoms[102X( [3Xf[103X, [3Xg[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XIsPreXModAlgebraMorphism[102X( [3Xf[103X ) [32X property[133X
  [33X[1;0Y[29X[2XIsXModAlgebraMorphism[102X( [3Xf[103X ) [32X property[133X
  [33X[1;0Y[29X[2XSource[102X( [3Xm[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XRange[102X( [3Xm[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XIsTotal[102X( [3Xm[103X ) [32X method[133X
  [33X[1;0Y[29X[2XIsSingleValued[102X( [3Xm[103X ) [32X method[133X
  [33X[1;0Y[29X[2XName[102X( [3Xm[103X ) [32X method[133X
  
  [33X[0;0YThese  operations construct crossed module homomorphisms, which may have the
  attributes listed.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XAc4 := GroupRing( GF(2), CyclicGroup(4) );[127X[104X
    [4X[28X<algebra-with-one over GF(2), with 2 generators>[128X[104X
    [4X[25Xgap>[125X [27XSetName( Ac4, "GF2[c4]" );[127X[104X
    [4X[25Xgap>[125X [27XIAc4 := AugmentationIdeal( Ac4 );[127X[104X
    [4X[28X<two-sided ideal in GF2[c4], (dimension 3)>[128X[104X
    [4X[25Xgap>[125X [27XSetName( IAc4, "I(GF2[c4])" );[127X[104X
    [4X[25Xgap>[125X [27XXIAc4 := XModAlgebra( Ac4, IAc4 );[127X[104X
    [4X[28X[ I(GF2[c4]) -> GF2[c4] ][128X[104X
    [4X[25Xgap>[125X [27XBk4 := GroupRing( GF(2), SmallGroup( 4, 2 ) );[127X[104X
    [4X[28X<algebra-with-one over GF(2), with 2 generators>[128X[104X
    [4X[25Xgap>[125X [27XSetName( Bk4, "GF2[k4]" );[127X[104X
    [4X[25Xgap>[125X [27XIBk4 := AugmentationIdeal( Bk4 );[127X[104X
    [4X[28X<two-sided ideal in GF2[k4], (dimension 3)>[128X[104X
    [4X[25Xgap>[125X [27XSetName( IBk4, "I(GF2[k4])" );[127X[104X
    [4X[25Xgap>[125X [27XXIBk4 := XModAlgebra( Bk4, IBk4 );[127X[104X
    [4X[28X[ I(GF2[k4]) -> GF2[k4] ][128X[104X
    [4X[25Xgap>[125X [27XIAc4 = IBk4;[127X[104X
    [4X[28Xfalse[128X[104X
    [4X[25Xgap>[125X [27XhomAB := AllHomsOfAlgebras( Ac4, Bk4 );;[127X[104X
    [4X[25Xgap>[125X [27XhomIAIB := AllHomsOfAlgebras( IAc4, IBk4 );;[127X[104X
    [4X[25Xgap>[125X [27Xmor := XModAlgebraMorphism( XIAc4, XIBk4, homIAIB[1], homAB[2] );[127X[104X
    [4X[28X[[I(GF2[c4])->GF2[c4]] => [I(GF2[k4])->GF2[k4]]][128X[104X
    [4X[25Xgap>[125X [27XDisplay( mor );[127X[104X
    [4X[28X[128X[104X
    [4X[28XMorphism of crossed modules :- [128X[104X
    [4X[28X: Source = [I(GF2[c4])->GF2[c4]][128X[104X
    [4X[28X:  Range = [I(GF2[k4])->GF2[k4]][128X[104X
    [4X[28X: Source Homomorphism maps source generators to:[128X[104X
    [4X[28X  [ <zero> of ..., <zero> of ..., <zero> of ... ][128X[104X
    [4X[28X: Range Homomorphism maps range generators to:[128X[104X
    [4X[28X  [ (Z(2)^0)*<identity> of ..., (Z(2)^0)*<identity> of ..., [128X[104X
    [4X[28X  (Z(2)^0)*<identity> of ... ][128X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XIsTotal( mor );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XIsSingleValued( mor );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [1X3.2-2 Kernel[101X
  
  [33X[1;0Y[29X[2XKernel[102X( [3XX0[103X ) [32X method[133X
  
  [33X[0;0YLet  [22X(θ,φ)  :  mathcalX  = (∂ : S → R) → mathcalX^' = (∂^' : S^' → R^')[122X be a
  crossed module homomorphism. Then the crossed module[133X
  
  
  [24X[33X[0;6Y\ker(\theta,\varphi) = (\partial| : \ker\theta \rightarrow \ker\varphi )[133X
  
  [124X
  
  [33X[0;0Yis  called the [13Xkernel[113X of [22X(θ,φ)[122X. Also, [22Xker(θ ,φ )[122X is an ideal of [22XmathcalX[122X. An
  example is given below.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XXmor := Kernel( mor );[127X[104X
    [4X[28X[ <algebra of dimension 3 over GF(2)> -> <algebra of dimension 3 over GF(2)> ][128X[104X
    [4X[25Xgap>[125X [27XIsXModAlgebra( Xmor );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XSize( Xmor );[127X[104X
    [4X[28X[ 8, 8 ][128X[104X
    [4X[25Xgap>[125X [27XIsSubXModAlgebra( XIAc4, Xmor );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [1X3.2-3 Image[101X
  
  [33X[1;0Y[29X[2XImage[102X( [3XX0[103X ) [32X operation[133X
  
  [33X[0;0YLet  [22X(θ,φ)  :  mathcalX  = (∂ : S → R) → mathcalX^' = (∂^' : S^' → R^')[122X be a
  crossed module homomorphism. Then the crossed module[133X
  
  
  [24X[33X[0;6Y\Im(\theta,\varphi)    =   (\partial^{\prime}|   :   \Im\theta   \rightarrow
  \Im\varphi)[133X
  
  [124X
  
  [33X[0;0Yis  called  the  image  of  [22X(θ,φ)[122X. Further, [22Xℑ(θ,φ)[122X is a subcrossed module of
  [22X(S^',R^',∂^')[122X.[133X
  
  [33X[0;0YIn  this package, the image of a crossed module homomorphism can be obtained
  by  the  command  [10XImagesSource[110X.  The operation [10XSub2dAlgObject[110X is effectively
  used  for  finding the kernel and image crossed modules induced from a given
  crossed module homomorphism.[133X
  
  [1X3.2-4 SourceHom[101X
  
  [33X[1;0Y[29X[2XSourceHom[102X( [3Xm[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XRangeHom[102X( [3Xm[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XIsInjective[102X( [3Xm[103X ) [32X property[133X
  [33X[1;0Y[29X[2XIsSurjective[102X( [3Xm[103X ) [32X property[133X
  [33X[1;0Y[29X[2XIsBijjective[102X( [3Xm[103X ) [32X property[133X
  
  [33X[0;0YLet [22X(θ,φ)[122X be a homomorphism of crossed modules. If the homomorphisms [22Xθ[122X and [22Xφ[122X
  are injective (surjective) then [22X(θ,φ)[122X is injective (surjective).[133X
  
  [33X[0;0YThe  attributes [10XSourceHom[110X and [10XRangeHom[110X store the two algebra homomorphisms [22Xθ[122X
  and [22Xφ[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27Xic4 := One( Ac4 );;                                      [127X[104X
    [4X[25Xgap>[125X [27Xtheta := SourceHom( mor );;[127X[104X
    [4X[25Xgap>[125X [27Xe1 := ic4*c4.1 + ic4*c4.2;[127X[104X
    [4X[28X(Z(2)^0)*f1+(Z(2)^0)*f2[128X[104X
    [4X[25Xgap>[125X [27XImageElm( theta, e1 );  [127X[104X
    [4X[28X<zero> of ...[128X[104X
    [4X[25Xgap>[125X [27Xphi := RangeHom( mor );;[127X[104X
    [4X[25Xgap>[125X [27Xe2 := ic4*c4.1;[127X[104X
    [4X[28X(Z(2)^0)*f1[128X[104X
    [4X[25Xgap>[125X [27XImageElm( phi, e2 );[127X[104X
    [4X[28X(Z(2)^0)*<identity> of ...[128X[104X
    [4X[25Xgap>[125X [27XIsInjective( mor );[127X[104X
    [4X[28Xfalse[128X[104X
    [4X[25Xgap>[125X [27XIsSurjective( mor );[127X[104X
    [4X[28Xfalse[128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
