[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Axiom-developer] 20081003.01.tpd.patch (bookvol10.2 add POLYCAT)
From: |
daly |
Subject: |
[Axiom-developer] 20081003.01.tpd.patch (bookvol10.2 add POLYCAT) |
Date: |
Sat, 4 Oct 2008 13:10:03 -0500 |
Add PolynomialCategory to bookvol10.2
=====================================================================
diff --git a/books/bookvol10.2.pamphlet b/books/bookvol10.2.pamphlet
index 35305df..5685fd5 100644
--- a/books/bookvol10.2.pamphlet
+++ b/books/bookvol10.2.pamphlet
@@ -853,6 +853,7 @@ digraph pic {
{\bf See:}\\
\pageto{Collection}{CLAGG}
\pageto{MonogenicAlgebra}{MONOGEN}
+\pageto{PolynomialCategory}{POLYCAT}
\pagefrom{Category}{CATEGORY}
{\bf Exports:}\\
@@ -1191,6 +1192,7 @@ digraph pic {
{\bf See:}\\
\pageto{Evalable}{EVALAB}
+\pageto{PolynomialCategory}{POLYCAT}
\pagefrom{Category}{CATEGORY}
{\bf Exports:}\\
@@ -1253,6 +1255,16 @@ InnerEvalable(A:SetCategory, B:Type): Category == with
"InnerEvalable(a:SetCategory,b:SetCategory)" ->
"InnerEvalable(a:SetCategory,b:Type)"
+"InnerEvalable(a:OrderedSet,b:Ring)"
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=IEVALAB"];
+"InnerEvalable(a:OrderedSet,b:Ring)" ->
+ "InnerEvalable(a:SetCategory,b:Type)"
+
+"InnerEvalable(a:OrderedSet,b:PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)"
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=IEVALAB"];
+"InnerEvalable(a:OrderedSet,b:PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)"
->
+ "InnerEvalable(a:SetCategory,b:Type)"
+
"InnerEvalable(a:Ring,MultivariateTaylorSeriesCategory(a:Ring,b:OrderedSet))"
[color=seagreen,href="bookvol10.2.pdf#nameddest=IEVALAB"];
"InnerEvalable(a:Ring,MultivariateTaylorSeriesCategory(a:Ring,b:OrderedSet))"
@@ -1485,6 +1497,7 @@ digraph pic {
\pageto{FiniteAlgebraicExtensionField}{FAXF}
\pageto{FullyRetractableTo}{FRETRCT}
\pageto{GradedAlgebra}{GRALG}
+\pageto{PolynomialCategory}{POLYCAT}
\pagefrom{Category}{CATEGORY}
{\bf Exports:}\\
@@ -1545,6 +1558,10 @@ RetractableTo(S: Type): Category == with
[color=seagreen,href="bookvol10.2.pdf#nameddest=RETRACT"];
"RetractableTo(SetCategory)" -> "RetractableTo(a:Type)"
+"RetractableTo(OrderedSet)"
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=RETRACT"];
+"RetractableTo(OrderedSet)" -> "RetractableTo(a:Type)"
+
"RetractableTo(Symbol)"
[color=seagreen,href="bookvol10.2.pdf#nameddest=RETRACT"];
"RetractableTo(Symbol)" -> "RetractableTo(a:Type)"
@@ -2059,10 +2076,12 @@ digraph pic {
\pagepic{ps/v102evalable.ps}{EVALAB}{1.00}
{\bf See:}\\
+\pageto{PolynomialCategory}{POLYCAT}
\pagefrom{InnerEvalable}{IEVALAB}
{\bf Exports:}\\
-\begin{tabular}{lllll}
+\begin{tabular}{l}
+\cross{EVALAB}{eval}
\end{tabular}
These are directly exported but not implemented:
@@ -2127,6 +2146,11 @@ Evalable(R:SetCategory): Category == InnerEvalable(R,R)
with
[color=seagreen,href="bookvol10.2.pdf#nameddest=EVALAB"];
"Evalable(ExpressionSpace)" -> "Evalable(a:SetCategory)"
+"Evalable(PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet))"
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=EVALAB"];
+"Evalable(PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet))"
+ -> "Evalable(a:SetCategory)"
+
@
<<EVALAB.dotpic>>=
digraph pic {
@@ -3961,6 +3985,7 @@ digraph pic {
\pageto{OrderedAbelianSemiGroup}{OASGP}
\pageto{OrderedFinite}{ORDFIN}
\pageto{OrderedMonoid}{ORDMON}
+\pageto{PolynomialCategory}{POLYCAT}
\pagefrom{SetCategory}{SETCAT}
{\bf Exports:}\\
@@ -4087,6 +4112,7 @@ digraph pic {
\pagepic{ps/v102patternmatchable.ps}{PATMAB}{1.00}
{\bf See:}\\
+\pageto{PolynomialCategory}{POLYCAT}
\pagefrom{SetCategory}{SETCAT}
{\bf Exports:}\\
@@ -4149,7 +4175,13 @@ PatternMatchable(S:SetCategory): Category == SetCategory
with
"PatternMatchable(a:SetCategory)"
[color=lightblue,href="bookvol10.2.pdf#nameddest=PATMAB"];
"PatternMatchable(a:SetCategory)" -> "SetCategory()"
+
+"PatternMatchable(Integer)"
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=PATMAB"];
"PatternMatchable(Integer)" -> "PatternMatchable(a:SetCategory)"
+
+"PatternMatchable(Float)"
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=PATMAB"];
"PatternMatchable(Float)" -> "PatternMatchable(a:SetCategory)"
@
@@ -17406,6 +17438,7 @@ digraph pic {
{\bf See:}\\
\pageto{IntegralDomain}{INTDOM}
\pageto{MonogenicAlgebra}{MONOGEN}
+\pageto{PolynomialCategory}{POLYCAT}
\pagefrom{BiModule}{BMODULE}
\pagefrom{Ring}{RING}
@@ -17432,14 +17465,13 @@ digraph pic {
\cross{COMRING}{?=?} &
\end{tabular}
-{\bf Attributes:}
+{\bf Attributes exported:}
\begin{itemize}
\item {\bf \cross{COMRING}{commutative("*")}}
is true if it has an operation $"*": (D,D) -> D$
which is commutative.
\end{itemize}
-
These exports come from \refto{Ring}():
\begin{verbatim}
0 : () -> %
@@ -18244,6 +18276,7 @@ digraph pic {
{\bf See:}\\
\pageto{DifferentialExtension}{DIFEXT}
+\pageto{PolynomialCategory}{POLYCAT}
\pagefrom{Ring}{RING}
{\bf Exports:}\\
@@ -18278,13 +18311,13 @@ These are directly exported but not implemented:
These are implemented by this category:
\begin{verbatim}
- differentiate : (%,List S) -> %
- differentiate : (%,S,NonNegativeInteger) -> %
- differentiate : (%,List S,List NonNegativeInteger) -> %
D : (%,S) -> %
D : (%,List S) -> %
D : (%,S,NonNegativeInteger) -> %
D : (%,List S,List NonNegativeInteger) -> %
+ differentiate : (%,List S) -> %
+ differentiate : (%,S,NonNegativeInteger) -> %
+ differentiate : (%,List S,List NonNegativeInteger) -> %
\end{verbatim}
These exports come from \refto{Ring}():
@@ -18657,6 +18690,7 @@ digraph pic {
\pagepic{ps/v102finiteabelianmonoidring.ps}{FAMR}{0.40}
{\bf See:}\\
+\pageto{PolynomialCategory}{POLYCAT}
\pagefrom{AbelianMonoidRing}{AMR}
\pagefrom{FullyRetractableTo}{FRETRCT}
@@ -18935,6 +18969,11 @@ FiniteAbelianMonoidRing(R:Ring,
E:OrderedAbelianMonoid): Category ==
"FiniteAbelianMonoidRing(a:Ring,b:OrderedAbelianMonoid)" ->
"FullyRetractableTo(a:Ring)"
+"FiniteAbelianMonoidRing(a:Ring,b:OrderedAbelianMonoidSup)"
+ [color=seagreen,href="bookvol10.2.pdf#nameddest=FAMR"];
+"FiniteAbelianMonoidRing(a:Ring,b:OrderedAbelianMonoidSup)" ->
+ "FiniteAbelianMonoidRing(a:Ring,b:OrderedAbelianMonoid)"
+
@
<<FAMR.dotpic>>=
digraph pic {
@@ -19007,6 +19046,7 @@ digraph pic {
\pagepic{ps/v102fullylinearlyexplicitringover.ps}{FLINEXP}{1.00}
{\bf See:}\\
+\pageto{PolynomialCategory}{POLYCAT}
\pagefrom{LinearlyExplicitRingOver}{LINEXP}
{\bf Exports:}\\
@@ -21646,6 +21686,7 @@ digraph pic {
\pagepic{ps/v102gcddomain.ps}{GCDDOM}{0.65}
{\bf See:}\\
+\pageto{PolynomialCategory}{POLYCAT}
\pageto{PrincipalIdealDomain}{PID}
\pageto{UniqueFactorizationDomain}{UFD}
\pagefrom{IntegralDomain}{INTDOM}
@@ -21698,23 +21739,23 @@ These are implemented by this category:
These exports come from \refto{IntegralDomain}():
\begin{verbatim}
- associates? : (%,%) -> Boolean
- exquo : (%,%) -> Union(%,"failed")
- unit? : % -> Boolean
- unitCanonical : % -> %
- unitNormal : % -> Record(unit: %,canonical: %,associate: %)
0 : () -> %
1 : () -> %
+ associates? : (%,%) -> Boolean
characteristic : () -> NonNegativeInteger
coerce : % -> %
coerce : Integer -> %
coerce : % -> OutputForm
+ exquo : (%,%) -> Union(%,"failed")
hash : % -> SingleInteger
latex : % -> String
one? : % -> Boolean
recip : % -> Union(%,"failed")
sample : () -> %
subtractIfCan : (%,%) -> Union(%,"failed")
+ unit? : % -> Boolean
+ unitCanonical : % -> %
+ unitNormal : % -> Record(unit: %,canonical: %,associate: %)
zero? : % -> Boolean
?+? : (%,%) -> %
?=? : (%,%) -> Boolean
@@ -22700,6 +22741,7 @@ digraph pic {
\pagepic{ps/v102polynomialfactorizationexplicit.ps}{PFECAT}{0.75}
{\bf See:}\\
+\pageto{PolynomialCategory}{POLYCAT}
\pagefrom{UniqueFactorizationDomain}{UFD}
{\bf Exports:}\\
@@ -23180,6 +23222,946 @@ digraph pic {
}
@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pagehead{PolynomialCategory}{POLYCAT}
+\pagepic{ps/v102polynomialcategory.ps}{POLYCAT}{1.00}
+
+{\bf See:}\\
+\pagefrom{CommutativeRing}{COMRING}
+\pagefrom{ConvertibleTo}{KONVERT}
+\pagefrom{Evalable}{EVALAB}
+\pagefrom{FiniteAbelianMonoidRing}{FAMR}
+\pagefrom{FullyLinearlyExplicitRingOver}{FLINEXP}
+\pagefrom{GcdDomain}{GCDDOM}
+\pagefrom{InnerEvalable}{IEVALAB}
+\pagefrom{OrderedSet}{ORDSET}
+\pagefrom{PartialDifferentialRing}{PDRING}
+\pagefrom{PatternMatchable}{PATMAB}
+\pagefrom{PolynomialFactorizationExplicit}{PFECAT}
+\pagefrom{RetractableTo}{RETRACT}
+
+{\bf Exports:}\\
+\begin{tabular}{lll}
+\cross{POLYCAT}{0} &
+\cross{POLYCAT}{1} &
+\cross{POLYCAT}{associates?} \\
+\cross{POLYCAT}{binomThmExpt} &
+\cross{POLYCAT}{characteristic} &
+\cross{POLYCAT}{charthRoot} \\
+\cross{POLYCAT}{coefficient} &
+\cross{POLYCAT}{coefficients} &
+\cross{POLYCAT}{coerce} \\
+\cross{POLYCAT}{conditionP} &
+\cross{POLYCAT}{content} &
+\cross{POLYCAT}{convert} \\
+\cross{POLYCAT}{D} &
+\cross{POLYCAT}{degree} &
+\cross{POLYCAT}{differentiate} \\
+\cross{POLYCAT}{discriminant} &
+\cross{POLYCAT}{eval} &
+\cross{POLYCAT}{exquo} \\
+\cross{POLYCAT}{factor} &
+\cross{POLYCAT}{factorPolynomial} &
+\cross{POLYCAT}{factorSquareFreePolynomial} \\
+\cross{POLYCAT}{gcd} &
+\cross{POLYCAT}{gcdPolynomial} &
+\cross{POLYCAT}{ground} \\
+\cross{POLYCAT}{ground?} &
+\cross{POLYCAT}{hash} &
+\cross{POLYCAT}{isExpt} \\
+\cross{POLYCAT}{isPlus} &
+\cross{POLYCAT}{isTimes} &
+\cross{POLYCAT}{latex} \\
+\cross{POLYCAT}{lcm} &
+\cross{POLYCAT}{leadingCoefficient} &
+\cross{POLYCAT}{leadingMonomial} \\
+\cross{POLYCAT}{mainVariable} &
+\cross{POLYCAT}{map} &
+\cross{POLYCAT}{mapExponents} \\
+\cross{POLYCAT}{max} &
+\cross{POLYCAT}{min} &
+\cross{POLYCAT}{minimumDegree} \\
+\cross{POLYCAT}{monicDivide} &
+\cross{POLYCAT}{monomial} &
+\cross{POLYCAT}{monomial?} \\
+\cross{POLYCAT}{monomials} &
+\cross{POLYCAT}{multivariate} &
+\cross{POLYCAT}{numberOfMonomials} \\
+\cross{POLYCAT}{one?} &
+\cross{POLYCAT}{patternMatch} &
+\cross{POLYCAT}{pomopo!} \\
+\cross{POLYCAT}{prime?} &
+\cross{POLYCAT}{primitiveMonomials} &
+\cross{POLYCAT}{primitivePart} \\
+\cross{POLYCAT}{recip} &
+\cross{POLYCAT}{reducedSystem} &
+\cross{POLYCAT}{reductum} \\
+\cross{POLYCAT}{resultant} &
+\cross{POLYCAT}{retract} &
+\cross{POLYCAT}{retractIfCan} \\
+\cross{POLYCAT}{sample} &
+\cross{POLYCAT}{solveLinearPolynomialEquation} &
+\cross{POLYCAT}{squareFree} \\
+\cross{POLYCAT}{squareFreePart} &
+\cross{POLYCAT}{squareFreePolynomial} &
+\cross{POLYCAT}{subtractIfCan} \\
+\cross{POLYCAT}{totalDegree} &
+\cross{POLYCAT}{unit?} &
+\cross{POLYCAT}{unitCanonical} \\
+\cross{POLYCAT}{unitNormal} &
+\cross{POLYCAT}{univariate} &
+\cross{POLYCAT}{variables} \\
+\cross{POLYCAT}{zero?} &
+\cross{POLYCAT}{?*?} &
+\cross{POLYCAT}{?**?} \\
+\cross{POLYCAT}{?+?} &
+\cross{POLYCAT}{?-?} &
+\cross{POLYCAT}{-?} \\
+\cross{POLYCAT}{?=?} &
+\cross{POLYCAT}{?\^{}?} &
+\cross{POLYCAT}{?\~{}=?} \\
+\cross{POLYCAT}{?/?} &
+\cross{POLYCAT}{?$<$?} &
+\cross{POLYCAT}{?$<=$?} \\
+\cross{POLYCAT}{?$>$?} &
+\cross{POLYCAT}{?$>=$?} &
+\end{tabular}
+
+{\bf Attributes exported:}
+\begin{itemize}
+\item if R has canonicalUnitNormal then canonicalUnitNormal where
+{\bf \cross{POLYCAT}{canonicalUnitNormal}}
+is true if we can choose a canonical representative for each class
+of associate elements, that is {\tt associates?(a,b)} returns true
+if and only if {\tt unitCanonical(a) = unitCanonical(b)}.
+\end{itemize}
+
+These are directly exported but not implemented:
+\begin{verbatim}
+ degree : (%,VarSet) -> NonNegativeInteger
+ degree : (%,List VarSet) -> List NonNegativeInteger
+ mainVariable : % -> Union(VarSet,"failed")
+ minimumDegree : (%,List VarSet) -> List NonNegativeInteger
+ minimumDegree : (%,VarSet) -> NonNegativeInteger
+ monomial : (%,VarSet,NonNegativeInteger) -> %
+ multivariate : (SparseUnivariatePolynomial %,VarSet) -> %
+ multivariate : (SparseUnivariatePolynomial R,VarSet) -> %
+ univariate : (%,VarSet) -> SparseUnivariatePolynomial %
+ univariate : % -> SparseUnivariatePolynomial R
+ variables : % -> List VarSet
+\end{verbatim}
+
+These are implemented by this category:
+\begin{verbatim}
+ charthRoot : % -> Union(%,"failed")
+ if
+ and(has($,CharacteristicNonZero),
+ has(R,PolynomialFactorizationExplicit))
+ or R has CHARNZ
+ coefficient : (%,VarSet,NonNegativeInteger) -> %
+ coefficient : (%,List VarSet,List NonNegativeInteger) -> %
+ conditionP : Matrix % -> Union(Vector %,"failed")
+ if
+ and(has($,CharacteristicNonZero),
+ has(R,PolynomialFactorizationExplicit))
+ content : (%,VarSet) -> % if R has GCDDOM
+ convert : % -> Pattern Integer
+ if VarSet has KONVERT PATTERN INT
+ and R has KONVERT PATTERN INT
+ convert : % -> Pattern Float
+ if VarSet has KONVERT PATTERN FLOAT
+ and R has KONVERT PATTERN FLOAT
+ convert : % -> InputForm
+ if VarSet has KONVERT INFORM
+ and R has KONVERT INFORM
+ discriminant : (%,VarSet) -> % if R has COMRING
+ eval : (%,List Equation %) -> %
+ factor : % -> Factored % if R has PFECAT
+ factorPolynomial :
+ SparseUnivariatePolynomial % ->
+ Factored SparseUnivariatePolynomial %
+ if R has PFECAT
+ factorSquareFreePolynomial :
+ SparseUnivariatePolynomial % ->
+ Factored SparseUnivariatePolynomial %
+ if R has PFECAT
+ gcdPolynomial : (SparseUnivariatePolynomial %,
+ SparseUnivariatePolynomial %) ->
+ SparseUnivariatePolynomial %
+ if R has GCDDOM
+ isExpt : % ->
+ Union(Record(var: VarSet,exponent: NonNegativeInteger),"failed")
+ isPlus : % -> Union(List %,"failed")
+ isTimes : % -> Union(List %,"failed")
+ monicDivide : (%,%,VarSet) -> Record(quotient: %,remainder: %)
+ monomial : (%,List VarSet,List NonNegativeInteger) -> %
+ monomials : % -> List %
+ patternMatch :
+ (%,Pattern Integer,PatternMatchResult(Integer,%)) ->
+ PatternMatchResult(Integer,%)
+ if VarSet has PATMAB INT
+ and R has PATMAB INT
+ patternMatch :
+ (%,Pattern Float,PatternMatchResult(Float,%)) ->
+ PatternMatchResult(Float,%)
+ if VarSet has PATMAB FLOAT
+ and R has PATMAB FLOAT
+ primitiveMonomials : % -> List %
+ primitivePart : % -> % if R has GCDDOM
+ primitivePart : (%,VarSet) -> % if R has GCDDOM
+ reducedSystem : Matrix % -> Matrix R
+ reducedSystem : (Matrix %,Vector %) ->
+ Record(mat: Matrix R,vec: Vector R)
+ resultant : (%,%,VarSet) -> % if R has COMRING
+ retract : % -> VarSet
+ retractIfCan : % -> Union(VarSet,"failed")
+ solveLinearPolynomialEquation :
+ (List SparseUnivariatePolynomial %,
+ SparseUnivariatePolynomial %) ->
+ Union(List SparseUnivariatePolynomial %,"failed")
+ if R has PFECAT
+ squareFree : % -> Factored % if R has GCDDOM
+ squareFreePart : % -> % if R has GCDDOM
+ totalDegree : % -> NonNegativeInteger
+ totalDegree : (%,List VarSet) -> NonNegativeInteger
+ ?<? : (%,%) -> Boolean if R has ORDSET
+\end{verbatim}
+
+These exports come from \refto{PartialDifferentialRing}(VarSet)\\
+where VarSet:OrderedSet:
+\begin{verbatim}
+ 0 : () -> %
+ 1 : () -> %
+ characteristic : () -> NonNegativeInteger
+ coerce : Integer -> %
+ coerce : % -> OutputForm
+ D : (%,List VarSet) -> %
+ D : (%,VarSet) -> %
+ D : (%,List VarSet,List NonNegativeInteger) -> %
+ D : (%,VarSet,NonNegativeInteger) -> %
+ differentiate : (%,VarSet) -> %
+ differentiate : (%,List VarSet,List NonNegativeInteger) -> %
+ differentiate : (%,VarSet,NonNegativeInteger) -> %
+ differentiate : (%,List VarSet) -> %
+ hash : % -> SingleInteger
+ latex : % -> String
+ one? : % -> Boolean
+ recip : % -> Union(%,"failed")
+ sample : () -> %
+ subtractIfCan : (%,%) -> Union(%,"failed")
+ zero? : % -> Boolean
+ ?+? : (%,%) -> %
+ ?=? : (%,%) -> Boolean
+ ?~=? : (%,%) -> Boolean
+ ?*? : (%,%) -> %
+ ?*? : (Integer,%) -> %
+ ?*? : (PositiveInteger,%) -> %
+ ?*? : (NonNegativeInteger,%) -> %
+ ?-? : (%,%) -> %
+ -? : % -> %
+ ?^? : (%,PositiveInteger) -> %
+ ?^? : (%,NonNegativeInteger) -> %
+ ?**? : (%,NonNegativeInteger) -> %
+ ?**? : (%,PositiveInteger) -> %
+\end{verbatim}
+
+These exports come from \refto{FiniteAbelianMonoidRing}(R,E)\\
+where R:Ring and E:OrderedAbelianMonoidSup:
+\begin{verbatim}
+ associates? : (%,%) -> Boolean if R has INTDOM
+ binomThmExpt : (%,%,NonNegativeInteger) -> %
+ if R has COMRING
+ coefficient : (%,E) -> R
+ coefficients : % -> List R
+ coerce : R -> %
+ coerce : Fraction Integer -> %
+ if R has RETRACT FRAC INT
+ or R has ALGEBRA FRAC INT
+ coerce : % -> % if R has INTDOM
+ content : % -> R if R has GCDDOM
+ degree : % -> E
+ exquo : (%,R) -> Union(%,"failed") if R has INTDOM
+ exquo : (%,%) -> Union(%,"failed") if R has INTDOM
+ ground : % -> R
+ ground? : % -> Boolean
+ leadingCoefficient : % -> R
+ leadingMonomial : % -> %
+ map : ((R -> R),%) -> %
+ mapExponents : ((E -> E),%) -> %
+ minimumDegree : % -> E
+ monomial : (R,E) -> %
+ monomial? : % -> Boolean
+ numberOfMonomials : % -> NonNegativeInteger
+ pomopo! : (%,R,E,%) -> %
+ reductum : % -> %
+ retract : % -> Integer if R has RETRACT INT
+ retract : % -> Fraction Integer
+ if R has RETRACT FRAC INT
+ retractIfCan : % -> Union(Integer,"failed")
+ if R has RETRACT INT
+ retractIfCan : % -> Union(Fraction Integer,"failed")
+ if R has RETRACT FRAC INT
+ unit? : % -> Boolean if R has INTDOM
+ unitCanonical : % -> % if R has INTDOM
+ unitNormal : % -> Record(unit: %,canonical: %,associate: %)
+ if R has INTDOM
+ ?*? : (%,R) -> %
+ ?*? : (R,%) -> %
+ ?*? : (Fraction Integer,%) -> %
+ if R has ALGEBRA FRAC INT
+ ?*? : (%,Fraction Integer) -> %
+ if R has ALGEBRA FRAC INT
+ ?/? : (%,R) -> % if R has FIELD
+\end{verbatim}
+
+These exports come from \refto{Evalable}(PolynomialCategory(...)):
+\begin{verbatim}
+ eval : (%,Equation %) -> %
+ eval : (%,List %,List %) -> %
+ eval : (%,%,%) -> %
+\end{verbatim}
+
+These exports come from \refto{InnerEvalable}(VarSet,R)\\
+where VarSet:OrderedSet and R:Ring
+\begin{verbatim}
+ eval : (%,VarSet,R) -> %
+ eval : (%,List VarSet,List R) -> %
+\end{verbatim}
+
+These exports come from \refto{InnerEvalable}(VarSet,R)\\
+where VarSet:OrderedSet and R:PolynomialCategory(...):
+\begin{verbatim}
+ eval : (%,VarSet,%) -> %
+ eval : (%,List VarSet,List %) -> %
+\end{verbatim}
+
+These exports come from \refto{RetractableTo}(VarSet)\\
+where VarSet:OrderedSet:
+\begin{verbatim}
+ coerce : VarSet -> %
+ retract : % -> R
+ retractIfCan : % -> Union(R,"failed")
+\end{verbatim}
+
+These exports come from \refto{FullyLinearlyExplicitRingOver}(R)\\
+where R:Ring:
+\begin{verbatim}
+ reducedSystem : (Matrix %,Vector %) ->
+ Record(mat: Matrix Integer,vec: Vector Integer)
+ if R has LINEXP INT
+ reducedSystem : Matrix % -> Matrix Integer
+ if R has LINEXP INT
+\end{verbatim}
+
+These exports come from \refto{OrderedSet}():
+\begin{verbatim}
+ max : (%,%) -> % if R has ORDSET
+ min : (%,%) -> % if R has ORDSET
+ ?<=? : (%,%) -> Boolean if R has ORDSET
+ ?>? : (%,%) -> Boolean if R has ORDSET
+ ?>=? : (%,%) -> Boolean if R has ORDSET
+\end{verbatim}
+
+These exports come from \refto{GcdDomain}():
+\begin{verbatim}
+ gcd : (%,%) -> % if R has GCDDOM
+ gcd : List % -> % if R has GCDDOM
+ lcm : (%,%) -> % if R has GCDDOM
+ lcm : List % -> % if R has GCDDOM
+\end{verbatim}
+
+These exports come from \refto{PolynomialFactorizationExplicit}():
+\begin{verbatim}
+ prime? : % -> Boolean if R has PFECAT
+ squareFreePolynomial : SparseUnivariatePolynomial % ->
+ Factored SparseUnivariatePolynomial %
+ if R has PFECAT
+\end{verbatim}
+
+These exports come from \refto{ConvertibleTo}(InputForm):
+\begin{verbatim}
+\end{verbatim}
+
+These exports come from \refto{ConvertibleTo}(Pattern(Integer)):
+\begin{verbatim}
+\end{verbatim}
+
+These exports come from \refto{ConvertibleTo}(Pattern(Float)):
+\begin{verbatim}
+\end{verbatim}
+
+These exports come from \refto{PatternMatchable}(Pattern(Integer)):
+\begin{verbatim}
+\end{verbatim}
+
+These exports come from \refto{PatternMatchable}(Pattern(Float)):
+\begin{verbatim}
+\end{verbatim}
+
+These exports come from \refto{CommutativeRing}():
+\begin{verbatim}
+\end{verbatim}
+
+<<category POLYCAT PolynomialCategory>>=
+)abbrev category POLYCAT PolynomialCategory
+++ Author:
+++ Date Created:
+++ Date Last Updated:
+++ Basic Functions: Ring, monomial, coefficient, differentiate, eval
+++ Related Constructors: Polynomial, DistributedMultivariatePolynomial
+++ Also See: UnivariatePolynomialCategory
+++ AMS Classifications:
+++ Keywords:
+++ References:
+++ Description:
+++ The category for general multi-variate polynomials over a ring
+++ R, in variables from VarSet, with exponents from the
+++ \spadtype{OrderedAbelianMonoidSup}.
+
+PolynomialCategory(R:Ring, E:OrderedAbelianMonoidSup, VarSet:OrderedSet):
+ Category ==
+ Join(PartialDifferentialRing VarSet, FiniteAbelianMonoidRing(R, E),
+ Evalable %, InnerEvalable(VarSet, R),
+ InnerEvalable(VarSet, %), RetractableTo VarSet,
+ FullyLinearlyExplicitRingOver R) with
+ degree : (%,VarSet) -> NonNegativeInteger
+ ++ degree(p,v) gives the degree of polynomial p with respect
+ ++ to the variable v.
+ degree : (%,List(VarSet)) -> List(NonNegativeInteger)
+ ++ degree(p,lv) gives the list of degrees of polynomial p
+ ++ with respect to each of the variables in the list lv.
+ coefficient: (%,VarSet,NonNegativeInteger) -> %
+ ++ coefficient(p,v,n) views the polynomial p as a univariate
+ ++ polynomial in v and returns the coefficient of the \spad{v**n} term.
+ coefficient: (%,List VarSet,List NonNegativeInteger) -> %
+ ++ coefficient(p, lv, ln) views the polynomial p as a polynomial
+ ++ in the variables of lv and returns the coefficient of the term
+ ++ \spad{lv**ln}, i.e. \spad{prod(lv_i ** ln_i)}.
+ monomials: % -> List %
+ ++ monomials(p) returns the list of non-zero monomials of
+ ++ polynomial p, i.e.
+ ++ \spad{monomials(sum(a_(i) X^(i))) = [a_(1) X^(1),...,a_(n) X^(n)]}.
+ univariate : (%,VarSet) -> SparseUnivariatePolynomial(%)
+ ++ univariate(p,v) converts the multivariate polynomial p
+ ++ into a univariate polynomial in v, whose coefficients are still
+ ++ multivariate polynomials (in all the other variables).
+ univariate : % -> SparseUnivariatePolynomial(R)
+ ++ univariate(p) converts the multivariate polynomial p,
+ ++ which should actually involve only one variable,
+ ++ into a univariate polynomial
+ ++ in that variable, whose coefficients are in the ground ring.
+ ++ Error: if polynomial is genuinely multivariate
+ mainVariable : % -> Union(VarSet,"failed")
+ ++ mainVariable(p) returns the biggest variable which actually
+ ++ occurs in the polynomial p, or "failed" if no variables are
+ ++ present.
+ ++ fails precisely if polynomial satisfies ground?
+ minimumDegree : (%,VarSet) -> NonNegativeInteger
+ ++ minimumDegree(p,v) gives the minimum degree of polynomial p
+ ++ with respect to v, i.e. viewed a univariate polynomial in v
+ minimumDegree : (%,List(VarSet)) -> List(NonNegativeInteger)
+ ++ minimumDegree(p, lv) gives the list of minimum degrees of the
+ ++ polynomial p with respect to each of the variables in the list lv
+ monicDivide : (%,%,VarSet) -> Record(quotient:%,remainder:%)
+ ++ monicDivide(a,b,v) divides the polynomial a by the polynomial b,
+ ++ with each viewed as a univariate polynomial in v returning
+ ++ both the quotient and remainder.
+ ++ Error: if b is not monic with respect to v.
+ monomial : (%,VarSet,NonNegativeInteger) -> %
+ ++ monomial(a,x,n) creates the monomial \spad{a*x**n} where \spad{a} is
+ ++ a polynomial, x is a variable and n is a nonnegative integer.
+ monomial : (%,List VarSet,List NonNegativeInteger) -> %
+ ++ monomial(a,[v1..vn],[e1..en]) returns \spad{a*prod(vi**ei)}.
+ multivariate : (SparseUnivariatePolynomial(R),VarSet) -> %
+ ++ multivariate(sup,v) converts an anonymous univariable
+ ++ polynomial sup to a polynomial in the variable v.
+ multivariate : (SparseUnivariatePolynomial(%),VarSet) -> %
+ ++ multivariate(sup,v) converts an anonymous univariable
+ ++ polynomial sup to a polynomial in the variable v.
+ isPlus: % -> Union(List %, "failed")
+ ++ isPlus(p) returns \spad{[m1,...,mn]} if polynomial
+ ++ \spad{p = m1 + ... + mn} and
+ ++ \spad{n >= 2} and each mi is a nonzero monomial.
+ isTimes: % -> Union(List %, "failed")
+ ++ isTimes(p) returns \spad{[a1,...,an]} if polynomial
+ ++ \spad{p = a1 ... an} and \spad{n >= 2}, and, for each i,
+ ++ ai is either a nontrivial constant in R or else of the
+ ++ form \spad{x**e}, where \spad{e > 0} is an integer
+ ++ and x in a member of VarSet.
+ isExpt: % -> Union(Record(var:VarSet, exponent:NonNegativeInteger),_
+ "failed")
+ ++ isExpt(p) returns \spad{[x, n]} if polynomial p has the
+ ++ form \spad{x**n} and \spad{n > 0}.
+ totalDegree : % -> NonNegativeInteger
+ ++ totalDegree(p) returns the largest sum over all monomials
+ ++ of all exponents of a monomial.
+ totalDegree : (%,List VarSet) -> NonNegativeInteger
+ ++ totalDegree(p, lv) returns the maximum sum (over all monomials
+ ++ of polynomial p) of the variables in the list lv.
+ variables : % -> List(VarSet)
+ ++ variables(p) returns the list of those variables actually
+ ++ appearing in the polynomial p.
+ primitiveMonomials: % -> List %
+ ++ primitiveMonomials(p) gives the list of monomials of the
+ ++ polynomial p with their coefficients removed. Note:
+ ++ \spad{primitiveMonomials(sum(a_(i) X^(i))) = [X^(1),...,X^(n)]}.
+ if R has OrderedSet then OrderedSet
+ -- OrderedRing view removed to allow EXPR to define abs
+ --if R has OrderedRing then OrderedRing
+ if (R has ConvertibleTo InputForm) and
+ (VarSet has ConvertibleTo InputForm) then
+ ConvertibleTo InputForm
+ if (R has ConvertibleTo Pattern Integer) and
+ (VarSet has ConvertibleTo Pattern Integer) then
+ ConvertibleTo Pattern Integer
+ if (R has ConvertibleTo Pattern Float) and
+ (VarSet has ConvertibleTo Pattern Float) then
+ ConvertibleTo Pattern Float
+ if (R has PatternMatchable Integer) and
+ (VarSet has PatternMatchable Integer) then
+ PatternMatchable Integer
+ if (R has PatternMatchable Float) and
+ (VarSet has PatternMatchable Float) then
+ PatternMatchable Float
+ if R has CommutativeRing then
+ resultant : (%,%,VarSet) -> %
+ ++ resultant(p,q,v) returns the resultant of the polynomials
+ ++ p and q with respect to the variable v.
+ discriminant : (%,VarSet) -> %
+ ++ discriminant(p,v) returns the disriminant of the polynomial p
+ ++ with respect to the variable v.
+ if R has GcdDomain then
+ GcdDomain
+ content: (%,VarSet) -> %
+ ++ content(p,v) is the gcd of the coefficients of the polynomial p
+ ++ when p is viewed as a univariate polynomial with respect to the
+ ++ variable v.
+ ++ Thus, for polynomial 7*x**2*y + 14*x*y**2, the gcd of the
+ ++ coefficients with respect to x is 7*y.
+ primitivePart: % -> %
+ ++ primitivePart(p) returns the unitCanonical associate of the
+ ++ polynomial p with its content divided out.
+ primitivePart: (%,VarSet) -> %
+ ++ primitivePart(p,v) returns the unitCanonical associate of the
+ ++ polynomial p with its content with respect to the variable v
+ ++ divided out.
+ squareFree: % -> Factored %
+ ++ squareFree(p) returns the square free factorization of the
+ ++ polynomial p.
+ squareFreePart: % -> %
+ ++ squareFreePart(p) returns product of all the irreducible factors
+ ++ of polynomial p each taken with multiplicity one.
+
+ -- assertions
+ if R has canonicalUnitNormal then canonicalUnitNormal
+ ++ we can choose a unique representative for each
+ ++ associate class.
+ ++ This normalization is chosen to be normalization of
+ ++ leading coefficient (by default).
+ if R has PolynomialFactorizationExplicit then
+ PolynomialFactorizationExplicit
+ add
+ p:%
+ v:VarSet
+ ln:List NonNegativeInteger
+ lv:List VarSet
+ n:NonNegativeInteger
+ pp,qq:SparseUnivariatePolynomial %
+
+ eval(p:%, l:List Equation %) ==
+ empty? l => p
+ for e in l repeat
+ retractIfCan(lhs e)@Union(VarSet,"failed") case "failed" =>
+ error "cannot find a variable to evaluate"
+ lvar:=[retract(lhs e)@VarSet for e in l]
+ eval(p, lvar,[rhs e for e in l]$List(%))
+
+ monomials p ==
+-- zero? p => empty()
+-- concat(leadingMonomial p, monomials reductum p)
+-- replaced by sequential version for efficiency, by WMSIT, 7/30/90
+ ml:= empty$List(%)
+ while p ^= 0 repeat
+ ml:=concat(leadingMonomial p, ml)
+ p:= reductum p
+ reverse ml
+
+ isPlus p ==
+ empty? rest(l := monomials p) => "failed"
+ l
+
+ isTimes p ==
+ empty?(lv := variables p) or not monomial? p => "failed"
+ l := [monomial(1, v, degree(p, v)) for v in lv]
+-- one?(r := leadingCoefficient p) =>
+ ((r := leadingCoefficient p) = 1) =>
+ empty? rest lv => "failed"
+ l
+ concat(r::%, l)
+
+ isExpt p ==
+ (u := mainVariable p) case "failed" => "failed"
+ p = monomial(1, u::VarSet, d := degree(p, u::VarSet)) =>
+ [u::VarSet, d]
+ "failed"
+
+ coefficient(p,v,n) == coefficient(univariate(p,v),n)
+
+ coefficient(p,lv,ln) ==
+ empty? lv =>
+ empty? ln => p
+ error "mismatched lists in coefficient"
+ empty? ln => error "mismatched lists in coefficient"
+ coefficient(coefficient(univariate(p,first lv),first ln),
+ rest lv,rest ln)
+
+ monomial(p,lv,ln) ==
+ empty? lv =>
+ empty? ln => p
+ error "mismatched lists in monomial"
+ empty? ln => error "mismatched lists in monomial"
+ monomial(monomial(p,first lv, first ln),rest lv, rest ln)
+
+ retract(p:%):VarSet ==
+ q := mainVariable(p)::VarSet
+ q::% = p => q
+ error "Polynomial is not a single variable"
+
+ retractIfCan(p:%):Union(VarSet, "failed") ==
+ ((q := mainVariable p) case VarSet) and (q::VarSet::% = p) => q
+ "failed"
+
+ mkPrim(p:%):% == monomial(1,degree p)
+
+ primitiveMonomials p == [mkPrim q for q in monomials p]
+
+ totalDegree p ==
+ ground? p => 0
+ u := univariate(p, mainVariable(p)::VarSet)
+ d: NonNegativeInteger := 0
+ while u ^= 0 repeat
+ d := max(d, degree u + totalDegree leadingCoefficient u)
+ u := reductum u
+ d
+
+ totalDegree(p,lv) ==
+ ground? p => 0
+ u := univariate(p, v:=(mainVariable(p)::VarSet))
+ d: NonNegativeInteger := 0
+ w: NonNegativeInteger := 0
+ if member?(v, lv) then w:=1
+ while u ^= 0 repeat
+ d := max(d, w*(degree u) + totalDegree(leadingCoefficient u,lv))
+ u := reductum u
+ d
+
+ if R has CommutativeRing then
+ resultant(p1,p2,mvar) ==
+ resultant(univariate(p1,mvar),univariate(p2,mvar))
+
+ discriminant(p,var) ==
+ discriminant(univariate(p,var))
+
+ if R has IntegralDomain then
+ allMonoms(l:List %):List(%) ==
+ removeDuplicates_! concat [primitiveMonomials p for p in l]
+
+ P2R(p:%, b:List E, n:NonNegativeInteger):Vector(R) ==
+ w := new(n, 0)$Vector(R)
+ for i in minIndex w .. maxIndex w for bj in b repeat
+ qsetelt_!(w, i, coefficient(p, bj))
+ w
+
+ eq2R(l:List %, b:List E):Matrix(R) ==
+ matrix [[coefficient(p, bj) for p in l] for bj in b]
+
+ reducedSystem(m:Matrix %):Matrix(R) ==
+ l := listOfLists m
+ b := removeDuplicates_!
+ concat [allMonoms r for r in l]$List(List(%))
+ d := [degree bj for bj in b]
+ mm := eq2R(first l, d)
+ l := rest l
+ while not empty? l repeat
+ mm := vertConcat(mm, eq2R(first l, d))
+ l := rest l
+ mm
+
+ reducedSystem(m:Matrix %, v:Vector %):
+ Record(mat:Matrix R, vec:Vector R) ==
+ l := listOfLists m
+ r := entries v
+ b : List % := removeDuplicates_! concat(allMonoms r,
+ concat [allMonoms s for s in l]$List(List(%)))
+ d := [degree bj for bj in b]
+ n := #d
+ mm := eq2R(first l, d)
+ w := P2R(first r, d, n)
+ l := rest l
+ r := rest r
+ while not empty? l repeat
+ mm := vertConcat(mm, eq2R(first l, d))
+ w := concat(w, P2R(first r, d, n))
+ l := rest l
+ r := rest r
+ [mm, w]
+
+ if R has PolynomialFactorizationExplicit then
+ -- we might be in trouble if its actually only
+ -- a univariate polynomial category - have to remember to
+ -- over-ride these in UnivariatePolynomialCategory
+
+ PFBR ==>PolynomialFactorizationByRecursion(R,E,VarSet,%)
+
+ gcdPolynomial(pp,qq) ==
+ gcdPolynomial(pp,qq)$GeneralPolynomialGcdPackage(E,VarSet,R,%)
+
+ solveLinearPolynomialEquation(lpp,pp) ==
+ solveLinearPolynomialEquationByRecursion(lpp,pp)$PFBR
+
+ factorPolynomial(pp) ==
+ factorByRecursion(pp)$PFBR
+
+ factorSquareFreePolynomial(pp) ==
+ factorSquareFreeByRecursion(pp)$PFBR
+
+ factor p ==
+ v:Union(VarSet,"failed"):=mainVariable p
+ v case "failed" =>
+ ansR:=factor leadingCoefficient p
+ makeFR(unit(ansR)::%,
+ [[w.flg,w.fctr::%,w.xpnt] for w in factorList ansR])
+ up:SparseUnivariatePolynomial %:=univariate(p,v)
+ ansSUP:=factorByRecursion(up)$PFBR
+ makeFR(multivariate(unit(ansSUP),v),
+ [[ww.flg,multivariate(ww.fctr,v),ww.xpnt]
+ for ww in factorList ansSUP])
+ if R has CharacteristicNonZero then
+ mat: Matrix %
+
+ conditionP mat ==
+ ll:=listOfLists transpose mat --hence each list corresponds to a
+ --column, i.e. to one variable
+ llR:List List R := [ empty() for z in first ll]
+ monslist:List List % := empty()
+ ch:=characteristic()$%
+ for l in ll repeat
+ mons:= "setUnion"/[primitiveMonomials u for u in l]
+ redmons:List % :=[]
+ for m in mons repeat
+ vars:=variables m
+ degs:=degree(m,vars)
+ deg1:List NonNegativeInteger
+ deg1:=[ ((nd:=d:Integer exquo ch:Integer)
+ case "failed" => return "failed" ;
+ nd::Integer::NonNegativeInteger)
+ for d in degs ]
+ redmons:=[monomial(1,vars,deg1),:redmons]
+ llR:=[[ground coefficient(u,vars,degs),:v]_
+ for u in l for v in llR]
+ monslist:=[redmons,:monslist]
+ ans:=conditionP transpose matrix llR
+ ans case "failed" => "failed"
+ i:NonNegativeInteger:=0
+ [ +/[m*(ans.(i:=i+1))::% for m in mons ]
+ for mons in monslist]
+
+ if R has CharacteristicNonZero then
+ charthRootlv:(%,List VarSet,NonNegativeInteger) ->_
+ Union(%,"failed")
+ charthRoot p ==
+ vars:= variables p
+ empty? vars =>
+ ans := charthRoot ground p
+ ans case "failed" => "failed"
+ ans::R::%
+ ch:=characteristic()$%
+ charthRootlv(p,vars,ch)
+
+ charthRootlv(p,vars,ch) ==
+ empty? vars =>
+ ans := charthRoot ground p
+ ans case "failed" => "failed"
+ ans::R::%
+ v:=first vars
+ vars:=rest vars
+ d:=degree(p,v)
+ ans:% := 0
+ while (d>0) repeat
+ (dd:=(d::Integer exquo ch::Integer)) case "failed" =>
+ return "failed"
+ cp:=coefficient(p,v,d)
+ p:=p-monomial(cp,v,d)
+ ansx:=charthRootlv(cp,vars,ch)
+ ansx case "failed" => return "failed"
+ d:=degree(p,v)
+ ans:=ans+monomial(ansx,v,dd::Integer::NonNegativeInteger)
+ ansx:=charthRootlv(p,vars,ch)
+ ansx case "failed" => return "failed"
+ return ans+ansx
+
+ monicDivide(p1,p2,mvar) ==
+ result:=monicDivide(univariate(p1,mvar),univariate(p2,mvar))
+ [multivariate(result.quotient,mvar),
+ multivariate(result.remainder,mvar)]
+
+ if R has GcdDomain then
+ if R has EuclideanDomain and R has CharacteristicZero then
+ squareFree p == squareFree(p)$MultivariateSquareFree(E,VarSet,R,%)
+ else
+ squareFree p == squareFree(p)$PolynomialSquareFree(VarSet,E,R,%)
+
+ squareFreePart p ==
+ unit(s := squareFree p) * */[f.factor for f in factors s]
+
+ content(p,v) == content univariate(p,v)
+
+ primitivePart p ==
+ zero? p => p
+ unitNormal((p exquo content p) ::%).canonical
+
+ primitivePart(p,v) ==
+ zero? p => p
+ unitNormal((p exquo content(p,v)) ::%).canonical
+
+ if R has OrderedSet then
+ p:% < q:% ==
+ (dp:= degree p) < (dq := degree q) => (leadingCoefficient q) > 0
+ dq < dp => (leadingCoefficient p) < 0
+ leadingCoefficient(p - q) < 0
+
+ if (R has PatternMatchable Integer) and
+ (VarSet has PatternMatchable Integer) then
+ patternMatch(p:%, pat:Pattern Integer,
+ l:PatternMatchResult(Integer, %)) ==
+ patternMatch(p, pat,
+ l)$PatternMatchPolynomialCategory(Integer,E,VarSet,R,%)
+
+ if (R has PatternMatchable Float) and
+ (VarSet has PatternMatchable Float) then
+ patternMatch(p:%, pat:Pattern Float,
+ l:PatternMatchResult(Float, %)) ==
+ patternMatch(p, pat,
+ l)$PatternMatchPolynomialCategory(Float,E,VarSet,R,%)
+
+ if (R has ConvertibleTo Pattern Integer) and
+ (VarSet has ConvertibleTo Pattern Integer) then
+ convert(x:%):Pattern(Integer) ==
+ map(convert, convert,
+ x)$PolynomialCategoryLifting(E,VarSet,R,%,Pattern Integer)
+
+ if (R has ConvertibleTo Pattern Float) and
+ (VarSet has ConvertibleTo Pattern Float) then
+ convert(x:%):Pattern(Float) ==
+ map(convert, convert,
+ x)$PolynomialCategoryLifting(E, VarSet, R, %, Pattern Float)
+
+ if (R has ConvertibleTo InputForm) and
+ (VarSet has ConvertibleTo InputForm) then
+ convert(p:%):InputForm ==
+ map(convert, convert,
+ p)$PolynomialCategoryLifting(E,VarSet,R,%,InputForm)
+
+@
+<<POLYCAT.dotabb>>=
+"POLYCAT"
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=POLYCAT"];
+"POLYCAT" -> "PDRING"
+"POLYCAT" -> "FAMR"
+"POLYCAT" -> "EVALAB"
+"POLYCAT" -> "IEVALAB"
+"POLYCAT" -> "RETRACT"
+"POLYCAT" -> "FLINEXP"
+"POLYCAT" -> "ORDSET"
+"POLYCAT" -> "GCDDOM"
+"POLYCAT" -> "PFECAT"
+"POLYCAT" -> "KONVERT"
+"POLYCAT" -> "PATMAB"
+"POLYCAT" -> "COMRING"
+
+@
+<<POLYCAT.dotfull>>=
+"PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)"
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=POLYCAT"];
+"PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)"
+ -> "PartialDifferentialRing(a:OrderedSet)"
+"PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)"
+ -> "FiniteAbelianMonoidRing(a:Ring,b:OrderedAbelianMonoidSup)"
+"PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)"
+ -> "Evalable(PolynomialCategory(...))"
+"PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)"
+ -> "InnerEvalable(a:OrderedSet,b:Ring)"
+"PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)"
+ -> "InnerEvalable(a:OrderedSet,b:PolynomialCategory(...))"
+"PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)"
+ -> "RetractableTo(a:OrderedSet)"
+"PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)"
+ -> "FullyLinearlyExplicitRingOver(a:Ring)"
+"PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)"
+ -> "OrderedSet()"
+"PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)"
+ -> "GcdDomain()"
+"PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)"
+ -> "PolynomialFactorizationExplicit()"
+"PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)"
+ -> "ConvertibleTo(InputForm)"
+"PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)"
+ -> "PatternMatchable(Pattern(Integer))"
+"PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)"
+ -> "PatternMatchable(Pattern(Float))"
+"PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)"
+ -> "CommutativeRing()"
+
+@
+<<POLYCAT.dotpic>>=
+digraph pic {
+ fontsize=10;
+ bgcolor="#FFFF66";
+ node [shape=box, color=white, style=filled];
+
+"PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)"
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=POLYCAT"];
+"PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)"
+ -> "PDRING..."
+"PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)"
+ -> "FAMR..."
+"PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)"
+ -> "EVALAB..."
+"PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)"
+ -> "IEVALAB..."
+"PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)"
+ -> "RETRACT..."
+"PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)"
+ -> "FLINEXP..."
+"PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)"
+ -> "ORDSET..."
+"PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)"
+ -> "GCDDOM..."
+"PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)"
+ -> "PFECAT..."
+"PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)"
+ -> "KONVERT..."
+"PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)"
+ -> "PATMAB..."
+"PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)"
+ -> "COMRING..."
+
+"PDRING..." [color=lightblue];
+"FAMR..." [color=lightblue];
+"EVALAB..." [color=lightblue];
+"IEVALAB..." [color=lightblue];
+"RETRACT..." [color=lightblue];
+"FLINEXP..." [color=lightblue];
+"ORDSET..." [color=lightblue];
+"GCDDOM..." [color=lightblue];
+"PFECAT..." [color=lightblue];
+"KONVERT..." [color=lightblue];
+"PATMAB..." [color=lightblue];
+"COMRING..." [color=lightblue];
+
+}
+
+@
\chapter{Category Layer 17}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\pagehead{FieldOfPrimeCharacteristic}{FPC}
@@ -31124,6 +32106,1668 @@ Note that this code is not included in the generated
catdef.spad file.
1 6 0 0 18 1 0 16 0 17 1 0 8 0 10 1 0 8 0 11 1 0 0 0 19))))))
(QUOTE |lookupComplete|)))
@
+\section{POLYCAT.lsp BOOTSTRAP}
+{\bf POLYCAT} depends on itself. We need to break this cycle to build
+the algebra. So we keep a cached copy of the translated {\bf POLYCAT}
+category which we can write into the {\bf MID} directory. We compile
+the lisp code and copy the {\bf POLYCAT.o} file to the {\bf OUT} directory.
+This is eventually forcibly replaced by a recompiled version.
+
+Note that this code is not included in the generated catdef.spad file.
+
+<<POLYCAT.lsp BOOTSTRAP>>=
+
+(/VERSIONCHECK 2)
+
+(SETQ |PolynomialCategory;CAT| (QUOTE NIL))
+
+(SETQ |PolynomialCategory;AL| (QUOTE NIL))
+
+(DEFUN |PolynomialCategory| (&REST #0=#:G1430 &AUX #1=#:G1428)
+ (DSETQ #1# #0#)
+ (LET (#2=#:G1429)
+ (COND
+ ((SETQ #2# (|assoc| (|devaluateList| #1#) |PolynomialCategory;AL|))
+ (CDR #2#))
+ (T
+ (SETQ |PolynomialCategory;AL|
+ (|cons5|
+ (CONS (|devaluateList| #1#)
+ (SETQ #2# (APPLY (FUNCTION |PolynomialCategory;|) #1#)))
+ |PolynomialCategory;AL|))
+ #2#))))
+
+(DEFUN |PolynomialCategory;| (|t#1| |t#2| |t#3|)
+ (PROG (#0=#:G1427)
+ (RETURN
+ (PROG1
+ (LETT #0#
+ (|sublisV|
+ (PAIR (QUOTE (|t#1| |t#2| |t#3|)) (LIST (|devaluate| |t#1|) (|devaluate|
|t#2|) (|devaluate| |t#3|)))
+ (COND
+ (|PolynomialCategory;CAT|)
+ ((QUOTE T)
+ (LETT |PolynomialCategory;CAT|
+ (|Join|
+ (|PartialDifferentialRing| (QUOTE |t#3|))
+ (|FiniteAbelianMonoidRing| (QUOTE |t#1|) (QUOTE |t#2|))
+ (|Evalable| (QUOTE $))
+ (|InnerEvalable| (QUOTE |t#3|) (QUOTE |t#1|))
+ (|InnerEvalable| (QUOTE |t#3|) (QUOTE $))
+ (|RetractableTo| (QUOTE |t#3|))
+ (|FullyLinearlyExplicitRingOver| (QUOTE |t#1|))
+ (|mkCategory| (QUOTE |domain|)
+ (QUOTE
+ (((|degree| ((|NonNegativeInteger|) $ |t#3|)) T)
+ ((|degree| ((|List| (|NonNegativeInteger|)) $ (|List| |t#3|))) T)
+ ((|coefficient| ($ $ |t#3| (|NonNegativeInteger|))) T)
+ ((|coefficient| ($ $ (|List| |t#3|)
+ (|List| (|NonNegativeInteger|)))) T)
+ ((|monomials| ((|List| $) $)) T)
+ ((|univariate| ((|SparseUnivariatePolynomial| $) $ |t#3|)) T)
+ ((|univariate| ((|SparseUnivariatePolynomial| |t#1|) $)) T)
+ ((|mainVariable| ((|Union| |t#3| "failed") $)) T)
+ ((|minimumDegree| ((|NonNegativeInteger|) $ |t#3|)) T)
+ ((|minimumDegree| ((|List| (|NonNegativeInteger|)) $
+ (|List| |t#3|))) T)
+ ((|monicDivide|
+ ((|Record| (|:| |quotient| $) (|:| |remainder| $)) $ $ |t#3|))
+ T)
+ ((|monomial| ($ $ |t#3| (|NonNegativeInteger|))) T)
+ ((|monomial| ($ $ (|List| |t#3|) (|List| (|NonNegativeInteger|))))
+ T)
+ ((|multivariate| ($ (|SparseUnivariatePolynomial| |t#1|) |t#3|))
+ T)
+ ((|multivariate| ($ (|SparseUnivariatePolynomial| $) |t#3|)) T)
+ ((|isPlus| ((|Union| (|List| $) "failed") $)) T)
+ ((|isTimes| ((|Union| (|List| $) "failed") $)) T)
+ ((|isExpt|
+ ((|Union|
+ (|Record| (|:| |var| |t#3|)
+ (|:| |exponent| (|NonNegativeInteger|)))
+ "failed") $))
+ T)
+ ((|totalDegree| ((|NonNegativeInteger|) $)) T)
+ ((|totalDegree| ((|NonNegativeInteger|) $ (|List| |t#3|))) T)
+ ((|variables| ((|List| |t#3|) $)) T)
+ ((|primitiveMonomials| ((|List| $) $)) T)
+ ((|resultant| ($ $ $ |t#3|)) (|has| |t#1| (|CommutativeRing|)))
+ ((|discriminant| ($ $ |t#3|)) (|has| |t#1| (|CommutativeRing|)))
+ ((|content| ($ $ |t#3|)) (|has| |t#1| (|GcdDomain|)))
+ ((|primitivePart| ($ $)) (|has| |t#1| (|GcdDomain|)))
+ ((|primitivePart| ($ $ |t#3|)) (|has| |t#1| (|GcdDomain|)))
+ ((|squareFree| ((|Factored| $) $)) (|has| |t#1| (|GcdDomain|)))
+ ((|squareFreePart| ($ $)) (|has| |t#1| (|GcdDomain|)))))
+ (QUOTE
+ (((|OrderedSet|) (|has| |t#1| (|OrderedSet|)))
+ ((|ConvertibleTo| (|InputForm|))
+ (AND (|has| |t#3| (|ConvertibleTo| (|InputForm|)))
+ (|has| |t#1| (|ConvertibleTo| (|InputForm|)))))
+ ((|ConvertibleTo| (|Pattern| (|Integer|)))
+ (AND (|has| |t#3| (|ConvertibleTo| (|Pattern| (|Integer|))))
+ (|has| |t#1| (|ConvertibleTo| (|Pattern| (|Integer|))))))
+ ((|ConvertibleTo| (|Pattern| (|Float|)))
+ (AND (|has| |t#3| (|ConvertibleTo| (|Pattern| (|Float|))))
+ (|has| |t#1| (|ConvertibleTo| (|Pattern| (|Float|))))))
+ ((|PatternMatchable| (|Integer|))
+ (AND
+ (|has| |t#3| (|PatternMatchable| (|Integer|)))
+ (|has| |t#1| (|PatternMatchable| (|Integer|)))))
+ ((|PatternMatchable| (|Float|))
+ (AND
+ (|has| |t#3| (|PatternMatchable| (|Float|)))
+ (|has| |t#1| (|PatternMatchable| (|Float|)))))
+ ((|GcdDomain|) (|has| |t#1| (|GcdDomain|)))
+ (|canonicalUnitNormal|
+ (|has| |t#1| (ATTRIBUTE |canonicalUnitNormal|)))
+ ((|PolynomialFactorizationExplicit|)
+ (|has| |t#1| (|PolynomialFactorizationExplicit|)))))
+ (QUOTE
+ ((|Factored| $)
+ (|List| $)
+ (|List| |t#3|)
+ (|NonNegativeInteger|)
+ (|SparseUnivariatePolynomial| $)
+ (|SparseUnivariatePolynomial| |t#1|)
+ (|List| (|NonNegativeInteger|))))
+ NIL))
+ . #1=(|PolynomialCategory|)))))
+ . #1#)
+ (SETELT #0# 0
+ (LIST (QUOTE |PolynomialCategory|)
+ (|devaluate| |t#1|) (|devaluate| |t#2|) (|devaluate| |t#3|)))))))
+
+@
+\section{POLYCAT-.lsp BOOTSTRAP}
+{\bf POLYCAT-} depends on {\bf POLYCAT}. We need to break this cycle to build
+the algebra. So we keep a cached copy of the translated {\bf POLYCAT-}
+category which we can write into the {\bf MID} directory. We compile
+the lisp code and copy the {\bf POLYCAT-.o} file to the {\bf OUT} directory.
+This is eventually forcibly replaced by a recompiled version.
+
+Note that this code is not included in the generated catdef.spad file.
+
+<<POLYCAT-.lsp BOOTSTRAP>>=
+
+(|/VERSIONCHECK| 2)
+
+
+(/VERSIONCHECK 2)
+
+(DEFUN |POLYCAT-;eval;SLS;1| (|p| |l| $)
+ (PROG (#0=#:G1444 #1=#:G1438 #2=#:G1445 #3=#:G1446 |lvar| #4=#:G1447
+ |e| #5=#:G1448)
+ (RETURN
+ (SEQ
+ (COND
+ ((NULL |l|) |p|)
+ ((QUOTE T)
+ (SEQ
+ (SEQ
+ (EXIT
+ (SEQ
+ (LETT |e| NIL |POLYCAT-;eval;SLS;1|)
+ (LETT #0# |l| |POLYCAT-;eval;SLS;1|)
+ G190
+ (COND
+ ((OR (ATOM #0#)
+ (PROGN (LETT |e| (CAR #0#) |POLYCAT-;eval;SLS;1|) NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (COND
+ ((QEQCAR
+ (SPADCALL (SPADCALL |e| (QREFELT $ 11)) (QREFELT $ 13)) 1)
+ (PROGN
+ (LETT #1#
+ (|error| "cannot find a variable to evaluate")
+ |POLYCAT-;eval;SLS;1|)
+ (GO #1#))))))
+ (LETT #0# (CDR #0#) |POLYCAT-;eval;SLS;1|)
+ (GO G190)
+ G191
+ (EXIT NIL)))
+ #1# (EXIT #1#))
+ (LETT |lvar|
+ (PROGN
+ (LETT #2# NIL |POLYCAT-;eval;SLS;1|)
+ (SEQ
+ (LETT |e| NIL |POLYCAT-;eval;SLS;1|)
+ (LETT #3# |l| |POLYCAT-;eval;SLS;1|)
+ G190
+ (COND
+ ((OR (ATOM #3#)
+ (PROGN (LETT |e| (CAR #3#) |POLYCAT-;eval;SLS;1|) NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (LETT #2#
+ (CONS (SPADCALL (SPADCALL |e| (QREFELT $ 11)) (QREFELT $ 14))
+ #2#)
+ |POLYCAT-;eval;SLS;1|)))
+ (LETT #3# (CDR #3#) |POLYCAT-;eval;SLS;1|)
+ (GO G190)
+ G191
+ (EXIT (NREVERSE0 #2#))))
+ |POLYCAT-;eval;SLS;1|)
+ (EXIT
+ (SPADCALL |p| |lvar|
+ (PROGN
+ (LETT #4# NIL |POLYCAT-;eval;SLS;1|)
+ (SEQ
+ (LETT |e| NIL |POLYCAT-;eval;SLS;1|)
+ (LETT #5# |l| |POLYCAT-;eval;SLS;1|)
+ G190
+ (COND
+ ((OR (ATOM #5#)
+ (PROGN (LETT |e| (CAR #5#) |POLYCAT-;eval;SLS;1|) NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (LETT #4# (CONS (SPADCALL |e| (QREFELT $ 15)) #4#)
+ |POLYCAT-;eval;SLS;1|)))
+ (LETT #5# (CDR #5#) |POLYCAT-;eval;SLS;1|)
+ (GO G190)
+ G191
+ (EXIT (NREVERSE0 #4#))))
+ (QREFELT $ 18))))))))))
+
+(DEFUN |POLYCAT-;monomials;SL;2| (|p| $)
+ (PROG (|ml|)
+ (RETURN
+ (SEQ
+ (LETT |ml| NIL |POLYCAT-;monomials;SL;2|)
+ (SEQ G190
+ (COND
+ ((NULL
+ (COND
+ ((SPADCALL |p| (|spadConstant| $ 21) (QREFELT $ 24)) (QUOTE NIL))
+ ((QUOTE T) (QUOTE T))))
+ (GO G191)))
+ (SEQ
+ (LETT |ml|
+ (CONS (SPADCALL |p| (QREFELT $ 25)) |ml|)
+ |POLYCAT-;monomials;SL;2|)
+ (EXIT
+ (LETT |p| (SPADCALL |p| (QREFELT $ 26)) |POLYCAT-;monomials;SL;2|)))
+ NIL
+ (GO G190)
+ G191
+ (EXIT NIL))
+ (EXIT (REVERSE |ml|))))))
+
+(DEFUN |POLYCAT-;isPlus;SU;3| (|p| $)
+ (PROG (|l|)
+ (RETURN
+ (COND
+ ((NULL
+ (CDR (LETT |l| (SPADCALL |p| (QREFELT $ 28)) |POLYCAT-;isPlus;SU;3|)))
+ (CONS 1 "failed"))
+ ((QUOTE T) (CONS 0 |l|))))))
+
+(DEFUN |POLYCAT-;isTimes;SU;4| (|p| $)
+ (PROG (|lv| #0=#:G1470 |v| #1=#:G1471 |l| |r|)
+ (RETURN
+ (SEQ
+ (COND
+ ((OR (NULL
+ (LETT |lv| (SPADCALL |p| (QREFELT $ 31)) |POLYCAT-;isTimes;SU;4|))
+ (NULL (SPADCALL |p| (QREFELT $ 32))))
+ (CONS 1 "failed"))
+ ((QUOTE T)
+ (SEQ
+ (LETT |l|
+ (PROGN
+ (LETT #0# NIL |POLYCAT-;isTimes;SU;4|)
+ (SEQ
+ (LETT |v| NIL |POLYCAT-;isTimes;SU;4|)
+ (LETT #1# |lv| |POLYCAT-;isTimes;SU;4|)
+ G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN (LETT |v| (CAR #1#) |POLYCAT-;isTimes;SU;4|) NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (LETT #0#
+ (CONS
+ (SPADCALL (|spadConstant| $ 33) |v|
+ (SPADCALL |p| |v| (QREFELT $ 36)) (QREFELT $ 37))
+ #0#)
+ |POLYCAT-;isTimes;SU;4|)))
+ (LETT #1# (CDR #1#) |POLYCAT-;isTimes;SU;4|)
+ (GO G190)
+ G191
+ (EXIT (NREVERSE0 #0#))))
+ |POLYCAT-;isTimes;SU;4|)
+ (LETT |r| (SPADCALL |p| (QREFELT $ 38)) |POLYCAT-;isTimes;SU;4|)
+ (EXIT
+ (COND
+ ((SPADCALL |r| (|spadConstant| $ 34) (QREFELT $ 39))
+ (COND
+ ((NULL (CDR |lv|)) (CONS 1 "failed"))
+ ((QUOTE T) (CONS 0 |l|))))
+ ((QUOTE T)
+ (CONS 0 (CONS (SPADCALL |r| (QREFELT $ 40)) |l|))))))))))))
+
+(DEFUN |POLYCAT-;isExpt;SU;5| (|p| $)
+ (PROG (|u| |d|)
+ (RETURN
+ (SEQ
+ (LETT |u| (SPADCALL |p| (QREFELT $ 42)) |POLYCAT-;isExpt;SU;5|)
+ (EXIT
+ (COND
+ ((OR (QEQCAR |u| 1)
+ (NULL
+ (SPADCALL |p|
+ (SPADCALL (|spadConstant| $ 33)
+ (QCDR |u|)
+ (LETT |d| (SPADCALL |p| (QCDR |u|) (QREFELT $ 36))
+ |POLYCAT-;isExpt;SU;5|)
+ (QREFELT $ 37))
+ (QREFELT $ 24))))
+ (CONS 1 "failed"))
+ ((QUOTE T) (CONS 0 (CONS (QCDR |u|) |d|)))))))))
+
+(DEFUN |POLYCAT-;coefficient;SVarSetNniS;6| (|p| |v| |n| $)
+ (SPADCALL (SPADCALL |p| |v| (QREFELT $ 47)) |n| (QREFELT $ 49)))
+
+(DEFUN |POLYCAT-;coefficient;SLLS;7| (|p| |lv| |ln| $)
+ (COND
+ ((NULL |lv|)
+ (COND
+ ((NULL |ln|) |p|)
+ ((QUOTE T) (|error| "mismatched lists in coefficient"))))
+ ((NULL |ln|) (|error| "mismatched lists in coefficient"))
+ ((QUOTE T)
+ (SPADCALL
+ (SPADCALL
+ (SPADCALL |p| (|SPADfirst| |lv|) (QREFELT $ 47))
+ (|SPADfirst| |ln|)
+ (QREFELT $ 49))
+ (CDR |lv|)
+ (CDR |ln|)
+ (QREFELT $ 52)))))
+
+(DEFUN |POLYCAT-;monomial;SLLS;8| (|p| |lv| |ln| $)
+ (COND
+ ((NULL |lv|)
+ (COND
+ ((NULL |ln|) |p|)
+ ((QUOTE T) (|error| "mismatched lists in monomial"))))
+ ((NULL |ln|) (|error| "mismatched lists in monomial"))
+ ((QUOTE T)
+ (SPADCALL
+ (SPADCALL |p| (|SPADfirst| |lv|) (|SPADfirst| |ln|) (QREFELT $ 37))
+ (CDR |lv|)
+ (CDR |ln|)
+ (QREFELT $ 54)))))
+
+(DEFUN |POLYCAT-;retract;SVarSet;9| (|p| $)
+ (PROG (#0=#:G1496 |q|)
+ (RETURN
+ (SEQ
+ (LETT |q|
+ (PROG2
+ (LETT #0# (SPADCALL |p| (QREFELT $ 42)) |POLYCAT-;retract;SVarSet;9|)
+ (QCDR #0#)
+ (|check-union| (QEQCAR #0# 0) (QREFELT $ 9) #0#))
+ |POLYCAT-;retract;SVarSet;9|)
+ (EXIT
+ (COND
+ ((SPADCALL (SPADCALL |q| (QREFELT $ 56)) |p| (QREFELT $ 24)) |q|)
+ ((QUOTE T) (|error| "Polynomial is not a single variable"))))))))
+
+(DEFUN |POLYCAT-;retractIfCan;SU;10| (|p| $)
+ (PROG (|q| #0=#:G1504)
+ (RETURN
+ (SEQ
+ (EXIT
+ (SEQ
+ (SEQ
+ (LETT |q| (SPADCALL |p| (QREFELT $ 42)) |POLYCAT-;retractIfCan;SU;10|)
+ (EXIT
+ (COND
+ ((QEQCAR |q| 0)
+ (COND
+ ((SPADCALL (SPADCALL (QCDR |q|) (QREFELT $ 56)) |p| (QREFELT $ 24))
+ (PROGN
+ (LETT #0# |q| |POLYCAT-;retractIfCan;SU;10|)
+ (GO #0#))))))))
+ (EXIT (CONS 1 "failed"))))
+ #0#
+ (EXIT #0#)))))
+
+(DEFUN |POLYCAT-;mkPrim| (|p| $)
+ (SPADCALL
+ (|spadConstant| $ 34)
+ (SPADCALL |p| (QREFELT $ 59))
+ (QREFELT $ 60)))
+
+(DEFUN |POLYCAT-;primitiveMonomials;SL;12| (|p| $)
+ (PROG (#0=#:G1509 |q| #1=#:G1510)
+ (RETURN
+ (SEQ
+ (PROGN
+ (LETT #0# NIL |POLYCAT-;primitiveMonomials;SL;12|)
+ (SEQ
+ (LETT |q| NIL |POLYCAT-;primitiveMonomials;SL;12|)
+ (LETT #1# (SPADCALL |p| (QREFELT $ 28))
|POLYCAT-;primitiveMonomials;SL;12|)
+ G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |q| (CAR #1#) |POLYCAT-;primitiveMonomials;SL;12|)
+ NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (LETT #0# (CONS (|POLYCAT-;mkPrim| |q| $) #0#)
+ |POLYCAT-;primitiveMonomials;SL;12|)))
+ (LETT #1# (CDR #1#) |POLYCAT-;primitiveMonomials;SL;12|)
+ (GO G190)
+ G191
+ (EXIT (NREVERSE0 #0#))))))))
+
+(DEFUN |POLYCAT-;totalDegree;SNni;13| (|p| $)
+ (PROG (#0=#:G1512 |d| |u|)
+ (RETURN
+ (SEQ
+ (COND
+ ((SPADCALL |p| (QREFELT $ 62)) 0)
+ ((QUOTE T)
+ (SEQ
+ (LETT |u|
+ (SPADCALL |p|
+ (PROG2
+ (LETT #0#
+ (SPADCALL |p| (QREFELT $ 42))
+ |POLYCAT-;totalDegree;SNni;13|)
+ (QCDR #0#)
+ (|check-union| (QEQCAR #0# 0) (QREFELT $ 9) #0#))
+ (QREFELT $ 47))
+ |POLYCAT-;totalDegree;SNni;13|)
+ (LETT |d| 0 |POLYCAT-;totalDegree;SNni;13|)
+ (SEQ G190
+ (COND
+ ((NULL
+ (COND
+ ((SPADCALL |u| (|spadConstant| $ 63) (QREFELT $ 64)) (QUOTE NIL))
+ ((QUOTE T) (QUOTE T)))) (GO G191)))
+ (SEQ
+ (LETT |d|
+ (MAX |d|
+ (+
+ (SPADCALL |u| (QREFELT $ 65))
+ (SPADCALL (SPADCALL |u| (QREFELT $ 66)) (QREFELT $ 67))))
+ |POLYCAT-;totalDegree;SNni;13|)
+ (EXIT
+ (LETT |u|
+ (SPADCALL |u| (QREFELT $ 68)) |POLYCAT-;totalDegree;SNni;13|)))
+ NIL
+ (GO G190)
+ G191
+ (EXIT NIL))
+ (EXIT |d|))))))))
+
+(DEFUN |POLYCAT-;totalDegree;SLNni;14| (|p| |lv| $)
+ (PROG (#0=#:G1520 |v| |w| |d| |u|)
+ (RETURN
+ (SEQ
+ (COND
+ ((SPADCALL |p| (QREFELT $ 62)) 0)
+ ((QUOTE T)
+ (SEQ
+ (LETT |u|
+ (SPADCALL |p|
+ (LETT |v|
+ (PROG2
+ (LETT #0#
+ (SPADCALL |p| (QREFELT $ 42))
+ |POLYCAT-;totalDegree;SLNni;14|)
+ (QCDR #0#)
+ (|check-union| (QEQCAR #0# 0) (QREFELT $ 9) #0#))
+ |POLYCAT-;totalDegree;SLNni;14|)
+ (QREFELT $ 47))
+ |POLYCAT-;totalDegree;SLNni;14|)
+ (LETT |d| 0 |POLYCAT-;totalDegree;SLNni;14|)
+ (LETT |w| 0 |POLYCAT-;totalDegree;SLNni;14|)
+ (COND
+ ((SPADCALL |v| |lv| (QREFELT $ 70))
+ (LETT |w| 1 |POLYCAT-;totalDegree;SLNni;14|)))
+ (SEQ G190
+ (COND
+ ((NULL
+ (COND
+ ((SPADCALL |u| (|spadConstant| $ 63) (QREFELT $ 64)) (QUOTE NIL))
+ ((QUOTE T) (QUOTE T)))) (GO G191)))
+ (SEQ
+ (LETT |d|
+ (MAX |d|
+ (+
+ (* |w| (SPADCALL |u| (QREFELT $ 65)))
+ (SPADCALL (SPADCALL |u| (QREFELT $ 66)) |lv| (QREFELT $ 71))))
+ |POLYCAT-;totalDegree;SLNni;14|)
+ (EXIT
+ (LETT |u|
+ (SPADCALL |u| (QREFELT $ 68))
+ |POLYCAT-;totalDegree;SLNni;14|)))
+ NIL
+ (GO G190)
+ G191
+ (EXIT NIL))
+ (EXIT |d|))))))))
+
+(DEFUN |POLYCAT-;resultant;2SVarSetS;15| (|p1| |p2| |mvar| $)
+ (SPADCALL
+ (SPADCALL |p1| |mvar| (QREFELT $ 47))
+ (SPADCALL |p2| |mvar| (QREFELT $ 47))
+ (QREFELT $ 73)))
+
+(DEFUN |POLYCAT-;discriminant;SVarSetS;16| (|p| |var| $)
+ (SPADCALL (SPADCALL |p| |var| (QREFELT $ 47)) (QREFELT $ 75)))
+
+(DEFUN |POLYCAT-;allMonoms| (|l| $)
+ (PROG (#0=#:G1532 |p| #1=#:G1533)
+ (RETURN
+ (SEQ
+ (SPADCALL
+ (SPADCALL
+ (PROGN
+ (LETT #0# NIL |POLYCAT-;allMonoms|)
+ (SEQ
+ (LETT |p| NIL |POLYCAT-;allMonoms|)
+ (LETT #1# |l| |POLYCAT-;allMonoms|)
+ G190
+ (COND
+ ((OR (ATOM #1#) (PROGN (LETT |p| (CAR #1#) |POLYCAT-;allMonoms|) NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (LETT #0#
+ (CONS (SPADCALL |p| (QREFELT $ 77)) #0#)
+ |POLYCAT-;allMonoms|)))
+ (LETT #1# (CDR #1#) |POLYCAT-;allMonoms|)
+ (GO G190)
+ G191
+ (EXIT (NREVERSE0 #0#))))
+ (QREFELT $ 79))
+ (QREFELT $ 80))))))
+
+(DEFUN |POLYCAT-;P2R| (|p| |b| |n| $)
+ (PROG (|w| |bj| #0=#:G1538 |i| #1=#:G1537)
+ (RETURN
+ (SEQ
+ (LETT |w|
+ (SPADCALL |n| (|spadConstant| $ 22) (QREFELT $ 82))
+ |POLYCAT-;P2R|)
+ (SEQ
+ (LETT |bj| NIL |POLYCAT-;P2R|)
+ (LETT #0# |b| |POLYCAT-;P2R|)
+ (LETT |i| (SPADCALL |w| (QREFELT $ 84)) |POLYCAT-;P2R|)
+ (LETT #1# (QVSIZE |w|) |POLYCAT-;P2R|)
+ G190
+ (COND
+ ((OR (> |i| #1#)
+ (ATOM #0#)
+ (PROGN (LETT |bj| (CAR #0#) |POLYCAT-;P2R|) NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (SPADCALL |w| |i| (SPADCALL |p| |bj| (QREFELT $ 85)) (QREFELT $ 86))))
+ (LETT |i|
+ (PROG1 (+ |i| 1) (LETT #0# (CDR #0#) |POLYCAT-;P2R|)) |POLYCAT-;P2R|)
+ (GO G190)
+ G191
+ (EXIT NIL))
+ (EXIT |w|)))))
+
+(DEFUN |POLYCAT-;eq2R| (|l| |b| $)
+ (PROG (#0=#:G1542 |bj| #1=#:G1543 #2=#:G1544 |p| #3=#:G1545)
+ (RETURN
+ (SEQ
+ (SPADCALL
+ (PROGN
+ (LETT #0# NIL |POLYCAT-;eq2R|)
+ (SEQ
+ (LETT |bj| NIL |POLYCAT-;eq2R|)
+ (LETT #1# |b| |POLYCAT-;eq2R|)
+ G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN (LETT |bj| (CAR #1#) |POLYCAT-;eq2R|) NIL)) (GO G191)))
+ (SEQ
+ (EXIT
+ (LETT #0#
+ (CONS
+ (PROGN
+ (LETT #2# NIL |POLYCAT-;eq2R|)
+ (SEQ
+ (LETT |p| NIL |POLYCAT-;eq2R|)
+ (LETT #3# |l| |POLYCAT-;eq2R|)
+ G190
+ (COND
+ ((OR (ATOM #3#) (PROGN (LETT |p| (CAR #3#) |POLYCAT-;eq2R|) NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (LETT #2#
+ (CONS (SPADCALL |p| |bj| (QREFELT $ 85)) #2#)
+ |POLYCAT-;eq2R|)))
+ (LETT #3# (CDR #3#) |POLYCAT-;eq2R|)
+ (GO G190)
+ G191
+ (EXIT (NREVERSE0 #2#))))
+ #0#)
+ |POLYCAT-;eq2R|)))
+ (LETT #1# (CDR #1#) |POLYCAT-;eq2R|)
+ (GO G190)
+ G191
+ (EXIT (NREVERSE0 #0#))))
+ (QREFELT $ 89))))))
+
+(DEFUN |POLYCAT-;reducedSystem;MM;20| (|m| $)
+ (PROG (#0=#:G1555 |r| #1=#:G1556 |b| #2=#:G1557 |bj| #3=#:G1558 |d| |mm| |l|)
+ (RETURN
+ (SEQ
+ (LETT |l| (SPADCALL |m| (QREFELT $ 92)) |POLYCAT-;reducedSystem;MM;20|)
+ (LETT |b|
+ (SPADCALL
+ (SPADCALL
+ (PROGN
+ (LETT #0# NIL |POLYCAT-;reducedSystem;MM;20|)
+ (SEQ
+ (LETT |r| NIL |POLYCAT-;reducedSystem;MM;20|)
+ (LETT #1# |l| |POLYCAT-;reducedSystem;MM;20|)
+ G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN (LETT |r| (CAR #1#) |POLYCAT-;reducedSystem;MM;20|) NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (LETT #0#
+ (CONS (|POLYCAT-;allMonoms| |r| $) #0#)
+ |POLYCAT-;reducedSystem;MM;20|)))
+ (LETT #1# (CDR #1#) |POLYCAT-;reducedSystem;MM;20|)
+ (GO G190)
+ G191
+ (EXIT (NREVERSE0 #0#))))
+ (QREFELT $ 79))
+ (QREFELT $ 80))
+ |POLYCAT-;reducedSystem;MM;20|)
+ (LETT |d|
+ (PROGN
+ (LETT #2# NIL |POLYCAT-;reducedSystem;MM;20|)
+ (SEQ
+ (LETT |bj| NIL |POLYCAT-;reducedSystem;MM;20|)
+ (LETT #3# |b| |POLYCAT-;reducedSystem;MM;20|)
+ G190
+ (COND
+ ((OR (ATOM #3#)
+ (PROGN (LETT |bj| (CAR #3#) |POLYCAT-;reducedSystem;MM;20|) NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (LETT #2#
+ (CONS (SPADCALL |bj| (QREFELT $ 59)) #2#)
+ |POLYCAT-;reducedSystem;MM;20|)))
+ (LETT #3# (CDR #3#) |POLYCAT-;reducedSystem;MM;20|)
+ (GO G190)
+ G191
+ (EXIT (NREVERSE0 #2#))))
+ |POLYCAT-;reducedSystem;MM;20|)
+ (LETT |mm|
+ (|POLYCAT-;eq2R| (|SPADfirst| |l|) |d| $) |POLYCAT-;reducedSystem;MM;20|)
+ (LETT |l| (CDR |l|) |POLYCAT-;reducedSystem;MM;20|)
+ (SEQ G190
+ (COND
+ ((NULL (COND ((NULL |l|) (QUOTE NIL)) ((QUOTE T) (QUOTE T)))) (GO G191)))
+ (SEQ
+ (LETT |mm|
+ (SPADCALL |mm| (|POLYCAT-;eq2R| (|SPADfirst| |l|) |d| $) (QREFELT $ 93))
+ |POLYCAT-;reducedSystem;MM;20|)
+ (EXIT (LETT |l| (CDR |l|) |POLYCAT-;reducedSystem;MM;20|)))
+ NIL
+ (GO G190)
+ G191
+ (EXIT NIL))
+ (EXIT |mm|)))))
+
+(DEFUN |POLYCAT-;reducedSystem;MVR;21| (|m| |v| $)
+ (PROG (#0=#:G1570 |s| #1=#:G1571 |b| #2=#:G1572 |bj| #3=#:G1573 |d| |n|
+ |mm| |w| |l| |r|)
+ (RETURN
+ (SEQ
+ (LETT |l| (SPADCALL |m| (QREFELT $ 92)) |POLYCAT-;reducedSystem;MVR;21|)
+ (LETT |r| (SPADCALL |v| (QREFELT $ 97)) |POLYCAT-;reducedSystem;MVR;21|)
+ (LETT |b|
+ (SPADCALL
+ (SPADCALL
+ (|POLYCAT-;allMonoms| |r| $)
+ (SPADCALL
+ (PROGN
+ (LETT #0# NIL |POLYCAT-;reducedSystem;MVR;21|)
+ (SEQ
+ (LETT |s| NIL |POLYCAT-;reducedSystem;MVR;21|)
+ (LETT #1# |l| |POLYCAT-;reducedSystem;MVR;21|)
+ G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |s| (CAR #1#) |POLYCAT-;reducedSystem;MVR;21|)
+ NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (LETT #0#
+ (CONS (|POLYCAT-;allMonoms| |s| $) #0#)
+ |POLYCAT-;reducedSystem;MVR;21|)))
+ (LETT #1# (CDR #1#) |POLYCAT-;reducedSystem;MVR;21|)
+ (GO G190)
+ G191
+ (EXIT (NREVERSE0 #0#))))
+ (QREFELT $ 79))
+ (QREFELT $ 98))
+ (QREFELT $ 80))
+ |POLYCAT-;reducedSystem;MVR;21|)
+ (LETT |d|
+ (PROGN
+ (LETT #2# NIL |POLYCAT-;reducedSystem;MVR;21|)
+ (SEQ
+ (LETT |bj| NIL |POLYCAT-;reducedSystem;MVR;21|)
+ (LETT #3# |b| |POLYCAT-;reducedSystem;MVR;21|)
+ G190
+ (COND
+ ((OR (ATOM #3#)
+ (PROGN (LETT |bj| (CAR #3#) |POLYCAT-;reducedSystem;MVR;21|) NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (LETT #2#
+ (CONS (SPADCALL |bj| (QREFELT $ 59)) #2#)
+ |POLYCAT-;reducedSystem;MVR;21|)))
+ (LETT #3# (CDR #3#) |POLYCAT-;reducedSystem;MVR;21|)
+ (GO G190)
+ G191
+ (EXIT (NREVERSE0 #2#))))
+ |POLYCAT-;reducedSystem;MVR;21|)
+ (LETT |n| (LENGTH |d|) |POLYCAT-;reducedSystem;MVR;21|)
+ (LETT |mm|
+ (|POLYCAT-;eq2R| (|SPADfirst| |l|) |d| $)
+ |POLYCAT-;reducedSystem;MVR;21|)
+ (LETT |w|
+ (|POLYCAT-;P2R| (|SPADfirst| |r|) |d| |n| $)
+ |POLYCAT-;reducedSystem;MVR;21|)
+ (LETT |l| (CDR |l|) |POLYCAT-;reducedSystem;MVR;21|)
+ (LETT |r| (CDR |r|) |POLYCAT-;reducedSystem;MVR;21|)
+ (SEQ G190
+ (COND
+ ((NULL (COND ((NULL |l|) (QUOTE NIL)) ((QUOTE T) (QUOTE T))))
+ (GO G191)))
+ (SEQ
+ (LETT |mm|
+ (SPADCALL |mm| (|POLYCAT-;eq2R| (|SPADfirst| |l|) |d| $) (QREFELT $ 93))
+ |POLYCAT-;reducedSystem;MVR;21|)
+ (LETT |w|
+ (SPADCALL |w|
+ (|POLYCAT-;P2R| (|SPADfirst| |r|) |d| |n| $)
+ (QREFELT $ 99))
+ |POLYCAT-;reducedSystem;MVR;21|)
+ (LETT |l| (CDR |l|) |POLYCAT-;reducedSystem;MVR;21|)
+ (EXIT (LETT |r| (CDR |r|) |POLYCAT-;reducedSystem;MVR;21|)))
+ NIL
+ (GO G190)
+ G191
+ (EXIT NIL))
+ (EXIT (CONS |mm| |w|))))))
+
+(DEFUN |POLYCAT-;gcdPolynomial;3Sup;22| (|pp| |qq| $)
+ (SPADCALL |pp| |qq| (QREFELT $ 104)))
+
+(DEFUN |POLYCAT-;solveLinearPolynomialEquation;LSupU;23| (|lpp| |pp| $)
+ (SPADCALL |lpp| |pp| (QREFELT $ 109)))
+
+(DEFUN |POLYCAT-;factorPolynomial;SupF;24| (|pp| $)
+ (SPADCALL |pp| (QREFELT $ 114)))
+
+(DEFUN |POLYCAT-;factorSquareFreePolynomial;SupF;25| (|pp| $)
+ (SPADCALL |pp| (QREFELT $ 117)))
+
+(DEFUN |POLYCAT-;factor;SF;26| (|p| $)
+ (PROG (|v| |ansR| #0=#:G1615 |w| #1=#:G1616 |up| |ansSUP| #2=#:G1617
+ |ww| #3=#:G1618)
+ (RETURN
+ (SEQ
+ (LETT |v| (SPADCALL |p| (QREFELT $ 42)) |POLYCAT-;factor;SF;26|)
+ (EXIT
+ (COND
+ ((QEQCAR |v| 1)
+ (SEQ
+ (LETT |ansR|
+ (SPADCALL (SPADCALL |p| (QREFELT $ 38)) (QREFELT $ 120))
+ |POLYCAT-;factor;SF;26|)
+ (EXIT
+ (SPADCALL
+ (SPADCALL (SPADCALL |ansR| (QREFELT $ 122)) (QREFELT $ 40))
+ (PROGN
+ (LETT #0# NIL |POLYCAT-;factor;SF;26|)
+ (SEQ
+ (LETT |w| NIL |POLYCAT-;factor;SF;26|)
+ (LETT #1#
+ (SPADCALL |ansR| (QREFELT $ 126))
+ |POLYCAT-;factor;SF;26|)
+ G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN (LETT |w| (CAR #1#) |POLYCAT-;factor;SF;26|) NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (LETT #0#
+ (CONS
+ (VECTOR (QVELT |w| 0)
+ (SPADCALL (QVELT |w| 1) (QREFELT $ 40)) (QVELT |w| 2))
+ #0#)
+ |POLYCAT-;factor;SF;26|)))
+ (LETT #1# (CDR #1#) |POLYCAT-;factor;SF;26|)
+ (GO G190)
+ G191
+ (EXIT (NREVERSE0 #0#))))
+ (QREFELT $ 130)))))
+ ((QUOTE T)
+ (SEQ
+ (LETT |up|
+ (SPADCALL |p| (QCDR |v|) (QREFELT $ 47)) |POLYCAT-;factor;SF;26|)
+ (LETT |ansSUP| (SPADCALL |up| (QREFELT $ 114)) |POLYCAT-;factor;SF;26|)
+ (EXIT
+ (SPADCALL
+ (SPADCALL
+ (SPADCALL |ansSUP| (QREFELT $ 131)) (QCDR |v|) (QREFELT $ 132))
+ (PROGN
+ (LETT #2# NIL |POLYCAT-;factor;SF;26|)
+ (SEQ
+ (LETT |ww| NIL |POLYCAT-;factor;SF;26|)
+ (LETT #3#
+ (SPADCALL |ansSUP| (QREFELT $ 135))
+ |POLYCAT-;factor;SF;26|)
+ G190
+ (COND
+ ((OR (ATOM #3#)
+ (PROGN (LETT |ww| (CAR #3#) |POLYCAT-;factor;SF;26|) NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (LETT #2#
+ (CONS
+ (VECTOR (QVELT |ww| 0) (SPADCALL (QVELT |ww| 1) (QCDR |v|)
+ (QREFELT $ 132)) (QVELT |ww| 2))
+ #2#)
+ |POLYCAT-;factor;SF;26|)))
+ (LETT #3# (CDR #3#) |POLYCAT-;factor;SF;26|)
+ (GO G190)
+ G191
+ (EXIT (NREVERSE0 #2#))))
+ (QREFELT $ 130)))))))))))
+
+(DEFUN |POLYCAT-;conditionP;MU;27| (|mat| $)
+ (PROG (|ll| #0=#:G1653 |z| #1=#:G1654 |ch| |l| #2=#:G1655 #3=#:G1656
+ #4=#:G1625 #5=#:G1623 #6=#:G1624 #7=#:G1657 |vars| |degs|
+ #8=#:G1658 |d| #9=#:G1659 |nd| #10=#:G1652 #11=#:G1632 |deg1|
+ |redmons| #12=#:G1660 |v| #13=#:G1662 |u| #14=#:G1661 |llR|
+ |monslist| |ans| #15=#:G1663 #16=#:G1664 |mons| #17=#:G1665 |m|
+ #18=#:G1666 |i| #19=#:G1648 #20=#:G1646 #21=#:G1647)
+ (RETURN
+ (SEQ
+ (EXIT
+ (SEQ
+ (LETT |ll|
+ (SPADCALL (SPADCALL |mat| (QREFELT $ 137)) (QREFELT $ 92))
+ |POLYCAT-;conditionP;MU;27|)
+ (LETT |llR|
+ (PROGN
+ (LETT #0# NIL |POLYCAT-;conditionP;MU;27|)
+ (SEQ
+ (LETT |z| NIL |POLYCAT-;conditionP;MU;27|)
+ (LETT #1# (|SPADfirst| |ll|) |POLYCAT-;conditionP;MU;27|)
+ G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN (LETT |z| (CAR #1#) |POLYCAT-;conditionP;MU;27|) NIL))
+ (GO G191)))
+ (SEQ (EXIT (LETT #0# (CONS NIL #0#) |POLYCAT-;conditionP;MU;27|)))
+ (LETT #1# (CDR #1#) |POLYCAT-;conditionP;MU;27|)
+ (GO G190)
+ G191
+ (EXIT (NREVERSE0 #0#))))
+ |POLYCAT-;conditionP;MU;27|)
+ (LETT |monslist| NIL |POLYCAT-;conditionP;MU;27|)
+ (LETT |ch| (SPADCALL (QREFELT $ 138)) |POLYCAT-;conditionP;MU;27|)
+ (SEQ
+ (LETT |l| NIL |POLYCAT-;conditionP;MU;27|)
+ (LETT #2# |ll| |POLYCAT-;conditionP;MU;27|)
+ G190
+ (COND
+ ((OR (ATOM #2#)
+ (PROGN (LETT |l| (CAR #2#) |POLYCAT-;conditionP;MU;27|) NIL))
+ (GO G191)))
+ (SEQ
+ (LETT |mons|
+ (PROGN
+ (LETT #6# NIL |POLYCAT-;conditionP;MU;27|)
+ (SEQ
+ (LETT |u| NIL |POLYCAT-;conditionP;MU;27|)
+ (LETT #3# |l| |POLYCAT-;conditionP;MU;27|)
+ G190
+ (COND
+ ((OR (ATOM #3#)
+ (PROGN (LETT |u| (CAR #3#) |POLYCAT-;conditionP;MU;27|) NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (PROGN
+ (LETT #4#
+ (SPADCALL |u| (QREFELT $ 77))
+ |POLYCAT-;conditionP;MU;27|)
+ (COND
+ (#6#
+ (LETT #5#
+ (SPADCALL #5# #4# (QREFELT $ 139))
+ |POLYCAT-;conditionP;MU;27|))
+ ((QUOTE T)
+ (PROGN
+ (LETT #5# #4# |POLYCAT-;conditionP;MU;27|)
+ (LETT #6# (QUOTE T) |POLYCAT-;conditionP;MU;27|)))))))
+ (LETT #3# (CDR #3#) |POLYCAT-;conditionP;MU;27|)
+ (GO G190)
+ G191
+ (EXIT NIL))
+ (COND (#6# #5#) ((QUOTE T) (|IdentityError| (QUOTE |setUnion|)))))
+ |POLYCAT-;conditionP;MU;27|)
+ (LETT |redmons| NIL |POLYCAT-;conditionP;MU;27|)
+ (SEQ
+ (LETT |m| NIL |POLYCAT-;conditionP;MU;27|)
+ (LETT #7# |mons| |POLYCAT-;conditionP;MU;27|)
+ G190
+ (COND
+ ((OR (ATOM #7#)
+ (PROGN (LETT |m| (CAR #7#) |POLYCAT-;conditionP;MU;27|) NIL))
+ (GO G191)))
+ (SEQ
+ (LETT |vars|
+ (SPADCALL |m| (QREFELT $ 31))
+ |POLYCAT-;conditionP;MU;27|)
+ (LETT |degs|
+ (SPADCALL |m| |vars| (QREFELT $ 140))
+ |POLYCAT-;conditionP;MU;27|)
+ (LETT |deg1|
+ (PROGN
+ (LETT #8# NIL |POLYCAT-;conditionP;MU;27|)
+ (SEQ
+ (LETT |d| NIL |POLYCAT-;conditionP;MU;27|)
+ (LETT #9# |degs| |POLYCAT-;conditionP;MU;27|)
+ G190
+ (COND
+ ((OR (ATOM #9#)
+ (PROGN
+ (LETT |d| (CAR #9#) |POLYCAT-;conditionP;MU;27|)
+ NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (LETT #8#
+ (CONS
+ (SEQ
+ (LETT |nd|
+ (SPADCALL |d| |ch| (QREFELT $ 142))
+ |POLYCAT-;conditionP;MU;27|)
+ (EXIT
+ (COND
+ ((QEQCAR |nd| 1)
+ (PROGN
+ (LETT #10#
+ (CONS 1 "failed") |POLYCAT-;conditionP;MU;27|)
+ (GO #10#)))
+ ((QUOTE T)
+ (PROG1
+ (LETT #11# (QCDR |nd|) |POLYCAT-;conditionP;MU;27|)
+ (|check-subtype|
+ (>= #11# 0) (QUOTE (|NonNegativeInteger|)) #11#))))))
+ #8#)
+ |POLYCAT-;conditionP;MU;27|)))
+ (LETT #9# (CDR #9#) |POLYCAT-;conditionP;MU;27|)
+ (GO G190)
+ G191
+ (EXIT (NREVERSE0 #8#))))
+ |POLYCAT-;conditionP;MU;27|)
+ (LETT |redmons|
+ (CONS
+ (SPADCALL (|spadConstant| $ 33) |vars| |deg1| (QREFELT $ 54))
+ |redmons|)
+ |POLYCAT-;conditionP;MU;27|)
+ (EXIT
+ (LETT |llR|
+ (PROGN
+ (LETT #12# NIL |POLYCAT-;conditionP;MU;27|)
+ (SEQ
+ (LETT |v| NIL |POLYCAT-;conditionP;MU;27|)
+ (LETT #13# |llR| |POLYCAT-;conditionP;MU;27|)
+ (LETT |u| NIL |POLYCAT-;conditionP;MU;27|)
+ (LETT #14# |l| |POLYCAT-;conditionP;MU;27|)
+ G190
+ (COND
+ ((OR (ATOM #14#)
+ (PROGN
+ (LETT |u| (CAR #14#) |POLYCAT-;conditionP;MU;27|)
+ NIL)
+ (ATOM #13#)
+ (PROGN (LETT |v| (CAR #13#) |POLYCAT-;conditionP;MU;27|) NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (LETT #12#
+ (CONS
+ (CONS
+ (SPADCALL
+ (SPADCALL |u| |vars| |degs| (QREFELT $ 52))
+ (QREFELT $ 143))
+ |v|)
+ #12#)
+ |POLYCAT-;conditionP;MU;27|)))
+ (LETT #14#
+ (PROG1
+ (CDR #14#)
+ (LETT #13# (CDR #13#) |POLYCAT-;conditionP;MU;27|))
+ |POLYCAT-;conditionP;MU;27|)
+ (GO G190)
+ G191
+ (EXIT (NREVERSE0 #12#))))
+ |POLYCAT-;conditionP;MU;27|)))
+ (LETT #7# (CDR #7#) |POLYCAT-;conditionP;MU;27|)
+ (GO G190)
+ G191
+ (EXIT NIL))
+ (EXIT
+ (LETT |monslist|
+ (CONS |redmons| |monslist|)
+ |POLYCAT-;conditionP;MU;27|)))
+ (LETT #2# (CDR #2#) |POLYCAT-;conditionP;MU;27|)
+ (GO G190)
+ G191
+ (EXIT NIL))
+ (LETT |ans|
+ (SPADCALL (SPADCALL (SPADCALL |llR| (QREFELT $ 89)) (QREFELT $ 144))
+ (QREFELT $ 146))
+ |POLYCAT-;conditionP;MU;27|)
+ (EXIT
+ (COND
+ ((QEQCAR |ans| 1) (CONS 1 "failed"))
+ ((QUOTE T)
+ (SEQ
+ (LETT |i| 0 |POLYCAT-;conditionP;MU;27|)
+ (EXIT
+ (CONS 0
+ (PRIMVEC2ARR
+ (PROGN
+ (LETT #15# (GETREFV (SIZE |monslist|))
+ |POLYCAT-;conditionP;MU;27|)
+ (SEQ
+ (LETT #16# 0 |POLYCAT-;conditionP;MU;27|)
+ (LETT |mons| NIL |POLYCAT-;conditionP;MU;27|)
+ (LETT #17# |monslist| |POLYCAT-;conditionP;MU;27|)
+ G190
+ (COND
+ ((OR (ATOM #17#)
+ (PROGN
+ (LETT |mons| (CAR #17#) |POLYCAT-;conditionP;MU;27|)
+ NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (SETELT #15# #16#
+ (PROGN
+ (LETT #21# NIL |POLYCAT-;conditionP;MU;27|)
+ (SEQ
+ (LETT |m| NIL |POLYCAT-;conditionP;MU;27|)
+ (LETT #18# |mons| |POLYCAT-;conditionP;MU;27|)
+ G190
+ (COND
+ ((OR (ATOM #18#)
+ (PROGN
+ (LETT |m| (CAR #18#) |POLYCAT-;conditionP;MU;27|)
+ NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (PROGN
+ (LETT #19#
+ (SPADCALL |m|
+ (SPADCALL
+ (SPADCALL
+ (QCDR |ans|)
+ (LETT |i| (+ |i| 1) |POLYCAT-;conditionP;MU;27|)
+ (QREFELT $ 147))
+ (QREFELT $ 40))
+ (QREFELT $ 148))
+ |POLYCAT-;conditionP;MU;27|)
+ (COND
+ (#21#
+ (LETT #20#
+ (SPADCALL #20# #19# (QREFELT $ 149))
+ |POLYCAT-;conditionP;MU;27|))
+ ((QUOTE T)
+ (PROGN
+ (LETT #20# #19# |POLYCAT-;conditionP;MU;27|)
+ (LETT #21#
+ (QUOTE T)
+ |POLYCAT-;conditionP;MU;27|)))))))
+ (LETT #18# (CDR #18#) |POLYCAT-;conditionP;MU;27|)
+ (GO G190)
+ G191
+ (EXIT NIL))
+ (COND (#21# #20#) ((QUOTE T) (|spadConstant| $ 21)))))))
+ (LETT #17#
+ (PROG1
+ (CDR #17#)
+ (LETT #16# (QSADD1 #16#) |POLYCAT-;conditionP;MU;27|))
+ |POLYCAT-;conditionP;MU;27|)
+ (GO G190)
+ G191
+ (EXIT NIL))
+ #15#))))))))))
+ #10#
+ (EXIT #10#)))))
+
+(DEFUN |POLYCAT-;charthRoot;SU;28| (|p| $)
+ (PROG (|vars| |ans| |ch|)
+ (RETURN
+ (SEQ
+ (LETT |vars| (SPADCALL |p| (QREFELT $ 31)) |POLYCAT-;charthRoot;SU;28|)
+ (EXIT
+ (COND
+ ((NULL |vars|)
+ (SEQ
+ (LETT |ans|
+ (SPADCALL (SPADCALL |p| (QREFELT $ 143)) (QREFELT $ 151))
+ |POLYCAT-;charthRoot;SU;28|)
+ (EXIT
+ (COND
+ ((QEQCAR |ans| 1) (CONS 1 "failed"))
+ ((QUOTE T) (CONS 0 (SPADCALL (QCDR |ans|) (QREFELT $ 40))))))))
+ ((QUOTE T)
+ (SEQ
+ (LETT |ch| (SPADCALL (QREFELT $ 138)) |POLYCAT-;charthRoot;SU;28|)
+ (EXIT (|POLYCAT-;charthRootlv| |p| |vars| |ch| $))))))))))
+
+(DEFUN |POLYCAT-;charthRootlv| (|p| |vars| |ch| $)
+ (PROG (|v| |dd| |cp| |d| #0=#:G1687 |ans| |ansx| #1=#:G1694)
+ (RETURN
+ (SEQ
+ (EXIT
+ (COND
+ ((NULL |vars|)
+ (SEQ
+ (LETT |ans|
+ (SPADCALL (SPADCALL |p| (QREFELT $ 143)) (QREFELT $ 151))
+ |POLYCAT-;charthRootlv|)
+ (EXIT
+ (COND
+ ((QEQCAR |ans| 1) (CONS 1 "failed"))
+ ((QUOTE T) (CONS 0 (SPADCALL (QCDR |ans|) (QREFELT $ 40))))))))
+ ((QUOTE T)
+ (SEQ
+ (LETT |v| (|SPADfirst| |vars|) |POLYCAT-;charthRootlv|)
+ (LETT |vars| (CDR |vars|) |POLYCAT-;charthRootlv|)
+ (LETT |d| (SPADCALL |p| |v| (QREFELT $ 36)) |POLYCAT-;charthRootlv|)
+ (LETT |ans| (|spadConstant| $ 21) |POLYCAT-;charthRootlv|)
+ (SEQ G190
+ (COND ((NULL (< 0 |d|)) (GO G191)))
+ (SEQ
+ (LETT |dd|
+ (SPADCALL |d| |ch| (QREFELT $ 142))
+ |POLYCAT-;charthRootlv|)
+ (EXIT
+ (COND
+ ((QEQCAR |dd| 1)
+ (PROGN
+ (LETT #1# (CONS 1 "failed") |POLYCAT-;charthRootlv|)
+ (GO #1#)))
+ ((QUOTE T)
+ (SEQ
+ (LETT |cp|
+ (SPADCALL |p| |v| |d| (QREFELT $ 154))
+ |POLYCAT-;charthRootlv|)
+ (LETT |p|
+ (SPADCALL |p|
+ (SPADCALL |cp| |v| |d| (QREFELT $ 37))
+ (QREFELT $ 155))
+ |POLYCAT-;charthRootlv|)
+ (LETT |ansx|
+ (|POLYCAT-;charthRootlv| |cp| |vars| |ch| $)
+ |POLYCAT-;charthRootlv|)
+ (EXIT
+ (COND
+ ((QEQCAR |ansx| 1)
+ (PROGN
+ (LETT #1# (CONS 1 "failed") |POLYCAT-;charthRootlv|)
+ (GO #1#)))
+ ((QUOTE T)
+ (SEQ
+ (LETT |d|
+ (SPADCALL |p| |v| (QREFELT $ 36))
+ |POLYCAT-;charthRootlv|)
+ (EXIT
+ (LETT |ans|
+ (SPADCALL |ans|
+ (SPADCALL (QCDR |ansx|) |v|
+ (PROG1
+ (LETT #0# (QCDR |dd|) |POLYCAT-;charthRootlv|)
+ (|check-subtype| (>= #0# 0)
+ (QUOTE (|NonNegativeInteger|)) #0#))
+ (QREFELT $ 37))
+ (QREFELT $ 149))
+ |POLYCAT-;charthRootlv|)))))))))))
+ NIL
+ (GO G190)
+ G191
+ (EXIT NIL))
+ (LETT |ansx|
+ (|POLYCAT-;charthRootlv| |p| |vars| |ch| $)
+ |POLYCAT-;charthRootlv|)
+ (EXIT
+ (COND
+ ((QEQCAR |ansx| 1)
+ (PROGN
+ (LETT #1# (CONS 1 "failed") |POLYCAT-;charthRootlv|)
+ (GO #1#)))
+ ((QUOTE T)
+ (PROGN
+ (LETT #1#
+ (CONS 0 (SPADCALL |ans| (QCDR |ansx|) (QREFELT $ 149)))
+ |POLYCAT-;charthRootlv|)
+ (GO #1#)))))))))
+ #1#
+ (EXIT #1#)))))
+
+(DEFUN |POLYCAT-;monicDivide;2SVarSetR;30| (|p1| |p2| |mvar| $)
+ (PROG (|result|)
+ (RETURN
+ (SEQ
+ (LETT |result|
+ (SPADCALL
+ (SPADCALL |p1| |mvar| (QREFELT $ 47))
+ (SPADCALL |p2| |mvar| (QREFELT $ 47))
+ (QREFELT $ 157))
+ |POLYCAT-;monicDivide;2SVarSetR;30|)
+ (EXIT
+ (CONS
+ (SPADCALL (QCAR |result|) |mvar| (QREFELT $ 132))
+ (SPADCALL (QCDR |result|) |mvar| (QREFELT $ 132))))))))
+
+(DEFUN |POLYCAT-;squareFree;SF;31| (|p| $)
+ (SPADCALL |p| (QREFELT $ 160)))
+
+(DEFUN |POLYCAT-;squareFree;SF;32| (|p| $)
+ (SPADCALL |p| (QREFELT $ 163)))
+
+(DEFUN |POLYCAT-;squareFree;SF;33| (|p| $)
+ (SPADCALL |p| (QREFELT $ 163)))
+
+(DEFUN |POLYCAT-;squareFreePart;2S;34| (|p| $)
+ (PROG (|s| |f| #0=#:G1710 #1=#:G1708 #2=#:G1706 #3=#:G1707)
+ (RETURN
+ (SEQ
+ (SPADCALL
+ (SPADCALL
+ (LETT |s| (SPADCALL |p| (QREFELT $ 164)) |POLYCAT-;squareFreePart;2S;34|)
+ (QREFELT $ 165))
+ (PROGN
+ (LETT #3# NIL |POLYCAT-;squareFreePart;2S;34|)
+ (SEQ
+ (LETT |f| NIL |POLYCAT-;squareFreePart;2S;34|)
+ (LETT #0# (SPADCALL |s| (QREFELT $ 168))
|POLYCAT-;squareFreePart;2S;34|)
+ G190
+ (COND
+ ((OR (ATOM #0#)
+ (PROGN (LETT |f| (CAR #0#) |POLYCAT-;squareFreePart;2S;34|) NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (PROGN
+ (LETT #1# (QCAR |f|) |POLYCAT-;squareFreePart;2S;34|)
+ (COND
+ (#3#
+ (LETT #2#
+ (SPADCALL #2# #1# (QREFELT $ 148))
+ |POLYCAT-;squareFreePart;2S;34|))
+ ((QUOTE T)
+ (PROGN
+ (LETT #2# #1# |POLYCAT-;squareFreePart;2S;34|)
+ (LETT #3# (QUOTE T) |POLYCAT-;squareFreePart;2S;34|)))))))
+ (LETT #0# (CDR #0#) |POLYCAT-;squareFreePart;2S;34|)
+ (GO G190)
+ G191
+ (EXIT NIL))
+ (COND (#3# #2#) ((QUOTE T) (|spadConstant| $ 33))))
+ (QREFELT $ 148))))))
+
+(DEFUN |POLYCAT-;content;SVarSetS;35| (|p| |v| $)
+ (SPADCALL (SPADCALL |p| |v| (QREFELT $ 47)) (QREFELT $ 170)))
+
+(DEFUN |POLYCAT-;primitivePart;2S;36| (|p| $)
+ (PROG (#0=#:G1713)
+ (RETURN
+ (COND
+ ((SPADCALL |p| (QREFELT $ 172)) |p|)
+ ((QUOTE T)
+ (QVELT
+ (SPADCALL
+ (PROG2
+ (LETT #0#
+ (SPADCALL |p| (SPADCALL |p| (QREFELT $ 173)) (QREFELT $ 174))
+ |POLYCAT-;primitivePart;2S;36|)
+ (QCDR #0#)
+ (|check-union| (QEQCAR #0# 0) (QREFELT $ 6) #0#))
+ (QREFELT $ 176))
+ 1))))))
+
+(DEFUN |POLYCAT-;primitivePart;SVarSetS;37| (|p| |v| $)
+ (PROG (#0=#:G1720)
+ (RETURN
+ (COND
+ ((SPADCALL |p| (QREFELT $ 172)) |p|)
+ ((QUOTE T)
+ (QVELT
+ (SPADCALL
+ (PROG2
+ (LETT #0#
+ (SPADCALL |p| (SPADCALL |p| |v| (QREFELT $ 178)) (QREFELT $ 179))
+ |POLYCAT-;primitivePart;SVarSetS;37|)
+ (QCDR #0#)
+ (|check-union| (QEQCAR #0# 0) (QREFELT $ 6) #0#))
+ (QREFELT $ 176))
+ 1))))))
+
+(DEFUN |POLYCAT-;<;2SB;38| (|p| |q| $)
+ (PROG (|dp| |dq|)
+ (RETURN
+ (SEQ
+ (LETT |dp| (SPADCALL |p| (QREFELT $ 59)) |POLYCAT-;<;2SB;38|)
+ (LETT |dq| (SPADCALL |q| (QREFELT $ 59)) |POLYCAT-;<;2SB;38|)
+ (EXIT
+ (COND
+ ((SPADCALL |dp| |dq| (QREFELT $ 181))
+ (SPADCALL
+ (|spadConstant| $ 22)
+ (SPADCALL |q| (QREFELT $ 38))
+ (QREFELT $ 182)))
+ ((SPADCALL |dq| |dp| (QREFELT $ 181))
+ (SPADCALL
+ (SPADCALL |p| (QREFELT $ 38))
+ (|spadConstant| $ 22)
+ (QREFELT $ 182)))
+ ((QUOTE T)
+ (SPADCALL
+ (SPADCALL (SPADCALL |p| |q| (QREFELT $ 155)) (QREFELT $ 38))
+ (|spadConstant| $ 22)
+ (QREFELT $ 182)))))))))
+
+(DEFUN |POLYCAT-;patternMatch;SP2Pmr;39| (|p| |pat| |l| $)
+ (SPADCALL |p| |pat| |l| (QREFELT $ 187)))
+
+(DEFUN |POLYCAT-;patternMatch;SP2Pmr;40| (|p| |pat| |l| $)
+ (SPADCALL |p| |pat| |l| (QREFELT $ 193)))
+
+(DEFUN |POLYCAT-;convert;SP;41| (|x| $)
+ (SPADCALL (ELT $ 196) (ELT $ 197) |x| (QREFELT $ 201)))
+
+(DEFUN |POLYCAT-;convert;SP;42| (|x| $)
+ (SPADCALL (ELT $ 203) (ELT $ 204) |x| (QREFELT $ 208)))
+
+(DEFUN |POLYCAT-;convert;SIf;43| (|p| $)
+ (SPADCALL (ELT $ 211) (ELT $ 212) |p| (QREFELT $ 216)))
+
+(DEFUN |PolynomialCategory&| (|#1| |#2| |#3| |#4|)
+ (PROG (DV$1 DV$2 DV$3 DV$4 |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT DV$1 (|devaluate| |#1|) . #0=(|PolynomialCategory&|))
+ (LETT DV$2 (|devaluate| |#2|) . #0#)
+ (LETT DV$3 (|devaluate| |#3|) . #0#)
+ (LETT DV$4 (|devaluate| |#4|) . #0#)
+ (LETT |dv$| (LIST (QUOTE |PolynomialCategory&|) DV$1 DV$2 DV$3 DV$4) . #0#)
+ (LETT $ (GETREFV 226) . #0#)
+ (QSETREFV $ 0 |dv$|)
+ (QSETREFV $ 3
+ (LETT |pv$|
+ (|buildPredVector| 0 0
+ (LIST
+ (|HasCategory| |#2| (QUOTE (|PolynomialFactorizationExplicit|)))
+ (|HasAttribute| |#2| (QUOTE |canonicalUnitNormal|))
+ (|HasCategory| |#2| (QUOTE (|GcdDomain|)))
+ (|HasCategory| |#2| (QUOTE (|CommutativeRing|)))
+ (|HasCategory| |#4| (QUOTE (|PatternMatchable| (|Float|))))
+ (|HasCategory| |#2| (QUOTE (|PatternMatchable| (|Float|))))
+ (|HasCategory| |#4| (QUOTE (|PatternMatchable| (|Integer|))))
+ (|HasCategory| |#2| (QUOTE (|PatternMatchable| (|Integer|))))
+ (|HasCategory| |#4| (QUOTE (|ConvertibleTo| (|Pattern| (|Float|)))))
+ (|HasCategory| |#2| (QUOTE (|ConvertibleTo| (|Pattern| (|Float|)))))
+ (|HasCategory| |#4| (QUOTE (|ConvertibleTo| (|Pattern| (|Integer|)))))
+ (|HasCategory| |#2| (QUOTE (|ConvertibleTo| (|Pattern| (|Integer|)))))
+ (|HasCategory| |#4| (QUOTE (|ConvertibleTo| (|InputForm|))))
+ (|HasCategory| |#2| (QUOTE (|ConvertibleTo| (|InputForm|))))
+ (|HasCategory| |#2| (QUOTE (|OrderedSet|)))))
+ . #0#))
+ (|stuffDomainSlots| $)
+ (QSETREFV $ 6 |#1|)
+ (QSETREFV $ 7 |#2|)
+ (QSETREFV $ 8 |#3|)
+ (QSETREFV $ 9 |#4|)
+ (COND
+ ((|testBitVector| |pv$| 4)
+ (PROGN
+ (QSETREFV $ 74
+ (CONS (|dispatchFunction| |POLYCAT-;resultant;2SVarSetS;15|) $))
+ (QSETREFV $ 76
+ (CONS (|dispatchFunction| |POLYCAT-;discriminant;SVarSetS;16|) $)))))
+ (COND
+ ((|HasCategory| |#2| (QUOTE (|IntegralDomain|)))
+ (PROGN
+ (QSETREFV $ 95
+ (CONS (|dispatchFunction| |POLYCAT-;reducedSystem;MM;20|) $))
+ (QSETREFV $ 102
+ (CONS (|dispatchFunction| |POLYCAT-;reducedSystem;MVR;21|) $)))))
+ (COND
+ ((|testBitVector| |pv$| 1)
+ (PROGN
+ (QSETREFV $ 105
+ (CONS (|dispatchFunction| |POLYCAT-;gcdPolynomial;3Sup;22|) $))
+ (QSETREFV $ 112
+ (CONS
+ (|dispatchFunction|
+ |POLYCAT-;solveLinearPolynomialEquation;LSupU;23|)
+ $))
+ (QSETREFV $ 116
+ (CONS (|dispatchFunction| |POLYCAT-;factorPolynomial;SupF;24|) $))
+ (QSETREFV $ 118
+ (CONS
+ (|dispatchFunction| |POLYCAT-;factorSquareFreePolynomial;SupF;25|)
+ $))
+ (QSETREFV $ 136 (CONS (|dispatchFunction| |POLYCAT-;factor;SF;26|) $))
+ (COND
+ ((|HasCategory| |#2| (QUOTE (|CharacteristicNonZero|)))
+ (PROGN
+ (QSETREFV $ 150
+ (CONS (|dispatchFunction| |POLYCAT-;conditionP;MU;27|) $))))))))
+ (COND
+ ((|HasCategory| |#2| (QUOTE (|CharacteristicNonZero|)))
+ (PROGN
+ (QSETREFV $ 152
+ (CONS (|dispatchFunction| |POLYCAT-;charthRoot;SU;28|) $)))))
+ (COND
+ ((|testBitVector| |pv$| 3)
+ (PROGN
+ (COND
+ ((|HasCategory| |#2| (QUOTE (|EuclideanDomain|)))
+ (COND
+ ((|HasCategory| |#2| (QUOTE (|CharacteristicZero|)))
+ (QSETREFV $ 161
+ (CONS (|dispatchFunction| |POLYCAT-;squareFree;SF;31|) $)))
+ ((QUOTE T)
+ (QSETREFV $ 161
+ (CONS (|dispatchFunction| |POLYCAT-;squareFree;SF;32|) $)))))
+ ((QUOTE T)
+ (QSETREFV $ 161
+ (CONS (|dispatchFunction| |POLYCAT-;squareFree;SF;33|) $))))
+ (QSETREFV $ 169
+ (CONS (|dispatchFunction| |POLYCAT-;squareFreePart;2S;34|) $))
+ (QSETREFV $ 171
+ (CONS (|dispatchFunction| |POLYCAT-;content;SVarSetS;35|) $))
+ (QSETREFV $ 177
+ (CONS (|dispatchFunction| |POLYCAT-;primitivePart;2S;36|) $))
+ (QSETREFV $ 180
+ (CONS (|dispatchFunction| |POLYCAT-;primitivePart;SVarSetS;37|) $)))))
+ (COND
+ ((|testBitVector| |pv$| 15)
+ (PROGN
+ (QSETREFV $ 183 (CONS (|dispatchFunction| |POLYCAT-;<;2SB;38|) $))
+ (COND
+ ((|testBitVector| |pv$| 8)
+ (COND
+ ((|testBitVector| |pv$| 7)
+ (QSETREFV $ 189
+ (CONS
+ (|dispatchFunction| |POLYCAT-;patternMatch;SP2Pmr;39|)
+ $))))))
+ (COND
+ ((|testBitVector| |pv$| 6)
+ (COND
+ ((|testBitVector| |pv$| 5)
+ (QSETREFV $ 195
+ (CONS
+ (|dispatchFunction| |POLYCAT-;patternMatch;SP2Pmr;40|)
+ $)))))))))
+ (COND
+ ((|testBitVector| |pv$| 12)
+ (COND
+ ((|testBitVector| |pv$| 11)
+ (QSETREFV $ 202
+ (CONS (|dispatchFunction| |POLYCAT-;convert;SP;41|) $))))))
+ (COND
+ ((|testBitVector| |pv$| 10)
+ (COND
+ ((|testBitVector| |pv$| 9)
+ (QSETREFV $ 209
+ (CONS (|dispatchFunction| |POLYCAT-;convert;SP;42|) $))))))
+ (COND
+ ((|testBitVector| |pv$| 14)
+ (COND
+ ((|testBitVector| |pv$| 13)
+ (QSETREFV $ 217
+ (CONS (|dispatchFunction| |POLYCAT-;convert;SIf;43|) $))))))
+ $))))
+
+(MAKEPROP
+ (QUOTE |PolynomialCategory&|)
+ (QUOTE |infovec|)
+ (LIST (QUOTE
+ #(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|) (|local| |#3|)
+ (|local| |#4|) (|Equation| 6) (0 . |lhs|) (|Union| 9 (QUOTE "failed"))
+ (5 . |retractIfCan|) (10 . |retract|) (15 . |rhs|) (|List| 9) (|List| $)
+ (20 . |eval|) (|List| 221) |POLYCAT-;eval;SLS;1| (27 . |Zero|)
+ (31 . |Zero|) (|Boolean|) (35 . =) (41 . |leadingMonomial|)
+ (46 . |reductum|) |POLYCAT-;monomials;SL;2| (51 . |monomials|)
+ (|Union| 17 (QUOTE "failed")) |POLYCAT-;isPlus;SU;3| (56 . |variables|)
+ (61 . |monomial?|) (66 . |One|) (70 . |One|) (|NonNegativeInteger|)
+ (74 . |degree|) (80 . |monomial|) (87 . |leadingCoefficient|) (92 . =)
+ (98 . |coerce|) |POLYCAT-;isTimes;SU;4| (103 . |mainVariable|)
+ (|Record| (|:| |var| 9) (|:| |exponent| 35))
+ (|Union| 43 (QUOTE "failed")) |POLYCAT-;isExpt;SU;5|
+ (|SparseUnivariatePolynomial| $) (108 . |univariate|)
+ (|SparseUnivariatePolynomial| 6) (114 . |coefficient|)
+ |POLYCAT-;coefficient;SVarSetNniS;6| (|List| 35) (120 . |coefficient|)
+ |POLYCAT-;coefficient;SLLS;7| (127 . |monomial|)
+ |POLYCAT-;monomial;SLLS;8| (134 . |coerce|)
+ |POLYCAT-;retract;SVarSet;9| |POLYCAT-;retractIfCan;SU;10|
+ (139 . |degree|) (144 . |monomial|) |POLYCAT-;primitiveMonomials;SL;12|
+ (150 . |ground?|) (155 . |Zero|) (159 . =) (165 . |degree|)
+ (170 . |leadingCoefficient|) (175 . |totalDegree|) (180 . |reductum|)
+ |POLYCAT-;totalDegree;SNni;13| (185 . |member?|) (191 . |totalDegree|)
+ |POLYCAT-;totalDegree;SLNni;14| (197 . |resultant|) (203 . |resultant|)
+ (210 . |discriminant|) (215 . |discriminant|) (221 . |primitiveMonomials|)
+ (|List| 6) (226 . |concat|) (231 . |removeDuplicates!|) (|Vector| 7)
+ (236 . |new|) (|Integer|) (242 . |minIndex|) (247 . |coefficient|)
+ (253 . |qsetelt!|) (|List| 220) (|Matrix| 7) (260 . |matrix|)
+ (|List| 78) (|Matrix| 6) (265 . |listOfLists|) (270 . |vertConcat|)
+ (|Matrix| $) (276 . |reducedSystem|) (|Vector| 6) (281 . |entries|)
+ (286 . |concat|) (292 . |concat|)
+ (|Record| (|:| |mat| 88) (|:| |vec| 81)) (|Vector| $)
+ (298 . |reducedSystem|) (|GeneralPolynomialGcdPackage| 8 9 7 6)
+ (304 . |gcdPolynomial|) (310 . |gcdPolynomial|)
+ (|Union| 107 (QUOTE "failed")) (|List| 48)
+ (|PolynomialFactorizationByRecursion| 7 8 9 6)
+ (316 . |solveLinearPolynomialEquationByRecursion|)
+ (|Union| 111 (QUOTE "failed")) (|List| 46)
+ (322 . |solveLinearPolynomialEquation|) (|Factored| 48)
+ (328 . |factorByRecursion|) (|Factored| 46) (333 . |factorPolynomial|)
+ (338 . |factorSquareFreeByRecursion|)
+ (343 . |factorSquareFreePolynomial|) (|Factored| $) (348 . |factor|)
+ (|Factored| 7) (353 . |unit|)
+ (|Union| (QUOTE "nil") (QUOTE "sqfr") (QUOTE "irred") (QUOTE "prime"))
+ (|Record| (|:| |flg| 123) (|:| |fctr| 7) (|:| |xpnt| 83))
+ (|List| 124) (358 . |factorList|)
+ (|Record| (|:| |flg| 123) (|:| |fctr| 6) (|:| |xpnt| 83))
+ (|List| 127) (|Factored| 6) (363 . |makeFR|) (369 . |unit|)
+ (374 . |multivariate|)
+ (|Record| (|:| |flg| 123) (|:| |fctr| 48) (|:| |xpnt| 83))
+ (|List| 133) (380 . |factorList|) (385 . |factor|) (390 . |transpose|)
+ (395 . |characteristic|) (399 . |setUnion|) (405 . |degree|)
+ (|Union| $ (QUOTE "failed")) (411 . |exquo|) (417 . |ground|)
+ (422 . |transpose|) (|Union| 101 (QUOTE "failed")) (427 . |conditionP|)
+ (432 . |elt|) (438 . *) (444 . +) (450 . |conditionP|)
+ (455 . |charthRoot|) (460 . |charthRoot|) (465 . |Zero|)
+ (469 . |coefficient|) (476 . -)
+ (|Record| (|:| |quotient| $) (|:| |remainder| $))
+ (482 . |monicDivide|) |POLYCAT-;monicDivide;2SVarSetR;30|
+ (|MultivariateSquareFree| 8 9 7 6) (488 . |squareFree|)
+ (493 . |squareFree|) (|PolynomialSquareFree| 9 8 7 6)
+ (498 . |squareFree|) (503 . |squareFree|) (508 . |unit|)
+ (|Record| (|:| |factor| 6) (|:| |exponent| 83)) (|List| 166)
+ (513 . |factors|) (518 . |squareFreePart|) (523 . |content|)
+ (528 . |content|) (534 . |zero?|) (539 . |content|) (544 . |exquo|)
+ (|Record| (|:| |unit| $) (|:| |canonical| $) (|:| |associate| $))
+ (550 . |unitNormal|) (555 . |primitivePart|) (560 . |content|)
+ (566 . |exquo|) (572 . |primitivePart|) (578 . <) (584 . <) (590 . <)
+ (|PatternMatchResult| 83 6) (|Pattern| 83)
+ (|PatternMatchPolynomialCategory| 83 8 9 7 6) (596 . |patternMatch|)
+ (|PatternMatchResult| 83 $) (603 . |patternMatch|)
+ (|PatternMatchResult| (|Float|) 6) (|Pattern| (|Float|))
+ (|PatternMatchPolynomialCategory| (|Float|) 8 9 7 6)
+ (610 . |patternMatch|) (|PatternMatchResult| (|Float|) $)
+ (617 . |patternMatch|) (624 . |convert|) (629 . |convert|)
+ (|Mapping| 185 9) (|Mapping| 185 7)
+ (|PolynomialCategoryLifting| 8 9 7 6 185) (634 . |map|)
+ (641 . |convert|) (646 . |convert|) (651 . |convert|) (|Mapping| 191 9)
+ (|Mapping| 191 7) (|PolynomialCategoryLifting| 8 9 7 6 191)
+ (656 . |map|) (663 . |convert|) (|InputForm|) (668 . |convert|)
+ (673 . |convert|) (|Mapping| 210 9) (|Mapping| 210 7)
+ (|PolynomialCategoryLifting| 8 9 7 6 210) (678 . |map|)
+ (685 . |convert|) (|Record| (|:| |mat| 219) (|:| |vec| (|Vector| 83)))
+ (|Matrix| 83) (|List| 7) (|Equation| $) (|Union| 83 (QUOTE "failed"))
+ (|Union| 224 (QUOTE "failed")) (|Fraction| 83)
+ (|Union| 7 (QUOTE "failed"))))
+ (QUOTE #(|totalDegree| 690 |squareFreePart| 701 |squareFree| 706
+ |solveLinearPolynomialEquation| 711 |retractIfCan| 717 |retract| 722
+ |resultant| 727 |reducedSystem| 734 |primitivePart| 745
+ |primitiveMonomials| 756 |patternMatch| 761 |monomials| 775
+ |monomial| 780 |monicDivide| 787 |isTimes| 794 |isPlus| 799
+ |isExpt| 804 |gcdPolynomial| 809 |factorSquareFreePolynomial| 815
+ |factorPolynomial| 820 |factor| 825 |eval| 830 |discriminant| 836
+ |convert| 842 |content| 857 |conditionP| 863 |coefficient| 868
+ |charthRoot| 882 < 887))
+ (QUOTE NIL)
+ (CONS (|makeByteWordVec2| 1 (QUOTE NIL))
+ (CONS (QUOTE #())
+ (CONS (QUOTE #())
+ (|makeByteWordVec2| 217 (QUOTE
+ (1 10 6 0 11 1 6 12 0 13 1 6 9 0 14 1 10 6 0 15 3 6 0 0 16 17 18 0 6 0
+ 21 0 7 0 22 2 6 23 0 0 24 1 6 0 0 25 1 6 0 0 26 1 6 17 0 28 1 6 16 0
+ 31 1 6 23 0 32 0 6 0 33 0 7 0 34 2 6 35 0 9 36 3 6 0 0 9 35 37 1 6 7
+ 0 38 2 7 23 0 0 39 1 6 0 7 40 1 6 12 0 42 2 6 46 0 9 47 2 48 6 0 35
+ 49 3 6 0 0 16 51 52 3 6 0 0 16 51 54 1 6 0 9 56 1 6 8 0 59 2 6 0 7 8
+ 60 1 6 23 0 62 0 48 0 63 2 48 23 0 0 64 1 48 35 0 65 1 48 6 0 66 1 6
+ 35 0 67 1 48 0 0 68 2 16 23 9 0 70 2 6 35 0 16 71 2 48 6 0 0 73 3 0
+ 0 0 0 9 74 1 48 6 0 75 2 0 0 0 9 76 1 6 17 0 77 1 78 0 17 79 1 78 0
+ 0 80 2 81 0 35 7 82 1 81 83 0 84 2 6 7 0 8 85 3 81 7 0 83 7 86 1 88
+ 0 87 89 1 91 90 0 92 2 88 0 0 0 93 1 0 88 94 95 1 96 78 0 97 2 78 0
+ 0 0 98 2 81 0 0 0 99 2 0 100 94 101 102 2 103 48 48 48 104 2 0 46 46
+ 46 105 2 108 106 107 48 109 2 0 110 111 46 112 1 108 113 48 114 1 0
+ 115 46 116 1 108 113 48 117 1 0 115 46 118 1 7 119 0 120 1 121 7 0
+ 122 1 121 125 0 126 2 129 0 6 128 130 1 113 48 0 131 2 6 0 46 9 132
+ 1 113 134 0 135 1 0 119 0 136 1 91 0 0 137 0 6 35 138 2 78 0 0 0 139
+ 2 6 51 0 16 140 2 83 141 0 0 142 1 6 7 0 143 1 88 0 0 144 1 7 145 94
+ 146 2 81 7 0 83 147 2 6 0 0 0 148 2 6 0 0 0 149 1 0 145 94 150 1 7
+ 141 0 151 1 0 141 0 152 0 8 0 153 3 6 0 0 9 35 154 2 6 0 0 0 155 2
+ 48 156 0 0 157 1 159 129 6 160 1 0 119 0 161 1 162 129 6 163 1 6 119
+ 0 164 1 129 6 0 165 1 129 167 0 168 1 0 0 0 169 1 48 6 0 170 2 0 0 0
+ 9 171 1 6 23 0 172 1 6 7 0 173 2 6 141 0 7 174 1 6 175 0 176 1 0 0 0
+ 177 2 6 0 0 9 178 2 6 141 0 0 179 2 0 0 0 9 180 2 8 23 0 0 181 2 7 23
+ 0 0 182 2 0 23 0 0 183 3 186 184 6 185 184 187 3 0 188 0 185 188 189
+ 3 192 190 6 191 190 193 3 0 194 0 191 194 195 1 9 185 0 196 1 7 185
+ 0 197 3 200 185 198 199 6 201 1 0 185 0 202 1 9 191 0 203 1 7 191 0
+ 204 3 207 191 205 206 6 208 1 0 191 0 209 1 9 210 0 211 1 7 210 0
+ 212 3 215 210 213 214 6 216 1 0 210 0 217 2 0 35 0 16 72 1 0 35 0 69
+ 1 0 0 0 169 1 0 119 0 161 2 0 110 111 46 112 1 0 12 0 58 1 0 9 0 57
+ 3 0 0 0 0 9 74 1 0 88 94 95 2 0 100 94 101 102 2 0 0 0 9 180 1 0 0 0
+ 177 1 0 17 0 61 3 0 188 0 185 188 189 3 0 194 0 191 194 195 1 0 17 0
+ 27 3 0 0 0 16 51 55 3 0 156 0 0 9 158 1 0 29 0 41 1 0 29 0 30 1 0 44
+ 0 45 2 0 46 46 46 105 1 0 115 46 118 1 0 115 46 116 1 0 119 0 136 2
+ 0 0 0 19 20 2 0 0 0 9 76 1 0 210 0 217 1 0 185 0 202 1 0 191 0 209 2
+ 0 0 0 9 171 1 0 145 94 150 3 0 0 0 16 51 53 3 0 0 0 9 35 50 1 0 141
+ 0 152 2 0 23 0 0 183))))))
+ (QUOTE |lookupComplete|)))
+
+@
\section{RCAGG.lsp BOOTSTRAP}
{\bf RCAGG} depends on a chain of files. We need to break this cycle to build
the algebra. So we keep a cached copy of the translated {\bf RCAGG}
@@ -33070,6 +35714,7 @@ Note that this code is not included in the generated
catdef.spad file.
<<category PDRING PartialDifferentialRing>>
<<category PFECAT PolynomialFactorizationExplicit>>
<<category PID PrincipalIdealDomain>>
+<<category POLYCAT PolynomialCategory>>
<<category PRIMCAT PrimitiveFunctionCategory>>
<<category PRQAGG PriorityQueueAggregate>>
<<category QUAGG QueueAggregate>>
@@ -33200,6 +35845,7 @@ digraph dotabb {
<<PDRING.dotabb>>
<<PFECAT.dotabb>>
<<PID.dotabb>>
+<<POLYCAT.dotabb>>
<<PRIMCAT.dotabb>>
<<PRQAGG.dotabb>>
<<QUAGG.dotabb>>
@@ -33333,6 +35979,7 @@ digraph dotfull {
<<PDRING.dotfull>>
<<PFECAT.dotfull>>
<<PID.dotfull>>
+<<POLYCAT.dotfull>>
<<PRIMCAT.dotfull>>
<<PRQAGG.dotfull>>
<<QUAGG.dotfull>>
diff --git a/books/ps/v102fullypatternmatchable.ps
b/books/ps/v102fullypatternmatchable.ps
new file mode 100644
index 0000000..68f2efc
--- /dev/null
+++ b/books/ps/v102fullypatternmatchable.ps
@@ -0,0 +1,335 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 234 224
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ dup scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def}
bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\))
show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw aligned label in bounding box aligned to current point
+/alignedtext { % width adj text
+ /text exch def
+ /adj exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ text stringwidth pop adj mul 0 rmoveto
+ } if
+ [] 0 setdash
+ text show
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+%%Page: 1 1
+%%PageBoundingBox: 36 36 234 224
+%%PageOrientation: Portrait
+gsave
+36 36 198 188 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 186 lineto
+196 186 lineto
+196 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 186 lineto
+196 186 lineto
+196 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% FullyPatternMatchable(a:Type)
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 190 180 moveto
+0 180 lineto
+0 144 lineto
+190 144 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 190 180 moveto
+0 180 lineto
+0 144 lineto
+190 144 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+8 157 moveto
+(FullyPatternMatchable\(a:Type\))
+[7.44 6.96 3.84 3.6 6.96 7.44 6.24 3.84 3.84 6.24 5.04 6.96 12.48 6.24 3.84 6
6.96 6.24 6.96 3.84 6.24 4.56 6.24 3.84 7.2 6.96 6.96 6.24 4.56]
+xshow
+end grestore
+end grestore
+% Type()
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 122 108 moveto
+68 108 lineto
+68 72 lineto
+122 72 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 122 108 moveto
+68 108 lineto
+68 72 lineto
+122 72 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+76 85 moveto
+(Type\(\))
+[7.2 6.96 6.96 6.24 4.56 4.56]
+xshow
+end grestore
+end grestore
+% FullyPatternMatchable(a:Type)->Type()
+newpath 95 144 moveto
+95 136 95 127 95 118 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 99 118 moveto
+95 108 lineto
+92 118 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 99 118 moveto
+95 108 lineto
+92 118 lineto
+closepath
+stroke
+end grestore
+% Category
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 129 36 moveto
+61 36 lineto
+61 0 lineto
+129 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 129 36 moveto
+61 36 lineto
+61 0 lineto
+129 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+69 13 moveto
+(Category)
+[9.36 6.24 3.84 6.24 6.96 6.96 5.04 6.96]
+xshow
+end grestore
+end grestore
+% Type()->Category
+newpath 95 72 moveto
+95 64 95 55 95 46 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 99 46 moveto
+95 36 lineto
+92 46 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 99 46 moveto
+95 36 lineto
+92 46 lineto
+closepath
+stroke
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v102polynomialcategory.ps
b/books/ps/v102polynomialcategory.ps
new file mode 100644
index 0000000..305de5f
--- /dev/null
+++ b/books/ps/v102polynomialcategory.ps
@@ -0,0 +1,800 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 1246 152
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ dup scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def}
bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\))
show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw aligned label in bounding box aligned to current point
+/alignedtext { % width adj text
+ /text exch def
+ /adj exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ text stringwidth pop adj mul 0 rmoveto
+ } if
+ [] 0 setdash
+ text show
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+%%Page: 1 1
+%%PageBoundingBox: 36 36 1246 152
+%%PageOrientation: Portrait
+gsave
+36 36 1210 116 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 114 lineto
+1208 114 lineto
+1208 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 114 lineto
+1208 114 lineto
+1208 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)
+[ /Rect [ 373 72 799 108 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI (bookvol10.2.pdf#nameddest=POLYCAT) >>
+ /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 799 108 moveto
+373 108 lineto
+373 72 lineto
+799 72 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 799 108 moveto
+373 108 lineto
+373 72 lineto
+799 72 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+381 85 moveto
+(PolynomialCategory\(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet\))
+[7.44 6.96 3.6 6.96 6.96 6.96 10.8 3.84 6.24 3.84 9.36 6.24 3.84 6.24 6.96
6.96 5.04 6.96 4.56 6.24 3.84 9.36 3.84 6.96 6.96 3.6 6.96 3.84 10.08 4.56 6.96
6.24 4.8 6.24 6.96 9.84 6.96 6.24 3.84 3.84 6.24 6.96 12.48 6.96 6.96 6.96 3.84
6.96 7.68 6.96 6.96 3.6 6.24 3.84 10.08 4.56 6.96 6.24 4.8 6.24 6.96 7.68 6
3.84 4.56]
+xshow
+end grestore
+end grestore
+% PDRING...
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 80 36 moveto
+0 36 lineto
+0 0 lineto
+80 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 80 36 moveto
+0 36 lineto
+0 0 lineto
+80 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+8 13 moveto
+(PDRING...)
+[7.68 10.08 9.36 4.56 9.84 10.08 3.6 3.6 3.6]
+xshow
+end grestore
+end grestore
+% PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)->PDRING...
+newpath 373 78 moveto
+287 70 188 58 90 35 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 90 32 moveto
+80 33 lineto
+89 38 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 90 32 moveto
+80 33 lineto
+89 38 lineto
+closepath
+stroke
+end grestore
+% FAMR...
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 164 36 moveto
+98 36 lineto
+98 0 lineto
+164 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 164 36 moveto
+98 36 lineto
+98 0 lineto
+164 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+106 13 moveto
+(FAMR...)
+[6.72 10.08 12.48 9.36 3.6 3.6 3.6]
+xshow
+end grestore
+end grestore
+% PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)->FAMR...
+newpath 373 73 moveto
+311 65 243 54 174 36 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 175 33 moveto
+164 33 lineto
+173 39 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 175 33 moveto
+164 33 lineto
+173 39 lineto
+closepath
+stroke
+end grestore
+% EVALAB...
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 264 36 moveto
+182 36 lineto
+182 0 lineto
+264 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 264 36 moveto
+182 36 lineto
+182 0 lineto
+264 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+189 13 moveto
+(EVALAB...)
+[8.64 8.4 10.08 8.64 10.08 9.36 3.6 3.6 3.6]
+xshow
+end grestore
+end grestore
+% PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)->EVALAB...
+newpath 451 72 moveto
+399 63 337 52 274 36 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 275 33 moveto
+264 33 lineto
+273 39 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 275 33 moveto
+264 33 lineto
+273 39 lineto
+closepath
+stroke
+end grestore
+% IEVALAB...
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 370 36 moveto
+282 36 lineto
+282 0 lineto
+370 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 370 36 moveto
+282 36 lineto
+282 0 lineto
+370 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+290 13 moveto
+(IEVALAB...)
+[4.56 8.64 8.4 10.08 8.64 10.08 9.36 3.6 3.6 3.6]
+xshow
+end grestore
+end grestore
+% PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)->IEVALAB...
+newpath 512 72 moveto
+475 63 429 51 380 36 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 381 33 moveto
+370 33 lineto
+379 39 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 381 33 moveto
+370 33 lineto
+379 39 lineto
+closepath
+stroke
+end grestore
+% RETRACT...
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 478 36 moveto
+388 36 lineto
+388 0 lineto
+478 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 478 36 moveto
+388 36 lineto
+388 0 lineto
+478 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+396 13 moveto
+(RETRACT...)
+[9.36 8.64 8.64 9.36 9.36 9.36 7.44 3.6 3.6 3.6]
+xshow
+end grestore
+end grestore
+% PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)->RETRACT...
+newpath 547 72 moveto
+527 62 502 51 480 40 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 482 37 moveto
+471 36 lineto
+479 43 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 482 37 moveto
+471 36 lineto
+479 43 lineto
+closepath
+stroke
+end grestore
+% FLINEXP...
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 578 36 moveto
+496 36 lineto
+496 0 lineto
+578 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 578 36 moveto
+496 36 lineto
+496 0 lineto
+578 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+503 13 moveto
+(FLINEXP...)
+[7.68 8.64 4.56 10.08 8.64 10.08 6.24 3.6 3.6 3.6]
+xshow
+end grestore
+end grestore
+% PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)->FLINEXP...
+newpath 574 72 moveto
+568 64 561 54 555 44 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 558 42 moveto
+549 36 lineto
+552 46 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 558 42 moveto
+549 36 lineto
+552 46 lineto
+closepath
+stroke
+end grestore
+% ORDSET...
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 676 36 moveto
+596 36 lineto
+596 0 lineto
+676 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 676 36 moveto
+596 36 lineto
+596 0 lineto
+676 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+603 13 moveto
+(ORDSET...)
+[10.08 9.36 10.08 7.68 8.64 7.44 3.6 3.6 3.6]
+xshow
+end grestore
+end grestore
+% PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)->ORDSET...
+newpath 599 72 moveto
+604 64 611 54 617 44 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 620 46 moveto
+623 36 lineto
+614 42 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 620 46 moveto
+623 36 lineto
+614 42 lineto
+closepath
+stroke
+end grestore
+% GCDDOM...
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 784 36 moveto
+694 36 lineto
+694 0 lineto
+784 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 784 36 moveto
+694 36 lineto
+694 0 lineto
+784 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+702 13 moveto
+(GCDDOM...)
+[10.08 9.36 10.08 10.08 10.08 12.48 3.6 3.6 3.6]
+xshow
+end grestore
+end grestore
+% PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)->GCDDOM...
+newpath 625 72 moveto
+645 62 670 51 692 40 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 693 43 moveto
+701 36 lineto
+690 37 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 693 43 moveto
+701 36 lineto
+690 37 lineto
+closepath
+stroke
+end grestore
+% PFECAT...
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 880 36 moveto
+802 36 lineto
+802 0 lineto
+880 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 880 36 moveto
+802 36 lineto
+802 0 lineto
+880 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+810 13 moveto
+(PFECAT...)
+[7.68 7.68 8.64 9.12 9.36 7.44 3.6 3.6 3.6]
+xshow
+end grestore
+end grestore
+% PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)->PFECAT...
+newpath 662 72 moveto
+699 63 744 51 792 36 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 793 39 moveto
+802 33 lineto
+791 33 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 793 39 moveto
+802 33 lineto
+791 33 lineto
+closepath
+stroke
+end grestore
+% KONVERT...
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 990 36 moveto
+898 36 lineto
+898 0 lineto
+990 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 990 36 moveto
+898 36 lineto
+898 0 lineto
+990 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+905 13 moveto
+(KONVERT...)
+[9.12 10.08 10.08 10.08 8.64 8.88 7.44 3.6 3.6 3.6]
+xshow
+end grestore
+end grestore
+% PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)->KONVERT...
+newpath 709 72 moveto
+761 63 824 52 888 36 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 889 39 moveto
+898 33 lineto
+887 33 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 889 39 moveto
+898 33 lineto
+887 33 lineto
+closepath
+stroke
+end grestore
+% PATMAB...
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 1092 36 moveto
+1008 36 lineto
+1008 0 lineto
+1092 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 1092 36 moveto
+1008 36 lineto
+1008 0 lineto
+1092 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+1015 13 moveto
+(PATMAB...)
+[6.48 9.36 8.64 12.48 10.08 9.36 3.6 3.6 3.6]
+xshow
+end grestore
+end grestore
+% PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)->PATMAB...
+newpath 789 72 moveto
+853 64 925 53 998 36 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 999 39 moveto
+1008 34 lineto
+998 33 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 999 39 moveto
+1008 34 lineto
+998 33 lineto
+closepath
+stroke
+end grestore
+% COMRING...
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 1202 36 moveto
+1110 36 lineto
+1110 0 lineto
+1202 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 1202 36 moveto
+1110 36 lineto
+1110 0 lineto
+1202 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+1117 13 moveto
+(COMRING...)
+[9.12 10.08 12.48 9.36 4.56 9.84 10.08 3.6 3.6 3.6]
+xshow
+end grestore
+end grestore
+% PolynomialCategory(a:Ring,b:OrderedAbelianMonoidSup,c:OrderedSet)->COMRING...
+newpath 799 78 moveto
+889 70 996 58 1100 36 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 1101 39 moveto
+1110 34 lineto
+1100 33 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 1101 39 moveto
+1110 34 lineto
+1100 33 lineto
+closepath
+stroke
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Axiom-developer] 20081003.01.tpd.patch (bookvol10.2 add POLYCAT),
daly <=