RegularTriangularSetCategory(R, E, V, P)ΒΆ
regset.spad line 1 [edit on github]
R: GcdDomain
V: OrderedSet
P: RecursivePolynomialCategory(R, E, V)
The category of regular triangular sets, introduced under the name regular chains in [1] (and other papers). In [3] it is proved that regular triangular sets and towers of simple extensions of a field are equivalent notions. In the following definitions, all polynomials and ideals are taken from the polynomial ring k[x1, ..., xn]
where k
is the fraction field of R
. The triangular set [t1, ..., tm]
is regular iff for every i
the initial of ti+1
is invertible in the tower of simple extensions associated with [t1, ..., ti]
. A family [T1, ..., Ts]
of regular triangular sets is a split of Kalkbrener of a given ideal I
iff the radical of I
is equal to the intersection of the radical ideals generated by the saturated ideals of the [T1, ..., Ti]
. A family [T1, ..., Ts]
of regular triangular sets is a split of Kalkbrener of a given triangular set T
iff it is a split of Kalkbrener of the saturated ideal of T
. Let K
be an algebraic closure of k
. Assume that V
is finite with cardinality n
and let A
be the affine space K^n
. For a regular triangular set T
let denote by W(T)
the set of regular zeros of T
. A family [T1, ..., Ts]
of regular triangular sets is a split of Lazard of a given subset S
of A
iff the union of the W(Ti)
contains S
and is contained in the closure of S
(w
.r
.t
. Zariski topology). A family [T1, ..., Ts]
of regular triangular sets is a split of Lazard of a given triangular set T
if it is a split of Lazard of W(T)
. Note that if [T1, ..., Ts]
is a split of Lazard of T
then it is also a split of Kalkbrener of T
. The converse is false
. This category provides operations related to both kinds of splits, the former being related to ideals decomposition whereas the latter deals with varieties decomposition. See the example illustrating the RegularTriangularSet constructor for more explanations about decompositions by means of regular triangular sets.
- #: % -> NonNegativeInteger
from Aggregate
- algebraic?: (V, %) -> Boolean
from TriangularSetCategory(R, E, V, P)
- algebraicCoefficients?: (P, %) -> Boolean
algebraicCoefficients?(p, ts)
returnstrue
iff every variable ofp
which is not the main one ofp
is algebraicw
.r
.t
.ts
.
- algebraicVariables: % -> List V
from TriangularSetCategory(R, E, V, P)
- any?: (P -> Boolean, %) -> Boolean
from HomogeneousAggregate P
- augment: (List P, %) -> List %
augment(lp, ts)
returnsts
ifempty? lp
,augment(p, ts)
iflp = [p]
, otherwiseaugment(first lp, augment(rest lp, ts))
- augment: (List P, List %) -> List %
augment(lp, lts)
returns the same asconcat([augment(lp, ts) for ts in lts])
- augment: (P, %) -> List %
augment(p, ts)
assumes thatp
is a non-constant polynomial whose main variable is greater than any variable ofts
. This operation assumes also that ifp
is added tots
the resulting set, sayts+p
, is a regular triangular set. Then it returns a split of Kalkbrener ofts+p
. This may not bets+p
itself, if for instancets+p
is required to be square-free.
- augment: (P, List %) -> List %
augment(p, lts)
returns the same asconcat([augment(p, ts) for ts in lts])
- autoReduced?: (%, (P, List P) -> Boolean) -> Boolean
from TriangularSetCategory(R, E, V, P)
- basicSet: (List P, (P, P) -> Boolean) -> Union(Record(bas: %, top: List P), failed)
from TriangularSetCategory(R, E, V, P)
- basicSet: (List P, P -> Boolean, (P, P) -> Boolean) -> Union(Record(bas: %, top: List P), failed)
from TriangularSetCategory(R, E, V, P)
- coerce: % -> List P
from CoercibleTo List P
- coerce: % -> OutputForm
from CoercibleTo OutputForm
- coHeight: % -> NonNegativeInteger if V has Finite
from TriangularSetCategory(R, E, V, P)
- collect: (%, V) -> %
from PolynomialSetCategory(R, E, V, P)
- collectQuasiMonic: % -> %
from TriangularSetCategory(R, E, V, P)
- collectUnder: (%, V) -> %
from PolynomialSetCategory(R, E, V, P)
- collectUpper: (%, V) -> %
from PolynomialSetCategory(R, E, V, P)
- construct: List P -> %
from Collection P
- convert: % -> InputForm
from ConvertibleTo InputForm
- count: (P -> Boolean, %) -> NonNegativeInteger
from HomogeneousAggregate P
- count: (P, %) -> NonNegativeInteger
from HomogeneousAggregate P
- degree: % -> NonNegativeInteger
from TriangularSetCategory(R, E, V, P)
- eval: (%, Equation P) -> % if P has Evalable P
from Evalable P
- eval: (%, List Equation P) -> % if P has Evalable P
from Evalable P
- eval: (%, List P, List P) -> % if P has Evalable P
from InnerEvalable(P, P)
- eval: (%, P, P) -> % if P has Evalable P
from InnerEvalable(P, P)
- every?: (P -> Boolean, %) -> Boolean
from HomogeneousAggregate P
- extend: (%, P) -> %
from TriangularSetCategory(R, E, V, P)
- extend: (List P, %) -> List %
extend(lp, ts)
returnsts
ifempty? lp
extend(p, ts)
iflp = [p]
elseextend(first lp, extend(rest lp, ts))
- extend: (List P, List %) -> List %
extend(lp, lts)
returns the same asconcat([extend(lp, ts) for ts in lts])|
- extend: (P, %) -> List %
extend(p, ts)
assumes thatp
is a non-constant polynomial whose main variable is greater than any variable ofts
. Then it returns a split of Kalkbrener ofts+p
. This may not bets+p
itself, if for instancets+p
is not a regular triangular set.
- extend: (P, List %) -> List %
extend(p, lts)
returns the same asconcat([extend(p, ts) for ts in lts])|
- extendIfCan: (%, P) -> Union(%, failed)
from TriangularSetCategory(R, E, V, P)
- find: (P -> Boolean, %) -> Union(P, failed)
from Collection P
- first: % -> Union(P, failed)
from TriangularSetCategory(R, E, V, P)
- headReduce: (P, %) -> P
from TriangularSetCategory(R, E, V, P)
- headReduced?: % -> Boolean
from TriangularSetCategory(R, E, V, P)
- headReduced?: (P, %) -> Boolean
from TriangularSetCategory(R, E, V, P)
- headRemainder: (P, %) -> Record(num: P, den: R)
from PolynomialSetCategory(R, E, V, P)
- iexactQuo: (R, R) -> R
from PolynomialSetCategory(R, E, V, P)
- infRittWu?: (%, %) -> Boolean
from TriangularSetCategory(R, E, V, P)
- initiallyReduce: (P, %) -> P
from TriangularSetCategory(R, E, V, P)
- initiallyReduced?: % -> Boolean
from TriangularSetCategory(R, E, V, P)
- initiallyReduced?: (P, %) -> Boolean
from TriangularSetCategory(R, E, V, P)
- initials: % -> List P
from TriangularSetCategory(R, E, V, P)
- internalAugment: (List P, %) -> %
internalAugment(lp, ts)
returnsts
iflp
is empty otherwise returnsinternalAugment(rest lp, internalAugment(first lp, ts))
- internalAugment: (P, %) -> %
internalAugment(p, ts)
assumes thataugment(p, ts)
returns a singleton and returns it.
- intersect: (List P, %) -> List %
intersect(lp, ts)
returnslts
a split of Lazard of the intersection of the affine variety associated withlp
and the regular zero set ofts
.
- intersect: (List P, List %) -> List %
intersect(lp, lts)
returns the same asconcat([intersect(lp, ts) for ts in lts])|
- intersect: (P, %) -> List %
intersect(p, ts)
returns the same asintersect([p], ts)
- invertible?: (P, %) -> Boolean
invertible?(p, ts)
returnstrue
iffp
is invertible in the tower associated withts
.
- invertible?: (P, %) -> List Record(val: Boolean, tower: %)
invertible?(p, ts)
returnslbwt
wherelbwt.i
is the result ofinvertibleElseSplit?(p, lbwt.i.tower)
and the list of the(lqrwt.i).tower
is a split of Kalkbrener ofts
.
- invertibleElseSplit?: (P, %) -> Union(Boolean, List %)
invertibleElseSplit?(p, ts)
returnstrue
(resp.false
) ifp
is invertible in the tower associated withts
or returns a split of Kalkbrener ofts
.
- invertibleSet: (P, %) -> List %
invertibleSet(p, ts)
returns a split of Kalkbrener of the quotient ideal of the idealI
byp
whereI
is the radical of saturated ofts
.
- last: % -> Union(P, failed)
from TriangularSetCategory(R, E, V, P)
- lastSubResultant: (P, P, %) -> List Record(val: P, tower: %)
lastSubResultant(p1, p2, ts)
returnslpwt
such thatlpwt.i.val
is a quasi-monicgcd
ofp1
andp2
w
.r
.t
.lpwt.i.tower
, for everyi
, and such that the list of thelpwt.i.tower
is a split of Kalkbrener ofts
. Moreover, ifp1
andp2
do not have a non-trivialgcd
w
.r
.t
.lpwt.i.tower
thenlpwt.i.val
is the resultant of these polynomialsw
.r
.t
.lpwt.i.tower
. This assumes thatp1
andp2
have the same maim variable and that this variable is greater that any variable occurring ints
.
- lastSubResultantElseSplit: (P, P, %) -> Union(P, List %)
lastSubResultantElseSplit(p1, p2, ts)
returns eitherg
a quasi-monicgcd
ofp1
andp2
w
.r
.t
. thets
or a split of Kalkbrener ofts
. This assumes thatp1
andp2
have the same maim variable and that this variable is greater that any variable occurring ints
.
- latex: % -> String
from SetCategory
- less?: (%, NonNegativeInteger) -> Boolean
from Aggregate
- mainVariable?: (V, %) -> Boolean
from PolynomialSetCategory(R, E, V, P)
- mainVariables: % -> List V
from PolynomialSetCategory(R, E, V, P)
- map!: (P -> P, %) -> %
from HomogeneousAggregate P
- map: (P -> P, %) -> %
from HomogeneousAggregate P
- max: % -> P if P has OrderedSet
from HomogeneousAggregate P
- max: ((P, P) -> Boolean, %) -> P
from HomogeneousAggregate P
- member?: (P, %) -> Boolean
from HomogeneousAggregate P
- members: % -> List P
from HomogeneousAggregate P
- min: % -> P if P has OrderedSet
from HomogeneousAggregate P
- more?: (%, NonNegativeInteger) -> Boolean
from Aggregate
- mvar: % -> V
from PolynomialSetCategory(R, E, V, P)
- normalized?: % -> Boolean
from TriangularSetCategory(R, E, V, P)
- normalized?: (P, %) -> Boolean
from TriangularSetCategory(R, E, V, P)
- parts: % -> List P
from HomogeneousAggregate P
- purelyAlgebraic?: % -> Boolean
purelyAlgebraic?(ts)
returnstrue
iff for every algebraic variablev
ofts
we havealgebraicCoefficients?(t_v, ts_v_-)
wherets_v
is select(ts
,v
) andts_v_-
is collectUnder(ts
,v
).
- purelyAlgebraic?: (P, %) -> Boolean
purelyAlgebraic?(p, ts)
returnstrue
iff every variable ofp
is algebraicw
.r
.t
.ts
.
- purelyAlgebraicLeadingMonomial?: (P, %) -> Boolean
purelyAlgebraicLeadingMonomial?(p, ts)
returnstrue
iff the main variable of any non-constant iterarted initial ofp
is algebraicw
.r
.t
.ts
.
- purelyTranscendental?: (P, %) -> Boolean
purelyTranscendental?(p, ts)
returnstrue
iff every variable ofp
is not algebraicw
.r
.t
.ts
- quasiComponent: % -> Record(close: List P, open: List P)
from TriangularSetCategory(R, E, V, P)
- reduce: ((P, P) -> P, %) -> P
from Collection P
- reduce: ((P, P) -> P, %, P) -> P
from Collection P
- reduce: ((P, P) -> P, %, P, P) -> P
from Collection P
- reduce: (P, %, (P, P) -> P, (P, P) -> Boolean) -> P
from TriangularSetCategory(R, E, V, P)
- reduceByQuasiMonic: (P, %) -> P
from TriangularSetCategory(R, E, V, P)
- reduced?: (P, %, (P, P) -> Boolean) -> Boolean
from TriangularSetCategory(R, E, V, P)
- remainder: (P, %) -> Record(rnum: R, polnum: P, den: R)
from PolynomialSetCategory(R, E, V, P)
- remove: (P -> Boolean, %) -> %
from Collection P
- remove: (P, %) -> %
from Collection P
- removeDuplicates: % -> %
from Collection P
- removeZero: (P, %) -> P
from TriangularSetCategory(R, E, V, P)
- rest: % -> Union(%, failed)
from TriangularSetCategory(R, E, V, P)
- retract: List P -> %
from RetractableFrom List P
- retractIfCan: List P -> Union(%, failed)
from RetractableFrom List P
- rewriteIdealWithHeadRemainder: (List P, %) -> List P
from PolynomialSetCategory(R, E, V, P)
- rewriteIdealWithRemainder: (List P, %) -> List P
from PolynomialSetCategory(R, E, V, P)
- rewriteSetWithReduction: (List P, %, (P, P) -> P, (P, P) -> Boolean) -> List P
from TriangularSetCategory(R, E, V, P)
- roughBase?: % -> Boolean
from PolynomialSetCategory(R, E, V, P)
- roughEqualIdeals?: (%, %) -> Boolean
from PolynomialSetCategory(R, E, V, P)
- roughSubIdeal?: (%, %) -> Boolean
from PolynomialSetCategory(R, E, V, P)
- roughUnitIdeal?: % -> Boolean
from PolynomialSetCategory(R, E, V, P)
- select: (%, V) -> Union(P, failed)
from TriangularSetCategory(R, E, V, P)
- select: (P -> Boolean, %) -> %
from Collection P
- size?: (%, NonNegativeInteger) -> Boolean
from Aggregate
- sort: (%, V) -> Record(under: %, floor: %, upper: %)
from PolynomialSetCategory(R, E, V, P)
- squareFreePart: (P, %) -> List Record(val: P, tower: %)
squareFreePart(p, ts)
returnslpwt
such thatlpwt.i.val
is a square-free polynomialw
.r
.t
.lpwt.i.tower
, this polynomial being associated withp
modulolpwt.i.tower
, for everyi
. Moreover, the list of thelpwt.i.tower
is a split of Kalkbrener ofts
. WARNING: This assumes thatp
is a non-constant polynomial such that ifp
is added tots
, then the resulting set is a regular triangular set.
- stronglyReduce: (P, %) -> P
from TriangularSetCategory(R, E, V, P)
- stronglyReduced?: % -> Boolean
from TriangularSetCategory(R, E, V, P)
- stronglyReduced?: (P, %) -> Boolean
from TriangularSetCategory(R, E, V, P)
- triangular?: % -> Boolean
from PolynomialSetCategory(R, E, V, P)
- trivialIdeal?: % -> Boolean
from PolynomialSetCategory(R, E, V, P)
- variables: % -> List V
from PolynomialSetCategory(R, E, V, P)
- zeroSetSplit: (List P, Boolean) -> List %
zeroSetSplit(lp, clos?)
returnslts
a split of Kalkbrener of the radical ideal associated withlp
. Ifclos?
isfalse
, it is also a decomposition of the variety associated withlp
into the regular zero set of thets
inlts
(or, in other words, a split of Lazard of this variety). See the example illustrating the RegularTriangularSet constructor for more explanations about decompositions by means of regular triangular sets.- zeroSetSplit: List P -> List %
from TriangularSetCategory(R, E, V, P)
- zeroSetSplitIntoTriangularSystems: List P -> List Record(close: %, open: List P)
from TriangularSetCategory(R, E, V, P)
Evalable P if P has Evalable P
InnerEvalable(P, P) if P has Evalable P
PolynomialSetCategory(R, E, V, P)
TriangularSetCategory(R, E, V, P)