with Standard_Integer_Vectors; use Standard_Integer_Vectors; with Lists_of_Integer_Vectors; use Lists_of_Integer_Vectors; with Transformations; use Transformations; package Transforming_Integer_Vector_Lists is -- DESCRIPTION : -- Unimodular transformations of lists of standard integer vectors. procedure Shift ( l : in out List; v : in Vector ); procedure Shift ( l : in out List; v : in Link_to_Vector ); function Shift ( l : List; v : Vector ) return List; function Shift ( l : List; v : Link_to_Vector ) return List; -- DESCRIPTION : -- The list will be shifted: Shift(l,v) = { y-v | Is_In(l,y) } function "*"( l : List; t : Transfo ) return List; function "*"( t : Transfo; l : List ) return List; -- DESCRIPTION : -- Returns the transformed list of points. procedure Apply ( l : in out List; t : in Transfo ); -- DESCRIPTION : -- Applies the transformation t to the list l. function Reduce ( l : List; i : integer ) return List; procedure Reduce ( l : in out List; i : in integer ); -- DESCRIPTION : -- Returns a list of vectors where the i-th component has been deleted. function Insert ( l : List; i,a : integer ) return List; procedure Insert ( l : in out List; i,a : in integer ); -- DESCRIPTION : -- Returns a list of vectors where the i-th component has been inserted, -- for all d in l: d(i) = a. function Transform_and_Reduce ( t : Transfo; i : integer; l : List ) return List; procedure Transform_and_Reduce ( t : in Transfo; i : in integer; l : in out List ); -- DESCRIPTION : -- Transforms the list l and deletes the i-th component -- of every element in the transformed list. function Insert_and_Transform ( l : List; i,a : integer; t : Transfo ) return List; procedure Insert_and_Transform ( l : in out List; i,a : in integer; t : in Transfo ); -- DESCRIPTION : -- Inserts the i-th component of every element in the list l, -- using the value a, and transforms the list, applying t. end Transforming_Integer_Vector_Lists;