Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it

1034946 views
1
2
9 Bistellar flips
3
4
5
9.1 Theory
6
7
Since two combinatorial manifolds are already considered distinct to each
8
other as soon as they are not combinatorially isomorphic, a topological
9
PL-manifold is represented by a whole class of combinatorial manifolds.
10
Thus, a frequent question when working with combinatorial manifolds is
11
whether two such objects are PL-homeomorphic or not. One possibility to
12
approach this problem, i. e. to find combinatorially distinct members of the
13
class of a PL-manifold, is a heuristic algorithm using the concept of
14
bistellar moves.
15
Definition (Bistellar moves [Pac87])
16
Let M be a combinatorial d-manifold (d-pseudomanifold), γ = ⟨ v_0 , ... ,
17
v_k ⟩ a k-face and δ = ⟨ w_0 , ... , w_d-k ⟩ a (d-k+1)-tuple of vertices of
18
M that does not span a (d-k)-face in M, 0 ≤ k ≤ d, such that { v_0 , ...,
19
v_k } ∩ { w_0 , ... , w_d-k } = ∅ and { v_0 , ... , v_k, w_0 , ... w_k-d }
20
spans exactly d-k+1 facets. Then the operation
21
κ_(γ,δ) ( M ) = M ∖ (γ ⋆ ∂ δ) ∪ (∂ γ ⋆ δ)
22
is called a bistellar (d-k)-move.
23
In other words: If there exists a bouquet D ⊂ M of d-k+1 facets on a subset
24
of vertices W ⊂ V of order d+2 with a common k-face γ and the complement δ
25
of the vertices of γ in W does not span a (d-k)-face in M we can remove D
26
and replace it by a bouquet of k+1 facets E ⊂ M with vertex set W with a
27
common face spanned by δ. By construction ∂ D = ∂ E and the altered complex
28
is again a combinatorial d-manifold (d-pseudomanifold). See Fig. 11 for a
29
bistellar 1-move of a 2-dimensional complex, see Fig. 12 for all bistellar
30
moves in dimension 3.
31
32
A bistellar 0-move is a stellar subdivision, i. e. the subdivision of a
33
facet δ into d+1 new facets by introducing a new vertex at the center of δ
34
(cf. Fig. 12 on the left). In particular, the vertex set of a combinatorial
35
manifold (pseudomanifold) is not invariant under bistellar moves. For any
36
bistellar (d-k)-move κ_(γ,δ) we have an inverse bistellar k-move κ^-1_(γ,δ)
37
= κ_(δ,γ) such that κ_(δ,γ) ( κ_(γ,δ) (M)) = M. If for two combinatorial
38
manifolds M and N there exist a sequence of bistellar moves that transforms
39
one into the other, M and N are called bistellarly equivalent. So far
40
bistellar moves are local operations on combinatorial manifolds that change
41
its combinatorial type. However, the strength of the concept in
42
combinatorial topology is a consequence of the following
43
Theorem (Bistellar moves [Pac87])
44
Two combinatorial manifolds (pseudomanifolds) M and N are PL homeomorphic if
45
and only if they are bistellarly equivalent.
46
Unfortunately Pachners theorem does not guarantee that the search for a
47
connecting sequence of bistellar moves between M and N terminates. Hence,
48
using bistellar moves, we can not prove that M and N are not
49
PL-homeomorphic. However, there is a very effective simulated annealing
50
approach that is able to give a positive answer in a lot of cases. The
51
heuristic was first implemented by Bjoerner and Lutz in [BL00]. The
52
functions presented in this chapter are based on this code which can be used
53
for several tasks:
54
55
In many cases the heuristic reduces a given triangulation but does not reach
56
a minimal triangulation after a reasonable amount of flips. Thus, we usually
57
can not expect the algorithm to terminate. However, in some cases the
58
program normally stops after a small number of flips:
59
60
Technical note: Since bistellar flips do not respect the combinatorial
61
properties of a complex, no attention to the original vertex labels is
62
payed, i. e. the flipped complex will be relabeled whenever its vertex
63
labels become different from the standard labeling (for example after every
64
reverse 0-move).
65
66
67
9.2 Functions for bistellar flips
68
69
9.2-1 SCBistellarOptions
70
71
SCBistellarOptions global variable
72
73
Record of global variables to adjust output an behavior of bistellar moves
74
in SCIntFunc.SCChooseMove (9.2-4) and SCReduceComplexEx (9.2-14)
75
respectively.
76
77
1 BaseRelaxation: determines the length of the relaxation period.
78
Default: 3
79
80
2 BaseHeating: determines the length of the heating period. Default: 4
81
82
3 Relaxation: value of the current relaxation period. Default: 0
83
84
4 Heating: value of the current heating period. Default: 0
85
86
5 MaxRounds: maximal over all number of bistellar flips that will be
87
performed. Default: 500000
88
89
6 MaxInterval: maximal number of bistellar flips that will be performed
90
without a change of the f-vector of the moved complex. Default: 100000
91
92
7 Mode: flip mode, 0=reducing, 1=comparing, 2=reduce as sub-complex,
93
3=randomize. Default: 0
94
95
8 WriteLevel: 0=no output, 1=storing of every vertex minimal complex to
96
user library, 2=e-mail notification. Default: 1
97
98
9 MailNotifyIntervall: (minimum) number of seconds between two e-mail
99
notifications. Default: 24 ⋅ 60 ⋅ 60 (one day)
100
101
10 MaxIntervalIsManifold: maximal number of bistellar flips that will be
102
performed without a change of the f-vector of a vertex link while
103
trying to prove that the complex is a combinatorial manifold. Default:
104
5000
105
106
11 MaxIntervalRandomize := 50: number of flips performed to create a
107
randomized sphere. Default: 50
108
109
 Example 
