# application: fan

This application deals with polyhedral fans. You can define a fan, e.g. via its RAYS and MAXIMAL_CONES and compute several properties like HASSE_DIAGRAM and F_VECTOR.

**imports from:**common, graph, polytope

**uses:**group, topaz

**Objects**

A polyhedral complex

**derived from:**PolyhedralFan#### Properties of PolyhedralComplex

**MAXIMAL_POLYTOPES_COMBINATORIAL_DIMS**: common::Array<Int>Alias for property MAXIMAL_CONES_COMBINATORIAL_DIMS.

**MAXIMAL_POLYTOPES_FACETS**: common::SparseMatrix<Int, NonSymmetric>Alias for property MAXIMAL_CONES_FACETS.

**CONVEX**: common::BoolTrue if POINTS are in convex position. In this case POINTS and RAYS, and MAXIMAL_CELLS and MAXIMAL_POLYTOPES are equal.

**MAXIMAL_CELLS**: common::IncidenceMatrix<NonSymmetric>Maximal cells of the polyhedral complex. Indices refer to POINTS. Points do not have to be vertices of the cells.

#### User Methods of PolyhedralComplex

**AMBIENT_DIM**()UNDOCUMENTED

**DIM**()UNDOCUMENTED

**polytope**()UNDOCUMENTED

A polyhedral fan. The current restriction is that each cone in the fan has to be pointed. This will be relaxed later. If a fan is specified via INPUT_RAYS and INPUT_CONES each input cone must list all the input rays incident.

Once non-trivial linealities are allowed the following will apply: The RAYS always lie in a linear subspace which is complementary to the LINEALITY_SPACE.

#### Properties of PolyhedralFan

**CONES**: common::Array<IncidenceMatrix<NonSymmetric>>List of all cones of the fan of each dimension. Indices refer to RAYS.

**FACET_NORMALS**: common::Matrix<Scalar, NonSymmetric>The possible facet normals of all maximal cones.

**INPUT_CONES**: common::Array<Set<Int>>Maybe redundant list of not necessarily maximal cones. Indices refer to INPUT_RAYS. each cone must list all rays of INPUT_RAYS it contains. the cones are allowed to contain lineality

**INPUT_LINEALITY**: common::Matrix<Scalar, NonSymmetric>Vectors whose linear span defines a subset of the lineality space of the fan; redundancies are allowed.

Input section only. Ask for LINEALITY_SPACE if you want to know the lineality space. FIXME currently polymake can only handle POINTED cones

**INPUT_RAYS**: common::Matrix<Scalar, NonSymmetric>Rays from which the cones are formed. May be redundant.

**LINEALITY_DIM**: common::IntDimension of LINEALITY_SPACE. FIXME currently polymake can only handle POINTED cones

**LINEALITY_SPACE**: common::Matrix<Scalar, NonSymmetric>Since we do not require our cones to be pointed: a basis of the lineality space of the fan. FIXME currently polymake can only handle POINTED cones

**LINEAR_SPAN_NORMALS**: common::Matrix<Scalar, NonSymmetric>The possible linear span normals of all maximal cones.

**MAXIMAL_CONES**: common::IncidenceMatrix<NonSymmetric>Non redundant list of maximal cones. Indices refer to RAYS.

**MAXIMAL_CONES_FACETS**: common::SparseMatrix<Int, NonSymmetric>Tells for each maximal cone what are its facets. A negative number means that the corresponding row of FACET_NORMALS has to be negated.

**MAXIMAL_CONES_LINEAR_SPAN_NORMALS**: common::IncidenceMatrix<NonSymmetric>Tells for each maximal cone what is its linear span. Indices refer to LINEAR_SPAN_NORMALS. Rows correspond to MAXIMAL_CONES_FACETS

**ORTH_LINEALITY_SPACE**: common::Matrix<Scalar, NonSymmetric>A basis of the orthogonal complement to LINEALITY_SPACE. All RAYS are contained in this subspace

**RAYS**: common::Matrix<Scalar, NonSymmetric>Rays from which the cones are formed. Non-redundant. If the fan is not pointed then the rays lie in the subspace of dimension COMBINATORIAL_DIM defined by ORTH_LINEALITY_SPACE FIXME currently only pointed fans are allowed, this restriction is not enforced

**RAY_LABELS**: common::Array<String>Unique names assigned to the RAYS. If specified, they are shown by visualization tools instead of vertex indices.

For a polyhedral fan built from scratch, you should create this property by yourself, either manually in a text editor, or with a client program.

**COMPLETE**: common::BoolThe polyhedral fan is complete if its suport is the whole space.

Due to undecidability issues this is checked heuristically only. See the remarks on SPHERE for details.

**DUAL_GRAPH**: graph::Graph<Undirected>The graph whose nodes are the maximal cones which are connected if they share a common facet.

**F2_VECTOR**: common::Matrix<Integer, NonSymmetric>f_ik is the number of incident pairs of i-dimensional cones and k-dimensional cones; the main diagonal contains the F_VECTOR.

**GRAPH**: graph::Graph<Undirected>The graph of the cone intersected with a sphere, that is, the vertices are the rays which are connected if they are contained in a common two-dimensional cone.

**HASSE_DIAGRAM**: graph::FaceLatticeThe poset of subcones of the polyhedral fan organized as a directed graph. Each node corresponds to some proper subcone of the fan. The nodes corresponding to the rays and maximal cones appear in the same order as the elements of RAYS and MAXIMAL_CONES properties.

