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 }