diff --git a/books/ps/v103antisymm.ps b/books/ps/v103antisymm.ps
new file mode 100644
index 0000000..b9b4c31
--- /dev/null
+++ b/books/ps/v103antisymm.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 122 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 122 80
+%%PageOrientation: Portrait
+gsave
+36 36 86 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+84 42 lineto
+84 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+84 42 lineto
+84 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% AntiSymm
+[ /Rect [ 0 0 78 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=ANTISYM) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 78 36 moveto
+0 36 lineto
+0 0 lineto
+78 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 78 36 moveto
+0 36 lineto
+0 0 lineto
+78 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+7 13 moveto
+(AntiSymm)
+[10.08 6.96 3.84 3.84 7.68 6.96 10.8 10.8]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v103d01ajfannatype.ps b/books/ps/v103d01ajfannatype.ps
new file mode 100644
index 0000000..dec46d7
--- /dev/null
+++ b/books/ps/v103d01ajfannatype.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 152 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 152 80
+%%PageOrientation: Portrait
+gsave
+36 36 116 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+114 42 lineto
+114 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+114 42 lineto
+114 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% d01ajfAnnaType
+[ /Rect [ 0 0 108 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=D01AJFA) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 108 36 moveto
+0 36 lineto
+0 0 lineto
+108 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 108 36 moveto
+0 36 lineto
+0 0 lineto
+108 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+7 13 moveto
+(d01ajfAnnaType)
+[6.96 6.24 6.96 5.76 3.84 4.56 10.08 6.96 6.96 6.24 7.2 6.96 6.96 6.24]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v103d01akfannatype.ps b/books/ps/v103d01akfannatype.ps
new file mode 100644
index 0000000..ba55a83
--- /dev/null
+++ b/books/ps/v103d01akfannatype.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 156 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 156 80
+%%PageOrientation: Portrait
+gsave
+36 36 120 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+118 42 lineto
+118 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+118 42 lineto
+118 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% d01akfAnnaType
+[ /Rect [ 0 0 112 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=D01AKFA) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 112 36 moveto
+0 36 lineto
+0 0 lineto
+112 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 112 36 moveto
+0 36 lineto
+0 0 lineto
+112 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+8 13 moveto
+(d01akfAnnaType)
+[6.96 6.24 6.96 6.24 6.96 4.56 10.08 6.96 6.96 6.24 7.2 6.96 6.96 6.24]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v103d01alfannatype.ps b/books/ps/v103d01alfannatype.ps
new file mode 100644
index 0000000..de182fd
--- /dev/null
+++ b/books/ps/v103d01alfannatype.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 152 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 152 80
+%%PageOrientation: Portrait
+gsave
+36 36 116 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+114 42 lineto
+114 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+114 42 lineto
+114 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% d01alfAnnaType
+[ /Rect [ 0 0 108 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=D01ALFA) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 108 36 moveto
+0 36 lineto
+0 0 lineto
+108 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 108 36 moveto
+0 36 lineto
+0 0 lineto
+108 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+7 13 moveto
+(d01alfAnnaType)
+[6.96 6.24 6.96 6.24 3.84 4.56 10.08 6.96 6.96 6.24 7.2 6.96 6.96 6.24]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v103d01amfannatype.ps b/books/ps/v103d01amfannatype.ps
new file mode 100644
index 0000000..1efe39b
--- /dev/null
+++ b/books/ps/v103d01amfannatype.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 160 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 160 80
+%%PageOrientation: Portrait
+gsave
+36 36 124 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+122 42 lineto
+122 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+122 42 lineto
+122 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% d01amfAnnaType
+[ /Rect [ 0 0 116 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=D01AMFA) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 116 36 moveto
+0 36 lineto
+0 0 lineto
+116 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 116 36 moveto
+0 36 lineto
+0 0 lineto
+116 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+8 13 moveto
+(d01amfAnnaType)
+[6.96 6.24 6.96 6.24 10.8 4.56 10.08 6.96 6.96 6.24 7.2 6.96 6.96 6.24]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v103d01anfannatype.ps b/books/ps/v103d01anfannatype.ps
new file mode 100644
index 0000000..93d8549
--- /dev/null
+++ b/books/ps/v103d01anfannatype.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 156 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 156 80
+%%PageOrientation: Portrait
+gsave
+36 36 120 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+118 42 lineto
+118 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+118 42 lineto
+118 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% d01anfAnnaType
+[ /Rect [ 0 0 112 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=D01ANFA) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 112 36 moveto
+0 36 lineto
+0 0 lineto
+112 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 112 36 moveto
+0 36 lineto
+0 0 lineto
+112 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+8 13 moveto
+(d01anfAnnaType)
+[6.96 6.24 6.96 6.24 6.96 4.56 10.08 6.96 6.96 6.24 7.2 6.96 6.96 6.24]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v103d01apfannatype.ps b/books/ps/v103d01apfannatype.ps
new file mode 100644
index 0000000..c4e1e8f
--- /dev/null
+++ b/books/ps/v103d01apfannatype.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 156 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 156 80
+%%PageOrientation: Portrait
+gsave
+36 36 120 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+118 42 lineto
+118 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+118 42 lineto
+118 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% d01apfAnnaType
+[ /Rect [ 0 0 112 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=D01APFA) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 112 36 moveto
+0 36 lineto
+0 0 lineto
+112 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 112 36 moveto
+0 36 lineto
+0 0 lineto
+112 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+8 13 moveto
+(d01apfAnnaType)
+[6.96 6.24 6.96 6.24 6.96 4.56 10.08 6.96 6.96 6.24 7.2 6.96 6.96 6.24]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v103d01aqfannatype.ps b/books/ps/v103d01aqfannatype.ps
new file mode 100644
index 0000000..b414a37
--- /dev/null
+++ b/books/ps/v103d01aqfannatype.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 156 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 156 80
+%%PageOrientation: Portrait
+gsave
+36 36 120 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+118 42 lineto
+118 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+118 42 lineto
+118 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% d01aqfAnnaType
+[ /Rect [ 0 0 112 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=D01AQFA) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 112 36 moveto
+0 36 lineto
+0 0 lineto
+112 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 112 36 moveto
+0 36 lineto
+0 0 lineto
+112 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+8 13 moveto
+(d01aqfAnnaType)
+[6.96 6.24 6.96 6.24 6.96 4.56 10.08 6.96 6.96 6.24 7.2 6.96 6.96 6.24]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v103d01asfannatype.ps b/books/ps/v103d01asfannatype.ps
new file mode 100644
index 0000000..7648839
--- /dev/null
+++ b/books/ps/v103d01asfannatype.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 154 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 154 80
+%%PageOrientation: Portrait
+gsave
+36 36 118 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+116 42 lineto
+116 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+116 42 lineto
+116 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% d01asfAnnaType
+[ /Rect [ 0 0 110 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=D01ASFA) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 110 36 moveto
+0 36 lineto
+0 0 lineto
+110 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 110 36 moveto
+0 36 lineto
+0 0 lineto
+110 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+7 13 moveto
+(d01asfAnnaType)
+[6.96 6.24 6.96 6.24 5.52 4.56 10.08 6.96 6.96 6.24 7.2 6.96 6.96 6.24]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v103d01fcfannatype.ps b/books/ps/v103d01fcfannatype.ps
new file mode 100644
index 0000000..768be3d
--- /dev/null
+++ b/books/ps/v103d01fcfannatype.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 154 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 154 80
+%%PageOrientation: Portrait
+gsave
+36 36 118 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+116 42 lineto
+116 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+116 42 lineto
+116 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% d01fcfAnnaType
+[ /Rect [ 0 0 110 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=D01FCFA) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 110 36 moveto
+0 36 lineto
+0 0 lineto
+110 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 110 36 moveto
+0 36 lineto
+0 0 lineto
+110 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+8 13 moveto
+(d01fcfAnnaType)
+[6.96 6.24 6.96 4.56 6.24 4.56 10.08 6.96 6.96 6.24 7.2 6.96 6.96 6.24]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v103d01gbfannatype.ps b/books/ps/v103d01gbfannatype.ps
new file mode 100644
index 0000000..8bf14de
--- /dev/null
+++ b/books/ps/v103d01gbfannatype.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 156 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 156 80
+%%PageOrientation: Portrait
+gsave
+36 36 120 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+118 42 lineto
+118 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+118 42 lineto
+118 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% d01gbfAnnaType
+[ /Rect [ 0 0 112 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=D01GBFA) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 112 36 moveto
+0 36 lineto
+0 0 lineto
+112 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 112 36 moveto
+0 36 lineto
+0 0 lineto
+112 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+7 13 moveto
+(d01gbfAnnaType)
+[6.96 6.24 6.96 6.96 6.96 4.56 10.08 6.96 6.96 6.24 7.2 6.96 6.96 6.24]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v103d01transformfunctiontype.ps b/books/ps/v103d01transformfunctiontype.ps
new file mode 100644
index 0000000..e343d48
--- /dev/null
+++ b/books/ps/v103d01transformfunctiontype.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 214 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 214 80
+%%PageOrientation: Portrait
+gsave
+36 36 178 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+176 42 lineto
+176 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+176 42 lineto
+176 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% d01TransformFunctionType
+[ /Rect [ 0 0 170 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=D01TRNS) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 170 36 moveto
+0 36 lineto
+0 0 lineto
+170 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 170 36 moveto
+0 36 lineto
+0 0 lineto
+170 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+7 13 moveto
+(d01TransformFunctionType)
+[6.96 6.24 6.96 7.92 4.8 6.24 6.96 5.52 4.08 6.96 5.04 10.8 7.44 6.96 6.96 6.24 3.84 3.84 6.96 6.24 7.2 6.96 6.96 6.24]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v103d02bbfannatype.ps b/books/ps/v103d02bbfannatype.ps
new file mode 100644
index 0000000..6434fdb
--- /dev/null
+++ b/books/ps/v103d02bbfannatype.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 158 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 158 80
+%%PageOrientation: Portrait
+gsave
+36 36 122 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+120 42 lineto
+120 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+120 42 lineto
+120 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% d02bbfAnnaType
+[ /Rect [ 0 0 114 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=D02BBFA) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 114 36 moveto
+0 36 lineto
+0 0 lineto
+114 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 114 36 moveto
+0 36 lineto
+0 0 lineto
+114 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+8 13 moveto
+(d02bbfAnnaType)
+[6.96 6.96 6.96 6.96 6.96 4.56 10.08 6.96 6.96 6.24 7.2 6.96 6.96 6.24]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v103d02bhfannatype.ps b/books/ps/v103d02bhfannatype.ps
new file mode 100644
index 0000000..3a91166
--- /dev/null
+++ b/books/ps/v103d02bhfannatype.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 158 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 158 80
+%%PageOrientation: Portrait
+gsave
+36 36 122 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+120 42 lineto
+120 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+120 42 lineto
+120 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% d02bhfAnnaType
+[ /Rect [ 0 0 114 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=D02BHFA) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 114 36 moveto
+0 36 lineto
+0 0 lineto
+114 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 114 36 moveto
+0 36 lineto
+0 0 lineto
+114 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+8 13 moveto
+(d02bhfAnnaType)
+[6.96 6.96 6.96 6.96 6.96 4.56 10.08 6.96 6.96 6.24 7.2 6.96 6.96 6.24]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v103d02cjfannatype.ps b/books/ps/v103d02cjfannatype.ps
new file mode 100644
index 0000000..360cb56
--- /dev/null
+++ b/books/ps/v103d02cjfannatype.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 154 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 154 80
+%%PageOrientation: Portrait
+gsave
+36 36 118 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+116 42 lineto
+116 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+116 42 lineto
+116 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% d02cjfAnnaType
+[ /Rect [ 0 0 110 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=D02CJFA) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 110 36 moveto
+0 36 lineto
+0 0 lineto
+110 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 110 36 moveto
+0 36 lineto
+0 0 lineto
+110 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+8 13 moveto
+(d02cjfAnnaType)
+[6.96 6.96 6.96 6.24 3.84 4.56 10.08 6.96 6.96 6.24 7.2 6.96 6.96 6.24]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v103d02ejfannatype.ps b/books/ps/v103d02ejfannatype.ps
new file mode 100644
index 0000000..84334be
--- /dev/null
+++ b/books/ps/v103d02ejfannatype.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 154 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 154 80
+%%PageOrientation: Portrait
+gsave
+36 36 118 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+116 42 lineto
+116 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+116 42 lineto
+116 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% d02ejfAnnaType
+[ /Rect [ 0 0 110 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=D02EJFA) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 110 36 moveto
+0 36 lineto
+0 0 lineto
+110 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 110 36 moveto
+0 36 lineto
+0 0 lineto
+110 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+8 13 moveto
+(d02ejfAnnaType)
+[6.96 6.96 6.96 6.24 3.84 4.56 10.08 6.96 6.96 6.24 7.2 6.96 6.96 6.24]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v103d03eefannatype.ps b/books/ps/v103d03eefannatype.ps
new file mode 100644
index 0000000..c4f501c
--- /dev/null
+++ b/books/ps/v103d03eefannatype.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 156 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 156 80
+%%PageOrientation: Portrait
+gsave
+36 36 120 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+118 42 lineto
+118 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+118 42 lineto
+118 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% d03eefAnnaType
+[ /Rect [ 0 0 112 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=D03EEFA) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 112 36 moveto
+0 36 lineto
+0 0 lineto
+112 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 112 36 moveto
+0 36 lineto
+0 0 lineto
+112 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+8 13 moveto
+(d03eefAnnaType)
+[6.96 6.96 6.96 6.24 6.24 4.56 10.08 6.96 6.96 6.24 7.2 6.96 6.96 6.24]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v103d03fafannatype.ps b/books/ps/v103d03fafannatype.ps
new file mode 100644
index 0000000..b9fed78
--- /dev/null
+++ b/books/ps/v103d03fafannatype.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 154 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 154 80
+%%PageOrientation: Portrait
+gsave
+36 36 118 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+116 42 lineto
+116 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+116 42 lineto
+116 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% d03fafAnnaType
+[ /Rect [ 0 0 110 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=D03FAFA) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 110 36 moveto
+0 36 lineto
+0 0 lineto
+110 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 110 36 moveto
+0 36 lineto
+0 0 lineto
+110 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+8 13 moveto
+(d03fafAnnaType)
+[6.96 6.96 6.96 4.32 6.24 4.56 10.08 6.96 6.96 6.24 7.2 6.96 6.96 6.24]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v103derhamcomplex.ps b/books/ps/v103derhamcomplex.ps
new file mode 100644
index 0000000..cc1eaae
--- /dev/null
+++ b/books/ps/v103derhamcomplex.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 162 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 162 80
+%%PageOrientation: Portrait
+gsave
+36 36 126 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+124 42 lineto
+124 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+124 42 lineto
+124 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% DeRhamComplex
+[ /Rect [ 0 0 118 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=DERHAM) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 118 36 moveto
+0 36 lineto
+0 0 lineto
+118 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 118 36 moveto
+0 36 lineto
+0 0 lineto
+118 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+8 13 moveto
+(DeRhamComplex)
+[10.08 6.24 9.36 6.96 6.24 10.8 9.36 6.96 10.56 6.96 3.84 5.76 6.96]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v103differentialsparsemultivariatepolynomial.ps b/books/ps/v103differentialsparsemultivariatepolynomial.ps
new file mode 100644
index 0000000..9b3d161
--- /dev/null
+++ b/books/ps/v103differentialsparsemultivariatepolynomial.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 296 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 296 80
+%%PageOrientation: Portrait
+gsave
+36 36 260 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+258 42 lineto
+258 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+258 42 lineto
+258 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% DifferentialSparseMultivariatePolynomial
+[ /Rect [ 0 0 252 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=DSMP) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 252 36 moveto
+0 36 lineto
+0 0 lineto
+252 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 252 36 moveto
+0 36 lineto
+0 0 lineto
+252 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+8 13 moveto
+(DifferentialSparseMultivariatePolynomial)
+[10.08 3.84 4.56 4.08 6.24 4.8 6.24 6.96 3.84 3.84 6.24 3.84 7.68 6.96 6.24 4.8 5.52 6.24 12.48 6.96 3.84 3.84 3.84 6.72 6.24 5.04 3.84 6.24 3.84 6.24 7.44 6.96 3.6 6.96 6.96 6.96 10.8 3.84 6.24 3.84]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v103drawoption.ps b/books/ps/v103drawoption.ps
new file mode 100644
index 0000000..df4e1a8
--- /dev/null
+++ b/books/ps/v103drawoption.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 130 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 130 80
+%%PageOrientation: Portrait
+gsave
+36 36 94 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+92 42 lineto
+92 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+92 42 lineto
+92 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% DrawOption
+[ /Rect [ 0 0 86 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=DROPT) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 86 36 moveto
+0 36 lineto
+0 0 lineto
+86 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 86 36 moveto
+0 36 lineto
+0 0 lineto
+86 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+7 13 moveto
+(DrawOption)
+[10.08 4.8 5.76 10.08 10.08 6.96 3.84 3.84 6.96 6.96]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v103extalgbasis.ps b/books/ps/v103extalgbasis.ps
new file mode 100644
index 0000000..59c822e
--- /dev/null
+++ b/books/ps/v103extalgbasis.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 130 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 130 80
+%%PageOrientation: Portrait
+gsave
+36 36 94 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+92 42 lineto
+92 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+92 42 lineto
+92 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% ExtAlgBasis
+[ /Rect [ 0 0 86 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=EAB) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 86 36 moveto
+0 36 lineto
+0 0 lineto
+86 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 86 36 moveto
+0 36 lineto
+0 0 lineto
+86 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+7 13 moveto
+(ExtAlgBasis)
+[8.64 6.96 3.84 10.08 3.84 6.96 9.36 6.24 5.52 3.84 5.52]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v103finitedivisor.ps b/books/ps/v103finitedivisor.ps
new file mode 100644
index 0000000..9a35d29
--- /dev/null
+++ b/books/ps/v103finitedivisor.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 134 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 134 80
+%%PageOrientation: Portrait
+gsave
+36 36 98 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+96 42 lineto
+96 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+96 42 lineto
+96 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% FiniteDivisor
+[ /Rect [ 0 0 90 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=FDIV) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 90 36 moveto
+0 36 lineto
+0 0 lineto
+90 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 90 36 moveto
+0 36 lineto
+0 0 lineto
+90 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+7 13 moveto
+(FiniteDivisor)
+[7.44 3.84 6.96 3.84 3.84 6.24 10.08 3.84 6.96 3.84 5.52 6.96 4.8]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v103fractionalideal.ps b/books/ps/v103fractionalideal.ps
new file mode 100644
index 0000000..023e086
--- /dev/null
+++ b/books/ps/v103fractionalideal.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 144 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 144 80
+%%PageOrientation: Portrait
+gsave
+36 36 108 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+106 42 lineto
+106 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+106 42 lineto
+106 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% FractionalIdeal
+[ /Rect [ 0 0 100 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=FRIDEAL) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 100 36 moveto
+0 36 lineto
+0 0 lineto
+100 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 100 36 moveto
+0 36 lineto
+0 0 lineto
+100 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+7 13 moveto
+(FractionalIdeal)
+[7.44 4.8 6.24 6.24 3.84 3.84 6.96 6.96 6.24 3.84 4.56 6.96 6.24 6.24 3.84]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v103fractionalidealfunctions2.ps b/books/ps/v103fractionalidealfunctions2.ps
new file mode 100644
index 0000000..cf5e267
--- /dev/null
+++ b/books/ps/v103fractionalidealfunctions2.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 206 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 206 80
+%%PageOrientation: Portrait
+gsave
+36 36 170 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+168 42 lineto
+168 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+168 42 lineto
+168 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% FractionalIdealFunctions2
+[ /Rect [ 0 0 162 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=FRIDEAL2) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 162 36 moveto
+0 36 lineto
+0 0 lineto
+162 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 162 36 moveto
+0 36 lineto
+0 0 lineto
+162 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+7 13 moveto
+(FractionalIdealFunctions2)
+[7.44 4.8 6.24 6.24 3.84 3.84 6.96 6.96 6.24 3.84 4.56 6.96 6.24 6.24 3.84 7.44 6.96 6.96 6.24 3.84 3.84 6.96 6.96 5.52 6.96]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v103framedmodule.ps b/books/ps/v103framedmodule.ps
new file mode 100644
index 0000000..477a9ad
--- /dev/null
+++ b/books/ps/v103framedmodule.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 146 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 146 80
+%%PageOrientation: Portrait
+gsave
+36 36 110 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+108 42 lineto
+108 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+108 42 lineto
+108 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% FramedModule
+[ /Rect [ 0 0 102 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=FRMOD) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 102 36 moveto
+0 36 lineto
+0 0 lineto
+102 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 102 36 moveto
+0 36 lineto
+0 0 lineto
+102 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+7 13 moveto
+(FramedModule)
+[7.44 4.8 6.24 10.8 6.24 6.96 12.48 6.96 6.96 6.96 3.84 6.24]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v103hyperellipticfinitedivisor.ps b/books/ps/v103hyperellipticfinitedivisor.ps
new file mode 100644
index 0000000..95bfe08
--- /dev/null
+++ b/books/ps/v103hyperellipticfinitedivisor.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 208 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 208 80
+%%PageOrientation: Portrait
+gsave
+36 36 172 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+170 42 lineto
+170 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+170 42 lineto
+170 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% HyperellipticFiniteDivisor
+[ /Rect [ 0 0 164 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=HELLFDIV) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 164 36 moveto
+0 36 lineto
+0 0 lineto
+164 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 164 36 moveto
+0 36 lineto
+0 0 lineto
+164 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+7 13 moveto
+(HyperellipticFiniteDivisor)
+[10.08 6.96 6.96 6.24 4.8 6.24 3.84 3.84 3.84 6.96 3.84 3.84 6.24 7.44 3.84 6.96 3.84 3.84 6.24 10.08 3.84 6.96 3.84 5.52 6.96 4.8]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v103integrationfunctionstable.ps b/books/ps/v103integrationfunctionstable.ps
new file mode 100644
index 0000000..336c7d9
--- /dev/null
+++ b/books/ps/v103integrationfunctionstable.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 208 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 208 80
+%%PageOrientation: Portrait
+gsave
+36 36 172 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+170 42 lineto
+170 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+170 42 lineto
+170 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% IntegrationFunctionsTable
+[ /Rect [ 0 0 164 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=INTFTBL) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 164 36 moveto
+0 36 lineto
+0 0 lineto
+164 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 164 36 moveto
+0 36 lineto
+0 0 lineto
+164 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+7 13 moveto
+(IntegrationFunctionsTable)
+[4.56 6.96 3.84 6.24 7.2 4.8 6.24 3.84 3.84 6.96 6.96 7.44 6.96 6.96 6.24 3.84 3.84 6.96 6.96 5.52 7.68 6.24 6.96 3.84 6.24]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v103odeintensityfunctionstable.ps b/books/ps/v103odeintensityfunctionstable.ps
new file mode 100644
index 0000000..c75b396
--- /dev/null
+++ b/books/ps/v103odeintensityfunctionstable.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 224 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 224 80
+%%PageOrientation: Portrait
+gsave
+36 36 188 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+186 42 lineto
+186 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+186 42 lineto
+186 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% ODEIntensityFunctionsTable
+[ /Rect [ 0 0 180 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=ODEIFTBL) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 180 36 moveto
+0 36 lineto
+0 0 lineto
+180 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 180 36 moveto
+0 36 lineto
+0 0 lineto
+180 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+8 13 moveto
+(ODEIntensityFunctionsTable)
+[10.08 10.08 8.64 4.56 6.96 3.84 6.24 6.96 5.52 3.84 3.84 6.96 7.44 6.96 6.96 6.24 3.84 3.84 6.96 6.96 5.52 7.68 6.24 6.96 3.84 6.24]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v103orderlydifferentialpolynomial.ps b/books/ps/v103orderlydifferentialpolynomial.ps
new file mode 100644
index 0000000..e947681
--- /dev/null
+++ b/books/ps/v103orderlydifferentialpolynomial.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 232 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 232 80
+%%PageOrientation: Portrait
+gsave
+36 36 196 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+194 42 lineto
+194 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+194 42 lineto
+194 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% OrderlyDifferentialPolynomial
+[ /Rect [ 0 0 188 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=ODPOL) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 188 36 moveto
+0 36 lineto
+0 0 lineto
+188 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 188 36 moveto
+0 36 lineto
+0 0 lineto
+188 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+8 13 moveto
+(OrderlyDifferentialPolynomial)
+[10.08 4.56 6.96 6.24 4.56 3.6 6.96 10.08 3.84 4.56 4.08 6.24 4.8 6.24 6.96 3.84 3.84 6.24 3.84 7.44 6.96 3.6 6.96 6.96 6.96 10.8 3.84 6.24 3.84]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v103orderlydifferentialvariable.ps b/books/ps/v103orderlydifferentialvariable.ps
new file mode 100644
index 0000000..83b9269
--- /dev/null
+++ b/books/ps/v103orderlydifferentialvariable.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 214 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 214 80
+%%PageOrientation: Portrait
+gsave
+36 36 178 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+176 42 lineto
+176 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+176 42 lineto
+176 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% OrderlyDifferentialVariable
+[ /Rect [ 0 0 170 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=ODVAR) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 170 36 moveto
+0 36 lineto
+0 0 lineto
+170 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 170 36 moveto
+0 36 lineto
+0 0 lineto
+170 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+7 13 moveto
+(OrderlyDifferentialVariable)
+[10.08 4.56 6.96 6.24 4.56 3.6 6.96 10.08 3.84 4.56 4.08 6.24 4.8 6.24 6.96 3.84 3.84 6.24 3.84 8.88 6.24 5.04 3.84 6.24 6.96 3.84 6.24]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v103sequentialdifferentialpolynomial.ps b/books/ps/v103sequentialdifferentialpolynomial.ps
new file mode 100644
index 0000000..23cc602
--- /dev/null
+++ b/books/ps/v103sequentialdifferentialpolynomial.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 246 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 246 80
+%%PageOrientation: Portrait
+gsave
+36 36 210 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+208 42 lineto
+208 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+208 42 lineto
+208 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% SequentialDifferentialPolynomial
+[ /Rect [ 0 0 202 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=SDPOL) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 202 36 moveto
+0 36 lineto
+0 0 lineto
+202 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 202 36 moveto
+0 36 lineto
+0 0 lineto
+202 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+7 13 moveto
+(SequentialDifferentialPolynomial)
+[7.68 6.24 6.72 6.96 6.24 6.96 3.84 3.84 6.24 3.84 10.08 3.84 4.56 4.08 6.24 4.8 6.24 6.96 3.84 3.84 6.24 3.84 7.44 6.96 3.6 6.96 6.96 6.96 10.8 3.84 6.24 3.84]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/books/ps/v103sequentialdifferentialvariable.ps b/books/ps/v103sequentialdifferentialvariable.ps
new file mode 100644
index 0000000..3cec7f7
--- /dev/null
+++ b/books/ps/v103sequentialdifferentialvariable.ps
@@ -0,0 +1,248 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: 36 36 230 80
+%%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
+	dup 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 aligned label in bounding box aligned to current point
+/alignedtext {			% width adj text
+	/text exch def
+	/adj exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			text stringwidth pop adj mul 0 rmoveto
+		} if
+		[] 0 setdash
+		text show
+	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
+%%Page: 1 1
+%%PageBoundingBox: 36 36 230 80
+%%PageOrientation: Portrait
+gsave
+36 36 194 44 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+1.0000 set_scale
+4 4 translate 0 rotate
+0.167 0.600 1.000 graphcolor
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+192 42 lineto
+192 -6 lineto
+closepath
+fill
+0.167 0.600 1.000 graphcolor
+newpath -6 -6 moveto
+-6 42 lineto
+192 42 lineto
+192 -6 lineto
+closepath
+stroke
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+% SequentialDifferentialVariable
+[ /Rect [ 0 0 186 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=SDVAR) >>
+  /Subtype /Link
+/ANN pdfmark
+gsave 10 dict begin
+filled
+0.537 0.247 0.902 nodecolor
+0.537 0.247 0.902 nodecolor
+newpath 186 36 moveto
+0 36 lineto
+0 0 lineto
+186 0 lineto
+closepath
+fill
+0.537 0.247 0.902 nodecolor
+newpath 186 36 moveto
+0 36 lineto
+0 0 lineto
+186 0 lineto
+closepath
+stroke
+gsave 10 dict begin
+0.000 0.000 0.000 nodecolor
+7 13 moveto
+(SequentialDifferentialVariable)
+[7.68 6.24 6.72 6.96 6.24 6.96 3.84 3.84 6.24 3.84 10.08 3.84 4.56 4.08 6.24 4.8 6.24 6.96 3.84 3.84 6.24 3.84 8.88 6.24 5.04 3.84 6.24 6.96 3.84 6.24]
+xshow
+end grestore
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/src/algebra/Makefile.pamphlet b/src/algebra/Makefile.pamphlet
index eb241b3..753049b 100644
--- a/src/algebra/Makefile.pamphlet
+++ b/src/algebra/Makefile.pamphlet
@@ -475,7 +475,6 @@ LAYER12=\
 carten.spad.pamphlet (GRMOD GRALG CARTEN CARTEN2)
 clip.spad.pamphlet (CLIP)
 coordsys.spad.pamphlet (COORDSYS)
-d02routine.spad.pamphlet (D02BBFA D02BHFA D02CJFA D02EJFA)
 ffpoly2.spad.pamphlet (FFPOLY2)
 irsn.spad.pamphlet (IRSN)
 numode.spad.pamphlet (NUMODE)
@@ -747,8 +746,6 @@ any.spad.pamphlet (NONE NONE1 ANY ANY1)
 c02.spad.pamphlet (NAGC02)
 c05.spad.pamphlet (NAGC05)
 c06.spad.pamphlet (NAGC06)
-d01routine.spad.pamphlet (D01AJFA D01AKFA D01AMFA D01APFA D01AQFA D01ALFA 
-                          D01ANFA D01ASFA D01GBFA D01FCFA)
 d02package.spad.pamphlet (ODEPACK)
 d03agents.spad.pamphlet (D03AGNT)
 d03package.spad.pamphlet (PDEPACK)
@@ -847,7 +844,6 @@ algfunc.spad.pamphlet (ACF ACFS AF)
 cmplxrt.spad.pamphlet (CMPLXRT)
 crfp.spad.pamphlet (CRFP)
 curve.spad.pamphlet (FFCAT MMAP FFCAT2 CHAVAR RDFF ALGFF)
-derham.spad.pamphlet (LALG EAB ANTISYM DERHAM)
 draw.spad.pamphlet (DRAWCFUN DRAW DRAWCURV DRAWPT)
 d01.spad.pamphlet (NAGD01)
 efstruc.spad.pamphlet (SYMFUNC TANEXP EFSTRUC ITRIGMNP TRIGMNIP CTRIGMNP)
@@ -960,7 +956,6 @@ defintef.spad.pamphlet (DEFINTEF)
 defintrf.spad.pamphlet (DFINTTLS DEFINTRF)
 divisor.spad.pamphlet (FRIDEAL FRIDEAL2 MHROWRED FRMOD FDIVCAT HELLFDIV FDIV
                        FDIV2)
-d01transform.spad.pamphlet (D01TRNS)
 efuls.spad.pamphlet (EFULS)
 expr.spad.pamphlet (EXPR PAN2EXPR EXPR2 PMPREDFS PMASSFS PMPRED PMASS HACKPI
                     PICOERCE)
@@ -1164,13 +1159,13 @@ SPADFILES= \
  ${OUTSRC}/coordsys.spad ${OUTSRC}/cra.spad ${OUTSRC}/crfp.spad \
  ${OUTSRC}/curve.spad ${OUTSRC}/cycles.spad ${OUTSRC}/cyclotom.spad \
  ${OUTSRC}/d01agents.spad ${OUTSRC}/d01package.spad \
- ${OUTSRC}/d01routine.spad ${OUTSRC}/d01.spad ${OUTSRC}/d01transform.spad \
+ ${OUTSRC}/d01.spad  \
  ${OUTSRC}/d01weights.spad ${OUTSRC}/d02agents.spad \
- ${OUTSRC}/d02package.spad ${OUTSRC}/d02routine.spad ${OUTSRC}/d02.spad \
+ ${OUTSRC}/d02package.spad ${OUTSRC}/d02.spad \
  ${OUTSRC}/d03agents.spad ${OUTSRC}/d03package.spad \
- ${OUTSRC}/d03routine.spad ${OUTSRC}/d03.spad ${OUTSRC}/ddfact.spad \
+ ${OUTSRC}/d03.spad ${OUTSRC}/ddfact.spad \
  ${OUTSRC}/defaults.spad ${OUTSRC}/defintef.spad ${OUTSRC}/defintrf.spad \
- ${OUTSRC}/degred.spad ${OUTSRC}/derham.spad  \
+ ${OUTSRC}/degred.spad \
  ${OUTSRC}/divisor.spad ${OUTSRC}/dpolcat.spad ${OUTSRC}/drawopt.spad \
  ${OUTSRC}/drawpak.spad ${OUTSRC}/draw.spad \
  ${OUTSRC}/e01.spad ${OUTSRC}/e02.spad ${OUTSRC}/e04agents.spad \
@@ -1322,13 +1317,13 @@ DOCFILES= \
  ${DOC}/coordsys.spad.dvi ${DOC}/cra.spad.dvi ${DOC}/crfp.spad.dvi \
  ${DOC}/curve.spad.dvi ${DOC}/cycles.spad.dvi ${DOC}/cyclotom.spad.dvi \
  ${DOC}/d01agents.spad.dvi ${DOC}/d01package.spad.dvi \
- ${DOC}/d01routine.spad.dvi ${DOC}/d01.spad.dvi ${DOC}/d01transform.spad.dvi \
+ ${DOC}/d01.spad.dvi  \
  ${DOC}/d01weights.spad.dvi ${DOC}/d02agents.spad.dvi \
- ${DOC}/d02package.spad.dvi ${DOC}/d02routine.spad.dvi ${DOC}/d02.spad.dvi \
+ ${DOC}/d02package.spad.dvi ${DOC}/d02.spad.dvi \
  ${DOC}/d03agents.spad.dvi ${DOC}/d03package.spad.dvi \
- ${DOC}/d03routine.spad.dvi ${DOC}/d03.spad.dvi ${DOC}/ddfact.spad.dvi \
+ ${DOC}/d03.spad.dvi ${DOC}/ddfact.spad.dvi \
  ${DOC}/defaults.spad.dvi ${DOC}/defintef.spad.dvi ${DOC}/defintrf.spad.dvi \
- ${DOC}/degred.spad.dvi ${DOC}/derham.spad.dvi  \
+ ${DOC}/degred.spad.dvi   \
  ${DOC}/divisor.spad.dvi ${DOC}/dpolcat.spad.dvi ${DOC}/drawopt.spad.dvi \
  ${DOC}/drawpak.spad.dvi ${DOC}/draw.spad.dvi \
  ${DOC}/e01.spad.dvi ${DOC}/e02.spad.dvi ${DOC}/e04agents.spad.dvi \
@@ -2290,12 +2285,12 @@ ${HELP}/CycleIndicators.help: ${IN}/cycles.spad.pamphlet
 	@${TANGLE} -R"CycleIndicators.input" ${IN}/cycles.spad.pamphlet \
             >${INPUT}/CycleIndicators.input
 
-${HELP}/DeRhamComplex.help: ${IN}/derham.spad.pamphlet
-	@echo 7013 create DeRhamComplex.help from ${IN}/derham.spad.pamphlet
-	@${TANGLE} -R"DeRhamComplex.help" ${IN}/derham.spad.pamphlet \
+${HELP}/DeRhamComplex.help: ${BOOKS}/bookvol10.3.pamphlet
+	@echo 7013 create DeRhamComplex.help from ${BOOKS}/bookvol10.3.pamphlet
+	@${TANGLE} -R"DeRhamComplex.help" ${BOOKS}/bookvol10.3.pamphlet \
             >${HELP}/DeRhamComplex.help
 	@cp ${HELP}/DeRhamComplex.help ${HELP}/DERHAM.help
-	@${TANGLE} -R"DeRhamComplex.input" ${IN}/derham.spad.pamphlet \
+	@${TANGLE} -R"DeRhamComplex.input" ${BOOKS}/bookvol10.3.pamphlet \
             >${INPUT}/DeRhamComplex.input
 
 ${HELP}/DecimalExpansion.help: ${IN}/radix.spad.pamphlet
diff --git a/src/algebra/d01agents.spad.pamphlet b/src/algebra/d01agents.spad.pamphlet
index 60aec7a..b563ed6 100644
--- a/src/algebra/d01agents.spad.pamphlet
+++ b/src/algebra/d01agents.spad.pamphlet
@@ -9,105 +9,6 @@
 \eject
 \tableofcontents
 \eject
-\section{domain INTFTBL IntegrationFunctionsTable}
-<<domain INTFTBL IntegrationFunctionsTable>>=
-)abbrev domain INTFTBL IntegrationFunctionsTable
-++ Author: Brian Dupee
-++ Date Created: March 1995
-++ Date Last Updated: June 1995
-++ Description:
-++
-IntegrationFunctionsTable(): E == I where
-  EF2	==> ExpressionFunctions2
-  EFI	==> Expression Fraction Integer
-  FI	==> Fraction Integer
-  LEDF	==> List Expression DoubleFloat
-  KEDF	==> Kernel Expression DoubleFloat
-  EEDF	==> Equation Expression DoubleFloat
-  EDF	==> Expression DoubleFloat
-  PDF	==> Polynomial DoubleFloat
-  LDF	==> List DoubleFloat
-  SDF	==> Stream DoubleFloat
-  DF	==> DoubleFloat
-  F	==> Float
-  ST	==> String
-  LST	==> List String
-  SI	==> SingleInteger
-  SOCDF	==> Segment OrderedCompletion DoubleFloat
-  OCDF	==> OrderedCompletion DoubleFloat
-  OCEDF	==> OrderedCompletion Expression DoubleFloat
-  EOCEFI  ==> Equation OrderedCompletion Expression Fraction Integer
-  OCEFI   ==> OrderedCompletion Expression Fraction Integer
-  OCFI    ==> OrderedCompletion Fraction Integer
-  NIA	==> Record(var:Symbol,fn:EDF,range:SOCDF,abserr:DF,relerr:DF)
-  INT	==> Integer
-  CTYPE	==> Union(continuous: "Continuous at the end points",
-             lowerSingular: "There is a singularity at the lower end point",
-              upperSingular: "There is a singularity at the upper end point",
-               bothSingular: "There are singularities at both end points",
-                notEvaluated: "End point continuity not yet evaluated")
-  RTYPE	==> Union(finite: "The range is finite",
-              lowerInfinite: "The bottom of range is infinite",
-                upperInfinite: "The top of range is infinite",
-                  bothInfinite: "Both top and bottom points are infinite",
-                    notEvaluated: "Range not yet evaluated")
-  STYPE	==> Union(str:SDF,
-                   notEvaluated:"Internal singularities not yet evaluated")
-  ATT	==> Record(endPointContinuity:CTYPE,
-                    singularitiesStream:STYPE,range:RTYPE)
-  ROA	==> Record(key:NIA,entry:ATT)
-
-  E ==> with
-
-    showTheFTable:() -> $
-      ++ showTheFTable() returns the current table of functions.
-    clearTheFTable : () -> Void
-      ++ clearTheFTable() clears the current table of functions.
-    keys : $ -> List(NIA)
-      ++ keys(f) returns the list of keys of f
-    fTable: List Record(key:NIA,entry:ATT) -> $
-      ++ fTable(l) creates a functions table from the elements of l.
-    insert!:Record(key:NIA,entry:ATT) -> $
-      ++ insert!(r) inserts an entry r into theIFTable
-    showAttributes:NIA -> Union(ATT,"failed")
-      ++ showAttributes(x) \undocumented{}
-    entries : $ -> List Record(key:NIA,entry:ATT)
-      ++ entries(x) \undocumented{}
-    entry:NIA -> ATT
-      ++ entry(n) \undocumented{}
-  I ==> add
-
-    Rep := Table(NIA,ATT)
-    import Rep
-
-    theFTable:$ := empty()$Rep
-
-    showTheFTable():$ ==
-      theFTable
-
-    clearTheFTable():Void ==
-      theFTable := empty()$Rep
-      void()$Void
-
-    fTable(l:List Record(key:NIA,entry:ATT)):$ ==
-      theFTable := table(l)$Rep
-
-    insert!(r:Record(key:NIA,entry:ATT)):$ ==
-      insert!(r,theFTable)$Rep
-
-    keys(t:$):List NIA ==
-      keys(t)$Rep
-
-    showAttributes(k:NIA):Union(ATT,"failed") ==
-      search(k,theFTable)$Rep
-
-    entries(t:$):List Record(key:NIA,entry:ATT) ==
-      members(t)$Rep
-
-    entry(k:NIA):ATT ==
-      qelt(theFTable,k)$Rep
-
-@
 \section{package D01AGNT d01AgentsPackage}
 <<package D01AGNT d01AgentsPackage>>=
 )abbrev package D01AGNT d01AgentsPackage
@@ -420,7 +321,6 @@ d01AgentsPackage(): E == I where
 <<*>>=
 <<license>>
 
-<<domain INTFTBL IntegrationFunctionsTable>>
 <<package D01AGNT d01AgentsPackage>>
 @
 \eject
diff --git a/src/algebra/d01routine.spad.pamphlet b/src/algebra/d01routine.spad.pamphlet
deleted file mode 100644
index 6daf17f..0000000
--- a/src/algebra/d01routine.spad.pamphlet
+++ /dev/null
@@ -1,751 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/algebra d01routine.spad}
-\author{Brian Dupee}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{domain D01AJFA d01ajfAnnaType}
-<<domain D01AJFA d01ajfAnnaType>>=
-)abbrev domain D01AJFA d01ajfAnnaType
-++ Author: Brian Dupee
-++ Date Created: March 1994
-++ Date Last Updated: December 1997
-++ Basic Operations: measure, numericalIntegration
-++ Related Constructors: Result, RoutinesTable
-++ Description:
-++ \axiomType{d01ajfAnnaType} is a domain of \axiomType{NumericalIntegrationCategory}
-++ for the NAG routine D01AJF, a general numerical integration routine which
-++ can handle some singularities in the input function.  The function
-++ \axiomFun{measure} measures the usefulness of the routine D01AJF
-++ for the given problem.  The function \axiomFun{numericalIntegration}
-++ performs the integration by using \axiomType{NagIntegrationPackage}.
-
-d01ajfAnnaType(): NumericalIntegrationCategory == Result add
-  EF2	==> ExpressionFunctions2
-  EDF	==> Expression DoubleFloat
-  LDF	==> List DoubleFloat
-  SDF	==> Stream DoubleFloat
-  DF	==> DoubleFloat
-  FI	==> Fraction Integer
-  EFI	==> Expression Fraction Integer
-  SOCDF	==> Segment OrderedCompletion DoubleFloat
-  NIA	==> Record(var:Symbol,fn:EDF,range:SOCDF,abserr:DF,relerr:DF)
-  MDNIA	==> Record(fn:EDF,range:List SOCDF,abserr:DF,relerr:DF)
-  INT	==> Integer
-  BOP	==> BasicOperator
-  S	==> Symbol
-  ST	==> String
-  LST	==> List String
-  RT	==> RoutinesTable
-  Rep:=Result
-  import Rep, NagIntegrationPackage, d01AgentsPackage
-
-  measure(R:RT,args:NIA) ==
-    ext:Result := empty()$Result
-    pp:SDF := singularitiesOf(args)
-    not (empty?(pp)$SDF) =>
-      [0.1,"d01ajf: There is a possible problem at the following point(s): "
-           commaSeparate(sdf2lst(pp)) ,ext]
-    [getMeasure(R,d01ajf :: S)$RT,
-       "The general routine d01ajf is our default",ext]
-
-  numericalIntegration(args:NIA,hints:Result) ==
-    ArgsFn := map(convert(#1)$DF,args.fn)$EF2(DF,Float)
-    b:Float := getButtonValue("d01ajf","functionEvaluations")$AttributeButtons
-    fEvals:INT := wholePart exp(1.1513*(1.0/(2.0*(1.0-b))))
-    iw:INT := 75*fEvals
-    f : Union(fn:FileName,fp:Asp1(F)) := [retract(ArgsFn)$Asp1(F)]
-    d01ajf(getlo(args.range),gethi(args.range),args.abserr,args.relerr,4*iw,iw,-1,f)
-
-@
-\section{domain D01AKFA d01akfAnnaType}
-<<domain D01AKFA d01akfAnnaType>>=
-)abbrev domain D01AKFA d01akfAnnaType
-++ Author: Brian Dupee
-++ Date Created: March 1994
-++ Date Last Updated: December 1997
-++ Basic Operations: measure, numericalIntegration
-++ Related Constructors: Result, RoutinesTable
-++ Description:
-++ \axiomType{d01akfAnnaType} is a domain of \axiomType{NumericalIntegrationCategory}
-++ for the NAG routine D01AKF, a numerical integration routine which is
-++ is suitable for oscillating, non-singular functions.  The function
-++ \axiomFun{measure} measures the usefulness of the routine D01AKF
-++ for the given problem.  The function \axiomFun{numericalIntegration}
-++ performs the integration by using \axiomType{NagIntegrationPackage}.
-
-d01akfAnnaType(): NumericalIntegrationCategory == Result add
-  EF2	==> ExpressionFunctions2
-  EDF	==> Expression DoubleFloat
-  LDF	==> List DoubleFloat
-  SDF	==> Stream DoubleFloat
-  DF	==> DoubleFloat
-  FI	==> Fraction Integer
-  EFI	==> Expression Fraction Integer
-  SOCDF	==> Segment OrderedCompletion DoubleFloat
-  NIA	==> Record(var:Symbol,fn:EDF,range:SOCDF,abserr:DF,relerr:DF)
-  MDNIA	==> Record(fn:EDF,range:List SOCDF,abserr:DF,relerr:DF)
-  INT	==> Integer
-  BOP	==> BasicOperator
-  S	==> Symbol
-  ST	==> String
-  LST	==> List String
-  RT	==> RoutinesTable
-  Rep:=Result
-  import Rep, d01AgentsPackage, NagIntegrationPackage
-
-  measure(R:RT,args:NIA) ==
-    ext:Result := empty()$Result
-    pp:SDF := singularitiesOf(args)
-    not (empty?(pp)$SDF) =>
-      [0.0,"d01akf: There is a possible problem at the following point(s): "
-              commaSeparate(sdf2lst(pp)) ,ext]
-    o:Float := functionIsOscillatory(args)
-    one := 1.0
-    m:Float := (getMeasure(R,d01akf@S)$RT)*(one-one/(one+sqrt(o)))**2
-    m > 0.8 => [m,"d01akf: The expression shows much oscillation",ext]
-    m > 0.6 => [m,"d01akf: The expression shows some oscillation",ext]
-    m > 0.5 => [m,"d01akf: The expression shows little oscillation",ext]
-    [m,"d01akf: The expression shows little or no oscillation",ext]
-
-  numericalIntegration(args:NIA,hints:Result) ==
-    ArgsFn := map(convert(#1)$DF,args.fn)$EF2(DF,Float)
-    b:Float := getButtonValue("d01akf","functionEvaluations")$AttributeButtons
-    fEvals:INT := wholePart exp(1.1513*(1.0/(2.0*(1.0-b))))
-    iw:INT := 75*fEvals
-    f : Union(fn:FileName,fp:Asp1(F)) := [retract(ArgsFn)$Asp1(F)]
-    d01akf(getlo(args.range),gethi(args.range),args.abserr,args.relerr,4*iw,iw,-1,f)
-
-@
-\section{domain D01AMFA d01amfAnnaType}
-<<domain D01AMFA d01amfAnnaType>>=
-)abbrev domain D01AMFA d01amfAnnaType
-++ Author: Brian Dupee
-++ Date Created: March 1994
-++ Date Last Updated: December 1997
-++ Basic Operations: measure, numericalIntegration
-++ Related Constructors: Result, RoutinesTable
-++ Description:
-++ \axiomType{d01amfAnnaType} is a domain of \axiomType{NumericalIntegrationCategory}
-++ for the NAG routine D01AMF, a general numerical integration routine which
-++ can handle infinite or semi-infinite range of the input function.  The 
-++ function \axiomFun{measure} measures the usefulness of the routine D01AMF
-++ for the given problem.  The function \axiomFun{numericalIntegration}
-++ performs the integration by using \axiomType{NagIntegrationPackage}.
-
-d01amfAnnaType(): NumericalIntegrationCategory == Result add
-  EF2	==> ExpressionFunctions2
-  EDF	==> Expression DoubleFloat
-  LDF	==> List DoubleFloat
-  SDF	==> Stream DoubleFloat
-  DF	==> DoubleFloat
-  FI	==> Fraction Integer
-  EFI	==> Expression Fraction Integer
-  SOCDF	==> Segment OrderedCompletion DoubleFloat
-  NIA	==> Record(var:Symbol,fn:EDF,range:SOCDF,abserr:DF,relerr:DF)
-  MDNIA	==> Record(fn:EDF,range:List SOCDF,abserr:DF,relerr:DF)
-  INT	==> Integer
-  BOP	==> BasicOperator
-  S	==> Symbol
-  ST	==> String
-  LST	==> List String
-  RT	==> RoutinesTable
-  Rep:=Result
-  import Rep, d01AgentsPackage, NagIntegrationPackage
-
-  measure(R:RT,args:NIA) ==
-    ext:Result := empty()$Result
-    Range:=rangeIsFinite(args)
-    pp:SDF := singularitiesOf(args)
-    not (empty?(pp)$SDF) =>
-      [0.0,"d01amf: There is a possible problem at the following point(s): "
-                     commaSeparate(sdf2lst(pp)), ext]
-    [getMeasure(R,d01amf@S)$RT, "d01amf is a reasonable choice if the "
-         "integral is infinite or semi-infinite and d01transform cannot "
-           "do better than using general routines",ext]
-
-  numericalIntegration(args:NIA,hints:Result) ==
-    r:INT
-    bound:DF
-    ArgsFn := map(convert(#1)$DF,args.fn)$EF2(DF,Float)
-    b:Float := getButtonValue("d01amf","functionEvaluations")$AttributeButtons
-    fEvals:INT := wholePart exp(1.1513*(1.0/(2.0*(1.0-b))))
-    iw:INT := 150*fEvals
-    f : Union(fn:FileName,fp:Asp1(F)) := [retract(ArgsFn)$Asp1(F)]
-    Range:=rangeIsFinite(args)
-    if (Range case upperInfinite) then
-      bound := getlo(args.range)
-      r := 1
-    else if (Range case lowerInfinite) then
-      bound := gethi(args.range)
-      r := -1
-    else 
-      bound := 0$DF
-      r := 2
-    d01amf(bound,r,args.abserr,args.relerr,4*iw,iw,-1,f)
-
-@
-\section{domain D01APFA d01apfAnnaType}
-<<domain D01APFA d01apfAnnaType>>=
-)abbrev domain D01APFA d01apfAnnaType
-++ Author: Brian Dupee
-++ Date Created: March 1994
-++ Date Last Updated: December 1997
-++ Basic Operations: measure, numericalIntegration
-++ Related Constructors: Result, RoutinesTable
-++ Description:
-++ \axiomType{d01apfAnnaType} is a domain of \axiomType{NumericalIntegrationCategory}
-++ for the NAG routine D01APF, a general numerical integration routine which
-++ can handle end point singularities of the algebraico-logarithmic form
-++ w(x) = (x-a)^c * (b-x)^d.  The 
-++ function \axiomFun{measure} measures the usefulness of the routine D01APF
-++ for the given problem.  The function \axiomFun{numericalIntegration}
-++ performs the integration by using \axiomType{NagIntegrationPackage}.
-
-d01apfAnnaType(): NumericalIntegrationCategory == Result add
-  EF2	==> ExpressionFunctions2
-  EDF	==> Expression DoubleFloat
-  LDF	==> List DoubleFloat
-  SDF	==> Stream DoubleFloat
-  DF	==> DoubleFloat
-  FI	==> Fraction Integer
-  EFI	==> Expression Fraction Integer
-  SOCDF	==> Segment OrderedCompletion DoubleFloat
-  NIA	==> Record(var:Symbol,fn:EDF,range:SOCDF,abserr:DF,relerr:DF)
-  MDNIA	==> Record(fn:EDF,range:List SOCDF,abserr:DF,relerr:DF)
-  INT	==> Integer
-  BOP	==> BasicOperator
-  S	==> Symbol
-  ST	==> String
-  LST	==> List String
-  RT	==> RoutinesTable
-  Rep:=Result
-  import Rep, NagIntegrationPackage, d01AgentsPackage, d01WeightsPackage
-
-  measure(R:RT,args:NIA) ==
-    ext:Result := empty()$Result
-    d := (c := 0$DF)
-    if ((a := exprHasAlgebraicWeight(args)) case LDF) then
-      if  (a.1 > -1) then c := a.1
-      if  (a.2 > -1) then d := a.2
-    l:INT := exprHasLogarithmicWeights(args)
---    (zero? c) and (zero? d) and (one? l) =>
-    (zero? c) and (zero? d) and (l = 1) =>
-        [0.0,"d01apf: A suitable singularity has not been found", ext]
-    out:LDF := [c,d,l :: DF]
-    outany:Any := coerce(out)$AnyFunctions1(LDF)
-    ex:Record(key:S,entry:Any) := [d01apfextra@S,outany]
-    ext := insert!(ex,ext)$Result
-    st:ST :=  "Recommended is d01apf with c = " df2st(c) ", d = " 
-                            df2st(d) " and l = " string(l)$ST
-    [getMeasure(R,d01apf@S)$RT, st, ext]
-
-  numericalIntegration(args:NIA,hints:Result) ==
-
-    Var:EDF := coerce(args.var)$EDF
-    la:Any := coerce(search((d01apfextra@S),hints)$Result)@Any
-    list:LDF := retract(la)$AnyFunctions1(LDF)
-    Fac1:EDF := (Var - (getlo(args.range) :: EDF))$EDF
-    Fac2:EDF := ((gethi(args.range) :: EDF) - Var)$EDF
-    c := first(list)$LDF
-    d := second(list)$LDF
-    l := (retract(third(list)$LDF)@INT)$DF
-    thebiz:EDF := (Fac1**(c :: EDF))*(Fac2**(d :: EDF))
-    if l > 1 then
-      if l = 2 then
-        thebiz := thebiz*log(Fac1)
-      else if l = 3 then
-        thebiz := thebiz*log(Fac2)
-      else
-        thebiz := thebiz*log(Fac1)*log(Fac2)
-    Fn :=  (args.fn/thebiz)$EDF
-    ArgsFn := map(convert(#1)$DF,Fn)$EF2(DF,Float)
-    b:Float := getButtonValue("d01apf","functionEvaluations")$AttributeButtons
-    fEvals:INT := wholePart exp(1.1513*(1.0/(2.0*(1.0-b))))
-    iw:INT := 75*fEvals
-    f : Union(fn:FileName,fp:Asp1(G)) := [retract(ArgsFn)$Asp1(G)]
-    d01apf(getlo(args.range),gethi(args.range),c,d,l,args.abserr,args.relerr,4*iw,iw,-1,f)
-
-@
-\section{domain D01AQFA d01aqfAnnaType}
-<<domain D01AQFA d01aqfAnnaType>>=
-)abbrev domain D01AQFA d01aqfAnnaType
-++ Author: Brian Dupee
-++ Date Created: March 1994
-++ Date Last Updated: December 1997
-++ Basic Operations: measure, numericalIntegration
-++ Related Constructors: Result, RoutinesTable
-++ Description:
-++ \axiomType{d01aqfAnnaType} is a domain of \axiomType{NumericalIntegrationCategory}
-++ for the NAG routine D01AQF, a general numerical integration routine which
-++ can solve an integral of the form \newline
-++ \centerline{\inputbitmap{/home/bjd/Axiom/anna/hypertex/bitmaps/d01aqf.xbm}}   
-++ The function \axiomFun{measure} measures the usefulness of the routine 
-++ D01AQF for the given problem.  The function \axiomFun{numericalIntegration}
-++ performs the integration by using \axiomType{NagIntegrationPackage}.
-
-d01aqfAnnaType(): NumericalIntegrationCategory == Result add
-  EF2	==> ExpressionFunctions2
-  EDF	==> Expression DoubleFloat
-  LDF	==> List DoubleFloat
-  SDF	==> Stream DoubleFloat
-  DF	==> DoubleFloat
-  FI	==> Fraction Integer
-  EFI	==> Expression Fraction Integer
-  SOCDF	==> Segment OrderedCompletion DoubleFloat
-  NIA	==> Record(var:Symbol,fn:EDF,range:SOCDF,abserr:DF,relerr:DF)
-  MDNIA	==> Record(fn:EDF,range:List SOCDF,abserr:DF,relerr:DF)
-  INT	==> Integer
-  BOP	==> BasicOperator
-  S	==> Symbol
-  ST	==> String
-  LST	==> List String
-  RT	==> RoutinesTable
-  Rep:=Result
-  import Rep, d01AgentsPackage, NagIntegrationPackage
-
-  measure(R:RT,args:NIA) ==
-    ext:Result := empty()$Result
-    Den := denominator(args.fn)
---    one? Den =>
-    (Den = 1) =>
-      [0.0,"d01aqf: A suitable weight function has not been found", ext]
-    listOfZeros:LDF := problemPoints(args.fn,args.var,args.range)
-    numberOfZeros := (#(listOfZeros))$LDF
-    zero?(numberOfZeros) =>
-      [0.0,"d01aqf: A suitable weight function has not been found", ext]
-    numberOfZeros = 1 =>
-      s:SDF := singularitiesOf(args)
-      more?(s,1)$SDF => 
-        [0.0,"d01aqf: Too many singularities have been found", ext]
-      cFloat:Float := (convert(first(listOfZeros)$LDF)@Float)$DF
-      cString:ST := (convert(cFloat)@ST)$Float
-      lany:Any := coerce(listOfZeros)$AnyFunctions1(LDF)
-      ex:Record(key:S,entry:Any) := [d01aqfextra@S,lany]
-      ext := insert!(ex,ext)$Result
-      [getMeasure(R,d01aqf@S)$RT, "Recommended is d01aqf with the "
-        "hilbertian weight function of 1/(x-c) where c = " cString, ext]
-    [0.0,"d01aqf: More than one factor has been found and so does not "
-                "have a suitable weight function",ext]
-
-  numericalIntegration(args:NIA,hints:Result) ==
-    Args := copy args
-    ca:Any :=  coerce(search((d01aqfextra@S),hints)$Result)@Any
-    c:DF := first(retract(ca)$AnyFunctions1(LDF))$LDF
-    ci:FI := df2fi(c)$ExpertSystemToolsPackage
-    Var:EFI := Args.var :: EFI
-    Gx:EFI := (Var-(ci::EFI))*(edf2efi(Args.fn)$ExpertSystemToolsPackage)
-    ArgsFn := map(convert(#1)$FI,Gx)$EF2(FI,Float)
-    b:Float := getButtonValue("d01aqf","functionEvaluations")$AttributeButtons
-    fEvals:INT := wholePart exp(1.1513*(1.0/(2.0*(1.0-b))))
-    iw:INT := 75*fEvals
-    f : Union(fn:FileName,fp:Asp1(G)) := [retract(ArgsFn)$Asp1(G)]
-    d01aqf(getlo(Args.range),gethi(Args.range),c,Args.abserr,Args.relerr,4*iw,iw,-1,f)
-
-@
-\section{domain D01ALFA d01alfAnnaType}
-<<domain D01ALFA d01alfAnnaType>>=
-)abbrev domain D01ALFA d01alfAnnaType
-++ Author: Brian Dupee
-++ Date Created: March 1994
-++ Date Last Updated: December 1997
-++ Basic Operations: measure, numericalIntegration
-++ Related Constructors: Result, RoutinesTable
-++ Description:
-++ \axiomType{d01alfAnnaType} is a domain of \axiomType{NumericalIntegrationCategory}
-++ for the NAG routine D01ALF, a general numerical integration routine which
-++ can handle a list of singularities.  The 
-++ function \axiomFun{measure} measures the usefulness of the routine D01ALF
-++ for the given problem.  The function \axiomFun{numericalIntegration}
-++ performs the integration by using \axiomType{NagIntegrationPackage}.
-
-d01alfAnnaType(): NumericalIntegrationCategory == Result add
-  EF2	==> ExpressionFunctions2
-  EDF	==> Expression DoubleFloat
-  LDF	==> List DoubleFloat
-  SDF	==> Stream DoubleFloat
-  DF	==> DoubleFloat
-  FI	==> Fraction Integer
-  EFI	==> Expression Fraction Integer
-  SOCDF	==> Segment OrderedCompletion DoubleFloat
-  NIA	==> Record(var:Symbol,fn:EDF,range:SOCDF,abserr:DF,relerr:DF)
-  MDNIA	==> Record(fn:EDF,range:List SOCDF,abserr:DF,relerr:DF)
-  INT	==> Integer
-  BOP	==> BasicOperator
-  S	==> Symbol
-  ST	==> String
-  LST	==> List String
-  RT	==> RoutinesTable
-  Rep:=Result
-  import Rep, d01AgentsPackage, NagIntegrationPackage
-
-  measure(R:RT,args:NIA) ==
-    ext:Result := empty()$Result
-    streamOfZeros:SDF := singularitiesOf(args)
-    listOfZeros:LST := removeDuplicates!(sdf2lst(streamOfZeros))
-    numberOfZeros:INT := # listOfZeros
-    (numberOfZeros > 15)@Boolean => 
-      [0.0,"d01alf: The list of singularities is too long", ext]
-    positive?(numberOfZeros) =>
-      l:LDF := entries(complete(streamOfZeros)$SDF)$SDF
-      lany:Any := coerce(l)$AnyFunctions1(LDF)
-      ex:Record(key:S,entry:Any) := [d01alfextra@S,lany]
-      ext := insert!(ex,ext)$Result
-      st:ST := "Recommended is d01alf with the singularities "
-                     commaSeparate(listOfZeros)
-      m := 
---        one?(numberOfZeros) => 0.4
-        (numberOfZeros = 1) => 0.4
-        getMeasure(R,d01alf@S)$RT
-      [m, st, ext]
-    [0.0, "d01alf: A list of suitable singularities has not been found", ext]
-
-  numericalIntegration(args:NIA,hints:Result) ==
-    la:Any := coerce(search((d01alfextra@S),hints)$Result)@Any
-    listOfZeros:LDF := retract(la)$AnyFunctions1(LDF)
-    l:= removeDuplicates(listOfZeros)$LDF
-    n:Integer := (#(l))$List(DF)
-    M:Matrix DF := matrix([l])$(Matrix DF)
-    b:Float := getButtonValue("d01alf","functionEvaluations")$AttributeButtons
-    fEvals:INT := wholePart exp(1.1513*(1.0/(2.0*(1.0-b))))
-    iw:INT := 75*fEvals
-    ArgsFn := map(convert(#1)$DF,args.fn)$EF2(DF,Float)
-    f : Union(fn:FileName,fp:Asp1(F)) := [retract(ArgsFn)$Asp1(F)]
-    d01alf(getlo(args.range),gethi(args.range),n,M,args.abserr,args.relerr,2*n*iw,n*iw,-1,f)
-
-@
-\section{domain D01ANFA d01anfAnnaType}
-<<domain D01ANFA d01anfAnnaType>>=
-)abbrev domain D01ANFA d01anfAnnaType
-++ Author: Brian Dupee
-++ Date Created: March 1994
-++ Date Last Updated: December 1997
-++ Basic Operations: measure, numericalIntegration
-++ Related Constructors: Result, RoutinesTable
-++ Description:
-++ \axiomType{d01anfAnnaType} is a domain of \axiomType{NumericalIntegrationCategory}
-++ for the NAG routine D01ANF, a numerical integration routine which can
-++ handle weight functions of the form cos(\omega x) or sin(\omega x).  The 
-++ function \axiomFun{measure} measures the usefulness of the routine D01ANF
-++ for the given problem.  The function \axiomFun{numericalIntegration}
-++ performs the integration by using \axiomType{NagIntegrationPackage}.
-
-d01anfAnnaType(): NumericalIntegrationCategory == Result add
-  EF2	==> ExpressionFunctions2
-  EDF	==> Expression DoubleFloat
-  LDF	==> List DoubleFloat
-  SDF	==> Stream DoubleFloat
-  DF	==> DoubleFloat
-  FI	==> Fraction Integer
-  EFI	==> Expression Fraction Integer
-  SOCDF	==> Segment OrderedCompletion DoubleFloat
-  NIA	==> Record(var:Symbol,fn:EDF,range:SOCDF,abserr:DF,relerr:DF)
-  MDNIA	==> Record(fn:EDF,range:List SOCDF,abserr:DF,relerr:DF)
-  INT	==> Integer
-  BOP	==> BasicOperator
-  S	==> Symbol
-  ST	==> String
-  LST	==> List String
-  RT	==> RoutinesTable
-  Rep:=Result
-  import Rep, d01WeightsPackage, d01AgentsPackage, NagIntegrationPackage
-
-  measure(R:RT,args:NIA) ==
-    ext:Result := empty()$Result
-    weight:Union(Record(op:BOP,w:DF),"failed") :=
-      exprHasWeightCosWXorSinWX(args)
-    weight case "failed" => 
-      [0.0,"d01anf: A suitable weight has not been found", ext]
-    weight case Record(op:BOP,w:DF) =>
-      wany := coerce(weight)$AnyFunctions1(Record(op:BOP,w:DF))
-      ex:Record(key:S,entry:Any) := [d01anfextra@S,wany]
-      ext := insert!(ex,ext)$Result
-      ws:ST := string(name(weight.op)$BOP)$S "(" df2st(weight.w)
-                          string(args.var)$S ")"
-      [getMeasure(R,d01anf@S)$RT,
-        "d01anf: The expression has a suitable weight:- " ws, ext]
-    
-  numericalIntegration(args:NIA,hints:Result) ==
-    a:INT
-    r:Any := coerce(search((d01anfextra@S),hints)$Result)@Any
-    rec:Record(op:BOP,w:DF) := retract(r)$AnyFunctions1(Record(op:BOP,w:DF))
-    Var := args.var :: EDF
-    o:BOP := rec.op
-    den:EDF := o((rec.w*Var)$EDF)
-    Argsfn:EDF := args.fn/den
-    if (name(o) = cos@S)@Boolean then a := 1
-    else a := 2
-    b:Float := getButtonValue("d01anf","functionEvaluations")$AttributeButtons
-    fEvals:INT := wholePart exp(1.1513*(1.0/(2.0*(1.0-b))))
-    iw:INT := 75*fEvals
-    ArgsFn := map(convert(#1)$DF,Argsfn)$EF2(DF,Float)
-    f : Union(fn:FileName,fp:Asp1(G)) := [retract(ArgsFn)$Asp1(G)]
-    d01anf(getlo(args.range),gethi(args.range),rec.w,a,args.abserr,args.relerr,4*iw,iw,-1,f)
-
-@
-\section{domain D01ASFA d01asfAnnaType}
-<<domain D01ASFA d01asfAnnaType>>=
-)abbrev domain D01ASFA d01asfAnnaType
-++ Author: Brian Dupee
-++ Date Created: March 1994
-++ Date Last Updated: December 1997
-++ Basic Operations: measure, numericalIntegration
-++ Related Constructors: Result, RoutinesTable
-++ Description:
-++ \axiomType{d01asfAnnaType} is a domain of \axiomType{NumericalIntegrationCategory}
-++ for the NAG routine D01ASF, a numerical integration routine which can
-++ handle weight functions of the form cos(\omega x) or sin(\omega x) on an
-++ semi-infinite range.  The 
-++ function \axiomFun{measure} measures the usefulness of the routine D01ASF
-++ for the given problem.  The function \axiomFun{numericalIntegration}
-++ performs the integration by using \axiomType{NagIntegrationPackage}.
-
-d01asfAnnaType(): NumericalIntegrationCategory == Result add
-  EF2	==> ExpressionFunctions2
-  EDF	==> Expression DoubleFloat
-  LDF	==> List DoubleFloat
-  SDF	==> Stream DoubleFloat
-  DF	==> DoubleFloat
-  FI	==> Fraction Integer
-  EFI	==> Expression Fraction Integer
-  SOCDF	==> Segment OrderedCompletion DoubleFloat
-  NIA	==> Record(var:Symbol,fn:EDF,range:SOCDF,abserr:DF,relerr:DF)
-  MDNIA	==> Record(fn:EDF,range:List SOCDF,abserr:DF,relerr:DF)
-  INT	==> Integer
-  BOP	==> BasicOperator
-  S	==> Symbol
-  ST	==> String
-  LST	==> List String
-  RT	==> RoutinesTable
-  Rep:=Result
-  import Rep, d01WeightsPackage, d01AgentsPackage, NagIntegrationPackage
-
-  measure(R:RT,args:NIA) ==
-    ext:Result := empty()$Result
-    Range := rangeIsFinite(args)
-    not(Range case upperInfinite) =>
-      [0.0,"d01asf is not a suitable routine for infinite integrals",ext]
-    weight: Union(Record(op:BOP,w:DF),"failed") :=
-      exprHasWeightCosWXorSinWX(args)
-    weight case "failed" => 
-      [0.0,"d01asf: A suitable weight has not been found", ext]
-    weight case Record(op:BOP,w:DF) =>
-      wany := coerce(weight)$AnyFunctions1(Record(op:BOP,w:DF))
-      ex:Record(key:S,entry:Any) := [d01asfextra@S,wany]
-      ext := insert!(ex,ext)$Result
-      ws:ST := string(name(weight.op)$BOP)$S "(" df2st(weight.w)
-                          string(args.var)$S ")"
-      [getMeasure(R,d01asf@S)$RT,
-        "d01asf: A suitable weight has been found:- " ws, ext]
-    
-  numericalIntegration(args:NIA,hints:Result) ==
-    i:INT
-    r:Any := coerce(search((d01asfextra@S),hints)$Result)@Any
-    rec:Record(op:BOP,w:DF) := retract(r)$AnyFunctions1(Record(op:BOP,w:DF))
-    Var := args.var :: EDF
-    o:BOP := rec.op
-    den:EDF := o((rec.w*Var)$EDF)
-    Argsfn:EDF := args.fn/den
-    if (name(o) = cos@S)@Boolean then i := 1
-    else i := 2
-    b:Float := getButtonValue("d01asf","functionEvaluations")$AttributeButtons
-    fEvals:INT := wholePart exp(1.1513*(1.0/(2.0*(1.0-b))))
-    iw:INT := 75*fEvals
-    ArgsFn := map(convert(#1)$DF,Argsfn)$EF2(DF,Float)
-    f : Union(fn:FileName,fp:Asp1(G)) := [retract(ArgsFn)$Asp1(G)]
-    err :=
-      positive?(args.abserr) => args.abserr
-      args.relerr
-    d01asf(getlo(args.range),rec.w,i,err,50,4*iw,2*iw,-1,f)
-
-@
-\section{domain D01GBFA d01gbfAnnaType}
-<<domain D01GBFA d01gbfAnnaType>>=
-)abbrev domain D01GBFA d01gbfAnnaType
-++ Author: Brian Dupee
-++ Date Created: March 1994
-++ Date Last Updated: December 1997
-++ Basic Operations: measure, numericalIntegration
-++ Related Constructors: Result, RoutinesTable
-++ Description:
-++ \axiomType{d01gbfAnnaType} is a domain of \axiomType{NumericalIntegrationCategory}
-++ for the NAG routine D01GBF, a numerical integration routine which can
-++ handle multi-dimensional quadrature over a finite region.  The 
-++ function \axiomFun{measure} measures the usefulness of the routine D01GBF
-++ for the given problem.  The function \axiomFun{numericalIntegration}
-++ performs the integration by using \axiomType{NagIntegrationPackage}.
-
-d01gbfAnnaType(): NumericalIntegrationCategory == Result add
-  EF2	==> ExpressionFunctions2
-  EDF	==> Expression DoubleFloat
-  LDF	==> List DoubleFloat
-  SDF	==> Stream DoubleFloat
-  DF	==> DoubleFloat
-  FI	==> Fraction Integer
-  EFI	==> Expression Fraction Integer
-  SOCDF	==> Segment OrderedCompletion DoubleFloat
-  NIA	==> Record(var:Symbol,fn:EDF,range:SOCDF,abserr:DF,relerr:DF)
-  MDNIA	==> Record(fn:EDF,range:List SOCDF,abserr:DF,relerr:DF)
-  INT	==> Integer
-  BOP	==> BasicOperator
-  S	==> Symbol
-  ST	==> String
-  LST	==> List String
-  RT	==> RoutinesTable
-  Rep:=Result
-  import Rep, d01AgentsPackage, NagIntegrationPackage
-
-  measure(R:RT,args:MDNIA) ==
-    ext:Result := empty()$Result
-    (rel := args.relerr) < 0.01 :: DF => 
-      [0.1, "d01gbf: The relative error requirement is too small",ext]
-    segs := args.range
-    vars := variables(args.fn)$EDF
-    for i in 1..# vars repeat
-      nia:NIA := [vars.i,args.fn,segs.i,args.abserr,rel]
-      not rangeIsFinite(nia) case finite => return
-        [0.0,"d01gbf is not a suitable routine for infinite integrals",ext]
-    [getMeasure(R,d01gbf@S)$RT, "Recommended is d01gbf", ext]
-
-  numericalIntegration(args:MDNIA,hints:Result) ==
-    import Integer
-    segs := args.range
-    dim:INT := # segs
-    low:Matrix DF := matrix([[getlo(segs.i) for i in 1..dim]])$(Matrix DF)
-    high:Matrix DF := matrix([[gethi(segs.i) for i in 1..dim]])$(Matrix DF)
-    b:Float := getButtonValue("d01gbf","functionEvaluations")$AttributeButtons
-    a:Float:= exp(1.1513*(1.0/(2.0*(1.0-b))))
-    maxcls:INT := 1500*(dim+1)*(fEvals:INT := wholePart(a))
-    mincls:INT := 300*fEvals
-    c:Float := nthRoot((maxcls::Float)/4.0,dim)$Float
-    lenwrk:INT := 3*dim*(d:INT := wholePart(c))+10*dim
-    wrkstr:Matrix DF := matrix([[0$DF for i in 1..lenwrk]])$(Matrix DF)
-    ArgsFn := map(convert(#1)$DF,args.fn)$EF2(DF,Float)
-    f : Union(fn:FileName,fp:Asp4(FUNCTN)) := [retract(ArgsFn)$Asp4(FUNCTN)]
-    out:Result := d01gbf(dim,low,high,maxcls,args.relerr,lenwrk,mincls,wrkstr,-1,f)
-    changeName(finest@Symbol,result@Symbol,out)
-
-@
-\section{domain D01FCFA d01fcfAnnaType}
-<<domain D01FCFA d01fcfAnnaType>>=
-)abbrev domain D01FCFA d01fcfAnnaType
-++ Author: Brian Dupee
-++ Date Created: March 1994
-++ Date Last Updated: December 1997
-++ Basic Operations: measure, numericalIntegration
-++ Related Constructors: Result, RoutinesTable
-++ Description:
-++ \axiomType{d01fcfAnnaType} is a domain of \axiomType{NumericalIntegrationCategory}
-++ for the NAG routine D01FCF, a numerical integration routine which can
-++ handle multi-dimensional quadrature over a finite region.  The 
-++ function \axiomFun{measure} measures the usefulness of the routine D01GBF
-++ for the given problem.  The function \axiomFun{numericalIntegration}
-++ performs the integration by using \axiomType{NagIntegrationPackage}.
-
-d01fcfAnnaType(): NumericalIntegrationCategory == Result add
-  EF2	==> ExpressionFunctions2
-  EDF	==> Expression DoubleFloat
-  LDF	==> List DoubleFloat
-  SDF	==> Stream DoubleFloat
-  DF	==> DoubleFloat
-  FI	==> Fraction Integer
-  EFI	==> Expression Fraction Integer
-  SOCDF	==> Segment OrderedCompletion DoubleFloat
-  NIA	==> Record(var:Symbol,fn:EDF,range:SOCDF,abserr:DF,relerr:DF)
-  MDNIA	==> Record(fn:EDF,range:List SOCDF,abserr:DF,relerr:DF)
-  INT	==> Integer
-  BOP	==> BasicOperator
-  S	==> Symbol
-  ST	==> String
-  LST	==> List String
-  RT	==> RoutinesTable
-  Rep:=Result
-  import Rep, d01AgentsPackage, NagIntegrationPackage
-
-  measure(R:RT,args:MDNIA) ==
-    ext:Result := empty()$Result
-    segs := args.range
-    vars := variables(args.fn)$EDF
-    for i in 1..# vars repeat
-      nia:NIA := [vars.i,args.fn,segs.i,args.abserr,args.relerr]
-      not rangeIsFinite(nia) case finite => return
-        [0.0,"d01fcf is not a suitable routine for infinite integrals",ext]
-    [getMeasure(R,d01fcf@S)$RT, "Recommended is d01fcf", ext]
-
-  numericalIntegration(args:MDNIA,hints:Result) ==
-    import Integer
-    segs := args.range
-    dim := # segs
-    err := args.relerr
-    low:Matrix DF := matrix([[getlo(segs.i) for i in 1..dim]])$(Matrix DF)
-    high:Matrix DF := matrix([[gethi(segs.i) for i in 1..dim]])$(Matrix DF)
-    b:Float := getButtonValue("d01fcf","functionEvaluations")$AttributeButtons
-    a:Float:= exp(1.1513*(1.0/(2.0*(1.0-b))))
-    alpha:INT := 2**dim+2*dim**2+2*dim+1
-    d:Float := max(1.e-3,nthRoot(convert(err)@Float,4))$Float
-    minpts:INT := (fEvals := wholePart(a))*wholePart(alpha::Float/d)
-    maxpts:INT := 5*minpts
-    lenwrk:INT := (dim+2)*(1+(33*fEvals))
-    ArgsFn := map(convert(#1)$DF,args.fn)$EF2(DF,Float)
-    f : Union(fn:FileName,fp:Asp4(FUNCTN)) := [retract(ArgsFn)$Asp4(FUNCTN)]
-    out:Result := d01fcf(dim,low,high,maxpts,err,lenwrk,minpts,-1,f)
-    changeName(finval@Symbol,result@Symbol,out)
-
-@
-\section{License}
-<<license>>=
---Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
---All rights reserved.
---
---Redistribution and use in source and binary forms, with or without
---modification, are permitted provided that the following conditions are
---met:
---
---    - Redistributions of source code must retain the above copyright
---      notice, this list of conditions and the following disclaimer.
---
---    - Redistributions in binary form must reproduce the above copyright
---      notice, this list of conditions and the following disclaimer in
---      the documentation and/or other materials provided with the
---      distribution.
---
---    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
---      names of its contributors may be used to endorse or promote products
---      derived from this software without specific prior written permission.
---
---THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
---IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
---TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
---PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
---OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
---EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
---PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
---PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
---LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
---NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
---SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-@
-<<*>>=
-<<license>>
-
-<<domain D01AJFA d01ajfAnnaType>>
-<<domain D01AKFA d01akfAnnaType>>
-<<domain D01AMFA d01amfAnnaType>>
-<<domain D01AQFA d01aqfAnnaType>>
-<<domain D01APFA d01apfAnnaType>>
-<<domain D01ALFA d01alfAnnaType>>
-<<domain D01ANFA d01anfAnnaType>>
-<<domain D01ASFA d01asfAnnaType>>
-<<domain D01GBFA d01gbfAnnaType>>
-<<domain D01FCFA d01fcfAnnaType>>
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/algebra/d01transform.spad.pamphlet b/src/algebra/d01transform.spad.pamphlet
deleted file mode 100644
index 6866ac9..0000000
--- a/src/algebra/d01transform.spad.pamphlet
+++ /dev/null
@@ -1,212 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/algebra d01transform.spad}
-\author{Brian Dupee}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{domain D01TRNS d01TransformFunctionType}
-<<domain D01TRNS d01TransformFunctionType>>=
-)abbrev domain D01TRNS d01TransformFunctionType
-++ Author: Brian Dupee
-++ Date Created: April 1994
-++ Date Last Updated: December 1997
-++ Basic Operations: measure, numericalIntegration
-++ Related Constructors: Result, RoutinesTable
-++ Description:
-++ Since an infinite integral cannot be evaluated numerically
-++ it is necessary to transform the integral onto finite ranges.
-++ \axiomType{d01TransformFunctionType} uses the mapping \spad{x -> 1/x}
-++ and contains the functions \axiomFun{measure} and
-++ \axiomFun{numericalIntegration}.
-EDF	==> Expression DoubleFloat
-EEDF	==> Equation Expression DoubleFloat
-FI	==> Fraction Integer
-EFI	==> Expression Fraction Integer
-EEFI	==> Equation Expression Fraction Integer
-EF2	==> ExpressionFunctions2
-DF	==> DoubleFloat
-F	==> Float
-SOCDF	==> Segment OrderedCompletion DoubleFloat
-OCDF	==> OrderedCompletion DoubleFloat
-NIA	==> Record(var:Symbol,fn:EDF,range:SOCDF,abserr:DF,relerr:DF)
-INT     ==> Integer
-PI	==> PositiveInteger
-HINT	==> Record(str:String,fn:EDF,range:SOCDF,ext:Result)
-S	==> Symbol
-ST	==> String
-LST	==> List String
-Measure	==> Record(measure:F,explanations:ST,extra:Result)
-MS	==> Record(measure:F,name:ST,explanations:LST,extra:Result)
-
-d01TransformFunctionType():NumericalIntegrationCategory == Result add
-  Rep:=Result
-  import d01AgentsPackage,Rep
-
-  rec2any(re:Record(str:ST,fn:EDF,range:SOCDF)):Any ==
-    coerce(re)$AnyFunctions1(Record(str:ST,fn:EDF,range:SOCDF))
-
-  changeName(ans:Result,name:ST):Result ==
-    sy:S := coerce(name "Answer")$S
-    anyAns:Any := coerce(ans)$AnyFunctions1(Result)
-    construct([[sy,anyAns]])$Result
-
-  getIntegral(args:NIA,hint:HINT) : Result ==
-    Args := copy args
-    Args.fn := hint.fn
-    Args.range := hint.range
-    integrate(Args::NumericalIntegrationProblem)$AnnaNumericalIntegrationPackage
-
-  transformFunction(args:NIA) : NIA ==
-    Args := copy args    
-    Var := Args.var :: EFI                 -- coerce Symbol to EFI
-    NewVar:EFI := inv(Var)$EFI             -- invert it
-    VarEqn:EEFI:=equation(Var,NewVar)$EEFI -- turn it into an equation
-    Afn:EFI := edf2efi(Args.fn)$ExpertSystemToolsPackage
-    Afn := subst(Afn,VarEqn)$EFI           -- substitute into function
-    Var2:EFI := Var**2
-    Afn:= simplify(Afn/Var2)$TranscendentalManipulations(FI,EFI)
-    Args.fn:= map(convert(#1)$FI,Afn)$EF2(FI,DF)
-    Args
-
-  doit(seg:SOCDF,args:NIA):MS ==
-    Args := copy args
-    Args.range := seg
-    measure(Args::NumericalIntegrationProblem)$AnnaNumericalIntegrationPackage
-
-  transform(c:Boolean,args:NIA):Measure ==
-    if c then
-      l := coerce(recip(lo(args.range)))@OCDF
-      Seg:SOCDF := segment(0$OCDF,l)
-    else
-      h := coerce(recip(hi(args.range)))@OCDF
-      Seg:SOCDF := segment(h,0$OCDF)
-    Args := transformFunction(args)
-    m:MS := doit(Seg,Args)
-    out1:ST := 
-       "The recommendation is to transform the function and use " m.name
-    out2:List(HINT) := [[m.name,Args.fn,Seg,m.extra]]
-    out2Any:Any := coerce(out2)$AnyFunctions1(List(HINT))
-    ex:Record(key:S,entry:Any) := [d01transformextra@S,out2Any]
-    extr:Result := construct([ex])$Result
-    [m.measure,out1,extr]
-      
-  split(c:PI,args:NIA):Measure ==
-    Args := copy args
-    Args.relerr := Args.relerr/2
-    Args.abserr := Args.abserr/2
-    if (c = 1)@Boolean then 
-      seg1:SOCDF := segment(-1$OCDF,1$OCDF)
-    else if (c = 2)@Boolean then
-      seg1 := segment(lo(Args.range),1$OCDF)
-    else
-      seg1 := segment(-1$OCDF,hi(Args.range))
-    m1:MS := doit(seg1,Args)
-    Args := transformFunction Args
-    if (c = 2)@Boolean then
-      seg2:SOCDF := segment(0$OCDF,1$OCDF)
-    else if (c = 3)@Boolean then
-      seg2 := segment(-1$OCDF,0$OCDF)
-    else seg2 := seg1
-    m2:MS := doit(seg2,Args)
-    m1m:F := m1.measure
-    m2m:F := m2.measure
-    m:F := m1m*m2m/((m1m*m2m)+(1.0-m1m)*(1.0-m2m))
-    out1:ST := "The recommendation is to transform the function and use "
-                               m1.name " and " m2.name
-    out2:List(HINT) :=
-             [[m1.name,args.fn,seg1,m1.extra],[m2.name,Args.fn,seg2,m2.extra]]
-    out2Any:Any := coerce(out2)$AnyFunctions1(List(HINT))
-    ex:Record(key:S,entry:Any) := [d01transformextra@S,out2Any]
-    extr:Result := construct([ex])$Result
-    [m,out1,extr]
-
-  measure(R:RoutinesTable,args:NIA) ==
-    Range:=rangeIsFinite(args)
-    Range case bothInfinite => split(1,args)
-    Range case upperInfinite =>
-      positive?(lo(args.range))$OCDF =>
-        transform(true,args)
-      split(2,args)
-    Range case lowerInfinite =>
-      negative?(hi(args.range))$OCDF =>
-        transform(false,args)
-      split(3,args)
-
-  numericalIntegration(args:NIA,hints:Result) ==
-    mainResult:DF := mainAbserr:DF := 0$DF
-    ans:Result := empty()$Result
-    hla:Any := coerce(search((d01transformextra@S),hints)$Result)@Any
-    hintList := retract(hla)$AnyFunctions1(List(HINT))
-    methodName:ST := empty()$ST
-    repeat
-      if (empty?(hintList)$(List(HINT))) 
-        then leave
-      item := first(hintList)$List(HINT)
-      a:Result := getIntegral(args,item)
-      anyRes := coerce(search((result@S),a)$Result)@Any
-      midResult := retract(anyRes)$AnyFunctions1(DF)
-      anyErr := coerce(search((abserr pretend S),a)$Result)@Any
-      midAbserr := retract(anyErr)$AnyFunctions1(DF)
-      mainResult := mainResult+midResult
-      mainAbserr := mainAbserr+midAbserr
-      if (methodName = item.str)@Boolean then
-        methodName := concat([item.str,"1"])$ST
-      else
-        methodName := item.str
-      ans := concat(ans,changeName(a,methodName))$ExpertSystemToolsPackage
-      hintList := rest(hintList)$(List(HINT))
-    anyResult := coerce(mainResult)$AnyFunctions1(DF)
-    anyAbserr := coerce(mainAbserr)$AnyFunctions1(DF)
-    recResult:Record(key:S,entry:Any):=[result@S,anyResult]
-    recAbserr:Record(key:S,entry:Any):=[abserr pretend S,anyAbserr]
-    insert!(recAbserr,insert!(recResult,ans))$Result
-
-@
-\section{License}
-<<license>>=
---Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
---All rights reserved.
---
---Redistribution and use in source and binary forms, with or without
---modification, are permitted provided that the following conditions are
---met:
---
---    - Redistributions of source code must retain the above copyright
---      notice, this list of conditions and the following disclaimer.
---
---    - Redistributions in binary form must reproduce the above copyright
---      notice, this list of conditions and the following disclaimer in
---      the documentation and/or other materials provided with the
---      distribution.
---
---    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
---      names of its contributors may be used to endorse or promote products
---      derived from this software without specific prior written permission.
---
---THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
---IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
---TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
---PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
---OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
---EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
---PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
---PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
---LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
---NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
---SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-@
-<<*>>=
-<<license>>
-
-<<domain D01TRNS d01TransformFunctionType>>
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/algebra/d02agents.spad.pamphlet b/src/algebra/d02agents.spad.pamphlet
index d3e18ec..059d443 100644
--- a/src/algebra/d02agents.spad.pamphlet
+++ b/src/algebra/d02agents.spad.pamphlet
@@ -9,85 +9,6 @@
 \eject
 \tableofcontents
 \eject
-\section{domain ODEIFTBL ODEIntensityFunctionsTable}
-<<domain ODEIFTBL ODEIntensityFunctionsTable>>=
-)abbrev domain ODEIFTBL ODEIntensityFunctionsTable
-++ Author: Brian Dupee
-++ Date Created: May 1994
-++ Date Last Updated: January 1996
-++ Basic Operations: showTheIFTable, insert!
-++ Description:
-++ \axiom{ODEIntensityFunctionsTable()} provides a dynamic table and a set of
-++ functions to store details found out about sets of ODE's.
-
-ODEIntensityFunctionsTable(): E == I where
-  LEDF	==> List Expression DoubleFloat
-  LEEDF	==> List Equation Expression DoubleFloat
-  EEDF	==> Equation Expression DoubleFloat
-  VEDF	==> Vector Expression DoubleFloat
-  MEDF	==> Matrix Expression DoubleFloat
-  MDF	==> Matrix DoubleFloat
-  EDF	==> Expression DoubleFloat
-  DF	==> DoubleFloat
-  F	==> Float
-  INT	==> Integer
-  CDF	==> Complex DoubleFloat
-  LDF	==> List DoubleFloat
-  LF	==> List Float
-  S	==> Symbol
-  LS	==> List Symbol
-  MFI	==> Matrix Fraction Integer
-  LFI	==> List Fraction Integer
-  FI	==> Fraction Integer
-  ODEA	==> Record(xinit:DF,xend:DF,fn:VEDF,yinit:LDF,intvals:LDF,g:EDF,abserr:DF,relerr:DF)
-  ON	==> Record(additions:INT,multiplications:INT,exponentiations:INT,functionCalls:INT)
-  RVE 	==> Record(val:EDF,exponent:INT)
-  RSS	==> Record(stiffnessFactor:F,stabilityFactor:F)
-  ATT	==> Record(stiffness:F,stability:F,expense:F,accuracy:F,intermediateResults:F)
-  ROA	==> Record(key:ODEA,entry:ATT)
-
-  E ==> with
-    showTheIFTable:() -> $
-      ++ showTheIFTable() returns the current table of intensity functions.
-    clearTheIFTable : () -> Void
-      ++ clearTheIFTable() clears the current table of intensity functions.
-    keys : $ -> List(ODEA)
-      ++ keys(tab) returns the list of keys of f
-    iFTable: List Record(key:ODEA,entry:ATT) -> $
-      ++ iFTable(l) creates an intensity-functions table from the elements 
-      ++ of l.
-    insert!:Record(key:ODEA,entry:ATT) -> $
-      ++ insert!(r) inserts an entry r into theIFTable
-    showIntensityFunctions:ODEA -> Union(ATT,"failed")
-      ++ showIntensityFunctions(k) returns the entries in the 
-      ++ table of intensity functions k.
-
-  I ==> add
-    Rep := Table(ODEA,ATT)
-    import Rep
-
-    theIFTable:$ := empty()$Rep
-
-    showTheIFTable():$ ==
-      theIFTable
-
-    clearTheIFTable():Void ==
-      theIFTable := empty()$Rep
-      void()$Void
-
-    iFTable(l:List Record(key:ODEA,entry:ATT)):$ ==
-      theIFTable := table(l)$Rep
-
-    insert!(r:Record(key:ODEA,entry:ATT)):$ ==
-      insert!(r,theIFTable)$Rep
-
-    keys(t:$):List ODEA ==
-      keys(t)$Rep
-
-    showIntensityFunctions(k:ODEA):Union(ATT,"failed") ==
-      search(k,theIFTable)$Rep
-
-@
 \section{package D02AGNT d02AgentsPackage}
 <<package D02AGNT d02AgentsPackage>>=
 )abbrev package D02AGNT d02AgentsPackage
@@ -414,7 +335,6 @@ d02AgentsPackage(): E == I where
 <<*>>=
 <<license>>
 
-<<domain ODEIFTBL ODEIntensityFunctionsTable>>
 <<package D02AGNT d02AgentsPackage>>
 @
 \eject
diff --git a/src/algebra/d02routine.spad.pamphlet b/src/algebra/d02routine.spad.pamphlet
deleted file mode 100644
index 106f29b..0000000
--- a/src/algebra/d02routine.spad.pamphlet
+++ /dev/null
@@ -1,424 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/algebra d02routine.spad}
-\author{Brian Dupee}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{domain D02BBFA d02bbfAnnaType}
-<<domain D02BBFA d02bbfAnnaType>>=
-)abbrev domain D02BBFA d02bbfAnnaType
-++ Author: Brian Dupee
-++ Date Created: February 1995
-++ Date Last Updated: January 1996
-++ Basic Operations: 
-++ Description:
-++ \axiomType{d02bbfAnnaType} is a domain of 
-++ \axiomType{OrdinaryDifferentialEquationsInitialValueProblemSolverCategory}
-++ for the NAG routine D02BBF, a ODE routine which uses an  
-++ Runge-Kutta method to solve a system of differential 
-++ equations.  The function \axiomFun{measure} measures the
-++ usefulness of the routine D02BBF for the given problem.  The 
-++ function \axiomFun{ODESolve} performs the integration by using 
-++ \axiomType{NagOrdinaryDifferentialEquationsPackage}.
-
-
-d02bbfAnnaType():OrdinaryDifferentialEquationsSolverCategory == Result add  -- Runge Kutta
-
-  EDF	==> Expression DoubleFloat
-  LDF	==> List DoubleFloat
-  MDF	==> Matrix DoubleFloat
-  DF	==> DoubleFloat
-  F	==> Float
-  FI	==> Fraction Integer
-  EFI	==> Expression Fraction Integer
-  SOCDF	==> Segment OrderedCompletion DoubleFloat
-  VEDF	==> Vector Expression DoubleFloat
-  VEF	==> Vector Expression Float
-  EF	==> Expression Float
-  VDF	==> Vector DoubleFloat
-  VMF	==> Vector MachineFloat
-  MF	==> MachineFloat
-  ODEA	==> Record(xinit:DF,xend:DF,fn:VEDF,yinit:LDF,intvals:LDF,_
-                      g:EDF,abserr:DF,relerr:DF)
-  RSS	==> Record(stiffnessFactor:F,stabilityFactor:F)
-  INT	==> Integer
-  EF2	==> ExpressionFunctions2
-
-  import d02AgentsPackage, NagOrdinaryDifferentialEquationsPackage
-  import AttributeButtons
-
-  accuracyCF(ode:ODEA):F ==
-    b := getButtonValue("d02bbf","accuracy")$AttributeButtons
-    accuracyIntensityValue := combineFeatureCompatibility(b,accuracyIF(ode))
-    accuracyIntensityValue > 0.999 => 0$F
-    0.8*exp(-((10*accuracyIntensityValue)**3)$F/266)$F
-
-  stiffnessCF(stiffnessIntensityValue:F):F ==
-    b := getButtonValue("d02bbf","stiffness")$AttributeButtons
-    0.5*exp(-(2*combineFeatureCompatibility(b,stiffnessIntensityValue))**2)$F
-
-  stabilityCF(stabilityIntensityValue:F):F ==
-    b := getButtonValue("d02bbf","stability")$AttributeButtons
-    0.5 * cos(combineFeatureCompatibility(b,stabilityIntensityValue))$F
-
-  expenseOfEvaluationCF(ode:ODEA):F ==
-    b := getButtonValue("d02bbf","expense")$AttributeButtons
-    expenseOfEvaluationIntensityValue := 
-      combineFeatureCompatibility(b,expenseOfEvaluationIF(ode))
-    0.35+0.2*exp(-(2.0*expenseOfEvaluationIntensityValue)**3)$F
-    
-  measure(R:RoutinesTable,args:ODEA) ==
-    m := getMeasure(R,d02bbf :: Symbol)$RoutinesTable
-    ssf := stiffnessAndStabilityOfODEIF args
-    m := combineFeatureCompatibility(m,[accuracyCF(args),
-            stiffnessCF(ssf.stiffnessFactor),
-              expenseOfEvaluationCF(args),
-                stabilityCF(ssf.stabilityFactor)])
-    [m,"Runge-Kutta Merson method"]
-
-  ODESolve(ode:ODEA) ==
-    i:LDF := ode.intvals
-    M := inc(# i)$INT
-    irelab := 0$INT
-    if positive?(a := ode.abserr) then 
-      inc(irelab)$INT
-    if positive?(r := ode.relerr) then
-      inc(irelab)$INT
-    if positive?(a+r) then
-      tol:DF := a + r
-    else
-      tol := float(1,-4,10)$DF
-    asp7:Union(fn:FileName,fp:Asp7(FCN)) :=
-      [retract(vedf2vef(ode.fn)$ExpertSystemToolsPackage)$Asp7(FCN)]
-    asp8:Union(fn:FileName,fp:Asp8(OUTPUT)) := 
-      [coerce(ldf2vmf(i)$ExpertSystemToolsPackage)$Asp8(OUTPUT)]
-    d02bbf(ode.xend,M,# ode.fn,irelab,ode.xinit,matrix([ode.yinit])$MDF,
-             tol,-1,asp7,asp8)
-
-@
-\section{domain D02BHFA d02bhfAnnaType}
-<<domain D02BHFA d02bhfAnnaType>>=
-)abbrev domain D02BHFA d02bhfAnnaType
-++ Author: Brian Dupee
-++ Date Created: February 1995
-++ Date Last Updated: January 1996
-++ Basic Operations: 
-++ Description:
-++ \axiomType{d02bhfAnnaType} is a domain of 
-++ \axiomType{OrdinaryDifferentialEquationsInitialValueProblemSolverCategory}
-++ for the NAG routine D02BHF, a ODE routine which uses an  
-++ Runge-Kutta method to solve a system of differential 
-++ equations.  The function \axiomFun{measure} measures the
-++ usefulness of the routine D02BHF for the given problem.  The 
-++ function \axiomFun{ODESolve} performs the integration by using 
-++ \axiomType{NagOrdinaryDifferentialEquationsPackage}.
-
-d02bhfAnnaType():OrdinaryDifferentialEquationsSolverCategory == Result add  -- Runge Kutta
-  EDF	==> Expression DoubleFloat
-  LDF	==> List DoubleFloat
-  MDF	==> Matrix DoubleFloat
-  DF	==> DoubleFloat
-  F	==> Float
-  FI	==> Fraction Integer
-  EFI	==> Expression Fraction Integer
-  SOCDF	==> Segment OrderedCompletion DoubleFloat
-  VEDF	==> Vector Expression DoubleFloat
-  VEF	==> Vector Expression Float
-  EF	==> Expression Float
-  VDF	==> Vector DoubleFloat
-  VMF	==> Vector MachineFloat
-  MF	==> MachineFloat
-  ODEA	==> Record(xinit:DF,xend:DF,fn:VEDF,yinit:LDF,intvals:LDF,_
-                      g:EDF,abserr:DF,relerr:DF)
-  RSS	==> Record(stiffnessFactor:F,stabilityFactor:F)
-  INT	==> Integer
-  EF2	==> ExpressionFunctions2
-
-  import d02AgentsPackage, NagOrdinaryDifferentialEquationsPackage
-  import AttributeButtons
-
-  accuracyCF(ode:ODEA):F ==
-    b := getButtonValue("d02bhf","accuracy")$AttributeButtons
-    accuracyIntensityValue := combineFeatureCompatibility(b,accuracyIF(ode))
-    accuracyIntensityValue > 0.999 => 0$F
-    0.8*exp(-((10*accuracyIntensityValue)**3)$F/266)$F
-
-  stiffnessCF(stiffnessIntensityValue:F):F ==
-    b := getButtonValue("d02bhf","stiffness")$AttributeButtons
-    0.5*exp(-(2*combineFeatureCompatibility(b,stiffnessIntensityValue))**2)$F
-
-  stabilityCF(stabilityIntensityValue:F):F ==
-    b := getButtonValue("d02bhf","stability")$AttributeButtons
-    0.5 * cos(combineFeatureCompatibility(b,stabilityIntensityValue))$F
-
-  expenseOfEvaluationCF(ode:ODEA):F ==
-    b := getButtonValue("d02bhf","expense")$AttributeButtons
-    expenseOfEvaluationIntensityValue := 
-      combineFeatureCompatibility(b,expenseOfEvaluationIF(ode))
-    0.35+0.2*exp(-(2.0*expenseOfEvaluationIntensityValue)**3)$F
-    
-  measure(R:RoutinesTable,args:ODEA) ==
-    m := getMeasure(R,d02bhf :: Symbol)$RoutinesTable
-    ssf := stiffnessAndStabilityOfODEIF args
-    m := combineFeatureCompatibility(m,[accuracyCF(args),
-            stiffnessCF(ssf.stiffnessFactor),
-              expenseOfEvaluationCF(args),
-                stabilityCF(ssf.stabilityFactor)])
-    [m,"Runge-Kutta Merson method"]
-
-  ODESolve(ode:ODEA) ==
-    irelab := 0$INT
-    if positive?(a := ode.abserr) then 
-      inc(irelab)$INT
-    if positive?(r := ode.relerr) then
-      inc(irelab)$INT
-    if positive?(a+r) then
-      tol := max(a,r)$DF
-    else
-      tol:DF := float(1,-4,10)$DF
-    asp7:Union(fn:FileName,fp:Asp7(FCN)) := 
-      [retract(e:VEF := vedf2vef(ode.fn)$ExpertSystemToolsPackage)$Asp7(FCN)]
-    asp9:Union(fn:FileName,fp:Asp9(G)) := 
-      [retract(edf2ef(ode.g)$ExpertSystemToolsPackage)$Asp9(G)]
-    d02bhf(ode.xend,# e,irelab,0$DF,ode.xinit,matrix([ode.yinit])$MDF,
-             tol,-1,asp9,asp7)
-
-@
-\section{domain D02CJFA d02cjfAnnaType}
-<<domain D02CJFA d02cjfAnnaType>>=
-)abbrev domain D02CJFA d02cjfAnnaType
-++ Author: Brian Dupee
-++ Date Created: February 1995
-++ Date Last Updated: January 1996
-++ Basic Operations: 
-++ Description:
-++ \axiomType{d02cjfAnnaType} is a domain of 
-++ \axiomType{OrdinaryDifferentialEquationsInitialValueProblemSolverCategory}
-++ for the NAG routine D02CJF, a ODE routine which uses an  
-++ Adams-Moulton-Bashworth method to solve a system of differential 
-++ equations.  The function \axiomFun{measure} measures the
-++ usefulness of the routine D02CJF for the given problem.  The 
-++ function \axiomFun{ODESolve} performs the integration by using 
-++ \axiomType{NagOrdinaryDifferentialEquationsPackage}.
-
-d02cjfAnnaType():OrdinaryDifferentialEquationsSolverCategory == Result add  -- Adams
-  EDF	==> Expression DoubleFloat
-  LDF	==> List DoubleFloat
-  MDF	==> Matrix DoubleFloat
-  DF	==> DoubleFloat
-  F	==> Float
-  FI	==> Fraction Integer
-  EFI	==> Expression Fraction Integer
-  SOCDF	==> Segment OrderedCompletion DoubleFloat
-  VEDF	==> Vector Expression DoubleFloat
-  VEF	==> Vector Expression Float
-  EF	==> Expression Float
-  VDF	==> Vector DoubleFloat
-  VMF	==> Vector MachineFloat
-  MF	==> MachineFloat
-  ODEA	==> Record(xinit:DF,xend:DF,fn:VEDF,yinit:LDF,intvals:LDF,_
-                      g:EDF,abserr:DF,relerr:DF)
-  RSS	==> Record(stiffnessFactor:F,stabilityFactor:F)
-  INT	==> Integer
-  EF2	==> ExpressionFunctions2
-
-  import d02AgentsPackage, NagOrdinaryDifferentialEquationsPackage
-
-  accuracyCF(ode:ODEA):F ==
-    b := getButtonValue("d02cjf","accuracy")$AttributeButtons
-    accuracyIntensityValue := combineFeatureCompatibility(b,accuracyIF(ode))
-    accuracyIntensityValue > 0.9999 => 0$F
-    0.6*(cos(accuracyIntensityValue*(pi()$F)/2)$F)**0.755
-
-  stiffnessCF(ode:ODEA):F ==
-    b := getButtonValue("d02cjf","stiffness")$AttributeButtons
-    ssf := stiffnessAndStabilityOfODEIF ode
-    stiffnessIntensityValue := 
-      combineFeatureCompatibility(b,ssf.stiffnessFactor)
-    0.5*exp(-(1.1*stiffnessIntensityValue)**3)$F
-
-  measure(R:RoutinesTable,args:ODEA) ==
-    m := getMeasure(R,d02cjf :: Symbol)$RoutinesTable
-    m := combineFeatureCompatibility(m,[accuracyCF(args), stiffnessCF(args)])
-    [m,"Adams method"]
-
-  ODESolve(ode:ODEA) ==
-    i:LDF := ode.intvals
-    if empty?(i) then
-      i := [ode.xend]
-    M := inc(# i)$INT
-    if positive?((a := ode.abserr)*(r := ode.relerr))$DF then
-      ire:String := "D"
-    else 
-      if positive?(a) then
-        ire:String := "A"
-      else 
-        ire:String := "R"
-    tol := max(a,r)$DF
-    asp7:Union(fn:FileName,fp:Asp7(FCN)) := 
-      [retract(e:VEF := vedf2vef(ode.fn)$ExpertSystemToolsPackage)$Asp7(FCN)]
-    asp8:Union(fn:FileName,fp:Asp8(OUTPUT)) := 
-      [coerce(ldf2vmf(i)$ExpertSystemToolsPackage)$Asp8(OUTPUT)]
-    asp9:Union(fn:FileName,fp:Asp9(G)) := 
-      [retract(edf2ef(ode.g)$ExpertSystemToolsPackage)$Asp9(G)]
-    d02cjf(ode.xend,M,# e,tol,ire,ode.xinit,matrix([ode.yinit])$MDF,
-             -1,asp9,asp7,asp8)
-
-@
-\section{domain D02EJFA d02ejfAnnaType}
-<<domain D02EJFA d02ejfAnnaType>>=
-)abbrev domain D02EJFA d02ejfAnnaType
-++ Author: Brian Dupee
-++ Date Created: February 1995
-++ Date Last Updated: January 1996
-++ Basic Operations: 
-++ Description:
-++ \axiomType{d02ejfAnnaType} is a domain of 
-++ \axiomType{OrdinaryDifferentialEquationsInitialValueProblemSolverCategory}
-++ for the NAG routine D02EJF, a ODE routine which uses a backward 
-++ differentiation formulae method to handle a stiff system 
-++ of differential equations.  The function \axiomFun{measure} measures
-++ the usefulness of the routine D02EJF for the given problem.  The 
-++ function \axiomFun{ODESolve} performs the integration by using 
-++ \axiomType{NagOrdinaryDifferentialEquationsPackage}.
-
-d02ejfAnnaType():OrdinaryDifferentialEquationsSolverCategory == Result add -- BDF "Stiff"
-  EDF	==> Expression DoubleFloat
-  LDF	==> List DoubleFloat
-  MDF	==> Matrix DoubleFloat
-  DF	==> DoubleFloat
-  F	==> Float
-  FI	==> Fraction Integer
-  EFI	==> Expression Fraction Integer
-  SOCDF	==> Segment OrderedCompletion DoubleFloat
-  VEDF	==> Vector Expression DoubleFloat
-  VEF	==> Vector Expression Float
-  EF	==> Expression Float
-  VDF	==> Vector DoubleFloat
-  VMF	==> Vector MachineFloat
-  MF	==> MachineFloat
-  ODEA	==> Record(xinit:DF,xend:DF,fn:VEDF,yinit:LDF,intvals:LDF,_
-                      g:EDF,abserr:DF,relerr:DF)
-  RSS	==> Record(stiffnessFactor:F,stabilityFactor:F)
-  INT	==> Integer
-  EF2	==> ExpressionFunctions2
-
-  import d02AgentsPackage, NagOrdinaryDifferentialEquationsPackage
-
-  accuracyCF(ode:ODEA):F ==
-    b := getButtonValue("d02ejf","accuracy")$AttributeButtons
-    accuracyIntensityValue :=  combineFeatureCompatibility(b,accuracyIF(ode))
-    accuracyIntensityValue > 0.999 => 0$F
-    0.5*exp(-((10*accuracyIntensityValue)**3)$F/250)$F
-
-  intermediateResultsCF(ode:ODEA):F ==
-    intermediateResultsIntensityValue := intermediateResultsIF(ode)
-    i := 0.5 * exp(-(intermediateResultsIntensityValue/1.649)**3)$F
-    a := accuracyCF(ode)
-    i+(0.5-i)*(0.5-a)
-
-  stabilityCF(ode:ODEA):F ==
-    b := getButtonValue("d02ejf","stability")$AttributeButtons
-    ssf := stiffnessAndStabilityOfODEIF ode
-    stabilityIntensityValue := 
-      combineFeatureCompatibility(b,ssf.stabilityFactor)
-    0.68 - 0.5 * exp(-(stabilityIntensityValue)**3)$F
-
-  expenseOfEvaluationCF(ode:ODEA):F ==
-    b := getButtonValue("d02ejf","expense")$AttributeButtons
-    expenseOfEvaluationIntensityValue := 
-      combineFeatureCompatibility(b,expenseOfEvaluationIF(ode))
-    0.5 * exp(-(1.7*expenseOfEvaluationIntensityValue)**3)$F
-    
-  systemSizeCF(args:ODEA):F ==
-    (1$F - systemSizeIF(args))/2.0
-
-  measure(R:RoutinesTable,args:ODEA) ==
-    arg := copy args
-    m := getMeasure(R,d02ejf :: Symbol)$RoutinesTable
-    m := combineFeatureCompatibility(m,[intermediateResultsCF(arg),
-           accuracyCF(arg),
-             systemSizeCF(arg),
-               expenseOfEvaluationCF(arg),
-                 stabilityCF(arg)])
-    [m,"BDF method for Stiff Systems"]
-
-  ODESolve(ode:ODEA) ==
-    i:LDF := ode.intvals
-    m := inc(# i)$INT
-    if positive?((a := ode.abserr)*(r := ode.relerr))$DF then
-      ire:String := "D"
-    else 
-      if positive?(a) then
-        ire:String := "A"
-      else 
-        ire:String := "R"
-    if positive?(a+r)$DF then
-      tol := max(a,r)$DF
-    else 
-      tol := float(1,-4,10)$DF
-    asp7:Union(fn:FileName,fp:Asp7(FCN)) := 
-      [retract(e:VEF := vedf2vef(ode.fn)$ExpertSystemToolsPackage)$Asp7(FCN)]
-    asp31:Union(fn:FileName,fp:Asp31(PEDERV)) := 
-      [retract(e)$Asp31(PEDERV)]
-    asp8:Union(fn:FileName,fp:Asp8(OUTPUT)) := 
-      [coerce(ldf2vmf(i)$ExpertSystemToolsPackage)$Asp8(OUTPUT)]
-    asp9:Union(fn:FileName,fp:Asp9(G)) :=
-      [retract(edf2ef(ode.g)$ExpertSystemToolsPackage)$Asp9(G)]
-    n:INT := # ode.yinit
-    iw:INT := (12+n)*n+50
-    ans := d02ejf(ode.xend,m,n,ire,iw,ode.xinit,matrix([ode.yinit])$MDF,
-             tol,-1,asp9,asp7,asp31,asp8)
-
-@
-\section{License}
-<<license>>=
---Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
---All rights reserved.
---
---Redistribution and use in source and binary forms, with or without
---modification, are permitted provided that the following conditions are
---met:
---
---    - Redistributions of source code must retain the above copyright
---      notice, this list of conditions and the following disclaimer.
---
---    - Redistributions in binary form must reproduce the above copyright
---      notice, this list of conditions and the following disclaimer in
---      the documentation and/or other materials provided with the
---      distribution.
---
---    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
---      names of its contributors may be used to endorse or promote products
---      derived from this software without specific prior written permission.
---
---THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
---IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
---TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
---PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
---OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
---EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
---PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
---PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
---LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
---NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
---SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-@
-<<*>>=
-<<license>>
-
-<<domain D02BBFA d02bbfAnnaType>>
-<<domain D02BHFA d02bhfAnnaType>>
-<<domain D02CJFA d02cjfAnnaType>>
-<<domain D02EJFA d02ejfAnnaType>>
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/algebra/d03routine.spad.pamphlet b/src/algebra/d03routine.spad.pamphlet
deleted file mode 100644
index cd7a10c..0000000
--- a/src/algebra/d03routine.spad.pamphlet
+++ /dev/null
@@ -1,164 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/algebra d03routine.spad}
-\author{Brian Dupee}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{domain D03EEFA d03eefAnnaType}
-<<domain D03EEFA d03eefAnnaType>>=
-)abbrev domain D03EEFA d03eefAnnaType
-++ Author: Brian Dupee
-++ Date Created: June 1996
-++ Date Last Updated: June 1996
-++ Basic Operations: 
-++ Description:
-++ \axiomType{d03eefAnnaType} is a domain of 
-++ \axiomType{PartialDifferentialEquationsSolverCategory}
-++ for the NAG routines D03EEF/D03EDF.
-d03eefAnnaType():PartialDifferentialEquationsSolverCategory == Result add  -- 2D Elliptic PDE
-  LEDF	==> List Expression DoubleFloat
-  EDF	==> Expression DoubleFloat
-  LDF	==> List DoubleFloat
-  MDF	==> Matrix DoubleFloat
-  DF	==> DoubleFloat
-  F	==> Float
-  FI	==> Fraction Integer
-  VEF	==> Vector Expression Float
-  EF	==> Expression Float
-  MEF	==> Matrix Expression Float
-  NNI	==> NonNegativeInteger
-  INT	==> Integer
-  PDEC	==> Record(start:DF, finish:DF, grid:NNI, boundaryType:INT,
-                      dStart:MDF, dFinish:MDF)
-  PDEB	==> Record(pde:LEDF, constraints:List PDEC,
-                      f:List LEDF, st:String, tol:DF)
-
-  import d03AgentsPackage, NagPartialDifferentialEquationsPackage
-  import ExpertSystemToolsPackage
-
-  measure(R:RoutinesTable,args:PDEB) ==
-    (# (args.constraints) > 2)@Boolean =>
-      [0$F,"d03eef/d03edf is unsuitable for PDEs of order more than 2"]
-    elliptic?(args) => 
-      m := getMeasure(R,d03eef :: Symbol)$RoutinesTable
-      [m,"d03eef/d03edf is suitable"]
-    [0$F,"d03eef/d03edf is unsuitable for hyperbolic or parabolic PDEs"]
-
-  PDESolve(args:PDEB) ==
-    xcon := first(args.constraints)
-    ycon := second(args.constraints) 
-    nx := xcon.grid
-    ny := ycon.grid 
-    p := args.pde
-    x1 := xcon.start
-    x2 := xcon.finish
-    y1 := ycon.start
-    y2 := ycon.finish
-    lda := ((4*(nx+1)*(ny+1)+2) quo 3)$INT
-    scheme:String :=
-      central?((x2-x1)/2,(y2-y1)/2,args.pde) => "C"
-      "U"
-    asp73:Union(fn:FileName,fp:Asp73(PDEF)) :=
-      [retract(vector([edf2ef u for u in p])$VEF)$Asp73(PDEF)]
-    asp74:Union(fn:FileName,fp:Asp74(BNDY)) := 
-      [retract(matrix([[edf2ef v for v in w] for w in args.f])$MEF)$Asp74(BNDY)]
-    fde := d03eef(x1,x2,y1,y2,nx,ny,lda,scheme,-1,asp73,asp74)
-    ub := new(1,nx*ny,0$DF)$MDF
-    A := search(a::Symbol,fde)$Result
-    A case "failed" => empty()$Result
-    AA := A::Any
-    fdea := retract(AA)$AnyFunctions1(MDF)
-    r := search(rhs::Symbol,fde)$Result
-    r case "failed" => empty()$Result
-    rh := r::Any
-    fderhs := retract(rh)$AnyFunctions1(MDF)
-    d03edf(nx,ny,lda,15,args.tol,0,fdea,fderhs,ub,-1)
-
-@
-\section{domain D03FAFA d03fafAnnaType}
-<<domain D03FAFA d03fafAnnaType>>=
-)abbrev domain D03FAFA d03fafAnnaType
-++ Author: Brian Dupee
-++ Date Created: July 1996
-++ Date Last Updated: July 1996
-++ Basic Operations: 
-++ Description:
-++ \axiomType{d03fafAnnaType} is a domain of 
-++ \axiomType{PartialDifferentialEquationsSolverCategory}
-++ for the NAG routine D03FAF.
-d03fafAnnaType():PartialDifferentialEquationsSolverCategory == Result add  -- 3D Helmholtz PDE
-  LEDF	==> List Expression DoubleFloat
-  EDF	==> Expression DoubleFloat
-  LDF	==> List DoubleFloat
-  MDF	==> Matrix DoubleFloat
-  DF	==> DoubleFloat
-  F	==> Float
-  FI	==> Fraction Integer
-  VEF	==> Vector Expression Float
-  EF	==> Expression Float
-  MEF	==> Matrix Expression Float
-  NNI	==> NonNegativeInteger
-  INT	==> Integer
-  PDEC	==> Record(start:DF, finish:DF, grid:NNI, boundaryType:INT,
-                      dStart:MDF, dFinish:MDF)
-  PDEB	==> Record(pde:LEDF, constraints:List PDEC,
-                      f:List LEDF, st:String, tol:DF)
-
-  import d03AgentsPackage, NagPartialDifferentialEquationsPackage
-  import ExpertSystemToolsPackage
-
-  measure(R:RoutinesTable,args:PDEB) ==
-    (# (args.constraints) < 3)@Boolean =>
-      [0$F,"d03faf is unsuitable for PDEs of order other than 3"]
-    [0$F,"d03faf isn't finished"]
-
-@
-\section{License}
-<<license>>=
---Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
---All rights reserved.
---
---Redistribution and use in source and binary forms, with or without
---modification, are permitted provided that the following conditions are
---met:
---
---    - Redistributions of source code must retain the above copyright
---      notice, this list of conditions and the following disclaimer.
---
---    - Redistributions in binary form must reproduce the above copyright
---      notice, this list of conditions and the following disclaimer in
---      the documentation and/or other materials provided with the
---      distribution.
---
---    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
---      names of its contributors may be used to endorse or promote products
---      derived from this software without specific prior written permission.
---
---THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
---IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
---TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
---PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
---OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
---EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
---PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
---PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
---LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
---NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
---SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-@
-<<*>>=
-<<license>>
-
-<<domain D03EEFA d03eefAnnaType>>
-<<domain D03FAFA d03fafAnnaType>>
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/algebra/derham.spad.pamphlet b/src/algebra/derham.spad.pamphlet
deleted file mode 100644
index 2bfa12d..0000000
--- a/src/algebra/derham.spad.pamphlet
+++ /dev/null
@@ -1,1029 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/algebra derham.spad}
-\author{Larry A. Lambe}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{domain EAB ExtAlgBasis}
-<<domain EAB ExtAlgBasis>>=
-)abbrev domain EAB ExtAlgBasis
---% ExtAlgBasis
-++  Author: Larry Lambe
-++  Date created: 03/14/89
-++  Description:
-++  A domain used in the construction of the exterior algebra on a set
-++  X over a ring R.  This domain represents the set of all ordered
-++  subsets of the set X, assumed to be in correspondance with
-++  {1,2,3, ...}.  The ordered subsets are themselves ordered 
-++  lexicographically and are in bijective correspondance with an ordered 
-++  basis of the exterior algebra.  In this domain we are dealing strictly
-++  with the exponents of basis elements which can only be 0 or 1.
---  Thus we really have L({0,1}).
-++
-++  The multiplicative identity element of the exterior algebra corresponds
-++  to the empty subset of X.  A coerce from List Integer to an
-++  ordered basis element is provided to allow the convenient input of 
-++  expressions. Another exported function forgets the ordered structure
-++  and simply returns the list corresponding to an ordered subset.
- 
-ExtAlgBasis(): Export == Implement where
-   I   ==> Integer
-   L   ==> List
-   NNI ==> NonNegativeInteger
- 
-   Export == OrderedSet with
-     coerce     : L I -> %
-	++ coerce(l) converts a list of 0's and 1's into a basis
-	++ element, where 1 (respectively 0) designates that the
-        ++ variable of the corresponding index of l is (respectively, is not)
-        ++ present.
-        ++ Error: if an element of l is not 0 or 1.
-     degree     : %   -> NNI
-	++ degree(x) gives the numbers of 1's in x, i.e., the number
-	++ of non-zero exponents in the basis element that x represents.
-     exponents  : %   -> L I
-	++ exponents(x) converts a domain element into a list of zeros
-	++ and ones corresponding to the exponents in the basis element
-	++ that x represents.
---   subscripts : %   -> L I
-	-- subscripts(x) looks at the exponents in x and converts 
-	-- them to the proper subscripts
-     Nul        : NNI -> %
-	++ Nul() gives the basis element 1 for the algebra generated
-	++ by n generators.
- 
-   Implement == add
-     Rep := L I
-     x,y :  %
-
-     x = y == x =$Rep y
-
-     x < y ==
-       null x            => not null y 
-       null y            => false
-       first x = first y => rest x < rest y
-       first x > first y
-
-     coerce(li:(L I)) == 
-       for x in li repeat
-         if x ^= 1 and x ^= 0 then error "coerce: values can only be 0 and 1"
-       li
-
-     degree x         == (_+/x)::NNI
-
-     exponents x      == copy(x @ Rep)
-
---   subscripts x     ==
---      cntr:I := 1
---      result: L I := []
---      for j in x repeat
---        if j = 1 then result := cons(cntr,result)
---        cntr:=cntr+1
---      reverse_! result
-
-     Nul n            == [0 for i in 1..n]
-
-     coerce x         == coerce(x @ Rep)$(L I)
-
-@
-\section{domain ANTISYM AntiSymm}
-<<domain ANTISYM AntiSymm>>=
-)abbrev domain ANTISYM AntiSymm
-++   Author: Larry A. Lambe
-++   Date     : 01/26/91.
-++   Revised  : 30 Nov 94
-++
-++   based on AntiSymmetric '89
-++
-++   Needs: ExtAlgBasis, FreeModule(Ring,OrderedSet), LALG, LALG-
-++
-++   Description: The domain of antisymmetric polynomials.
- 
- 
-AntiSymm(R:Ring, lVar:List Symbol): Export == Implement where
-  LALG ==> LeftAlgebra
-  FMR  ==> FM(R,EAB)
-  FM   ==> FreeModule
-  I    ==> Integer
-  L    ==> List
-  EAB  ==> ExtAlgBasis     -- these are exponents of basis elements in order
-  NNI  ==> NonNegativeInteger
-  O    ==> OutputForm
-  base ==> k
-  coef ==> c
-  Term ==> Record(k:EAB,c:R)
- 
-  Export == Join(LALG(R), RetractableTo(R)) with
-      leadingCoefficient : %           -> R
-	++ leadingCoefficient(p) returns the leading
-	++ coefficient of antisymmetric polynomial p.
---    leadingSupport       : %           -> EAB
-      leadingBasisTerm     : %           -> %
-	++ leadingBasisTerm(p) returns the leading
-	++ basis term of antisymmetric polynomial p.
-      reductum           : %           -> %
-	++ reductum(p), where p is an antisymmetric polynomial,
-        ++ returns p minus the leading
-	++ term of p if p has at least two terms, and 0 otherwise.
-      coefficient        : (%,%)     -> R 
-	++ coefficient(p,u) returns the coefficient of 
-	++ the term in p containing the basis term u if such 
-        ++ a term exists, and 0 otherwise.
-	++ Error: if the second argument u is not a basis element.
-      generator          : NNI         -> %
-	++ generator(n) returns the nth multiplicative generator,
-	++ a basis term.
-      exp                : L I         -> %
-	++  exp([i1,...in]) returns \spad{u_1\^{i_1} ... u_n\^{i_n}}
-      homogeneous?       : %           -> Boolean
-	++  homogeneous?(p) tests if all of the terms of 
-	++  p have the same degree.
-      retractable?       : %           -> Boolean
-	++  retractable?(p) tests if p is a 0-form,
-	++  i.e., if degree(p) = 0.
-      degree             : %           -> NNI
-	++  degree(p) returns the homogeneous degree of p.
-      map                : (R -> R, %) -> %
-	++  map(f,p) changes each coefficient of p by the
-	++  application of f.
-
-
---    1 corresponds to the empty monomial Nul = [0,...,0]
---    from EAB.  In terms of the exterior algebra on X,
---    it corresponds to the identity element which lives
---    in homogeneous degree 0.
- 
-  Implement == FMR add
-      Rep := L Term
-      x,y :  EAB
-      a,b :  %
-      r   :  R
-      m   :  I
-
-      dim := #lVar
-
-      1 == [[ Nul(dim)$EAB, 1$R ]]
-
-      coefficient(a,u) ==
-        not null u.rest => error "2nd argument must be a basis element"
-        x := u.first.base
-        for t in a repeat
-          if t.base = x then return t.coef
-          if t.base < x then return 0
-        0
-
-      retractable?(a) ==
-        null a or (a.first.k  =  Nul(dim))
-
-      retractIfCan(a):Union(R,"failed") ==
-        null a               => 0$R
-        a.first.k = Nul(dim) => leadingCoefficient a
-        "failed"
-
-      retract(a):R ==
-        null a => 0$R
-        leadingCoefficient a
-
-      homogeneous? a ==
-        null a => true
-        siz := _+/exponents(a.first.base)
-        for ta in reductum a repeat
-          _+/exponents(ta.base) ^= siz => return false
-        true
-
-      degree a ==
-        null a => 0$NNI
-        homogeneous? a => (_+/exponents(a.first.base)) :: NNI
-        error "not a homogeneous element"
-
-      zo : (I,I) -> L I
-      zo(p,q) ==
-        p = 0 => [1,q]
-        q = 0 => [1,1]
-        [0,0]
-
-      getsgn : (EAB,EAB) -> I
-      getsgn(x,y) ==
-        sgn:I  := 0
-        xx:L I := exponents x
-        yy:L I := exponents y
-        for i in 1 .. (dim-1) repeat
-          xx  := rest xx
-          sgn := sgn + (_+/xx)*yy.i
-        sgn rem 2 = 0 => 1
-        -1
-
-      Nalpha: (EAB,EAB) -> L I
-      Nalpha(x,y) ==
-        i:I := 1
-        dum2:L I := [0 for i in 1..dim]
-        for j in 1..dim repeat
-          dum:=zo((exponents x).j,(exponents y).j)
-          (i:= i*dum.1) = 0 => leave
-          dum2.j := dum.2
-        i = 0 => cons(i, dum2)
-        cons(getsgn(x,y), dum2)
-
-      a * b ==
-        null a => 0
-        null b => 0
-        ((null a.rest) and (a.first.k = Nul(dim))) => a.first.c * b
-        ((null b.rest) and (b.first.k = Nul(dim))) => b.first.c * a
-        z:% := 0
-        for tb in b repeat
-          for ta in a repeat
-            stuff:=Nalpha(ta.base,tb.base)
-            r:=first(stuff)*ta.coef*tb.coef
-            if r ^= 0 then z := z + [[rest(stuff)::EAB, r]]
-        z
-
-      coerce(r):% == 
-        r = 0 => 0
-        [ [Nul(dim), r] ]
-
-      coerce(m):% == 
-        m = 0 => 0
-        [ [Nul(dim), m::R] ]
-
-      characteristic() == characteristic()$R
-
-      generator(j) == 
-        -- j < 1 or j > dim => error "your subscript is out of range"
-        -- error will be generated by dum.j if out of range
-        dum:L I := [0 for i in 1..dim]
-        dum.j:=1
-        [[dum::EAB, 1::R]]
-
-      exp(li:(L I)) ==  [[li::EAB, 1]]
- 
-      leadingBasisTerm a ==
-        [[a.first.k, 1]]
-
-      displayList:EAB -> O
-      displayList(x):O ==
-        le: L I := exponents(x)$EAB
---      reduce(_*,[(lVar.i)::O for i in 1..dim | le.i = 1])$L(O)
---        reduce(_*,[(lVar.i)::O for i in 1..dim | one?(le.i)])$L(O)
-        reduce(_*,[(lVar.i)::O for i in 1..dim | ((le.i) = 1)])$L(O)
-
-      makeTerm:(R,EAB) -> O
-      makeTerm(r,x) ==
-      -- we know that r ^= 0
-        x = Nul(dim)$EAB  => r::O
---        one? r => displayList(x)
-        (r = 1) => displayList(x)
---      r = 1 => displayList(x)
---      r = 0 => 0$I::O
---      x = Nul(dim)$EAB  => r::O
-        r::O * displayList(x)
-
-      coerce(a):O ==
-        zero? a     => 0$I::O
-        null rest(a @ Rep) => 
-                 t := first(a @ Rep)
-                 makeTerm(t.coef,t.base)
-        reduce(_+,[makeTerm(t.coef,t.base) for t in (a @ Rep)])$L(O)
-
-@
-\section{domain DERHAM DeRhamComplex}
-<<DeRhamComplex.input>>=
--- derham.spad.pamphlet DeRhamComplex.input
-)spool DeRhamComplex.output
-)set message test on
-)set message auto off
-)clear all
---S 1 of 34
-coefRing := Integer
---R 
---R
---R   (1)  Integer
---R                                                                 Type: Domain
---E 1
-
---S 2 of 34
-lv : List Symbol := [x,y,z] 
---R 
---R
---R   (2)  [x,y,z]
---R                                                            Type: List Symbol
---E 2
-
---S 3 of 34
-der := DERHAM(coefRing,lv) 
---R 
---R
---R   (3)  DeRhamComplex(Integer,[x,y,z])
---R                                                                 Type: Domain
---E 3
-
---S 4 of 34
-R := Expression coefRing
---R 
---R
---R   (4)  Expression Integer
---R                                                                 Type: Domain
---E 4
-
---S 5 of 34
-f : R := x**2*y*z-5*x**3*y**2*z**5
---R 
---R
---R            3 2 5    2
---R   (5)  - 5x y z  + x y z
---R                                                     Type: Expression Integer
---E 5
-
---S 6 of 34
-g : R := z**2*y*cos(z)-7*sin(x**3*y**2)*z**2 
---R 
---R
---R            2     3 2       2
---R   (6)  - 7z sin(x y ) + y z cos(z)
---R                                                     Type: Expression Integer
---E 6
-
---S 7 of 34
-h : R :=x*y*z-2*x**3*y*z**2 
---R 
---R
---R            3   2
---R   (7)  - 2x y z  + x y z
---R                                                     Type: Expression Integer
---E 7
-
---S 8 of 34
-dx : der := generator(1)
---R 
---R
---R   (8)  dx
---R                                         Type: DeRhamComplex(Integer,[x,y,z])
---E 8
-
---S 9 of 34
-dy : der := generator(2)
---R 
---R
---R   (9)  dy
---R                                         Type: DeRhamComplex(Integer,[x,y,z])
---E 9
-
---S 10 of 34
-dz : der := generator(3)
---R 
---R
---R   (10)  dz
---R                                         Type: DeRhamComplex(Integer,[x,y,z])
---E 10
-
---S 11 of 34
-[dx,dy,dz] := [generator(i)$der for i in 1..3]
---R 
---R
---R   (11)  [dx,dy,dz]
---R                                    Type: List DeRhamComplex(Integer,[x,y,z])
---E 11
-
---S 12 of 34
-alpha : der := f*dx + g*dy + h*dz
---R 
---R
---R   (12)
---R          3   2                   2     3 2       2
---R     (- 2x y z  + x y z)dz + (- 7z sin(x y ) + y z cos(z))dy
---R   + 
---R          3 2 5    2
---R     (- 5x y z  + x y z)dx
---R                                         Type: DeRhamComplex(Integer,[x,y,z])
---E 12
-
---S 13 of 34
-beta  : der := cos(tan(x*y*z)+x*y*z)*dx + x*dy
---R 
---R
---R   (13)  x dy + cos(tan(x y z) + x y z)dx
---R                                         Type: DeRhamComplex(Integer,[x,y,z])
---E 13
-
---S 14 of 34
-exteriorDifferential alpha
---R 
---R
---R   (14)
---R         2                  3 2                    3 2
---R     (y z sin(z) + 14z sin(x y ) - 2y z cos(z) - 2x z  + x z)dy dz
---R   + 
---R         3 2 4     2   2          2
---R     (25x y z  - 6x y z  + y z - x y)dx dz
---R   + 
---R           2 2 2     3 2       3   5    2
---R     (- 21x y z cos(x y ) + 10x y z  - x z)dx dy
---R                                         Type: DeRhamComplex(Integer,[x,y,z])
---E 14
-
---S 15 of 34
-exteriorDifferential %
---R 
---R
---R   (15)  0
---R                                         Type: DeRhamComplex(Integer,[x,y,z])
---E 15
-
---S 16 of 34
-gamma := alpha * beta
---R 
---R
---R   (16)
---R        4   2    2               3   2
---R     (2x y z  - x y z)dy dz + (2x y z  - x y z)cos(tan(x y z) + x y z)dx dz
---R   + 
---R       2     3 2       2                                   4 2 5    3
---R   ((7z sin(x y ) - y z cos(z))cos(tan(x y z) + x y z) - 5x y z  + x y z)dx dy
---R                                         Type: DeRhamComplex(Integer,[x,y,z])
---E 16
-
---S 17 of 34
-exteriorDifferential(gamma) - (exteriorDifferential(alpha)*beta - alpha * exteriorDifferential(beta)) 
---R 
---R
---R   (17)  0
---R                                         Type: DeRhamComplex(Integer,[x,y,z])
---E 17
-
---S 18 of 34
-a : BOP := operator('a)
---R 
---R
---R   (18)  a
---R                                                          Type: BasicOperator
---E 18
-
---S 19 of 34
-b : BOP := operator('b)
---R 
---R
---R   (19)  b
---R                                                          Type: BasicOperator
---E 19
-
---S 20 of 34
-c : BOP := operator('c)
---R 
---R
---R   (20)  c
---R                                                          Type: BasicOperator
---E 20
-
---S 21 of 34
-sigma := a(x,y,z) * dx + b(x,y,z) * dy + c(x,y,z) * dz 
---R 
---R
---R   (21)  c(x,y,z)dz + b(x,y,z)dy + a(x,y,z)dx
---R                                         Type: DeRhamComplex(Integer,[x,y,z])
---E 21
-
---S 22 of 34
-theta  := a(x,y,z) * dx * dy + b(x,y,z) * dx * dz + c(x,y,z) * dy * dz 
---R 
---R
---R   (22)  c(x,y,z)dy dz + b(x,y,z)dx dz + a(x,y,z)dx dy
---R                                         Type: DeRhamComplex(Integer,[x,y,z])
---E 22
-
---S 23 of 34
-totalDifferential(a(x,y,z))$der 
---R 
---R
---R   (23)  a  (x,y,z)dz + a  (x,y,z)dy + a  (x,y,z)dx
---R          ,3             ,2             ,1
---R                                         Type: DeRhamComplex(Integer,[x,y,z])
---E 23
-
---S 24 of 34
-exteriorDifferential sigma
---R 
---R
---R   (24)
---R     (c  (x,y,z) - b  (x,y,z))dy dz + (c  (x,y,z) - a  (x,y,z))dx dz
---R       ,2           ,3                  ,1           ,3
---R   + 
---R     (b  (x,y,z) - a  (x,y,z))dx dy
---R       ,1           ,2
---R                                         Type: DeRhamComplex(Integer,[x,y,z])
---E 24
-
---S 25 of 34
-exteriorDifferential theta
---R 
---R
---R   (25)  (c  (x,y,z) - b  (x,y,z) + a  (x,y,z))dx dy dz
---R           ,1           ,2           ,3
---R                                         Type: DeRhamComplex(Integer,[x,y,z])
---E 25
-
---S 26 of 34
-one : der := 1
---R 
---R
---R   (26)  1
---R                                         Type: DeRhamComplex(Integer,[x,y,z])
---E 26
-
---S 27 of 34
-g1 : der := a([x,t,y,u,v,z,e]) * one 
---R 
---R
---R   (27)  a(x,t,y,u,v,z,e)
---R                                         Type: DeRhamComplex(Integer,[x,y,z])
---E 27
-
---S 28 of 34
-h1 : der := a([x,y,x,t,x,z,y,r,u,x]) * one 
---R 
---R
---R   (28)  a(x,y,x,t,x,z,y,r,u,x)
---R                                         Type: DeRhamComplex(Integer,[x,y,z])
---E 28
-
---S 29 of 34
-exteriorDifferential g1 
---R 
---R
---R   (29)  a  (x,t,y,u,v,z,e)dz + a  (x,t,y,u,v,z,e)dy + a  (x,t,y,u,v,z,e)dx
---R          ,6                     ,3                     ,1
---R                                         Type: DeRhamComplex(Integer,[x,y,z])
---E 29
-
---S 30 of 34
-exteriorDifferential h1
---R 
---R
---R   (30)
---R     a  (x,y,x,t,x,z,y,r,u,x)dz
---R      ,6
---R   + 
---R     (a  (x,y,x,t,x,z,y,r,u,x) + a  (x,y,x,t,x,z,y,r,u,x))dy
---R       ,7                         ,2
---R   + 
---R         a   (x,y,x,t,x,z,y,r,u,x) + a  (x,y,x,t,x,z,y,r,u,x)
---R          ,10                         ,5
---R       + 
---R         a  (x,y,x,t,x,z,y,r,u,x) + a  (x,y,x,t,x,z,y,r,u,x)
---R          ,3                         ,1
---R    *
---R       dx
---R                                         Type: DeRhamComplex(Integer,[x,y,z])
---E 30
-
---S 31 of 34
-coefficient(gamma, dx*dy)
---R 
---R
---R            2     3 2       2                                   4 2 5    3
---R   (31)  (7z sin(x y ) - y z cos(z))cos(tan(x y z) + x y z) - 5x y z  + x y z
---R                                                     Type: Expression Integer
---E 31
-
---S 32 of 34
-coefficient(gamma, one)
---R 
---R
---R   (32)  0
---R                                                     Type: Expression Integer
---E 32
-
---S 33 of 34
-coefficient(g1,one)
---R 
---R
---R   (33)  a(x,t,y,u,v,z,e)
---R                                                     Type: Expression Integer
---E 33
-
---S 34 of 34
-gamma := alpha * beta
---R 
---R
---R   (34)
---R        4   2    2               3   2
---R     (2x y z  - x y z)dy dz + (2x y z  - x y z)cos(tan(x y z) + x y z)dx dz
---R   + 
---R       2     3 2       2                                   4 2 5    3
---R   ((7z sin(x y ) - y z cos(z))cos(tan(x y z) + x y z) - 5x y z  + x y z)dx dy
---R                                         Type: DeRhamComplex(Integer,[x,y,z])
---E 34
-)spool
-)lisp (bye)
-@
-<<DeRhamComplex.help>>=
-====================================================================
-DeRhamComplex examples
-====================================================================
-
-The domain constructor DeRhamComplex creates the class of differential
-forms of arbitrary degree over a coefficient ring.  The De Rham
-complex constructor takes two arguments: a ring, coefRing, and a list
-of coordinate variables.
-
-This is the ring of coefficients.
-
-  coefRing := Integer
-   Integer
-                      Type: Domain
-
-These are the coordinate variables.
-
-  lv : List Symbol := [x,y,z] 
-   [x,y,z]
-                      Type: List Symbol
-
-
-This is the De Rham complex of Euclidean three-space using coordinates
-x, y and z.
-
-  der := DERHAM(coefRing,lv) 
-   DeRhamComplex(Integer,[x,y,z])
-                      Type: Domain
-
-This complex allows us to describe differential forms having
-expressions of integers as coefficients.  These coefficients can
-involve any number of variables, for example, f(x,t,r,y,u,z).  As
-we've chosen to work with ordinary Euclidean three-space, expressions
-involving these forms are treated as functions of x, y and z with the
-additional arguments t, r and u regarded as symbolic constants.
-
-Here are some examples of coefficients.
-
-  R := Expression coefRing
-   Expression Integer
-                     Type: Domain
-
-  f : R := x**2*y*z-5*x**3*y**2*z**5
-       3 2 5    2
-   - 5x y z  + x y z
-                     Type: Expression Integer
-
-  g : R := z**2*y*cos(z)-7*sin(x**3*y**2)*z**2 
-       2     3 2       2
-   - 7z sin(x y ) + y z cos(z)
-                     Type: Expression Integer
-
-  h : R :=x*y*z-2*x**3*y*z**2 
-       3   2
-   - 2x y z  + x y z
-                     Type: Expression Integer
-
-We now define the multiplicative basis elements for the exterior
-algebra over R.
-
-  dx : der := generator(1)
-   dx
-                     Type: DeRhamComplex(Integer,[x,y,z])
-
-  dy : der := generator(2)
-   dy
-                     Type: DeRhamComplex(Integer,[x,y,z])
-
-  dz : der := generator(3)
-   dz
-                     Type: DeRhamComplex(Integer,[x,y,z])
-
-This is an alternative way to give the above assignments.
-
-  [dx,dy,dz] := [generator(i)$der for i in 1..3]
-    [dx,dy,dz]
-                     Type: List DeRhamComplex(Integer,[x,y,z])
-
-Now we define some one-forms.
-
-  alpha : der := f*dx + g*dy + h*dz
-          3   2                   2     3 2       2
-     (- 2x y z  + x y z)dz + (- 7z sin(x y ) + y z cos(z))dy
-   + 
-          3 2 5    2
-     (- 5x y z  + x y z)dx
-                     Type: DeRhamComplex(Integer,[x,y,z])
-
-  beta  : der := cos(tan(x*y*z)+x*y*z)*dx + x*dy
-    x dy + cos(tan(x y z) + x y z)dx
-                     Type: DeRhamComplex(Integer,[x,y,z])
-
-A well-known theorem states that the composition of exteriorDifferential 
-with itself is the zero map for continuous forms. Let's verify this 
-theorem for alpha.
-
-  exteriorDifferential alpha
-         2                  3 2                    3 2
-     (y z sin(z) + 14z sin(x y ) - 2y z cos(z) - 2x z  + x z)dy dz
-   + 
-         3 2 4     2   2          2
-     (25x y z  - 6x y z  + y z - x y)dx dz
-   + 
-           2 2 2     3 2       3   5    2
-     (- 21x y z cos(x y ) + 10x y z  - x z)dx dy
-                      Type: DeRhamComplex(Integer,[x,y,z])
-
-We see a lengthy output of the last expression, but nevertheless, the
-composition is zero.
-
-  exteriorDifferential %
-    0
-                      Type: DeRhamComplex(Integer,[x,y,z])
-
-Now we check that exteriorDifferential is a "graded derivation" D,
-that is, D satisfies:
-
-  D(a*b) = D(a)*b + (-1)**degree(a)*a*D(b)
-
-  gamma := alpha * beta
-        4   2    2               3   2
-     (2x y z  - x y z)dy dz + (2x y z  - x y z)cos(tan(x y z) + x y z)dx dz
-   + 
-       2     3 2       2                                   4 2 5    3
-   ((7z sin(x y ) - y z cos(z))cos(tan(x y z) + x y z) - 5x y z  + x y z)dx dy
-                      Type: DeRhamComplex(Integer,[x,y,z])
-
-We try this for the one-forms alpha and beta.
-
-  exteriorDifferential(gamma) - (exteriorDifferential(alpha)*beta - alpha * exteriorDifferential(beta)) 
-    0
-                      Type: DeRhamComplex(Integer,[x,y,z])
-
-Now we define some "basic operators"
-
-  a : BOP := operator('a)
-    a
-                      Type: BasicOperator
-
-  b : BOP := operator('b)
-    b
-                      Type: BasicOperator
-
-  c : BOP := operator('c)
-    c
-                      Type: BasicOperator
-
-We also define some indeterminate one- and two-forms using these
-operators.
-
-  sigma := a(x,y,z) * dx + b(x,y,z) * dy + c(x,y,z) * dz 
-    c(x,y,z)dz + b(x,y,z)dy + a(x,y,z)dx
-                      Type: DeRhamComplex(Integer,[x,y,z])
-
-  theta  := a(x,y,z) * dx * dy + b(x,y,z) * dx * dz + c(x,y,z) * dy * dz 
-    c(x,y,z)dy dz + b(x,y,z)dx dz + a(x,y,z)dx dy
-                      Type: DeRhamComplex(Integer,[x,y,z])
-
-This allows us to get formal definitions for the "gradient" ...
-
-  totalDifferential(a(x,y,z))$der 
-   (23)  a  (x,y,z)dz + a  (x,y,z)dy + a  (x,y,z)dx
-          ,3             ,2             ,1
-                      Type: DeRhamComplex(Integer,[x,y,z])
-the "curl" ...
-
-  exteriorDifferential sigma
-     (c  (x,y,z) - b  (x,y,z))dy dz + (c  (x,y,z) - a  (x,y,z))dx dz
-       ,2           ,3                  ,1           ,3
-   + 
-     (b  (x,y,z) - a  (x,y,z))dx dy
-       ,1           ,2
-                       Type: DeRhamComplex(Integer,[x,y,z])
-
-and the "divergence."
-
-  exteriorDifferential theta
-    (c  (x,y,z) - b  (x,y,z) + a  (x,y,z))dx dy dz
-      ,1           ,2           ,3
-                       Type: DeRhamComplex(Integer,[x,y,z])
-
-Note that the De Rham complex is an algebra with unity.  This element
-1 is the basis for elements for zero-forms, that is, functions in our
-space.
-
-  one : der := 1
-    1
-                       Type: DeRhamComplex(Integer,[x,y,z])
-
-To convert a function to a function lying in the De Rham complex,
-multiply the function by "one."
-
-  g1 : der := a([x,t,y,u,v,z,e]) * one 
-    a(x,t,y,u,v,z,e)
-                       Type: DeRhamComplex(Integer,[x,y,z])
-
-A current limitation of Axiom forces you to write functions with more
-than four arguments using square brackets in this way.
-
-  h1 : der := a([x,y,x,t,x,z,y,r,u,x]) * one 
-    a(x,y,x,t,x,z,y,r,u,x)
-                        Type: DeRhamComplex(Integer,[x,y,z])
-
-Now note how the system keeps track of where your coordinate functions
-are located in expressions.
-
-  exteriorDifferential g1 
-    a  (x,t,y,u,v,z,e)dz + a  (x,t,y,u,v,z,e)dy + a  (x,t,y,u,v,z,e)dx
-     ,6                     ,3                     ,1
-                        Type: DeRhamComplex(Integer,[x,y,z])
-
-  exteriorDifferential h1
-     a  (x,y,x,t,x,z,y,r,u,x)dz
-      ,6
-   + 
-     (a  (x,y,x,t,x,z,y,r,u,x) + a  (x,y,x,t,x,z,y,r,u,x))dy
-       ,7                         ,2
-   + 
-         a   (x,y,x,t,x,z,y,r,u,x) + a  (x,y,x,t,x,z,y,r,u,x)
-          ,10                         ,5
-       + 
-         a  (x,y,x,t,x,z,y,r,u,x) + a  (x,y,x,t,x,z,y,r,u,x)
-          ,3                         ,1
-    *
-       dx
-                       Type: DeRhamComplex(Integer,[x,y,z])
-
-In this example of Euclidean three-space, the basis for the De Rham complex
-consists of the eight forms: 1, dx, dy, dz, dx*dy, dx*dz, dy*dz, and dx*dy*dz.
-
-  coefficient(gamma, dx*dy)
-       2     3 2       2                                   4 2 5    3
-    (7z sin(x y ) - y z cos(z))cos(tan(x y z) + x y z) - 5x y z  + x y z
-                       Type: Expression Integer
-
-  coefficient(gamma, one)
-    0
-                       Type: Expression Integer
-
-  coefficient(g1,one)
-    a(x,t,y,u,v,z,e)
-                       Type: Expression Integer
-
-See Also:
-o )help Operator
-o )show DeRhamComplex
-o $AXIOM/doc/src/algebra/derham.spad.dvi
-
-@
-<<domain DERHAM DeRhamComplex>>=
-)abbrev domain DERHAM DeRhamComplex
-++ Author: Larry A. Lambe
-++ Date    : 01/26/91.
-++ Revised : 12/01/91.
-++
-++ based on code from '89 (AntiSymmetric)
-++
-++ Needs: LeftAlgebra, ExtAlgBasis, FreeMod(Ring,OrderedSet)
-++
-++ Description: The deRham complex of Euclidean space, that is, the
-++ class of differential forms of arbitary degree over a coefficient ring.
-++ See Flanders, Harley, Differential Forms, With Applications to the Physical
-++ Sciences, New York, Academic Press, 1963.
- 
-DeRhamComplex(CoefRing,listIndVar:List Symbol): Export == Implement where
-  CoefRing :  Join(Ring, OrderedSet)
-  ASY     ==> AntiSymm(R,listIndVar)
-  DIFRING ==> DifferentialRing
-  LALG    ==> LeftAlgebra
-  FMR     ==> FreeMod(R,EAB)
-  I       ==> Integer
-  L       ==> List
-  EAB     ==> ExtAlgBasis  -- these are exponents of basis elements in order
-  NNI     ==> NonNegativeInteger
-  O       ==> OutputForm
-  R       ==> Expression(CoefRing)
- 
-  Export == Join(LALG(R), RetractableTo(R)) with
-      leadingCoefficient : %           -> R
-	++ leadingCoefficient(df) returns the leading
-	++ coefficient of differential form df.
-      leadingBasisTerm   : %           -> %
-	++ leadingBasisTerm(df) returns the leading
-	++ basis term of differential form df.
-      reductum           : %           -> %
-	++ reductum(df), where df is a differential form, 
-        ++ returns df minus the leading
-	++ term of df if df has two or more terms, and
-	++ 0 otherwise.
-      coefficient        : (%,%)     -> R 
-	++ coefficient(df,u), where df is a differential form,
-        ++ returns the coefficient of df containing the basis term u
-        ++ if such a term exists, and 0 otherwise.
-      generator          : NNI         -> %
-	++ generator(n) returns the nth basis term for a differential form.
-      homogeneous?       : %           -> Boolean
-	++  homogeneous?(df) tests if all of the terms of 
-	++  differential form df have the same degree.
-      retractable?       : %           -> Boolean
-	++  retractable?(df) tests if differential form df is a 0-form,
-	++  i.e., if degree(df) = 0.
-      degree             : %           -> I
-	++  degree(df) returns the homogeneous degree of differential form df.
-      map                : (R -> R, %) -> %
-	++  map(f,df) replaces each coefficient x of differential 
-        ++  form df by \spad{f(x)}.
-      totalDifferential    : R -> %
-	++  totalDifferential(x) returns the total differential 
-	++  (gradient) form for element x.
-      exteriorDifferential : % -> %
-	++  exteriorDifferential(df) returns the exterior 
-	++  derivative (gradient, curl, divergence, ...) of
-	++  the differential form df.
-
-  Implement == ASY add
-      Rep := ASY 
-
-      dim := #listIndVar
-
-      totalDifferential(f) ==
-        divs:=[differentiate(f,listIndVar.i)*generator(i)$ASY for i in 1..dim]
-        reduce("+",divs)
-
-      termDiff : (R, %) -> %
-      termDiff(r,e) ==
-        totalDifferential(r) * e
-
-      exteriorDifferential(x) ==
-        x = 0 => 0
-        termDiff(leadingCoefficient(x)$Rep,leadingBasisTerm x) + exteriorDifferential(reductum x)
-
-      lv := [concat("d",string(liv))$String::Symbol for liv in listIndVar]
-
-      displayList:EAB -> O
-      displayList(x):O ==
-        le: L I := exponents(x)$EAB
---      reduce(_*,[(lv.i)::O for i in 1..dim | le.i = 1])$L(O)
---        reduce(_*,[(lv.i)::O for i in 1..dim | one?(le.i)])$L(O)
-        reduce(_*,[(lv.i)::O for i in 1..dim | ((le.i) = 1)])$L(O)
-
-      makeTerm:(R,EAB) -> O
-      makeTerm(r,x) ==
-      -- we know that r ^= 0
-        x = Nul(dim)$EAB  => r::O
---        one? r => displayList(x)
-        (r = 1) => displayList(x)
---      r = 1 => displayList(x)
-        r::O * displayList(x)
-
-      terms : % -> List Record(k: EAB, c: R)
-      terms(a) ==
-        -- it is the case that there are at least two terms in a
-        a pretend List Record(k: EAB, c: R)
-        
-      coerce(a):O ==
-        a           = 0$Rep => 0$I::O
-        ta := terms a
---      reductum(a) = 0$Rep => makeTerm(leadingCoefficient a, a.first.k)
-        null ta.rest => makeTerm(ta.first.c, ta.first.k)
-        reduce(_+,[makeTerm(t.c,t.k) for t in ta])$L(O)
-
-@
-\section{License}
-<<license>>=
---Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
---All rights reserved.
---
---Redistribution and use in source and binary forms, with or without
---modification, are permitted provided that the following conditions are
---met:
---
---    - Redistributions of source code must retain the above copyright
---      notice, this list of conditions and the following disclaimer.
---
---    - Redistributions in binary form must reproduce the above copyright
---      notice, this list of conditions and the following disclaimer in
---      the documentation and/or other materials provided with the
---      distribution.
---
---    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
---      names of its contributors may be used to endorse or promote products
---      derived from this software without specific prior written permission.
---
---THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
---IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
---TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
---PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
---OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
---EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
---PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
---PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
---LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
---NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
---SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-@
-<<*>>=
-<<license>>
-
-<<domain EAB ExtAlgBasis>>
-<<domain ANTISYM AntiSymm>>
-<<domain DERHAM DeRhamComplex>>
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/algebra/divisor.spad.pamphlet b/src/algebra/divisor.spad.pamphlet
index ffe3681..1fbd034 100644
--- a/src/algebra/divisor.spad.pamphlet
+++ b/src/algebra/divisor.spad.pamphlet
@@ -9,175 +9,6 @@
 \eject
 \tableofcontents
 \eject
-\section{domain FRIDEAL FractionalIdeal}
-<<domain FRIDEAL FractionalIdeal>>=
-)abbrev domain FRIDEAL FractionalIdeal
-++ Author: Manuel Bronstein
-++ Date Created: 27 Jan 1989
-++ Date Last Updated: 30 July 1993
-++ Keywords: ideal, algebra, module.
-++ Examples: )r FRIDEAL INPUT
-++ Description: Fractional ideals in a framed algebra.
-FractionalIdeal(R, F, UP, A): Exports == Implementation where
-  R : EuclideanDomain
-  F : QuotientFieldCategory R
-  UP: UnivariatePolynomialCategory F
-  A : Join(FramedAlgebra(F, UP), RetractableTo F)
-
-  VF  ==> Vector F
-  VA  ==> Vector A
-  UPA ==> SparseUnivariatePolynomial A
-  QF  ==> Fraction UP
-
-  Exports ==> Group with
-    ideal   : VA -> %
-      ++ ideal([f1,...,fn]) returns the ideal \spad{(f1,...,fn)}.
-    basis   : %  -> VA
-      ++ basis((f1,...,fn)) returns the vector \spad{[f1,...,fn]}.
-    norm    : %  -> F
-      ++ norm(I) returns the norm of the ideal I.
-    numer   : %  -> VA
-      ++ numer(1/d * (f1,...,fn)) = the vector \spad{[f1,...,fn]}.
-    denom   : %  -> R
-      ++ denom(1/d * (f1,...,fn)) returns d.
-    minimize: %  -> %
-      ++ minimize(I) returns a reduced set of generators for \spad{I}.
-    randomLC: (NonNegativeInteger, VA) -> A
-      ++ randomLC(n,x) should be local but conditional.
-
-  Implementation ==> add
-    import CommonDenominator(R, F, VF)
-    import MatrixCommonDenominator(UP, QF)
-    import InnerCommonDenominator(R, F, List R, List F)
-    import MatrixCategoryFunctions2(F, Vector F, Vector F, Matrix F,
-                        UP, Vector UP, Vector UP, Matrix UP)
-    import MatrixCategoryFunctions2(UP, Vector UP, Vector UP,
-                        Matrix UP, F, Vector F, Vector F, Matrix F)
-    import MatrixCategoryFunctions2(UP, Vector UP, Vector UP,
-                        Matrix UP, QF, Vector QF, Vector QF, Matrix QF)
-
-    Rep := Record(num:VA, den:R)
-
-    poly    : % -> UPA
-    invrep  : Matrix F -> A
-    upmat   : (A, NonNegativeInteger) -> Matrix UP
-    summat  : % -> Matrix UP
-    num2O   : VA -> OutputForm
-    agcd    : List A -> R
-    vgcd    : VF -> R
-    mkIdeal : (VA, R) -> %
-    intIdeal: (List A, R) -> %
-    ret?    : VA -> Boolean
-    tryRange: (NonNegativeInteger, VA, R, %) -> Union(%, "failed")
-
-    1               == [[1]$VA, 1]
-    numer i         == i.num
-    denom i         == i.den
-    mkIdeal(v, d)   == [v, d]
-    invrep m        == represents(transpose(m) * coordinates(1$A))
-    upmat(x, i)     == map(monomial(#1, i)$UP, regularRepresentation x)
-    ret? v          == any?(retractIfCan(#1)@Union(F,"failed") case F, v)
-    x = y           == denom(x) = denom(y) and numer(x) = numer(y)
-    agcd l  == reduce("gcd", [vgcd coordinates a for a in l]$List(R), 0)
-
-    norm i ==
-      ("gcd"/[retract(u)@R for u in coefficients determinant summat i])
-              / denom(i) ** rank()$A
-
-    tryRange(range, nm, nrm, i) ==
-      for j in 0..10 repeat
-        a := randomLC(10 * range, nm)
-        unit? gcd((retract(norm a)@R exquo nrm)::R, nrm) =>
-                                return intIdeal([nrm::F::A, a], denom i)
-      "failed"
-
-    summat i ==
-      m := minIndex(v := numer i)
-      reduce("+",
-            [upmat(qelt(v, j + m), j) for j in 0..#v-1]$List(Matrix UP))
-
-    inv i ==
-      m  := inverse(map(#1::QF, summat i))::Matrix(QF)
-      cd  := splitDenominator(denom(i)::F::UP::QF * m)
-      cd2 := splitDenominator coefficients(cd.den)
-      invd:= cd2.den / reduce("gcd", cd2.num)
-      d   := reduce("max", [degree p for p in parts(cd.num)])
-      ideal
-        [invd * invrep map(coefficient(#1, j), cd.num) for j in 0..d]$VA
-
-    ideal v ==
-      d := reduce("lcm", [commonDenominator coordinates qelt(v, i)
-                          for i in minIndex v .. maxIndex v]$List(R))
-      intIdeal([d::F * qelt(v, i) for i in minIndex v .. maxIndex v], d)
-
-    intIdeal(l, d) ==
-      lr := empty()$List(R)
-      nr := empty()$List(A)
-      for x in removeDuplicates l repeat
-        if (u := retractIfCan(x)@Union(F, "failed")) case F
-          then lr := concat(retract(u::F)@R, lr)
-          else nr := concat(x, nr)
-      r    := reduce("gcd", lr, 0)
-      g    := agcd nr
-      a    := (r quo (b := gcd(gcd(d, r), g)))::F::A
-      d    := d quo b
-      r ^= 0 and ((g exquo r) case R) => mkIdeal([a], d)
-      invb := inv(b::F)
-      va:VA := [invb * m for m in nr]
-      zero? a => mkIdeal(va, d)
-      mkIdeal(concat(a, va), d)
-
-    vgcd v ==
-      reduce("gcd",
-             [retract(v.i)@R for i in minIndex v .. maxIndex v]$List(R))
-
-    poly i ==
-      m := minIndex(v := numer i)
-      +/[monomial(qelt(v, i + m), i) for i in 0..#v-1]
-
-    i1 * i2 ==
-      intIdeal(coefficients(poly i1 * poly i2), denom i1 * denom i2)
-
-    i:$ ** m:Integer ==
-      m < 0 => inv(i) ** (-m)
-      n := m::NonNegativeInteger
-      v := numer i
-      intIdeal([qelt(v, j) ** n for j in minIndex v .. maxIndex v],
-               denom(i) ** n)
-
-    num2O v ==
-      paren [qelt(v, i)::OutputForm
-             for i in minIndex v .. maxIndex v]$List(OutputForm)
-
-    basis i ==
-      v := numer i
-      d := inv(denom(i)::F)
-      [d * qelt(v, j) for j in minIndex v .. maxIndex v]
-
-    coerce(i:$):OutputForm ==
-      nm := num2O numer i
---      one? denom i => nm
-      (denom i = 1) => nm
-      (1::Integer::OutputForm) / (denom(i)::OutputForm) * nm
-
-    if F has Finite then
-      randomLC(m, v) ==
-        +/[random()$F * qelt(v, j) for j in minIndex v .. maxIndex v]
-    else
-      randomLC(m, v) ==
-        +/[(random()$Integer rem m::Integer) * qelt(v, j)
-            for j in minIndex v .. maxIndex v]
-
-    minimize i ==
-      n := (#(nm := numer i))
---      one?(n) or (n < 3 and ret? nm) => i
-      (n = 1) or (n < 3 and ret? nm) => i
-      nrm    := retract(norm mkIdeal(nm, 1))@R
-      for range in 1..5 repeat
-        (u := tryRange(range, nm, nrm, i)) case $ => return(u::$)
-      i
-
-@
 \section{package FRIDEAL2 FractionalIdealFunctions2}
 <<package FRIDEAL2 FractionalIdealFunctions2>>=
 )abbrev package FRIDEAL2 FractionalIdealFunctions2
@@ -457,411 +288,6 @@ ModularHermitianRowReduction(R): Exports == Implementation where
         x
 
 @
-\section{domain FRMOD FramedModule}
-<<domain FRMOD FramedModule>>=
-)abbrev domain FRMOD FramedModule
-++ Author: Manuel Bronstein
-++ Date Created: 27 Jan 1989
-++ Date Last Updated: 24 Jul 1990
-++ Keywords: ideal, algebra, module.
-++ Examples: )r FRIDEAL INPUT
-++ Description: Module representation of fractional ideals.
-FramedModule(R, F, UP, A, ibasis): Exports == Implementation where
-  R     : EuclideanDomain
-  F     : QuotientFieldCategory R
-  UP    : UnivariatePolynomialCategory F
-  A     : FramedAlgebra(F, UP)
-  ibasis: Vector A
-
-  VR  ==> Vector R
-  VF  ==> Vector F
-  VA  ==> Vector A
-  M   ==> Matrix F
-
-  Exports ==> Monoid with
-    basis : %  -> VA
-      ++ basis((f1,...,fn)) = the vector \spad{[f1,...,fn]}.
-    norm  : %  -> F
-      ++ norm(f) returns the norm of the module f.
-    module: VA -> %
-      ++ module([f1,...,fn]) = the module generated by \spad{(f1,...,fn)}
-      ++ over R.
-    if A has RetractableTo F then
-      module: FractionalIdeal(R, F, UP, A) -> %
-        ++ module(I) returns I viewed has a module over R.
-
-  Implementation ==> add
-    import MatrixCommonDenominator(R, F)
-    import ModularHermitianRowReduction(R)
-
-    Rep  := VA
-
-    iflag?:Reference(Boolean) := ref true
-    wflag?:Reference(Boolean) := ref true
-    imat := new(#ibasis, #ibasis, 0)$M
-    wmat := new(#ibasis, #ibasis, 0)$M
-
-    rowdiv      : (VR, R)  -> VF
-    vectProd    : (VA, VA) -> VA
-    wmatrix     : VA -> M
-    W2A         : VF -> A
-    intmat      : () -> M
-    invintmat   : () -> M
-    getintmat   : () -> Boolean
-    getinvintmat: () -> Boolean
-
-    1                      == ibasis
-    module(v:VA)           == v
-    basis m                == m pretend VA
-    rowdiv(r, f)           == [r.i / f for i in minIndex r..maxIndex r]
-    coerce(m:%):OutputForm == coerce(basis m)$VA
-    W2A v                  == represents(v * intmat())
-    wmatrix v              == coordinates(v) * invintmat()
-
-    getinvintmat() ==
-      m := inverse(intmat())::M
-      for i in minRowIndex m .. maxRowIndex m repeat
-        for j in minColIndex m .. maxColIndex m repeat
-          imat(i, j) := qelt(m, i, j)
-      false
-
-    getintmat() ==
-      m := coordinates ibasis
-      for i in minRowIndex m .. maxRowIndex m repeat
-        for j in minColIndex m .. maxColIndex m repeat
-          wmat(i, j) := qelt(m, i, j)
-      false
-
-    invintmat() ==
-      if iflag?() then iflag?() := getinvintmat()
-      imat
-
-    intmat() ==
-      if wflag?() then wflag?() := getintmat()
-      wmat
-
-    vectProd(v1, v2) ==
-      k := minIndex(v := new(#v1 * #v2, 0)$VA)
-      for i in minIndex v1 .. maxIndex v1 repeat
-        for j in minIndex v2 .. maxIndex v2 repeat
-          qsetelt_!(v, k, qelt(v1, i) * qelt(v2, j))
-          k := k + 1
-      v pretend VA
-
-    norm m ==
-      #(basis m) ^= #ibasis => error "Module not of rank n"
-      determinant(coordinates(basis m) * invintmat())
-
-    m1 * m2 ==
-      m := rowEch((cd := splitDenominator wmatrix(
-                                     vectProd(basis m1, basis m2))).num)
-      module [u for i in minRowIndex m .. maxRowIndex m |
-                           (u := W2A rowdiv(row(m, i), cd.den)) ^= 0]$VA
-
-    if A has RetractableTo F then
-      module(i:FractionalIdeal(R, F, UP, A)) ==
-        module(basis i) * module(ibasis)
-
-@
-\section{domain HELLFDIV HyperellipticFiniteDivisor}
-<<domain HELLFDIV HyperellipticFiniteDivisor>>=
-)abbrev domain HELLFDIV HyperellipticFiniteDivisor
-++ Finite rational divisors on an hyperelliptic curve
-++ Author: Manuel Bronstein
-++ Date Created: 19 May 1993
-++ Date Last Updated: 20 July 1998
-++ Description:
-++ This domains implements finite rational divisors on an hyperelliptic curve,
-++ that is finite formal sums SUM(n * P) where the n's are integers and the
-++ P's are finite rational points on the curve.
-++ The equation of the curve must be  y^2 = f(x) and f must have odd degree.
-++ Keywords: divisor, algebraic, curve.
-++ Examples: )r FDIV INPUT
-HyperellipticFiniteDivisor(F, UP, UPUP, R): Exports == Implementation where
-  F   : Field
-  UP  : UnivariatePolynomialCategory F
-  UPUP: UnivariatePolynomialCategory Fraction UP
-  R   : FunctionFieldCategory(F, UP, UPUP)
-
-  O   ==> OutputForm
-  Z   ==> Integer
-  RF  ==> Fraction UP
-  ID  ==> FractionalIdeal(UP, RF, UPUP, R)
-  ERR ==> error "divisor: incomplete implementation for hyperelliptic curves"
-
-  Exports ==> FiniteDivisorCategory(F, UP, UPUP, R)
-
-  Implementation ==> add
-    if (uhyper:Union(UP, "failed") := hyperelliptic()$R) case "failed" then
-              error "HyperellipticFiniteDivisor: curve must be hyperelliptic"
-
--- we use the semi-reduced representation from D.Cantor, "Computing in the
--- Jacobian of a HyperellipticCurve", Mathematics of Computation, vol 48,
--- no.177, January 1987, 95-101.
--- The representation [a,b,f] for D means D = [a,b] + div(f)
--- and [a,b] is a semi-reduced representative on the Jacobian
-    Rep := Record(center:UP, polyPart:UP, principalPart:R, reduced?:Boolean)
-
-    hyper:UP := uhyper::UP
-    gen:Z    := ((degree(hyper)::Z - 1) exquo 2)::Z     -- genus of the curve
-    dvd:O    := "div"::Symbol::O
-    zer:O    := 0::Z::O
-
-    makeDivisor  : (UP, UP, R) -> %
-    intReduc     : (R, UP) -> R
-    princ?       : % -> Boolean
-    polyIfCan    : R -> Union(UP, "failed")
-    redpolyIfCan : (R, UP) -> Union(UP, "failed")
-    intReduce    : (R, UP) -> R
-    mkIdeal      : (UP, UP) -> ID
-    reducedTimes : (Z, UP, UP) -> %
-    reducedDouble: (UP, UP) -> %
-
-    0                    == divisor(1$R)
-    divisor(g:R)         == [1, 0, g, true]
-    makeDivisor(a, b, g) == [a, b, g, false]
---    princ? d             == one?(d.center) and zero?(d.polyPart)
-    princ? d             == (d.center = 1) and zero?(d.polyPart)
-    ideal d     == ideal([d.principalPart]) * mkIdeal(d.center, d.polyPart)
-    decompose d == [ideal makeDivisor(d.center, d.polyPart, 1), d.principalPart]
-    mkIdeal(a, b) == ideal [a::RF::R, reduce(monomial(1, 1)$UPUP - b::RF::UPUP)]
-
--- keep the sum reduced if d1 and d2 are both reduced at the start
-    d1 + d2 ==
-      a1  := d1.center;   a2 := d2.center
-      b1  := d1.polyPart; b2 := d2.polyPart
-      rec := principalIdeal [a1, a2, b1 + b2]
-      d   := rec.generator
-      h   := rec.coef              -- d = h1 a1 + h2 a2 + h3(b1 + b2)
-      a   := ((a1 * a2) exquo d**2)::UP
-      b:UP:= first(h) * a1 * b2
-      b   := b + second(h) * a2 * b1
-      b   := b + third(h) * (b1*b2 + hyper)
-      b   := (b exquo d)::UP rem a
-      dd  := makeDivisor(a, b, d::RF * d1.principalPart * d2.principalPart)
-      d1.reduced? and d2.reduced? => reduce dd
-      dd
-
--- if is cheaper to keep on reducing as we exponentiate if d is already reduced
-    n:Z * d:% ==
-      zero? n => 0
-      n < 0 => (-n) * (-d)
-      divisor(d.principalPart ** n) + divisor(mkIdeal(d.center,d.polyPart) ** n)
-
-    divisor(i:ID) ==
---      one?(n := #(v := basis minimize i)) => divisor v minIndex v
-      (n := #(v := basis minimize i)) = 1 => divisor v minIndex v
-      n ^= 2 => ERR
-      a := v minIndex v
-      h := v maxIndex v
-      (u := polyIfCan a) case UP =>
-        (w := redpolyIfCan(h, u::UP)) case UP => makeDivisor(u::UP, w::UP, 1)
-        ERR
-      (u := polyIfCan h) case UP =>
-        (w := redpolyIfCan(a, u::UP)) case UP => makeDivisor(u::UP, w::UP, 1)
-        ERR
-      ERR
-
-    polyIfCan a ==
-      (u := retractIfCan(a)@Union(RF, "failed")) case "failed" => "failed"
-      (v := retractIfCan(u::RF)@Union(UP, "failed")) case "failed" => "failed"
-      v::UP
-
-    redpolyIfCan(h, a) ==
-      degree(p := lift h) ^= 1 => "failed"
-      q := - coefficient(p, 0) / coefficient(p, 1)
-      rec := extendedEuclidean(denom q, a)
-      not ground?(rec.generator) => "failed"
-      ((numer(q) * rec.coef1) exquo rec.generator)::UP rem a
-
-    coerce(d:%):O ==
-      r := bracket [d.center::O, d.polyPart::O]
-      g := prefix(dvd, [d.principalPart::O])
---      z := one?(d.principalPart)
-      z := (d.principalPart = 1)
-      princ? d => (z => zer; g)
-      z => r
-      r + g
-
-    reduce d ==
-      d.reduced? => d
-      degree(a := d.center) <= gen => (d.reduced? := true; d)
-      b  := d.polyPart
-      a0 := ((hyper - b**2) exquo a)::UP
-      b0 := (-b) rem a0
-      g  := d.principalPart * reduce(b::RF::UPUP-monomial(1,1)$UPUP) / a0::RF::R
-      reduce makeDivisor(a0, b0, g)
-
-    generator d ==
-      d := reduce d
-      princ? d => d.principalPart
-      "failed"
-
-    - d ==
-      a := d.center
-      makeDivisor(a, - d.polyPart, inv(a::RF * d.principalPart))
-
-    d1 = d2 ==
-      d1 := reduce d1
-      d2 := reduce d2
-      d1.center = d2.center and d1.polyPart = d2.polyPart
-        and d1.principalPart = d2.principalPart
-
-    divisor(a, b) ==
-      x := monomial(1, 1)$UP
-      not ground? gcd(d := x - a::UP, retract(discriminant())@UP) =>
-                                  error "divisor: point is singular"
-      makeDivisor(d, b::UP, 1)
-
-    intReduce(h, b) ==
-      v := integralCoordinates(h).num
-      integralRepresents(
-                [qelt(v, i) rem b for i in minIndex v .. maxIndex v], 1)
-
--- with hyperelliptic curves, it is cheaper to keep divisors in reduced form
-    divisor(h, a, dp, g, r) ==
-      h  := h - (r * dp)::RF::R
-      a  := gcd(a, retract(norm h)@UP)
-      h  := intReduce(h, a)
-      if not ground? gcd(g, a) then h := intReduce(h ** rank(), a)
-      hh := lift h
-      b  := - coefficient(hh, 0) / coefficient(hh, 1)
-      rec := extendedEuclidean(denom b, a)
-      not ground?(rec.generator) => ERR
-      bb := ((numer(b) * rec.coef1) exquo rec.generator)::UP rem a
-      reduce makeDivisor(a, bb, 1)
-
-@
-\section{domain FDIV FiniteDivisor}
-<<domain FDIV FiniteDivisor>>=
-)abbrev domain FDIV FiniteDivisor
-++ Finite rational divisors on a curve
-++ Author: Manuel Bronstein
-++ Date Created: 1987
-++ Date Last Updated: 29 July 1993
-++ Description:
-++ This domains implements finite rational divisors on a curve, that
-++ is finite formal sums SUM(n * P) where the n's are integers and the
-++ P's are finite rational points on the curve.
-++ Keywords: divisor, algebraic, curve.
-++ Examples: )r FDIV INPUT
-FiniteDivisor(F, UP, UPUP, R): Exports == Implementation where
-  F   : Field
-  UP  : UnivariatePolynomialCategory F
-  UPUP: UnivariatePolynomialCategory Fraction UP
-  R   : FunctionFieldCategory(F, UP, UPUP)
-
-  N   ==> NonNegativeInteger
-  RF  ==> Fraction UP
-  ID  ==> FractionalIdeal(UP, RF, UPUP, R)
-
-  Exports ==> FiniteDivisorCategory(F, UP, UPUP, R) with
-    finiteBasis: % -> Vector R
-      ++ finiteBasis(d) returns a basis for d as a module over {\em K[x]}.
-    lSpaceBasis: % -> Vector R
-      ++ lSpaceBasis(d) returns a basis for \spad{L(d) = {f | (f) >= -d}}
-      ++ as a module over \spad{K[x]}.
-
-  Implementation ==> add
-    if hyperelliptic()$R case UP then
-      Rep := HyperellipticFiniteDivisor(F, UP, UPUP, R)
-
-      0                       == 0$Rep
-      coerce(d:$):OutputForm  == coerce(d)$Rep
-      d1 = d2                 == d1 =$Rep d2
-      n * d                   == n *$Rep d
-      d1 + d2                 == d1 +$Rep d2
-      - d                     == -$Rep d
-      ideal d                 == ideal(d)$Rep
-      reduce d                == reduce(d)$Rep
-      generator d             == generator(d)$Rep
-      decompose d             == decompose(d)$Rep
-      divisor(i:ID)           == divisor(i)$Rep
-      divisor(f:R)            == divisor(f)$Rep
-      divisor(a, b)           == divisor(a, b)$Rep
-      divisor(a, b, n)        == divisor(a, b, n)$Rep
-      divisor(h, d, dp, g, r) == divisor(h, d, dp, g, r)$Rep
-
-    else
-      Rep := Record(id:ID, fbasis:Vector(R))
-
-      import CommonDenominator(UP, RF, Vector RF)
-      import UnivariatePolynomialCommonDenominator(UP, RF, UPUP)
-
-      makeDivisor : (UP, UPUP, UP) -> %
-      intReduce   : (R, UP) -> R
-
-      ww := integralBasis()$R
-
-      0                       == [1, empty()]
-      divisor(i:ID)           == [i, empty()]
-      divisor(f:R)            == divisor ideal [f]
-      coerce(d:%):OutputForm  == ideal(d)::OutputForm
-      ideal d                 == d.id
-      decompose d             == [ideal d, 1]
-      d1 = d2                 == basis(ideal d1) = basis(ideal d2)
-      n * d                   == divisor(ideal(d) ** n)
-      d1 + d2                 == divisor(ideal d1 * ideal d2)
-      - d                     == divisor inv ideal d
-      divisor(h, d, dp, g, r) == makeDivisor(d, lift h - (r * dp)::RF::UPUP, g)
-
-      intReduce(h, b) ==
-        v := integralCoordinates(h).num
-        integralRepresents(
-                      [qelt(v, i) rem b for i in minIndex v .. maxIndex v], 1)
-
-      divisor(a, b) ==
-        x := monomial(1, 1)$UP
-        not ground? gcd(d := x - a::UP, retract(discriminant())@UP) =>
-                                          error "divisor: point is singular"
-        makeDivisor(d, monomial(1, 1)$UPUP - b::UP::RF::UPUP, 1)
-
-      divisor(a, b, n) ==
-        not(ground? gcd(d := monomial(1, 1)$UP - a::UP,
-            retract(discriminant())@UP)) and
-                  ((n exquo rank()) case "failed") =>
-                                    error "divisor: point is singular"
-        m:N :=
-          n < 0 => (-n)::N
-          n::N
-        g := makeDivisor(d**m,(monomial(1,1)$UPUP - b::UP::RF::UPUP)**m,1)
-        n < 0 => -g
-        g
-
-      reduce d ==
-        (i := minimize(j := ideal d)) = j => d
-        #(n := numer i) ^= 2 => divisor i
-        cd := splitDenominator lift n(1 + minIndex n)
-        b  := gcd(cd.den * retract(retract(n minIndex n)@RF)@UP,
-                  retract(norm reduce(cd.num))@UP)
-        e  := cd.den * denom i
-        divisor ideal([(b / e)::R,
-                reduce map((retract(#1)@UP rem b) / e, cd.num)]$Vector(R))
-
-      finiteBasis d ==
-        if empty?(d.fbasis) then
-          d.fbasis := normalizeAtInfinity
-                        basis module(ideal d)$FramedModule(UP, RF, UPUP, R, ww)
-        d.fbasis
-
-      generator d ==
-        bsis := finiteBasis d
-        for i in minIndex bsis .. maxIndex bsis repeat
-          integralAtInfinity? qelt(bsis, i) =>
-            return primitivePart qelt(bsis,i)
-        "failed"
-
-      lSpaceBasis d ==
-        map_!(primitivePart, reduceBasisAtInfinity finiteBasis(-d))
-
--- b = center, hh = integral function, g = gcd(b, discriminant)
-      makeDivisor(b, hh, g) ==
-        b := gcd(b, retract(norm(h := reduce hh))@UP)
-        h := intReduce(h, b)
-        if not ground? gcd(g, b) then h := intReduce(h ** rank(), b)
-        divisor ideal [b::RF::R, h]$Vector(R)
-
-@
 \section{package FDIV2 FiniteDivisorFunctions2}
 <<package FDIV2 FiniteDivisorFunctions2>>=
 )abbrev package FDIV2 FiniteDivisorFunctions2
@@ -937,12 +363,8 @@ FiniteDivisorFunctions2(R1, UP1, UPUP1, F1, R2, UP2, UPUP2, F2):
 --
 --   curve DIVISOR reduc pfo intalg int
 
-<<domain FRIDEAL FractionalIdeal>>
 <<package FRIDEAL2 FractionalIdealFunctions2>>
 <<package MHROWRED ModularHermitianRowReduction>>
-<<domain FRMOD FramedModule>>
-<<domain HELLFDIV HyperellipticFiniteDivisor>>
-<<domain FDIV FiniteDivisor>>
 <<package FDIV2 FiniteDivisorFunctions2>>
 @
 \eject
diff --git a/src/algebra/dpolcat.spad.pamphlet b/src/algebra/dpolcat.spad.pamphlet
deleted file mode 100644
index 226a5e2..0000000
--- a/src/algebra/dpolcat.spad.pamphlet
+++ /dev/null
@@ -1,898 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/algebra dpolcat.spad}
-\author{William Sit}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{domain ODVAR OrderlyDifferentialVariable}
-<<domain ODVAR OrderlyDifferentialVariable>>=
-)abbrev domain ODVAR OrderlyDifferentialVariable
-++ Author:  William Sit
-++ Date Created: 19 July 1990
-++ Date Last Updated: 13 September 1991
-++ Basic Operations:differentiate, order, variable,<
-++ Related Domains: OrderedVariableList,
-++                  SequentialDifferentialVariable.
-++ See Also: DifferentialVariableCategory
-++ AMS Classifications:12H05
-++ Keywords: differential indeterminates, orderly ranking.
-++ References:Kolchin, E.R. "Differential Algebra and Algebraic Groups"
-++   (Academic Press, 1973).
-++ Description:
-++   \spadtype{OrderlyDifferentialVariable} adds a commonly used orderly
-++   ranking to the set of derivatives of an ordered list of differential
-++   indeterminates.  An orderly ranking is a ranking \spadfun{<} of the
-++   derivatives with the property that for two derivatives u and v,
-++   u \spadfun{<} v if the \spadfun{order} of u is less than that
-++   of v.
-++   This domain belongs to \spadtype{DifferentialVariableCategory}.  It
-++   defines \spadfun{weight} to be just \spadfun{order}, and it
-++   defines an orderly ranking \spadfun{<} on derivatives u via the
-++   lexicographic order on the pair
-++   (\spadfun{order}(u), \spadfun{variable}(u)).
-OrderlyDifferentialVariable(S:OrderedSet):DifferentialVariableCategory(S)
-  == add
-    Rep := Record(var:S, ord:NonNegativeInteger)
-    makeVariable(s,n) == [s, n]
-    variable v     == v.var
-    order v        == v.ord
-
-@
-\section{domain SDVAR SequentialDifferentialVariable}
-<<domain SDVAR SequentialDifferentialVariable>>=
-)abbrev domain SDVAR SequentialDifferentialVariable
-++ Author:  William Sit
-++ Date Created: 19 July 1990
-++ Date Last Updated: 13 September 1991
-++ Basic Operations:differentiate, order, variable, <
-++ Related Domains: OrderedVariableList,
-++                  OrderlyDifferentialVariable.
-++ See Also:DifferentialVariableCategory
-++ AMS Classifications:12H05
-++ Keywords: differential indeterminates, sequential ranking.
-++ References:Kolchin, E.R. "Differential Algebra and Algebraic Groups"
-++   (Academic Press, 1973).
-++ Description:
-++   \spadtype{OrderlyDifferentialVariable} adds a commonly used sequential
-++   ranking to the set of derivatives of an ordered list of differential
-++   indeterminates.  A sequential ranking is a ranking \spadfun{<} of the
-++   derivatives with the property that for any derivative v,
-++   there are only a finite number of derivatives u with u \spadfun{<} v.
-++   This domain belongs to \spadtype{DifferentialVariableCategory}.  It
-++   defines \spadfun{weight} to be just \spadfun{order}, and it
-++   defines a sequential ranking \spadfun{<} on derivatives u by the
-++   lexicographic order on the pair
-++   (\spadfun{variable}(u), \spadfun{order}(u)).
-
-SequentialDifferentialVariable(S:OrderedSet):DifferentialVariableCategory(S)
-  == add
-    Rep := Record(var:S, ord:NonNegativeInteger)
-    makeVariable(s,n) == [s, n]
-    variable v     == v.var
-    order v        == v.ord
-    v < u ==
-      variable v = variable u => order v < order u
-      variable v < variable u
-
-@
-\section{domain DSMP DifferentialSparseMultivariatePolynomial}
-<<domain DSMP DifferentialSparseMultivariatePolynomial>>=
-)abbrev domain DSMP DifferentialSparseMultivariatePolynomial
-++ Author:  William Sit
-++ Date Created: 19 July 1990
-++ Date Last Updated: 13 September 1991
-++ Basic Operations:DifferentialPolynomialCategory
-++ Related Constructors:
-++ See Also:
-++ AMS Classifications:12H05
-++ Keywords: differential indeterminates, ranking, differential polynomials,
-++           order, weight, leader, separant, initial, isobaric
-++ References:Kolchin, E.R. "Differential Algebra and Algebraic Groups"
-++   (Academic Press, 1973).
-++ Description:
-++   \spadtype{DifferentialSparseMultivariatePolynomial} implements
-++   an ordinary differential polynomial ring by combining a
-++   domain belonging to the category \spadtype{DifferentialVariableCategory}
-++   with the domain \spadtype{SparseMultivariatePolynomial}.
-++
-
-DifferentialSparseMultivariatePolynomial(R, S, V):
-     Exports == Implementation where
-  R: Ring
-  S: OrderedSet
-  V: DifferentialVariableCategory S
-  E   ==> IndexedExponents(V)
-  PC  ==> PolynomialCategory(R,IndexedExponents(V),V)
-  PCL ==> PolynomialCategoryLifting
-  P   ==> SparseMultivariatePolynomial(R, V)
-  SUP ==> SparseUnivariatePolynomial
-  SMP ==> SparseMultivariatePolynomial(R, S)
-
-  Exports ==> Join(DifferentialPolynomialCategory(R,S,V,E),
-                   RetractableTo SMP)
-
-  Implementation ==> P add
-    retractIfCan(p:$):Union(SMP, "failed") ==
-      zero? order p =>
-        map(retract(#1)@S :: SMP, #1::SMP, p)$PCL(
-                                  IndexedExponents V, V, R, $, SMP)
-      "failed"
-
-    coerce(p:SMP):$ ==
-      map(#1::V::$, #1::$, p)$PCL(IndexedExponents S, S, R, SMP, $)
-
-@
-\section{domain ODPOL OrderlyDifferentialPolynomial}
-<<OrderlyDifferentialPolynomial.input>>=
--- dpolcat.spad.pamphlet OrderlyDifferentialPolynomial.input
-)spool OrderlyDifferentialPolynomial.output
-)set message test on
-)set message auto off
-)clear all
---S 1 of 36
-dpol:= ODPOL(FRAC INT)
---R 
---R
---R   (1)  OrderlyDifferentialPolynomial Fraction Integer
---R                                                                 Type: Domain
---E 1
-
---S 2 of 36
-w := makeVariable('w)$dpol
---R 
---R
---R   (2)  theMap(DPOLCAT-;makeVariable;AM;17!0,0)
---R Type: (NonNegativeInteger -> OrderlyDifferentialPolynomial Fraction Integer)
---E 2
-
---S 3 of 36
-z := makeVariable('z)$dpol
---R 
---R
---R   (3)  theMap(DPOLCAT-;makeVariable;AM;17!0,0)
---R Type: (NonNegativeInteger -> OrderlyDifferentialPolynomial Fraction Integer)
---E 3
-
---S 4 of 36
-w.5
---R 
---R
---R   (4)  w
---R         5
---R                         Type: OrderlyDifferentialPolynomial Fraction Integer
---E 4
-
---S 5 of 36
-w 0
---R 
---R
---R   (5)  w
---R                         Type: OrderlyDifferentialPolynomial Fraction Integer
---E 5
-
---S 6 of 36
-[z.i for i in 1..5]
---R 
---R
---R   (6)  [z ,z ,z ,z ,z ]
---R          1  2  3  4  5
---R                    Type: List OrderlyDifferentialPolynomial Fraction Integer
---E 6
-
---S 7 of 36
-f:= w.4 - w.1 * w.1 * z.3 
---R 
---R
---R               2
---R   (7)  w  - w  z
---R         4    1  3
---R                         Type: OrderlyDifferentialPolynomial Fraction Integer
---E 7
-
---S 8 of 36
-g:=(z.1)**3 * (z.2)**2 - w.2
---R 
---R
---R          3  2
---R   (8)  z  z   - w
---R         1  2     2
---R                         Type: OrderlyDifferentialPolynomial Fraction Integer
---E 8
-
---S 9 of 36
-D(f)
---R 
---R
---R               2
---R   (9)  w  - w  z  - 2w w z
---R         5    1  4     1 2 3
---R                         Type: OrderlyDifferentialPolynomial Fraction Integer
---E 9
-
---S 10 of 36
-D(f,4)
---R 
---R
---R   (10)
---R            2                               2
---R     w  - w  z  - 8w w z  + (- 12w w  - 12w  )z  - 2w z w
---R      8    1  7     1 2 6         1 3      2   5     1 3 5
---R   + 
---R                                         2
---R     (- 8w w  - 24w w )z  - 8w z w  - 6w  z
---R          1 4      2 3  4     2 3 4     3  3
---R                         Type: OrderlyDifferentialPolynomial Fraction Integer
---E 10
-
---S 11 of 36
-df:=makeVariable(f)$dpol
---R 
---R
---R   (11)  theMap(DPOLCAT-;makeVariable;AM;17!0,0)
---R Type: (NonNegativeInteger -> OrderlyDifferentialPolynomial Fraction Integer)
---E 11
-
---S 12 of 36
-df.4
---R 
---R
---R   (12)
---R            2                               2
---R     w  - w  z  - 8w w z  + (- 12w w  - 12w  )z  - 2w z w
---R      8    1  7     1 2 6         1 3      2   5     1 3 5
---R   + 
---R                                         2
---R     (- 8w w  - 24w w )z  - 8w z w  - 6w  z
---R          1 4      2 3  4     2 3 4     3  3
---R                         Type: OrderlyDifferentialPolynomial Fraction Integer
---E 12
-
---S 13 of 36
-order(g)
---R 
---R
---R   (13)  2
---R                                                        Type: PositiveInteger
---E 13
-
---S 14 of 36
-order(g, 'w)
---R 
---R
---R   (14)  2
---R                                                        Type: PositiveInteger
---E 14
-
---S 15 of 36
-differentialVariables(g)
---R 
---R
---R   (15)  [z,w]
---R                                                            Type: List Symbol
---E 15
-
---S 16 of 36
-degree(g)
---R 
---R
---R           2  3
---R   (16)  z  z
---R          2  1
---R                    Type: IndexedExponents OrderlyDifferentialVariable Symbol
---E 16
-
---S 17 of 36
-degree(g, 'w) 
---R 
---R
---R   (17)  1
---R                                                        Type: PositiveInteger
---E 17
-
---S 18 of 36
-weights(g)
---R 
---R
---R   (18)  [7,2]
---R                                                Type: List NonNegativeInteger
---E 18
-
---S 19 of 36
-weights(g,'w)
---R 
---R
---R   (19)  [2]
---R                                                Type: List NonNegativeInteger
---E 19
-
---S 20 of 36
-weight(g)
---R 
---R
---R   (20)  7
---R                                                        Type: PositiveInteger
---E 20
-
---S 21 of 36
-isobaric?(g)
---R 
---R
---R   (21)  false
---R                                                                Type: Boolean
---E 21
-
---S 22 of 36
-eval(g,['w::Symbol],[f])
---R 
---R
---R                  2                           2        3  2
---R   (22)  - w  + w  z  + 4w w z  + (2w w  + 2w  )z  + z  z
---R            6    1  5     1 2 4      1 3     2   3    1  2
---R                         Type: OrderlyDifferentialPolynomial Fraction Integer
---E 22
-
---S 23 of 36
-eval(g,variables(w.0),[f])
---R 
---R
---R           3  2
---R   (23)  z  z   - w
---R          1  2     2
---R                         Type: OrderlyDifferentialPolynomial Fraction Integer
---E 23
-
---S 24 of 36
-monomials(g)
---R 
---R
---R            3  2
---R   (24)  [z  z  ,- w ]
---R           1  2     2
---R                    Type: List OrderlyDifferentialPolynomial Fraction Integer
---E 24
-
---S 25 of 36
-variables(g)
---R 
---R
---R   (25)  [z ,w ,z ]
---R           2  2  1
---R                                Type: List OrderlyDifferentialVariable Symbol
---E 25
-
---S 26 of 36
-gcd(f,g)
---R 
---R
---R   (26)  1
---R                         Type: OrderlyDifferentialPolynomial Fraction Integer
---E 26
-
---S 27 of 36
-groebner([f,g])
---R 
---R
---R                 2     3  2
---R   (27)  [w  - w  z ,z  z   - w ]
---R           4    1  3  1  2     2
---R                    Type: List OrderlyDifferentialPolynomial Fraction Integer
---E 27
-
---S 28 of 36
-lg:=leader(g)
---R 
---R
---R   (28)  z
---R          2
---R                                     Type: OrderlyDifferentialVariable Symbol
---E 28
-
---S 29 of 36
-sg:=separant(g)
---R 
---R
---R            3
---R   (29)  2z  z
---R           1  2
---R                         Type: OrderlyDifferentialPolynomial Fraction Integer
---E 29
-
---S 30 of 36
-ig:=initial(g)
---R 
---R
---R           3
---R   (30)  z
---R          1
---R                         Type: OrderlyDifferentialPolynomial Fraction Integer
---E 30
-
---S 31 of 36
-g1 := D g
---R 
---R
---R            3               2  3
---R   (31)  2z  z z  - w  + 3z  z
---R           1  2 3    3     1  2
---R                         Type: OrderlyDifferentialPolynomial Fraction Integer
---E 31
-
---S 32 of 36
-lg1:= leader g1
---R 
---R
---R   (32)  z
---R          3
---R                                     Type: OrderlyDifferentialVariable Symbol
---E 32
-
---S 33 of 36
-pdf:=D(f, lg1)
---R 
---R
---R             2
---R   (33)  - w
---R            1
---R                         Type: OrderlyDifferentialPolynomial Fraction Integer
---E 33
-
---S 34 of 36
-prf:=sg * f- pdf * g1
---R 
---R
---R            3         2        2  2  3
---R   (34)  2z  z w  - w  w  + 3w  z  z
---R           1  2 4    1  3     1  1  2
---R                         Type: OrderlyDifferentialPolynomial Fraction Integer
---E 34
-
---S 35 of 36
-lcf:=leadingCoefficient univariate(prf, lg)
---R 
---R
---R            2  2
---R   (35)  3w  z
---R           1  1
---R                         Type: OrderlyDifferentialPolynomial Fraction Integer
---E 35
-
---S 36 of 36
-ig * prf - lcf * g * lg
---R 
---R
---R            6         2  3        2  2
---R   (36)  2z  z w  - w  z  w  + 3w  z  w z
---R           1  2 4    1  1  3     1  1  2 2
---R                         Type: OrderlyDifferentialPolynomial Fraction Integer
---E 36
-)spool
-)lisp (bye)
-@
-<<OrderlyDifferentialPolynomial.help>>=
-====================================================================
-OrderlyDifferentialPolynomial examples
-====================================================================
-
-Many systems of differential equations may be transformed to equivalent 
-systems of ordinary differential equations where the equations are expressed 
-polynomially in terms of the unknown functions.  In Axiom, the domain 
-constructors OrderlyDifferentialPolynomial (abbreviated ODPOL) and
-SequentialDifferentialPolynomial (abbreviation SDPOL) implement two
-domains of ordinary differential polynomials over any differential
-ring.  In the simplest case, this differential ring is usually either
-the ring of integers, or the field of rational numbers.  However,
-Axiom can handle ordinary differential polynomials over a field of
-rational functions in a single indeterminate.
-
-The two domains ODPOL and SDPOL are almost identical, the only difference 
-being the choice of a different ranking, which is an ordering of the 
-derivatives of the indeterminates.  The first domain uses an orderly ranking, 
-that is, derivatives of higher order are ranked higher, and derivatives of 
-the same order are ranked alphabetically.  The second domain uses a 
-sequential ranking, where derivatives are ordered first alphabetically 
-by the differential indeterminates, and then by order.  A more general 
-domain constructor, DifferentialSparseMultivariatePolynomial (abbreviation 
-DSMP) allows both a user-provided list of differential indeterminates
-as well as a user-defined ranking.  We shall illustrate ODPOL(FRAC INT), 
-which constructs a domain of ordinary differential polynomials in an 
-arbitrary number of differential indeterminates with rational numbers 
-as coefficients.
-
-  dpol:= ODPOL(FRAC INT)
-    OrderlyDifferentialPolynomial Fraction Integer
-                            Type: Domain
-
-A differential indeterminate w may be viewed as an infinite sequence of 
-algebraic indeterminates, which are the derivatives of w. To facilitate 
-referencing these, Axiom provides the operation makeVariable to convert 
-an element of type Symbol to a map from the natural numbers to the 
-differential polynomial ring.
-
-  w := makeVariable('w)$dpol
-    theMap(DPOLCAT-;makeVariable;AM;17!0,0)
- Type: (NonNegativeInteger -> OrderlyDifferentialPolynomial Fraction Integer)
-
-  z := makeVariable('z)$dpol
-    theMap(DPOLCAT-;makeVariable;AM;17!0,0)
- Type: (NonNegativeInteger -> OrderlyDifferentialPolynomial Fraction Integer)
-
-The fifth derivative of w can be obtained by applying the map w to the 
-number 5.  Note that the order of differentiation is given as a subscript 
-(except when the order is 0).
-
-  w.5
-    w
-     5
-                      Type: OrderlyDifferentialPolynomial Fraction Integer
-
-  w 0
-    w
-                      Type: OrderlyDifferentialPolynomial Fraction Integer
-
-The first five derivatives of z can be generated by a list.
-
-  [z.i for i in 1..5]
-    [z ,z ,z ,z ,z ]
-      1  2  3  4  5
-                    Type: List OrderlyDifferentialPolynomial Fraction Integer
-
-The usual arithmetic can be used to form a differential polynomial from
-the derivatives.
-
-  f:= w.4 - w.1 * w.1 * z.3 
-           2
-    w  - w  z
-     4    1  3
-                    Type: OrderlyDifferentialPolynomial Fraction Integer
-
-  g:=(z.1)**3 * (z.2)**2 - w.2
-      3  2
-    z  z   - w
-     1  2     2
-                    Type: OrderlyDifferentialPolynomial Fraction Integer
-
-The operation D computes the derivative of any differential polynomial.
-
-  D(f)
-           2
-    w  - w  z  - 2w w z
-     5    1  4     1 2 3
-                    Type: OrderlyDifferentialPolynomial Fraction Integer
-
-The same operation can compute higher derivatives, like the fourth derivative.
-
-  D(f,4)
-            2                               2
-     w  - w  z  - 8w w z  + (- 12w w  - 12w  )z  - 2w z w
-      8    1  7     1 2 6         1 3      2   5     1 3 5
-   + 
-                                         2
-     (- 8w w  - 24w w )z  - 8w z w  - 6w  z
-          1 4      2 3  4     2 3 4     3  3
-                         Type: OrderlyDifferentialPolynomial Fraction Integer
-
-The operation makeVariable creates a map to facilitate referencing the 
-derivatives of f, similar to the map w.
-
-  df:=makeVariable(f)$dpol
-    theMap(DPOLCAT-;makeVariable;AM;17!0,0)
- Type: (NonNegativeInteger -> OrderlyDifferentialPolynomial Fraction Integer)
-
-The fourth derivative of f may be referenced easily.
-
-  df.4
-            2                               2
-     w  - w  z  - 8w w z  + (- 12w w  - 12w  )z  - 2w z w
-      8    1  7     1 2 6         1 3      2   5     1 3 5
-   + 
-                                         2
-     (- 8w w  - 24w w )z  - 8w z w  - 6w  z
-          1 4      2 3  4     2 3 4     3  3
-                    Type: OrderlyDifferentialPolynomial Fraction Integer
-
-The operation order returns the order of a differential polynomial, 
-or the order in a specified differential indeterminate.
-
-  order(g)
-    2
-                    Type: PositiveInteger
-
-  order(g, 'w)
-    2
-                    Type: PositiveInteger
-
-The operation differentialVariables returns a list of differential 
-indeterminates occurring in a differential polynomial.
-
-  differentialVariables(g)
-    [z,w]
-                    Type: List Symbol
-
-The operation degree returns the degree, or the degree in the differential 
-indeterminate specified.
-
-  degree(g)
-       2  3
-     z  z
-      2  1
-                    Type: IndexedExponents OrderlyDifferentialVariable Symbol
-
-  degree(g, 'w) 
-    1
-                    Type: PositiveInteger
-
-The operation weights returns a list of weights of differential monomials 
-appearing in differential polynomial, or a list of weights in a specified 
-differential indeterminate.
-
-  weights(g)
-    [7,2]
-                    Type: List NonNegativeInteger
-
-  weights(g,'w)
-    [2]
-                    Type: List NonNegativeInteger
-
-The operation weight returns the maximum weight of all differential 
-monomials appearing in the differential polynomial.
-
-  weight(g)
-    7
-                    Type: PositiveInteger
-
-A differential polynomial is isobaric if the weights of all differential 
-monomials appearing in it are equal.
-
-  isobaric?(g)
-    false
-                    Type: Boolean
-
-To substitute differentially, use eval. Note that we must coerce 'w to 
-Symbol, since in ODPOL, differential indeterminates belong to the domain 
-Symbol.  Compare this result to the next, which substitutes algebraically
-(no substitution is done since w.0 does not appear in g).
-
-  eval(g,['w::Symbol],[f])
-              2                           2        3  2
-     - w  + w  z  + 4w w z  + (2w w  + 2w  )z  + z  z
-        6    1  5     1 2 4      1 3     2   3    1  2
-                    Type: OrderlyDifferentialPolynomial Fraction Integer
-
-  eval(g,variables(w.0),[f])
-       3  2
-     z  z   - w
-      1  2     2
-                    Type: OrderlyDifferentialPolynomial Fraction Integer
-
-Since OrderlyDifferentialPolynomial belongs to PolynomialCategory, all 
-the operations defined in the latter category, or in packages for the 
-latter category, are available.
-
-  monomials(g)
-        3  2
-     [z  z  ,- w ]
-       1  2     2
-                    Type: List OrderlyDifferentialPolynomial Fraction Integer
-
-  variables(g)
-    [z ,w ,z ]
-      2  2  1
-                    Type: List OrderlyDifferentialVariable Symbol
-
-  gcd(f,g)
-    1
-                    Type: OrderlyDifferentialPolynomial Fraction Integer
-
-  groebner([f,g])
-             2     3  2
-     [w  - w  z ,z  z   - w ]
-       4    1  3  1  2     2
-                    Type: List OrderlyDifferentialPolynomial Fraction Integer
-
-The next three operations are essential for elimination procedures in
-differential polynomial rings.  The operation leader returns the leader
-of a differential polynomial, which is the highest ranked derivative
-of the differential indeterminates that occurs.
-
-  lg:=leader(g)
-     z
-      2
-                    Type: OrderlyDifferentialVariable Symbol
-
-The operation separant returns the separant of a differential polynomial, 
-which is the partial derivative with respect to the leader.
-
-  sg:=separant(g)
-       3
-    2z  z
-      1  2
-                    Type: OrderlyDifferentialPolynomial Fraction Integer
-
-The operation initial returns the initial, which is the leading coefficient 
-when the given differential polynomial is expressed as a polynomial in 
-the leader.
-
-  ig:=initial(g)
-      3
-    z
-     1
-                    Type: OrderlyDifferentialPolynomial Fraction Integer
-
-Using these three operations, it is possible to reduce f modulo the 
-differential ideal generated by g.  The general scheme is to first 
-reduce the order, then reduce the degree in the leader.  First, eliminate 
-z.3 using the derivative of g.
-
-  g1 := D g
-       3               2  3
-    2z  z z  - w  + 3z  z
-      1  2 3    3     1  2
-                    Type: OrderlyDifferentialPolynomial Fraction Integer
-
-Find its leader.
-
-  lg1:= leader g1
-    z
-     3
-                    Type: OrderlyDifferentialVariable Symbol
-
-Differentiate f partially with respect to this leader.
-
-  pdf:=D(f, lg1)
-        2
-    - w
-       1
-                    Type: OrderlyDifferentialPolynomial Fraction Integer
-
-Compute the partial remainder of f with respect to g.
-
-  prf:=sg * f- pdf * g1
-       3         2        2  2  3
-    2z  z w  - w  w  + 3w  z  z
-      1  2 4    1  3     1  1  2
-                     Type: OrderlyDifferentialPolynomial Fraction Integer
-
-Note that high powers of lg still appear in prf.  Compute the leading 
-coefficient of prf as a polynomial in the leader of g.
-
-  lcf:=leadingCoefficient univariate(prf, lg)
-       2  2
-    3w  z
-      1  1
-                     Type: OrderlyDifferentialPolynomial Fraction Integer
-
-Finally, continue eliminating the high powers of lg appearing in prf to 
-obtain the (pseudo) remainder of f modulo g and its derivatives.
-
-  ig * prf - lcf * g * lg
-       6         2  3        2  2
-    2z  z w  - w  z  w  + 3w  z  w z
-      1  2 4    1  1  3     1  1  2 2
-                     Type: OrderlyDifferentialPolynomial Fraction Integer
-
-See Also:
-o )show OrderlyDifferentialPolynomial
-o $AXIOM/doc/src/algebra/dpolcat.spad.dvi
-
-@
-<<domain ODPOL OrderlyDifferentialPolynomial>>=
-)abbrev domain ODPOL OrderlyDifferentialPolynomial
-++ Author:  William Sit
-++ Date Created: 24 September, 1991
-++ Date Last Updated: 7 February, 1992
-++ Basic Operations:DifferentialPolynomialCategory
-++ Related Constructors: DifferentialSparseMultivariatePolynomial
-++ See Also:
-++ AMS Classifications:12H05
-++ Keywords: differential indeterminates, ranking, differential polynomials,
-++           order, weight, leader, separant, initial, isobaric
-++ References:Kolchin, E.R. "Differential Algebra and Algebraic Groups"
-++   (Academic Press, 1973).
-++ Description:
-++   \spadtype{OrderlyDifferentialPolynomial} implements
-++   an ordinary differential polynomial ring in arbitrary number
-++   of differential indeterminates, with coefficients in a
-++   ring.  The ranking on the differential indeterminate is orderly.
-++   This is analogous to the domain \spadtype{Polynomial}.
-++
-
-OrderlyDifferentialPolynomial(R):
-     Exports == Implementation where
-  R: Ring
-  S  ==> Symbol
-  V  ==> OrderlyDifferentialVariable S
-  E   ==> IndexedExponents(V)
-  SMP ==> SparseMultivariatePolynomial(R, S)
-  Exports ==> Join(DifferentialPolynomialCategory(R,S,V,E),
-                   RetractableTo SMP)
-
-  Implementation ==> DifferentialSparseMultivariatePolynomial(R,S,V)
-
-@
-\section{domain SDPOL SequentialDifferentialPolynomial}
-<<domain SDPOL SequentialDifferentialPolynomial>>=
-)abbrev domain SDPOL SequentialDifferentialPolynomial
-++ Author:  William Sit
-++ Date Created: 24 September, 1991
-++ Date Last Updated: 7 February, 1992
-++ Basic Operations:DifferentialPolynomialCategory
-++ Related Constructors: DifferentialSparseMultivariatePolynomial
-++ See Also:
-++ AMS Classifications:12H05
-++ Keywords: differential indeterminates, ranking, differential polynomials,
-++           order, weight, leader, separant, initial, isobaric
-++ References:Kolchin, E.R. "Differential Algebra and Algebraic Groups"
-++   (Academic Press, 1973).
-++ Description:
-++   \spadtype{SequentialDifferentialPolynomial} implements
-++   an ordinary differential polynomial ring in arbitrary number
-++   of differential indeterminates, with coefficients in a
-++   ring.  The ranking on the differential indeterminate is sequential.
-++
-
-SequentialDifferentialPolynomial(R):
-     Exports == Implementation where
-  R: Ring
-  S  ==> Symbol
-  V  ==> SequentialDifferentialVariable S
-  E   ==> IndexedExponents(V)
-  SMP ==> SparseMultivariatePolynomial(R, S)
-  Exports ==> Join(DifferentialPolynomialCategory(R,S,V,E),
-                   RetractableTo SMP)
-
-  Implementation ==> DifferentialSparseMultivariatePolynomial(R,S,V)
-
-@
-\section{License}
-<<license>>=
---Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
---All rights reserved.
---
---Redistribution and use in source and binary forms, with or without
---modification, are permitted provided that the following conditions are
---met:
---
---    - Redistributions of source code must retain the above copyright
---      notice, this list of conditions and the following disclaimer.
---
---    - Redistributions in binary form must reproduce the above copyright
---      notice, this list of conditions and the following disclaimer in
---      the documentation and/or other materials provided with the
---      distribution.
---
---    - Neither the name of The Numerical ALgorithms Group Ltd. nor the
---      names of its contributors may be used to endorse or promote products
---      derived from this software without specific prior written permission.
---
---THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
---IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
---TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
---PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
---OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
---EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
---PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
---PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
---LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
---NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
---SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-@
-<<*>>=
-<<license>>
-
-<<domain ODVAR OrderlyDifferentialVariable>>
-<<domain SDVAR SequentialDifferentialVariable>>
-<<domain DSMP DifferentialSparseMultivariatePolynomial>>
-<<domain ODPOL OrderlyDifferentialPolynomial>>
-<<domain SDPOL SequentialDifferentialPolynomial>>
-
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/algebra/drawopt.spad.pamphlet b/src/algebra/drawopt.spad.pamphlet
index 3e5658a..b602121 100644
--- a/src/algebra/drawopt.spad.pamphlet
+++ b/src/algebra/drawopt.spad.pamphlet
@@ -9,215 +9,6 @@
 \eject
 \tableofcontents
 \eject
-\section{domain DROPT DrawOption}
-<<domain DROPT DrawOption>>=
-)abbrev domain DROPT DrawOption
-++ Author: Stephen Watt
-++ Date Created: 1 March 1990
-++ Date Last Updated: 31 Oct 1990, Jim Wen
-++ Basic Operations: adaptive, clip, title, style, toScale, coordinates,
-++ pointColor, curveColor, colorFunction, tubeRadius, range, ranges,
-++ var1Steps, var2Steps, tubePoints, unit
-++ Related Constructors:
-++ Also See:
-++ AMS Classifications:
-++ Keywords:
-++ References:
-++ Description: DrawOption allows the user to specify defaults for the 
-++ creation and rendering of plots.
-
-DrawOption(): Exports == Implementation where 
- RANGE ==> List Segment Float
- UNIT  ==> List Float
- PAL   ==> Palette
- POINT ==> Point(DoubleFloat)
- SEG   ==> Segment Float
- SF     ==> DoubleFloat
- SPACE3 ==> ThreeSpace(DoubleFloat)
- VIEWPT ==> Record( theta:SF, phi:SF, scale:SF, scaleX:SF, scaleY:SF, scaleZ:SF, deltaX:SF, deltaY:SF )
-
- Exports ==> SetCategory with
-  adaptive : Boolean -> %
-    ++ adaptive(b) turns adaptive 2D plotting on if b is true, or off if b is
-    ++ false. This option is expressed in the form \spad{adaptive == b}.
-  clip : Boolean -> %
-    ++ clip(b) turns 2D clipping on if b is true, or off if b is false. This option
-    ++ is expressed in the form \spad{clip == b}.
-  viewpoint : VIEWPT -> %
-    ++ viewpoint(vp) creates a viewpoint data structure corresponding to the list
-    ++ of values.  The values are interpreted as [theta, phi, scale, scaleX, scaleY,
-    ++ scaleZ, deltaX, deltaY].  This option is expressed in the form 
-    ++ \spad{viewpoint == ls}.
-  title  : String -> %
-    ++ title(s) specifies a title for a plot by the indicated string s. This option
-    ++ is expressed in the form \spad{title == s}.
-  style  : String -> %
-    ++ style(s) specifies the drawing style in which the graph will be plotted
-    ++ by the indicated string s. This option is expressed in the form \spad{style == s}.
-  toScale : Boolean -> %
-    ++ toScale(b) specifies whether or not a plot is to be drawn to scale;
-    ++ if b is true it is drawn to scale, if b is false it is not. This option
-    ++ is expressed in the form \spad{toScale == b}.
-
-  clip : List SEG -> %
-    ++ clip([l]) provides ranges for user-defined clipping as specified
-    ++ in the list l. This option is expressed in the form \spad{clip == [l]}.
-  coordinates : (POINT -> POINT) -> % 
-    ++ coordinates(p) specifies a change of coordinate systems of point p. 
-    ++ This option is expressed in the form \spad{coordinates == p}.
-  pointColor : Float -> %
-    ++ pointColor(v) specifies a color, v, for 2D graph points. This option
-    ++ is expressed in the form \spad{pointColor == v}.
-  pointColor : PAL -> %
-    ++ pointColor(p) specifies a color index for 2D graph points from the spadcolors
-    ++ palette p. This option is expressed in the form \spad{pointColor == p}.
-  curveColor : Float -> %
-    ++ curveColor(v) specifies a color, v, for 2D graph curves. This option is expressed
-    ++ in the form \spad{curveColor == v}.
-  curveColor : PAL -> %
-    ++ curveColor(p) specifies a color index for 2D graph curves from the 
-    ++ spadcolors palette p. This option is expressed in the form \spad{curveColor ==p}.
-  colorFunction : (SF -> SF) -> %
-    ++ colorFunction(f(z)) specifies the color based upon the z-component of 
-    ++ three dimensional plots. This option is expressed in the form \spad{colorFunction == f(z)}.
-  colorFunction : ((SF,SF) -> SF) -> %
-    ++ colorFunction(f(u,v)) specifies the color for three dimensional plots
-    ++ as a function based upon the two parametric variables. This option is expressed
-    ++ in the form \spad{colorFunction == f(u,v)}.
-  colorFunction : ((SF,SF,SF) -> SF) -> %
-    ++ colorFunction(f(x,y,z)) specifies the color for three dimensional 
-    ++ plots as a function of x, y, and z coordinates. This option is expressed in the
-    ++ form \spad{colorFunction == f(x,y,z)}.
-  tubeRadius : Float -> %
-    ++ tubeRadius(r) specifies a radius, r, for a tube plot around a 3D curve;
-    ++ is expressed in the form \spad{tubeRadius == 4}.
-  range : List SEG -> %
-    ++ range([l]) provides a user-specified range l. This option is expressed in the
-    ++ form \spad{range == [l]}.
-  range : List Segment Fraction Integer -> %
-    ++ range([i]) provides a user-specified range i. This option is expressed in the
-    ++ form \spad{range == [i]}.
-
-  ranges : RANGE -> %
-    ++ ranges(l) provides a list of user-specified ranges l. This option is expressed
-    ++ in the form \spad{ranges == l}.
-  space : SPACE3 -> %
-    ++ space specifies the space into which we will draw.  If none is given
-    ++ then a new space is created.
-  var1Steps : PositiveInteger -> %
-    ++ var1Steps(n) indicates the number of subdivisions, n, of the first 
-    ++ range variable. This option is expressed in the form \spad{var1Steps == n}.
-  var2Steps : PositiveInteger -> %
-    ++ var2Steps(n) indicates the number of subdivisions, n,  of the second 
-    ++ range variable. This option is expressed in the form \spad{var2Steps == n}.
-  tubePoints : PositiveInteger -> %
-    ++ tubePoints(n) specifies the number of points, n, defining the circle
-    ++ which creates the tube around a 3D curve, the default is 6. This option is 
-    ++ expressed in the form \spad{tubePoints == n}.
-  coord : (POINT->POINT) -> %
-    ++ coord(p) specifies a change of coordinates of point p. This option is expressed
-    ++ in the form \spad{coord == p}.
-  unit   : UNIT -> %
-    ++ unit(lf) will mark off the units according to the indicated list lf.
-    ++ This option is expressed in the form \spad{unit == [f1,f2]}.
-  option : (List %, Symbol) -> Union(Any, "failed")
-    ++ option() is not to be used at the top level; 
-    ++ option determines internally which drawing options are indicated in 
-    ++ a draw command.
-  option?: (List %, Symbol) -> Boolean
-    ++ option?() is not to be used at the top level;
-    ++ option? internally returns true for drawing options which are 
-    ++ indicated in a draw command, or false for those which are not.
- Implementation ==> add
-  import AnyFunctions1(String)
-  import AnyFunctions1(Segment Float)
-  import AnyFunctions1(VIEWPT)
-  import AnyFunctions1(List Segment Float)
-  import AnyFunctions1(List Segment Fraction Integer)
-  import AnyFunctions1(List Integer)
-  import AnyFunctions1(PositiveInteger)
-  import AnyFunctions1(Boolean)
-  import AnyFunctions1(RANGE)
-  import AnyFunctions1(UNIT)
-  import AnyFunctions1(Float)
-  import AnyFunctions1(POINT -> POINT)
-  import AnyFunctions1(SF -> SF)
-  import AnyFunctions1((SF,SF) -> SF)
-  import AnyFunctions1((SF,SF,SF) -> SF)
-  import AnyFunctions1(POINT)
-  import AnyFunctions1(PAL)
-  import AnyFunctions1(SPACE3)
-
-  Rep := Record(keyword:Symbol, value:Any)
-
-  length:List SEG -> NonNegativeInteger
-  -- these lists will become tuples in a later version
-  length tup == # tup
-
-  lengthR:List Segment Fraction Integer -> NonNegativeInteger
-  -- these lists will become tuples in a later version
-  lengthR tup == # tup
-
-  lengthI:List Integer -> NonNegativeInteger
-  -- these lists will become tuples in a later version
-  lengthI tup == # tup
-
-  viewpoint vp == 
-    ["viewpoint"::Symbol, vp::Any]
-
-  title s == ["title"::Symbol, s::Any]
-  style s == ["style"::Symbol, s::Any]
-  toScale b == ["toScale"::Symbol, b::Any]
-  clip(b:Boolean) == ["clipBoolean"::Symbol, b::Any]
-  adaptive b == ["adaptive"::Symbol, b::Any]
-
-  pointColor(x:Float) == ["pointColorFloat"::Symbol, x::Any]
-  pointColor(c:PAL) == ["pointColorPalette"::Symbol, c::Any]
-  curveColor(x:Float) == ["curveColorFloat"::Symbol, x::Any]
-  curveColor(c:PAL) == ["curveColorPalette"::Symbol, c::Any]
-  colorFunction(f:SF -> SF) == ["colorFunction1"::Symbol, f::Any]
-  colorFunction(f:(SF,SF) -> SF) == ["colorFunction2"::Symbol, f::Any]
-  colorFunction(f:(SF,SF,SF) -> SF) == ["colorFunction3"::Symbol, f::Any]
-  clip(tup:List SEG) == 
-    length tup > 3 =>
-      error "clip: at most 3 segments may be specified"
-    ["clipSegment"::Symbol, tup::Any]
-  coordinates f == ["coordinates"::Symbol, f::Any]
-  tubeRadius x == ["tubeRadius"::Symbol, x::Any]
-  range(tup:List Segment Float) == 
-    ((n := length tup) > 3) =>
-      error "range: at most 3 segments may be specified"
-    n < 2 =>
-      error "range: at least 2 segments may be specified"
-    ["rangeFloat"::Symbol, tup::Any]
-  range(tup:List Segment Fraction Integer) == 
-    ((n := lengthR tup) > 3) =>
-      error "range: at most 3 segments may be specified"
-    n < 2 =>
-      error "range: at least 2 segments may be specified"
-    ["rangeRat"::Symbol, tup::Any]
-
-  ranges s               == ["ranges"::Symbol, s::Any]
-  space s                == ["space"::Symbol, s::Any]
-  var1Steps s            == ["var1Steps"::Symbol, s::Any]
-  var2Steps s            == ["var2Steps"::Symbol, s::Any]
-  tubePoints s           == ["tubePoints"::Symbol, s::Any]
-  coord s                == ["coord"::Symbol, s::Any]
-  unit s                 == ["unit"::Symbol, s::Any]
-  coerce(x:%):OutputForm == x.keyword::OutputForm = x.value::OutputForm
-  x:% = y:%              == x.keyword = y.keyword and x.value = y.value
-
-  option?(l, s) ==
-    for x in l repeat
-      x.keyword = s => return true
-    false
-
-  option(l, s) ==
-    for x in l repeat
-      x.keyword = s => return(x.value)
-    "failed"
-
-@
 \section{package DROPT1 DrawOptionFunctions1}
 <<package DROPT1 DrawOptionFunctions1>>=
 )abbrev package DROPT1 DrawOptionFunctions1
@@ -447,7 +238,6 @@ DrawOptionFunctions0(): Exports == Implementation where
 <<*>>=
 <<license>>
 
-<<domain DROPT DrawOption>>
 <<package DROPT1 DrawOptionFunctions1>>
 <<package DROPT0 DrawOptionFunctions0>>
 @
