[BACK]Return to arrays_of_lists_utilities.ads CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / PHC / Ada / Root_Counts / Implift

Annotation of OpenXM_contrib/PHC/Ada/Root_Counts/Implift/arrays_of_lists_utilities.ads, Revision 1.1.1.1

1.1       maekawa     1: with Standard_Integer_Vectors;           use Standard_Integer_Vectors;
                      2: with Standard_Integer_VecVecs;           use Standard_Integer_VecVecs;
                      3: with Lists_of_Integer_Vectors;           use Lists_of_Integer_Vectors;
                      4: with Arrays_of_Integer_Vector_Lists;     use Arrays_of_Integer_Vector_Lists;
                      5:
                      6: package Arrays_of_Lists_Utilities is
                      7:
                      8: -- DESCRIPTION :
                      9: --   This package offers some utilities for working with
                     10: --   arrays of lists of integer vectors.
                     11:
                     12:   function All_Equal ( al : Array_of_Lists ) return boolean;
                     13:
                     14:   -- DESCRIPTION :
                     15:   --   returns true if all lists in al are the same.
                     16:
                     17:   function Interchange2 ( al : Array_of_Lists ) return Array_of_Lists;
                     18:
                     19:   -- DESCRIPTION :
                     20:   --   Returns a permuted array such that if the original array contains
                     21:   --   a list of length less than or equal to 2, the permuted array has
                     22:   --   this list on its first position.
                     23:
                     24:   function Index2 ( al : Array_of_Lists ) return integer;
                     25:
                     26:   -- DESCRIPTION :
                     27:   --   Returns the index of the list in the array which has a length less
                     28:   --   than or equal to 2.  If no such list can be found, then al'first
                     29:   --   will be returned.
                     30:
                     31:   procedure Mixture ( al : in Array_of_Lists; perm,mix : out Link_to_Vector );
                     32:
                     33:   -- DESCRIPTION :
                     34:   --   Computes the mixture of the sets in al: mix(i) indicates how many
                     35:   --   times the ith list, given by al(perm(i)), occurs in the array.
                     36:   --   The list with minimal occurence stands in front.
                     37:
                     38:   function Permute ( perm : Vector; al : in Array_of_Lists )
                     39:                    return Array_of_Lists;
                     40:
                     41:   -- DESCRIPTION :
                     42:   --   The returned array is permuted according to the permutation vector.
                     43:
                     44:   function Different_Points ( al : Array_of_Lists ) return List;
                     45:
                     46:   -- DESCRIPTION :
                     47:   --   Returns a list of all different points from the lists
                     48:   --   of al, the first list will not be considered.
                     49:
                     50:   function Different_Points ( al : Array_of_Lists ) return Array_of_Lists;
                     51:
                     52:   -- DESCRIPTION :
                     53:   --   Returns lists of all different points from the lists
                     54:   --   of al, the first list will not be considered.
                     55:
                     56:   procedure Remove_Duplicates ( al : in out Array_of_Lists );
                     57:
                     58:   -- DESCRIPTION :
                     59:   --   Except for the first list, all duplicates will be removed from
                     60:   --   the lists in al.
                     61:
                     62:   procedure Shift ( al : in out Array_of_Lists; shiftvecs : in VecVec );
                     63:   function  Shift ( al : Array_of_Lists; shiftvecs : VecVec )
                     64:                   return Array_of_Lists;
                     65:
                     66:   -- DESCRIPTION :
                     67:   --   All lists in al will be shifted along the degrees in shiftvecs.
                     68:
                     69:   -- REQUIRED :
                     70:   --   The ranges of shiftvecs and al are the same.
                     71:
                     72:   procedure Projection ( al : in Array_of_Lists; v : in Vector;
                     73:                          ind : integer; res : in out Array_of_Lists;
                     74:                          degenerate : out boolean );
                     75:   -- DESCRIPTION :
                     76:   --   The first list in al will not be considered.
                     77:   --   after termination:
                     78:   --   1. degenerate = false:
                     79:   --    res is an array of degrees lists where for all points x in
                     80:   --    the list res(i) the following holds: < x , v > = pv, where
                     81:   --    pv equals the support of the list res(i) in the direction v.
                     82:   --    The ind-entry of each point in the lists has been deleted.
                     83:   --    Duplicates have been removed from the lists.
                     84:   --   2. degenerate = true:
                     85:   --    if there exists an entry i for which Length_Of(res(i)) = 1.
                     86:
                     87:   -- REQUIRED : al'first = res'first and al'last = res'last + 1
                     88:
                     89: end Arrays_of_Lists_Utilities;

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>