Annotation of OpenXM_contrib/PHC/Ada/Root_Counts/Stalift/integer_lifting_utilities.ads, Revision 1.1.1.1
1.1 maekawa 1: with Standard_Integer_Vectors; use Standard_Integer_Vectors;
2: with Standard_Complex_Laur_Polys; use Standard_Complex_Laur_Polys;
3: with Standard_Complex_Laur_Systems; use Standard_Complex_Laur_Systems;
4: with Lists_of_Integer_Vectors; use Lists_of_Integer_Vectors;
5: with Integer_Mixed_Subdivisions; use Integer_Mixed_Subdivisions;
6: with Arrays_of_Integer_Vector_Lists; use Arrays_of_Integer_Vector_Lists;
7:
8: package Integer_Lifting_Utilities is
9:
10: -- DESCRIPTION :
11: -- This package provides some utilities for dealing with lifting functions.
12:
13: function Adaptive_Lifting ( l : Array_of_Lists ) return Vector;
14:
15: -- DESCRIPTION :
16: -- Returns upper bounds for a random lifting, depending on the lengths
17: -- of the lists in l.
18:
19: -- function Select_Subsystem ( p : Laur_Sys; mix : Vector; mic : Mixed_Cell )
20: -- return Laur_Sys;
21:
22: -- DESCRIPTION :
23: -- Given a Laurent polynomial system and a mixed cell,
24: -- the corresponding subsystem will be returned.
25:
26: -- ON ENTRY :
27: -- p a Laurent polynomial system;
28: -- mix type of mixture: occurencies of the supports;
29: -- mic a mixed cell.
30:
31: -- REQUIRED :
32: -- The polynomials in p must be ordered according to the type of mixture.
33:
34: function Perform_Lifting
35: ( n : natural; l : List; p : Poly ) return Poly;
36: function Perform_Lifting
37: ( n : natural; mix : Vector; lifted : Array_of_Lists;
38: p : Laur_Sys ) return Laur_Sys;
39:
40: -- DESCRIPTION :
41: -- Construction of the polyhedral homotopy, given the lifted supports.
42: -- The p will be lifted according to the lifted points, i.e. each
43: -- monomial whose exponent vector corresponds to a vector in the
44: -- lifted points (except for the last entry of course), will be
45: -- extended with an additional unknown, with as exponent, the
46: -- lifting value of that vector.
47:
48: function Copy_Lifting ( lifted : List; pt : Link_to_Vector )
49: return Link_to_Vector;
50:
51: -- DESCRIPTION :
52: -- Searches the corresponding point in the list lifted and returns
53: -- the lifted point. If the corresponding point has not been found,
54: -- then the original point pt will be returned.
55:
56: function Copy_Lifting ( lifted,pts : List ) return List;
57:
58: -- DESCRIPTION :
59: -- Copies the lifting on the points lifted to the points in pts,
60: -- i.e., each point in pts will get the same lifting as the corresponding
61: -- lifted point in the list lifted.
62:
63: procedure Search_Lifting ( l : in List; pt : in Vector;
64: found : out boolean; lif : out integer );
65:
66: -- DESCRIPTION :
67: -- Searches the lifting of the point in the lifted list l.
68: -- If found, then lif equals the lifting, otherwise lif is meaningless.
69:
70: function Search_and_Lift ( l : List; pt : Vector ) return Vector;
71:
72: -- DESCRIPTION :
73: -- Given a lifted list of points and a unlifted vector, the function
74: -- either returns the corresponding lifted vector from the list, or
75: -- the same point, when there is no lifted point in l whose projection
76: -- equals the given point pt.
77:
78: function Induced_Lifting ( mixsub : Mixed_Subdivision; k : natural;
79: pt : Vector ) return Vector;
80: function Induced_Lifting
81: ( n : natural; mix : Vector; points : Array_of_Lists;
82: mixsub : Mixed_Subdivision ) return Array_of_Lists;
83:
84: -- DESCRIPTION :
85: -- Given a mixed subdivision for a tuple of supports,
86: -- then the lifted points will be returned as induced by the
87: -- subdivision. When points do not occur in the mixed subdivision,
88: -- they will be lifted conservatively.
89:
90: procedure Constant_Lifting
91: ( l : in List; liftval : in natural;
92: lifted,lifted_last : in out List );
93:
94: -- DESCRIPTION :
95: -- Gives all points in l the constant lifting liftval,
96: -- and appends them to the list lifted, where lifted_last is
97: -- a pointer to the last element of lifted.
98:
99: procedure Constant_Lifting
100: ( al : in Array_of_Lists; liftval : in natural;
101: lifted,lifted_last : in out Array_of_Lists );
102:
103: -- DESCRIPTION :
104: -- Gives all points in al(i) the constant lifting liftval,
105: -- and appends them to the lists lifted(i), where lifted_last(i) is
106: -- a pointer to the last element of lifted(i).
107:
108: function Conservative_Lifting
109: ( mic : Mixed_Cell; k : natural; point : Vector ) return integer;
110: function Conservative_Lifting
111: ( mixsub : Mixed_Subdivision; k : natural; point : Vector )
112: return integer;
113:
114: -- DESCRIPTION :
115: -- Returns the value of the conservative lifting function of the point
116: -- to be considered w.r.t. the kth polytope.
117:
118: -- REQUIRED :
119: -- The given point must already be in the lifted space and its last
120: -- coordinate must contain already a lower bound for the lifting value.
121:
122: function Lower_Lifting ( mic : Mixed_Cell; k : natural; point : Vector )
123: return integer;
124:
125: -- DESCRIPTION :
126: -- Returns a lower bound on the lifting value. In case that the point
127: -- belongs to the kth component of the cell, the value zero is returned.
128: -- Otherwise, the conservative lifting value of the point w.r.t. the
129: -- cell is returned.
130:
131: -- REQUIRED :
132: -- The point must be already in lifted space.
133:
134: function Lower_Lifting ( mixsub : Mixed_Subdivision; k : natural;
135: point : Vector ) return integer;
136:
137: -- DESCRIPTION :
138: -- Applies the lower lifting function to all cells in the subdivision.
139: -- Stops when the lower bound equals the lifting value of the point
140: -- equals the lifting of the point given on entry.
141:
142: end Integer_Lifting_Utilities;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>