- Usage:
`F = fan C``F = fan L`

- Inputs:
`C`, a convex rational cone`L`, a list, with elements of class Cone or Fan

- Outputs:
`F`, an object of class Fan

If `fan` is applied to a Cone it generates the Fan given by the the Cone and all of its faces. If applied to a List the list must only contain Cones and Fans in the same ambient space. Then it adds the Cones in the List and the generating Cones of the Fans in the List one by one to the Fan, checking each time if the new Cone is compatible with the cones that have already been added, i.e. that the intersection with each of them is a face of both Cones (intersection condition).

If one of the cones is in the wrong ambient space, there will be an error and no fan will be returned. If the intersection condition fails, there will also be an error. The pairs of incompatible cones can be accessed with the function incompCones.

i1 : C = coneFromVData matrix {{1,-1},{0,-1}} o1 = C o1 : Cone |

i2 : F = fan C o2 = F o2 : Fan |

i3 : C1 = coneFromVData matrix {{1,0},{0,1}}; |

i4 : C2 = coneFromVData matrix {{0,-1},{1,-1}}; |

i5 : F = fan {C,C1,C2} o5 = F o5 : Fan |

- fan(Cone)
- fan(List)
- fan(Matrix,List), see fan(Matrix,Matrix,List) -- Constructing a fan.
- fan(Matrix,Matrix,List) -- Constructing a fan.
- fan(Matrix,Matrix,Sequence), see fan(Matrix,Matrix,List) -- Constructing a fan.
- fan(Matrix,Sequence), see fan(Matrix,Matrix,List) -- Constructing a fan.
- fan(PolyhedralComplex) -- Take the fan over a polyhedral complex