8#ifndef SRC_LIB_FOUNDATIONS_GEOMETRY_BUILDER_GEOMETRY_BUILDER_H_
9#define SRC_LIB_FOUNDATIONS_GEOMETRY_BUILDER_GEOMETRY_BUILDER_H_
13namespace layer1_foundations {
14namespace geometry_builder {
68 fp <<
"violet!50!red";
72 fp <<
"green!50!blue";
76 fp <<
"purple!50!red";
171 void TDO_init(
int *v,
int *b,
int *theTDO,
int verbose_level);
173 int tdo_line,
int v,
int *b,
int *r,
int verbose_level);
176 void init_k(
int verbose_level);
210 void print(std::ostream &ost);
252 void main2(
int verbose_level);
265 int apply_tests(
int I,
int m,
int J,
int n,
int j,
int verbose_level);
266 void print(std::ostream &ost,
int v,
int v_cut);
291 int First(
int verbose_level);
292 int Next(
int verbose_level);
298 int RowFirst0(
int I,
int m,
int verbose_level);
299 int RowNext0(
int I,
int m,
int verbose_level);
300 int RowFirst(
int I,
int m,
int verbose_level);
301 int RowNext(
int I,
int m,
int verbose_level);
305 void place_row(
int I,
int m,
int idx,
int verbose_level);
308 int ConfFirst(
int I,
int m,
int J,
int verbose_level);
309 int ConfNext(
int I,
int m,
int J,
int verbose_level);
311 int XFirst(
int I,
int m,
int J,
int n,
int verbose_level);
312 int XNext(
int I,
int m,
int J,
int n,
int verbose_level);
313 void XClear(
int I,
int m,
int J,
int n);
314 int X_First(
int I,
int m,
int J,
int n,
int j,
int verbose_level);
315 int TryToPlace(
int I,
int m,
int J,
int n,
int j,
int verbose_level);
373 int argc, std::string *argv,
439 void isot(
int line,
int verbose_level);
441 void isot2(
int line,
int verbose_level);
442 void set_split(
int line,
int remainder,
int modulo);
475 void Floyd(
int row,
int verbose_level);
506 void init(
int v,
int b,
int *
R,
int verbose_level);
508 void get_flags(
int row, std::vector<int> &flags);
513 std::ostream &ost,
int v_cur,
int v_cut,
514 gen_geo *gg,
int f_print_isot);
516 std::ostream &ost,
int v_cur,
int v_cut,
517 gen_geo *gg,
int *the_X,
int f_print_isot);
520 int *theY,
cperm *p,
cperm *q,
int verbose_level);
566 void init(
gen_geo *
gg,
int v,
int b,
int *R,
int verbose_level);
574 int f_orderly,
int verbose_level);
576 int f_orderly,
int verbose_level);
577 void set_split(
int row,
int remainder,
int modulo);
578 void print_geo(std::ostream &ost,
int v,
int *theGEO);
579 void print_inc(std::ostream &ost,
int v,
long int *theInc);
580 void print_blocks(std::ostream &ost,
int v,
long int *theInc);
581 void compute_blocks(
long int *&Blocks,
int *&
K,
int v,
long int *theInc);
585 void geo_to_inc(
int v,
int *theGEO,
long int *theInc,
int nb_flags);
586 void inc_to_geo(
int v,
long int *theInc,
int *theGEO,
int nb_flags);
637 int f_partition_fixing_last,
638 int &f_already_there,
642 int f_partition_fixing_last,
643 int &f_new_object,
int verbose_level);
645 void set_split(
int remainder,
int modulo);
697 int i1,
int j0,
int r,
700 int i1,
int j0,
int r,
703 int i1,
int j0,
int r,
710 int i1,
int j0,
int r,
int old_x);
a permutation for use in class gen_geo
void mult_apply_forwc_r(int i, int l)
void mult_apply_tau_l(int i, int j)
void power(cperm *res, int exp)
void mult_apply_backwc_l(int i, int l)
void mult(cperm *b, cperm *c)
void mult_apply_tau_r(int i, int j)
void init_and_identity(int l)
a row-tactical decomposition with fuse, to be used by the geometry_builder
void init(gen_geo *gg, int verbose_level)
void init_partition(int verbose_level)
~decomposition_with_fuse()
void TDO_init(int *v, int *b, int *theTDO, int verbose_level)
void conf_init_last_non_zero_flag(int verbose_level)
void init_tdo_line(int fuse_idx, int tdo_line, int v, int *b, int *r, int verbose_level)
gen_geo_conf * get_conf_IJ(int I, int J)
int ** Partition_fixing_last
decomposition_with_fuse()
void init_k(int verbose_level)
void init_fuse(int verbose_level)
description of a configuration which is part of class decomposition_with_fuse
void print(std::ostream &ost)
int f_last_non_zero_in_fuse
classification of geometries with a given row-tactical decomposition
void setup_output_files(int verbose_level)
void main2(int verbose_level)
geometric_backtrack_search * Geometric_backtrack_search
decomposition_with_fuse * Decomposition_with_fuse
void decrement_pairs_point(int i1, int col, int k)
void girth_Floyd(int i, int verbose_level)
std::string inc_file_name
void init(geometry_builder *GB, int verbose_level)
void init_semicanonical(int verbose_level)
std::string fname_search_tree
void print_I_m(int I, int m)
void girth_test_delete_incidence(int i, int j_idx, int j)
void print_pairs(int line)
int apply_tests(int I, int m, int J, int n, int j, int verbose_level)
std::ofstream * ost_search_tree_flags
test_semicanonical * Test_semicanonical
std::string fname_search_tree_flags
void increment_pairs_point(int i1, int col, int k)
void print_override_theX(std::ostream &ost, int *theX, int v, int v_cut)
void girth_test_add_incidence(int i, int j_idx, int j)
void close_output_files(int verbose_level)
int check_girth_condition(int i, int j_idx, int j, int verbose_level)
void record_tree(int i1, int f_already_there)
int forget_ivhbar_in_last_isot
void generate_all(int verbose_level)
std::ofstream * ost_search_tree
classification of geometries with a given row-tactical decomposition
void init(gen_geo *gg, int verbose_level)
int RowNextSplit(int I, int m, int verbose_level)
void place_row(int I, int m, int idx, int verbose_level)
int BlockFirst(int I, int verbose_level)
int BlockNext(int I, int verbose_level)
int RowNext(int I, int m, int verbose_level)
~geometric_backtrack_search()
int RowFirst0(int I, int m, int verbose_level)
int RowNextOrderly(int I, int m, int verbose_level)
int geo_back_test(int I, int verbose_level)
int * Row_stabilizer_orbit_idx
int TryToPlace(int I, int m, int J, int n, int j, int verbose_level)
int RowFirstSplit(int I, int m, int verbose_level)
void XClear(int I, int m, int J, int n)
int XNext(int I, int m, int J, int n, int verbose_level)
int First(int verbose_level)
int X_First(int I, int m, int J, int n, int j, int verbose_level)
int RowNext0(int I, int m, int verbose_level)
void ConfClear(int I, int m, int J)
int ConfFirst(int I, int m, int J, int verbose_level)
int RowFirstLexLeast(int I, int m, int verbose_level)
int XFirst(int I, int m, int J, int n, int verbose_level)
iso_type ** Row_stabilizer_orbits
int Next(int verbose_level)
int ConfNext(int I, int m, int J, int verbose_level)
geometric_backtrack_search()
void RowClear(int I, int m)
int RowNextLexLeast(int I, int m, int verbose_level)
int RowFirstOrderly(int I, int m, int verbose_level)
int RowFirst(int I, int m, int verbose_level)
description of a geometry
int read_arguments(int argc, std::string *argv, int verbose_level)
std::vector< int > print_at_line
geometry_builder_description()
~geometry_builder_description()
std::vector< std::string > test2_lines
std::vector< std::string > test_lines
classification of geometries
void isot(int line, int verbose_level)
void isot_no_vhbars(int verbose_level)
void compute_VBR(int verbose_level)
void set_split(int line, int remainder, int modulo)
std::string control_file_name
void isot2(int line, int verbose_level)
void init_description(geometry_builder_description *Descr, int verbose_level)
geometry_builder_description * Descr
classification of geometries
void add_incidence(int i, int j_idx, int j)
int check_girth_condition(int i, int j_idx, int j, int verbose_level)
void Floyd(int row, int verbose_level)
void delete_incidence(int i, int j_idx, int j)
void init(gen_geo *gg, int girth, int verbose_level)
row-by-row encoding of an incidence geometry
int find_square(int m, int n)
void get_flags(int row, std::vector< int > &flags)
void print_partitioned(std::ostream &ost, int v_cur, int v_cut, gen_geo *gg, int f_print_isot)
long int rank_row(int row)
void print_permuted(cperm *pv, cperm *qv)
void print_horizontal_bar(std::ostream &ost, gen_geo *gg, int f_print_isot, iso_type *it)
void init(int v, int b, int *R, int verbose_level)
void apply_permutation(incidence *inc, int v, int *theY, cperm *p, cperm *q, int verbose_level)
int & theX_ir(int i, int r)
void print_partitioned_override_theX(std::ostream &ost, int v_cur, int v_cut, gen_geo *gg, int *the_X, int f_print_isot)
encoding of an incidence geometry during classification
void init_pairs(int verbose_level)
void print_blocks(std::ostream &ost, int v, long int *theInc)
void print_inc(std::ostream &ost, int v, long int *theInc)
void init(gen_geo *gg, int v, int b, int *R, int verbose_level)
iso_type * iso_type_no_vhbars
void print_geo(std::ostream &ost, int v, int *theGEO)
iso_type ** iso_type_at_line
int is_block_tactical(int v, long int *theInc)
void inc_to_geo(int v, long int *theInc, int *theGEO, int nb_flags)
void compute_blocks_ranked(long int *&Blocks, int v, long int *theInc)
int compute_k(int v, long int *theInc)
void geo_to_inc(int v, int *theGEO, long int *theInc, int nb_flags)
void set_split(int row, int remainder, int modulo)
void install_isomorphism_test_after_a_given_row(int i, int f_orderly, int verbose_level)
void print_R(int v, cperm *p, cperm *q)
int find_square(int m, int n)
void install_isomorphism_test_of_second_kind_after_a_given_row(int i, int f_orderly, int verbose_level)
void compute_blocks(long int *&Blocks, int *&K, int v, long int *theInc)
classification of geometries based on canonical forms
void write_blocks_file(std::string &fname, int verbose_level)
void print_GEO(int *pc, int v, incidence *inc)
void print_geos(int verbose_level)
data_structures::classify_using_canonical_forms * Canonical_forms
void write_inc_file(std::string &fname, int verbose_level)
void print_geometry(inc_encoding *Encoding, int v, incidence *inc)
void print_status(std::ostream &ost, int f_with_flags)
void print_flags(std::ostream &ost)
void add_geometry(inc_encoding *Encoding, int f_partition_fixing_last, int &f_already_there, int verbose_level)
void init(gen_geo *gg, int v, int f_orderly, int verbose_level)
void set_split(int remainder, int modulo)
void find_and_add_geo(int *theY, int f_partition_fixing_last, int &f_new_object, int verbose_level)
void write_blocks_file_long(std::string &fname, int verbose_level)
classification of geometries
void col_marker_remove(int I, int m, int J, int n, int i1, int j0, int r, int old_x)
void row_init(int I, int m, int J, int i1, int verbose_level)
void init_bars(int verbose_level)
int row_starter(int I, int m, int J, int n, int i1, int j0, int r, int verbose_level)
int col_marker_test(int j0, int j, int i1)
void init(gen_geo *gg, int MAX_V, int verbose_level)
void marker_move_on(int I, int m, int J, int n, int j, int i1, int j0, int r, int verbose_level)
void markers_update(int I, int m, int J, int n, int j, int i1, int j0, int r, int verbose_level)
void row_test_continue(int I, int m, int J, int i1)
the orbiter library for the classification of combinatorial objects