====== 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. Default is ''[[..:common#Rational |Rational]]''. ? 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]]'' ---- ==== 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:SchlegelDiagram#VERTICES |VERTICES]]'', respectively. The specification of the property ''[[..:polytope:Cone#RAYS |RAYS]]'' or ''[[..:polytope:SchlegelDiagram#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:cone_toric_ideal:}} ? **''CONE_TORIC_IDEAL''** :: The ideal whose vanishing set is the affine toric variety given by the cone. In other words the rows of its ''[[..:ideal:Ideal#BINOMIAL_GENERATORS |BINOMIAL_GENERATORS]]'' give the relations between the Hilbert basis elements. ? Type: :''[[..:ideal:Ideal |Ideal]]'' ? depends on extension: : [[:external_software|4ti2]] ---- {{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_polynomial:}} ? **''H_STAR_POLYNOMIAL''** :: The Hilbert polynomial, the h^*-polynomial for lattice polytopes. The degree is at most on less then the h^*-vector. ? Type: :''[[..:common#UniPolynomial |UniPolynomial]]<[[..:common#Rational |Rational]],[[..:common#Int |Int]]>'' ? depends on extension: : [[:external_software|latte or libnormaliz]] ---- {{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:labeled_facets:}} ? **''LABELED_FACETS''** :: Print ''[[..:polytope:Cone#RAYS_IN_FACETS |RAYS_IN_FACETS]]'' using ''[[..: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([[..:polytope:Cone |Cone]] C_in)''** :: checks whether a given cone is containeed in another ? Parameters: :: ''[[..:polytope:Cone |Cone]]'' ''C_in'' ? Returns: :''[[..:common#Bool |Bool]]'' ? **''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]]'' ---- {{anchor:visual_dual_face_lattice:}} ? **''VISUAL_DUAL_FACE_LATTICE()''** :: Visualize the dual [[..:polytope:Cone#HASSE_DIAGRAM |face lattice]] of a cone as a multi-layer graph. ? Options: : :: ''[[..:common#Int |Int]]'' ''seed'': random seed value for the node placement : option list ''[[..:graph#Visual_Lattice_decorations |Visual::Lattice::decorations]]'' ? Returns: :''[[..:graph:Visual_Lattice |Visual::Lattice]]'' ---- {{anchor:visual_face_lattice:}} ? **''VISUAL_FACE_LATTICE()''** :: Visualize the ''[[..:polytope:Cone#HASSE_DIAGRAM |HASSE_DIAGRAM]]'' of a cone as a multi-layer graph. ? Options: : :: ''[[..:common#Int |Int]]'' ''seed'': random seed value for the node placement : option list ''[[..:graph#Visual_Lattice_decorations |Visual::Lattice::decorations]]'' ? Returns: :''[[..:graph:Visual_Lattice |Visual::Lattice]]'' ----