with Brackets; use Brackets; with Standard_Complex_Matrices; with Standard_Complex_Poly_Matrices; package Specialization_of_Planes is -- DESCRIPTION : -- Set up of the moving cycles in the Pieri homotopy algorithm. -- The U-matrix generates the special m-plane. function Random_Upper_Triangular ( n : natural ) return Standard_Complex_Matrices.Matrix; -- DESCRIPTION : -- Returns an n*n random upper triangular matrix that has 1's on its -- anti-diagonal, to be used for the first Pieri tree. function Random_Lower_Triangular ( n : natural ) return Standard_Complex_Matrices.Matrix; -- DESCRIPTION : -- Returns an n*n random lower triangular matrix that has 1's on its -- diagonal, to be used for the second Pieri tree. function U_Matrix ( F : Standard_Complex_Matrices.Matrix; b : Bracket ) return Standard_Complex_Matrices.Matrix; -- DESCRIPTION : -- Determines the matrix U in the moving cycles for the Pieri tree. -- ON ENTRY : -- F general triangular matrix, output of either -- Random_Upper_Triangular or Random_Lower_Triangular; -- b bracket of first jumping-branching node down the tree. function Special_Plane ( m : natural; b : Bracket ) return Standard_Complex_Matrices.Matrix; -- DESCRIPTION : -- Generates the special m-plane that every child of the node with -- the pivots in the bracket b intersects. -- The plane on return is spanned by the standard basis vectors -- except those that are indexed by the entries in the bracket b. function Special_Bottom_Plane ( m : natural; b : Bracket ) return Standard_Complex_Matrices.Matrix; -- DESCRIPTION : -- Same as special m-plane, but with random numbers above the diagonal. function Special_Top_Plane ( m : natural; b : Bracket ) return Standard_Complex_Matrices.Matrix; -- DESCRIPTION : -- Same as special m-plane, but with random numbers below the diagonal. function Special_Plane ( n,m,k : natural; b : Bracket; special : in Standard_Complex_Matrices.Matrix ) return Standard_Complex_Matrices.Matrix; -- DESCRIPTION : -- Returns a special (m+1-k)-plane, by random combinations from the -- n-dimensional basis vectors of special indexed by the pivots in b. -- The basis vectors have random numbers above the diagonal. -- Note that here not the complement of the indices in b is used! function Moving_U_Matrix ( n : natural; U,L : Standard_Complex_Matrices.Matrix ) return Standard_Complex_Poly_Matrices.Matrix; -- DESCRIPTION : -- Determines the moving U-matrix for the Pieri tree, when i=0. -- Returns a polynomial matrix in the continuation parameter t, -- which is the last variable in the polynomials on return. -- ON ENTRY : -- n number of variables of the polynomials in the matrix; -- U output of U_Matrix function listed above, start m-plane; -- L target m-plane that will be folded in during the deformation. function Moving_U_Matrix ( U : Standard_Complex_Matrices.Matrix; i,r : natural; b : bracket ) return Standard_Complex_Poly_Matrices.Matrix; -- DESCRIPTION : -- Determines the moving U-matrix for the Pieri tree, when i>0. -- Returns a polynomial matrix in the continuation parameter t. -- ON ENTRY : -- U output of U_Matrix function listed above; -- i counts the number of nodes till 1st jumping node down; -- b bracket of first jumping-branching node down the tree. function Lower_Section ( M : Standard_Complex_Poly_Matrices.Matrix; row : natural ) return Standard_Complex_Poly_Matrices.Matrix; -- DESCRIPTION : -- The columns in M that have nonzero entries in the rows strictly -- larger than the given row index will be removed. This corresponds -- to intersecting the column space of M with . function Upper_Section ( M : Standard_Complex_Poly_Matrices.Matrix; row : natural ) return Standard_Complex_Poly_Matrices.Matrix; -- DESCRIPTION : -- The columns in M that have nonzero entries in the rows strictly -- lower than the given row index will be removed. This corresponds -- to intersecting the column space of M with . end Specialization_of_Planes;