All Downloads are FREE. Search and download functionalities are using the official Maven repository.

edu.jas.gb.WordReduction Maven / Gradle / Ivy

The newest version!
/*
 * $Id: WordReduction.java 4149 2012-09-01 09:01:54Z kredel $
 */

package edu.jas.gb;

import java.util.List;

import java.io.Serializable;

import edu.jas.poly.Word;
import edu.jas.poly.GenWordPolynomial;
import edu.jas.structure.RingElem;


/**
 * Polynomial WordReduction interface.
 * Defines S-Polynomial, normalform, module criterion
 * and irreducible set.
 * @param  coefficient type
 * @author Heinz Kredel
 */

public interface WordReduction> 
                 extends Serializable {


    /**
     * S-Polynomials of non-commutative polynomials.
     * @param Ap word polynomial.
     * @param Bp word polynomial.
     * @return list of all spol(Ap,Bp) the S-polynomials of Ap and Bp.
     */
    public List> SPolynomials(GenWordPolynomial Ap, 
                                                   GenWordPolynomial Bp);


    /**
     * S-Polynomials of non-commutative polynomials.
     * @param a leading base coefficient of B.
     * @param l1 word.
     * @param A word polynomial.
     * @param r1 word.
     * @param b leading base coefficient of A.
     * @param l2 word.
     * @param B word polynomial.
     * @param r2 word.
     * @return list of all spol(Ap,Bp) the S-polynomials of Ap and Bp.
     */
    public GenWordPolynomial SPolynomial(C a, Word l1, GenWordPolynomial A, Word r1,
                                            C b, Word l2, GenWordPolynomial B, Word r2);


    /**
     * Is top reducible.
     * Condition is lt(B) | lt(A) for some B in F.
     * @param A polynomial.
     * @param P polynomial list.
     * @return true if A is top reducible with respect to P.
     */
    public boolean isTopReducible(List> P, 
                                  GenWordPolynomial A);


    /**
     * Is reducible.
     * @param A polynomial.
     * @param P polynomial list.
     * @return true if A is reducible with respect to P.
     */
    public boolean isReducible(List> P, 
                               GenWordPolynomial A);


    /**
     * Is in Normalform.
     * @param A polynomial.
     * @param P polynomial list.
     * @return true if A is in normalform with respect to P.
     */
    public boolean isNormalform(List> P, 
                                GenWordPolynomial A);


    /**
     * Is in Normalform.
     * @param Pp polynomial list.
     * @return true if each A in Pp is in normalform with respect to Pp\{A}.
     */
    public boolean isNormalform( List> Pp );


    /**
     * Normalform.
     * @param A polynomial.
     * @param P polynomial list.
     * @return nf(A) with respect to P.
     */
    public GenWordPolynomial normalform(List> P, 
                                           GenWordPolynomial A);


    /**
     * Normalform Set.
     * @param Ap polynomial list.
     * @param Pp polynomial list.
     * @return list of nf(a) with respect to Pp for all a in Ap.
     */
    public List> normalform(List> Pp, 
                                                 List> Ap);


    /**
     * Normalform with left and right recording.
     * @param lrow left recording matrix, is modified.
     * @param rrow right recording matrix, is modified.
     * @param Pp a polynomial list for reduction.
     * @param Ap a polynomial.
     * @return nf(Pp,Ap), the normal form of Ap wrt. Pp.
     */
    public GenWordPolynomial 
           normalform(List> lrow, List> rrow,
                      List> Pp, GenWordPolynomial Ap);


    /**
     * Irreducible set.
     * @param Pp polynomial list.
     * @return a list P of polynomials which are in normalform wrt. P and with ideal(Pp) = ideal(P).
     */
    public List> irreducibleSet(List> Pp);


    /**
     * Is reduction of normal form.
     * @param lrow left recording matrix.
     * @param rrow right recording matrix.
     * @param Pp a polynomial list for reduction.
     * @param Ap a polynomial.
     * @param Np nf(Pp,Ap), a normal form of Ap wrt. Pp.
     * @return true, if Np + sum( row[i]*Pp[i] ) == Ap, else false.
     */
    public boolean isReductionNF(List> lrow, List> rrow, 
                                 List> Pp, 
                                 GenWordPolynomial Ap, GenWordPolynomial Np);

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy