001/*
002 * $Id$
003 */
004
005package edu.jas.gb;
006
007
008import java.io.Serializable;
009import java.util.List;
010
011import edu.jas.poly.GenWordPolynomial;
012import edu.jas.poly.Word;
013import edu.jas.structure.RingElem;
014
015
016/**
017 * Polynomial WordReduction interface. Defines S-Polynomial, normalform, module
018 * criterion and irreducible set.
019 * @param <C> coefficient type
020 * @author Heinz Kredel
021 */
022
023public interface WordReduction<C extends RingElem<C>> extends Serializable {
024
025
026    /**
027     * S-Polynomials of non-commutative polynomials.
028     * @param Ap word polynomial.
029     * @param Bp word polynomial.
030     * @return list of all spol(Ap,Bp) the S-polynomials of Ap and Bp.
031     */
032    public List<GenWordPolynomial<C>> SPolynomials(GenWordPolynomial<C> Ap, GenWordPolynomial<C> Bp);
033
034
035    /**
036     * S-Polynomials of non-commutative polynomials.
037     * @param a leading base coefficient of B.
038     * @param l1 word.
039     * @param A word polynomial.
040     * @param r1 word.
041     * @param b leading base coefficient of A.
042     * @param l2 word.
043     * @param B word polynomial.
044     * @param r2 word.
045     * @return list of all spol(Ap,Bp) the S-polynomials of Ap and Bp.
046     */
047    public GenWordPolynomial<C> SPolynomial(C a, Word l1, GenWordPolynomial<C> A, Word r1, C b, Word l2,
048                    GenWordPolynomial<C> B, Word r2);
049
050
051    /**
052     * Is top reducible. Condition is lt(B) | lt(A) for some B in F.
053     * @param A polynomial.
054     * @param P polynomial list.
055     * @return true if A is top reducible with respect to P.
056     */
057    public boolean isTopReducible(List<GenWordPolynomial<C>> P, GenWordPolynomial<C> A);
058
059
060    /**
061     * Is reducible.
062     * @param A polynomial.
063     * @param P polynomial list.
064     * @return true if A is reducible with respect to P.
065     */
066    public boolean isReducible(List<GenWordPolynomial<C>> P, GenWordPolynomial<C> A);
067
068
069    /**
070     * Is in Normalform.
071     * @param A polynomial.
072     * @param P polynomial list.
073     * @return true if A is in normalform with respect to P.
074     */
075    public boolean isNormalform(List<GenWordPolynomial<C>> P, GenWordPolynomial<C> A);
076
077
078    /**
079     * Is in Normalform.
080     * @param Pp polynomial list.
081     * @return true if each A in Pp is in normalform with respect to Pp\{A}.
082     */
083    public boolean isNormalform(List<GenWordPolynomial<C>> Pp);
084
085
086    /**
087     * Normalform.
088     * @param A polynomial.
089     * @param P polynomial list.
090     * @return nf(A) with respect to P.
091     */
092    public GenWordPolynomial<C> normalform(List<GenWordPolynomial<C>> P, GenWordPolynomial<C> A);
093
094
095    /**
096     * Normalform Set.
097     * @param Ap polynomial list.
098     * @param Pp polynomial list.
099     * @return list of nf(a) with respect to Pp for all a in Ap.
100     */
101    public List<GenWordPolynomial<C>> normalform(List<GenWordPolynomial<C>> Pp, List<GenWordPolynomial<C>> Ap);
102
103
104    /**
105     * Normalform with left and right recording.
106     * @param lrow left recording matrix, is modified.
107     * @param rrow right recording matrix, is modified.
108     * @param Pp a polynomial list for reduction.
109     * @param Ap a polynomial.
110     * @return nf(Pp,Ap), the normal form of Ap wrt. Pp.
111     */
112    public GenWordPolynomial<C> normalform(List<GenWordPolynomial<C>> lrow, List<GenWordPolynomial<C>> rrow,
113                    List<GenWordPolynomial<C>> Pp, GenWordPolynomial<C> Ap);
114
115
116    /**
117     * Normalform with left recording.
118     * @param Pp a polynomial list for reduction.
119     * @param Ap a polynomial.
120     * @return nf(Pp,Ap), the left normal form of Ap wrt. Pp.
121     */
122    public GenWordPolynomial<C> leftNormalform(List<GenWordPolynomial<C>> Pp, GenWordPolynomial<C> Ap);
123
124
125    /**
126     * Normalform with left recording.
127     * @param lrow left recording matrix, is modified.
128     * @param Pp a polynomial list for reduction.
129     * @param Ap a polynomial.
130     * @return nf(Pp,Ap), the left normal form of Ap wrt. Pp.
131     */
132    public GenWordPolynomial<C> leftNormalform(List<GenWordPolynomial<C>> lrow, 
133                                    List<GenWordPolynomial<C>> Pp, GenWordPolynomial<C> Ap);
134
135
136    /**
137     * Irreducible set.
138     * @param Pp polynomial list.
139     * @return a list P of polynomials which are in normalform wrt. P and with
140     *         ideal(Pp) = ideal(P).
141     */
142    public List<GenWordPolynomial<C>> irreducibleSet(List<GenWordPolynomial<C>> Pp);
143
144
145    /**
146     * Is reduction of normal form.
147     * @param lrow left recording matrix.
148     * @param rrow right recording matrix.
149     * @param Pp a polynomial list for reduction.
150     * @param Ap a polynomial.
151     * @param Np nf(Pp,Ap), a normal form of Ap wrt. Pp.
152     * @return true, if Np + sum( row[i]*Pp[i] ) == Ap, else false.
153     */
154    public boolean isReductionNF(List<GenWordPolynomial<C>> lrow, List<GenWordPolynomial<C>> rrow,
155                    List<GenWordPolynomial<C>> Pp, GenWordPolynomial<C> Ap, GenWordPolynomial<C> Np);
156
157
158    /**
159     * Right normalform with recording.
160     * @param Pp a polynomial list for reduction.
161     * @param Ap a polynomial.
162     * @return nf(Pp,Ap), the right normal form of Ap wrt. Pp.
163     */
164    public GenWordPolynomial<C> rightNormalform(List<GenWordPolynomial<C>> Pp, GenWordPolynomial<C> Ap);
165
166
167    /**
168     * Right normalform with recording.
169     * @param rrow right recording matrix, is modified.
170     * @param Pp a polynomial list for reduction.
171     * @param Ap a polynomial.
172     * @return nf(Pp,Ap), the right normal form of Ap wrt. Pp.
173     */
174    public GenWordPolynomial<C> rightNormalform(List<GenWordPolynomial<C>> rrow, 
175                List<GenWordPolynomial<C>> Pp, GenWordPolynomial<C> Ap);
176
177}