```(* ----------------------------------------------------------------------------
* \$Id: DIPDCIB.md,v 1.1 1995/10/12 14:44:48 pesch Exp \$
* ----------------------------------------------------------------------------
* This file is part of MAS.
* ----------------------------------------------------------------------------
* Copyright (c) 1995 Universitaet Passau
* ----------------------------------------------------------------------------
* \$Log: DIPDCIB.md,v \$
* Revision 1.1  1995/10/12 14:44:48  pesch
* Diplomarbeit Rainer Grosse-Gehling.
* Involutive Bases.
* Slightly edited.
*
* ----------------------------------------------------------------------------
*)

DEFINITION MODULE DIPDCIB;

(* DIP Decompositional Involutive Bases Definition Module. *)

FROM MASSTOR IMPORT LIST;

CONST rcsidi = "\$Id: DIPDCIB.md,v 1.1 1995/10/12 14:44:48 pesch Exp \$";

PROCEDURE SetDCIBopt(options: LIST);
(* Set decompositional involutive base options.
Input: a list of max. 4 options in the order: TraceLevel, DecomProc,
VarOrd, Depth of tree. *)

PROCEDURE SetDCIBTraceLevel(TL: INTEGER);
(* Set Decompositional involutive base Trace Level.
Input: an integer 0<= TL <= 3,
0: default, no output,
>0: output of time,
>1: output of messages about tree of computation,
>2: detailed messages about tree of computation. *)

PROCEDURE SetDCIBDecomp(DCP: INTEGER);
(* Set decompositional involutive base decomposition.
Set the procedure which is used for polynomial decomposition.
1: complete factorisation
2: squarefree decomposition  *)

PROCEDURE SetDCIBVarOrdOpt(VOO: INTEGER);
(* Set decompositional involutive base variable order option.
VOO is an integer with meaning:
0: do not optimize,
1: optimize at factorization *)

PROCEDURE SetDCIBdepth(d: INTEGER);
(* Set decompositional involutive base depth of tree.
Input: an integer with
<0: unrestricted growth of tree
0: no computation possible,
>0: depth of tree is restricted through d *)

PROCEDURE InvolutiveBases(G, V: LIST): LIST;
(* Involutive Bases.
G is a list of polynomials in distributive representation
over an arbitrary domain,
returns a list (IB1,...,IBk) of involutive bases,
where Z(G) = Z(IB1) v ... v Z(IBk). *)

PROCEDURE DILNFJ(H,G: LIST): INTEGER;
(* Distributive Polynomial List normalform in the sense of Janet.
H,G are distributive polynomial lists,
returns 0 if each polynomial in H is Janet-reducible to 0 modulo G,
1 else. *)

PROCEDURE IBLWR(PP,V: LIST);
(* Involutive bases list write.
PP is a list of involutive bases in distributive representation.
V is a variable list *)

PROCEDURE DecCounter(VAR counter: LIST; VAR length_of_counter: INTEGER);
(* Decrement counter.
counter is a list of integers, the first element of counter is removed *)

PROCEDURE IncCounter(VAR counter: LIST; VAR loc: INTEGER; add: INTEGER);
(* Increment counter.
Increment the first entry of the counter list or append a new element.
Input: counter: a list of integers,
add = 0: append a new element and increment counterlength loc, or