with Brackets,Bracket_Monomials; use Brackets,Bracket_Monomials;
with Bracket_Polynomials; use Bracket_Polynomials;
package Straightening_Syzygies is
-- DESCRIPTION :
-- This package generates and uses the so-called van der Waerden syzygies
-- to straighten bracket polynomials w.r.t. the tableau order.
function Laplace_Expansion ( n,d : natural ) return Bracket_Polynomial;
-- DESCRIPTION :
-- Returns the Laplace expansion of the determinant of an (n*n)-matrix,
-- in terms of two blocks of size d and n-d respectively.
-- The output is in terms of a quadratic bracket polynomial.
-- The first entry of every bracket for the first block equals 0,
-- to avoid messing up the structure of the Laplace expansion.
function Straightening_Syzygy ( b1,b2 : Bracket ) return Bracket_Polynomial;
-- DESCRIPTION :
-- Returns the van der Waerden syzygy that can be used to straighten
-- the nonstandard monomial b1*b2. If b1*b2 is already standard, then
-- the polynomial with only the monomial b1*b2 is returned.
-- REQUIRED : b1 < b2.
function Straightening_Syzygy ( b : Bracket_Monomial )
return Bracket_Polynomial;
-- DESCRIPTION :
-- Returns Straightening_Syzygy(b1,b2), with b = b1*b2.
-- REQUIRED : b = b1*b2.
function nonStandard_Monomials ( n,d : natural ) return Bracket_Polynomial;
-- DESCRIPTION :
-- Returns the polynomial of all quadratic nonStandard monomials,
-- where d is the dimension of the brackets and n the number of
-- elements to choose from.
generic
with procedure Process ( s : in Bracket_Polynomial;
continue : out boolean );
procedure Enumerate_Syzygies ( p : in Bracket_Polynomial );
-- DESCRIPTION :
-- Constructs the straightening syzygy s for every monomial in p
-- and invokes the procedure Process with s as its argument.
-- Enumeration stops when continue is set to false.
function Straighten ( b1,b2 : Bracket ) return Bracket_Polynomial;
-- DESCRIPTION :
-- Returns a bracket polynomial, equivalent to b1*b2, that contains
-- only standard monomials. This is done by repeatively replacing the
-- nonstandard monomials b1*b2 by the generated van der Waerden syzygies.
function Straighten ( b : Bracket_Monomial ) return Bracket_Polynomial;
function Straighten ( b : Bracket_Term ) return Bracket_Polynomial;
function Straighten ( b : Bracket_Polynomial ) return Bracket_Polynomial;
-- DESCRIPTION :
-- Returns an equivalent bracket polynomial that contains only
-- standard monomials.
end Straightening_Syzygies;