% from 8.6.96 hk
% user packages, involutive bases

\section{Construction of involutive bases} %---

We cite from the introduction of the author \cite{GG95} of the package:

``In dieser Arbeit wird ein neuer Algorithmus zur L\"osung von Systemen von
polynomialen Gleichungen im nulldimensionalen Fall vorgestellt.
Diese neue Methode konstruiert eine involutive Basis eines durch eine
Polynommenge erzeugten Ideals. Eine involutive Basis ist eine spezielle Form
einer, m\"oglicherweise redundanten, Gr\"obner-Basis. 
Anstelle der im Buchberger-Algorithmus \cite{Buchb85} zur
Berechnung von Gr\"obner-Basen ben\"otigten S-Polynome arbeitet 
dieser Algorithmus
mit nicht-multiplikativen Verl\"angerungen von Polynomen. 
Weiterhin werden nicht
alle m\"oglichen Reduktionen betrachtet, sondern eine Teilmenge hiervon, die
sogenannten {\em Janet-Reduktionen}.

Diese Arbeit basiert im wesentlichen auf zwei Ver\"offentlichungen von
A.~Yu.~Zharkov und Yu.~A.~Blinkov (\cite{zhbl93} und \cite{zhbl93a}), die
diese Methode entwickelt und vorgestellt haben.''

\index{involutive base}
\index{base, involutive}
This package includes the following modules:

\begin{deflist}{DIPDCIB}
\item[ADEXTRA]  some tools, not absolutely necessary for computing 
                involutive bases.
                \index{ADEXTRA}
\item[DIPCJ]    tools, used from the involutive base algorithms.
                \index{DIPC}
\item[DIPDCIB]  contains the procedure for computing decompositional 
                involutive bases.
                \index{DIPDCI}
\item[DIPIB]    procedures for computing involutive bases for 
                arbitrary domain polynomials.
                \index{DIPI}
\item[DIPIIB]   procedures for computing involutive bases for 
                integral domain polynomials.
                \index{DIPII}
\item[DIPRNIB]  procedures for computing involutive bases for 
                rational number domain polynomials.
                \index{DIPRNI}
\item[MASLOADJ] module which makes procedures available for interactive use.
                \index{MASLOAD}
\end{deflist}{}


\subsection{Computing Janet-irreducible-sets}

\begin{deflist}{DIPDCIB}
\item[DILISJ(F,G,red)] F is the set to be Janet-reduced, G is the result, red is
                   is a flag which shows if a reduction took place. This
                   procedure is for arbitrary domain polynomials.
                \index{DILIS}
\item[G:=DIILISJ(F)]   F is the set to be Janet-reduced, G is the result.
                   This procedure is only for integral domain polynomials.
                \index{DIILIS}
\item[G:=DIRLISJ(F)]   F is the set to be Janet-reduced, G is the result.
                   This procedure is for rational number domain polynomials.
                \index{DIRLIS}
\end{deflist}


\subsection{Computing a Janet-normalform of f modulo G}

\begin{deflist}{DIPDCIB}
\item[ADNORJ(G,f,h,red)] h is a Janet-normalform of f modulo G, 
                     red is a flag which
                     shows if a reduction took place. This procedure is for
                     arbitrary domain polynomials.
                \index{ADNOR}
\item[h:=DIIPNFJ(G,f)]   h is a Janet-normalform of f modulo G. 
                     This procedure is 
                     for integral domain polynomials only.
                \index{DIIPNF}
\item[h:=DIRPNFJ(G,f)]   h is a Janet-normalform of f modulo G. 
                     This procedure is 
                     for rational number domain polynomals only.
                \index{DIRPNF}
\end{deflist}


\subsection{Computing involutive Bases}

F is always a set of polynomials and G is an involutive base of Ideal(F).
The different algorithms for computing involutive bases are only different
implementations of the same idea. They differ in internal details and
in computing time. The quickest version is always the version without a
number in the procedure name.

\subsubsection{arbitrary domain}

\begin{deflist}{DIPDCIB}
\item[G:=DIPIB(F)]  Version from Zharkov, Blinkov: Solving zero-dimensional 
                  involutive systems. This procedure makes use of Gerdt's 
                  criteriums.
                \index{DIPI}
\item[G:=DIPIB2(F)] Version from Zharkov, Blinkov: Involutive Bases of  
                  zero-dimensional ideals.
                \index{DIPIB}
\item[G:=DIPIB3(F)] Version from Zharkov, Blinkov: Involution Approach to 
                  solving systems of algebraic equations.
                \index{DIPIB}
\item[G:=DIPIB4(F)] Another version from Zharkov, Blinkov: Solving 
                  zero-dimensional involutive systems.
                \index{DIPIB}
\end{deflist}

\subsubsection{integral domain}

