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)