File: [local] / OpenXM_contrib / PHC / Ada / Root_Counts / Dynlift / cayley_trick.ads (download)
Revision 1.1.1.1 (vendor branch), Sun Oct 29 17:45:28 2000 UTC (23 years, 10 months ago) by maekawa
Branch: PHC, MAIN
CVS Tags: v2, maekawa-ipv6, RELEASE_1_2_3, RELEASE_1_2_2_KNOPPIX_b, RELEASE_1_2_2_KNOPPIX, RELEASE_1_2_2, RELEASE_1_2_1, HEAD Changes since 1.1: +0 -0
lines
Import the second public release of PHCpack.
OKed by Jan Verschelde.
|
with Standard_Integer_Vectors; use Standard_Integer_Vectors;
with Arrays_of_Integer_Vector_Lists; use Arrays_of_Integer_Vector_Lists;
with Triangulations; use Triangulations;
with Integer_Mixed_Subdivisions; use Integer_Mixed_Subdivisions;
package Cayley_Trick is
-- DESCRIPTION :
-- This procedure provides some routines for constructing a mixed
-- subdivision by applicaton of the dynamic lifting algorithm to
-- the Cayley trick.
-- OPTIONS :
-- 1. choice of the order of the points
-- 2. for vertices or not: allows to add interior points
-- 3. with maximum value on the lifting function or not
-- VERSIONS :
-- 1. with or without output generics, before flattening or after new cell
-- 2. with as result only the mixed subdivision or the whole triangulation
-- BASIC VERSION : WITHOUT OUTPUT GENERICS :
procedure Dynamic_Cayley
( n : in natural; mix : in Vector;
supports : in Array_of_Lists; order,inter : in boolean;
maxli : in natural; lifted : out Array_of_Lists;
mixsub : out Mixed_Subdivision; numtri : out natural );
procedure Dynamic_Cayley
( n : in natural; mix : in Vector;
supports : in Array_of_Lists; order,inter : in boolean;
maxli : in natural; lifted : out Array_of_Lists;
t : in out Triangulation );
-- DESCRIPTION :
-- Application of the dynamic lifting algorithm to the Cayley trick.
-- ON ENTRY :
-- n length of the vectors in the supports;
-- mix type of mixture;
-- supports lists of integer vector of length n;
-- order if true, then the points are already ordered and will
-- be processed like they occur in the list,
-- if false, then a random order will be chosen;
-- inter if true, then the list may contain interior points,
-- i.e. points x in conv(l\{x}),
-- if false, no interior points occur in the list;
-- maxli maximum value of the lifting function,
-- if = 0, then no flattening will be applied,
-- i.e. there is no maximum lifting value,
-- if > 0, then no points will be given a lifting value
-- greater than maxli.
-- ON RETURN :
-- lifted the lifted supports;
-- mixsub the mixed subdivision;
-- numtri number of simplices in the triangulation of the
-- auxiliary polytope;
-- t triangulation of the auxiliary polytope.
-- EXTENDED VERSIONS : WITH OUTPUT GENERICS
generic
with procedure Before_Flattening
( mixsub : in out Mixed_Subdivision;
lifted : in Array_of_Lists );
-- DESCRIPTION :
-- Before flattening, the current mixed subdivision with
-- the current lists of lifted points are given.
procedure Dynamic_Cayley_with_Flat
( n : in natural; mix : in Vector;
supports : in Array_of_Lists; order,inter : in boolean;
maxli : in natural; lifted : out Array_of_Lists;
mixsub : out Mixed_Subdivision; numtri : out natural );
generic
with procedure Before_Flattening
( mixsub : in out Mixed_Subdivision;
lifted : in Array_of_Lists );
procedure Dynamic_Cayley_with_Flatt
( n : in natural; mix : in Vector;
supports : in Array_of_Lists; order,inter : in boolean;
maxli : in natural; lifted : out Array_of_Lists;
t : in out Triangulation );
-- DESCRIPTION :
-- Application of the dynamic lifting algorithm to the Cayley trick.
-- Before flattening, the generic procedure will be invoked.
-- The parameters have the same meaning as in the basic version.
generic
with procedure Process_New_Cells
( mixsub : in out Mixed_Subdivision;
i : in natural; point : in vector );
-- DESCRIPTION :
-- After the addition of a new point to the ith component,
-- this point together with the new mixed cells are returned.
-- For the initial cell, i=0.
procedure Dynamic_Cayley_with_New
( n : in natural; mix : in Vector;
supports : in Array_of_Lists; order,inter : in boolean;
maxli : in natural; lifted : out Array_of_Lists;
mixsub : out Mixed_Subdivision; numtri : out natural );
generic
with procedure Process_New_Cells
( mixsub : in out Mixed_Subdivision;
i : in natural; point : in vector );
procedure Dynamic_Cayley_with_Newt
( n : in natural; mix : in Vector;
supports : in Array_of_Lists; order,inter : in boolean;
maxli : in natural; lifted : out Array_of_Lists;
t : in out Triangulation );
-- DESCRIPTION :
-- Application of the dynamic lifting algorithm to the Cayley trick.
-- After each addition of a point, the generic procedure will
-- be invoked.
-- The parameters have the same meaning as in the basic version.
generic
with procedure Before_Flattening
( mixsub : in out Mixed_Subdivision;
lifted : in Array_of_Lists );
-- DESCRIPTION :
-- Before flattening, the current mixed subdivision with
-- the current lists of lifted points are given.
with procedure Process_New_Cells
( mixsub : in out Mixed_Subdivision;
i : in natural; point : in vector );
-- DESCRIPTION :
-- After the addition of a new point to the ith component,
-- this point together with the new simplices are returned.
-- For the initial cell, i=0.
procedure Dynamic_Cayley_with_Flat_and_New
( n : in natural; mix : in Vector;
supports : in Array_of_Lists; order,inter : in boolean;
maxli : in natural; lifted : out Array_of_Lists;
mixsub : out Mixed_Subdivision; numtri : out natural );
generic
with procedure Before_Flattening
( mixsub : in out Mixed_Subdivision;
lifted : in Array_of_Lists );
with procedure Process_New_Cells
( mixsub : in out Mixed_Subdivision;
i : in natural; point : in vector );
procedure Dynamic_Cayley_with_Flat_and_Newt
( n : in natural; mix : in Vector;
supports : in Array_of_Lists; order,inter : in boolean;
maxli : in natural; lifted : out Array_of_Lists;
t : in out Triangulation );
-- DESCRIPTION :
-- Application of the dynamic lifting algorithm to the list l.
-- Before flattening, the first generic procedure will be invoked.
-- After each addition of a point, the second generic procedure
-- will be invoked.
-- The parameters have the same meaning as in the basic version.
end Cayley_Trick;