  
  [1X5 [33X[0;0YElements[133X[101X
  
  [33X[0;0YAn  element  of an object [22XM[122X is internally represented by a morphism from the
  [21Xstructure  object[121X  to  the  object  [22XM[122X. In particular, the data structure for
  object  elements  automatically  profits  from  the intrinsic realization of
  morphisms in the [5Xhomalg[105X project.[133X
  
  
  [1X5.1 [33X[0;0YElements: Category and Representations[133X[101X
  
  [1X5.1-1 IsHomalgElement[101X
  
  [33X[1;0Y[29X[2XIsHomalgElement[102X( [3XM[103X ) [32X Category[133X
  [6XReturns:[106X  [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
  
  [33X[0;0YThe [5XGAP[105X category of object elements.[133X
  
  [1X5.1-2 IsElementOfAnObjectGivenByAMorphismRep[101X
  
  [33X[1;0Y[29X[2XIsElementOfAnObjectGivenByAMorphismRep[102X( [3XM[103X ) [32X Representation[133X
  [6XReturns:[106X  [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
  
  [33X[0;0YThe [5XGAP[105X representation of elements of finitley presented objects.[133X
  
  [33X[0;0Y(It is a representation of the [5XGAP[105X category [2XIsHomalgElement[102X ([14X5.1-1[114X).)[133X
  
  
  [1X5.2 [33X[0;0YElements: Constructors[133X[101X
  
  
  [1X5.3 [33X[0;0YElements: Properties[133X[101X
  
  [1X5.3-1 IsZero[101X
  
  [33X[1;0Y[29X[2XIsZero[102X( [3Xm[103X ) [32X property[133X
  [6XReturns:[106X  [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
  
  [33X[0;0YCheck if the object element [3Xm[103X is zero.[133X
  
  [1X5.3-2 IsCyclicGenerator[101X
  
  [33X[1;0Y[29X[2XIsCyclicGenerator[102X( [3Xm[103X ) [32X property[133X
  [6XReturns:[106X  [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
  
  [33X[0;0YCheck if the object element [3Xm[103X is a cyclic generator.[133X
  
  [1X5.3-3 IsTorsion[101X
  
  [33X[1;0Y[29X[2XIsTorsion[102X( [3Xm[103X ) [32X property[133X
  [6XReturns:[106X  [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
  
  [33X[0;0YCheck if the object element [3Xm[103X is a torsion element.[133X
  
  
  [1X5.4 [33X[0;0YElements: Attributes[133X[101X
  
  [1X5.4-1 Annihilator[101X
  
  [33X[1;0Y[29X[2XAnnihilator[102X( [3Xe[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10Ya [5Xhomalg[105X subobject[133X
  
  [33X[0;0YThe  annihilator  of  the  object  element [3Xe[103X as a subobject of the structure
  object.[133X
  
  
  [1X5.5 [33X[0;0YElements: Operations and Functions[133X[101X
  
  [1X5.5-1 in[101X
  
  [33X[1;0Y[29X[2Xin[102X( [3Xm[103X, [3XN[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
  
  [33X[0;0YIs  the element [3Xm[103X of the object [22XM[122X included in the subobject [3XN[103X[22X≤ M[122X, i.e., does
  the  morphism (with the unit object as source and [22XM[122X as target) underling the
  element [3Xm[103X of [22XM[122X factor over the subobject morphism [3XN[103X[22X-> M[122X?[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xzz := HomalgRingOfIntegers( );[127X[104X
    [4X[28XZ[128X[104X
    [4X[25Xgap>[125X [27XM := 2 * zz;[127X[104X
    [4X[28X<A free left module of rank 2 on free generators>[128X[104X
    [4X[25Xgap>[125X [27Xa := HomalgModuleElement( "[ 6, 0 ]", M );[127X[104X
    [4X[28X( 6, 0 )[128X[104X
    [4X[25Xgap>[125X [27XN := Subobject( HomalgMap( "[ 2, 0 ]", 1 * zz, M ) );[127X[104X
    [4X[28X<A free left submodule given by a cyclic generator>[128X[104X
    [4X[25Xgap>[125X [27XK := Subobject( HomalgMap( "[ 4, 0 ]", 1 * zz, M ) );[127X[104X
    [4X[28X<A free left submodule given by a cyclic generator>[128X[104X
    [4X[25Xgap>[125X [27Xa in M;[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27Xa in N;[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27Xa in UnderlyingObject( N );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27Xa in K;[127X[104X
    [4X[28Xfalse[128X[104X
    [4X[25Xgap>[125X [27Xa in UnderlyingObject( K );[127X[104X
    [4X[28Xfalse[128X[104X
    [4X[25Xgap>[125X [27Xa in 3 * zz;[127X[104X
    [4X[28Xfalse [128X[104X
  [4X[32X[104X
  
  [4X[32X  Code  [32X[104X
    [4XInstallMethod( \in,[104X
    [4X        "for homalg elements",[104X
    [4X        [ IsHomalgElement, IsStaticFinitelyPresentedSubobjectRep ],[104X
    [4X        [104X
    [4X  function( m, N )[104X
    [4X    local phi, psi;[104X
    [4X    [104X
    [4X    phi := UnderlyingMorphism( m );[104X
    [4X    [104X
    [4X    psi := MorphismHavingSubobjectAsItsImage( N );[104X
    [4X    [104X
    [4X    if not IsIdenticalObj( Range( phi ), Range( psi ) ) then[104X
    [4X        Error( "the super object of the subobject and the range ",[104X
    [4X               "of the morphism underlying the element do not coincide\n" );[104X
    [4X    fi;[104X
    [4X    [104X
    [4X    return IsZero( PreCompose( phi, CokernelEpi( psi ) ) );[104X
    [4X    [104X
    [4Xend );[104X
  [4X[32X[104X
  
