diff --git a/books/bookvol10.3.pamphlet b/books/bookvol10.3.pamphlet
index 21b8a2b..68efdfc 100644
--- a/books/bookvol10.3.pamphlet
+++ b/books/bookvol10.3.pamphlet
@@ -80616,7 +80616,7 @@ o )show Product
 \cross{PRODUCT}{?$<=$?} &
 \cross{PRODUCT}{?$>$?} &
 \cross{PRODUCT}{?$>=$?} \\
-\cross{PRODUCT}{?\^{}?} &&&&
+\cross{PRODUCT}{?\^{}?} &&&
 \end{tabular}
 
 <<domain PRODUCT Product>>=
@@ -80728,8 +80728,545 @@ Product (A:SetCategory,B:SetCategory) : C == T
 "PRODUCT" -> "OAMONS"
 
 @
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{domain PACOFF PseudoAlgebraicClosureOfFiniteField}
+<<PseudoAlgebraicClosureOfFiniteField.input>>=
+)set break resume
+)sys rm -f PseudoAlgebraicClosureOfFiniteField.output
+)spool PseudoAlgebraicClosureOfFiniteField.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 1
+)show PseudoAlgebraicClosureOfFiniteField
+--R PseudoAlgebraicClosureOfFiniteField K: FiniteFieldCategory  is a domain constructor
+--R Abbreviation for PseudoAlgebraicClosureOfFiniteField is PACOFF 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for PACOFF 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?*? : (%,K) -> %                      ?*? : (K,%) -> %
+--R ?*? : (Fraction Integer,%) -> %       ?*? : (%,Fraction Integer) -> %
+--R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
+--R ?*? : (PositiveInteger,%) -> %        ?**? : (%,Integer) -> %
+--R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?/? : (%,K) -> %                      ?/? : (%,%) -> %
+--R ?=? : (%,%) -> Boolean                D : % -> %
+--R D : (%,NonNegativeInteger) -> %       1 : () -> %
+--R 0 : () -> %                           ?^? : (%,Integer) -> %
+--R ?^? : (%,PositiveInteger) -> %        algebraic? : % -> Boolean
+--R associates? : (%,%) -> Boolean        charthRoot : % -> %
+--R coerce : K -> %                       coerce : Fraction Integer -> %
+--R coerce : % -> %                       coerce : Integer -> %
+--R coerce : % -> OutputForm              conjugate : % -> %
+--R createPrimitiveElement : () -> %      differentiate : % -> %
+--R dimension : () -> CardinalNumber      extDegree : % -> PositiveInteger
+--R factor : % -> Factored %              fullOutput : % -> OutputForm
+--R gcd : List % -> %                     gcd : (%,%) -> %
+--R ground? : % -> Boolean                hash : % -> SingleInteger
+--R inGroundField? : % -> Boolean         index : PositiveInteger -> %
+--R init : () -> %                        inv : % -> %
+--R latex : % -> String                   lcm : List % -> %
+--R lcm : (%,%) -> %                      lookup : % -> PositiveInteger
+--R maxTower : List % -> %                one? : % -> Boolean
+--R order : % -> PositiveInteger          previousTower : % -> %
+--R prime? : % -> Boolean                 primeFrobenius : % -> %
+--R primitive? : % -> Boolean             primitiveElement : () -> %
+--R ?quo? : (%,%) -> %                    random : () -> %
+--R recip : % -> Union(%,"failed")        ?rem? : (%,%) -> %
+--R retract : % -> K                      sample : () -> %
+--R setTower! : % -> Void                 size : () -> NonNegativeInteger
+--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 K has FINITE
+--R Frobenius : (%,NonNegativeInteger) -> % if K has FINITE
+--R ?^? : (%,NonNegativeInteger) -> %
+--R characteristic : () -> NonNegativeInteger
+--R charthRoot : % -> Union(%,"failed")
+--R conditionP : Matrix % -> Union(Vector %,"failed")
+--R definingPolynomial : () -> SparseUnivariatePolynomial %
+--R definingPolynomial : % -> SparseUnivariatePolynomial %
+--R degree : % -> OnePointCompletion PositiveInteger
+--R differentiate : (%,NonNegativeInteger) -> %
+--R discreteLog : % -> NonNegativeInteger
+--R discreteLog : (%,%) -> Union(NonNegativeInteger,"failed")
+--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 factorsOfCyclicGroupSize : () -> List Record(factor: Integer,exponent: Integer)
+--R gcdPolynomial : (SparseUnivariatePolynomial %,SparseUnivariatePolynomial %) -> SparseUnivariatePolynomial %
+--R lift : % -> SparseUnivariatePolynomial %
+--R lift : (%,%) -> SparseUnivariatePolynomial %
+--R multiEuclidean : (List %,%) -> Union(List %,"failed")
+--R newElement : (SparseUnivariatePolynomial %,%,Symbol) -> %
+--R newElement : (SparseUnivariatePolynomial %,Symbol) -> %
+--R nextItem : % -> Union(%,"failed")
+--R order : % -> OnePointCompletion PositiveInteger
+--R primeFrobenius : (%,NonNegativeInteger) -> %
+--R principalIdeal : List % -> Record(coef: List %,generator: %)
+--R reduce : SparseUnivariatePolynomial % -> %
+--R representationType : () -> Union("prime",polynomial,normal,cyclic)
+--R retractIfCan : % -> Union(K,"failed")
+--R subtractIfCan : (%,%) -> Union(%,"failed")
+--R tableForDiscreteLogarithm : Integer -> Table(PositiveInteger,NonNegativeInteger)
+--R transcendenceDegree : () -> NonNegativeInteger
+--R unitNormal : % -> Record(unit: %,canonical: %,associate: %)
+--R
+--E 1
+
+)spool
+)lisp (bye)
+
+@
+<<PseudoAlgebraicClosureOfFiniteField.help>>=
+====================================================================
+PseudoAlgebraicClosureOfFiniteField examples
+====================================================================
+
+See Also:
+o )show PseudoAlgebraicClosureOfFiniteField
+
+@
+\pagehead{PseudoAlgebraicClosureOfFiniteField}{PACOFF}
+\pagepic{ps/v103pseudoalgebraicclosureoffinitefield.ps}{PACOFF}{1.00}
+
+{\bf Exports:}\\
+\begin{tabular}{lll}
+\cross{PACOFF}{0} &
+\cross{PACOFF}{1} &
+\cross{PACOFF}{-?} \\
+\cross{PACOFF}{?**?} &
+\cross{PACOFF}{?*?} &
+\cross{PACOFF}{?+?} \\
+\cross{PACOFF}{?-?} &
+\cross{PACOFF}{?/?} &
+\cross{PACOFF}{?=?} \\
+\cross{PACOFF}{?\^{}?} &
+\cross{PACOFF}{?\~{}=?} &
+\cross{PACOFF}{?quo?} \\
+\cross{PACOFF}{?rem?} &
+\cross{PACOFF}{D} &
+\cross{PACOFF}{algebraic?} \\
+\cross{PACOFF}{associates?} &
+\cross{PACOFF}{characteristic} &
+\cross{PACOFF}{charthRoot} \\
+\cross{PACOFF}{coerce} &
+\cross{PACOFF}{conditionP} &
+\cross{PACOFF}{conjugate} \\
+\cross{PACOFF}{createPrimitiveElement} &
+\cross{PACOFF}{definingPolynomial} &
+\cross{PACOFF}{degree} \\
+\cross{PACOFF}{differentiate} &
+\cross{PACOFF}{dimension} &
+\cross{PACOFF}{discreteLog} \\
+\cross{PACOFF}{distinguishedRootsOf} &
+\cross{PACOFF}{divide} &
+\cross{PACOFF}{euclideanSize} \\
+\cross{PACOFF}{expressIdealMember} &
+\cross{PACOFF}{exquo} &
+\cross{PACOFF}{extDegree} \\
+\cross{PACOFF}{extendedEuclidean} &
+\cross{PACOFF}{extensionDegree} &
+\cross{PACOFF}{factor} \\
+\cross{PACOFF}{factorsOfCyclicGroupSize} &
+\cross{PACOFF}{Frobenius} &
+\cross{PACOFF}{fullOutput} \\
+\cross{PACOFF}{gcd} &
+\cross{PACOFF}{gcdPolynomial} &
+\cross{PACOFF}{ground?} \\
+\cross{PACOFF}{hash} &
+\cross{PACOFF}{inGroundField?} &
+\cross{PACOFF}{index} \\
+\cross{PACOFF}{init} &
+\cross{PACOFF}{inv} &
+\cross{PACOFF}{latex} \\
+\cross{PACOFF}{lcm} &
+\cross{PACOFF}{lift} &
+\cross{PACOFF}{lookup} \\
+\cross{PACOFF}{maxTower} &
+\cross{PACOFF}{multiEuclidean} &
+\cross{PACOFF}{newElement} \\
+\cross{PACOFF}{nextItem} &
+\cross{PACOFF}{one?} &
+\cross{PACOFF}{order} \\
+\cross{PACOFF}{previousTower} &
+\cross{PACOFF}{prime?} &
+\cross{PACOFF}{primeFrobenius} \\
+\cross{PACOFF}{primitive?} &
+\cross{PACOFF}{primitiveElement} &
+\cross{PACOFF}{principalIdeal} \\
+\cross{PACOFF}{random} &
+\cross{PACOFF}{recip} &
+\cross{PACOFF}{reduce} \\
+\cross{PACOFF}{representationType} &
+\cross{PACOFF}{retract} &
+\cross{PACOFF}{retractIfCan} \\
+\cross{PACOFF}{sample} &
+\cross{PACOFF}{setTower!} &
+\cross{PACOFF}{size} \\
+\cross{PACOFF}{sizeLess?} &
+\cross{PACOFF}{squareFree} &
+\cross{PACOFF}{squareFreePart} \\
+\cross{PACOFF}{subtractIfCan} &
+\cross{PACOFF}{tableForDiscreteLogarithm} &
+\cross{PACOFF}{transcendenceDegree} \\
+\cross{PACOFF}{transcendent?} &
+\cross{PACOFF}{unit?} &
+\cross{PACOFF}{unitCanonical} \\
+\cross{PACOFF}{unitNormal} &
+\cross{PACOFF}{vectorise} &
+\cross{PACOFF}{zero?}
+\end{tabular}
+
+<<domain PACOFF PseudoAlgebraicClosureOfFiniteField>>=
+)abbrev domain PACOFF PseudoAlgebraicClosureOfFiniteField
+++ Authors: Gaetan Hache
+++ Date Created: june 1996 
+++ Date Last Updated: May 2010 by Tim Daly
+++ Description: 
+++ This domain implement  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. 
+PseudoAlgebraicClosureOfFiniteField(K):Exports == Implementation where
+  K:FiniteFieldCategory
+  
+  INT      ==> Integer
+  NNI      ==> NonNegativeInteger
+  SUP      ==> SparseUnivariatePolynomial
+  BOOLEAN  ==> Boolean
+  PI       ==> PositiveInteger
+  FFFACTSE ==> FiniteFieldFactorizationWithSizeParseBySideEffect
+
+  recRep ==> Record(recEl:SUP(%),_
+                    recTower:SUP(%),_
+		    recDeg:PI,_
+		    recPrevTower:%,_
+		    recName:Symbol) 
+    
+  Exports == Join(PseudoAlgebraicClosureOfFiniteFieldCategory,_
+                  ExtensionField(K)) with 
+  
+    fullOutput: % -> OutputForm
+  
+  Implementation == add
+    Rep := Union(recRep,K)
+    
+    -- signature of local function  
+    replaceRecEl: (%,SUP(%)) -> %
+    down: % -> %
+    localRandom: % -> %
+    repPolynomial : % -> SUP(%)
+    
+    replaceRecEl(a,el)==
+      a case K => a
+      aa:=copy a
+      aa.recEl := el
+      aa
+
+    -- local variable    
+    localTower :% := 1$K
+        
+    localSize :NNI := size()$K
+    -- implemetation of exported function
+
+    degree(a)==
+      da:PositiveInteger:= extDegree a
+      coerce(da@PositiveInteger)$OnePointCompletion(PositiveInteger)
+
+    repPolynomial(a)==
+      a case K => error "Is in ground field"
+      (a pretend recRep).recEl
+
+    inv(a)==
+      a case K => inv(a)$K
+      aRecEl:= repPolynomial a
+      aDefPoly:= definingPolynomial a 
+      aInv := extendedEuclidean( aRecEl , aDefPoly, 1 )
+      aInv  case "failed" => error "PACOFF : division by zero"
+      down replaceRecEl( a , aInv.coef1 )
+      
+    a:% ** n:PositiveInteger == 
+      zero?(a) => 0
+      expt( a , n )$RepeatedSquaring(%)
+
+    a:% ** n:NonNegativeInteger == 
+      zero?(a) and zero?(n) => error " --- 0^0 not defined "
+      zero?(n) => 1$%
+      a ** ( n pretend PositiveInteger )
+
+    a:% ** n:Integer ==
+      n < 0 => inv( a ** ( (-n)  pretend PositiveInteger) )
+      a ** ( n pretend NonNegativeInteger )
+
+    unitNormal(a)==
+      zero? a => [1,0,1]
+      [a,1,inv a]
+
+    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, big error"
+      aEl:=(a pretend recRep).recEl
+      daEl:=degree(definingPolynomial a)$SUP(%)
+      lv:=[vectorise(c,prevLev)$% for c in entries(vectorise(aEl,daEl)$SUP(%))]
+      concat lv        
+          
+    size == localSize
+
+    setTower!(a) ==
+      localTower:=a
+      localSize:=(size()$K)**extDegree(a)
+      void()
+      
+    localRandom(a) ==
+        --return a random element at the extension of a
+      a case K => random()$K
+      subF:=previousTower(a)
+      d:=degree(a.recTower)-1
+      pol:=reduce("+",[monomial(localRandom(subF),i)$SUP(%) for i in 0..d])
+      down replaceRecEl(a,pol)
+         
+    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)$FFFACTSE(%,SUP(%))
+	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
+    
+    random==
+      localRandom(localTower)
+
+    extDegOfGrdField:PI := 
+      i: PI := 1
+      while characteristic()$K ** i < size()$K repeat
+        i:= i + 1
+      i
+
+    charthRoot(a : %): % ==
+      --return a**(1/chararcteristic )
+      a case K => charthRoot(retract a)$K
+      b:NNI := extDegree(a) * extDegOfGrdField
+      j := subtractIfCan(b,1)
+      if (j case "failed") then b:= 0
+      else b:= j
+      c:= (characteristic()$K) ** b
+      a**c
+
+    conjugate(a)==
+      a ** size()$K 
+
+    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)
+       
+    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:=reduce("max",[extDegree(a) for a in la])
+      first [b for b in la | extDegree(b)=m]
+
+    --Field operations 
+
+    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 ]
+       
+    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(%)
+        
+    bb:% = aa:% ==
+      b:=down bb
+      a:=down aa
+      ^( extDegree(b) =$NNI extDegree(a) ) => false
+      (b case K)  =>  ( (retract a)  =$K (retract b) )
+      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)==
+      a case K => a
+      "failed"
+               
+    coerce(a:%):OutputForm ==
+      a case K => (retract a)::OutputForm
+      outputForm((a pretend recRep).recEl,_
+                ((a pretend recRep).recName)::OutputForm) $SUP(%)
 
