# Fan -- the class of all fans

## Description

A Fan represents a fan of rational convex polyhedral cones, i.e. a collection of cones, such that for every cone in the fan all faces are in the fan and for every two cones in the fan their intersection is a face of each (intersection condition). It need not be full dimensional or pure, and the cones need not be pointed. It is saved as a hash table which contains a list of the generating cones of the fan starting with those of maximal dimension. So for every cone in this list all faces are considered to be in the fan. The output of a Fan looks like this:
 i1 : normalFan crossPolytope 3 o1 = {ambient dimension => 3 } number of generating cones => 6 number of rays => 8 top dimension of the cones => 3 o1 : Fan

This table displays a short summary of the properties of the Fan. However, one can not access the above information directly, because this is just a virtual hash table generated for the output. The data defining a Fan is extracted by the functions included in this package. A Fan can be constructed by collecting Cones that satisfy the intersection condition. Every cone that is added to a Fan is always considered as the collection of the Cone and all of its faces.

 i2 : C1 = posHull matrix {{2,2},{1,-1}}; i3 : C2 = posHull matrix {{2,-2},{1,1}}; i4 : C3 = posHull matrix {{-2,-2},{1,-1}}; i5 : C4 = posHull matrix {{-2,2},{-1,-1}}; i6 : F = fan {C1,C2,C3,C4} o6 = {ambient dimension => 2 } number of generating cones => 4 number of rays => 4 top dimension of the cones => 2 o6 : Fan

This fan is for example the normal fan of a ''flattened'' crosspolytope in 2-space.

## Functions and methods returning an object of class Fan :

• ccRefinement -- computes the coarsest common refinement of a set of rays
• faceFan -- computes the fan generated by the cones over the faces
• fan -- generates a Fan
• hirzebruch -- computes the fan of the r-th Hirzebruch surface
• imageFan -- computes the fan of the image
• normalFan -- computes the normalFan of a polyhedron
• skeleton -- computes the k-skeleton of a Fan or PolyhedralComplex
• smoothSubfan -- computes the subfan of all smooth cones
• "stellarSubdivision(Fan,Matrix)" -- see stellarSubdivision -- computes the stellar subdivision of the fan by a ray

## Methods that use an object of class Fan :

• "commonFace(Cone,Fan)" -- see commonFace -- checks if the intersection is a face of both Cones or Polyhedra, or of cones with fans
• "commonFace(Fan,Cone)" -- see commonFace -- checks if the intersection is a face of both Cones or Polyhedra, or of cones with fans
• "commonFace(Fan,Fan)" -- see commonFace -- checks if the intersection is a face of both Cones or Polyhedra, or of cones with fans
• "cones(ZZ,Fan)" -- see cones -- computes all cones of a fan of a certain dimension
• "contains(Fan,Cone)" -- see contains -- checks if the first argument contains the second argument
• dim(Fan) -- computes the dimension of a fan
• directProduct(Fan,Fan) -- computes the direct product of two fans
• Fan * Fan -- computes the direct product
• Fan == Fan -- equality
• "incompCones(Cone,Fan)" -- see incompCones -- returns the pairs of incompatible cones
• "incompCones(Fan,Cone)" -- see incompCones -- returns the pairs of incompatible cones
• "incompCones(Fan,Fan)" -- see incompCones -- returns the pairs of incompatible cones
• "isComplete(Fan)" -- see isComplete -- checks completeness of a Fan or PolyhedralComplex
• "isPointed(Fan)" -- see isPointed -- checks if a Cone or Fan is pointed
• "isPolytopal(Fan)" -- see isPolytopal -- checks if a Fan is polytopal
• "isPure(Fan)" -- see isPure -- checks if a Fan or PolyhedralComplex is of pure dimension
• "isSmooth(Fan)" -- see isSmooth -- checks if a Cone or Fan is smooth
• "linSpace(Fan)" -- see linSpace -- computes a basis of the lineality space
• "maxCones(Fan)" -- see maxCones -- displays the generating Cones of a Fan
• net(Fan) -- displays characteristics of a fan
• "polytope(Fan)" -- see polytope -- returns a polytope of which the fan is the normal fan if it is polytopal
• "rays(Fan)" -- see rays -- displays all rays of a Cone, a Fan, or a Polyhedron
• "skeleton(ZZ,Fan)" -- see skeleton -- computes the k-skeleton of a Fan or PolyhedralComplex
• "smoothSubfan(Fan)" -- see smoothSubfan -- computes the subfan of all smooth cones

## For the programmer

The object Fan is a type, with ancestor classes PolyhedralObject < HashTable < Thing.