Given a &Grob; Basis <M>G</M> for an ideal <M>J</M>
over a polynomial ring <M>\mathbb{R}</M>,
the remainder of any polynomial <M>p \in \mathbb{R}</M>
with respect to <M>G</M> is unique.
Although this remainder is unique, there may be many ways of finding it,
as it is possible that several polynomials in <M>G</M> divide <M>p</M>,
each giving a <E>reduction path</E> for <M>p</M>.
<Subsection Label="subs-ch4ex402">
<Heading>An Example</Heading>
Consider the DegLex &Grob; basis
<M>G := \{g_1, g_2, g_3\} = \{a^2-2ab+3, \: 2ab+b^2+5, \:
\frac{5}{4}b^3-\frac{5}{2}a+\frac{37}{4}b\}</M>
over the polynomial ring <M>\mathbb{Q}[a,b]</M>,
and consider the polynomial <M>p := a^2b+b^3+8b</M>.
The remainder of <M>p</M> with respect to <M>G</M> is <M>0</M>
(so that <M>p</M> is a member of the ideal <M>J</M> generated by <M>G</M>),
but there are two ways of obtaining this remainder,
as shown in the following diagram.
<Display>
<![CDATA[
\vcenter{\xymatrix{
& a^2b+b^3+8b \ar[dl]_{g_1} \ar[dr]^{g_2} \\
2ab^2+b^3+5b \ar[d]_{g_2}
&& -\frac{1}{2}ab^2 + b^3 - \frac{5}{2}a+8b \ar[d]^{g_2} \\
0 && \frac{5}{4}b^3-\frac{5}{2}a+\frac{37}{4}b \ar[d]^{g_3} \\
&& 0
}}
]]></Display>
</Subsection>
An <E>Involutive Basis</E> for <M>J</M> is a &Grob; Basis <M>G</M>
such that there is only <E>one</E> possible reduction path for any
polynomial <M>p \in \mathbb{R}</M>.
In order to find such a basis, we restrict which reductions
or divisions may take place by requiring,
for each potential reduction of a polynomial <M>p</M>
by a polynomial <M>g_i \in G</M>
(so that <M>LM(p) = LM(g_i)\times u</M> for some monomial <M>u</M>),
some extra conditions on the variables in <M>u</M> to be satisfied,
namely that all variables in <M>u</M> have to be in a set of
<E>multiplicative variables</E> for <M>g_i</M>, a set that is
determined by a particular choice of an <E>involutive division</E>.
</Section>
<Section Label="sec-invdivc">
<Heading>Commutative Involutive Divisions</Heading>
Recall that a commutative monomial <M>u</M> is divisible by
another monomial <M>w</M> if there exists a third monomial <M>u'
such that <M>u = wu'.
We use the notation <M>w \mid u</M> and refer to <M>w</M>
as a <E>conventional</E> <Index>conventional divisor</Index>
divisor of <M>u</M>.
An involutive division <M>I</M> partitions the variables in the
polynomial ring into sets of <E>multiplicative</E>
and <E>nonmultiplicative</E> variables for each polynomial.
The set of multiplicative variables for <M>w</M> is denoted by
<M>M_I(w)</M>.
Then <M>w</M> is an <E>involutive divisor</E> of <M>u</M>,
<Index>involutive divisor</Index> written <M>w \mid_I u</M>,
if all variables in <M>u' are in M_I(w).
<Subsection Label="subs-ch4ex411">
<Heading>Example</Heading>
Let <M>u := ab^3c</M>, <M>v := abc^3</M>
and <M>w := bc</M> be three monomials
over the polynomial ring <M>\mathbb{R} := \mathbb{Q}[a,b,c]</M>.
Let an involutive division <M>I</M> partition the variables
in <M>\mathbb{R}</M> into the following two sets of variables
for the monomial <M>w</M>:
multiplicative = <M>\{a,b\}</M>; nonmultiplicative = <M>\{c\}</M>.
It is true that <M>w</M> conventionally divides
both monomials <M>u</M> and <M>v</M>,
but <M>w</M> only involutively divides monomial <M>u</M> as,
defining <M>u' := ab^2 and v' := ac^2</M>
(so that <M>u = wu' and v = wv'</M>),
we observe that all variables in <M>u' are in M_I(w),
but the variables in <M>v' (in particular the variable c)
are not all in <M>M_I(w)</M>.
So <M>w \mid_I u</M> and <M>w \nmid_I v</M>.
</Subsection>
<Subsection Label="subs-select-divcp">
<Heading>Selecting a Division</Heading>
<Index>CommutativeDivision</Index>
The global variable <C>CommutativeDivision</C> is a string which can take
values "Pommaret", "Thomas" or "Janet".
The default is "Pommaret".
The example shows how to select the Pommaret division.
</Subsection>
<Example>
<![CDATA[
gap> CommutativeDivision := "Pommaret"; "Pommaret"
]]>
</Example>
<Subsection Label="subs-select-ordcp">
<Heading>Selecting an Ordering</Heading>
<Index>orderings</Index>
These three divisions are defined for a set of monomials,
but we shall define a <C>DivisionRecord</C> below for a set of polynomials.
The first step is therefore to select the leading monomials from this set,
and that will bepend of the <E>ordering</E> chosen.
We shall be using the orderings provided by the main &GAP; library
as described in <Ref Sect="sec-orderings"/>.
<P/>
When calling <C>MonomialLexOrdering</C>, <C>MonomialGrlexOrdering</C> etc.,
it is essential to provide a list of indeterminates, as shown in the example.
Otherwise some of the functions in this package will throw an error.
</Subsection>
<Example>
<![CDATA[
gap> R := PolynomialRing( Rationals, [ "x", "y", "z" ] );;
gap> x := R.1;; y := R.2;; z := R.3;;
gap> ord := MonomialLexOrdering( [x,y,z] );;
]]>
</Example>
<ManSection>
<Oper Name="PommaretDivision"
Arg="alg mons order" />
<Description>
Let <M>\mathbb{R} = \mathbb{F}[a_1,\ldots,a_n]</M>
with <M>a_1 > a_2 > \ldots > a_n</M>,
and let <M>w</M> be a polynomial in <M>\mathbb{R}</M>
with leading monomoial
<M>a_1^{e_1}a_2^{e_2} \ldots a_n^{e_n}</M> where
<M>e_i</M> is the <E>first</E> non-zero exponent.
The Pommaret involutive division <M>\mathbb{P}</M> sets
<M>M_{\mathbb{P}}(w) = \{a_1, a_2, \ldots, a_i\}</M>.
<P/>
Because <M>M_{\mathbb{P}}(w)</M> does not depend in any way on
the other leading monomials in <E>polys</E>, this is a <E>global</E> division.
<P/>
In the example the first five monomials <M>u_i</M> in <M>U</M> contain
a power of <M>x</M>, so <M>M_{\mathbb{P}}(u_i) = \{x\}</M>.
Then <M>u_6</M> involves <M>y</M> and <M>z</M>,
so <M>M_{\mathbb{P}}(u_6) = \{x,y\}</M>,
and similarly <M>M_{\mathbb{P}}(u_7) = \{x,y,z\}</M>.
<P/>
</Description>
</ManSection>
<Example>
<![CDATA[
gap> U := [ x^5*y^2*z, x^4*y*z^2, x^2*y^2*z, x*y*z^3, x*z^3, y^2*z, z ];
[ x^5*y^2*z, x^4*y*z^2, x^2*y^2*z, x*y*z^3, x*z^3, y^2*z, z ]
gap> PommaretDivision( R, U, ord );
[ [ 1 ], [ 1 ], [ 1 ], [ 1 ], [ 1 ], [ 1, 2 ], [ 1 .. 3 ] ]
]]>
</Example>
<ManSection>
<Oper Name="ThomasDivision"
Arg="alg mons order" />
<Description>
Let <M>\mathbb{R} = \mathbb{F}[a_1,\ldots,a_n]</M>
with <M>a_1 > a_2 > \ldots > a_n</M>,
and let <M>P</M> be a set of polynomials <M>P = \{p_1,\ldots,p_m\}</M>
in <M>\mathbb{R}</M> with leading monomials <M>U = \{u_1,\ldots,u_m\}</M>
where <M>u_i = a_1^{e^1_i}a_2^{e^2_i} \ldots a_n^{e^n_i}</M>.
The Thomas involutive division <M>\mathbb{T}</M> sets
<M>a_i</M> to be multiplicative for <M>p_j</M> and <M>u_j</M>
if <M>e^i_j = \max_k e^i_k</M> for all <M>1 \leqslant k \leqslant m</M>.
<P/>
In the example, using the same seven monomials,
the highest powers of <M>[x,y,z]</M> are <M>[5,2,3]</M> respectively.
So <M>x</M> is multiplicative only for <M>u_1</M>,
<M>y</M> is multiplicative for <M>\{u_1,u_3,u_6\}</M>,
and <M>z</M> is multiplicative only for <M>u_4</M> and <M>u_5</M>.
Note that two of the monomials have no multiplicative variable.
<P/>
</Description>
</ManSection>
<Example>
<![CDATA[
gap> ThomasDivision( R, U, ord );
[ [ 1, 2 ], [ ], [ 2 ], [ 3 ], [ 3 ], [ 2 ], [ ] ]
]]>
</Example>
<ManSection>
<Oper Name="JanetDivision"
Arg="alg mons order" />
<Description>
Let <M>\mathbb{R} = \mathbb{F}[a_1,\ldots,a_n]</M>
with <M>a_1 > a_2 > \ldots > a_n</M>,
and let <M>P</M> be a set of polynomials <M>P = \{p_1,\ldots,p_m\}</M>
in <M>\mathbb{R}</M> with leading monomials <M>U = \{u_1,\ldots,u_m\}</M>
where <M>u_i = a_1^{e^1_i}a_2^{e^2_i} \ldots a_n^{e^n_i}</M>.
The Janet involutive division <M>\mathbb{J}</M> sets <M>a_n</M>
to be multiplicative for <M>u_j</M> provided
<M>e^n_j = \max_k e^n_k</M> for all <M>1 \leqslant k \leqslant m</M>.
To determine whether <M>a_i</M> is multiplicative for <M>u_j</M>,
let <M>L = [e^{i+1}_j,e^{i+2}_j,\ldots,e^n_j]</M>.
Let <M>S</M> be the subset of <M>\{1,\ldots,m\}</M> containing those
<M>k</M> such that <M>[e^{i+1}_k,e^{i+2}_k,\ldots,e^n_k] = L</M>.
Then <M>a_i</M> is multiplicative for <M>u_j</M> provided
<M>e^i_j = \max_{k \in S}e^i_k</M>.
<P/>
In the example, recall that the exponent lists for the seven monomials are
<Display>
[5,2,1],~~~ [4,1,2],~~~ [2,2,1],~~~ [1,1,3],~~~ [1,0,3],~~~ [0,2,1],~~~ [0,0,1].
</Display>
As with the Thomas division, <M>\max_k e^3_k = 3</M> and
<M>z</M> is multiplicative only for <M>u_4</M> and <M>u_5</M>.
<P/>
For <M>y</M>, <M>L = [1]</M> when <M>k \in \{1,3,6,7\}</M>
and <M>\max_{\{1,3,6,7\}} e^2_k = 2</M>, so <M>y</M>
is multiplicative for <M>u_1, u_3</M> and <M>u_6</M>,
but not for <M>u_7</M>.
<M>L = [2]</M> only for <M>u_2</M>, so <M>y</M>
is multiplicative for <M>u_2</M>.
<M>L = [3]</M> for <M>u_4</M> and <M>u_5</M>, and <M>e^2_4 > e^2_5</M>,
so <M>y</M> is multiplicative for <M>u_4</M> but not <M>u_5</M>.
<P/>
For <M>x</M>, <M>L = [2,1]</M> for <M>k \in \{1,3,6\}</M> and
<M>e^1_1 = 5</M> is greater than <M>e^1_3</M> and <M>e^1_6</M>,
so <M>x</M> is multiplicative for <M>u_1</M>.
The other values for <M>L</M>, namely <M>[1,2], [1,3], [0,3]</M>
and <M>[0,1]</M>, occur just once each, so <M>x</M> is multiplicative
for <M>u_2, u_4, u_5</M> and <M>u_7</M>.
<P/>
</Description>
</ManSection>
<Example>
<![CDATA[
gap> JanetDivision( R, U, ord );
[ [ 1, 2 ], [ 1, 2 ], [ 2 ], [ 1, 2, 3 ], [ 1, 3 ], [ 2 ], [ 1 ] ]
]]>
</Example>
<ManSection>
<Func Name="DivisionRecord"
Arg="alg polys order" />
<Oper Name="DivisionRecordCP"
Arg="alg polys order" />
<Description>
The global function <C>DivisionRecord</C> calls one of the operations
<C>DivisionRecordCP</C> and <C>DivisionRecordNP</C>, depending on whether
the algebra is commutative or not.
In the commutative case, this function finds the sets of multiplicative
variables for a set of polynomials using one of the involutive divisions
listed above.
The record constructed has three fields: the chosen division;
a list of lists of positions of the multiplicative variables;
and the set of polynomials.
<P/>
In the following example, polynomials <M>\{u = b^3-3a, v=a^3-3b\}</M>
define an ideal and form a &Grob; basis for that ideal.
Using the Pommaret division, <M>M_{\mathbb{P}}(u) = \{a,b\}</M>
and <M>M_{\mathbb{P}}(v) = \{a\}</M>.
The variable <C>drec2.mvars</C> in the listing below contains the
<E>positions</E> of these variables in the generating set <M>\{a,b\}</M>.
</Description>
</ManSection>
<Example>
<![CDATA[
gap> R := PolynomialRing( Rationals, [ "a", "b" ] );;
gap> a := R.1;; b := R.2;;
gap> L2 := [ b^3 - 3*a, a^3 - 3*b ];;
gap> ord := MonomialGrlexOrdering( [a,b] );;
gap> GB2 := ReducedGroebnerBasis( L2, ord );;
gap> GB2 = L2;
true
gap> CommutativeDivision := "Pommaret";;
gap> drec2 := DivisionRecordCP( R, L2, ord );
rec( div := "Pommaret", mvars := [ [ 1, 2 ], [ 1 ] ],
polys := [ b^3-3*a, a^3-3*b ] )
]]>
</Example>
In the <E>reduction diagrams</E> below the nodes <M>(j,k)</M>
represent the monomials <M>a^jb^k</M>.
The lead monomials of <M>u</M> and <M>v</M> are marked by these two names.
In the left hand diagram the two shaded areas indicate those monomials
which are conventionally reducible by <M>u</M> and by <M>v</M>,
so that the doubly shaded area contains those monomials which are
conventionally reducible by both.
For an involutive division, this must be avoided.
<P/>
In the right-hand diagram we see that <M>u</M> involutively divides
the same set of monomials in the main shaded area.
On the other hand <M>v</M> just involutively divides monomials
<M>\{a^j \mid j \ge 3\}</M>.
So none of the monomials <M>\{a^jb, a^jb^2 \mid j \ge 3\}</M>
reduce by <M>v</M> involutively.
The operation <C>InvolutiveBasis</C>, to be described below,
produces two further polynomials, <M>w = vb = a^3b-3b^2</M> and <M>vb^2</M>
which reduces by <M>u</M> to <M>x = a^3b^2 - 9a</M>.
Both <M>w</M> and <M>x</M> have multiplicative variables <M>\{a\}</M>
and the monomials which they can reduce lie on the two horizantal
line segments in the right-hand diagram.
In this way, all the conventionally reducible monomials
are involutively reducible by just one of <M>\{u,v,w,x\}</M>.
<P/>
<P/>
The polynomial <M>p = a^3b^3 + 2a^3b + 3ab^3</M>
reduces involutively as follows.
<Display>
p \stackrel{u}{\longrightarrow} 3a^4 + 2a^3b + 3ab^3
\stackrel{v}{\longrightarrow} 2a^3b + 3ab^3 + 9ab
\stackrel{w}{\longrightarrow} 3ab^3 + 9ab + 6b^2
\stackrel{u}{\longrightarrow} 9a^2 + 9ab + 6b^2
</Display>
This reduction is computed in section <Ref Sect="InvolutiveBasis"/>.
<ManSection>
<Func Name="IPolyReduce"
Arg="algebra polynomial DivisionRecord order" />
<Oper Name="IPolyReduceCP"
Arg="algebra polynomial DivisionRecord order" />
<Description>
The global function <C>IPolyReduce</C> calls one of the operations
<C>IPolyReduceCP</C> and <C>IPolyReduceNP</C>
depending on whether the algebra is commutative or not.
This function reduces a polynomial <M>p</M> using the current
overlap record for a basis, and an ordering.
<P/>
In the example, using <C>drec2</C>, the polynomial <M>p</M> reduces
only to <M>2a^3b+9a^2+9ab</M>
<Display>
p \stackrel{u}{\longrightarrow} 3a^4 + 2a^3b + 3ab^3
\stackrel{v}{\longrightarrow} 2a^3b + 3ab^3 + 9ab
\stackrel{u}{\longrightarrow} 2a^3b + 9a^2 + 9ab
</Display>
because the polynomial <M>x</M>
is not available to reduce <M>2a^3b</M> to <M>6b^2</M>.
</Description>
</ManSection>
<Example>
<![CDATA[
gap> p := a^3*b^3 + 2*a^3*b + 3*a*b^3;;
gap> q := IPolyReduce( R, p, drec2, ord );
2*a^3*b+9*a^2+9*a*b
]]>
</Example>
<ManSection>
<Func Name="LoggedIPolyReduce"
Arg="algebra polynomial DivisionRecord order" />
<Oper Name="LoggedIPolyReduceCP"
Arg="algebra polynomial DivisionRecord order" />
<Description>
The global function <C>LoggedIPolyReduce</C> calls one of the operations
<C>LoggedIPolyReduceCP</C> and <C>LoggedIPolyReduceNP</C>
depending on whether the algebra is commutative or not.
This function is similar to <C>IPolyReduce</C>,
reducing a polynomial <M>p</M> using the current
overlap record for a basis, and an ordering.
It's output, however, is a record containing, as well as the reduced
polynomial <M>r</M>, logging information which shows how the reduction
has been obtained:
<Display>
p ~=~ r + \sum_i logs[i] * polys[i].
</Display>
<P/>
In the example <C>r.result</C> is equal to the previous result <M>q</M>,
and the equation above is verified:
<Display>
a^3b^3 + 2a^3b + 3ab^3 ~=~ (2a^3b+9a^2+9ab) + (a^3+3a)(b^3-3a) + 3a(a^3-3b).
</Display>
</Description>
</ManSection>
<Example>
<![CDATA[
gap> r := LoggedIPolyReduceCP( R, p, drec2, ord );
rec( logs := [ a^3+3*a, 3*a ], polys := [ b^3-3*a, a^3-3*b ],
result := 2*a^3*b+9*a^2+9*a*b )
gap> r.result = q;
true
gap> p = r.result + r.logs[1]*r.polys[1] + r.logs[2]*r.polys[2];
true
]]>
</Example>
<ManSection>
<Func Name="IAutoreduce"
Arg="alg polys order" />
<Oper Name="IAutoreduceCP"
Arg="alg polys order" />
<Description>
The global function <C>IAutoreduce</C> calls one of the operations
<C>IAutoreduceCP</C> and <C>IAutoreduceNP</C>
depending on whether the algebra is commutative or not.
This function applies <C>IPolyReduce</C> to a list of polynomials recursively
until no more reductions are possible.
More specifically, this function involutively reduces each member of a
list of polynomials with respect to all the other members of the list,
removing the polynomial from the list if it reduces involutively to <M>0</M>.
This process is iterated until no more reductions are possible.
<P/>
If no reduction takes place, so that the result is equal to the initial
list of polynomials, then <C>true</C> is returned.
<P/>
In the example we form <C>L3</C> by adding <M>p</M> to <C>L2</C>.
On applying <C>IAutoreduceCP</C>, only <M>p</M> reduces,
and the concatenation of <C>L2</C> with <M>q</M> is returned.
Starting with <C>L4 = [u,v,w,x]</C>, there are no reductions,
and <C>true</C> is returned.
<P/>
</Description>
</ManSection>
<Example>
<![CDATA[
gap> L3 := Concatenation( L2, [p] );;
gap> IAutoreduceCP( R, L3, ord );
[ b^3-3*a, a^3-3*b, 2*a^3*b+9*a^2+9*a*b ]
gap> L4 := Concatenation( L2, [ a^3*b-3*b^2, a^3*b^2-9*a ] );;
gap> IAutoreduceCP( R, L4, ord );
true
]]>
</Example>
</Section>
<Section Label="sec-compibc">
<Heading>Computing a Commutative Involutive Basis</Heading>
The involutive algorithm for constructing an involutive basis
uses <E>prolongations</E> and <E>autoreduction</E>.
<Subsection Label="subs-prolong">
<Heading>Prolongations and Autoreduction</Heading>
Given a set of polynomials <M>P</M>, a <E>prolongation</E> of <M> p \in P</M>
is a product <M>pa_i</M> where the generator <M>a_i</M> is <E>not</E>
multiplicative with respect to the current involutive division.
<P/>
A set of polynomials <M>P</M> is said to be <E>autoreduced</E>
if no polynomial <M>p \in P</M> contains a term which is involutively divisible by some polynomial <M>p' \in P \setminus \{p\}.
<P/>
We denote by <M>rem_I(p,Q)</M> the involutive remainder of
polynomial <M>p</M> with respect to a set of polynomials <M>Q</M>.
Here is the <E >Commutative Autoreduction Algorithm</E>:
<Listing><![CDATA[
Input: a set of polynomials P = {p_1,p_2,...,p_n} and an involutive division I
while there exists p_i in P such that rem_I(p_i, P\{p_i}) <> p_i do
q := Rem_I(p_i, P\{p_i});
P := P\{p_i};
if (q<>0) then
P := P union {q};
fi;
od;
return P;
]]></Listing>
<P/>
It can be shown that if <M>P</M> is a set of polynomials
over a polynomial ring <M>\mathbb{R} = \mathbb{F}[a_1,\ldots,a_n]</M>,
such that <M>P</M> is autoreduced with respect to an
involutive division <M>I</M>,
and if <M>p,q</M> are two polynomials in <M>\mathbb{R}</M>, then
<M>rem_I(p,P) + rem_I(q,P) = rem_I(p+q,P)</M>.
<P/>
Given an involutive division <M>I</M>
and an admissible monomial ordering <M>O</M>,
an autoreduced set of polynomials <M>P</M>
is a <E>locally involutive basis</E> with respect to <M>I</M> and <M>O</M>
if any prolongation of any <M>p_i \in P</M>
involutively reduces to zero using <M>P</M>.
Further, <M>P</M> is an <E>involutive basis</E>
with respect to <M>I</M> and <M>O</M> if any multiple <M>p_it</M>
of any <M>p_i \in P</M> by any term <M>t</M>
involutively reduces to zero using <M>P</M>.
<P/>
The <E>Commutative Involutive Basis Algorithm</E>:
<Listing><![CDATA[
Input: a basis F = {f_1,f_2,...,f_m} for an ideal J
over a commutative polynomial ring R[a_1,...,a_n];
an admissible monomial ordering O;
a continuous and constructive involutive division I
Output: an involutive basis G = {g_1,g_2,...,g_k} for J (if it terminates)
G := { };
F := autoreduction of F with respect to O and I;
while G = { } do
P := set of all prolongations f_i*a_j, 1<=i<=m, 1<=j<=n;
q := 0;
while (P <> { }) and (q=0) do
p := a polynomial in P with minimal lead monomial w.r.t. O;
P := P \ {p};
q := rem_I(p,F);
od;
if (q <> 0) then ## new basis element found
F := autoreduction of (F union {q})
else ## all the prolongations have reduced to zero
G := F;
fi;
od;
return G;
]]></Listing>
<P/>
</Subsection>
<ManSection>
<Func Name="InvolutiveBasis"
Arg="alg polys order" />
<Oper Name="InvolutiveBasisCP"
Arg="alg polys order" />
<Description>
The global function <C>InvolutiveBasis</C> calls one of the operations
<C>InvolutiveBasisCP</C> and <C>InvolutiveBasisNP</C>
depending on whether the algebra is commutative or not.
This function finds an involutive basis for the ideal generated
by a set of polynomials, using a chosen ordering,
and returns a division record.
<P/>
Any involutive basis returned by this algorithm is a &Grob; basis,
and remainders are involutively unique with respect to this basis.
<P/>
</Description>
</ManSection>
<Example>
<![CDATA[
gap> ibasP := InvolutiveBasis( R, L2, ord );
rec( div := "Pommaret", mvars := [ [ 1, 2 ], [ 1 ], [ 1 ], [ 1 ] ],
polys := [ b^3-3*a, a^3-3*b, a^3*b-3*b^2, a^3*b^2-9*a ] )
gap> r := IPolyReduce( R, p, ibasP, ord );
9*a^2+9*a*b+6*b^2
]]>
</Example>
Here we have returned to the example in section <Ref Sect="DivisionRecord"/>.
Starting with <M>F=\{u,v\}</M>, there is only one prolongation,
<M>P=\{w=vb\}</M>, and <M>F</M> becomes <M>\{u,v,w\}</M>.
At the second iteration, <M>P=\{vb,wb\}</M>; <M>vb</M> reduces to zero;
<M>wb</M> reduces to <M>x=a^3b^2-9a</M>;
and <M>F</M> becomes <M>\{u,v,w,x\}</M>.
At the third iteration <M>P=\{vb,wb,xb\}</M> and all three of these
reduce to zero, so <M>G = F</M> is returned.
<P/>
It is then shown that the multiplicative variables for <M>\{u,v,w,x\}</M>
are <M>\{\{a,b\},\{a\},\{a\},\{a\}\}</M>.
<P/>
Finally, the full reduction <M>r</M> of <M>p</M> is computed.
<P/>
If, instead of the Pommaret division, we use Janet or Thomas we obtain:
<P/>
<Example>
<![CDATA[
gap> CommutativeDivision := "Janet";;
gap> ibasJ := InvolutiveBasis( R, L2, ord );;
gap> ( ibasJ.mvars = ibasP.mvars ) and ( ibasJ.polys = ibasP.polys );
true
gap> CommutativeDivision := "Thomas";;
gap> ibasT := InvolutiveBasis( R, L2, ord );
rec( div := "Thomas",
mvars := [ [ 2 ], [ 1 ], [ 2 ], [ 1 ], [ 2 ], [ 1 ], [ 1, 2 ] ],
polys := [ b^3-3*a, a^3-3*b, a*b^3-3*a^2, a^3*b-3*b^2, a^2*b^3-9*b,
a^3*b^2-9*a, a^3*b^3-9*a*b ] )
]]>
</Example>
The Janet division gives the same involutive basis as Pommaret,
but the Thomas Division produces <M>7</M>, rather than <M>4</M> polynomials:
<Display>
[u,v,y,w,z,x,t] ~=~
[~ b^3-3a,\ a^3-3b,\ ab^3-3a^2,\ a^3b-3b^2,\
a^2b^3-9b,\ a^3b^2-9a,\ a^3b^3-9ab ~].
</Display>
<P/>
The multiplicative variables for these polynomials are
<M>[ \{b\}, \{a\}, \{b\}, \{a\}, \{b\}, \{a\}, \{a,b\} ]</M>,
so the reduction diagram for the Thomas basis is:
<Display>
<![CDATA[
\vcenter{\xymatrix@=1em{
b & & & & & & & & \\
: \ar[u] & \cdot & \cdot & \cdot \ar@{-}[ur]
& \cdot & \cdot & \cdot & & \\
5 \ar@{-}[u] & \cdot & \cdot & \cdot \ar@{-}[uurr]
& \cdot & \cdot & \cdot & & \\
4 \ar@{-}[u] & \cdot & \cdot
& \cdot \ar@{-}[uuurrr] & \cdot & \cdot & \cdot & & \\
u \ar@{-}[u] & y \ar@{-}[uuuu] & z \ar@{-}[uuuu]
& t \ar@{-}[uuuurrrr] \ar@{-}[uuuu] \ar@{-}[rrrr]
& \cdot \ar@{-}[uuurrr]
& \cdot \ar@{-}[uurr] & \cdot \ar@{-}[ur] & & \\
2 \ar@{-}[u] & \cdot & \cdot & x \ar@{-}[rrrr]
& \cdot & \cdot & \cdot & & \\
1 \ar@{-}[u] & \cdot & \cdot & w \ar@{-}[rrrr]
& \cdot & \cdot & \cdot & & \\
0 \ar@{-}[r]\ar@{-}[u] & 1 \ar@{-}[r] & 2 \ar@{-}[r]
& v \ar@{-}[r]
& 4 \ar@{-}[r] & 5 \ar@{-}[r] & \cdots \ar[r] & a &
}}
]]></Display>
The reduction of <M>p</M> with this basis is:
<Display>
p = a^3b^3 + 2a^3b + 3ab^3
\stackrel{t}{\longrightarrow} 2a^3b + 3ab^3 + 9ab
\stackrel{w}{\longrightarrow} 3ab^3 + 9ab + 6b^2
\stackrel{y}{\longrightarrow} 9a^2 + 9ab + 6b^2.
</Display>
<Subsection Label="subs-ex452">
<Heading>A more detailed example</Heading>
Here we consider Example 4.5.2 in the thesis <Cite Key='gareth-thesis'/>.
On setting <C>InfoLevel(InfoIBNP)</C> to <C>1</C> some of the intermediate calculations are displayed.
The setting of the problem is a rational polynomial ring in three variables
with the lex ordering <M>[x,y,z]</M>, using the Janet involutive division.
<List>
<Item>
the initial basis contains two polynomials <M>\{a=x^2+y^3,~b=x+z^3\}</M>
</Item>
<Item>
the reduced &Grob; basis is <M>\{c=y^3+z^6,~b=x+z^3\}</M>, and the
irreducible monomials are <M>\{z^k,~yz^k,~y^2z^k~|~ k \geqslant 0\}</M>
</Item>
<Item>
when starting to calculate an involutive basis, the autoreduction does nothing
because <M>x</M> is not multiplicative for <M>b</M>
</Item>
<Item>
the only prolongation is <M>bx = x^2+xz^3</M> which reduces, on subtracting
<M>a+bz^3</M> and changing the sign, to <M>c=y^3+z^6</M>
</Item>
<Item>
on restarting with basis <M>[c,b,a]</M>, autoreduction replaces <M>a</M>
with <M>a-c = d = x^2-z^6</M>
</Item>
<Item>
there are then <M>3</M> prolongations <M>[by,bx,dy]</M> and <M>bx</M>
now reduces to zero
</Item>
<Item>
<M>by = e = xy+yz^3</M> is then added to the basis: <M>[c,b,e,d]</M>
</Item>
<Item>
<M>dy = x^2y-yz^6</M> reduces to zero on adding <M>e(-x+z^3)</M>
</Item>
<Item>
on restarting with basis <M>[c,b,e,d]</M> there are <M>4</M>
prolongations <M>[by,ey,bx,dy]</M> and of these
only <M>f = ey = xy^2+y^2z^3</M> does not reduce to zero
</Item>
<Item>
restarting with basis <M>[c,b,e,f,d]</M>, the <M>5</M> prolongations
<M>[by,ey,fy,bx,dy]</M> all reduce to zero.
</Item>
<Item>
now see what happens when reducing <M>p = x^7+y^7+z^7</M> using the basis
<M>[c,b,e,f,d]</M>
</Item>
<Item>
<M>x^7-dx^5 = x^5z^6</M> and <M>x^5z^6 - dx^3z^6 = x^3z^{12}</M>
and <M>x^3z^{12}-dxz^{12} = xz^{18}</M> and <M>xz^{18}-bz^{18}=-z^{21}</M>
</Item>
<Item>
<M>y^7 - cy^4 = -y^4z^6</M> and <M>-y^4z^6 + cyz^6 = yz^{12}</M>,
so <M>p</M> reduces to <M>-z^{21} + yz^{12} + z^7</M>.
</Item>
</List>
If the polynomials in an initial basis are not homogeneous
<Index>homogeneous polynomials</Index>
then they may be made homogeneous by introducing an additional variable.
The resulting involutive basis will contain only homogeneous polynomials.
However, if these are de-homogenised by setting the additional variable
equal to <M>1</M>, the resulting basis may not be involutive.
<P/>
Applying this to the previous example, the resulting basis contains
<M>10</M> polynomials which include homogenised versions of <M>[c,b,e,f]</M>,
but not <M>d</M>.
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.