\begin{deflist}{DIPDCIB}
\item[G:=DIIPIB(F)]  Version from Zharkov, Blinkov: Solving zero-dimensional
                   involutive systems.
                \index{DIIPI}
\item[G:=DIIPIB2(F)] Version from Zharkov, Blinkov: involution approach to
                   solving systems of algebraic equations.
                \index{DIIPIB}
\item[G:=DIIPIB3(F)] Version from Zharkov, Blinkov: Involution approach to
                   Solving Systems of Algebraic Equations.
                \index{DIIPIB}
\end{deflist}

\subsubsection{rational numbers domain}

\begin{deflist}{DIPDCIB}
\item[G:=DIRPIB(F)]  Version from Zharkov, Blinkov: Involution Approach to
                   solving systems of algebraic equations.
                \index{DIRPI}
\item[G:=DIRPIB2(F)] Version from Zharkov, Blinkov: Involutive Bases of
                   zero-dimensional ideals.
                \index{DIRPIB}
\end{deflist}
{\bf Note:} integral domain and rational number domain implementations are only
      experimental implementations. They are not optimized.

\subsection{Setting options}

\begin{deflist}{DIPDCIB}
\item[SetDIPIBopt(opt)] opt is a list with five options: 
  trace-level, procedure
  to use for Janet-reduction, Select Strategy for polynomials, 
  Cancel Coefficient and use of Gerdt-Criteriums (only for DIPIB).
  The options can also be set with the following procedures:
  SetDIPIBTraceLevel, SetDIPIBISJ, SetDIPIBSelect, SetDIPIBCancel, 
  SetDIPIBcrit.
  A trace-level can be given as number between 0 (no information) and
  3 (max. information). With a higher trace-level you get more information 
  about progress of computation.
  For procedures DIPIB2 and DIPIB3 there are two possible selections for
  a Janet-reductions procedure: 1 - DILISJ, 2 - DIPIRLJ.
  Select-strategy means the strategy for selecting polynomials from a set of
  polynomials. Except for DIPIB there are two possible strategys: select the
  polynomial with minimal total degree of the leading term (1) or select the 
  first polynomial from the set (0).
  DIPIB always select the polynomial with minimal total degree of the leading
  term.
  For integral domain polynomials you can choose two different procedures to
  cancel down coefficients. 1: Cancel down with the gcd of the coefficients 
  or 0: Cancel down with the leading coefficient (if possible).
  The last option, the Gerdt-criteriums, is only possible for DIPIB. The
  default (1) is an use of these criteriums. With a 0 you can swith the use 
  off.
                \index{SetDIPIBop}
  
\item[SetDCIBopt(opt)] opt is a list with four options: 
  trace-level, decomposition,
  variable ordering optimization, depth of tree. To set an option you can also
  use: SetDCIBTraceLevel, SetDCIBDecomp, SetDCIBVarOrdOpt, SetDCIBdepth.
  The trace-level has the same meaning as before.
  Decomposition means the choice between factorisation (1) and squarefree 
  decomposition (2). Default is factorisation.
  If you set DCIBVarOrdOpt to 1 then the variable ordering is optimized
  before factorisation. The old order is restored after factorisation.
  With the last option there is a possibility to restrict the depth of the
  computation tree. A negative number (default) means an unrestricted growth
  of tree. A positive number means a restriction of depth to this number.
                \index{SetDCIBop}

\end{deflist}

\subsection{Example} %------------------------------------

The following example is taken from \cite{BGK85} Bsp 4, page 91. 

{\footnotesize %-------------------------
\begin{verbatim} 
       DIPTODEF(4). 
       dp:=ADDDREAD().
       RN 6
       V:=LIST("z","y","x","w","v").    
       F:=DILRD(V,dp). 
       (
       (v**2 - v + 2 w**2 + 2 x**2 + 2 y**2 + 2 z**2),
       (2 v w + 2 w x + 2 x y + 2 y z - w),
       (2 v x + w**2 + 2 w y + 2 x z - x),
       (2 v y + 2 w x + 2 w z - y),
       (v + 2 w + 2 x + 2 y + 2 z -1)
       )
       G:=DIPIB(F).
       DILWR(G,V).
\end{verbatim}
}

The involutive base \verb/G/ is as follows. The computing time 
was 15374ms on a PC running NeXTStep. 

