# Singular

#### D.13.2.5 groebnerFanP

Procedure from library `polymake.lib` (see polymake_lib).

Usage:
groebnerFanP(f); f poly

Return:
list, the ith entry of L[1] contains information about the ith cone in the Groebner fan dual to the ith vertex in the Newton polytope of the f
L[1][i][1] = integer matrix representing the inequalities which describe the cone
L[1][i][2] = a list which contains the inequalities represented by L[1][i][1] as a list of strings
L[1][i][3] = an interger matrix whose rows are the extreme rays of the cone
L[2] = is an integer matrix whose rows span the linearity space of the fan, i.e. the linear space which is contained
in each cone
L[3] = the Newton polytope of f in the format of the procedure newtonPolytopeP
L[4] = integer matrix where each row represents the exponent vector of one monomial occuring in the input polynomial

Note:
- if you have already computed the Newton polytope of f then you might want to use the procedure normalFanL instead in order to avoid doing costly computation twice
- the procedure calls for its computation polymake by Ewgenij Gawrilow, TU Berlin and Michael Joswig, so it only works if polymake is installed; see http://www.polymake.org/

Example:
 ```LIB "polymake.lib"; ==> Welcome to polymake version ==> Copyright (c) 1997-2015 ==> Ewgenij Gawrilow, Michael Joswig (TU Darmstadt) ==> http://www.polymake.org ring r=0,(x,y,z),dp; matrix M[4][1]=1,x,y,z; poly f=y3+x2+xy+2xz+yz+z2+1; // the Newton polytope of f is list gf=groebnerFanP(f); ==> polymake: used package ppl ==> The Parma Polyhedra Library (PPL): A C++ library for convex polyhedra ==> and other numerical abstractions. ==> http://www.cs.unipr.it/ppl/ ==> // the exponent vectors of f are ordered as follows gf[4]; ==> 0,3,0, ==> 2,0,0, ==> 1,1,0, ==> 1,0,1, ==> 0,1,1, ==> 0,0,2, ==> 0,0,0 // the first cone of the groebner fan has the inequalities gf[1][1][1]; ==> -2, 0, 0, ==> 0,-3, 0, ==> 0, 0,-2 // as a string they look like gf[1][1][2]; ==> [1]: ==> 0 > 2x ==> [2]: ==> 0 > 3y ==> [3]: ==> 0 > 2z // and it has the extreme rays print(gf[1][1][3]); ==> -1, 0, 0, ==> 0,-1, 0, ==> 0, 0,-1 // the linearity space is spanned by print(gf[2]); ==> 0,0,0 // the vertices of the Newton polytope are: gf[3][1]; ==> 0,0,0, ==> 2,0,0, ==> 0,3,0, ==> 0,0,2 // its dimension is gf[3][2]; ==> 3 // np[3] contains information how the vertices are connected to each other, // e.g. the 1st vertex is connected to the 2nd, 3rd and 4th vertex gf[3][3][1]; ==> 2,3,4 ```