  
  [1X11 [33X[0;0YPolyhedral Morse theory[133X[101X
  
  [33X[0;0YIn  this  chapter  we  present some useful functions dealing with polyhedral
  Morse  theory.  See  Section [14X2.5[114X for a very short introduction to the field,
  see  [K\t95]  for  more  information.  Note: this is not to be confused with
  Robin  Forman's  discrete Morse theory for cell complexes which is described
  in Chapter [14X12[114X.[133X
  
  [33X[0;0YIf  [22XM[122X  is  a combinatorial [22Xd[122X-manifold with [22Xn[122X-vertices a rsl-function will be
  represented  as an ordering on the set of vertices, i. e. a list of length [22Xn[122X
  containing all vertex labels of the corresponding simplicial complex.[133X
  
  
  [1X11.1 [33X[0;0YPolyhedral Morse theory related functions[133X[101X
  
  [1X11.1-1 SCIsTight[101X
  
  [33X[1;0Y[29X[2XSCIsTight[102X( [3Xcomplex[103X ) [32X method[133X
  [6XReturns:[106X  [33X[0;10Y[9Xtrue[109X or [9Xfalse[109X upon success, [9Xfail[109X otherwise.[133X
  
  [33X[0;0YChecks  whether  a simplicial complex [10Xcomplex[110X ([10Xcomplex[110X must satisfy the weak
  pseudomanifold  property  and must be closed) is a tight triangulation (with
  respect  to the field with two elements) or not. A simplicial complex with [22Xn[122X
  vertices  is  said to be a tight triangulation if it can be tightly embedded
  into  the  [22X(n-1)[122X-simplex.  See  Section  [14X2.7[114X for a short introduction to the
  field of tightness.[133X
  
  [33X[0;0YFirst,  if [10Xcomplex[110X is a [22X(k+1)[122X-neighborly [22X2k[122X-manifold (cf. [K\t95], Corollary
  4.7), or [10Xcomplex[110X is of dimension [22Xd≥ 4[122X, [22X2[122X-neighborly and all its vertex links
  are  stacked  spheres  (i.e.  the  complex  is  in  Walkup's class [22XK(d)[122X, see
  [Eff11b])  [9Xtrue[109X is returned as the complex is a tight triangulation in these
  cases.  If  [10Xcomplex[110X  is  of dimension [22Xd = 3[122X, [9Xtrue[109X is returned if and only if
  [10Xcomplex[110X  is [22X2[122X-neighborly and stacked (i.e. tight-neighbourly, see [BDSS15]),
  otherwise [9Xfalse[109X is returned, see [BDS16].[133X
  
  [33X[0;0YNote that, for dimension [22Xd ≥ 4[122X, it is not computed whether or not [10Xcomplex[110X is
  a  combinatorial manifold as this computation might take a long time. Hence,
  only  if  the  manifold  flag of the complex is set (this can be achieved by
  calling  [2XSCIsManifold[102X  ([14X12.1-17[114X)  and  the complex indeed is a combinatorial
  manifold) these checks are performed.[133X
  
  [33X[0;0YIn  a second step, the algorithm first checks certain rsl-functions allowing
  slicings  between  minimal  non  faces  and the rest of the complex. In most
  cases  where [10Xcomplex[110X is not tight at least one of these rsl-functions is not
  perfect  and  thus  [10Xfalse[110X  is  returned  as  the  complex  is  not  a  tight
  triangulation.[133X
  
  [33X[0;0YIf  the  complex  passed  all checks so far, the remaining rsl-functions are
  checked  for  being  perfect  functions. As there are ``only'' [22X2^n[122X different
  multiplicity  vectors,  but  [22Xn![122X  different  rsl-functions,  a  lookup  table
  containing  all  possible  multiplicity vectors is computed first. Note that
  nonetheless the complexity of this algorithm is [22XO(n!)[122X.[133X
  
  [33X[0;0YIn  order to reduce the number of rsl-functions that need to be checked, the
  automorphism  group  of  [10Xcomplex[110X is computed first using [2XSCAutomorphismGroup[102X
  ([14X6.9-2[114X). In case it is [22Xk[122X-transitive, the complexity is reduced by the factor
  of [22Xn ⋅ (n-1) ⋅ dots ⋅ (n-k+1)[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X gap> list:=SCLib.SearchByName("S^2~S^1 (VT)"){[1..9]};[128X[104X
    [4X[28X [ [ 12, "S^2~S^1 (VT)" ], [ 26, "S^2~S^1 (VT)" ], [ 30, "S^2~S^1 (VT)" ], [128X[104X
    [4X[28X   [ 43, "S^2~S^1 (VT)" ], [ 47, "S^2~S^1 (VT)" ], [ 48, "S^2~S^1 (VT)" ], [128X[104X
    [4X[28X   [ 89, "S^2~S^1 (VT)" ], [ 93, "S^2~S^1 (VT)" ], [ 113, "S^2~S^1 (VT)" ] ][128X[104X
    [4X[28X gap> s2s1:=SCLib.Load(list[1][1]);[128X[104X
    [4X[28X [SimplicialComplex[128X[104X
    [4X[28X [128X[104X
    [4X[28X  Properties known: AltshulerSteinberg, AutomorphismGroup, [128X[104X
    [4X[28X                    AutomorphismGroupSize, AutomorphismGroupStructure, [128X[104X
    [4X[28X                    AutomorphismGroupTransitivity, ConnectedComponents, [128X[104X
    [4X[28X                    Dim, DualGraph, EulerCharacteristic, FVector, [128X[104X
    [4X[28X                    FacetsEx, GVector, GeneratorsEx, HVector, [128X[104X
    [4X[28X                    HasBoundary, HasInterior, Homology, Interior, [128X[104X
    [4X[28X                    IsCentrallySymmetric, IsConnected, [128X[104X
    [4X[28X                    IsEulerianManifold, IsManifold, IsOrientable, [128X[104X
    [4X[28X                    IsPseudoManifold, IsPure, IsStronglyConnected, [128X[104X
    [4X[28X                    MinimalNonFacesEx, Name, Neighborliness, [128X[104X
    [4X[28X                    NumFaces[], Orientation, Reference, SkelExs[], [128X[104X
    [4X[28X                    Vertices.[128X[104X
    [4X[28X [128X[104X
    [4X[28X  Name="S^2~S^1 (VT)"[128X[104X
    [4X[28X  Dim=3[128X[104X
    [4X[28X  AltshulerSteinberg=250838208[128X[104X
    [4X[28X  AutomorphismGroupSize=18[128X[104X
    [4X[28X  AutomorphismGroupStructure="D18"[128X[104X
    [4X[28X  AutomorphismGroupTransitivity=1[128X[104X
    [4X[28X  EulerCharacteristic=0[128X[104X
    [4X[28X  FVector=[ 9, 36, 54, 27 ][128X[104X
    [4X[28X  GVector=[ 4, 10 ][128X[104X
    [4X[28X  HVector=[ 5, 15, 5, 1 ][128X[104X
    [4X[28X  HasBoundary=false[128X[104X
    [4X[28X  HasInterior=true[128X[104X
    [4X[28X  Homology=[ [ 0, [ ] ], [ 1, [ ] ], [ 0, [ 2 ] ], [ 0, [ ] ] ][128X[104X
    [4X[28X  IsCentrallySymmetric=false[128X[104X
    [4X[28X  IsConnected=true[128X[104X
    [4X[28X  IsEulerianManifold=true[128X[104X
    [4X[28X  IsOrientable=false[128X[104X
    [4X[28X  IsPseudoManifold=true[128X[104X
    [4X[28X  IsPure=true[128X[104X
    [4X[28X  IsStronglyConnected=true[128X[104X
    [4X[28X  Neighborliness=2[128X[104X
    [4X[28X [128X[104X
    [4X[28X /SimplicialComplex][128X[104X
    [4X[28X gap> SCInfoLevel(2); # print information while running[128X[104X
    [4X[28X true[128X[104X
    [4X[28X gap> SCIsTight(s2s1); time;[128X[104X
    [4X[28X #I  SCIsTight: complex is 3-dimensional and tight neighbourly, and thus tight.[128X[104X
    [4X[28X true[128X[104X
    [4X[28X 1[128X[104X
    [4X[28X [128X[104X
  [4X[32X[104X
  
  [4X[32X  Example  [32X[104X
    [4X[28X gap> SCLib.SearchByAttribute("F[1] = 120");[128X[104X
    [4X[28X [ [ 7649, "Bd(600-cell)" ] ][128X[104X
    [4X[28X gap> id:=last[1][1];;[128X[104X
    [4X[28X gap> c:=SCLib.Load(id);;[128X[104X
    [4X[28X gap> SCIsTight(c); time;[128X[104X
    [4X[28X #I  SCIsTight: complex is connected but not 2-neighbourly, and thus not tight.[128X[104X
    [4X[28X false[128X[104X
    [4X[28X 9[128X[104X
    [4X[28X [128X[104X
  [4X[32X[104X
  
  [4X[32X  Example  [32X[104X
    [4X[28X gap> SCInfoLevel(0);[128X[104X
    [4X[28X true[128X[104X
    [4X[28X gap> SCLib.SearchByName("K3");  [128X[104X
    [4X[28X [ [ 7494, "K3_16" ], [ 7513, "K3_17" ] ][128X[104X
    [4X[28X gap> c:=SCLib.Load(last[1][1]);;[128X[104X
    [4X[28X gap> SCIsManifold(c);[128X[104X
    [4X[28X true[128X[104X
    [4X[28X gap> SCInfoLevel(1);[128X[104X
    [4X[28X true[128X[104X
    [4X[28X gap> c.IsTight;                 [128X[104X
    [4X[28X #I  SCIsTight: complex is (k+1)-neighborly 2k-manifold and thus tight.[128X[104X
    [4X[28X true[128X[104X
    [4X[28X [128X[104X
  [4X[32X[104X
  
  [4X[32X  Example  [32X[104X
    [4X[28X gap> SCInfoLevel(1);[128X[104X
    [4X[28X true[128X[104X
    [4X[28X gap> dc:=[ [ 1, 1, 1, 1, 45 ], [ 1, 2, 1, 27, 18 ], [ 1, 27, 9, 9, 3 ], [128X[104X
    [4X[28X > [ 4, 7, 20, 9, 9 ], [ 9, 9, 11, 9, 11 ], [ 6, 9, 9, 17, 8 ], [128X[104X
    [4X[28X > [ 6, 10, 8, 17, 8 ], [ 8, 8, 8, 8, 17 ], [ 5, 6, 9, 9, 20 ] ];;[128X[104X
    [4X[28X gap> c:=SCBoundary(SCFromDifferenceCycles(dc));;[128X[104X
    [4X[28X gap> SCAutomorphismGroup(c);;[128X[104X
    [4X[28X gap> SCIsTight(c);[128X[104X
    [4X[28X true[128X[104X
    [4X[28X [128X[104X
  [4X[32X[104X
  
  [4X[32X  Example  [32X[104X
    [4X[28X gap> list:=SCLib.SearchByName("S^3xS^1");[128X[104X
    [4X[28X [ [ 55, "S^3xS^1 (VT)" ], [ 127, "S^3xS^1 (VT)" ], [ 399, "S^3xS^1 (VT)" ], [128X[104X
    [4X[28X   [ 459, "S^3xS^1 (VT)" ], [ 460, "S^3xS^1 (VT)" ], [ 461, "S^3xS^1 (VT)" ], [128X[104X
    [4X[28X   [ 462, "S^3xS^1 (VT)" ], [ 588, "S^3xS^1 (VT)" ], [ 613, "S^3xS^1 (VT)" ], [128X[104X
    [4X[28X   [ 700, "S^3xS^1 (VT)" ], [ 701, "S^3xS^1 (VT)" ], [ 702, "S^3xS^1 (VT)" ], [128X[104X
    [4X[28X   [ 703, "S^3xS^1 (VT)" ], [ 1078, "S^3xS^1 (VT)" ], [ 1079, "S^3xS^1 (VT)" ],[128X[104X
    [4X[28X   [ 1080, "S^3xS^1 (VT)" ], [ 1081, "S^3xS^1 (VT)" ], [128X[104X
    [4X[28X   [ 1083, "S^3xS^1 (VT)" ], [ 1084, "S^3xS^1 (VT)" ], [128X[104X
    [4X[28X   [ 1086, "S^3xS^1 (VT)" ], [ 1087, "S^3xS^1 (VT)" ], [128X[104X
    [4X[28X   [ 1088, "S^3xS^1 (VT)" ], [ 1089, "S^3xS^1 (VT)" ], [128X[104X
    [4X[28X   [ 1090, "S^3xS^1 (VT)" ], [ 1092, "S^3xS^1 (VT)" ], [128X[104X
    [4X[28X   [ 2413, "S^3xS^1 (VT)" ], [ 2470, "S^3xS^1 (VT)" ], [128X[104X
    [4X[28X   [ 2471, "S^3xS^1 (VT)" ], [ 2472, "S^3xS^1 (VT)" ], [128X[104X
    [4X[28X   [ 2473, "S^3xS^1 (VT)" ], [ 2474, "S^3xS^1 (VT)" ], [128X[104X
    [4X[28X   [ 2475, "S^3xS^1 (VT)" ], [ 2476, "S^3xS^1 (VT)" ], [128X[104X
    [4X[28X   [ 3413, "S^3xS^1 (VT)" ], [ 3414, "S^3xS^1 (VT)" ], [128X[104X
    [4X[28X   [ 3415, "S^3xS^1 (VT)" ], [ 3416, "S^3xS^1 (VT)" ], [128X[104X
    [4X[28X   [ 3417, "S^3xS^1 (VT)" ], [ 3418, "S^3xS^1 (VT)" ], [128X[104X
    [4X[28X   [ 3419, "S^3xS^1 (VT)" ], [ 3420, "S^3xS^1 (VT)" ], [128X[104X
    [4X[28X   [ 3421, "S^3xS^1 (VT)" ], [ 3422, "S^3xS^1 (VT)" ], [128X[104X
    [4X[28X   [ 3423, "S^3xS^1 (VT)" ], [ 3424, "S^3xS^1 (VT)" ], [128X[104X
    [4X[28X   [ 3425, "S^3xS^1 (VT)" ], [ 3426, "S^3xS^1 (VT)" ], [128X[104X
    [4X[28X   [ 3427, "S^3xS^1 (VT)" ], [ 3428, "S^3xS^1 (VT)" ], [128X[104X
    [4X[28X   [ 3429, "S^3xS^1 (VT)" ], [ 3430, "S^3xS^1 (VT)" ], [128X[104X
    [4X[28X   [ 3431, "S^3xS^1 (VT)" ], [ 3432, "S^3xS^1 (VT)" ], [128X[104X
    [4X[28X   [ 3433, "S^3xS^1 (VT)" ], [ 3434, "S^3xS^1 (VT)" ] ][128X[104X
    [4X[28X gap> c:=SCLib.Load(list[1][1]);           [128X[104X
    [4X[28X [SimplicialComplex[128X[104X
    [4X[28X [128X[104X
    [4X[28X  Properties known: AltshulerSteinberg, AutomorphismGroup, [128X[104X
    [4X[28X                    AutomorphismGroupSize, AutomorphismGroupStructure, [128X[104X
    [4X[28X                    AutomorphismGroupTransitivity, ConnectedComponents, [128X[104X
    [4X[28X                    Dim, DualGraph, EulerCharacteristic, FVector, [128X[104X
    [4X[28X                    FacetsEx, GVector, GeneratorsEx, HVector, [128X[104X
    [4X[28X                    HasBoundary, HasInterior, Homology, Interior, [128X[104X
    [4X[28X                    IsCentrallySymmetric, IsConnected, [128X[104X
    [4X[28X                    IsEulerianManifold, IsManifold, IsOrientable, [128X[104X
    [4X[28X                    IsPseudoManifold, IsPure, IsStronglyConnected, [128X[104X
    [4X[28X                    MinimalNonFacesEx, Name, Neighborliness, [128X[104X
    [4X[28X                    NumFaces[], Orientation, Reference, SkelExs[], [128X[104X
    [4X[28X                    Vertices.[128X[104X
    [4X[28X [128X[104X
    [4X[28X  Name="S^3xS^1 (VT)"[128X[104X
    [4X[28X  Dim=4[128X[104X
    [4X[28X  AltshulerSteinberg=737125273600[128X[104X
    [4X[28X  AutomorphismGroupSize=22[128X[104X
    [4X[28X  AutomorphismGroupStructure="D22"[128X[104X
    [4X[28X  AutomorphismGroupTransitivity=1[128X[104X
    [4X[28X  EulerCharacteristic=0[128X[104X
    [4X[28X  FVector=[ 11, 55, 110, 110, 44 ][128X[104X
    [4X[28X  GVector=[ 5, 15, -20 ][128X[104X
    [4X[28X  HVector=[ 6, 21, 1, 16, -1 ][128X[104X
    [4X[28X  HasBoundary=false[128X[104X
    [4X[28X  HasInterior=true[128X[104X
    [4X[28X  Homology=[ [ 0, [ ] ], [ 1, [ ] ], [ 0, [ ] ], [ 1, [ ] ], [ 1, [ ] ] ][128X[104X
    [4X[28X  IsCentrallySymmetric=false[128X[104X
    [4X[28X  IsConnected=true[128X[104X
    [4X[28X  IsEulerianManifold=true[128X[104X
    [4X[28X  IsOrientable=true[128X[104X
    [4X[28X  IsPseudoManifold=true[128X[104X
    [4X[28X  IsPure=true[128X[104X
    [4X[28X  IsStronglyConnected=true[128X[104X
    [4X[28X  Neighborliness=2[128X[104X
    [4X[28X [128X[104X
    [4X[28X /SimplicialComplex][128X[104X
    [4X[28X gap> SCInfoLevel(0);[128X[104X
    [4X[28X true[128X[104X
    [4X[28X gap> SCIsManifold(c);[128X[104X
    [4X[28X true[128X[104X
    [4X[28X gap> SCInfoLevel(2); [128X[104X
    [4X[28X true[128X[104X
    [4X[28X gap> c.IsTight;                [128X[104X
    [4X[28X #I  SCIsInKd: complex has transitive automorphism group, only checking one link.[128X[104X
    [4X[28X #I  SCIsInKd: checking link 1/1[128X[104X
    [4X[28X #I  SCIsKStackedSphere: checking if complex is a 1-stacked sphere...[128X[104X
    [4X[28X #I  SCIsKStackedSphere: try 1/1[128X[104X
    [4X[28X #I  round 0[128X[104X
    [4X[28X Reduced complex, F: [ 9, 26, 34, 17 ][128X[104X
    [4X[28X #I  round 1[128X[104X
    [4X[28X Reduced complex, F: [ 8, 22, 28, 14 ][128X[104X
    [4X[28X #I  round 2[128X[104X
    [4X[28X Reduced complex, F: [ 7, 18, 22, 11 ][128X[104X
    [4X[28X #I  round 3[128X[104X
    [4X[28X Reduced complex, F: [ 6, 14, 16, 8 ][128X[104X
    [4X[28X #I  round 4[128X[104X
    [4X[28X Reduced complex, F: [ 5, 10, 10, 5 ][128X[104X
    [4X[28X #I  SCReduceComplexEx: computed locally minimal complex after 5 rounds.[128X[104X
    [4X[28X #I  SCIsKStackedSphere: complex is a 1-stacked sphere.[128X[104X
    [4X[28X #I  SCIsInKd: complex has transitive automorphism group, all links are 1-stacked.[128X[104X
    [4X[28X #I  SCIsTight: complex is in class K(1) and 2-neighborly, thus tight.[128X[104X
    [4X[28X true[128X[104X
    [4X[28X [128X[104X
  [4X[32X[104X
  
  [1X11.1-2 SCMorseIsPerfect[101X
  
  [33X[1;0Y[29X[2XSCMorseIsPerfect[102X( [3Xc[103X, [3Xf[103X ) [32X method[133X
  [6XReturns:[106X  [33X[0;10Y[9Xtrue[109X or [9Xfalse[109X upon success, [9Xfail[109X otherwise.[133X
  
  [33X[0;0YChecks  whether the rsl-function [10Xf[110X is perfect on the simplicial complex [10Xc[110X or
  not.  A  rsl-function is said to be perfect, if it has the minimum number of
  critical  points,  i. e. if the sum of its critical points equals the sum of
  the Betti numbers of [10Xc[110X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X gap> c:=SCBdCyclicPolytope(4,6);;[128X[104X
    [4X[28X gap> SCMinimalNonFaces(c);[128X[104X
    [4X[28X [ [  ], [  ], [ [ 1, 3, 5 ], [ 2, 4, 6 ] ] ][128X[104X
    [4X[28X gap> SCMorseIsPerfect(c,[1..6]);[128X[104X
    [4X[28X true[128X[104X
    [4X[28X gap> SCMorseIsPerfect(c,[1,3,5,2,4,6]);   [128X[104X
    [4X[28X false[128X[104X
    [4X[28X [128X[104X
  [4X[32X[104X
  
  [1X11.1-3 SCSlicing[101X
  
  [33X[1;0Y[29X[2XSCSlicing[102X( [3Xcomplex[103X, [3Xslicing[103X ) [32X method[133X
  [6XReturns:[106X  [33X[0;10Ya  facet  list of a polyhedral complex or a [10XSCNormalSurface[110X object
            upon success, [9Xfail[109X otherwise.[133X
  
  [33X[0;0YReturns  the  pre-image  [22Xf^-1  (α  )[122X  of  a rsl-function [22Xf[122X on the simplicial
  complex  [3Xcomplex[103X  where  [22Xf[122X  is  given  in  the  second argument [3Xslicing[103X by a
  partition  of  the  set  of  vertices [3Xslicing[103X[22X=[ V_1 , V_2 ][122X such that [22Xf(v_1)[122X
  ([22Xf(v_2)[122X) is smaller (greater) than [22Xα[122X for all [22Xv_1 ∈ V_1[122X ([22Xv_2 ∈ V_2[122X).[133X
  
  [33X[0;0YIf  [3Xcomplex[103X  is  of  dimension  [22X3[122X,  a  [5XGAP[105X object of type [10XSCNormalSurface[110X is
  returned.  Otherwise  only  the facet list is returned. See also [2XSCNSSlicing[102X
  ([14X7.1-4[114X).[133X
  
  [33X[0;0YThe  vertex labels of the returned slicing are of the form [22X(v_1 , v_2)[122X where
  [22Xv_1 ∈ V_1[122X and [22Xv_2 ∈ V_2[122X. They represent the center points of the edges [22X⟩ v_1
  , v_2 ⟨[122X defined by the intersection of [3Xslicing[103X with [3Xcomplex[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X gap> c:=SCBdCyclicPolytope(4,6);;[128X[104X
    [4X[28X gap> v:=SCVertices(c);[128X[104X
    [4X[28X [ 1 .. 6 ][128X[104X
    [4X[28X gap> SCMinimalNonFaces(c);[128X[104X
    [4X[28X [ [  ], [  ], [ [ 1, 3, 5 ], [ 2, 4, 6 ] ] ][128X[104X
    [4X[28X gap> ns:=SCSlicing(c,[v{[1,3,5]},v{[2,4,6]}]);     [128X[104X
    [4X[28X [NormalSurface[128X[104X
    [4X[28X [128X[104X
    [4X[28X  Properties known: ConnectedComponents, Dim, EulerCharacteristic, FVector, Fac\[128X[104X
    [4X[28X etsEx, Genus, IsConnected, IsOrientable, NSTriangulation, Name, TopologicalTyp\[128X[104X
    [4X[28X e, Vertices.[128X[104X
    [4X[28X [128X[104X
    [4X[28X  Name="slicing [ [ 1, 3, 5 ], [ 2, 4, 6 ] ] of Bd(C_4(6))"[128X[104X
    [4X[28X  Dim=2[128X[104X
    [4X[28X  FVector=[ 9, 18, 0, 9 ][128X[104X
    [4X[28X  EulerCharacteristic=0[128X[104X
    [4X[28X  IsOrientable=true[128X[104X
    [4X[28X  TopologicalType="T^2"[128X[104X
    [4X[28X [128X[104X
    [4X[28X /NormalSurface][128X[104X
    [4X[28X [128X[104X
  [4X[32X[104X
  
  [4X[32X  Example  [32X[104X
    [4X[28X gap> c:=SCBdSimplex(5);;[128X[104X
    [4X[28X gap> v:=SCVertices(c);[128X[104X
    [4X[28X [ 1 .. 6 ][128X[104X
    [4X[28X gap> slicing:=SCSlicing(c,[v{[1,3,5]},v{[2,4,6]}]);[128X[104X
    [4X[28X [ [ [ 1, 2 ], [ 1, 4 ], [ 3, 2 ], [ 3, 4 ], [ 5, 2 ], [ 5, 4 ] ], [128X[104X
    [4X[28X   [ [ 1, 2 ], [ 1, 4 ], [ 1, 6 ], [ 3, 2 ], [ 3, 4 ], [ 3, 6 ] ], [128X[104X
    [4X[28X   [ [ 1, 2 ], [ 1, 6 ], [ 3, 2 ], [ 3, 6 ], [ 5, 2 ], [ 5, 6 ] ], [128X[104X
    [4X[28X   [ [ 1, 2 ], [ 1, 4 ], [ 1, 6 ], [ 5, 2 ], [ 5, 4 ], [ 5, 6 ] ], [128X[104X
    [4X[28X   [ [ 1, 4 ], [ 1, 6 ], [ 3, 4 ], [ 3, 6 ], [ 5, 4 ], [ 5, 6 ] ], [128X[104X
    [4X[28X   [ [ 3, 2 ], [ 3, 4 ], [ 3, 6 ], [ 5, 2 ], [ 5, 4 ], [ 5, 6 ] ] ][128X[104X
    [4X[28X [128X[104X
  [4X[32X[104X
  
  [1X11.1-4 SCMorseMultiplicityVector[101X
  
  [33X[1;0Y[29X[2XSCMorseMultiplicityVector[102X( [3Xc[103X, [3Xf[103X ) [32X method[133X
  [6XReturns:[106X  [33X[0;10Ya  list of [22X(d+1)[122X-tuples if [10Xc[110X is a [22Xd[122X-dimensional simplicial complex
            upon success, [9Xfail[109X otherwise.[133X
  
  [33X[0;0YComputes  all  multiplicity  vectors  of  a  rsl-function  [10Xf[110X on a simplicial
  complex  [10Xc[110X. [10Xf[110X is given as an ordered list [22X(v_1 , ... v_n)[122X of all vertices of
  [10Xc[110X  where [10Xf[110X is defined by [10Xf[110X[22X(v_i) = fraci-1n-1[122X. The [22Xi[122X-th entry of the returned
  list denotes the multiplicity vector of vertex [22Xv_i[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X gap> SCLib.SearchByName("K3");      [128X[104X
    [4X[28X [ [ 7494, "K3_16" ], [ 7513, "K3_17" ] ][128X[104X
    [4X[28X gap> c:=SCLib.Load(last[1][1]);;    [128X[104X
    [4X[28X gap> f:=SCVertices(c);              [128X[104X
    [4X[28X [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 ][128X[104X
    [4X[28X gap> SCMorseMultiplicityVector(c,f);[128X[104X
    [4X[28X [ [ 1, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0 ], [ 0, 0, 1, 0, 0 ], [128X[104X
    [4X[28X   [ 0, 0, 2, 0, 0 ], [ 0, 0, 1, 0, 0 ], [ 0, 0, 4, 0, 0 ], [ 0, 0, 3, 0, 0 ], [128X[104X
    [4X[28X   [ 0, 0, 3, 0, 0 ], [ 0, 0, 4, 0, 0 ], [ 0, 0, 1, 0, 0 ], [ 0, 0, 2, 0, 0 ], [128X[104X
    [4X[28X   [ 0, 0, 1, 0, 0 ], [ 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 1 ] ][128X[104X
    [4X[28X [128X[104X
  [4X[32X[104X
  
  [1X11.1-5 SCMorseNumberOfCriticalPoints[101X
  
  [33X[1;0Y[29X[2XSCMorseNumberOfCriticalPoints[102X( [3Xc[103X, [3Xf[103X ) [32X method[133X
  [6XReturns:[106X  [33X[0;10Yan integer and a list upon success, [9Xfail[109X otherwise.[133X
  
  [33X[0;0YComputes  the number of critical points of each index of a rsl-function [10Xf[110X on
  a simplicial complex [10Xc[110X as well as the total number of critical points.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X gap> SCLib.SearchByName("K3");      [128X[104X
    [4X[28X [ [ 7494, "K3_16" ], [ 7513, "K3_17" ] ][128X[104X
    [4X[28X gap> c:=SCLib.Load(last[1][1]);;    [128X[104X
    [4X[28X gap> f:=SCVertices(c);              [128X[104X
    [4X[28X [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 ][128X[104X
    [4X[28X gap> SCMorseNumberOfCriticalPoints(c,f);[128X[104X
    [4X[28X [ 24, [ 1, 0, 22, 0, 1 ] ][128X[104X
    [4X[28X [128X[104X
  [4X[32X[104X
  
