diff --git a/books/bookvol10.3.pamphlet b/books/bookvol10.3.pamphlet
index aad79bd..6224668 100644
--- a/books/bookvol10.3.pamphlet
+++ b/books/bookvol10.3.pamphlet
@@ -655,7 +655,7 @@ AffineSpace(dim,K):Exports == Implementation where
     coerce(pt:LIST(K))==
         ^(dim=#pt) => error "Le point n'a pas la bonne dimension"
         ptt:%:= pt
-	ptt
+        ptt
     
 @
 <<AFFSP.dotabb>>=
@@ -22410,7 +22410,7 @@ o )show Divisor
 ++ The following is part of the PAFF package
 Divisor(S:SetCategoryWithDegree):Exports == Implementation where
 
-  PT      ==>  Record(gen:S,exp: Integer)
+  PT      ==> Record(gen:S,exp: Integer)
   INT     ==> Integer
   BOOLEAN ==> Boolean
   LIST    ==> List
@@ -47218,7 +47218,7 @@ InfiniteTuple(S:Type): Exports == Implementation where
 
 @
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\section{domain INFCLSPT InfinitlyClosePoint}
+\section{domain INFCLSPT InfinitlyClosePoint} 
 <<InfinitlyClosePoint.input>>=
 )set break resume
 )sys rm -f InfinitlyClosePoint.output
@@ -47314,28 +47314,26 @@ o )show InfinitlyClosePoint
 ++ Date Last Updated: May 2010 by Tim Daly
 ++ Description: 
 ++ This domain is part of the PAFF package