+    fullOutput(a:%):OutputForm==
+      a case K => (retract a)::OutputForm
+      (a pretend recRep)::OutputForm
+      
+    definingPolynomial(a:%): SUP % ==
+      a case K => 1
+      (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 
+    
+    lookup(a:%)==
+      aa:=down a
+      ^(aa case K) => _
+        error "From NonGlobalDynamicExtensionOfFiniteField fnc Lookup: Cannot take i-dex"
+      lookup(retract aa)$K
+
+    index(i)==(index(i)$K) 
+
+    fromPrimeField? == characteristic()$K = size()$K
+    
+    representationType == representationType()$K
+   
+    characteristic == characteristic()$K
+
+    -- implementation of local functions
+    
+    down(a:%) == 
+      a case K => a
+      aa:=(a pretend recRep)
+      elel := aa.recEl
+      ^ground?(elel) => a
+      gel:%:=ground(elel)
+      down(gel)
+      
+@
+
+<<PACOFF.dotabb>>=
+"PACOFF" [color="#88FF44",href="bookvol10.3.pdf#nameddest=PRODUCT"]
+"ALIST" [color="#88FF44",href="bookvol10.3.pdf#nameddest=ALIST"]
+"PACOFF" -> "ALIST"
+
+@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \section{domain PACRAT PseudoAlgebraicClosureOfRationalNumber}
 <<PseudoAlgebraicClosureOfRationalNumber.input>>=
@@ -80839,6 +81376,75 @@ o )show PseudoAlgebraicClosureOfRationalNumber
 {\bf Exports:}\\
 \begin{tabular}{lllll}
 \cross{PACRAT}{0} &