110
 gap> SCBistellarOptions.BaseRelaxation;
111
 3
112
 gap> SCBistellarOptions.BaseHeating;
113
 4
114
 gap> SCBistellarOptions.Relaxation;
115
 0
116
 gap> SCBistellarOptions.Heating;
117
 0
118
 gap> SCBistellarOptions.MaxRounds;
119
 500000
120
 gap> SCBistellarOptions.MaxInterval;
121
 100000
122
 gap> SCBistellarOptions.Mode;
123
 0
124
 gap> SCBistellarOptions.WriteLevel;
125
 0
126
 gap> SCBistellarOptions.MailNotifyInterval;
127
 86400
128
 gap> SCBistellarOptions.MaxIntervalIsManifold;
129
 5000
130
 gap> SCBistellarOptions.MaxIntervalRandomize;
131
 50
132
 
133

134
135
9.2-2 SCEquivalent
136
137
SCEquivalent( complex1, complex2 )  method
138
Returns: true or false upon success, fail or a list of type [ fail,
139
SCSimplicialComplex, Integer, facet list] otherwise.
140
141
Checks if the simplicial complex complex1 (which has to fulfill the weak
142
pseudomanifold property with empty boundary) can be reduced to the
143
simplicial complex complex2 via bistellar moves, i. e. if complex1 and
144
complex2 are PL-homeomorphic. Note that in general the problem is
145
undecidable. In this case fail is returned.
146
147
It is recommended to use a minimal triangulation complex2 for the check if
148
possible.
149
150
Internally calls SCReduceComplexEx (9.2-14)
151
(complex1,complex2,1,SCIntFunc.SCChooseMove);
152
153
 Example 
154
 gap> SCBistellarOptions.WriteLevel:=0;; # do not save complexes to disk
155
 gap> obj:=SC([[1,2],[2,3],[3,4],[4,5],[5,6],[6,1]]);; # hexagon
156
 gap> refObj:=SCBdSimplex(2);; # triangle as a (minimal) reference object
157
 gap> SCEquivalent(obj,refObj);
158
 #I SCReduceComplexEx: complexes are bistellarly equivalent.
159
 true
160
 
161

162
163
9.2-3 SCExamineComplexBistellar
164
165
SCExamineComplexBistellar( complex )  method
166
Returns: simplicial complex passed as argument with additional properties
167
upon success, fail otherwise.
168
169
Computes the face lattice, the f-vector, the AS-determinant, the dimension
170
and the maximal vertex label of complex.
171
172
 Example 
173
 gap> obj:=SC([[1,2],[2,3],[3,4],[4,5],[5,6],[6,1]]);
174
 [SimplicialComplex
175
 
176
 Properties known: Dim, FacetsEx, Name, Vertices.
177
 
178
 Name="unnamed complex 7"
179
 Dim=1
180
 
181
 /SimplicialComplex]
