module groebner;
 
% Author: Herbert Melenk
% in cooperation with Winfried Neun, Michael Moeller.

% module structure:       
%
%     GROEBNER  package + GROEBNR2 package
%        polynomial arithmetic:
%         VDP2DIP package included in DIPOLY package
%        factorization:
%         GROEBFAC package is also included here, but could be loaded
%         on demand.

% Modifications:
%
% 17-Sep-1994 (HM):  The ideal variables are now declared in the TORDER
% statement.  The calling conventions can be still used, but are removed
% from the documents.

fluid '(currentvdpmodule!*);

currentvdpmodule!* := 'vdp2dip;

create!-package('(groebner grinterf grinter2 buchbg groebcri
	 groesolv groebopt groebsea groebsor groebspa groebfac
         groebidq kredelw traverso),
         '(contrib groebner));

put('groebner,'version,3.0);

% Other packages needed.

load!-package 'dipoly;

if(null v or v<4.0) where v=get('dipoly,'version) 
  then rederr "wrong dipoly module";

smacro procedure tt(s1,s2);
  % lcm of leading terms of s1 and s2
       vevlcm(vdpevlmon s1,vdpevlmon s2);

imports a2vdp,f2vdp,a2vbc,vdp2a,vdp2f,
        vdpfmon,vdpappendmon,vdpappendvdp,vdplbc,
        vdpred,vdplastmon,vevnth,

        vdpzero!?,vdpredzero!?,vdpone!?,vevzero!?,
        vbcplus!?,vbcone!?,vbcnumberp!?,vevdivides!?,vevcompless!?,
        vdpequal,vdpmember,vevequal,

        vdpsum,vdpdif,vdpprod,vdpdivmon,cdpcancelvev,vdplcomb1,vdpcontent,

        vbcsum,vbcdif,vbcneg,vbcprod,vbcquot,vbcinv,vbcgcd,vbcabs,vbcone!?,

        vevsum,vevdif,vevtdeg,vevzero,

        vdpputprop,vdpgetprop,vdplsort,vdplsortin,vdpprint,
        vdpprin3t,vdpcondense,vdplcm,vdprectoint,vdpsimpcont,vdpvbcprod,
        vdpcancelmvev,vdpprin2,

        vevweightedcomp2,vdplength,vdpilcomb1,

        vdpinit,vdpinit2,vdpcleanup;

exports groebnereval,groesolveeval,groepostsolveeval,idquotienteval,
        gdimensioneval,glexconvert,greduce,preduce,groebnert,dd_groebner,
        hilbertpolynomial,gsort,gsplit,gspoly,gzerodim!?;

endmodule;
 
end;
