<Chapter><Heading> Orbit polytopes and fundamental domains</Heading>

<Table Align="|l|" >
<Row>
<Item>
<Index> Fundamental domains (HAPcryst)</Index>
<C> FundamentalDomainAffineCrystGroupOnRight(v,G)</C>
<P/>
Inputs a crystallographic
group G (represented using AffineCrystGroupOnRight as in 
the GAP package Cryst). It also inputs a choice of vector v in the euclidean space <M>R^n</M> on which <M>G</M> acts. It returns the 
Dirichlet-Voronoi fundamental cell for the
action of <M>G</M>
on euclidean space corresponding to the vector <M>v</M>. The fundamental 
cell is a fundamental domain if <M>G</M> is Bieberbach. The fundamental 
cell/domain is returned as a <Quoted>Polymake object</Quoted>. Currently the function only applies to certain crystallographic groups. See the manuals to HAPcryst and HAPpolymake for full details.
<P/>
This is a HAPcryst function and is thus only available if HAPcryst is loaded.
<P/>
The function requires the use of Polymake software.
</Item>
</Row>

<Row>
<Item>
<Index>OrbitPolytope</Index>
<C>
OrbitPolytope(G,v,L)
</C>
<P/>

Inputs a permutation group or matrix group <M>G</M> of degree <M>n</M>
and a rational vector <M>v</M> of length <M>n</M>. 
In both cases there is a natural action of <M>G</M> on <M>v</M>. 
Let <M>P(G,v)</M> be the convex polytope arising as the convex hull 
of the Euclidean points in the orbit of <M>v</M> under the action of 
<M>G</M>. The function also inputs a sublist <M>L</M> of the 
following list of strings:
<P/>
["dimension","vertex_degree", "visual_graph", "schlegel","visual"]
<P/>
Depending on the sublist, the function:
<List>
<Item> prints the dimension of the orbit polytope <M>P(G,v)</M>;</Item>
<Item> prints the degree of a vertex in the graph of <M>P(G,v)</M>;</Item>
<Item> visualizes the graph of <M>P(G,v)</M>;</Item>
<Item> visualizes the Schlegel diagram of <M>P(G,v)</M>;</Item>
<Item> visualizes <M>P(G,v)</M> if the polytope is of dimension 2 or 3.</Item>
</List>
The function uses Polymake software.

</Item>
</Row>


<Row>
<Item>
<Index> PolytopalComplex</Index>
<C>
PolytopalComplex(G,v)
</C>
<Br/>
<C>
PolytopalComplex(G,v,n)
</C>
<P/>

Inputs a permutation group or matrix group <M>G</M>
of degree <M>n</M> and a rational vector <M>v</M> of length <M>n</M>. 
In both cases there is a natural action of <M>G</M> on <M>v</M>. 
Let <M>P(G,v)</M> be the convex polytope arising as the convex 
hull of the Euclidean points in the orbit of <M>v</M> under the action of 
<M>G</M>. The cellular chain complex <M>C_*=C_*(P(G,v))</M>
is an exact sequence of (not necessarily free) <M>ZG</M>-modules. 
The function returns a component object <M>R</M> with components:
<List>
<Item>
<M>R!.dimension(k)</M> is a function which returns the number of <M>G</M>-orbits
of the <M>k</M>-dimensional faces in  <M>P(G,v)</M>.  If each <M>k</M>-face 
has trivial stabilizer subgroup in <M>G</M> then <M>C_k</M> 
is a free <M>ZG</M>-module of rank <M>R.dimension(k)</M>.
</Item>
<Item>
<M>R!.stabilizer(k,n)</M> is a function which returns the 
stabilizer subgroup for a face in the <M>n</M>-th orbit of <M>k</M>-faces.
</Item>
<Item>
If all faces of dimension &tlt;<M>k+1</M> have trivial stabilizer 
group then the first <M>k</M> terms of <M>C_*</M> constitute part of a 
free  <M>ZG</M>-resolution. The boundary map is described by the 
function <M>boundary(k,n)</M> . (If some faces have non-trivial 
stabilizer group then <M>C_*</M> is not free and no attempt is 
made to determine signs for the boundary map.)
</Item>
<Item>
<M>R!.elements</M>, <M>R!.group</M>, <M>R!.properties</M>
are as in a <M>ZG</M>-resolution.
</Item>
</List>
If an optional third input variable <M>n</M> 
is used, then only the first <M>n</M> terms of the resolution 
<M>C_*</M> will be computed.
<P/>
		The function uses Polymake software. 
</Item>
</Row>

		    
<Row>
<Item>
<Index> PolytopalGenerators</Index>
<C>
PolytopalGenerators(G,v)
</C>
<P/>


Inputs a permutation group or matrix group <M>G</M> of degree <M>n</M> and 
a rational vector <M>v</M> of length <M>n</M>. In both cases there 
is a natural action of <M>G</M> on <M>v</M>, and the vector <M>v</M>
must be chosen so that it has trivial stabilizer subgroup in <M>G</M>. 
Let <M>P(G,v)</M> be the convex polytope arising as the convex 
hull of the Euclidean points in the orbit of <M>v</M> 
under the action of <M>G</M>. The function returns a record <M>P</M>
with components:
<List>
<Item> <M>P.generators</M> is a list of all those elements <M>g</M> in <M>G</M>
such that <M>g\cdot v</M> has an edge in common with <M>v</M>. 
The list is a generating set for <M>G</M>.</Item>
<Item>
<M>P.vector</M> is the vector <M>v</M>.</Item>
<Item><M>P.hasseDiagram</M> is the Hasse diagram of the cone at <M>v</M>.
</Item>
</List>
	    The function uses Polymake software.
	    The function is joint work with Seamus Kelly.
</Item>
</Row>



<Row>
<Item>
<Index>VectorStabilizer</Index>
<C> 
VectorStabilizer(G,v)
</C>
<P/>

Inputs a permutation group or matrix group <M>G</M> of degree <M>n</M> 
and a rational vector of degree <M>n</M>. In both cases there is a 
natural action of <M>G</M> on <M>v</M> and the function 
returns the group of elements in <M>G</M> that fix <M>v</M>. 
</Item>
</Row>

</Table>
</Chapter>


