OPENF4
Library for Gröebner basis computations over finite fields.
 All Classes Namespaces Files Functions Variables Friends Pages
tutorial-gf2-method2.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2015 Antoine Joux, Vanessa Vitse and Titouan Coladon
3  *
4  * This file is part of openf4.
5  *
6  * openf4 is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * openf4 is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with openf4. If not, see <http://www.gnu.org/licenses/>.
18  */
19 
28 #include <iostream>
29 #include <string>
30 #include <vector>
31 #include <libopenf4.h>
32 
33 using namespace std;
34 
35 int main (int argc, char **argv)
36 {
37  cout << "#########################################################" << endl;
38  cout << "# TUTORIAL WITH LIBRARY USE #" << endl;
39  cout << "#########################################################" << endl << endl;
40 
41  // Create polynomial array.
42  vector<string> polynomialArray;
43 
44  // Create variable name array.
45  vector<string> variableName;
46  for(int i = 0; i < 6; i++)
47  {
48  variableName.push_back('x'+to_string(i));
49  }
50 
51  // Fill the polynomial array.
52  polynomialArray.emplace_back("x0+x1+x2+x3+x4+x5");
53  polynomialArray.emplace_back("x0*x1+x1*x2+x2*x3+x3*x4+x0*x5+x4*x5");
54  polynomialArray.emplace_back("x0*x1*x2+x1*x2*x3+x2*x3*x4+x0*x1*x5+x0*x4*x5+x3*x4*x5");
55  polynomialArray.emplace_back("x0*x1*x2*x3+x1*x2*x3*x4+x0*x1*x2*x5+x0*x1*x4*x5+x0*x3*x4*x5+x2*x3*x4*x5");
56  polynomialArray.emplace_back("x0*x1*x2*x3*x4+x0*x1*x2*x3*x5+x0*x1*x2*x4*x5+x0*x1*x3*x4*x5+x0*x2*x3*x4*x5+x1*x2*x3*x4*x5");
57  polynomialArray.emplace_back("x0*x1*x2*x3*x4*x5-1");
58 
59  // Compute a reduce groebner basis.
60  vector<string> basis = groebnerBasisGF2F4(6, variableName, polynomialArray, 1, 0);
61 
62  // Print the reduce groebner basis.
63  for(size_t i = 0; i < basis.size(); i++)
64  {
65  cout << basis[i] << endl;
66  }
67 }
std::vector< std::string > groebnerBasisGF2F4(int nbVariable, std::vector< std::string > variableName, std::vector< std::string > polynomialList, int nbThread, int verbose)
Compute a reduced groebner basis of the ideal defined by the list of polynomials polynomialList.
Declaration of library methods.