{\footnotesize %-------------------------
\begin{verbatim} 
Time: read = 0, eval = 15374, print = 360, gc = 1641.

(  y**2 x +0.363636 y**3 +0.018595 z y**2 -2.016379 z**2 y -1.540684 z**3 -0.04
5971 x**2 -0.240458 y x -0.161195 z x -0.193745 y**2 +0.079433 z y +0.413740 z*
*2 -0.003973 w -0.026042 x +0.007344 y +0.033274 z )
 
(  x w + x**2 + y x +0.222222 z x +0.111111 y**2 -0.333333 z y -0.333333 z**2 -
0.055556 w -0.222222 x +0.111111 z )
 
(  v +2.000000 w +2.000000 x +2.000000 y +2.000000 z -1.000000 )
 
(  y w +0.500000 x**2 +2.000000 y x +1.222222 z x +1.611111 y**2 +2.666667 z y 
+1.166667 z**2 -0.055556 w -0.222222 x -0.500000 y -0.388889 z )
 
(  w**2 - x**2 -4.000000 y x -3.555556 z x -2.777778 y**2 -6.666667 z y -3.6666
67 z**2 -0.111111 w +0.555556 x + y +1.222222 z )
 
(  z w + y x +2.222222 z x +1.111111 y**2 +3.666667 z y +2.666667 z**2 -0.05555
6 w -0.222222 x -0.500000 y -0.888889 z )
 
(  z**2 x +0.500000 z y**2 +2.181818 z**2 y +1.772727 z**3 +0.045455 y x -0.073
232 z x +0.054293 y**2 -0.219697 z y -0.583333 z**2 +0.012626 w +0.016414 x +0.
011364 y -0.002525 z )
 
(  z x**2 -1.272727 y**3 -4.326446 z y**2 -8.019534 z**2 y -4.479715 z**3 -0.13
7397 x**2 -0.277611 y x -0.482261 z x +0.302822 y**2 +1.224706 z y +1.403237 z*
*2 -0.034300 w -0.073618 x +0.001878 y +0.030000 z )
 
(  y x**2 -0.181818 y**3 -1.884298 z y**2 -1.037265 z**2 y -0.422840 z**3 -0.00
8264 x**2 +0.108866 y x +0.203072 z x +0.385383 y**2 +0.890208 z y +0.407713 z*
*2 -0.011587 w -0.032749 x -0.100263 y -0.088922 z )

(  x**3 +0.363636 y**3 +3.154959 z y**2 +4.905935 z**2 y +2.924606 z**3 -0.0914
26 x**2 +0.190120 y x +0.312772 z x -0.231968 y**2 -0.953212 z y -0.927169 z**2
 +0.032804 w +0.034495 x +0.051352 y -0.015900 z )
 
(  z y x +0.500000 y**3 +2.181818 z y**2 +3.029752 z**2 y +1.353719 z**3 +0.022
727 x**2 -0.042562 y x -0.012489 z x -0.273186 y**2 -0.810193 z y -0.537879 z**
2 +0.010147 w +0.041827 x +0.033678 y +0.028880 z )
 
(  z**3 y +1.076923 z**4 -0.019231 y**3 -0.011924 z y**2 -0.160639 z**2 y -0.41
8033 z**3 +0.005290 x**2 -0.003227 y x +0.030081 z x -0.007102 y**2 +0.024303 z
 y +0.010086 z**2 +0.000245 w -0.000906 x -0.001463 y +0.003200 z )
 
(  y**4 +1.794872 z**4 -0.107827 y**3 +0.638567 z y**2 +1.201326 z**2 y +0.0772
15 z**3 +0.069958 x**2 +0.077700 y x +0.120242 z x -0.109202 y**2 -0.084208 z y
 -0.226895 z**2 +0.007726 w +0.005048 x +0.000818 y +0.000575 z )
 
(  z**2 y**2 -0.538462 z**4 +0.065268 y**3 -0.030036 z y**2 -0.182495 z**2 y +0
.178685 z**3 -0.011406 x**2 -0.017091 y x -0.039788 z x -0.017810 y**2 -0.04813
2 z y -0.018073 z**2 +0.000773 w +0.003669 x +0.007610 y +0.006114 z )
 
(  z y**3 -0.750583 z**4 -0.212775 y**3 -0.627319 z y**2 -0.474680 z**2 y -0.01
4284 z**3 -0.013292 x**2 +0.023914 y x -0.006341 z x +0.092225 y**2 +0.127603 z
 y +0.131262 z**2 -0.004899 w -0.009098 x -0.010085 y -0.014367 z )
 
(  z**5 -0.430661 z**4 +0.049304 y**3 +0.091976 z y**2 +0.206040 z**2 y +0.0901
98 z**3 +0.001628 x**2 -0.003740 y x -0.001277 z x -0.014330 y**2 -0.053060 z y
 -0.027672 z**2 +0.000690 w +0.003135 x +0.002239 y +0.002807 z )
\end{verbatim}
}

%\section{} %----------
%\index{}
%{\footnotesize %-------------------------
%\begin{verbatim} 
%\end{verbatim}
%}
%{\footnotesize %-------------------------
%\begin{verbatim} 
%\end{verbatim}
%}