182
 gap> SCExamineComplexBistellar(obj);
183
 [SimplicialComplex
184
 
185
 Properties known: AltshulerSteinberg, BoundaryEx, Dim, FVector, 
186
 FacetsEx, HasBoundary, IsPseudoManifold, IsPure, 
187
 Name, NumFaces[], SkelExs[], Vertices.
188
 
189
 Name="unnamed complex 7"
190
 Dim=1
191
 AltshulerSteinberg=0
192
 FVector=[ 6, 6 ]
193
 HasBoundary=false
194
 IsPseudoManifold=true
195
 IsPure=true
196
 
197
 /SimplicialComplex]
198
 
199

200
201
9.2-4 SCIntFunc.SCChooseMove
202
203
SCIntFunc.SCChooseMove( dim, moves )  function
204
Returns: a bistellar move, i. e. a pair of lists upon success, fail
205
otherwise.
206
207
Since the problem of finding a bistellar flip sequence that reduces a
208
simplicial complex is undecidable, we have to use an heuristic approach to
209
choose the next move.
210
211
The implemented strategy SCIntFunc.SCChooseMove first tries to directly
212
remove vertices, edges, i-faces in increasing dimension etc. If this is not
213
possible it inserts high dimensional faces in decreasing co-dimension. To do
214
this in an efficient way a number of parameters have to be adjusted, namely
215
SCBistellarOptions.BaseHeating and SCBistellarOptions.BaseRelaxation. See
216
SCBistellarOptions (9.2-1) for further options.
217
218
If this strategy does not work for you, just implement a customized strategy
219
and pass it to SCReduceComplexEx (9.2-14).
220
221
See SCRMoves (9.2-10) for further information.
222
223
9.2-5 SCIsKStackedSphere
224
225
SCIsKStackedSphere( complex, k )  method
226
Returns: a list upon success, fail otherwise.
227
228
Checks, whether the given simplicial complex complex that must be a PL
229
d-sphere is a k-stacked sphere with 1≤ k≤ ⌊fracd+22⌋ using a randomized
230
algorithm based on bistellar moves (see [Eff11b], [Eff11a]). Note that it is
231
not checked whether complex is a PL sphere -- if not, the algorithm will not
232
succeed. Returns a list upon success: the first entry is a boolean, where
233
true means that the complex is k-stacked and false means that the complex
234
cannot be k-stacked. A value of -1 means that the question could not be
235
decided. The second argument contains a simplicial complex that, in case of
236
success, contains the trigangulated (d+1)-ball B with ∂ B=S and
237
operatornameskel_d-k(B)=operatornameskel_d-k(S), where S denotes the
238
simplicial complex passed in complex.
239
240
Internally calls SCReduceComplexEx (9.2-14).
241
242
 Example 
243
 gap> SCLib.SearchByName("S^4~S^1");
244
 [ [ 463, "S^4~S^1 (VT)" ], [ 1473, "S^4~S^1 (VT)" ], [ 1474, "S^4~S^1 (VT)" ],
245
 [ 2477, "S^4~S^1 (VT)" ], [ 4395, "S^4~S^1 (VT)" ], 
246
 [ 4396, "S^4~S^1 (VT)" ], [ 4397, "S^4~S^1 (VT)" ], 
247
 [ 4398, "S^4~S^1 (VT)" ], [ 4399, "S^4~S^1 (VT)" ], 
248
 [ 4402, "S^4~S^1 (VT)" ], [ 4403, "S^4~S^1 (VT)" ], 
249
 [ 4404, "S^4~S^1 (VT)" ] ]
250
 gap> c:=SCLib.Load(last[1][1]);;
251
 gap> l:=SCLink(c,1);
252
 [SimplicialComplex
253
 
254
 Properties known: Dim, FacetsEx, Name, Vertices.
255
 
256
 Name="lk([ 1 ]) in S^4~S^1 (VT)"
257
 Dim=4
258
 
259
 /SimplicialComplex]
260
 gap> SCIsKStackedSphere(l,1);
261
 #I SCIsKStackedSphere: checking if complex is a 1-stacked sphere...
262
 #I SCIsKStackedSphere: try 1/1
263
 #I SCIsKStackedSphere: complex is a 1-stacked sphere.
