  
  [1X3 [33X[0;0YCat1-algebras[133X[101X
  
  
  [1X3.1 [33X[0;0YDefinitions and examples[133X[101X
  
  [33X[0;0YAlgebraic  structures  which  are  equivalent to crossed modules of algebras
  include :[133X
  
  [30X    [33X[0;6Ycat[22X^1[122X-algebras. (Ellis, [Ell88]);[133X
  
  [30X    [33X[0;6Ysimplicial  algebras  with  Moore  complex  of length 1 (Z. Arvasi and
        T.Porter, [AP96]);[133X
  
  [30X    [33X[0;6Yalgebra-algebroids (Gaffar Musa's Ph.D. thesis, [Mos86]).[133X
  
  [33X[0;0YIn  this  section  we describe an implementation of cat[22X^1[122X-algebras and their
  morphisms.[133X
  
  [33X[0;0YThe  notion  of cat[22X^1[122X-groups was defined as an algebraic model of [22X2[122X-types by
  Loday in [Lod82]. Then Ellis defined the cat[22X^1[122X-algebras in [Ell88].[133X
  
  [33X[0;0YLet [22XA[122X and [22XR[122X be [22Xk[122X-algebras, let [22Xt,h:A→ R[122X be surjections, and let [22Xe:R→ A[122X be an
  inclusion.[133X
  
  
        [33X[1;6Y[24X[33X[0;0Y\xymatrix@R=50pt@C=50pt{ A \ar@{->}@<-1.5pt>[d]_{t}
        \ar@{->}@<1.5pt>[d]^{h} \\ R \ar@/^1.5pc/[u]^{e} }[133X [124X[133X
  
  
  [33X[0;0YIf the conditions,[133X
  
  
        [33X[1;6Y[24X[33X[0;0Y\mathbf{Cat1Alg1:} \quad te = id_{R} = he, \qquad \mathbf{Cat1Alg2:}
        \quad (\ker t)(\ker h) = \{0_{A}\}[133X [124X[133X
  
  
  [33X[0;0Yare  satisfied,  then  the  algebraic  system [22XmathcalC := (e;t,h : A → R)[122X is
  called   a   cat[22X^1[122X-algebra.   The   system   which   satisfy  the  condition
  [22XmathbfCat1Alg1[122X is called a [13Xprecat[22X^1[122X-algebra[113X. The homomorphisms [22Xt,h[122X and [22Xe[122X are
  called the [13Xtail[113X, [13Xhead[113X and [13Xembedding[113X homomorphisms, respectively.[133X
  
  [1X3.1-1 Cat1[101X
  
  [29X[2XCat1[102X( [3Xargs[103X ) [32X function
  [29X[2XPreCat1ByTailHeadEmbedding[102X( [3Xt[103X, [3Xh[103X, [3Xe[103X ) [32X operation
  [29X[2XPreCat1ByEndomorphisms[102X( [3Xt[103X, [3Xh[103X ) [32X operation
  [29X[2XPreCat1AlgebraObj[102X( [3XC[103X ) [32X operation
  [29X[2XPreCat1Algebra[102X( [3XC[103X ) [32X operation
  [29X[2XIsIdentityCat1Algebra[102X( [3XC[103X ) [32X property
  [29X[2XIsCat1Algebra[102X( [3XC[103X ) [32X property
  [29X[2XIsPreCat1Algebra[102X( [3XC[103X ) [32X property
  
  [33X[0;0YThe  operations  listed  above  are  used  for  construction of precat[22X^1[122X and
  cat[22X^1[122X-algebra  structures.  The  function  [10XCat1Algebra[110X selects the operation
  from   the   above   implementations  up  to  user's  input.  The  operation
  [10XPreCat1AlgebraObj[110X is used for preserving the implementations,[133X
  
  [1X3.1-2 Source[101X
  
  [29X[2XSource[102X( [3XC[103X ) [32X attribute
  [29X[2XRange[102X( [3XC[103X ) [32X attribute
  [29X[2XTail[102X( [3XC[103X ) [32X attribute
  [29X[2XHead[102X( [3XC[103X ) [32X attribute
  [29X[2XEmbedding[102X( [3XC[103X ) [32X attribute
  [29X[2XKernel[102X( [3XC[103X ) [32X attribute
  [29X[2XBoundary[102X( [3XC[103X ) [32X attribute
  
  [33X[0;0YThese are the seven main attributes of a pre-cat[22X^1[122X-algebra.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XA := GroupRing(GF(2),Group((1,2,3)(4,5)));[127X[104X
    [4X[28X<algebra-with-one over GF(2), with 1 generators>[128X[104X
    [4X[25Xgap>[125X [27XR := GroupRing(GF(2),Group((1,2,3)));[127X[104X
    [4X[28X<algebra-with-one over GF(2), with 1 generators>[128X[104X
    [4X[25Xgap>[125X [27Xf := AllHomsOfAlgebras(A,R);[127X[104X
    [4X[28X[ [ (Z(2)^0)*(1,3,2)(4,5) ] -> [ <zero> of ... ], [128X[104X
    [4X[28X  [ (Z(2)^0)*(1,3,2)(4,5) ] -> [ (Z(2)^0)*() ],[128X[104X
    [4X[28X  [ (Z(2)^0)*(1,3,2)(4,5) ] -> [ (Z(2)^0)*()+(Z(2)^0)*(1,2,3) ],[128X[104X
    [4X[28X  [ (Z(2)^0)*(1,3,2)(4,5) ] -> [ (Z(2)^0)*()+(Z(2)^0)*(1,2,3)+(Z(2)^0)*(1,3,2) ],[128X[104X
    [4X[28X  [ (Z(2)^0)*(1,3,2)(4,5) ] -> [ (Z(2)^0)*()+(Z(2)^0)*(1,3,2) ], [128X[104X
    [4X[28X  [ (Z(2)^0)*(1,3,2)(4,5) ] -> [ (Z(2)^0)*(1,2,3) ],[128X[104X
    [4X[28X  [ (Z(2)^0)*(1,3,2)(4,5) ] -> [ (Z(2)^0)*(1,2,3)+(Z(2)^0)*(1,3,2) ], [128X[104X
    [4X[28X  [ (Z(2)^0)*(1,3,2)(4,5) ] -> [ (Z(2)^0)*(1,3,2)[128X[104X
    [4X[28X     ] ][128X[104X
    [4X[25Xgap>[125X [27Xg := AllHomsOfAlgebras(R,A);[127X[104X
    [4X[28X[ [ (Z(2)^0)*(1,2,3) ] -> [ <zero> of ... ], [128X[104X
    [4X[28X  [ (Z(2)^0)*(1,2,3) ] -> [ (Z(2)^0)*() ],[128X[104X
    [4X[28X  [ (Z(2)^0)*(1,2,3) ] -> [ (Z(2)^0)*()+(Z(2)^0)*(1,2,3) ],[128X[104X
    [4X[28X  [ (Z(2)^0)*(1,2,3) ] -> [ (Z(2)^0)*()+(Z(2)^0)*(1,2,3)+(Z(2)^0)*(1,3,2) ],[128X[104X
    [4X[28X  [ (Z(2)^0)*(1,2,3) ] -> [ (Z(2)^0)*()+(Z(2)^0)*(1,3,2) ], [128X[104X
    [4X[28X  [ (Z(2)^0)*(1,2,3) ] -> [ (Z(2)^0)*(1,2,3) ],[128X[104X
    [4X[28X  [ (Z(2)^0)*(1,2,3) ] -> [ (Z(2)^0)*(1,2,3)+(Z(2)^0)*(1,3,2) ], [128X[104X
    [4X[28X  [ (Z(2)^0)*(1,2,3) ] -> [ (Z(2)^0)*(1,3,2) ] ][128X[104X
    [4X[25Xgap>[125X [27XC4 := PreCat1ByTailHeadEmbedding(f[6],f[6],g[8]);[127X[104X
    [4X[28X[AlgebraWithOne( GF(2), [ (Z(2)^0)*(1,2,3)(4,5) ] ) -> AlgebraWithOne( GF(2), [128X[104X
    [4X[28X  [ (Z(2)^0)*(1,2,3) ] )][128X[104X
    [4X[25Xgap>[125X [27XIsCat1Algebra(C4);[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XSize(C4);[127X[104X
    [4X[28X[ 64, 8 ][128X[104X
    [4X[25Xgap>[125X [27XDisplay(C4);[127X[104X
    [4X[28X[128X[104X
    [4X[28XCat1-algebra [..=>..] :-[128X[104X
    [4X[28X: source algebra has generators:[128X[104X
    [4X[28X  [ (Z(2)^0)*(), (Z(2)^0)*(1,2,3)(4,5) ][128X[104X
    [4X[28X:  range algebra has generators:[128X[104X
    [4X[28X  [ (Z(2)^0)*(), (Z(2)^0)*(1,2,3) ][128X[104X
    [4X[28X: tail homomorphism maps source generators to:[128X[104X
    [4X[28X  [ (Z(2)^0)*(), (Z(2)^0)*(1,3,2) ][128X[104X
    [4X[28X: head homomorphism maps source generators to:[128X[104X
    [4X[28X  [ (Z(2)^0)*(), (Z(2)^0)*(1,3,2) ][128X[104X
    [4X[28X: range embedding maps range generators to:[128X[104X
    [4X[28X  [ (Z(2)^0)*(), (Z(2)^0)*(1,3,2) ][128X[104X
    [4X[28X: kernel has generators:[128X[104X
    [4X[28X  [ (Z(2)^0)*()+(Z(2)^0)*(4,5), (Z(2)^0)*(1,2,3)+(Z(2)^0)*(1,2,3)(4,5), [128X[104X
    [4X[28X  (Z(2)^0)*(1,3,2)+(Z(2)^0)*(1,3,2)(4,5) ][128X[104X
    [4X[28X: boundary homomorphism maps generators of kernel to:[128X[104X
    [4X[28X  [ <zero> of ..., <zero> of ..., <zero> of ... ][128X[104X
    [4X[28X: kernel embedding maps generators of kernel to:[128X[104X
    [4X[28X  [ (Z(2)^0)*()+(Z(2)^0)*(4,5), (Z(2)^0)*(1,2,3)+(Z(2)^0)*(1,2,3)(4,5), [128X[104X
    [4X[28X  (Z(2)^0)*(1,3,2)+(Z(2)^0)*(1,3,2)(4,5) ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [1X3.1-3 Cat1AlgebraSelect[101X
  
  [29X[2XCat1AlgebraSelect[102X( [3Xgf[103X, [3Xgpsize[103X, [3Xgpnum[103X, [3Xnum[103X ) [32X operation
  
  [33X[0;0YThe  Cat1Algebra  function may also be used to select a cat[22X^1[122X-algebra from a
  data file. All cat[22X^1[122X-structures on commutative algebras are stored in a list
  in file cat1algdata.g. The data is read into the list CAT1ALG_LIST only when
  this  function is called. The function Cat1AlgebraSelect may be used in four
  ways:[133X
  
  [30X    [33X[0;6YCat1AlgebraSelect(  gf  )  returns the list of possible size of Galois
        field or the list of possible size of groups with given Galois field.[133X
  
  [30X    [33X[0;6YCat1AlgebraSelect(  gf,  gpsize ) returns the list of possible size of
        group  with  given  Galois  fields  or  the list of possible number of
        groups with given Galois field and size of group.[133X
  
  [30X    [33X[0;6YCat1AlgebraSelect(  gf,  gpsize,  gpnum ) returns the list of possible
        number  of group with given Galois field and size of group or the list
        of possible cat[22X^1[122X-structures with given Galois field and group.[133X
  
  [30X    [33X[0;6YCat1AlgebraSelect(  gf, gpsize, gpnum, num ) (or just Cat1Algebra( gf,
        gpsize, gpnum, num )) returns the chosen cat[22X^1[122X-algebra.[133X
  
  [33X[0;0YNow, we will give an example for the usage of this function.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XC := Cat1AlgebraSelect(11);[127X[104X
    [4X[28X|--------------------------------------------------------|[128X[104X
    [4X[28X| 11 is invalid number for Galois Field (gf)             |[128X[104X
    [4X[28X| Possible numbers for the gf in the Data :              |[128X[104X
    [4X[28X|--------------------------------------------------------|[128X[104X
    [4X[28X [ 2, 3, 4, 5, 7 ][128X[104X
    [4X[28XUsage: Cat1Algebra( gf, gpsize, gpnum, num );[128X[104X
    [4X[28Xfail[128X[104X
    [4X[25Xgap>[125X [27XC := Cat1AlgebraSelect(4,12);[127X[104X
    [4X[28X|--------------------------------------------------------|[128X[104X
    [4X[28X| 12 is invalid number for size of group (gpsize)        |[128X[104X
    [4X[28X| Possible numbers for the gpsize for GF(4) in the Data: |[128X[104X
    [4X[28X|--------------------------------------------------------|[128X[104X
    [4X[28X [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ][128X[104X
    [4X[28XUsage: Cat1Algebra( gf, gpsize, gpnum, num );[128X[104X
    [4X[28Xfail[128X[104X
    [4X[25Xgap>[125X [27XC := Cat1AlgebraSelect(2,6,3);[127X[104X
    [4X[28X|--------------------------------------------------------|[128X[104X
    [4X[28X| 3 is invalid number for group of order 6               |[128X[104X
    [4X[28X| Possible numbers for the gpnum in the Data :           |[128X[104X
    [4X[28X|--------------------------------------------------------|[128X[104X
    [4X[28X [ 1, 2 ][128X[104X
    [4X[28XUsage: Cat1Algebra( gf, gpsize, gpnum, num );[128X[104X
    [4X[28Xfail[128X[104X
    [4X[25Xgap>[125X [27XC := Cat1AlgebraSelect(2,6,2);[127X[104X
    [4X[28XThere are 4 cat1-structures for the algebra GF(2)_c6.[128X[104X
    [4X[28X Range Alg      Tail                    Head[128X[104X
    [4X[28X|--------------------------------------------------------|[128X[104X
    [4X[28X| GF(2)_c6      identity map            identity map     |[128X[104X
    [4X[28X| -----         [ 2, 10 ]               [ 2, 10 ]        |[128X[104X
    [4X[28X| -----         [ 2, 14 ]               [ 2, 14 ]        |[128X[104X
    [4X[28X| -----         [ 2, 50 ]               [ 2, 50 ]        |[128X[104X
    [4X[28X|--------------------------------------------------------|[128X[104X
    [4X[28XUsage: Cat1Algebra( gf, gpsize, gpnum, num );[128X[104X
    [4X[28XAlgebra has generators [ (Z(2)^0)*(), (Z(2)^0)*(1,2,3)(4,5) ][128X[104X
    [4X[28X4[128X[104X
    [4X[25Xgap>[125X [27XC2 := Cat1AlgebraSelect( 4, 6, 2, 2 );[127X[104X
    [4X[28X[GF(2^2)_c6 -> Algebra( GF(2^2),[128X[104X
    [4X[28X[ (Z(2)^0)*(), (Z(2)^0)*()+(Z(2)^0)*(1,3,5)(2,4,6)+(Z(2)^0)*(1,4)(2,5)(3,6)+([128X[104X
    [4X[28X    Z(2)^0)*(1,5,3)(2,6,4)+(Z(2)^0)*(1,6,5,4,3,2) ] )][128X[104X
    [4X[25Xgap>[125X [27XSize( C2 ); [127X[104X
    [4X[28X[ 4096, 1024 ][128X[104X
    [4X[25Xgap>[125X [27XDisplay( C2 ); [127X[104X
    [4X[28X[128X[104X
    [4X[28XCat1-algebra [GF(2^2)_c6=>..] :-[128X[104X
    [4X[28X: source algebra has generators:[128X[104X
    [4X[28X  [ (Z(2)^0)*(), (Z(2)^0)*(1,2,3,4,5,6) ][128X[104X
    [4X[28X:  range algebra has generators:[128X[104X
    [4X[28X  [ (Z(2)^0)*(), (Z(2)^0)*()+(Z(2)^0)*(1,3,5)(2,4,6)+(Z(2)^0)*(1,4)(2,5)[128X[104X
    [4X[28X    (3,6)+(Z(2)^0)*(1,5,3)(2,6,4)+(Z(2)^0)*(1,6,5,4,3,2) ][128X[104X
    [4X[28X: tail homomorphism maps source generators to:[128X[104X
    [4X[28X  [ (Z(2)^0)*(), (Z(2)^0)*()+(Z(2)^0)*(1,3,5)(2,4,6)+(Z(2)^0)*(1,4)(2,5)[128X[104X
    [4X[28X    (3,6)+(Z(2)^0)*(1,5,3)(2,6,4)+(Z(2)^0)*(1,6,5,4,3,2) ][128X[104X
    [4X[28X: head homomorphism maps source generators to:[128X[104X
    [4X[28X  [ (Z(2)^0)*(), (Z(2)^0)*()+(Z(2)^0)*(1,3,5)(2,4,6)+(Z(2)^0)*(1,4)(2,5)[128X[104X
    [4X[28X    (3,6)+(Z(2)^0)*(1,5,3)(2,6,4)+(Z(2)^0)*(1,6,5,4,3,2) ][128X[104X
    [4X[28X: range embedding maps range generators to:[128X[104X
    [4X[28X  [ (Z(2)^0)*(), (Z(2)^0)*()+(Z(2)^0)*(1,3,5)(2,4,6)+(Z(2)^0)*(1,4)(2,5)[128X[104X
    [4X[28X    (3,6)+(Z(2)^0)*(1,5,3)(2,6,4)+(Z(2)^0)*(1,6,5,4,3,2) ][128X[104X
    [4X[28X: kernel has generators:[128X[104X
    [4X[28X  [ (Z(2)^0)*()+(Z(2)^0)*(1,2,3,4,5,6)+(Z(2)^0)*(1,3,5)(2,4,6)+(Z(2)^0)*(1,4)[128X[104X
    [4X[28X    (2,5)(3,6)+(Z(2)^0)*(1,5,3)(2,6,4)+(Z(2)^0)*(1,6,5,4,3,2) ][128X[104X
    [4X[28X: boundary homomorphism maps generators of kernel to:[128X[104X
    [4X[28X  [ <zero> of ... ][128X[104X
    [4X[28X: kernel embedding maps generators of kernel to:[128X[104X
    [4X[28X  [ (Z(2)^0)*()+(Z(2)^0)*(1,2,3,4,5,6)+(Z(2)^0)*(1,3,5)(2,4,6)+(Z(2)^0)*(1,4)[128X[104X
    [4X[28X    (2,5)(3,6)+(Z(2)^0)*(1,5,3)(2,6,4)+(Z(2)^0)*(1,6,5,4,3,2) ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [1X3.1-4 SubCat1Algebra[101X
  
  [29X[2XSubCat1Algebra[102X( [3Xarg[103X ) [32X operation
  [29X[2XSubPreCat1Algebra[102X( [3Xarg[103X ) [32X operation
  [29X[2XIsSubCat1Algebra[102X( [3Xarg[103X ) [32X property
  [29X[2XIsSubPreCat1Algebra[102X( [3Xarg[103X ) [32X property
  
  [33X[0;0YLet  [22XmathcalC  =  (e;t,h:A→  R)[122X  be  a  cat[22X^1[122X-algebra,  and  let [22XA^'[122X, [22XR^'[122X be
  subalgebras of [22XA[122X and [22XR[122X respectively. If the restriction morphisms[133X
  
  
        [33X[1;6Y[24X[33X[0;0Yt^{\prime} = t|_{A^{\prime}} : A^{\prime}\rightarrow R^{\prime},
        \qquad h^{\prime} = h|_{A^{\prime}} : A^{\prime}\rightarrow
        R^{\prime}, \qquad e^{\prime} = e|_{R^{\prime}} :
        R^{\prime}\rightarrow A^{\prime}[133X [124X[133X
  
  
  [33X[0;0Ysatisfy  the  [22XmathbfCat1Alg1[122X  and [22XmathbfCat1Alg2[122X conditions, then the system
  [22XmathcalC^'  =  (e^';t^',h^'  :  A^'  →  R^')[122X is called a [13Xsubcat[22X^1[122X-algebra[113X of
  [22XmathcalC = (e;t,h:A→ R)[122X.[133X
  
  [33X[0;0YIf  the  morphisms satisfy only the [22XmathbfCat1Alg1[122X condition then [22XmathcalC^'[122X
  is called a [13Xsub-precat[22X^1[122X-algebra[113X of [22XmathcalC[122X.[133X
  
  [33X[0;0YThe    operations   in   this   subsection   are   used   for   constructing
  subcat[22X^1[122X-algebras of a given cat[22X^1[122X-algebra.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XC3 := Cat1AlgebraSelect( 2, 6, 2, 4 );; [127X[104X
    [4X[25Xgap>[125X [27XA3 := Source( C3 );[127X[104X
    [4X[28XGF(2)_c6[128X[104X
    [4X[25Xgap>[125X [27XB3 := Range( C3 ); [127X[104X
    [4X[28XGF(2)_c3[128X[104X
    [4X[25Xgap>[125X [27XeA3 := Elements( A3 );;[127X[104X
    [4X[25Xgap>[125X [27XeB3 := Elements( B3 );;[127X[104X
    [4X[25Xgap>[125X [27XAA3 := Subalgebra( A3, [ eA3[1], eA3[2], eA3[3] ] );[127X[104X
    [4X[28X<algebra over GF(2), with 3 generators>[128X[104X
    [4X[25Xgap>[125X [27X[ Size(A3), Size(AA3) ]; [127X[104X
    [4X[28X[ 64, 4 ][128X[104X
    [4X[25Xgap>[125X [27XBB3 := Subalgebra( B3, [ eB3[1], eB3[2] ] ); [127X[104X
    [4X[28X<algebra over GF(2), with 2 generators>[128X[104X
    [4X[25Xgap>[125X [27X[ Size(B3), Size(BB3) ]; [127X[104X
    [4X[28X[ 8, 2 ][128X[104X
    [4X[25Xgap>[125X [27XCC3 := SubCat1Algebra( C3, AA3, BB3 );[127X[104X
    [4X[28X[Algebra( GF(2), [ <zero> of ..., (Z(2)^0)*(), (Z(2)^0)*()+(Z(2)^0)*(4,5) [128X[104X
    [4X[28X ] ) -> Algebra( GF(2), [ <zero> of ..., (Z(2)^0)*() ] )][128X[104X
    [4X[25Xgap>[125X [27XDisplay( CC3 );[127X[104X
    [4X[28X[128X[104X
    [4X[28XCat1-algebra [..=>..] :-[128X[104X
    [4X[28X: source algebra has generators:[128X[104X
    [4X[28X  [ <zero> of ..., (Z(2)^0)*(), (Z(2)^0)*()+(Z(2)^0)*(4,5) ][128X[104X
    [4X[28X:  range algebra has generators:[128X[104X
    [4X[28X  [ <zero> of ..., (Z(2)^0)*() ][128X[104X
    [4X[28X: tail homomorphism maps source generators to:[128X[104X
    [4X[28X  [ <zero> of ..., (Z(2)^0)*(), <zero> of ... ][128X[104X
    [4X[28X: head homomorphism maps source generators to:[128X[104X
    [4X[28X  [ <zero> of ..., (Z(2)^0)*(), <zero> of ... ][128X[104X
    [4X[28X: range embedding maps range generators to:[128X[104X
    [4X[28X  [ <zero> of ..., (Z(2)^0)*() ][128X[104X
    [4X[28X: kernel has generators:[128X[104X
    [4X[28X  [ <zero> of ..., (Z(2)^0)*()+(Z(2)^0)*(4,5) ][128X[104X
    [4X[28X: boundary homomorphism maps generators of kernel to:[128X[104X
    [4X[28X  [ <zero> of ..., <zero> of ... ][128X[104X
    [4X[28X: kernel embedding maps generators of kernel to:[128X[104X
    [4X[28X  [ <zero> of ..., (Z(2)^0)*()+(Z(2)^0)*(4,5) ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  
  [1X3.2 [33X[0;0YCat[22X^1-[122X[101X[1Xalgebra morphisms[133X[101X
  
  [33X[0;0YLet  [22XmathcalC  =  (e;t,h:A→ R)[122X, [22XmathcalC^' = (e^'; t^' , h^' : A^' → R^')[122X be
  cat[22X^1[122X-algebras, and let [22Xϕ : A→ A^'[122X and [22Xφ : R → R^'[122X be algebra homomorphisms.
  If the diagram[133X
  
  
        [33X[1;6Y[24X[33X[0;0Y\xymatrix@R=50pt@C=50pt{ A \ar@{->}@<-1.5pt>[d]_{t}
        \ar@{->}@<1.5pt>[d]^{h} \ar@{->}[r]^{\phi} & A'
        \ar@{->}@<-1.5pt>[d]_{t'} \ar@{->}@<1.5pt>[d]^{h'} \\ R
        \ar@/^1.5pc/[u]^{e} \ar@{->}[r]_{\varphi} & R' \ar@/_1.5pc/[u]_{e'} }[133X
        [124X[133X
  
  
  [33X[0;0Ycommutes,  (i.e  [22Xt^' ∘ ϕ = φ ∘ t[122X, [22Xh^' ∘ ϕ = φ ∘ h[122X and [22Xe^' ∘ φ = ϕ ∘ e[122X), then
  the pair [22X(ϕ ,φ )[122Xis called a cat[22X^1[122X-algebra morphism.[133X
  
  [1X3.2-1 Cat1AlgebraMorphism[101X
  
  [29X[2XCat1AlgebraMorphism[102X( [3Xarg[103X ) [32X operation
  [29X[2XIdentityMapping[102X( [3XC[103X ) [32X operation
  [29X[2XPreCat1AlgebraMorphismByHoms[102X( [3Xf[103X, [3Xg[103X ) [32X operation
  [29X[2XCat1AlgebraMorphismByHoms[102X( [3Xf[103X, [3Xg[103X ) [32X operation
  [29X[2XIsPreCat1AlgebraMorphism[102X( [3XC[103X ) [32X property
  [29X[2XIsCat1AlgebraMorphism[102X( [3Xarg[103X ) [32X property
  
  [33X[0;0YThese  operations are used for constructing cat[22X^1[122X-algebra morphisms. Details
  of the implementations can be found in [Oda09].[133X
  
  [1X3.2-2 Source[101X
  
  [29X[2XSource[102X( [3Xm[103X ) [32X attribute
  [29X[2XRange[102X( [3Xm[103X ) [32X attribute
  [29X[2XIsTotal[102X( [3Xm[103X ) [32X attribute
  [29X[2XIsSingleValued[102X( [3Xm[103X ) [32X property
  [29X[2XName[102X( [3Xm[103X ) [32X attribute
  [29X[2XBoundary[102X( [3Xm[103X ) [32X attribute
  
  [33X[0;0YThese are the six main attributes of a cat[22X^1[122X-algebra morphism.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XC1:=Cat1Algebra(2,1,1,1);[127X[104X
    [4X[28X[GF(2)_triv -> GF(2)_triv][128X[104X
    [4X[25Xgap>[125X [27XDisplay(C1);[127X[104X
    [4X[28X[128X[104X
    [4X[28XCat1-algebra [GF(2)_triv=>GF(2)_triv] :-[128X[104X
    [4X[28X: source algebra has generators:[128X[104X
    [4X[28X  [ (Z(2)^0)*(), (Z(2)^0)*() ][128X[104X
    [4X[28X:  range algebra has generators:[128X[104X
    [4X[28X  [ (Z(2)^0)*(), (Z(2)^0)*() ][128X[104X
    [4X[28X: tail homomorphism maps source generators to:[128X[104X
    [4X[28X  [ (Z(2)^0)*(), (Z(2)^0)*() ][128X[104X
    [4X[28X: head homomorphism maps source generators to:[128X[104X
    [4X[28X  [ (Z(2)^0)*(), (Z(2)^0)*() ][128X[104X
    [4X[28X: range embedding maps range generators to:[128X[104X
    [4X[28X  [ (Z(2)^0)*(), (Z(2)^0)*() ][128X[104X
    [4X[28X: the kernel is trivial.[128X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XC2:=Cat1Algebra(2,2,1,2);[127X[104X
    [4X[28X[GF(2)_c2 -> GF(2)_triv][128X[104X
    [4X[25Xgap>[125X [27XDisplay(C2);[127X[104X
    [4X[28X[128X[104X
    [4X[28XCat1-algebra [GF(2)_c2=>GF(2)_triv] :-[128X[104X
    [4X[28X: source algebra has generators:[128X[104X
    [4X[28X  [ (Z(2)^0)*(), (Z(2)^0)*(1,2) ][128X[104X
    [4X[28X:  range algebra has generators:[128X[104X
    [4X[28X  [ (Z(2)^0)*(), (Z(2)^0)*() ][128X[104X
    [4X[28X: tail homomorphism maps source generators to:[128X[104X
    [4X[28X  [ (Z(2)^0)*(), (Z(2)^0)*() ][128X[104X
    [4X[28X: head homomorphism maps source generators to:[128X[104X
    [4X[28X  [ (Z(2)^0)*(), (Z(2)^0)*() ][128X[104X
    [4X[28X: range embedding maps range generators to:[128X[104X
    [4X[28X  [ (Z(2)^0)*(), (Z(2)^0)*() ][128X[104X
    [4X[28X: kernel has generators:[128X[104X
    [4X[28X  [ (Z(2)^0)*()+(Z(2)^0)*(1,2) ][128X[104X
    [4X[28X: boundary homomorphism maps generators of kernel to:[128X[104X
    [4X[28X  [ <zero> of ... ][128X[104X
    [4X[28X: kernel embedding maps generators of kernel to:[128X[104X
    [4X[28X  [ (Z(2)^0)*()+(Z(2)^0)*(1,2) ][128X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XC1=C2;[127X[104X
    [4X[28Xfalse[128X[104X
    [4X[25Xgap>[125X [27XR1:=Source(C1);;[127X[104X
    [4X[25Xgap>[125X [27XR2:=Source(C2);;[127X[104X
    [4X[25Xgap>[125X [27XS1:=Range(C1);;[127X[104X
    [4X[25Xgap>[125X [27XS2:=Range(C2);;[127X[104X
    [4X[25Xgap>[125X [27XgR1:=GeneratorsOfAlgebra(R1);[127X[104X
    [4X[28X[ (Z(2)^0)*(), (Z(2)^0)*() ][128X[104X
    [4X[25Xgap>[125X [27XgR2:=GeneratorsOfAlgebra(R2);[127X[104X
    [4X[28X[ (Z(2)^0)*(), (Z(2)^0)*(1,2) ][128X[104X
    [4X[25Xgap>[125X [27XgS1:=GeneratorsOfAlgebra(S1);[127X[104X
    [4X[28X[ (Z(2)^0)*(), (Z(2)^0)*() ][128X[104X
    [4X[25Xgap>[125X [27XgS2:=GeneratorsOfAlgebra(S2);[127X[104X
    [4X[28X[ (Z(2)^0)*(), (Z(2)^0)*() ][128X[104X
    [4X[25Xgap>[125X [27Xim1:=[gR2[1],gR2[1]];[127X[104X
    [4X[28X[ (Z(2)^0)*(), (Z(2)^0)*() ][128X[104X
    [4X[25Xgap>[125X [27Xf1:=AlgebraHomomorphismByImages(R1,R2,gR1,im1);[127X[104X
    [4X[28X[ (Z(2)^0)*(), (Z(2)^0)*() ] -> [ (Z(2)^0)*(), (Z(2)^0)*() ][128X[104X
    [4X[25Xgap>[125X [27Xim2:=[gS2[1],gS2[1]];[127X[104X
    [4X[28X[ (Z(2)^0)*(), (Z(2)^0)*() ][128X[104X
    [4X[25Xgap>[125X [27Xf2:=AlgebraHomomorphismByImages(S1,S2,gS1,im2);[127X[104X
    [4X[28X[ (Z(2)^0)*(), (Z(2)^0)*() ] -> [ (Z(2)^0)*(), (Z(2)^0)*() ][128X[104X
    [4X[25Xgap>[125X [27Xm:=Cat1AlgebraMorphism(C1,C2,f1,f2);[127X[104X
    [4X[28X[[GF(2)_triv=>GF(2)_triv] => [GF(2)_c2=>GF(2)_triv]][128X[104X
    [4X[25Xgap>[125X [27XDisplay(m);[127X[104X
    [4X[28XMorphism of cat1-algebras :-[128X[104X
    [4X[28X: Source = [GF(2)_triv=>GF(2)_triv] with generating sets:[128X[104X
    [4X[28X  [ (Z(2)^0)*(), (Z(2)^0)*() ][128X[104X
    [4X[28X  [ (Z(2)^0)*(), (Z(2)^0)*() ][128X[104X
    [4X[28X:  Range = [GF(2)_c2=>GF(2)_triv] with generating sets:[128X[104X
    [4X[28X  [ (Z(2)^0)*(), (Z(2)^0)*(1,2) ][128X[104X
    [4X[28X  [ (Z(2)^0)*(), (Z(2)^0)*() ][128X[104X
    [4X[28X: Source Homomorphism maps source generators to:[128X[104X
    [4X[28X  [ (Z(2)^0)*(), (Z(2)^0)*() ][128X[104X
    [4X[28X: Range Homomorphism maps range generators to:[128X[104X
    [4X[28X  [ (Z(2)^0)*(), (Z(2)^0)*() ][128X[104X
    [4X[25Xgap>[125X [27XImage2dAlgMapping(m);[127X[104X
    [4X[28X[GF(3)_c2^3=>GF(3)_c2^3][128X[104X
    [4X[25Xgap>[125X [27XIsSurjective(m);[127X[104X
    [4X[28Xfalse[128X[104X
    [4X[25Xgap>[125X [27XIsInjective(m);[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XIsBijective(m);[127X[104X
    [4X[28Xfalse[128X[104X
    [4X[28X[128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  
  [1X3.3 [33X[0;0YEquivalent Categories[133X[101X
  
  [33X[0;0YThe  categories  [22XmathbfCat1Alg[122X  (cat[22X^1[122X-algebras)  and [22XmathbfXModAlg[122X (crossed
  modules)  are  naturally equivalent [Ell88]. This equivalence is outlined in
  what  follows.  For  a given crossed module [22X(∂ : A → R)[122X we can construct the
  semidirect  product  [22XR⋉ A[122X thanks to the action of [22XR[122X on [22XA[122X. If we define [22Xt,h :
  R⋉ A → R[122X and [22Xe : R → R ⋉ A[122X by[133X
  
  
        [33X[1;6Y[24X[33X[0;0Yt(r,a) = r, \qquad h(r,a) = r+\partial(a), \qquad e(r) = (r,0),[133X [124X[133X
  
  
  [33X[0;0Yrespectively, then [22XmathcalC = (e;t,h : R ⋉ A → R)[122X is a cat[22X^1-[122Xalgebra.[133X
  
  [33X[0;0YConversely,  for a given cat[22X^1[122X-algebra [22XmathcalC=(e;t,h : A → R)[122X, the map [22X∂ :
  ker t → R[122X is a crossed module, where the action is multiplication action and
  [22X∂[122X is the restriction of [22Xh[122X to [22Xker t[122X.[133X
  
  [1X3.3-1 PreCat1ByPreXMod[101X
  
  [29X[2XPreCat1ByPreXMod[102X( [3XX0[103X ) [32X operation
  [29X[2XPreXModAlgebraByPreCat1Algebra[102X( [3XC[103X ) [32X operation
  [29X[2XCat1AlgebraByXModAlgebra[102X( [3XX0[103X ) [32X operation
  [29X[2XXModAlgebraByCat1Algebra[102X( [3XC[103X ) [32X operation
  
  [33X[0;0YThese  operations  are  used  for  constructing a cat[22X^1[122X-algebra from a given
  crossed module, and conversely.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XCXM := Cat1AlgebraByXModAlgebra( XM );[127X[104X
    [4X[28X[GF(2^2)[k4] IX <e5> -> GF(2^2)[k4]][128X[104X
    [4X[25Xgap>[125X [27XX3 := XModAlgebraByCat1Algebra( C3 ); [127X[104X
    [4X[28X[Algebra( GF(2), [ <zero> of ..., <zero> of ..., <zero> of ... [128X[104X
    [4X[28X ] )->Algebra( GF(2), [128X[104X
    [4X[28X[ (Z(2)^0)*()+(Z(2)^0)*(4,5), (Z(2)^0)*(1,2,3)+(Z(2)^0)*(1,2,3)(4,5), [128X[104X
    [4X[28X  (Z(2)^0)*(1,3,2)+(Z(2)^0)*(1,3,2)(4,5) ] )][128X[104X
    [4X[25Xgap>[125X [27XDisplay( X3 ); [127X[104X
    [4X[28X[128X[104X
    [4X[28XCrossed module [..->..] :- [128X[104X
    [4X[28X: Source algebra has generators:[128X[104X
    [4X[28X  [ <zero> of ..., <zero> of ..., <zero> of ... ][128X[104X
    [4X[28X: Range algebra has generators:[128X[104X
    [4X[28X  [ (Z(2)^0)*()+(Z(2)^0)*(4,5), (Z(2)^0)*(1,2,3)+(Z(2)^0)*(1,2,3)(4,5), [128X[104X
    [4X[28X  (Z(2)^0)*(1,3,2)+(Z(2)^0)*(1,3,2)(4,5) ][128X[104X
    [4X[28X: Boundary homomorphism maps source generators to:[128X[104X
    [4X[28X  [ <zero> of ..., <zero> of ..., <zero> of ... ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [33X[0;0YSince  all  these  operations  are  linked  to the functions [10XCat1Algebra[110X and
  [10XXModAlgebra[110X,  all  of  them can be done by using these two functions. We may
  also    use    the   function   [10XCat1Algebra[110X   instead   of   the   operation
  [10XCat1AlgebraSelect[110X.[133X
  
