====== BigObject Cone ====== //from application [[..:polytope|polytope]]//\\ \\ A polyhedral cone, not necessarily pointed. Note that in contrast to the vertices of a polytope, the ''[[..:polytope:Cone#RAYS |RAYS]]'' are given in affine coordinates. ? Type Parameters: :: ''Scalar'': numeric data type used for the coordinates, must be an ordered field ? Specializations: :: ''Cone::ExactCoord'': An affine cone with an exact coordinate type, like Rational. :: ''Cone'': An affine cone with float coordinates realized in Rd. :: ''Cone'': An affine rational cone realized in Rd. ? Permutations: : ? FacetPerm: :: permuting the ''[[..:polytope:Cone#FACETS |FACETS]]'' ? VertexPerm: :: permuting the ''[[..:polytope:Cone#RAYS |RAYS]]'' TODO: rename into RaysPerm and introduce an overriding alias in Polytope ===== Properties ===== ==== Input property ==== These properties are for input only. They allow redundant information. ---- {{anchor:equations:}} ? **''EQUATIONS''** :: Equations that hold for all ''[[..:polytope:Cone#INPUT_RAYS |INPUT_RAYS]]'' of the cone. All vectors in this section must be non-zero. Input section only. Ask for ''[[..:polytope:Cone#LINEAR_SPAN |LINEAR_SPAN]]'' if you want to see an irredundant description of the linear span. ? Type: :''[[..:common#Matrix |Matrix]]'' ---- {{anchor:inequalities:}} ? **''INEQUALITIES''** :: Inequalities giving rise to the cone; redundancies are allowed. All vectors in this section must be non-zero. Dual to ''[[..:polytope:Cone#INPUT_RAYS |INPUT_RAYS]]''. Input section only. Ask for ''[[..:polytope:Cone#FACETS |FACETS]]'' if you want to compute an H-representation from a V-representation. ? Type: :''[[..:common#Matrix |Matrix]]'' ---- {{anchor:input_lineality:}} ? **''INPUT_LINEALITY''** :: (Non-homogenous) vectors whose linear span defines a subset of the lineality space of the cone; redundancies are allowed. All vectors in the input must be non-zero. Dual to ''[[..:polytope:Cone#EQUATIONS |EQUATIONS]]''. Input section only. Ask for ''[[..:polytope:Cone#LINEALITY_SPACE |LINEALITY_SPACE]]'' if you want to compute a V-representation from an H-representation. ? Type: :''[[..:common#Matrix |Matrix]]'' ---- {{anchor:input_rays:}} ? **''INPUT_RAYS''** :: (Non-homogenous) vectors whose positive span form the cone; redundancies are allowed. Dual to ''[[..:polytope:Cone#INEQUALITIES |INEQUALITIES]]''. All vectors in the input must be non-zero. Input section only. Ask for ''[[..:polytope:Cone#RAYS |RAYS]]'' if you want to compute a V-representation from an H-representation. ? Type: :''[[..:common#Matrix |Matrix]]'' ---- ==== Algebraic Geometry ==== Properties from algebraic geometry. ---- {{anchor:toric_ideal:}} ? **''TORIC_IDEAL''** :: The matrix containing the exponent vectors of the binomials whose vanishing set is the affine toric variety given by the cone. In other words the rows of this matrix give the relations between the Hilbert basis elements. ? Type: :''[[..:fulton:BinomialIdeal |BinomialIdeal]]'' ? depends on extension: : [[:external_software|4ti2]] ---- ==== Combinatorics ==== These properties capture combinatorial information of the object. Combinatorial properties only depend on combinatorial data of the object like, e.g., the face lattice. ---- {{anchor:altshuler_det:}} ? **''ALTSHULER_DET''** :: Let M be the vertex-facet incidence matrix, then the Altshuler determinant is defined as max{det(M ∗ MT), det(MT ∗ M)}. ? Type: :''[[..:common#Integer |Integer]]'' ? Example: :: This prints the Altshuler determinant of the built-in pentagonal pyramid (Johnson solid 2): :: > print johnson_solid("pentagonal_pyramid")->ALTSHULER_DET; 25 ---- {{anchor:cocircuit_equations:}} ? **''COCIRCUIT_EQUATIONS''** :: A matrix whose rows contain the cocircuit equations of P. The columns correspond to the ''[[..:polytope:Cone#MAX_INTERIOR_SIMPLICES |MAX_INTERIOR_SIMPLICES]]''. ? Type: :''[[..:common#SparseMatrix |SparseMatrix]]<[[..:common#Rational |Rational]],[[..:common#NonSymmetric |NonSymmetric]]>'' ---- {{anchor:combinatorial_dim:}} ? **''COMBINATORIAL_DIM''** :: Combinatorial dimension This is the dimension all combinatorial properties of the cone like e.g. ''[[..:polytope:Cone#RAYS_IN_FACETS |RAYS_IN_FACETS]]'' or the ''[[..:polytope:Cone#HASSE_DIAGRAM |HASSE_DIAGRAM]]'' refer to. Geometrically, the combinatorial dimension is the dimension of the intersection of the pointed part of the cone with a hyperplane that creates a bounded intersection. ? Type: :''[[..:common#Int |Int]]'' ---- {{anchor:dual_graph:}} ? **''DUAL_GRAPH''** :: Facet-ridge graph. Dual to ''[[..:polytope:Cone#GRAPH |GRAPH]]''. ? Type: :''[[..:graph:Graph |Graph]]<[[..:common#Undirected |Undirected]]>'' ---- {{anchor:essentially_generic:}} ? **''ESSENTIALLY_GENERIC''** :: All intermediate polytopes (with respect to the given insertion order) in the beneath-and-beyond algorithm are simplicial. We have the implications: ''[[..:polytope:Cone#RAYS |RAYS]]'' in general position => ESSENTIALLY_GENERIC => ''[[..:polytope:Cone#SIMPLICIAL |SIMPLICIAL]]'' ? Type: :''[[..:common#Bool |Bool]]'' ---- {{anchor:excess_facet_degree:}} ? **''EXCESS_FACET_DEGREE''** :: Measures the deviation of the cone from being simple in terms of the ''[[..:polytope:Cone#DUAL_GRAPH |DUAL_GRAPH]]''. ? Type: :''[[..:common#Int |Int]]'' ---- {{anchor:excess_ray_degree:}} ? **''EXCESS_RAY_DEGREE''** :: Measures the deviation of the cone from being simple in terms of the ''[[..:polytope:Cone#GRAPH |GRAPH]]''. ? Type: :''[[..:common#Int |Int]]'' ---- {{anchor:f2_vector:}} ? **''F2_VECTOR''** :: The vector counting the number of incidences between pairs of faces. `fik` is the number of incident pairs of `(i+1)`-faces and `(k+1)`-faces. The main diagonal contains the ''[[..:polytope:Cone#F_VECTOR |F_VECTOR]]''. ? Type: :''[[..:common#Matrix |Matrix]]<[[..:common#Integer |Integer]],[[..:common#NonSymmetric |NonSymmetric]]>'' ---- {{anchor:facets_thru_rays:}} ? **''FACETS_THRU_RAYS''** :: Transposed to ''[[..:polytope:Cone#RAYS_IN_FACETS |RAYS_IN_FACETS]]''. Notice that this is a temporary property; it will not be stored in any file. ? Type: :''[[..:common#IncidenceMatrix |IncidenceMatrix]]<[[..:common#NonSymmetric |NonSymmetric]]>'' ---- {{anchor:facet_sizes:}} ? **''FACET_SIZES''** :: Number of incident rays for each facet. ? Type: :''[[..:common#Array |Array]]<[[..:common#Int |Int]]>'' ---- {{anchor:flag_vector:}} ? **''FLAG_VECTOR''** :: Condensed form of the flag vector, containing all entries indexed by sparse sets in {0, ..., ''[[..:polytope:Cone#COMBINATORIAL_DIM |COMBINATORIAL_DIM]]''-1} in the following order: (1, f0, f1, f2, f02, f3, f03, f13, f4, f04, f14, f24, f024, f5, ...). Use Dehn-Sommerville equations, via user function ''[[..:polytope:Cone#N_FLAGS |N_FLAGS]]'', to extend. ? Type: :''[[..:common#Vector |Vector]]<[[..:common#Integer |Integer]]>'' ---- {{anchor:foldable_cocircuit_equations:}} ? **''FOLDABLE_COCIRCUIT_EQUATIONS''** :: A matrix whose rows contain the foldable cocircuit equations of P. The columns correspond to 2 * ''[[..:polytope:Cone#MAX_INTERIOR_SIMPLICES |MAX_INTERIOR_SIMPLICES]]''. col 0 = 0, col 1 = first simplex (black copy), col 2 = first simplex (white copy), col 3 = second simplex (black copy), ... ? Type: :''[[..:common#SparseMatrix |SparseMatrix]]<[[..:common#Rational |Rational]],[[..:common#NonSymmetric |NonSymmetric]]>'' ---- {{anchor:f_vector:}} ? **''F_VECTOR''** :: The vector counting the number of faces (`fk` is the number of `(k+1)`-faces). ? Type: :''[[..:common#Vector |Vector]]<[[..:common#Integer |Integer]]>'' ---- {{anchor:graph:}} ? **''GRAPH''** :: Vertex-edge graph obtained by intersecting the cone with a transversal hyperplane. ? Type: :''[[..:graph:Graph |Graph]]<[[..:common#Undirected |Undirected]]>'' ---- {{anchor:hasse_diagram:}} ? **''HASSE_DIAGRAM''** :: ? Type: :''[[..:graph:Lattice |Lattice]]<[[..:graph#BasicDecoration |BasicDecoration]],[[..:graph#Sequential |Sequential]]>'' ? Methods of HASSE_DIAGRAM: : ? **''dim()''** :: The dimension of the underlying object ? Returns: :''[[..:common#Int |Int]]'' ? **''nodes_of_dim([[..:common#Int |Int]] d)''** :: The indices of nodes in the ''[[..:polytope:Cone#HASSE_DIAGRAM |HASSE_DIAGRAM]]'' corresponding to faces of dimension d in the underlying object ? Parameters: :: ''[[..:common#Int |Int]]'' ''d'': dimension ? Returns: :''[[..:common#Set |Set]]<[[..:common#Int |Int]]>'' ? **''nodes_of_dim_range([[..:common#Int |Int]] d1, [[..:common#Int |Int]] d2)''** :: The indices of nodes in the ''[[..:polytope:Cone#HASSE_DIAGRAM |HASSE_DIAGRAM]]'' corresponding to faces with dimension in the range (d1,d2) in the underlying object ? Parameters: :: ''[[..:common#Int |Int]]'' ''d1'': lower dimension of the range :: ''[[..:common#Int |Int]]'' ''d2'': upper dimension of the range ? Returns: :''[[..:common#Set |Set]]<[[..:common#Int |Int]]>'' ---- {{anchor:interior_ridge_simplices:}} ? **''INTERIOR_RIDGE_SIMPLICES''** :: The (//d//-1)-dimensional simplices in the interior. ? Type: :''[[..:common#Array |Array]]<[[..:common#Set |Set]]<[[..:common#Int |Int]]%%>>%%'' ---- {{anchor:max_boundary_simplices:}} ? **''MAX_BOUNDARY_SIMPLICES''** :: The boundary (//d//-1)-dimensional simplices of a cone of combinatorial dimension //d// ? Type: :''[[..:common#Array |Array]]<[[..:common#Set |Set]]<[[..:common#Int |Int]]%%>>%%'' ---- {{anchor:max_interior_simplices:}} ? **''MAX_INTERIOR_SIMPLICES''** :: The interior //d//-dimensional simplices of a cone of combinatorial dimension //d// ? Type: :''[[..:common#Array |Array]]<[[..:common#Set |Set]]<[[..:common#Int |Int]]%%>>%%'' ---- {{anchor:n_edges:}} ? **''N_EDGES''** :: The number of edges of the ''[[..:polytope:Cone#GRAPH |GRAPH]]'' ? Type: :''[[..:common#Int |Int]]'' ---- {{anchor:n_facets:}} ? **''N_FACETS''** :: The number of ''[[..:polytope:Cone#FACETS |FACETS]]''. ? Type: :''[[..:common#Int |Int]]'' ---- {{anchor:n_rays:}} ? **''N_RAYS''** :: The number of ''[[..:polytope:Cone#RAYS |RAYS]]'' ? Type: :''[[..:common#Int |Int]]'' ---- {{anchor:n_ray_facet_inc:}} ? **''N_RAY_FACET_INC''** :: Number of pairs of incident vertices and facets. ? Type: :''[[..:common#Int |Int]]'' ---- {{anchor:n_ridges:}} ? **''N_RIDGES''** :: The number of ridges (faces of codimension 2) equals the number of edges of the ''[[..:polytope:Cone#DUAL_GRAPH |DUAL_GRAPH]]'' ? Type: :''[[..:common#Int |Int]]'' ---- {{anchor:rays_in_facets:}} ? **''RAYS_IN_FACETS''** :: Ray-facet incidence matrix, with rows corresponding to facets and columns to rays. Rays and facets are numbered from 0 to ''[[..:polytope:Cone#N_RAYS |N_RAYS]]''-1 rsp. ''[[..:polytope:Cone#N_FACETS |N_FACETS]]''-1, according to their order in ''[[..:polytope:Cone#RAYS |RAYS]]'' rsp. ''[[..:polytope:Cone#FACETS |FACETS]]''. ? Type: :''[[..:common#IncidenceMatrix |IncidenceMatrix]]<[[..:common#NonSymmetric |NonSymmetric]]>'' ---- {{anchor:rays_in_ridges:}} ? **''RAYS_IN_RIDGES''** :: Ray-ridge incidence matrix, with rows corresponding to ridges and columns to rays. Rays and ridges are numbered from 0 to ''[[..:polytope:Cone#N_RAYS |N_RAYS]]''-1 rsp. ''[[..:polytope:Cone#N_RIDGES |N_RIDGES]]''-1, according to their order in ''[[..:polytope:Cone#RAYS |RAYS]]'' rsp. ''[[..:polytope:SymmetrizedCocircuitEquations#RIDGES |RIDGES]]''. ? Type: :''[[..:common#IncidenceMatrix |IncidenceMatrix]]<[[..:common#NonSymmetric |NonSymmetric]]>'' ---- {{anchor:ray_sizes:}} ? **''RAY_SIZES''** :: Number of incident facets for each ray. ? Type: :''[[..:common#Array |Array]]<[[..:common#Int |Int]]>'' ---- {{anchor:self_dual:}} ? **''SELF_DUAL''** :: True if the cone is self-dual. ? Type: :''[[..:common#Bool |Bool]]'' ---- {{anchor:simple:}} ? **''SIMPLE''** :: True if the facets of the cone are simple. Dual to ''[[..:polytope:Cone#SIMPLICIAL |SIMPLICIAL]]''. ? Type: :''[[..:common#Bool |Bool]]'' ---- {{anchor:simplicial:}} ? **''SIMPLICIAL''** :: True if the facets of the cone are simplicial. ? Type: :''[[..:common#Bool |Bool]]'' ---- {{anchor:simplicial_cone:}} ? **''SIMPLICIAL_CONE''** :: True if the cone is simplicial. ? Type: :''[[..:common#Bool |Bool]]'' ---- ==== Geometry ==== These properties capture geometric information of the object. Geometric properties depend on geometric information of the object, like, e.g., vertices or facets. ---- {{anchor:cone_ambient_dim:}} ? **''CONE_AMBIENT_DIM''** :: The dimension of the space in which the cone lives. ? Type: :''[[..:common#Int |Int]]'' ---- {{anchor:cone_dim:}} ? **''CONE_DIM''** :: Dimension of the linear span of the cone = dimension of the cone. If the cone is given purely combinatorially, this is the dimension of a minimal embedding space deduced from the combinatorial structure. ? Type: :''[[..:common#Int |Int]]'' ---- {{anchor:epsilon:}} ? **''EPSILON''** :: Threshold for zero test for scalar products (e.g. vertex * facet normal) ? Type: :''[[..:common#Float |Float]]'' ---- {{anchor:facets:}} ? **''FACETS''** :: Facets of the cone, encoded as inequalities. All vectors in this section must be non-zero. Dual to ''[[..:polytope:Cone#RAYS |RAYS]]''. This section is empty if and only if the cone is trivial (e.g. if it encodes an empty polytope). Notice that a polytope which is a single point defines a one-dimensional cone, the face at infinity is a facet. The property ''[[..:polytope:Cone#FACETS |FACETS]]'' appears only in conjunction with the property ''[[..:polytope:Cone#LINEAR_SPAN |LINEAR_SPAN]]'', or ''[[..:polytope:Polytope#AFFINE_HULL |AFFINE_HULL]]'', respectively. The specification of the property ''[[..:polytope:Cone#FACETS |FACETS]]'' requires the specification of ''[[..:polytope:Cone#LINEAR_SPAN |LINEAR_SPAN]]'', or ''[[..:polytope:Polytope#AFFINE_HULL |AFFINE_HULL]]'', respectively, and vice versa. ? Type: :''[[..:common#Matrix |Matrix]]'' ---- {{anchor:facets_thru_input_rays:}} ? **''FACETS_THRU_INPUT_RAYS''** :: Transposed to ''[[..:polytope:Cone#INPUT_RAYS_IN_FACETS |INPUT_RAYS_IN_FACETS]]''. Notice that this is a temporary property; it will not be stored in any file. ? Type: :''[[..:common#IncidenceMatrix |IncidenceMatrix]]<[[..:common#NonSymmetric |NonSymmetric]]>'' ---- {{anchor:full_dim:}} ? **''FULL_DIM''** :: ''[[..:polytope:Cone#CONE_AMBIENT_DIM |CONE_AMBIENT_DIM]]'' and ''[[..:polytope:Cone#CONE_DIM |CONE_DIM]]'' coincide. Notice that this makes sense also for the derived Polytope class. ? Type: :''[[..:common#Bool |Bool]]'' ---- {{anchor:inequalities_thru_rays:}} ? **''INEQUALITIES_THRU_RAYS''** :: transposed ''[[..:polytope:Cone#RAYS_IN_INEQUALITIES |RAYS_IN_INEQUALITIES]]'' Notice that this is a temporary property; it will not be stored in any file. ? Type: :''[[..:common#IncidenceMatrix |IncidenceMatrix]]<[[..:common#NonSymmetric |NonSymmetric]]>'' ---- {{anchor:input_rays_in_facets:}} ? **''INPUT_RAYS_IN_FACETS''** :: [[..:polytope:Cone#INPUT_RAYS |Input ray]]-[[..:polytope:Cone#FACETS |facet]] incidence matrix, with rows corresponding to [[..:polytope:Cone#FACETS |facet]] and columns to [[..:polytope:Cone#INPUT_RAYS |input rays]]. Input_rays and facets are numbered from 0 to ''[[..:polytope:Cone#N_INPUT_RAYS |N_INPUT_RAYS]]''-1 rsp. ''[[..:polytope:Cone#N_FACETS |N_FACETS]]''-1, according to their order in ''[[..:polytope:Cone#INPUT_RAYS |INPUT_RAYS]]'' rsp. ''[[..:polytope:Cone#FACETS |FACETS]]''. ? Type: :''[[..:common#IncidenceMatrix |IncidenceMatrix]]<[[..:common#NonSymmetric |NonSymmetric]]>'' ---- {{anchor:lineality_dim:}} ? **''LINEALITY_DIM''** :: Dimension of the ''[[..:polytope:Cone#LINEALITY_SPACE |LINEALITY_SPACE]]'' (>0 in the non-POINTED case) ? Type: :''[[..:common#Int |Int]]'' ---- {{anchor:lineality_space:}} ? **''LINEALITY_SPACE''** :: Basis of the linear subspace orthogonal to all ''[[..:polytope:Cone#INEQUALITIES |INEQUALITIES]]'' and ''[[..:polytope:Cone#EQUATIONS |EQUATIONS]]'' All vectors in this section must be non-zero. The property ''[[..:polytope:Cone#LINEALITY_SPACE |LINEALITY_SPACE]]'' appears only in conjunction with the property ''[[..:polytope:Cone#RAYS |RAYS]]'', or ''[[..:polytope:Polytope#VERTICES |VERTICES]]'', respectively. The specification of the property ''[[..:polytope:Cone#RAYS |RAYS]]'' or ''[[..:polytope:Polytope#VERTICES |VERTICES]]'' requires the specification of ''[[..:polytope:Cone#LINEALITY_SPACE |LINEALITY_SPACE]]'', and vice versa. ? Type: :''[[..:common#Matrix |Matrix]]'' ---- {{anchor:linear_span:}} ? **''LINEAR_SPAN''** :: Dual basis of the linear span of the cone. All vectors in this section must be non-zero. The property ''[[..:polytope:Cone#LINEAR_SPAN |LINEAR_SPAN]]'' appears only in conjunction with the property ''[[..:polytope:Cone#FACETS |FACETS]]''. The specification of the property ''[[..:polytope:Cone#FACETS |FACETS]]'' requires the specification of ''[[..:polytope:Cone#LINEAR_SPAN |LINEAR_SPAN]]'', or ''[[..:polytope:Polytope#AFFINE_HULL |AFFINE_HULL]]'', respectively, and vice versa. ? Type: :''[[..:common#Matrix |Matrix]]'' ---- {{anchor:n_equations:}} ? **''N_EQUATIONS''** :: The number of ''[[..:polytope:Cone#EQUATIONS |EQUATIONS]]''. ? Type: :''[[..:common#Int |Int]]'' ---- {{anchor:n_input_lineality:}} ? **''N_INPUT_LINEALITY''** :: The number of ''[[..:polytope:Cone#INPUT_LINEALITY |INPUT_LINEALITY]]''. ? Type: :''[[..:common#Int |Int]]'' ---- {{anchor:n_input_rays:}} ? **''N_INPUT_RAYS''** :: The number of ''[[..:polytope:Cone#INPUT_RAYS |INPUT_RAYS]]''. ? Type: :''[[..:common#Int |Int]]'' ---- {{anchor:one_ray:}} ? **''ONE_RAY''** :: A ray of a pointed cone. ? Type: :''[[..:common#Vector |Vector]]'' ---- {{anchor:pointed:}} ? **''POINTED''** :: True if the cone does not contain a non-trivial linear subspace. ? Type: :''[[..:common#Bool |Bool]]'' ---- {{anchor:positive:}} ? **''POSITIVE''** :: True if all ''[[..:polytope:Cone#RAYS |RAYS]]'' of the cone have non-negative coordinates, that is, if the pointed part of the cone lies entirely in the positive orthant. ? Type: :''[[..:common#Bool |Bool]]'' ---- {{anchor:rays:}} ? **''RAYS''** :: Rays of the cone. No redundancies are allowed. All vectors in this section must be non-zero. The property ''[[..:polytope:Cone#RAYS |RAYS]]'' appears only in conjunction with the property ''[[..:polytope:Cone#LINEALITY_SPACE |LINEALITY_SPACE]]''. The specification of the property ''[[..:polytope:Cone#RAYS |RAYS]]'' requires the specification of ''[[..:polytope:Cone#LINEALITY_SPACE |LINEALITY_SPACE]]'', and vice versa. ? Type: :''[[..:common#Matrix |Matrix]]'' ---- {{anchor:rays_in_inequalities:}} ? **''RAYS_IN_INEQUALITIES''** :: Ray-inequality incidence matrix, with rows corresponding to facets and columns to rays. Rays and inequalities are numbered from 0 to ''[[..:polytope:Cone#N_RAYS |N_RAYS]]''-1 rsp. number of ''[[..:polytope:Cone#INEQUALITIES |INEQUALITIES]]''-1, according to their order in ''[[..:polytope:Cone#RAYS |RAYS]]'' rsp. ''[[..:polytope:Cone#INEQUALITIES |INEQUALITIES]]''. ? Type: :''[[..:common#IncidenceMatrix |IncidenceMatrix]]<[[..:common#NonSymmetric |NonSymmetric]]>'' ---- {{anchor:ray_separators:}} ? **''RAY_SEPARATORS''** :: The i-th row is the normal vector of a hyperplane separating the i-th vertex from the others. This property is a by-product of redundant point elimination algorithm. ? Type: :''[[..:common#Matrix |Matrix]]'' ---- {{anchor:rel_int_point:}} ? **''REL_INT_POINT''** :: A point in the relative interior of the cone. ? Type: :''[[..:common#Vector |Vector]]'' ---- {{anchor:trivial:}} ? **''TRIVIAL''** :: True if the only valid point in the cone is the unique non-sensical point (0,...,0) ? Type: :''[[..:common#Bool |Bool]]'' ---- ==== Lattice points in cones ==== These properties capture information that depends on the lattice structure of the cone. polymake always works with the integer lattice. ---- {{anchor:degree_one_generators:}} ? **''DEGREE_ONE_GENERATORS''** :: Elements of the ''[[..:polytope:Cone#HILBERT_BASIS |HILBERT_BASIS]]'' for the cone of degree 1 with respect to the ''[[..:polytope:Cone#MONOID_GRADING |MONOID_GRADING]]''. ? Type: :''[[..:common#Matrix |Matrix]]<[[..:common#Integer |Integer]],[[..:common#NonSymmetric |NonSymmetric]]>'' ---- {{anchor:gorenstein_cone:}} ? **''GORENSTEIN_CONE''** :: A cone is [[..:polytope:Cone#GORENSTEIN_CONE |Gorenstein]] if it is [[..:polytope:Cone#Q_GORENSTEIN_CONE |Q-Gorenstein]] with index one ? Type: :''[[..:common#Bool |Bool]]'' ---- {{anchor:hilbert_basis_generators:}} ? **''HILBERT_BASIS_GENERATORS''** :: Generators for the ''[[..:polytope:Cone#HILBERT_BASIS |HILBERT_BASIS]]'' of a posiibly non-pointed cone the first matrix is a Hilbert basis of a pointed part of the cone the second matrix is a lattice basis of the lineality space note: the pointed part used in this property need not be the same as the one described by ''[[..:polytope:Cone#RAYS |RAYS]]'' or ''[[..:polytope:Cone#INPUT_RAYS |INPUT_RAYS]]'' it will be if the cone is pointed (the polytope is bounded) ? Type: :''[[..:common#Array |Array]]<[[..:common#Matrix |Matrix]]<[[..:common#Integer |Integer]],[[..:common#NonSymmetric |NonSymmetric]]%%>>%%'' ? depends on extension: : [[:external_software|4ti2 (unbounded) or libnormaliz (bounded)]] ---- {{anchor:hilbert_series:}} ? **''HILBERT_SERIES''** :: Hilbert series of the monoid, given by the intersection of the cone with the lattice Z^d with respect to the ''[[..:polytope:Cone#MONOID_GRADING |MONOID_GRADING]]'' ? Type: :''[[..:common#RationalFunction |RationalFunction]]<[[..:common#Rational |Rational]],[[..:common#Int |Int]]>'' ? depends on extension: : [[:external_software|libnormaliz]] ---- {{anchor:homogeneous:}} ? **''HOMOGENEOUS''** :: True if the primitive generators of the rays lie on an affine hyperplane in the span of the rays. ? Type: :''[[..:common#Bool |Bool]]'' ---- {{anchor:h_star_vector:}} ? **''H_STAR_VECTOR''** :: The coefficients of the Hilbert polynomial, the h^*-polynomial for lattice polytopes, with respect to the ''[[..:polytope:Cone#MONOID_GRADING |MONOID_GRADING]]'' starting at the constant coefficient. For lattice polytopes the length of this vector is ''[[..:polytope:Cone#CONE_DIM |CONE_DIM]]''. In general the length is one less than the degree of the denominator of the ''[[..:polytope:Cone#HILBERT_SERIES |HILBERT_SERIES]]''. ? Type: :''[[..:common#Vector |Vector]]<[[..:common#Integer |Integer]]>'' ? depends on extension: : [[:external_software|latte or libnormaliz]] ---- {{anchor:monoid_grading:}} ? **''MONOID_GRADING''** :: A grading for the monoid given by the intersection of the cone with the lattice Z^d, should be positive for all generators. If this property is not specified by the user there are two defaults: For rational polytopes the affine hyperplane defined by (1,0,\ldots,0) will be used. For ''[[..:polytope:Cone#HOMOGENEOUS |HOMOGENEOUS]]'' cones the affine hyperplane containing the primitive generators will be used. ? Type: :''[[..:common#Vector |Vector]]<[[..:common#Integer |Integer]]>'' ---- {{anchor:n_hilbert_basis:}} ? **''N_HILBERT_BASIS''** :: The number of elements of the ''[[..:polytope:Cone#HILBERT_BASIS |HILBERT_BASIS]]''. ? Type: :''[[..:common#Int |Int]]'' ---- {{anchor:q_gorenstein_cone:}} ? **''Q_GORENSTEIN_CONE''** :: A cone is __Q-Gorenstein__ if all primitive generators of the cone lie in an affine hyperplane spanned by a lattice functional in the dual cone (but not in the lineality space of the dual cone). ? Type: :''[[..:common#Bool |Bool]]'' ---- {{anchor:q_gorenstein_cone_index:}} ? **''Q_GORENSTEIN_CONE_INDEX''** :: If a cone is [[..:polytope:Cone#Q_GORENSTEIN_CONE |Q-Gorenstein]], then its index is the common lattice height of the primitive generators with respect to the origin. Otherwise Q_GORENSTEIN_CONE_INDEX is undefined. ? Type: :''[[..:common#Int |Int]]'' ---- {{anchor:smooth_cone:}} ? **''SMOOTH_CONE''** :: A cone is __smooth__ if the primitive generators are part of a lattice basis. ? Type: :''[[..:common#Bool |Bool]]'' ---- ==== Symmetry ==== These properties capture information of the object that is concerned with the action of permutation groups. ---- {{anchor:group:}} ? **''GROUP''** :: ? Type: :''[[..:group:Group |Group]]'' ? Methods of GROUP: : ? **''REPRESENTATIVE_INEQUALITIES()''** :: explicit representatives of equivalence classes of [[..:polytope:Cone#INEQUALITIES |INEQUALITIES]] under a group action ? Returns: :''[[..:common#Matrix |Matrix]]'' ? **''REPRESENTATIVE_INPUT_RAYS()''** :: explicit representatives of equivalence classes of ''[[..:polytope:Cone#INPUT_RAYS |INPUT_RAYS]]'' under a group action ? Returns: :''[[..:common#Matrix |Matrix]]'' ? Properties of GROUP: : ? **''BITSET_ACTION''** :: ? Type: :''[[..:group:ImplicitActionOnSets |ImplicitActionOnSets]]'' ? **''MATRIX_ACTION''** :: ? Type: :''[[..:group:MatrixActionOnVectors |MatrixActionOnVectors]]'' ? Properties of MATRIX_ACTION: : ? **''RAYS_ORBITS''** :: Alias for property ''[[..:group:MatrixActionOnVectors#VECTORS_ORBITS |VECTORS_ORBITS]]''. ? Type: :''[[..:common#Array |Array]]<[[..:common#Set |Set]]<[[..:common#Int |Int]]%%>>%%'' ? **''REPRESENTATIVE_BOUNDARY_RIDGE_SIMPLICES''** :: One representative for each orbit of boundary ridge simplices ? Type: :''[[..:common#Array |Array]]<[[..:common#Bitset |Bitset]]<[[..:common#Int |Int]]%%>>%%'' ? **''REPRESENTATIVE_FACETS''** :: ? Type: :''[[..:common#Matrix |Matrix]]'' ? **''REPRESENTATIVE_INTERIOR_RIDGE_SIMPLICES''** :: One representative for each orbit of interior ridge simplices ? Type: :''[[..:common#Array |Array]]<[[..:common#Bitset |Bitset]]<[[..:common#Int |Int]]%%>>%%'' ? **''REPRESENTATIVE_MAX_BOUNDARY_SIMPLICES''** :: One representative for each orbit of maximal-dimensional boundary simplices ? Type: :''[[..:common#Array |Array]]<[[..:common#Bitset |Bitset]]<[[..:common#Int |Int]]%%>>%%'' ? **''REPRESENTATIVE_MAX_INTERIOR_SIMPLICES''** :: One representative for each orbit of maximal-dimensional interior simplices ? Type: :''[[..:common#Array |Array]]<[[..:common#Bitset |Bitset]]<[[..:common#Int |Int]]%%>>%%'' ? **''REPRESENTATIVE_RAYS''** :: ? Type: :''[[..:common#Matrix |Matrix]]'' ---- ==== Triangulation and volume ==== These properties collect information about triangulations of the object and properties usually computed from such, as the volume. ---- {{anchor:triangulation:}} ? **''TRIANGULATION''** :: ? Type: :''[[..:topaz:GeometricSimplicialComplex |GeometricSimplicialComplex]]'' ? Properties of TRIANGULATION: : ? **''BOUNDARY''** :: ? derived from: : ''[[..:topaz:GeometricSimplicialComplex |GeometricSimplicialComplex]]'' ? Type: :''[[..:topaz:GeometricSimplicialComplex |GeometricSimplicialComplex]]'' ? Properties of BOUNDARY: : ? **''FACET_TRIANGULATIONS''** :: For each facet the set of simplex indices of ''[[..:polytope:Cone#BOUNDARY |BOUNDARY]]'' that triangulate it. ? Type: :''[[..:common#Array |Array]]<[[..:common#Set |Set]]<[[..:common#Int |Int]]%%>>%%'' ? **''REFINED_SPLITS''** :: The splits that are coarsenings of the current ''[[..:polytope:Cone#TRIANGULATION |TRIANGULATION]]''. If the triangulation is regular these form the unique split decomposition of the corresponding weight function. ? Type: :''[[..:common#Set |Set]]<[[..:common#Int |Int]]>'' ? **''WEIGHTS''** :: Weight vector to construct a regular ''[[..:polytope:Cone#TRIANGULATION |TRIANGULATION]]''. Must be generic. ? Type: :''[[..:common#Vector |Vector]]'' ---- {{anchor:triangulation_int:}} ? **''TRIANGULATION_INT''** :: Conceptually, similar to ''[[..:polytope:Cone#TRIANGULATION |TRIANGULATION]]'', but using ''[[..:polytope:Cone#INPUT_RAYS |INPUT_RAYS]]''. However, here we use a small object type. The main reason for the existence of this property (in this form) is the [[/polytope/preferences/Convex hull computation/beneath_beyond]] algorithm, which automatically produces this data as a by-product of the conversion from ''[[..:polytope:Cone#INPUT_RAYS |INPUT_RAYS]]'' to ''[[..:polytope:Cone#FACETS |FACETS]]''. And that data is too valuable to throw away. Use big objects of type ''[[..:polytope:VectorConfiguration |VectorConfiguration]]'' if you want to work with triangulations using redundant points. ? Type: :''[[..:common#Array |Array]]<[[..:common#Set |Set]]<[[..:common#Int |Int]]%%>>%%'' ---- ==== Visualization ==== These properties are for visualization. ---- {{anchor:coordinate_labels:}} ? **''COORDINATE_LABELS''** :: Unique names assigned to the coordinate directions, analogous to ''[[..:polytope:Cone#RAY_LABELS |RAY_LABELS]]''. For Polytopes this should contain "inhomog_var" for the homogenization coordinate and this will be added automatically if necessary and ''[[..:polytope:Cone#CONE_AMBIENT_DIM |CONE_AMBIENT_DIM]]'' can be computed. ? Type: :''[[..:common#Array |Array]]<[[..:common#String |String]]>'' ---- {{anchor:facet_labels:}} ? **''FACET_LABELS''** :: Unique names assigned to the ''[[..:polytope:Cone#FACETS |FACETS]]'', analogous to ''[[..:polytope:Cone#RAY_LABELS |RAY_LABELS]]''. ? Type: :''[[..:common#Array |Array]]<[[..:common#String |String]]>'' ---- {{anchor:ftr_cyclic_normal:}} ? **''FTR_CYCLIC_NORMAL''** :: Reordered transposed ''[[..:polytope:Cone#RAYS_IN_FACETS |RAYS_IN_FACETS]]''. Dual to ''[[..:polytope:Cone#RIF_CYCLIC_NORMAL |RIF_CYCLIC_NORMAL]]''. ? Type: :''[[..:common#Array |Array]]<[[..:common#Array |Array]]<[[..:common#Int |Int]]%%>>%%'' ---- {{anchor:inequality_labels:}} ? **''INEQUALITY_LABELS''** :: Unique names assigned to the ''[[..:polytope:Cone#INEQUALITIES |INEQUALITIES]]'', analogous to ''[[..:polytope:Cone#RAY_LABELS |RAY_LABELS]]''. ? Type: :''[[..:common#Array |Array]]<[[..:common#String |String]]>'' ---- {{anchor:input_ray_labels:}} ? **''INPUT_RAY_LABELS''** :: Unique names assigned to the ''[[..:polytope:Cone#INPUT_RAYS |INPUT_RAYS]]'', analogous to ''[[..:polytope:Cone#RAY_LABELS |RAY_LABELS]]''. ? Type: :''[[..:common#Array |Array]]<[[..:common#String |String]]>'' ---- {{anchor:neighbor_facets_cyclic_normal:}} ? **''NEIGHBOR_FACETS_CYCLIC_NORMAL''** :: Reordered ''[[..:polytope:Cone#DUAL_GRAPH |DUAL_GRAPH]]'' for 3d-cones. The neighbor facets are listed in the order corresponding to ''[[..:polytope:Cone#RIF_CYCLIC_NORMAL |RIF_CYCLIC_NORMAL]]'', so that the first two vertices in RIF_CYCLIC_NORMAL make up the ridge to the first neighbor facet and so on. ? Type: :''[[..:common#Array |Array]]<[[..:common#Array |Array]]<[[..:common#Int |Int]]%%>>%%'' ---- {{anchor:neighbor_rays_cyclic_normal:}} ? **''NEIGHBOR_RAYS_CYCLIC_NORMAL''** :: Reordered ''[[..:polytope:Cone#GRAPH |GRAPH]]''. Dual to ''[[..:polytope:Cone#NEIGHBOR_FACETS_CYCLIC_NORMAL |NEIGHBOR_FACETS_CYCLIC_NORMAL]]''. ? Type: :''[[..:common#Array |Array]]<[[..:common#Array |Array]]<[[..:common#Int |Int]]%%>>%%'' ---- {{anchor:ray_labels:}} ? **''RAY_LABELS''** :: Unique names assigned to the ''[[..:polytope:Cone#RAYS |RAYS]]''. If specified, they are shown by visualization tools instead of ray indices. For a cone built from scratch, you should create this property by yourself, either manually in a text editor, or with a client program. If you build a cone with a construction client taking some other input cone(s), you can create the labels automatically if you call the client with a //relabel// option. The exact format of the labels is dependent on the construction, and is described by the corresponding client. ? Type: :''[[..:common#Array |Array]]<[[..:common#String |String]]>'' ---- {{anchor:rif_cyclic_normal:}} ? **''RIF_CYCLIC_NORMAL''** :: Reordered ''[[..:polytope:Cone#RAYS_IN_FACETS |RAYS_IN_FACETS]]'' for 2d and 3d-cones. Rays are listed in the order of their appearance when traversing the facet border counterclockwise seen from outside of the origin. ? Type: :''[[..:common#Array |Array]]<[[..:common#Array |Array]]<[[..:common#Int |Int]]%%>>%%'' ---- ===== Methods ===== ==== Backward compatibility ==== These methods are provided for backward compatibility with older versions of polymake only. They should not be used in new code. ---- {{anchor:diameter:}} ? **''DIAMETER()''** :: The diameter of the ''[[..:polytope:Cone#GRAPH |GRAPH]]'' of the cone ? Returns: :''[[..:common#Int |Int]]'' ---- {{anchor:dual_diameter:}} ? **''DUAL_DIAMETER()''** :: The diameter of the ''[[..:polytope:Cone#DUAL_GRAPH |DUAL_GRAPH]]'' ? Returns: :''[[..:common#Int |Int]]'' ---- {{anchor:dual_triangle_free:}} ? **''DUAL_TRIANGLE_FREE()''** :: True if the ''[[..:polytope:Cone#DUAL_GRAPH |DUAL_GRAPH]]'' contains no triangle ? Returns: :''[[..:common#Bool |Bool]]'' ---- {{anchor:triangle_free:}} ? **''TRIANGLE_FREE()''** :: True if the ''[[..:polytope:Cone#GRAPH |GRAPH]]'' contains no triangle ? Returns: :''[[..:common#Bool |Bool]]'' ---- ==== Combinatorics ==== These methods capture combinatorial information of the object. Combinatorial properties only depend on combinatorial data of the object like, e.g., the face lattice. ---- {{anchor:connectivity:}} ? **''CONNECTIVITY()''** :: Connectivity of the ''[[..:polytope:Cone#GRAPH |GRAPH]]'' this is the minimum number of nodes that have to be removed from the ''[[..:polytope:Cone#GRAPH |GRAPH]]'' to make it disconnected ? Returns: :''[[..:common#Int |Int]]'' ---- {{anchor:dual_connectivity:}} ? **''DUAL_CONNECTIVITY()''** :: Connectivity of the ''[[..:polytope:Cone#DUAL_GRAPH |DUAL_GRAPH]]'' this is the minimum number of nodes that have to be removed from the ''[[..:polytope:Cone#DUAL_GRAPH |DUAL_GRAPH]]'' to make it disconnected ? Returns: :''[[..:common#Int |Int]]'' ---- {{anchor:dual_even:}} ? **''DUAL_EVEN()''** :: True if the ''[[..:polytope:Cone#DUAL_GRAPH |DUAL_GRAPH]]'' is bipartite ? Returns: :''[[..:common#Bool |Bool]]'' ---- {{anchor:even:}} ? **''EVEN()''** :: True if the ''[[..:polytope:Cone#GRAPH |GRAPH]]'' is bipartite ? Returns: :''[[..:common#Bool |Bool]]'' ---- {{anchor:facet_degrees:}} ? **''FACET_DEGREES()''** :: Facet degrees of the polytope. The __degree__ of a facet is the number of adjacent facets. ? Returns: :''[[..:common#Vector |Vector]]<[[..:common#Int |Int]]>'' ---- {{anchor:n_flags:}} ? **''N_FLAGS([[..:common#Int |Int]] type ...)''** :: Determine the number of flags of a given type. //type// must belong to {0,...,''[[..:polytope:Cone#COMBINATORIAL_DIM |COMBINATORIAL_DIM]]''-1}. Example: "N_FLAGS(0,3,4)" determines the entry f034 of the flag vector. ? Parameters: :: ''[[..:common#Int |Int]]'' ''type ...'': flag type ? Returns: :''[[..:common#Int |Int]]'' ---- {{anchor:vertex_degrees:}} ? **''VERTEX_DEGREES()''** :: Ray degrees of the cone ? Returns: :''[[..:common#Vector |Vector]]<[[..:common#Int |Int]]>'' ---- {{anchor:faces_of_dim:}} ? **''faces_of_dim([[..:polytope:Cone |Cone]] c)''** :: Output the faces of a given dimension ? Parameters: :: ''[[..:polytope:Cone |Cone]]'' ''c'': the input cone ? Returns: :''[[..:common#Array |Array]]<[[..:common#Set |Set]]<[[..:common#Int |Int]]%%>>%%'' ---- ==== Geometry ==== These methods capture geometric information of the object. Geometric properties depend on geometric information of the object, like, e.g., vertices or facets. ---- {{anchor:ambient_dim:}} ? **''AMBIENT_DIM()''** :: returns the dimension of the ambient space of the cone ? Returns: :''[[..:common#Int |Int]]'' ---- {{anchor:dim:}} ? **''DIM()''** :: returns the geometric dimension of the cone (including the lineality space) for the dimension of the pointed part ask for ''[[..:polytope:Cone#COMBINATORIAL_DIM |COMBINATORIAL_DIM]]'' ? Returns: :''[[..:common#Int |Int]]'' ---- {{anchor:contains:}} ? **''contains([[..:common#Vector |Vector]] v)''** :: checks whether a given point is contained in a cone ? Parameters: :: ''[[..:common#Vector |Vector]]'' ''v'': point ? Returns: :''[[..:common#Bool |Bool]]'' ---- {{anchor:contains_in_interior:}} ? **''contains_in_interior([[..:common#Vector |Vector]] v)''** :: checks whether a given point is contained in the strict interior of a cone ? Parameters: :: ''[[..:common#Vector |Vector]]'' ''v'': point ? Returns: :''[[..:common#Bool |Bool]]'' ---- ==== Lattice points in cones ==== These methods capture information that depends on the lattice structure of the cone. polymake always works with the integer lattice. ---- {{anchor:hilbert_basis:}} ? **''HILBERT_BASIS()''** :: for a cone this method returns a Hilbert basis of the cone for a polytope this method returns a Hilbert basis of the homogenization cone of the polytope note: if the cone is not pointed (the polytope is not bounded) then the returned basis is not unique and usually not minimal ? Returns: :''[[..:common#Matrix |Matrix]]<[[..:common#Integer |Integer]]>'' ---- ==== Topology ==== The following methods compute topological invariants. ---- {{anchor:dual_graph_signature:}} ? **''DUAL_GRAPH_SIGNATURE()''** :: Difference of the black and white nodes if the ''[[..:polytope:Cone#DUAL_GRAPH |DUAL_GRAPH]]'' is ''[[..:graph:Graph#BIPARTITE |BIPARTITE]]''. Otherwise -1. ? Returns: :''[[..:common#Int |Int]]'' ---- {{anchor:graph_signature:}} ? **''GRAPH_SIGNATURE()''** :: Difference of the black and white nodes if the ''[[..:polytope:Cone#GRAPH |GRAPH]]'' is ''[[..:graph:Graph#BIPARTITE |BIPARTITE]]''. Otherwise -1. ? Returns: :''[[..:common#Int |Int]]'' ---- ==== Visualization ==== These methods are for visualization. ---- {{anchor:visual:}} ? **''VISUAL()''** :: Visualizes the cone, intersected with the unit ball. ? Options: : option list ''[[..:common#Visual_Polygons_decorations |Visual::Polygons::decorations]]'' : option list ''[[..:common#geometric_options_linear |geometric_options_linear]]'' ? Returns: :''[[..:polytope:Visual_Cone |Visual::Cone]]'' ----