00001 #ifndef _Zpolyhedron_h_
00002 #define _Zpolyhedron_h_
00003
00004 #if defined(__cplusplus)
00005 extern "C" {
00006 #endif
00007
00008 extern void CanonicalForm(ZPolyhedron *Zpol, ZPolyhedron **Result,
00009 Matrix **Basis);
00010 extern ZPolyhedron *EmptyZPolyhedron (int dimension);
00011 extern ZPolyhedron *IntegraliseLattice (ZPolyhedron *A);
00012 extern Bool isEmptyZPolyhedron (ZPolyhedron *Zpol);
00013 extern ZPolyhedron *ZDomainDifference (ZPolyhedron *A, ZPolyhedron *B);
00014 extern ZPolyhedron *ZDomainImage ( ZPolyhedron *A, Matrix *Func );
00015 extern Bool ZDomainIncludes ( ZPolyhedron *A, ZPolyhedron *B );
00016 extern ZPolyhedron *ZDomainIntersection ( ZPolyhedron *A, ZPolyhedron *B );
00017 extern ZPolyhedron *ZDomainPreimage ( ZPolyhedron *A, Matrix *Func );
00018 extern void ZDomainPrint(FILE *fp, const char *format, ZPolyhedron *A);
00019 extern ZPolyhedron *ZDomainSimplify ( ZPolyhedron *ZDom );
00020 extern ZPolyhedron *ZDomainUnion ( ZPolyhedron *A, ZPolyhedron *B );
00021 extern ZPolyhedron *ZDomain_Copy ( ZPolyhedron *Head );
00022 extern void ZDomain_Free ( ZPolyhedron *Head );
00023 extern Bool ZPolyhedronIncludes ( ZPolyhedron *A, ZPolyhedron *B );
00024 extern ZPolyhedron *ZPolyhedron_Alloc ( Lattice *Lat, Polyhedron *Poly );
00025 extern ZPolyhedron *SplitZpolyhedron(ZPolyhedron *ZPol, Lattice *B);
00026
00027 #if defined(__cplusplus)
00028 }
00029 #endif
00030
00031 #endif