with Standard_Integer_Vectors; use Standard_Integer_Vectors;
with Lists_of_Integer_Vectors; use Lists_of_Integer_Vectors;
with Arrays_of_Integer_Vector_Lists; use Arrays_of_Integer_Vector_Lists;
with Simplices,Triangulations; use Simplices,Triangulations;
with Integer_Mixed_Subdivisions; use Integer_Mixed_Subdivisions;
package Cayley_Embedding is
-- DESCRIPTION :
-- This procedure provides utilities to implement the embedding
-- of a tuple of supports to use the Cayley trick.
-- The novelty with this implementation is that the additional
-- coordinates to the points are added in front.
-- UTILITIES TO APPLY BEFORE THE CONSTRUCTION OF THE TRIANGULATION :
function Embedding_Before_Lifting
( supports : Array_of_Lists ) return List;
-- DESCRIPTION :
-- The supports will be embedded in higher dimensional space
-- by adding (r-1) extra coordinates.
-- The supports will be placed on the vertices of a simplex.
-- This is done before the lifting is defined on the supports.
-- UTILITIES TO APPLY AFTER THE CONSTRUCTION OF THE TRIANGULATION :
function Extract ( vtp,n : natural; pts : List ) return List;
-- DESCRIPTION :
-- Extracts the points out of the list that are of the type
-- indicated by vtp, i.e.: all points that belong to the list of
-- points placed on the vertex with number vtp.
function Extract_Mixed_Cell
( n : natural; mix : Vector; s : Simplex ) return Mixed_Cell;
-- DESCRIPTION :
-- If the simplex determines a mixed cell, then this mixed cell
-- will be returned. Otherwise, the returned mixed cell will have
-- an empty inner normal.
function Extract_Mixed_Cells
( n : natural; mix : Vector; t : Triangulation )
return Mixed_Subdivision;
-- DESCRIPTION :
-- Given a triangulation of the large extended polytope,
-- the mixed cells will be extracted. The parameter
-- n equals the dimension before the embedding and lifting.
function Extract_non_Flat_Mixed_Cells
( n : natural; mix : Vector; t : Triangulation )
return Mixed_Subdivision;
-- DESCRIPTION :
-- Does the same as the routine just above, but stops when
-- a simplex with normal (0,..,0,1) is encountered.
procedure Deflate ( n : natural; l : in out List );
-- DESCRIPTION :
-- Removes the extra coordinates which have been introduced for
-- the embedding. The parameter n equals the dimension before
-- the embedding and the lifting.
procedure Deflate ( n : natural; mic : in out Mixed_Cell );
-- DESCRIPTION :
-- Removes the extra coordinates which have been introduced for
-- the embedding. The parameter n equals the dimension before
-- the embedding and the lifting.
procedure Deflate ( n : natural; mixsub : in out Mixed_Subdivision );
-- DESCRIPTION :
-- Removes the extra coordinates which have been introduced for
-- the embedding. The parameter n equals the dimension before
-- the embedding and the lifting.
end Cayley_Embedding;