diff --git a/changelog b/changelog
index d5313a7..95138dc 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,6 @@
+20100701 tpd src/axiom-website/patches.html 20100701.01.tpd.patch
+20100701 tpd src/input/Makefile add paffexample.input for PAFF testing
+20100701 tpd src/input/paffexample.input additional PAFF testing
 20100630 tpd src/axiom-website/patches.html 20100630.02.tpd.patch
 20100630 tpd src/input/Makefile add exampleagcode.input for PAFF testing
 20100630 tpd src/input/exampleagcode.input additional PAFF testing
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index ec8702a..b751994 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -2956,5 +2956,7 @@ src/algebra/Makefile remove new algebra scaffolding code<br/>
 src/input/hyperell.input additional PAFF testing<br/>
 <a href="patches/20100630.02.tpd.patch">20100630.02.tpd.patch</a>
 src/input/exampleagcode.input additional PAFF testing<br/>
+<a href="patches/2010070101.tpd.patch">20100701.01.tpd.patch</a>
+src/input/paffexample.input additional PAFF testing<br/>
  </body>
 </html>
diff --git a/src/input/Makefile.pamphlet b/src/input/Makefile.pamphlet
index 63bacfb..173db6b 100644
--- a/src/input/Makefile.pamphlet
+++ b/src/input/Makefile.pamphlet
@@ -358,7 +358,7 @@ REGRESSTESTS= ackermann.regress \
     nqip.regress      nsfip.regress    numbers.regress  octonion.regress \
     oct.regress       ode.regress      odpol.regress    op1.regress \
     opalg.regress     operator.regress op.regress       ovar.regress \
-    overload.regress  padic.regress    paff.regress     \
+    overload.regress  padic.regress    paff.regress     paffexample.regress \
     parabola.regress  pascal1.regress  pascal.regress \
     patch51.regress   page.regress \
     patmatch.regress  pat.regress      perman.regress   perm.regress \
@@ -726,7 +726,8 @@ FILES= ${OUT}/ackermann.input \
        ${OUT}/octonion.input ${OUT}/odpol.input \
        ${OUT}/opalg.input    ${OUT}/operator.input   ${OUT}/op.input \
        ${OUT}/op1.input      ${OUT}/ovar.input       ${OUT}/overload.input \
-       ${OUT}/padic.input    ${OUT}/paff.input       ${OUT}/palette.input \
+       ${OUT}/padic.input    ${OUT}/paff.input       ${OUT}/paffexample.input \
+       ${OUT}/palette.input \
        ${OUT}/parpcurv.input ${OUT}/parscurv.input   ${OUT}/parsurf.input \
        ${OUT}/pascal1.input \
        ${OUT}/pascal.input   \
@@ -1104,7 +1105,7 @@ DOCFILES= \
   ${DOC}/op.input.dvi          ${DOC}/ovar.input.dvi       \
   ${DOC}/overload.input.dvi   \
   ${DOC}/padic.input.dvi       ${DOC}/paff.input.dvi       \
-  ${DOC}/palette.input.dvi    \
+  ${DOC}/paffexample.input.dvi ${DOC}/palette.input.dvi    \
   ${DOC}/parabola.input.dvi    ${DOC}/parpcurv.input.dvi   \
   ${DOC}/parscurv.input.dvi    ${DOC}/parsurf.input.dvi    \
   ${DOC}/pascal1.input.dvi     ${DOC}/pascal.input.dvi     \
