Package edu.jas.application
Class GBAlgorithmBuilder<C extends GcdRingElem<C>>
java.lang.Object
edu.jas.application.GBAlgorithmBuilder<C>
- All Implemented Interfaces:
Serializable
Builder for commutative Gröbner bases algorithm implementations.
Usage: To create objects that implement the GroebnerBase
interface one can use the GBFactory
or this
GBAlgorithmBuilder
. This class will select and compose an
appropriate implementation based on the types of polynomial coefficients C
and the desired properties. To build an implementation start with the static
method polynomialRing()
to define the polynomial ring. Then
continue to construct the algorithm with the methods
optimize()
oroptimize(boolean)
for term order (variable order) optimization (true for return of permuted polynomials),normalPairlist()
(default),syzygyPairlist()
orsimplePairlist()
for pair-list selection strategies,fractionFree()
for clearing denominators and computing with pseudo reduction,graded()
for using the FGLM algorithm to first compute a Gröbner base with respect to a graded term order and then constructing a Gröbner base wrt. a lexicographical term order,walk()
for using the Gröbner walk algorithm to first compute a Gröbner base with respect to a graded term order and then constructing a Gröbner base wrt. a lexicographical term order,iterated()
for using the iterative GB algorithm to compute a Gröbner base adding one polynomial after another,F5()
,GGV()
andArri()
for using the respective iterative signature based GB algorithm (over field coefficients) to compute a Gröbner base adding one polynomial after another,parallel()
additionally compute a Gröbner base over a field or integral domain in parallel,euclideanDomain()
for computing a e-Gröbner base,domainAlgorithm(Algo)
for computing a d- or e-Gröbner base,
Finally call the method build()
to obtain an implementation of
class GroebnerBaseAbstract
. For example
GenPolynomialRing<C> pf = new GenPolynomialRing<C>(cofac, vars); GroebnerBaseAbstract<C> engine; engine = GBAlgorithmBuilder.<C> polynomialRing(pf).fractionFree().parallel().optimize().build(); c = engine.GB(A);
For example, if the coefficient type is BigRational, the usage looks like
GenPolynomialRing<BigRational> pf = new GenPolynomialRing<BigRational>(cofac, vars); GroebnerBaseAbstract<BigRational> engine; engine = GBAlgorithmBuilder.<BigRational> polynomialRing(pf).fractionFree().parallel().optimize().build(); c = engine.GB(A);Note: Not all combinations are meanigful
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate GroebnerBaseAbstract
<C> The current GB algorithm implementation.private static final org.apache.logging.log4j.Logger
final GenPolynomialRing
<C> The current polynomial ring.Requested pairlist strategy. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
Constructor not for use.GBAlgorithmBuilder
(GenPolynomialRing<C> ring) Constructor.GBAlgorithmBuilder
(GenPolynomialRing<C> ring, GroebnerBaseAbstract<C> algo) Constructor.GBAlgorithmBuilder
(GenPolynomialRing<C> ring, GroebnerBaseAbstract<C> algo, PairList<C> strategy) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionArri()
Request iterated Arri signature based GB algorithm.build()
Build the GB algorithm implementation.Request d-, e- or i-GB algorithm.Request e-GB algorithm.F5()
Request iterated F5 signature based GB algorithm.Request fraction free algorithm.GGV()
Request iterated GGV signature based GB algorithm.graded()
Request FGLM algorithm.iterated()
Request iterated GB algorithm.Select normal critical pair-list strategy.optimize()
Request term order optimization.optimize
(boolean rP) Request term order optimization.parallel()
Request parallel algorithm.parallel
(int threads) Request parallel algorithm.static <C extends GcdRingElem<C>>
GBAlgorithmBuilder<C> polynomialRing
(GenPolynomialRing<C> fac) Define polynomial ring.Select simple critical pair-list strategy.Select syzygy critical pair-list strategy.toScript()
Get a scripting compatible string representation.toString()
String representation of the GB algorithm implementation.walk()
Request Groebner walk algorithm.
-
Field Details
-
logger
private static final org.apache.logging.log4j.Logger logger -
algo
The current GB algorithm implementation. -
ring
The current polynomial ring. -
strategy
Requested pairlist strategy.
-
-
Constructor Details
-
GBAlgorithmBuilder
protected GBAlgorithmBuilder()Constructor not for use. -
GBAlgorithmBuilder
Constructor.- Parameters:
ring
- the polynomial ring.
-
GBAlgorithmBuilder
Constructor.- Parameters:
ring
- the polynomial ring.algo
- already determined algorithm.
-
GBAlgorithmBuilder
public GBAlgorithmBuilder(GenPolynomialRing<C> ring, GroebnerBaseAbstract<C> algo, PairList<C> strategy) Constructor.- Parameters:
ring
- the polynomial ring.algo
- already determined algorithm.strategy
- pairlist strategy.
-
-
Method Details
-
build
Build the GB algorithm implementation.- Returns:
- GB algorithm implementation as GroebnerBaseAbstract object.
-
polynomialRing
public static <C extends GcdRingElem<C>> GBAlgorithmBuilder<C> polynomialRing(GenPolynomialRing<C> fac) Define polynomial ring.- Parameters:
fac
- the commutative polynomial ring.- Returns:
- GBAlgorithmBuilder object.
-
syzygyPairlist
Select syzygy critical pair-list strategy. Gebauer and Möller algorithm.- Returns:
- GBAlgorithmBuilder object.
-
normalPairlist
Select normal critical pair-list strategy. Buchberger, Winkler and Kredel algorithm.- Returns:
- GBAlgorithmBuilder object.
-
simplePairlist
Select simple critical pair-list strategy. Original Buchberger algorithm.- Returns:
- GBAlgorithmBuilder object.
-
optimize
Request term order optimization. Call optimize(true) for return of permuted polynomials.- Returns:
- GBAlgorithmBuilder object.
-
optimize
Request term order optimization.- Parameters:
rP
- true for return of permuted polynomials, false for inverse permuted polynomials and new GB computation.- Returns:
- GBAlgorithmBuilder object.
-
fractionFree
Request fraction free algorithm. For BigRational and Quotient coefficients denominators are cleared and pseudo reduction is used.- Returns:
- GBAlgorithmBuilder object.
-
euclideanDomain
Request e-GB algorithm.- Returns:
- GBAlgorithmBuilder object.
-
domainAlgorithm
Request d-, e- or i-GB algorithm.- Parameters:
a
- algorithm from GBFactory.Algo.- Returns:
- GBAlgorithmBuilder object.
-
parallel
Request parallel algorithm. Additionally run a parallel algorithm via GBProxy.- Returns:
- GBAlgorithmBuilder object.
-
parallel
Request parallel algorithm. Additionally run a parallel algorithm via GBProxy.- Parameters:
threads
- number of threads requested.- Returns:
- GBAlgorithmBuilder object.
-
graded
Request FGLM algorithm.- Returns:
- GBAlgorithmBuilder object.
-
walk
Request Groebner walk algorithm.- Returns:
- GBAlgorithmBuilder object.
-
iterated
Request iterated GB algorithm.- Returns:
- GBAlgorithmBuilder object.
-
F5
Request iterated F5 signature based GB algorithm.- Returns:
- GBAlgorithmBuilder object.
-
GGV
Request iterated GGV signature based GB algorithm.- Returns:
- GBAlgorithmBuilder object.
-
Arri
Request iterated Arri signature based GB algorithm.- Returns:
- GBAlgorithmBuilder object.
-
toString
String representation of the GB algorithm implementation. -
toScript
Get a scripting compatible string representation.- Returns:
- script compatible representation for this Element.
- See Also:
-