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

Annotation of OpenXM_contrib/PHC/Ada/Root_Counts/Stalift/inner_normal_cones.ads, Revision 1.1

1.1     ! maekawa     1: with Standard_Integer_Vectors;           use Standard_Integer_Vectors;
        !             2: with Standard_Integer_Matrices;          use Standard_Integer_Matrices;
        !             3: with Lists_of_Integer_Vectors;           use Lists_of_Integer_Vectors;
        !             4: with Integer_Faces_of_Polytope;          use Integer_Faces_of_Polytope;
        !             5:
        !             6: package Inner_Normal_Cones is
        !             7:
        !             8: -- DESCRIPTION :
        !             9: --   This package contains facilities for dealing with inner normal cones,
        !            10: --   that are cones normal to some faces of a given polytope, with apex
        !            11: --   at the origin.  Especially the normal cones to vertices are of great
        !            12: --   interest to determine which points contribute to the mixed volume.
        !            13: --   The primal representation of a normal cone consists in the generators
        !            14: --   of the cone.  A matrix of inequalities defines the dual representation.
        !            15:
        !            16: -- CONSTRUCTORS FOR PRIMAL REPRESENTATION :
        !            17:
        !            18:   function Generators ( l : List; facets : Faces; x : Vector ) return List;
        !            19:
        !            20:   -- DESCRIPTION :
        !            21:   --   Returns the generators of the polyhedral cone, which lies in the
        !            22:   --   dual space of the polytope spanned by l and is enclosed by the facets,
        !            23:   --   which all contain the vector x.
        !            24:   --   The list on return contains all inner normals to the facets.
        !            25:
        !            26:   function Generators ( l : List; x : Vector ) return List;
        !            27:
        !            28:   -- DESCRIPTION :
        !            29:   --   Returns the generators of the polyhedral cone to conv(l),
        !            30:   --   normal at the vector x.
        !            31:
        !            32: -- CONSTRUCTOR FOR DUAL REPRESENTATION :
        !            33:
        !            34:   function Inner_Normal_Cone ( l : List; x : Vector ) return Matrix;
        !            35:
        !            36:   -- DESCRIPTION :
        !            37:   --   Returns the inequalities that define the normal cone to the vector x,
        !            38:   --   normal to the polytope spanned by the points in l.
        !            39:   --   The range of the matrix on return is (x'range,1..Length_Of(l)-1),
        !            40:   --   which implies that the inequalities are stored columnwise.
        !            41:   --   The type of the inequalities is >= 0.
        !            42:
        !            43:   function Included_Normal_Cone ( gx : List; x : Vector ) return Matrix;
        !            44:
        !            45:   -- DESCRIPTION :
        !            46:   --   Returns the inequalities that define the inner normal cone to the
        !            47:   --   vector x, such that these normals are pointing in the interior of
        !            48:   --   the polytope spanned by l, when their basis is the point x.
        !            49:   --   The walls of this cone are the facets, the list gx should
        !            50:   --   contain all inner normal to the facets at the vertex x.
        !            51:
        !            52:   -- RANGE FORMATS :
        !            53:   --   The matrix on return has ranges (x'first-1..x'last,1..Length_Of(gx)).
        !            54:   --   The first row of the matrix contains <gx,x>,
        !            55:   --   to be used in the right-hand side of the inequalities.
        !            56:
        !            57: -- PRIMITIVE SELECTORS :
        !            58:
        !            59:   function Evaluate ( m : Matrix; i : integer; v : Vector ) return integer;
        !            60:
        !            61:   -- DESCRIPTION :
        !            62:   --   Evaluates the vector in the ith hyperplane of the inequality matrix.
        !            63:
        !            64:   function Satisfies ( m : Matrix; i : integer; v : Vector ) return boolean;
        !            65:   function Strictly_Satisfies ( m : Matrix; i : integer; v : Vector )
        !            66:                               return boolean;
        !            67:
        !            68:   -- DESCRIPTION :
        !            69:   --   Returns true if the vector v satisfies the ith inequality of the matrix.
        !            70:   --   With Strictly_ true is only returned if the evaluation yields a
        !            71:   --   positive result.
        !            72:
        !            73:   function Satisfies ( m : Matrix; v : Vector ) return boolean;
        !            74:   function Strictly_Satisfies ( m : Matrix; v : Vector ) return boolean;
        !            75:
        !            76:   -- DESCRIPTION :
        !            77:   --   Returns true if the vector v satisfies all inequalities defined by m.
        !            78:
        !            79:   function Satisfies ( m : Matrix; v : List ) return boolean;
        !            80:   function Strictly_Satisfies ( m : Matrix; v : List ) return boolean;
        !            81:
        !            82:   -- DESCRIPTION :
        !            83:   --   Returns true if all vectors in v satisfy all inequalities defined by m.
        !            84:
        !            85: -- SECONDARY SELECTORS :
        !            86:
        !            87:   function Satisfy ( m : Matrix; l : List ) return List;
        !            88:   function Strictly_Satisfy ( m : Matrix; l : List ) return List;
        !            89:
        !            90:   -- DESCRIPTION :
        !            91:   --   Returns a list of points from l that (strictly) satisfy the
        !            92:   --   inequalities in the matrix.
        !            93:
        !            94:   function Contained_in_Cone ( l : List; x : Vector; v : List ) return boolean;
        !            95:   function Strictly_Contained_in_Cone ( l : List; x : Vector; v : List )
        !            96:                                       return boolean;
        !            97:
        !            98:   -- DESCRIPTION :
        !            99:   --   Returns true when all vectors in v are contained in the normal cone
        !           100:   --   to the points in l, at the vector x.
        !           101:
        !           102:   function Contained_in_Cone ( l,v : List ) return boolean;
        !           103:   function Strictly_Contained_in_Cone ( l,v : List ) return boolean;
        !           104:
        !           105:   -- DESCRIPTION :
        !           106:   --   Returns true when there exists a normal cone to the points in l
        !           107:   --   that entirely contains the points in v.
        !           108:
        !           109: -- CONCERNING THE UNION OF CONES :
        !           110:
        !           111:   function In_Union ( v1,v2 : Vector; k1,k2 : Matrix ) return boolean;
        !           112:
        !           113:   -- DESCRIPTION :
        !           114:   --   Returns true if the convex combination of v1 and v2 is contained
        !           115:   --   in the union of the convex cones k1 and k2, given by their
        !           116:   --   inequality matrix.
        !           117:
        !           118:   -- REQUIRED : Satisfies(k1,v1) and Satisfies(k2,v2).
        !           119:
        !           120:   function In_Union ( v1,v2 : List; k1,k2 : Matrix ) return boolean;
        !           121:
        !           122:   -- DESCRIPTION :
        !           123:   --   Returns true if every convex combination of a vector from v1
        !           124:   --   and a vector from v2 is contained in the union of the convex
        !           125:   --   cones k1 and k2, given by their inequality matrix.
        !           126:
        !           127:   -- REQUIRED : Satisfies(k1,v1) and Satisfies(k2,v2).
        !           128:
        !           129: end Inner_Normal_Cones;

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