diff --git a/src/input/paffexample.input.pamphlet b/src/input/paffexample.input.pamphlet
new file mode 100644
index 0000000..4d41433
--- /dev/null
+++ b/src/input/paffexample.input.pamphlet
@@ -0,0 +1,359 @@
+\documentclass{article}
+\usepackage{axiom}
+\begin{document}
+\title{\$SPAD/src/input paffexample.input}
+\author{Timothy Daly}
+\maketitle
+\begin{abstract}
+\end{abstract}
+\eject
+\tableofcontents
+\eject
+\begin{chunk}{*}
+)set break resume
+)spool paffexample.output
+)set message auto off
+)clear all
+
+-- This example compute the genus of the projective plane curve defined by
+-- by
+--
+--       5    2 3      4
+--      X  + Y Z  + Y Z  = 0
+--
+-- over the field GF(2).
+
+-- First we define the field GF(2).
+
+--S 1 of 20
+K:=PF 2  
+--R 
+--R
+--R   (1)  PrimeField 2
+--R                                                                 Type: Domain
+--E 1
+
+-- Next, we define the polynomial ring over which
+-- the polynomial is defined. 
+-- You have the choice for the name of 
+-- the three variables (always three !!) but  
+-- the domain  DMP must be used. 
+-- DMP  is an AXIOM domain and stands for DistributedMultivariatePolymnomial.
+
+--S 2 of 20
+R:=DMP([X,Y,Z],K)
+--R 
+--R
+--R   (2)  DistributedMultivariatePolynomial([X,Y,Z],PrimeField 2)
+--R                                                                 Type: Domain
+--E 2
+
+-- Then we tell to the package PAFF over which field the computation 
+-- must be done. Also, you must give the same list of variables which 
+-- is used to defined the polynomial.
+-- BLQT Stand for BlowUpWithQuadTrans which specified the method
+-- used for blowing-up (there will be another one 
+-- using similar technics to Hamburger-Nother expansions).
+
+--S 3 of 20
+P:=PAFF(K,[X,Y,Z],BLQT)
+--R 
+--R
+--R   (3)
+--R   PackageForAlgebraicFunctionField(PrimeField 2,[X,Y,Z],BlowUpWithQuadTrans)
+--R                                                                 Type: Domain
+--E 3
+
+-- We defined now the polynomial of the curve.
+
+--S 4 of 20
+C:R:=X**5 + Y**2*Z**3+Y*Z**4
+--R 
+--R
+--R         5    2 3      4
+--R   (4)  X  + Y Z  + Y Z
+--R                Type: DistributedMultivariatePolynomial([X,Y,Z],PrimeField 2)
+--E 4
+
+-- We give it to the package PAFF(K,[X,Y,Z]) which was assigned to the
+-- variable "P"
+
+--S 5 of 20
+setCurve(C)$P
+--R 
+--R
+--R         5    2 3      4
+--R   (5)  X  + Y Z  + Y Z
+--R                Type: DistributedMultivariatePolynomial([X,Y,Z],PrimeField 2)
+--E 5
+
+-- To compute the genus of the curve, simply do 
+
+--S 6 of 20
+genus()$P
+--R 
+--R
+--R   (6)  2
+--R                                                     Type: NonNegativeInteger
+--E 6
+
+-- To compute the genus, the package use the genus formula 
+-- given by the blowin-up theory. That means that the singular points
+-- has been computed. 
+
+--S 7 of 20
+singularPoints()$P
+--R 
+--R
+--R                1
+--R   (7)  [(0:1:0) ]
+--R                                      Type: List ProjectivePlane PrimeField 2
+--E 7
+
+-- The results of singularPoints()$P is the list of all
+-- the singular points of the curve in the projective plane.
+--
+--
+-- The Brill-Noether algorithm use the notion of "adjunction divisor".
+-- To compute it simply do "adjunctionDivisor()$P"
+-- You should obtained something like
+--
+--            1
+--       8 %I1
+--
+-- This is a divisor of the function field of the curve, consisting
+-- of 8 times the place %I1 which is of degree 1 (the exponant).
+-- The place %I1 is a place above a singular point (the unique one 
+-- for this example). This mean that the "desingularization tree" 
+-- has been computed. See next step.
+
+--S 8 of 20
+adjunctionDivisor()$P
+--R 
+--R
+--R             1
+--R   (8)  8 %I1
+--R                                            Type: Divisor Places PrimeField 2
+--E 8
+
+-- To compute the "desingularization tree" simply do:
+-- desingTree()$P
+--
+-- For this example, you should obtained from desingTree()$P
+--
+--        ["UU.."]
+--
+-- This a list of desingularization tree for each singular point.
+-- Here there is only one, which is "UU..".  
+-- To interpret the result, you have to do some manual drawing.
+-- The letter U means "Up", and a . (dot) means "down".
+-- 
+--
+--
+--              o
+--              |  
+--           ^  |  |
+--           |  |  | .
+--         U |  |  | 
+--           |  |  v
+--              |
+--              |
+--              o
+--              |  
+--           ^  |  |
+--           |  |  | .
+--         U |  |  |
+--           |  |  v
+--              |
+--              |
+--              o
+--         
+
+--S 9 of 20
+desingTree()$P
+--R 
+--R
+--R   (9)  ["UU.."]
+--R     Type: List DesingTree InfClsPt(PrimeField 2,[X,Y,Z],BlowUpWithQuadTrans)
+--E 9
+
+-- To see more information about the desingularization trees,
+-- issue the command, fullDesTree()$P, and recall the command 
+-- desingTree()$P. Here you have a bit more information about
+-- the infinitly near points in the desingularization trees.
+-- For this example, the result corresponds to the following
+--
+--         %I1  o  multiplicity = 1
+--              |  
+--              |
+--              |
+--              |
+--              |
+--              |
+--              |
+--         %I0  o  multiplicity = 2
+--              |  
+--              |
+--              |
+--              |
+--              |
+--              |
+--              |
+--         %P0  o  multiplicity = 3
+--         
+
+--S 10 of 20
+fullDesTree()$P
+--R 
+--R                                                                   Type: Void
+--E 10
+
+--S 11 of 20
+desingTree()$P
+--R 
+--R
+--R   (11)  [[name= %P0,mult= 3]([name= %I0,mult= 2]([name= %I1,mult= 1]))]
+--R     Type: List DesingTree InfClsPt(PrimeField 2,[X,Y,Z],BlowUpWithQuadTrans)
+--E 11
+
+-- To see everything about desingularization trees, issue
+-- the following
+
+--S 12 of 20
+fullInfClsPt()$P
+--R 
+--R                                                                   Type: Void
+--E 12
+
+--S 13 of 20
+desingTree()$P
+--R 
+--R
+--R   (13)
+--R   [
+--R                       1                                 5    4    3
+--R     [dominate= (0:1:0) , name= %P0, mult= 3, defCurve= X  + Y  + Y ,
+--R                       1                                              1
+--R      localPoint= (0:0) , chart= [exCoord= 0,affNeigh= 2], expD= 3 %I1 ]
+--R                          1                                 2      4    3
+--R        [dominate= (0:1:0) , name= %I0, mult= 2, defCurve= X  + X Y  + Y ,
+--R                          1                                              1
+--R         localPoint= (0:0) , chart= [exCoord= 1,affNeigh= 2], expD= 2 %I1 ]
+--R                             1                                 2      3
+--R           [dominate= (0:1:0) , name= %I1, mult= 1, defCurve= X  + X Y  + Y,
+--R                             1                                            1
+--R            localPoint= (0:0) , chart= [exCoord= 2,affNeigh= 2], expD= %I1 ]
+--R     ]
+--R     Type: List DesingTree InfClsPt(PrimeField 2,[X,Y,Z],BlowUpWithQuadTrans)
+--E 13
+
+-- You can ask for all the place of degree 1
+
+--S 14 of 20
+placesOfDegree(1)$P
+--R 
+--R
+--R                 1        1    1
+--R   (14)  [[0:1:1] ,[0:0:1] ,%I1 ]
+--R                                               Type: List Places PrimeField 2
+--E 14
+
+-- With those places, you can create divisors 
+
+--S 15 of 20
+listOfDiv:=placesOfDegree(1)$P :: List DIV PLACES PF 2
+--R 
+--R
+--R                 1        1    1
+--R   (15)  [[0:1:1] ,[0:0:1] ,%I1 ]
+--R                                       Type: List Divisor Places PrimeField 2
+--E 15
+
+-- You can add the divisors.
+
+--S 16 of 20
+D:=reduce(+, listOfDiv)
+--R 
+--R
+--R                1          1      1
+--R   (16)  [0:1:1]  + [0:0:1]  + %I1
+--R                                            Type: Divisor Places PrimeField 2
+--E 16
+
+-- You can multiply the divisor by an integer
+
+--S 17 of 20
+D10 := 10 * D
+--R 
+--R
+--R                   1             1         1
+--R   (17)  10 [0:1:1]  + 10 [0:0:1]  + 10 %I1
+--R                                            Type: Divisor Places PrimeField 2
+--E 17
+
+-- You can ask for the degree of the divisor
+
+--S 18 of 20
+degree D10
+--R 
+--R
+--R   (18)  30
+--R                                                        Type: PositiveInteger
+--E 18
+
+-- You can compute the basis of the vector space L(D10).
+-- The results is an Axiom Record. The first selector "num"
+-- corresponds to the numerators of the elements of the basis,
+-- and the second selector "den" is the common denominator.
+
+--S 19 of 20
+baseOfLofD:= lBasis(D10)$P
+--R 
+--R   Trying to interpolate with forms of degree:
+--R   8
+--R   Denominator found
+--R   Intersection Divisor of Denominator found
+--R
+--R   (19)
+--R   [
+--R     num =
+--R         8   5 3   6 2     7     4 3     5 2   2 6   2 3 3   2 4 2   2 5
+--R       [Z , Y Z , Y Z , X Z , X Y Z , X Y Z , X Z , X Y Z , X Y Z , X Y Z,
+--R         3 5   3 2 3   3 3 2   3 4    4 4   4   3   4 2 2   4 3    4 4   5 3
+--R        X Z , X Y Z , X Y Z , X Y Z, X Z , X Y Z , X Y Z , X Y Z, X Y , X Z ,
+--R         5   2   5 2    5 3   6 2   6      6 2   7    7    8
+--R        X Y Z , X Y Z, X Y , X Z , X Y Z, X Y , X Z, X Y, X ]
+--R     ,
+--R          5 2     5   2
+--R    den= X Y Z + X Y Z ]
+--RType: Record(num: List DistributedMultivariatePolynomial([X,Y,Z],PrimeField 2),den: DistributedMultivariatePolynomial([X,Y,Z],PrimeField 2))
+--E 19
+
+-- Of course, the number of element in the list of numerator
+-- is the dimension of the vector space L(D10). According to the 
+-- Riemann-Roch Theorem, since 
+-- 
+--  deg D10 >= 2 g - 1
+-- 
+-- we should have 
+--
+-- dim L(D10) = deg D10 - g + 1
+
+--S 20 of 20
+((# baseOfLofD.num) = degree D10 - genus()$P + 1 ) :: Boolean
+--R 
+--R
+--R   (20)  true
+--R                                                                Type: Boolean
+--E 20
+
+)spool
+)lisp (bye)
+ 
+\end{chunk}
+\eject
+\begin{thebibliography}{99}
+\bibitem{1} nothing
+\end{thebibliography}
+\end{document}
+ 
