diff --git a/books/bookvol10.4.pamphlet b/books/bookvol10.4.pamphlet
index 6f640e4..6618f7f 100644
--- a/books/bookvol10.4.pamphlet
+++ b/books/bookvol10.4.pamphlet
@@ -11369,6 +11369,504 @@ DegreeReductionPackage(R1, R2): Cat == Capsule where
 
 @
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{package DTP DesingTreePackage}
+<<DesingTreePackage.input>>=
+)set break resume
+)sys rm -f DesingTreePackage.output
+)spool DesingTreePackage.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 1
+)show DesingTreePackage
+--R DesingTreePackage(K: Field,symb: List Symbol,PolyRing: PolynomialCategory(K,E,OrderedVariableList symb),E: DirectProductCategory(# symb,NonNegativeInteger),ProjPt: ProjectiveSpaceCategory K,PCS: LocalPowerSeriesCategory K,Plc: PlacesCategory(K,PCS),DIVISOR: DivisorCategory Plc,InfClsPoint: InfinitlyClosePointCategory(K,symb,PolyRing,E,ProjPt,PCS,Plc,DIVISOR,BLMET),DesTree: DesingTreeCategory InfClsPoint,BLMET: BlowUpMethodCategory)  is a package constructor
+--R Abbreviation for DesingTreePackage is DTP 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.4.pamphlet to see algebra source code for DTP 
+--R
+--R------------------------------- Operations --------------------------------
+--R fullParamInit : DesTree -> Void       genusNeg : PolyRing -> Integer
+--R initParLocLeaves : DesTree -> Void   
+--R adjunctionDivisor : DesTree -> DIVISOR
+--R blowUp : InfClsPoint -> List InfClsPoint
+--R blowUpWithExcpDiv : DesTree -> Void
+--R desingTree : PolyRing -> List DesTree
+--R desingTreeAtPoint : (ProjPt,PolyRing) -> DesTree
+--R divisorAtDesingTree : (PolyRing,DesTree) -> DIVISOR
+--R genus : PolyRing -> NonNegativeInteger
+--R genusTree : (NonNegativeInteger,List DesTree) -> NonNegativeInteger
+--R genusTreeNeg : (NonNegativeInteger,List DesTree) -> Integer
+--R inBetweenExcpDiv : DesTree -> DIVISOR
+--R initializeParamOfPlaces : DesTree -> Void
+--R initializeParamOfPlaces : (DesTree,List PolyRing) -> Void
+--R
+--E 1
+
+)spool
+)lisp (bye)
+@
+<<DesingTreePackage.help>>=
+====================================================================
+DesingTreePackage examples
+====================================================================
+
+See Also:
+o )show DesingTreePackage
+
+@
+\pagehead{DesingTreePackage}{DTP}
+\pagepic{ps/v104desingtreepackage.eps}{DTP}{1.00}
+
+{\bf Exports:}\\
+\begin{tabular}{lll}
+\cross{DTP}{adjunctionDivisor} &
+\cross{DTP}{blowUp} &
+\cross{DTP}{blowUpWithExcpDiv} \\
+\cross{DTP}{desingTree} &
+\cross{DTP}{desingTreeAtPoint} &
+\cross{DTP}{divisorAtDesingTree} \\
+\cross{DTP}{fullParamInit} &
+\cross{DTP}{genus} &
+\cross{DTP}{genusNeg} \\
+\cross{DTP}{genusTree} &
+\cross{DTP}{genusTreeNeg} &
+\cross{DTP}{inBetweenExcpDiv} \\
+\cross{DTP}{initParLocLeaves} &
+\cross{DTP}{initializeParamOfPlaces} &
+\end{tabular}
+
+<<package DTP DesingTreePackage>>=
+)abbreviation package DTP DesingTreePackage
+++ Author: Gaetan Hache
+++ Date Created: 17 nov 1992
+++ Date Last Updated: 31 jan 95
+++ Keywords:
+++ Description:  The following is all the categories, domains and package
+++ used for the desingularisation be means of 
+++ monoidal transformation (Blowing-up)
+DesingTreePackage(K,
+                  symb,
+                  PolyRing,
+                  E,
+                  ProjPt,
+                  PCS,
+                  Plc,
+                  DIVISOR,
+                  InfClsPoint,
+                  DesTree,
+                  BLMET
+                   ):Exports == Implementation where
+  K:Field
+  symb: List(Symbol)
+
+  OV ==> OrderedVariableList(symb)
+  
+  E           : DirectProductCategory(#symb,NonNegativeInteger)
+  PolyRing    : PolynomialCategory(K,E,OV)
+  ProjPt      : ProjectiveSpaceCategory(K)
+  PCS         : LocalPowerSeriesCategory(K)
+  Plc         : PlacesCategory(K,PCS)
+  DIVISOR     : DivisorCategory(Plc)
+
+  bls      ==> ['X,'Y]
+  BlUpRing ==> DistributedMultivariatePolynomial( bls , K)
+  E2       ==> DirectProduct( #bls , NonNegativeInteger )
+  AFP      ==> AffinePlane(K)
+  OV2      ==> OrderedVariableList( bls )
+  PI       ==> PositiveInteger
+  INT      ==> Integer
+  NNI      ==> NonNegativeInteger
+  LPARSPT  ==> LocalParametrizationOfSimplePointPackage
+  PARAMP   ==> ParametrizationPackage
+  PRALGPK  ==> ProjectiveAlgebraicSetPackage
+
+
+  InfClsPoint : InfinitlyClosePointCategory(K,symb,PolyRing,E,ProjPt,_
+                                            PCS,Plc,DIVISOR,BLMET)
+  DesTree     : DesingTreeCategory(InfClsPoint)
+  BLMET       : BlowUpMethodCategory
+  
+  PackPoly    ==> PackageForPoly(K,PolyRing,E,#symb)
+  PACKBL      ==> PackageForPoly( K , BlUpRing , E2 , #bls )
+  NP          ==> NewtonPolygon(K,BlUpRing,E2,#bls)
+  PPFC1       ==> PolynomialPackageForCurve(K,PolyRing,E,#symb,ProjPt)
+  PPFC2       ==> BlowUpPackage(K,symb,PolyRing,E, BLMET) 
+  ParamPackFC ==> LPARSPT(K,symb,PolyRing,E,ProjPt,PCS,Plc)
+  ParamPack   ==> PARAMP(K,symb,PolyRing,E,ProjPt,PCS,Plc)
+  PrjAlgPack  ==>  PRALGPK(K,symb,PolyRing,E,ProjPt)
+
+  Exports ==>  with
+
+    blowUp: InfClsPoint ->  List InfClsPoint    
+
+    divisorAtDesingTree: (PolyRing,DesTree) -> DIVISOR
+      ++ divisorAtDesingTree(f,tr) computes the local 
+      ++ divisor of f at a desingularisation tree tr of
+      ++ a singular point.
+
+    adjunctionDivisor: DesTree -> DIVISOR
+      ++ adjunctionDivisor(tr) compute the local 
+      ++ adjunction divisor of a desingularisation tree tr of
+      ++ a singular point.
+
+    blowUpWithExcpDiv: DesTree -> Void -- DesTree
+
+    desingTreeAtPoint: (ProjPt,PolyRing) -> DesTree
+      ++ desingTreeAtPoint(pt,pol) computes 
+      ++ the desingularisation tree at the point pt
+      ++ on the curve defined by pol. 
+      ++ This function recursively compute the tree. 
+    
+    desingTree: PolyRing -> List DesTree
+      ++ desingTree(pol) returns all the desingularisation 
+      ++ trees of all singular points on the curve
+      ++ defined by pol.
+
+    fullParamInit: DesTree -> Void
+      ++ fullParamInit(tr) initialize the local 
+      ++ parametrization at all places (leaves of tr),
+      ++ computes the local exceptional divisor 
+      ++ at each infinytly close points in the tree.
+      ++ This function is equivalent to the following called: 
+      ++ initParLocLeaves(tr)
+      ++ initializeParamOfPlaces(tr)
+      ++ blowUpWithExcpDiv(tr) 
+
+    initParLocLeaves:  DesTree -> Void
+      ++ initParLocLeaves(tr) initialize the local 
+      ++ parametrization at simple points corresponding to
+      ++ the leaves of tr.
+
+    initializeParamOfPlaces: DesTree -> Void
+      ++ initParLocLeaves(tr) initialize the local 
+      ++ parametrization at places corresponding to
+      ++ the leaves of tr.
+
+    initializeParamOfPlaces: (DesTree,List PolyRing) -> Void
+      ++ initParLocLeaves(tr,listOfFnc) initialize 
+      ++ the local parametrization at places corresponding to
+      ++ the leaves of tr according to the given 
+      ++ list of functions in listOfFnc.
+
+    genus: PolyRing -> NNI
+      ++ genus(pol) computes the genus of the curve defined by pol.
+
+    genusNeg: PolyRing -> INT
+      ++ genusNeg(pol) computes the "genus" of a curve 
+      ++ that may be not absolutly irreducible. 
+      ++ A "negative" genus means that
+      ++ the curve is reducible !!.
+
+    genusTree: (NNI,List(DesTree)) -> NNI
+      ++ genusTree(n,listOfTrees) computes the genus of a curve, 
+      ++ where n is the degree of a  polynomial pol
+      ++ defining the curve and listOfTrees is all 
+      ++ the desingularisation trees at all singular points
+      ++ on the curve defined by pol.
+
+    inBetweenExcpDiv: DesTree -> DIVISOR
+
+    genusTreeNeg: (NNI,List(DesTree)) -> INT
+      ++ genusTreeNeg(n,listOfTrees)  computes the "genus" 
+      ++ of a curve that may be not absolutly irreducible, 
+      ++ where n is the degree of a  polynomial pol
+      ++ defining the curve and listOfTrees is all the 
+      ++ desingularisation trees at all singular points
+      ++ on the curve defined by pol.
+      ++ A "negative" genus means that
+      ++ the curve is reducible !!.
+
+  Implementation ==>  add
+    import PackPoly
+    import PPFC1
+    import PPFC2
+    import PolyRing
+    import DesTree
+
+    divisorAtDesingTreeLocal: (BlUpRing , DesTree ) -> DIVISOR
+
+    polyRingToBlUpRing: (PolyRing, BLMET) -> BlUpRing
+
+    makeMono: DesTree -> BlUpRing
+      
+    inBetweenExcpDiv( tr )== 
+      -- trouve le diviseur excp. d'un pt inf voisin PRECEDENT !
+      -- qV est egal a : 1 +  nombre de fois que ce point est repete 
+      -- dans un chaine (le plus un correspond au point d'origine du
+      -- point dont il est question ici.
+      -- mp est la multiciplicite du point.
+      -- cette fonction n'est et ne peut etre qu'utiliser pour 
+      -- calculer le diviseur d'adjonction ( a cause du mp -1).      
+      noeud:= value tr
+      chart:= chartV noeud
+      qV:= quotValuation chart 
+      one? qV => 0$DIVISOR
+      expDiv := divisorAtDesingTreeLocal(makeMono(tr),tr)
+      mp:= degree expDiv
+      ((qV - 1) * (mp -1)) *$DIVISOR expDiv
+    
+    polyRingToBlUpRing(pol,chart)==
+      zero? pol => 0
+      lc:= leadingCoefficient pol
+      d:=entries degree pol
+      ll:= [ d.i for i in 1..3 | ^( i = chartCoord(chart) ) ]
+      e:= directProduct( vector( ll)$Vector(NNI) )$E2
+      monomial(lc , e )$BlUpRing + polyRingToBlUpRing( reductum pol, chart )
+
+    affToProj(pt:AFP, chart:BLMET ):ProjPt==
+      nV:= chartCoord chart
+      d:List(K) := list(pt)$AFP
+      ll:List K:= 
+        nV = 1 => [ 1$K , d.1  , d.2 ]
+        nV = 2 => [ d.1  , 01$K , d.2 ]
+        [d.1 , d.2 , 1 ]
+      projectivePoint( ll )$ProjPt
+
+    biringToPolyRing: (BlUpRing, BLMET) -> PolyRing
+
+    biringToPolyRing(pol,chart)==
+      zero? pol => 0
+      lc:= leadingCoefficient pol
+      d:=entries degree pol
+      nV:= chartCoord chart
+      ll:List NNI:= 
+        nV = 1 => [ 0$NNI , d.1  , d.2 ]
+        nV = 2 => [ d.1  , 0$NNI , d.2 ]
+        [d.1 , d.2 , 0$NNI ]
+      e:= directProduct( vector( ll)$Vector(NNI) )$E
+      monomial(lc , e )$PolyRing  + biringToPolyRing( reductum pol, chart )
+
+    minus  : (NNI,NNI) -> NNI
+
+    minus(a,b)==
+        d:=subtractIfCan(a,b)
+        d case "failed" => error "cannot substract a-b if b>a for NNI"
+        d
+      
+    -- returns the exceptional coordinate function
+
+    makeExcpDiv: List DesTree -> DIVISOR
+
+    desingTreeAtPointLocal: InfClsPoint  -> DesTree
+
+    subGenus: DesTree -> NNI
+    
+    lVar:List PolyRing := _
+      [monomial(1,index(i pretend PI)$OV,1)$PolyRing for i in 1..#symb]
+
+    divisorAtDesingTreeLocal(pol,tr)==
+      --  BLMET has QuadraticTransform ; marche aussi avec 
+      -- Hamburger-Noether mais surement moins efficace
+      noeud:=value(tr)
+      pt:=localPointV(noeud)
+      chart:= chartV noeud
+      -- ram:= ramifMult chart -- ???
+      -- new way to compute in order not to translate twice pol
+      polTrans:BlUpRing:=translate(pol,list(pt)$AFP)$PACKBL
+      multPol:=degreeOfMinimalForm(polTrans)
+      chtr:=children(tr)
+      parPol:PCS
+      ord:Integer
+      empty?(chtr) =>
+        parPol:=parametrize(biringToPolyRing(pol,chartV(noeud))_
+                            ,localParamV(noeud))$ParamPack
+        ord:=order(parPol)$PCS
+        ord * excpDivV(noeud)  -- Note: le div excp est une fois la place.
+      (multPol *$DIVISOR excpDivV(noeud)) +$DIVISOR _
+         reduce("+",[divisorAtDesingTreeLocal(_
+                      quadTransform(polTrans,multPol,(chartV(value(child)))),_
+                        child)_
+                          for child in chtr])
+
+    desingTreeAtPointLocal(ipt) ==
+      -- crb:PolyRing,pt:ProjPt,lstnV:List(INT),origPoint:ProjPt,actL:K)==
+      -- peut etre est-il preferable, avant d'eclater, de tester
+      -- si le point est simple avec les derives, et non
+      -- verifier si le point est simple ou non apres translation. 
+      -- ???? 
+      blbl:=blowUp ipt
+      multPt:=multV ipt
+      one?(multPt) =>
+        tree( ipt )$DesTree
+      subTree:List DesTree:= [desingTreeAtPointLocal( iipt )  for iipt in blbl]
+      tree( ipt, subTree )$DesTree
+
+    blowUp(ipt)==
+      crb:=curveV ipt
+      pt:= localPointV ipt
+      lstnV := chartV ipt   -- CHH  no modif needed
+      actL:= actualExtensionV ipt
+      origPoint:= pointV ipt
+      blbl:=stepBlowUp(crb,pt,lstnV,actL) -- CHH no modif needed
+      multPt:=blbl.mult
+      sm:= blbl.subMult
+      -- la multiplicite et la frontiere du polygone de Newton (ou la forme 
+      -- minimale selon BLMET) du point ipt est assigne par effet de bord !
+      setmult!(ipt,multPt)
+      setsubmult!(ipt, sm)
+      one?(multPt) => empty()
+      [create(origPoint,_
+              rec(recTransStr),_
+              rec(recPoint) ,_
+              0,_
+              rec(recChart),_
+              0,
+              0$DIVISOR,_
+              rec(definingExtension),_ 
+              new(I)$Symbol )$InfClsPoint  for rec in blbl.blUpRec] 
+            
+    makeMono(arb)==
+      monomial(1,index(excepCoord(chartV(value(arb))) pretend PI)$OV2,_
+                  1)$BlUpRing 
+
+    makeExcpDiv(lstSsArb)==
+      reduce("+", _
+         [divisorAtDesingTreeLocal(makeMono(arb),arb) for arb in lstSsArb],0)
+
+    adjunctionDivisorForQuadTrans: DesTree -> DIVISOR
+    adjunctionDivisorForHamburgeNoether: DesTree -> DIVISOR
+
+    adjunctionDivisor( tr )==
+      BLMET has QuadraticTransform => adjunctionDivisorForQuadTrans( tr )
+      BLMET has HamburgerNoether =>   adjunctionDivisorForHamburgeNoether( tr )
+      error _
+       " The algorithm to compute the adjunction divisor is not defined for the blowing method you have chosen"
+
+    adjunctionDivisorForHamburgeNoether( tr )==
+      noeud:=value tr
+      chtr:= children tr
+      empty?(chtr) => 0$DIVISOR  -- on suppose qu'un noeud sans feuille 
+                                 -- est une feulle, donc non singulier. !
+      multPt:= multV noeud
+      ( minus(multPt,1)  pretend INT)  *$DIVISOR excpDivV(noeud) +$DIVISOR _
+         reduce("+",[inBetweenExcpDiv( arb ) for arb in chtr ]) +$DIVISOR _ 
+         reduce("+",[adjunctionDivisorForHamburgeNoether(arb) for arb in chtr])
+
+    adjunctionDivisorForQuadTrans(tr)==
+      noeud:=value(tr)
+      chtr:=children(tr)
+      empty?(chtr) => 0$DIVISOR 
+      multPt:=multV(noeud)
+      ( minus(multPt,1)  pretend INT)  *$DIVISOR excpDivV(noeud) +$DIVISOR _
+          reduce("+",[adjunctionDivisorForQuadTrans(child) for child in chtr])
+
+    divisorAtDesingTree( pol , tr)==
+      chart:= chartV value(tr)
+      pp:= polyRingToBlUpRing( pol, chart )
+      divisorAtDesingTreeLocal( pp, tr ) 
+      
+    subGenus(tr)==
+      noeud:=value tr
+      mult:=multV(noeud)
+      chart := chartV noeud
+      empty?(chdr:=children(tr)) => 0     -- degree(noeud)* mult* minus(mult,1)
+      degree(noeud)* ( mult*minus( mult, 1 ) + subMultV( noeud ) ) + 
+          reduce("+",[subGenus(ch) for ch in chdr])
+      
+    initializeParamOfPlaces(tr,lpol)==
+      noeud:=value(tr)
+      pt:=localPointV(noeud)
+      crb:=curveV(noeud)
+      chart:=chartV(noeud) -- CHH
+      nV:INT:=chartCoord chart 
+      chtr:List DesTree:=children(tr)
+      plc:Plc
+      lParam:List PCS
+      dd:PositiveInteger:=degree noeud
+      lcoef:List K
+      lll:Integer
+      lParInf:List(PCS)
+      lpar:List PCS
+      empty?(chtr) =>
+        lPar:=localParamOfSimplePt( affToProj(pt, chart) , _
+                               biringToPolyRing(crb, chart),nV)$ParamPackFC
+        setlocalParam!(noeud,lPar)
+        lParam:=[parametrize( f , lPar)$ParamPack for f in lpol]
+        plc:= create( symbNameV(noeud) )$Plc
+        setParam!(plc,lParam)
+        setDegree!(plc,dd)
+        itsALeaf!(plc)
+        setexcpDiv!(noeud, plc :: DIVISOR )
+        void()
+      lpolTrans:List PolyRing:=_
+        [translateToOrigin( pol, affToProj(pt, chart) , nV) for pol in lpol]
+      lpolBlUp:List PolyRing
+      chartBl:BLMET
+      for arb in chtr repeat
+        chartBl:=chartV value arb  
+        lpolBlUp:=[applyTransform(pol,chartBl) for pol in lpolTrans]
+        initializeParamOfPlaces(arb,lpolBlUp)
+      void()
+      
+    blowUpWithExcpDiv(tr:DesTree)==
+      noeud:=value(tr)
+      pt:=localPointV(noeud)
+      crb:=curveV(noeud)
+      chtr:List DesTree:=children(tr)
+      empty?(chtr) => void() -- tr
+      for arb in chtr repeat 
+        blowUpWithExcpDiv(arb) 
+      setexcpDiv!(noeud,makeExcpDiv( chtr  ))
+      void()
+
+    fullParamInit(tr)==
+      initializeParamOfPlaces(tr)
+      blowUpWithExcpDiv(tr)
+      void()
+
+    initializeParamOfPlaces(tr)==initializeParamOfPlaces(tr,lVar)
+
+    desingTreeAtPoint(pt,crb)==
+      ipt:= create(pt,crb)$InfClsPoint
+      desingTreeAtPointLocal ipt
+
+    genus(crb)==
+      if BLMET has HamburgerNoether then _
+         print(("  BUG BUG corige le bug GH ---- ")::OutputForm)
+      degCrb:=totalDegree(crb)$PackPoly
+      genusTree(degCrb,desingTree(crb))
+
+    genusNeg(crb)==
+      degCrb:=totalDegree(crb)$PackPoly
+      genusTreeNeg(degCrb,desingTree(crb))
+
+    desingTree(crb)==
+      [desingTreeAtPoint(pt,crb) for pt in singularPoints(crb)$PrjAlgPack]
+
+    genusTree(degCrb,listArbDes)==
+      -- le test suivant est necessaire 
+      -- ( meme s'il n'y a pas de point singulier dans ce cas)
+      -- car avec sousNNI on ne peut retourner un entier negatif
+      (degCrb <$NNI 3::NNI) and ^empty?(listArbDes) =>
+        print(("Too many infinitly near points")::OutputForm)
+        print(("The curve may not be absolutely irreducible")::OutputForm)
+        error "Have a nice day"
+      (degCrb <$NNI 3::NNI)  => 0
+      ga:= ( minus(degCrb,1)*minus(degCrb ,2) ) quo$NNI 2
+      empty?(listArbDes) => ga
+      --calcul du nombre de double point
+      dp:= reduce("+",[subGenus(arbD) for arbD in listArbDes]) quo$NNI 2
+      (dp >$NNI ga) =>
+        print(("Too many infinitly near points")::OutputForm)
+        print(("The curve may not be absolutely irreducible")::OutputForm)
+        error "Have a nice day"
+      minus(ga,dp)
+
+    genusTreeNeg(degCrb,listArbDes)==
+      -- (degCrb <$NNI 3::NNI) => 0
+      ga:= (degCrb-1)*(degCrb-2) quo$INT 2
+      empty?(listArbDes) => ga 
+      ga-( reduce("+",[subGenus(arbD) for arbD in listArbDes]) quo$NNI 2)::INT
+
+@
+<<DTP.dotabb>>=
+"DTP" [color="#FF4488",href="bookvol10.4.pdf#nameddest=DTP"]
+"INFCLCT" [color="#4488FF",href="bookvol10.2.pdf#nameddest=INFCLCT"]
+"DTP" -> "INFCLCT"
+
+@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \section{package DIOSP DiophantineSolutionPackage}
 \pagehead{DiophantineSolutionPackage}{DIOSP}
 \pagepic{ps/v104diophantinesolutionpackage.ps}{DIOSP}{1.00}
@@ -121856,6 +122354,134 @@ ParametricSurfaceFunctions2(CF1: Type, CF2:Type): with
 
 @
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{package PARAMP ParametrizationPackage}
+<<ParametrizationPackage.input>>=
+)set break resume
+)sys rm -f ParametrizationPackage.output
+)spool ParametrizationPackage.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 1
+)show ParametrizationPackage
+--R ParametrizationPackage(K: Field,symb: List Symbol,PolyRing: PolynomialCategory(K,E,OrderedVariableList symb),E: DirectProductCategory(# symb,NonNegativeInteger),ProjPt: ProjectiveSpaceCategory K,PCS: LocalPowerSeriesCategory K,Plc: PlacesCategory(K,PCS))  is a package constructor
+--R Abbreviation for ParametrizationPackage is PARAMP 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.4.pamphlet to see algebra source code for PARAMP 
+--R
+--R------------------------------- Operations --------------------------------
+--R parametrize : (PolyRing,List PCS) -> PCS
+--R parametrize : (PolyRing,Plc) -> PCS
+--R parametrize : (PolyRing,PolyRing,Plc) -> PCS
+--R parametrize : (PolyRing,Plc,Integer) -> PCS
+--R
+--E 1
+
+)spool
+)lisp (bye)
+@
+<<ParametrizationPackage.help>>=
+====================================================================
+ParametrizationPackage examples
+====================================================================
+
+See Also:
+o )show ParametrizationPackage
+
+@
+\pagehead{ParametrizationPackage}{PARAMP}
+\pagepic{ps/v104parametrizationpackage.eps}{PARAMP}{1.00}
+
+{\bf Exports:}\\
+\cross{PARAMP}{parametrize}
+
+<<package PARAMP ParametrizationPackage>>=
+)abbreviation package PARAMP ParametrizationPackage
+++ Author: Gaetan Hache
+++ Date Created: 17 nov 1992
+++ Date Last Updated: May 2010 by Tim Daly
+++ Description:  
+++ The following is part of the PAFF package
+ParametrizationPackage(K,symb,PolyRing,E,ProjPt,PCS,Plc):Exp == Impl where
+  K:Field
+  symb: List(Symbol)
+
+  E : DirectProductCategory(#symb,NonNegativeInteger)
+  OV  ==> OrderedVariableList(symb)
+  
+  PolyRing : PolynomialCategory(K,E,OV)
+  ProjPt   : ProjectiveSpaceCategory(K)
+  PCS      : LocalPowerSeriesCategory(K)
+  Plc      : PlacesCategory(K,PCS)
+
+  Exp ==>  with
+
+    parametrize: (PolyRing,List(PCS)) -> PCS
+
+    parametrize: (PolyRing,Plc) -> PCS    
+      ++ parametrize(f,pl) returns the local parametrization of the 
+      ++ polynomial function f at the place pl. Note that local 
+      ++ parametrization of the place must have first been compute and set.
+      ++ For simple point on a curve, this done with \spad{pointToPlace}. 
+      ++ The  local parametrization places corresponding to a leaf in a 
+      ++ desingularization tree are compute at the moment of
+      ++ their "creation". (See package \spad{DesingTreePackage}. 
+
+    parametrize: (PolyRing,PolyRing,Plc) -> PCS    
+      ++ parametrize(f,g,pl) returns the local parametrization of the  
+      ++ rational function f/g at the place pl. Note that local 
+      ++ parametrization of the place must have first been compute and set.
+      ++ For simple point on a curve, this done with \spad{pointToPlace}. 
+      ++ The  local parametrization places corresponding to a leaf in a 
+      ++ desingularization tree are compute at the moment of
+      ++ their "creation". (See package \spad{DesingTreePackage}. 
+
+    parametrize: (PolyRing,Plc,Integer) -> PCS    
+      ++ parametrize(f,pl,n) returns t**n * parametrize(f,p). 
+
+  Impl ==>  add
+
+    import PCS
+    import PolyRing
+    
+    -- the following returns the parametrization in term of 
+    -- the precomputed local parametrization
+    -- of the point pt. Note if pl is a place and pl = pt::PLc then 
+    -- parametrize(f,pt) <> parametrize(pl) unless pt is a simple point
+    parametrize(f:PolyRing,localPar:List(PCS))==
+      zero?(f) => 0
+      lc:K:=leadingCoefficient(f)
+      ld:E:=degree f
+      ldp:List NonNegativeInteger :=parts(ld)
+      if empty?(localPar) then error _
+              "the parametrization of the place or leaf has not been done yet!"
+      monoPar:PCS:=reduce("*",[ s**e for s in localPar for e in ldp])
+      lc* monoPar + parametrize(reductum(f),localPar)
+ 
+    parametrize(f:PolyRing,pt:Plc)==
+      zero?(f) => 0
+      localPar:List PCS:=localParam pt
+      parametrize(f,localPar)
+      
+    parametrize(f:PolyRing,g:PolyRing,pt:Plc)==
+      sf:=parametrize(f,pt)
+      sg:=parametrize(g,pt)
+      sf * inv sg
+
+    parametrize(f:PolyRing,pt:Plc,n:Integer)==
+      s:=parametrize(f,pt)
+      shift(s,n)
+@
+<<PARAMP.dotabb>>=
+"PARAMP" [color="#FF4488",href="bookvol10.4.pdf#nameddest=PARAMP"]
+"DIRPCAT" [color="#4488FF",href="bookvol10.2.pdf#nameddest=DIRPCAT"]
+"PFECAT" [color="#4488FF",href="bookvol10.2.pdf#nameddest=PFECAT"]
+"PARAMP" -> "DIRPCAT"
+"PARAMP" -> "PFECAT"
+
+@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \section{package PFRPAC PartialFractionPackage}
 <<PartialFractionPackage.input>>=
 )set break resume
@@ -157193,6 +157819,7 @@ ZeroDimensionalSolvePackage(R,ls,ls2): Exports == Implementation where
 
 <<package DFINTTLS DefiniteIntegrationTools>>
 <<package DEGRED DegreeReductionPackage>>
+<<package DTP DesingTreePackage>>
 <<package DIOSP DiophantineSolutionPackage>>
 <<package DIRPROD2 DirectProductFunctions2>>
 <<package DLP DiscreteLogarithmPackage>>
@@ -157475,6 +158102,7 @@ ZeroDimensionalSolvePackage(R,ls,ls2): Exports == Implementation where
 <<package PARPC2 ParametricPlaneCurveFunctions2>>
 <<package PARSC2 ParametricSpaceCurveFunctions2>>
 <<package PARSU2 ParametricSurfaceFunctions2>>
+<<package PARAMP ParametrizationPackage>>
 <<package PFRPAC PartialFractionPackage>>
 <<package PARTPERM PartitionsAndPermutations>>
 <<package PATTERN1 PatternFunctions1>>
diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet
index 86f50bb..9cb3e28 100644
--- a/books/bookvol5.pamphlet
+++ b/books/bookvol5.pamphlet
@@ -23888,6 +23888,7 @@ otherwise the new algebra won't be loaded by the interpreter when needed.
    (|DenavitHartenbergMatrix| . DHMATRIX)
    (|Dequeue| . DEQUEUE)
    (|DesingTree| . DSTREE)
+   (|DesingTreePackage| . DTP)
    (|DiophantineSolutionPackage| . DIOSP)
    (|DirectProductFunctions2| . DIRPROD2)
    (|DisplayPackage| . DISPLAY)
@@ -24088,6 +24089,7 @@ otherwise the new algebra won't be loaded by the interpreter when needed.
    (|ParametricPlaneCurveFunctions2| . PARPC2)
    (|ParametricSpaceCurveFunctions2| . PARSC2)
    (|ParametricSurfaceFunctions2| . PARSU2)
+   (|ParametrizationPackage| . PARAMP)
    (|PartitionsAndPermutations| . PARTPERM)
    (|PatternMatch| . PATMATCH)
    (|PatternMatchAssertions| . PMASS)
diff --git a/books/ps/v104desingtreepackage.eps b/books/ps/v104desingtreepackage.eps
new file mode 100644
index 0000000..434a569
--- /dev/null
+++ b/books/ps/v104desingtreepackage.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 120 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 120 152
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 84 116 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% DTP
+gsave
+[ /Rect [ 11 72 65 108 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.4.pdf#nameddest=DTP) >>
+  /Subtype /Link
+/ANN pdfmark
+0.939 0.733 1.000 nodecolor
+newpath 65 108 moveto
+11 108 lineto
+11 72 lineto
+65 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.939 0.733 1.000 nodecolor
+newpath 65 108 moveto
+11 108 lineto
+11 72 lineto
+65 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+23.5 85.9 moveto 29 (DTP) alignedtext
+grestore
+% INFCLCT
+gsave
+[ /Rect [ 0 0 76 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.2.pdf#nameddest=INFCLCT) >>
+  /Subtype /Link
+/ANN pdfmark
+0.606 0.733 1.000 nodecolor
+newpath 76 36 moveto
+0 36 lineto
+0 0 lineto
+76 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.606 0.733 1.000 nodecolor
+newpath 76 36 moveto
+0 36 lineto
+0 0 lineto
+76 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+8 13.9 moveto 60 (INFCLCT) alignedtext
+grestore
+% DTP->INFCLCT
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 38 72 moveto
+38 64 38 55 38 46 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 41.5 46 moveto
+38 36 lineto
+34.5 46 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 41.5 46 moveto
+38 36 lineto
+34.5 46 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+end
+restore
+%%EOF
diff --git a/books/ps/v104parametrizationpackage.eps b/books/ps/v104parametrizationpackage.eps
new file mode 100644
index 0000000..5f8853a
--- /dev/null
+++ b/books/ps/v104parametrizationpackage.eps
@@ -0,0 +1,311 @@
+%!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 210 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 210 152
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 174 116 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% PARAMP
+gsave
+[ /Rect [ 48 72 122 108 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.4.pdf#nameddest=PARAMP) >>
+  /Subtype /Link
+/ANN pdfmark
+0.939 0.733 1.000 nodecolor
+newpath 122 108 moveto
+48 108 lineto
+48 72 lineto
+122 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.939 0.733 1.000 nodecolor
+newpath 122 108 moveto
+48 108 lineto
+48 72 lineto
+122 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+56 85.9 moveto 58 (PARAMP) alignedtext
+grestore
+% DIRPCAT
+gsave
+[ /Rect [ 0 0 78 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.2.pdf#nameddest=DIRPCAT) >>
+  /Subtype /Link
+/ANN pdfmark
+0.606 0.733 1.000 nodecolor
+newpath 78 36 moveto
+0 36 lineto
+0 0 lineto
+78 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.606 0.733 1.000 nodecolor
+newpath 78 36 moveto
+0 36 lineto
+0 0 lineto
+78 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+8 13.9 moveto 62 (DIRPCAT) alignedtext
+grestore
+% PARAMP->DIRPCAT
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 73 72 moveto
+68 64 61 54 55 44 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 58.27 42.62 moveto
+50 36 lineto
+52.33 46.34 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 58.27 42.62 moveto
+50 36 lineto
+52.33 46.34 lineto
+closepath stroke
+grestore
+% PFECAT
+gsave
+[ /Rect [ 96 0 166 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.2.pdf#nameddest=PFECAT) >>
+  /Subtype /Link
+/ANN pdfmark
+0.606 0.733 1.000 nodecolor
+newpath 166 36 moveto
+96 36 lineto
+96 0 lineto
+166 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.606 0.733 1.000 nodecolor
+newpath 166 36 moveto
+96 36 lineto
+96 0 lineto
+166 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+104 13.9 moveto 54 (PFECAT) alignedtext
+grestore
+% PARAMP->PFECAT
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 97 72 moveto
+102 64 109 54 115 44 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 117.67 46.34 moveto
+120 36 lineto
+111.73 42.62 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 117.67 46.34 moveto
+120 36 lineto
+111.73 42.62 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+end
+restore
+%%EOF
diff --git a/changelog b/changelog
index e963b02..429cb9e 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,9 @@
+20100523 tpd src/axiom-website/patches.html 20100523.03.tpd.patch
+20100523 tpd src/algebra/Makefile help and test for PARAMP, DTP
+20100523 tpd books/bookvol5 expose DesingTreePackage, ParametrizationPackage
+20100523 tpd books/bookvol10.4 add DesingTreePackage, ParametrizationPackage
+20100523 tpd books/ps/v104desingtreepackage.eps added
+20100523 tpd books/ps/v104parametrizationpackage.eps added
 20100523 tpd src/axiom-website/patches.html 20100523.02.tpd.patch
 20100523 tpd src/algebra/Makefile help and test for LPARSPT
 20100523 tpd books/bookvol5 expose LocalParametrizationOfSimplePointPackage
diff --git a/src/algebra/Makefile.pamphlet b/src/algebra/Makefile.pamphlet
index 9a6c4fa..a6ad9d4 100644
--- a/src/algebra/Makefile.pamphlet
+++ b/src/algebra/Makefile.pamphlet
@@ -5350,7 +5350,8 @@ LAYER11=\
   ${OUT}/NSUP.o     ${OUT}/NTPOLFN.o  ${OUT}/ODP.o      ${OUT}/ODEPRIM.o  \
   ${OUT}/ODEPRRIC.o ${OUT}/OMPKG.o    ${OUT}/OMSERVER.o ${OUT}/PACRATC.o  \
   ${OUT}/PADEPAC.o   \
-  ${OUT}/PADICRAT.o ${OUT}/PADICRC.o  ${OUT}/PCOMP.o    ${OUT}/PDECOMP.o  \
+  ${OUT}/PADICRAT.o ${OUT}/PADICRC.o  ${OUT}/PARAMP.o \
+  ${OUT}/PCOMP.o    ${OUT}/PDECOMP.o  \
   ${OUT}/PF.o       ${OUT}/PFBR.o     ${OUT}/PFBRU.o    ${OUT}/PFORP.o    \
   ${OUT}/PFOTOOLS.o \
   ${OUT}/PFRPAC.o   ${OUT}/PGCD.o     ${OUT}/PINTERPA.o ${OUT}/PLEQN.o    \
@@ -7660,6 +7661,23 @@ LAYER11=\
 /*"PADICRC" -> {"CLAGG"; "FLAGG"; "ELAGG"; "OM"; "LSAGG-"; "FPS"; "RNS"}*/
 /*"PADICRC" -> {"RADCAT"; "UPOLYC"; "POLYCAT"; "FAMR"; "AMR"; "FRETRCT"}*/
 
+"PARAMP" [color="#FF4488",href="bookvol10.4.pdf#nameddest=PARAMP"]
+"PARAMP" -> "PFECAT"
+"PARAMP" -> "DIRPCAT"
+/*"PARAMP" -> {"PRSPCAT"; "SETCATD"; "LOCPOWC"; "PLACESC"; "FIELD"; "EUCDOM"}*/
+/*"PARAMP" -> {"PID"; "GCDDOM"; "INTDOM"; "COMRING"; "RING"; "RNG"}*/
+/*"PARAMP" -> {"ABELGRP"; "CABMON"; "ABELMON"; "ABELSG"; "SETCAT"; "BASTYPE"}*/
+/*"PARAMP" -> {"KOERCE"; "SGROUP"; "MONOID"; "LMODULE"; "BMODULE"}*/
+/*"PARAMP" -> {"RMODULE"; "ALGEBRA"; "MODULE"; "ENTIRER"; "UFD"; "DIVRING"}*/
+/*"PARAMP" -> {"POLYCAT"; "PDRING"; "FAMR"; "AMR"; "CHARZ"; "CHARNZ"}*/
+/*"PARAMP" -> {"FRETRCT"; "RETRACT"; "EVALAB"; "IEVALAB"; "FLINEXP"}*/
+/*"PARAMP" -> {"LINEXP"; "ORDSET"; "KONVERT"; "PATMAB"; "IXAGG"; "HOAGG"}*/
+/*"PARAMP" -> {"AGG"; "TYPE"; "ELTAGG"; "ELTAB"; "DIFEXT"; "DIFRING"}*/
+/*"PARAMP" -> {"FINITE"; "ORDRING"; "OAGROUP"; "OCAMON"; "OAMON"; "OASGP"}*/
+/*"PARAMP" -> {"OAMONS"; "VSPACE"; "UPSCAT"; "PSCAT"; "INT"; "LIST"; "ILIST"}*/
+/*"PARAMP" -> {"LSAGG"; "STAGG"; "URAGG"; "RCAGG"; "LNAGG"; "CLAGG"; "FLAGG"}*/
+/*"PARAMP" -> {"ELAGG"; "OM"; "NNI"; "OUTFORM"; "LSAGG-"}*/
+
 "PCOMP" [color="#FF4488",href="bookvol10.4.pdf#nameddest=PCOMP"]
 /*"PCOMP" -> {"UPOLYC"; "POLYCAT"; "PDRING"; "RING"; "RNG"; "ABELGRP"}*/
 /*"PCOMP" -> {"CABMON"; "ABELMON"; "ABELSG"; "SETCAT"; "BASTYPE"; "KOERCE"}*/
@@ -12286,7 +12304,8 @@ LAYER17=\
   ${OUT}/COMPLPAT.o ${OUT}/CMPLXRT.o  ${OUT}/CPMATCH.o  ${OUT}/CRFP.o     \
   ${OUT}/CTRIGMNP.o ${OUT}/D01WGTS.o  ${OUT}/D02AGNT.o  ${OUT}/D03EEFA.o  \
   ${OUT}/DBLRESP.o  ${OUT}/D01AGNT.o  ${OUT}/DERHAM.o   ${OUT}/DFSFUN.o   \
-  ${OUT}/DRAWCURV.o ${OUT}/D01TRNS.o  ${OUT}/E04NAFA.o  ${OUT}/EF.o       \
+  ${OUT}/DRAWCURV.o ${OUT}/DTP.o      \
+  ${OUT}/D01TRNS.o  ${OUT}/E04NAFA.o  ${OUT}/EF.o       \
   ${OUT}/EFSTRUC.o  ${OUT}/ELFUTS.o   ${OUT}/ESTOOLS.o  ${OUT}/EXPEXPAN.o \
   ${OUT}/EXPRODE.o  ${OUT}/EXPRTUBE.o ${OUT}/EXPR2.o    ${OUT}/FC.o       \
   ${OUT}/FDIVCAT.o  ${OUT}/FDIVCAT-.o ${OUT}/FDIV2.o    ${OUT}/FFCAT2.o   \
@@ -13021,6 +13040,26 @@ LAYER17=\
 /*"DRAWCURV" -> {"SRAGG-"; "FLAGG-"; "LNAGG-"; "ILIST"; "LSAGG-"; "STAGG-"}*/
 /*"DRAWCURV" -> {"ELAGG-"; "URAGG-"; "OM"; "FPS"; "RNS"; "RADCAT"}*/
 
+"DTP" [color="#FF4488",href="bookvol10.4.pdf#nameddest=DTP"]
+"DTP" -> ""INFCLCT"
+/*"DTP" -> {"PRSPCAT"; "SETCATD"; "LOCPOWC"; "PLACESC"; "DIVCAT"; "DSTRCAT"}*/
+/*"DTP" -> {"BLMETCT"; "PFORP"; "AFFPL"; "PARAMP"; "PLPKCRV"; "BLUPPACK"}*/
+/*"DTP" -> {"LPARSPT"; "DIV"; "PRJALGPK"; "FIELD"; "EUCDOM"; "PID"; "GCDDOM"}*/
+/*"DTP" -> {"INTDOM"; "COMRING"; "RING"; "RNG"; "ABELGRP"; "CABMON"}*/
+/*"DTP" -> {"ABELMON"; "ABELSG"; "SETCAT"; "BASTYPE"; "KOERCE"; "SGROUP"}*/
+/*"DTP" -> {"MONOID"; "LMODULE"; "BMODULE"; "RMODULE"; "ALGEBRA"; "MODULE"}*/
+/*"DTP" -> {"ENTIRER"; "UFD"; "DIVRING"; "POLYCAT"; "PDRING"; "FAMR"; "AMR"}*/
+/*"DTP" -> {"CHARZ"; "CHARNZ"; "FRETRCT"; "RETRACT"; "EVALAB"; "IEVALAB"}*/
+/*"DTP" -> {"FLINEXP"; "LINEXP"; "ORDSET"; "KONVERT"; "PATMAB"; "PFECAT"}*/
+/*"DTP" -> {"DIRPCAT"; "IXAGG"; "HOAGG"; "AGG"; "TYPE"; "ELTAGG"; "ELTAB"}*/
+/*"DTP" -> {"DIFEXT"; "DIFRING"; "FINITE"; "ORDRING"; "OAGROUP"; "OCAMON"}*/
+/*"DTP" -> {"OAMON"; "OASGP"; "OAMONS"; "VSPACE"; "UPSCAT"; "PSCAT"}*/
+/*"DTP" -> {"FAMONC"; "RCAGG"; "INT"; "PI"; "NNI"; "SINT"; "BOOLEAN"; "LIST"}*/
+/*"DTP" -> {"ILIST"; "LSAGG-"; "STAGG-"; "VECTOR"; "LSAGG"; "STAGG"; "URAGG"}*/
+/*"DTP" -> {"LNAGG"; "CLAGG"; "FLAGG"; "ELAGG"; "OM"; "SYMBOL"; "REF"}*/
+/*"DTP" -> {"ALIST"; "STRING"; "CHAR"; "OUTFORM"; "PRIMARR"; "A1AGG-"}*/
+/*"DTP" -> {"ISTRING"; "SRAGG-"; "FLAGG-"; "LNAGG-"}*/
+
 "D01TRNS" [color="#88FF44",href="bookvol10.3.pdf#nameddest=D01TRNS"]
 /*"D01TRNS" -> {"NUMINT"; "SETCAT"; "BASTYPE"; "KOERCE"; "STRING"; "CHAR"}*/
 /*"D01TRNS" -> {"SINT"; "OUTFORM"; "LIST"; "INT"; "PRIMARR"; "A1AGG-"}*/
@@ -17075,6 +17114,37 @@ ${MID}/LPARSPT.nrlib/code.o: ${MID}/LPARSPT.spad
 	      | ${INTERPSYS} >${TMP}/trace ; \
 	   fi )
 @
+<<newcode>>=
+
+PARAMPDEPS = PRSPCAT LOCPOWC SETCATD PLACESC
+
+${MID}/PARAMP.nrlib/code.o: ${MID}/PARAMP.spad
+	@echo P3 making ${MID}/PARAMP.nrlib/code.o from ${MID}/PARAMP.spad
+	@ (cd ${MID} ; \
+	   if [ -z "${NOISE}" ] ; then \
+	    echo -e ")lib ${PARAMPDEPS} \n )co PARAMP.spad" \
+              | ${INTERPSYS} ; \
+           else \
+	    echo -e ")lib ${PARAMPDEPS} \n )co AFALGRES.spad" \
+	      | ${INTERPSYS} >${TMP}/trace ; \
+	   fi )
+@
+<<newcode>>=
+
+DTPDEPS = PRSPCAT LOCPOWC SETCATD PLACESC DIVCAT INFCLCT DSTRCAT BLMETCT \
+          PFORP AFFPL PARAMP PLPKCRV BLUPPACK LPARSPT DIV PRJALGPK
+
+${MID}/DTP.nrlib/code.o: ${MID}/DTP.spad
+	@echo P3 making ${MID}/DTP.nrlib/code.o from ${MID}/DTP.spad
+	@ (cd ${MID} ; \
+	   if [ -z "${NOISE}" ] ; then \
+	    echo -e ")lib ${DTPDEPS} \n )co DTP.spad" \
+              | ${INTERPSYS} ; \
+           else \
+	    echo -e ")lib ${DTPDEPS} \n )co AFALGRES.spad" \
+	      | ${INTERPSYS} >${TMP}/trace ; \
+	   fi )
+@
 
 \section{Broken Files}
 These files are Aldor files
@@ -17809,11 +17879,12 @@ SPADHELP=\
  ${HELP}/Complex.help \
  ${HELP}/ContinuedFraction.help \
  ${HELP}/CycleIndicators.help \
- ${HELP}/DeRhamComplex.help \
  ${HELP}/DecimalExpansion.help \
  ${HELP}/Dequeue.help \
+ ${HELP}/DeRhamComplex.help \
  ${HELP}/DesingTree.help \
  ${HELP}/DesingTreeCategory.help \
+ ${HELP}/DesingTreePackage.help \
  ${HELP}/DistributedMultivariatePolynomial.help \
  ${HELP}/Divisor.help \
  ${HELP}/DivisorCategory.help \
@@ -17904,6 +17975,7 @@ SPADHELP=\
  ${HELP}/OrderedVariableList.help \
  ${HELP}/OrderlyDifferentialPolynomial.help \
  ${HELP}/PackageForPoly.help \
+ ${HELP}/ParametrizationPackage.help \
  ${HELP}/PartialFraction.help \
  ${HELP}/PartialFractionPackage.help \
  ${HELP}/Permanent.help \
@@ -18020,6 +18092,7 @@ REGRESS= \
  Dequeue.regress \
  DesingTree.regress \
  DesingTreeCategory.regress \
+ DesingTreePackage.regress \
  DistributedMultivariatePolynomial.regress \
  Divisor.regress \
  DivisorCategory.regress \
@@ -18096,6 +18169,7 @@ REGRESS= \
  OrderedVariableList.regress \
  OrderlyDifferentialPolynomial.regress \
  PackageForPoly.regress \
+ ParametrizationPackage.regress \
  PartialFraction.regress \
  PartialFractionPackage.regress \
  Permanent.regress \
@@ -18581,9 +18655,22 @@ ${HELP}/DesingTreeCategory.help: \
             >${INPUT}/DesingTreeCategory.input
 	@echo "DesingTreeCategory (DSTRCAT)" >>${HELPFILE}
 
+${HELP}/DesingTreePackage.help: \
+            ${BOOKS}/bookvol10.4.pamphlet
+	@echo 7298 create DesingTreePackage.help \
+            from ${BOOKS}/bookvol10.4.pamphlet
+	@${TANGLE} -R"DesingTreePackage.help" \
+           ${BOOKS}/bookvol10.4.pamphlet \
+            >${HELP}/DesingTreePackage.help
+	@cp ${HELP}/DesingTreePackage.help ${HELP}/DTP.help
+	@${TANGLE} -R"DesingTreePackage.input" \
+           ${BOOKS}/bookvol10.4.pamphlet \
+            >${INPUT}/DesingTreePackage.input
+	@echo "DesingTreePackage (DTP)" >>${HELPFILE}
+
 ${HELP}/DistributedMultivariatePolynomial.help: \
             ${BOOKS}/bookvol10.3.pamphlet
-	@echo 7200 create DistributedMultivariatePolynomial.help \
+	@echo 7299 create DistributedMultivariatePolynomial.help \
             from ${BOOKS}/bookvol10.3.pamphlet
 	@${TANGLE} -R"DistributedMultivariatePolynomial.help" \
            ${BOOKS}/bookvol10.3.pamphlet \
@@ -19557,8 +19644,20 @@ ${HELP}/PackageForPoly.help: ${BOOKS}/bookvol10.4.pamphlet
             >${INPUT}/PackageForPoly.input
 	@echo "PackageForPoly (PFORP)" >>${HELPFILE}
 
+${HELP}/ParametrizationPackage.help: ${BOOKS}/bookvol10.4.pamphlet
+	@echo 7882 create ParametrizationPackage.help from \
+           ${BOOKS}/bookvol10.4.pamphlet
+	@${TANGLE} -R"ParametrizationPackage.help" \
+           ${BOOKS}/bookvol10.4.pamphlet \
+           >${HELP}/ParametrizationPackage.help
+	@cp ${HELP}/ParametrizationPackage.help ${HELP}/PARAMP.help
+	@${TANGLE} -R"ParametrizationPackage.input" \
+           ${BOOKS}/bookvol10.4.pamphlet \
+           >${INPUT}/ParametrizationPackage.input
+	@echo "ParametrizationPackage (PARAMP)" >>${HELPFILE}
+
 ${HELP}/PartialFraction.help: ${BOOKS}/bookvol10.3.pamphlet
-	@echo 7880 create PartialFraction.help from \
+	@echo 7884 create PartialFraction.help from \
            ${BOOKS}/bookvol10.3.pamphlet
 	@${TANGLE} -R"PartialFraction.help" ${BOOKS}/bookvol10.3.pamphlet \
            >${HELP}/PartialFraction.help
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 9519814..4548578 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -2789,5 +2789,7 @@ books/bookvol10.4 AffineAlgebraicSetComputeWithGroebnerBasis.eps<br/>
 books/bookvol10.4 add ProjectiveAlgebraicSetPackage<br/>
 <a href="patches/20100523.02.tpd.patch">20100523.02.tpd.patch</a>
 books/bookvol10.4 add LocalParametrizationOfSimplePointPackage<br/>
+<a href="patches/20100523.03.tpd.patch">20100523.03.tpd.patch</a>
+books/bookvol10.4 add DesingTreePackage, ParametrizationPackage<br/>
  </body>
 </html>
