with Abstract_Ring;
with Generic_Laurent_Polynomials;
generic
with package Ring is new Abstract_Ring(<>);
with package Polynomials is new Generic_Laurent_Polynomials(Ring);
package Generic_Laur_Poly_Systems is
-- DESCRIPTION :
-- This package provides polynomial systems as an array of polynomials
-- with some arithmetic operations.
use Ring,Polynomials;
-- DATA STRUCTURES :
type Laur_Sys is array ( integer range <> ) of Poly;
type Link_to_Laur_Sys is access Laur_Sys;
-- COPYING :
procedure Copy ( p : in Laur_Sys; q : in out Laur_Sys );
-- ARITHMETIC OPERATIONS :
function "+" ( p,q : Laur_Sys ) return Laur_Sys; -- return p+q
function "-" ( p,q : Laur_Sys ) return Laur_Sys; -- return p-q
function "-" ( p : Laur_Sys ) return Laur_Sys; -- return -p
function "*" ( a : number; p : Laur_Sys ) return Laur_Sys; -- return a*p
function "*" ( p : Laur_Sys; a : number) return Laur_Sys; -- return p*a
procedure Add ( p : in out Laur_Sys; q : in Laur_Sys ); -- p := p+q
procedure Sub ( p : in out Laur_Sys; q : in Laur_Sys ); -- p := p-q
procedure Min ( p : in out Laur_Sys ); -- p := -p
procedure Mul ( p : in out Laur_Sys; a : in number ); -- p := a*p
-- DIFFERENTIATORS :
function Diff ( p : Laur_Sys; i : natural ) return Laur_Sys;
procedure Diff ( p : in out Laur_Sys; i : in natural );
-- DESTRUCTORS :
procedure Clear ( p : in out Laur_Sys );
procedure Clear ( p : in out Link_to_Laur_Sys );
end Generic_Laur_Poly_Systems;