264
 [ true, [SimplicialComplex
265
 
266
 Properties known: Dim, FacetsEx, Name, Vertices.
267
 
268
 Name="Filled 1-stacked sphere (lk([ 1 ]) in S^4~S^1 (VT))"
269
 Dim=5
270
 
271
 /SimplicialComplex] ]
272
 
273

274
275
9.2-6 SCBistellarIsManifold
276
277
SCBistellarIsManifold( complex )  method
278
Returns: true or false upon success, fail otherwise.
279
280
Tries to prove that a closed simplicial d-pseudomanifold is a combinatorial
281
manifold by reducing its vertex links to the boundary of the d-simplex.
282
283
false is returned if it can be proven that there exists a vertex link which
284
is not PL-homeomorphic to the standard PL-sphere, true is returned if all
285
vertex links are bistellarly equivalent to the boundary of the simplex, fail
286
is returned if the algorithm does not terminate after the number of rounds
287
indicated by SCBistellarOptions.MaxIntervallIsManifold.
288
289
Internally calls SCReduceComplexEx (9.2-14)
290
(link,SCEmpty(),0,SCIntFunc.SCChooseMove); for every link of complex. Note
291
that false is returned in case of a bounded manifold.
292
293
See SCIsManifoldEx (12.1-18) and SCIsManifold (12.1-17) for alternative
294
methods for manifold verification.
295
296
 Example 
297
 gap> c:=SCBdCrossPolytope(3);;
298
 gap> SCBistellarIsManifold(c);
299
 true
300
 
301

302
303
9.2-7 SCIsMovableComplex
304
305
SCIsMovableComplex( complex )  method
306
Returns: true or false upon success, fail otherwise.
307
308
Checks if a simplicial complex complex can be modified by bistellar moves,
309
i. e. if it is a pure simplicial complex which fulfills the weak
310
pseudomanifold property with empty boundary.
311
312
 Example 
313
 gap> c:=SCBdCrossPolytope(3);;
314
 gap> SCIsMovableComplex(c);
315
 true
316
 
317

318
319
Complex with non-empty boundary:
320
321
 Example 
322
 gap> c:=SC([[1,2],[2,3],[3,4],[3,1]]);;
323
 gap> SCIsMovableComplex(c);
324
 false
325
 
326

327
328
9.2-8 SCMove
329
330
SCMove( c, move )  method
331
Returns: simplicial complex of type SCSimplicialComplex upon success, fail
332
otherwise.
333
334
Applies the bistellar move move to a simplicial complex c. move is given as
335
a (r+1)-tuple together with a (d+1-r)-tuple if d is the dimension of c and
336
if move is a r-move. See SCRMoves (9.2-10) for detailed information about
337
bistellar r-moves.
338
339
Note: move and c should be given in standard labeling to ensure a correct
340
result.
341
342
 Example 
343
 gap> obj:=SC([[1,2],[2,3],[3,4],[4,1]]);
344
 [SimplicialComplex
345
 
346
 Properties known: Dim, FacetsEx, Name, Vertices.
347
 
348
 Name="unnamed complex 5"
349
 Dim=1
350
 
351
 /SimplicialComplex]
352
 gap> moves:=SCMoves(obj);
353
 [ [ [ [ 1, 2 ], [ ] ], [ [ 1, 4 ], [ ] ], [ [ 2, 3 ], [ ] ], 
354
 [ [ 3, 4 ], [ ] ] ], 
355
 [ [ [ 1 ], [ 2, 4 ] ], [ [ 2 ], [ 1, 3 ] ], [ [ 3 ], [ 2, 4 ] ], 
356
 [ [ 4 ], [ 1, 3 ] ] ] ]
357
 gap> obj:=SCMove(obj,last[2][1]);
358
 [SimplicialComplex
359
 
360
 Properties known: Dim, FacetsEx, Name, NumFaces[], SkelExs[], 
361
 Vertices.
362
 
363
 Name="unnamed complex 6"
364
 Dim=1
365
 
366
 /SimplicialComplex]
367
 
368

369
370
9.2-9 SCMoves
371
372
SCMoves( complex )  method
373
Returns: a list of list of pairs of lists upon success, fail otherwise.
374
375
See SCRMoves (9.2-10) for further information.
376
377
 Example 
378
 gap> c:=SCBdCrossPolytope(3);;
379
 gap> moves:=SCMoves(c);
