Documentation on nef.x

From Palp
Revision as of 10:11, 29 December 2011 by Esche (Talk | contribs)

Jump to: navigation, search

nef.x is the application designed to address the following problems.

...

The corresponding routines are listed in the header file Nef.h.


Contents

General output

The general output slightly depends on whether the polytope is input as a combined weight system or by a list of points.

The first line of the output takes the following form:

M:# # N:# # codim=# #part=#

The two numbers # after M correspond to the number of points and vertices of the input polytope in the lattice M, respectively. The two numbers # after N correspond to the number of points and vertices of the output polytope in the lattice N, respectively. The number # in codim=# is the codimension of the nef-partition as specifiec by the option -c. The number # in #part=# is the number n of all the nef-partitions that nef.x has found. It specifies the number of lines that follow the first output line. If the polytope has been entered as a combined weight system, the line starts with the combined weight system repeated before the symbol M.

The next lines contain the information about the various nef-partitions. They take the following form:

H:# [#] P:# V: #  #  #sec #cpu

The numbers # after H: are the Hodge numbers h^{i,1}, i=1,\dots,d-1, where d\, is the dimension of the Calabi-Yau manifold X\, that can be obtained from this nef-partition. The full Hodge diamond is displayed with the option -H.

The numbers # in the square brackets [#] is the Euler number of X.

The number # after P: is a counter specfiying the nef-partition. It runs from 0 to n - 1, where n is the number of nef-partitions. Note that nef-partitions corresponding to direct products and projections to nef-partitions of lower codimensions are omitted by default. To display them use the options -D and -P, respectively.

The number # before sec indicates the time that was needed to compute this partition.

The number # before cpu indicates the number of CPU seconds that was needed to compute the Hodge numbers. For determining the nef-partitions without computing the Hodge numbers see the option -p.

Global parameters and limitations

Help screens

The help screens for nef.x are

nef.x -h
This is ``nef.x'':  calculate hodge numbers of nef-partitions
Usage:   cws.x -<options>

Options: -h        print this information

         -f or -   use as filter; otherwise parameters denote I/O files

         -N        starting-poly is in N-lattice (detault is M)

         -H        gives full list of hodge numbers

         -Lv       prints L vector of Vertices (in N-lattice)

         -Lp       prints L vector of Points (in N-lattice)

         -p        prints only Partitions, no Hodge numbers

         -D        calculates also direct products

         -P        calculates also projections

         -t        full time info

         -cCODIM   codimension (default = 2)

         -Fcodim   FIBRATIONS up to codim (default = 2)

(note that 'cws.x' should become 'nef.x'!!!) and

