with Lists_of_Integer_Vectors; use Lists_of_Integer_Vectors;
with Integer_Support_Functions; use Integer_Support_Functions;
with Power_Lists; use Power_Lists;
function Generic_Position ( p : Poly_Sys; tv : Tree_of_Vectors )
return boolean is
-- ALGORITHM :
-- Because tv contains the useful directions for the mixed volume,
-- only the cardinality of the faces of the first support list will be
-- checked, for all top directions in tv.
res : boolean := true;
tmp : Tree_of_Vectors := tv;
l : List := Create(p(p'first));
begin
while not Is_Null(tmp) loop
declare
nd : Node := Head_Of(tmp);
fc : List;
begin
exit when nd.d'length < Head_Of(l)'length;
fc := Outer_Face(l,nd.d.all);
res := (Length_Of(fc) <= 1);
Deep_Clear(fc);
end;
exit when not res;
tmp := Tail_Of(tmp);
end loop;
return res;
end Generic_Position;