One special node represents the origin.

**MAXIMAL_CONES_COMBINATORIAL_DIMS**: common::Array<Int>The combinatorial dimensions of the maximal cones.

**MAXIMAL_CONES_INCIDENCES**: common::Array<IncidenceMatrix<NonSymmetric>>Array of incidence matrices of all maximal cones

**HOMOLOGY**: topaz::Array<HomologyGroup>The homology of the intersection of the fan with the unit sphere.

**INTERSECTION_COMPLEX**: topaz::SimplicialComplexIf the fan is SIMPLICIAL the simplicial complex obtained by intersection the fan with the unit sphere. If the fan is not SIMPLICIAL the crosscut complex of the insersection.

#### User Methods of PolyhedralFan

**cone**()Gives the ith maximal cone.

**AMBIENT_DIM**()returns the dimension of the ambient space

**DIM**()returns the dimension of the linear space spanned by the fan

**MAXIMAL_CONES_DIMS**()The dimensions of the maximal cones.

**VISUAL**()Visualizes the fan, intersected with the unit ball. return: Visual::PolyhedralFan

**FIXME:**use combinatorics via MAXIMAL_CONES_FACETS##### Options

option list: Visual::Polygons::decorations

#### Permutations of PolyhedralFan

**derived from:**PolyhedralFan#### Properties of PolyhedralFan<Rational>

**GORENSTEIN**: common::BoolA fan is GORENSTEIN if it is Q_GORENSTEIN with Q_GORENSTEIN_INDEX equal to one

**Q_GORENSTEIN**: common::BoolA fan is Q_GORENSTEIN if each maximal cone is a polytope::Cone<Rational>::Q_GORENSTEIN_CONE

**Q_GORENSTEIN_INDEX**: common::IntIf a fan is Q_GORENSTEIN, then its Q_GORENSTEIN_INDEX is the least common multiple of the Q-Gorenstein indices of its maximal cones. Otherwise Q_GORENSTEIN_INDEX is undefined.

A PolyhedralFan with a symmetry group acting on the coordinates.

**derived from:**PolyhedralFan#### Properties of SymmetricFan

**CONES_REPS**: common::Array<Array<Set<Int>>>List of all cones of all dimensions of the fan, one from each orbit. Indices refer to RAYS.

**INPUT_CONES_REPS**: common::Array<Set<Int>>Maybe redundant list of not necessarily maximal cones, one from each orbit. Indices refer to INPUT_RAYS.

**MAXIMAL_CONES_IN_ORBITS**: common::Array<Set<Int>>Tells which maximal cone is in the orbit of which representative, indices refers to rows of MAXIMAL_CONES.

**MAXIMAL_CONES_REPS**: common::Array<Set<Int>>Non redundant list of maximal cones, one from each orbit. Indices refer to RAYS.

**MAXIMAL_CONES_REPS_FACETS**: common::SparseMatrix<Int, NonSymmetric>Tells for each maximal cone representative what are its facets. A negative number means that the corresponding row of REPS_FACET_NORMALS has to be negated.

**MAXIMAL_CONES_REPS_LINEAR_SPAN_NORMALS**: common::IncidenceMatrix<NonSymmetric>Tells for each maximal cone representative what is its linear span. Indices refer to REPS_LINEAR_SPAN_NORMALS. Rows correspond to MAXIMAL_CONES_REPS_FACETS

**RAYS_IMAGES**: common::Array<Array<Int>>Each row contains the image of all RAYS under one element of the symmetry group.

**RAYS_IN_ORBITS**: common::Array<Set<Int>>Tells which ray is in the orbit of which representative, indices refers to rows of RAYS.

**REPS_FACET_NORMALS**: common::Matrix<Scalar, NonSymmetric>The possible facet normals of all maximal cone representatives.

**REPS_LINEAR_SPAN_NORMALS**: common::Matrix<Scalar, NonSymmetric>The possible linear span normals of all maximal cone representatives.

**SYMMETRY_GENERATORS**: common::Array<Array<Int>>Each element of the array is a generator of the subgroup of the symmetric group acting on the coordintates. Each generator is represented by an Array whose ith entry is the image of ith coordinate.

**SYMMETRY_GROUP**: common::Array<Array<Int>>Each element of the array is an element of the symmetry group.

#### User Methods of SymmetricFan

**cone_representative**()Gives the ith maximal cone representative.

**Category:**Tropical varietiesthe tropical variety defined by a fan

**derived from:**PolyhedralFan#### Properties of TropicalVariety

## User Functions

**common_refinement**(f1, f2) → PolyhedralFanComputes the common refinement of two complete fans.

**check_fan**(rays, cones) → PolyhedralFanChecks whether a given set of

*rays*together with a list*cones*defines a polyhedral fan. If this is the case, the ouput is the PolyhedralFan defined by*rays*as INPUT_RAYS,*cones*as INPUT_CONES,*lineality_space*as LINEALITY_SPACE if this option is given.##### Parameters

Matrix rays Array< Set<int> > cones ##### Options

Matrix lineality_space Common lineality space for the cones.Bool verbose prints information about the check.##### Returns

PolyhedralFan **check_fan_objects**(C ...) → PolyhedralFanChecks whether the polytope::Cone objects form a polyhedral fan. If this is the case, returns that PolyhedralFan.

**normal_fan**(p)

**secondary_fan**(M)Call wiki:external_software#gfan to compute the secondary cone of a vector configuration.

##### Parameters

Matrix M whose rows are the vectors in the configuration