  
  [1X3 [33X[0;0YThe new GAP object types of [5Xsimpcomp[105X[101X[1X[133X[101X
  
  [33X[0;0YIn  order  to meet the particular requirements of piecewise linear geometric
  objects  and  their  invariants, [5Xsimpcomp[105X defines a number of new [5XGAP[105X object
  types.[133X
  
  [33X[0;0YAll new object types are derived from the object type [10XSCPropertyObject[110X which
  is  a  subtype  of  [10XRecord[110X.  It  is a [5XGAP[105X object consisting of permanent and
  temporary  attributes.  While [5Xsimpcomp[105X makes use of [5XGAP[105X's internal attribute
  caching mechanism for permanent attributes (see below), this is not the case
  for temporary ones.[133X
  
  [33X[0;0YThe temporary properties of a [10XSCPropertyObject[110X can be accessed directly with
  the  functions  [10XSCPropertyTmpByName[110X  and  changed with [10XSCPropertyTmpSet[110X. But
  this  direct  access  to  property  objects is discouraged when working with
  [5Xsimpcomp[105X,  as  the  internal consistency of the objects cannot be guaranteed
  when the properties of the objects are modified in this way.[133X
  
  [33X[0;0YImportant note: The temporary properties of [10XSCPropertyObject[110X are not used to
  hold  properties  (in  the  [5XGAP[105X  sense)  of  simplicial  complexes  or other
  geometric objects. This is done by the GAP4 type system [BL98]. Instead, the
  properties  handled  by  [5Xsimpcomp[105X's  own caching mechanism are used to store
  changing  information,  e.g.  the  complex  library  (see Section [14X13[114X) of the
  package or any other data which possibly is subject to changes (and thus not
  suited to be stored by the [5XGAP[105X type system).[133X
  
  [33X[0;0YTo  realize  its  complex  library  (see Section [14X13[114X), [5Xsimpcomp[105X defines a [5XGAP[105X
  object  type  [10XSCLibRepository[110X which provides the possibility to store, load,
  etc.  any  defined geometric object to and from the build-in complex library
  as  well as customized user libraries. In addition, a searching mechanism is
  provided.[133X
  
  [33X[0;0YGeometric    objects    are    represented    by   the   [5XGAP[105X   object   type
  [10XSCPolyhedralComplex[110X,  which  as  well  is  a  subtype  of  [10XSCPropertyObject[110X.
  [10XSCPolyhedralComplex[110X  is  designed  to represent any kind of piecewise linear
  geometric  object  given  by  a certain cell decomposition. Here, as already
  mentioned,  the  GAP4  type system [BL98] is used to cache properties of the
  object. In this way, a property is not calculated multiple times in case the
  object is not altered (see [2XSCPropertiesDropped[102X ([14X5.1-5[114X) for a way of dropping
  previously calculated properties).[133X
  
  [33X[0;0YAs  of  Version  1.4,  [5Xsimpcomp[105X  makes  use  of  two  different  subtypes of
  [10XSCPolyhedralComplex[110X:  [10XSCSimplicialComplex[110X to handle simplicial complexes and
  [10XSCNormalSurface[110X to deal with discrete normal surfaces (slicings of dimension
  2). Whenever possible, only one method per operations is implemented to deal
  with  all  subtypes of [10XSCPolyhedralComplex[110X, these functions are described in
  Chapter   [14X4[114X.   For   all   other   operations,  the  different  methods  for
  [10XSCSimplicialComplex[110X and [10XSCNormalSurface[110X are documented separately.[133X
  
  
  [1X3.1 [33X[0;0YAccessing properties of a [10XSCPolyhedralComplex[110X[101X[1X object[133X[101X
  
  [33X[0;0YAs  described  above  the object type [10XSCPolyhedralComplex[110X (and thus also the
  [5XGAP[105X  object  types  [10XSCSimplicialComplex[110X  and [10XSCNormalSurface[110X) has properties
  that  are  handled  by  the  GAP4  type system. Hence, GAP takes care of the
  internal consistency of objects of type [10XSCSimplicialComplex[110X.[133X
  
  [33X[0;0YThere  are two ways of accessing properties of a [10XSCPolyhedralComplex[110X object.
  The  first is to call a property handler function of the property one wishes
  to  calculate.  The  first  argument  of such a property handler function is
  always  the  simplicial complex for which the property should be calculated,
  in  some  cases  followed  by  further  arguments  of  the  property handler
  function. An example would be:[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xc:=SCBdSimplex(3);; # create a SCSimplicialComplex object[127X[104X
    [4X[25Xgap>[125X [27XSCFVector(c);[127X[104X
    [4X[28X[ 4, 6, 4 ][128X[104X
    [4X[25Xgap>[125X [27XSCSkel(c,0);[127X[104X
    [4X[28X[ [ 1 ], [ 2 ], [ 3 ], [ 4 ] ][128X[104X
  [4X[32X[104X
  
  [33X[0;0YHere  the functions [10XSCFVector[110X and [10XSCSkel[110X are the property handler functions,
  see Chapter [14X16[114X for a list of all property handlers of a [10XSCPolyhedralComplex[110X,
  [10XSCSimplicialComplex[110X  or  [10XSCNormalSurface[110X  object. Apart from this (standard)
  method  of calling the property handlers directly with a [10XSCPolyhedralComplex[110X
  object,  [5Xsimpcomp[105X provides the user with another more object oriented method
  which calls property handlers of a [10XSCPolyhedralComplex[110X object indirectly and
  more conveniently:[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xc:=SCBdSimplex(3);; # create a SCSimplicialComplex object[127X[104X
    [4X[25Xgap>[125X [27Xc.F;[127X[104X
    [4X[28X[ 4, 6, 4 ][128X[104X
    [4X[25Xgap>[125X [27Xc.Skel(0);[127X[104X
    [4X[28X[ [ 1 ], [ 2 ], [ 3 ], [ 4 ] ][128X[104X
  [4X[32X[104X
  
  [33X[0;0YNote  that the code in this example calculates the same properties as in the
  first  example above, but the properties of a [10XSCPolyhedralComplex[110X object are
  accessed via the [10X.[110X operator (the record access operator).[133X
  
  [33X[0;0YFor  each  property  handler  of  a  [10XSCPolyhedralComplex[110X  object  the object
  oriented  form of this property handler equals the name of the corresponding
  operation.  However,  in most cases abbreviations are available: Usually the
  prefix  ``[10XSC[110X''  can  be  dropped,  in  other  cases  even  shorter names are
  available.  See  Chapter  [14X16[114X  for  a  complete  list  of  all  abbreviations
  available.[133X
  
