with Symmetry_Group; use Symmetry_Group; with Lists_of_Integer_Vectors; use Lists_of_Integer_Vectors; package Linear_Symmetric_Reduction is -- DESCRIPTION : -- This package contains two routines that enable the faster -- solution of a symmetric product system, by extracting the -- generating positions. function Linear_Symmetric_Reduce ( sign : boolean ) return List; function Linear_Symmetric_Reduce ( v,w : List_of_Permutations ) return List; -- DESCRIPTION : -- Returns the generating list of positions in the random product system. -- REQUIRED : data in package Random_Product_System is not empty. procedure Linear_Symmetric_Reduce ( lp : in out List; sign : in boolean ); procedure Linear_Symmetric_Reduce ( v,w : in List_of_Permutations; lp : in out List ); -- DESCRIPTION : -- Given a (G,V,W)-symmetric product system, a list of positions -- that indicate the generating subsystems will be returned. -- REQUIRED : data in package Random_Product_System is not empty. -- ON ENTRY : -- v,w group representations, -- if not provided, then the full permutation group is assumed; -- sign if true, then there is also sign symmetry to consider; -- lp a list of positions, indicating the useful -- linear systems in the product system. -- ON RETURN : -- lp a sublist of the former list, -- contains only the generating linear systems. end Linear_Symmetric_Reduction;