+\cross{PACRAT}{0} &
+\cross{PACRAT}{1} &
+\cross{PACRAT}{-?} &
+\cross{PACRAT}{?**?} \\
+\cross{PACRAT}{?*?} &
+\cross{PACRAT}{?+?} &
+\cross{PACRAT}{?-?} &
+\cross{PACRAT}{?/?} \\
+\cross{PACRAT}{?=?} &
+\cross{PACRAT}{?\^{}?} &
+\cross{PACRAT}{?\~{}=?} &
+\cross{PACRAT}{?quo?} \\
+\cross{PACRAT}{?rem?} &
+\cross{PACRAT}{algebraic?} &
+\cross{PACRAT}{associates?} &
+\cross{PACRAT}{characteristic} \\
+\cross{PACRAT}{charthRoot} &
+\cross{PACRAT}{coerce} &
+\cross{PACRAT}{conjugate} &
+\cross{PACRAT}{definingPolynomial} \\
+\cross{PACRAT}{degree} &
+\cross{PACRAT}{dimension} &
+\cross{PACRAT}{discreteLog} &
+\cross{PACRAT}{distinguishedRootsOf} \\
+\cross{PACRAT}{divide} &
+\cross{PACRAT}{euclideanSize} &
+\cross{PACRAT}{expressIdealMember} &
+\cross{PACRAT}{exquo} \\
+\cross{PACRAT}{extDegree} &
+\cross{PACRAT}{extendedEuclidean} &
+\cross{PACRAT}{extensionDegree} &
+\cross{PACRAT}{factor} \\
+\cross{PACRAT}{Frobenius} &
+\cross{PACRAT}{fullOutput} &
+\cross{PACRAT}{gcd} &
+\cross{PACRAT}{gcdPolynomial} \\
+\cross{PACRAT}{ground?} &
+\cross{PACRAT}{hash} &
+\cross{PACRAT}{inGroundField?} &
+\cross{PACRAT}{inv} \\
+\cross{PACRAT}{latex} &
+\cross{PACRAT}{lcm} &
+\cross{PACRAT}{lift} &
+\cross{PACRAT}{maxTower} \\
+\cross{PACRAT}{multiEuclidean} &
+\cross{PACRAT}{newElement} &
+\cross{PACRAT}{one?} &
+\cross{PACRAT}{order} \\
+\cross{PACRAT}{previousTower} &
+\cross{PACRAT}{prime?} &
+\cross{PACRAT}{primeFrobenius} &
+\cross{PACRAT}{principalIdeal} \\
+\cross{PACRAT}{recip} &
+\cross{PACRAT}{reduce} &
+\cross{PACRAT}{retract} &
+\cross{PACRAT}{retractIfCan} \\
+\cross{PACRAT}{sample} &
+\cross{PACRAT}{setTower!} &
+\cross{PACRAT}{sizeLess?} &
+\cross{PACRAT}{squareFree} \\
+\cross{PACRAT}{squareFreePart} &
+\cross{PACRAT}{subtractIfCan} &
+\cross{PACRAT}{transcendenceDegree} &
+\cross{PACRAT}{transcendent?} \\
+\cross{PACRAT}{unit?} &
+\cross{PACRAT}{unitCanonical} &
+\cross{PACRAT}{unitNormal} &
+\cross{PACRAT}{vectorise} \\
+\cross{PACRAT}{zero?} &&&
 \end{tabular}
 
 <<domain PACRAT PseudoAlgebraicClosureOfRationalNumber>>=
