  
  [1X5 [33X[0;0YPolyhedrons[133X[101X
  
  
  [1X5.1 [33X[0;0YCreating polyhedron[133X[101X
  
  [1X5.1-1 PolyhedronByInequalities[101X
  
  [33X[1;0Y[29X[2XPolyhedronByInequalities[102X( [3XL[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Ya [10XPolyhedron[110X Object[133X
  
  [33X[0;0YThe  function  takes  a  list  of  lists  [10XL[110X[23X:=[L_1,  L_2, ...][123X where each [23XL_j[123X
  represents  an  inequality  and  returns the polyhedron defined by them. For
  example  the  [23Xj[123X'th entry [23XL_j = [c_j,a_{j1},a_{j2},...,a_{jn}][123X corresponds to
  the inequality [23Xc_j+\sum_{i=1}^n a_{ji}x_i \geq 0[123X.[133X
  
  [1X5.1-2 Polyhedron[101X
  
  [33X[1;0Y[29X[2XPolyhedron[102X( [3XP[103X, [3XC[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Ya [10XPolyhedron[110X Object[133X
  
  [33X[0;0YThe input is a polytope [10XP[110X and a cone [10XC[110X. The output is the polyhedron defined
  by the Minkowski sum [10XP+C[110X.[133X
  
  [1X5.1-3 Polyhedron[101X
  
  [33X[1;0Y[29X[2XPolyhedron[102X( [3XL[103X, [3XC[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Ya [10XPolyhedron[110X Object[133X
  
  [33X[0;0YThe  input is a list [10XL[110X and a cone [10XC[110X. The output is the polyhedron defined by
  the  Minkowski  sum  [10XP+C[110X  where  [10XP[110X  is  the polytope, i.e., the convex hull,
  defined by the points [10XL[110X.[133X
  
  [1X5.1-4 Polyhedron[101X
  
  [33X[1;0Y[29X[2XPolyhedron[102X( [3XP[103X, [3XL[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Ya [10XPolyhedron[110X Object[133X
  
  [33X[0;0YThe input is a polytope [10XP[110X and a list [10XL[110X. The output is the polyhedron defined
  by the Minkowski sum [10XP+C[110X where [10XC[110X is the cone defined by the rays [10XL[110X.[133X
  
  [1X5.1-5 Polyhedron[101X
  
  [33X[1;0Y[29X[2XPolyhedron[102X( [3XP[103X, [3XC[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Ya [10XPolyhedron[110X Object[133X
  
  [33X[0;0YThe  input is a list [10XP[110X and a list [10XC[110X. The output is the polyhedron defined by
  the Minkowski sum of the polytope defined by [10XP[110X and the cone defined by [10XC[110X.[133X
  
  
  [1X5.2 [33X[0;0YAttributes[133X[101X
  
  [1X5.2-1 ExternalCddPolyhedron[101X
  
  [33X[1;0Y[29X[2XExternalCddPolyhedron[102X( [3XP[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10Ycdd Object[133X
  
  [33X[0;0YConverts  the polyhedron to a cdd object. The operations of CddInterface can
  then be applied on this convex object.[133X
  
  [1X5.2-2 ExternalNmzPolyhedron[101X
  
  [33X[1;0Y[29X[2XExternalNmzPolyhedron[102X( [3XP[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10Ynormaliz Object[133X
  
  [33X[0;0YConverts   the   polyhedron   to  an  normaliz  object.  The  operations  of
  NormalizInterface can then be applied on this convex object.[133X
  
  [1X5.2-3 DefiningInequalities[101X
  
  [33X[1;0Y[29X[2XDefiningInequalities[102X( [3XP[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10Ya list[133X
  
  [33X[0;0YReturns the Defining inequalities of the given polyhedron.[133X
  
  [1X5.2-4 MainRatPolytope[101X
  
  [33X[1;0Y[29X[2XMainRatPolytope[102X( [3XP[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10Ya [10XPolytope[110X Object[133X
  
  [33X[0;0YReturns the main rational polytope of the polyhedron.[133X
  
  [1X5.2-5 MainPolytope[101X
  
  [33X[1;0Y[29X[2XMainPolytope[102X( [3XP[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10Ya [10XPolytope[110X Object[133X
  
  [33X[0;0YReturns the main integral polytope of the given polyhedron.[133X
  
  [1X5.2-6 VerticesOfMainRatPolytope[101X
  
  [33X[1;0Y[29X[2XVerticesOfMainRatPolytope[102X( [3XP[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10Ya list[133X
  
  [33X[0;0YReturns the vertices of the main rational polytope of the polyhedron.[133X
  
  [1X5.2-7 VerticesOfMainPolytope[101X
  
  [33X[1;0Y[29X[2XVerticesOfMainPolytope[102X( [3XP[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10Ya list[133X
  
  [33X[0;0YReturns the vertices of the main integral polytope of the given polyhedron.[133X
  
  [1X5.2-8 TailCone[101X
  
  [33X[1;0Y[29X[2XTailCone[102X( [3XP[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10Ya [10XCone[110X Object[133X
  
  [33X[0;0YReturns the tail cone of the polyhedron.[133X
  
  [1X5.2-9 RayGeneratorsOfTailCone[101X
  
  [33X[1;0Y[29X[2XRayGeneratorsOfTailCone[102X( [3XP[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10Ya list[133X
  
  [33X[0;0YReturns the Ray Generators of the tail cone.[133X
  
  [1X5.2-10 LatticePointsGenerators[101X
  
  [33X[1;0Y[29X[2XLatticePointsGenerators[102X( [3XP[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10Ya list[133X
  
  [33X[0;0YReturns  the  integral lattice generators of the polyhedron. The output is a
  list  [23XL[123X  of  length  [23X3[123X.  Any  integral point in polyhedron can be written as
  [23Xa+mb+nc[123X, where [23Xa\in L[1],b\in L[2],c\in L[3], m\geq 0[123X.[133X
  
  [1X5.2-11 BasisOfLinealitySpace[101X
  
  [33X[1;0Y[29X[2XBasisOfLinealitySpace[102X( [3XP[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10Ya list[133X
  
  [33X[0;0YReturns  a  basis to the lineality space of the polyhedron. I.e., a basis to
  the vector space that is contained in [10XP[110X.[133X
  
  [1X5.2-12 FVector[101X
  
  [33X[1;0Y[29X[2XFVector[102X( [3XP[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10Ya list[133X
  
  [33X[0;0YReturns a list whose [23Xi[123X'th entry is the number of faces of dimension [23Xi-1[123X.[133X
  
  
  [1X5.3 [33X[0;0YProperties[133X[101X
  
  [1X5.3-1 IsBounded[101X
  
  [33X[1;0Y[29X[2XIsBounded[102X( [3XP[103X ) [32X property[133X
  [6XReturns:[106X  [33X[0;10Ytrue or false[133X
  
  [33X[0;0YThe input is a polyhedron P and the output is whether it is bounded or not.[133X
  
  [1X5.3-2 IsPointed[101X
  
  [33X[1;0Y[29X[2XIsPointed[102X( [3XP[103X ) [32X property[133X
  [6XReturns:[106X  [33X[0;10Ytrue or false[133X
  
  [33X[0;0YThe  input  is  a  polyhedron  P  and the output is whether its tail cone is
  pointed or not.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XP := Polyhedron( [ [ 1, 1 ], [ 4, 7 ] ], [ [ 1, -1 ], [ 1, 1 ] ] );[127X[104X
    [4X[28X<A polyhedron in |R^2>[128X[104X
    [4X[25Xgap>[125X [27XVerticesOfMainRatPolytope( P );[127X[104X
    [4X[28X[ [ 1, 1 ], [ 4, 7 ] ][128X[104X
    [4X[25Xgap>[125X [27XVerticesOfMainPolytope( P );[127X[104X
    [4X[28X[ [ 1, 1 ], [ 4, 7 ] ][128X[104X
    [4X[25Xgap>[125X [27XP := Polyhedron( [ [ 1/2, 1/2 ] ], [ [ 1, 1 ] ] );[127X[104X
    [4X[28X<A polyhedron in |R^2>[128X[104X
    [4X[25Xgap>[125X [27XVerticesOfMainRatPolytope( P );[127X[104X
    [4X[28X[ [ 1/2, 1/2 ] ][128X[104X
    [4X[25Xgap>[125X [27XVerticesOfMainPolytope( P );[127X[104X
    [4X[28X[ [ 1, 1 ] ][128X[104X
    [4X[25Xgap>[125X [27XLatticePointsGenerators( P );[127X[104X
    [4X[28X[ [ [ 1, 1 ] ], [ [ 1, 1 ] ], [  ] ][128X[104X
    [4X[25Xgap>[125X [27XDimension( P );[127X[104X
    [4X[28X1[128X[104X
    [4X[25Xgap>[125X [27XQ := Polyhedron( [ [ 5, 0 ], [ 0, 6 ] ], [ [ 1, 2 ] , [ -1, -2 ] ] );[127X[104X
    [4X[28X<A polyhedron in |R^2>[128X[104X
    [4X[25Xgap>[125X [27XVerticesOfMainRatPolytope( Q );[127X[104X
    [4X[28X[ [ 0, 6 ], [ 5, 0 ] ][128X[104X
    [4X[25Xgap>[125X [27XV_using_4ti2 := [ [ -3, -16 ], [ -3, 0 ] ];;[127X[104X
    [4X[25Xgap>[125X [27XV_using_normaliz := [ [ 0, 6 ], [ 5, 0 ] ];;[127X[104X
    [4X[25Xgap>[125X [27XV := VerticesOfMainPolytope( Q );;[127X[104X
    [4X[25Xgap>[125X [27XV = V_using_4ti2 or V = V_using_normaliz;[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XL_using_4ti2 := [ [ [ -3, -16 ], [ -3, -15 ], [ -3, -14 ], [127X[104X
    [4X[25X>[125X [27X[ -3, -13 ], [ -3, -12 ], [ -3, -11 ], [ -3, -10 ], [127X[104X
    [4X[25X>[125X [27X[ -3, -9 ], [ -3, -8 ], [ -3, -7 ], [ -3, -6 ], [127X[104X
    [4X[25X>[125X [27X[ -3, -5 ], [ -3, -4 ], [ -3, -3 ], [ -3, -2 ], [127X[104X
    [4X[25X>[125X [27X[ -3, -1 ], [ -3, 0 ] ], [  ], [ [ 1, 2 ] ] ];;[127X[104X
    [4X[25Xgap>[125X [27XL_using_normaliz := [ [ [ 0, -10 ], [ 0, -9 ], [ 0, -8 ],[127X[104X
    [4X[25X>[125X [27X[ 0, -7 ], [ 0, -6 ], [ 0, -5 ], [ 0, -4 ], [ 0, -3 ], [127X[104X
    [4X[25X>[125X [27X[ 0, -2 ], [ 0, -1 ], [ 0, 0 ], [ 0, 1 ], [ 0, 2 ], [127X[104X
    [4X[25X>[125X [27X[ 0, 3 ], [ 0, 4 ], [ 0, 5 ], [ 0, 6 ] ], [  ], [ [ -1, -2 ] ] ];;[127X[104X
    [4X[25Xgap>[125X [27XL := LatticePointsGenerators( Q );;[127X[104X
    [4X[25Xgap>[125X [27XL = L_using_4ti2 or L = L_using_normaliz;[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XDimension( Q );[127X[104X
    [4X[28X2[128X[104X
    [4X[25Xgap>[125X [27XRayGeneratorsOfTailCone( Q );[127X[104X
    [4X[28X[ [ -1, -2 ], [ 1, 2 ] ][128X[104X
    [4X[25Xgap>[125X [27XBasisOfLinealitySpace( Q );[127X[104X
    [4X[28X[ [ 1, 2 ] ][128X[104X
    [4X[25Xgap>[125X [27XDefiningInequalities( Q );[127X[104X
    [4X[28X[ [ 6, 2, -1 ], [ 10, -2, 1 ] ][128X[104X
    [4X[25Xgap>[125X [27XQ;[127X[104X
    [4X[28X<A polyhedron in |R^2 of dimension 2>[128X[104X
  [4X[32X[104X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XP := PolyhedronByInequalities( [ [ -2, 3, 4, -7 ], -[ -2, 3, 4, -7 ] ] );[127X[104X
    [4X[28X<A polyhedron in |R^3 >[128X[104X
    [4X[25Xgap>[125X [27XL_using_normaliz := [ [ [ -4, 0, -2 ] ], [  ], [127X[104X
    [4X[25X>[125X [27X[ [ 1, 1, 1 ], [ 4, -3, 0 ] ] ];;[127X[104X
    [4X[25Xgap>[125X [27XL_using_4ti2 := [ [ [ -2, 2, 0 ] ], [  ],[127X[104X
    [4X[25X>[125X [27X[ [ 1, 1, 1 ], [ 4, -3, 0 ] ] ];;[127X[104X
    [4X[25Xgap>[125X [27XL := LatticePointsGenerators( P );;[127X[104X
    [4X[25Xgap>[125X [27XL = L_using_4ti2 or L = L_using_normaliz;[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XQ := PolyhedronByInequalities( [ [-3, 4, 6 ], [ 3, -4, -6 ] ] );[127X[104X
    [4X[28X<A polyhedron in |R^2 >[128X[104X
    [4X[25Xgap>[125X [27XLatticePointsGenerators( Q );[127X[104X
    [4X[28X[ [  ], [  ], [ [ -3, 2 ] ] ][128X[104X
  [4X[32X[104X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XP := PolyhedronByInequalities( [ [ -1, 2, 3, 2, 0 ], [ -3, 7, 1, 0, 5 ], [127X[104X
    [4X[25X>[125X [27X[ 1, -2, -3, -2, 0 ], [ 3, -7, -1, 0, -5 ] ] );[127X[104X
    [4X[28X<A polyhedron in |R^4 >[128X[104X
    [4X[25Xgap>[125X [27XL_using_4ti2 := [ [ [ 0, 3, -4, 0 ] ], [  ], [ [ 0, -10, 15, 2 ], [ 1, -2, 2, -1 ] ] ];;[127X[104X
    [4X[25Xgap>[125X [27XL_using_normaliz := [ [ [ -19, 1, 18, 27 ] ], [  ], [ [ -1, 2, -2, 1 ], [ 5, 0, -5, -7 ] ] ];;[127X[104X
    [4X[25Xgap>[125X [27XL := LatticePointsGenerators( P );;[127X[104X
    [4X[25Xgap>[125X [27XL = L_using_4ti2 or L = L_using_normaliz;[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  
  [1X5.4 [33X[0;0YSolving Linear programs[133X[101X
  
  [33X[0;0YThe  problem  of  solving  linear  programs can be solved in the gap package
  [10XCddInterface[110X, which is required by [10XNConvex[110X.[133X
  
  [1X5.4-1 SolveLinearProgram[101X
  
  [33X[1;0Y[29X[2XSolveLinearProgram[102X( [3XP[103X, [3Xmax_or_min[103X, [3Xtarget_func[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Ya list or fail[133X
  
  [33X[0;0YThe  input  is a polyhedron [10XP[110X, a string [10Xmax_or_min[110X [23X\in[123X {"max", "min"} and an
  objective  function  [10Xtarget_func[110X,  which we want to maximize or minimize. If
  the  linear program has an optimal solution, the operation returns a list of
  two  entries,  the  solution  vector  and the optimal value of the objective
  function, otherwise it returns fail.[133X
  
  [1X5.4-2 SolveLinearProgram[101X
  
  [33X[1;0Y[29X[2XSolveLinearProgram[102X( [3XP[103X, [3Xmax_or_min[103X, [3Xtarget_func[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Ya list or fail[133X
  
  [33X[0;0YThe  input  is  a  polytope  [10XP[110X, a string [10Xmax_or_min[110X [23X\in[123X {"max","min"} and an
  objective  function  [10Xtarget_func[110X,  which we want to maximize or minimize. If
  the  linear program has an optimal solution, the operation returns a list of
  two  entries,  the  solution  vector  and the optimal value of the objective
  function, otherwise it returns fail.[133X
  
  [33X[0;0Y[23X\newline[123X  To illustrate the using of this operation, let us solve the linear
  program: [23X\\P(x,y)= 1-2x+5y[123X, with [23X\newline[123X [23X100\leq x \leq 200 \newline[123X [23X80\leq
  y\leq  170  \newline[123X [23Xy \geq -x+200\newline\newline[123X We bring the inequalities
  to  the form [23Xb+AX\geq 0[123X, we get: [23X\newline -100+x\geq 0 \newline[123X [23X200-x \geq 0
  \newline[123X  [23X-80+y  \geq  0  \newline[123X  [23X170  -y \geq 0 \newline[123X [23X-200 +x+y \geq 0
  \newline[123X[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XP := PolyhedronByInequalities( [ [ -100, 1, 0 ], [ 200, -1, 0 ],[127X[104X
    [4X[25X>[125X [27X[ -80, 0, 1 ], [ 170, 0, -1 ], [ -200, 1, 1 ] ] );;[127X[104X
    [4X[25Xgap>[125X [27Xmax := SolveLinearProgram( P, "max", [ 1, -2, 5 ] );[127X[104X
    [4X[28X[ [ 100, 170 ], 651 ][128X[104X
    [4X[25Xgap>[125X [27Xmin := SolveLinearProgram( P, "min", [ 1, -2, 5 ] );[127X[104X
    [4X[28X[ [ 200, 80 ], 1 ][128X[104X
    [4X[25Xgap>[125X [27XVerticesOfMainRatPolytope( P );[127X[104X
    [4X[28X[ [ 100, 100 ], [ 100, 170 ], [ 120, 80 ], [ 200, 80 ], [ 200, 170 ] ][128X[104X
  [4X[32X[104X
  
  [33X[0;0YSo   the   optimal   solutions   are   [23X(x=100,y=170)[123X   with   maximal  value
  [23Xp=1-2(100)+5(170)=651[123X     and     [23X(x=200,y=80)[123X     with     minimal    value
  [23Xp=1-2(200)+5(80)=1[123X.[133X
  
