(* ----------------------------------------------------------------------------
* $Id: DIPCJ.md,v 1.2 1995/12/16 12:21:52 kredel Exp $
* ----------------------------------------------------------------------------
* This file is part of MAS.
* ----------------------------------------------------------------------------
* Copyright (c) 1995 Universitaet Passau
* ----------------------------------------------------------------------------
* $Log: DIPCJ.md,v $
* Revision 1.2 1995/12/16 12:21:52 kredel
* Comments slightly changed.
*
* Revision 1.1 1995/10/12 14:44:45 pesch
* Diplomarbeit Rainer Grosse-Gehling.
* Involutive Bases.
* Slightly edited.
*
* ----------------------------------------------------------------------------
*)
DEFINITION MODULE DIPCJ;
(* DIP Common Polynomial System Definition Module in the sense of Janet. *)
(* Import lists and declarations. *)
FROM MASSTOR IMPORT LIST;
FROM MASLISPU IMPORT PROCF1;
CONST rcsid = "$Id: DIPCJ.md,v 1.2 1995/12/16 12:21:52 kredel Exp $";
CONST copyright = "Copyright (c) 1995 Universitaet Passau";
PROCEDURE ADDTDG(deg, P: LIST): LIST;
(* Add total degree.
Input: polynomial degree deg and polynomial P in distributive list
representation.
Output: polynom P with first list entry now total degree of the
leading exponent vector. *)
PROCEDURE ADVTDG(P: LIST; VAR p, PP: LIST);
(* Advance total degree.
Input: polynom P in distributive list representation. The first entry of the
list is the total degree of the leading exponent vector.
Output: p - the first entry of the list; PP - the polynom without the
first entry *)
PROCEDURE DILEBBS(A: LIST);
(* Distributive List Extended Bubble Sort.
Sort a list of polynoms in decreasing order of the total degree of the
leading exponent. The total degree must be the first entry of each polynom.
Input: A is a list of polynoms.
A is changed *)
PROCEDURE DILBBS(A: LIST);
(* Distributive List Bubble Sort.
Sort a list of polynoms in decreasing order of the total degree of the
leading exponent.
Input: A is a list of polynoms.
A is changed *)
PROCEDURE DILEP2P(P: LIST): LIST;
(* Distributive polynom list extended polynom to polynom.
Input: P - a list of extended polynoms.
Output: a list of polynoms whithout the first entry. *)
PROCEDURE DILATDG(P: LIST): LIST;
(* Distributive polynom list add total degree.
P is a list of distributive polynomials.
The result is a list of distributive polynoms with total
degree of the leading term as first entry of each polynomial. *)
PROCEDURE DILTDG(A: LIST): LIST;
(* Distributive polynomial list total degree
Input: A is a list of distributive polynomials,
Output tdg: the total degree of A *)
PROCEDURE DIPCLP(P: LIST): LIST;
(* Distributiv Polynomial Class of Polynomial.
Input: P is a polynomial,
Output: t is the index of the lowest variable of the leading
term of P, t=0 if P is Empty *)
PROCEDURE DIPCLT(P: LIST): LIST;
(* Distributiv Polynomial Class of Term.
Input: P is a term,
Output: t is the index of the lowest variable in P,
t=0 if P is empty *)
PROCEDURE DIPFIRST(P: LIST; extended: BOOLEAN; VAR pp, PP: LIST);
(* Distributive polynomial first polynomial,
P is a list of polynomials,
pp is the first polynomial and PP is the reductum of P.*)
PROCEDURE DIPSSM(P: LIST; extended: BOOLEAN; VAR pp, PP: LIST);
(* Distributive polynomial sort and select minimal.
Input: P - a list of polynoms,
extended is TRUE iff the first entry of each polynimial in P is the
total degree of the leading exponent vector.
Output: pp - the minimal polynom w.r.t. the admissible term order.
PP - sorted list of P without pp.
P is changed *)
PROCEDURE DILCAN(P: LIST; F: PROCF1): LIST;
(* Distributive Polynomial Cancel.
P is a list of distributive polynomials. F is the cancel-function.
Output is a list of distributive polynomials or an empty list if all
polynomials in A equal 0. The coefficients of each polynomial are canceld
down by F. *)
PROCEDURE DIILPP(P: LIST): LIST;
(* Distributive integral polynomial list primitive part.
P is a list of distributive integral polynoms. The result is the positive
primitive part of each polynomial in P. The list-order is reversed. *)
PROCEDURE DIRPMV(A,B: LIST): LIST;
(* Distributiv Polynomial multiplication with a variable.
Input: A is the polynomial, B is an exponent vector.
Output: A*B *)
PROCEDURE EVDIF2(U,V: LIST): LIST;
(* Exponent vector difference.
Input: U=(u1, ...,ur), V=(v1, ...,vr)
are exponent vectors of length r.
Output: W=(w1, ...,wr) is the componentwise difference of U and V.
Unlike procedure EVDIV this procedure returns 0 and not (0...0) if U=V *)
PROCEDURE EVMTJ(U,V: LIST): LIST;
(* Exponent vector multiple test in the sense of Janet.
Input: U=(u1, ...,ur), V=(v1, ...,vr) are exponent vectors of length r.
Output: t=1 if U is a multiple in the sense of Janet of V, t=0 else. *)
PROCEDURE DIPNML(G: LIST): LIST;
(* Distributive polynomial nonmultiple variable list.
Compute for a polynom G the List of nonmultiplicative variables.
Input: G is a polynomial.
Output: a list of non-multiplicative variables for the leading term of G. *)
PROCEDURE DIPPGL2(F, V, LL: LIST): LIST;
(* Distributive polynomial prolongation list.
Input: F - polynomial which first entry is the total degree of the leading
term; V - list of variables; LL - number of different variables
in F.
Output: PP - List of prolongations of F with non-multiplicative variables
for F from V. *)
PROCEDURE DIPPGL3(F, V, LL: LIST): LIST;
(* Distributive polynom prolongation list.
Input: F - polynomial; V - list of variables; LL - number of variables in F.
Output: PP - List of prolongations of F with non-multiplicative variables
for F from V. *)
PROCEDURE DIPPGL(V: LIST): LIST;
(* Distributive polynomial prolongation list.
Input: V is an arbitrary domain polynomial.
Output: List of prolongations of V with nonmultiplicative variables for V.*)
PROCEDURE DIPVL(V: LIST): LIST;
(* Distributive Polynomial List of Variables.
Input: a polynomial V.
Output: list of variables with class > 1. *)
END DIPCJ.
(* -EOF- *)