  
  [1X2 [33X[0;0YCat1-algebras[133X[101X
  
  
  [1X2.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
  
  
  [24X[33X[0;6Y\xymatrix@R=50pt@C=50pt{  A \ar@{->}@<-1.5pt>[d]_{t} \ar@{->}@<1.5pt>[d]^{h}
  \\ R \ar@/^1.5pc/[u]^{e} }[133X
  
  [124X
  
  [33X[0;0YIf the conditions,[133X
  
  
  [24X[33X[0;6Y\mathbf{Cat1Alg1:}  \quad  te = id_{R} = he, \qquad \mathbf{Cat1Alg2:} \quad
  (\ker t)(\ker h) = \{0_{A}\}[133X
  
  [124X
  
  [33X[0;0Yare  satisfied,  then  the  algebraic  system [22XmathcalC := (e;t,h : A → R)[122X is
  called   a   [13Xcat[22X^1[122X-algebra[113X.   A   system   which   satisfies  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   map[113X,  [13Xhead  map[113X  and  [13Xrange  embedding[113X  homomorphisms,
  respectively.[133X
  
  [1X2.1-1 Cat1Algebra[101X
  
  [33X[1;0Y[29X[2XCat1Algebra[102X( [3Xargs[103X ) [32X function[133X
  [33X[1;0Y[29X[2XPreCat1AlgebraByEndomorphisms[102X( [3Xt[103X, [3Xh[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XPreCat1AlgebraByTailHeadEmbedding[102X( [3Xt[103X, [3Xh[103X, [3Xe[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XPreCat1Algebra[102X( [3Xargs[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XIsIdentityCat1Algebra[102X( [3XC[103X ) [32X property[133X
  [33X[1;0Y[29X[2XIsCat1Algebra[102X( [3XC[103X ) [32X property[133X
  [33X[1;0Y[29X[2XIsPreCat1Algebra[102X( [3XC[103X ) [32X property[133X
  
  [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  operations
  [10XPreCat1AlgebraByEndomorphisms[110X and [10XPreCat1AlgebraByTailHeadEmbedding[110X are used
  with particular choices of algebra homomorphisms.[133X
  
  [1X2.1-2 Source[101X
  
  [33X[1;0Y[29X[2XSource[102X( [3XC[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XRange[102X( [3XC[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XTailMap[102X( [3XC[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XHeadMap[102X( [3XC[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XRangeEmbedding[102X( [3XC[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XKernel[102X( [3XC[103X ) [32X method[133X
  [33X[1;0Y[29X[2XBoundary[102X( [3XC[103X ) [32X attribute[133X
  
  [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 [27XAc6 := GroupRing( GF(2), Group( (1,2,3)(4,5) ) );;[127X[104X
    [4X[25Xgap>[125X [27XRc3 := GroupRing( GF(2), Group( (1,2,3) ) );;[127X[104X
    [4X[25Xgap>[125X [27XhomAR := AllHomsOfAlgebras( Ac6, Rc3 );;[127X[104X
    [4X[25Xgap>[125X [27XmgiAR := List( homAR, h -> MappingGeneratorsImages(h) );;[127X[104X
    [4X[25Xgap>[125X [27XPrint( mgiAR, "\n" );[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) ], [128X[104X
    [4X[28X      [ (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[25Xgap>[125X [27XhomRA := AllHomsOfAlgebras( Rc3, Ac6 );;[127X[104X
    [4X[25Xgap>[125X [27XmgiRA := List( homRA, h -> MappingGeneratorsImages(h) );;[127X[104X
    [4X[25Xgap>[125X [27XPrint( mgiRA, "\n" );[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 := PreCat1AlgebraByTailHeadEmbedding( homAR[6], homAR[6], homRA[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
  
  [1X2.1-3 Cat1AlgebraSelect[101X
  
  [33X[1;0Y[29X[2XCat1AlgebraSelect[102X( [3Xn[103X, [3Xgpsize[103X, [3Xgpnum[103X, [3Xnum[103X ) [32X operation[133X
  
  [33X[0;0YThe  [2XCat1Algebra[102X ([14X2.1-1[114X) 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 [11Xcat1algdata.g[111X. The data is read into the list [10XCAT1ALG_LIST[110X
  only when this function is called.[133X
  
  [33X[0;0YThe function [10XCat1AlgebraSelect[110X may be used in four ways:[133X
  
  [30X    [33X[0;6Y[10XCat1AlgebraSelect(  n  )[110X  returns the list of possible sizes of groups
        for group algebras with Galois field [22XGF(n)[122X.[133X
  
  [30X    [33X[0;6Y[10XCat1AlgebraSelect(  n, m )[110X returns the list of allowable group numbers
        with given Galois field [22XGF(n)[122X and groups of size [22Xm[122X.[133X
  
  [30X    [33X[0;6Y[10XCat1AlgebraSelect(   n,   m,   k   )[110X  returns  the  list  of  possible
        cat[22X^1[122X-algebra  structures  with  given  Galois  field  [22XGF(n)[122X and group
        number [22Xk[122X of size [22Xm[122X.[133X
  
  [30X    [33X[0;6Y[10XCat1AlgebraSelect(  n, m, k, j )[110X (or simply [10XCat1Algebra( n, m, k, j )[110X)
        returns the [22Xj[122X-th cat[22X^1[122X-algebra structure with these other parameters.[133X
  
  [33X[0;0YNow, we give examples of the use 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 (GFnum)             |[128X[104X
    [4X[28X| Possible numbers for GFnum in the Data :              |[128X[104X
    [4X[28X|--------------------------------------------------------|[128X[104X
    [4X[28X [ 2, 3, 4, 5, 7 ][128X[104X
    [4X[28XUsage: Cat1Algebra( GFnum, 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( GFnum, 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( GFnum, 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( GFnum, 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 [27XC0 := 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( C0 ); [127X[104X
    [4X[28X[ 4096, 1024 ][128X[104X
    [4X[25Xgap>[125X [27XDisplay( C0 ); [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
  
  [1X2.1-4 SubCat1Algebra[101X
  
  [33X[1;0Y[29X[2XSubCat1Algebra[102X( [3Xarg[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XSubPreCat1Algebra[102X( [3Xarg[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XIsSubCat1Algebra[102X( [3Xarg[103X ) [32X property[133X
  [33X[1;0Y[29X[2XIsSubPreCat1Algebra[102X( [3Xarg[103X ) [32X property[133X
  
  [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
  
  
  [24X[33X[0;6Yt^{\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
  
  [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
  
  
  [1X2.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
  
  
  [24X[33X[0;6Y\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
  
  [33X[0;0Ycommutes,  (i.e. [22Xt^' ∘ ϕ = φ ∘ t[122X, [22Xh^' ∘ ϕ = φ ∘ h[122X and [22Xe^' ∘ φ = ϕ ∘ e[122X), then
  the pair [22X(ϕ ,φ )[122X is called a cat[22X^1[122X-algebra morphism.[133X
  
  [1X2.2-1 Cat1AlgebraMorphism[101X
  
  [33X[1;0Y[29X[2XCat1AlgebraMorphism[102X( [3Xarg[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XIdentityMapping[102X( [3XC[103X ) [32X method[133X
  [33X[1;0Y[29X[2XPreCat1AlgebraMorphismByHoms[102X( [3Xf[103X, [3Xg[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XCat1AlgebraMorphismByHoms[102X( [3Xf[103X, [3Xg[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XIsPreCat1AlgebraMorphism[102X( [3XC[103X ) [32X property[133X
  [33X[1;0Y[29X[2XIsCat1AlgebraMorphism[102X( [3Xarg[103X ) [32X property[133X
  
  [33X[0;0YThese  operations are used for constructing cat[22X^1[122X-algebra morphisms. Details
  of the implementations can be found in [Oda09].[133X
  
  [1X2.2-2 Source[101X
  
  [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[1;0Y[29X[2XBoundary[102X( [3Xm[103X ) [32X attribute[133X
  
  [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 [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
  
