PolynomialSetUtilitiesPackage(R, E, V, P)ΒΆ
triset.spad line 580 [edit on github]
V: OrderedSet
P: RecursivePolynomialCategory(R, E, V)
This package provides modest routines for polynomial system solving. The aim of many of the operations of this package is to remove certain factors in some polynomials in order to avoid unnecessary computations in algorithms involving splitting techniques by partial factorization.
- bivariate?: P -> Boolean
bivariate?(p)returnstrueiffpinvolves two and only two variables.
- bivariatePolynomials: List P -> Record(goodPols: List P, badPols: List P)
bivariatePolynomials(lp)returnsbps, nbpswherebpsis a list of the bivariate polynomials, andnbpsare the other ones.
- certainlySubVariety?: (List P, List P) -> Boolean
certainlySubVariety?(newlp, lp)returnstrueiff for everypinlpthe remainder ofpbynewlpusing the division algorithm of Groebner techniques is zero.
- crushedSet: List P -> List P
crushedSet(lp)returnslqsuch thatlpand andlqgenerate the same ideal and no rough basic sets reduce (in the sense of Groebner bases) the other polynomials inlq.
- interReduce: List P -> List P
interReduce(lp)returnslqsuch thatlpandlqgenerate the same ideal and no polynomial inlqis reducible by the others in the sense of Groebner bases. Since no assumptions are required the result may depend on the ordering the reductions are performed.
- irreducibleFactors: List P -> List P if R has CharacteristicZero and R has PolynomialFactorizationExplicit
irreducibleFactors(lp)returnslfsuch that iflp = [p1, ..., pn]andlf = [f1, ..., fm]thenp1*p2*...*pn=0meansf1*f2*...*fm=0, and thefiare irreducible overRand are pairwise distinct.
- lazyIrreducibleFactors: List P -> List P if R has CharacteristicZero and R has PolynomialFactorizationExplicit
lazyIrreducibleFactors(lp)returnslfsuch that iflp = [p1, ..., pn]andlf = [f1, ..., fm]thenp1*p2*...*pn=0meansf1*f2*...*fm=0, and thefiare irreducible overRand are pairwise distinct. The algorithm tries to avoid factorization into irreducible factors as far as possible and makes previously use ofgcdtechniques overR.
- linear?: P -> Boolean
linear?(p)returnstrueiffpdoes not lie in the base ringRand has main degree1.
- linearPolynomials: List P -> Record(goodPols: List P, badPols: List P)
linearPolynomials(lp)returnslps, nlpswherelpsis a list of the linear polynomials inlp, andnlpsare the other ones.
- possiblyNewVariety?: (List P, List List P) -> Boolean
possiblyNewVariety?(newlp, llp)returnstrueiff for everylpinllpcertainlySubVariety?(newlp,lp) does not hold.
- probablyZeroDim?: List P -> Boolean
probablyZeroDim?(lp)returnstrueiff the number of polynomials inlpis not smaller than the number of variables occurring in these polynomials.
- quasiMonicPolynomials: List P -> Record(goodPols: List P, badPols: List P)
quasiMonicPolynomials(lp)returnsqmps, nqmpswhereqmpsis a list of the quasi-monic polynomials inlpandnqmpsare the other ones.
- removeIrreducibleRedundantFactors: (List P, List P) -> List P if R has CharacteristicZero and R has PolynomialFactorizationExplicit
removeIrreducibleRedundantFactors(lp, lq)returns the same asirreducibleFactors(concat(lp, lq))assuming thatirreducibleFactors(lp)returnslpup to replacing some polynomialpjinlpby some polynomialqjassociated topj.
- removeRedundantFactors: (List P, List P) -> List P
removeRedundantFactors(lp, lq)returns the same asremoveRedundantFactors(concat(lp, lq))assuming thatremoveRedundantFactors(lp)returnslpup to replacing some polynomialpjinlpby some polynomialqjassociated topj.
- removeRedundantFactors: (List P, List P, List P -> List P) -> List P
removeRedundantFactors(lp, lq, remOp)returns the same asconcat(remOp(removeRoughlyRedundantFactorsInPols(lp, lq)), lq)assuming thatremOp(lq)returnslqup to similarity.
- removeRedundantFactors: (List P, P) -> List P
removeRedundantFactors(lp, q)returns the same asremoveRedundantFactors(cons(q, lp))assuming thatremoveRedundantFactors(lp)returnslpup to replacing some polynomialpjinlpby some some polynomialqjassociated topj.
- removeRedundantFactors: (P, P) -> List P
removeRedundantFactors(p, q)returns the same asremoveRedundantFactors([p, q])
- removeRedundantFactors: List P -> List P
removeRedundantFactors(lp)returnslqsuch that iflp = [p1, ..., pn]andlq = [q1, ..., qm]then the productp1*p2*...*pnvanishes iff the productq1*q2*...*qmvanishes, and the product of degrees of theqiis not greater than the one of thepj, and no polynomial inlqdivides another polynomial inlq. In particular, polynomials lying in the base ringRare removed. Moreover,lqis sortedw.r.tinfRittWu?. Furthermore, ifRisgcd-domain, the polynomials inlqare pairwise without common non trivial factor.
- removeRedundantFactorsInContents: (List P, List P) -> List P if R has GcdDomain
removeRedundantFactorsInContents(lp, lf)returnsnewlpwherenewlpis obtained fromlpby removing in the content of every polynomial oflpany non trivial factor of any polynomialfinlf. Moreover, squares overRare first removed in the content of every polynomial oflp.
- removeRedundantFactorsInPols: (List P, List P) -> List P if R has GcdDomain
removeRedundantFactorsInPols(lp, lf)returnsnewlpwherenewlpis obtained fromlpby removing in every polynomialpoflpany non trivial factor of any polynomialfinlf. Moreover, squares overRare first removed in every polynomiallp.
- removeRoughlyRedundantFactorsInContents: (List P, List P) -> List P if R has GcdDomain
removeRoughlyRedundantFactorsInContents(lp, lf)returnsnewlpwherenewlpis obtained fromlpby removing in the content of every polynomial oflpany occurence of a polynomialfinlf. Moreover, squares overRare first removed in the content of every polynomial oflp.
- removeRoughlyRedundantFactorsInPol: (P, List P) -> P
removeRoughlyRedundantFactorsInPol(p, lf)returns the same as removeRoughlyRedundantFactorsInPols([p],lf,true)
- removeRoughlyRedundantFactorsInPols: (List P, List P) -> List P
removeRoughlyRedundantFactorsInPols(lp, lf)returnsnewlpwherenewlpis obtained fromlpby removing in every polynomialpoflpany occurrence of a polynomialfinlf. This may involve a lot of exact-quotients computations.
- removeRoughlyRedundantFactorsInPols: (List P, List P, Boolean) -> List P
removeRoughlyRedundantFactorsInPols(lp, lf, opt)returns the same asremoveRoughlyRedundantFactorsInPols(lp, lf)ifoptisfalseand if the previous operation does not return any non null and constant polynomial, else return[1].
- removeSquaresIfCan: List P -> List P
removeSquaresIfCan(lp)returnsremoveDuplicates [squareFreePart(p)\$P for p in lp]ifRisgcd-domain else returnslp.
- rewriteIdealWithQuasiMonicGenerators: (List P, (P, P) -> Boolean, (P, P) -> P) -> List P
rewriteIdealWithQuasiMonicGenerators(lp, redOp?, redOp)returnslqwherelqandlpgenerate the same ideal inR^(-1) Pandlqhas rank not higher than the one oflp. Moreover,lqis computed by reducinglpw.r.t. some basic set of the ideal generated by the quasi-monic polynomials inlp.
- rewriteSetByReducingWithParticularGenerators: (List P, P -> Boolean, (P, P) -> Boolean, (P, P) -> P) -> List P
rewriteSetByReducingWithParticularGenerators(lp, pred?, redOp?, redOp)returnslqwherelqis computed by the following algorithm. Chose a basic setw.r.t. the reduction-testredOp?among the polynomials satisfying propertypred?, if it is empty then leave, else reduce the other polynomials by this basic setw.r.t. the reduction-operationredOp. Repeat while another basic set with smaller rank can be computed. See code. Ifpred?isquasiMonic?the ideal is unchanged.
- roughBasicSet: List P -> Union(Record(bas: GeneralTriangularSet(R, E, V, P), top: List P), failed)
roughBasicSet(lp)returns the smallest (with Ritt-Wu ordering) triangular set contained inlp.
- selectAndPolynomials: (List(P -> Boolean), List P) -> Record(goodPols: List P, badPols: List P)
selectAndPolynomials(lpred?, ps)returnsgps, bpswheregpsis a list of the polynomialpinpssuch thatpred?(p)holds for everypred?inlpred?andbpsare the other ones.
- selectOrPolynomials: (List(P -> Boolean), List P) -> Record(goodPols: List P, badPols: List P)
selectOrPolynomials(lpred?, ps)returnsgps, bpswheregpsis a list of the polynomialpinpssuch thatpred?(p)holds for somepred?inlpred?andbpsare the other ones.
- selectPolynomials: (P -> Boolean, List P) -> Record(goodPols: List P, badPols: List P)
selectPolynomials(pred?, ps)returnsgps, bpswheregpsis a list of the polynomialpinpssuch thatpred?(p)holds andbpsare the other ones.
- squareFreeFactors: P -> List P if R has GcdDomain
squareFreeFactors(p)returns the square-free factors ofpoverR
- univariate?: P -> Boolean
univariate?(p)returnstrueiffpinvolves one and only one variable.
- univariatePolynomials: List P -> Record(goodPols: List P, badPols: List P)
univariatePolynomials(lp)returnsups, nupswhereupsis a list of the univariate polynomials, andnupsare the other ones.
- univariatePolynomialsGcds: (List P, Boolean) -> List P if R has GcdDomain
univariatePolynomialsGcds(lp, opt)returns the same asunivariatePolynomialsGcds(lp)ifoptisfalseand if the previous operation does not return any non null and constant polynomial, else return[1].
- univariatePolynomialsGcds: List P -> List P if R has GcdDomain
univariatePolynomialsGcds(lp)returnslgwherelgis a list of the gcds of every pair inlpof univariate polynomials in the same main variable.
- unprotectedRemoveRedundantFactors: (P, P) -> List P
unprotectedRemoveRedundantFactors(p, q)returns the same asremoveRedundantFactors(p, q)but does assume that neitherpnorqlie in the base ringRand assumes thatinfRittWu?(p, q)holds. Moreover, ifRisgcd-domain, thenpandqare assumed to be square free.