380
 [ [ [ [ 1, 3, 5 ], [ ] ], [ [ 1, 3, 6 ], [ ] ], [ [ 1, 4, 5 ], [ ] ], 
381
 [ [ 1, 4, 6 ], [ ] ], [ [ 2, 3, 5 ], [ ] ], [ [ 2, 3, 6 ], [ ] ], 
382
 [ [ 2, 4, 5 ], [ ] ], [ [ 2, 4, 6 ], [ ] ] ], 
383
 [ [ [ 1, 3 ], [ 5, 6 ] ], [ [ 1, 4 ], [ 5, 6 ] ], [ [ 1, 5 ], [ 3, 4 ] ], 
384
 [ [ 1, 6 ], [ 3, 4 ] ], [ [ 2, 3 ], [ 5, 6 ] ], [ [ 2, 4 ], [ 5, 6 ] ], 
385
 [ [ 2, 5 ], [ 3, 4 ] ], [ [ 2, 6 ], [ 3, 4 ] ], [ [ 3, 5 ], [ 1, 2 ] ], 
386
 [ [ 3, 6 ], [ 1, 2 ] ], [ [ 4, 5 ], [ 1, 2 ] ], [ [ 4, 6 ], [ 1, 2 ] ] ]
387
 , [ ] ]
388
 
389

390
391
9.2-10 SCRMoves
392
393
SCRMoves( complex, r )  method
394
Returns: a list of pairs of the form [ list, list ], fail otherwise.
395
396
A bistellar r-move of a d-dimensional combinatorial manifold complex is a
397
r-face m_1 together with a d-r-tuple m_2 where m_1 is a common face of
398
exactly (d+1-r) facets and m_2 is not a face of complex.
399
400
The r-move removes all facets containing m_1 and replaces them by the (r+1)
401
faces obtained by uniting m_2 with any subset of m_1 of order r.
402
403
The resulting complex is PL-homeomorphic to complex.
404
405
 Example 
406
 gap> c:=SCBdCrossPolytope(3);;
407
 gap> moves:=SCRMoves(c,1);
408
 [ [ [ 1, 3 ], [ 5, 6 ] ], [ [ 1, 4 ], [ 5, 6 ] ], [ [ 1, 5 ], [ 3, 4 ] ], 
409
 [ [ 1, 6 ], [ 3, 4 ] ], [ [ 2, 3 ], [ 5, 6 ] ], [ [ 2, 4 ], [ 5, 6 ] ], 
410
 [ [ 2, 5 ], [ 3, 4 ] ], [ [ 2, 6 ], [ 3, 4 ] ], [ [ 3, 5 ], [ 1, 2 ] ], 
411
 [ [ 3, 6 ], [ 1, 2 ] ], [ [ 4, 5 ], [ 1, 2 ] ], [ [ 4, 6 ], [ 1, 2 ] ] ]
412
 
413

414
415
9.2-11 SCRandomize
416
417
SCRandomize( complex[[, rounds][, allowedmoves]] )  function
418
Returns: a simplicial complex upon success, fail otherwise.
419
420
Randomizes the given simplicial complex complex via bistellar moves chosen
421
at random. By passing the optional array allowedmoves, which has to be a
422
dense array of integer values of length SCDim(complex), certain moves can be
423
allowed or forbidden in the proccess. An entry allowedmoves[i]=1 allows
424
(i-1)-moves and an entry allowedmoves[i]=0 forbids (i-1)-moves in the
425
randomization process.
426
427
With optional positive integer argument rounds, the amount of randomization
428
can be controlled. The higher the value of rounds, the more bistellar moves
429
will be randomly performed on complex. Note that the argument rounds
430
overrides the global setting SCBistellarOptions.MaxIntervalRandomize (this
431
value is used, if rounds is not specified). Internally calls
432
SCReduceComplexEx (9.2-14).
433
434
 Example 
435
 gap> c:=SCRandomize(SCBdSimplex(4));
436
 [SimplicialComplex
437
 
438
 Properties known: Dim, FacetsEx, Name, Vertices.
439
 
440
 Name="Randomized S^3_5"
441
 Dim=3
442
 
443
 /SimplicialComplex]
444
 gap> c.F;
445
 [ 16, 65, 98, 49 ]
446
 
447

