diff --git a/books/bookvol10.3.pamphlet b/books/bookvol10.3.pamphlet index 7e46fd7..21b8a2b 100644 --- a/books/bookvol10.3.pamphlet +++ b/books/bookvol10.3.pamphlet @@ -80728,6 +80728,414 @@ Product (A:SetCategory,B:SetCategory) : C == T "PRODUCT" -> "OAMONS" @ + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{domain PACRAT PseudoAlgebraicClosureOfRationalNumber} +<>= +)set break resume +)sys rm -f PseudoAlgebraicClosureOfRationalNumber.output +)spool PseudoAlgebraicClosureOfRationalNumber.output +)set message test on +)set message auto off +)clear all + +--S 1 of 1 +)show PseudoAlgebraicClosureOfRationalNumber +--R PseudoAlgebraicClosureOfRationalNumber is a domain constructor +--R Abbreviation for PseudoAlgebraicClosureOfRationalNumber is PACRAT +--R This constructor is exposed in this frame. +--R Issue )edit bookvol10.3.pamphlet to see algebra source code for PACRAT +--R +--R------------------------------- Operations -------------------------------- +--R ?*? : (%,Fraction Integer) -> % ?*? : (Fraction Integer,%) -> % +--R ?*? : (Fraction Integer,%) -> % ?*? : (%,Fraction Integer) -> % +--R ?*? : (%,%) -> % ?*? : (Integer,%) -> % +--R ?*? : (PositiveInteger,%) -> % ?**? : (%,Integer) -> % +--R ?**? : (%,PositiveInteger) -> % ?+? : (%,%) -> % +--R ?-? : (%,%) -> % -? : % -> % +--R ?/? : (%,Fraction Integer) -> % ?/? : (%,%) -> % +--R ?=? : (%,%) -> Boolean 1 : () -> % +--R 0 : () -> % ?^? : (%,Integer) -> % +--R ?^? : (%,PositiveInteger) -> % algebraic? : % -> Boolean +--R associates? : (%,%) -> Boolean coerce : Fraction Integer -> % +--R coerce : Fraction Integer -> % coerce : Integer -> % +--R coerce : Fraction Integer -> % coerce : % -> % +--R coerce : Integer -> % coerce : % -> OutputForm +--R conjugate : % -> % dimension : () -> CardinalNumber +--R extDegree : % -> PositiveInteger factor : % -> Factored % +--R fullOutput : % -> OutputForm gcd : List % -> % +--R gcd : (%,%) -> % ground? : % -> Boolean +--R hash : % -> SingleInteger inGroundField? : % -> Boolean +--R inv : % -> % latex : % -> String +--R lcm : List % -> % lcm : (%,%) -> % +--R maxTower : List % -> % one? : % -> Boolean +--R previousTower : % -> % prime? : % -> Boolean +--R ?quo? : (%,%) -> % recip : % -> Union(%,"failed") +--R ?rem? : (%,%) -> % retract : % -> Fraction Integer +--R retract : % -> Fraction Integer retract : % -> Integer +--R sample : () -> % setTower! : % -> Void +--R sizeLess? : (%,%) -> Boolean squareFree : % -> Factored % +--R squareFreePart : % -> % transcendent? : % -> Boolean +--R unit? : % -> Boolean unitCanonical : % -> % +--R vectorise : (%,%) -> Vector % zero? : % -> Boolean +--R ?~=? : (%,%) -> Boolean +--R ?*? : (NonNegativeInteger,%) -> % +--R ?**? : (%,NonNegativeInteger) -> % +--R Frobenius : % -> % if Fraction Integer has FINITE +--R Frobenius : (%,NonNegativeInteger) -> % if Fraction Integer has FINITE +--R ?^? : (%,NonNegativeInteger) -> % +--R characteristic : () -> NonNegativeInteger +--R charthRoot : % -> Union(%,"failed") if Fraction Integer has CHARNZ or Fraction Integer has FINITE +--R definingPolynomial : % -> SparseUnivariatePolynomial % +--R definingPolynomial : () -> SparseUnivariatePolynomial % +--R degree : % -> OnePointCompletion PositiveInteger +--R discreteLog : (%,%) -> Union(NonNegativeInteger,"failed") if Fraction Integer has CHARNZ or Fraction Integer has FINITE +--R distinguishedRootsOf : (SparseUnivariatePolynomial %,%) -> List % +--R divide : (%,%) -> Record(quotient: %,remainder: %) +--R euclideanSize : % -> NonNegativeInteger +--R expressIdealMember : (List %,%) -> Union(List %,"failed") +--R exquo : (%,%) -> Union(%,"failed") +--R extendedEuclidean : (%,%,%) -> Union(Record(coef1: %,coef2: %),"failed") +--R extendedEuclidean : (%,%) -> Record(coef1: %,coef2: %,generator: %) +--R extensionDegree : () -> OnePointCompletion PositiveInteger +--R gcdPolynomial : (SparseUnivariatePolynomial %,SparseUnivariatePolynomial %) -> SparseUnivariatePolynomial % +--R lift : (%,%) -> SparseUnivariatePolynomial % +--R lift : % -> SparseUnivariatePolynomial % +--R multiEuclidean : (List %,%) -> Union(List %,"failed") +--R newElement : (SparseUnivariatePolynomial %,SparseUnivariatePolynomial %,PositiveInteger,%,Symbol) -> % +--R newElement : (SparseUnivariatePolynomial %,Symbol) -> % +--R newElement : (SparseUnivariatePolynomial %,%,Symbol) -> % +--R order : % -> OnePointCompletion PositiveInteger if Fraction Integer has CHARNZ or Fraction Integer has FINITE +--R primeFrobenius : % -> % if Fraction Integer has CHARNZ or Fraction Integer has FINITE +--R primeFrobenius : (%,NonNegativeInteger) -> % if Fraction Integer has CHARNZ or Fraction Integer has FINITE +--R principalIdeal : List % -> Record(coef: List %,generator: %) +--R reduce : SparseUnivariatePolynomial % -> % +--R retractIfCan : % -> Union(Fraction Integer,"failed") +--R retractIfCan : % -> Union(Fraction Integer,"failed") +--R retractIfCan : % -> Union(Integer,"failed") +--R subtractIfCan : (%,%) -> Union(%,"failed") +--R transcendenceDegree : () -> NonNegativeInteger +--R unitNormal : % -> Record(unit: %,canonical: %,associate: %) +--R +--E 1 + +)spool +)lisp (bye) + +@ +<>= +==================================================================== +PseudoAlgebraicClosureOfRationalNumber examples +==================================================================== + +See Also: +o )show PseudoAlgebraicClosureOfRationalNumber + +@ +\pagehead{PseudoAlgebraicClosureOfRationalNumber}{PACRAT} +\pagepic{ps/v103pseudoalgebraicclosureofrationalnumber.ps}{PACRAT}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{PACRAT}{0} & +\end{tabular} + +<>= +)abbrev domain PACRAT PseudoAlgebraicClosureOfRationalNumber +++ Authors: Gaetan Hache +++ Date Created: feb 1997 +++ Date Last Updated: May 2010 by Tim Daly +++ Description: +++ This domain implements dynamic extension using the simple notion of +++ tower extensions. A tower extension T of the ground field K is any +++ sequence of field extension (T : K_0, K_1, ..., K_i...,K_n) where K_0 = K +++ and for i =1,2,...,n, K_i is an extension of K_{i-1} of degree > 1 and +++ defined by an irreducible polynomial p(Z) in K_{i-1}. +++ Two towers (T_1: K_01, K_11,...,K_i1,...,K_n1) and +++ (T_2: K_02, K_12,...,K_i2,...,K_n2) are said to be related if T_1 <= T_2 +++ (or T_1 >= T_2), that is if K_i1 = K_i2 for i=1,2,...,n1 +++ (or i=1,2,...,n2). Any algebraic operations defined for several elements +++ are only defined if all of the concerned elements are comming from +++ a set of related tour extensions. +PseudoAlgebraicClosureOfRationalNumber:Exports == Implementation where + + INT ==> Integer + K ==> Fraction Integer + NNI ==> NonNegativeInteger + SUP ==> SparseUnivariatePolynomial + BOOLEAN ==> Boolean + PI ==> PositiveInteger + FACTRN ==> FactorisationOverPseudoAlgebraicClosureOfRationalNumber + + recRep ==> Record(recEl:SUP(%),_ + recTower:SUP(%),_ + recDeg:PI,_ + recPrevTower:%,_ + recName:Symbol) + + Exports == PseudoAlgebraicClosureOfRationalNumberCategory with + + fullOutput: % -> OutputForm + + newElement: (SUP(%), SUP(%), PI, %, Symbol) -> % + + Implementation == add + Rep := Union(recRep,K) + + -- signature of local function + replaceRecEl: (%,SUP(%)) -> % + down: % -> % + + down(a:%) == + a case K => a + aa:=(a pretend recRep) + elel := aa.recEl + ^ground?(elel)$SUP(%) => a + gel:%:=ground(elel) + down(gel) + + coerce(a:Integer):%== (a :: K) + + n:INT * a:% == + one?(n) => a + zero?(a) or zero?(n) => 0 + (n < 0) => - ((-n)*a) + mm:PositiveInteger:=(n pretend PositiveInteger) + double(mm,a)$RepeatedDoubling(%) + + replaceRecEl(a,el)== + a case K => a + aa:=copy a + aa.recEl := el + aa + + -- local variable + localTower :% := 1$K + + -- implemetation of exported function + + lift(a) == + a case K => monomial(a,0) + (a pretend recRep).recEl + + lift(a,b)== + extDegree a > extDegree b => _ + error "Cannot lift something at lower level !!!!!" + extDegree a < extDegree b => monomial(a,0)$SUP(%) + lift a + + reduce(a)== + localTower case K => + coefficient(a,0) + ar:= a rem (localTower pretend recRep).recTower + replaceRecEl(localTower,ar) + + maxTower(la)== + --return an element from the list la which is in the largest + --extension of the ground field + --PRECONDITION: all elements in same tower, else no meaning? + m:="max"/[extDegree(a)$% for a in la] + first [b for b in la | extDegree(b)=m] + + ground?(a)== a case K + + vectorise(a,lev)== + da:=extDegree a + dlev:=extDegree lev + dlev < da => _ + error "Cannot vectorise at a lower level than the element to vectorise" + lev case K => [a] + pa:SUP(%) + na:% + ^(da = dlev) => + pa:= monomial(a,0)$SUP(%) + na:= replaceRecEl(lev,pa) + vectorise(na,lev)$% + prevLev:=previousTower(lev) + a case K => error "At this point a is not suppose to be in K" + aEl:=(a pretend recRep).recEl + daEl:=degree definingPolynomial(a)$% + lv:=[vectorise(c,prevLev)$% for c in entries(vectorise(aEl,daEl)$SUP(%))] + concat lv + + setTower!(a) == + localTower:=a + void() + + definingPolynomial == definingPolynomial(localTower) + + a:% + b:% == + (a case K) and (b case K) => a +$K b + extDegree(a) > extDegree(b) => b + a + res1:SUP(%) + res2:% + if extDegree(a) = extDegree(b) then + res1:= b.recEl +$SUP(%) a.recEl + res2:= replaceRecEl(b,res1) + else + res1:= b.recEl +$SUP(%) monomial(a,0)$SUP(%) + res2:= replaceRecEl(b,res1) + down(res2) + + a:% * b:% == + (a case K) and (b case K) => a *$K b + extDegree(a) > extDegree(b) => b * a + res1:SUP(%) + res2:% + if extDegree(a) = extDegree(b) then + res1:= b.recEl *$SUP(%) a.recEl rem b.recTower + res2:= replaceRecEl(b,res1) + else + res1:= b.recEl *$SUP(%) monomial(a,0)$SUP(%) + res2:= replaceRecEl(b,res1) + down(res2) + + distinguishedRootsOf(polyZero,ee) == + setTower!(ee) + zero?(polyZero) => error "to lazy to give you all the roots of 0 !!!" + factorf: Factored SUP % := factor(polyZero,ee)$FACTRN(%) + listFact:List SUP % := [pol.fctr for pol in factorList(factorf)] + listOfZeros:List(%):=empty() + for p in listFact repeat + root:=newElement(p, new(D::Symbol)$Symbol) + listOfZeros:List(%):=concat([ root ], listOfZeros) + listOfZeros + + 1 == 1$K + + 0 == 0$K + + newElement(pol:SUP(%),subF:%,inName:Symbol): % == + -- pol is an irreducible polynomial over the field extension + -- given by subF. + -- The output of this function is a root of pol. + dp:=degree pol + one?(dp) => + listCoef:=coefficients(pol) + one?(#listCoef) => 0 + - last(listCoef) / first(listCoef) + ground?(pol) => error "Cannot create a new element with a constant" + d:PI := (dp pretend PI) * extDegree(subF) + [monomial(1$%,1),pol,d,subF,inName] :: Rep + + newElement(poll:SUP(%),inName:Symbol)== + newElement(poll,localTower,inName) + + newElement(elPol:SUP(%),pol:SUP(%),d:PI,subF:%,inName:Symbol): % == + [elPol, pol,d,subF,inName] :: Rep + + --Field operations + inv(a)== + a case K => inv(a)$K + aRecEl:= (a pretend recRep).recEl + aDefPoly:= (a pretend recRep).recTower + aInv := extendedEuclidean( aRecEl , aDefPoly, 1 ) + aInv case "failed" => error "PACOFF : division by zero" + -- On doit retourner un Record représentant l'inverse de a. + -- Ce Record est exactement le même que celui de a sauf + -- qu'il faut remplacer le polynôme du selecteur recEl + -- par le polynôme représentant l'inverse de a : + -- C'est ce que fait la fonction replaceRecEl. + replaceRecEl( a , aInv.coef1 ) + + a:% / b:% == a * inv(b) + + a:K * b:%== + (a :: %) * b + + b:% * a:K == a*b + + a:% - b:% == + a + (-b) + + a:% * b:Fraction(Integer) == + bn:=numer b + bd:=denom b + ebn:%:= bn * 1$% + ebd:%:= bd * 1$% + a * ebn * inv(ebd) + + -a:% == + a case K => -$K a + [-$SUP(%) (a pretend recRep).recEl,_ + (a pretend recRep).recTower,_ + (a pretend recRep).recDeg,_ + (a pretend recRep).recPrevTower,_ + (a pretend recRep).recName ] + + bb:% = aa:% == + b:=down bb + a:=down aa + ^( extDegree(b) =$NNI extDegree(a) ) => false + (b case K) => ( (retract a)@K =$K (retract b)@K ) + rda := a :: recRep + rdb := b :: recRep + not (rda.recTower =$SUP(%) rdb.recTower) => false + rdb.recEl =$SUP(%) rda.recEl + + zero?(a:%) == + da:=down a -- just to be sure !!! + ^(da case K) => false + zero?(da)$K + + one?(a:%) == + da:= down a -- just to be sure !!! + ^(da case K) => false + one?(da)$K + + --Coerce Functions + + coerce(a:K):% == a + + retractIfCan(a:%):Union(Integer,"failed")== + a case K => retractIfCan(a)$K + "failed" + + retractIfCan(a:%):Union(K,"failed")== + a case K => a + "failed" + + coerce(a:%):OutputForm == + a case K => ((retract a)@K) ::OutputForm + outputForm((a pretend recRep).recEl,_ + ((a pretend recRep).recName)::OutputForm) $SUP(%) + + fullOutput(a:%):OutputForm== + a case K => ((retract a)@K) ::OutputForm + (a pretend recRep)::OutputForm + + definingPolynomial(a:%): SUP % == + a case K => monomial(1,1)$SUP(%) + (a pretend recRep).recTower + + extDegree(a:%): PI == + a case K => 1 + (a pretend recRep).recDeg + + previousTower(a:%):% == + a case K => error "No previous extension for ground field element" + (a pretend recRep).recPrevTower + + name(a:%):Symbol == + a case K => error "No name for ground field element" + (a pretend recRep).recName + + -- function related to the ground field + + characteristic == characteristic()$K + +@ + +<>= +"PACRAT" [color="#88FF44",href="bookvol10.3.pdf#nameddest=PRODUCT"] +"ALIST" [color="#88FF44",href="bookvol10.3.pdf#nameddest=ALIST"] +"PACRAT" -> "ALIST" + +@ + + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Chapter Q} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -122865,6 +123273,7 @@ Note that this code is not included in the generated catdef.spad file. <> <> <> +<> <> <> diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet index 94b8a73..76dd014 100644 --- a/books/bookvol5.pamphlet +++ b/books/bookvol5.pamphlet @@ -24472,6 +24472,7 @@ otherwise the new algebra won't be loaded by the interpreter when needed. (|PriorityQueueAggregate| . PRQAGG) (|PseudoAlgebraicClosureOfFiniteFieldCategory| . PACFFC) (|PseudoAlgebraicClosureOfPerfectFieldCategory| . PACPERC) + (|PseudoAlgebraicClosureOfRationalNumber| . PACRAT) (|PseudoAlgebraicClosureOfRationalNumberCategory| . PACRATC) (|QuaternionCategory| . QUATCAT) (|QueueAggregate| . QUAGG) diff --git a/books/ps/v103pseudoalgebraicclosureofrationalnumber.ps b/books/ps/v103pseudoalgebraicclosureofrationalnumber.ps new file mode 100644 index 0000000..9d2c4a5 --- /dev/null +++ b/books/ps/v103pseudoalgebraicclosureofrationalnumber.ps @@ -0,0 +1,268 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009) +%%For: (root) root +%%Title: pic +%%Pages: (atend) +%%BoundingBox: (atend) +%%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 + 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 text fitted to its expected width +/alignedtext { % width text + /text exch def + /width exch def + gsave + width 0 gt { + [] 0 setdash + text stringwidth pop width exch sub text length div 0 text ashow + } if + 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 +setupLatin1 +%%Page: 1 1 +%%PageBoundingBox: 36 36 114 152 +%%PageOrientation: Portrait +0 0 1 beginpage +gsave +36 36 78 116 boxprim clip newpath +1 1 set_scale 0 rotate 40 40 translate +% PACRAT +gsave +[ /Rect [ 0 72 70 108 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=PRODUCT) >> + /Subtype /Link +/ANN pdfmark +0.273 0.733 1.000 nodecolor +newpath 70 108 moveto +0 108 lineto +0 72 lineto +70 72 lineto +closepath fill +1 setlinewidth +filled +0.273 0.733 1.000 nodecolor +newpath 70 108 moveto +0 108 lineto +0 72 lineto +70 72 lineto +closepath stroke +0.000 0.000 0.000 nodecolor +14 /Times-Roman set_font +7.5 85.9 moveto 55 (PACRAT) alignedtext +grestore +% ALIST +gsave +[ /Rect [ 7 0 63 36 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=ALIST) >> + /Subtype /Link +/ANN pdfmark +0.273 0.733 1.000 nodecolor +newpath 63 36 moveto +7 36 lineto +7 0 lineto +63 0 lineto +closepath fill +1 setlinewidth +filled +0.273 0.733 1.000 nodecolor +newpath 63 36 moveto +7 36 lineto +7 0 lineto +63 0 lineto +closepath stroke +0.000 0.000 0.000 nodecolor +14 /Times-Roman set_font +14.5 13.9 moveto 41 (ALIST) alignedtext +grestore +% PACRAT->ALIST +gsave +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 35 72 moveto +35 64 35 55 35 46 curveto +stroke +0.000 0.000 0.000 edgecolor +newpath 38.5 46 moveto +35 36 lineto +31.5 46 lineto +closepath fill +1 setlinewidth +solid +0.000 0.000 0.000 edgecolor +newpath 38.5 46 moveto +35 36 lineto +31.5 46 lineto +closepath stroke +grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +%%BoundingBox: 36 36 114 152 +end +restore +%%EOF diff --git a/books/ps/v104interfacegroebnerpackage.ps b/books/ps/v104interfacegroebnerpackage.ps new file mode 100644 index 0000000..af3591e --- /dev/null +++ b/books/ps/v104interfacegroebnerpackage.ps @@ -0,0 +1,268 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009) +%%For: (root) root +%%Title: pic +%%Pages: (atend) +%%BoundingBox: (atend) +%%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 + 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 text fitted to its expected width +/alignedtext { % width text + /text exch def + /width exch def + gsave + width 0 gt { + [] 0 setdash + text stringwidth pop width exch sub text length div 0 text ashow + } if + 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 +setupLatin1 +%%Page: 1 1 +%%PageBoundingBox: 36 36 124 152 +%%PageOrientation: Portrait +0 0 1 beginpage +gsave +36 36 88 116 boxprim clip newpath +1 1 set_scale 0 rotate 40 40 translate +% INTERGB +gsave +[ /Rect [ 0 72 80 108 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (bookvol10.4.pdf#nameddest=INTERGB) >> + /Subtype /Link +/ANN pdfmark +0.939 0.733 1.000 nodecolor +newpath 80 108 moveto +0 108 lineto +0 72 lineto +80 72 lineto +closepath fill +1 setlinewidth +filled +0.939 0.733 1.000 nodecolor +newpath 80 108 moveto +0 108 lineto +0 72 lineto +80 72 lineto +closepath stroke +0.000 0.000 0.000 nodecolor +14 /Times-Roman set_font +8 85.9 moveto 64 (INTERGB) alignedtext +grestore +% PFECAT +gsave +[ /Rect [ 5 0 75 36 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (bookvol10.2.pdf#nameddest=PFECAT) >> + /Subtype /Link +/ANN pdfmark +0.606 0.733 1.000 nodecolor +newpath 75 36 moveto +5 36 lineto +5 0 lineto +75 0 lineto +closepath fill +1 setlinewidth +filled +0.606 0.733 1.000 nodecolor +newpath 75 36 moveto +5 36 lineto +5 0 lineto +75 0 lineto +closepath stroke +0.000 0.000 0.000 nodecolor +14 /Times-Roman set_font +13 13.9 moveto 54 (PFECAT) alignedtext +grestore +% INTERGB->PFECAT +gsave +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 40 72 moveto +40 64 40 55 40 46 curveto +stroke +0.000 0.000 0.000 edgecolor +newpath 43.5 46 moveto +40 36 lineto +36.5 46 lineto +closepath fill +1 setlinewidth +solid +0.000 0.000 0.000 edgecolor +newpath 43.5 46 moveto +40 36 lineto +36.5 46 lineto +closepath stroke +grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +%%BoundingBox: 36 36 124 152 +end +restore +%%EOF diff --git a/changelog b/changelog index c0c102e..5b51908 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,9 @@ +20100509 tpd src/axiom-website/patches.html 20100509.01.tpd.patch +20100509 tpd src/algebra/Makefile document and test PACRAT +20100509 tpd books/bookvol5 expose PseudoAlgebraicClosureOfRationalNumber +20100509 tpd books/bookvol10.3 add PseudoAlgebraicClosureOfRationalNumber +20100509 tpd books/ps/v104interfacegroebnerpackage.ps added +20100509 tpd books/ps/v103pseudoalgebraicclosureofrationalnumber.ps added 20100508 tpd src/axiom-website/patches.html 20100508.01.tpd.patch 20100508 tpd v104factorisationoverpseudoalgebraicclosureofrationalnumber.ps add 20100508 tpd src/algebra/Makefile add FACTRN test and help diff --git a/src/algebra/Makefile.pamphlet b/src/algebra/Makefile.pamphlet index 3207f8e..08e33de 100644 --- a/src/algebra/Makefile.pamphlet +++ b/src/algebra/Makefile.pamphlet @@ -9946,7 +9946,8 @@ LAYER16=\ ${OUT}/NAGS.o ${OUT}/NAGSP.o ${OUT}/NREP.o ${OUT}/NUMFMT.o \ ${OUT}/OC.o ${OUT}/OC-.o ${OUT}/ODEPACK.o ${OUT}/ODERAT.o \ ${OUT}/OMERR.o ${OUT}/OMERRK.o ${OUT}/OPTPACK.o ${OUT}/OSI.o \ - ${OUT}/OVAR.o ${OUT}/PATTERN.o ${OUT}/PMKERNEL.o ${OUT}/PMSYM.o \ + ${OUT}/OVAR.o ${OUT}/PACRAT.o \ + ${OUT}/PATTERN.o ${OUT}/PMKERNEL.o ${OUT}/PMSYM.o \ ${OUT}/POLY.o ${OUT}/PRIMELT.o ${OUT}/QALGSET2.o ${OUT}/QEQUAT.o \ ${OUT}/QUATCAT.o ${OUT}/QUATCAT-.o ${OUT}/RECLOS.o ${OUT}/REP1.o \ ${OUT}/RESULT.o ${OUT}/RFFACT.o ${OUT}/RMATRIX.o ${OUT}/ROMAN.o \ @@ -11376,6 +11377,29 @@ LAYER16=\ /*"OVAR" -> {"STRING"; "CHAR"; "SINT"; "OUTFORM"; "PRIMARR"; "A1AGG-"}*/ /*"OVAR" -> {"ISTRING"; "SRAGG-"; "FLAGG-"; "LNAGG-"; "NNI"; "PI"}*/ +"PACRAT" [color="#88FF44",href="bookvol10.3.pdf#nameddest=PACRAT"] +/*"PACRAT" -> { +/*"PACRAT" -> {"PACRATC"; "PACPERC"; "FIELD"; "EUCDOM"; "PID"; "GCDDOM"}*/ +/*"PACRAT" -> {"INTDOM"; "COMRING"; "RING"; "RNG"; "ABELGRP"; "CABMON"}*/ +/*"PACRAT" -> {"ABELMON"; "ABELSG"; "SETCAT"; "BASTYPE"; "KOERCE" "SGROUP"}*/ +/*"PACRAT" -> {"MONOID"; "LMODULE"; "BMODULE"; "RMODULE"; "ALGEBRA"}*/ +/*"PACRAT" -> {"MODULE"; "ENTIRER"; "UFD"; "DIVRING"; "CHARZ"; "RETRACT"}*/ +/*"PACRAT" -> {"XF"; "VSPACE"; "FPC"; "CHARNZ"; "FINITE"; "INS"; "OINTDOM"}*/ +/*"PACRAT" -> {"ORDRING"; "OAGROUP"; "OCAMON"; "OAMON"; "OASGP"; "ORDSET"}*/ +/*"PACRAT" -> {"DIFRING"; "KONVERT"; "LINEXP"; "PATMAB"; "CFCAT"; "REAL"}*/ +/*"PACRAT" -> {"STEP"; "INT"; "NNI"; "PI"; "LIST"; "ILIST"; "LSAGG-"}*/ +/*"PACRAT" -> {"STAGG-"; "ELAGG-"; "FLAGG-"; "URAGG-"; "LNAGG-"; "RCAGG-"}*/ +/*"PACRAT" -> {"IXAGG-"; "CLAGG-"; "HOAGG-"; "ORDSET-"; "AGG-"; "ELTAGG-"}*/ +/*"PACRAT" -> {"SETCAT-"; "BASTYPE-"; "VECTOR"; "IVECTOR"; "IARRAY1"}*/ +/*"PACRAT" -> {"VECTCAT-"; "A1AGG-"; "UPOLYC"; "POLYCAT"; "PDRING"; "FAMR"}*/ +/*"PACRAT" -> {"AMR"; "FRETRCT"; "EVALAB"; "IEVALAB"; "FLINEXP"; "PFECAT"}*/ +/*"PACRAT" -> {"ELTAB"; "DIFEXT"; "SYMBOL"; "REF"}*/ +"PACRAT" -> "ALIST" +/*"PACRAT" -> {"STRING"; "CHAR"; "SINT"; "OUTFORM"; "PRIMARR"; "ISTRING"}*/ +/*"PACRAT" -> {"SRAGG-"; "LSAGG"; "STAGG"; "URAGG"; "RCAGG"; "HOAGG"; "AGG"}*/ +/*"PACRAT" -> {"TYPE"; "LNAGG"; "IXAGG"; "ELTAGG"; "CLAGG"; "FLAGG"; "ELAGG"}*/ +/*"PACRAT" -> {"OM"; "BOOLEAN"; "QFCAT"; "FEVALAB"; "PATAB"; "FPATMAB"}*/ + "PATTERN" [color="#88FF44",href="bookvol10.3.pdf#nameddest=PATTERN"] /*"PATTERN" -> {"SETCAT"; "BASTYPE"; "KOERCE"; "RETRACT"; "SYMBOL"; "INT"}*/ /*"PATTERN" -> "REF"*/ @@ -15924,6 +15948,21 @@ ${MID}/FACTRN.nrlib/code.o: ${MID}/FACTRN.spad | ${INTERPSYS} >${TMP}/trace ; \ fi ) @ +<>= + +PACRATDEPS = PACPERC PACRATC FACTRN + +${MID}/PACRAT.nrlib/code.o: ${MID}/PACRAT.spad + @echo P3 making ${MID}/PACRAT.nrlib/code.o from ${MID}/PACRAT.spad + @ (cd ${MID} ; \ + if [ -z "${NOISE}" ] ; then \ + echo -e ")lib ${PACRATDEPS} \n )co PACRAT.spad" \ + | ${INTERPSYS} ; \ + else \ + echo -e ")lib ${PACRATDEPS} \n )co PACRAT.spad" \ + | ${INTERPSYS} >${TMP}/trace ; \ + fi ) +@ \section{Broken Files} These files are Aldor files @@ -16737,6 +16776,7 @@ SPADHELP=\ ${HELP}/Product.help \ ${HELP}/PseudoAlgebraicClosureOfFiniteFieldCategory.help \ ${HELP}/PseudoAlgebraicClosureOfPerfectFieldCategory.help \ + ${HELP}/PseudoAlgebraicClosureOfRationalNumber.help \ ${HELP}/PseudoAlgebraicClosureOfRationalNumberCategory.help \ ${HELP}/Quaternion.help \ ${HELP}/QuaternionCategoryFunctions2.help \ @@ -16886,6 +16926,7 @@ REGRESS= \ Product.regress \ PseudoAlgebraicClosureOfFiniteFieldCategory.regress \ PseudoAlgebraicClosureOfPerfectFieldCategory.regress \ + PseudoAlgebraicClosureOfRationalNumber.regress \ PseudoAlgebraicClosureOfRationalNumberCategory.regress \ Quaternion.regress \ QuaternionCategoryFunctions2.regress \ @@ -18087,9 +18128,24 @@ ${HELP}/PseudoAlgebraicClosureOfPerfectFieldCategory.help: \ @echo "PseudoAlgebraicClosureOfPerfectFieldCategory (PACPERC)" \ >>${HELPFILE} +${HELP}/PseudoAlgebraicClosureOfRationalNumber.help: \ + ${BOOKS}/bookvol10.3.pamphlet + @echo 7938 create PseudoAlgebraicClosureOfRationalNumber.help \ + from ${BOOKS}/bookvol10.3.pamphlet + @${TANGLE} -R"PseudoAlgebraicClosureOfRationalNumber.help" \ + ${BOOKS}/bookvol10.3.pamphlet \ + >${HELP}/PseudoAlgebraicClosureOfRationalNumber.help + @cp ${HELP}/PseudoAlgebraicClosureOfRationalNumber.help \ + ${HELP}/PACRAT.help + @${TANGLE} -R"PseudoAlgebraicClosureOfRationalNumber.input" \ + ${BOOKS}/bookvol10.3.pamphlet \ + >${INPUT}/PseudoAlgebraicClosureOfRationalNumber.input + @echo "PseudoAlgebraicClosureOfRationalNumber (PACRAT)" \ + >>${HELPFILE} + ${HELP}/PseudoAlgebraicClosureOfRationalNumberCategory.help: \ ${BOOKS}/bookvol10.2.pamphlet - @echo 7938 create PseudoAlgebraicClosureOfRationalNumberCategory.help \ + @echo 7939 create PseudoAlgebraicClosureOfRationalNumberCategory.help \ from ${BOOKS}/bookvol10.2.pamphlet @${TANGLE} -R"PseudoAlgebraicClosureOfRationalNumberCategory.help" \ ${BOOKS}/bookvol10.2.pamphlet \ diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html index 6e39d03..197cd9e 100644 --- a/src/axiom-website/patches.html +++ b/src/axiom-website/patches.html @@ -2675,5 +2675,7 @@ src/axiom-website/documentation.html quote Bill Hart on LP
books/bookvol10.3 document and test Interval
20100508.01.tpd.patch books/bookvol10.2 fix PseudoAlgebraicClosureOfPerfectFieldCategory
+20100509.01.tpd.patch +books/bookvol10.3 add PseudoAlgebraicClosureOfRationalNumber