with text_io; use text_io;
with Symmetry_Group; use Symmetry_Group;
with Lists_of_Integer_Vectors; use Lists_of_Integer_Vectors;
package Symmetric_Set_Structure is
-- DESCRIPTION :
-- The aim of this package is the construction of a symmetric
-- start system, given a symmetric set structure.
-- CONSTRUCTORS :
procedure Equivariant_Start_System
( n : in natural; g : in List_of_Permutations;
fail : out boolean );
-- DESCRIPTION :
-- Constructs an equivariant linear-product start system.
-- When not fail on return, the package Random_Product_System
-- contains the data for generating the polynomial system.
-- REQUIRED :
-- The data of the package Set_Structure may not be empty!
-- ON ENTRY :
-- n the dimension of the problem;
-- g the list of generating permutations.
-- ON RETURN :
-- fail if true, then the set structure was not equivariant.
procedure Symmetric_Start_System
( n,bb : in natural; lp : in List;
v,w : in List_of_Permutations;
notsymmetric,degenerate : out boolean );
-- DESCRIPTION :
-- After calling this routine, the package Random_Product_System
-- contains the data for a symmetric random product system,
-- when notsymmetric and degenerate are false on return.
-- REQUIRED :
-- The data of the package Set_Structure may not be empty!
-- ON ENTRY :
-- n the dimension of the problem;
-- bb the Bezout number based on the set structure;
-- lp list of positions indicating the acceptable
-- classes in the set structure;
-- v,w representations of the symmetry group.
-- ON RETURN :
-- notsymmetric is true if the set structure is not symmetric;
-- degenerate is true if the set structure is degenerate.
-- SELECTORS
procedure Write_Covering;
procedure Write_Covering ( file : in file_type );
procedure Write_Templates ( n : in natural );
procedure Write_Templates ( file : in file_type; n : in natural );
-- DESCRIPTION :
-- These procedure write an intermediate data structures
-- in the construction of a symmetric start system.
-- DESTRUCTOR :
procedure Clear;
-- DESCRIPTION :
-- All allocated memory space will be freed.
end Symmetric_Set_Structure;