001 /*
002 * $Id: SolvableReduction.java 2412 2009-02-07 12:17:54Z kredel $
003 */
004
005 package edu.jas.gb;
006
007 import java.util.List;
008
009 import edu.jas.poly.GenSolvablePolynomial;
010
011 import edu.jas.structure.RingElem;
012
013
014 /**
015 * Solvable polynomial Reduction interface.
016 * Defines S-Polynomial, normalform
017 * and irreducible set.
018 * @param <C> coefficient type
019 * @author Heinz Kredel
020 */
021
022 public interface SolvableReduction<C extends RingElem<C>> {
023
024
025 /**
026 * Left S-Polynomial.
027 * @param Ap solvable polynomial.
028 * @param Bp solvable polynomial.
029 * @return left-spol(Ap,Bp) the left S-polynomial of Ap and Bp.
030 */
031 public GenSolvablePolynomial<C>
032 leftSPolynomial(GenSolvablePolynomial<C> Ap,
033 GenSolvablePolynomial<C> Bp);
034
035
036 /**
037 * S-Polynomial with recording.
038 * @param S recording matrix, is modified.
039 * @param i index of Ap in basis list.
040 * @param Ap a polynomial.
041 * @param j index of Bp in basis list.
042 * @param Bp a polynomial.
043 * @return leftSpol(Ap, Bp), the left S-Polynomial for Ap and Bp.
044 */
045 public GenSolvablePolynomial<C>
046 leftSPolynomial(List<GenSolvablePolynomial<C>> S,
047 int i,
048 GenSolvablePolynomial<C> Ap,
049 int j,
050 GenSolvablePolynomial<C> Bp);
051
052
053 /**
054 * Left Normalform.
055 * @param Ap solvable polynomial.
056 * @param Pp solvable polynomial list.
057 * @return left-nf(Ap) with respect to Pp.
058 */
059 public GenSolvablePolynomial<C>
060 leftNormalform(List<GenSolvablePolynomial<C>> Pp,
061 GenSolvablePolynomial<C> Ap);
062
063
064 /**
065 * LeftNormalform with recording.
066 * @param row recording matrix, is modified.
067 * @param Pp a polynomial list for reduction.
068 * @param Ap a polynomial.
069 * @return nf(Pp,Ap), the left normal form of Ap wrt. Pp.
070 */
071 public GenSolvablePolynomial<C>
072 leftNormalform(List<GenSolvablePolynomial<C>> row,
073 List<GenSolvablePolynomial<C>> Pp,
074 GenSolvablePolynomial<C> Ap);
075
076
077 /**
078 * Left Normalform Set.
079 * @param Ap solvable polynomial list.
080 * @param Pp solvable polynomial list.
081 * @return list of left-nf(a) with respect to Pp for all a in Ap.
082 */
083 public List<GenSolvablePolynomial<C>>
084 leftNormalform(List<GenSolvablePolynomial<C>> Pp,
085 List<GenSolvablePolynomial<C>> Ap);
086
087
088 /**
089 * Left irreducible set.
090 * @param Pp solvable polynomial list.
091 * @return a list P of solvable polynomials which are in normalform wrt. P.
092 */
093 public List<GenSolvablePolynomial<C>>
094 leftIrreducibleSet(List<GenSolvablePolynomial<C>> Pp);
095
096
097 /**
098 * Is reduction of normal form.
099 * @param row recording matrix, is modified.
100 * @param Pp a solvable polynomial list for reduction.
101 * @param Ap a solvable polynomial.
102 * @param Np nf(Pp,Ap), a left normal form of Ap wrt. Pp.
103 * @return true, if Np + sum( row[i]*Pp[i] ) == Ap, else false.
104 */
105
106 public boolean
107 isLeftReductionNF(List<GenSolvablePolynomial<C>> row,
108 List<GenSolvablePolynomial<C>> Pp,
109 GenSolvablePolynomial<C> Ap,
110 GenSolvablePolynomial<C> Np);
111
112
113 /**
114 * Right S-Polynomial.
115 * @param Ap solvable polynomial.
116 * @param Bp solvable polynomial.
117 * @return right-spol(Ap,Bp) the right S-polynomial of Ap and Bp.
118 */
119 public GenSolvablePolynomial<C>
120 rightSPolynomial(GenSolvablePolynomial<C> Ap,
121 GenSolvablePolynomial<C> Bp);
122
123
124 /**
125 * Right Normalform.
126 * @param Ap solvable polynomial.
127 * @param Pp solvable polynomial list.
128 * @return right-nf(Ap) with respect to Pp.
129 */
130 public GenSolvablePolynomial<C>
131 rightNormalform(List<GenSolvablePolynomial<C>> Pp,
132 GenSolvablePolynomial<C> Ap);
133
134 }