-InfinitlyClosePoint(K,symb,PolyRing,E,ProjPt,PCS,Plc,DIVISOR,BLMET):_
- Exports == Implementation where
+InfinitlyClosePoint(K,symb,PolyRing,E,ProjPt,PCS,Plc,DIVISOR,BLMET):Exports == Implementation where
   K:Field
   symb: List Symbol
   E:DirectProductCategory(#symb,NonNegativeInteger)
   OV ==> OrderedVariableList(symb)
   PolyRing:  PolynomialCategory(K,E,OV)
 
-  OV2 ==> OrderedVariableList(['X,'Y])
-
-  PCS: LocalPowerSeriesCategory(K)
-  ProjPt:ProjectiveSpaceCategory(K)
-  Plc: PlacesCategory(K,PCS)
-  DIVISOR: DivisorCategory(Plc)
-  BLMET : BlowUpMethodCategory
-
   bls      ==> ['X,'Y]
   BlUpRing ==> DistributedMultivariatePolynomial(bls , K)
   E2       ==> DirectProduct( #bls , NonNegativeInteger )
   outRec   ==> Record(name:Symbol,mult:NonNegativeInteger)
   AFP      ==> AffinePlane(K)
+  OV2      ==> OrderedVariableList( bls )
 
+  PCS: LocalPowerSeriesCategory(K)
+  ProjPt:ProjectiveSpaceCategory(K)
+  Plc: PlacesCategory(K,PCS)
+  DIVISOR: DivisorCategory(Plc)
+  BLMET : BlowUpMethodCategory
+  
   bigoutRecBLQT ==> Record(dominate:ProjPt,_
                        name:Symbol,_
                        mult:NonNegativeInteger,_
@@ -47353,20 +47351,21 @@ InfinitlyClosePoint(K,symb,PolyRing,E,ProjPt,PCS,Plc,DIVISOR,BLMET):_
                        subMultip: NonNegativeInteger,_
                        expD:DIVISOR) 
 
-  representation   ==>  Record(point:ProjPt,
-                               curve:BlUpRing,
-                               localPoint:AFP,
-                               mult:NonNegativeInteger,
-                               chrt:BLMET,
-                               subMultiplicity:NonNegativeInteger,
-                               excpDiv:DIVISOR,
-			       localParam:List(PCS),
-			       actualExtension:K,
-			       symbName:Symbol)
 
+  representation   ==>  Record(point:ProjPt,_
+                               curve:BlUpRing,_
+                               localPoint:AFP,_
+                               mult:NonNegativeInteger,_
+                               chrt:BLMET,_
+                               subMultiplicity:NonNegativeInteger,_
+                               excpDiv:DIVISOR,_
+                               localParam:List(PCS),_
+                               actualExtension:K,_
+                               symbName:Symbol)
+
+
+  Exports == InfinitlyClosePointCategory(K,symb,PolyRing,E,ProjPt,PCS,Plc,DIVISOR,BLMET) with 
 
-  Exports == InfinitlyClosePointCategory(K,symb,PolyRing,E,ProjPt,PCS,_
-                                         Plc,DIVISOR,BLMET) with 
     fullOut: % -> OutputForm
       ++ fullOut(tr) yields a full output of tr (see function fullOutput).
 
@@ -47387,7 +47386,7 @@ InfinitlyClosePoint(K,symb,PolyRing,E,ProjPt,PCS,Plc,DIVISOR,BLMET):_
       d:= degree pol
       lc:= leadingCoefficient pol
       dd: List NonNegativeInteger := entries d
-      ddr:= vector([dd.i for i in 1..#dd | ^(i=nV)])$Vector(NonNegativeInteger)
+      ddr:=vector([dd.i for i in 1..#dd | ^(i=nV)])$Vector(NonNegativeInteger)
       ddre:E2 := directProduct( ddr )$E2
       monomial(lc,ddre)$BlUpRing  + polyRing2BiRing( reductum pol , nV )
 
@@ -47406,8 +47405,7 @@ InfinitlyClosePoint(K,symb,PolyRing,E,ProjPt,PCS,Plc,DIVISOR,BLMET):_
         oo :: OutputForm
       BLMET has BlowUpWithHamburgerNoether => 
         oo2:=  [ pointV(a), symbNameV(a), multV(a), curveV(a), _
-             localPointV(a), chartV(a), subMultV(a), excpDivV(a) ]$bigoutRecHN
-
+              localPointV(a), chartV(a), subMultV(a), excpDivV(a) ]$bigoutRecHN
         oo2 :: OutputForm
 
     fullOutputFlag:Boolean:=false()
@@ -47422,29 +47420,25 @@ InfinitlyClosePoint(K,symb,PolyRing,E,ProjPt,PCS,Plc,DIVISOR,BLMET):_
       oo :: OutputForm
 
     degree(a)==
-      K has PseudoAlgebraicClosureOfPerfectFieldCategory  => _
-        extDegree actualExtensionV a
+      K has PseudoAlgebraicClosureOfPerfectFieldCategory  => extDegree actualExtensionV a
       1
       
-    create(pointA,curveA,localPointA,multA,chartA,subM,excpDivA,atcL,aName)==
-      ([pointA,curveA,localPointA,multA,chartA,subM,excpDivA,_
-        empty()$List(PCS),atcL,aName]$Rep)::%
+    create(pointA,curveA,localPointA,multA,chartA,subM,excpDivA,atcL,aName)==  -- CHH
+      ([pointA,curveA,localPointA,multA,chartA,subM,excpDivA,empty()$List(PCS),atcL,aName]$Rep)::%
 
     create(pointA,curveA)==
       nV := lastNonNul pointA
       localPointA := projPt2affPt(pointA,nV)
       multA:NonNegativeInteger:=0$NonNegativeInteger
       chartA:BLMET 
-      if BLMET has QuadraticTransform then _
-        chartA:=( [0,0, nV] :: List Integer ) :: BLMET 
+      if BLMET has QuadraticTransform then chartA:=( [0,0, nV] :: List Integer ) :: BLMET   -- CHH
       if BLMET has HamburgerNoether then
         chartA := createHN( 0,0,nV,0,0,true,"right")   -- A changer le "right" 
       excpDivA:DIVISOR:= 0$DIVISOR
       actL:K:=definingField pointA
       aName:Symbol:=new(P)$Symbol
       affCurvA : BlUpRing := polyRing2BiRing(curveA,nV)
-      create(pointA,affCurvA,localPointA,multA,chartA,_
-             0$NonNegativeInteger,excpDivA,actL,aName)
+      create(pointA,affCurvA,localPointA,multA,chartA,0$NonNegativeInteger,excpDivA,actL,aName)
       
     subMultV(a:%)== (a:Rep)(subMultiplicity)
 
@@ -47460,7 +47454,7 @@ InfinitlyClosePoint(K,symb,PolyRing,E,ProjPt,PCS,Plc,DIVISOR,BLMET):_
 
     multV(a:%)    ==(a:Rep)(mult)
 
-    chartV(a:%)   ==(a:Rep)(chrt) 
+    chartV(a:%)   ==(a:Rep)(chrt)  -- CHH
 
     excpDivV(a:%) ==(a:Rep)(excpDiv)
 
@@ -47474,15 +47468,16 @@ InfinitlyClosePoint(K,symb,PolyRing,E,ProjPt,PCS,Plc,DIVISOR,BLMET):_
 
     setlocalPoint_!(a:%,n:AFP)  ==(a:Rep)(localPoint):=n
 
-    setmult_!(a:%,n:NonNegativeInteger) ==(a:Rep)(mult):=n
+    setmult_!(a:%,n:NonNegativeInteger)         ==(a:Rep)(mult):=n
 
-    setchart_!(a:%,n:BLMET)  ==(a:Rep)(chrt):=n 
+    setchart_!(a:%,n:BLMET)  ==(a:Rep)(chrt):=n  -- CHH
 
     setlocalParam_!(a:%,n:List(PCS)) ==(a:Rep)(localParam):=n
 
     setexcpDiv_!(a:%,n:DIVISOR) ==(a:Rep)(excpDiv):=n
 
     setsymbName_!(a:%,n:Symbol) ==(a:Rep)(symbName):=n
+
 @
 <<INFCLSPT.dotabb>>=
 "INFCLSPT" [color="#88FF44",href="bookvol10.3.pdf#nameddest=INFCLSPT"]
@@ -47491,6 +47486,145 @@ InfinitlyClosePoint(K,symb,PolyRing,E,ProjPt,PCS,Plc,DIVISOR,BLMET):_
 
 @
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{domain INFCLSPS InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField}
+<<InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField.input>>=
+)set break resume
+)sys rm -f InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField.output
+)spool InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 1
+)show InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField
+--R InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField(K: FiniteFieldCategory,symb: List Symbol,BLMET: BlowUpMethodCategory)  is a domain constructor
+--R Abbreviation for InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField is INFCLSPS 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for INFCLSPS 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?=? : (%,%) -> Boolean                chartV : % -> BLMET
+--R coerce : % -> OutputForm              degree : % -> PositiveInteger
+--R fullOut : % -> OutputForm             fullOutput : () -> Boolean
+--R fullOutput : Boolean -> Boolean       hash : % -> SingleInteger
+--R latex : % -> String                   multV : % -> NonNegativeInteger
+--R setchart! : (%,BLMET) -> BLMET        symbNameV : % -> Symbol
+--R ?~=? : (%,%) -> Boolean              
+--R actualExtensionV : % -> PseudoAlgebraicClosureOfFiniteField K
+--R create : (ProjectivePlaneOverPseudoAlgebraicClosureOfFiniteField K,DistributedMultivariatePolynomial(symb,PseudoAlgebraicClosureOfFiniteField K)) -> %
+--R create : (ProjectivePlaneOverPseudoAlgebraicClosureOfFiniteField K,DistributedMultivariatePolynomial([construct,QUOTEX,QUOTEY],PseudoAlgebraicClosureOfFiniteField K),AffinePlane PseudoAlgebraicClosureOfFiniteField K,NonNegativeInteger,BLMET,NonNegativeInteger,Divisor PlacesOverPseudoAlgebraicClosureOfFiniteField K,PseudoAlgebraicClosureOfFiniteField K,Symbol) -> %
+--R curveV : % -> DistributedMultivariatePolynomial([construct,QUOTEX,QUOTEY],PseudoAlgebraicClosureOfFiniteField K)
+--R excpDivV : % -> Divisor PlacesOverPseudoAlgebraicClosureOfFiniteField K
+--R localParamV : % -> List NeitherSparseOrDensePowerSeries PseudoAlgebraicClosureOfFiniteField K
+--R localPointV : % -> AffinePlane PseudoAlgebraicClosureOfFiniteField K
+--R pointV : % -> ProjectivePlaneOverPseudoAlgebraicClosureOfFiniteField K
+--R setcurve! : (%,DistributedMultivariatePolynomial([construct,QUOTEX,QUOTEY],PseudoAlgebraicClosureOfFiniteField K)) -> DistributedMultivariatePolynomial([construct,QUOTEX,QUOTEY],PseudoAlgebraicClosureOfFiniteField K)
+--R setexcpDiv! : (%,Divisor PlacesOverPseudoAlgebraicClosureOfFiniteField K) -> Divisor PlacesOverPseudoAlgebraicClosureOfFiniteField K
+--R setlocalParam! : (%,List NeitherSparseOrDensePowerSeries PseudoAlgebraicClosureOfFiniteField K) -> List NeitherSparseOrDensePowerSeries PseudoAlgebraicClosureOfFiniteField K
+--R setlocalPoint! : (%,AffinePlane PseudoAlgebraicClosureOfFiniteField K) -> AffinePlane PseudoAlgebraicClosureOfFiniteField K
+--R setmult! : (%,NonNegativeInteger) -> NonNegativeInteger
+--R setpoint! : (%,ProjectivePlaneOverPseudoAlgebraicClosureOfFiniteField K) -> ProjectivePlaneOverPseudoAlgebraicClosureOfFiniteField K
+--R setsubmult! : (%,NonNegativeInteger) -> NonNegativeInteger
+--R setsymbName! : (%,Symbol) -> Symbol
+--R subMultV : % -> NonNegativeInteger
+--R
+--E 1
+
+)spool
+)lisp (bye)
+
+@
+<<InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField.help>>=
+====================================================================
+InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField examples
+====================================================================
+
+See Also:
+o )show InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField
+
+@
+\pagehead{InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField}{INFCLSPS}
+\pagepic{ps/v103infinitlyclosepointoverpseudoalgebraicclosureoffinitefield.eps}{INFCLSPS}{1.00}
+
+{\bf Exports:}\\
+\begin{tabular}{lll}
+\cross{INFCLSPS}{?=?} &
+\cross{INFCLSPS}{?\~{}=?} &
+\cross{INFCLSPS}{actualExtensionV} \\
+\cross{INFCLSPS}{chartV} &
+\cross{INFCLSPS}{coerce} &
+\cross{INFCLSPS}{create} \\
+\cross{INFCLSPS}{curveV} &
+\cross{INFCLSPS}{degree} &
+\cross{INFCLSPS}{excpDivV} \\
+\cross{INFCLSPS}{fullOut} &
+\cross{INFCLSPS}{fullOutput} &
+\cross{INFCLSPS}{hash} \\
+\cross{INFCLSPS}{latex} &
+\cross{INFCLSPS}{localParamV} &
+\cross{INFCLSPS}{localPointV} \\
+\cross{INFCLSPS}{multV} &
+\cross{INFCLSPS}{pointV} &
+\cross{INFCLSPS}{setchart!} \\
+\cross{INFCLSPS}{setcurve!} &
+\cross{INFCLSPS}{setexcpDiv!} &
+\cross{INFCLSPS}{setlocalParam!} \\
+\cross{INFCLSPS}{setlocalPoint!} &
+\cross{INFCLSPS}{setmult!} &
+\cross{INFCLSPS}{setpoint!} \\
+\cross{INFCLSPS}{setsubmult!} &
+\cross{INFCLSPS}{setsymbName!} &
+\cross{INFCLSPS}{subMultV} \\
+\cross{INFCLSPS}{symbNameV} &&
+\end{tabular}
+
+<<domain INFCLSPS InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField>>=
+)abbrev domain INFCLSPS InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField
+++ Authors: Gaetan Hache
+++ Date Created: june 1996 
+++ Date Last Updated: May 2010 by Tim Daly
+++ Description: 
+++ This domain is part of the PAFF package
+InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField(K,symb,BLMET):_
+ Exports == Implementation where
+
+  K:FiniteFieldCategory
+  symb: List Symbol
+  BLMET : BlowUpMethodCategory
+
+  E           ==> DirectProduct(#symb,NonNegativeInteger)
+  KK          ==> PseudoAlgebraicClosureOfFiniteField(K)
+  PolyRing    ==> DistributedMultivariatePolynomial(symb,KK) 
+  ProjPt      ==> ProjectivePlaneOverPseudoAlgebraicClosureOfFiniteField(K)
+  PCS         ==> NeitherSparseOrDensePowerSeries(KK)
+  Plc         ==> PlacesOverPseudoAlgebraicClosureOfFiniteField(K)
+  DIVISOR     ==> Divisor(Plc)
+
+  Exports == InfinitlyClosePointCategory(KK,symb,PolyRing,E,ProjPt,_
+                                         PCS,Plc,DIVISOR,BLMET) with
+  
+    fullOut: % -> OutputForm
+      ++ fullOut(tr) yields a full output of tr (see function fullOutput).
+
+    fullOutput: Boolean -> Boolean
+
+      ++ fullOutput(b) sets a flag such that when true, a coerce to OutputForm
+      ++  yields the full output of tr, otherwise encode(tr) is output 
+      ++ (see encode function). The default is false.
+
+    fullOutput: () -> Boolean
+      ++ fullOutput returns the value of the flag set by fullOutput(b).   
+     
+  Implementation == InfinitlyClosePoint(KK,symb,PolyRing,E,ProjPt,_
+                                        PCS,Plc,DIVISOR,BLMET) 
+@
+<<INFCLSPS.dotabb>>=
+"INFCLSPS" [color="#88FF44",href="bookvol10.3.pdf#nameddest=INFCLSPS"]
+"PROJPLPS" [color="#88FF44",href="bookvol10.3.pdf#nameddest=PROJPLPS"]
+"INFCLSPS" -> "PROJPLPS"
+
+@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \section{domain IAN InnerAlgebraicNumber}
 \pagehead{InnerAlgebraicNumber}{IAN}
 \pagepic{ps/v103inneralgebraicnumber.ps}{IAN}{1.00}
@@ -72879,6 +73013,7 @@ OutputForm(): SetCategory with
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \chapter{Chapter P}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \section{domain PADIC PAdicInteger}
 \pagehead{PAdicInteger}{PADIC}
 \pagepic{ps/v103padicinteger.ps}{PADIC}{1.00}
@@ -79018,10 +79153,10 @@ Plcs(K:Field,PCS:LocalPowerSeriesCategory(K)):Exports == Implementation where
   
   rec ==> Record(theName:nameOfPlace,_
                  locPar: List PCS,_
-		 deg: PositiveInteger,_
-		 isALeaf:Boolean,_
-		 inName:Symbol,_
-		 actualSet:Symbol)
+                 deg: PositiveInteger,_
+                 isALeaf:Boolean,_
+                 inName:Symbol,_
+                  actualSet:Symbol)
   
   Exports ==> PlacesCategory(K,PCS) 
     
