15namespace layer5_applications {
16namespace apps_geometry {
80 int f_v = (verbose_level >= 1);
83 cout <<
"classify_cubic_curves::init" << endl;
95 cout <<
"classify_cubic_curves::init before Arc_gen->init" << endl;
120 cout <<
"classify_cubic_curves::init after Arc_gen->init" << endl;
125 cout <<
"classify_cubic_curves::init done" << endl;
131 int f_v = (verbose_level >= 1);
135 cout <<
"classify_cubic_curves::compute_starter" << endl;
139 cout <<
"classify_cubic_curves::compute_starter done" << endl;
147 int f_v = (verbose_level >= 1);
157 cout <<
"classify_cubic_curves::test_orbits" << endl;
158 cout <<
"verbose_level = " << verbose_level << endl;
167 cout <<
"classify_cubic_curves::test_orbits testing "
173 if (f_vv || ((i % 1000) == 0)) {
174 cout <<
"classify_cubic_curves::test_orbits orbit "
195 cout <<
"classify_cubic_curves::test_orbits orbit "
197 <<
" has rank = " << r << endl;
216 vector<long int> Pts_on_curve;
224 nb_pts = Pts_on_curve.size();
226 for (h = 0; h < nb_pts; h++) {
227 Pts[h] = Pts_on_curve[h];
249 Pts_on_curve, nb_pts_on_curve,
250 singular_Pts, nb_singular_pts,
253 if (nb_singular_pts == 0) {
264 cout <<
"classify_cubic_curves::test_orbits we found "
266 <<
" orbits where the rank is 9" << endl;
277 cout <<
"classify_cubic_curves::test_orbits done" << endl;
284 int f_v = (verbose_level >= 1);
287 int f, i, nb_flag_orbits;
290 cout <<
"classify_cubic_curves::downstep" << endl;
291 cout <<
"verbose_level = " << verbose_level << endl;
295 cout <<
"classify_cubic_curves::downstep "
296 "before test_orbits" << endl;
300 cout <<
"classify_cubic_curves::downstep "
301 "after test_orbits" << endl;
321 cout <<
"classify_cubic_curves::downstep "
322 "initializing flag orbits" << endl;
326 for (f = 0; f <
nb; f++) {
330 if ((f % 1000) == 0) {
331 cout <<
"classify_cubic_curves::downstep "
332 "orbit " << f <<
" / " <<
nb
333 <<
" with rank = 9 is orbit "
341 long int dataset[19];
357 cout <<
"9 points = ";
363 cout <<
"classify_cubic_curves::downstep before "
364 "determine_cubic_in_plane" << endl;
376 cout <<
"The starter configuration is good, "
377 "a cubic has been computed:" << endl;
397 cout <<
"orbit " << f <<
" / " <<
nb
398 <<
" with rank = 9 is orbit " << i
411 for (f = 0; f < nb_flag_orbits; f++) {
415 cout <<
"classify_cubic_curves::downstep we found "
416 << nb_flag_orbits <<
" flag orbits out of "
420 cout <<
"classify_cubic_curves::downstep "
421 "initializing flag orbits done" << endl;
428 int f_v = (verbose_level >= 1);
436 long int canonical_set[9];
443 cout <<
"classify_cubic_curves::upstep" << endl;
444 cout <<
"verbose_level = " << verbose_level << endl;
467 cout <<
"flag orbit : downstep_primary_orbit" << endl;
469 cout <<
"f : po" << endl;
472 cout << f <<
" : " << po << endl;
476 cout <<
"classify_cubic_curves::upstep "
477 "too many flag orbits to print" << endl;
483 long int dataset[19];
485 if (f_processed[f]) {
489 progress = ((double)nb_processed * 100. ) /
493 cout <<
"Defining n e w orbit "
495 <<
" from flag orbit " << f <<
" / "
497 <<
" progress=" << progress <<
"%" << endl;
504 cout <<
"Flag_orbits->pt_representation_sz != 19" << endl;
510 cout <<
"po=" << po <<
" so=" << so << endl;
535 cout <<
"po=" << po <<
" so=" << so
536 <<
" go=" << go << endl;
548 vector<long int> Points;
552 nb_pts = Points.size();
554 for (h = 0; h < nb_pts; h++) {
559 cout <<
"po=" << po <<
" so=" << so
560 <<
" we found a curve with " << nb_pts
561 <<
" points" << endl;
567 coset_reps->
init(
CCA->
A, verbose_level - 2);
568 coset_reps->
allocate(N, verbose_level - 2);
571 for (i = 0; i < N; i++) {
573 cout <<
"po=" << po <<
" so=" << so
574 <<
" i=" << i <<
" / " << N << endl;
578 for (j = 0; j < 9; j++) {
579 set[j] = Pts[idx_set[j]];
610 cout <<
"cannot find orbit " << orbit_index
620 cout <<
"Flag_orbits->Flag_orbit_node[f2].downstep_"
621 "primary_orbit != orbit_index" << endl;
632 cout <<
"We found an automorphism of "
633 "the curve with " << nb_pts <<
" points:" << endl;
644 cout <<
"We are identifying flag orbit "
645 << f2 <<
" with flag orbit " << f << endl;
647 if (!f_processed[f2]) {
659 f_processed[f2] =
TRUE;
664 cout <<
"Flag orbit " << f2 <<
" has already been "
665 "identified with flag orbit " << f << endl;
668 cout <<
"Flag_orbits->Flag_orbit_node[f2]."
669 "fusion_with != f" << endl;
677 coset_reps->
reallocate(nb_coset_reps, verbose_level - 2);
685 cout <<
"classify_cubic_curves::upstep "
686 "Extending the group by a factor of "
687 << nb_coset_reps << endl;
691 coset_reps, nb_coset_reps,
694 cout <<
"classify_cubic_curves::upstep "
705 cout <<
"the double six has a stabilizer of order "
707 cout <<
"The n e w stabilizer is:" << endl;
717 Aut_gens, dataset, NULL , verbose_level);
722 f_processed[f] =
TRUE;
729 cout <<
"nb_processed != Flag_orbits->nb_flag_orbits" << endl;
730 cout <<
"nb_processed = " << nb_processed << endl;
731 cout <<
"Flag_orbits->nb_flag_orbits = "
740 <<
" orbits of curves" << endl;
750 cout <<
"classify_cubic_curves::upstep done" << endl;
757 int f_v = (verbose_level >= 1);
761 cout <<
"classify_cubic_curves::do_classify" << endl;
765 cout <<
"classify_cubic_curves::do_classify "
766 "before downstep" << endl;
770 cout <<
"classify_cubic_curves::do_classify "
771 "after downstep" << endl;
773 <<
" flag orbits out of "
775 <<
" orbits" << endl;
779 cout <<
"classify_cubic_curves::do_classify "
780 "before upstep" << endl;
784 cout <<
"classify_cubic_curves::do_classify "
785 "after upstep" << endl;
787 <<
" cubic curves out of "
789 <<
" flag orbits" << endl;
793 cout <<
"classify_cubic_curves::do_classify done" << endl;
799 int *Elt,
int &iso_type,
int verbose_level)
801 int f_v = (verbose_level >= 1);
805 long int canonical_set[9];
807 long int *Pts_on_curve;
808 long int *singular_Pts;
815 cout <<
"classify_cubic_curves::recognize" << endl;
816 cout <<
"verbose_level = " << verbose_level << endl;
834 vector<long int> Points;
840 nb_pts_on_curve = Points.size();
842 for (h = 0; h < nb_pts_on_curve; h++) {
843 Pts_on_curve[h] = Points[h];
848 cout <<
"classify_cubic_curves::recognize"
849 <<
" we found a curve with " << nb_pts_on_curve
850 <<
" points" << endl;
853 Pts_on_curve, nb_pts_on_curve , type, 0 );
868 Pts_on_curve, nb_pts_on_curve,
869 singular_Pts, nb_singular_pts,
872 if (nb_singular_pts) {
882 for (i = 0; i < N; i++) {
884 cout <<
"classify_cubic_curves::recognize"
885 <<
" i=" << i <<
" / " << N << endl;
889 for (j = 0; j < 9; j++) {
890 set[j] = Pts_on_curve[idx_set[j]];
915 cout <<
"classify_cubic_curves::recognize"
916 <<
" i=" << i <<
" / " << N
917 <<
" before trace_set" << endl;
929 cout <<
"classify_cubic_curves::recognize"
930 <<
" i=" << i <<
" / " << N
931 <<
" after trace_set, "
932 "orbit_index=" << orbit_index << endl;
940 cout <<
"classify_cubic_curves::recognize "
941 "cannot find orbit " << orbit_index
951 cout <<
"classify_cubic_curves::recognize"
952 <<
" i=" << i <<
" / " << N
953 <<
" after trace_set, "
960 cout <<
"classify_cubic_curves::recognize"
961 <<
" i=" << i <<
" / " << N
962 <<
" after trace_set, "
963 "iso_type=" << iso_type << endl;
979 cout <<
"classify_cubic_curves::recognize "
980 "could not identify the curve" << endl;
995 cout <<
"classify_cubic_curves::recognize done" << endl;
1003 int f_v = (verbose_level >= 1);
1009 cout <<
"classify_cubic_curves::family1_recognize" << endl;
1010 cout <<
"verbose_level = " << verbose_level << endl;
1015 for (e = 0; e <
F->
q; e++) {
1038 Elt, iso_type, verbose_level)) {
1039 Iso_type[e] = iso_type;
1053 int f_v = (verbose_level >= 1);
1059 cout <<
"classify_cubic_curves::family2_recognize" << endl;
1060 cout <<
"verbose_level = " << verbose_level << endl;
1065 for (e = 0; e <
F->
q; e++) {
1089 Elt, iso_type, verbose_level)) {
1090 Iso_type[e] = iso_type;
1104 int f_v = (verbose_level >= 1);
1109 int three_e, six_e_plus_one;
1112 cout <<
"classify_cubic_curves::family3_recognize" << endl;
1113 cout <<
"verbose_level = " << verbose_level << endl;
1118 for (e = 0; e <
F->
q; e++) {
1128 three_e =
F->
mult(three, e);
1129 six_e_plus_one =
F->
add(
F->
mult(six, e), 1);
1139 eqn[9] = six_e_plus_one;
1152 Elt, iso_type, verbose_level)) {
1153 Iso_type[e] = iso_type;
1167 int f_v = (verbose_level >= 1);
1173 cout <<
"classify_cubic_curves::familyE_recognize" << endl;
1174 cout <<
"verbose_level = " << verbose_level << endl;
1179 for (d = 0; d <
F->
q; d++) {
1201 Elt, iso_type, verbose_level)) {
1202 Iso_type[d] = iso_type;
1216 int f_v = (verbose_level >= 1);
1222 cout <<
"classify_cubic_curves::familyH_recognize" << endl;
1223 cout <<
"verbose_level = " << verbose_level << endl;
1228 for (e = 0; e <
F->
q; e++) {
1250 Elt, iso_type, verbose_level)) {
1251 Iso_type[e] = iso_type;
1266 int f_v = (verbose_level >= 1);
1272 cout <<
"classify_cubic_curves::familyG_recognize" << endl;
1273 cout <<
"verbose_level = " << verbose_level << endl;
1278 for (c = 0; c <
F->
q; c++) {
1279 for (d = 0; d <
F->
q; d++) {
1302 Elt, iso_type, verbose_level)) {
1303 Iso_type[c *
q + d] = iso_type;
1306 Iso_type[c *
q + d] = -1;
1318 int f_v = (verbose_level >= 1);
1319 int f_with_stabilizers =
TRUE;
1323 cout <<
"classify_cubic_curves::report writing cheat sheet "
1324 "on cubic curves" << endl;
1326 long int *Pts_on_curve;
1327 long int *inflexion_Pts;
1328 long int *singular_Pts;
1338 ost <<
"The order of the group is ";
1340 ost <<
"\\\\" << endl;
1342 ost <<
"\\bigskip" << endl;
1345 <<
" orbits: \\\\" << endl;
1350 Ol.
create(0, __FILE__, __LINE__);
1352 vector<string> References;
1355 int *Nb_singular_points;
1367 cout <<
"Curve " << i <<
" / "
1369 "verbose_level=" << verbose_level << endl;
1375 cout <<
"stab order " << go1 << endl;
1383 cout <<
"orbit length " << ol << endl;
1389 int nb_pts_on_curve;
1390 int nb_singular_pts;
1391 int nb_inflection_pts;
1398 ost <<
"\\subsection*{Curve " << i <<
" / "
1408 ost <<
"}$ orbit length $";
1410 ost <<
"$\\\\" << endl;
1414 int_vec_zero(eqn, 10);
1431 int_vec_zero(eqn, 10);
1440 ost <<
"\\begin{eqnarray*}" << endl;
1445 vector<long int> Points;
1452 nb_pts_on_curve = Points.size();
1453 for (h = 0; h < nb_pts_on_curve; h++) {
1454 Pts_on_curve[h] = Points[h];
1458 Nb_points[i] = nb_pts_on_curve;
1465 ost <<
"\\end{eqnarray*}" << endl;
1467 ost <<
"The curve has " << nb_pts_on_curve
1468 <<
" points.\\\\" << endl;
1473 Pts_on_curve, nb_pts_on_curve,
1474 singular_Pts, nb_singular_pts,
1477 ost <<
"The curve has " << nb_singular_pts
1478 <<
" singular points.\\\\" << endl;
1479 Nb_singular_points[i] = nb_singular_pts;
1484 Pts_on_curve, nb_pts_on_curve,
1485 inflexion_Pts, nb_inflection_pts,
1489 Nb_inflexions[i] = nb_inflection_pts;
1491 ost <<
"The curve has " << nb_inflection_pts <<
" inflexion points: $";
1493 ost <<
"$\\\\" << endl;
1497 Pts_on_curve, nb_pts_on_curve ,
1501 ost <<
"The line type is $";
1505 ost <<
".$ \\\\" << endl;
1508 if (f_with_stabilizers) {
1515 if (nb_inflection_pts == 3) {
1519 int transformed_eqn[10];
1534 ost <<
"The transformed equation is:\\\\" << endl;
1535 ost <<
"\\begin{eqnarray*}" << endl;
1540 vector<long int> Points;
1548 nb_pts_on_curve = Points.size();
1549 for (h = 0; h < nb_pts_on_curve; h++) {
1550 Pts_on_curve[h] = Points[h];
1558 ost <<
"\\end{eqnarray*}" << endl;
1560 ost <<
"The transformed curve has " << nb_pts_on_curve
1561 <<
" points.\\\\" << endl;
1565 Pts_on_curve, nb_pts_on_curve,
1566 singular_Pts, nb_singular_pts,
1569 ost <<
"The curve has " << nb_singular_pts
1570 <<
" singular points.\\\\" << endl;
1575 Pts_on_curve, nb_pts_on_curve,
1576 inflexion_Pts, nb_inflection_pts,
1579 ost <<
"The transformed curve has " << nb_inflection_pts
1580 <<
" inflexion points: $";
1582 ost <<
"$\\\\" << endl;
1591 ost <<
"The overall number of objects is: " << Ol <<
"\\\\" << endl;
1596 ost <<
"summary of the stabilizer orders:\\\\" << endl;
1601 References.push_back(ref);
1626 ost <<
"Families 1, 2, 3, E, H: \\\\" << endl;
1627 for (e = 0; e <
F->
q; e++) {
1629 <<
" iso1=" << Iso_type1[e]
1630 <<
" iso2=" << Iso_type2[e]
1631 <<
" iso3=" << Iso_type2[e]
1632 <<
" isoE=" << Iso_typeE[e]
1633 <<
" isoH=" << Iso_typeH[e]
1636 for (c = 1; c <
F->
q; c++) {
1637 for (d = 1; d <
F->
q; d++) {
1638 ost <<
"c=" << c <<
" d=" << d
1639 <<
" isoG=" << Iso_typeG[c *
F->
q + d]
1643 for (e = 0; e <
F->
q; e++) {
1644 if (Iso_type1[e] != -1) {
1647 ref = References[Iso_type1[e]];
1648 if (strlen(ref.c_str())) {
1651 sprintf(str,
"F1_{%d}", e);
1653 References[Iso_type1[e]] = ref;
1656 for (e = 0; e <
F->
q; e++) {
1657 if (Iso_type2[e] != -1) {
1660 ref = References[Iso_type2[e]];
1661 if (strlen(ref.c_str())) {
1664 sprintf(str,
"F2_{%d}", e);
1666 References[Iso_type2[e]] = ref;
1669 for (e = 0; e <
F->
q; e++) {
1670 if (Iso_type3[e] != -1) {
1673 ref = References[Iso_type3[e]];
1674 if (strlen(ref.c_str())) {
1677 sprintf(str,
"F3_{%d}", e);
1679 References[Iso_type3[e]] = ref;
1682 for (e = 0; e <
F->
q; e++) {
1683 if (Iso_typeE[e] != -1) {
1686 ref = References[Iso_typeE[e]];
1687 if (strlen(ref.c_str())) {
1690 sprintf(str,
"E_{%d}", e);
1692 References[Iso_typeE[e]] = ref;
1695 for (e = 0; e <
F->
q; e++) {
1696 if (Iso_typeH[e] != -1) {
1699 ref = References[Iso_typeH[e]];
1700 if (strlen(ref.c_str())) {
1703 sprintf(str,
"H_{%d}", e);
1705 References[Iso_typeH[e]] = ref;
1708 for (c = 1; c <
F->
q; c++) {
1709 for (d = 1; d <
F->
q; d++) {
1712 iso = Iso_typeG[c *
F->
q + d];
1718 ref = References[iso];
1719 if (strlen(ref.c_str())) {
1722 sprintf(str,
"G_{%d,%d}", c,d);
1724 References[iso] = ref;
1733 ost <<
"Distribution: $(";
1735 ost <<
")$\\\\" << endl;
1738 ost <<
"$$" << endl;
1739 ost <<
"\\begin{array}{|c||c|c|c|c|c|}";
1741 ost <<
"\\mbox{Curve} & ";
1742 ost <<
"\\mbox{Ago} & ";
1743 ost <<
"\\mbox{Pts} & ";
1744 ost <<
"\\mbox{s. Pts} & ";
1745 ost <<
"\\mbox{Infl} & ";
1746 ost <<
"\\mbox{References} \\\\";
1750 ost <<
" & " << Ago[i];
1751 ost <<
" & " << Nb_points[i];
1752 ost <<
" & " << Nb_singular_points[i];
1753 ost <<
" & " << Nb_inflexions[i];
1754 ost <<
" & " << References[i];
1758 ost <<
"\\end{array}" << endl;
1759 ost <<
"$$" << endl;
1761 ost <<
"with canonical forms " << endl;
1762 ost <<
"\\begin{eqnarray*}" << endl;
1763 ost <<
"F1_e &=& X^2Y + XY^2 + eZ^3 \\\\" << endl;
1764 ost <<
"F2_e &=& X^2Y + XY^2 + XYZ + eZ^3 \\\\" << endl;
1765 ost <<
"F3_e &=& XYZ + e(X + Y + Z)^3 \\\\" << endl;
1766 ost <<
"E_d &=& Z^2Y + X^3 - dY^3 \\\\" << endl;
1767 ost <<
"H_e &=& Z^2Y + X^3 + eXY^2 \\\\" << endl;
1768 ost <<
"G_{c,d} &=& Z^2Y + X^3 + cXY^2 + dY^3 \\\\" << endl;
1769 ost <<
"\\end{eqnarray*}" << endl;
1770 ost <<
"for $c,d,e \\in {\\mathbb F}_{" <<
F->
q <<
"}$ \\\\" << endl;
field_theory::finite_field * F
ring_theory::homogeneous_polynomial_domain * Poly
void compute_inflexion_points(int *eqn_in, long int *Pts_on_curve, int nb_pts_on_curve, long int *Pts, int &nb_pts, int verbose_level)
void compute_singular_points(int *eqn_in, long int *Pts_on_curve, int nb_pts_on_curve, long int *Pts, int &nb_pts, int verbose_level)
int compute_system_in_RREF(int nb_pts, long int *pt_list, int verbose_level)
geometry::projective_space * P
a collection of combinatorial functions
void unrank_k_subset(int rk, int *set, int n, int k)
long int int_n_choose_k(int n, int k)
a collection of functions related to sorted vectors
int int_vec_search(int *v, int len, int a, int &idx)
a statistical analysis of data consisting of single integers
void init(int *data, int data_length, int f_second, int verbose_level)
int determine_class_by_value(int value)
void print_naked_tex(std::ostream &ost, int f_backwards)
linear_algebra::linear_algebra * Linear_algebra
field_theory::finite_field * F
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 print_set(long int *set, int set_size)
void line_intersection_type(long int *set, int set_size, int *type, int verbose_level)
void unrank_point(int *v, long int rk)
void transpose_matrix(int *A, int *At, int ma, int na)
void invert_matrix(int *A, int *A_inv, int n, int verbose_level)
void extend_basis(int m, int n, int *Basis, int verbose_level)
interface to create latex output files
void lint_set_print_tex_for_inline_text(std::ostream &ost, long int *v, int len)
void enumerate_points(int *coeff, std::vector< long int > &Pts, int verbose_level)
void print_equation_with_line_breaks_tex(std::ostream &ost, int *coeffs, int nb_terms_per_line, const char *new_line_text)
void substitute_linear(int *coeff_in, int *coeff_out, int *Mtx_inv, int verbose_level)
domain to compute with objects of type longinteger
void integral_division_exact(longinteger_object &a, longinteger_object &b, longinteger_object &a_over_b)
void add_in_place(longinteger_object &a, longinteger_object &b)
a class to represent arbitrary precision integers
std::ostream & print_not_scientific(std::ostream &ost)
void create(long int i, const char *file, int line)
void element_print_quick(void *elt, std::ostream &ost)
void element_mult(void *a, void *b, void *ab, int verbose_level)
groups::strong_generators * Strong_gens
void element_invert(void *a, void *av, int verbose_level)
void element_move(void *a, void *b, int verbose_level)
void group_order(ring_theory::longinteger_object &go)
a set and its known set stabilizer
groups::strong_generators * Strong_gens
to hold a vector of group elements
void allocate(int length, int verbose_level)
void reallocate(int new_length, int verbose_level)
void init(actions::action *A, int verbose_level)
a strong generating set for a permutation group with respect to a fixed action
strong_generators * create_copy()
void print_generators_tex()
void init_group_extension(strong_generators *subgroup, int *data, int index, int verbose_level)
void group_order(ring_theory::longinteger_object &go)
a single step classification of combinatorial objects
ring_theory::longinteger_object go
void init(actions::action *A, actions::action *A2, int max_orbits, int representation_sz, ring_theory::longinteger_object &go, int verbose_level)
void init(flag_orbits *Flag_orbits, int flag_orbit_index, int downstep_primary_orbit, int downstep_secondary_orbit, int downstep_orbit_len, int f_long_orbit, long int *pt_representation, groups::strong_generators *Strong_gens, int verbose_level)
int downstep_primary_orbit
groups::strong_generators * gens
int downstep_secondary_orbit
stores the set of flag orbits; related to the class classification_step
void init(actions::action *A, actions::action *A2, int nb_primary_orbits_lower, int pt_representation_sz, int nb_flag_orbits, int upper_bound_for_number_of_traces, void(*func_to_free_received_trace)(void *trace_result, void *data, int verbose_level), void(*func_latex_report_trace)(std::ostream &ost, void *trace_result, void *data, int verbose_level), void *free_received_trace_data, int verbose_level)
flag_orbit_node * Flag_orbit_node
int nb_primary_orbits_upper
groups::strong_generators * gens
void init(classification_step *C, int orbit_index, groups::strong_generators *gens, long int *Rep, void *extra_data, int verbose_level)
int trace_set(long int *set, int size, int level, long int *canonical_set, int *Elt_transporter, int verbose_level)
data_structures_groups::set_and_stabilizer * get_set_and_stabilizer(int level, int orbit_at_level, int verbose_level)
void orbit_length(int orbit_at_level, int level, ring_theory::longinteger_object &len)
int nb_orbits_at_level(int level)
void get_set_by_level(int level, int node, long int *set)
description of a classification problem of arcs in a geometry
classification of arcs in desarguesian projective planes
void compute_starter(int verbose_level)
void init(arc_generator_description *Descr, projective_geometry::projective_space_with_action *PA, groups::strong_generators *SG, int verbose_level)
poset_classification::poset_classification * gen
void family2_recognize(int *Iso_type, int verbose_level)
void familyH_recognize(int *Iso_type, int verbose_level)
void familyE_recognize(int *Iso_type, int verbose_level)
cubic_curve_with_action * CCA
void report(std::ostream &ost, int verbose_level)
invariant_relations::classification_step * Curves
field_theory::finite_field * F
void upstep(int verbose_level)
int recognize(int *eqn_in, int *Elt, int &iso_type, int verbose_level)
void test_orbits(int verbose_level)
void family3_recognize(int *Iso_type, int verbose_level)
void compute_starter(int verbose_level)
void familyG_recognize(int *Iso_type, int verbose_level)
void family1_recognize(int *Iso_type, int verbose_level)
void init(projective_geometry::projective_space_with_action *PA, cubic_curve_with_action *CCA, arc_generator_description *Descr, int verbose_level)
algebraic_geometry::cubic_curve * CC
invariant_relations::flag_orbits * Flag_orbits
void do_classify(int verbose_level)
void downstep(int verbose_level)
domain for cubic curves in projective space with automorphism group
algebraic_geometry::cubic_curve * CC
field_theory::finite_field * F
projective space PG(n,q) with automorphism group PGGL(n+1,q)
#define Lint_vec_copy(A, B, C)
#define Int_vec_zero(A, B)
#define Lint_vec_print(A, B, C)
#define Lint_vec_copy_to_int(A, B, C)
#define Int_vec_copy_to_lint(A, B, C)
#define Int_vec_print(A, B, C)
algebra, combinatorics and graph theory, geometry, linear algebra, number theory, data structures,...
the orbiter library for the classification of combinatorial objects