12#ifndef ORBITER_SRC_LIB_FOUNDATIONS_GEOMETRY_GEOMETRY_H_
13#define ORBITER_SRC_LIB_FOUNDATIONS_GEOMETRY_GEOMETRY_H_
17namespace layer1_foundations {
59 int *pts_on_line,
int verbose_level);
60 void report(std::ostream &ost,
int verbose_level);
92 int rank(
int verbose_level);
125 int rank(
int verbose_level);
148 long int *&Pts,
int &nb_pts,
int verbose_level);
150 long int *&Pts,
int &nb_pts,
int verbose_level);
152 long int *&Pts,
int &nb_pts,
int verbose_level);
154 long int *&Pts,
int &nb_pts,
int f_short,
int verbose_level);
160 long int *&Pts,
int &nb_pts,
int verbose_level);
165 void LunelliSce(
int *pts18,
int verbose_level);
204 int exponent,
int verbose_level);
215 long int *arc,
int arc_sz,
216 int target_sz,
int target_d,
220 long int *s_lines,
int nb_s_lines,
221 int target_sz,
int arc_d,
int arc_d_low,
int arc_s,
226 long int *s_lines,
int nb_s_lines,
int arc_s,
227 long int *t_lines,
int nb_t_lines,
int arc_t,
228 int target_sz,
int arc_d,
int arc_d_low,
233 long int *s_lines,
int nb_s_lines,
int arc_s,
234 long int *t_lines,
int nb_t_lines,
int arc_t,
235 long int *u_lines,
int nb_u_lines,
int arc_u,
236 int target_sz,
int arc_d,
int arc_d_low,
241 int arc_sz,
int arc_d,
242 std::string &secant_lines_text,
243 std::string &external_lines_as_subset_of_secants_text,
251 std::string arc_input_set,
252 std::string arc_label,
259 std::string arc_input_set,
260 std::string arc_label,
262 std::string t_lines_string,
269 std::string arc_input_set,
270 std::string arc_label,
272 std::string t_lines_string,
274 std::string u_lines_string,
277 int f_translation,
int translation_exponent,
278 int f_Segre,
int f_Payne,
int f_Cherowitzo,
int f_OKeefe_Penttila,
279 std::string &label_txt,
280 std::string &label_tex,
281 int &nb_pts,
long int *&Pts,
285 std::string &label_txt,
286 std::string &label_tex,
287 int &nb_pts,
long int *&Pts,
290 std::string &label_txt,
291 std::string &label_tex,
292 int &nb_pts,
long int *&Pts,
295 std::string &label_txt,
296 std::string &label_tex,
297 int &nb_pts,
long int *&Pts,
299 int arc_test(
long int *input_pts,
int nb_pts,
302 int *&bisecants,
int *&conics,
int verbose_level);
376 int f_Uab,
int a,
int b,
435 void compute_TDO(
int max_depth,
int verbose_level);
437 int f_enter_math,
int f_print_subscripts,
440 int f_enter_math,
int f_print_subscripts,
499 int *intersection_dimensions,
int verbose_level);
502 int *is_in_shadow,
int verbose_level);
504 long int *&the_linear_set,
int &the_linear_set_sz,
511 void report(std::ostream &ost,
int verbose_level);
552 void unrank(
long int rk,
int *subspace,
int verbose_level);
554 long int rank(
int *subspace,
int verbose_level);
555 long int rank_recursion(
int *subspace,
int *big_space,
int verbose_level);
750 int *form_i,
int *form_j,
int *form_coeff);
753 int nb_terms,
int *form_i,
int *form_j,
754 int *form_coeff,
int *Gram);
756 int *form_i,
int *form_j,
int *form_coeff,
int *Gram,
757 int i,
int j,
int coeff);
759 int *pt_coords,
int *set,
760 int set_sz,
int k,
int verbose_level);
764 int f_classical,
int f_Uab,
int parameter_a,
int parameter_b,
765 std::string &fname,
int &nb_pts,
long int *&Pts,
768 long int count_S(
int n,
int q);
770 long int count_T1(
int epsilon,
int n,
int q);
797 int &
maxfit(
int i,
int j);
804 std::string &inverse_isomorphism_klein_quadric_matrix_A6,
811 std::string &line_1_basis,
812 std::string &line_2_basis,
813 int f_normalize_from_the_left,
int f_normalize_from_the_right,
816 std::string &line_1_basis,
817 std::string &line_2_basis,
819 int f_normalize_from_the_left,
int f_normalize_from_the_right,
829 int projective_dimension,
837 long int *points,
int nb_points,
838 long int *lines,
int nb_lines,
841 std::string &equation_text,
842 std::string &symbol_txt,
843 std::string &symbol_tex,
846 int *v5,
int a,
int b,
int c,
int verbose_level);
857 long int *S,
int len,
int pt,
int nb_E,
int verbose_level);
860 long int P1,
long int P2,
int partition_rk,
long int *arc,
864 long int P1,
long int P2,
long int &line1,
long int &line2,
868 int *A3,
int f_semilinear,
int frobenius,
869 long int line1,
long int line2,
874 long int line1_from,
long int line1_to,
875 long int line2_from,
long int line2_to,
880 long int *set2,
int sz2,
long int *set4,
int &sz4,
int verbose_level);
912 std::ostream &ost,
long int a);
940 int ®ulus_size,
int f_opposite,
int verbose_level);
943 int *&self_dual_lines,
int &nb_self_dual_lines,
946 int spread_size,
int verbose_level);
989 long int rk,
int verbose_level);
994 void unrank_lint(
int *subspace_basis,
long int rk,
int verbose_level);
996 long int rank_lint(
int *subspace_basis,
int verbose_level);
1046 void N_unrank(
int *v,
int len,
int rk,
int verbose_level);
1047 int N_rank(
int *v,
int len,
int verbose_level);
1048 void N1_unrank(
int *v,
int len,
int rk,
int verbose_level);
1049 int N1_rank(
int *v,
int len,
int verbose_level);
1050 void S_unrank(
int *v,
int len,
int rk,
int verbose_level);
1051 int S_rank(
int *v,
int len,
int verbose_level);
1052 void Sbar_unrank(
int *v,
int len,
int rk,
int verbose_level);
1053 int Sbar_rank(
int *v,
int len,
int verbose_level);
1055 void report(std::ostream &ost,
int verbose_level);
1083 void unrank_lint(
int *M,
long int rk,
int verbose_level);
1084 long int rank_lint(
int *M,
int verbose_level);
1091#define INCIDENCE_STRUCTURE_REALIZATION_BY_MATRIX 1
1092#define INCIDENCE_STRUCTURE_REALIZATION_BY_ORTHOGONAL 2
1093#define INCIDENCE_STRUCTURE_REALIZATION_BY_HJELMSLEV 3
1094#define INCIDENCE_STRUCTURE_REALIZATION_BY_PROJECTIVE_SPACE 4
1154 int get_ij(
int i,
int j);
1160 void print(std::ostream &ost);
1162 int depth,
int &step,
int &f_refine,
1163 int &f_refine_prev,
int verbose_level);
1165 int depth,
int &step,
int &f_refine,
1166 int &f_refine_prev,
int verbose_level);
1169 int depth,
int verbose_level);
1175 int *row_classes,
int *row_class_idx,
int &nb_row_classes,
1176 int *col_classes,
int *col_class_idx,
int &nb_col_classes);
1187 std::ostream &ost,
int f_enter_math_mode,
1188 int *row_classes,
int *row_class_inv,
int nb_row_classes,
1189 int *col_classes,
int *col_class_inv,
int nb_col_classes,
1190 int f_local_coordinates,
int verbose_level);
1193 std::ostream &ost,
int f_enter_math_mode,
1194 int *row_classes,
int *row_class_inv,
int nb_row_classes,
1195 int *col_classes,
int *col_class_inv,
int nb_col_classes,
1196 int f_local_coordinates,
int verbose_level);
1198 int *row_classes,
int *row_class_inv,
int nb_row_classes,
1199 int *col_classes,
int *col_class_inv,
int nb_col_classes,
1200 int row_class_idx,
int col_class_idx,
1201 int rij,
int *&incidences,
int verbose_level);
1203 int *row_classes,
int *row_class_inv,
int nb_row_classes,
1204 int *col_classes,
int *col_class_inv,
int nb_col_classes,
1205 int row_class_idx,
int col_class_idx,
1206 int kij,
int *&incidences,
int verbose_level);
1208 int *row_classes,
int *row_class_inv,
int nb_row_classes,
1209 int *col_classes,
int *col_class_inv,
int nb_col_classes,
1210 int *row_scheme,
int verbose_level);
1212 int *row_classes,
int *row_class_inv,
int nb_row_classes,
1213 int *col_classes,
int *col_class_inv,
int nb_col_classes,
1214 int *row_scheme,
int verbose_level);
1216 int *row_classes,
int *row_class_inv,
int nb_row_classes,
1217 int *col_classes,
int *col_class_inv,
int nb_col_classes,
1218 int *col_scheme,
int verbose_level);
1221 int *row_classes,
int *row_class_inv,
int nb_row_classes,
1222 int *col_classes,
int *col_class_inv,
int nb_col_classes,
1223 int *row_scheme,
int *col_scheme,
int verbose_level);
1225 int f_list_incidences,
int f_local_coordinates,
int verbose_level);
1228 int f_list_incidences,
int f_local_coordinates,
int verbose_level);
1234 int *&row_classes,
int *&row_class_inv,
int &nb_row_classes,
1235 int *&col_classes,
int *&col_class_inv,
int &nb_col_classes,
1238 int *row_classes,
int *row_class_inv,
1239 int *col_classes,
int *col_class_inv,
1242 std::ostream &ost,
int f_enter_math,
int f_print_subscripts,
1245 std::ostream &ost,
int f_enter_math,
int f_print_subscripts,
1250 int row_cell,
int i,
int *col_classes,
int nb_col_classes,
1251 int width,
int f_labeled);
1253 int *col_classes,
int nb_col_classes,
int width);
1255 int *col_classes,
int nb_col_classes,
1256 int width,
int f_labeled);
1268 int f_detailed,
int f_local_coordinates,
int verbose_level);
1270 int f_tdo_steps,
int f_tdo_depth,
int tdo_depth,
1271 int f_write_tdo_files,
int f_pic,
1272 int f_include_tdo_scheme,
int f_include_tdo_extra,
1273 int f_write_tdo_class_files,
1276 int f_write_tdo_files,
1278 int f_include_tdo_scheme,
1282 int f_write_tdo_files,
1284 int f_include_tdo_scheme,
1285 int f_include_extra,
1290 int f_row_part,
int nb_row_parts,
int *row_parts,
1291 int f_col_part,
int nb_col_parts,
int *col_parts,
1292 int nb_distinguished_point_sets,
1293 int **distinguished_point_sets,
1294 int *distinguished_point_set_size,
1295 int nb_distinguished_line_sets,
1296 int **distinguished_line_sets,
1297 int *distinguished_line_set_size,
1300 int nb_distinguished_point_sets,
1301 int nb_distinguished_line_sets,
1302 int Aut_counter,
int *Aut,
int *Base,
int Base_length,
1305 int Base_length,
int *Base,
int *Transversal_length);
1307 int *&Adj,
int &v,
int *&partition,
1308 int f_row_part,
int nb_row_parts,
int *row_parts,
1309 int f_col_part,
int nb_col_parts,
int *col_parts,
1310 int nb_distinguished_point_sets,
1311 int **distinguished_point_sets,
1312 int *distinguished_point_set_size,
1313 int nb_distinguished_line_sets,
1314 int **distinguished_line_sets,
1315 int *distinguished_line_set_size,
1321 int &total,
int *&partition,
1322 int f_row_part,
int nb_row_parts,
int *row_parts,
1323 int f_col_part,
int nb_col_parts,
int *col_parts,
1324 int nb_distinguished_point_sets,
1325 int **distinguished_point_sets,
1326 int *distinguished_point_set_size,
1327 int nb_distinguished_line_sets,
1328 int **distinguished_line_sets,
1329 int *distinguished_line_set_size,
1333 long int *canonical_labeling,
int verbose_level);
1334 void save_as_csv(std::string &fname_csv,
int verbose_level);
1337 int N_points,
int design_b,
int design_k,
int partition_class_size,
1338 int *&partition,
int verbose_level);
1403 long int **&Pts_on_plane,
1404 int *&nb_pts_on_plane,
1417 std::vector<long int> &External_lines,
1418 long int *&spread_to_external_line_idx,
1419 long int *&external_line_to_spread,
1473 int &nb_lines,
int verbose_level);
1534 void print(std::ostream &ost);
1536 int f_show_incma,
int verbose_level);
1538 int f_show_incma,
int verbose_level);
1541 int &nb_sets,
int &set_size,
int verbose_level);
1543 long int *
set,
int sz,
1546 std::string &set_text,
1549 long int *
set,
int sz,
1552 std::string &set_text,
1555 long int *
set,
int sz,
1559 std::string &set_text,
1560 std::string &set2_text,
1563 long int *packing,
int sz,
1566 std::string &packing_text,
1573 long int *Spread_table,
int nb_spreads,
int spread_size,
1577 long int *data,
int data_sz,
int v,
int b,
int nb_flags,
1580 std::vector<int> &Flags,
int v,
int b,
int nb_flags,
1584 int v,
int b,
int nb_flags,
1588 int v,
int b,
int r,
1591 long int *data,
int data_sz,
int v,
int b,
int k,
int design_sz,
1594 std::string &data_text,
int v,
int k,
int design_sz,
1597 int &nb_rows,
int &nb_cols,
1600 int &nb_rows,
int &nb_cols,
1603 int &nb_rows,
int &nb_cols,
1606 int &nb_rows,
int &nb_cols,
1609 int &nb_rows,
int &nb_cols,
1612 int &nb_rows,
int &nb_cols,
1615 int &nb_rows,
int &nb_cols,
1654 long int *&encoding,
int &encoding_sz,
1657 long int *&encoding,
int &encoding_sz,
1660 long int *&encoding,
int &encoding_sz,
int verbose_level);
1662 long int *&encoding,
int &encoding_sz,
int verbose_level);
1665 int f_compute_canonical_form,
1705 int f_point_pair_joining_allocated;
1707 int *point_pair_to_idx;
1708 int *idx_to_point_i;
1709 int *idx_to_point_j;
1710 int max_point_pair_joining;
1711 int *nb_point_pair_joining;
1712 int *point_pair_joining;
1714 int f_block_pair_joining_allocated;
1716 int *block_pair_to_idx;
1717 int *idx_to_block_i;
1718 int *idx_to_block_j;
1719 int max_block_pair_joining;
1720 int *nb_block_pair_joining;
1721 int *block_pair_joining;
1778 int &
MOLSsxb(
int s,
int x,
int b);
1790 int row_cell,
int row_cell_pt,
int col_cell);
1792 int col_cell,
int col_cell_pt,
int row_cell);
1794 int row_cell1,
int row_cell2,
int col_cell);
1796 int col_cell1,
int col_cell2,
int row_cell);
1798 int row_cell1,
int row_cell_pt,
int row_cell2,
int col_cell);
1803 int col_cell1,
int col_cell_pt,
int col_cell2,
int row_cell);
1872 void report(std::ostream &f);
1957 int f_init_incidence_structure,
1962 int line_rk,
long int *intersection,
int &sz,
int verbose_level);
1967 long int point_rk,
long int *line_pencil,
int verbose_level);
1969 long int point_rk,
long int plane_rk,
1970 long int *line_pencil,
int verbose_level);
1972 long int line_rk,
int pt_rk,
int verbose_level);
1975 int *&Inc,
int verbose_level);
1977 std::vector<int> &Pts, std::vector<int> &Lines,
1978 int *&Inc,
int verbose_level);
1985 int row_type,
int col_type,
1986 int *&Incma,
int &nb_rows,
int &nb_cols,
1991 int row_type,
int col_type,
2015 int conic_test(
long int *S,
int len,
int pt,
int verbose_level);
2018 long int *input_pts,
int nb_pts,
2026 int nb_pts,
long int *Pts,
int *coeff10,
2030 int *ten_coeffs,
int verbose_level);
2032 long int *points,
int &nb_points,
int verbose_level);
2034 long int *points,
int &nb_points,
int verbose_level);
2036 long int *points,
int &nb_points,
int verbose_level);
2038 long int *points,
int nb_points,
2039 long int *tangents,
int verbose_level);
2048 long int *lines_by_rank,
int nb_lines,
2049 long int *set,
int set_size,
int *type,
int verbose_level);
2052 long int *set,
int set_size,
2053 int *type,
int verbose_level);
2056 long int *set,
int set_size,
2057 long int *lines,
int &nb_lines,
int max_lines,
2060 std::vector<long int> &Points,
2061 std::vector<long int> &Lines,
2064 long int *point_rks,
int nb_points,
2065 long int *plane_rks,
int nb_planes,
2066 int *&M,
int verbose_level);
2068 int *type,
int verbose_level);
2071 int *type,
int verbose_level);
2074 int *type_collected,
int verbose_level);
2077 int *type,
int verbose_level);
2079 int *set_of_lines,
int set_size,
2080 int *type,
int verbose_level);
2082 long int *external_lines,
int &nb_external_lines,
2085 long int *tangent_lines,
int &nb_tangent_lines,
2088 long int *set,
int set_size,
2089 long int *secant_lines,
int &nb_secant_lines,
2092 long int *secant_lines,
int &nb_secant_lines,
2094 void Baer_subline(
long int *pts3,
long int *&pts,
int &nb_pts,
2099 void report(std::ostream &ost,
2119 long int rk_in,
long int &rk_out,
int verbose_level);
2123 void print_set(
long int *set,
int set_size);
2126 int *six_coeffs,
int verbose_level);
2128 int *circle_type,
int verbose_level);
2132 grassmann *G,
int rk,
long int *set,
int set_size,
2133 long int *&intersection_set,
int &intersection_set_size,
2137 long int *&intersection_set,
int &intersection_set_size,
2140 long int *set,
int set_size,
2141 int *&intersection_type,
int &highest_intersection_number,
2142 int *&intersection_matrix,
int &nb_planes,
2145 long int *set,
int set_size,
2146 int *&intersection_type,
int &highest_intersection_number,
2149 long int *set,
int set_size,
2153 long int *set,
int set_size,
2155 int *&nb_pts_on_plane,
int &len,
2158 long int *set,
int set_size,
2160 int *&nb_pts_on_plane,
int &len,
2163 long int *set,
int set_size,
2165 std::vector<int> &plane_ranks,
2168 long int *set,
int set_size,
2169 std::vector<int> &point_indices,
2170 std::vector<int> &point_local_coordinates,
2173 long int *set,
int set_size,
2174 std::vector<int> &point_indices,
2177 long int *set_in,
int set_size,
long int *set_out,
int verbose_level);
2187 int *table,
int verbose_level);
2195 int k,
int nb_k_subspaces,
int verbose_level);
2200 long int *set,
int set_size,
2201 long int **&Pts_on_conic,
int *&nb_pts_on_conic,
int &len,
2204 long int *set,
int set_size,
2206 int *&intersection_type,
int &highest_intersection_number,
2210 long int *set,
int set_size,
2211 std::vector<int> &Rk,
2214 long int *set,
int set_size,
2216 long int **&Pts_on_conic,
int **&Conic_eqn,
int *&nb_pts_on_conic,
int &nb_conics,
2218 void find_nucleus(
int *set,
int set_size,
int &nucleus,
2221 long int *three_points,
int verbose_level);
2223 int *&Table,
int verbose_level);
2227 int *&M,
int &nb_planes,
int verbose_level);
2231 long int line2,
int verbose_level);
2234 int plane,
int verbose_level);
2236 long int plane1,
long int plane2,
int verbose_level);
2238 long int line1,
long int line2,
int pt,
int verbose_level);
2241 long int plane1,
long int plane2,
int verbose_level);
2244 int nb_planes,
int *&Intersection_matrix,
2247 int *eqn3,
int verbose_level);
2249 long int line_rank,
int verbose_level);
2251 int *eqn4,
int verbose_level);
2255 long int *three_lines,
2256 int *plane_eqn4,
int verbose_level);
2258 int nb_subsets,
int *sz,
int **subsets,
2265 long int line_rk, std::vector<long int> &plane_ranks,
2268 long int line1_from,
long int line2_from,
2269 long int line1_to,
long int line2_to,
int verbose_level);
2271 std::string line1_from_text, std::string line2_from_text,
2272 std::string line1_to_text, std::string line2_to_text,
2279 int *Elt,
int *
Mtx,
int &frobenius,
2282 std::string &label_txt,
2283 std::string &label_tex,
2284 int &nb_pts,
long int *&Pts,
2287 std::string &label_txt,
2288 std::string &label_tex,
2289 int &nb_pts,
long int *&Pts,
2292 std::string &label_txt,
2293 std::string &label_tex,
2294 int &nb_pts,
long int *&Pts,
2297 std::string &label_txt,
2298 std::string &label_tex,
2299 int &nb_pts,
long int *&Pts,
2302 int elliptic_curve_b,
int elliptic_curve_c,
2303 std::string &label_txt,
2304 std::string &label_tex,
2305 int &nb_pts,
long int *&Pts,
2308 std::string &label_txt,
2309 std::string &label_tex,
2310 int &nb_pts,
long int *&Pts,
2313 std::string &label_txt,
2314 std::string &label_tex,
2315 int &nb_pts,
long int *&Pts,
2319 std::string &label_txt,
2320 std::string &label_tex,
2321 int &nb_pts,
long int *&Pts,
2375 std::string &path_to_spread_tables,
2389 int nb_select,
int *select,
2391 std::string &path_to_spread_tables,
2395 int line1,
int line2,
int verbose_level);
2401 void save(
int verbose_level);
2402 void load(
int verbose_level);
2408 long int *&Dual_spread_idx,
2409 long int *&self_dual_spread_idx,
2413 long int *set1,
int sz1,
2414 long int *set2,
int sz2,
2419 long int *live_point_index,
int nb_live_points,
2420 long int *live_blocks,
int nb_live_blocks,
2424 long int *list_of_lines,
long int *packing,
int sz_of_packing,
2428 int *Partial_packings,
int nb_pp,
int sz,
2429 int *&Iso_type_invariant,
information about the Eckardt points of a surface derived from a six-arc
encoding of combinatorial object for use with nauty
matrices over GF(2) stored as bitvectors
compact storage of 0/1-data as bitvectors
subset of size k of a set of size n
output data created by a run of nauty
data structure for set partitions following Jeffrey Leon
a statistical analysis of data consisting of single integers
a finite field as a vector space over a subfield
isomorphism between the W(3,q) and the Q(4,q) generalized quadrangles
void init(field_theory::finite_field *F, int verbose_level)
orthogonal_geometry::orthogonal * Q4
void isomorphism_Q4q(int *x4, int *y4, int *v)
void find_lines(int verbose_level)
field_theory::finite_field * F
int evaluate_symplectic_form(int *x4, int *y4)
a line in the projective plane created using the Andre construction
void init(andre_construction *Andre, int verbose_level)
~andre_construction_line_element()
field_theory::finite_field * F
int rank(int verbose_level)
void unrank(int line_rank, int verbose_level)
int make_affine_point(int idx, int verbose_level)
andre_construction * Andre
andre_construction_line_element()
a point in the projective plane created using the Andre construction
void unrank(int point_rank, int verbose_level)
~andre_construction_point_element()
andre_construction * Andre
void init(andre_construction *Andre, int verbose_level)
field_theory::finite_field * F
andre_construction_point_element()
int rank(int verbose_level)
Andre / Bruck / Bose construction of a translation plane from a spread.
long int * spread_elements_perm_inv
void init(field_theory::finite_field *F, int k, long int *spread_elements_numeric, int verbose_level)
long int * spread_elements_numeric_sorted
long int * spread_elements_numeric
field_theory::finite_field * F
int * spread_elements_genma
void report(std::ostream &ost, int verbose_level)
long int * spread_elements_perm
void points_on_line(andre_construction_line_element *Line, int *pts_on_line, int verbose_level)
arcs, ovals, hyperovals etc. in projective planes
field_theory::finite_field * F
void GlynnI_hyperoval(long int *&Pts, int &nb_pts, int verbose_level)
int LunelliSce_evaluate_cubic1(int *v)
void LunelliSce(int *pts18, int verbose_level)
int LunelliSce_evaluate_cubic2(int *v)
int OKeefe_Penttila_32(int t)
void GlynnII_hyperoval(long int *&Pts, int &nb_pts, int verbose_level)
void Subiaco_hyperoval(long int *&Pts, int &nb_pts, int verbose_level)
void init(field_theory::finite_field *F, int verbose_level)
void Segre_hyperoval(long int *&Pts, int &nb_pts, int verbose_level)
void Subiaco_oval(long int *&Pts, int &nb_pts, int f_short, int verbose_level)
arcs, ovals, hyperovals etc. in projective planes
void arc_lifting_diophant(long int *arc, int arc_sz, int target_sz, int target_d, solvers::diophant *&D, int verbose_level)
int arc_test(long int *input_pts, int nb_pts, int verbose_level)
void create_subiaco_hyperoval(std::string &label_txt, std::string &label_tex, int &nb_pts, long int *&Pts, int verbose_level)
void arc_lifting3(int arc_size, int arc_d, int arc_d_low, int arc_s, std::string arc_input_set, std::string arc_label, int arc_t, std::string t_lines_string, int arc_u, std::string u_lines_string, int verbose_level)
void create_pasch_arc(long int *the_arc, int &size, int verbose_level)
void init(projective_space *P, int verbose_level)
void create_Payne_hyperoval(long int *the_arc, int &size, int verbose_level)
void create_subiaco_oval(int f_short, std::string &label_txt, std::string &label_tex, int &nb_pts, long int *&Pts, int verbose_level)
void create_regular_hyperoval(long int *the_arc, int &size, int verbose_level)
void arc_lifting2(int arc_size, int arc_d, int arc_d_low, int arc_s, std::string arc_input_set, std::string arc_label, int arc_t, std::string t_lines_string, int verbose_level)
void PG_2_8_create_conic_plus_nucleus_arc_2(long int *the_arc, int &size, int verbose_level)
void create_OKeefe_Penttila_hyperoval_32(long int *the_arc, int &size, int verbose_level)
~arc_in_projective_space()
void create_Segre_hyperoval(long int *the_arc, int &size, int verbose_level)
void create_Cherowitzo_hyperoval(long int *the_arc, int &size, int verbose_level)
void maximal_arc_by_diophant(int arc_sz, int arc_d, std::string &secant_lines_text, std::string &external_lines_as_subset_of_secants_text, solvers::diophant *&D, int verbose_level)
void compute_bisecants_and_conics(long int *arc6, int *&bisecants, int *&conics, int verbose_level)
void PG_2_8_create_conic_plus_nucleus_arc_1(long int *the_arc, int &size, int verbose_level)
void create_Maruta_Hamada_arc(long int *the_arc, int &size, int verbose_level)
void create_translation_hyperoval(long int *the_arc, int &size, int exponent, int verbose_level)
void arc_with_two_given_line_sets_diophant(long int *s_lines, int nb_s_lines, int arc_s, long int *t_lines, int nb_t_lines, int arc_t, int target_sz, int arc_d, int arc_d_low, int f_dualize, solvers::diophant *&D, int verbose_level)
void arc_with_three_given_line_sets_diophant(long int *s_lines, int nb_s_lines, int arc_s, long int *t_lines, int nb_t_lines, int arc_t, long int *u_lines, int nb_u_lines, int arc_u, int target_sz, int arc_d, int arc_d_low, int f_dualize, solvers::diophant *&D, int verbose_level)
void create_Cheon_arc(long int *the_arc, int &size, int verbose_level)
void create_hyperoval(int f_translation, int translation_exponent, int f_Segre, int f_Payne, int f_Cherowitzo, int f_OKeefe_Penttila, std::string &label_txt, std::string &label_tex, int &nb_pts, long int *&Pts, int verbose_level)
void create_Maruta_Hamada_arc2(long int *the_arc, int &size, int verbose_level)
void arc_lifting1(int arc_size, int arc_d, int arc_d_low, int arc_s, std::string arc_input_set, std::string arc_label, int verbose_level)
void arc_with_given_set_of_s_lines_diophant(long int *s_lines, int nb_s_lines, int target_sz, int arc_d, int arc_d_low, int arc_s, int f_dualize, solvers::diophant *&D, int verbose_level)
arc_in_projective_space()
void init_ovoid_Uab_even(int a, int b, int verbose_level)
void get_name(std::string &name)
void init(field_theory::finite_field *Fq, field_theory::finite_field *FQ, int f_Uab, int a, int b, int f_classical, int verbose_level)
void create_unital_tex(int verbose_level)
void init_ovoid(int verbose_level)
void write_unital_to_file()
int * tangent_line_at_point
void create_unital_Uab_tex(int verbose_level)
field_theory::finite_field * FQ
field_theory::finite_field * Fq
long int * Intersection_sets
void compute_the_design(int verbose_level)
void create_unital(int verbose_level)
decomposition of an incidence matrix
data_structures::partitionstack * Stack
void print_row_decomposition_tex(std::ostream &ost, int f_enter_math, int f_print_subscripts, int verbose_level)
void compute_TDO(int max_depth, int verbose_level)
void init_incidence_matrix(int m, int n, int *M, int verbose_level)
void init_inc_and_stack(incidence_structure *Inc, data_structures::partitionstack *Stack, int verbose_level)
void get_col_scheme(int verbose_level)
void setup_default_partition(int verbose_level)
void get_row_scheme(int verbose_level)
void print_column_decomposition_tex(std::ostream &ost, int f_enter_math, int f_print_subscripts, int verbose_level)
void compute_shadow(int *Basis, int basis_sz, int *is_in_shadow, int verbose_level)
void report(std::ostream &ost, int verbose_level)
field_theory::finite_field * Fq
void print_spread_element_table_tex(std::ostream &ost)
void init(int n, int m, int s, field_theory::subfield_structure *SubS, int verbose_level)
void create_latex_report(int verbose_level)
void print_spread_elements_tex(std::ostream &ost)
field_theory::finite_field * FQ
int nb_points_per_spread_element
void compute_linear_set(int *Basis, int basis_sz, long int *&the_linear_set, int &the_linear_set_sz, int verbose_level)
void calculate_spread_elements(int verbose_level)
void compute_intersection_type(int k, int *subspace, int *intersection_dimensions, int verbose_level)
void print_linear_set_tex(long int *set, int sz)
field_theory::subfield_structure * SubS
void print_linear_set_element_tex(long int a, int sz)
a maximal chain of subspaces
void unrank(long int rk, int *subspace, int verbose_level)
void unrank_recursion(long int rk, int *subspace, int verbose_level)
void init_recursion(int n, int *type, int type_len, int idx, field_theory::finite_field *F, int verbose_level)
void init(int n, int *type, int type_len, field_theory::finite_field *F, int verbose_level)
field_theory::finite_field * F
long int rank(int *subspace, int verbose_level)
long int rank_recursion(int *subspace, int *big_space, int verbose_level)
to create a geometric object from a description using class geometric_object_description
geometric_object_create()
~geometric_object_create()
geometric_object_description * Descr
void init(geometric_object_description *Descr, projective_space *P, int verbose_level)
to create a geometric object encoded as a set using a description from the command line
int f_desarguesian_line_spread_in_PG_3_q
std::vector< std::string > Variety_coeffs
geometric_object_description()
std::string number_of_conditions_satisfied_fname
monomial_ordering_type Monomial_ordering_type
std::string variety_label_txt
int f_number_of_conditions_satisfied
int read_arguments(int argc, std::string *argv, int verbose_level)
std::string curve_label_tex
std::string variety_label_tex
std::string variety_coeffs
int f_intersection_of_zariski_open_sets
std::string curve_label_txt
~geometric_object_description()
various functions related to geometries
void do_create_desarguesian_spread(field_theory::finite_field *FQ, field_theory::finite_field *Fq, int m, int verbose_level)
void create_BLT_point(field_theory::finite_field *F, int *v5, int a, int b, int c, int verbose_level)
int & TDO_upper_bound_source(int i, int j)
void hyperplane_lifting_with_two_lines_moved(projective_space *P, long int line1_from, long int line1_to, long int line2_from, long int line2_to, int *A4, int verbose_level)
int test_nb_Eckardt_points(projective_space *P2, long int *S, int len, int pt, int nb_E, int verbose_level)
void maxfit_table_init(int v_max)
void do_cheat_sheet_hermitian(field_theory::finite_field *F, int projective_dimension, int verbose_level)
void AG_element_unrank(int q, int *v, int stride, int len, long int a)
void create_Fisher_BLT_set(long int *Fisher_BLT, int *ABC, field_theory::finite_field *FQ, field_theory::finite_field *Fq, int verbose_level)
void test_PG(int n, int q)
void do_transversal(field_theory::finite_field *F, std::string &line_1_basis, std::string &line_2_basis, std::string &point, int f_normalize_from_the_left, int f_normalize_from_the_right, int verbose_level)
int & TDO_upper_bound(int i, int j)
long int count_S(int n, int q)
void latex_homogeneous_equation(field_theory::finite_field *F, int degree, int nb_vars, std::string &equation_text, std::string &symbol_txt, std::string &symbol_tex, int verbose_level)
int test_if_arc(field_theory::finite_field *Fq, int *pt_coords, int *set, int set_sz, int k, int verbose_level)
int Witt_index(int epsilon, int k)
algebraic_geometry::eckardt_point_info * compute_eckardt_point_info(projective_space *P2, long int *arc6, int verbose_level)
long int nb_pts_S(int n, int q)
long int nb_pts_Qplus(int k, int q)
long int nb_PG_elements(int n, int q)
int braun_test_single_type(int v, int k, int ak)
int dimension_given_Witt_index(int epsilon, int n)
void do_intersection_of_two_lines(field_theory::finite_field *F, std::string &line_1_basis, std::string &line_2_basis, int f_normalize_from_the_left, int f_normalize_from_the_right, int verbose_level)
void AG_element_rank_longinteger(int q, int *v, int stride, int len, ring_theory::longinteger_object &a)
int braun_test_upper_bound(int v, int k)
long int count_T2(int n, int q)
long int nb_AG_elements(int n, int q)
void do_inverse_isomorphism_klein_quadric(field_theory::finite_field *F, std::string &inverse_isomorphism_klein_quadric_matrix_A6, int verbose_level)
void andre_preimage(projective_space *P2, projective_space *P4, long int *set2, int sz2, long int *set4, int &sz4, int verbose_level)
int PG_element_modified_is_in_subspace(int n, int m, int *v)
void test_orthogonal(int n, int q)
int & TDO_upper_bound_internal(int i, int j)
void find_two_lines_for_arc_lifting(projective_space *P, long int P1, long int P2, long int &line1, long int &line2, int verbose_level)
void AG_element_unrank_longinteger(int q, int *v, int stride, int len, ring_theory::longinteger_object &a)
long int count_Sbar(int n, int q)
void add_term(int n, field_theory::finite_field &F, int &nb_terms, int *form_i, int *form_j, int *form_coeff, int *Gram, int i, int j, int coeff)
void maxfit_table_compute()
void print_quadratic_form_list_coded(int form_nb_terms, int *form_i, int *form_j, int *form_coeff)
void test_Orthogonal(int epsilon, int k, int q)
long int nb_pts_Sbar(int n, int q)
int & maxfit_internal(int i, int j)
void create_decomposition_of_projective_plane(std::string &fname_base, projective_space *P, long int *points, int nb_points, long int *lines, int nb_lines, int verbose_level)
long int nb_pts_N1(int n, int q)
void do_rank_points_in_PG(field_theory::finite_field *F, std::string &label, int verbose_level)
long int nb_pts_N(int n, int q)
long int nb_pts_Q(int k, int q)
long int nb_PG_elements_not_in_subspace(int n, int m, int q)
long int nb_pts_Qminus(int k, int q)
int & maxfit(int i, int j)
void rearrange_arc_for_lifting(long int *Arc6, long int P1, long int P2, int partition_rk, long int *arc, int verbose_level)
void TDO_refine_extend_upper_bounds(int new_v_max)
int AG_element_next(int q, int *v, int stride, int len)
void do_cheat_sheet_Gr(field_theory::finite_field *F, int n, int k, int verbose_level)
void do_cheat_sheet_PG(field_theory::finite_field *F, graphics::layered_graph_draw_options *O, int n, int verbose_level)
long int nb_pts_Qepsilon(int epsilon, int k, int q)
int braun_test_on_line_type(int v, int *type)
long int count_N1(int n, int q)
void maxfit_table_reallocate(int v_max)
void create_Mondello_BLT_set(long int *BLT, int *ABC, field_theory::finite_field *FQ, field_theory::finite_field *Fq, int verbose_level)
long int count_T1(int epsilon, int n, int q)
void make_Gram_matrix_from_list_coded_quadratic_form(int n, field_theory::finite_field &F, int nb_terms, int *form_i, int *form_j, int *form_coeff, int *Gram)
long int AG_element_rank(int q, int *v, int stride, int len)
long int nb_affine_lines(int n, int q)
void TDO_refine_init_upper_bounds(int v_max)
void create_Linear_BLT_set(long int *BLT, int *ABC, field_theory::finite_field *FQ, field_theory::finite_field *Fq, int verbose_level)
void hyperplane_lifting_with_two_lines_fixed(projective_space *P, int *A3, int f_semilinear, int frobenius, long int line1, long int line2, int *A4, int verbose_level)
void create_Buekenhout_Metz(field_theory::finite_field *Fq, field_theory::finite_field *FQ, int f_classical, int f_Uab, int parameter_a, int parameter_b, std::string &fname, int &nb_pts, long int *&Pts, int verbose_level)
int packing_number_via_maxfit(int n, int k)
long int nb_pts_Nbar(int n, int q)
subspaces with a fixed embedding
long int rank_embedded_lint(int *subspace_basis, int verbose_level)
void unrank_lint(int *subspace_basis, long int rk, int verbose_level)
field_theory::finite_field * F
void init(int big_n, int n, grassmann *G, int *M, int verbose_level)
void unrank_embedded_lint(int *subspace_basis_with_embedding, long int rk, int verbose_level)
long int rank_lint(int *subspace_basis, int verbose_level)
to rank and unrank subspaces of a fixed dimension in F_q^n
void print_set_tex_with_perp(std::ostream &ost, long int *v, int len)
field_theory::finite_field * F
void create_Schlaefli_graph(int *&Adj, int &sz, int verbose_level)
long int make_special_element_infinity(int verbose_level)
void unrank_longinteger(ring_theory::longinteger_object &rk, int verbose_level)
void print_set(long int *v, int len)
void unrank_longinteger_here(int *Mtx, ring_theory::longinteger_object &rk, int verbose_level)
long int nb_of_subspaces(int verbose_level)
long int make_special_element_one(int verbose_level)
void unrank_lint(long int rk, int verbose_level)
void unrank_embedded_subspace_lint_here(int *Basis, long int rk, int verbose_level)
void unrank_lint_here_and_compute_perp(int *Mtx, long int rk, int verbose_level)
int nb_points_covered(int verbose_level)
ring_theory::longinteger_object * nCkq
void latex_matrix_numerical(std::ostream &ost, int *p)
void rank_longinteger(ring_theory::longinteger_object &r, int verbose_level)
void line_regulus_in_PG_3_q(long int *®ulus, int ®ulus_size, int f_opposite, int verbose_level)
long int rank_embedded_subspace_lint(int verbose_level)
void latex_matrix(std::ostream &ost, int *p)
void compute_dual_line_idx(int *&dual_line_idx, int *&self_dual_lines, int &nb_self_dual_lines, int verbose_level)
void print_set_tex(std::ostream &ost, long int *v, int len)
long int rank_lint_here(int *Mtx, int verbose_level)
void rank_longinteger_here(int *Mtx, ring_theory::longinteger_object &rk, int verbose_level)
int dimension_of_join(long int rk1, long int rk2, int verbose_level)
void print_single_generator_matrix_tex_numerical(std::ostream &ost, long int a)
long int rank_lint(int verbose_level)
void compute_dual_spread(int *spread, int *dual_spread, int spread_size, int verbose_level)
void unrank_embedded_subspace_lint(long int rk, int verbose_level)
void unrank_lint_here(int *Mtx, long int rk, int verbose_level)
void init(int n, int k, field_theory::finite_field *F, int verbose_level)
long int make_special_element_zero(int verbose_level)
void unrank_lint_here_and_extend_basis(int *Mtx, long int rk, int verbose_level)
void points_covered(long int *the_points, int verbose_level)
void print_single_generator_matrix_tex(std::ostream &ost, long int a)
void init(field_theory::finite_field *F, int nb_vars, int verbose_level)
int * index_of_norm_one_element
int N_rank(int *v, int len, int verbose_level)
void list_all_N1(int verbose_level)
field_theory::finite_field * F
void report(std::ostream &ost, int verbose_level)
void list_all_S(int verbose_level)
int N1_rank(int *v, int len, int verbose_level)
void N1_unrank(int *v, int len, int rk, int verbose_level)
void list_all_N(int verbose_level)
int evaluate_hermitian_form(int *v, int len)
void Sbar_unrank(int *v, int len, int rk, int verbose_level)
void list_all_Sbar(int verbose_level)
void N_unrank(int *v, int len, int rk, int verbose_level)
void report_points(std::ostream &ost, int verbose_level)
void create_latex_report(int verbose_level)
void S_unrank(int *v, int len, int rk, int verbose_level)
void unrank_point(int *v, int rk)
int S_rank(int *v, int len, int verbose_level)
int Sbar_rank(int *v, int len, int verbose_level)
void list_of_points_embedded_in_PG(long int *&Pts, int &nb_pts, int verbose_level)
long int number_of_submodules()
void unrank_lint(int *M, long int rk, int verbose_level)
ring_theory::finite_ring * R
void init(ring_theory::finite_ring *R, int n, int k, int verbose_level)
long int rank_lint(int *M, int verbose_level)
interface for various incidence geometries
void get_col_decomposition_scheme(data_structures::partitionstack &PStack, int *row_classes, int *row_class_inv, int nb_row_classes, int *col_classes, int *col_class_inv, int nb_col_classes, int *col_scheme, int verbose_level)
void free_scheme(int *row_classes, int *row_class_inv, int *col_classes, int *col_class_inv, int *scheme)
void save_inc_file(char *fname)
void get_and_print_row_tactical_decomposition_scheme_tex(std::ostream &ost, int f_enter_math, int f_print_subscripts, data_structures::partitionstack &PStack)
void print_line(std::ostream &ost, data_structures::partitionstack &P, int row_cell, int i, int *col_classes, int nb_col_classes, int width, int f_labeled)
void init_by_incidences(int m, int n, int nb_inc, int *X, int verbose_level)
void compute_extended_collinearity_graph(int *&Adj, int &v, int *&partition, int f_row_part, int nb_row_parts, int *row_parts, int f_col_part, int nb_col_parts, int *col_parts, int nb_distinguished_point_sets, int **distinguished_point_sets, int *distinguished_point_set_size, int nb_distinguished_line_sets, int **distinguished_line_sets, int *distinguished_line_set_size, int verbose_level)
void compute_TDO_safe_first(data_structures::partitionstack &PStack, int depth, int &step, int &f_refine, int &f_refine_prev, int verbose_level)
int refine_row_partition_safe(data_structures::partitionstack &PStack, int verbose_level)
void get_scheme(int *&row_classes, int *&row_class_inv, int &nb_row_classes, int *&col_classes, int *&col_class_inv, int &nb_col_classes, int *&scheme, int f_row_scheme, data_structures::partitionstack &PStack)
void get_row_decomposition_scheme(data_structures::partitionstack &PStack, int *row_classes, int *row_class_inv, int nb_row_classes, int *col_classes, int *col_class_inv, int nb_col_classes, int *row_scheme, int verbose_level)
incidence_structure * apply_canonical_labeling(long int *canonical_labeling, int verbose_level)
void get_and_print_decomposition_schemes_tex(data_structures::partitionstack &PStack)
void init_partitionstack(data_structures::partitionstack *S, int f_row_part, int nb_row_parts, int *row_parts, int f_col_part, int nb_col_parts, int *col_parts, int nb_distinguished_point_sets, int **distinguished_point_sets, int *distinguished_point_set_size, int nb_distinguished_line_sets, int **distinguished_line_sets, int *distinguished_line_set_size, int verbose_level)
void get_partition(data_structures::partitionstack &PStack, int *row_classes, int *row_class_idx, int &nb_row_classes, int *col_classes, int *col_class_idx, int &nb_col_classes)
void point_collinearity_graph(int *Adj, int verbose_level)
int lines_through_two_points(int *lines, int p1, int p2, int verbose_level)
void check_point_pairs(int verbose_level)
void get_and_print_decomposition_schemes(data_structures::partitionstack &PStack)
void rearrange(int *&Vi, int &nb_V, int *&Bj, int &nb_B, int *&R, int *&X, data_structures::partitionstack &P)
orthogonal_geometry::orthogonal * O
void save_row_by_row_file(char *fname)
int compute_TDO_safe_next(data_structures::partitionstack &PStack, int depth, int &step, int &f_refine, int &f_refine_prev, int verbose_level)
void compute_tdo(data_structures::partitionstack &S, int f_write_tdo_files, int f_pic, int f_include_tdo_scheme, int verbose_level)
void compute_extended_matrix(int *&M, int &nb_rows, int &nb_cols, int &total, int *&partition, int f_row_part, int nb_row_parts, int *row_parts, int f_col_part, int nb_col_parts, int *col_parts, int nb_distinguished_point_sets, int **distinguished_point_sets, int *distinguished_point_set_size, int nb_distinguished_line_sets, int **distinguished_line_sets, int *distinguished_line_set_size, int verbose_level)
void init_by_R_and_X(int m, int n, int *R, int *X, int max_r, int verbose_level)
void print_column_labels(std::ostream &ost, data_structures::partitionstack &P, int *col_classes, int nb_col_classes, int width)
void init_by_set_of_sets(data_structures::set_of_sets *SoS, int verbose_level)
void print_aut_generators(int Aut_counter, int *Aut, int Base_length, int *Base, int *Transversal_length)
int compute_TDO(data_structures::partitionstack &PStack, int ht0, int depth, int verbose_level)
void init_by_matrix2(int verbose_level)
void init_large_set(long int *blocks, int N_points, int design_b, int design_k, int partition_class_size, int *&partition, int verbose_level)
void get_and_print_col_decomposition_scheme(data_structures::partitionstack &PStack, int f_list_incidences, int f_local_coordinates, int verbose_level)
void init_by_matrix_as_bitmatrix(int m, int n, data_structures::bitmatrix *Bitmatrix, int verbose_level)
void decomposition_print_tex(std::ostream &ost, data_structures::partitionstack &PStack, int f_row_tactical, int f_col_tactical, int f_detailed, int f_local_coordinates, int verbose_level)
void init_orthogonal(orthogonal_geometry::orthogonal *O, int verbose_level)
void get_and_print_tactical_decomposition_scheme_tex(std::ostream &ost, int f_enter_math, data_structures::partitionstack &PStack)
int refine_column_partition_safe(data_structures::partitionstack &PStack, int verbose_level)
int get_lines_on_point(int *data, int i, int verbose_level)
data_structures::bitvector * encode_as_bitvector()
void shrink_aut_generators(int nb_distinguished_point_sets, int nb_distinguished_line_sets, int Aut_counter, int *Aut, int *Base, int Base_length, int verbose_level)
void compute_tdo_stepwise(data_structures::partitionstack &S, int TDO_depth, int f_write_tdo_files, int f_pic, int f_include_tdo_scheme, int f_include_extra, int verbose_level)
void init_projective_space(projective_space *P, int verbose_level)
void save_as_csv(std::string &fname_csv, int verbose_level)
int refine_column_partition(data_structures::partitionstack &PStack, int ht0, int verbose_level)
void get_incidences_by_row_scheme(data_structures::partitionstack &PStack, int *row_classes, int *row_class_inv, int nb_row_classes, int *col_classes, int *col_class_inv, int nb_col_classes, int row_class_idx, int col_class_idx, int rij, int *&incidences, int verbose_level)
int compute_TDO_step(data_structures::partitionstack &PStack, int ht0, int verbose_level)
void line_intersection_graph(int *Adj, int verbose_level)
void get_and_print_column_tactical_decomposition_scheme_tex(std::ostream &ost, int f_enter_math, int f_print_subscripts, data_structures::partitionstack &PStack)
void print_non_tactical_decomposition_scheme_tex(std::ostream &ost, int f_enter_math, data_structures::partitionstack &PStack)
void row_scheme_to_col_scheme(data_structures::partitionstack &PStack, int *row_classes, int *row_class_inv, int nb_row_classes, int *col_classes, int *col_class_inv, int nb_col_classes, int *row_scheme, int *col_scheme, int verbose_level)
void print_partitioned(std::ostream &ost, data_structures::partitionstack &P, int f_labeled)
void do_tdo_high_level(data_structures::partitionstack &S, int f_tdo_steps, int f_tdo_depth, int tdo_depth, int f_write_tdo_files, int f_pic, int f_include_tdo_scheme, int f_include_tdo_extra, int f_write_tdo_class_files, int verbose_level)
int get_points_on_line(int *data, int j, int verbose_level)
void print_row_tactical_decomposition_scheme_incidences_tex(data_structures::partitionstack &PStack, std::ostream &ost, int f_enter_math_mode, int *row_classes, int *row_class_inv, int nb_row_classes, int *col_classes, int *col_class_inv, int nb_col_classes, int f_local_coordinates, int verbose_level)
void init_by_matrix(int m, int n, int *M, int verbose_level)
void print(std::ostream &ost)
void print_hline(std::ostream &ost, data_structures::partitionstack &P, int *col_classes, int nb_col_classes, int width, int f_labeled)
void get_and_print_row_decomposition_scheme(data_structures::partitionstack &PStack, int f_list_incidences, int f_local_coordinates, int verbose_level)
void init_hjelmslev(hjelmslev *H, int verbose_level)
void init_partitionstack_trivial(data_structures::partitionstack *S, int verbose_level)
void get_incidences_by_col_scheme(data_structures::partitionstack &PStack, int *row_classes, int *row_class_inv, int nb_row_classes, int *col_classes, int *col_class_inv, int nb_col_classes, int row_class_idx, int col_class_idx, int kij, int *&incidences, int verbose_level)
void get_row_decomposition_scheme_if_possible(data_structures::partitionstack &PStack, int *row_classes, int *row_class_inv, int nb_row_classes, int *col_classes, int *col_class_inv, int nb_col_classes, int *row_scheme, int verbose_level)
void compute_TDO_safe(data_structures::partitionstack &PStack, int depth, int verbose_level)
void latex_it(std::ostream &ost, data_structures::partitionstack &P)
void print_col_tactical_decomposition_scheme_incidences_tex(data_structures::partitionstack &PStack, std::ostream &ost, int f_enter_math_mode, int *row_classes, int *row_class_inv, int nb_row_classes, int *col_classes, int *col_class_inv, int nb_col_classes, int f_local_coordinates, int verbose_level)
int refine_row_partition(data_structures::partitionstack &PStack, int ht0, int verbose_level)
the Klein correspondence between lines in PG(3,q) and points on the Klein quadric
void Pluecker_to_line(int *v6, int *basis_line, int verbose_level)
long int point_on_quadric_embedded_in_P5(long int pt)
void init(field_theory::finite_field *F, orthogonal_geometry::orthogonal *O, int verbose_level)
void identify_external_lines_and_spreads(spread_tables *T, std::vector< long int > &External_lines, long int *&spread_to_external_line_idx, long int *&external_line_to_spread, int verbose_level)
void plane_intersections(long int *lines_in_PG3, int nb_lines, ring_theory::longinteger_object *&R, long int **&Pts_on_plane, int *&nb_pts_on_plane, int &nb_planes, int verbose_level)
void exterior_square_to_line(int *v, int *basis_line, int verbose_level)
long int line_to_point_on_quadric(long int line_rk, int verbose_level)
long int nb_lines_orthogonal
void reverse_isomorphism(int *A6, int *A4, int verbose_level)
long int point_on_quadric_to_line(long int point_rk, int verbose_level)
orthogonal_geometry::orthogonal * O
field_theory::finite_field * F
void compute_external_lines(std::vector< long int > &External_lines, int verbose_level)
void line_to_Pluecker(long int line_rk, int *v6, int verbose_level)
long int Pluecker_to_line_rk(int *v6, int verbose_level)
the Knarr construction of a GQ from a BLT-set
data_structures::fancy_set * type_ii_points
data_structures::fancy_set * type_a_lines
int six_choose_three_q_int
ring_theory::longinteger_object * six_choose_three_q
data_structures::fancy_set * type_i_points
int * type_a_line_BLT_idx
data_structures::fancy_set * type_b_lines
void init(field_theory::finite_field *F, int BLT_no, int verbose_level)
void points_and_lines(int verbose_level)
field_theory::finite_field * F
data_structures::fancy_set * type_iii_points
void incidence_matrix(int *&Inc, int &nb_points, int &nb_lines, int verbose_level)
a data structure for general projective planes, including non-desarguesian ones
int count_pairs_CCR(data_structures::partitionstack &P, int col_cell1, int col_cell2, int row_cell)
struct plane_data dual_plane
void init_projective_plane(int order, int verbose_level)
void plane_get_lines_through_point(int pt, int *lines)
int & MOLSmultiplication(int a, int b)
int plane_quadrangle_next_i(int *pt, int i)
int * pts_on_line_x_eq_y_labels
int count_pairs_CCR_representative(data_structures::partitionstack &P, int col_cell1, int col_cell_pt, int col_cell2, int row_cell)
int ternary_field_is_linear(int *MOLS, int verbose_level)
data_structures::partitionstack * P
void free_projective_plane()
int count_CR_representative(data_structures::partitionstack &P, int col_cell, int col_cell_pt, int row_cell)
int count_CR(data_structures::partitionstack &P, int col_cell, int row_cell)
int & MOLSaddition(int a, int b)
void plane_report(std::ostream &ost)
int plane_next_quadrangle(int &pt1, int &pt2, int &pt3, int &pt4)
int is_desarguesian_plane(int verbose_level)
int f_plane_data_computed
void print_MOLS(std::ostream &ost)
int plane_quadrangle_first_i(int *pt, int i)
int & MOLSsxb(int s, int x, int b)
int count_RC_representative(data_structures::partitionstack &P, int row_cell, int row_cell_pt, int col_cell)
int plane_first_quadrangle(int &pt1, int &pt2, int &pt3, int &pt4)
int plane_line_intersection(int line1, int line2)
int count_pairs_RRC(data_structures::partitionstack &P, int row_cell1, int row_cell2, int col_cell)
void coordinatize_plane(int O, int I, int X, int Y, int *MOLS, int verbose_level)
int plane_lines_concurrent(int line1, int line2, int line3)
int is_projective_plane(data_structures::partitionstack &P, int &order, int verbose_level)
void plane_get_points_on_line(int line, int *pts)
void get_MOLm(int *MOLS, int order, int m, int *&M)
int plane_line_through_two_points(int pt1, int pt2)
int count_RC(data_structures::partitionstack &P, int row_cell, int col_cell)
int count_pairs_RRC_representative(data_structures::partitionstack &P, int row_cell1, int row_cell_pt, int row_cell2, int col_cell)
int identify_field_not_of_prime_order(int verbose_level)
int plane_points_collinear(int pt1, int pt2, int pt3)
points and lines in projective space, for instance on a surface
long int rank_point(int *v)
void unrank_point(int *v, long int rk)
void init(projective_space *P, std::vector< long int > &Points, int verbose_level)
void print_all_points(std::ostream &ost)
void print_all_lines(std::ostream &ost)
void print_lines_tex(std::ostream &ost)
void write_points_to_txt_file(std::string &label, int verbose_level)
a polarity between points and hyperplanes in PG(n,q)
int * Point_to_hyperplane
void init_general_polarity(projective_space *P, int *Mtx, int verbose_level)
void report(std::ostream &f)
void init_standard_polarity(projective_space *P, int verbose_level)
int * Hyperplane_to_point
void init_reversal_polarity(projective_space *P, int verbose_level)
internal representation of a projective space PG(n,q)
~projective_space_implementation()
int * Line_through_two_points
projective_space_implementation()
data_structures::bitmatrix * Bitmatrix
void init(projective_space *P, int verbose_level)
projective space PG(n,q) of dimension n over Fq
void find_nucleus(int *set, int set_size, int &nucleus, int verbose_level)
void cheat_sheet_line_intersection(std::ostream &f, int verbose_level)
long int line_of_intersection_of_two_planes_in_three_space_using_dual_coordinates(long int plane1, long int plane2, int verbose_level)
void create_elliptic_curve(int elliptic_curve_b, int elliptic_curve_c, std::string &label_txt, std::string &label_tex, int &nb_pts, long int *&Pts, int verbose_level)
void do_move_two_lines_in_hyperplane_stabilizer_text(std::string line1_from_text, std::string line2_from_text, std::string line1_to_text, std::string line2_to_text, int verbose_level)
void conic_points(long int *five_pts, int *six_coeffs, long int *points, int &nb_points, int verbose_level)
void plane_intersection(int plane_rank, long int *set, int set_size, std::vector< int > &point_indices, std::vector< int > &point_local_coordinates, int verbose_level)
void point_types_of_line_set(long int *set_of_lines, int set_size, int *type, int verbose_level)
void plane_intersection_type_fast(grassmann *G, long int *set, int set_size, ring_theory::longinteger_object *&R, long int **&Pts_on_plane, int *&nb_pts_on_plane, int &len, int verbose_level)
int point_of_intersection_of_a_line_and_a_plane_in_three_space(long int line, int plane, int verbose_level)
long int transversal_to_two_skew_lines_through_a_point(long int line1, long int line2, int pt, int verbose_level)
void compute_decomposition_based_on_tally(data_structures::tally *T1, data_structures::tally *T2, incidence_structure *&Inc, data_structures::partitionstack *&Stack, int verbose_level)
void plane_equation_from_three_lines_in_three_space(long int *three_lines, int *plane_eqn4, int verbose_level)
void print_set_numerical(std::ostream &ost, long int *set, int set_size)
void conic_type(long int *set, int set_size, int threshold, long int **&Pts_on_conic, int **&Conic_eqn, int *&nb_pts_on_conic, int &nb_conics, int verbose_level)
void hyperplane_intersection_type_basic(long int *set, int set_size, int *type, int verbose_level)
ring_theory::longinteger_object * Go
void find_k_secant_lines(long int *set, int set_size, int k, long int *secant_lines, int &nb_secant_lines, int verbose_level)
void report_summary(std::ostream &ost)
void line_intersection(int line_rank, long int *set, int set_size, std::vector< int > &point_indices, int verbose_level)
void elliptic_curve_addition_table(int *A6, int *Pts, int nb_pts, int *&Table, int verbose_level)
void compute_decomposition(data_structures::partitionstack *S1, data_structures::partitionstack *S2, incidence_structure *&Inc, data_structures::partitionstack *&Stack, int verbose_level)
void plane_intersection_invariant(grassmann *G, long int *set, int set_size, int *&intersection_type, int &highest_intersection_number, int *&intersection_matrix, int &nb_planes, int verbose_level)
int determine_conic_in_plane(long int *input_pts, int nb_pts, int *six_coeffs, int verbose_level)
long int rank_line(int *basis)
void polarity_rank_k_subspace(int k, long int rk_in, long int &rk_out, int verbose_level)
int is_contained_in_Baer_subline(long int *pts, int nb_pts, int verbose_level)
void do_move_two_lines_in_hyperplane_stabilizer(long int line1_from, long int line2_from, long int line1_to, long int line2_to, int verbose_level)
void create_ovoid_ST(std::string &label_txt, std::string &label_tex, int &nb_pts, long int *&Pts, int verbose_level)
int test_if_lines_are_disjoint_from_scratch(long int l1, long int l2)
void create_whole_space(std::string &label_txt, std::string &label_tex, int &nb_pts, long int *&Pts, int verbose_level)
void klein_correspondence(projective_space *P5, long int *set_in, int set_size, long int *set_out, int verbose_level)
void find_planes_which_intersect_in_at_least_s_points(long int *set, int set_size, int s, std::vector< int > &plane_ranks, int verbose_level)
void find_external_lines(long int *set, int set_size, long int *external_lines, int &nb_external_lines, int verbose_level)
long int dual_rank_of_line_in_plane(long int line_rank, int verbose_level)
void create_points_on_line(long int line_rk, long int *line, int verbose_level)
void point_types_of_line_set_int(int *set_of_lines, int set_size, int *type, int verbose_level)
void init_polarity(int verbose_level)
projective_space_implementation * Implementation
void intersect_with_line(long int *set, int set_sz, int line_rk, long int *intersection, int &sz, int verbose_level)
long int line_rank_using_dual_coordinates_in_plane(int *eqn3, int verbose_level)
void plane_intersection_type_basic(long int *set, int set_size, int *type, int verbose_level)
void unrank_points(int *v, long int *Rk, int sz)
void planes_through_a_line(long int line_rk, std::vector< long int > &plane_ranks, int verbose_level)
void point_plane_incidence_matrix(long int *point_rks, int nb_points, long int *plane_rks, int nb_planes, int *&M, int verbose_level)
void intersection_of_subspace_with_point_set(grassmann *G, int rk, long int *set, int set_size, long int *&intersection_set, int &intersection_set_size, int verbose_level)
int is_incident(int pt, int line)
void points_on_projective_triangle(long int *&set, int &set_size, long int *three_points, int verbose_level)
int test_if_lines_are_disjoint(long int l1, long int l2)
void incma_for_type_ij(int row_type, int col_type, int *&Incma, int &nb_rows, int &nb_cols, int verbose_level)
void quadric_points_brute_force(int *ten_coeffs, long int *points, int &nb_points, int verbose_level)
void Pluecker_coordinates(int line_rk, int *v6, int verbose_level)
void make_fname_incidence_matrix_csv(std::string &fname)
void report(std::ostream &ost, graphics::layered_graph_draw_options *O, int verbose_level)
void cheat_sheet_point_table(std::ostream &f, int verbose_level)
long int plane_rank_using_dual_coordinates_in_three_space(int *eqn4, int verbose_level)
void plane_intersections(grassmann *G, long int *set, int set_size, ring_theory::longinteger_object *&R, data_structures::set_of_sets &SoS, int verbose_level)
void cheat_sheet_points_on_lines(std::ostream &f, int verbose_level)
void line_intersection_type_basic(long int *set, int set_size, int *type, int verbose_level)
int test_if_conic_contains_point(int *six_coeffs, int pt)
void create_latex_report_for_Grassmannian(int k, int verbose_level)
void determine_nonconical_six_subsets(long int *set, int set_size, std::vector< int > &Rk, int verbose_level)
void print_line_set_numerical(long int *set, int set_size)
field_theory::finite_field * F
int determine_line_in_plane(long int *two_input_pts, int *three_coeffs, int verbose_level)
int nonconical_six_arc_get_nb_Eckardt_points(long int *Arc6, int verbose_level)
void find_secant_lines(long int *set, int set_size, long int *lines, int &nb_lines, int max_lines, int verbose_level)
int test_if_lines_are_skew(int line1, int line2, int verbose_level)
void unrank_lines(int *v, long int *Rk, int nb)
void export_incidence_matrix_to_csv(int verbose_level)
void cheat_sheet_lines_on_points(std::ostream &f, int verbose_level)
void line_intersection_type_through_hyperplane(long int *set, int set_size, int *type, int verbose_level)
void find_tangent_lines(long int *set, int set_size, long int *tangent_lines, int &nb_tangent_lines, int verbose_level)
void circle_type_of_line_subset(int *pts, int nb_pts, int *circle_type, int verbose_level)
long int nb_rk_k_subspaces_as_lint(int k)
int point_of_intersection_of_a_line_and_a_line_in_three_space(long int line1, long int line2, int verbose_level)
void find_tangent_lines_to_conic(int *six_coeffs, long int *points, int nb_points, long int *tangents, int verbose_level)
void print_set_of_points(std::ostream &ost, long int *Pts, int nb_pts)
void cheat_polarity(std::ostream &f, int verbose_level)
int determine_cubic_in_plane(ring_theory::homogeneous_polynomial_domain *Poly_3_3, int nb_pts, long int *Pts, int *coeff10, int verbose_level)
void line_plane_incidence_matrix_restricted(long int *Lines, int nb_lines, int *&M, int &nb_planes, int verbose_level)
void do_pluecker_reverse(std::ostream &ost, grassmann *Gr, int k, int nb_k_subspaces, int verbose_level)
void create_lines_on_point(long int point_rk, long int *line_pencil, int verbose_level)
void decomposition_from_set_partition(int nb_subsets, int *sz, int **subsets, incidence_structure *&Inc, data_structures::partitionstack *&Stack, int verbose_level)
long int rank_point(int *v)
void print_set(long int *set, int set_size)
int determine_hermitian_form_in_plane(int *pts, int nb_pts, int *six_coeffs, int verbose_level)
void create_unital_XXq_YZq_ZYq_brute_force(long int *U, int &sz, int verbose_level)
void klein_correspondence_special_model(projective_space *P5, int *table, int verbose_level)
void plane_intersection_matrix_in_three_space(long int *Planes, int nb_planes, int *&Intersection_matrix, int verbose_level)
int conic_test(long int *S, int len, int pt, int verbose_level)
void create_hyperplane(int pt, std::string &label_txt, std::string &label_tex, int &nb_pts, long int *&Pts, int verbose_level)
void cheat_sheet_subspaces(std::ostream &f, int k, int verbose_level)
void cheat_sheet_points(std::ostream &f, int verbose_level)
grassmann * Grass_hyperplanes
void Baer_subline(long int *pts3, long int *&pts, int &nb_pts, int verbose_level)
void cheat_sheet_line_through_pairs_of_points(std::ostream &f, int verbose_level)
void conic_type_randomized(int nb_times, long int *set, int set_size, long int **&Pts_on_conic, int *&nb_pts_on_conic, int &len, int verbose_level)
void create_lines_on_point_but_inside_a_plane(long int point_rk, long int plane_rk, long int *line_pencil, int verbose_level)
void create_ovoid(std::string &label_txt, std::string &label_tex, int &nb_pts, long int *&Pts, int verbose_level)
void determine_quadric_in_solid(long int *nine_pts_or_more, int nb_pts, int *ten_coeffs, int verbose_level)
polarity * Reversal_polarity
void find_lines_which_are_contained(std::vector< long int > &Points, std::vector< long int > &Lines, int verbose_level)
void plane_intersection_type(grassmann *G, long int *set, int set_size, int *&intersection_type, int &highest_intersection_number, int verbose_level)
arc_in_projective_space * Arc_in_projective_space
void init_incidence_structure(int verbose_level)
void conic_intersection_type(int f_randomized, int nb_times, long int *set, int set_size, int threshold, int *&intersection_type, int &highest_intersection_number, int f_save_largest_sets, data_structures::set_of_sets *&largest_sets, int verbose_level)
int elliptic_curve_addition(int *A6, int p1_rk, int p2_rk, int verbose_level)
void conic_points_brute_force(int *six_coeffs, long int *points, int &nb_points, int verbose_level)
void line_intersection_type(long int *set, int set_size, int *type, int verbose_level)
void plane_intersection_type_slow(grassmann *G, long int *set, int set_size, ring_theory::longinteger_object *&R, long int **&Pts_on_plane, int *&nb_pts_on_plane, int &len, int verbose_level)
void create_cuspidal_cubic(std::string &label_txt, std::string &label_tex, int &nb_pts, long int *&Pts, int verbose_level)
void line_intersection_type_basic_given_a_set_of_lines(long int *lines_by_rank, int nb_lines, long int *set, int set_size, int *type, int verbose_level)
void projective_space_init(int n, field_theory::finite_field *F, int f_init_incidence_structure, int verbose_level)
long int line_of_intersection_of_two_planes_in_three_space(long int plane1, long int plane2, int verbose_level)
polarity * Standard_polarity
void create_twisted_cubic(std::string &label_txt, std::string &label_tex, int &nb_pts, long int *&Pts, int verbose_level)
int intersection_of_two_lines(long int l1, long int l2)
void create_latex_report(graphics::layered_graph_draw_options *O, int verbose_level)
void intersection_of_subspace_with_point_set_rank_is_longinteger(grassmann *G, ring_theory::longinteger_object &rk, long int *set, int set_size, long int *&intersection_set, int &intersection_set_size, int verbose_level)
void make_incidence_structure_and_partition(incidence_structure *&Inc, data_structures::partitionstack *&Stack, int verbose_level)
void incidence_m_ii(int pt, int line, int a)
long int rank_plane(int *basis)
void line_intersection_type_collected(long int *set, int set_size, int *type_collected, int verbose_level)
void unrank_plane(int *basis, long int rk)
long int dual_rank_of_plane_in_three_space(long int plane_rank, int verbose_level)
long int line_through_two_points(long int p1, long int p2)
int create_point_on_line(long int line_rk, int pt_rk, int verbose_level)
void unrank_point(int *v, long int rk)
int reverse_engineer_semilinear_map(int *Elt, int *Mtx, int &frobenius, int verbose_level)
void make_incidence_matrix(int &m, int &n, int *&Inc, int verbose_level)
void incidence_and_stack_for_type_ij(int row_type, int col_type, incidence_structure *&Inc, data_structures::partitionstack *&Stack, int verbose_level)
void unrank_line(int *basis, long int rk)
void create_unital_XXq_YZq_ZYq(std::string &label_txt, std::string &label_tex, int &nb_pts, long int *&Pts, int verbose_level)
tables with line-spreads in PG(3,q)
int test_if_set_of_spreads_is_line_disjoint(long int *set, int len)
void save(int verbose_level)
std::string fname_schreier_table
void compute_list_of_lines_from_packing(long int *list_of_lines, long int *packing, int sz_of_packing, int verbose_level)
void load(int verbose_level)
std::string fname_dual_spread
void compute_adjacency_matrix(data_structures::bitvector *&Bitvec, int verbose_level)
void classify_self_dual_spreads(int *&type, data_structures::set_of_sets *&SoS, int verbose_level)
void find_spreads_containing_two_lines(std::vector< int > &v, int line1, int line2, int verbose_level)
void init(projective_space *P, int f_load, int nb_iso_types_of_spreads, std::string &path_to_spread_tables, int verbose_level)
long int * dual_spread_idx
void create_file_names(int verbose_level)
int test_if_set_of_spreads_is_line_disjoint_and_complain_if_not(long int *set, int len)
void compute_iso_type_invariant(int *Partial_packings, int nb_pp, int sz, int *&Iso_type_invariant, int verbose_level)
std::string fname_isomorphism_type_of_spreads
long int * get_spread(int spread_idx)
std::string fname_dual_line_idx
void init_tables(int nb_spreads, long int *spread_table, int *spread_iso_type, long int *dual_spread_idx, long int *self_dual_spreads, int nb_self_dual_spreads, int verbose_level)
void compute_dual_spreads(long int **Sets, long int *&Dual_spread_idx, long int *&self_dual_spread_idx, int &nb_self_dual_spreads, int verbose_level)
void report_one_spread(std::ostream &ost, int a)
int test_if_spreads_are_disjoint(int a, int b)
std::string fname_self_dual_lines
void init_reduced(int nb_select, int *select, spread_tables *old_spread_table, std::string &path_to_spread_tables, int verbose_level)
void init_schreier_table(int *schreier_table, int verbose_level)
int test_if_pair_of_sets_are_adjacent(long int *set1, int sz1, long int *set2, int sz2, int verbose_level)
void init_spread_table(int nb_spreads, long int *spread_table, int *spread_iso_type, int verbose_level)
int files_exist(int verbose_level)
void make_exact_cover_problem(solvers::diophant *&Dio, long int *live_point_index, int nb_live_points, long int *live_blocks, int nb_live_blocks, int nb_needed, int verbose_level)
std::string fname_self_dual_spreads
std::string fname_spreads
field_theory::finite_field * F
int nb_iso_types_of_spreads
long int * self_dual_spreads
options for drawing an object of type layered_graph
an orthogonal geometry O^epsilon(n,q)
homogeneous polynomials of a given degree in a given number of variables over a finite field GF(q)
a class to represent arbitrary precision integers
diophantine systems of equations (i.e., linear systems over the integers)
object_with_canonical_form_type
the orbiter library for the classification of combinatorial objects
auxiliary class for the class point_line
int * line_through_two_points