triset.spad line 1 [edit on github]
The category of triangular sets of multivariate polynomials with coefficients in an integral domain. Let R
be an integral domain and V
a finite ordered set of variables, say X1 < X2 < ... < Xn
. A set S
of polynomials in R[X1, X2, ..., Xn]
is triangular if no elements of S
lies in R
, and if two distinct elements of S
have distinct main variables. Note that the empty set is a triangular set. A triangular set is not necessarily a (lexicographical) Groebner basis and the notion of reduction related to triangular sets is based on the recursive view of polynomials. We recall this notion here and refer to [1] for more details. A polynomial P
is reduced w
.r
.t
a non-constant polynomial Q
if the degree of P
in the main variable of Q
is less than the main degree of Q
. A polynomial P
is reduced w
.r
.t
a triangular set T
if it is reduced w
.r
.t
. every polynomial of T
.
algebraic?(v, ts)
returns true
iff v
is the main variable of some polynomial in ts
.
algebraicVariables(ts)
returns the decreasingly sorted list of the main variables of the polynomials of ts
.
autoReduced?(ts, redOp?)
returns true
iff every element of ts
is reduced w
.r
.t
to every other in the sense of redOp?
basicSet(ps, pred?, redOp?)
returns the same as basicSet(qs, redOp?)
where qs
consists of the polynomials of ps
satisfying property pred?
.
basicSet(ps, redOp?)
returns [bs, ts]
where concat(bs, ts)
is ps
and bs
is a basic set in Wu Wen Tsun sense of ps
w
.r
.t
the reduction-test redOp?
, if no non-zero constant polynomial lie in ps
, otherwise "failed"
is returned.
coHeight(ts)
returns size()$V
minus #ts
.
collectQuasiMonic(ts)
returns the subset of ts
consisting of the polynomials with initial in R
.
degree(ts)
returns the product of main degrees of the members of ts
.
extend(ts, p)
returns a triangular set which encodes the simple extension by p
of the extension of the base field defined by ts
, according to the properties of triangular sets of the current category If the required properties do not hold an error is returned.
extendIfCan(ts, p)
returns a triangular set which encodes the simple extension by p
of the extension of the base field defined by ts
, according to the properties of triangular sets of the current domain. If the required properties do not hold then "failed" is returned. This operation encodes in some sense the properties of the triangular sets of the current category. Is is used to implement the construct
operation to guarantee that every triangular set build from a list of polynomials has the required properties.
first(ts)
returns the polynomial of ts
with greatest main variable if ts
is not empty, otherwise returns "failed"
.
headReduce(p, ts)
returns a polynomial r
such that headReduce?(r, ts)
holds and there exists some product h
of initials(ts)
such that h*p - r
lies in the ideal generated by ts
.
headReduced?(ts)
returns true
iff the head of every element of ts
is reduced w
.r
.t
to any other element of ts
.
headReduced?(p, ts)
returns true
iff the head of p
is reduced w
.r
.t
. ts
.
infRittWu?(ts1, ts2)
returns true
iff ts2
has higher rank than ts1
in Wu Wen Tsun sense.
initiallyReduce(p, ts)
returns a polynomial r
such that initiallyReduced?(r, ts)
holds and there exists some product h
of initials(ts)
such that h*p - r
lies in the ideal generated by ts
.
initiallyReduced?(ts)
returns true
iff for every element p
of ts
p
and all its iterated initials are reduced w
.r
.t
. to the other elements of ts
with the same main variable.
initiallyReduced?(p, ts)
returns true
iff p
and all its iterated initials are reduced w
.r
.t
. to the elements of ts
with the same main variable.
initials(ts)
returns the list of the non-constant initials of the members of ts
.
last(ts)
returns the polynomial of ts
with smallest main variable if ts
is not empty, otherwise returns "failed"
.
normalized?(ts)
returns true
iff for every p
in ts
we have normalized?(p, us)
where us
is collectUnder(ts, mvar(p))
.
normalized?(p, ts)
returns true
iff p
and all its iterated initials have degree zero w
.r
.t
. the main variables of the polynomials of ts
quasiComponent(ts)
returns [lp, lq]
where lp
is the list of the members of ts
and lq
is initials(ts)
.
reduce(p, ts, redOp, redOp?)
returns a polynomial r
such that redOp?(r, p)
holds for every p
of ts
and there exists some product h
of the initials of the members of ts
such that h*p - r
lies in the ideal generated by ts
. The operation redOp
must satisfy the following conditions. For every p
and q
we have redOp?(redOp(p, q), q)
and there exists an integer e
and a polynomial f
such that init(q)^e*p = f*q + redOp(p, q)
.
reduceByQuasiMonic(p, ts)
returns the same as remainder(p, collectQuasiMonic(ts)).polnum
.
reduced?(p, ts, redOp?)
returns true
iff p
is reduced w
.r
.t
. in the sense of the operation redOp?
, that is if for every t
in ts
redOp?(p, t)
holds.
removeZero(p, ts)
returns 0
if p
reduces to 0
by pseudo-division w
.r
.t
ts
otherwise returns a polynomial q
computed from p
by removing any coefficient in p
reducing to 0
.
rest(ts)
returns the polynomials of ts
with smaller main variable than mvar(ts)
if ts
is not empty, otherwise returns "failed"
rewriteSetWithReduction(lp, ts, redOp, redOp?)
returns a list lq
of polynomials such that [reduce(p, ts, redOp, redOp?) for p in lp]
and lp
have the same zeros inside the regular zero set of ts
. Moreover, for every polynomial q
in lq
and every polynomial t
in ts
redOp?(q, t)
holds and there exists a polynomial p
in the ideal generated by lp
and a product h
of initials(ts)
such that h*p - r
lies in the ideal generated by ts
. The operation redOp
must satisfy the following conditions. For every p
and q
we have redOp?(redOp(p, q), q)
and there exists an integer e
and a polynomial f
such that init(q)^e*p = f*q + redOp(p, q)
.
select(ts, v)
returns the polynomial of ts
with v
as main variable, if any.
stronglyReduce(p, ts)
returns a polynomial r
such that stronglyReduced?(r, ts)
holds and there exists some product h
of initials(ts)
such that h*p - r
lies in the ideal generated by ts
.
stronglyReduced?(ts)
returns true
iff every element of ts
is reduced w
.r
.t
to any other element of ts
.
stronglyReduced?(p, ts)
returns true
iff p
is reduced w
.r
.t
. ts
.
zeroSetSplit(lp)
returns a list lts
of triangular sets such that the zero set of lp
is the union of the closures of the regular zero sets of the members of lts
.
zeroSetSplitIntoTriangularSystems(lp)
returns a list of triangular systems [[ts1, qs1], ..., [tsn, qsn]]
such that the zero set of lp
is the union of the closures of the W_i
where W_i
consists of the zeros of ts
which do not cancel any polynomial in qsi
.
CoercibleTo(List(P))
Collection(P)
RetractableFrom(List(P))
PolynomialSetCategory(R, E, V, P)
InnerEvalable(P, P)
Evalable(P)