@@ -79107,9 +79242,9 @@ Plcs(K:Field,PCS:LocalPowerSeriesCategory(K)):Exports == Implementation where
       fpl:%
       while ^found and  ^empty?(ll) repeat
         fpl:= first ll
-	-- remember: the "=" test is on done on the symbolic name
-	found:= pt.theName = fpl.theName
-	ll:=rest ll
+        -- remember: the "=" test is on done on the symbolic name
+        found:= pt.theName = fpl.theName
+        ll:=rest ll
       ^found => 
         listOfFoundPlaces:=cons(pt,listOfFoundPlaces)
         pt
@@ -83379,6 +83514,345 @@ ProjectiveSpace(dim,K):Exports == Implementation where
 
 @
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{domain PACEXT PseudoAlgebraicClosureOfAlgExtOfRationalNumber}
+<<PseudoAlgebraicClosureOfAlgExtOfRationalNumber.input>>=
+)set break resume
+)sys rm -f PseudoAlgebraicClosureOfAlgExtOfRationalNumber.output
+)spool PseudoAlgebraicClosureOfAlgExtOfRationalNumber.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 1
+)show PseudoAlgebraicClosureOfAlgExtOfRationalNumber
+--E 1
+
+)spool
+)lisp (bye)
+@
+<<PseudoAlgebraicClosureOfAlgExtOfRationalNumber.help>>=
+====================================================================
+PseudoAlgebraicClosureOfAlgExtOfRationalNumber examples
+====================================================================
+
+See Also:
+o )show PseudoAlgebraicClosureOfAlgExtOfRationalNumber
+
+@
+\pagehead{PseudoAlgebraicClosureOfAlgExtOfRationalNumber}{PACEXT}
+\pagepic{ps/v103pseudoalgebraicclosureofalgextofrationalnumber.eps}{PACEXT}{1.00}
+
+{\bf Exports:}\\
+
+<<domain PACEXT PseudoAlgebraicClosureOfAlgExtOfRationalNumber>>=
+)abbrev domain PACEXT PseudoAlgebraicClosureOfAlgExtOfRationalNumber
+-- PseudoAlgebraicClosureOfAlgExtOfRationalNumber
+++ Authors: Gaetan Hache
+++ Date Created: jan 1998
+++ Date Last Updated: May 2010 by Tim Daly
+++ Description: 
+++ This domain implement dynamic extension over the 
+++ PseudoAlgebraicClosureOfRationalNumber. 
+++ 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. 
+PseudoAlgebraicClosureOfAlgExtOfRationalNumber(downLevel:K):Exp == Impl where
+  K       ==> PseudoAlgebraicClosureOfRationalNumber
+  INT     ==> Integer
+  NNI     ==> NonNegativeInteger
+  SUP     ==> SparseUnivariatePolynomial
+  BOOLEAN ==> Boolean
+  PI      ==> PositiveInteger
+  FACTRN  ==> FactorisationOverPseudoAlgebraicClosureOfAlgExtOfRationalNumber
+
+  recRep ==> Record(recEl:SUP(%),_
+                    recTower:SUP(%),_
+                    recDeg:PI,_
+                    recPrevTower:%,_
+                    recName:Symbol) 
+    
+  Exp == PseudoAlgebraicClosureOfAlgExtOfRationalNumberCategory with 
+  
+    fullOutput: % -> OutputForm
+
+    retractToGrn: % -> K 
+  
+  Impl == add
+    Rep := Union(recRep,K)
+    
+    -- signature of local function  
+    replaceRecEl: (%,SUP(%)) -> %
+
+    down: % -> %
+
+    retractPol( pol:SUP(%) ):SUP(K)==
+      zero? pol => 0$SUP(K)
+      lc := leadingCoefficient pol
+      d := degree pol
+      rlc := retractToGrn( lc )
+      monomial( rlc , d )$SUP(K) + retractPol( reductum pol )
+
+    retractToGrn(aa)==
+      aa case K => aa
+      a:=(aa pretend recRep)
+      el:=  a.recEl
+      t:=   a.recTower
+      d:=   a.recDeg * extDegree downLevel
+      pt:=  a.recPrevTower
+      n:= a.recName
+      newElement(retractPol el, retractPol t, d, retractToGrn pt, n)$K
+      
+    newElement(pol,subF,inName)  ==
+        -- 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
+      listCoef: List % := coefficients pol
+      a1:% := inv first listCoef
+      b1:% := last listCoef
+      rr:% := b1*a1
+      one?(dp) =>
+        one?(#listCoef) => 0
+        - rr
+      ground?(pol) => error "Cannot create a new element with a constant"
+      d:PI := (dp pretend PI) * extDegree(subF)
+      [monomial(1$%,1)$SUP(%),pol,d,subF,inName] :: Rep
+
+    coerce(a:Integer):%== (a :: K) 
+    
+    down(a:%) == 
+      a case K => a
+      aa:=(a pretend recRep)
+      elel := aa.recEl
+      ^ground?(elel)$SUP(%) => a
+      gel:%:=ground(elel)
+      down(gel)
+
+    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
+
+    localTower :% := downLevel
+        
+    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        
+
+    retractIfCan(a:%):Union(K,"failed")==
+      a case K => a
+      "failed"
+
+    retractIfCan(a:%):Union(Integer,"failed")==
+      a case K => retractIfCan(a)$K
+      "failed"
+
+    setTower!(a) ==
+      if a case K then
+        localTower := downLevel
+      else
+        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,localTower)$FACTRN(%)
+        listFact:List SUP %  := [pol.fctr for pol in factorList(factorf)]
+        listOfZeros:List(%):=empty()
+        for p in listFact repeat
+          root:=newElement(p, new(E::Symbol)$Symbol)
+          listOfZeros:List(%):=concat([ root ], listOfZeros)
+        listOfZeros
+    
+    1 == 1$K
+
+    0 == 0$K
+      
+    newElement(poll:SUP(%),inName:Symbol)==
+      newElement(poll,localTower,inName)$%
+
+    --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(a:K):% == a       
+               
+    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
+
+    characteristic == characteristic()$K
+
+@
+<<PACEXT.dotabb>>=
+"PACEXT" [color="#88FF44",href="bookvol10.3.pdf#nameddest=PACEXT"];
+"FACTEXT" [color="#FF4488",href="bookvol10.4.pdf#nameddest=FACTEXT"]
+"PACEXT" -> "FACTEXT"
+
+@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \section{domain PACOFF PseudoAlgebraicClosureOfFiniteField}
 <<PseudoAlgebraicClosureOfFiniteField.input>>=
 )set break resume
@@ -83609,9 +84083,9 @@ PseudoAlgebraicClosureOfFiniteField(K):Exports == Implementation where
 
   recRep ==> Record(recEl:SUP(%),_
                     recTower:SUP(%),_
-		    recDeg:PI,_
-		    recPrevTower:%,_
-		    recName:Symbol) 
+                    recDeg:PI,_
+                    recPrevTower:%,_
+                    recName:Symbol) 
     
   Exports == Join(PseudoAlgebraicClosureOfFiniteFieldCategory,_
                   ExtensionField(K)) with 
@@ -83686,7 +84160,6 @@ PseudoAlgebraicClosureOfFiniteField(K):Exports == Implementation where
         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"
@@ -83717,10 +84190,10 @@ PseudoAlgebraicClosureOfFiniteField(K):Exports == Implementation where
       res2:%
       if extDegree(a) = extDegree(b) then
         res1:=   b.recEl +$SUP(%) a.recEl
