|
On Wednesday, October 12, 2005 5:29 PM Renaud Rioboo wrote:
Dear Axiom fans,
In the last few years there have been a regain of interest in some Computer
Algebra users circles about Cylindrical Algebraic Decomposition (aka CAD). As
some of you may know my thesis was about CAD and I am regularly receiving
queries about CAD and the Axiom implementation I wrote.
I already privately gave sources or ran particular problems for some people
but I have never officially released my sources because I do not think they
are at production level and many work has still to be done on them.
Recently Martin Rubey thought it could be a good idea to release them and I
have of course no objection on that point nor on sharing these sources with
the community. If there is some interest on it you may include it into the
Axiom distribution with the same permissions than the rest of the software.
While I wait for my lab to give me the necessary permissions to be able to use
Axiom and export this software you may find it's sources at the unlisted url
http://rioboo.free.fr/CadPub/
I would like to add just a few words about that work which is a
straightforward implementation of the standard papers by Arnon, Collins and
McCallum? which are more than 20 years old now.
My work on Cad is 15 years old and was developped for the defense of my thesis
where CAD was an sample application for real algebraic numbers
manipulations. By the time I wrote it I also needed some subresultant
calculations which were not in Axiom (Scratchpad by that time) and the
required machinery to work with real algebraic numbers.
Along the times, real algebraic numbers were included into Axiom and
subresultant calculations which are used in several places of the Axiom
Library were modified to all use Lionel Ducos's package which enables a
performance gain. While making these modifications to Axiom I tried to keep my
CAD package up-to-date with the Axiom Library and have used it as a test for
other packages. It thus should compile under recent Axiom versions and should
compute something that resembles a CAD.
Don't expect this package to be the absolute CAD program, I never found time
to further work on it in order to include many enhancements which are present
in other CAD packages. While Axiom versions evolved I had to remove what I
thought were enhancements and remove some support for generalization. As of
today it only includes one projection method which is the McCallum? projection
and no reconstruction nor adjacency's are taken into account.
However it did reasonabily compare with more recent techniques such as
Rational Univariate Representation (aka RUR) for simple cases though it could
not produce results for some more complicated cases. By the time this
comparison was made Axiom had some severe memory restrictions which seem to
have disappear now. I thus think that many objections to using CAD could now
be revised.
For hard problems this package should thus not be worse than any other CAD
package except that you cannot fall into an optimzation drawback :-) There is
no optimization !
I will of course try to maintain the package to the best of my ability. One
thing I should do is include comments describing the different functions, but
even that requires going into the code and the algorithms which are quite old
for me now.
Let me know if there is some interest on it.
Best regards,
Renaud
spad )ab pack CADU CylindricalAlgebraicDecompositionUtilities
CylindricalAlgebraicDecompositionUtilities(R,P) : PUB == PRIV where
-- Tese are some standard tools which are needed to compute with univariate
-- polynomials.
--
-- A gcd basis for a set of polynomials is a set of pairwise relatively prime
-- polynomials which all divide the original set and whose product is the
-- same than the product of the original set.
--
-- A square free basis for a list of polynomials is just a list
-- of square free polynomials which are pairwise relatively primes and have
-- the same roots than the original polynomials.
R : GcdDomain
P : UnivariatePolynomialCategory(R)
PUB == with
squareFreeBasis : List(P) -> List(P)
++
gcdBasis : List(P) -> List(P)
++ decompose a list of polynomials into pairwise relatively
++ prime polynomials
gcdBasisAdd : (P,List(P)) -> List(P)
++ add one polynomial to list of pairwise relatively prime polynomials
PRIV == add
squareFreeBasis(lpols) ==
lpols = [] => []
pol := first(lpols)
sqpol := unitCanonical(squareFreePart(pol))
gcdBasis(cons(sqpol,squareFreeBasis(rest(lpols))))
gcdBasisAdd(p,lpols) ==
(degree(p) = 0) => lpols
null lpols => [unitCanonical p]
p1 := first(lpols)
g := gcd(p,p1)
(degree(g) = 0) => cons(p1,gcdBasisAdd(p,rest lpols))
p := (p exquo g)::P
p1 := (p1 exquo g)::P
basis := gcdBasisAdd(p,rest(lpols))
if degree(p1) > 0 then basis := cons(p1,basis)
gcdBasisAdd(g,basis)
gcdBasis(lpols) ==
(#lpols <= 1) => lpols
basis := gcdBasis(rest lpols)
gcdBasisAdd(first(lpols),basis)
spad Compiling FriCAS source code from file
/var/zope2/var/LatexWiki/4986109030324487666-25px001.spad using
old system compiler.
CADU abbreviates package CylindricalAlgebraicDecompositionUtilities
------------------------------------------------------------------------
initializing NRLIB CADU for CylindricalAlgebraicDecompositionUtilities
compiling into NRLIB CADU
compiling exported squareFreeBasis : List P -> List P
Time: 0.17 SEC.
compiling exported gcdBasisAdd : (P,List P) -> List P
Time: 0.01 SEC.
compiling exported gcdBasis : List P -> List P
Time: 0.04 SEC.
(time taken in buildFunctor: 5)
;;; *** |CylindricalAlgebraicDecompositionUtilities| REDEFINED
;;; *** |CylindricalAlgebraicDecompositionUtilities| REDEFINED
Time: 0.05 SEC.
Cumulative Statistics for Constructor CylindricalAlgebraicDecompositionUtilities
Time: 0.27 seconds
finalizing NRLIB CADU
Processing CylindricalAlgebraicDecompositionUtilities for Browser database:
--------(squareFreeBasis ((List P) (List P)))---------
--------(gcdBasis ((List P) (List P)))---------
--->-->CylindricalAlgebraicDecompositionUtilities((gcdBasis ((List P) (List P)))): Improper first word in comments: decompose
"decompose a list of polynomials into pairwise relatively prime polynomials"
--------(gcdBasisAdd ((List P) P (List P)))---------
--->-->CylindricalAlgebraicDecompositionUtilities((gcdBasisAdd ((List P) P (List P)))): Improper first word in comments: add
"add one polynomial to list of pairwise relatively prime polynomials"
--->-->CylindricalAlgebraicDecompositionUtilities(constructor): Not documented!!!!
--->-->CylindricalAlgebraicDecompositionUtilities(): Missing Description
------------------------------------------------------------------------
CylindricalAlgebraicDecompositionUtilities is now explicitly exposed
in frame initial
CylindricalAlgebraicDecompositionUtilities will be automatically
loaded when needed from /var/zope2/var/LatexWiki/CADU.NRLIB/code
spad )ab domain SCELL SimpleCell
- This domain is made to work with one-dimensional semi-algebraic cells
-- ie either an algebraic point, either an interval. The point is specified as
-- specification of an algebraic value.
SimpleCell(TheField,ThePols) : PUB == PRIV where
TheField : RealClosedField
ThePols : UnivariatePolynomialCategory(TheField)
O ==> OutputForm
B ==> Boolean
Z ==> Integer
N ==> NonNegativeInteger
-- VARS ==> VariationsPackage(TheField,ThePols)
VARS ==> RealPolynomialUtilitiesPackage(TheField,ThePols)
LF ==> List(TheField)
PUB == CoercibleTo(O) with
allSimpleCells : (ThePols,Symbol) -> List %
allSimpleCells : (List(ThePols),Symbol) -> List %
hasDimension? : % -> B
samplePoint : % -> TheField
stablePol : % -> ThePols
variableOf : % -> Symbol
separe : (LF,TheField,TheField) -> LF
pointToCell : (TheField,B,Symbol) -> %
PRIV == add
Rep := Record(samplePoint:TheField,
hasDim:B,
varOf:Symbol)
samplePoint(c) == c.samplePoint
stablePol(c) == error "Prout"
hasDimension?(c) == c.hasDim
variableOf(c) == c.varOf
coerce(c:%):O ==
o : O := ((c.varOf)::O) = ((c.samplePoint)::O)
brace [o,(c.hasDim)::O]
separe(liste,gauche,droite) ==
milieu : TheField := (gauche + droite) / (2::TheField)
liste = [] => [milieu]
#liste = 1 => [gauche,first(liste),droite]
nbe := first(liste)
lg :List(TheField) := []
ld :List(TheField) := rest(liste)
sg := sign(milieu-nbe)
while sg > 0 repeat
lg := cons(nbe,lg)
ld = [] => return(separe(reverse(lg),gauche,milieu))
nbe := first(ld)
sg := sign(milieu-nbe)
ld := rest(ld)
sg < 0 =>
append(separe(reverse(lg),gauche,milieu),
rest(separe(cons(nbe,ld),milieu,droite)))
newDroite := (gauche+milieu)/(2::TheField)
null lg =>
newGauche := (milieu+droite)/(2::TheField)
while newGauche >= first(ld) repeat
newGauche := (milieu+newGauche)/(2::TheField)
append([gauche,milieu],separe(ld,newGauche,droite))
while newDroite <= first(lg) repeat
newDroite := (newDroite+milieu)/(2::TheField)
newGauche := (milieu+droite)/(2::TheField)
null ld => append(separe(reverse(lg),gauche,newDroite),[milieu,droite])
while newGauche >= first(ld) repeat
newGauche := (milieu+newGauche)/(2::TheField)
append(separe(reverse(lg),gauche,newDroite),
cons(milieu,separe(ld,newGauche,droite)))
pointToCell(sp,hasDim?,varName) ==
[sp,hasDim?,varName]$Rep
allSimpleCells(p:ThePols,var:Symbol) ==
allSimpleCells([p],var)
PACK ==> CylindricalAlgebraicDecompositionUtilities(TheField,ThePols)
allSimpleCells(lp:List(ThePols),var:Symbol) ==
lp1 := gcdBasis(lp)$PACK
null(lp1) => [pointToCell(0,true,var)]
b := ("max" / [ boundOfCauchy(p)$VARS for p in lp1 ])::TheField
l := "append" / [allRootsOf(makeSUP(unitCanonical(p))) for p in lp1]
l := sort(l)
l1 := separe(l,-b,b)
res : List(%) := [pointToCell(first(l1),true,var)]
l1 := rest(l1)
while not(null(l1)) repeat
res := cons(pointToCell(first(l1),false,var),res)
l1 := rest(l1)
l1 = [] => return(error "Liste vide")
res := cons(pointToCell(first(l1),true,var),res)
l1 := rest(l1)
reverse! res
spad Compiling FriCAS source code from file
/var/zope2/var/LatexWiki/9165941727097331838-25px002.spad using
old system compiler.
SCELL abbreviates domain SimpleCell
processing macro definition O ==> OutputForm
processing macro definition B ==> Boolean
processing macro definition Z ==> Integer
processing macro definition N ==> NonNegativeInteger
processing macro definition VARS ==> RealPolynomialUtilitiesPackage(TheField,ThePols)
processing macro definition LF ==> List TheField
------------------------------------------------------------------------
initializing NRLIB SCELL for SimpleCell
compiling into NRLIB SCELL
compiling exported samplePoint : $ -> TheField
SCELL;samplePoint;$TheField;1 is replaced by QVELTc0
Time: 0.02 SEC.
compiling exported stablePol : $ -> ThePols
SCELL;stablePol;$ThePols;2 is replaced by errorProut
Time: 0.01 SEC.
compiling exported hasDimension? : $ -> Boolean
SCELL;hasDimension?;$B;3 is replaced by QVELTc1
Time: 0 SEC.
compiling exported variableOf : $ -> Symbol
SCELL;variableOf;$S;4 is replaced by QVELTc2
Time: 0 SEC.
compiling exported coerce : $ -> OutputForm
Time: 0.03 SEC.
compiling exported separe : (List TheField,TheField,TheField) -> List TheField
Time: 0.04 SEC.
compiling exported pointToCell : (TheField,Boolean,Symbol) -> $
SCELL;pointToCell;TheFieldBS$;7 is replaced by VECTOR
Time: 0 SEC.
compiling exported allSimpleCells : (ThePols,Symbol) -> List $
Time: 0.02 SEC.
processing macro definition PACK ==> CylindricalAlgebraicDecompositionUtilities(TheField,ThePols)
compiling exported allSimpleCells : (List ThePols,Symbol) -> List $
Time: 0.18 SEC.
(time taken in buildFunctor: 0)
;;; *** |SimpleCell| REDEFINED
;;; *** |SimpleCell| REDEFINED
Time: 0 SEC.
Warnings:
[1] allSimpleCells: not known that (Ring) is of mode (CATEGORY domain (SIGNATURE allSimpleCells ((List $) ThePols (Symbol))) (SIGNATURE allSimpleCells ((List $) (List ThePols) (Symbol))) (SIGNATURE hasDimension? ((Boolean) $)) (SIGNATURE samplePoint (TheField $)) (SIGNATURE stablePol (ThePols $)) (SIGNATURE variableOf ((Symbol) $)) (SIGNATURE separe ((List TheField) (List TheField) TheField TheField)) (SIGNATURE pointToCell ($ TheField (Boolean) (Symbol))))
Cumulative Statistics for Constructor SimpleCell
Time: 0.30 seconds
finalizing NRLIB SCELL
Processing SimpleCell for Browser database:
--->-->SimpleCell((allSimpleCells ((List %) ThePols (Symbol)))): Not documented!!!!
--->-->SimpleCell((allSimpleCells ((List %) (List ThePols) (Symbol)))): Not documented!!!!
--->-->SimpleCell((hasDimension? (B %))): Not documented!!!!
--->-->SimpleCell((samplePoint (TheField %))): Not documented!!!!
--->-->SimpleCell((stablePol (ThePols %))): Not documented!!!!
--->-->SimpleCell((variableOf ((Symbol) %))): Not documented!!!!
--->-->SimpleCell((separe (LF LF TheField TheField))): Not documented!!!!
--->-->SimpleCell((pointToCell (% TheField B (Symbol)))): Not documented!!!!
--->-->SimpleCell(constructor): Not documented!!!!
--->-->SimpleCell(): Missing Description
------------------------------------------------------------------------
SimpleCell is now explicitly exposed in frame initial
SimpleCell will be automatically loaded when needed from
/var/zope2/var/LatexWiki/SCELL.NRLIB/code
spad )ab domain CELL Cell
Cell(TheField) : PUB == PRIV where
TheField : RealClosedField
ThePols ==> Polynomial(TheField)
O ==> OutputForm
B ==> Boolean
Z ==> Integer
N ==> NonNegativeInteger
BUP ==> SparseUnivariatePolynomial(TheField)
SCELL ==> SimpleCell(TheField,BUP)
PUB == CoercibleTo(O) with
samplePoint : % -> List(TheField)
dimension : % -> N
hasDimension? : (%,Symbol) -> B
makeCell : List(SCELL) -> %
makeCell : (SCELL,%) -> %
mainVariableOf : % -> Symbol
variablesOf : % -> List Symbol
projection : % -> Union(%,"failed")
PRIV == add
Rep := List(SCELL)
coerce(c:%):O ==
paren [sc::O for sc in c]
projection(cell) ==
null cell => error "projection: should not appear"
r := rest(cell)
null r => "failed"
r
makeCell(l:List(SCELL)) == l
makeCell(scell,toAdd) == cons(scell,toAdd)
mainVariableOf(cell) ==
null(cell) =>
error "Should not appear"
variableOf(first(cell))
variablesOf(cell) ==
null(cell) => []
cons(mainVariableOf(cell),variablesOf(rest(cell)::%))
dimension(cell) ==
null(cell) => 0
hasDimension?(first(cell)) => 1+dimension(rest(cell))
dimension(rest(cell))
hasDimension?(cell,var) ==
null(cell) =>
error "Should not appear"
sc : SCELL := first(cell)
v := variableOf(sc)
v = var => hasDimension?(sc)
v < var => false
v > var => true
error "Caca Prout"
samplePoint(cell) ==
null(cell) => []
cons(samplePoint(first(cell)),samplePoint(rest(cell)))
spad Compiling FriCAS source code from file
/var/zope2/var/LatexWiki/6660987790622940247-25px003.spad using
old system compiler.
CELL abbreviates domain Cell
processing macro definition ThePols ==> Polynomial TheField
processing macro definition O ==> OutputForm
processing macro definition B ==> Boolean
processing macro definition Z ==> Integer
processing macro definition N ==> NonNegativeInteger
processing macro definition BUP ==> SparseUnivariatePolynomial TheField
processing macro definition SCELL ==> SimpleCell(TheField,SparseUnivariatePolynomial TheField)
------------------------------------------------------------------------
initializing NRLIB CELL for Cell
compiling into NRLIB CELL
compiling exported coerce : $ -> OutputForm
Time: 0.01 SEC.
compiling exported projection : $ -> Union($,failed)
Time: 0.01 SEC.
compiling exported makeCell : List SimpleCell(TheField,SparseUnivariatePolynomial TheField) -> $
CELL;makeCell;L$;3 is replaced by l
Time: 0 SEC.
compiling exported makeCell : (SimpleCell(TheField,SparseUnivariatePolynomial TheField),$) -> $
CELL;makeCell;Sc2$;4 is replaced by CONS
Time: 0 SEC.
compiling exported mainVariableOf : $ -> Symbol
Time: 0.01 SEC.
compiling exported variablesOf : $ -> List Symbol
Time: 0 SEC.
compiling exported dimension : $ -> NonNegativeInteger
Time: 0.01 SEC.
compiling exported hasDimension? : ($,Symbol) -> Boolean
Time: 0 SEC.
compiling exported samplePoint : $ -> List TheField
Time: 0.01 SEC.
(time taken in buildFunctor: 0)
;;; *** |Cell| REDEFINED
;;; *** |Cell| REDEFINED
Time: 0 SEC.
Cumulative Statistics for Constructor Cell
Time: 0.05 seconds
finalizing NRLIB CELL
Processing Cell for Browser database:
--->-->Cell((samplePoint ((List TheField) %))): Not documented!!!!
--->-->Cell((dimension (N %))): Not documented!!!!
--->-->Cell((hasDimension? (B % (Symbol)))): Not documented!!!!
--->-->Cell((makeCell (% (List SCELL)))): Not documented!!!!
--->-->Cell((makeCell (% SCELL %))): Not documented!!!!
--->-->Cell((mainVariableOf ((Symbol) %))): Not documented!!!!
--->-->Cell((variablesOf ((List (Symbol)) %))): Not documented!!!!
--->-->Cell((projection ((Union % failed) %))): Not documented!!!!
--->-->Cell(constructor): Not documented!!!!
--->-->Cell(): Missing Description
------------------------------------------------------------------------
Cell is now explicitly exposed in frame initial
Cell will be automatically loaded when needed from
/var/zope2/var/LatexWiki/CELL.NRLIB/code
spad )ab pack CAD CylindricalAlgebraicDecompositionPackage
CylindricalAlgebraicDecompositionPackage(TheField) : PUB == PRIV where
TheField : RealClosedField
ThePols ==> Polynomial(TheField)
P ==> ThePols
BUP ==> SparseUnivariatePolynomial(TheField)
RUP ==> SparseUnivariatePolynomial(ThePols)
Z ==> Integer
N ==> NonNegativeInteger
CELL ==> Cell(TheField)
SCELL ==> SimpleCell(TheField,BUP)
PUB == with
cylindricalDecomposition: List P -> List CELL
cylindricalDecomposition: (List(P),List(Symbol)) -> List CELL
projectionSet: (List RUP) -> List P
coefficientSet: RUP -> List P
discriminantSet : List RUP -> List(P)
resultantSet : List RUP -> List P
principalSubResultantSet : (RUP,RUP) -> List P
specialise : (List(ThePols),CELL) -> List(BUP)
PRIV == add
cylindricalDecomposition(lpols) ==
lv : List(Symbol) := []
for pol in lpols repeat
ground?(pol) => "next pol"
lv := removeDuplicates(append(variables(pol),lv))
lv := reverse(sort(lv))
cylindricalDecomposition(lpols,lv)
cylindricalDecomposition(lpols,lvars) ==
lvars = [] => error("CAD: cylindricalDecomposition: empty list of vars")
mv := first(lvars)
lv := rest(lvars)
lv = [] =>
lp1 := [ univariate(pol) for pol in lpols ]
scells := allSimpleCells(lp1,mv)$SCELL
[ makeCell([scell]) for scell in scells ]
lpols1 := projectionSet [univariate(pol,mv) for pol in lpols]
previousCad := cylindricalDecomposition(lpols1,lv)
res : List(CELL) := []
for cell in previousCad repeat
lspec := specialise(lpols,cell)
scells := allSimpleCells(lspec,mv)
res := append(res,[makeCell(scell,cell) for scell in scells])
res
PACK1 ==> CylindricalAlgebraicDecompositionUtilities(ThePols,RUP)
PACK2 ==> CylindricalAlgebraicDecompositionUtilities(TheField,BUP)
specialise(lpols,cell) ==
lpols = [] => error("CAD: specialise: empty list of pols")
sp := samplePoint(cell)
vl := variablesOf(cell)
res : List(BUP) := []
for pol in lpols repeat
p1 := univariate(eval(pol,vl,sp))
-- zero?(p1) => return(error "Bad sepcialise")
degree(p1) = 0 => "next pol"
res := cons(p1,res)
res
coefficientSet(pol) ==
res : List(ThePols) := []
for c in coefficients(pol) repeat
ground?(c) => return(res)
res := cons(c,res)
res
SUBRES ==> SubResultantPackage(ThePols,RUP)
discriminantSet(lpols) ==
res : List(ThePols) := []
for p in lpols repeat
v := subresultantVector(p,differentiate(p))$SUBRES
not(zero?(degree(v.0))) => return(error "Bad discriminant")
d : ThePols := leadingCoefficient(v.0)
-- d := discriminant p
zero?(d) => return(error "Non Square Free polynomial")
if not(ground? d) then res := cons(d,res)
res
principalSubResultantSet(p,q) ==
if degree(p) < degree(q)
then (p,q) := (q,p)
if degree(p) = degree(q)
then (p,q) := (q,pseudoRemainder(p, q))
v := subresultantVector(p,q)$SUBRES
[coefficient(v.i,i) for i in 0..(((#v)-2)::N)]
resultantSet(lpols) ==
res : List(ThePols) := []
laux := lpols
for p in lpols repeat
laux := rest(laux)
for q in laux repeat
r : ThePols := first(principalSubResultantSet(p,q))
-- r := resultant(p,q)
zero?(r) => return(error "Non relatively prime polynomials")
if not(ground? r) then res := cons(r,res)
res
projectionSet(lpols) ==
res : List(ThePols) := []
for p in lpols repeat
c := content(p)
ground?(c) => "next p"
res := cons(c,res)
lp1 := [primitivePart p for p in lpols]
f : ((RUP,RUP) -> Boolean) := (degree(#1) <= degree(#2))
lp1 := sort(f,lp1)
lsqfrb := squareFreeBasis(lp1)$PACK1
lsqfrb := sort(f,lsqfrb)
for p in lp1 repeat
res := append(res,coefficientSet(p))
res := append(res,discriminantSet(lsqfrb))
append(res,resultantSet(lsqfrb))
spad Compiling FriCAS source code from file
/var/zope2/var/LatexWiki/1235315989953270759-25px004.spad using
old system compiler.
CAD abbreviates package CylindricalAlgebraicDecompositionPackage
processing macro definition ThePols ==> Polynomial TheField
processing macro definition P ==> Polynomial TheField
processing macro definition BUP ==> SparseUnivariatePolynomial TheField
processing macro definition RUP ==> SparseUnivariatePolynomial Polynomial TheField
processing macro definition Z ==> Integer
processing macro definition N ==> NonNegativeInteger
processing macro definition CELL ==> Cell TheField
processing macro definition SCELL ==> SimpleCell(TheField,SparseUnivariatePolynomial TheField)
------------------------------------------------------------------------
initializing NRLIB CAD for CylindricalAlgebraicDecompositionPackage
compiling into NRLIB CAD
compiling exported cylindricalDecomposition : List Polynomial TheField -> List Cell TheField
Time: 0.04 SEC.
compiling exported cylindricalDecomposition : (List Polynomial TheField,List Symbol) -> List Cell TheField
Time: 0.53 SEC.
processing macro definition PACK1 ==> CylindricalAlgebraicDecompositionUtilities(Polynomial TheField,SparseUnivariatePolynomial Polynomial TheField)
processing macro definition PACK2 ==> CylindricalAlgebraicDecompositionUtilities(TheField,SparseUnivariatePolynomial TheField)
compiling exported specialise : (List Polynomial TheField,Cell TheField) -> List SparseUnivariatePolynomial TheField
Time: 0.20 SEC.
compiling exported coefficientSet : SparseUnivariatePolynomial Polynomial TheField -> List Polynomial TheField
Time: 0.09 SEC.
processing macro definition SUBRES ==> SubResultantPackage(Polynomial TheField,SparseUnivariatePolynomial Polynomial TheField)
compiling exported discriminantSet : List SparseUnivariatePolynomial Polynomial TheField -> List Polynomial TheField
Time: 0.16 SEC.
compiling exported principalSubResultantSet : (SparseUnivariatePolynomial Polynomial TheField,SparseUnivariatePolynomial Polynomial TheField) -> List Polynomial TheField
Time: 0.08 SEC.
compiling exported resultantSet : List SparseUnivariatePolynomial Polynomial TheField -> List Polynomial TheField
Time: 0.04 SEC.
compiling exported projectionSet : List SparseUnivariatePolynomial Polynomial TheField -> List Polynomial TheField
Time: 0.08 SEC.
(time taken in buildFunctor: 1)
;;; *** |CylindricalAlgebraicDecompositionPackage| REDEFINED
;;; *** |CylindricalAlgebraicDecompositionPackage| REDEFINED
Time: 0.01 SEC.
Warnings:
[1] cylindricalDecomposition: lv has no value
[2] cylindricalDecomposition: not known that (Ring) is of mode (CATEGORY package (SIGNATURE cylindricalDecomposition ((List (Cell TheField)) (List (Polynomial TheField)))) (SIGNATURE cylindricalDecomposition ((List (Cell TheField)) (List (Polynomial TheField)) (List (Symbol)))) (SIGNATURE projectionSet ((List (Polynomial TheField)) (List (SparseUnivariatePolynomial (Polynomial TheField))))) (SIGNATURE coefficientSet ((List (Polynomial TheField)) (SparseUnivariatePolynomial (Polynomial TheField)))) (SIGNATURE discriminantSet ((List (Polynomial TheField)) (List (SparseUnivariatePolynomial (Polynomial TheField))))) (SIGNATURE resultantSet ((List (Polynomial TheField)) (List (SparseUnivariatePolynomial (Polynomial TheField))))) (SIGNATURE principalSubResultantSet ((List (Polynomial TheField)) (SparseUnivariatePolynomial (Polynomial TheField)) (SparseUnivariatePolynomial (Polynomial TheField)))) (SIGNATURE specialise ((List (SparseUnivariatePolynomial TheField)) (List (Polynomial TheField)) (Cell TheField))))
[3] specialise: res has no value
[4] discriminantSet: res has no value
[5] resultantSet: res has no value
[6] projectionSet: res has no value
Cumulative Statistics for Constructor CylindricalAlgebraicDecompositionPackage
Time: 1.23 seconds
finalizing NRLIB CAD
Processing CylindricalAlgebraicDecompositionPackage for Browser database:
--->-->CylindricalAlgebraicDecompositionPackage((cylindricalDecomposition ((List CELL) (List P)))): Not documented!!!!
--->-->CylindricalAlgebraicDecompositionPackage((cylindricalDecomposition ((List CELL) (List P) (List (Symbol))))): Not documented!!!!
--->-->CylindricalAlgebraicDecompositionPackage((projectionSet ((List P) (List RUP)))): Not documented!!!!
--->-->CylindricalAlgebraicDecompositionPackage((coefficientSet ((List P) RUP))): Not documented!!!!
--->-->CylindricalAlgebraicDecompositionPackage((discriminantSet ((List P) (List RUP)))): Not documented!!!!
--->-->CylindricalAlgebraicDecompositionPackage((resultantSet ((List P) (List RUP)))): Not documented!!!!
--->-->CylindricalAlgebraicDecompositionPackage((principalSubResultantSet ((List P) RUP RUP))): Not documented!!!!
--->-->CylindricalAlgebraicDecompositionPackage((specialise ((List BUP) (List ThePols) CELL))): Not documented!!!!
--->-->CylindricalAlgebraicDecompositionPackage(constructor): Not documented!!!!
--->-->CylindricalAlgebraicDecompositionPackage(): Missing Description
------------------------------------------------------------------------
CylindricalAlgebraicDecompositionPackage is now explicitly exposed
in frame initial
CylindricalAlgebraicDecompositionPackage will be automatically
loaded when needed from /var/zope2/var/LatexWiki/CAD.NRLIB/code
axiom )lib )dir .
XPrimitiveArray is now explicitly exposed in frame initial
XPrimitiveArray will be automatically loaded when needed from
/var/zope2/var/LatexWiki/XPRIMARR.NRLIB/code
Word is now explicitly exposed in frame initial
Word will be automatically loaded when needed from
/var/zope2/var/LatexWiki/WORD.NRLIB/code
VectorField is now explicitly exposed in frame initial
VectorField will be automatically loaded when needed from
/var/zope2/var/LatexWiki/VF.NRLIB/code
TaylorSolve is now explicitly exposed in frame initial
TaylorSolve will be automatically loaded when needed from
/var/zope2/var/LatexWiki/UTSSOL.NRLIB/code
Units is now explicitly exposed in frame initial
Units will be automatically loaded when needed from
/var/zope2/var/LatexWiki/UNITS.NRLIB/code
UnivariateFormalPowerSeriesFunctions is now explicitly exposed in
frame initial
UnivariateFormalPowerSeriesFunctions will be automatically loaded
when needed from /var/zope2/var/LatexWiki/UFPS1.NRLIB/code
UnivariateFormalPowerSeries is now explicitly exposed in frame
initial
UnivariateFormalPowerSeries will be automatically loaded when needed
from /var/zope2/var/LatexWiki/UFPS.NRLIB/code
testtype is now explicitly exposed in frame initial
testtype will be automatically loaded when needed from
/var/zope2/var/LatexWiki/TT.NRLIB/code
TranscendentalManipulations2 is now explicitly exposed in frame
initial
TranscendentalManipulations2 will be automatically loaded when
needed from /var/zope2/var/LatexWiki/TRMANIP2.NRLIB/code
TensorProduct2 is now explicitly exposed in frame initial
TensorProduct2 will be automatically loaded when needed from
/var/zope2/var/LatexWiki/TPROD2.NRLIB/code
TensorProduct is now explicitly exposed in frame initial
TensorProduct will be automatically loaded when needed from
/var/zope2/var/LatexWiki/TPROD.NRLIB/code
SimplicialComplex is now explicitly exposed in frame initial
SimplicialComplex will be automatically loaded when needed from
/var/zope2/var/LatexWiki/TOPAZ.NRLIB/code
test10 is now explicitly exposed in frame initial
test10 will be automatically loaded when needed from
/var/zope2/var/LatexWiki/TESTTEN.NRLIB/code
test6 is now explicitly exposed in frame initial
test6 will be automatically loaded when needed from
/var/zope2/var/LatexWiki/TESTSIX.NRLIB/code
test9 is now explicitly exposed in frame initial
test9 will be automatically loaded when needed from
/var/zope2/var/LatexWiki/TESTNINE.NRLIB/code
test8 is now explicitly exposed in frame initial
test8 will be automatically loaded when needed from
/var/zope2/var/LatexWiki/TESTEGT.NRLIB/code
test4 is now explicitly exposed in frame initial
test4 will be automatically loaded when needed from
/var/zope2/var/LatexWiki/TEST.NRLIB/code
tee2 is now explicitly exposed in frame initial
tee2 will be automatically loaded when needed from
/var/zope2/var/LatexWiki/TEETWO.NRLIB/code
tee1 is now explicitly exposed in frame initial
tee1 will be automatically loaded when needed from
/var/zope2/var/LatexWiki/TEEONE.NRLIB/code
T is now explicitly exposed in frame initial
T will be automatically loaded when needed from
/var/zope2/var/LatexWiki/T.NRLIB/code
TheSymbolTable is now explicitly exposed in frame initial
TheSymbolTable will be automatically loaded when needed from
/var/zope2/var/LatexWiki/SYMS.NRLIB/code
Symbolic is now explicitly exposed in frame initial
Symbolic will be automatically loaded when needed from
/var/zope2/var/LatexWiki/SYMB.NRLIB/code
SymbolVariableTest8 is now explicitly exposed in frame initial
SymbolVariableTest8 will be automatically loaded when needed from
/var/zope2/var/LatexWiki/SVT8.NRLIB/code
SymbolVariableTest3 is now explicitly exposed in frame initial
SymbolVariableTest3 will be automatically loaded when needed from
/var/zope2/var/LatexWiki/SVT3.NRLIB/code
SymbolVariableTest1 is now explicitly exposed in frame initial
SymbolVariableTest1 will be automatically loaded when needed from
/var/zope2/var/LatexWiki/SVT1.NRLIB/code
SparseUnivariatePolynomialExpressions is now explicitly exposed in
frame initial
SparseUnivariatePolynomialExpressions will be automatically loaded
when needed from /var/zope2/var/LatexWiki/SUPEXPR.NRLIB/code
Sum is now explicitly exposed in frame initial
Sum will be automatically loaded when needed from
/var/zope2/var/LatexWiki/SUM.NRLIB/code
SubDom is now explicitly exposed in frame initial
SubDom will be automatically loaded when needed from
/var/zope2/var/LatexWiki/SUB.NRLIB/code
StringConversions is now explicitly exposed in frame initial
StringConversions will be automatically loaded when needed from
/var/zope2/var/LatexWiki/STRCNV.NRLIB/code
StreamAsDomain is now explicitly exposed in frame initial
StreamAsDomain will be automatically loaded when needed from
/var/zope2/var/LatexWiki/STDOMAIN.NRLIB/code
StatPackage is now explicitly exposed in frame initial
StatPackage will be automatically loaded when needed from
/var/zope2/var/LatexWiki/STAT.NRLIB/code
SiSocket is now explicitly exposed in frame initial
SiSocket will be automatically loaded when needed from
/var/zope2/var/LatexWiki/SISOCK.NRLIB/code
SimpsonIntegration is now explicitly exposed in frame initial
SimpsonIntegration will be automatically loaded when needed from
/var/zope2/var/LatexWiki/SIMPINT.NRLIB/code
SpecialFunctionsExtended is now explicitly exposed in frame initial
SpecialFunctionsExtended will be automatically loaded when needed
from /var/zope2/var/LatexWiki/SFX.NRLIB/code
SetAggregate is now explicitly exposed in frame initial
SetAggregate will be automatically loaded when needed from
/var/zope2/var/LatexWiki/SETAGG.NRLIB/code
SetAggregate& is now explicitly exposed in frame initial
SetAggregate& will be automatically loaded when needed from
/var/zope2/var/LatexWiki/SETAGG-.NRLIB/code
Set is now explicitly exposed in frame initial
Set will be automatically loaded when needed from
/var/zope2/var/LatexWiki/SET.NRLIB/code
SparseEchelonMatrix is now explicitly exposed in frame initial
SparseEchelonMatrix will be automatically loaded when needed from
/var/zope2/var/LatexWiki/SEM.NRLIB/code
SegmentExpansionCategory is now explicitly exposed in frame initial
SegmentExpansionCategory will be automatically loaded when needed
from /var/zope2/var/LatexWiki/SEGXCAT.NRLIB/code
SegmentCategory is now explicitly exposed in frame initial
SegmentCategory will be automatically loaded when needed from
/var/zope2/var/LatexWiki/SEGCAT.NRLIB/code
Segment is now explicitly exposed in frame initial
Segment will be automatically loaded when needed from
/var/zope2/var/LatexWiki/SEG.NRLIB/code
SetAsDomain is now explicitly exposed in frame initial
SetAsDomain will be automatically loaded when needed from
/var/zope2/var/LatexWiki/SDOMAIN.NRLIB/code
SimpleCell is already explicitly exposed in frame initial
SimpleCell will be automatically loaded when needed from
/var/zope2/var/LatexWiki/SCELL.NRLIB/code
RationalInterpolationAlgorithms is now explicitly exposed in frame
initial
RationalInterpolationAlgorithms will be automatically loaded when
needed from /var/zope2/var/LatexWiki/RINTERPA.NRLIB/code
RationalInterpolation is now explicitly exposed in frame initial
RationalInterpolation will be automatically loaded when needed from
/var/zope2/var/LatexWiki/RINTERP.NRLIB/code
Ring is now explicitly exposed in frame initial
Ring will be automatically loaded when needed from
/var/zope2/var/LatexWiki/RING.NRLIB/code
Relations is now explicitly exposed in frame initial
Relations will be automatically loaded when needed from
/var/zope2/var/LatexWiki/REL.NRLIB/code
RecurrenceOperator is now explicitly exposed in frame initial
RecurrenceOperator will be automatically loaded when needed from
/var/zope2/var/LatexWiki/RECOP.NRLIB/code
ReadFile is now explicitly exposed in frame initial
ReadFile will be automatically loaded when needed from
/var/zope2/var/LatexWiki/READFILE.NRLIB/code
Product is now explicitly exposed in frame initial
Product will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PRODUCT.NRLIB/code
PointedPrimeField is now explicitly exposed in frame initial
PointedPrimeField will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PPF.NRLIB/code
Polytope is now explicitly exposed in frame initial
Polytope will be automatically loaded when needed from
/var/zope2/var/LatexWiki/POLYTOPE.NRLIB/code
PolynomialCategory is now explicitly exposed in frame initial
PolynomialCategory will be automatically loaded when needed from
/var/zope2/var/LatexWiki/POLYCAT.NRLIB/code
PolynomialCategory& is now explicitly exposed in frame initial
PolynomialCategory& will be automatically loaded when needed from
/var/zope2/var/LatexWiki/POLYCAT-.NRLIB/code
PositiveInteger is now explicitly exposed in frame initial
PositiveInteger will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PI.NRLIB/code
PolynomialCommonDenominator is now explicitly exposed in frame
initial
PolynomialCommonDenominator will be automatically loaded when needed
from /var/zope2/var/LatexWiki/PCDEN.NRLIB/code
Parity is now explicitly exposed in frame initial
Parity will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PARITY.NRLIB/code
OptimizationPackage is now explicitly exposed in frame initial
OptimizationPackage will be automatically loaded when needed from
/var/zope2/var/LatexWiki/OPT.NRLIB/code
OrderedFreeMonoid is now explicitly exposed in frame initial
OrderedFreeMonoid will be automatically loaded when needed from
/var/zope2/var/LatexWiki/OFMONOID.NRLIB/code
odd is now explicitly exposed in frame initial
odd will be automatically loaded when needed from
/var/zope2/var/LatexWiki/ODD.NRLIB/code
Object is now explicitly exposed in frame initial
Object will be automatically loaded when needed from
/var/zope2/var/LatexWiki/OBJ.NRLIB/code
NonNegativeInteger2 is now explicitly exposed in frame initial
NonNegativeInteger2 will be automatically loaded when needed from
/var/zope2/var/LatexWiki/NNI2.NRLIB/code
NonNegativeInteger is now explicitly exposed in frame initial
NonNegativeInteger will be automatically loaded when needed from
/var/zope2/var/LatexWiki/NNI.NRLIB/code
NewtonInterpolation is now explicitly exposed in frame initial
NewtonInterpolation will be automatically loaded when needed from
/var/zope2/var/LatexWiki/NEWTON.NRLIB/code
NewMonoid is now explicitly exposed in frame initial
NewMonoid will be automatically loaded when needed from
/var/zope2/var/LatexWiki/NEWMON.NRLIB/code
NewMonoid& is now explicitly exposed in frame initial
NewMonoid& will be automatically loaded when needed from
/var/zope2/var/LatexWiki/NEWMON-.NRLIB/code
NewInteger is now explicitly exposed in frame initial
NewInteger will be automatically loaded when needed from
/var/zope2/var/LatexWiki/NEWINT.NRLIB/code
Inequation is now explicitly exposed in frame initial
Inequation will be automatically loaded when needed from
/var/zope2/var/LatexWiki/NEQ.NRLIB/code
Inequation is already explicitly exposed in frame initial
Inequation will be automatically loaded when needed from
/var/zope2/var/LatexWiki/NE.NRLIB/code
MySubset is now explicitly exposed in frame initial
MySubset will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MYSUB.NRLIB/code
MySingleInteger is now explicitly exposed in frame initial
MySingleInteger will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MYSINT.NRLIB/code
MyReduce3 is now explicitly exposed in frame initial
MyReduce3 will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MYRED3.NRLIB/code
MyReduce2 is now explicitly exposed in frame initial
MyReduce2 will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MYRED2.NRLIB/code
MyReduce1 is now explicitly exposed in frame initial
MyReduce1 will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MYRED1.NRLIB/code
MyReduce is now explicitly exposed in frame initial
MyReduce will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MYRED.NRLIB/code
MyPair2 is now explicitly exposed in frame initial
MyPair2 will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MYPAIR2.NRLIB/code
MyPair is now explicitly exposed in frame initial
MyPair will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MYPAIR.NRLIB/code
MyNonNegativeInteger is now explicitly exposed in frame initial
MyNonNegativeInteger will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MYNNI.NRLIB/code
MyMonoid1 is now explicitly exposed in frame initial
MyMonoid1 will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MYMON1.NRLIB/code
MyMonoid1& is now explicitly exposed in frame initial
MyMonoid1& will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MYMON1-.NRLIB/code
MyMonoid is now explicitly exposed in frame initial
MyMonoid will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MYMON.NRLIB/code
MyMonoid& is now explicitly exposed in frame initial
MyMonoid& will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MYMON-.NRLIB/code
MyMapping is now explicitly exposed in frame initial
MyMapping will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MYMAP.NRLIB/code
MyField is now explicitly exposed in frame initial
MyField will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MYFIELD.NRLIB/code
MyDomain is now explicitly exposed in frame initial
MyDomain will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MYDOM.NRLIB/code
MatrixStatPackage is now explicitly exposed in frame initial
MatrixStatPackage will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MSTAT.NRLIB/code
Morphism is now explicitly exposed in frame initial
Morphism will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MORPH.NRLIB/code
Moo2 is now explicitly exposed in frame initial
Moo2 will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MOO2.NRLIB/code
Monoid is now explicitly exposed in frame initial
Monoid will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MONOID.NRLIB/code
Monadx is now explicitly exposed in frame initial
Monadx will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MONADX.NRLIB/code
MkMul is now explicitly exposed in frame initial
MkMul will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MM.NRLIB/code
MinimalInitialNotIntegrated is now explicitly exposed in frame
initial
MinimalInitialNotIntegrated will be automatically loaded when needed
from /var/zope2/var/LatexWiki/MINI.NRLIB/code
MkInt is now explicitly exposed in frame initial
MkInt will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MI.NRLIB/code
Maybe2 is now explicitly exposed in frame initial
Maybe2 will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MAYBE2.NRLIB/code
Maybe is now explicitly exposed in frame initial
Maybe will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MAYBE.NRLIB/code
MappingPackage3x is now explicitly exposed in frame initial
MappingPackage3x will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MAPPK3X.NRLIB/code
MappingPackage2x is now explicitly exposed in frame initial
MappingPackage2x will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MAPPK2X.NRLIB/code
MapPackInternalHac3x is now explicitly exposed in frame initial
MapPackInternalHac3x will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MAPHAC3X.NRLIB/code
MapPackInternalHac2x is now explicitly exposed in frame initial
MapPackInternalHac2x will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MAPHAC2X.NRLIB/code
Map is now explicitly exposed in frame initial
Map will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MAP.NRLIB/code
MkAdd is now explicitly exposed in frame initial
MkAdd will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MA.NRLIB/code
LUDecomposition is now explicitly exposed in frame initial
LUDecomposition will be automatically loaded when needed from
/var/zope2/var/LatexWiki/LUD.NRLIB/code
Inequality is now explicitly exposed in frame initial
Inequality will be automatically loaded when needed from
/var/zope2/var/LatexWiki/LT.NRLIB/code
LittleHttpDeamon is now explicitly exposed in frame initial
LittleHttpDeamon will be automatically loaded when needed from
/var/zope2/var/LatexWiki/LHTTPD.NRLIB/code
LeftFreeModule is now explicitly exposed in frame initial
LeftFreeModule will be automatically loaded when needed from
/var/zope2/var/LatexWiki/LFREEMOD.NRLIB/code
ListAsDomain is now explicitly exposed in frame initial
ListAsDomain will be automatically loaded when needed from
/var/zope2/var/LatexWiki/LDOMAIN.NRLIB/code
JetBundleXExpression is now explicitly exposed in frame initial
JetBundleXExpression will be automatically loaded when needed from
/var/zope2/var/LatexWiki/JBX.NRLIB/code
JetBundleLinearFunction is now explicitly exposed in frame initial
JetBundleLinearFunction will be automatically loaded when needed
from /var/zope2/var/LatexWiki/JBLF.NRLIB/code
JetBundleFunctionCategory is now explicitly exposed in frame initial
JetBundleFunctionCategory will be automatically loaded when needed
from /var/zope2/var/LatexWiki/JBFC.NRLIB/code
JetBundleFunctionCategory& is now explicitly exposed in frame
initial
JetBundleFunctionCategory& will be automatically loaded when needed
from /var/zope2/var/LatexWiki/JBFC-.NRLIB/code
JetBundleExpression is now explicitly exposed in frame initial
JetBundleExpression will be automatically loaded when needed from
/var/zope2/var/LatexWiki/JBE.NRLIB/code
JetBundleCategory is now explicitly exposed in frame initial
JetBundleCategory will be automatically loaded when needed from
/var/zope2/var/LatexWiki/JBC.NRLIB/code
JetBundleCategory& is now explicitly exposed in frame initial
JetBundleCategory& will be automatically loaded when needed from
/var/zope2/var/LatexWiki/JBC-.NRLIB/code
JetBundle is now explicitly exposed in frame initial
JetBundle will be automatically loaded when needed from
/var/zope2/var/LatexWiki/JB.NRLIB/code
Inverse is now explicitly exposed in frame initial
Inverse will be automatically loaded when needed from
/var/zope2/var/LatexWiki/INV.NRLIB/code
Inequality is already explicitly exposed in frame initial
Inequality will be automatically loaded when needed from
/var/zope2/var/LatexWiki/INEQ.NRLIB/code
Indeterminants is now explicitly exposed in frame initial
Indeterminants will be automatically loaded when needed from
/var/zope2/var/LatexWiki/INDETS.NRLIB/code
Indeterminant is now explicitly exposed in frame initial
Indeterminant will be automatically loaded when needed from
/var/zope2/var/LatexWiki/INDET.NRLIB/code
IndexedJetBundle is now explicitly exposed in frame initial
IndexedJetBundle will be automatically loaded when needed from
/var/zope2/var/LatexWiki/IJB.NRLIB/code
IntegralDomainStatPackage is now explicitly exposed in frame initial
IntegralDomainStatPackage will be automatically loaded when needed
from /var/zope2/var/LatexWiki/IDSTAT.NRLIB/code
Identity is now explicitly exposed in frame initial
Identity will be automatically loaded when needed from
/var/zope2/var/LatexWiki/ID.NRLIB/code
>> System error:
|Commutative| is invalid as a function.
|