/*
* $Id$
*/
package edu.jas.ufd;
import java.io.Serializable;
import java.util.List;
import java.util.SortedMap;
import edu.jas.poly.GenPolynomial;
import edu.jas.structure.GcdRingElem;
/**
* Squarefree decomposition interface.
* @param coefficient type
* @author Heinz Kredel
* @usage To create objects that implement the Squarefree
* interface use the SquarefreeFactory. It will select an
* appropriate implementation based on the types of polynomial
* coefficients C. To obtain an implementation use
* getImplementation(), it returns an object of a class
* which extends the SquarefreeAbstract class which
* implements the Squarefree interface.
*
*
* Squarefree<CT> engine;
* engine = SquarefreeFactory.<CT> getImplementation(cofac);
* c = engine.squarefreeFactors(a);
*
*
* For example, if the coefficient type is BigInteger, the usage looks like
*
*
* BigInteger cofac = new BigInteger();
* Squarefree<BigInteger> engine;
* engine = SquarefreeFactory.getImplementation(cofac);
* Sm = engine.sqaurefreeFactors(poly);
*
*
* @see edu.jas.ufd.SquarefreeFactory#getImplementation
*/
public interface Squarefree> extends Serializable {
/**
* GenPolynomial greatest squarefree divisor.
* @param P GenPolynomial.
* @return squarefree(pp(P)).
*/
public GenPolynomial squarefreePart(GenPolynomial P);
/**
* GenPolynomial test if is squarefree.
* @param P GenPolynomial.
* @return true if P is squarefree, else false.
*/
public boolean isSquarefree(GenPolynomial P);
/**
* GenPolynomial list test if squarefree.
* @param L list of GenPolynomial.
* @return true if each P in L is squarefree, else false.
*/
public boolean isSquarefree(List> L);
/**
* GenPolynomial squarefree factorization.
* @param P GenPolynomial.
* @return [p_1 -> e_1, ..., p_k -> e_k] with P = prod_{i=1,...,k} p_i^{e_i}
* and p_i squarefree.
*/
public SortedMap, Long> squarefreeFactors(GenPolynomial P);
/**
* GenPolynomial is (squarefree) factorization.
* @param P GenPolynomial.
* @param F = [p_1,...,p_k].
* @return true if P = prod_{i=1,...,r} p_i, else false.
*/
public boolean isFactorization(GenPolynomial P, List> F);
/**
* GenPolynomial is (squarefree) factorization.
* @param P GenPolynomial.
* @param F = [p_1 -> e_1, ..., p_k -> e_k].
* @return true if P = prod_{i=1,...,k} p_i**e_i, else false.
*/
public boolean isFactorization(GenPolynomial P, SortedMap, Long> F);
/**
* GenPolynomial squarefree and co-prime list.
* @param A list of GenPolynomials.
* @return B with gcd(b,c) = 1 for all b != c in B and for all non-constant
* a in A there exists b in B with b|a and each b in B is
* squarefree. B does not contain zero or constant polynomials.
*/
public List> coPrimeSquarefree(List> A);
/**
* GenPolynomial squarefree and co-prime list.
* @param a polynomial.
* @param P squarefree co-prime list of GenPolynomials.
* @return B with gcd(b,c) = 1 for all b != c in B and for non-constant a
* there exists b in P with b|a. B does not contain zero or constant
* polynomials.
*/
public List> coPrimeSquarefree(GenPolynomial a, List> P);
/**
* Test if list of GenPolynomials is squarefree and co-prime.
* @param B list of GenPolynomials.
* @return true, if for all b != c in B gcd(b,c) = 1 and
* each b in B is squarefree, else false.
*/
public boolean isCoPrimeSquarefree(List> B);
}
Ads help maintain this website.