@@ -81133,9 +81739,6 @@ PseudoAlgebraicClosureOfRationalNumber:Exports == Implementation where
 "PACRAT" -> "ALIST"
 
 @
-
-
-
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \chapter{Chapter Q}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -123273,6 +123876,7 @@ Note that this code is not included in the generated catdef.spad file.
 <<domain PF PrimeField>>
 <<domain PRIMARR PrimitiveArray>>
 <<domain PRODUCT Product>>
+<<domain PACOFF PseudoAlgebraicClosureOfFiniteField>>
 <<domain PACRAT PseudoAlgebraicClosureOfRationalNumber>>
 
 <<domain QFORM QuadraticForm>> 
diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet
index 76dd014..77487bc 100644
--- a/books/bookvol5.pamphlet
+++ b/books/bookvol5.pamphlet
@@ -24470,6 +24470,7 @@ otherwise the new algebra won't be loaded by the interpreter when needed.
    (|PrimitiveFunctionCategory| . PRIMCAT)
    (|PrincipalIdealDomain| . PID)
    (|PriorityQueueAggregate| . PRQAGG)
+   (|PseudoAlgebraicClosureOfFiniteField| . PACOFF)
    (|PseudoAlgebraicClosureOfFiniteFieldCategory| . PACFFC)
    (|PseudoAlgebraicClosureOfPerfectFieldCategory| . PACPERC)
    (|PseudoAlgebraicClosureOfRationalNumber| . PACRAT)