448
449
9.2-12 SCReduceAsSubcomplex
450
451
SCReduceAsSubcomplex( complex1, complex2 )  method
452
Returns: SCBistellarOptions.WriteLevel=0: a triple of the form [ boolean,
453
simplicial complex, rounds performed ] upon termination of the
454
algorithm.
455
456
SCBistellarOptions.WriteLevel=1: A library of simplicial complexes
457
with a number of complexes from the reducing process and (upon
458
termination) a triple of the form [ boolean, simplicial complex,
459
rounds performed ].
460
461
SCBistellarOptions.WriteLevel=2: A mail in case a smaller version
462
of complex1 was found, a library of simplicial complexes with a
463
number of complexes from the reducing process and (upon
464
termination) a triple of the form [ boolean, simplicial complex,
465
rounds performed ].
466
467
Returns fail upon an error.
468
469
Reduces a simplicial complex complex1 (satisfying the weak pseudomanifold
470
property with empty boundary) as a sub-complex of the simplicial complex
471
complex2.
472
473
Main application: Reduce a sub-complex of the cross polytope without
474
introducing diagonals.
475
476
Internally calls SCReduceComplexEx (9.2-14)
477
(complex1,complex2,2,SCIntFunc.SCChooseMove);
478
479
 Example 
480
 gap> c:=SCFromFacets([[1,3],[3,5],[4,5],[4,1]]);;
481
 gap> SCBistellarOptions.WriteLevel:=0;; # do not save complexes 
482
 gap> SCReduceAsSubcomplex(c,SCBdCrossPolytope(3));
483
 [ true, [SimplicialComplex
484
 
485
 Properties known: Dim, FacetsEx, Name, Vertices.
486
 
487
 Name="unnamed complex 36"
488
 Dim=1
489
 
490
 /SimplicialComplex], 1 ]
491

492
493
9.2-13 SCReduceComplex
494
495
SCReduceComplex( complex )  method
496
Returns: SCBistellarOptions.WriteLevel=0: a triple of the form [ boolean,
497
simplicial complex, rounds performed ] upon termination of the
498
algorithm.
499
500
SCBistellarOptions.WriteLevel=1: A library of simplicial complexes
501
with a number of complexes from the reducing process and (upon
502
termination) a triple of the form [ boolean, simplicial complex,
503
rounds performed ].
504
505
SCBistellarOptions.WriteLevel=2: A mail in case a smaller version
506
of complex1 was found, a library of simplicial complexes with a
507
number of complexes from the reducing process and (upon
508
termination) a triple of the form [ boolean, simplicial complex,
509
rounds performed ].
510
511
Returns fail upon an error..
512
513
Reduces a pure simplicial complex complex satisfying the weak pseudomanifold
514
property via bistellar moves. Internally calls SCReduceComplexEx (9.2-14)
515
(complex,SCEmpty(),0,SCIntFunc.SCChooseMove);
516
517
 Example 
518
 gap> obj:=SC([[1,2],[2,3],[3,4],[4,5],[5,6],[6,1]]);; # hexagon
519
 gap> SCBistellarOptions.WriteLevel:=0;; # do not save complexes 
520
 gap> tmp := SCReduceComplex(obj);
521
 [ true, [SimplicialComplex
522
 
523
 Properties known: Dim, FacetsEx, Name, Vertices.
524
 
525
 Name="unnamed complex 27"
526
 Dim=1
527
 
528
 /SimplicialComplex], 3 ]
529
 
530

