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, ideal, topaz

Objects

User Functions

  •  

    These clients provide consistency checks, e.g. whether a given list of rays and cones defines a polyhedral fan.

  •  

    Special purpose functions.

    •  
      building_set (the, n) → PowerSet

      Produce a building set from a family of sets.

      Parameters
      Set<Set>the
      generators of the building set
      Intn
      the size of the ground set
      Returns
      PowerSet
    •  
      cone_of_tubing (G, T) → Cone

      Output the cone of a tubing

      Parameters
      GraphG
      the input graph
      GraphT
      the input tubing
      Returns
      Cone
    •  
      flip_tube (G, T, t) → Graph

      Flip a tubing in a tube

      Parameters
      GraphG
      the input graph
      GraphT
      the input tubing
      Intt
      the tube to flip, identified by its root
      Returns
      Graph
    •  
      is_building_set (the, n) → Bool

      Check if a family of sets is a building set.

      Parameters
      PowerSetthe
      would-be building set
      Intn
      the size of the ground set
      Returns
      Bool
    •  
      is_B_nested (the, the) → Bool

      Check if a family of sets is nested wrt a given building set.

      Parameters
      Set<Set>the
      would-be nested sets
      PowerSetthe
      building set
      Returns
      Bool
    •  
      tubes_of_graph (G) → Set<Set>

      Output the set of all tubes of a graph

      Parameters
      GraphG
      the input graph
      Returns
      Set<Set>
    •  
      tubes_of_tubing (G, T) → Set<Set>

      Output the tubes of a tubing

      Parameters
      GraphG
      the input graph
      GraphT
      the input tubing
      Returns
      Set<Set>
    •  
      tubing_of_graph (G) → Set<Set>

      Output one tubing of a graph

      Parameters
      GraphG
      the input graph
      Returns
      Set<Set>
  •  

    These clients provide standard constructions for PolyhedralFan objects, e.g. from polytopes (face_fan or normal_fan) or from other fans (via projection, refinement or product).

  •  

    These clients provide constructions for PolyhedralComplex objects.

    •  
      mixed_subdivision (P_0, P_1, VIF, t_0, t_1) → PolyhedralComplex

      Create a weighted mixed subdivision of the Minkowski sum of two polytopes, using the Cayley trick. The polytopes must have the same dimension, at least one of them must be pointed. The vertices of the first polytope P_0 are weighted with t_0, and the vertices of the second polytope P_1 with t_1.

      Default values are t_0=t_1=1.

      The option relabel creates an additional section VERTEX_LABELS.

      Parameters
      PolytopeP_0
      the first polytope
      PolytopeP_1
      the second polytope
      Array<Set>VIF
      the indices of the vertices of the mixed cells
      Scalart_0
      the weight for the vertices of P_0; default 1
      Scalart_1
      the weight for the vertices of P_1; default 1
      Options
      Boolrelabel
      Returns
      PolyhedralComplex
    •  
      mixed_subdivision (m, C, a) → PolyhedralComplex

      Create a weighted mixed subdivision of a Cayley embedding of a sequence of polytopes. Each vertex v of the i-th polytope is weighted with t_i, the i-th entry of the optional array t.

      The option relabel creates an additional section VERTEX_LABELS.

      Parameters
      Intm
      the number of polytopes giving rise to the Cayley embedding
      PolytopeC
      the Cayley embedding of the input polytopes
      Array<Set>a
      triangulation of C
      Options
      Vector<Scalar>t
      scaling for the Cayley embedding; defaults to the all-1 vector
      Boolrelabel
      Returns
      PolyhedralComplex
    •  
      mixed_subdivision (A) → PolyhedralComplex

      Create a weighted mixed subdivision of a sequence (P1,...,Pm) of polytopes, using the Cayley trick. All polytopes must have the same dimension, at least one of them must be pointed. Each vertex v of the i-th polytope is weighted with t_i, the i-th entry of the optional array t.

      The option relabel creates an additional section VERTEX_LABELS.

      Parameters
      Array<Polytope>A
      the input polytopes
      Options
      Vector<Scalar>t
      scaling for the Cayley embedding; defaults to the all-1 vector
      Boolrelabel
      Returns
      PolyhedralComplex
    •  
      tiling_quotient <Coord> (P, Q) → PolyhedralComplex

      Calculates the quotient of P by Q+L, where Q+L is a lattice tiling. The result is a polytopal complex inside Q.

      Type Parameters
      Coord
      Parameters
      PolytopeP
      a polytope
      PolytopeQ
      a polytope that tiles space
      Returns
      PolyhedralComplex

Common Option Lists

  •  

    These options are for visualization.

    •  
      flap_options

      Parameters to control the shapes of the flaps. The precise values are more or less randomly chosen. Should work fine for most polytopes whose edge lengths do not vary too much.

      Options
      FloatWidthMinimum
      absolute minimum width
      FloatWidthRelativeMinimum
      minimum relative width (w.r.t. length of first edge)
      FloatWidth
      absolute width, overrides the previous
      FloatFlapCutOff
      proportion by which outer edge of flap is shorter than the actual edge (on both sides)