diff --git a/books/bookvol10.2.pamphlet b/books/bookvol10.2.pamphlet index 81a15f9..88c7428 100644 --- a/books/bookvol10.2.pamphlet +++ b/books/bookvol10.2.pamphlet @@ -274,6 +274,47 @@ November 10, 2003 ((iHy)) \eject \pagenumbering{arabic} \setcounter{chapter}{0} % Chapter 1 +\chapter{Categories} +Axiom has 3 main algebra components, Categories, Domains, and +Packages. If we make an analogy to dressmaking, you can consider +the Categories to be hierarchies of properties of things, like +patterns, colors, or fabrics. Domains are instances of things +based on category choices, such as a dress with a particular +style, fabric, color, etc. Packages are tools that work with +dresses such as irons, sewing machines, etc. + +Axiom is based on abstract algebra and uses it as a scaffolding +for constructing well-formed algebra. For instance, in abstract +algebra there is a strict subset hierarchy, like:\\ +\includegraphics[scale=0.50]{ps/v102algebrahierarchy.ps} + +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"Commutative Ring" + [color=lightblue,href="bookvol10.2.pdf#nameddest=COMRING"]; +"Integral Domain" + [color=lightblue,href="bookvol10.2.pdf#nameddest=INTDOM"]; +"Unique Factorization Domain" + [color=lightblue,href="bookvol10.2.pdf#nameddest=UFD"]; +"Principal Ideal Domain" + [color=lightblue,href="bookvol10.2.pdf#nameddest=PID"]; +"Euclidean Domain" + [color=lightblue,href="bookvol10.2.pdf#nameddest=EUCDOM"]; +"Field" + [color=lightblue,href="bookvol10.2.pdf#nameddest=FIELD"]; + +"Commutative Ring" -> "Integral Domain" +"Integral Domain" -> "Unique Factorization Domain" +"Unique Factorization Domain" -> "Principal Ideal Domain" +"Principal Ideal Domain" -> "Euclidean Domain" +"Euclidean Domain" -> "Field" + +} +@ \chapter{Category Layer 1} In general, we use several colors in the graph images. The ``lightblue'' color indicates a category that is in the @@ -14714,16 +14755,30 @@ StackAggregate(S:Type): Category == BagAggregate S with ++ push!(x,s) pushes x onto stack s, i.e. destructively changing s ++ so as to have a new first (top) element x. ++ Afterwards, pop!(s) produces x and pop!(s) produces the original s. + ++ + ++X a:Stack INT:= stack [1,2,3,4,5] + ++X push! a + ++X a pop_!: % -> S ++ pop!(s) returns the top element x, destructively removing x from s. ++ Note: Use \axiom{top(s)} to obtain x without removing it from s. ++ Error: if s is empty. + ++ + ++X a:Stack INT:= stack [1,2,3,4,5] + ++X pop! a + ++X a top: % -> S ++ top(s) returns the top element x from s; s remains unchanged. ++ Note: Use \axiom{pop!(s)} to obtain x and remove it from s. + ++ + ++X a:Stack INT:= stack [1,2,3,4,5] + ++X top a depth: % -> NonNegativeInteger ++ depth(s) returns the number of elements of stack s. ++ Note: \axiom{depth(s) = #s}. + ++ + ++X a:Stack INT:= stack [1,2,3,4,5] + ++X depth a @ @@ -26808,6 +26863,9 @@ digraph pic { \pagehead{CommutativeRing}{COMRING} \pagepic{ps/v102commutativering.ps}{COMRING}{0.65} +Commutative Rings are a subset of IntegralDomains. +\pageto{IntegralDomain}{INTDOM}. + {\bf See:}\\ \pageto{ComplexCategory}{COMPCAT} \pageto{IntegralDomain}{INTDOM} @@ -33893,6 +33951,12 @@ digraph pic { \pagehead{IntegralDomain}{INTDOM} \pagepic{ps/v102integraldomain.ps}{INTDOM}{0.65} +All Commutative Rings are Integral Domains. +\pagefrom{CommutativeRing}{COMRING} +Integral Domains are a subset of Unique Factorization domains. +\pageto{UniqueFactorizationDomain}{UFD}. + + {\bf See:}\\ \pageto{FortranMachineTypeCategory}{FMTC} \pageto{FunctionSpace}{FS} @@ -38579,6 +38643,11 @@ digraph pic { \pagehead{PrincipalIdealDomain}{PID} \pagepic{ps/v102principalidealdomain.ps}{PID}{0.65} +Unique Factorization Domains are a subset of Principal Ideal Domains. +\pagefrom{UniqueFactorizationDomain}{UFD} +Principal Ideal Domains are a subset of Euclidean Domains. +\pageto{EuclideanDomain}{EUCDOM} + {\bf See:}\\ \pageto{EuclideanDomain}{EUCDOM} \pagefrom{GcdDomain}{GCDDOM} @@ -38769,6 +38838,11 @@ digraph pic { \pagehead{UniqueFactorizationDomain}{UFD} \pagepic{ps/v102uniquefactorizationdomain.ps}{UFD}{0.65} +All Integral Domains are UniqueFactorizationDomains. +\pagefrom{IntegralDomain}{INTDOM}. +Unique Factorization Domains are a subset of Principal Ideal Domains. +\pageto{PrincipalIdealDomain}{PID} + {\bf See:}\\ \pageto{Field}{FIELD} \pageto{IntegerNumberSystem}{INS} @@ -38976,6 +39050,11 @@ digraph pic { \pagehead{EuclideanDomain}{EUCDOM} \pagepic{ps/v102euclideandomain.ps}{EUCDOM}{0.65} +Principal Ideal Domains are a subset of Euclidean Domains. +\pagefrom{PrincipalIdealDomain}{PID}. +Euclidean Domains are a subset of Fields. +\pageto{Field}{FIELD} + {\bf See:}\\ \pageto{Field}{FIELD} \pageto{IntegerNumberSystem}{INS} @@ -40335,6 +40414,9 @@ digraph pic { \pagehead{Field}{FIELD} \pagepic{ps/v102field.ps}{FIELD}{1.00} +Euclidean Domains are a subset of Fields. +\pagefrom{EuclideanDomain}{EUCDOM} + {\bf See:}\\ \pageto{AlgebraicallyClosedField}{ACF} \pageto{ExtensionField}{XF} diff --git a/books/ps/v102algebrahierarchy.ps b/books/ps/v102algebrahierarchy.ps new file mode 100644 index 0000000..1995ec9 --- /dev/null +++ b/books/ps/v102algebrahierarchy.ps @@ -0,0 +1,461 @@ +%!PS-Adobe-2.0 +%%Creator: Graphviz version 2.16.1 (Mon Jul 7 18:20:33 UTC 2008) +%%For: (root) root +%%Title: pic +%%Pages: (atend) +%%BoundingBox: (atend) +%%EndComments +save +%%BeginProlog +/DotDict 200 dict def +DotDict begin + +/setupLatin1 { +mark +/EncodingVector 256 array def + EncodingVector 0 + +ISOLatin1Encoding 0 255 getinterval putinterval +EncodingVector 45 /hyphen put + +% Set up ISO Latin 1 character encoding +/starnetISO { + dup dup findfont dup length dict begin + { 1 index /FID ne { def }{ pop pop } ifelse + } forall + /Encoding EncodingVector def + currentdict end definefont +} def +/Times-Roman starnetISO def +/Times-Italic starnetISO def +/Times-Bold starnetISO def +/Times-BoldItalic starnetISO def +/Helvetica starnetISO def +/Helvetica-Oblique starnetISO def +/Helvetica-Bold starnetISO def +/Helvetica-BoldOblique starnetISO def +/Courier starnetISO def +/Courier-Oblique starnetISO def +/Courier-Bold starnetISO def +/Courier-BoldOblique starnetISO def +cleartomark +} bind def + +%%BeginResource: procset graphviz 0 0 +/coord-font-family /Times-Roman def +/default-font-family /Times-Roman def +/coordfont coord-font-family findfont 8 scalefont def + +/InvScaleFactor 1.0 def +/set_scale { + dup 1 exch div /InvScaleFactor exch def + scale +} bind def + +% styles +/solid { [] 0 setdash } bind def +/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def +/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def +/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def +/bold { 2 setlinewidth } bind def +/filled { } bind def +/unfilled { } bind def +/rounded { } bind def +/diagonals { } bind def + +% hooks for setting color +/nodecolor { sethsbcolor } bind def +/edgecolor { sethsbcolor } bind def +/graphcolor { sethsbcolor } bind def +/nopcolor {pop pop pop} bind def + +/beginpage { % i j npages + /npages exch def + /j exch def + /i exch def + /str 10 string def + npages 1 gt { + gsave + coordfont setfont + 0 0 moveto + (\() show i str cvs show (,) show j str cvs show (\)) show + grestore + } if +} bind def + +/set_font { + findfont exch + scalefont setfont +} def + +% draw text fitted to its expected width +/alignedtext { % width text + /text exch def + /width exch def + gsave + width 0 gt { + [] 0 setdash + text stringwidth pop width exch sub text length div 0 text ashow + } if + grestore +} def + +/boxprim { % xcorner ycorner xsize ysize + 4 2 roll + moveto + 2 copy + exch 0 rlineto + 0 exch rlineto + pop neg 0 rlineto + closepath +} bind def + +/ellipse_path { + /ry exch def + /rx exch def + /y exch def + /x exch def + matrix currentmatrix + newpath + x y translate + rx ry scale + 0 0 1 0 360 arc + setmatrix +} bind def + +/endpage { showpage } bind def +/showpage { } def + +/layercolorseq + [ % layer color sequence - darkest to lightest + [0 0 0] + [.2 .8 .8] + [.4 .8 .8] + [.6 .8 .8] + [.8 .8 .8] + ] +def + +/layerlen layercolorseq length def + +/setlayer {/maxlayer exch def /curlayer exch def + layercolorseq curlayer 1 sub layerlen mod get + aload pop sethsbcolor + /nodecolor {nopcolor} def + /edgecolor {nopcolor} def + /graphcolor {nopcolor} def +} bind def + +/onlayer { curlayer ne {invis} if } def + +/onlayers { + /myupper exch def + /mylower exch def + curlayer mylower lt + curlayer myupper gt + or + {invis} if +} def + +/curlayer 0 def + +%%EndResource +%%EndProlog +%%BeginSetup +14 default-font-family set_font +1 setmiterlimit +% /arrowlength 10 def +% /arrowwidth 5 def + +% make sure pdfmark is harmless for PS-interpreters other than Distiller +/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse +% make '<<' and '>>' safe on PS Level 1 devices +/languagelevel where {pop languagelevel}{1} ifelse +2 lt { + userdict (<<) cvn ([) cvn load put + userdict (>>) cvn ([) cvn load put +} if + +%%EndSetup +setupLatin1 +%%Page: 1 1 +%%PageBoundingBox: 36 36 230 440 +%%PageOrientation: Portrait +0 0 1 beginpage +gsave +36 36 194 404 boxprim clip newpath +1 1 set_scale 0 rotate 40 40 translate +0.167 0.600 1.000 graphcolor +newpath -4 -4 moveto +-4 716 lineto +536 716 lineto +536 -4 lineto +closepath fill +1 setlinewidth +0.167 0.600 1.000 graphcolor +newpath -4 -4 moveto +-4 716 lineto +536 716 lineto +536 -4 lineto +closepath stroke +% Commutative Ring +gsave +[ /Rect [ 32 360 154 396 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (bookvol10.2.pdf#nameddest=COMRING) >> + /Subtype /Link +/ANN pdfmark +0.537 0.247 0.902 nodecolor +newpath 154 396 moveto +32 396 lineto +32 360 lineto +154 360 lineto +closepath fill +1 setlinewidth +filled +0.537 0.247 0.902 nodecolor +newpath 154 396 moveto +32 396 lineto +32 360 lineto +154 360 lineto +closepath stroke +0.000 0.000 0.000 nodecolor +14.00 /Times-Roman set_font +39.5 373.9 moveto 107 (Commutative Ring) alignedtext +grestore +% Integral Domain +gsave +[ /Rect [ 39 288 147 324 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (bookvol10.2.pdf#nameddest=INTDOM) >> + /Subtype /Link +/ANN pdfmark +0.537 0.247 0.902 nodecolor +newpath 147 324 moveto +39 324 lineto +39 288 lineto +147 288 lineto +closepath fill +1 setlinewidth +filled +0.537 0.247 0.902 nodecolor +newpath 147 324 moveto +39 324 lineto +39 288 lineto +147 288 lineto +closepath stroke +0.000 0.000 0.000 nodecolor +14.00 /Times-Roman set_font +46.5 301.9 moveto 93 (Integral Domain) alignedtext +grestore +% Commutative Ring->Integral Domain +gsave +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 93 360 moveto +93 352 93 343 93 334 curveto +stroke +0.000 0.000 0.000 edgecolor +newpath 96.5001 334 moveto +93 324 lineto +89.5001 334 lineto +closepath fill +1 setlinewidth +solid +0.000 0.000 0.000 edgecolor +newpath 96.5001 334 moveto +93 324 lineto +89.5001 334 lineto +closepath stroke +grestore +% Unique Factorization Domain +gsave +[ /Rect [ 0 216 186 252 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (bookvol10.2.pdf#nameddest=UFD) >> + /Subtype /Link +/ANN pdfmark +0.537 0.247 0.902 nodecolor +newpath 186 252 moveto +5.68434e-14 252 lineto +1.42109e-14 216 lineto +186 216 lineto +closepath fill +1 setlinewidth +filled +0.537 0.247 0.902 nodecolor +newpath 186 252 moveto +5.68434e-14 252 lineto +1.42109e-14 216 lineto +186 216 lineto +closepath stroke +0.000 0.000 0.000 nodecolor +14.00 /Times-Roman set_font +8 229.9 moveto 170 (Unique Factorization Domain) alignedtext +grestore +% Integral Domain->Unique Factorization Domain +gsave +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 93 288 moveto +93 280 93 271 93 262 curveto +stroke +0.000 0.000 0.000 edgecolor +newpath 96.5001 262 moveto +93 252 lineto +89.5001 262 lineto +closepath fill +1 setlinewidth +solid +0.000 0.000 0.000 edgecolor +newpath 96.5001 262 moveto +93 252 lineto +89.5001 262 lineto +closepath stroke +grestore +% Principal Ideal Domain +gsave +[ /Rect [ 19 144 167 180 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (bookvol10.2.pdf#nameddest=PID) >> + /Subtype /Link +/ANN pdfmark +0.537 0.247 0.902 nodecolor +newpath 167 180 moveto +19 180 lineto +19 144 lineto +167 144 lineto +closepath fill +1 setlinewidth +filled +0.537 0.247 0.902 nodecolor +newpath 167 180 moveto +19 180 lineto +19 144 lineto +167 144 lineto +closepath stroke +0.000 0.000 0.000 nodecolor +14.00 /Times-Roman set_font +27 157.9 moveto 132 (Principal Ideal Domain) alignedtext +grestore +% Unique Factorization Domain->Principal Ideal Domain +gsave +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 93 216 moveto +93 208 93 199 93 190 curveto +stroke +0.000 0.000 0.000 edgecolor +newpath 96.5001 190 moveto +93 180 lineto +89.5001 190 lineto +closepath fill +1 setlinewidth +solid +0.000 0.000 0.000 edgecolor +newpath 96.5001 190 moveto +93 180 lineto +89.5001 190 lineto +closepath stroke +grestore +% Euclidean Domain +gsave +[ /Rect [ 32 72 154 108 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (bookvol10.2.pdf#nameddest=EUCDOM) >> + /Subtype /Link +/ANN pdfmark +0.537 0.247 0.902 nodecolor +newpath 154 108 moveto +32 108 lineto +32 72 lineto +154 72 lineto +closepath fill +1 setlinewidth +filled +0.537 0.247 0.902 nodecolor +newpath 154 108 moveto +32 108 lineto +32 72 lineto +154 72 lineto +closepath stroke +0.000 0.000 0.000 nodecolor +14.00 /Times-Roman set_font +39.5 85.9 moveto 107 (Euclidean Domain) alignedtext +grestore +% Principal Ideal Domain->Euclidean Domain +gsave +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 93 144 moveto +93 136 93 127 93 118 curveto +stroke +0.000 0.000 0.000 edgecolor +newpath 96.5001 118 moveto +93 108 lineto +89.5001 118 lineto +closepath fill +1 setlinewidth +solid +0.000 0.000 0.000 edgecolor +newpath 96.5001 118 moveto +93 108 lineto +89.5001 118 lineto +closepath stroke +grestore +% Field +gsave +[ /Rect [ 66 0 120 36 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (bookvol10.2.pdf#nameddest=FIELD) >> + /Subtype /Link +/ANN pdfmark +0.537 0.247 0.902 nodecolor +newpath 120 36 moveto +66 36 lineto +66 1.06581e-14 lineto +120 0 lineto +closepath fill +1 setlinewidth +filled +0.537 0.247 0.902 nodecolor +newpath 120 36 moveto +66 36 lineto +66 1.06581e-14 lineto +120 0 lineto +closepath stroke +0.000 0.000 0.000 nodecolor +14.00 /Times-Roman set_font +78.5 13.9 moveto 29 (Field) alignedtext +grestore +% Euclidean Domain->Field +gsave +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 93 72 moveto +93 64 93 55 93 46 curveto +stroke +0.000 0.000 0.000 edgecolor +newpath 96.5001 46 moveto +93 36 lineto +89.5001 46 lineto +closepath fill +1 setlinewidth +solid +0.000 0.000 0.000 edgecolor +newpath 96.5001 46 moveto +93 36 lineto +89.5001 46 lineto +closepath stroke +grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +%%BoundingBox: 36 36 230 440 +end +restore +%%EOF diff --git a/changelog b/changelog index 0cf904a..53741f2 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,6 @@ +20090222 tpd src/axiom-website/patches.html 20090222.03.tpd.patch +20090222 tpd books/bookvol10.2 add documentation +20090222 tpd books/ps/v102algebrahierarchy.ps added 20090222 tpd src/axiom-website/patches.html 20090222.02.tpd.patch 20090222 tpd src/interp/Makefile add regression, help for Stack 20090222 tpd books/bookvol10.3 add regression, help, examples for Stack diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html index a8c96df..eaaedd1 100644 --- a/src/axiom-website/patches.html +++ b/src/axiom-website/patches.html @@ -957,5 +957,7 @@ add Scott Morrison's original hypertex plan
add Stephen Buchwald to credits
20090222.02.tpd.patch bookvol10.3 add regression, help, examples for Stack
+20090222.03.tpd.patch +bookvol10.2 add documentation