diff --git a/books/ps/v103pseudoalgebraicclosureoffinitefield.ps b/books/ps/v103pseudoalgebraicclosureoffinitefield.ps
new file mode 100644
index 0000000..26af7aa
--- /dev/null
+++ b/books/ps/v103pseudoalgebraicclosureoffinitefield.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 116 152
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 80 116 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% PACOFF
+gsave
+[ /Rect [ 0 72 72 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 72 108 moveto
+0 108 lineto
+0 72 lineto
+72 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.273 0.733 1.000 nodecolor
+newpath 72 108 moveto
+0 108 lineto
+0 72 lineto
+72 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+8 85.9 moveto 56 (PACOFF) alignedtext
+grestore
+% ALIST
+gsave
+[ /Rect [ 8 0 64 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 64 36 moveto
+8 36 lineto
+8 0 lineto
+64 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.273 0.733 1.000 nodecolor
+newpath 64 36 moveto
+8 36 lineto
+8 0 lineto
+64 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+15.5 13.9 moveto 41 (ALIST) alignedtext
+grestore
+% PACOFF->ALIST
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 36 72 moveto
+36 64 36 55 36 46 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 39.5 46 moveto
+36 36 lineto
+32.5 46 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 39.5 46 moveto
+36 36 lineto
+32.5 46 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 116 152
+end
+restore
+%%EOF
diff --git a/changelog b/changelog
index 5b51908..b17de15 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,8 @@
+20100509 tpd src/axiom-website/patches.html 20100509.02.tpd.patch
+20100509 tpd src/algebra/Makefile test and document PACOFF
+20100509 tpd books/bookvol5 expose PseudoAlgebraicClosureOfFiniteField
+20100509 tpd books/bookvol10.3 add PseudoAlgebraicClosureOfFiniteField
+20100509 tpd books/ps/v103pseudoalgebraicclosureoffinitefield.ps added
 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
diff --git a/src/algebra/Makefile.pamphlet b/src/algebra/Makefile.pamphlet
index 08e33de..2eb7dcd 100644
--- a/src/algebra/Makefile.pamphlet
+++ b/src/algebra/Makefile.pamphlet
@@ -9946,7 +9946,7 @@ 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}/PACRAT.o  \
+  ${OUT}/OVAR.o     ${OUT}/PACOFF.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     \
@@ -11377,8 +11377,30 @@ LAYER16=\
 /*"OVAR" -> {"STRING"; "CHAR"; "SINT"; "OUTFORM"; "PRIMARR"; "A1AGG-"}*/
 /*"OVAR" -> {"ISTRING"; "SRAGG-"; "FLAGG-"; "LNAGG-"; "NNI"; "PI"}*/
 
+"PACOFF" [color="#88FF44",href="bookvol10.3.pdf#nameddest=PACOFF"]
+/*"PACOFF" -> {"PACFFC"; "FFIELDC"; "FPC"; "FIELD"; "EUCDOM"; "PID"}*/
+/*"PACOFF" -> {"GCDDOM"; "INTDOM"; "COMRING"; "RING"; "RNG"; "ABELGRP"}*/
+/*"PACOFF" -> {"CABMON"; "ABELMON"; "ABELSG"; "SETCAT"; "BASTYPE"; "KOERCE"}*/
+/*"PACOFF" -> {"SGROUP"; "MONOID"; "LMODULE"; "BMODULE"; "RMODULE"}*/
+/*"PACOFF" -> {"ALGEBRA"; "MODULE"; "ENTIRER"; "UFD"; "DIVRING"; "CHARNZ"}*/
+/*"PACOFF" -> {"FINITE"; "STEP"; "DIFRING"; "PACPERC"; "XF"; "RETRACT"}*/
+/*"PACOFF" -> {"VSPACE"; "CHARZ"; "ORDSET"; "NNI"; "INT"; "PI"; "VECTOR"}*/
+/*"PACOFF" -> {"IVECTOR"; "IARRAY1"; "VECTCAT-"; "A1AGG-"; "FLAGG-"}*/
+/*"PACOFF" -> {"LNAGG-"; "IXAGG-"; "CLAGG-"; "HOAGG-"; "ORDSET-"; "AGG-"}*/
+/*"PACOFF" -> {"ELTAGG-"; "SETCAT-"; "BASTYPE-"; "MONOID-"; "ABELMON-"}*/
+/*"PACOFF" -> {"SGROUP-"; "SINT"; "LSAGG"; "STAGG"; "URAGG"; "RCAGG"}*/
+/*"PACOFF" -> {"HOAGG"; "AGG"; "TYPE"; "EVALAB"; "IEVALAB"; "LNAGG"; "IXAGG"}*/
+/*"PACOFF" -> {"ELTAGG"; "ELTAB"; "CLAGG"; "KONVERT"; "FLAGG"; "ELAGG"; "OM"}*/
+/*"PACOFF" -> {"LIST"; "ILIST"; "LSAGG-"; "STAGG-"; "ELAGG-"; "URAGG-"}*/
+/*"PACOFF" -> {"RCAGG-"; "UPOLYC"; "POLYCAT"; "PDRING"; "FAMR"; "AMR"}*/
+/*"PACOFF" -> {"FRETRCT"; "FLINEXP"; "LINEXP"; "PATMAB"; "PFECAT"; "DIFEXT"}*/
+/*"PACOFF" -> {"SYMBOL"; "REF"}*
+"PACOFF" -> "ALIST"
+/*"PACOFF" -> {"STRING"; "CHAR"; "OUTFORM"; "PRIMARR"; "ISTRING"; "SRAGG-"}*/
+/*"PACOFF" -> {"INS"; "OINTDOM"; "ORDRING"; "OAGROUP"; "OCAMON"; "OAMON"}*/
+/*"PACOFF" -> {"OASGP"; "CFCAT"; "REAL"; "BOOLEAN"; "OAMONS"}*/
+
 "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"}*/
@@ -15963,6 +15985,21 @@ ${MID}/PACRAT.nrlib/code.o: ${MID}/PACRAT.spad
 	      | ${INTERPSYS} >${TMP}/trace ; \
 	   fi )
 @
+<<newcode>>=
+
+PACOFFDEPS = PACPERC PACFFC FFFACTSE
+
+${MID}/PACOFF.nrlib/code.o: ${MID}/PACOFF.spad
+	@echo P3 making ${MID}/PACOFF.nrlib/code.o from ${MID}/PACOFF.spad
+	@ (cd ${MID} ; \
+	   if [ -z "${NOISE}" ] ; then \
+	    echo -e ")lib ${PACOFFDEPS} \n )co PACOFF.spad" \
+              | ${INTERPSYS} ; \
+           else \
+	    echo -e ")lib ${PACOFFDEPS} \n )co PACOFF.spad" \
+	      | ${INTERPSYS} >${TMP}/trace ; \
+	   fi )
+@
 
 \section{Broken Files}
 These files are Aldor files
@@ -16774,6 +16811,7 @@ SPADHELP=\
  ${HELP}/Permutation.help \
  ${HELP}/Polynomial.help \
  ${HELP}/Product.help \
+ ${HELP}/PseudoAlgebraicClosureOfFiniteField.help \
  ${HELP}/PseudoAlgebraicClosureOfFiniteFieldCategory.help \
  ${HELP}/PseudoAlgebraicClosureOfPerfectFieldCategory.help \
  ${HELP}/PseudoAlgebraicClosureOfRationalNumber.help \
@@ -16924,6 +16962,7 @@ REGRESS= \
  Plot.regress \
  Polynomial.regress \
  Product.regress \
+ PseudoAlgebraicClosureOfFiniteField.regress \
  PseudoAlgebraicClosureOfFiniteFieldCategory.regress \
  PseudoAlgebraicClosureOfPerfectFieldCategory.regress \
  PseudoAlgebraicClosureOfRationalNumber.regress \
@@ -18128,9 +18167,24 @@ ${HELP}/PseudoAlgebraicClosureOfPerfectFieldCategory.help: \
 	@echo "PseudoAlgebraicClosureOfPerfectFieldCategory (PACPERC)" \
            >>${HELPFILE}
 
+${HELP}/PseudoAlgebraicClosureOfFiniteField.help: \
+           ${BOOKS}/bookvol10.3.pamphlet
+	@echo 7938 create PseudoAlgebraicClosureOfFiniteField.help \
+           from ${BOOKS}/bookvol10.3.pamphlet
+	@${TANGLE} -R"PseudoAlgebraicClosureOfFiniteField.help" \
+           ${BOOKS}/bookvol10.3.pamphlet \
+           >${HELP}/PseudoAlgebraicClosureOfFiniteField.help
+	@cp ${HELP}/PseudoAlgebraicClosureOfFiniteField.help \
+           ${HELP}/PACOFF.help
+	@${TANGLE} -R"PseudoAlgebraicClosureOfFiniteField.input" \
+            ${BOOKS}/bookvol10.3.pamphlet \
+            >${INPUT}/PseudoAlgebraicClosureOfFiniteField.input
+	@echo "PseudoAlgebraicClosureOfFiniteField (PACOFF)" \
+           >>${HELPFILE}
+
 ${HELP}/PseudoAlgebraicClosureOfRationalNumber.help: \
            ${BOOKS}/bookvol10.3.pamphlet
-	@echo 7938 create PseudoAlgebraicClosureOfRationalNumber.help \
+	@echo 7939 create PseudoAlgebraicClosureOfRationalNumber.help \
            from ${BOOKS}/bookvol10.3.pamphlet
 	@${TANGLE} -R"PseudoAlgebraicClosureOfRationalNumber.help" \
            ${BOOKS}/bookvol10.3.pamphlet \
@@ -18145,7 +18199,7 @@ ${HELP}/PseudoAlgebraicClosureOfRationalNumber.help: \
 
 ${HELP}/PseudoAlgebraicClosureOfRationalNumberCategory.help: \
            ${BOOKS}/bookvol10.2.pamphlet
-	@echo 7939 create PseudoAlgebraicClosureOfRationalNumberCategory.help \
+	@echo 7940 create PseudoAlgebraicClosureOfRationalNumberCategory.help \
            from ${BOOKS}/bookvol10.2.pamphlet
 	@${TANGLE} -R"PseudoAlgebraicClosureOfRationalNumberCategory.help" \
            ${BOOKS}/bookvol10.2.pamphlet \
@@ -18159,7 +18213,7 @@ ${HELP}/PseudoAlgebraicClosureOfRationalNumberCategory.help: \
            >>${HELPFILE}
 
 ${HELP}/Quaternion.help: ${BOOKS}/bookvol10.3.pamphlet
-	@echo 7940 create Quaternion.help from ${BOOKS}/bookvol10.3.pamphlet
+	@echo 7941 create Quaternion.help from ${BOOKS}/bookvol10.3.pamphlet
 	@${TANGLE} -R"Quaternion.help" ${BOOKS}/bookvol10.3.pamphlet \
            >${HELP}/Quaternion.help
 	@cp ${HELP}/Quaternion.help ${HELP}/QUAT.help
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 197cd9e..26f0d32 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -2677,5 +2677,7 @@ books/bookvol10.3 document and test Interval<br/>
 books/bookvol10.2 fix PseudoAlgebraicClosureOfPerfectFieldCategory<br/>
 <a href="patches/20100509.01.tpd.patch">20100509.01.tpd.patch</a>
 books/bookvol10.3 add PseudoAlgebraicClosureOfRationalNumber<br/>
+<a href="patches/20100509.02.tpd.patch">20100509.02.tpd.patch</a>
+books/bookvol10.3 add PseudoAlgebraicClosureOfFiniteField<br/>
  </body>
 </html>
