RegularTriangularSetCategory(R, E, V, P)
regset.spad line 1
[edit on github]
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
- = : (%, %) -> Boolean
- from BasicType
- algebraic? : (V, %) -> Boolean
- from TriangularSetCategory(R, E, V, P)
- algebraicCoefficients? : (P, %) -> Boolean
algebraicCoefficients?(p, ts)
returns true
iff every variable of p
which is not the main one of p
is algebraic w
.r
.t
. ts
.
- algebraicVariables : % -> List(V)
- from TriangularSetCategory(R, E, V, P)
- any? : (Mapping(Boolean, P), %) -> Boolean
- from HomogeneousAggregate(P)
- augment : (P, %) -> List(%)
augment(p, ts)
assumes that p
is a non-constant polynomial whose main variable is greater than any variable of ts
. This operation assumes also that if p
is added to ts
the resulting set, say ts+p
, is a regular triangular set. Then it returns a split of Kalkbrener of ts+p
. This may not be ts+p
itself, if for instance ts+p
is required to be square-free.
- augment : (P, List(%)) -> List(%)
augment(p, lts)
returns the same as concat([augment(p, ts) for ts in lts])
- augment : (List(P), %) -> List(%)
augment(lp, ts)
returns ts
if empty? lp
, augment(p, ts)
if lp = [p]
, otherwise augment(first lp, augment(rest lp, ts))
- augment : (List(P), List(%)) -> List(%)
augment(lp, lts)
returns the same as concat([augment(lp, ts) for ts in lts])
- autoReduced? : (%, Mapping(Boolean, P, List(P))) -> Boolean
- from TriangularSetCategory(R, E, V, P)
- basicSet : (List(P), Mapping(Boolean, P), Mapping(Boolean, P, P)) -> Union(Record(bas : %, top : List(P)), "failed")
- from TriangularSetCategory(R, E, V, P)
- basicSet : (List(P), Mapping(Boolean, P, P)) -> Union(Record(bas : %, top : List(P)), "failed")
- from TriangularSetCategory(R, E, V, P)
- coHeight : % -> NonNegativeInteger if V has Finite
- from TriangularSetCategory(R, E, V, P)
- coerce : % -> List(P)
- from CoercibleTo(List(P))
- coerce : % -> OutputForm
- from CoercibleTo(OutputForm)
- 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)
- copy : % -> %
- from Aggregate
- count : (P, %) -> NonNegativeInteger
- from HomogeneousAggregate(P)
- count : (Mapping(Boolean, P), %) -> NonNegativeInteger
- from HomogeneousAggregate(P)
- degree : % -> NonNegativeInteger
- from TriangularSetCategory(R, E, V, P)
- empty : () -> %
- from Aggregate
- empty? : % -> Boolean
- from Aggregate
- eq? : (%, %) -> Boolean
- from Aggregate
- eval : (%, P, P) -> % if P has Evalable(P)
- from InnerEvalable(P, P)
- eval : (%, 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 : (%, List(Equation(P))) -> % if P has Evalable(P)
- from Evalable(P)
- every? : (Mapping(Boolean, P), %) -> Boolean
- from HomogeneousAggregate(P)
- extend : (%, P) -> %
- from TriangularSetCategory(R, E, V, P)
- extend : (P, %) -> List(%)
extend(p, ts)
assumes that p
is a non-constant polynomial whose main variable is greater than any variable of ts
. Then it returns a split of Kalkbrener of ts+p
. This may not be ts+p
itself, if for instance ts+p
is not a regular triangular set.
- extend : (P, List(%)) -> List(%)
extend(p, lts)
returns the same as concat([extend(p, ts) for ts in lts])|
- extend : (List(P), %) -> List(%)
extend(lp, ts)
returns ts
if empty? lp
extend(p, ts)
if lp = [p]
else extend(first lp, extend(rest lp, ts))
- extend : (List(P), List(%)) -> List(%)
extend(lp, lts)
returns the same as concat([extend(lp, ts) for ts in lts])|
- extendIfCan : (%, P) -> Union(%, "failed")
- from TriangularSetCategory(R, E, V, P)
- find : (Mapping(Boolean, P), %) -> 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 : (P, %) -> %
internalAugment(p, ts)
assumes that augment(p, ts)
returns a singleton and returns it.
- internalAugment : (List(P), %) -> %
internalAugment(lp, ts)
returns ts
if lp
is empty otherwise returns internalAugment(rest lp, internalAugment(first lp, ts))
- intersect : (P, %) -> List(%)
intersect(p, ts)
returns the same as intersect([p], ts)
- intersect : (P, List(%)) -> List(%)
intersect(p, lts)
returns the same as intersect([p], lts)
- intersect : (List(P), %) -> List(%)
intersect(lp, ts)
returns lts
a split of Lazard of the intersection of the affine variety associated with lp
and the regular zero set of ts
.
- intersect : (List(P), List(%)) -> List(%)
intersect(lp, lts)
returns the same as concat([intersect(lp, ts) for ts in lts])|
- invertible? : (P, %) -> Boolean
invertible?(p, ts)
returns true
iff p
is invertible in the tower associated with ts
.
- invertible? : (P, %) -> List(Record(val : Boolean, tower : %))
invertible?(p, ts)
returns lbwt
where lbwt.i
is the result of invertibleElseSplit?(p, lbwt.i.tower)
and the list of the (lqrwt.i).tower
is a split of Kalkbrener of ts
.
- invertibleElseSplit? : (P, %) -> Union(Boolean, List(%))
invertibleElseSplit?(p, ts)
returns true
(resp. false
) if p
is invertible in the tower associated with ts
or returns a split of Kalkbrener of ts
.
- invertibleSet : (P, %) -> List(%)
invertibleSet(p, ts)
returns a split of Kalkbrener of the quotient ideal of the ideal I
by p
where I
is the radical of saturated of ts
.
- last : % -> Union(P, "failed")
- from TriangularSetCategory(R, E, V, P)
- lastSubResultant : (P, P, %) -> List(Record(val : P, tower : %))
lastSubResultant(p1, p2, ts)
returns lpwt
such that lpwt.i.val
is a quasi-monic gcd
of p1
and p2
w
.r
.t
. lpwt.i.tower
, for every i
, and such that the list of the lpwt.i.tower
is a split of Kalkbrener of ts
. Moreover, if p1
and p2
do not have a non-trivial gcd
w
.r
.t
. lpwt.i.tower
then lpwt.i.val
is the resultant of these polynomials w
.r
.t
. lpwt.i.tower
. This assumes that p1
and p2
have the same maim variable and that this variable is greater that any variable occurring in ts
.
- lastSubResultantElseSplit : (P, P, %) -> Union(P, List(%))
lastSubResultantElseSplit(p1, p2, ts)
returns either g
a quasi-monic gcd
of p1
and p2
w
.r
.t
. the ts
or a split of Kalkbrener of ts
. This assumes that p1
and p2
have the same maim variable and that this variable is greater that any variable occurring in ts
.
- 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 : (Mapping(P, P), %) -> %
- from HomogeneousAggregate(P)
- map! : (Mapping(P, P), %) -> %
- from HomogeneousAggregate(P)
- max : % -> P if P has OrderedSet
- from HomogeneousAggregate(P)
- max : (Mapping(Boolean, P, P), %) -> 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)
returns true
iff for every algebraic variable v
of ts
we have algebraicCoefficients?(t_v, ts_v_-)
where ts_v
is select(ts
, v
) and ts_v_-
is collectUnder(ts
, v
).
- purelyAlgebraic? : (P, %) -> Boolean
purelyAlgebraic?(p, ts)
returns true
iff every variable of p
is algebraic w
.r
.t
. ts
.
- purelyAlgebraicLeadingMonomial? : (P, %) -> Boolean
purelyAlgebraicLeadingMonomial?(p, ts)
returns true
iff the main variable of any non-constant iterarted initial of p
is algebraic w
.r
.t
. ts
.
- purelyTranscendental? : (P, %) -> Boolean
purelyTranscendental?(p, ts)
returns true
iff every variable of p
is not algebraic w
.r
.t
. ts
- quasiComponent : % -> Record(close : List(P), open : List(P))
- from TriangularSetCategory(R, E, V, P)
- reduce : (P, %, Mapping(P, P, P), Mapping(Boolean, P, P)) -> P
- from TriangularSetCategory(R, E, V, P)
- reduce : (Mapping(P, P, P), %) -> P
- from Collection(P)
- reduce : (Mapping(P, P, P), %, P) -> P
- from Collection(P)
- reduce : (Mapping(P, P, P), %, P, P) -> P
- from Collection(P)
- reduceByQuasiMonic : (P, %) -> P
- from TriangularSetCategory(R, E, V, P)
- reduced? : (P, %, Mapping(Boolean, P, P)) -> Boolean
- from TriangularSetCategory(R, E, V, P)
- remainder : (P, %) -> Record(rnum : R, polnum : P, den : R)
- from PolynomialSetCategory(R, E, V, P)
- remove : (P, %) -> %
- from Collection(P)
- remove : (Mapping(Boolean, 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), %, Mapping(P, P, P), Mapping(Boolean, P, P)) -> 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)
- sample : () -> %
- from Aggregate
- select : (Mapping(Boolean, P), %) -> %
- from Collection(P)
- select : (%, V) -> Union(P, "failed")
- from TriangularSetCategory(R, E, V, 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)
returns lpwt
such that lpwt.i.val
is a square-free polynomial w
.r
.t
. lpwt.i.tower
, this polynomial being associated with p
modulo lpwt.i.tower
, for every i
. Moreover, the list of the lpwt.i.tower
is a split of Kalkbrener of ts
. WARNING: This assumes that p
is a non-constant polynomial such that if p
is added to ts
, 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) -> List(%)
- from TriangularSetCategory(R, E, V, P)
- zeroSetSplit : (List(P), Boolean) -> List(%)
zeroSetSplit(lp, clos?)
returns lts
a split of Kalkbrener of the radical ideal associated with lp
. If clos?
is false
, it is also a decomposition of the variety associated with lp
into the regular zero set of the ts
in lts
(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.
- zeroSetSplitIntoTriangularSystems : List(P) -> List(Record(close : %, open : List(P)))
- from TriangularSetCategory(R, E, V, P)
- ~= : (%, %) -> Boolean
- from BasicType
Aggregate
RetractableFrom(List(P))
HomogeneousAggregate(P)
BasicType
PolynomialSetCategory(R, E, V, P)
ConvertibleTo(InputForm)
CoercibleTo(List(P))
InnerEvalable(P, P)
Evalable(P)
TriangularSetCategory(R, E, V, P)
SetCategory
CoercibleTo(OutputForm)
finiteAggregate
shallowlyMutable
Collection(P)