-	res2:=   replaceRecEl(b,res1)
+        res2:=   replaceRecEl(b,res1)
       else
         res1:=   b.recEl +$SUP(%) monomial(a,0)$SUP(%)
-	res2:= replaceRecEl(b,res1)
+        res2:= replaceRecEl(b,res1)
       down(res2)
          
     a:% * b:% ==
@@ -83730,21 +84203,21 @@ PseudoAlgebraicClosureOfFiniteField(K):Exports == Implementation where
       res2:%
       if extDegree(a) = extDegree(b) then
         res1:=   b.recEl *$SUP(%) a.recEl rem b.recTower
-	res2:=   replaceRecEl(b,res1)
+        res2:=   replaceRecEl(b,res1)
       else
         res1:=   b.recEl *$SUP(%) monomial(a,0)$SUP(%)
-	res2:=  replaceRecEl(b,res1)
+        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)]
+        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)
+        for p in listFact repeat
+          root:=newElement(p, new(D::Symbol)$Symbol)
+          listOfZeros:List(%):=concat([ root ], listOfZeros)
         listOfZeros
     
     random==
@@ -84126,9 +84599,9 @@ PseudoAlgebraicClosureOfRationalNumber:Exports == Implementation where
 
   recRep  ==> Record(recEl:SUP(%),_
                     recTower:SUP(%),_
-		    recDeg:PI,_
-		    recPrevTower:%,_
-		    recName:Symbol) 
+                    recDeg:PI,_
+                    recPrevTower:%,_
+                    recName:Symbol) 
     
   Exports == PseudoAlgebraicClosureOfRationalNumberCategory with 
   
@@ -84228,10 +84701,10 @@ PseudoAlgebraicClosureOfRationalNumber:Exports == Implementation where
       res2:%
       if extDegree(a) = extDegree(b) then
         res1:=   b.recEl +$SUP(%) a.recEl
-	res2:=   replaceRecEl(b,res1)
+        res2:=   replaceRecEl(b,res1)
       else
         res1:=   b.recEl +$SUP(%) monomial(a,0)$SUP(%)
-	res2:= replaceRecEl(b,res1)
+        res2:= replaceRecEl(b,res1)
       down(res2)
          
     a:% * b:% ==
@@ -84241,21 +84714,21 @@ PseudoAlgebraicClosureOfRationalNumber:Exports == Implementation where
       res2:%
       if extDegree(a) = extDegree(b) then
         res1:=   b.recEl *$SUP(%) a.recEl rem b.recTower
-	res2:=   replaceRecEl(b,res1)
+        res2:=   replaceRecEl(b,res1)
       else
         res1:=   b.recEl *$SUP(%) monomial(a,0)$SUP(%)
-	res2:=  replaceRecEl(b,res1)
+        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)]
+        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)
+        for p in listFact repeat
+          root:=newElement(p, new(D::Symbol)$Symbol)
+          listOfZeros:List(%):=concat([ root ], listOfZeros)
         listOfZeros
 
     1 == 1$K
