Orbiter 2022
Combinatorial Objects
poset_orbit_node_io.cpp
Go to the documentation of this file.
1// poset_orbit_node_io.cpp
2//
3// Anton Betten
4// moved here from DISCRETA/snakesandladders.cpp
5// December 27, 2008
6// renamed from io.cpp into oracle_io.cpp Aug 24, 2011
7
8
10#include "discreta/discreta.h"
13
14using namespace std;
15
16namespace orbiter {
17namespace layer4_classification {
18namespace poset_classification {
19
20
23 actions::action *A, orbiter_kernel_system::memory_object *m, int &nb_group_elements,
24 int verbose_level)
25{
26 int f_v = (verbose_level >= 1);
27 int i;
28 int *Elt;
29
30 Elt = NEW_int(A->elt_size_in_int);
31
32 //Elt = PC->Elt6;
33 m->read_int(&node);
34 if (f_v) {
35 cout << "poset_orbit_node::read_memory_object "
36 "node " << node << endl;
37 cout << "cur_pointer=" << m->cur_pointer << endl;
38 }
39 m->read_int(&prev);
40 m->read_lint(&pt);
41 m->read_int(&nb_strong_generators);
42 if (f_v) {
43 cout << "poset_orbit_node::read_memory_object "
44 "nb_strong_generators " << nb_strong_generators << endl;
45 }
46 if (nb_strong_generators) {
47#if 0
48 hdl_strong_generators = NEW_int(nb_strong_generators);
49 tl = NEW_int(A->base_len());
50 for (i = 0; i < nb_strong_generators; i++) {
51 A->element_read_from_memory_object(Elt, m, verbose_level - 2);
52 hdl_strong_generators[i] = A->element_store(Elt, FALSE);
53 nb_group_elements++;
54 }
55#else
56 first_strong_generator_handle = -1;
57 tl = NEW_int(A->base_len());
58 for (i = 0; i < nb_strong_generators; i++) {
59 A->element_read_from_memory_object(Elt, m, verbose_level - 2);
60 if (i == 0) {
61 first_strong_generator_handle = A->element_store(Elt, FALSE);
62 }
63 else {
64 A->element_store(Elt, FALSE);
65 }
66 nb_group_elements++;
67 }
68#endif
69 for (i = 0; i < A->base_len(); i++) {
70 m->read_int(&tl[i]);
71 }
72 }
73 else {
74 //hdl_strong_generators = NULL;
75 first_strong_generator_handle = -1;
76 tl = NULL;
77 }
78 m->read_int(&nb_extensions);
79 if (f_v) {
80 cout << "poset_orbit_node::read_memory_object nb_extensions "
81 << nb_extensions << endl;
82 cout << "cur_pointer=" << m->cur_pointer << endl;
83 }
84 E = NEW_OBJECTS(extension, nb_extensions);
85 if (f_v) {
86 cout << "E allocated" << endl;
87 }
88 for (i = 0; i < nb_extensions; i++) {
89 if (f_v) {
90 cout << "poset_orbit_node::read_memory_object "
91 "extension " << i << endl;
92 }
93 long int a;
94 int b;
95
96 m->read_lint(&a);
97 E[i].set_pt(a);
98 if (f_v) {
99 cout << "poset_orbit_node::read_memory_object "
100 "pt = " << E[i].get_pt() << endl;
101 }
102 m->read_int(&b);
103 E[i].set_orbit_len(b);
104 if (f_v) {
105 cout << "poset_orbit_node::read_memory_object "
106 "pt = " << E[i].get_orbit_len() << endl;
107 }
108 m->read_int(&b);
109 E[i].set_type(b);
110 if (f_v) {
111 cout << "poset_orbit_node::read_memory_object "
112 "type = " << E[i].get_type() << endl;
113 }
114 if (b == EXTENSION_TYPE_EXTENSION) {
115 // extension node
116 m->read_int(&b); // next poset_orbit_node
117 E[i].set_data(b);
118 }
119 else if (b == EXTENSION_TYPE_FUSION) {
120 // fusion node
121 A->element_read_from_memory_object(Elt, m, verbose_level - 2);
122 E[i].set_data(A->element_store(Elt, FALSE));
123 m->read_int(&b);
124 E[i].set_data1(b);
125 m->read_int(&b);
126 E[i].set_data2(b);
127 nb_group_elements++;
128 }
129 else {
130 cout << "poset_orbit_node::read_memory_object type "
131 << E[i].get_type() << " is illegal" << endl;
132 exit(1);
133 }
134 }
135 FREE_int(Elt);
136 if (f_v) {
137 cout << "poset_orbit_node::read_memory_object node "
138 << node << " finished" << endl;
139 }
140}
141
144 actions::action *A, orbiter_kernel_system::memory_object *m, int &nb_group_elements,
145 int verbose_level)
146{
147 int f_v = (verbose_level >= 1);
148 int i;
149 int *Elt;
150
151 Elt = NEW_int(A->elt_size_in_int);
152
153 //Elt = PC->Elt6;
154
155 if (f_v) {
156 cout << "poset_orbit_node::write_memory_object "
157 "node " << node << endl;
158 cout << "used_length=" << m->used_length << endl;
159 }
160 m->write_int(node);
161 m->write_int(prev);
162 m->write_lint(pt);
163 m->write_int(nb_strong_generators);
164 if (f_v) {
165 cout << node << " " << prev << " " << pt << " "
166 << nb_strong_generators << endl;
167 }
168 for (i = 0; i < nb_strong_generators; i++) {
169 //A->element_retrieve(hdl_strong_generators[i], Elt, FALSE);
170 A->element_retrieve(first_strong_generator_handle + i, Elt, FALSE);
171 A->element_write_to_memory_object(Elt, m, verbose_level);
172 nb_group_elements++;
173 }
174 if (nb_strong_generators) {
175 if (f_v) {
176 cout << "writing tl" << endl;
177 }
178 for (i = 0; i < A->base_len(); i++) {
179 m->write_int(tl[i]);
180 if (f_v) {
181 cout << tl[i] << " ";
182 }
183 }
184 if (f_v) {
185 cout << endl;
186 }
187 }
188 m->write_int(nb_extensions);
189 if (f_v) {
190 cout << "nb_extensions=" << nb_extensions << endl;
191 cout << "used_length=" << m->used_length << endl;
192 }
193 for (i = 0; i < nb_extensions; i++) {
194 m->write_lint(E[i].get_pt());
195 m->write_int(E[i].get_orbit_len());
196 m->write_int(E[i].get_type());
197 if (f_v) {
198 cout << i << " : " << E[i].get_pt() << " : "
199 << E[i].get_orbit_len() << " : " << E[i].get_type() << endl;
200 }
201 if (E[i].get_type() == EXTENSION_TYPE_EXTENSION) {
202 // extension node
203 m->write_int(E[i].get_data()); // next poset_orbit_node
204 if (f_v) {
205 cout << "extension node, data=" << E[i].get_data() << endl;
206 }
207 }
208 else if (E[i].get_type() == EXTENSION_TYPE_FUSION) {
209 // fusion node
210 if (f_v) {
211 cout << "fusion node, hdl=" << E[i].get_data() << endl;
212 }
213 A->element_retrieve(E[i].get_data(), Elt, FALSE);
214 A->element_write_to_memory_object(Elt, m, verbose_level);
215 m->write_int(E[i].get_data1());
216 m->write_int(E[i].get_data2());
217 nb_group_elements++;
218 }
219 else {
220 cout << "poset_orbit_node::write_memory: type "
221 << E[i].get_type() << " is illegal" << endl;
222 exit(1);
223 }
224 }
225 FREE_int(Elt);
226 if (f_v) {
227 cout << "poset_orbit_node::write_memory_object node "
228 << node << " finished" << endl;
229 }
230}
231
233{
234 int i;
235 long int s = 0;
236
237 s += 2 * sizeof(int); // node, prev
238 s += sizeof(long int); // pt
239 s += sizeof(int); // nb_strong_generators
240 //m->write_int(node);
241 //m->write_int(prev);
242 //m->write_lint(pt);
243 //m->write_int(nb_strong_generators);
244
245 s += nb_strong_generators * A->coded_elt_size_in_char;
246
247 if (nb_strong_generators) {
248 s += A->base_len() * sizeof(int);
249 // tl[]
250 }
251
252 s += sizeof(int); // nb_extensions
253 //m->write_int(nb_extensions);
254
255 for (i = 0; i < nb_extensions; i++) {
256 s += sizeof(long int); // pt
257 s += 2 * sizeof(int); // orbit_len, type
258 //m->write_int(E[i].pt);
259 //m->write_int(E[i].orbit_len);
260 //m->write_int(E[i].type);
261
262 if (E[i].get_type() == EXTENSION_TYPE_EXTENSION) {
263 // extension node
264 s += sizeof(int); // data
265 //m->write_int(E[i].data); // next poset_orbit_node
266 }
267 else if (E[i].get_type() == EXTENSION_TYPE_FUSION) {
268 // fusion node
269 s += A->coded_elt_size_in_char; // group element
270 //A->element_retrieve(E[i].data, Elt, FALSE);
271 //A->element_write_to_memory_object(Elt, m, verbose_level);
272
273 s += 2 * sizeof(int); // data1, data2
274 //m->write_int(E[i].data1);
275 //m->write_int(E[i].data2);
276 }
277 }
278 return s;
279}
280
281
283 ifstream &fp, int verbose_level)
284{
285 int f_v = (verbose_level >= 1);
286
287 if (f_v) {
288 cout << "poset_orbit_node::sv_read_file node " << node << endl;
289 }
290 int hdl;
291
292 if (nb_strong_generators) {
293 //hdl = hdl_strong_generators[0];
294 hdl = first_strong_generator_handle;
295 }
296 else {
297 hdl = -1;
298 }
299 Schreier_vector = PC->get_schreier_vector_handler()->sv_read_file(
300 hdl, nb_strong_generators,
301 fp, verbose_level);
302 if (f_v) {
303 cout << "poset_orbit_node::sv_read_file node " << node
304 << " finished" << endl;
305 }
306}
307
309 ofstream &fp, int verbose_level)
310{
311 int f_v = (verbose_level >= 1);
312
313 if (f_v) {
314 cout << "poset_orbit_node::sv_write_file node " << node << endl;
315 }
316
317 PC->get_schreier_vector_handler()->sv_write_file(Schreier_vector,
318 fp, verbose_level);
319
320 if (f_v) {
321 cout << "poset_orbit_node::sv_write_file node "
322 << node << " finished" << endl;
323 }
324}
325
327 ifstream &fp, int &nb_group_elements,
328 int verbose_level)
329{
330 int f_v = (verbose_level >= 1);
331 int f_vv = (verbose_level >= 2);
332 int i;
333 int *Elt;
335
336 Elt = NEW_int(A->elt_size_in_int);
337 //node = Fio.fread_int4(fp);
338 fp.read((char *) &node, sizeof(int));
339 if (f_v) {
340 cout << "poset_orbit_node::read_file node " << node << endl;
341 }
342 fp.read((char *) &prev, sizeof(int));
343 fp.read((char *) &pt, sizeof(long int));
344 fp.read((char *) &nb_strong_generators, sizeof(int));
345 //prev = Fio.fread_int4(fp);
346 //pt = Fio.fread_int4(fp);
347 //nb_strong_generators = Fio.fread_int4(fp);
348 if (f_vv) {
349 cout << "prev=" << prev << endl;
350 cout << "pt=" << pt << endl;
351 cout << "nb_strong_generators " << nb_strong_generators << endl;
352 }
353 if (nb_strong_generators) {
354#if 0
355 hdl_strong_generators = NEW_int(nb_strong_generators);
356 tl = NEW_int(A->base_len());
357 for (i = 0; i < nb_strong_generators; i++) {
358 A->element_read_file_fp(Elt, fp, verbose_level);
359 if (f_vv) {
360 cout << "read element" << endl;
361 A->element_print_quick(Elt, cout);
362 }
363 hdl_strong_generators[i] = A->element_store(Elt, FALSE);
364 nb_group_elements++;
365 }
366#else
367 tl = NEW_int(A->base_len());
368 first_strong_generator_handle = -1;
369 for (i = 0; i < nb_strong_generators; i++) {
370 A->element_read_file_fp(Elt, fp, verbose_level);
371 if (f_vv) {
372 cout << "read element" << endl;
373 A->element_print_quick(Elt, cout);
374 }
375 if (i == 0) {
376 first_strong_generator_handle = A->element_store(Elt, FALSE);
377 }
378 else {
379 A->element_store(Elt, FALSE);
380 }
381 nb_group_elements++;
382 }
383#endif
384 for (i = 0; i < A->base_len(); i++) {
385 fp.read((char *) &tl[i], sizeof(int));
386 //tl[i] = Fio.fread_int4(fp);
387 if (f_vv) {
388 cout << "read tl[" << i << "]=" << tl[i] << endl;
389 }
390 }
391 }
392 else {
393 //hdl_strong_generators = NULL;
394 first_strong_generator_handle = -1;
395 tl = NULL;
396 }
397 fp.read((char *) &nb_extensions, sizeof(int));
398 //nb_extensions = Fio.fread_int4(fp);
399 if (f_vv) {
400 cout << "nb_extensions " << nb_extensions << endl;
401 }
402 E = NEW_OBJECTS(extension, nb_extensions);
403 if (f_vv) {
404 cout << "E allocated" << endl;
405 }
406 for (i = 0; i < nb_extensions; i++) {
407 if (f_vv) {
408 cout << "poset_orbit_node::read_file extension " << i << endl;
409 }
410 long int a;
411 int b;
412
413 fp.read((char *) &a, sizeof(long int));
414 E[i].set_pt(a);
415 //E[i].pt = Fio.fread_int4(fp);
416 if (f_vv) {
417 cout << "pt = " << E[i].get_pt() << endl;
418 }
419 fp.read((char *) &b, sizeof(int));
420 E[i].set_orbit_len(b);
421 //E[i].orbit_len = Fio.fread_int4(fp);
422 if (f_vv) {
423 cout << "orbit_len = " << E[i].get_orbit_len() << endl;
424 }
425 fp.read((char *) &b, sizeof(int));
426 E[i].set_type(b);
427 //E[i].type = Fio.fread_int4(fp);
428 if (f_vv) {
429 cout << "type = " << E[i].get_type() << endl;
430 }
431 if (E[i].get_type() == EXTENSION_TYPE_EXTENSION) {
432 // extension node
433 fp.read((char *) &b, sizeof(int));
434 E[i].set_data(b);
435 //E[i].data = Fio.fread_int4(fp);
436 // next poset_orbit_node
437 }
438 else if (E[i].get_type() == EXTENSION_TYPE_FUSION) {
439 // fusion node
440 A->element_read_file_fp(Elt, fp, verbose_level);
441 if (f_vv) {
442 cout << "read element" << endl;
443 A->element_print_quick(Elt, cout);
444 }
445 //element_read_file(A, Elt, elt, fp, verbose_level);
446 E[i].set_data(A->element_store(Elt, FALSE));
447 fp.read((char *) &b, sizeof(int));
448 E[i].set_data1(b);
449 fp.read((char *) &b, sizeof(int));
450 E[i].set_data2(b);
451 nb_group_elements++;
452 }
453 else if (E[i].get_type() == EXTENSION_TYPE_PROCESSING) {
454 cout << "poset_orbit_node::read_file: "
455 "type EXTENSION_TYPE_PROCESSING is illegal" << endl;
456 exit(1);
457 }
458 }
459 FREE_int(Elt);
460 if (f_v) {
461 cout << "poset_orbit_node::read_file node "
462 << node << " finished" << endl;
463 }
464}
465
467 ofstream &fp, int &nb_group_elements,
468 int verbose_level)
469{
470 int i;
471 int *Elt;
472 int f_v = FALSE;//(verbose_level >= 1);
473 int f_vv = FALSE;//(verbose_level >= 2);
475
476 Elt = NEW_int(A->elt_size_in_int);
477 if (f_v) {
478 cout << "poset_orbit_node::write_file node " << node << endl;
479 }
480 fp.write((char *) &node, sizeof(int));
481 fp.write((char *) &prev, sizeof(int));
482 fp.write((char *) &pt, sizeof(long int));
483 fp.write((char *) &nb_strong_generators, sizeof(int));
484 if (f_v) {
485 cout << node << " " << prev << " " << pt << " "
486 << nb_strong_generators << endl;
487 }
488 for (i = 0; i < nb_strong_generators; i++) {
489 A->element_retrieve(first_strong_generator_handle + i, Elt, FALSE);
490 A->element_write_file_fp(Elt, fp, 0);
491 nb_group_elements++;
492 }
493 if (nb_strong_generators) {
494 if (f_vv) {
495 cout << "writing tl" << endl;
496 }
497 for (i = 0; i < A->base_len(); i++) {
498 fp.write((char *) &tl[i], sizeof(int));
499 if (f_vv) {
500 cout << tl[i] << " ";
501 }
502 }
503 if (f_vv) {
504 cout << endl;
505 }
506 }
507 fp.write((char *) &nb_extensions, sizeof(int));
508 if (f_vv) {
509 cout << "nb_extensions=" << nb_extensions << endl;
510 }
511 for (i = 0; i < nb_extensions; i++) {
512 long int a;
513 int b;
514
515 a = E[i].get_pt();
516 fp.write((char *) &a, sizeof(long int));
517 b = E[i].get_orbit_len();
518 fp.write((char *) &b, sizeof(int));
519 b = E[i].get_type();
520 fp.write((char *) &b, sizeof(int));
521 if (f_vv) {
522 cout << i << " : " << E[i].get_pt()
523 << " : " << E[i].get_orbit_len()
524 << " : " << E[i].get_type() << endl;
525 }
526 if (E[i].get_type() == EXTENSION_TYPE_EXTENSION) {
527 // extension node
528 b = E[i].get_data();
529 fp.write((char *) &b, sizeof(int));
530 if (f_vv) {
531 cout << "extension node, data=" << E[i].get_data() << endl;
532 }
533 }
534 else if (E[i].get_type() == EXTENSION_TYPE_FUSION) {
535 // fusion node
536 if (f_vv) {
537 cout << "fusion node, hdl=" << E[i].get_data() << endl;
538 }
539 A->element_retrieve(E[i].get_data(), Elt, FALSE);
540 A->element_write_file_fp(Elt, fp, 0);
541 b = E[i].get_data1();
542 fp.write((char *) &b, sizeof(int));
543 b = E[i].get_data2();
544 fp.write((char *) &b, sizeof(int));
545 nb_group_elements++;
546 }
547 else if (E[i].get_type() == EXTENSION_TYPE_PROCESSING) {
548 cout << "poset_orbit_node::write_file: "
549 "type EXTENSION_TYPE_PROCESSING is illegal" << endl;
550 exit(1);
551 }
552 }
553 FREE_int(Elt);
554 if (f_v) {
555 cout << "poset_orbit_node::write_file node "
556 << node << " finished" << endl;
557 }
558}
559
562 groups::schreier *Schreier,
563 int verbose_level)
564{
565 int f_v = (verbose_level >= 1);
566
567 if (f_v) {
568 cout << "poset_orbit_node::save_schreier_forest"
569 << endl;
570 }
571 if (PC->get_control()->f_export_schreier_trees) {
572 int orbit_no, nb_orbits;
573
574 nb_orbits = Schreier->nb_orbits;
575 for (orbit_no = 0; orbit_no < nb_orbits; orbit_no++) {
576 string fname;
577 string fname_mask_full;
578
579 PC->create_shallow_schreier_tree_fname_mask(
580 fname, node);
581
582
583 fname_mask_full.assign(fname);
584 fname_mask_full.append(".layered_graph");
585
586 Schreier->export_tree_as_layered_graph(orbit_no,
587 fname_mask_full,
588 verbose_level);
589 }
590 }
591 if (f_v) {
592 cout << "poset_orbit_node::save_schreier_forest "
593 "done" << endl;
594 }
595}
596
599 int verbose_level)
600{
601 int f_v = (verbose_level >= 1);
602 int f_vv = (verbose_level >= 2);
603
604 if (f_v) {
605 cout << "poset_orbit_node::save_shallow_schreier_forest"
606 << endl;
607 }
608 if (PC->get_control()->f_export_schreier_trees) {
609 if (f_v) {
610 cout << "poset_orbit_node::save_shallow_schreier_forest "
611 "f_export_schreier_trees is TRUE" << endl;
612 }
613 int orbit_no, nb_orbits;
614 int *orbit_reps;
615
616 if (Schreier_vector == NULL) {
617 cout << "poset_orbit_node::save_shallow_schreier_forest "
618 "Schreier_vector == NULL" << endl;
619 exit(1);
620 }
622 orbit_reps, nb_orbits);
623 if (f_v) {
624 cout << "poset_orbit_node::save_shallow_schreier_forest "
625 "nb_orbits = " << nb_orbits << endl;
626 }
627 for (orbit_no = 0; orbit_no < nb_orbits; orbit_no++) {
628
629
630 if (f_vv) {
631 cout << "poset_orbit_node::save_shallow_schreier_forest "
632 "orbit " << orbit_no << " / " << nb_orbits << endl;
633 }
634
635 string fname;
636 string fname_mask_full;
637
638 PC->create_shallow_schreier_tree_fname_mask(
639 fname, node);
640
641
642 fname_mask_full.assign(fname);
643 fname_mask_full.append(".layered_graph");
644
645 Schreier_vector->export_tree_as_layered_graph(
646 orbit_no, orbit_reps[orbit_no],
647 fname_mask_full,
648 verbose_level - 3);
649 }
650 FREE_int(orbit_reps);
651 }
652 if (f_v) {
653 cout << "poset_orbit_node::save_shallow_schreier_forest "
654 "done" << endl;
655 }
656}
657
660 groups::schreier *Schreier,
661 int f_using_invariant_subset, actions::action *AR,
662 int verbose_level)
663{
664 int f_v = (verbose_level >= 1);
665
666 if (f_v) {
667 cout << "poset_orbit_node::draw_schreier_forest"
668 << endl;
669 }
670 if (PC->get_control()->f_draw_schreier_trees) {
671
672
673 int orbit_no, nb_orbits;
674 char str[2000];
675
676 string fname_mask_latex;
677 PC->create_schreier_tree_fname_mask_base_tex(fname_mask_latex);
678
679 snprintf(str, 2000, fname_mask_latex.c_str(), node);
680 string label_tex;
681
682 label_tex.assign(str);
683
684
685 nb_orbits = Schreier->nb_orbits;
686 for (orbit_no = 0; orbit_no < nb_orbits; orbit_no++) {
687
688 int f_has_point_labels = FALSE;
689 long int *point_labels = NULL;
690
691 string fname_mask;
692 PC->create_schreier_tree_fname_mask_base(fname_mask);
693
694 snprintf(str, 2000, fname_mask.c_str(), node, orbit_no);
695 string label;
696
697 label.assign(str);
698
699
700
701
702 if (f_using_invariant_subset) {
703 f_has_point_labels = TRUE;
704 point_labels = AR->G.ABR->points;
705 }
706
707 if (f_v) {
708 cout << "poset_orbit_node::draw_schreier_forest"
709 << endl;
710 cout << "Node " << node << " " << orbit_no
711 << " drawing schreier tree" << endl;
712 }
713
714
715 Schreier->draw_tree(label,
716 PC->get_control()->draw_options,
717 orbit_no,
718 f_has_point_labels, point_labels,
719 verbose_level - 1);
720 }
721
722 Schreier->latex(label_tex);
723 }
724
725 if (f_v) {
726 cout << "poset_orbit_node::draw_schreier_forest"
727 " done" << endl;
728 }
729}
730
731}}}
732
733
734
735
736
a permutation group in a fixed action.
Definition: actions.h:99
void element_print_quick(void *elt, std::ostream &ost)
Definition: action_cb.cpp:353
void element_retrieve(int hdl, void *elt, int verbose_level)
Definition: action_cb.cpp:301
void element_read_from_memory_object(int *Elt, orbiter_kernel_system::memory_object *m, int verbose_level)
Definition: action_cb.cpp:689
void element_write_file_fp(int *Elt, std::ofstream &fp, int verbose_level)
Definition: action_cb.cpp:587
void element_read_file_fp(int *Elt, std::ifstream &fp, int verbose_level)
Definition: action_cb.cpp:604
void element_write_to_memory_object(int *Elt, orbiter_kernel_system::memory_object *m, int verbose_level)
Definition: action_cb.cpp:673
int element_store(void *elt, int verbose_level)
Definition: action_cb.cpp:308
void export_tree_as_layered_graph(int orbit_no, int orbit_rep, std::string &fname_mask, int verbose_level)
void count_number_of_orbits_and_get_orbit_reps(int *&orbit_reps, int &nb_orbits)
Schreier trees for orbits of groups on points.
Definition: groups.h:839
void export_tree_as_layered_graph(int orbit_no, std::string &fname_mask, int verbose_level)
void draw_tree(std::string &fname, graphics::layered_graph_draw_options *Opt, int orbit_no, int f_has_point_labels, long int *point_labels, int verbose_level)
represents a flag in the poset classification algorithm; related to poset_orbit_node
void read_memory_object(poset_classification *PC, actions::action *A, orbiter_kernel_system::memory_object *m, int &nb_group_elements, int verbose_level)
void draw_schreier_forest(poset_classification *PC, groups::schreier *Schreier, int f_using_invariant_subset, actions::action *AR, int verbose_level)
void sv_read_file(poset_classification *PC, std::ifstream &fp, int verbose_level)
void write_memory_object(poset_classification *PC, actions::action *A, orbiter_kernel_system::memory_object *m, int &nb_group_elements, int verbose_level)
void write_file(actions::action *A, std::ofstream &fp, int &nb_group_elements, int verbose_level)
void save_schreier_forest(poset_classification *PC, groups::schreier *Schreier, int verbose_level)
void sv_write_file(poset_classification *PC, std::ofstream &fp, int verbose_level)
void save_shallow_schreier_forest(poset_classification *PC, int verbose_level)
void read_file(actions::action *A, std::ifstream &fp, int &nb_group_elements, int verbose_level)
#define FREE_int(p)
Definition: foundations.h:640
#define NEW_int(n)
Definition: foundations.h:625
#define NEW_OBJECTS(type, n)
Definition: foundations.h:639
#define TRUE
Definition: foundations.h:231
#define FALSE
Definition: foundations.h:234
the orbiter library for the classification of combinatorial objects
#define EXTENSION_TYPE_PROCESSING
#define EXTENSION_TYPE_FUSION
#define EXTENSION_TYPE_EXTENSION
induced_actions::action_by_restriction * ABR