The following functions represent the core of operations in Polylib. They are used in the conversion process and work with localy defined types like the saturation matrix. Their declaration is `static` so they are accessible to all the functions declared in the file Polyhedron.c but not in any other functions.

*struct*SatMatrix- :
the saturation matrix is defined to be an integer (int type) matrix.
*static SatMatrix **BuildSat: build a saturation matrix from constraint matrix 'Mat' and a ray matrix 'Ray'.*(Matrix *Mat, Matrix *Ray, unsigned NbConstraints, unsigned NbMaxRays)**void*errormsg1:*(char *f , char *msgname, char *msg)**errormsg1*is an external function which is usually supplied by the calling program.*static SatMatrix **SMAlloc: allocate memory space for a saturation matrix.*(int rows, int cols)**static void*SMFree: free the memory space occupied by a saturation matrix.*(SatMatrix *matrix)**static void*SMPrint: print the contents of a saturation matrix.*(SatMatrix *matrix)**static void*SatVector_OR: compute the bitwise OR of two saturation matrices.*(int *p1, int *p2, int *p3, unsigned length)**static void*Combine: compute the linear combination of two vectors 'p1' and 'p2'.*(Value *p1, Value *p2, Value *p3, int pos, unsigned length)**static SatMatrix **TransformSat: return the transpose of the saturation matrix 'Sat'.*(Matrix *Mat, Matrix *Ray, SatMatrix *Sat)**static void*RaySort: sort the rays (Ray, Sat) into three tiers as used in the*(Matrix *Ray, SatMatrix *Sat, int NbBid, int NbRay, int *equal_bound, int *sup_bound, unsigned RowSize1, unsigned RowSize2, unsigned bx, unsigned jx)*`Chernikova`function.*static int*Chernikova: compute the dual of matrix 'Mat' and place it in matrix 'Ray'.*(Matrix *Mat, Matrix *Ray, SatMatrix *Sat, unsigned NbBid, unsigned NbMaxRays, unsigned FirstConstraint, unsigned dual)**int*Gauss: compute a minimal system of equations using Gausian elimination method.*(Matrix *Mat, int NbEq, int Dimension)**static Polyhedron **Remove_Redundants: compute a polyhedron composed of 'Mat' as constraint matrix and 'Ray' as ray matrix after reductions.*(Matrix *Mat, Matrix *Ray, SatMatrix *Sat, unsigned *Filter)**static void*SimplifyEqualities: eliminate equations of 'Pol1' using equations of 'Pol2'.*(Polyhedron *Pol1, Polyhedron *Pol2, unsigned *Filter)**static int*SimplifyConstraints: return 0 if the intersection of two polyhedra is empty, otherwise return 1.*(Polyhedron *Pol1, Polyhedron *Pol2, unsigned *Filter, unsigned NbMaxRays)*