@@ -115615,7 +116088,7 @@ UnivariateTaylorSeriesCZero(Coef,var): Exports == Implementation where
           map(integrate(#1,s),x)
           
       if Coef has TranscendentalFunctionCategory and _
-	 Coef has PrimitiveFunctionCategory and _
+         Coef has PrimitiveFunctionCategory and _
          Coef has AlgebraicallyClosedFunctionSpace Integer then
 
         integrateWithOneAnswer: (Coef,Symbol) -> Coef
@@ -126422,6 +126895,7 @@ Note that this code is not included in the generated catdef.spad file.
 <<domain IVECTOR IndexedVector>>
 <<domain ITUPLE InfiniteTuple>>
 <<domain INFCLSPT InfinitlyClosePoint>>
+<<domain INFCLSPS InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField>>
 <<domain IAN InnerAlgebraicNumber>>
 <<domain IFF InnerFiniteField>>
 <<domain IFAMON InnerFreeAbelianMonoid>>
@@ -126541,6 +127015,7 @@ Note that this code is not included in the generated catdef.spad file.
 <<domain PRODUCT Product>>
 <<domain PROJPL ProjectivePlane>>
 <<domain PROJSP ProjectiveSpace>>
+<<domain PACEXT PseudoAlgebraicClosureOfAlgExtOfRationalNumber>>
 <<domain PACOFF PseudoAlgebraicClosureOfFiniteField>>
 <<domain PACRAT PseudoAlgebraicClosureOfRationalNumber>>
 
diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet
index 7a32396..9020152 100644
--- a/books/bookvol5.pamphlet
+++ b/books/bookvol5.pamphlet
@@ -23978,6 +23978,7 @@ otherwise the new algebra won't be loaded by the interpreter when needed.
    (|InfiniteTupleFunctions2| . ITFUN2)
    (|InfiniteTupleFunctions3| . ITFUN3)
    (|InfinitlyClosePoint| . INFCLSPT)
+   (|InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField| . INFCLSPS)
    (|Infinity| . INFINITY)
    (|Integer| . INT)
    (|IntegerCombinatoricFunctions| . COMBINAT)
@@ -24111,6 +24112,7 @@ otherwise the new algebra won't be loaded by the interpreter when needed.
    (|ProjectivePlane| . PROJPL)
    (|ProjectivePlaneOverPseudoAlgebraicClosureOfFiniteField| . PROJPLPS)
    (|ProjectiveSpace| . PROJSP)
+   (|PseudoAlgebraicClosureOfAlgExtOfRationalNumber| . PACEXT)
    (|QuadraticForm| . QFORM)
    (|QuasiComponentPackage| . QCMPACK)
    (|Quaternion| . QUAT)
diff --git a/books/ps/v103infinitlyclosepointoverpseudoalgebraicclosureoffinitefield.eps b/books/ps/v103infinitlyclosepointoverpseudoalgebraicclosureoffinitefield.eps
new file mode 100644
index 0000000..7de1bfa
--- /dev/null
+++ b/books/ps/v103infinitlyclosepointoverpseudoalgebraicclosureoffinitefield.eps
@@ -0,0 +1,266 @@
+%!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: 1
+%%BoundingBox: 36 36 130 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
+       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 130 152
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 94 116 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% INFCLSPS
+gsave
+[ /Rect [ 1 72 85 108 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=INFCLSPS) >>
+  /Subtype /Link
+/ANN pdfmark
+0.273 0.733 1.000 nodecolor
+newpath 85 108 moveto
+1 108 lineto
+1 72 lineto
+85 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.273 0.733 1.000 nodecolor
+newpath 85 108 moveto
+1 108 lineto
+1 72 lineto
+85 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+9 85.9 moveto 68 (INFCLSPS) alignedtext
+grestore
+% PROJPLPS
+gsave
+[ /Rect [ 0 0 86 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=PROJPLPS) >>
+  /Subtype /Link
+/ANN pdfmark
+0.273 0.733 1.000 nodecolor
+newpath 86 36 moveto
+0 36 lineto
+0 0 lineto
+86 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.273 0.733 1.000 nodecolor
+newpath 86 36 moveto
+0 36 lineto
+0 0 lineto
+86 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+8 13.9 moveto 70 (PROJPLPS) alignedtext
+grestore
+% INFCLSPS->PROJPLPS
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 43 72 moveto
+43 64 43 55 43 46 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 46.5 46 moveto
+43 36 lineto
+39.5 46 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 46.5 46 moveto
+43 36 lineto
+39.5 46 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+end
+restore
+%%EOF
diff --git a/books/ps/v103pseudoalgebraicclosureofalgextofrationalnumber.eps b/books/ps/v103pseudoalgebraicclosureofalgextofrationalnumber.eps
new file mode 100644
index 0000000..2da1c73
--- /dev/null
+++ b/books/ps/v103pseudoalgebraicclosureofalgextofrationalnumber.eps
@@ -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
+% PACEXT
+gsave
+[ /Rect [ 4 72 76 108 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=PACEXT) >>
+  /Subtype /Link
+/ANN pdfmark
+0.273 0.733 1.000 nodecolor
+newpath 76 108 moveto
+4 108 lineto
+4 72 lineto
+76 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.273 0.733 1.000 nodecolor
+newpath 76 108 moveto
+4 108 lineto
+4 72 lineto
+76 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+12 85.9 moveto 56 (PACEXT) alignedtext
+grestore
+% FACTEXT
+gsave
+[ /Rect [ 0 0 80 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.4.pdf#nameddest=FACTEXT) >>
+  /Subtype /Link
+/ANN pdfmark
+0.939 0.733 1.000 nodecolor
+newpath 80 36 moveto
+0 36 lineto
+0 0 lineto
+80 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.939 0.733 1.000 nodecolor
+newpath 80 36 moveto
+0 36 lineto
+0 0 lineto
+80 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+8 13.9 moveto 64 (FACTEXT) alignedtext
+grestore
+% PACEXT->FACTEXT
+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 9e12f8e..46f1457 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,9 @@
+20100520 tpd src/axiom-website/patches.html 20100520.01.tpd.patch
+20100520 tpd src/algebra/Makefile help and test for PACECT, INFCLSPS 
+20100520 tpd books/bookvol5 expose PACECT, INFCLSPS
+20100520 tpd books/bookvol10.3 add PACEXT, INFCLSPS
+20100520 tpd ps/v103pseudoalgebraicclosureofalgextofrationalnumber.eps
+20100520 tpd v103infinitlyclosepointoverpseudoalgebraicclosureoffinitefield.eps
 20100518 tpd src/axiom-website/patches.html 20100518.08.tpd.patch
 20100518 tpd src/algebra/Makefile help and test for InfClsPt
 20100518 tpd books/bookvol5 expose InfClsPt
diff --git a/src/algebra/Makefile.pamphlet b/src/algebra/Makefile.pamphlet
index cac25bd..e05b73e 100644
--- a/src/algebra/Makefile.pamphlet
+++ b/src/algebra/Makefile.pamphlet
@@ -12117,8 +12117,7 @@ LAYER17=\
   ${OUT}/FSPRMELT.o ${OUT}/FSRED.o    ${OUT}/FSUPFACT.o ${OUT}/FSPECF.o   \
   ${OUT}/FS2.o      ${OUT}/FS2UPS.o   ${OUT}/GAUSSFAC.o ${OUT}/GCNAALG.o  \
   ${OUT}/GENUFACT.o ${OUT}/GENUPS.o   ${OUT}/GTSET.o    ${OUT}/GPOLSET.o  \
-  ${OUT}/IAN.o      ${OUT}/INEP.o     ${OUT}/INFCLSPT.o \
-  ${OUT}/INFPROD0.o ${OUT}/INFSP.o    \
+  ${OUT}/IAN.o      ${OUT}/INEP.o     ${OUT}/INFPROD0.o ${OUT}/INFSP.o    \
   ${OUT}/INPRODFF.o ${OUT}/INPRODPF.o ${OUT}/INTAF.o    ${OUT}/INTALG.o   \
   ${OUT}/INTEF.o    ${OUT}/INTG0.o    ${OUT}/INTHERAL.o ${OUT}/INTPAF.o   \
   ${OUT}/INTPM.o    ${OUT}/INTTOOLS.o ${OUT}/ITRIGMNP.o ${OUT}/JORDAN.o   \
@@ -13425,28 +13424,6 @@ LAYER17=\
 /*"INEP" -> {"MONOGEN"; "FRAMALG"; "FINRALG"; "FINITE"; "FFIELDC"}*/
 /*"INEP" -> {"FPC"; "PI"}*/
 
-"INFCLSPT" [color="#88FF44",href="bookvol10.3.pdf#nameddest=INFCLSPT"]
-"INFCLSPT" -> "INFCLCT"
-/*"INFCLSPT" -> {"SETCATD"; "AFFPL"; "SETCAT"; "BASTYPE"; "KOERCE"; "FIELD"}*/
-/*"INFCLSPT" -> {"EUCDOM"; "PID"; "GCDDOM"; "INTDOM"; "COMRING"; "RING"}*/
-/*"INFCLSPT" -> {"RNG"; "ABELGRP"; "CABMON"; "ABELMON"; "ABELSG"; "SGROUP"}*/
-/*"INFCLSPT" -> {"MONOID"; "LMODULE"; "BMODULE"; "RMODULE"; "ALGEBRA"}*/
-/*"INFCLSPT" -> {"MODULE"; "ENTIRER"; "UFD"; "DIVRING"; "POLYCAT"; "PDRING"}*/
-/*"INFCLSPT" -> {"FAMR"; "AMR"; "CHARZ"; "CHARNZ"; "FRETRCT"; "RETRACT"}*/
-/*"INFCLSPT" -> {"EVALAB"; "IEVALAB"; "FLINEXP"; "LINEXP"; "ORDSET"}*/
-/*"INFCLSPT" -> {"KONVERT"; "PATMAB"; "PFECAT"; "DIRPCAT"; "IXAGG"; "HOAGG"}*/
-/*"INFCLSPT" -> {"AGG"; "TYPE"; "ELTAGG"; "ELTAB"; "DIFEXT"; "DIFRING"}*/
-/*"INFCLSPT" -> {"FINITE"; "ORDRING"; "OAGROUP"; "OCAMON"; "OAMON"; "OASGP"}*/
-/*"INFCLSPT" -> {"OAMONS"; "VSPACE"; "PRSPCAT"; "LOCPOWC"; "UPSCAT"; "PSCAT"}*/
-/*"INFCLSPT" -> {"PLACESC"; "DIVCAT"; "FAMONC"; "BLMETCT"; "SINT"; "NNI"}*/
-/*"INFCLSPT" -> {"INT"; "LSAGG"; "STAGG"; "URAGG"; "RCAGG"; "LNAGG"}*/
-/*"INFCLSPT" -> {"CLAGG"; "FLAGG"; "ELAGG"; "OM"; "LIST"; "ILIST"; "LSAGG-"}*/
-/*"INFCLSPT" -> {"STAGG-"; "ELAGG-"; "FLAGG-"; "URAGG-"; "LNAGG-"; "RCAGG-"}*/
-/*"INFCLSPT" -> {"IXAGG-"; "CLAGG-"; "HOAGG-"; "ORDSET-"; "AGG-"; "ELTAGG-"}*/
-/*"INFCLSPT" -> {"SETCAT-"; "BASTYPE-"; "BOOLEAN"; "VECTOR"; "PACPERC"; "PI"}*/
-/*"INFCLSPT" -> {"SYMBOL"; "REF"; "ALIST"; "STRING"; "CHAR"; "OUTFORM"}*/
-/*"INFCLSPT" -> {"PRIMARR"; "A1AGG-"; "ISTRING"; "SRAGG-"}*/
-
 "INFPROD0" [color="#FF4488",href="bookvol10.4.pdf#nameddest=INFPROD0"]
 /*"INFPROD0" -> {"INTDOM"; "COMRING"; "RING"; "RNG"; "ABELGRP"; "CABMON"}*/
 /*"INFPROD0" -> {"ABELMON"; "ABELSG"; "SETCAT"; "BASTYPE"; "KOERCE"}*/
@@ -14809,7 +14786,7 @@ LAYER18=\
   ${OUT}/ESCONT.o   ${OUT}/EXPR.o     ${OUT}/EXPRSOL.o  ${OUT}/EXPR2UPS.o \
   ${OUT}/FACTEXT.o  \
   ${OUT}/FDIV.o     ${OUT}/FSCINT.o   ${OUT}/FSINT.o    ${OUT}/FS2EXPXP.o \
-  ${OUT}/GSERIES.o  ${OUT}/HELLFDIV.o ${OUT}/ICP.o      \
+  ${OUT}/GSERIES.o  ${OUT}/HELLFDIV.o \
   ${OUT}/INVLAPLA.o ${OUT}/IR2F.o     \
   ${OUT}/IRRF2F.o   ${OUT}/LAPLACE.o  ${OUT}/LIMITPS.o  ${OUT}/LODEEF.o   \
   ${OUT}/NODE1.o    ${OUT}/NOTTING.o \
@@ -15123,25 +15100,6 @@ LAYER18=\
 /*"HELLFDIV" -> {"IXAGG"; "HOAGG"; "AGG"; "ELTAGG"; "CLAGG"; "VECTOR"}*/
 /*"HELLFDIV" -> {"IVECTOR"; "IARRAY1"; "INS"; "CFCAT"; "PI"}*/
 
-"ICP" [color="#88FF44",href="bookvol10.3.pdf#nameddest=ICP"]
-/*"ICP" -> {"DIVCAT"; "PROJPL"; "NSDPS"; "DIV"}*/
-"ICP" -> "PLACES"
-"ICP" -> "INFCLSPT"
-/*"ICP" -> {"INFCLCT"; "SETCATD"; "SETCAT"; "BASTYPE"; "KOERCE"; "FIELD"}*/
-/*"ICP" -> {"EUCDOM"; "PID"; "GCDDOM"; "INTDOM"; "COMRING"; "RING"; "RNG"}*/
-/*"ICP" -> {"ABELGRP"; "CABMON"; "ABELMON"; "ABELSG"; "SGROUP"; "MONOID"}*/
-/*"ICP" -> {"LMODULE"; "BMODULE"; "RMODULE"; "ALGEBRA"; "MODULE"; "ENTIRER"}*/
-/*"ICP" -> {"UFD"; "DIVRING"; "LSAGG"; "STAGG"; "URAGG"; "RCAGG"; "HOAGG"}*/
-/*"ICP" -> {"AGG"; "TYPE"; "EVALAB"; "IEVALAB"; "LNAGG"; "IXAGG"; "ELTAGG"}*/
-/*"ICP" -> {"ELTAB"; "CLAGG"; "KONVERT"; "FLAGG"; "ORDSET"; "ELAGG"; "OM"}*/
-/*"ICP" -> {"INT"; "LIST"; "ILIST"; "DIRPCAT"; "FRETRCT"; "RETRACT"}*/
-/*"ICP" -> {"DIFEXT"; "DIFRING"; "PDRING"; "FLINEXP"; "LINEXP"; "FINITE"}*/
-/*"ICP" -> {"ORDRING"; "OAGROUP"; "OCAMON"; "OAMON"; "OASGP"; "OAMONS"}*/
-/*"ICP" -> {"VSPACE"; "PLACESC"; "BLMETCT"; "SYMBOL"; "REF"; "ALIST"}*/
-/*"ICP" -> {"STRING"; "CHAR"; "SINT"; "OUTFORM"; "PRIMARR"; "A1AGG-"}*/
-/*"ICP" -> {"ISTRING"; "SRAGG-"; "FLAGG-"; "LNAGG-"; "LSAGG-"; "STAGG-"}*/
-/*"ICP" -> {"ELAGG-"; "URAGG-"}*/
-
 "INVLAPLA" [color="#FF4488",href="bookvol10.4.pdf#nameddest=INVLAPLA"]
 /*"INVLAPLA" -> {"EUCDOM"; "PID"; "GCDDOM"; "INTDOM"; "COMRING"; "RING"}*/
 /*"INVLAPLA" -> {"RNG"; "ABELGRP"; "CABMON"; "ABELMON"; "ABELSG"; "SETCAT"}*/
@@ -15630,12 +15588,13 @@ LAYER18=\
 
 @
 \subsection{Layer19}
-Depends on: EXPRSOL SFRTCAT\\
+Depends on: EXPRSOL SFRTCAT FACTEXT\\
 Next layer depends on: RECOP
 <<layer19>>=
 
 LAYER19=\
   ${OUT}/IRURPK.o   ${OUT}/LAZM3PK.o  ${OUT}/LEXTRIPK.o ${OUT}/NORMPK.o  \
+  ${OUT}/PACEXT.o   \
   ${OUT}/RECOP.o    ${OUT}/RURPK.o    ${OUT}/SFRGCD.o   ${OUT}/SFQCMPK.o \
   ${OUT}/SNTSCAT.o  ${OUT}/SRDCMPK.o  ${OUT}/SREGSET.o  ${OUT}/ZDSOLVE.o \
   layer19done
@@ -15704,6 +15663,29 @@ LAYER19=\
 /*"NORMPK" -> {"A1AGG-"; "ISTRING"; "NNI"; "BOOLEAN"; "ILIST"}*/
 /*"NORMPK" -> {"LSAGG-"; "STAGG-"}*/
 
+"PACEXT" [color="#88FF44",href="bookvol10.3.pdf#nameddest=PACEXT"]
+/*"PACEXT" -> {"FIELD"; "EUCDOM"; "PID"; "GCDDOM"; "INTDOM"; "COMRING"}*/
+/*"PACEXT" -> {"RING"; "RNG"; "ABELGRP"; "CABMON"; "ABELMON"; "ABELSG"}*/
+/*"PACEXT" -> {"SETCAT"; "BASTYPE"; "KOERCE"; "SGROUP"; "MONOID"; "LMODULE"}*/
+/*"PACEXT" -> {"BMODULE"; "RMODULE"; "ALGEBRA"; "MODULE"; "ENTIRER"; "UFD"}*/
+/*"PACEXT" -> {"DIVRING"; "CHARZ"; "RETRACT"; "XF"; "VSPACE"; "FPC"}*/
+/*"PACEXT" -> {"CHARNZ"; "FINITE"; "PI"; "NNI"; "INT"; "LIST"; "ILIST"}*/
+/*"PACEXT" -> {"LSAGG-"; "STAGG-"; "ELAGG-"; "FLAGG-"; "URAGG-"; "LNAGG-"}*/
+/*"PACEXT" -> {"RCAGG-"; "IXAGG-"; "CLAGG-"; "HOAGG-"; "ORDSET-"; "AGG-"}*/
+/*"PACEXT" -> {"ELTAGG-"; "SETCAT-"; "BASTYPE-"; "LSAGG"; "STAGG"; "URAGG"}*/
+/*"PACEXT" -> {"RCAGG"; "HOAGG"; "AGG"; "TYPE"; "EVALAB"; "IEVALAB"}*/
+/*"PACEXT" -> {"LNAGG"; "IXAGG"; "ELTAGG"; "ELTAB"; "CLAGG"; "KONVERT"}*/
+/*"PACEXT" -> {"FLAGG"; "ORDSET"; "ELAGG"; "OM"; "VECTOR"; "IVECTOR"}*/
+/*"PACEXT" -> {"IARRAY1"; "VECTCAT-"; "A1AGG-"; "UPOLYC"; "POLYCAT"}*/
+/*"PACEXT" -> {"PDRING"; "FAMR"; "AMR"; "FRETRCT"; "FLINEXP"; "LINEXP"}*/
+/*"PACEXT" -> {"PATMAB"; "PFECAT"; "DIFRING"; "DIFEXT"; "STEP"; "SYMBOL"}*/
+/*"PACEXT" -> {"REF"; "ALIST"; "STRING"; "CHAR"; "SINT"; "OUTFORM"}*/
+/*"PACEXT" -> {"PRIMARR"; "ISTRING"; "SRAGG-"; "INS"; "OINTDOM"; "ORDRING"}*/
+/*"PACEXT" -> {"OAGROUP"; "OCAMON"; "OAMON"; "OASGP"; "CFCAT"; "REAL"}*/
+/*"PACEXT" -> {"BOOLEAN"; "QFCAT"; "FEVALAB"; "PATAB"; "FPATMAB"; "PACPERC"}*/
+/*"PACEXT" -> {"PACRATC"; "PACRAT"}*/
+"PACEXT" -> "FACTEXT"
+
 "RECOP" [color="#FF4488",href="bookvol10.4.pdf#nameddest=RECOP"]
 "RECOP" -> "EXPRSOL"     /* by loadlib */
 /*"RECOP" -> {"UFPS"; "UTSSOL"; "ORDSET"; "SETCAT"; "BASTYPE"; "KOERCE"}*/
@@ -15839,7 +15821,7 @@ Next layer depends on: GUESS
 <<layer20>>=
 
 LAYER20=\
-  ${OUT}/GUESS.o \
+  ${OUT}/GUESS.o ${OUT}/INFCLSPT.o \
   layer20done
     
 @
@@ -15875,15 +15857,37 @@ LAYER20=\
 /*"GUESS" -> {"BASTYPE-"; "IVECTOR"; "IARRAY1"; "VECTCAT-"; "IXAGG-"}*/
 /*"GUESS" -> {"RCAGG-"; "CLAGG-"}*/
 
+"INFCLSPT" [color="#88FF44",href="bookvol10.3.pdf#nameddest=INFCLSPT"]
+"INFCLSPT" -> "INFCLCT"
+/*"INFCLSPT" -> {"SETCATD"; "AFFPL"; "SETCAT"; "BASTYPE"; "KOERCE"; "FIELD"}*/
+/*"INFCLSPT" -> {"EUCDOM"; "PID"; "GCDDOM"; "INTDOM"; "COMRING"; "RING"}*/
+/*"INFCLSPT" -> {"RNG"; "ABELGRP"; "CABMON"; "ABELMON"; "ABELSG"; "SGROUP"}*/
+/*"INFCLSPT" -> {"MONOID"; "LMODULE"; "BMODULE"; "RMODULE"; "ALGEBRA"}*/
+/*"INFCLSPT" -> {"MODULE"; "ENTIRER"; "UFD"; "DIVRING"; "POLYCAT"; "PDRING"}*/
+/*"INFCLSPT" -> {"FAMR"; "AMR"; "CHARZ"; "CHARNZ"; "FRETRCT"; "RETRACT"}*/
+/*"INFCLSPT" -> {"EVALAB"; "IEVALAB"; "FLINEXP"; "LINEXP"; "ORDSET"}*/
+/*"INFCLSPT" -> {"KONVERT"; "PATMAB"; "PFECAT"; "DIRPCAT"; "IXAGG"; "HOAGG"}*/
+/*"INFCLSPT" -> {"AGG"; "TYPE"; "ELTAGG"; "ELTAB"; "DIFEXT"; "DIFRING"}*/
+/*"INFCLSPT" -> {"FINITE"; "ORDRING"; "OAGROUP"; "OCAMON"; "OAMON"; "OASGP"}*/
+/*"INFCLSPT" -> {"OAMONS"; "VSPACE"; "PRSPCAT"; "LOCPOWC"; "UPSCAT"; "PSCAT"}*/
+/*"INFCLSPT" -> {"PLACESC"; "DIVCAT"; "FAMONC"; "BLMETCT"; "SINT"; "NNI"}*/
+/*"INFCLSPT" -> {"INT"; "LSAGG"; "STAGG"; "URAGG"; "RCAGG"; "LNAGG"}*/
+/*"INFCLSPT" -> {"CLAGG"; "FLAGG"; "ELAGG"; "OM"; "LIST"; "ILIST"; "LSAGG-"}*/
+/*"INFCLSPT" -> {"STAGG-"; "ELAGG-"; "FLAGG-"; "URAGG-"; "LNAGG-"; "RCAGG-"}*/
+/*"INFCLSPT" -> {"IXAGG-"; "CLAGG-"; "HOAGG-"; "ORDSET-"; "AGG-"; "ELTAGG-"}*/
+/*"INFCLSPT" -> {"SETCAT-"; "BASTYPE-"; "BOOLEAN"; "VECTOR"; "PACPERC"; "PI"}*/
+/*"INFCLSPT" -> {"SYMBOL"; "REF"; "ALIST"; "STRING"; "CHAR"; "OUTFORM"}*/
+/*"INFCLSPT" -> {"PRIMARR"; "A1AGG-"; "ISTRING"; "SRAGG-"}*/
+
 @
 \subsection{Layer21}
 Depends on: GUESS
-Next layer depends on: GUESSF1
+Next layer depends on: GUESSF1 INFCLSPT 
 <<layer21>>=
 
 LAYER21=\
   ${OUT}/GUESSAN.o  ${OUT}/GUESSINT.o ${OUT}/GUESSF1.o  ${OUT}/GUESSP.o \
-  ${OUT}/GUESSUP.o \
+  ${OUT}/GUESSUP.o  ${OUT}/ICP.o      \
   layer21done
 
 @
@@ -15968,13 +15972,32 @@ LAYER21=\
 /*"GUESSUP" -> {"FEVALAB"; "PATAB"; "FPATMAB"; "TYPE"; "FS"; "ES"}*/
 /*"GUESSUP" -> {"GROUP"; "COMBOPC"}*/
 
+"ICP" [color="#88FF44",href="bookvol10.3.pdf#nameddest=ICP"]
+/*"ICP" -> {"DIVCAT"; "PROJPL"; "NSDPS"; "DIV"}*/
+"ICP" -> "PLACES"
+"ICP" -> "INFCLSPT"
+/*"ICP" -> {"INFCLCT"; "SETCATD"; "SETCAT"; "BASTYPE"; "KOERCE"; "FIELD"}*/
+/*"ICP" -> {"EUCDOM"; "PID"; "GCDDOM"; "INTDOM"; "COMRING"; "RING"; "RNG"}*/
+/*"ICP" -> {"ABELGRP"; "CABMON"; "ABELMON"; "ABELSG"; "SGROUP"; "MONOID"}*/
+/*"ICP" -> {"LMODULE"; "BMODULE"; "RMODULE"; "ALGEBRA"; "MODULE"; "ENTIRER"}*/
+/*"ICP" -> {"UFD"; "DIVRING"; "LSAGG"; "STAGG"; "URAGG"; "RCAGG"; "HOAGG"}*/
+/*"ICP" -> {"AGG"; "TYPE"; "EVALAB"; "IEVALAB"; "LNAGG"; "IXAGG"; "ELTAGG"}*/
+/*"ICP" -> {"ELTAB"; "CLAGG"; "KONVERT"; "FLAGG"; "ORDSET"; "ELAGG"; "OM"}*/
+/*"ICP" -> {"INT"; "LIST"; "ILIST"; "DIRPCAT"; "FRETRCT"; "RETRACT"}*/
+/*"ICP" -> {"DIFEXT"; "DIFRING"; "PDRING"; "FLINEXP"; "LINEXP"; "FINITE"}*/
+/*"ICP" -> {"ORDRING"; "OAGROUP"; "OCAMON"; "OAMON"; "OASGP"; "OAMONS"}*/
+/*"ICP" -> {"VSPACE"; "PLACESC"; "BLMETCT"; "SYMBOL"; "REF"; "ALIST"}*/
+/*"ICP" -> {"STRING"; "CHAR"; "SINT"; "OUTFORM"; "PRIMARR"; "A1AGG-"}*/
+/*"ICP" -> {"ISTRING"; "SRAGG-"; "FLAGG-"; "LNAGG-"; "LSAGG-"; "STAGG-"}*/
+/*"ICP" -> {"ELAGG-"; "URAGG-"}*/
+
 @
 \subsection{Layer22}
 Depends on: GUESSF1
 <<layer22>>=
 
 LAYER22=\
-  ${OUT}/GUESSF.o \
+  ${OUT}/GUESSF.o ${OUT}/INFCLSPS.o  \
   layer22done
 
 @
@@ -15998,8 +16021,26 @@ LAYER22=\
 /*"GUESSF" -> {"IEVALAB"; "EVALAB"; "PATAB"; "FPATMAB"; "TYPE"; "FRETRCT"} */
 /*"GUESSF" -> {"GROUP"; "PDRING"; "FLINEXP"} */
 
+"INFCLSPS" [color="#88FF44",href="bookvol10.3.pdf#nameddest=INFCLSPS"]
+"INFCLSPS" -> "PROJPLPS"
+/*"INFCLSPS" -> {"PACOFF"; "NSDPS"; "PLACESPS"; "DIV"; "DIVCAT"; "INFCLCT"}*/
+/*"INFCLSPS" -> {"INFCLSPT"; "SETCATD"; "SETCAT"; "BASTYPE"; "KOERCE"}*/
+/*"INFCLSPS" -> {"PACFFC"; "FFIELDC"; "FPC"; "FIELD"; "EUCDOM"; "PID"}*/
+/*"INFCLSPS" -> {"GCDDOM"; "INTDOM"; "COMRING"; "RING"; "RNG"; "ABELGRP"}*/
+/*"INFCLSPS" -> {"CABMON"; "ABELMON"; "ABELSG"; "SGROUP"; "MONOID"}*/
+/*"INFCLSPS" -> {"LMODULE"; "BMODULE"; "RMODULE"; "ALGEBRA"; "MODULE"}*/
+/*"INFCLSPS" -> {"ENTIRER"; "UFD"; "DIVRING"; "CHARNZ"; "FINITE"; "STEP"}*/
+/*"INFCLSPS" -> {"DIFRING"; "PACPERC"; "LSAGG"; "STAGG"; "URAGG"; "RCAGG"}*/
+/*"INFCLSPS" -> {"HOAGG"; "AGG"; "TYPE"; "EVALAB"; "IEVALAB"; "LNAGG"}*/
+/*"INFCLSPS" -> {"IXAGG"; "ELTAGG"; "ELTAB"; "CLAGG"; "KONVERT"; "FLAGG"}*/
+/*"INFCLSPS" -> {"ORDSET"; "ELAGG"; "OM"; "INT"; "LIST"; "ILIST"; "DIRPCAT"}*/
+/*"INFCLSPS" -> {"FRETRCT"; "RETRACT"; "DIFEXT"; "PDRING"; "FLINEXP"}*/
+/*"INFCLSPS" -> {"LINEXP"; "ORDRING"; "OAGROUP"; "OCAMON"; "OAMON"}*/
+/*"INFCLSPS" -> {"OASGP"; "OAMONS"; "VSPACE"; "PLACESC"; "BLMETCT"}*/
+/*"INFCLSPS" -> {"SYMBOL"; "REF"; "ALIST"; "STRING"; "CHAR"; "SINT"}*/
+/*"INFCLSPS" -> {"OUTFORM"; "PRIMARR"; "A1AGG-"; "ISTRING"; "SRAGG-"}*/
+/*"INFCLSPS" -> {"FLAGG-"; "LNAGG-"; "LSAGG-"; "STAGG-"; "ELAGG-"; "URAGG-"}*/
 
-}
 @
 \subsection{Order}
 The final order of the layers is determined here.
@@ -16374,6 +16415,21 @@ ${MID}/FACTEXT.nrlib/code.o: ${MID}/FACTEXT.spad
 @
 <<newcode>>=
 
+PACEXTDEPS = PACEXTC PACPERC PACRATC PACRAT FACTEXT
+
+${MID}/PACEXT.nrlib/code.o: ${MID}/PACEXT.spad
+	@echo P3 making ${MID}/PACEXT.nrlib/code.o from ${MID}/PACEXT.spad
+	@ (cd ${MID} ; \
+	   if [ -z "${NOISE}" ] ; then \
+	    echo -e ")lib ${PACEXTDEPS} \n )co PACEXT.spad" \
+              | ${INTERPSYS} ; \
+           else \
+	    echo -e ")lib ${PACEXTDEPS} \n )co PACEXT.spad" \
+	      | ${INTERPSYS} >${TMP}/trace ; \
+	   fi )
+@
+<<newcode>>=
+
 LOPDEPS = PACPERC
 
 ${MID}/LOP.nrlib/code.o: ${MID}/LOP.spad
@@ -16688,11 +16744,17 @@ ${MID}/INFCLSPT.nrlib/code.o: ${MID}/INFCLSPT.spad
 	      | ${INTERPSYS} >${TMP}/trace ; \
 	   fi )
 @
-<<newcode>>=
- 
 ICPDEPS = LOCPOWC PRSPCAT DIVCAT BLMETCT PROJPL NSDPS PLACES DIV \
           INFCLCT INFCLSPT SETCATD PLACESC AFFPL
 
+<<newcode>>=
+ 
+ICPDEPS = UTSZ FFSQFR FFFACTSE INTERGB PACPERC PACFFC PACRATC FACTRN \
+               PACRAT PACOFF PACEXTC FACTEXT PACEXT LOP RFP LOCPOWC NSDPS \
+               LISYSER BLMETCT BLQT BLHN PRSPCAT PROJSP PROJPL PROJPLPS \
+               SETCATD AFSPCAT AFFSP AFFPL AFFPLPS DIVCAT DIV PLACESC PLCS \
+               PLACES PLACESPS INFCLCT INFCLSPT
+
 ${MID}/ICP.nrlib/code.o: ${MID}/ICP.spad
 	@echo P3 making ${MID}/ICP.nrlib/code.o from ${MID}/ICP.spad
 	@ (cd ${MID} ; \
@@ -16704,6 +16766,25 @@ ${MID}/ICP.nrlib/code.o: ${MID}/ICP.spad
 	      | ${INTERPSYS} >${TMP}/trace ; \
 	   fi )
 @
+<<newcode>>=
+ 
+INFCLSPSDEPS = UTSZ FFSQFR FFFACTSE INTERGB PACPERC PACFFC PACRATC FACTRN \
+               PACRAT PACOFF PACEXTC FACTEXT PACEXT LOP RFP LOCPOWC NSDPS \
+               LISYSER BLMETCT BLQT BLHN PRSPCAT PROJSP PROJPL PROJPLPS \
+               SETCATD AFSPCAT AFFSP AFFPL AFFPLPS DIVCAT DIV PLACESC PLCS \
+               PLACES PLACESPS INFCLCT INFCLSPT ICP
+
+${MID}/INFCLSPS.nrlib/code.o: ${MID}/INFCLSPS.spad
+	@echo P3 making ${MID}/INFCLSPS.nrlib/code.o from ${MID}/INFCLSPS.spad
+	@ (cd ${MID} ; \
+	   if [ -z "${NOISE}" ] ; then \
+	    echo -e ")lib ${INFCLSPSDEPS} \n )co INFCLSPS.spad" \
+              | ${INTERPSYS} ; \
+           else \
+	    echo -e ")lib ${INFCLSPSDEPS} \n )co INFCLSPS.spad" \
+	      | ${INTERPSYS} >${TMP}/trace ; \
+	   fi )
+@
 
 \section{Broken Files}
 These files are Aldor files
@@ -17470,6 +17551,7 @@ SPADHELP=\
  ${HELP}/InfClsPt.help \
  ${HELP}/InfinitlyClosePoint.help \
  ${HELP}/InfinitlyClosePointCategory.help \
+ ${HELP}/InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField.help \
  ${HELP}/Integer.help \
  ${HELP}/IntegerCombinatoricFunctions.help \
  ${HELP}/IntegerLinearDependence.help \
@@ -17540,6 +17622,7 @@ SPADHELP=\
  ${HELP}/ProjectivePlaneOverPseudoAlgebraicClosureOfFiniteField.help \
  ${HELP}/ProjectiveSpace.help \
  ${HELP}/ProjectiveSpaceCategory.help \
+ ${HELP}/PseudoAlgebraicClosureOfAlgExtOfRationalNumber.help \
  ${HELP}/PseudoAlgebraicClosureOfAlgExtOfRationalNumberCategory.help \
  ${HELP}/PseudoAlgebraicClosureOfFiniteField.help \
  ${HELP}/PseudoAlgebraicClosureOfFiniteFieldCategory.help \
@@ -17664,6 +17747,7 @@ REGRESS= \
  InfClsPt.regress \
  InfinitlyClosePoint.regress \
  InfinitlyClosePointCategory.regress \
+ InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField.regress \
  Integer.regress \
  IntegerCombinatoricFunctions.regress \
  IntegerLinearDependence.regress \
@@ -17720,6 +17804,7 @@ REGRESS= \
  ProjectivePlaneOverPseudoAlgebraicClosureOfFiniteField.regress \
  ProjectiveSpace.regress \
  ProjectiveSpaceCategory.regress \
+ PseudoAlgebraicClosureOfAlgExtOfRationalNumber.regress \
  PseudoAlgebraicClosureOfAlgExtOfRationalNumberCategory.regress \
  PseudoAlgebraicClosureOfFiniteField.regress \
  PseudoAlgebraicClosureOfFiniteFieldCategory.regress \
@@ -18474,8 +18559,28 @@ ${HELP}/InfinitlyClosePointCategory.help: ${BOOKS}/bookvol10.2.pamphlet
            >${INPUT}/InfinitlyClosePointCategory.input
 	@echo "InfinitlyClosePointCategory (INFCLCT)" >>${HELPFILE}
 
+${HELP}/InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField.help: \
+           ${BOOKS}/bookvol10.3.pamphlet
+	@echo 7420 create \
+           InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField.help \
+           from ${BOOKS}/bookvol10.3.pamphlet
+	@${TANGLE} \
+      -R"InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField.help" \
+      ${BOOKS}/bookvol10.3.pamphlet \
+       >${HELP}/InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField.help
+	@cp \
+      ${HELP}/InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField.help \
+      ${HELP}/INFCLSPS.help
+	@${TANGLE} \
+      -R"InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField.input" \
+      ${BOOKS}/bookvol10.3.pamphlet \
+     >${INPUT}/InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField.input
+	@echo \
+      "InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField (INFCLSPS)" \
+      >>${HELPFILE}
+
 ${HELP}/Integer.help: ${BOOKS}/bookvol10.3.pamphlet
-	@echo 7420 create Integer.help from ${BOOKS}/bookvol10.3.pamphlet
+	@echo 7425 create Integer.help from ${BOOKS}/bookvol10.3.pamphlet
 	@${TANGLE} -R"Integer.help" ${BOOKS}/bookvol10.3.pamphlet \
            >${HELP}/Integer.help
 	@cp ${HELP}/Integer.help ${HELP}/INT.help
@@ -19215,6 +19320,26 @@ ${HELP}/ProjectiveSpaceCategory.help: ${BOOKS}/bookvol10.2.pamphlet
           >${INPUT}/ProjectiveSpaceCategory.input
 	@echo "ProjectiveSpaceCategory (PRSPCAT)" >>${HELPFILE}
 
+${HELP}/PseudoAlgebraicClosureOfAlgExtOfRationalNumber.help: \
+            ${BOOKS}/bookvol10.3.pamphlet
+	@echo 7940 create \
+            PseudoAlgebraicClosureOfAlgExtOfRationalNumber.help from \
+            ${BOOKS}/bookvol10.3.pamphlet
+	@${TANGLE} \
+           -R"PseudoAlgebraicClosureOfAlgExtOfRationalNumber.help" \
+           ${BOOKS}/bookvol10.3.pamphlet \
+           >${HELP}/PseudoAlgebraicClosureOfAlgExtOfRationalNumber.help
+	@cp \
+          ${HELP}/PseudoAlgebraicClosureOfAlgExtOfRationalNumber.help \
+           ${HELP}/PACEXT.help
+	@${TANGLE} \
+         -R"PseudoAlgebraicClosureOfAlgExtOfRationalNumber.input" \
+         ${BOOKS}/bookvol10.3.pamphlet \
+         >${INPUT}/PseudoAlgebraicClosureOfAlgExtOfRationalNumber.input
+	@echo \
+           "PseudoAlgebraicClosureOfAlgExtOfRationalNumber (PACEXT)" \
+           >>${HELPFILE}
+
 ${HELP}/PseudoAlgebraicClosureOfAlgExtOfRationalNumberCategory.help: \
             ${BOOKS}/bookvol10.2.pamphlet
 	@echo 7940 create \
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 4aced9c..88170dc 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -2763,5 +2763,7 @@ books/bookvol10.2 add chunk names to final list for INFCLCT<br/>
 books/ps/v103infinitlyclosepoint.eps change to lowercase<br/>
 <a href="patches/20100518.08.tpd.patch">20100518.08.tpd.patch</a>
 books/bookvol10.3 add InfClsPt<br/>
+<a href="patches/20100520.01.tpd.patch">20100520.01.tpd.patch</a>
+books/bookvol10.3 add PACEXT, INFCLSPS<br/>
  </body>
 </html>