531
532
9.2-14 SCReduceComplexEx
533
534
SCReduceComplexEx( complex, refComplex, mode, choosemove )  function
535
Returns: SCBistellarOptions.WriteLevel=0: a triple of the form [ boolean,
536
simplicial complex, rounds ] upon termination of the algorithm.
537
538
SCBistellarOptions.WriteLevel=1: A library of simplicial complexes
539
with a number of complexes from the reducing process and (upon
540
termination) a triple of the form [ boolean, simplicial complex,
541
rounds ].
542
543
SCBistellarOptions.WriteLevel=2: A mail in case a smaller version
544
of complex1 was found, a library of simplicial complexes with a
545
number of complexes from the reducing process and (upon
546
termination) a triple of the form [ boolean, simplicial complex,
547
rounds ].
548
549
Returns fail upon an error.
550
551
Reduces a pure simplicial complex complex satisfying the weak pseudomanifold
552
property via bistellar moves mode = 0, compares it to the simplicial complex
553
refComplex (mode = 1) or reduces it as a sub-complex of refComplex (mode =
554
2).
555
556
choosemove is a function containing a flip strategy, see also
557
SCIntFunc.SCChooseMove (9.2-4).
558
559
The currently smallest complex is stored to the variable minComplex, the
560
currently smallest f-vector to minF. Note that in general the algorithm will
561
not stop until the maximum number of rounds is reached. You can adjust the
562
maximum number of rounds via the property SCBistellarOptions (9.2-1). The
563
number of rounds performed is returned in the third entry of the triple
564
returned by this function.
565
566
This function is called by
567
568
1 SCReduceComplex (9.2-13),
569
570
2 SCEquivalent (9.2-2),
571
572
3 SCReduceAsSubcomplex (9.2-12),
573
574
4 SCBistellarIsManifold (9.2-6).
575
576
5 SCRandomize (9.2-11).
577
578
Please see SCMailIsPending (15.2-3) for further information about the email
579
notification system in case SCBistellarOptions.WriteLevel is set to 2.
580
581
 Example 
582
 gap> c:=SCBdCrossPolytope(4);;
583
 gap> SCBistellarOptions.WriteLevel:=0;; # do not save complexes 
584
 gap> SCReduceComplexEx(c,SCEmpty(),0,SCIntFunc.SCChooseMove);
585
 [ true, [SimplicialComplex
586
 
587
 Properties known: Dim, FacetsEx, Name, Vertices.
588
 
589
 Name="unnamed complex 13"
590
 Dim=3
591
 
592
 /SimplicialComplex], 7 ]
593
 gap> SCReduceComplexEx(c,SCEmpty(),0,SCIntFunc.SCChooseMove);
594
 [ true, [SimplicialComplex
595
 
596
 Properties known: Dim, FacetsEx, Name, Vertices.
597
 
598
 Name="unnamed complex 18"
599
 Dim=3
600
 
601
 /SimplicialComplex], 9 ]
602
 gap> SCMailSetAddress("johndoe@somehost"); 
603
 true
604
 gap> SCMailIsEnabled(); 
605
 true
606
 gap> SCReduceComplexEx(c,SCEmpty(),0,SCIntFunc.SCChooseMove);
607
 [ true, [SimplicialComplex
608
 
609
 Properties known: Dim, FacetsEx, Name, Vertices.
610
 
611
 Name="unnamed complex 23"
612
 Dim=3
613
 
614
 /SimplicialComplex], 7 ]
615
 
616

617
618
Content of sent mail:
619
620
 Example 
621
 Greetings master,
622
 
623
 this is simpcomp 2.1.7 running on igt215.mathematik.uni-stuttgart.de
624
 (Linux igt215 2.6.26-2-amd64 #1 SMP Thu Nov 5 02:23:12 UTC 2009 x86_64
625
 GNU/Linux), GAP 4.4.12.
626
 
627
 I have been working hard for 0 seconds and have a message for you, see below.
628
 
629
 #### START MESSAGE ####
630
 
631
 SCReduceComplex:
632
 
633
 Computed locally minimal complex after 7 rounds:
634
 
635
 [SimplicialComplex
636
 
637
  Properties known: Boundary, Chi, Date, Dim, F, Faces, Facets, G, H,
638
 HasBoundary, Homology, IsConnected, IsManifold, IsPM, Name, SCVertices,
639
 Vertices.
640
 
641
  Name="ReducedComplex_5_vertices_7"
642
  Dim=3
643
  Chi=0
644
  F=[ 5, 10, 10, 5 ]
645
  G=[ 0, 0 ]
646
  H=[ 1, 1, 1, 1 ]
647
  HasBoundary=false
648
  Homology=[ [ 0, [ ] ], [ 0, [ ] ], [ 0, [ ] ], [ 1, [ ] ] ]
649
  IsConnected=true
650
  IsPM=true
651
 
652
 /SimplicialComplex]
653
 
654
 ##### END MESSAGE #####
655
 
656
 That's all, I hope this is good news! Have a nice day.
657
 
658

659
660
9.2-15 SCReduceComplexFast
661
662
SCReduceComplexFast( complex )  function
663
Returns: a simplicial complex upon success, fail otherwise.
664
665
Same as SCReduceComplex (9.2-13), but calls an external binary provided with
666
the simpcomp package.
667
668
669