nef.x -x
This is extended help for ``nef.x'':

         -y        print poly/CWS in M lattice if it has nef-partitions

         -S        information about #points calculated in S-Poly

         -T        checks Serre-duality          

         -s        don't remove symmetric nef-partitions   

         -n        prints Poly only if it has nef-partitions

         -v        prints Vertices and #points of starting-poly in one
                   line. with the following option the output is limited
                   by #points:
             -uPOINTS  ... upper limit of #points (default = POINT_Nmax)
             -lPOINTS  ... lower limit of #points (default = 0)

         -m        starts with [d  w1 w2 ... wk d=d_1 d_2 (Minkowski sum)

         -R        prints Vertices of starting-poly if it is
                   not reflexive

         -V        prints Vertices of poly (in N-lattice)
         -Q        only direct products (up to lattice Quotient)

         -gNUMBER  prints Points of Gorenstein Poly in N-lattice

         -dNUMBER  prints Points of Gorenstein Poly in M-lattice
               if NUMBER = 0 ... no            0/1 info
               if NUMBER = 1 ... no redundant  0/1 info (=default)
               if NUMBER = 2 ... full          0/1 info

The options in detail

-N

This option interprets the input polytope in the lattice N. The default lattice for the input polytope, however, is the lattice M. The default lattice for the output polytope is the lattice N. The following example of a complete intersection of degree (2,2) in \mathbb{P}^3 illustrates the difference:

palp$ nef.x -Lv
Degrees and weights  `d1 w11 w12 ... d2 w21 w22 ...'
  or `#lines #colums' (= `PolyDim #Points' or `#Points PolyDim'):
3 4 
Type the 12 coordinates as dim=3 lines with #pts=4 colums:
   -1    0    0    1
   -1    0    1    0
   -1    1    0    0
M:5 4 N:35 4  codim=2 #part=0
3 4 Vertices in N-lattice:
   -1   -1   -1    3
   -1   -1    3   -1
   -1    3   -1   -1
--------------------
    1    1    1    1  d=4  codim=0
np=0 d:0 p:0    0sec     0cpu

Without the option -N, the output polytope is the dual of the input polytope with 35 points and no nef partition.

palp$ nef.x -Lv -N
Degrees and weights  `d1 w11 w12 ... d2 w21 w22 ...'
  or `#lines #colums' (= `PolyDim #Points' or `#Points PolyDim'):
3 4 
Type the 12 coordinates as dim=3 lines with #pts=4 colums:
   -1    0    0    1
   -1    0    1    0
   -1    1    0    0
M:35 4 N:5 4  codim=2 #part=2
3 4 Vertices in N-lattice:
   -1    0    0    1
   -1    0    1    0
   -1    1    0    0
--------------------
    1    1    1    1  d=4  codim=0
H:[0] P:0 V:2 3   (2 2)     0sec  0cpu
np=1 d:0 p:1    0sec     0cpu

With the option -N, the output polytope is the same as input polytope with 4 points and the expected nef partition corresponding to the complete intersection of degree (2,2) in \mathbb{P}^3.

-H

The option -H replaces the output lines starting with H: with the full Hodge diamond of the corresponding partition. Note that the information about the nef partition is omitted. The following example of codimension 2 complete intersections in \mathbb{P}^7 illustrates this option

esche$ nef.x -Lv -H
Degrees and weights  `d1 w11 w12 ... d2 w21 w22 ...'
  or `#lines #colums' (= `PolyDim #Points' or `#Points PolyDim'):
7 1 1 1 1 1 1 1
7 1 1 1 1 1 1 1 M:1716 7 N:8 7  codim=2 #part=3
6 7 Vertices in N-lattice:
   -1    0    0    0    0    0    1
   -1    0    1    0    0    0    0
   -1    0    0    1    0    0    0
   -1    0    0    0    1    0    0
   -1    0    0    0    0    1    0
   -1    1    0    0    0    0    0
-----------------------------------
    1    1    1    1    1    1    1  d=7  codim=0


                                    h 0 0   

                               h 1 0      h 0 1   

                          h 2 0      h 1 1      h 0 2   

                     h 3 0      h 2 1      h 1 2      h 0 3   

                h 4 0      h 3 1      h 2 2      h 1 3      h 0 4   

                     h 4 1      h 3 2      h 2 3      h 1 4   

                          h 4 2      h 3 3      h 2 4   

                               h 4 3      h 3 4   

                                    h 4 4   



                                       1

                                  0         0

                             0         1         0

                        0         0         0         0

                   1       237       996       237         1

                        0         0         0         0

                             0         1         0

                                  0         0

                                       1

     16sec  15cpu


                                    h 0 0   

                               h 1 0      h 0 1   

                          h 2 0      h 1 1      h 0 2   

                     h 3 0      h 2 1      h 1 2      h 0 3   

                h 4 0      h 3 1      h 2 2      h 1 3      h 0 4   

                     h 4 1      h 3 2      h 2 3      h 1 4   

                          h 4 2      h 3 3      h 2 4   

                               h 4 3      h 3 4   

                                    h 4 4   



                                       1

                                  0         0

                             0         1         0

                        0         0         0         0

                   1       356      1472       356         1

                        0         0         0         0

                             0         1         0

                                  0         0

                                       1

     42sec  41cpu
np=2 d:0 p:1    0sec     0cpu

-Lv

The option -Lv prints the vertices of the output polytope and the relations among them in addition to the standard output. The output takes the following form: The first line is

D n Vertices in N-lattice:

This line says that the vertices of the polytope in the lattice N\, are given by the subsequent D\, lines with n\, entries. The means that the polytope has dimension D\, and is given by n\, vertices which are the columns of the subsequent D \times n array of numbers. Note that an arbitrary basis of \mathbb{R}^D will be chosen.

Below the dashed line the linear relations among these vertices are indicated as follows: Let  v_0, \dots, v_{n-1} denote the n\, vertices corresponding to the n\, columns above the dashed line. For each linear relation among the vertices v_i\, given by

\sum_{i=0}^{n-1} l_i\,v_i = 0,

denote its degree by

l = \sum_{i=0}^{n-1} l_i.

The vertices v_i\, with non-zero l_i\, span a subpolytope of codimension c\,.

For each linearly independent linear relation there is a line in the output of the following form:

l_0 l_1 ... l_{n-1} d=l codim=c

In other words, these lines give a basis of the vector space of linear relations among the vertices. The basis is completely fixed by the order of the vertices, and the conditions that each vector, i.e. each linear relation is positive and primitive.

The following example of a codimension 2 complete intersection in \mathbb{P}^4 \times \mathbb{P}^4 illustrates this option

palp$ nef.x -Lv
Degrees and weights  `d1 w11 w12 ... d2 w21 w22 ...'
  or `#lines #colums' (= `PolyDim #Points' or `#Points PolyDim'):
4 1 1 1 1 0 0 0 0  4 0 0 0 0 1 1 1 1
4 1 1 1 1 0 0 0 0  4 0 0 0 0 1 1 1 1 M:1225 16 N:9 8  codim=2 #part=8
6 8 Vertices in N-lattice:
    0    0    0    0    1    0    0   -1
    0    0    1    0    0    0    0   -1
    0    0    0    1    0    0    0   -1
   -1    0    0    0    0    0    1    0
   -1    0    0    0    0    1    0    0
   -1    1    0    0    0    0    0    0
----------------------------------------
    1    1    0    0    0    1    1    0  d=4  codim=3
    0    0    1    1    1    0    0    1  d=4  codim=3
H:2 0 128 [828] P:1 V:3 4 6 7   (1 3) (3 1)     19sec  18cpu
H:8 0 128 [864] P:2 V:3 4 7   (0 4) (3 1)     13sec  13cpu
H:2 0 166 [1056] P:3 V:4 5 6 7   (2 2) (2 2)     8sec  8cpu
H:2 0 198 [1248] P:4 V:5 6 7   (2 2) (1 3)     9sec  8cpu
H:3 0 293 [1824] P:5 V:5 6   (2 2) (0 4)     6sec  6cpu
H:2 0 284 [1764] P:6 V:6 7   (1 3) (1 3)     10sec  9cpu
np=6 d:1 p:1    0sec     0cpu

The line 6 8 Vertices in N-lattice: says that the polytope has dimension 6 and is given by 8 vertices  v_0, \dots, v_{7}. Let e_1,\dots, e_6 be the standard basis of \mathbb{R}^6. From the columns of the subsequent 6 by 8 array of numbers, we read off that the 8 vertices are

 v_0 = -e_4-e_5-e_6, \; v_1=e_6.\; v_2=e_2,\; v_3 = e_3,\; v_4 = e_1,\; v_5 = e_5, \; v_6 = e_4, \; v_7 = -e_1 - e_2 -e_3 .

Note that an arbitrary basis has been chosen. There are two linearly independent linear relations:

 v_0 + v_1 + v_5 + v_6 = 0,\quad  v_2 + v_3 + v_4 + v_7 = 0 .

Each of these linear relations has degree 4. The corresponding subpolytopes have codimension 3 each and, of course, correspond to the two factors of \mathbb{P}^4 \times \mathbb{P}^4 , respectively.

-Lp

???

-p

Computes the nef partitions without the (time-consuming) calculation of Hodge numbers.

Example: Complete intersection Calabi-Yau fourfold of codimension two discussed in arXiv:0912.3524. Important: in Global.h set POLY_Dmax=7 or higher!

Input with -p:

palp$ nef.x -p
Degrees and weights  `d1 w11 w12 ... d2 w21 w22 ...'
  or `#lines #columns' (= `PolyDim #Points' or `#Points PolyDim'):
6 3 2 1 0 0 0 0 0 0 0 0  13 6 4 0 1 0 0 0 0 0 1 1  7 3 2 0 0 1 0 0 0 0 1 0  8 3 2 0 0 0 1 0 0 1 1 0  15 6 4 0 0 0 0 1 1 1 1 1
6 3 2 1 0 0 0 0 0 0 0 0  13 6 4 0 1 0 0 0 0 0 1 1  7 3 2 0 0 1 0 0 0 0 1 0  8 3 2 0 0 0 1 0 0 1 1 0  15 6 4 0 0 0 0 1 1 1 1 1 M:4738 39 N:15 11  codim=2 #part=11
 P:0 V:0 4 7       0sec  0cpu
 P:1 V:0 2 3 5 9  11 12 13       0sec  0cpu
 P:2 V:1 5 6 8       0sec  0cpu
 P:3 V:1 6 7 8 10       0sec  0cpu
 P:4 V:0 1 7 8       0sec  0cpu
 P:5 V:0 1 4 7 8       0sec  0cpu
 P:6 V:4 5 6       0sec  0cpu
 P:7 V:4 6 7 10       0sec  0cpu
 P:9 V:5 6       0sec  0cpu
 P:10 V:6 8       0sec  0cpu
np=10 d:0 p:1    0sec     0cpu

Input without -p (note the calculation time! (32-bit system)):

palp$ nef.x
Degrees and weights  `d1 w11 w12 ... d2 w21 w22 ...'
  or `#lines #columns' (= `PolyDim #Points' or `#Points PolyDim'):
6 3 2 1 0 0 0 0 0 0 0 0  13 6 4 0 1 0 0 0 0 0 1 1  7 3 2 0 0 1 0 0 0 0 1 0  8 3 2 0 0 0 1 0 0 1 1 0  15 6 4 0 0 0 0 1 1 1 1 1 
6 3 2 1 0 0 0 0 0 0 0 0  13 6 4 0 1 0 0 0 0 0 1 1  7 3 2 0 0 1 0 0 0 0 1 0  8 3 2 0 0 0 1 0 0 1 1 0  15 6 4 0 0 0 0 1 1 1 1 1 M:4738 39 N:15 11  codim=2 #part=11
H:8 0 1113 [6774] P:0 V:0 4 7       247sec  246cpu
H:5 0 1115 [6768] P:1 V:0 2 3 5 9  11 12 13       141sec  141cpu
H:5 0 1115 [6768] P:2 V:1 5 6 8       136sec  136cpu
H:8 0 1113 [6774] P:3 V:1 6 7 8 10       183sec  182cpu
H:8 0 1113 [6774] P:4 V:0 1 7 8       203sec  202cpu
H:5 0 1115 [6768] P:5 V:0 1 4 7 8       157sec  156cpu
H:5 0 1115 [6768] P:6 V:4 5 6       190sec  189cpu
H:8 0 1113 [6774] P:7 V:4 6 7 10       226sec  225cpu
H:8 0 1113 [6774] P:9 V:5 6       246sec  246cpu
H:7 0 958 [5838] P:10 V:6 8       236sec  234cpu
np=10 d:0 p:1  236sec   234cpu

-D

This option keeps those nef partitions which are direct products of lower-dimensional nef partitions.

Example: Codimension 2 CICY in  \mathbb{P}^2\times \mathbb{P}^2

with option -D:

palp$ nef.x -D
3 1 1 1 0 0 0 3 0 0 0 1 1 1
3 1 1 1 0 0 0  3 0 0 0 1 1 1 M:100 9 N:7 6  codim=2 #part=5
H:4 [0] h1=2 P:0 V:2 3 5   D     0sec  0cpu
H:20 [24] P:1 V:3 4 5       0sec  0cpu
H:20 [24] P:2 V:3 5       0sec  0cpu
H:20 [24] P:3 V:4 5       0sec  0cpu
np=3 d:1 p:1    0sec     0cpu

The last three nef partitions describe a K3 manifold. The first one is a T^4=T^2\times T^2. The extra output triggered by -D is:

H:4 [0] h1=2 P:0 V:2 3 5   D     0sec  0cpu

h1 = 2 indicates that the Hodge number h1,0 = 2. Furthermore D indicates that the nef partition is a direct product.

Compare this to the output without the option -D where the first nef partition is not shown:

palp$ nef.x
3 1 1 1 0 0 0 3 0 0 0 1 1 1
3 1 1 1 0 0 0  3 0 0 0 1 1 1 M:100 9 N:7 6  codim=2 #part=5
H:20 [24] P:1 V:3 4 5       0sec  0cpu
H:20 [24] P:2 V:3 5       0sec  0cpu
H:20 [24] P:3 V:4 5       1sec  0cpu
np=3 d:1 p:1    0sec     0cpu

-P

???

-t

???

-c*

The option -c* where * is a number > = 1 allows to specify the codimension of the Calabi-Yau. The default value is for the codimension is 2. Note that the calculation can become very slow for high codimensions and PALP may crash because the limits such as the number of vertices etc. set in Global.h may be exceeded.

Important: for codimension 2 or higher the parameter POLY_Dmax specifying the dimension of the polytope in Global.h needs to be changed accordingly and PALP has to be recompiled.

Example: Codimension 3 CICY in \mathbb{P}^2\times \mathbb{P}^2:

palp$ nef.x -c3
Degrees and weights  `d1 w11 w12 ... d2 w21 w22 ...'
  or `#lines #columns' (= `PolyDim #Points' or `#Points PolyDim'):
3 1 1 1 0 0 0 3 0 0 0 1 1 1
3 1 1 1 0 0 0  3 0 0 0 1 1 1 M:100 9 N:7 6  codim=3 #part=7
H:[0] P:0 V0:1 3  V1:4 5       1sec  1cpu
H:[0] P:1 V0:2 3  V1:4 5       1sec  0cpu
np=1 d:1 p:5    0sec     0cpu

Also hypersurfaces are possible.

Example: Quintic in \mathbb{P}^4:

palp$ nef.x -c1
Degrees and weights  `d1 w11 w12 ... d2 w21 w22 ...'
  or `#lines #columns' (= `PolyDim #Points' or `#Points PolyDim'):
5 1 1 1 1 1
5 1 1 1 1 1 M:126 5 N:6 5  codim=1 #part=1
H:1 101 [-200] P:0      0sec  0cpu
np=1 d:0 p:0    0sec     0cpu

Compare to that the output of poly.x:

palp$ poly.x
Degrees and weights  `d1 w11 w12 ... d2 w21 w22 ...'
  or `#lines #columns' (= `PolyDim #Points' or `#Points PolyDim'):
5 1 1 1 1 1
5 1 1 1 1 1 M:126 5 N:6 5 H:1,101 [-200]

-F*

???

-y

???

-S

???

-T

???

-s

???

-n

???

-v

???

-m

???

-R

???

-V

???

-Q

???

-g*

???

-d*

???

Strategy for future versions

Should we keep both help screens, or try to get everything into 'nef.x -h'?

It would be good to have a documentation of the header file Nef.h: just type whatever information you can supply into the following listing, in the standard ('/* ... */') C comment format.

#define Nef_Max 	500000
#define NP_Max          500000
#define W_Nmax (POLY_Dmax+1)
#define MAXSTRING	100

#undef	WRITE_CWS
#define	WRITE_CWS

#define Pos_Max   (POLY_Dmax + 2)
#define FIB_Nmax        10*EQUA_Nmax
#define FIB_POINT_Nmax  VERT_Nmax

typedef struct {
  Long W[FIB_Nmax][FIB_POINT_Nmax];
  Long VM[FIB_POINT_Nmax][POLY_Dmax];
  int nw;
  int nv;
  int d;
  int Wmax;
} LInfo;

struct Poset_Element {
  int num, dim;
};

struct Interval {
  int min, max;
};

typedef struct Interval Interval;

typedef struct {
  struct Interval *L;
  int n;
} Interval_List;

typedef struct Poset_Element Poset_Element;

typedef struct {
  struct Poset_Element x, y;
} Poset;

typedef struct {
  struct Poset_Element *L;
  int n;
} Poset_Element_List;

typedef struct {
  int nface[Pos_Max];
  int dim;
  INCI edge[Pos_Max][FACE_Nmax];
} Cone;

typedef struct {
  Long S[2*Pos_Max];
} SPoly;

typedef struct {
  Long B[Pos_Max][Pos_Max];
} BPoly;

typedef struct {
  int E[4*(Pos_Max)][4*(Pos_Max)];
} EPoly;

typedef struct {
    Long x[POINT_Nmax][W_Nmax];
    int N, np;
} AmbiPointList;

typedef struct {
  int n;
  int nv;
  int codim;
  int S[Nef_Max][VERT_Nmax];
  int DirProduct[Nef_Max];
  int Proj[Nef_Max];
  int DProj[Nef_Max];
} PartList;

typedef struct {
  int n;
  int nv;
  int S[Nef_Max][VERT_Nmax];
} Part;

typedef struct {
  int n, y, w, p, t, S, Lv, Lp, N, u, d, g, VP, B, T, H, dd, gd, 
	noconvex, Msum, Sym, V, Rv, Test, Sort, Dir, Proj, f;		
} Flags;

typedef struct {
	int noconvex, Sym, Test, Sort;		
} NEF_Flags;

struct Vector {
  Long x[POLY_Dmax];
};

typedef struct Vector Vector ;

typedef struct {
  struct Vector *L;
  int n;
  Long np, NP_max;						} DYN_PPL;

void part_nef(PolyPointList *, VertexNumList *, EqList *, PartList *,
	      int *, NEF_Flags *);

void Make_E_Poly(FILE *, CWS *, PolyPointList *, VertexNumList *, EqList *,
		 int *, Flags *, int *);

void Mink_WPCICY(AmbiPointList * _AP_1, AmbiPointList * _AP_2,
		 AmbiPointList * _AP);

int  IsDigit(char);

int  IntSqrt(int q);

void Die(char *);

void Print_CWS_Zinfo(CWS *);
Personal tools
Namespaces

Variants
Actions
Navigation
Tools