diff --git a/books/bookvol10.2.pamphlet b/books/bookvol10.2.pamphlet index 377b5af..e6ea693 100644 --- a/books/bookvol10.2.pamphlet +++ b/books/bookvol10.2.pamphlet @@ -284,9 +284,11 @@ This is the root of the category hierarchy and is not represented by code. {\bf See:}\\ \pageto{BasicType}{BASTYPE} -\pageto{Eltable}{ELTAB} \pageto{CoercibleTo}{KOERCE} \pageto{ConvertibleTo}{KONVERT} +\pageto{Eltable}{ELTAB} +\pageto{InnerEvalable}{IEVALAB} +\pageto{Logic}{LOGIC} \pageto{RetractableTo}{RETRACT} \pageto{Type}{TYPE} @@ -603,6 +605,97 @@ digraph pic { @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{InnerEvalable}{IEVALAB} +\pagepic{ps/v102innerevalable.ps}{IEVALAB}{1.00} + +{\bf See:}\\ +\pageto{Evalable}{EVALAB} +\pagefrom{Category}{CATEGORY} + +{\bf Exports:}\\ +\begin{tabular}{l} +\cross{IEVALAB}{eval} +\end{tabular} + +These are directly exported but not implemented: +\begin{verbatim} + eval : (%,A,B) -> % +\end{verbatim} + +These are implemented by this category: +\begin{verbatim} + eval : (%,List A,List B) -> % +\end{verbatim} + +<>= +)abbrev category IEVALAB InnerEvalable +-- FOR THE BENEFIT OF LIBAX0 GENERATION +++ Author: +++ Date Created: +++ Date Last Updated: June 3, 1991 +++ Basic Operations: +++ Related Domains: +++ Also See: Evalable +++ AMS Classifications: +++ Keywords: equation +++ Examples: +++ References: +++ Description: +++ This category provides \spadfun{eval} operations. +++ A domain may belong to this category if it is possible to make +++ ``evaluation'' substitutions. The difference between this +++ and \spadtype{Evalable} is that the operations in this category +++ specify the substitution as a pair of arguments rather than as +++ an equation. +InnerEvalable(A:SetCategory, B:Type): Category == with + eval: ($, A, B) -> $ + ++ eval(f, x, v) replaces x by v in f. + eval: ($, List A, List B) -> $ + ++ eval(f, [x1,...,xn], [v1,...,vn]) replaces xi by vi in f. + add + eval(f:$, x:A, v:B) == eval(f, [x], [v]) + +@ +<>= +"IEVALAB" + [color=lightblue,href="bookvol10.2.pdf#nameddest=IEVALAB"]; +"IEVALAB" -> "CATEGORY" + +@ +<>= +"InnerEvalable(a:SetCategory,b:Type)" + [color=lightblue,href="bookvol10.2.pdf#nameddest=IEVALAB"]; +"InnerEvalable(a:SetCategory,b:Type)" -> "Category" + +"InnerEvalable(a:SetCategory,b:SetCategory)" + [color=seagreen,href="bookvol10.2.pdf#nameddest=IEVALAB"]; +"InnerEvalable(a:SetCategory,b:SetCategory)" -> + "InnerEvalable(a:SetCategory,b:Type)" + +"InnerEvalable(a:Ring,MultivariateTaylorSeriesCategory(a:Ring,b:OrderedSet))" + [color=seagreen,href="bookvol10.2.pdf#nameddest=IEVALAB"]; +"InnerEvalable(a:Ring,MultivariateTaylorSeriesCategory(a:Ring,b:OrderedSet))" + -> "InnerEvalable(a:SetCategory,b:Type)" + +"InnerEvalable(Kernal(ExpressionSpace),ExpressionSpace)" + [color=seagreen,href="bookvol10.2.pdf#nameddest=IEVALAB"]; +"InnerEvalable(Kernal(ExpressionSpace),ExpressionSpace)" -> + "InnerEvalable(a:SetCategory,b:Type)" +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"InnerEvalable(a:SetCategory,b:Type)" [color=lightblue]; +"InnerEvalable(a:SetCategory,b:Type)" -> "Category" + +"Category" [color=lightblue]; +} + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{RetractableTo}{RETRACT} \pagepic{ps/v102retractableto.ps}{RETRACT}{1.00} @@ -972,6 +1065,184 @@ digraph pic { @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{Evalable}{EVALAB} +\pagepic{ps/v102evalable.ps}{EVALAB}{1.00} + +{\bf See:}\\ +\pagefrom{InnerEvalable}{IEVALAB} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\end{tabular} + +These are directly exported but not implemented: +\begin{verbatim} + eval : (%,List Equation R) -> % +\end{verbatim} + +These are implemented by this category: +\begin{verbatim} +eval : (%,Equation R) -> % +eval : (%,List R,List R) -> % +\end{verbatim} + +These exports come from InnerEvalable(R:SetCategory,R:SetCategory): +\begin{verbatim} + eval : (%,R,R) -> % +\end{verbatim} + +<>= +)abbrev category EVALAB Evalable +++ Author: +++ Date Created: +++ Date Last Updated: June 3, 1991 +++ Basic Operations: +++ Related Domains: +++ Also See: FullyEvalable +++ AMS Classifications: +++ Keywords: equation +++ Examples: +++ References: +++ Description: +++ This category provides \spadfun{eval} operations. +++ A domain may belong to this category if it is possible to make +++ ``evaluation'' substitutions. +Evalable(R:SetCategory): Category == InnerEvalable(R,R) with + eval: ($, Equation R) -> $ + ++ eval(f,x = v) replaces x by v in f. + eval: ($, List Equation R) -> $ + ++ eval(f, [x1 = v1,...,xn = vn]) replaces xi by vi in f. + add + eval(f:$, eq:Equation R) == eval(f, [eq]) + eval(f:$, xs:List R,vs:List R) == eval(f,[x=v for x in xs for v in vs]) + +@ +<>= +"EVALAB" + [color=lightblue,href="bookvol10.2.pdf#nameddest=EVALAB"]; +"EVALAB" -> "IEVALAB" + +@ +<>= +"Evalable(a:SetCategory)" + [color=lightblue,href="bookvol10.2.pdf#nameddest=EVALAB"]; +"Evalable(a:SetCategory)" -> "InnerEvalable(a:SetCategory,b:SetCategory)" + +"Evalable(MultivariateTaylorSeriesCategory(a:Ring,b:OrderedSet))" + [color=seagreen,href="bookvol10.2.pdf#nameddest=EVALAB"]; +"Evalable(MultivariateTaylorSeriesCategory(a:Ring,b:OrderedSet))" -> + "Evalable(a:SetCategory)" + +"Evalable(ExpressionSpace)" + [color=seagreen,href="bookvol10.2.pdf#nameddest=EVALAB"]; +"Evalable(ExpressionSpace)" -> "Evalable(a:SetCategory)" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"Evalable(a:SetCategory)" [color=lightblue]; +"Evalable(a:SetCategory)" -> "InnerEvalable(a:SetCategory,b:SetCategory)" + +"InnerEvalable(a:SetCategory,b:SetCategory)" [color=seagreen]; +"InnerEvalable(a:SetCategory,b:SetCategory)" -> + "InnerEvalable(a:SetCategory,b:Type)" + +"InnerEvalable(a:SetCategory,b:Type)" [color=lightblue]; +"InnerEvalable(a:SetCategory,b:Type)" -> "Category" + +"Category" [color=lightblue]; +} + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{Logic}{LOGIC} +\pagepic{ps/v102logic.ps}{LOGIC}{1.00} + +{\bf See:}\\ +\pageto{BitAggregate}{BTAGG} +\pagefrom{BasicType}{BASTYPE} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{LOGIC}{?$/\backslash{}$?} +\cross{LOGIC}{?=?} +\cross{LOGIC}{?$\backslash{}/$?} +\cross{LOGIC}{\~{}?} +\cross{LOGIC}{?\~{}=?} +\end{tabular} + +These are directly exported but not implemented: +\begin{verbatim} + ~? : % -> % + ?/\? : (%,%) -> % +\end{verbatim} + +These are implemented by this category: +\begin{verbatim} + ?\/? : (%,%) -> % +\end{verbatim} + +These exports come from BasicType(): +\begin{verbatim} + ?=? : (%,%) -> Boolean + ?~=? : (%,%) -> Boolean +\end{verbatim} + +<>= +)abbrev category LOGIC Logic +++ Author: +++ Date Created: +++ Change History: +++ Basic Operations: ~, /\, \/ +++ Related Constructors: +++ Keywords: boolean +++ Description: +++ `Logic' provides the basic operations for lattices, +++ e.g., boolean algebra. +Logic: Category == BasicType with + _~: % -> % + ++ ~(x) returns the logical complement of x. + _/_\: (%, %) -> % + ++ \spadignore { /\ }returns the logical `meet', e.g. `and'. + _\_/: (%, %) -> % + ++ \spadignore{ \/ } returns the logical `join', e.g. `or'. + add + _\_/(x: %,y: %) == _~( _/_\(_~(x), _~(y))) + +@ +<>= +"LOGIC" + [color=lightblue,href="bookvol10.2.pdf#nameddest=LOGIC"]; +"LOGIC" -> "BASTYPE" + +@ +<>= +"Logic()" + [color=lightblue,href="bookvol10.2.pdf#nameddest=LOGIC"]; +"Logic()" -> "BasicType()" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"Logic()" [color=lightblue]; +"Logic()" -> "BasicType()" + +"BasicType()" [color=lightblue]; +"BasicType()" -> "Category" + +"Category" [color=lightblue]; +} + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{SetCategory}{SETCAT} \pagepic{ps/v102setcategory.ps}{SETCAT}{1.00} @@ -1082,7 +1353,7 @@ digraph pic { \chapter{Category Layer 3} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{AbelianSemiGroup}{ABELSG} -\pagepic{ps/v102abeliansemigroup.ps}{ABELSG}{1.00} +\pagepic{ps/v102abeliansemigroup.ps}{ABELSG}{0.75} {\bf See:}\\ \pageto{AbelianMonoid}{ABELMON} @@ -1537,6 +1808,7 @@ digraph pic { \pagepic{ps/v102orderedset.ps}{ORDSET}{1.00} {\bf See:}\\ +\pageto{BitAggregate}{BTAGG} \pageto{OrderedAbelianSemiGroup}{OASGP} \pageto{OrderedFinite}{ORDFIN} \pageto{OrderedMonoid}{ORDMON} @@ -7869,6 +8141,7 @@ digraph pic { \pagepic{ps/v102onedimensionalarrayaggregate.ps}{A1AGG}{1.00} {\bf See:}\\ +\pageto{BitAggregate}{BTAGG} \pageto{StringAggregate}{SRAGG} \pagefrom{FiniteLinearAggregate}{FLAGG} @@ -8344,6 +8617,7 @@ digraph pic { "CLAGG..." [color=lightblue]; "IXAGG..." [color=lightblue]; } + @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{FiniteSetAggregate}{FSAGG} @@ -9639,11 +9913,14 @@ These exports come from MultiDictionary(S:SetCategory): construct : List S -> % convert : % -> InputForm if S has KONVERT INFORM copy : % -> % - count : (S,%) -> NonNegativeInteger if S has SETCAT and $ has finiteAggregate - count : ((S -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate + count : (S,%) -> NonNegativeInteger + if S has SETCAT and $ has finiteAggregate + count : ((S -> Boolean),%) -> NonNegativeInteger + if $ has finiteAggregate dictionary : List S -> % dictionary : () -> % - duplicates : % -> List Record(entry: S,count: NonNegativeInteger) + duplicates : % -> + List Record(entry: S,count: NonNegativeInteger) empty : () -> % empty? : % -> Boolean eq? : (%,%) -> Boolean @@ -9662,21 +9939,31 @@ These exports come from MultiDictionary(S:SetCategory): less? : (%,NonNegativeInteger) -> Boolean map : ((S -> S),%) -> % map! : ((S -> S),%) -> % if $ has shallowlyMutable - member? : (S,%) -> Boolean if S has SETCAT and $ has finiteAggregate + member? : (S,%) -> Boolean + if S has SETCAT and $ has finiteAggregate members : % -> List S if $ has finiteAggregate more? : (%,NonNegativeInteger) -> Boolean parts : % -> List S if $ has finiteAggregate - reduce : (((S,S) -> S),%) -> S if $ has finiteAggregate - reduce : (((S,S) -> S),%,S) -> S if $ has finiteAggregate - reduce : (((S,S) -> S),%,S,S) -> S if S has SETCAT and $ has finiteAggregate - remove : ((S -> Boolean),%) -> % if $ has finiteAggregate - remove : (S,%) -> % if S has SETCAT and $ has finiteAggregate - removeDuplicates : % -> % if S has SETCAT and $ has finiteAggregate + reduce : (((S,S) -> S),%) -> S + if $ has finiteAggregate + reduce : (((S,S) -> S),%,S) -> S + if $ has finiteAggregate + reduce : (((S,S) -> S),%,S,S) -> S + if S has SETCAT and $ has finiteAggregate + remove : ((S -> Boolean),%) -> % + if $ has finiteAggregate + remove : (S,%) -> % + if S has SETCAT and $ has finiteAggregate + removeDuplicates : % -> % + if S has SETCAT and $ has finiteAggregate removeDuplicates! : % -> % - remove! : ((S -> Boolean),%) -> % if $ has finiteAggregate + remove! : ((S -> Boolean),%) -> % + if $ has finiteAggregate remove! : (S,%) -> % if $ has finiteAggregate - select : ((S -> Boolean),%) -> % if $ has finiteAggregate - select! : ((S -> Boolean),%) -> % if $ has finiteAggregate + select : ((S -> Boolean),%) -> % + if $ has finiteAggregate + select! : ((S -> Boolean),%) -> % + if $ has finiteAggregate size? : (%,NonNegativeInteger) -> Boolean #? : % -> NonNegativeInteger if $ has finiteAggregate ?~=? : (%,%) -> Boolean @@ -10957,7 +11244,7 @@ digraph pic { \chapter{Category Layer 8} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{AssociationListAggregate}{ALAGG} -\pagepic{ps/v102associationlistaggregate.ps}{ALAGG}{0.50} +\pagepic{ps/v102associationlistaggregate.ps}{ALAGG}{0.45} {\bf See:}\\ \pagefrom{ListAggregate}{LSAGG} @@ -11466,6 +11753,9 @@ digraph pic { \pagepic{ps/v102bimodule.ps}{BMODULE}{1.00} {\bf See:}\\ +\pageto{CommutativeRing}{COMRING} +\pageto{EntireRing}{ENTIRER} +\pageto{Module}{MODULE} \pagefrom{LeftModule}{LMODULE} \pagefrom{RightModule}{RMODULE} @@ -11564,8 +11854,7 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"BiModule(a:Ring,b:Ring)" - [color=lightblue,href="bookvol10.2.pdf#nameddest=BMODULE"]; +"BiModule(a:Ring,b:Ring)" [color=lightblue]; "BiModule(a:Ring,b:Ring)" -> "LeftModule(a:Ring)" "BiModule(a:Ring,b:Ring)" -> "RightModule(a:Ring)" @@ -11592,14 +11881,347 @@ digraph pic { "REPDB..." [color="#00EE00"]; } +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{BitAggregate}{BTAGG} +\pagepic{ps/v102bitaggregate.ps}{BTAGG}{0.65} + +{\bf See:}\\ +\pagefrom{Logic}{LOGIC} +\pagefrom{OneDimensionalArrayAggregate}{A1AGG} +\pagefrom{OrderedSet}{ORDSET} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{BTAGG}{any?} & +\cross{BTAGG}{coerce} & +\cross{BTAGG}{concat} & +\cross{BTAGG}{construct} & +\cross{BTAGG}{convert} \\ +\cross{BTAGG}{copy} & +\cross{BTAGG}{copyInto!} & +\cross{BTAGG}{count} & +\cross{BTAGG}{delete} & +\cross{BTAGG}{elt} \\ +\cross{BTAGG}{empty} & +\cross{BTAGG}{empty?} & +\cross{BTAGG}{entry?} & +\cross{BTAGG}{entries} & +\cross{BTAGG}{eq?} \\ +\cross{BTAGG}{eval} & +\cross{BTAGG}{every?} & +\cross{BTAGG}{fill!} & +\cross{BTAGG}{find} & +\cross{BTAGG}{first} \\ +\cross{BTAGG}{hash} & +\cross{BTAGG}{index?} & +\cross{BTAGG}{indices} & +\cross{BTAGG}{insert} & +\cross{BTAGG}{latex} \\ +\cross{BTAGG}{less?} & +\cross{BTAGG}{map} & +\cross{BTAGG}{map!} & +\cross{BTAGG}{max} & +\cross{BTAGG}{maxIndex} \\ +\cross{BTAGG}{member?} & +\cross{BTAGG}{members} & +\cross{BTAGG}{merge} & +\cross{BTAGG}{min} & +\cross{BTAGG}{minIndex} \\ +\cross{BTAGG}{more?} & +\cross{BTAGG}{nand} & +\cross{BTAGG}{new} & +\cross{BTAGG}{nor} & +\cross{BTAGG}{not?} \\ +\cross{BTAGG}{parts} & +\cross{BTAGG}{position} & +\cross{BTAGG}{qelt} & +\cross{BTAGG}{qsetelt!} & +\cross{BTAGG}{reduce} \\ +\cross{BTAGG}{remove} & +\cross{BTAGG}{removeDuplicates} & +\cross{BTAGG}{reverse} & +\cross{BTAGG}{reverse!} & +\cross{BTAGG}{sample} \\ +\cross{BTAGG}{select} & +\cross{BTAGG}{setelt} & +\cross{BTAGG}{size?} & +\cross{BTAGG}{sort} & +\cross{BTAGG}{sort!} \\ +\cross{BTAGG}{sorted?} & +\cross{BTAGG}{swap!} & +\cross{BTAGG}{xor} & +\cross{BTAGG}{\#?} & +\cross{BTAGG}{?$/\backslash{}$?} \\ +\cross{BTAGG}{?$<$?} & +\cross{BTAGG}{?$<=$?} & +\cross{BTAGG}{?=?} & +\cross{BTAGG}{?$>$?} & +\cross{BTAGG}{?$>=$?} \\ +\cross{BTAGG}{?$\backslash{}/$?} & +\cross{BTAGG}{\^{}?} & +\cross{BTAGG}{?and?} & +\cross{BTAGG}{?.?} & +\cross{BTAGG}{?or?} \\ +\cross{BTAGG}{\~{}?} & +\cross{BTAGG}{?\~{}=?} &&& +\end{tabular} + +These are directly exported but not implemented: +\begin{verbatim} + ?and? : (%,%) -> % + ?or? : (%,%) -> % + xor : (%,%) -> % +\end{verbatim} + +These are implemented by this category: +\begin{verbatim} + not? : % -> % + ^? : % -> % + ~? : % -> % + ?/\? : (%,%) -> % + ?\/? : (%,%) -> % + nand : (%,%) -> % + nor : (%,%) -> % +\end{verbatim} + +These exports come from OrderedSet(): +\begin{verbatim} + coerce : % -> OutputForm + hash : % -> SingleInteger + latex : % -> String + max : (%,%) -> % + min : (%,%) -> % + ?=? : (%,%) -> Boolean + ?~=? : (%,%) -> Boolean + ? Boolean + ?>? : (%,%) -> Boolean + ?<=? : (%,%) -> Boolean + ?>=? : (%,%) -> Boolean +\end{verbatim} + +TPDHERE: Note that none of the exports of Logic are needed. +Perhaps this can be eliminated. + +These exports come from OneDimensionalArrayAggregate(Boolean): +\begin{verbatim} + any? : ((Boolean -> Boolean),%) -> Boolean + if $ has finiteAggregate + concat : (%,%) -> % + concat : List % -> % + concat : (%,Boolean) -> % + concat : (Boolean,%) -> % + construct : List Boolean -> % + convert : % -> InputForm + if Boolean has KONVERT INFORM + copy : % -> % + copyInto! : (%,%,Integer) -> % + if $ has shallowlyMutable + count : (Boolean,%) -> NonNegativeInteger + if Boolean has SETCAT and $ has finiteAggregate + count : ((Boolean -> Boolean),%) -> NonNegativeInteger + if $ has finiteAggregate + delete : (%,UniversalSegment Integer) -> % + delete : (%,Integer) -> % + elt : (%,Integer,Boolean) -> Boolean + empty : () -> % + empty? : % -> Boolean + entry? : (Boolean,%) -> Boolean + if $ has finiteAggregate and Boolean has SETCAT + entries : % -> List Boolean + eq? : (%,%) -> Boolean + eval : (%,List Equation Boolean) -> % + if Boolean has EVALAB BOOLEAN and Boolean has SETCAT + eval : (%,Equation Boolean) -> % + if Boolean has EVALAB BOOLEAN and Boolean has SETCAT + eval : (%,Boolean,Boolean) -> % + if Boolean has EVALAB BOOLEAN and Boolean has SETCAT + eval : (%,List Boolean,List Boolean) -> % + if Boolean has EVALAB BOOLEAN and Boolean has SETCAT + every? : ((Boolean -> Boolean),%) -> Boolean + if $ has finiteAggregate + fill! : (%,Boolean) -> % + if $ has shallowlyMutable + find : ((Boolean -> Boolean),%) -> Union(Boolean,"failed") + first : % -> Boolean if Integer has ORDSET + index? : (Integer,%) -> Boolean + indices : % -> List Integer + insert : (Boolean,%,Integer) -> % + insert : (%,%,Integer) -> % + less? : (%,NonNegativeInteger) -> Boolean + map : ((Boolean -> Boolean),%) -> % + map : (((Boolean,Boolean) -> Boolean),%,%) -> % + map! : ((Boolean -> Boolean),%) -> % + if $ has shallowlyMutable + maxIndex : % -> Integer if Integer has ORDSET + member? : (Boolean,%) -> Boolean + if Boolean has SETCAT and $ has finiteAggregate + members : % -> List Boolean if $ has finiteAggregate + merge : (%,%) -> % if Boolean has ORDSET + minIndex : % -> Integer if Integer has ORDSET + more? : (%,NonNegativeInteger) -> Boolean + new : (NonNegativeInteger,Boolean) -> % + merge : (((Boolean,Boolean) -> Boolean),%,%) -> % + parts : % -> List Boolean if $ has finiteAggregate + position : ((Boolean -> Boolean),%) -> Integer + position : (Boolean,%,Integer) -> Integer + if Boolean has SETCAT + position : (Boolean,%) -> Integer + if Boolean has SETCAT + qelt : (%,Integer) -> Boolean + qsetelt! : (%,Integer,Boolean) -> Boolean + if $ has shallowlyMutable + reverse : % -> % + reduce : (((Boolean,Boolean) -> Boolean),%) -> Boolean + if $ has finiteAggregate + reduce : (((Boolean,Boolean) -> Boolean),%,Boolean) -> Boolean + if $ has finiteAggregate + reduce : + (((Boolean,Boolean) -> Boolean),%,Boolean,Boolean) -> Boolean + if Boolean has SETCAT and $ has finiteAggregate + remove : (Boolean,%) -> % + if Boolean has SETCAT and $ has finiteAggregate + remove : ((Boolean -> Boolean),%) -> % + if $ has finiteAggregate + removeDuplicates : % -> % + if Boolean has SETCAT and $ has finiteAggregate + reverse! : % -> % if $ has shallowlyMutable + sample : () -> % + setelt : (%,UniversalSegment Integer,Boolean) -> Boolean + if $ has shallowlyMutable + select : ((Boolean -> Boolean),%) -> % + if $ has finiteAggregate + setelt : (%,Integer,Boolean) -> Boolean + if $ has shallowlyMutable + size? : (%,NonNegativeInteger) -> Boolean + sort : (((Boolean,Boolean) -> Boolean),%) -> % + sort : % -> % if Boolean has ORDSET + sort! : % -> % + if Boolean has ORDSET and $ has shallowlyMutable + sort! : (((Boolean,Boolean) -> Boolean),%) -> % + if $ has shallowlyMutable + sorted? : % -> Boolean if Boolean has ORDSET + sorted? : (((Boolean,Boolean) -> Boolean),%) -> Boolean + swap! : (%,Integer,Integer) -> Void if $ has shallowlyMutable + ?.? : (%,UniversalSegment Integer) -> % + #? : % -> NonNegativeInteger if $ has finiteAggregate + ?.? : (%,Integer) -> Boolean +\end{verbatim} + +<>= +)abbrev category BTAGG BitAggregate +++ Author: Michael Monagan; revised by Manuel Bronstein and Richard Jenks +++ Date Created: August 87 through August 88 +++ Date Last Updated: April 1991 +++ Basic Operations: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ The bit aggregate category models aggregates representing large +++ quantities of Boolean data. +BitAggregate(): Category == + Join(OrderedSet, Logic, OneDimensionalArrayAggregate Boolean) with + "not": % -> % + ++ not(b) returns the logical {\em not} of bit aggregate + ++ \axiom{b}. + "^" : % -> % + ++ ^ b returns the logical {\em not} of bit aggregate + ++ \axiom{b}. + nand : (%, %) -> % + ++ nand(a,b) returns the logical {\em nand} of bit aggregates + ++ \axiom{a} and \axiom{b}. + nor : (%, %) -> % + ++ nor(a,b) returns the logical {\em nor} of bit aggregates + ++ \axiom{a} and \axiom{b}. + _and : (%, %) -> % + ++ a and b returns the logical {\em and} of bit aggregates + ++ \axiom{a} and \axiom{b}. + _or : (%, %) -> % + ++ a or b returns the logical {\em or} of bit aggregates + ++ \axiom{a} and \axiom{b}. + xor : (%, %) -> % + ++ xor(a,b) returns the logical {\em exclusive-or} of bit aggregates + ++ \axiom{a} and \axiom{b}. + + add + not v == map(_not, v) + _^ v == map(_not, v) + _~(v) == map(_~, v) + _/_\(v, u) == map(_/_\, v, u) + _\_/(v, u) == map(_\_/, v, u) + nand(v, u) == map(nand, v, u) + nor(v, u) == map(nor, v, u) +@ +<>= +"BTAGG" [color=lightblue,href="bookvol10.2.pdf#nameddest=BTAGG"]; +"BTAGG" -> "ORDSET" +"BTAGG" -> "LOGIC" +"BTAGG" -> "A1AGG" +@ +<>= +"BitAggregate()" + [color=lightblue,href="bookvol10.2.pdf#nameddest=BTAGG"]; +"BitAggregate()" -> "OrderedSet()" +"BitAggregate()" -> "Logic()" +"BitAggregate()" -> "OneDimensionalArrayAggregate(Boolean)" +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"BitAggregate()" [color=lightblue]; +"BitAggregate()" -> "OrderedSet()" +"BitAggregate()" -> "Logic()" +"BitAggregate()" -> "OneDimensionalArrayAggregate(Boolean)" + +"OneDimensionalArrayAggregate(Boolean)" + [color=seagreen,href="bookvol10.2.pdf#nameddest=A1AGG"]; +"OneDimensionalArrayAggregate(Boolean)" -> + "OneDimensionalArrayAggregate(a:Type)" + +"OneDimensionalArrayAggregate(a:Type)" [color=lightblue]; +"OneDimensionalArrayAggregate(a:Type)" -> + "FiniteLinearAggregate(a:Type)" + +"FiniteLinearAggregate(a:Type)" [color=lightblue]; +"FiniteLinearAggregate(a:Type)" -> "LinearAggregate(a:Type)" + +"LinearAggregate(a:Type)" [color=lightblue]; +"LinearAggregate(a:Type)" -> "IXAGG..." +"LinearAggregate(a:Type)" -> "CLAGG..." +"OrderedSet()" [color=lightblue]; +"OrderedSet()" -> "SetCategory()" + +"SetCategory()" [color=lightblue]; +"SetCategory()" -> "BasicType()" +"SetCategory()" -> "CoercibleTo(OutputForm)" + +"CoercibleTo(OutputForm)" [color=seagreen]; +"CoercibleTo(OutputForm)" -> "CoercibleTo(a:Type)" + +"CoercibleTo(a:Type)" [color=lightblue]; +"CoercibleTo(a:Type)" -> "Category" +"Logic()" [color=lightblue]; +"Logic()" -> "BasicType()" +"BasicType()" [color=lightblue]; +"BasicType()" -> "Category" +"Category" [color=lightblue]; +"CLAGG..." [color=lightblue]; +"IXAGG..." [color=lightblue]; +} @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -11938,7 +12560,8 @@ These exports come from MultisetAggregate(S:OrderedSet): dictionary : () -> % difference : (%,S) -> % difference : (%,%) -> % - duplicates : % -> List Record(entry: S,count: NonNegativeInteger) + duplicates : % -> + List Record(entry: S,count: NonNegativeInteger) empty : () -> % empty? : % -> Boolean eq? : (%,%) -> Boolean @@ -12094,7 +12717,16 @@ digraph pic { \pagepic{ps/v102ring.ps}{RING}{1.00} {\bf See:}\\ +\pageto{Algebra}{ALGEBRA} +\pageto{CharacteristicNonZero}{CHARNZ} +\pageto{CharacteristicZero}{CHARZ} +\pageto{CommutativeRing}{COMRING} +\pageto{DifferentialExtension}{DIFEXT} +\pageto{DifferentialRing}{DIFRING} +\pageto{EntireRing}{ENTIRER} +\pageto{LinearlyExplicitRingOver}{LINEXP} \pageto{OrderedRing}{ORDRING} +\pageto{PartialDifferentialRing}{PDRING} \pagefrom{LeftModule}{LMODULE} \pagefrom{Monoid}{MONOID} \pagefrom{Rng}{RNG} @@ -12168,10 +12800,6 @@ These exports come from Monoid(): TPDHERE: Note that none of the exports of LeftModule are needed. Perhaps this can be eliminated. -These exports come from LeftModule(Ring): -\begin{verbatim} -\end{verbatim} - <>= )abbrev category RING Ring ++ Author: @@ -12262,10 +12890,902 @@ digraph pic { @ \chapter{Category Layer 9} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{CharacteristicNonZero}{CHARNZ} +\pagepic{ps/v102characteristicnonzero.ps}{CHARNZ}{0.90} + +{\bf See:}\\ +\pagefrom{Ring}{RING} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{CHARNZ}{1} & +\cross{CHARNZ}{0} & +\cross{CHARNZ}{coerce} & +\cross{CHARNZ}{hash} & +\cross{CHARNZ}{latex} \\ +\cross{CHARNZ}{one?} & +\cross{CHARNZ}{recip} & +\cross{CHARNZ}{sample} & +\cross{CHARNZ}{zero?} & +\cross{CHARNZ}{characteristic} \\ +\cross{CHARNZ}{charthRoot} & +\cross{CHARNZ}{subtractIfCan} & +\cross{CHARNZ}{?\~{}=?} & +\cross{CHARNZ}{?\^{}?} & +\cross{CHARNZ}{?*?} \\ +\cross{CHARNZ}{?**?} & +\cross{CHARNZ}{?+?} & +\cross{CHARNZ}{?-?} & +\cross{CHARNZ}{-?} & +\cross{CHARNZ}{?=?} \\ +\end{tabular} + +These are directly exported but not implemented: +\begin{verbatim} + charthRoot : % -> Union(%,"failed") +\end{verbatim} + +These exports come from Ring(): +\begin{verbatim} + 1 : () -> % + 0 : () -> % + coerce : Integer -> % + coerce : % -> OutputForm + hash : % -> SingleInteger + latex : % -> String + one? : % -> Boolean + recip : % -> Union(%,"failed") + sample : () -> % + zero? : % -> Boolean + characteristic : () -> NonNegativeInteger + subtractIfCan : (%,%) -> Union(%,"failed") + ?~=? : (%,%) -> Boolean + ?^? : (%,NonNegativeInteger) -> % + ?^? : (%,PositiveInteger) -> % + ?*? : (%,%) -> % + ?*? : (NonNegativeInteger,%) -> % + ?*? : (Integer,%) -> % + ?*? : (PositiveInteger,%) -> % + ?**? : (%,NonNegativeInteger) -> % + ?**? : (%,PositiveInteger) -> % + ?+? : (%,%) -> % + ?-? : (%,%) -> % + -? : % -> % + ?=? : (%,%) -> Boolean +\end{verbatim} + +<>= +)abbrev category CHARNZ CharacteristicNonZero +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ Rings of Characteristic Non Zero +CharacteristicNonZero():Category == Ring with + charthRoot: % -> Union(%,"failed") + ++ charthRoot(x) returns the pth root of x + ++ where p is the characteristic of the ring. + +@ +<>= +"CHARNZ" + [color=lightblue,href="bookvol10.2.pdf#nameddest=CHARNZ"]; +"CHARNZ" -> "RING" + +@ +<>= +"CharacteristicNonZero()" + [color=lightblue,href="bookvol10.2.pdf#nameddest=CHARNZ"]; +"CharacteristicNonZero()" -> "Ring()" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"CharacteristicNonZero()" [color=lightblue]; +"CharacteristicNonZero()" -> "Ring()" + +"Ring()" [color=lightblue]; +"Ring()" -> "Rng()" +"Ring()" -> "Monoid()" +"Ring()" -> "LeftModule(a:Ring)" + +"Rng()" [color=lightblue]; +"Rng()" -> "AbelianGroup()" +"Rng()" -> "SemiGroup()" + +"Monoid()" [color=lightblue]; +"Monoid()" -> "SemiGroup()" + +"LeftModule(a:Ring)" [color=seagreen]; +"LeftModule(a:Ring)" -> "LeftModule(a:Rng)" + +"LeftModule(a:Rng)" [color=lightblue]; +"LeftModule(a:Rng)" -> "AbelianGroup()" + +"AbelianGroup()" [color=lightblue]; +"AbelianGroup()" -> "CABMON..." +"AbelianGroup()" -> "REPDB..." + +"SemiGroup()" [color=lightblue]; +"SemiGroup()" -> "SETCAT..." +"SemiGroup()" -> "REPSQ..." + +"REPDB..." [color="#00EE00"]; +"REPSQ..." [color="#00EE00"]; +"SETCAT..." [color=lightblue]; +"CABMON..." [color=lightblue]; +} + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{CharacteristicZero}{CHARZ} +\pagepic{ps/v102characteristiczero.ps}{CHARZ}{0.90} + +{\bf See:}\\ +\pagefrom{Ring}{RING} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{CHARZ}{1} & +\cross{CHARZ}{0} & +\cross{CHARZ}{coerce} & +\cross{CHARZ}{hash} & +\cross{CHARZ}{latex} \\ +\cross{CHARZ}{one?} & +\cross{CHARZ}{recip} & +\cross{CHARZ}{sample} & +\cross{CHARZ}{zero?} & +\cross{CHARZ}{characteristic} \\ +\cross{CHARZ}{subtractIfCan} & +\cross{CHARZ}{?\~{}=?} & +\cross{CHARZ}{?\^{}?} & +\cross{CHARZ}{?*?} \\ +\cross{CHARZ}{?**?} & +\cross{CHARZ}{?+?} & +\cross{CHARZ}{?-?} & +\cross{CHARZ}{-?} & +\cross{CHARZ}{?=?} \\ +\end{tabular} + +These exports come from Ring(): +\begin{verbatim} + 1 : () -> % + 0 : () -> % + coerce : Integer -> % + coerce : % -> OutputForm + hash : % -> SingleInteger + latex : % -> String + one? : % -> Boolean + recip : % -> Union(%,"failed") + sample : () -> % + zero? : % -> Boolean + characteristic : () -> NonNegativeInteger + subtractIfCan : (%,%) -> Union(%,"failed") + ?~=? : (%,%) -> Boolean + ?^? : (%,NonNegativeInteger) -> % + ?^? : (%,PositiveInteger) -> % + ?*? : (%,%) -> % + ?*? : (NonNegativeInteger,%) -> % + ?*? : (Integer,%) -> % + ?*? : (PositiveInteger,%) -> % + ?**? : (%,NonNegativeInteger) -> % + ?**? : (%,PositiveInteger) -> % + ?+? : (%,%) -> % + ?-? : (%,%) -> % + -? : % -> % + ?=? : (%,%) -> Boolean +\end{verbatim} + +<>= +)abbrev category CHARZ CharacteristicZero +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ Rings of Characteristic Zero. +CharacteristicZero():Category == Ring + +@ +<>= +"CHARZ" + [color=lightblue,href="bookvol10.2.pdf#nameddest=CHARZ"]; +"CHARZ" -> "RING" + +@ +<>= +"CharacteristicNonZero()" + [color=lightblue,href="bookvol10.2.pdf#nameddest=CHARZ"]; +"CharacteristicNonZero()" -> "Ring()" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"CharacteristicZero()" [color=lightblue]; +"CharacteristicZero()" -> "Ring()" + +"Ring()" [color=lightblue]; +"Ring()" -> "Rng()" +"Ring()" -> "Monoid()" +"Ring()" -> "LeftModule(a:Ring)" + +"Rng()" [color=lightblue]; +"Rng()" -> "AbelianGroup()" +"Rng()" -> "SemiGroup()" + +"Monoid()" [color=lightblue]; +"Monoid()" -> "SemiGroup()" + +"LeftModule(a:Ring)" [color=seagreen]; +"LeftModule(a:Ring)" -> "LeftModule(a:Rng)" + +"LeftModule(a:Rng)" [color=lightblue]; +"LeftModule(a:Rng)" -> "AbelianGroup()" + +"AbelianGroup()" [color=lightblue]; +"AbelianGroup()" -> "CABMON..." +"AbelianGroup()" -> "REPDB..." + +"SemiGroup()" [color=lightblue]; +"SemiGroup()" -> "SETCAT..." +"SemiGroup()" -> "REPSQ..." + +"REPDB..." [color="#00EE00"]; +"REPSQ..." [color="#00EE00"]; +"SETCAT..." [color=lightblue]; +"CABMON..." [color=lightblue]; +} + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{CommutativeRing}{COMRING} +\pagepic{ps/v102commutativering.ps}{COMRING}{0.65} + +{\bf See:}\\ +\pageto{IntegralDomain}{INTDOM} +\pagefrom{BiModule}{BMODULE} +\pagefrom{Ring}{RING} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{COMRING}{1} & +\cross{COMRING}{0} & +\cross{COMRING}{coerce} & +\cross{COMRING}{hash} & +\cross{COMRING}{latex} \\ +\cross{COMRING}{one?} & +\cross{COMRING}{recip} & +\cross{COMRING}{sample} & +\cross{COMRING}{zero?} & +\cross{COMRING}{characteristic} \\ +\cross{COMRING}{subtractIfCan} & +\cross{COMRING}{?\~{}=?} & +\cross{COMRING}{?\^{}?} & +\cross{COMRING}{?*?} & +\cross{COMRING}{?**?} \\ +\cross{COMRING}{?+?} & +\cross{COMRING}{?-?} & +\cross{COMRING}{-?} & +\cross{COMRING}{?=?} & +\end{tabular} + + +These exports come from Ring(): +\begin{verbatim} + 0 : () -> % + 1 : () -> % + characteristic : () -> NonNegativeInteger + coerce : Integer -> % + coerce : % -> OutputForm + hash : % -> SingleInteger + latex : % -> String + one? : % -> Boolean + recip : % -> Union(%,"failed") + sample : () -> % + subtractIfCan : (%,%) -> Union(%,"failed") + zero? : % -> Boolean + ?+? : (%,%) -> % + ?=? : (%,%) -> Boolean + ?~=? : (%,%) -> Boolean + ?*? : (%,%) -> % + ?*? : (Integer,%) -> % + ?*? : (NonNegativeInteger,%) -> % + ?*? : (PositiveInteger,%) -> % + ?-? : (%,%) -> % + -? : % -> % + ?^? : (%,PositiveInteger) -> % + ?^? : (%,NonNegativeInteger) -> % + ?**? : (%,NonNegativeInteger) -> % + ?**? : (%,PositiveInteger) -> % +\end{verbatim} + +TPDHERE: Note that none of the exports of BiModule(a:Ring,b:Ring) +are needed. Perhaps this can be eliminated. + +<>= +)abbrev category COMRING CommutativeRing +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ The category of commutative rings with unity, i.e. rings where +++ \spadop{*} is commutative, and which have a multiplicative identity. +++ element. +--CommutativeRing():Category == Join(Ring,BiModule(%:Ring,%:Ring)) with +CommutativeRing():Category == Join(Ring,BiModule(%,%)) with + commutative("*") ++ multiplication is commutative. + +@ +<>= +"COMRING" + [color=lightblue,href="bookvol10.2.pdf#nameddest=COMRING"]; +"COMRING" -> "RING" +"COMRING" -> "BMODULE" + +@ +<>= +"CommutativeRing()" + [color=lightblue,href="bookvol10.2.pdf#nameddest=COMRING"]; +"CommutativeRing()" -> "Ring()" +"CommutativeRing()" -> "BiModule(a:Ring,b:Ring)" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"CommutativeRing()" [color=lightblue]; +"CommutativeRing()" -> "Ring()" +"CommutativeRing()" -> "BiModule(a:Ring,b:Ring)" + +"Ring()" [color=lightblue]; +"Ring()" -> "Rng()" +"Ring()" -> "Monoid()" +"Ring()" -> "LeftModule(a:Ring)" + +"BiModule(a:Ring,b:Ring)" [color=lightblue]; +"BiModule(a:Ring,b:Ring)" -> "LeftModule(a:Ring)" +"BiModule(a:Ring,b:Ring)" -> "RightModule(a:Ring)" + +"RightModule(a:Ring)" [color=seagreen]; +"RightModule(a:Ring)" -> "RightModule(a:Rng)" + +"RightModule(a:Rng)" [color=lightblue]; +"RightModule(a:Rng)" -> "AbelianGroup()" + +"Rng()" [color=lightblue]; +"Rng()" -> "AbelianGroup()" +"Rng()" -> "SemiGroup()" + +"Monoid()" [color=lightblue]; +"Monoid()" -> "SemiGroup()" + +"LeftModule(a:Ring)" [color=seagreen]; +"LeftModule(a:Ring)" -> "LeftModule(a:Rng)" + +"LeftModule(a:Rng)" [color=lightblue]; +"LeftModule(a:Rng)" -> "AbelianGroup()" + +"AbelianGroup()" [color=lightblue]; +"AbelianGroup()" -> "CABMON..." +"AbelianGroup()" -> "REPDB..." + +"SemiGroup()" [color=lightblue]; +"SemiGroup()" -> "SETCAT..." +"SemiGroup()" -> "REPSQ..." + +"REPDB..." [color="#00EE00"]; +"REPSQ..." [color="#00EE00"]; +"SETCAT..." [color=lightblue]; +"CABMON..." [color=lightblue]; +} + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{DifferentialRing}{DIFRING} +\pagepic{ps/v102differentialring.ps}{DIFRING}{0.90} + +{\bf See:}\\ +\pagefrom{Ring}{RING} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{DIFRING}{1} & +\cross{DIFRING}{0} & +\cross{DIFRING}{characteristic} & +\cross{DIFRING}{coerce} & +\cross{DIFRING}{D} \\ +\cross{DIFRING}{differentiate} & +\cross{DIFRING}{hash} & +\cross{DIFRING}{latex} & +\cross{DIFRING}{one?} & +\cross{DIFRING}{recip} \\ +\cross{DIFRING}{sample} & +\cross{DIFRING}{subtractIfCan} & +\cross{DIFRING}{zero?} & +\cross{DIFRING}{?\~{}=?} & +\cross{DIFRING}{?**?} \\ +\cross{DIFRING}{?\^{}?} & +\cross{DIFRING}{?*?} & +\cross{DIFRING}{?+?} & +\cross{DIFRING}{?-?} & +\cross{DIFRING}{-?} \\ +\cross{DIFRING}{?=?} & +\end{tabular} + +These are directly exported but not implemented: +\begin{verbatim} + differentiate : % -> % +\end{verbatim} + +These are implemented by this category: +\begin{verbatim} + D : % -> % + D : (%,NonNegativeInteger) -> % + differentiate : (%,NonNegativeInteger) -> % +\end{verbatim} + +These exports come from Ring(): +\begin{verbatim} + 1 : () -> % + 0 : () -> % + characteristic : () -> NonNegativeInteger + coerce : Integer -> % + coerce : % -> OutputForm + hash : % -> SingleInteger + latex : % -> String + one? : % -> Boolean + recip : % -> Union(%,"failed") + sample : () -> % + subtractIfCan : (%,%) -> Union(%,"failed") + zero? : % -> Boolean + ?~=? : (%,%) -> Boolean + ?**? : (%,NonNegativeInteger) -> % + ?**? : (%,PositiveInteger) -> % + ?^? : (%,NonNegativeInteger) -> % + ?^? : (%,PositiveInteger) -> % + ?*? : (%,%) -> % + ?*? : (NonNegativeInteger,%) -> % + ?*? : (Integer,%) -> % + ?*? : (PositiveInteger,%) -> % + ?+? : (%,%) -> % + ?-? : (%,%) -> % + -? : % -> % + ?=? : (%,%) -> Boolean +\end{verbatim} + +<>= +)abbrev category DIFRING DifferentialRing +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ An ordinary differential ring, that is, a ring with an operation +++ \spadfun{differentiate}. +++ +++ Axioms: +++ \spad{differentiate(x+y) = differentiate(x)+differentiate(y)} +++ \spad{differentiate(x*y) = x*differentiate(y) + differentiate(x)*y} + +DifferentialRing(): Category == Ring with + differentiate: % -> % + ++ differentiate(x) returns the derivative of x. + ++ This function is a simple differential operator + ++ where no variable needs to be specified. + D: % -> % + ++ D(x) returns the derivative of x. + ++ This function is a simple differential operator + ++ where no variable needs to be specified. + differentiate: (%, NonNegativeInteger) -> % + ++ differentiate(x, n) returns the n-th derivative of x. + D: (%, NonNegativeInteger) -> % + ++ D(x, n) returns the n-th derivative of x. + add + D r == differentiate r + differentiate(r, n) == + for i in 1..n repeat r := differentiate r + r + D(r,n) == differentiate(r,n) + +@ +<>= +"DIFRING" + [color=lightblue,href="bookvol10.2.pdf#nameddest=DIFRING"]; +"DIFRING" -> "RING" + +@ +<>= +"DifferentialRing()" + [color=lightblue,href="bookvol10.2.pdf#nameddest=DIFRING"]; +"DifferentialRing()" -> "Ring()" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"DifferentialRing()" [color=lightblue]; +"DifferentialRing()" -> "Ring()" + +"Ring()" [color=lightblue]; +"Ring()" -> "Rng()" +"Ring()" -> "Monoid()" +"Ring()" -> "LeftModule(a:Ring)" + +"Rng()" [color=lightblue]; +"Rng()" -> "AbelianGroup()" +"Rng()" -> "SemiGroup()" + +"Monoid()" [color=lightblue]; +"Monoid()" -> "SemiGroup()" + +"LeftModule(a:Ring)" [color=seagreen]; +"LeftModule(a:Ring)" -> "LeftModule(a:Rng)" + +"LeftModule(a:Rng)" [color=lightblue]; +"LeftModule(a:Rng)" -> "AbelianGroup()" + +"AbelianGroup()" [color=lightblue]; +"AbelianGroup()" -> "CABMON..." +"AbelianGroup()" -> "REPDB..." + +"SemiGroup()" [color=lightblue]; +"SemiGroup()" -> "SETCAT..." +"SemiGroup()" -> "REPSQ..." + +"REPDB..." [color="#00EE00"]; +"REPSQ..." [color="#00EE00"]; +"SETCAT..." [color=lightblue]; +"CABMON..." [color=lightblue]; +} + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{EntireRing}{ENTIRER} +\pagepic{ps/v102EntireRing.ps}{ENTIRER}{0.65} + +{\bf See:}\\ +\pageto{DivisionRing}{DIVRING} +\pageto{IntegralDomain}{INTDOM} +\pagefrom{BiModule}{BMODULE} +\pagefrom{Ring}{RING} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{ENTIRER}{1} & +\cross{ENTIRER}{0} & +\cross{ENTIRER}{characteristic} & +\cross{ENTIRER}{coerce} & +\cross{ENTIRER}{hash} \\ +\cross{ENTIRER}{latex} & +\cross{ENTIRER}{one?} & +\cross{ENTIRER}{recip} & +\cross{ENTIRER}{sample} & +\cross{ENTIRER}{subtractIfCan} \\ +\cross{ENTIRER}{zero?} & +\cross{ENTIRER}{?\^{}?} & +\cross{ENTIRER}{?\~{}=?} & +\cross{ENTIRER}{?*?} & +\cross{ENTIRER}{?**?} \\ +\cross{ENTIRER}{?*?} & +\cross{ENTIRER}{?+?} & +\cross{ENTIRER}{?-?} & +\cross{ENTIRER}{-?} & +\cross{ENTIRER}{?=?} \\ +\end{tabular} + +These exports come from Ring(): +\begin{verbatim} + 0 : () -> % + 1 : () -> % + characteristic : () -> NonNegativeInteger + coerce : Integer -> % + coerce : % -> OutputForm + hash : % -> SingleInteger + latex : % -> String + one? : % -> Boolean + recip : % -> Union(%,"failed") + sample : () -> % + subtractIfCan : (%,%) -> Union(%,"failed") + zero? : % -> Boolean + ?+? : (%,%) -> % + ?=? : (%,%) -> Boolean + ?~=? : (%,%) -> Boolean + ?*? : (%,%) -> % + ?*? : (Integer,%) -> % + ?*? : (PositiveInteger,%) -> % + ?*? : (NonNegativeInteger,%) -> % + ?-? : (%,%) -> % + -? : % -> % + ?^? : (%,PositiveInteger) -> % + ?^? : (%,NonNegativeInteger) -> % + ?**? : (%,NonNegativeInteger) -> % + ?**? : (%,PositiveInteger) -> % +\end{verbatim} + +TPDHERE: Note that none of the exports of BiModule(a:Ring,b:Ring) +are needed. Perhaps this can be eliminated. + +<>= +)abbrev category ENTIRER EntireRing +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ Entire Rings (non-commutative Integral Domains), i.e. a ring +++ not necessarily commutative which has no zero divisors. +++ +++ Axioms: +++ \spad{ab=0 => a=0 or b=0} -- known as noZeroDivisors +++ \spad{not(1=0)} +--EntireRing():Category == Join(Ring,BiModule(%:Ring,%:Ring)) with +EntireRing():Category == Join(Ring,BiModule(%,%)) with + noZeroDivisors ++ if a product is zero then one of the factors + ++ must be zero. + +@ +<>= +"ENTIRER" + [color=lightblue,href="bookvol10.2.pdf#nameddest=ENTIRER"]; +"ENTIRER" -> "RING" +"ENTIRER" -> "BMODULE" + +@ +<>= +"EntireRing()" + [color=lightblue,href="bookvol10.2.pdf#nameddest=ENTIRER"]; +"EntireRing()" -> "Ring()" +"EntireRing()" -> "BiModule(a:Ring,b:Ring)" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"EntireRing()" [color=lightblue]; +"EntireRing()" -> "Ring()" +"EntireRing()" -> "BiModule(a:Ring,b:Ring)" + +"Ring()" [color=lightblue]; +"Ring()" -> "Rng()" +"Ring()" -> "Monoid()" +"Ring()" -> "LeftModule(a:Ring)" + +"Rng()" [color=lightblue]; +"Rng()" -> "ABELGRP..." +"Rng()" -> "SemiGroup()" + +"Monoid()" [color=lightblue]; +"Monoid()" -> "SemiGroup()" + +"BiModule(a:Ring,b:Ring)" [color=lightblue]; +"BiModule(a:Ring,b:Ring)" -> "LeftModule(a:Ring)" +"BiModule(a:Ring,b:Ring)" -> "RightModule(a:Ring)" + +"RightModule(a:Ring)" [color=seagreen]; +"RightModule(a:Ring)" -> "RightModule(a:Rng)" + +"RightModule(a:Rng)" [color=lightblue]; +"RightModule(a:Rng)" -> "ABELGRP..." + +"LeftModule(a:Ring)" [color=seagreen]; +"LeftModule(a:Ring)" -> "LeftModule(a:Rng)" + +"LeftModule(a:Rng)" [color=lightblue]; +"LeftModule(a:Rng)" -> "ABELGRP..." + +"SemiGroup()" [color=lightblue]; +"SemiGroup()" -> "SETCAT..." +"SemiGroup()" -> "REPSQ..." + +"REPSQ..." [color="#00EE00"]; +"SETCAT..." [color=lightblue]; +"ABELGRP..." [color=lightblue]; +} + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{LinearlyExplicitRingOver}{LINEXP} +\pagepic{ps/v102linearlyexplicitringover.ps}{LINEXP}{0.90} + +{\bf See:}\\ +\pageto{FullyLinearlyExplicitRingOver}{FLINEXP} +\pagefrom{Ring}{RING} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{LINEXP}{0} & +\cross{LINEXP}{1} & +\cross{LINEXP}{characteristic} & +\cross{LINEXP}{coerce} & +\cross{LINEXP}{hash} \\ +\cross{LINEXP}{latex} & +\cross{LINEXP}{one?} & +\cross{LINEXP}{recip} & +\cross{LINEXP}{reducedSystem} & +\cross{LINEXP}{subtractIfCan} \\ +\cross{LINEXP}{sample} & +\cross{LINEXP}{zero?} & +\cross{LINEXP}{?*?} & +\cross{LINEXP}{?**?} & +\cross{LINEXP}{?+?} \\ +\cross{LINEXP}{?-?} & +\cross{LINEXP}{-?} & +\cross{LINEXP}{?=?} & +\cross{LINEXP}{?\^{}?} & +\cross{LINEXP}{?\~{}=?} \\ +\end{tabular} + +These are directly exported but not implemented: +\begin{verbatim} + reducedSystem : (Matrix %,Vector %) -> + Record(mat: Matrix R,vec: Vector R) + reducedSystem : Matrix % -> Matrix R +\end{verbatim} + +These exports come from Ring(): +\begin{verbatim} + 0 : () -> % + 1 : () -> % + characteristic : () -> NonNegativeInteger + coerce : Integer -> % + coerce : % -> OutputForm + hash : % -> SingleInteger + latex : % -> String + one? : % -> Boolean + recip : % -> Union(%,"failed") + sample : () -> % + subtractIfCan : (%,%) -> Union(%,"failed") + zero? : % -> Boolean + ?+? : (%,%) -> % + ?=? : (%,%) -> Boolean + ?~=? : (%,%) -> Boolean + ?*? : (NonNegativeInteger,%) -> % + ?*? : (PositiveInteger,%) -> % + ?*? : (Integer,%) -> % + ?*? : (%,%) -> % + ?-? : (%,%) -> % + -? : % -> % + ?**? : (%,PositiveInteger) -> % + ?**? : (%,NonNegativeInteger) -> % + ?^? : (%,PositiveInteger) -> % + ?^? : (%,NonNegativeInteger) -> % +\end{verbatim} + +<>= +)abbrev category LINEXP LinearlyExplicitRingOver +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ An extension ring with an explicit linear dependence test. +LinearlyExplicitRingOver(R:Ring): Category == Ring with + reducedSystem: Matrix % -> Matrix R + ++ reducedSystem(A) returns a matrix B such that \spad{A x = 0} + ++ and \spad{B x = 0} have the same solutions in R. + reducedSystem: (Matrix %,Vector %) -> Record(mat:Matrix R,vec:Vector R) + ++ reducedSystem(A, v) returns a matrix B and a vector w such that + ++ \spad{A x = v} and \spad{B x = w} have the same solutions in R. + +@ +<>= +"LINEXP" + [color=lightblue,href="bookvol10.2.pdf#nameddest=LINEXP"]; +"LINEXP" -> "RING" + +@ +<>= +"LinearlyExplicitRingOver(a:Ring)" + [color=lightblue,href="bookvol10.2.pdf#nameddest=LINEXP"]; +"LinearlyExplicitRingOver(a:Ring)" -> "Ring()" + +"LinearlyExplicitRingOver(Integer)" + [color=seagreen,href="bookvol10.2.pdf#nameddest=LINEXP"]; +"LinearlyExplicitRingOver(Integer)" -> "LinearlyExplicitRingOver(a:Ring)" + +"LinearlyExplicitRingOver(Fraction(Integer))" + [color=seagreen,href="bookvol10.2.pdf#nameddest=LINEXP"]; +"LinearlyExplicitRingOver(Fraction(Integer))" -> + "LinearlyExplicitRingOver(a:Ring)" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"LinearlyExplicitRingOver(a:Ring)" [color=lightblue]; +"LinearlyExplicitRingOver(a:Ring)" -> "Ring()" + +"Ring()" [color=lightblue]; +"Ring()" -> "Rng()" +"Ring()" -> "Monoid()" +"Ring()" -> "LeftModule(a:Ring)" + +"Rng()" [color=lightblue]; +"Rng()" -> "AbelianGroup()" +"Rng()" -> "SemiGroup()" + +"Monoid()" [color=lightblue]; +"Monoid()" -> "SemiGroup()" + +"LeftModule(a:Ring)" [color=seagreen]; +"LeftModule(a:Ring)" -> "LeftModule(a:Rng)" + +"LeftModule(a:Rng)" [color=lightblue]; +"LeftModule(a:Rng)" -> "AbelianGroup()" + +"AbelianGroup()" [color=lightblue]; +"AbelianGroup()" -> "CABMON..." +"AbelianGroup()" -> "REPDB..." + +"SemiGroup()" [color=lightblue]; +"SemiGroup()" -> "SETCAT..." +"SemiGroup()" -> "REPSQ..." + +"REPDB..." [color="#00EE00"]; +"REPSQ..." [color="#00EE00"]; +"SETCAT..." [color=lightblue]; +"CABMON..." [color=lightblue]; +} + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{OrderedRing}{ORDRING} \pagepic{ps/v102orderedring.ps}{ORDRING}{0.65} {\bf See:}\\ +\pageto{OrderedIntegralDomain}{OINTDOM} \pagefrom{Monoid}{MONOID} \pagefrom{OrderedAbelianGroup}{OAGROUP} \pagefrom{Ring}{RING} @@ -12460,69 +13980,2944 @@ digraph pic { @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\chapter{Category Layers} -\section{category BTAGG BitAggregate} -<>= -)abbrev category BTAGG BitAggregate -++ Author: Michael Monagan; revised by Manuel Bronstein and Richard Jenks -++ Date Created: August 87 through August 88 -++ Date Last Updated: April 1991 -++ Basic Operations: +\pagehead{PartialDifferentialRing}{PDRING} +\pagepic{ps/v102partialdifferentialring.ps}{PDRING}{1.00} + +{\bf See:}\\ +\pageto{DifferentialExtension}{DIFEXT} +\pagefrom{Ring}{RING} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{PDRING}{1} & +\cross{PDRING}{0} & +\cross{PDRING}{characteristic} & +\cross{PDRING}{coerce} & +\cross{PDRING}{D} \\ +\cross{PDRING}{differentiate} & +\cross{PDRING}{hash} & +\cross{PDRING}{latex} & +\cross{PDRING}{one?} & +\cross{PDRING}{recip} \\ +\cross{PDRING}{sample} & +\cross{PDRING}{subtractIfCan} & +\cross{PDRING}{zero?} & +\cross{PDRING}{?\^{}?} & +\cross{PDRING}{?*?} \\ +\cross{PDRING}{?\~{}=?} & +\cross{PDRING}{?**?} & +\cross{PDRING}{?+?} & +\cross{PDRING}{?-?} & +\cross{PDRING}{-?} \\ +\cross{PDRING}{?=?} & +\end{tabular} + +These are directly exported but not implemented: +\begin{verbatim} + differentiate : (%,S) -> % +\end{verbatim} + +These are implemented by this category: +\begin{verbatim} + differentiate : (%,List S) -> % + differentiate : (%,S,NonNegativeInteger) -> % + differentiate : (%,List S,List NonNegativeInteger) -> % + D : (%,S) -> % + D : (%,List S) -> % + D : (%,S,NonNegativeInteger) -> % + D : (%,List S,List NonNegativeInteger) -> % +\end{verbatim} + +These exports come from Ring(): +\begin{verbatim} + characteristic : () -> NonNegativeInteger + 0 : () -> % + 1 : () -> % + coerce : Integer -> % + coerce : % -> OutputForm + hash : % -> SingleInteger + latex : % -> String + one? : % -> Boolean + recip : % -> Union(%,"failed") + sample : () -> % + subtractIfCan : (%,%) -> Union(%,"failed") + zero? : % -> Boolean + ?+? : (%,%) -> % + ?=? : (%,%) -> Boolean + ?~=? : (%,%) -> Boolean + ?*? : (%,%) -> % + ?*? : (Integer,%) -> % + ?*? : (PositiveInteger,%) -> % + ?*? : (NonNegativeInteger,%) -> % + ?-? : (%,%) -> % + -? : % -> % + ?^? : (%,PositiveInteger) -> % + ?^? : (%,NonNegativeInteger) -> % + ?**? : (%,NonNegativeInteger) -> % + ?**? : (%,PositiveInteger) -> % +\end{verbatim} + +These exports come from Evalable(a:Type): +\begin{verbatim} +\end{verbatim} + +These exports come from SetCategory: +\begin{verbatim} +\end{verbatim} + +<>= +)abbrev category PDRING PartialDifferentialRing +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: ++ Related Constructors: ++ Also See: ++ AMS Classifications: ++ Keywords: ++ References: ++ Description: -++ The bit aggregate category models aggregates representing large -++ quantities of Boolean data. -BitAggregate(): Category == - Join(OrderedSet, Logic, OneDimensionalArrayAggregate Boolean) with - "not": % -> % - ++ not(b) returns the logical {\em not} of bit aggregate - ++ \axiom{b}. - "^" : % -> % - ++ ^ b returns the logical {\em not} of bit aggregate - ++ \axiom{b}. - nand : (%, %) -> % - ++ nand(a,b) returns the logical {\em nand} of bit aggregates - ++ \axiom{a} and \axiom{b}. - nor : (%, %) -> % - ++ nor(a,b) returns the logical {\em nor} of bit aggregates - ++ \axiom{a} and \axiom{b}. - _and : (%, %) -> % - ++ a and b returns the logical {\em and} of bit aggregates - ++ \axiom{a} and \axiom{b}. - _or : (%, %) -> % - ++ a or b returns the logical {\em or} of bit aggregates - ++ \axiom{a} and \axiom{b}. - xor : (%, %) -> % - ++ xor(a,b) returns the logical {\em exclusive-or} of bit aggregates - ++ \axiom{a} and \axiom{b}. +++ A partial differential ring with differentiations indexed by a +++ parameter type S. +++ +++ Axioms: +++ \spad{differentiate(x+y,e) = differentiate(x,e)+differentiate(y,e)} +++ \spad{differentiate(x*y,e) = x*differentiate(y,e)+differentiate(x,e)*y} + +PartialDifferentialRing(S:SetCategory): Category == Ring with + differentiate: (%, S) -> % + ++ differentiate(x,v) computes the partial derivative of x + ++ with respect to v. + differentiate: (%, List S) -> % + ++ differentiate(x,[s1,...sn]) computes successive partial + ++ derivatives, + ++ i.e. \spad{differentiate(...differentiate(x, s1)..., sn)}. + differentiate: (%, S, NonNegativeInteger) -> % + ++ differentiate(x, s, n) computes multiple partial derivatives, i.e. + ++ n-th derivative of x with respect to s. + differentiate: (%, List S, List NonNegativeInteger) -> % + ++ differentiate(x, [s1,...,sn], [n1,...,nn]) computes + ++ multiple partial derivatives, i.e. + D: (%, S) -> % + ++ D(x,v) computes the partial derivative of x + ++ with respect to v. + D: (%, List S) -> % + ++ D(x,[s1,...sn]) computes successive partial derivatives, + ++ i.e. \spad{D(...D(x, s1)..., sn)}. + D: (%, S, NonNegativeInteger) -> % + ++ D(x, s, n) computes multiple partial derivatives, i.e. + ++ n-th derivative of x with respect to s. + D: (%, List S, List NonNegativeInteger) -> % + ++ D(x, [s1,...,sn], [n1,...,nn]) computes + ++ multiple partial derivatives, i.e. + ++ \spad{D(...D(x, s1, n1)..., sn, nn)}. + add + differentiate(r:%, l:List S) == + for s in l repeat r := differentiate(r, s) + r + + differentiate(r:%, s:S, n:NonNegativeInteger) == + for i in 1..n repeat r := differentiate(r, s) + r + differentiate(r:%, ls:List S, ln:List NonNegativeInteger) == + for s in ls for n in ln repeat r := differentiate(r, s, n) + r + + D(r:%, v:S) == differentiate(r,v) + D(r:%, lv:List S) == differentiate(r,lv) + D(r:%, v:S, n:NonNegativeInteger) == differentiate(r,v,n) + D(r:%, lv:List S, ln:List NonNegativeInteger) == differentiate(r, lv, ln) + +@ +<>= +"PDRING" + [color=lightblue,href="bookvol10.2.pdf#nameddest=PDRING"]; +"PDRING" -> "RING" + +@ +<>= +"PartialDifferentialRing(a:SetCategory)" + [color=lightblue,href="bookvol10.2.pdf#nameddest=PDRING"]; +"PartialDifferentialRing(a:SetCategory)" -> "Ring()" + +"PartialDifferentialRing(a:OrderedSet)" + [color=seagreen,href="bookvol10.2.pdf#nameddest=PDRING"]; +"PartialDifferentialRing(a:OrderedSet)" -> + "PartialDifferentialRing(a:SetCategory)" + +"PartialDifferentialRing(Symbol)" + [color=seagreen,href="bookvol10.2.pdf#nameddest=PDRING"]; +"PartialDifferentialRing(Symbol)" -> + "PartialDifferentialRing(a:SetCategory)" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"PartialDifferentialRing(a:SetCategory)" [color=lightblue]; +"PartialDifferentialRing(a:SetCategory)" -> "Ring()" + +"Ring()" [color=lightblue]; +"Ring()" -> "Rng()" +"Ring()" -> "Monoid()" +"Ring()" -> "LeftModule(a:Ring)" + +"Rng()" [color=lightblue]; +"Rng()" -> "AbelianGroup()" +"Rng()" -> "SemiGroup()" + +"Monoid()" [color=lightblue]; +"Monoid()" -> "SemiGroup()" + +"LeftModule(a:Ring)" [color=seagreen]; +"LeftModule(a:Ring)" -> "LeftModule(a:Rng)" + +"LeftModule(a:Rng)" [color=lightblue]; +"LeftModule(a:Rng)" -> "AbelianGroup()" + +"AbelianGroup()" [color=lightblue]; +"AbelianGroup()" -> "CABMON..." +"AbelianGroup()" -> "REPDB..." + +"SemiGroup()" [color=lightblue]; +"SemiGroup()" -> "SETCAT..." +"SemiGroup()" -> "REPSQ..." + +"REPDB..." [color="#00EE00"]; +"REPSQ..." [color="#00EE00"]; +"SETCAT..." [color=lightblue]; +"CABMON..." [color=lightblue]; +} + +@ +\chapter{Category Layer 10} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{DifferentialExtension}{DIFEXT} +\pagepic{ps/v102differentialextension.ps}{DIFEXT}{0.65} + +{\bf See:}\\ +\pagefrom{PartialDifferentialRing}{PDRING} +\pagefrom{Ring}{RING} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{DIFEXT}{1} & +\cross{DIFEXT}{0} & +\cross{DIFEXT}{characteristic} & +\cross{DIFEXT}{coerce} & +\cross{DIFEXT}{D} \\ +\cross{DIFEXT}{differentiate} & +\cross{DIFEXT}{hash} & +\cross{DIFEXT}{latex} & +\cross{DIFEXT}{one?} & +\cross{DIFEXT}{recip} \\ +\cross{DIFEXT}{sample} & +\cross{DIFEXT}{subtractIfCan} & +\cross{DIFEXT}{zero?} & +\cross{DIFEXT}{?*?} & +\cross{DIFEXT}{?\~{}=?} \\ +\cross{DIFEXT}{?**?} & +\cross{DIFEXT}{?+?} & +\cross{DIFEXT}{?-?} & +\cross{DIFEXT}{-?} & +\cross{DIFEXT}{?=?} \\ +\cross{DIFEXT}{?\^{}?} & +\end{tabular} + +These are directly exported but not implemented: +\begin{verbatim} + differentiate : (%,(R -> R)) -> % +\end{verbatim} + +These are implemented by this category: +\begin{verbatim} + D : (%,(R -> R)) -> % + D : (%,(R -> R),NonNegativeInteger) -> % + differentiate : % -> % if R has DIFRING + differentiate : (%,(R -> R),NonNegativeInteger) -> % + differentiate : (%,Symbol) -> % if R has PDRING SYMBOL +\end{verbatim} + +These exports come from Ring(): +\begin{verbatim} + 0 : () -> % + 1 : () -> % + characteristic : () -> NonNegativeInteger + coerce : Integer -> % + coerce : % -> OutputForm + hash : % -> SingleInteger + latex : % -> String + one? : % -> Boolean + recip : % -> Union(%,"failed") + sample : () -> % + subtractIfCan : (%,%) -> Union(%,"failed") + zero? : % -> Boolean + ?+? : (%,%) -> % + ?=? : (%,%) -> Boolean + ?~=? : (%,%) -> Boolean + ?*? : (%,%) -> % + ?*? : (Integer,%) -> % + ?*? : (PositiveInteger,%) -> % + ?*? : (NonNegativeInteger,%) -> % + ?-? : (%,%) -> % + -? : % -> % + ?**? : (%,NonNegativeInteger) -> % + ?**? : (%,PositiveInteger) -> % + ?^? : (%,NonNegativeInteger) -> % + ?^? : (%,PositiveInteger) -> % +\end{verbatim} + +These exports come from DifferentialRing(): +\begin{verbatim} + D : % -> % if R has DIFRING + D : (%,NonNegativeInteger) -> % if R has DIFRING + differentiate : (%,NonNegativeInteger) -> % + if R has DIFRING +\end{verbatim} + +These exports come from PartialDifferentialRing(Symbol): +\begin{verbatim} + differentiate : (%,List Symbol) -> % + if R has PDRING SYMBOL + differentiate : (%,Symbol,NonNegativeInteger) -> % + if R has PDRING SYMBOL + differentiate : (%,List Symbol,List NonNegativeInteger) -> % + if R has PDRING SYMBOL + D : (%,Symbol) -> % if R has PDRING SYMBOL + D : (%,List Symbol) -> % if R has PDRING SYMBOL + D : (%,Symbol,NonNegativeInteger) -> % + if R has PDRING SYMBOL + D : (%,List Symbol,List NonNegativeInteger) -> % + if R has PDRING SYMBOL +\end{verbatim} + +<>= +)abbrev category DIFEXT DifferentialExtension +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ Differential extensions of a ring R. +++ Given a differentiation on R, extend it to a differentiation on %. + +DifferentialExtension(R:Ring): Category == Ring with + differentiate: (%, R -> R) -> % + ++ differentiate(x, deriv) differentiates x extending + ++ the derivation deriv on R. + differentiate: (%, R -> R, NonNegativeInteger) -> % + ++ differentiate(x, deriv, n) differentiate x n times + ++ using a derivation which extends deriv on R. + D: (%, R -> R) -> % + ++ D(x, deriv) differentiates x extending + ++ the derivation deriv on R. + D: (%, R -> R, NonNegativeInteger) -> % + ++ D(x, deriv, n) differentiate x n times + ++ using a derivation which extends deriv on R. + if R has DifferentialRing then DifferentialRing + if R has PartialDifferentialRing(Symbol) then + PartialDifferentialRing(Symbol) + add + differentiate(x:%, derivation: R -> R, n:NonNegativeInteger):% == + for i in 1..n repeat x := differentiate(x, derivation) + x + D(x:%, derivation: R -> R) == differentiate(x, derivation) + D(x:%, derivation: R -> R, n:NonNegativeInteger) == + differentiate(x, derivation, n) + + if R has DifferentialRing then + differentiate x == differentiate(x, differentiate$R) + + if R has PartialDifferentialRing Symbol then + differentiate(x:%, v:Symbol):% == + differentiate(x, differentiate(#1, v)$R) + +@ +<>= +"DIFEXT" + [color=lightblue,href="bookvol10.2.pdf#nameddest=DIFEXT"]; +"DIFEXT" -> "RING" +"DIFEXT" -> "DIFRING" +"DIFEXT" -> "PDRING" + +@ +<>= +"DifferentialExtension(a:Ring)" + [color=lightblue,href="bookvol10.2.pdf#nameddest=DIFEXT"]; +"DifferentialExtension(a:Ring)" -> "Ring()" +"DifferentialExtension(a:Ring)" -> "DifferentialRing()" +"DifferentialExtension(a:Ring)" -> "PartialDifferentialRing(Symbol)" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"DifferentialExtension(a:Ring)" [color=lightblue]; +"DifferentialExtension(a:Ring)" -> "Ring()" +"DifferentialExtension(a:Ring)" -> "DifferentialRing()" +"DifferentialExtension(a:Ring)" -> "PartialDifferentialRing(Symbol)" + +"PartialDifferentialRing(Symbol)" + [color=seagreen,href="bookvol10.2.pdf#nameddest=PDRING"]; +"PartialDifferentialRing(Symbol)" -> + "PartialDifferentialRing(a:SetCategory)" + +"PartialDifferentialRing(a:SetCategory)" + [color=lightblue,href="bookvol10.2.pdf#nameddest=PDRING"]; +"PartialDifferentialRing(a:SetCategory)" -> "Ring()" + +"DifferentialRing()" [color=lightblue]; +"DifferentialRing()" -> "Ring()" + +"Ring()" [color=lightblue]; +"Ring()" -> "Rng()" +"Ring()" -> "Monoid()" +"Ring()" -> "LeftModule(a:Ring)" + +"Rng()" [color=lightblue]; +"Rng()" -> "AbelianGroup()" +"Rng()" -> "SGROUP..." + +"Monoid()" [color=lightblue]; +"Monoid()" -> "SGROUP..." + +"LeftModule(a:Ring)" [color=seagreen]; +"LeftModule(a:Ring)" -> "LMODULE..." + +"SGROUP..." [color=lightblue]; +"LMODULE..." [color=lightblue]; +} + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{FullyLinearlyExplicitRingOver}{FLINEXP} +\pagepic{ps/v102fullylinearlyexplicitringover.ps}{FLINEXP}{1.00} + +{\bf See:}\\ +\pagefrom{LinearlyExplicitRingOver}{LINEXP} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{FLINEXP}{1} & +\cross{FLINEXP}{0} & +\cross{FLINEXP}{characteristic} & +\cross{FLINEXP}{coerce} & +\cross{FLINEXP}{hash} \\ +\cross{FLINEXP}{latex} & +\cross{FLINEXP}{one?} & +\cross{FLINEXP}{recip} & +\cross{FLINEXP}{reducedSystem} & +\cross{FLINEXP}{sample} \\ +\cross{FLINEXP}{subtractIfCan} & +\cross{FLINEXP}{zero?} & +\cross{FLINEXP}{?*?} & +\cross{FLINEXP}{?**?} & +\cross{FLINEXP}{?+?} \\ +\cross{FLINEXP}{?-?} & +\cross{FLINEXP}{-?} & +\cross{FLINEXP}{?=?} & +\cross{FLINEXP}{?\^{}?} & +\cross{FLINEXP}{?\~{}=?} \\ +\end{tabular} + +These are implemented by this category: +\begin{verbatim} + reducedSystem : Matrix % -> + Matrix Integer if R has LINEXP INT + reducedSystem : (Matrix %,Vector %) -> + Record(mat: Matrix Integer,vec: Vector Integer) + if R has LINEXP INT +\end{verbatim} + +These exports come from LinearlyExplicitRingOver(a:Ring): +\begin{verbatim} + 0 : () -> % + 1 : () -> % + characteristic : () -> NonNegativeInteger + coerce : Integer -> % + coerce : % -> OutputForm + hash : % -> SingleInteger + latex : % -> String + one? : % -> Boolean + recip : % -> Union(%,"failed") + reducedSystem : (Matrix %,Vector %) -> + Record(mat: Matrix R,vec: Vector R) + reducedSystem : Matrix % -> Matrix R + sample : () -> % + subtractIfCan : (%,%) -> Union(%,"failed") + zero? : % -> Boolean + ?+? : (%,%) -> % + ?=? : (%,%) -> Boolean + ?~=? : (%,%) -> Boolean + ?*? : (%,%) -> % + ?*? : (Integer,%) -> % + ?*? : (PositiveInteger,%) -> % + ?*? : (NonNegativeInteger,%) -> % + ?-? : (%,%) -> % + -? : % -> % + ?**? : (%,PositiveInteger) -> % + ?**? : (%,NonNegativeInteger) -> % + ?^? : (%,PositiveInteger) -> % + ?^? : (%,NonNegativeInteger) -> % +\end{verbatim} + +<>= +)abbrev category FLINEXP FullyLinearlyExplicitRingOver +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ S is \spadtype{FullyLinearlyExplicitRingOver R} means that S is a +++ \spadtype{LinearlyExplicitRingOver R} and, in addition, if R is a +++ \spadtype{LinearlyExplicitRingOver Integer}, then so is S +FullyLinearlyExplicitRingOver(R:Ring):Category == + LinearlyExplicitRingOver R with + if (R has LinearlyExplicitRingOver Integer) then + LinearlyExplicitRingOver Integer add - not v == map(_not, v) - _^ v == map(_not, v) - _~(v) == map(_~, v) - _/_\(v, u) == map(_/_\, v, u) - _\_/(v, u) == map(_\_/, v, u) - nand(v, u) == map(nand, v, u) - nor(v, u) == map(nor, v, u) + if not(R is Integer) then + if (R has LinearlyExplicitRingOver Integer) then + reducedSystem(m:Matrix %):Matrix(Integer) == + reducedSystem(reducedSystem(m)@Matrix(R)) + + reducedSystem(m:Matrix %, v:Vector %): + Record(mat:Matrix(Integer), vec:Vector(Integer)) == + rec := reducedSystem(m, v)@Record(mat:Matrix R, vec:Vector R) + reducedSystem(rec.mat, rec.vec) @ -<>= -"BTAGG" [color=lightblue,href="bookvol10.2.pdf#nameddest=BTAGG"]; -"BTAGG" -> "ORDSET" -"BTAGG" -> "LOGIC" -"BTAGG" -> "A1AGG" +<>= +"FLINEXP" + [color=lightblue,href="bookvol10.2.pdf#nameddest=FLINEXP"]; +"FLINEXP" -> "LINEXP" @ -<>= -"BitAggregate()" - [color=lightblue,href="bookvol10.2.pdf#nameddest=BTAGG"]; -"BitAggregate()" -> "OrderedSet()" -"BitAggregate()" -> "Logic()" -"BitAggregate()" -> "OneDimensionalArrayAggregate(Boolean)" +<>= +"FullyLinearlyExplicitRingOver(a:Ring)" + [color=lightblue,href="bookvol10.2.pdf#nameddest=FLINEXP"]; +"FullyLinearlyExplicitRingOver(a:Ring)" -> + "LinearlyExplicitRingOver(a:Ring)" + +"FullyLinearlyExplicitRingOver(a:CommutativeRing)" + [color=seagreen,href="bookvol10.2.pdf#nameddest=FLINEXP"]; +"FullyLinearlyExplicitRingOver(a:CommutativeRing)" -> + "FullyLinearlyExplicitRingOver(a:Ring)" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"FullyLinearlyExplicitRingOver(a:Ring)" [color=lightblue]; +"FullyLinearlyExplicitRingOver(a:Ring)" -> + "LinearlyExplicitRingOver(a:Ring)" + +"LinearlyExplicitRingOver(a:Ring)" [color=lightblue]; +"LinearlyExplicitRingOver(a:Ring)" -> "Ring()" + +"Ring()" [color=lightblue]; +"Ring()" -> "Rng()" +"Ring()" -> "Monoid()" +"Ring()" -> "LeftModule(a:Ring)" + +"Rng()" [color=lightblue]; +"Rng()" -> "AbelianGroup()" +"Rng()" -> "SemiGroup()" + +"Monoid()" [color=lightblue]; +"Monoid()" -> "SemiGroup()" + +"LeftModule(a:Ring)" [color=seagreen]; +"LeftModule(a:Ring)" -> "LeftModule(a:Rng)" + +"LeftModule(a:Rng)" [color=lightblue]; +"LeftModule(a:Rng)" -> "AbelianGroup()" + +"AbelianGroup()" [color=lightblue]; +"AbelianGroup()" -> "CABMON..." +"AbelianGroup()" -> "REPDB..." + +"SemiGroup()" [color=lightblue]; +"SemiGroup()" -> "SETCAT..." +"SemiGroup()" -> "REPSQ..." + +"REPDB..." [color="#00EE00"]; +"REPSQ..." [color="#00EE00"]; +"SETCAT..." [color=lightblue]; +"CABMON..." [color=lightblue]; +} + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{Module}{MODULE} +\pagepic{ps/v102module.ps}{MODULE}{1.00} + +{\bf See:}\\ +\pageto{Algebra}{ALGEBRA} +\pageto{VectorSpace}{VSPACE} +\pagefrom{BiModule}{BMODULE} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{MODULE}{0} & +\cross{MODULE}{coerce} & +\cross{MODULE}{hash} & +\cross{MODULE}{latex} & +\cross{MODULE}{sample} \\ +\cross{MODULE}{subtractIfCan} & +\cross{MODULE}{zero?} & +\cross{MODULE}{?~=?} & +\cross{MODULE}{?*?} & +\cross{MODULE}{?+?} \\ +\cross{MODULE}{?-?} & +\cross{MODULE}{-?} & +\cross{MODULE}{?=?} && +\end{tabular} + +These are implemented by this category: +\begin{verbatim} + ?*? : (%,R) -> % +\end{verbatim} + +These exports come from BiModule(a:Ring,b:Ring): +\begin{verbatim} + 0 : () -> % + coerce : % -> OutputForm + hash : % -> SingleInteger + latex : % -> String + sample : () -> % + subtractIfCan : (%,%) -> Union(%,"failed") + zero? : % -> Boolean + ?~=? : (%,%) -> Boolean + ?*? : (NonNegativeInteger,%) -> % + ?*? : (R,%) -> % + ?*? : (Integer,%) -> % + ?*? : (PositiveInteger,%) -> % + ?+? : (%,%) -> % + ?-? : (%,%) -> % + -? : % -> % + ?=? : (%,%) -> Boolean +\end{verbatim} + +<>= +)abbrev category MODULE Module +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ The category of modules over a commutative ring. +++ +++ Axioms: +++ \spad{1*x = x} +++ \spad{(a*b)*x = a*(b*x)} +++ \spad{(a+b)*x = (a*x)+(b*x)} +++ \spad{a*(x+y) = (a*x)+(a*y)} +Module(R:CommutativeRing): Category == BiModule(R,R) + add + if not(R is %) then x:%*r:R == r*x + +@ +<>= +"MODULE" + [color=lightblue,href="bookvol10.2.pdf#nameddest=MODULE"]; +"MODULE" -> "BMODULE" + +@ +<>= +"Module(a:CommutativeRing)" + [color=lightblue,href="bookvol10.2.pdf#nameddest=MODULE"]; +"Module(a:CommutativeRing)" -> + "BiModule(a:CommutativeRing,b:CommutativeRing)" + +"Module(Field)" + [color=seagreen,href="bookvol10.2.pdf#nameddest=MODULE"]; +"Module(Field)" -> "Module(a:CommutativeRing)" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"Module(a:CommutativeRing)" [color=lightblue]; +"Module(a:CommutativeRing)" -> + "BiModule(a:CommutativeRing,b:CommutativeRing)" + +"BiModule(a:CommutativeRing,b:CommutativeRing)" [color=seagreen]; +"BiModule(a:CommutativeRing,b:CommutativeRing)" -> "BiModule(a:Ring,b:Ring)" + +"BiModule(a:Ring,b:Ring)" [color=lightblue]; +"BiModule(a:Ring,b:Ring)" -> "LeftModule(a:Ring)" +"BiModule(a:Ring,b:Ring)" -> "RightModule(a:Ring)" + +"RightModule(a:Ring)" [color=seagreen]; +"RightModule(a:Ring)" -> "RightModule(a:Rng)" + +"RightModule(a:Rng)" [color=lightblue]; +"RightModule(a:Rng)" -> "ABELGRP..." + +"LeftModule(a:Ring)" [color=seagreen]; +"LeftModule(a:Ring)" -> "LeftModule(a:Rng)" + +"LeftModule(a:Rng)" [color=lightblue]; +"LeftModule(a:Rng)" -> "ABELGRP..." + +"ABELGRP..." [color=lightblue]; +} + +@ +\chapter{Category Layer 11} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{Algebra}{ALGEBRA} +\pagepic{ps/v102algebra.ps}{ALGEBRA}{0.65} + +{\bf See:}\\ +\pageto{DivisionRing}{DIVRING} +\pageto{IntegralDomain}{INTDOM} +\pagefrom{Module}{MODULE} +\pagefrom{Ring}{RING} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{ALGEBRA}{1} & +\cross{ALGEBRA}{0} & +\cross{ALGEBRA}{characteristic} & +\cross{ALGEBRA}{coerce} & +\cross{ALGEBRA}{hash} \\ +\cross{ALGEBRA}{latex} & +\cross{ALGEBRA}{one?} & +\cross{ALGEBRA}{recip} & +\cross{ALGEBRA}{sample} & +\cross{ALGEBRA}{subtractIfCan} \\ +\cross{ALGEBRA}{zero?} & +\cross{ALGEBRA}{?*?} & +\cross{ALGEBRA}{?+?} & +\cross{ALGEBRA}{?-?} & +\cross{ALGEBRA}{-?} \\ +\cross{ALGEBRA}{?=?} & +\cross{ALGEBRA}{?\~{}=?} & +\cross{ALGEBRA}{?*?} & +\cross{ALGEBRA}{?**?} & +\cross{ALGEBRA}{?\^{}?} \\ +\end{tabular} + +These are implemented by this category: +\begin{verbatim} + coerce : R -> % +\end{verbatim} + +These exports come from Ring(): +\begin{verbatim} + 0 : () -> % + 1 : () -> % + characteristic : () -> NonNegativeInteger + coerce : Integer -> % + coerce : % -> OutputForm + hash : % -> SingleInteger + latex : % -> String + one? : % -> Boolean + recip : % -> Union(%,"failed") + sample : () -> % + subtractIfCan : (%,%) -> Union(%,"failed") + zero? : % -> Boolean + ?+? : (%,%) -> % + ?=? : (%,%) -> Boolean + ?~=? : (%,%) -> Boolean + ?*? : (NonNegativeInteger,%) -> % + ?*? : (PositiveInteger,%) -> % + ?*? : (Integer,%) -> % + ?*? : (%,%) -> % + ?-? : (%,%) -> % + -? : % -> % + ?**? : (%,PositiveInteger) -> % + ?**? : (%,NonNegativeInteger) -> % + ?^? : (%,NonNegativeInteger) -> % + ?^? : (%,PositiveInteger) -> % +\end{verbatim} + +These exports come from Module(R:CommutativeRing): +\begin{verbatim} + ?*? : (R,%) -> % + ?*? : (%,R) -> % +\end{verbatim} + +<>= +)abbrev category ALGEBRA Algebra +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ The category of associative algebras (modules which are themselves rings). +++ +++ Axioms: +++ \spad{(b+c)::% = (b::%) + (c::%)} +++ \spad{(b*c)::% = (b::%) * (c::%)} +++ \spad{(1::R)::% = 1::%} +++ \spad{b*x = (b::%)*x} +++ \spad{r*(a*b) = (r*a)*b = a*(r*b)} +Algebra(R:CommutativeRing): Category == + Join(Ring, Module R) with + coerce: R -> % + ++ coerce(r) maps the ring element r to a member of the algebra. + add + coerce(x:R):% == x * 1$% + +@ +<>= +"ALGEBRA" + [color=lightblue,href="bookvol10.2.pdf#nameddest=ALGEBRA"]; +"ALGEBRA" -> "RING" +"ALGEBRA" -> "MODULE" + +@ +<>= +"Algebra(a:CommutativeRing)" + [color=lightblue,href="bookvol10.2.pdf#nameddest=ALGEBRA"]; +"Algebra(a:CommutativeRing)" -> "Ring()" +"Algebra(a:CommutativeRing)" -> "Module(a:CommutativeRing)" + +"Algebra(a:Field)" + [color=seagreen,href="bookvol10.2.pdf#nameddest=ALGEBRA"]; +"Algebra(a:Field)" -> "Algebra(a:CommutativeRing)" + +"Algebra(a:CommutativeRing)" + [color=seagreen,href="bookvol10.2.pdf#nameddest=ALGEBRA"]; +"Algebra(a:CommutativeRing)" -> "Module(a:CommutativeRing)" + +"Algebra(Fraction(Integer))" + [color=seagreen,href="bookvol10.2.pdf#nameddest=ALGEBRA"]; +"Algebra(Fraction(Integer))" -> "Algebra(a:CommutativeRing)" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"Algebra(a:CommutativeRing)" [color=lightblue]; +"Algebra(a:CommutativeRing)" -> "Ring()" +"Algebra(a:CommutativeRing)" -> "Module(a:CommutativeRing)" + +"Ring()" [color=lightblue]; +"Ring()" -> "Rng()" +"Ring()" -> "Monoid()" +"Ring()" -> "LeftModule(a:Ring)" + +"Rng()" [color=lightblue]; +"Rng()" -> "ABELGRP..." +"Rng()" -> "SemiGroup()" + +"SemiGroup()" [color=lightblue]; +"SemiGroup()" -> "SETCAT..." +"SemiGroup()" -> "REPSQ..." + +"Monoid()" [color=lightblue]; +"Monoid()" -> "SemiGroup()" + +"Module(a:CommutativeRing)" [color=lightblue]; +"Module(a:CommutativeRing)" -> + "BiModule(a:CommutativeRing,b:CommutativeRing)" + +"BiModule(a:CommutativeRing,b:CommutativeRing)" [color=seagreen]; +"BiModule(a:CommutativeRing,b:CommutativeRing)" -> "BiModule(a:Ring,b:Ring)" + +"BiModule(a:Ring,b:Ring)" [color=lightblue]; +"BiModule(a:Ring,b:Ring)" -> "LeftModule(a:Ring)" +"BiModule(a:Ring,b:Ring)" -> "RightModule(a:Ring)" + +"RightModule(a:Ring)" [color=seagreen]; +"RightModule(a:Ring)" -> "RightModule(a:Rng)" + +"RightModule(a:Rng)" [color=lightblue]; +"RightModule(a:Rng)" -> "ABELGRP..." + +"LeftModule(a:Ring)" [color=seagreen]; +"LeftModule(a:Ring)" -> "LeftModule(a:Rng)" + +"LeftModule(a:Rng)" [color=lightblue]; +"LeftModule(a:Rng)" -> "ABELGRP..." + +"ABELGRP..." [color=lightblue]; +"REPSQ..." [color="#00EE00"]; +"SETCAT..." [color=lightblue]; +} + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{VectorSpace}{VSPACE} +\pagepic{ps/v102vectorspace.ps}{VSPACE}{1.00} + +{\bf See:}\\ +\pagefrom{Module}{MODULE} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{VSPACE}{0} & +\cross{VSPACE}{coerce} & +\cross{VSPACE}{dimension} & +\cross{VSPACE}{hash} & +\cross{VSPACE}{latex} \\ +\cross{VSPACE}{sample} & +\cross{VSPACE}{subtractIfCan} & +\cross{VSPACE}{zero?} & +\cross{VSPACE}{?~=?} & +\cross{VSPACE}{?*?} \\ +\cross{VSPACE}{?+?} & +\cross{VSPACE}{?-?} & +\cross{VSPACE}{-?} & +\cross{VSPACE}{?/?} & +\cross{VSPACE}{?=?} \\ +\end{tabular} + +These are directly exported but not implemented: +\begin{verbatim} + dimension : () -> CardinalNumber +\end{verbatim} + +These are implemented by this category: +\begin{verbatim} + ?/? : (%,S) -> % +\end{verbatim} + +These exports come from Module(): +\begin{verbatim} + ?*? : (%,S) -> % + 0 : () -> % + coerce : % -> OutputForm + hash : % -> SingleInteger + latex : % -> String + sample : () -> % + subtractIfCan : (%,%) -> Union(%,"failed") + zero? : % -> Boolean + ?~=? : (%,%) -> Boolean + ?*? : (NonNegativeInteger,%) -> % + ?*? : (S,%) -> % + ?*? : (Integer,%) -> % + ?*? : (PositiveInteger,%) -> % + ?+? : (%,%) -> % + ?-? : (%,%) -> % + -? : % -> % + ?=? : (%,%) -> Boolean +\end{verbatim} + +<>= +)abbrev category VSPACE VectorSpace +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ Vector Spaces (not necessarily finite dimensional) over a field. + +VectorSpace(S:Field): Category == Module(S) with + "/" : (%, S) -> % + ++ x/y divides the vector x by the scalar y. + dimension: () -> CardinalNumber + ++ dimension() returns the dimensionality of the vector space. + add + (v:% / s:S):% == inv(s) * v + +@ +<>= +"VSPACE" + [color=lightblue,href="bookvol10.2.pdf#nameddest=VSPACE"]; +"VSPACE" -> "MODULE" + +@ +<>= +"VectorSpace(a:Field)" + [color=lightblue,href="bookvol10.2.pdf#nameddest=VSPACE"]; +"VectorSpace(a:Field)" -> "Module(Field)" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"VectorSpace(a:Field)" [color=lightblue]; +"VectorSpace(a:Field)" -> "Module(Field)" + +"Module(Field)" [color=seagreen]; +"Module(Field)" -> "Module(a:CommutativeRing)" + +"Module(a:CommutativeRing)" [color=lightblue]; +"Module(a:CommutativeRing)" -> + "BiModule(a:CommutativeRing,b:CommutativeRing)" + +"BiModule(a:CommutativeRing,b:CommutativeRing)" [color=seagreen]; +"BiModule(a:CommutativeRing,b:CommutativeRing)" -> "BiModule(a:Ring,b:Ring)" + +"BiModule(a:Ring,b:Ring)" [color=lightblue]; +"BiModule(a:Ring,b:Ring)" -> "LeftModule(a:Ring)" +"BiModule(a:Ring,b:Ring)" -> "RightModule(a:Ring)" + +"RightModule(a:Ring)" [color=seagreen]; +"RightModule(a:Ring)" -> "RightModule(a:Rng)" + +"RightModule(a:Rng)" [color=lightblue]; +"RightModule(a:Rng)" -> "ABELGRP..." + +"LeftModule(a:Ring)" [color=seagreen]; +"LeftModule(a:Ring)" -> "LeftModule(a:Rng)" + +"LeftModule(a:Rng)" [color=lightblue]; +"LeftModule(a:Rng)" -> "ABELGRP..." + +"ABELGRP..." [color=lightblue]; +} + +@ +\chapter{Category Layer 12} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{DivisionRing}{DIVRING} +\pagepic{ps/v102divisionring.ps}{DIVRING}{0.65} + +{\bf See:}\\ +\pageto{Field}{FIELD} +\pagefrom{Algebra}{ALGEBRA} +\pagefrom{EntireRing}{ENTIRER} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{DIVRING}{1} & +\cross{DIVRING}{0} & +\cross{DIVRING}{characteristic} & +\cross{DIVRING}{coerce} & +\cross{DIVRING}{hash} \\ +\cross{DIVRING}{inv} & +\cross{DIVRING}{latex} & +\cross{DIVRING}{one?} & +\cross{DIVRING}{recip} & +\cross{DIVRING}{sample} \\ +\cross{DIVRING}{subtractIfCan} & +\cross{DIVRING}{zero?} & +\cross{DIVRING}{?\^{}?} & +\cross{DIVRING}{?\~{}=?} & +\cross{DIVRING}{?**?} \\ +\cross{DIVRING}{?*?} & +\cross{DIVRING}{?+?} & +\cross{DIVRING}{?-?} & +\cross{DIVRING}{-?} & +\cross{DIVRING}{?=?} \\ +\end{tabular} + +These are directly exported but not implemented: +\begin{verbatim} + inv : % -> % +\end{verbatim} + +These are implemented by this category: +\begin{verbatim} + ?^? : (%,Integer) -> % + ?**? : (%,Integer) -> % +\end{verbatim} + +These exports come from EntireRing(): +\begin{verbatim} + 0 : () -> % + 1 : () -> % + characteristic : () -> NonNegativeInteger + coerce : Integer -> % + coerce : % -> OutputForm + hash : % -> SingleInteger + latex : % -> String + one? : % -> Boolean + recip : % -> Union(%,"failed") + sample : () -> % + subtractIfCan : (%,%) -> Union(%,"failed") + zero? : % -> Boolean + ?+? : (%,%) -> % + ?=? : (%,%) -> Boolean + ?~=? : (%,%) -> Boolean + ?*? : (%,%) -> % + ?*? : (Integer,%) -> % + ?*? : (PositiveInteger,%) -> % + ?*? : (NonNegativeInteger,%) -> % + ?-? : (%,%) -> % + -? : % -> % + ?^? : (%,PositiveInteger) -> % + ?^? : (%,NonNegativeInteger) -> % + ?**? : (%,NonNegativeInteger) -> % + ?**? : (%,PositiveInteger) -> % +\end{verbatim} + +These exports come from Algebra(Fraction(Integer)): +\begin{verbatim} + coerce : Fraction Integer -> % + ?*? : (%,Fraction Integer) -> % + ?*? : (Fraction Integer,%) -> % +\end{verbatim} + +<>= +)abbrev category DIVRING DivisionRing +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ A division ring (sometimes called a skew field), +++ i.e. a not necessarily commutative ring where +++ all non-zero elements have multiplicative inverses. + +DivisionRing(): Category == + Join(EntireRing, Algebra Fraction Integer) with + "**": (%,Integer) -> % + ++ x**n returns x raised to the integer power n. + "^" : (%,Integer) -> % + ++ x^n returns x raised to the integer power n. + inv : % -> % + ++ inv x returns the multiplicative inverse of x. + ++ Error: if x is 0. +-- Q-algebra is a lie, should be conditional on characteristic 0, +-- but knownInfo cannot handle the following commented +-- if % has CharacteristicZero then Algebra Fraction Integer + add + n: Integer + x: % + _^(x:%, n:Integer):% == x ** n + import RepeatedSquaring(%) + x ** n: Integer == + zero? n => 1 + zero? x => + n<0 => error "division by zero" + x + n<0 => + expt(inv x,(-n) pretend PositiveInteger) + expt(x,n pretend PositiveInteger) +-- if % has CharacteristicZero() then + q:Fraction(Integer) * x:% == numer(q) * inv(denom(q)::%) * x + +@ +<>= +"DIVRING" + [color=lightblue,href="bookvol10.2.pdf#nameddest=DIVRING"]; +"DIVRING" -> "ENTIRER" +"DIVRING" -> "ALGEBRA" + +@ +<>= +"DivisionRing()" + [color=lightblue,href="bookvol10.2.pdf#nameddest=DIVRING"]; +"DivisionRing()" -> "EntireRing()" +"DivisionRing()" -> "Algebra(Fraction(Integer))" +"DivisionRing()" -> "RepeatedSquaring(DivisionRing)" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"DivisionRing()" [color=lightblue]; +"DivisionRing()" -> "EntireRing()" +"DivisionRing()" -> "Algebra(Fraction(Integer))" +"DivisionRing()" -> "RepeatedSquaring(DivisionRing)" + +"RepeatedSquaring(DivisionRing)" [color="#00EE00"]; +"RepeatedSquaring(DivisionRing)" -> "RepeatedSquaring(a:SetCategory)" + +"RepeatedSquaring(a:SetCategory)" [color="#00EE00"]; +"RepeatedSquaring(a:SetCategory)" -> "Package" + +"Package" [color="#00EE00"]; + +"EntireRing()" [color=lightblue]; +"EntireRing()" -> "RING..." +"EntireRing()" -> "BMODULE..." + +"Algebra(Fraction(Integer))" [color=seagreen]; +"Algebra(Fraction(Integer))" -> "Algebra(a:CommutativeRing)" + +"Algebra(a:CommutativeRing)" [color=lightblue]; +"Algebra(a:CommutativeRing)" -> "RING..." +"Algebra(a:CommutativeRing)" -> "Module(a:CommutativeRing)" + +"Module(a:CommutativeRing)" [color=lightblue]; +"Module(a:CommutativeRing)" -> + "BiModule(a:CommutativeRing,b:CommutativeRing)" + +"BiModule(a:CommutativeRing,b:CommutativeRing)" [color=seagreen]; +"BiModule(a:CommutativeRing,b:CommutativeRing)" -> "BMODULE..." + +"RING..." [color=lightblue]; +"BMODULE..." [color=lightblue]; +} + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{IntegralDomain}{INTDOM} +\pagepic{ps/v102integraldomain.ps}{INTDOM}{0.65} + +{\bf See:}\\ +\pageto{GcdDomain}{GCDDOM} +\pageto{OrderedIntegralDomain}{OINTDOM} +\pagefrom{Algebra}{ALGEBRA} +\pagefrom{CommutativeRing}{COMRING} +\pagefrom{EntireRing}{ENTIRER} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{INTDOM}{0} & +\cross{INTDOM}{1} & +\cross{INTDOM}{associates?} & +\cross{INTDOM}{characteristic} & +\cross{INTDOM}{coerce} \\ +\cross{INTDOM}{exquo} & +\cross{INTDOM}{hash} & +\cross{INTDOM}{latex} & +\cross{INTDOM}{one?} & +\cross{INTDOM}{recip} \\ +\cross{INTDOM}{sample} & +\cross{INTDOM}{subtractIfCan} & +\cross{INTDOM}{unit?} & +\cross{INTDOM}{unitCanonical} & +\cross{INTDOM}{unitNormal} \\ +\cross{INTDOM}{zero?} & +\cross{INTDOM}{?\~{}=?} & +\cross{INTDOM}{?*?} & +\cross{INTDOM}{?**?} & +\cross{INTDOM}{?\^{}?} \\ +\cross{INTDOM}{?+?} & +\cross{INTDOM}{?-?} & +\cross{INTDOM}{-?} & +\cross{INTDOM}{?=?} & +\end{tabular} + +These are directly exported but not implemented: +\begin{verbatim} + exquo : (%,%) -> Union(%,"failed") +\end{verbatim} + +These are implemented by this category: +\begin{verbatim} + associates? : (%,%) -> Boolean + unit? : % -> Boolean + unitCanonical : % -> % + unitNormal : % -> Record(unit: %,canonical: %,associate: %) +\end{verbatim} + +These exports come from CommutativeRing(): +\begin{verbatim} + 0 : () -> % + 1 : () -> % + characteristic : () -> NonNegativeInteger + coerce : Integer -> % + coerce : % -> OutputForm + hash : % -> SingleInteger + latex : % -> String + one? : % -> Boolean + recip : % -> Union(%,"failed") + sample : () -> % + subtractIfCan : (%,%) -> Union(%,"failed") + zero? : % -> Boolean + ?+? : (%,%) -> % + ?=? : (%,%) -> Boolean + ?~=? : (%,%) -> Boolean + ?*? : (%,%) -> % + ?*? : (Integer,%) -> % + ?*? : (NonNegativeInteger,%) -> % + ?*? : (PositiveInteger,%) -> % + ?-? : (%,%) -> % + -? : % -> % + ?^? : (%,NonNegativeInteger) -> % + ?^? : (%,PositiveInteger) -> % + ?**? : (%,NonNegativeInteger) -> % + ?**? : (%,PositiveInteger) -> % +\end{verbatim} + +TPDHERE: Should we construct this coercion? + +These exports come from Algebra(a:IntegralDomain): +\begin{verbatim} + coerce : % -> % +\end{verbatim} + +TPDHERE: Note that none of the exports of EntireRing are needed. +Perhaps this can be eliminated. + +<>= +)abbrev category INTDOM IntegralDomain +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: Davenport & Trager I +++ Description: +++ The category of commutative integral domains, i.e. commutative +++ rings with no zero divisors. +++ +++ Conditional attributes: +++ canonicalUnitNormal\tab{20}the canonical field is the same for +++ all associates canonicalsClosed\tab{20}the product of two +++ canonicals is itself canonical + +IntegralDomain(): Category == + Join(CommutativeRing, Algebra(%), EntireRing) with + "exquo": (%,%) -> Union(%,"failed") + ++ exquo(a,b) either returns an element c such that + ++ \spad{c*b=a} or "failed" if no such element can be found. + unitNormal: % -> Record(unit:%,canonical:%,associate:%) + ++ unitNormal(x) tries to choose a canonical element + ++ from the associate class of x. + ++ The attribute canonicalUnitNormal, if asserted, means that + ++ the "canonical" element is the same across all associates of x + ++ if \spad{unitNormal(x) = [u,c,a]} then + ++ \spad{u*c = x}, \spad{a*u = 1}. + unitCanonical: % -> % + ++ \spad{unitCanonical(x)} returns \spad{unitNormal(x).canonical}. + associates?: (%,%) -> Boolean + ++ associates?(x,y) tests whether x and y are associates, i.e. + ++ differ by a unit factor. + unit?: % -> Boolean + ++ unit?(x) tests whether x is a unit, i.e. is invertible. + add + x,y: % + + UCA ==> Record(unit:%,canonical:%,associate:%) + if not (% has Field) then + unitNormal(x) == [1$%,x,1$%]$UCA -- the non-canonical definition + unitCanonical(x) == unitNormal(x).canonical -- always true + recip(x) == if zero? x then "failed" else _exquo(1$%,x) + unit?(x) == (recip x case "failed" => false; true) + if % has canonicalUnitNormal then + associates?(x,y) == + (unitNormal x).canonical = (unitNormal y).canonical + else + associates?(x,y) == + zero? x => zero? y + zero? y => false + x exquo y case "failed" => false + y exquo x case "failed" => false + true + +@ +<>= +"INTDOM" + [color=lightblue,href="bookvol10.2.pdf#nameddest=INTDOM"]; +"INTDOM" -> "COMRING" +"INTDOM" -> "ALGEBRA" +"INTDOM" -> "ENTIRER" + +@ +<>= +"IntegralDomain()" + [color=lightblue,href="bookvol10.2.pdf#nameddest=INTDOM"]; +"IntegralDomain()" -> "CommutativeRing()" +"IntegralDomain()" -> "Algebra(a:CommutativeRing)" +"IntegralDomain()" -> "EntireRing()" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"IntegralDomain()" [color=lightblue]; +"IntegralDomain()" -> "CommutativeRing()" +"IntegralDomain()" -> "Algebra(a:CommutativeRing)" +"IntegralDomain()" -> "EntireRing()" + +"CommutativeRing()" [color=lightblue]; +"CommutativeRing()" -> "RING..." +"CommutativeRing()" -> "BMODULE..." + +"EntireRing()" [color=lightblue]; +"EntireRing()" -> "RING..." +"EntireRing()" -> "BMODULE..." + +"Algebra(a:CommutativeRing)" [color=lightblue]; +"Algebra(a:CommutativeRing)" -> "RING..." +"Algebra(a:CommutativeRing)" -> "Module(a:CommutativeRing)" + +"Module(a:CommutativeRing)" [color=lightblue]; +"Module(a:CommutativeRing)" -> + "BiModule(a:CommutativeRing,b:CommutativeRing)" + +"BiModule(a:CommutativeRing,b:CommutativeRing)" [color=seagreen]; +"BiModule(a:CommutativeRing,b:CommutativeRing)" -> "BMODULE..." + +"BMODULE..." [color=lightblue]; +"RING..." [color=lightblue]; +} + +@ +\chapter{Category Layer 13} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{GcdDomain}{GCDDOM} +\pagepic{ps/v102gcddomain.ps}{GCDDOM}{0.65} + +{\bf See:}\\ +\pageto{PrincipalIdealDomain}{PID} +\pageto{UniqueFactorizationDomain}{UFD} +\pagefrom{IntegralDomain}{INTDOM} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{GCDDOM}{0} & +\cross{GCDDOM}{1} & +\cross{GCDDOM}{associates?} & +\cross{GCDDOM}{characteristic} & +\cross{GCDDOM}{coerce} \\ +\cross{GCDDOM}{exquo} & +\cross{GCDDOM}{gcd} & +\cross{GCDDOM}{gcdPolynomial} & +\cross{GCDDOM}{hash} & +\cross{GCDDOM}{latex} \\ +\cross{GCDDOM}{lcm} & +\cross{GCDDOM}{one?} & +\cross{GCDDOM}{recip} & +\cross{GCDDOM}{sample} & +\cross{GCDDOM}{subtractIfCan} \\ +\cross{GCDDOM}{unit?} & +\cross{GCDDOM}{unitCanonical} & +\cross{GCDDOM}{unitNormal} & +\cross{GCDDOM}{zero?} & +\cross{GCDDOM}{?*?} \\ +\cross{GCDDOM}{?**?} & +\cross{GCDDOM}{?+?} & +\cross{GCDDOM}{?-?} & +\cross{GCDDOM}{-?} & +\cross{GCDDOM}{?=?} \\ +\cross{GCDDOM}{?\^{}?} & +\cross{GCDDOM}{?\~{}=?} &&& +\end{tabular} + +These are directly exported but not implemented: +\begin{verbatim} + gcd : (%,%) -> % +\end{verbatim} + +These are implemented by this category: +\begin{verbatim} + gcd : List % -> % + gcdPolynomial : (SparseUnivariatePolynomial %, + SparseUnivariatePolynomial %) -> + SparseUnivariatePolynomial % + lcm : (%,%) -> % + lcm : List % -> % +\end{verbatim} + +These exports come from IntegralDomain(): +\begin{verbatim} + associates? : (%,%) -> Boolean + exquo : (%,%) -> Union(%,"failed") + unit? : % -> Boolean + unitCanonical : % -> % + unitNormal : % -> Record(unit: %,canonical: %,associate: %) + 0 : () -> % + 1 : () -> % + characteristic : () -> NonNegativeInteger + coerce : % -> % + coerce : Integer -> % + coerce : % -> OutputForm + hash : % -> SingleInteger + latex : % -> String + one? : % -> Boolean + recip : % -> Union(%,"failed") + sample : () -> % + subtractIfCan : (%,%) -> Union(%,"failed") + zero? : % -> Boolean + ?+? : (%,%) -> % + ?=? : (%,%) -> Boolean + ?~=? : (%,%) -> Boolean + ?*? : (%,%) -> % + ?*? : (Integer,%) -> % + ?*? : (PositiveInteger,%) -> % + ?*? : (NonNegativeInteger,%) -> % + ?-? : (%,%) -> % + -? : % -> % + ?**? : (%,PositiveInteger) -> % + ?**? : (%,NonNegativeInteger) -> % + ?^? : (%,PositiveInteger) -> % + ?^? : (%,NonNegativeInteger) -> % +\end{verbatim} + +<>= +)abbrev category GCDDOM GcdDomain +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: Davenport & Trager 1 +++ Description: +++ This category describes domains where +++ \spadfun{gcd} can be computed but where there is no guarantee +++ of the existence of \spadfun{factor} operation for factorisation +++ into irreducibles. However, if such a \spadfun{factor} operation exist, +++ factorization will be unique up to order and units. + +GcdDomain(): Category == IntegralDomain with + gcd: (%,%) -> % + ++ gcd(x,y) returns the greatest common divisor of x and y. + -- gcd(x,y) = gcd(y,x) in the presence of canonicalUnitNormal, + -- but not necessarily elsewhere + gcd: List(%) -> % + ++ gcd(l) returns the common gcd of the elements in the list l. + lcm: (%,%) -> % + ++ lcm(x,y) returns the least common multiple of x and y. + -- lcm(x,y) = lcm(y,x) in the presence of canonicalUnitNormal, + -- but not necessarily elsewhere + lcm: List(%) -> % + ++ lcm(l) returns the least common multiple of the elements of + ++ the list l. + gcdPolynomial: (SparseUnivariatePolynomial %, _ + SparseUnivariatePolynomial %) -> _ + SparseUnivariatePolynomial % + ++ gcdPolynomial(p,q) returns the greatest common divisor (gcd) of + ++ univariate polynomials over the domain + add + lcm(x: %,y: %) == + y = 0 => 0 + x = 0 => 0 + LCM : Union(%,"failed") := y exquo gcd(x,y) + LCM case % => x * LCM + error "bad gcd in lcm computation" + lcm(l:List %) == reduce(lcm,l,1,0) + gcd(l:List %) == reduce(gcd,l,0,1) + SUP ==> SparseUnivariatePolynomial + gcdPolynomial(p1,p2) == + zero? p1 => unitCanonical p2 + zero? p2 => unitCanonical p1 + c1:= content(p1); c2:= content(p2) + p1:= (p1 exquo c1)::SUP % + p2:= (p2 exquo c2)::SUP % + if (e1:=minimumDegree p1) > 0 then p1:=(p1 exquo monomial(1,e1))::SUP % + if (e2:=minimumDegree p2) > 0 then p2:=(p2 exquo monomial(1,e2))::SUP % + e1:=min(e1,e2); c1:=gcd(c1,c2) + p1:= + degree p1 = 0 or degree p2 = 0 => monomial(c1,0) + p:= subResultantGcd(p1,p2) + degree p = 0 => monomial(c1,0) + c2:= gcd(leadingCoefficient p1,leadingCoefficient p2) + unitCanonical(_ + c1 * primitivePart(((c2*p) exquo leadingCoefficient p)::SUP %)) + zero? e1 => p1 + monomial(1,e1)*p1 + +@ +<>= +"GCDDOM" + [color=lightblue,href="bookvol10.2.pdf#nameddest=GCDDOM"]; +"GCDDOM" -> "INTDOM" + +@ +<>= +"GcdDomain()" + [color=lightblue,href="bookvol10.2.pdf#nameddest=GCDDOM"]; +"GcdDomain()" -> "IntegralDomain()" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"GcdDomain()" [color=lightblue]; +"GcdDomain()" -> "IntegralDomain()" + +"IntegralDomain()" [color=lightblue]; +"IntegralDomain()" -> "CommutativeRing()" +"IntegralDomain()" -> "Algebra(a:CommutativeRing)" +"IntegralDomain()" -> "EntireRing()" + +"CommutativeRing()" [color=lightblue]; +"CommutativeRing()" -> "RING..." +"CommutativeRing()" -> "BMODULE..." + +"EntireRing()" [color=lightblue]; +"EntireRing()" -> "RING..." +"EntireRing()" -> "BMODULE..." + +"Algebra(a:CommutativeRing)" [color=lightblue]; +"Algebra(a:CommutativeRing)" -> "RING..." +"Algebra(a:CommutativeRing)" -> "Module(a:CommutativeRing)" + +"Module(a:CommutativeRing)" [color=lightblue]; +"Module(a:CommutativeRing)" -> + "BiModule(a:CommutativeRing,b:CommutativeRing)" + +"BiModule(a:CommutativeRing,b:CommutativeRing)" [color=seagreen]; +"BiModule(a:CommutativeRing,b:CommutativeRing)" -> "BMODULE..." + +"BMODULE..." [color=lightblue]; +"RING..." [color=lightblue]; +} + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{OrderedIntegralDomain}{OINTDOM} +\pagepic{ps/v102orderedintegraldomain.ps}{OINTDOM}{0.45} + +{\bf See:}\\ +\pagefrom{IntegralDomain}{INTDOM} +\pagefrom{OrderedRing}{ORDRING} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{OINTDOM}{1} & +\cross{OINTDOM}{0} & +\cross{OINTDOM}{abs} & +\cross{OINTDOM}{associates?} & +\cross{OINTDOM}{characteristic} \\ +\cross{OINTDOM}{coerce} & +\cross{OINTDOM}{exquo} & +\cross{OINTDOM}{hash} & +\cross{OINTDOM}{latex} & +\cross{OINTDOM}{max} \\ +\cross{OINTDOM}{min} & +\cross{OINTDOM}{negative?} & +\cross{OINTDOM}{one?} & +\cross{OINTDOM}{positive?} & +\cross{OINTDOM}{recip} \\ +\cross{OINTDOM}{sample} & +\cross{OINTDOM}{sign} & +\cross{OINTDOM}{subtractIfCan} & +\cross{OINTDOM}{unit?} & +\cross{OINTDOM}{unitCanonical} \\ +\cross{OINTDOM}{unitNormal} & +\cross{OINTDOM}{zero?} & +\cross{OINTDOM}{?*?} & +\cross{OINTDOM}{?**?} & +\cross{OINTDOM}{?+?} \\ +\cross{OINTDOM}{?-?} & +\cross{OINTDOM}{-?} & +\cross{OINTDOM}{?$<$?} & +\cross{OINTDOM}{?$<=$?} & +\cross{OINTDOM}{?=?} \\ +\cross{OINTDOM}{?$>$?} & +\cross{OINTDOM}{?$>=$?} & +\cross{OINTDOM}{?\^{}?} & +\cross{OINTDOM}{?\~{}=?} & +\end{tabular} + +These exports come from IntegralDomain(): +\begin{verbatim} + 0 : () -> % + 1 : () -> % + associates? : (%,%) -> Boolean + characteristic : () -> NonNegativeInteger + coerce : % -> % + coerce : Integer -> % + coerce : % -> OutputForm + exquo : (%,%) -> Union(%,"failed") + hash : % -> SingleInteger + latex : % -> String + one? : % -> Boolean + recip : % -> Union(%,"failed") + sample : () -> % + subtractIfCan : (%,%) -> Union(%,"failed") + unit? : % -> Boolean + unitCanonical : % -> % + unitNormal : % -> Record(unit: %,canonical: %,associate: %) + zero? : % -> Boolean + ?+? : (%,%) -> % + ?=? : (%,%) -> Boolean + ?~=? : (%,%) -> Boolean + ?*? : (%,%) -> % + ?*? : (Integer,%) -> % + ?*? : (PositiveInteger,%) -> % + ?*? : (NonNegativeInteger,%) -> % + ?-? : (%,%) -> % + -? : % -> % + ?**? : (%,NonNegativeInteger) -> % + ?**? : (%,PositiveInteger) -> % + ? Boolean + ?^? : (%,NonNegativeInteger) -> % + ?^? : (%,PositiveInteger) -> % +\end{verbatim} + +These exports come from OrderedRing(): +\begin{verbatim} + abs : % -> % + max : (%,%) -> % + min : (%,%) -> % + negative? : % -> Boolean + positive? : % -> Boolean + sign : % -> Integer + ?<=? : (%,%) -> Boolean + ?>? : (%,%) -> Boolean + ?>=? : (%,%) -> Boolean +\end{verbatim} + +<>= +)abbrev category OINTDOM OrderedIntegralDomain +++ Author: JH Davenport (after L Gonzalez-Vega) +++ Date Created: 30.1.96 +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ Description: +++ The category of ordered commutative integral domains, where ordering +++ and the arithmetic operations are compatible +++ + +OrderedIntegralDomain(): Category == + Join(IntegralDomain, OrderedRing) + +@ +<>= +"OINTDOM" + [color=lightblue,href="bookvol10.2.pdf#nameddest=OINTDOM"]; +"OINTDOM" -> "INTDOM" +"OINTDOM" -> "ORDRING" + +@ +<>= +"OrderedIntegralDomain()" + [color=lightblue,href="bookvol10.2.pdf#nameddest=OINTDOM"]; +"OrderedIntegralDomain()" -> "IntegralDomain()" +"OrderedIntegralDomain()" -> "OrderedRing()" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"OrderedIntegralDomain()" + [color=lightblue,href="bookvol10.2.pdf#nameddest=OINTDOM"]; +"OrderedIntegralDomain()" -> "IntegralDomain()" +"OrderedIntegralDomain()" -> "OrderedRing()" + +"IntegralDomain()" [color=lightblue]; +"IntegralDomain()" -> "CommutativeRing()" +"IntegralDomain()" -> "Algebra(a:CommutativeRing)" +"IntegralDomain()" -> "EntireRing()" + +"OrderedRing()" [color=lightblue]; +"OrderedRing()" -> "OAGROUP..." +"OrderedRing()" -> "RING..." +"OrderedRing()" -> "MONOID..." + +"CommutativeRing()" [color=lightblue]; +"CommutativeRing()" -> "RING..." +"CommutativeRing()" -> "BMODULE..." + +"EntireRing()" [color=lightblue]; +"EntireRing()" -> "RING..." +"EntireRing()" -> "BMODULE..." + +"Algebra(a:CommutativeRing)" [color=lightblue]; +"Algebra(a:CommutativeRing)" -> "RING..." +"Algebra(a:CommutativeRing)" -> "Module(a:CommutativeRing)" + +"Module(a:CommutativeRing)" [color=lightblue]; +"Module(a:CommutativeRing)" -> + "BiModule(a:CommutativeRing,b:CommutativeRing)" + +"BiModule(a:CommutativeRing,b:CommutativeRing)" [color=seagreen]; +"BiModule(a:CommutativeRing,b:CommutativeRing)" -> "BMODULE..." + +"OAGROUP..." [color=lightblue]; +"BMODULE..." [color=lightblue]; +"RING..." [color=lightblue]; +"MONOID..." [color=lightblue]; +} + +@ +\chapter{Category Layer 14} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{PrincipalIdealDomain}{PID} +\pagepic{ps/v102principalidealdomain.ps}{PID}{0.65} + +{\bf See:}\\ +\pageto{EuclideanDomain}{EUCDOM} +\pagefrom{GcdDomain}{GCDDOM} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{PID}{0} & +\cross{PID}{1} & +\cross{PID}{associates?} & +\cross{PID}{characteristic} & +\cross{PID}{coerce} \\ +\cross{PID}{expressIdealMember} & +\cross{PID}{exquo} & +\cross{PID}{gcd} & +\cross{PID}{gcdPolynomial} & +\cross{PID}{hash} \\ +\cross{PID}{latex} & +\cross{PID}{lcm} & +\cross{PID}{one?} & +\cross{PID}{principalIdeal} & +\cross{PID}{recip} \\ +\cross{PID}{sample} & +\cross{PID}{subtractIfCan} & +\cross{PID}{unit?} & +\cross{PID}{unitCanonical} & +\cross{PID}{unitNormal} \\ +\cross{PID}{zero?} & +\cross{PID}{?+?} & +\cross{PID}{?-?} & +\cross{PID}{-?} & +\cross{PID}{?=?} \\ +\cross{PID}{?\~{}=?} & +\cross{PID}{?*?} & +\cross{PID}{?**?} & +\cross{PID}{?\^{}?} & +\end{tabular} + +These are directly exported but not implemented: +\begin{verbatim} + expressIdealMember : (List %,%) -> Union(List %,"failed") + principalIdeal : List % -> Record(coef: List %,generator: %) +\end{verbatim} + +These exports come from GcdDomain(): +\begin{verbatim} + associates? : (%,%) -> Boolean + exquo : (%,%) -> Union(%,"failed") + gcd : (%,%) -> % + gcd : List % -> % + gcdPolynomial : (SparseUnivariatePolynomial %, + SparseUnivariatePolynomial %) -> + SparseUnivariatePolynomial % + lcm : List % -> % + lcm : (%,%) -> % + unit? : % -> Boolean + unitCanonical : % -> % + unitNormal : % -> Record(unit: %,canonical: %,associate: %) + 0 : () -> % + 1 : () -> % + characteristic : () -> NonNegativeInteger + coerce : % -> % + coerce : Integer -> % + coerce : % -> OutputForm + hash : % -> SingleInteger + latex : % -> String + one? : % -> Boolean + recip : % -> Union(%,"failed") + sample : () -> % + subtractIfCan : (%,%) -> Union(%,"failed") + zero? : % -> Boolean + ?+? : (%,%) -> % + ?=? : (%,%) -> Boolean + ?~=? : (%,%) -> Boolean + ?*? : (%,%) -> % + ?*? : (Integer,%) -> % + ?*? : (PositiveInteger,%) -> % + ?*? : (NonNegativeInteger,%) -> % + ?-? : (%,%) -> % + -? : % -> % + ?**? : (%,PositiveInteger) -> % + ?**? : (%,NonNegativeInteger) -> % + ?^? : (%,PositiveInteger) -> % + ?^? : (%,NonNegativeInteger) -> % +\end{verbatim} + +<>= +)abbrev category PID PrincipalIdealDomain +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ The category of constructive principal ideal domains, i.e. +++ where a single generator can be constructively found for +++ any ideal given by a finite set of generators. +++ Note that this constructive definition only implies that +++ finitely generated ideals are principal. It is not clear +++ what we would mean by an infinitely generated ideal. + +PrincipalIdealDomain(): Category == GcdDomain with + principalIdeal: List % -> Record(coef:List %,generator:%) + ++ principalIdeal([f1,...,fn]) returns a record whose + ++ generator component is a generator of the ideal + ++ generated by \spad{[f1,...,fn]} whose coef component satisfies + ++ \spad{generator = sum (input.i * coef.i)} + expressIdealMember: (List %,%) -> Union(List %,"failed") + ++ expressIdealMember([f1,...,fn],h) returns a representation + ++ of h as a linear combination of the fi or "failed" if h + ++ is not in the ideal generated by the fi. + +@ +<>= +"PID" + [color=lightblue,href="bookvol10.2.pdf#nameddest=PID"]; +"PID" -> "GCDDOM" + +@ +<>= +"PrincipalIdealDomain()" + [color=lightblue,href="bookvol10.2.pdf#nameddest=PID"]; +"PrincipalIdealDomain()" -> "GcdDomain()" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"PrincipalIdealDomain()" [color=lightblue]; +"PrincipalIdealDomain()" -> "GcdDomain()" + +"GcdDomain()" [color=lightblue]; +"GcdDomain()" -> "IntegralDomain()" + +"IntegralDomain()" [color=lightblue]; +"IntegralDomain()" -> "CommutativeRing()" +"IntegralDomain()" -> "Algebra(a:CommutativeRing)" +"IntegralDomain()" -> "EntireRing()" + +"CommutativeRing()" [color=lightblue]; +"CommutativeRing()" -> "RING..." +"CommutativeRing()" -> "BMODULE..." + +"EntireRing()" [color=lightblue]; +"EntireRing()" -> "RING..." +"EntireRing()" -> "BMODULE..." + +"Algebra(a:CommutativeRing)" [color=lightblue]; +"Algebra(a:CommutativeRing)" -> "RING..." +"Algebra(a:CommutativeRing)" -> "Module(a:CommutativeRing)" + +"Module(a:CommutativeRing)" [color=lightblue]; +"Module(a:CommutativeRing)" -> + "BiModule(a:CommutativeRing,b:CommutativeRing)" + +"BiModule(a:CommutativeRing,b:CommutativeRing)" [color=seagreen]; +"BiModule(a:CommutativeRing,b:CommutativeRing)" -> "BMODULE..." + +"BMODULE..." [color=lightblue]; +"RING..." [color=lightblue]; +} + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{UniqueFactorizationDomain}{UFD} +\pagepic{ps/v102uniquefactorizationdomain.ps}{UFD}{0.65} + +{\bf See:}\\ +\pageto{Field}{FIELD} +\pageto{PolynomialFactorizationExplicit}{PFECAT} +\pagefrom{GcdDomain}{GCDDOM} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{UFD}{0} & +\cross{UFD}{1} & +\cross{UFD}{associates?} & +\cross{UFD}{characteristic} & +\cross{UFD}{coerce} \\ +\cross{UFD}{exquo} & +\cross{UFD}{factor} & +\cross{UFD}{gcd} & +\cross{UFD}{gcdPolynomial} & +\cross{UFD}{hash} \\ +\cross{UFD}{latex} & +\cross{UFD}{lcm} & +\cross{UFD}{one?} & +\cross{UFD}{prime?} & +\cross{UFD}{recip} \\ +\cross{UFD}{sample} & +\cross{UFD}{squareFree} & +\cross{UFD}{squareFreePart} & +\cross{UFD}{subtractIfCan} & +\cross{UFD}{unit?} \\ +\cross{UFD}{unitCanonical} & +\cross{UFD}{unitNormal} & +\cross{UFD}{zero?} & +\cross{UFD}{?*?} & +\cross{UFD}{?**?} \\ +\cross{UFD}{?+?} & +\cross{UFD}{?-?} & +\cross{UFD}{-?} & +\cross{UFD}{?=?} & +\cross{UFD}{?\~{}=?} \\ +\cross{UFD}{?\^{}?} & +\end{tabular} + +These are directly exported but not implemented: +\begin{verbatim} + factor : % -> Factored % + squareFree : % -> Factored % +\end{verbatim} + +These are implemented by this category: +\begin{verbatim} + prime? : % -> Boolean + squareFreePart : % -> % +\end{verbatim} + +These exports come from GcdDomain(): +\begin{verbatim} + 0 : () -> % + 1 : () -> % + associates? : (%,%) -> Boolean + characteristic : () -> NonNegativeInteger + coerce : % -> % + coerce : Integer -> % + coerce : % -> OutputForm + exquo : (%,%) -> Union(%,"failed") + gcd : (%,%) -> % + gcd : List % -> % + gcdPolynomial : (SparseUnivariatePolynomial %, + SparseUnivariatePolynomial %) -> + SparseUnivariatePolynomial % + hash : % -> SingleInteger + latex : % -> String + lcm : List % -> % + lcm : (%,%) -> % + one? : % -> Boolean + recip : % -> Union(%,"failed") + sample : () -> % + subtractIfCan : (%,%) -> Union(%,"failed") + unit? : % -> Boolean + unitCanonical : % -> % + unitNormal : % -> Record(unit: %,canonical: %,associate: %) + zero? : % -> Boolean + ?+? : (%,%) -> % + ?=? : (%,%) -> Boolean + ?~=? : (%,%) -> Boolean + ?*? : (%,%) -> % + ?*? : (Integer,%) -> % + ?*? : (PositiveInteger,%) -> % + ?*? : (NonNegativeInteger,%) -> % + ?-? : (%,%) -> % + -? : % -> % + ?**? : (%,PositiveInteger) -> % + ?**? : (%,NonNegativeInteger) -> % + ?^? : (%,PositiveInteger) -> % + ?^? : (%,NonNegativeInteger) -> % +\end{verbatim} + +<>= +)abbrev category UFD UniqueFactorizationDomain +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ A constructive unique factorization domain, i.e. where +++ we can constructively factor members into a product of +++ a finite number of irreducible elements. + +UniqueFactorizationDomain(): Category == GcdDomain with + prime?: % -> Boolean + ++ prime?(x) tests if x can never be written as the product of two + ++ non-units of the ring, + ++ i.e., x is an irreducible element. + squareFree : % -> Factored(%) + ++ squareFree(x) returns the square-free factorization of x + ++ i.e. such that the factors are pairwise relatively prime + ++ and each has multiple prime factors. + squareFreePart: % -> % + ++ squareFreePart(x) returns a product of prime factors of + ++ x each taken with multiplicity one. + factor: % -> Factored(%) + ++ factor(x) returns the factorization of x into irreducibles. + add + squareFreePart x == + unit(s := squareFree x) * _*/[f.factor for f in factors s] + + prime? x == # factorList factor x = 1 + +@ +<>= +"UFD" + [color=lightblue,href="bookvol10.2.pdf#nameddest=UFD"]; +"UFD" -> "GCDDOM" + +@ +<>= +"UniqueFactorizationDomain()" + [color=lightblue,href="bookvol10.2.pdf#nameddest=UFD"]; +"UniqueFactorizationDomain()" -> "GcdDomain()" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"UniqueFactorizationDomain()" [color=lightblue]; +"UniqueFactorizationDomain()" -> "GcdDomain()" + +"GcdDomain()" [color=lightblue]; +"GcdDomain()" -> "IntegralDomain()" + +"IntegralDomain()" [color=lightblue]; +"IntegralDomain()" -> "CommutativeRing()" +"IntegralDomain()" -> "Algebra(a:CommutativeRing)" +"IntegralDomain()" -> "EntireRing()" + +"CommutativeRing()" [color=lightblue]; +"CommutativeRing()" -> "RING..." +"CommutativeRing()" -> "BMODULE..." + +"EntireRing()" [color=lightblue]; +"EntireRing()" -> "RING..." +"EntireRing()" -> "BMODULE..." + +"Algebra(a:CommutativeRing)" [color=lightblue]; +"Algebra(a:CommutativeRing)" -> "RING..." +"Algebra(a:CommutativeRing)" -> "Module(a:CommutativeRing)" + +"Module(a:CommutativeRing)" [color=lightblue]; +"Module(a:CommutativeRing)" -> + "BiModule(a:CommutativeRing,b:CommutativeRing)" + +"BiModule(a:CommutativeRing,b:CommutativeRing)" [color=seagreen]; +"BiModule(a:CommutativeRing,b:CommutativeRing)" -> "BMODULE..." + +"BMODULE..." [color=lightblue]; +"RING..." [color=lightblue]; +} + +@ +\chapter{Category Layer 15} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{EuclideanDomain}{EUCDOM} +\pagepic{ps/v102euclideandomain.ps}{EUCDOM}{0.65} + +{\bf See:}\\ +\pageto{Field}{FIELD} +\pagefrom{PrincipalIdealDomain}{PID} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{EUCDOM}{1} & +\cross{EUCDOM}{0} & +\cross{EUCDOM}{associates?} & +\cross{EUCDOM}{characteristic} & +\cross{EUCDOM}{coerce} \\ +\cross{EUCDOM}{divide} & +\cross{EUCDOM}{euclideanSize} & +\cross{EUCDOM}{expressIdealMember} & +\cross{EUCDOM}{exquo} & +\cross{EUCDOM}{extendedEuclidean} \\ +\cross{EUCDOM}{gcd} & +\cross{EUCDOM}{gcdPolynomial} & +\cross{EUCDOM}{hash} & +\cross{EUCDOM}{latex} & +\cross{EUCDOM}{lcm} \\ +\cross{EUCDOM}{multiEuclidean} & +\cross{EUCDOM}{one?} & +\cross{EUCDOM}{principalIdeal} & +\cross{EUCDOM}{recip} & +\cross{EUCDOM}{sample} \\ +\cross{EUCDOM}{sizeLess?} & +\cross{EUCDOM}{subtractIfCan} & +\cross{EUCDOM}{unit?} & +\cross{EUCDOM}{unitCanonical} & +\cross{EUCDOM}{unitNormal} \\ +\cross{EUCDOM}{zero?} & +\cross{EUCDOM}{?+?} & +\cross{EUCDOM}{?-?} & +\cross{EUCDOM}{-?} & +\cross{EUCDOM}{?=?} \\ +\cross{EUCDOM}{?quo?} & +\cross{EUCDOM}{?rem?} & +\cross{EUCDOM}{?\~{}=?} & +\cross{EUCDOM}{?*?} & +\cross{EUCDOM}{?**?} \\ +\cross{EUCDOM}{?\^{}?} &&&& +\end{tabular} + +These are directly exported but not implemented: +\begin{verbatim} + divide : (%,%) -> Record(quotient: %,remainder: %) + euclideanSize : % -> NonNegativeInteger +\end{verbatim} + +These are implemented by this category: +\begin{verbatim} + expressIdealMember : (List %,%) -> Union(List %,"failed") + exquo : (%,%) -> Union(%,"failed") + extendedEuclidean : (%,%) -> Record(coef1: %,coef2: %,generator: %) + extendedEuclidean : (%,%,%) -> Union(Record(coef1: %,coef2: %),"failed") + gcd : (%,%) -> % + multiEuclidean : (List %,%) -> Union(List %,"failed") + principalIdeal : List % -> Record(coef: List %,generator: %) + sizeLess? : (%,%) -> Boolean + ?quo? : (%,%) -> % + ?rem? : (%,%) -> % +\end{verbatim} + +These exports come from PrincipalIdealDomain(): +\begin{verbatim} + 0 : () -> % + 1 : () -> % + associates? : (%,%) -> Boolean + characteristic : () -> NonNegativeInteger + coerce : % -> % + coerce : Integer -> % + coerce : % -> OutputForm + gcd : List % -> % + gcdPolynomial : (SparseUnivariatePolynomial %, + SparseUnivariatePolynomial %) -> + SparseUnivariatePolynomial % + hash : % -> SingleInteger + latex : % -> String + lcm : List % -> % + lcm : (%,%) -> % + one? : % -> Boolean + recip : % -> Union(%,"failed") + sample : () -> % + subtractIfCan : (%,%) -> Union(%,"failed") + unit? : % -> Boolean + unitCanonical : % -> % + unitNormal : % -> Record(unit: %,canonical: %,associate: %) + zero? : % -> Boolean + ?+? : (%,%) -> % + ?=? : (%,%) -> Boolean + ?~=? : (%,%) -> Boolean + ?*? : (%,%) -> % + ?*? : (Integer,%) -> % + ?*? : (PositiveInteger,%) -> % + ?*? : (NonNegativeInteger,%) -> % + ?-? : (%,%) -> % + -? : % -> % + ?**? : (%,PositiveInteger) -> % + ?**? : (%,NonNegativeInteger) -> % + ?^? : (%,PositiveInteger) -> % + ?^? : (%,NonNegativeInteger) -> % +\end{verbatim} + +<>= +)abbrev category EUCDOM EuclideanDomain +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ A constructive euclidean domain, i.e. one can divide producing +++ a quotient and a remainder where the remainder is either zero +++ or is smaller (\spadfun{euclideanSize}) than the divisor. +++ +++ Conditional attributes: +++ multiplicativeValuation\tab{25}\spad{Size(a*b)=Size(a)*Size(b)} +++ additiveValuation\tab{25}\spad{Size(a*b)=Size(a)+Size(b)} + +EuclideanDomain(): Category == PrincipalIdealDomain with + sizeLess?: (%,%) -> Boolean + ++ sizeLess?(x,y) tests whether x is strictly + ++ smaller than y with respect to the + ++ \spadfunFrom{euclideanSize}{EuclideanDomain}. + euclideanSize: % -> NonNegativeInteger + ++ euclideanSize(x) returns the euclidean size of the element x. + ++ Error: if x is zero. + divide: (%,%) -> Record(quotient:%,remainder:%) + ++ divide(x,y) divides x by y producing a record containing a + ++ \spad{quotient} and \spad{remainder}, + ++ where the remainder is smaller (see + ++ \spadfunFrom{sizeLess?}{EuclideanDomain}) than the divisor y. + "quo" : (%,%) -> % + ++ x quo y is the same as \spad{divide(x,y).quotient}. + ++ See \spadfunFrom{divide}{EuclideanDomain}. + "rem": (%,%) -> % + ++ x rem y is the same as \spad{divide(x,y).remainder}. + ++ See \spadfunFrom{divide}{EuclideanDomain}. + extendedEuclidean: (%,%) -> Record(coef1:%,coef2:%,generator:%) + -- formerly called princIdeal + ++ extendedEuclidean(x,y) returns a record rec where + ++ \spad{rec.coef1*x+rec.coef2*y = rec.generator} and + ++ rec.generator is a gcd of x and y. + ++ The gcd is unique only + ++ up to associates if \spadatt{canonicalUnitNormal} is not asserted. + ++ \spadfun{principalIdeal} provides a version of this operation + ++ which accepts an arbitrary length list of arguments. + extendedEuclidean: (%,%,%) -> Union(Record(coef1:%,coef2:%),"failed") + -- formerly called expressIdealElt + ++ extendedEuclidean(x,y,z) either returns a record rec + ++ where \spad{rec.coef1*x+rec.coef2*y=z} or returns "failed" + ++ if z cannot be expressed as a linear combination of x and y. + multiEuclidean: (List %,%) -> Union(List %,"failed") + ++ multiEuclidean([f1,...,fn],z) returns a list of coefficients + ++ \spad{[a1, ..., an]} such that + ++ \spad{ z / prod fi = sum aj/fj}. + ++ If no such list of coefficients exists, "failed" is returned. + add + x,y,z: % + l: List % + sizeLess?(x,y) == + zero? y => false + zero? x => true + euclideanSize(x) 0 + zero? y => "failed" + qr:=divide(x,y) + zero?(qr.remainder) => qr.quotient + "failed" + gcd(x,y) == --Euclidean Algorithm + x:=unitCanonical x + y:=unitCanonical y + while not zero? y repeat + (x,y):= (y,x rem y) + y:=unitCanonical y -- this doesn't affect the + -- correctness of Euclid's algorithm, + -- but + -- a) may improve performance + -- b) ensures gcd(x,y)=gcd(y,x) + -- if canonicalUnitNormal + x + IdealElt ==> Record(coef1:%,coef2:%,generator:%) + unitNormalizeIdealElt(s:IdealElt):IdealElt == + (u,c,a):=unitNormal(s.generator) +-- one? a => s + (a = 1) => s + [a*s.coef1,a*s.coef2,c]$IdealElt + extendedEuclidean(x,y) == --Extended Euclidean Algorithm + s1:=unitNormalizeIdealElt([1$%,0$%,x]$IdealElt) + s2:=unitNormalizeIdealElt([0$%,1$%,y]$IdealElt) + zero? y => s1 + zero? x => s2 + while not zero?(s2.generator) repeat + qr:= divide(s1.generator, s2.generator) + s3:=[s1.coef1 - qr.quotient * s2.coef1, + s1.coef2 - qr.quotient * s2.coef2, qr.remainder]$IdealElt + s1:=s2 + s2:=unitNormalizeIdealElt s3 + if not(zero?(s1.coef1)) and not sizeLess?(s1.coef1,y) + then + qr:= divide(s1.coef1,y) + s1.coef1:= qr.remainder + s1.coef2:= s1.coef2 + qr.quotient * x + s1 := unitNormalizeIdealElt s1 + s1 + + TwoCoefs ==> Record(coef1:%,coef2:%) + extendedEuclidean(x,y,z) == + zero? z => [0,0]$TwoCoefs + s:= extendedEuclidean(x,y) + (w:= z exquo s.generator) case "failed" => "failed" + zero? y => + [s.coef1 * w, s.coef2 * w]$TwoCoefs + qr:= divide((s.coef1 * w), y) + [qr.remainder, s.coef2 * w + qr.quotient * x]$TwoCoefs + principalIdeal l == + l = [] => error "empty list passed to principalIdeal" + rest l = [] => + uca:=unitNormal(first l) + [[uca.unit],uca.canonical] + rest rest l = [] => + u:= extendedEuclidean(first l,second l) + [[u.coef1, u.coef2], u.generator] + v:=principalIdeal rest l + u:= extendedEuclidean(first l,v.generator) + [[u.coef1,:[u.coef2*vv for vv in v.coef]],u.generator] + expressIdealMember(l,z) == + z = 0 => [0 for v in l] + pid := principalIdeal l + (q := z exquo (pid.generator)) case "failed" => "failed" + [q*v for v in pid.coef] + multiEuclidean(l,z) == + n := #l + zero? n => error "empty list passed to multiEuclidean" + n = 1 => [z] + l1 := copy l + l2 := split!(l1, n quo 2) + u:= extendedEuclidean(*/l1, */l2, z) + u case "failed" => "failed" + v1 := multiEuclidean(l1,u.coef2) + v1 case "failed" => "failed" + v2 := multiEuclidean(l2,u.coef1) + v2 case "failed" => "failed" + concat(v1,v2) + +@ +<>= +"EUCDOM" + [color=lightblue,href="bookvol10.2.pdf#nameddest=EUCDOM"]; +"EUCDOM" -> "PID" + +@ +<>= +"EuclideanDomain()" + [color=lightblue,href="bookvol10.2.pdf#nameddest=EUCDOM"]; +"EuclideanDomain()" -> "PrincipalIdealDomain()" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"EuclideanDomain()" [color=lightblue]; +"EuclideanDomain()" -> "PrincipalIdealDomain()" + +"PrincipalIdealDomain()" [color=lightblue]; +"PrincipalIdealDomain()" -> "GcdDomain()" + +"GcdDomain()" [color=lightblue]; +"GcdDomain()" -> "IntegralDomain()" + +"IntegralDomain()" [color=lightblue]; +"IntegralDomain()" -> "CommutativeRing()" +"IntegralDomain()" -> "Algebra(a:CommutativeRing)" +"IntegralDomain()" -> "EntireRing()" + +"CommutativeRing()" [color=lightblue]; +"CommutativeRing()" -> "RING..." +"CommutativeRing()" -> "BMODULE..." + +"EntireRing()" [color=lightblue]; +"EntireRing()" -> "RING..." +"EntireRing()" -> "BMODULE..." + +"Algebra(a:CommutativeRing)" [color=lightblue]; +"Algebra(a:CommutativeRing)" -> "RING..." +"Algebra(a:CommutativeRing)" -> "Module(a:CommutativeRing)" + +"Module(a:CommutativeRing)" [color=lightblue]; +"Module(a:CommutativeRing)" -> "BMODULE..." + +"BMODULE..." [color=lightblue]; +"RING..." [color=lightblue]; +} + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{PolynomialFactorizationExplicit}{PFECAT} +\pagepic{ps/v102polynomialfactorizationexplicit.ps}{PFECAT}{0.75} + +{\bf See:}\\ +\pagefrom{UniqueFactorizationDomain}{UFD} + +{\bf Exports:}\\ +\begin{tabular}{lll} +\cross{PFECAT}{0} & +\cross{PFECAT}{1} & +\cross{PFECAT}{associates?} \\ +\cross{PFECAT}{characteristic} & +\cross{PFECAT}{charthRoot} & +\cross{PFECAT}{coerce} \\ +\cross{PFECAT}{conditionP} & +\cross{PFECAT}{exquo} & +\cross{PFECAT}{factor} \\ +\cross{PFECAT}{factorPolynomial} & +\cross{PFECAT}{factorSquareFreePolynomial} & +\cross{PFECAT}{gcd} \\ +\cross{PFECAT}{gcdPolynomial} & +\cross{PFECAT}{hash} & +\cross{PFECAT}{latex} \\ +\cross{PFECAT}{lcm} & +\cross{PFECAT}{one?} & +\cross{PFECAT}{prime?} \\ +\cross{PFECAT}{recip} & +\cross{PFECAT}{sample} & +\cross{PFECAT}{solveLinearPolynomialEquation} \\ +\cross{PFECAT}{squareFree} & +\cross{PFECAT}{squareFreePart} & +\cross{PFECAT}{squareFreePolynomial} \\ +\cross{PFECAT}{subtractIfCan} & +\cross{PFECAT}{unit?} & +\cross{PFECAT}{unitNormal} \\ +\cross{PFECAT}{unitCanonical} & +\cross{PFECAT}{zero?} & +\cross{PFECAT}{?*?} \\ +\cross{PFECAT}{?**?} & +\cross{PFECAT}{?+?} & +\cross{PFECAT}{?-?} \\ +\cross{PFECAT}{-?} & +\cross{PFECAT}{?=?} & +\cross{PFECAT}{?\^{}?} \\ +\cross{PFECAT}{?\~{}=?} && +\end{tabular} + +These are directly exported but not implemented: +\begin{verbatim} + conditionP : Matrix % -> Union(Vector %,"failed") + if $ has CHARNZ + factorPolynomial : + SparseUnivariatePolynomial % -> + Factored SparseUnivariatePolynomial % + factorSquareFreePolynomial : + SparseUnivariatePolynomial % -> + Factored SparseUnivariatePolynomial % + squareFreePolynomial : + SparseUnivariatePolynomial % -> + Factored SparseUnivariatePolynomial % +\end{verbatim} + +These are implemented by this category: +\begin{verbatim} + charthRoot : % -> Union(%,"failed") if $ has CHARNZ + gcdPolynomial : (SparseUnivariatePolynomial %, + SparseUnivariatePolynomial %) -> + SparseUnivariatePolynomial % + solveLinearPolynomialEquation : + (List SparseUnivariatePolynomial %, + SparseUnivariatePolynomial %) -> + Union(List SparseUnivariatePolynomial %,"failed") +\end{verbatim} + +These exports come from UniqueFactorizationDomain(): +\begin{verbatim} + factor : % -> Factored % + squareFree : % -> Factored % + 0 : () -> % + 1 : () -> % + associates? : (%,%) -> Boolean + characteristic : () -> NonNegativeInteger + coerce : % -> % + coerce : Integer -> % + coerce : % -> OutputForm + exquo : (%,%) -> Union(%,"failed") + gcd : List % -> % + gcd : (%,%) -> % + hash : % -> SingleInteger + latex : % -> String + lcm : List % -> % + lcm : (%,%) -> % + one? : % -> Boolean + prime? : % -> Boolean + recip : % -> Union(%,"failed") + sample : () -> % + squareFreePart : % -> % + subtractIfCan : (%,%) -> Union(%,"failed") + unit? : % -> Boolean + unitNormal : % -> Record(unit: %,canonical: %,associate: %) + unitCanonical : % -> % + zero? : % -> Boolean + ?+? : (%,%) -> % + ?=? : (%,%) -> Boolean + ?~=? : (%,%) -> Boolean + ?*? : (%,%) -> % + ?*? : (Integer,%) -> % + ?*? : (PositiveInteger,%) -> % + ?*? : (NonNegativeInteger,%) -> % + ?-? : (%,%) -> % + -? : % -> % + ?**? : (%,PositiveInteger) -> % + ?**? : (%,NonNegativeInteger) -> % + ?^? : (%,PositiveInteger) -> % + ?^? : (%,NonNegativeInteger) -> % +\end{verbatim} + +<>= +)abbrev category PFECAT PolynomialFactorizationExplicit +++ Author: James Davenport +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ This is the category of domains that know "enough" about +++ themselves in order to factor univariate polynomials over themselves. +++ This will be used in future releases for supporting factorization +++ over finitely generated coefficient fields, it is not yet available +++ in the current release of axiom. + +PolynomialFactorizationExplicit(): Category == Definition where + P ==> SparseUnivariatePolynomial % + Definition ==> + UniqueFactorizationDomain with + squareFreePolynomial: P -> Factored(P) + ++ squareFreePolynomial(p) returns the + ++ square-free factorization of the + ++ univariate polynomial p. + factorPolynomial: P -> Factored(P) + ++ factorPolynomial(p) returns the factorization + ++ into irreducibles of the univariate polynomial p. + factorSquareFreePolynomial: P -> Factored(P) + ++ factorSquareFreePolynomial(p) factors the + ++ univariate polynomial p into irreducibles + ++ where p is known to be square free + ++ and primitive with respect to its main variable. + gcdPolynomial: (P, P) -> P + ++ gcdPolynomial(p,q) returns the gcd of the univariate + ++ polynomials p qnd q. + -- defaults to Euclidean, but should be implemented via + -- modular or p-adic methods. + solveLinearPolynomialEquation: (List P, P) -> Union(List P,"failed") + ++ solveLinearPolynomialEquation([f1, ..., fn], g) + ++ (where the fi are relatively prime to each other) + ++ returns a list of ai such that + ++ \spad{g/prod fi = sum ai/fi} + ++ or returns "failed" if no such list of ai's exists. + if % has CharacteristicNonZero then + conditionP: Matrix % -> Union(Vector %,"failed") + ++ conditionP(m) returns a vector of elements, not all zero, + ++ whose \spad{p}-th powers (p is the characteristic of the domain) + ++ are a solution of the homogenous linear system represented + ++ by m, or "failed" is there is no such vector. + charthRoot: % -> Union(%,"failed") + ++ charthRoot(r) returns the \spad{p}-th root of r, or "failed" + ++ if none exists in the domain. + -- this is a special case of conditionP, but often the one we want + add + gcdPolynomial(f,g) == + zero? f => g + zero? g => f + cf:=content f + if not one? cf then f:=(f exquo cf)::P + cg:=content g + if not one? cg then g:=(g exquo cg)::P + ans:=subResultantGcd(f,g)$P + gcd(cf,cg)*(ans exquo content ans)::P + if % has CharacteristicNonZero then + charthRoot f == + -- to take p'th root of f, solve the system X-fY=0, + -- so solution is [x,y] + -- with x^p=X and y^p=Y, then (x/y)^p = f + zero? f => 0 + m:Matrix % := matrix [[1,-f]] + ans:= conditionP m + ans case "failed" => "failed" + (ans.1) exquo (ans.2) + if % has Field then + solveLinearPolynomialEquation(lf,g) == + multiEuclidean(lf,g)$P + else solveLinearPolynomialEquation(lf,g) == + LPE ==> LinearPolynomialEquationByFractions % + solveLinearPolynomialEquationByFractions(lf,g)$LPE + +@ +<>= +"PFECAT" + [color=lightblue,href="bookvol10.2.pdf#nameddest=PFECAT"]; +"PFECAT" -> "UFD" + +@ +<>= +"PolynomialFactorizationExplicit()" + [color=lightblue,href="bookvol10.2.pdf#nameddest=PFECAT"]; +"PolynomialFactorizationExplicit()" -> "UniqueFactorizationDomain()" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"PolynomialFactorizationExplicit()" [color=lightblue]; +"PolynomialFactorizationExplicit()" -> "UniqueFactorizationDomain()" + +"UniqueFactorizationDomain()" [color=lightblue]; +"UniqueFactorizationDomain()" -> "GcdDomain()" + +"GcdDomain()" [color=lightblue]; +"GcdDomain()" -> "IntegralDomain()" + +"IntegralDomain()" [color=lightblue]; +"IntegralDomain()" -> "CommutativeRing()" +"IntegralDomain()" -> "Algebra(a:CommutativeRing)" +"IntegralDomain()" -> "EntireRing()" + +"CommutativeRing()" [color=lightblue]; +"CommutativeRing()" -> "RING..." +"CommutativeRing()" -> "BMODULE..." + +"EntireRing()" [color=lightblue]; +"EntireRing()" -> "RING..." +"EntireRing()" -> "BMODULE..." + +"Algebra(a:CommutativeRing)" [color=lightblue]; +"Algebra(a:CommutativeRing)" -> "RING..." +"Algebra(a:CommutativeRing)" -> "Module(a:CommutativeRing)" + +"Module(a:CommutativeRing)" [color=lightblue]; +"Module(a:CommutativeRing)" -> "BMODULE..." + +"BMODULE..." [color=lightblue]; +"RING..." [color=lightblue]; +} + +@ +\chapter{Category Layer 16} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{Field}{FIELD} +\pagepic{ps/v102field.ps}{FIELD}{1.00} + +{\bf See:}\\ +\pagefrom{DivisionRing}{DIVRING} +\pagefrom{EuclideanDomain}{EUCDOM} +\pagefrom{UniqueFactorizationDomain}{UFD} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{FIELD}{0} & +\cross{FIELD}{1} & +\cross{FIELD}{associates?} & +\cross{FIELD}{characteristic} & +\cross{FIELD}{coerce} \\ +\cross{FIELD}{divide} & +\cross{FIELD}{euclideanSize} & +\cross{FIELD}{expressIdealMember} & +\cross{FIELD}{exquo} & +\cross{FIELD}{extendedEuclidean} \\ +\cross{FIELD}{factor} & +\cross{FIELD}{gcd} & +\cross{FIELD}{gcdPolynomial} & +\cross{FIELD}{hash} & +\cross{FIELD}{inv} \\ +\cross{FIELD}{latex} & +\cross{FIELD}{lcm} & +\cross{FIELD}{multiEuclidean} & +\cross{FIELD}{one?} & +\cross{FIELD}{prime?} \\ +\cross{FIELD}{principalIdeal} & +\cross{FIELD}{recip} & +\cross{FIELD}{sample} & +\cross{FIELD}{sizeLess?} & +\cross{FIELD}{squareFree} \\ +\cross{FIELD}{squareFreePart} & +\cross{FIELD}{subtractIfCan} & +\cross{FIELD}{unit?} & +\cross{FIELD}{unitCanonical} & +\cross{FIELD}{unitNormal} \\ +\cross{FIELD}{zero?} & +\cross{FIELD}{?*?} & +\cross{FIELD}{?**?} & +\cross{FIELD}{?+?} & +\cross{FIELD}{?-?} \\ +\cross{FIELD}{-?} & +\cross{FIELD}{?/?} & +\cross{FIELD}{?=?} & +\cross{FIELD}{?\^{}?} & +\cross{FIELD}{?quo?} \\ +\cross{FIELD}{?rem?} & +\cross{FIELD}{?\~{}=?} &&& +\end{tabular} + +These are implemented by this category: +\begin{verbatim} + associates? : (%,%) -> Boolean + divide : (%,%) -> Record(quotient: %,remainder: %) + euclideanSize : % -> NonNegativeInteger + exquo : (%,%) -> Union(%,"failed") + factor : % -> Factored % + gcd : (%,%) -> % + inv : % -> % + prime? : % -> Boolean + squareFree : % -> Factored % + unitCanonical : % -> % + unitNormal : % -> Record(unit: %,canonical: %,associate: %) + ?/? : (%,%) -> % +\end{verbatim} + +These exports come from EuclideanDomain(): +\begin{verbatim} + 0 : () -> % + 1 : () -> % + characteristic : () -> NonNegativeInteger + coerce : % -> % + coerce : Integer -> % + coerce : % -> OutputForm + expressIdealMember : (List %,%) -> Union(List %,"failed") + extendedEuclidean : (%,%,%) -> Union(Record(coef1: %,coef2: %),"failed") + extendedEuclidean : (%,%) -> Record(coef1: %,coef2: %,generator: %) + gcd : List % -> % + gcdPolynomial : (SparseUnivariatePolynomial %, + SparseUnivariatePolynomial %) -> + SparseUnivariatePolynomial % + hash : % -> SingleInteger + latex : % -> String + lcm : List % -> % + lcm : (%,%) -> % + multiEuclidean : (List %,%) -> Union(List %,"failed") + one? : % -> Boolean + principalIdeal : List % -> Record(coef: List %,generator: %) + recip : % -> Union(%,"failed") + sample : () -> % + sizeLess? : (%,%) -> Boolean + subtractIfCan : (%,%) -> Union(%,"failed") + unit? : % -> Boolean + zero? : % -> Boolean + ?+? : (%,%) -> % + ?=? : (%,%) -> Boolean + ?~=? : (%,%) -> Boolean + ?*? : (%,%) -> % + ?*? : (Integer,%) -> % + ?*? : (PositiveInteger,%) -> % + ?*? : (NonNegativeInteger,%) -> % + ?-? : (%,%) -> % + -? : % -> % + ?**? : (%,PositiveInteger) -> % + ?**? : (%,NonNegativeInteger) -> % + ?^? : (%,PositiveInteger) -> % + ?^? : (%,NonNegativeInteger) -> % + ?quo? : (%,%) -> % + ?rem? : (%,%) -> % +\end{verbatim} + +These exports come from UniqueFactorizationDomain(): +\begin{verbatim} + squareFreePart : % -> % +\end{verbatim} + +These exports come from DivisionRing(): +\begin{verbatim} + coerce : Fraction Integer -> % + ?*? : (Fraction Integer,%) -> % + ?*? : (%,Fraction Integer) -> % + ?**? : (%,Integer) -> % + ?^? : (%,Integer) -> % +\end{verbatim} + +<>= +)abbrev category FIELD Field +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ The category of commutative fields, i.e. commutative rings +++ where all non-zero elements have multiplicative inverses. +++ The \spadfun{factor} operation while trivial is useful to have defined. +++ +++ Axioms: +++ \spad{a*(b/a) = b} +++ \spad{inv(a) = 1/a} + +Field(): Category == Join(EuclideanDomain,UniqueFactorizationDomain, + DivisionRing) with + "/": (%,%) -> % + ++ x/y divides the element x by the element y. + ++ Error: if y is 0. + canonicalUnitNormal ++ either 0 or 1. + canonicalsClosed ++ since \spad{0*0=0}, \spad{1*1=1} + add + x,y: % + n: Integer + UCA ==> Record(unit:%,canonical:%,associate:%) + unitNormal(x) == + if zero? x then [1$%,0$%,1$%]$UCA else [x,1$%,inv(x)]$UCA + unitCanonical(x) == if zero? x then x else 1 + associates?(x,y) == if zero? x then zero? y else not(zero? y) + inv x ==((u:=recip x) case "failed" => error "not invertible"; u) + x exquo y == (y=0 => "failed"; x / y) + gcd(x,y) == 1 + euclideanSize(x) == 0 + prime? x == false + squareFree x == x::Factored(%) + factor x == x::Factored(%) + x / y == (zero? y => error "catdef: division by zero"; x * inv(y)) + divide(x,y) == [x / y,0] + +@ +<>= +"FIELD" + [color=lightblue,href="bookvol10.2.pdf#nameddest=FIELD"]; +"FIELD" -> "EUCDOM" +"FIELD" -> "UFD" +"FIELD" -> "DIVRING" + +@ +<>= +"Field()" + [color=lightblue,href="bookvol10.2.pdf#nameddest=FIELD"]; +"Field()" -> "EuclideanDomain()" +"Field()" -> "UniqueFactorizationDomain()" +"Field()" -> "DivisionRing()" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"Field()" [color=lightblue]; +"Field()" -> "EuclideanDomain()" +"Field()" -> "UniqueFactorizationDomain()" +"Field()" -> "DIVRING..." + +"EuclideanDomain()" [color=lightblue]; +"EuclideanDomain()" -> "PrincipalIdealDomain()" + +"UniqueFactorizationDomain()" [color=lightblue]; +"UniqueFactorizationDomain()" -> "GCDDOM..." + +"PrincipalIdealDomain()" [color=lightblue]; +"PrincipalIdealDomain()" -> "GCDDOM..." + +"DIVRING..." [color=lightblue]; +"GCDDOM..." [color=lightblue]; +} @ \chapter{Temporary Placeholders} @@ -13358,6 +17753,1349 @@ Note that this code is not included in the generated catdef.spad file. 12 0 13 2 0 14 12 0 15 1 0 10 0 11)))))) (QUOTE |lookupComplete|))) @ +\section{COMRING.lsp BOOTSTRAP} +{\bf COMRING} depends on itself. We need to break this cycle to build +the algebra. So we keep a cached copy of the translated {\bf COMRING} +category which we can write into the {\bf MID} directory. We compile +the lisp code and copy the {\bf COMRING.o} file to the {\bf OUT} directory. +This is eventually forcibly replaced by a recompiled version. + +Note that this code is not included in the generated catdef.spad file. + +<>= + +(|/VERSIONCHECK| 2) + +(SETQ |CommutativeRing;AL| (QUOTE NIL)) + +(DEFUN |CommutativeRing| NIL + (LET (#:G82892) + (COND + (|CommutativeRing;AL|) + (T (SETQ |CommutativeRing;AL| (|CommutativeRing;|)))))) + +(DEFUN |CommutativeRing;| NIL + (PROG (#1=#:G82890) + (RETURN + (PROG1 + (LETT #1# + (|Join| + (|Ring|) + (|BiModule| (QUOTE |$|) (QUOTE |$|)) + (|mkCategory| + (QUOTE |package|) + NIL + (QUOTE (((|commutative| "*") T))) + (QUOTE NIL) + NIL)) + |CommutativeRing|) + (SETELT #1# 0 (QUOTE (|CommutativeRing|))))))) + +(MAKEPROP (QUOTE |CommutativeRing|) (QUOTE NILADIC) T) + +@ +\section{DIFRING.lsp BOOTSTRAP} +{\bf DIFRING} needs {\bf INT} which needs {\bf DIFRING}. +We need to break this cycle to build the algebra. So we keep a +cached copy of the translated {\bf DIFRING} category which we can write +into the {\bf MID} directory. We compile the lisp code and copy the +{\bf DIFRING.o} file to the {\bf OUT} directory. This is eventually +forcibly replaced by a recompiled version. + +Note that this code is not included in the generated catdef.spad file. + +<>= + +(|/VERSIONCHECK| 2) + +(SETQ |DifferentialRing;AL| (QUOTE NIL)) + +(DEFUN |DifferentialRing| NIL + (LET (#:G84565) + (COND + (|DifferentialRing;AL|) + (T (SETQ |DifferentialRing;AL| (|DifferentialRing;|)))))) + +(DEFUN |DifferentialRing;| NIL + (PROG (#1=#:G84563) + (RETURN + (PROG1 + (LETT #1# + (|Join| + (|Ring|) + (|mkCategory| + (QUOTE |domain|) + (QUOTE + (((|differentiate| (|$| |$|)) T) + ((D (|$| |$|)) T) + ((|differentiate| (|$| |$| (|NonNegativeInteger|))) T) + ((D (|$| |$| (|NonNegativeInteger|))) T))) + NIL + (QUOTE ((|NonNegativeInteger|))) + NIL)) + |DifferentialRing|) + (SETELT #1# 0 (QUOTE (|DifferentialRing|))))))) + +(MAKEPROP (QUOTE |DifferentialRing|) (QUOTE NILADIC) T) + +@ +\section{DIFRING-.lsp BOOTSTRAP} +{\bf DIFRING-} needs {\bf DIFRING}. +We need to break this cycle to build the algebra. So we keep a +cached copy of the translated {\bf DIFRING-} category which we can write +into the {\bf MID} directory. We compile the lisp code and copy the +{\bf DIFRING-.o} file to the {\bf OUT} directory. This is eventually +forcibly replaced by a recompiled version. + +Note that this code is not included in the generated catdef.spad file. + +<>= + +(|/VERSIONCHECK| 2) + +(DEFUN |DIFRING-;D;2S;1| (|r| |$|) + (SPADCALL |r| (QREFELT |$| 7))) + +(DEFUN |DIFRING-;differentiate;SNniS;2| (|r| |n| |$|) + (PROG (|i|) + (RETURN + (SEQ + (SEQ + (LETT |i| 1 |DIFRING-;differentiate;SNniS;2|) + G190 + (COND ((QSGREATERP |i| |n|) (GO G191))) + (SEQ + (EXIT + (LETT |r| + (SPADCALL |r| (QREFELT |$| 7)) + |DIFRING-;differentiate;SNniS;2|))) + (LETT |i| (QSADD1 |i|) |DIFRING-;differentiate;SNniS;2|) + (GO G190) + G191 + (EXIT NIL)) + (EXIT |r|))))) + +(DEFUN |DIFRING-;D;SNniS;3| (|r| |n| |$|) + (SPADCALL |r| |n| (QREFELT |$| 11))) + +(DEFUN |DifferentialRing&| (|#1|) + (PROG (|DV$1| |dv$| |$| |pv$|) + (RETURN + (PROGN + (LETT |DV$1| (|devaluate| |#1|) . #1=(|DifferentialRing&|)) + (LETT |dv$| (LIST (QUOTE |DifferentialRing&|) |DV$1|) . #1#) + (LETT |$| (GETREFV 13) . #1#) + (QSETREFV |$| 0 |dv$|) + (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #1#)) + (|stuffDomainSlots| |$|) + (QSETREFV |$| 6 |#1|) + |$|)))) + +(MAKEPROP + (QUOTE |DifferentialRing&|) + (QUOTE |infovec|) + (LIST + (QUOTE + #(NIL NIL NIL NIL NIL NIL + (|local| |#1|) + (0 . |differentiate|) + |DIFRING-;D;2S;1| + (|NonNegativeInteger|) + |DIFRING-;differentiate;SNniS;2| + (5 . |differentiate|) + |DIFRING-;D;SNniS;3|)) + (QUOTE #(|differentiate| 11 D 17)) + (QUOTE NIL) + (CONS + (|makeByteWordVec2| 1 (QUOTE NIL)) + (CONS + (QUOTE #()) + (CONS + (QUOTE #()) + (|makeByteWordVec2| 12 + (QUOTE + (1 6 0 0 7 2 6 0 0 9 11 2 0 0 0 9 10 2 0 0 0 9 12 1 0 0 0 8)))))) + (QUOTE |lookupComplete|))) + +@ +\section{DIVRING.lsp BOOTSTRAP} +{\bf DIVRING} depends on {\bf QFCAT} which eventually depends on +{\bf DIVRING}. We need to break this cycle to build +the algebra. So we keep a cached copy of the translated {\bf DIVRING} +category which we can write into the {\bf MID} directory. We compile +the lisp code and copy the {\bf DIVRING.o} file to the {\bf OUT} directory. +This is eventually forcibly replaced by a recompiled version. + +Note that this code is not included in the generated catdef.spad file. + +<>= + +(|/VERSIONCHECK| 2) + +(SETQ |DivisionRing;AL| (QUOTE NIL)) + +(DEFUN |DivisionRing| NIL + (LET (#:G84035) + (COND + (|DivisionRing;AL|) + (T (SETQ |DivisionRing;AL| (|DivisionRing;|)))))) + +(DEFUN |DivisionRing;| NIL + (PROG (#1=#:G84033) + (RETURN + (PROG1 + (LETT #1# + (|sublisV| + (PAIR + (QUOTE (#2=#:G84032)) + (LIST (QUOTE (|Fraction| (|Integer|))))) + (|Join| + (|EntireRing|) + (|Algebra| (QUOTE #2#)) + (|mkCategory| + (QUOTE |domain|) + (QUOTE ( + ((|**| (|$| |$| (|Integer|))) T) + ((|^| (|$| |$| (|Integer|))) T) + ((|inv| (|$| |$|)) T))) + NIL + (QUOTE ((|Integer|))) + NIL))) + |DivisionRing|) + (SETELT #1# 0 (QUOTE (|DivisionRing|))))))) + +(MAKEPROP (QUOTE |DivisionRing|) (QUOTE NILADIC) T) + +@ +\section{DIVRING-.lsp BOOTSTRAP} +{\bf DIVRING-} depends on {\bf DIVRING}. We need to break this cycle to build +the algebra. So we keep a cached copy of the translated {\bf DIVRING-} +category which we can write into the {\bf MID} directory. We compile +the lisp code and copy the {\bf DIVRING-.o} file to the {\bf OUT} directory. +This is eventually forcibly replaced by a recompiled version. + +Note that this code is not included in the generated catdef.spad file. + +<>= + +(|/VERSIONCHECK| 2) + +(DEFUN |DIVRING-;^;SIS;1| (|x| |n| |$|) + (SPADCALL |x| |n| (QREFELT |$| 8))) + +(DEFUN |DIVRING-;**;SIS;2| (|x| |n| |$|) + (COND + ((ZEROP |n|) (|spadConstant| |$| 10)) + ((SPADCALL |x| (QREFELT |$| 12)) + (COND + ((|<| |n| 0) (|error| "division by zero")) + ((QUOTE T) |x|))) + ((|<| |n| 0) + (SPADCALL (SPADCALL |x| (QREFELT |$| 14)) (|-| |n|) (QREFELT |$| 17))) + ((QUOTE T) (SPADCALL |x| |n| (QREFELT |$| 17))))) + +(DEFUN |DIVRING-;*;F2S;3| (|q| |x| |$|) + (SPADCALL + (SPADCALL + (SPADCALL |q| (QREFELT |$| 20)) + (SPADCALL + (SPADCALL (SPADCALL |q| (QREFELT |$| 21)) (QREFELT |$| 22)) + (QREFELT |$| 14)) + (QREFELT |$| 23)) + |x| + (QREFELT |$| 24))) + +(DEFUN |DivisionRing&| (|#1|) + (PROG (|DV$1| |dv$| |$| |pv$|) + (RETURN + (PROGN + (LETT |DV$1| (|devaluate| |#1|) . #1=(|DivisionRing&|)) + (LETT |dv$| (LIST (QUOTE |DivisionRing&|) |DV$1|) . #1#) + (LETT |$| (GETREFV 27) . #1#) + (QSETREFV |$| 0 |dv$|) + (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #1#)) + (|stuffDomainSlots| |$|) + (QSETREFV |$| 6 |#1|) + |$|)))) + +(MAKEPROP + (QUOTE |DivisionRing&|) + (QUOTE |infovec|) + (LIST + (QUOTE + #(NIL NIL NIL NIL NIL NIL + (|local| |#1|) + (|Integer|) + (0 . |**|) + |DIVRING-;^;SIS;1| + (6 . |One|) + (|Boolean|) + (10 . |zero?|) + (15 . |Zero|) + (19 . |inv|) + (|PositiveInteger|) + (|RepeatedSquaring| 6) + (24 . |expt|) + |DIVRING-;**;SIS;2| + (|Fraction| 7) + (30 . |numer|) + (35 . |denom|) + (40 . |coerce|) + (45 . |*|) + (51 . |*|) + |DIVRING-;*;F2S;3| + (|NonNegativeInteger|))) + (QUOTE #(|^| 57 |**| 63 |*| 69)) + (QUOTE NIL) + (CONS + (|makeByteWordVec2| 1 (QUOTE NIL)) + (CONS + (QUOTE #()) + (CONS + (QUOTE #()) + (|makeByteWordVec2| 25 + (QUOTE + (2 6 0 0 7 8 0 6 0 10 1 6 11 0 12 0 6 0 13 1 6 0 0 14 2 16 6 + 6 15 17 1 19 7 0 20 1 19 7 0 21 1 6 0 7 22 2 6 0 7 0 23 2 6 + 0 0 0 24 2 0 0 0 7 9 2 0 0 0 7 18 2 0 0 19 0 25)))))) + (QUOTE |lookupComplete|))) + +@ +\section{EUCDOM.lsp BOOTSTRAP} +{\bf EUCDOM} depends on {\bf INT} which depends on {\bf EUCDOM}. +We need to break this cycle to build +the algebra. So we keep a cached copy of the translated {\bf EUCDOM} +category which we can write into the {\bf MID} directory. We compile +the lisp code and copy the {\bf EUCDOM.o} file to the {\bf OUT} directory. +This is eventually forcibly replaced by a recompiled version. + +Note that this code is not included in the generated catdef.spad file. + +\subsection{The Lisp Implementation} +\subsubsection{EUCDOM;VersionCheck} +This implements the bootstrap code for {\bf EuclideanDomain}. +The call to {\bf VERSIONCHECK} is a legacy check to ensure that +we did not load algebra code from a previous system version (which +would not run due to major surgical changes in the system) without +recompiling. +<>= +(|/VERSIONCHECK| 2) + +@ +\subsubsection{The Domain Cache Variable} +We create a variable which is formed by concatenating the string +``{\bf ;AL}'' to the domain name forming, in this case, +``{\bf EuclideanDomain;AL}''. The variable has the initial value +at load time of a list of one element, {\bf NIL}. This list is +a data structure that will be modified to hold an executable +function. This function is created the first time the domain is +used which it replaces the {\bf NIL}. +<>= +(SETQ |EuclideanDomain;AL| (QUOTE NIL)) + +@ +\subsubsection{The Domain Function} +When you call a domain the code is pretty simple at the top +level. This code will check to see if this domain has ever been +used. It does this by checking the value of the cached domain +variable (which is the domain name {\bf EuclideanDomain} concatenated +with the string ``{\bf ;AL}'' to form the cache variable name which +is {\bf EuclideanDomain;AL}). + +If this value is NIL we have never executed this function +before. If it is not NIL we have executed this function before and +we need only return the cached function which was stored in the +cache variable. + +If this is the first time this function is called, the cache +variable is NIL and we execute the other branch of the conditional. +This calls a function which +\begin{enumerate} +\item creates a procedure +\item returns the procedure as a value. +\end{enumerate} +This procedure replaces the cached variable {\bf EuclideanDomain;AL} +value so it will be non-NIL the second time this domain is used. +Thus the work of building the domain only happens once. + +If this function has never been called before we call the +<>= +(DEFUN |EuclideanDomain| NIL + (LET (#:G83585) + (COND + (|EuclideanDomain;AL|) + (T (SETQ |EuclideanDomain;AL| (|EuclideanDomain;|)))))) + +@ +\subsubsection{The First Call Domain Function} +<>= +(DEFUN |EuclideanDomain;| NIL + (PROG (#1=#:G83583) + (RETURN + (PROG1 + (LETT #1# + (|Join| + (|PrincipalIdealDomain|) + (|mkCategory| + (QUOTE |domain|) + (QUOTE ( + ((|sizeLess?| ((|Boolean|) |$| |$|)) T) + ((|euclideanSize| ((|NonNegativeInteger|) |$|)) T) + ((|divide| + ((|Record| + (|:| |quotient| |$|) + (|:| |remainder| |$|)) + |$| |$|)) T) + ((|quo| (|$| |$| |$|)) T) + ((|rem| (|$| |$| |$|)) T) + ((|extendedEuclidean| + ((|Record| + (|:| |coef1| |$|) + (|:| |coef2| |$|) + (|:| |generator| |$|)) + |$| |$|)) T) + ((|extendedEuclidean| + ((|Union| + (|Record| (|:| |coef1| |$|) (|:| |coef2| |$|)) + "failed") + |$| |$| |$|)) T) + ((|multiEuclidean| + ((|Union| + (|List| |$|) + "failed") + (|List| |$|) |$|)) T))) + NIL + (QUOTE ((|List| |$|) (|NonNegativeInteger|) (|Boolean|))) + NIL)) + |EuclideanDomain|) + (SETELT #1# 0 (QUOTE (|EuclideanDomain|))))))) + +@ +\subsubsection{EUCDOM;MAKEPROP} +<>= +(MAKEPROP (QUOTE |EuclideanDomain|) (QUOTE NILADIC) T) + +@ +<>= +<> +<> +<> +<> +<> +@ +\section{EUCDOM-.lsp BOOTSTRAP} +{\bf EUCDOM-} depends on {\bf EUCDOM}. We need to break this cycle to build +the algebra. So we keep a cached copy of the translated {\bf EUCDOM-} +category which we can write into the {\bf MID} directory. We compile +the lisp code and copy the {\bf EUCDOM-.o} file to the {\bf OUT} directory. +This is eventually forcibly replaced by a recompiled version. + +Note that this code is not included in the generated catdef.spad file. + +\subsection{The Lisp Implementation} +\subsubsection{EUCDOM-;VersionCheck} +This implements the bootstrap code for {\bf EuclideanDomain}. +The call to {\bf VERSIONCHECK} is a legacy check to ensure that +we did not load algebra code from a previous system version (which +would not run due to major surgical changes in the system) without +recompiling. +<>= +(|/VERSIONCHECK| 2) + +@ +\subsubsection{EUCDOM-;sizeLess?;2SB;1} +<>= +(DEFUN |EUCDOM-;sizeLess?;2SB;1| (|x| |y| $) + (COND + ((SPADCALL |y| (QREFELT $ 8)) (QUOTE NIL)) + ((SPADCALL |x| (QREFELT $ 8)) (QUOTE T)) + ((QUOTE T) + (< (SPADCALL |x| (QREFELT $ 10)) (SPADCALL |y| (QREFELT $ 10)))))) + +@ + +\subsubsection{EUCDOM-;quo;3S;2} +<>= +(DEFUN |EUCDOM-;quo;3S;2| (|x| |y| $) + (QCAR (SPADCALL |x| |y| (QREFELT $ 13)))) + +@ +\subsubsection{EUCDOM-;rem;3S;3} +<>= +(DEFUN |EUCDOM-;rem;3S;3| (|x| |y| $) + (QCDR (SPADCALL |x| |y| (QREFELT $ 13)))) + +@ +\subsubsection{EUCDOM-;exquo;2SU;4} +<>= +(DEFUN |EUCDOM-;exquo;2SU;4| (|x| |y| $) + (PROG (|qr|) + (RETURN + (SEQ + (COND + ((SPADCALL |x| (QREFELT $ 8)) (CONS 0 (|spadConstant| $ 16))) + ((SPADCALL |y| (QREFELT $ 8)) (CONS 1 "failed")) + ((QUOTE T) + (SEQ + (LETT |qr| + (SPADCALL |x| |y| (QREFELT $ 13)) + |EUCDOM-;exquo;2SU;4|) + (EXIT + (COND + ((SPADCALL (QCDR |qr|) (QREFELT $ 8)) (CONS 0 (QCAR |qr|))) + ((QUOTE T) (CONS 1 "failed"))))))))))) + +@ +\subsubsection{EUCDOM-;gcd;3S;5} +<>= +(DEFUN |EUCDOM-;gcd;3S;5| (|x| |y| $) + (PROG (|#G13| |#G14|) + (RETURN + (SEQ + (LETT |x| (SPADCALL |x| (QREFELT $ 19)) |EUCDOM-;gcd;3S;5|) + (LETT |y| (SPADCALL |y| (QREFELT $ 19)) |EUCDOM-;gcd;3S;5|) + (SEQ G190 + (COND + ((NULL + (COND + ((SPADCALL |y| (QREFELT $ 8)) (QUOTE NIL)) + ((QUOTE T) (QUOTE T)))) + (GO G191))) + (SEQ + (PROGN + (LETT |#G13| |y| |EUCDOM-;gcd;3S;5|) + (LETT |#G14| (SPADCALL |x| |y| (QREFELT $ 20)) |EUCDOM-;gcd;3S;5|) + (LETT |x| |#G13| |EUCDOM-;gcd;3S;5|) + (LETT |y| |#G14| |EUCDOM-;gcd;3S;5|)) + (EXIT + (LETT |y| (SPADCALL |y| (QREFELT $ 19)) |EUCDOM-;gcd;3S;5|))) + NIL + (GO G190) + G191 + (EXIT NIL)) + (EXIT |x|))))) + +@ +\subsubsection{EUCDOM-;unitNormalizeIdealElt} +<>= +(DEFUN |EUCDOM-;unitNormalizeIdealElt| (|s| $) + (PROG (|#G16| |u| |c| |a|) + (RETURN + (SEQ + (PROGN + (LETT |#G16| + (SPADCALL (QVELT |s| 2) (QREFELT $ 23)) + |EUCDOM-;unitNormalizeIdealElt|) + (LETT |u| (QVELT |#G16| 0) |EUCDOM-;unitNormalizeIdealElt|) + (LETT |c| (QVELT |#G16| 1) |EUCDOM-;unitNormalizeIdealElt|) + (LETT |a| (QVELT |#G16| 2) |EUCDOM-;unitNormalizeIdealElt|) + |#G16|) + (EXIT + (COND + ((SPADCALL |a| (|spadConstant| $ 24) (QREFELT $ 25)) |s|) + ((QUOTE T) + (VECTOR + (SPADCALL |a| (QVELT |s| 0) (QREFELT $ 26)) + (SPADCALL |a| (QVELT |s| 1) (QREFELT $ 26)) + |c|)))))))) + +@ +\subsubsection{EUCDOM-;extendedEuclidean;2SR;7} +<>= +(DEFUN |EUCDOM-;extendedEuclidean;2SR;7| (|x| |y| $) + (PROG (|s3| |s2| |qr| |s1|) + (RETURN + (SEQ + (LETT |s1| + (|EUCDOM-;unitNormalizeIdealElt| + (VECTOR (|spadConstant| $ 24) (|spadConstant| $ 16) |x|) + $) + |EUCDOM-;extendedEuclidean;2SR;7|) + (LETT |s2| + (|EUCDOM-;unitNormalizeIdealElt| + (VECTOR (|spadConstant| $ 16) (|spadConstant| $ 24) |y|) + $) + |EUCDOM-;extendedEuclidean;2SR;7|) + (EXIT + (COND + ((SPADCALL |y| (QREFELT $ 8)) |s1|) + ((SPADCALL |x| (QREFELT $ 8)) |s2|) + ((QUOTE T) + (SEQ + (SEQ + G190 + (COND + ((NULL + (COND + ((SPADCALL (QVELT |s2| 2) (QREFELT $ 8)) (QUOTE NIL)) + ((QUOTE T) (QUOTE T)))) + (GO G191))) + (SEQ + (LETT |qr| + (SPADCALL (QVELT |s1| 2) (QVELT |s2| 2) (QREFELT $ 13)) + |EUCDOM-;extendedEuclidean;2SR;7|) + (LETT |s3| + (VECTOR + (SPADCALL (QVELT |s1| 0) + (SPADCALL (QCAR |qr|) (QVELT |s2| 0) (QREFELT $ 26)) + (QREFELT $ 27)) + (SPADCALL (QVELT |s1| 1) + (SPADCALL (QCAR |qr|) (QVELT |s2| 1) (QREFELT $ 26)) + (QREFELT $ 27)) + (QCDR |qr|)) + |EUCDOM-;extendedEuclidean;2SR;7|) + (LETT |s1| |s2| |EUCDOM-;extendedEuclidean;2SR;7|) + (EXIT + (LETT |s2| + (|EUCDOM-;unitNormalizeIdealElt| |s3| $) + |EUCDOM-;extendedEuclidean;2SR;7|))) + NIL + (GO G190) + G191 + (EXIT NIL)) + (COND + ((NULL (SPADCALL (QVELT |s1| 0) (QREFELT $ 8))) + (COND + ((NULL (SPADCALL (QVELT |s1| 0) |y| (QREFELT $ 28))) + (SEQ + (LETT |qr| + (SPADCALL (QVELT |s1| 0) |y| (QREFELT $ 13)) + |EUCDOM-;extendedEuclidean;2SR;7|) + (QSETVELT |s1| 0 (QCDR |qr|)) + (QSETVELT |s1| 1 + (SPADCALL (QVELT |s1| 1) + (SPADCALL (QCAR |qr|) |x| (QREFELT $ 26)) (QREFELT $ 29))) + (EXIT + (LETT |s1| + (|EUCDOM-;unitNormalizeIdealElt| |s1| $) + |EUCDOM-;extendedEuclidean;2SR;7|))))))) + (EXIT |s1|))))))))) + +@ +\subsubsection{EUCDOM-;extendedEuclidean;3SU;8} +<>= +(DEFUN |EUCDOM-;extendedEuclidean;3SU;8| (|x| |y| |z| $) + (PROG (|s| |w| |qr|) + (RETURN + (SEQ + (COND + ((SPADCALL |z| (QREFELT $ 8)) + (CONS 0 (CONS (|spadConstant| $ 16) (|spadConstant| $ 16)))) + ((QUOTE T) + (SEQ + (LETT |s| + (SPADCALL |x| |y| (QREFELT $ 32)) + |EUCDOM-;extendedEuclidean;3SU;8|) + (LETT |w| + (SPADCALL |z| (QVELT |s| 2) (QREFELT $ 33)) + |EUCDOM-;extendedEuclidean;3SU;8|) + (EXIT + (COND + ((QEQCAR |w| 1) (CONS 1 "failed")) + ((SPADCALL |y| (QREFELT $ 8)) + (CONS 0 + (CONS (SPADCALL (QVELT |s| 0) (QCDR |w|) (QREFELT $ 26)) + (SPADCALL (QVELT |s| 1) (QCDR |w|) (QREFELT $ 26))))) + ((QUOTE T) + (SEQ + (LETT |qr| + (SPADCALL + (SPADCALL (QVELT |s| 0) (QCDR |w|) (QREFELT $ 26)) + |y| + (QREFELT $ 13)) + |EUCDOM-;extendedEuclidean;3SU;8|) + (EXIT + (CONS 0 + (CONS (QCDR |qr|) + (SPADCALL + (SPADCALL (QVELT |s| 1) (QCDR |w|) (QREFELT $ 26)) + (SPADCALL (QCAR |qr|) |x| (QREFELT $ 26)) + (QREFELT $ 29)))))))))))))))) + +@ +\subsubsection{EUCDOM-;principalIdeal;LR;9} +<>= +(DEFUN |EUCDOM-;principalIdeal;LR;9| (|l| $) + (PROG (|uca| |v| |u| #0=#:G1497 |vv| #1=#:G1498) + (RETURN + (SEQ + (COND + ((SPADCALL |l| NIL (QREFELT $ 38)) + (|error| "empty list passed to principalIdeal")) + ((SPADCALL (CDR |l|) NIL (QREFELT $ 38)) + (SEQ + (LETT |uca| + (SPADCALL (|SPADfirst| |l|) (QREFELT $ 23)) + |EUCDOM-;principalIdeal;LR;9|) + (EXIT (CONS (LIST (QVELT |uca| 0)) (QVELT |uca| 1))))) + ((SPADCALL (CDR (CDR |l|)) NIL (QREFELT $ 38)) + (SEQ + (LETT |u| + (SPADCALL (|SPADfirst| |l|) + (SPADCALL |l| (QREFELT $ 39)) (QREFELT $ 32)) + |EUCDOM-;principalIdeal;LR;9|) + (EXIT (CONS (LIST (QVELT |u| 0) (QVELT |u| 1)) (QVELT |u| 2))))) + ((QUOTE T) + (SEQ + (LETT |v| + (SPADCALL (CDR |l|) (QREFELT $ 42)) + |EUCDOM-;principalIdeal;LR;9|) + (LETT |u| + (SPADCALL (|SPADfirst| |l|) (QCDR |v|) (QREFELT $ 32)) + |EUCDOM-;principalIdeal;LR;9|) + (EXIT + (CONS + (CONS (QVELT |u| 0) + (PROGN + (LETT #0# NIL |EUCDOM-;principalIdeal;LR;9|) + (SEQ + (LETT |vv| NIL |EUCDOM-;principalIdeal;LR;9|) + (LETT #1# (QCAR |v|) |EUCDOM-;principalIdeal;LR;9|) + G190 + (COND + ((OR (ATOM #1#) + (PROGN + (LETT |vv| (CAR #1#) |EUCDOM-;principalIdeal;LR;9|) NIL)) + (GO G191))) + (SEQ + (EXIT + (LETT #0# + (CONS (SPADCALL (QVELT |u| 1) |vv| (QREFELT $ 26)) + #0#) + |EUCDOM-;principalIdeal;LR;9|))) + (LETT #1# (CDR #1#) + |EUCDOM-;principalIdeal;LR;9|) + (GO G190) + G191 + (EXIT (NREVERSE0 #0#))))) + (QVELT |u| 2)))))))))) + +@ +\subsubsection{EUCDOM-;expressIdealMember;LSU;10} +<>= +(DEFUN |EUCDOM-;expressIdealMember;LSU;10| (|l| |z| $) + (PROG (#0=#:G1513 #1=#:G1514 |pid| |q| #2=#:G1515 |v| #3=#:G1516) + (RETURN + (SEQ + (COND + ((SPADCALL |z| (|spadConstant| $ 16) (QREFELT $ 25)) + (CONS 0 + (PROGN + (LETT #0# NIL |EUCDOM-;expressIdealMember;LSU;10|) + (SEQ + (LETT |v| NIL |EUCDOM-;expressIdealMember;LSU;10|) + (LETT #1# |l| |EUCDOM-;expressIdealMember;LSU;10|) + G190 + (COND + ((OR (ATOM #1#) + (PROGN + (LETT |v| (CAR #1#) |EUCDOM-;expressIdealMember;LSU;10|) NIL)) + (GO G191))) + (SEQ + (EXIT + (LETT #0# + (CONS (|spadConstant| $ 16) #0#) + |EUCDOM-;expressIdealMember;LSU;10|))) + (LETT #1# (CDR #1#) |EUCDOM-;expressIdealMember;LSU;10|) + (GO G190) + G191 + (EXIT (NREVERSE0 #0#)))))) + ((QUOTE T) + (SEQ + (LETT |pid| + (SPADCALL |l| (QREFELT $ 42)) + |EUCDOM-;expressIdealMember;LSU;10|) + (LETT |q| + (SPADCALL |z| (QCDR |pid|) (QREFELT $ 33)) + |EUCDOM-;expressIdealMember;LSU;10|) + (EXIT + (COND + ((QEQCAR |q| 1) (CONS 1 "failed")) + ((QUOTE T) + (CONS 0 + (PROGN + (LETT #2# NIL |EUCDOM-;expressIdealMember;LSU;10|) + (SEQ + (LETT |v| NIL |EUCDOM-;expressIdealMember;LSU;10|) + (LETT #3# (QCAR |pid|) |EUCDOM-;expressIdealMember;LSU;10|) + G190 + (COND + ((OR (ATOM #3#) + (PROGN + (LETT |v| (CAR #3#) |EUCDOM-;expressIdealMember;LSU;10|) + NIL)) + (GO G191))) + (SEQ + (EXIT + (LETT #2# + (CONS (SPADCALL (QCDR |q|) |v| (QREFELT $ 26)) + #2#) + |EUCDOM-;expressIdealMember;LSU;10|))) + (LETT #3# (CDR #3#) |EUCDOM-;expressIdealMember;LSU;10|) + (GO G190) + G191 + (EXIT (NREVERSE0 #2#))))))))))))))) + +@ +\subsubsection{EUCDOM-;multiEuclidean;LSU;11} +<>= +(DEFUN |EUCDOM-;multiEuclidean;LSU;11| (|l| |z| $) + (PROG (|n| |l1| |l2| #0=#:G1405 #1=#:G1535 #2=#:G1522 #3=#:G1520 + #4=#:G1521 #5=#:G1406 #6=#:G1536 #7=#:G1525 #8=#:G1523 #9=#:G1524 + |u| |v1| |v2|) + (RETURN + (SEQ + (LETT |n| (LENGTH |l|) |EUCDOM-;multiEuclidean;LSU;11|) + (EXIT + (COND + ((ZEROP |n|) (|error| "empty list passed to multiEuclidean")) + ((EQL |n| 1) (CONS 0 (LIST |z|))) + ((QUOTE T) + (SEQ + (LETT |l1| + (SPADCALL |l| (QREFELT $ 46)) |EUCDOM-;multiEuclidean;LSU;11|) + (LETT |l2| + (SPADCALL |l1| (QUOTIENT2 |n| 2) (QREFELT $ 48)) + |EUCDOM-;multiEuclidean;LSU;11|) + (LETT |u| + (SPADCALL + (PROGN + (LETT #4# NIL |EUCDOM-;multiEuclidean;LSU;11|) + (SEQ + (LETT #0# NIL |EUCDOM-;multiEuclidean;LSU;11|) + (LETT #1# |l1| |EUCDOM-;multiEuclidean;LSU;11|) + G190 + (COND + ((OR (ATOM #1#) + (PROGN + (LETT #0# (CAR #1#) |EUCDOM-;multiEuclidean;LSU;11|) + NIL)) + (GO G191))) + (SEQ + (EXIT + (PROGN + (LETT #2# #0# |EUCDOM-;multiEuclidean;LSU;11|) + (COND + (#4# + (LETT #3# + (SPADCALL #3# #2# (QREFELT $ 26)) + |EUCDOM-;multiEuclidean;LSU;11|)) + ((QUOTE T) + (PROGN + (LETT #3# #2# |EUCDOM-;multiEuclidean;LSU;11|) + (LETT #4# (QUOTE T) |EUCDOM-;multiEuclidean;LSU;11|))))))) + (LETT #1# (CDR #1#) |EUCDOM-;multiEuclidean;LSU;11|) + (GO G190) + G191 + (EXIT NIL)) + (COND (#4# #3#) ((QUOTE T) (|spadConstant| $ 24)))) + (PROGN + (LETT #9# NIL |EUCDOM-;multiEuclidean;LSU;11|) + (SEQ + (LETT #5# NIL |EUCDOM-;multiEuclidean;LSU;11|) + (LETT #6# |l2| |EUCDOM-;multiEuclidean;LSU;11|) + G190 + (COND + ((OR (ATOM #6#) + (PROGN + (LETT #5# (CAR #6#) |EUCDOM-;multiEuclidean;LSU;11|) + NIL)) + (GO G191))) + (SEQ + (EXIT + (PROGN + (LETT #7# #5# |EUCDOM-;multiEuclidean;LSU;11|) + (COND + (#9# + (LETT #8# + (SPADCALL #8# #7# (QREFELT $ 26)) + |EUCDOM-;multiEuclidean;LSU;11|)) + ((QUOTE T) + (PROGN + (LETT #8# #7# |EUCDOM-;multiEuclidean;LSU;11|) + (LETT #9# (QUOTE T) |EUCDOM-;multiEuclidean;LSU;11|))))))) + (LETT #6# (CDR #6#) |EUCDOM-;multiEuclidean;LSU;11|) + (GO G190) + G191 + (EXIT NIL)) + (COND (#9# #8#) ((QUOTE T) (|spadConstant| $ 24)))) + |z| (QREFELT $ 49)) + |EUCDOM-;multiEuclidean;LSU;11|) + (EXIT + (COND + ((QEQCAR |u| 1) (CONS 1 "failed")) + ((QUOTE T) + (SEQ + (LETT |v1| + (SPADCALL |l1| (QCDR (QCDR |u|)) (QREFELT $ 50)) + |EUCDOM-;multiEuclidean;LSU;11|) + (EXIT + (COND + ((QEQCAR |v1| 1) (CONS 1 "failed")) + ((QUOTE T) + (SEQ + (LETT |v2| + (SPADCALL |l2| (QCAR (QCDR |u|)) (QREFELT $ 50)) + |EUCDOM-;multiEuclidean;LSU;11|) + (EXIT + (COND + ((QEQCAR |v2| 1) (CONS 1 "failed")) + ((QUOTE T) + (CONS 0 + (SPADCALL + (QCDR |v1|) + (QCDR |v2|) + (QREFELT $ 51)))))))))))))))))))))) + +@ +\subsubsection{EuclideanDomain\&} +<>= +(DEFUN |EuclideanDomain&| (|#1|) + (PROG (DV$1 |dv$| $ |pv$|) + (RETURN + (PROGN + (LETT DV$1 (|devaluate| |#1|) . #0=(|EuclideanDomain&|)) + (LETT |dv$| (LIST (QUOTE |EuclideanDomain&|) DV$1) . #0#) + (LETT $ (GETREFV 53) . #0#) + (QSETREFV $ 0 |dv$|) + (QSETREFV $ 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #0#)) + (|stuffDomainSlots| $) + (QSETREFV $ 6 |#1|) + $)))) + +@ +\subsubsection{EUCDOM-;MAKEPROP} +<>= +(MAKEPROP + (QUOTE |EuclideanDomain&|) + (QUOTE |infovec|) + (LIST + (QUOTE #(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|Boolean|) (0 . |zero?|) + (|NonNegativeInteger|) (5 . |euclideanSize|) |EUCDOM-;sizeLess?;2SB;1| + (|Record| (|:| |quotient| $) (|:| |remainder| $)) (10 . |divide|) + |EUCDOM-;quo;3S;2| |EUCDOM-;rem;3S;3| (16 . |Zero|) + (|Union| $ (QUOTE "failed")) |EUCDOM-;exquo;2SU;4| (20 . |unitCanonical|) + (25 . |rem|) |EUCDOM-;gcd;3S;5| + (|Record| (|:| |unit| $) (|:| |canonical| $) (|:| |associate| $)) + (31 . |unitNormal|) (36 . |One|) (40 . =) (46 . *) (52 . -) + (58 . |sizeLess?|) (64 . +) + (|Record| (|:| |coef1| $) (|:| |coef2| $) (|:| |generator| $)) + |EUCDOM-;extendedEuclidean;2SR;7| + (70 . |extendedEuclidean|) (76 . |exquo|) + (|Record| (|:| |coef1| $) (|:| |coef2| $)) + (|Union| 34 (QUOTE "failed")) |EUCDOM-;extendedEuclidean;3SU;8| + (|List| 6) (82 . =) (88 . |second|) + (|Record| (|:| |coef| 41) (|:| |generator| $)) + (|List| $) (93 . |principalIdeal|) |EUCDOM-;principalIdeal;LR;9| + (|Union| 41 (QUOTE "failed")) |EUCDOM-;expressIdealMember;LSU;10| + (98 . |copy|) (|Integer|) (103 . |split!|) (109 . |extendedEuclidean|) + (116 . |multiEuclidean|) (122 . |concat|) |EUCDOM-;multiEuclidean;LSU;11|)) + (QUOTE + #(|sizeLess?| 128 |rem| 134 |quo| 140 |principalIdeal| 146 + |multiEuclidean| 151 |gcd| 157 |extendedEuclidean| 163 + |exquo| 176 |expressIdealMember| 182)) + (QUOTE NIL) + (CONS (|makeByteWordVec2| 1 (QUOTE NIL)) + (CONS (QUOTE #()) + (CONS (QUOTE #()) + (|makeByteWordVec2| 52 (QUOTE (1 6 7 0 8 1 6 9 0 10 2 6 12 0 0 13 0 + 6 0 16 1 6 0 0 19 2 6 0 0 0 20 1 6 22 0 23 0 6 0 24 2 6 7 0 0 25 2 6 0 + 0 0 26 2 6 0 0 0 27 2 6 7 0 0 28 2 6 0 0 0 29 2 6 30 0 0 32 2 6 17 0 0 + 33 2 37 7 0 0 38 1 37 6 0 39 1 6 40 41 42 1 37 0 0 46 2 37 0 0 47 48 3 + 6 35 0 0 0 49 2 6 44 41 0 50 2 37 0 0 0 51 2 0 7 0 0 11 2 0 0 0 0 15 2 + 0 0 0 0 14 1 0 40 41 43 2 0 44 41 0 52 2 0 0 0 0 21 3 0 35 0 0 0 36 2 0 + 30 0 0 31 2 0 17 0 0 18 2 0 44 41 0 45)))))) + (QUOTE |lookupComplete|))) + +@ +<>= + +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +@ +\section{ENTIRER.lsp BOOTSTRAP} +{\bf ENTIRER} depends on itself. We need to break this cycle to build +the algebra. So we keep a cached copy of the translated {\bf ENTIRER} +category which we can write into the {\bf MID} directory. We compile +the lisp code and copy the {\bf ENTIRER.o} file to the {\bf OUT} directory. +This is eventually forcibly replaced by a recompiled version. + +Note that this code is not included in the generated catdef.spad file. + +<>= + +(|/VERSIONCHECK| 2) + +(SETQ |EntireRing;AL| (QUOTE NIL)) + +(DEFUN |EntireRing| NIL + (LET (#:G82841) + (COND + (|EntireRing;AL|) + (T (SETQ |EntireRing;AL| (|EntireRing;|)))))) + +(DEFUN |EntireRing;| NIL + (PROG (#1=#:G82839) + (RETURN + (PROG1 + (LETT #1# + (|Join| + (|Ring|) + (|BiModule| (QUOTE |$|) (QUOTE |$|)) + (|mkCategory| + (QUOTE |package|) + NIL + (QUOTE ((|noZeroDivisors| T))) + (QUOTE NIL) + NIL)) + |EntireRing|) + (SETELT #1# 0 (QUOTE (|EntireRing|))))))) + +(MAKEPROP (QUOTE |EntireRing|) (QUOTE NILADIC) T) + +@ +\section{GCDDOM.lsp BOOTSTRAP} +{\bf GCDDOM} needs +{\bf COMRING} which needs +{\bf RING} which needs +{\bf RNG} which needs +{\bf ABELGRP} which needs +{\bf CABMON} which needs +{\bf ABELMON} which needs +{\bf ABELSG} which needs +{\bf SETCAT} which needs +{\bf SINT} which needs +{\bf UFD} which needs +{\bf GCDDOM}. +We break this chain with {\bf GCDDOM.lsp} which we +cache here. We need to break this cycle to build +the algebra. So we keep a cached copy of the translated {\bf GCDDOM} +category which we can write into the {\bf MID} directory. We compile +the lisp code and copy the {\bf GCDDOM.o} file to the {\bf OUT} directory. +This is eventually forcibly replaced by a recompiled version. + +Note that this code is not included in the generated catdef.spad file. + +<>= + +(|/VERSIONCHECK| 2) + +(SETQ |GcdDomain;AL| (QUOTE NIL)) + +(DEFUN |GcdDomain| NIL + (LET (#:G83171) + (COND + (|GcdDomain;AL|) + (T (SETQ |GcdDomain;AL| (|GcdDomain;|)))))) + +(DEFUN |GcdDomain;| NIL + (PROG (#1=#:G83169) + (RETURN + (PROG1 + (LETT #1# + (|Join| + (|IntegralDomain|) + (|mkCategory| + (QUOTE |domain|) + (QUOTE ( + ((|gcd| (|$| |$| |$|)) T) + ((|gcd| (|$| (|List| |$|))) T) + ((|lcm| (|$| |$| |$|)) T) + ((|lcm| (|$| (|List| |$|))) T) + ((|gcdPolynomial| + ((|SparseUnivariatePolynomial| |$|) + (|SparseUnivariatePolynomial| |$|) + (|SparseUnivariatePolynomial| |$|))) + T))) + NIL + (QUOTE ((|SparseUnivariatePolynomial| |$|) (|List| |$|))) + NIL)) + |GcdDomain|) + (SETELT #1# 0 (QUOTE (|GcdDomain|))))))) + +(MAKEPROP (QUOTE |GcdDomain|) (QUOTE NILADIC) T) + +@ +\section{GCDDOM-.lsp BOOTSTRAP} +{\bf GCDDOM-} depends on {\bf GCDDOM}. +We break this chain with {\bf GCDDOM-.lsp} which we +cache here. We need to break this cycle to build +the algebra. So we keep a cached copy of the translated {\bf GCDDOM-} +category which we can write into the {\bf MID} directory. We compile +the lisp code and copy the {\bf GCDDOM-.o} file to the {\bf OUT} directory. +This is eventually forcibly replaced by a recompiled version. + +Note that this code is not included in the generated catdef.spad file. + +<>= + +(|/VERSIONCHECK| 2) + +(DEFUN |GCDDOM-;lcm;3S;1| (|x| |y| |$|) + (PROG (LCM) + (RETURN + (SEQ + (COND + ((OR + (SPADCALL |y| (|spadConstant| |$| 7) (QREFELT |$| 9)) + (SPADCALL |x| (|spadConstant| |$| 7) (QREFELT |$| 9))) + (|spadConstant| |$| 7)) + ((QUOTE T) + (SEQ + (LETT LCM + (SPADCALL |y| + (SPADCALL |x| |y| (QREFELT |$| 10)) + (QREFELT |$| 12)) + |GCDDOM-;lcm;3S;1|) + (EXIT + (COND + ((QEQCAR LCM 0) (SPADCALL |x| (QCDR LCM) (QREFELT |$| 13))) + ((QUOTE T) (|error| "bad gcd in lcm computation"))))))))))) + +(DEFUN |GCDDOM-;lcm;LS;2| (|l| |$|) + (SPADCALL + (ELT |$| 15) + |l| + (|spadConstant| |$| 16) + (|spadConstant| |$| 7) + (QREFELT |$| 19))) + +(DEFUN |GCDDOM-;gcd;LS;3| (|l| |$|) + (SPADCALL + (ELT |$| 10) + |l| + (|spadConstant| |$| 7) + (|spadConstant| |$| 16) + (QREFELT |$| 19))) + +(DEFUN |GCDDOM-;gcdPolynomial;3Sup;4| (|p1| |p2| |$|) + (PROG (|e2| |e1| |c1| |p| |c2| #1=#:G83191) + (RETURN + (SEQ + (COND + ((SPADCALL |p1| (QREFELT |$| 24)) (SPADCALL |p2| (QREFELT |$| 25))) + ((SPADCALL |p2| (QREFELT |$| 24)) (SPADCALL |p1| (QREFELT |$| 25))) + ((QUOTE T) + (SEQ + (LETT |c1| + (SPADCALL |p1| (QREFELT |$| 26)) + |GCDDOM-;gcdPolynomial;3Sup;4|) + (LETT |c2| + (SPADCALL |p2| (QREFELT |$| 26)) + |GCDDOM-;gcdPolynomial;3Sup;4|) + (LETT |p1| + (PROG2 + (LETT #1# + (SPADCALL |p1| |c1| (QREFELT |$| 27)) + |GCDDOM-;gcdPolynomial;3Sup;4|) + (QCDR #1#) + (|check-union| + (QEQCAR #1# 0) + (|SparseUnivariatePolynomial| (QREFELT |$| 6)) + #1#)) + |GCDDOM-;gcdPolynomial;3Sup;4|) + (LETT |p2| + (PROG2 + (LETT #1# + (SPADCALL |p2| |c2| (QREFELT |$| 27)) + |GCDDOM-;gcdPolynomial;3Sup;4|) + (QCDR #1#) + (|check-union| + (QEQCAR #1# 0) + (|SparseUnivariatePolynomial| (QREFELT |$| 6)) + #1#)) + |GCDDOM-;gcdPolynomial;3Sup;4|) + (SEQ + (LETT |e1| + (SPADCALL |p1| (QREFELT |$| 29)) + |GCDDOM-;gcdPolynomial;3Sup;4|) + (EXIT + (COND + ((|<| 0 |e1|) + (LETT |p1| + (PROG2 + (LETT #1# + (SPADCALL |p1| + (SPADCALL + (|spadConstant| |$| 16) |e1| (QREFELT |$| 32)) + (QREFELT |$| 33)) + |GCDDOM-;gcdPolynomial;3Sup;4|) + (QCDR #1#) + (|check-union| + (QEQCAR #1# 0) + (|SparseUnivariatePolynomial| (QREFELT |$| 6)) + #1#)) + |GCDDOM-;gcdPolynomial;3Sup;4|))))) + (SEQ + (LETT |e2| + (SPADCALL |p2| (QREFELT |$| 29)) + |GCDDOM-;gcdPolynomial;3Sup;4|) + (EXIT + (COND + ((|<| 0 |e2|) + (LETT |p2| + (PROG2 + (LETT #1# + (SPADCALL |p2| + (SPADCALL + (|spadConstant| |$| 16) + |e2| + (QREFELT |$| 32)) + (QREFELT |$| 33)) + |GCDDOM-;gcdPolynomial;3Sup;4|) + (QCDR #1#) + (|check-union| + (QEQCAR #1# 0) + (|SparseUnivariatePolynomial| (QREFELT |$| 6)) + #1#)) + |GCDDOM-;gcdPolynomial;3Sup;4|))))) + (LETT |e1| + (MIN |e1| |e2|) + |GCDDOM-;gcdPolynomial;3Sup;4|) + (LETT |c1| + (SPADCALL |c1| |c2| (QREFELT |$| 10)) + |GCDDOM-;gcdPolynomial;3Sup;4|) + (LETT |p1| + (COND + ((OR + (EQL (SPADCALL |p1| (QREFELT |$| 34)) 0) + (EQL (SPADCALL |p2| (QREFELT |$| 34)) 0)) + (SPADCALL |c1| 0 (QREFELT |$| 32))) + ((QUOTE T) + (SEQ + (LETT |p| + (SPADCALL |p1| |p2| (QREFELT |$| 35)) + |GCDDOM-;gcdPolynomial;3Sup;4|) + (EXIT + (COND + ((EQL (SPADCALL |p| (QREFELT |$| 34)) 0) + (SPADCALL |c1| 0 (QREFELT |$| 32))) + ((QUOTE T) + (SEQ + (LETT |c2| + (SPADCALL + (SPADCALL |p1| (QREFELT |$| 36)) + (SPADCALL |p2| (QREFELT |$| 36)) + (QREFELT |$| 10)) + |GCDDOM-;gcdPolynomial;3Sup;4|) + (EXIT + (SPADCALL + (SPADCALL |c1| + (SPADCALL + (PROG2 + (LETT #1# + (SPADCALL + (SPADCALL + |c2| + |p| + (QREFELT |$| 37)) + (SPADCALL |p| (QREFELT |$| 36)) + (QREFELT |$| 27)) + |GCDDOM-;gcdPolynomial;3Sup;4|) + (QCDR #1#) + (|check-union| + (QEQCAR #1# 0) + (|SparseUnivariatePolynomial| + (QREFELT |$| 6)) + #1#)) + (QREFELT |$| 38)) + (QREFELT |$| 37)) + (QREFELT |$| 25)))))))))) + |GCDDOM-;gcdPolynomial;3Sup;4|) + (EXIT + (COND + ((ZEROP |e1|) |p1|) + ((QUOTE T) + (SPADCALL + (SPADCALL (|spadConstant| |$| 16) |e1| (QREFELT |$| 32)) + |p1| (QREFELT |$| 39)))))))))))) + +(DEFUN |GcdDomain&| (|#1|) + (PROG (|DV$1| |dv$| |$| |pv$|) + (RETURN + (PROGN + (LETT |DV$1| (|devaluate| |#1|) . #1=(|GcdDomain&|)) + (LETT |dv$| (LIST (QUOTE |GcdDomain&|) |DV$1|) . #1#) + (LETT |$| (GETREFV 42) . #1#) + (QSETREFV |$| 0 |dv$|) + (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #1#)) + (|stuffDomainSlots| |$|) + (QSETREFV |$| 6 |#1|) + |$|)))) + +(MAKEPROP + (QUOTE |GcdDomain&|) + (QUOTE |infovec|) + (LIST + (QUOTE + #(NIL NIL NIL NIL NIL NIL + (|local| |#1|) + (0 . |Zero|) + (|Boolean|) + (4 . |=|) + (10 . |gcd|) + (|Union| |$| (QUOTE "failed")) + (16 . |exquo|) + (22 . |*|) + |GCDDOM-;lcm;3S;1| + (28 . |lcm|) + (34 . |One|) + (|Mapping| 6 6 6) + (|List| 6) + (38 . |reduce|) + (|List| |$|) + |GCDDOM-;lcm;LS;2| + |GCDDOM-;gcd;LS;3| + (|SparseUnivariatePolynomial| 6) + (46 . |zero?|) + (51 . |unitCanonical|) + (56 . |content|) + (61 . |exquo|) + (|NonNegativeInteger|) + (67 . |minimumDegree|) + (72 . |Zero|) + (76 . |One|) + (80 . |monomial|) + (86 . |exquo|) + (92 . |degree|) + (97 . |subResultantGcd|) + (103 . |leadingCoefficient|) + (108 . |*|) + (114 . |primitivePart|) + (119 . |*|) + (|SparseUnivariatePolynomial| |$|) + |GCDDOM-;gcdPolynomial;3Sup;4|)) + (QUOTE #(|lcm| 125 |gcdPolynomial| 136 |gcd| 142)) + (QUOTE NIL) + (CONS + (|makeByteWordVec2| 1 (QUOTE NIL)) + (CONS + (QUOTE #()) + (CONS + (QUOTE #()) + (|makeByteWordVec2| 41 + (QUOTE (0 6 0 7 2 6 8 0 0 9 2 6 0 0 0 10 2 6 11 0 0 12 2 6 0 0 0 + 13 2 6 0 0 0 15 0 6 0 16 4 18 6 17 0 6 6 19 1 23 8 0 24 + 1 23 0 0 25 1 23 6 0 26 2 23 11 0 6 27 1 23 28 0 29 0 23 + 0 30 0 23 0 31 2 23 0 6 28 32 2 23 11 0 0 33 1 23 28 0 + 34 2 23 0 0 0 35 1 23 6 0 36 2 23 0 6 0 37 1 23 0 0 38 2 + 23 0 0 0 39 1 0 0 20 21 2 0 0 0 0 14 2 0 40 40 40 41 1 0 + 0 20 22)))))) + (QUOTE |lookupComplete|))) + +@ \section{HOAGG.lsp BOOTSTRAP} {\bf HOAGG} depends on a chain of files. We need to break this cycle to build the algebra. So we keep a cached copy of the translated {\bf HOAGG} @@ -13733,6 +19471,170 @@ Note that this code is not included in the generated catdef.spad file. 0 17 0 0 30 1 0 15 0 16)))))) (QUOTE |lookupComplete|))) @ +\section{INTDOM.lsp BOOTSTRAP} +{\bf INTDOM} depends on itself. We need to break this cycle to build +the algebra. So we keep a cached copy of the translated {\bf INTDOM} +category which we can write into the {\bf MID} directory. We compile +the lisp code and copy the {\bf INTDOM.o} file to the {\bf OUT} directory. +This is eventually forcibly replaced by a recompiled version. + +Note that this code is not included in the generated catdef.spad file. + +<>= + +(|/VERSIONCHECK| 2) + +(SETQ |IntegralDomain;AL| (QUOTE NIL)) + +(DEFUN |IntegralDomain| NIL + (LET (#:G83060) + (COND + (|IntegralDomain;AL|) + (T (SETQ |IntegralDomain;AL| (|IntegralDomain;|)))))) + +(DEFUN |IntegralDomain;| NIL + (PROG (#1=#:G83058) + (RETURN + (PROG1 + (LETT #1# + (|Join| + (|CommutativeRing|) + (|Algebra| (QUOTE |$|)) + (|EntireRing|) + (|mkCategory| + (QUOTE |domain|) + (QUOTE ( + ((|exquo| ((|Union| |$| "failed") |$| |$|)) T) + ((|unitNormal| + ((|Record| + (|:| |unit| |$|) + (|:| |canonical| |$|) + (|:| |associate| |$|)) |$|)) T) + ((|unitCanonical| (|$| |$|)) T) + ((|associates?| ((|Boolean|) |$| |$|)) T) + ((|unit?| ((|Boolean|) |$|)) T))) + NIL + (QUOTE ((|Boolean|))) + NIL)) + |IntegralDomain|) + (SETELT #1# 0 (QUOTE (|IntegralDomain|))))))) + +(MAKEPROP (QUOTE |IntegralDomain|) (QUOTE NILADIC) T) + +@ +\section{INTDOM-.lsp BOOTSTRAP} +{\bf INTDOM-} depends on {\bf INTDOM}. We need to break this cycle to build +the algebra. So we keep a cached copy of the translated {\bf INTDOM-} +category which we can write into the {\bf MID} directory. We compile +the lisp code and copy the {\bf INTDOM-.o} file to the {\bf OUT} directory. +This is eventually forcibly replaced by a recompiled version. + +Note that this code is not included in the generated catdef.spad file. + +<>= + +(|/VERSIONCHECK| 2) + +(DEFUN |INTDOM-;unitNormal;SR;1| (|x| |$|) + (VECTOR (|spadConstant| |$| 7) |x| (|spadConstant| |$| 7))) + +(DEFUN |INTDOM-;unitCanonical;2S;2| (|x| |$|) + (QVELT (SPADCALL |x| (QREFELT |$| 10)) 1)) + +(DEFUN |INTDOM-;recip;SU;3| (|x| |$|) + (COND + ((SPADCALL |x| (QREFELT |$| 13)) (CONS 1 "failed")) + ((QUOTE T) (SPADCALL (|spadConstant| |$| 7) |x| (QREFELT |$| 15))))) + +(DEFUN |INTDOM-;unit?;SB;4| (|x| |$|) + (COND + ((QEQCAR (SPADCALL |x| (QREFELT |$| 17)) 1) (QUOTE NIL)) + ((QUOTE T) (QUOTE T)))) + +(DEFUN |INTDOM-;associates?;2SB;5| (|x| |y| |$|) + (SPADCALL + (QVELT (SPADCALL |x| (QREFELT |$| 10)) 1) + (QVELT (SPADCALL |y| (QREFELT |$| 10)) 1) + (QREFELT |$| 19))) + +(DEFUN |INTDOM-;associates?;2SB;6| (|x| |y| |$|) + (COND + ((SPADCALL |x| (QREFELT |$| 13)) (SPADCALL |y| (QREFELT |$| 13))) + ((OR + (SPADCALL |y| (QREFELT |$| 13)) + (OR + (QEQCAR (SPADCALL |x| |y| (QREFELT |$| 15)) 1) + (QEQCAR (SPADCALL |y| |x| (QREFELT |$| 15)) 1))) + (QUOTE NIL)) + ((QUOTE T) (QUOTE T)))) + +(DEFUN |IntegralDomain&| (|#1|) + (PROG (|DV$1| |dv$| |$| |pv$|) + (RETURN + (PROGN + (LETT |DV$1| (|devaluate| |#1|) . #1=(|IntegralDomain&|)) + (LETT |dv$| (LIST (QUOTE |IntegralDomain&|) |DV$1|) . #1#) + (LETT |$| (GETREFV 21) . #1#) + (QSETREFV |$| 0 |dv$|) + (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #1#)) + (|stuffDomainSlots| |$|) + (QSETREFV |$| 6 |#1|) + (COND + ((|HasCategory| |#1| (QUOTE (|Field|)))) + ((QUOTE T) + (QSETREFV |$| 9 + (CONS (|dispatchFunction| |INTDOM-;unitNormal;SR;1|) |$|)))) + (COND + ((|HasAttribute| |#1| (QUOTE |canonicalUnitNormal|)) + (QSETREFV |$| 20 + (CONS (|dispatchFunction| |INTDOM-;associates?;2SB;5|) |$|))) + ((QUOTE T) + (QSETREFV |$| 20 + (CONS (|dispatchFunction| |INTDOM-;associates?;2SB;6|) |$|)))) + |$|)))) + +(MAKEPROP + (QUOTE |IntegralDomain&|) + (QUOTE |infovec|) + (LIST + (QUOTE + #(NIL NIL NIL NIL NIL NIL + (|local| |#1|) + (0 . |One|) + (|Record| + (|:| |unit| |$|) + (|:| |canonical| |$|) + (|:| |associate| |$|)) + (4 . |unitNormal|) + (9 . |unitNormal|) + |INTDOM-;unitCanonical;2S;2| + (|Boolean|) + (14 . |zero?|) + (|Union| |$| (QUOTE "failed")) + (19 . |exquo|) + |INTDOM-;recip;SU;3| + (25 . |recip|) + |INTDOM-;unit?;SB;4| + (30 . |=|) + (36 . |associates?|))) + (QUOTE + #(|unitNormal| 42 |unitCanonical| 47 |unit?| 52 |recip| 57 + |associates?| 62)) + (QUOTE NIL) + (CONS + (|makeByteWordVec2| 1 (QUOTE NIL)) + (CONS + (QUOTE #()) + (CONS + (QUOTE #()) + (|makeByteWordVec2| 20 + (QUOTE + (0 6 0 7 1 0 8 0 9 1 6 8 0 10 1 6 12 0 13 2 6 14 0 0 15 1 6 14 + 0 17 2 6 12 0 0 19 2 0 12 0 0 20 1 0 8 0 9 1 0 0 0 11 1 0 12 0 + 18 1 0 14 0 16 2 0 12 0 0 20)))))) + (QUOTE |lookupComplete|))) + +@ \section{LNAGG.lsp BOOTSTRAP} {\bf LNAGG} depends on a chain of files. We need to break this cycle to build the algebra. So we keep a cached copy of the translated {\bf LNAGG} @@ -14943,6 +20845,38 @@ Note that this code is not included in the generated catdef.spad file. (QUOTE |lookupComplete|))) @ +\section{OINTDOM.lsp BOOTSTRAP} +{\bf OINTDOM} depends on itself. We need to break this cycle to build +the algebra. So we keep a cached copy of the translated {\bf OINTDOM} +category which we can write into the {\bf MID} directory. We compile +the lisp code and copy the {\bf OINTDOM.o} file to the {\bf OUT} directory. +This is eventually forcibly replaced by a recompiled version. + +Note that this code is not included in the generated catdef.spad file. + +<>= + +(|/VERSIONCHECK| 2) + +(SETQ |OrderedIntegralDomain;AL| (QUOTE NIL)) + +(DEFUN |OrderedIntegralDomain| NIL + (LET (#:G84531) + (COND + (|OrderedIntegralDomain;AL|) + (T (SETQ |OrderedIntegralDomain;AL| (|OrderedIntegralDomain;|)))))) + +(DEFUN |OrderedIntegralDomain;| NIL + (PROG (#1=#:G84529) + (RETURN + (PROG1 + (LETT #1# + (|Join| (|IntegralDomain|) (|OrderedRing|)) |OrderedIntegralDomain|) + (SETELT #1# 0 (QUOTE (|OrderedIntegralDomain|))))))) + +(MAKEPROP (QUOTE |OrderedIntegralDomain|) (QUOTE NILADIC) T) + +@ \section{ORDRING.lsp BOOTSTRAP} {\bf ORDRING} depends on {\bf INT}. We need to break this cycle to build the algebra. So we keep a cached copy of the translated {\bf ORDRING} @@ -15623,7 +21557,7 @@ Note that this code is not included in the generated catdef.spad file. (CONS (|devaluate| #1#) (SETQ #2# (|StreamAggregate;| #1#))) |StreamAggregate;AL|)) #2#)))) - +v (DEFUN |StreamAggregate;| (|t#1|) (PROG (#1=#:G87034) (RETURN @@ -15970,6 +21904,184 @@ Note that this code is not included in the generated catdef.spad file. 0 19 22 2 0 0 0 23 30 2 0 0 0 0 46 1 0 0 33 35 2 0 0 0 0 32)))))) (QUOTE |lookupComplete|))) @ +\section{UFD.lsp BOOTSTRAP} +{\bf UFD} needs +{\bf GCDDOM} which needs +{\bf COMRING} which needs +{\bf RING} which needs +{\bf RNG} which needs +{\bf ABELGRP} which needs +{\bf CABMON} which needs +{\bf ABELMON} which needs +{\bf ABELSG} which needs +{\bf SETCAT} which needs +{\bf SINT} which needs +{\bf UFD}. +We need to break this cycle to build the algebra. So we keep a +cached copy of the translated {\bf UFD} category which we can write +into the {\bf MID} directory. We compile the lisp code and copy the +{\bf UFD.o} file to the {\bf OUT} directory. This is eventually +forcibly replaced by a recompiled version. + +Note that this code is not included in the generated catdef.spad file. + +<>= + +(|/VERSIONCHECK| 2) + +(SETQ |UniqueFactorizationDomain;AL| (QUOTE NIL)) + +(DEFUN |UniqueFactorizationDomain| NIL + (LET (#:G83334) + (COND + (|UniqueFactorizationDomain;AL|) + (T + (SETQ + |UniqueFactorizationDomain;AL| + (|UniqueFactorizationDomain;|)))))) + +(DEFUN |UniqueFactorizationDomain;| NIL + (PROG (#1=#:G83332) + (RETURN + (PROG1 + (LETT #1# + (|Join| + (|GcdDomain|) + (|mkCategory| + (QUOTE |domain|) + (QUOTE ( + ((|prime?| ((|Boolean|) |$|)) T) + ((|squareFree| ((|Factored| |$|) |$|)) T) + ((|squareFreePart| (|$| |$|)) T) + ((|factor| ((|Factored| |$|) |$|)) T))) + NIL + (QUOTE ((|Factored| |$|) (|Boolean|))) + NIL)) + |UniqueFactorizationDomain|) + (SETELT #1# 0 (QUOTE (|UniqueFactorizationDomain|))))))) + +(MAKEPROP (QUOTE |UniqueFactorizationDomain|) (QUOTE NILADIC) T) + +@ +\section{UFD-.lsp BOOTSTRAP} +{\bf UFD-} needs {\bf UFD}. +We need to break this cycle to build the algebra. So we keep a +cached copy of the translated {\bf UFD-} category which we can write +into the {\bf MID} directory. We compile the lisp code and copy the +{\bf UFD-.o} file to the {\bf OUT} directory. This is eventually +forcibly replaced by a recompiled version. + +Note that this code is not included in the generated catdef.spad file. + +<>= + +(|/VERSIONCHECK| 2) + +(DEFUN |UFD-;squareFreePart;2S;1| (|x| |$|) + (PROG (|s| |f| #1=#:G83349 #2=#:G83347 #3=#:G83345 #4=#:G83346) + (RETURN + (SEQ + (SPADCALL + (SPADCALL + (LETT |s| + (SPADCALL |x| (QREFELT |$| 8)) + |UFD-;squareFreePart;2S;1|) + (QREFELT |$| 10)) + (PROGN + (LETT #4# NIL |UFD-;squareFreePart;2S;1|) + (SEQ + (LETT |f| NIL |UFD-;squareFreePart;2S;1|) + (LETT #1# + (SPADCALL |s| (QREFELT |$| 13)) + |UFD-;squareFreePart;2S;1|) + G190 + (COND + ((OR + (ATOM #1#) + (PROGN + (LETT |f| (CAR #1#) |UFD-;squareFreePart;2S;1|) + NIL)) + (GO G191))) + (SEQ + (EXIT + (PROGN + (LETT #2# (QCAR |f|) |UFD-;squareFreePart;2S;1|) + (COND + (#4# + (LETT #3# + (SPADCALL #3# #2# (QREFELT |$| 14)) + |UFD-;squareFreePart;2S;1|)) + ((QUOTE T) + (PROGN + (LETT #3# #2# |UFD-;squareFreePart;2S;1|) + (LETT #4# (QUOTE T) + |UFD-;squareFreePart;2S;1|))))))) + (LETT #1# (CDR #1#) |UFD-;squareFreePart;2S;1|) + (GO G190) + G191 + (EXIT NIL)) + (COND + (#4# #3#) + ((QUOTE T) (|spadConstant| |$| 15)))) + (QREFELT |$| 14)))))) + +(DEFUN |UFD-;prime?;SB;2| (|x| |$|) + (EQL + (LENGTH (SPADCALL (SPADCALL |x| (QREFELT |$| 17)) (QREFELT |$| 21))) 1)) + +(DEFUN |UniqueFactorizationDomain&| (|#1|) + (PROG (|DV$1| |dv$| |$| |pv$|) + (RETURN + (PROGN + (LETT |DV$1| (|devaluate| |#1|) . #1=(|UniqueFactorizationDomain&|)) + (LETT |dv$| (LIST (QUOTE |UniqueFactorizationDomain&|) |DV$1|) . #1#) + (LETT |$| (GETREFV 24) . #1#) + (QSETREFV |$| 0 |dv$|) + (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #1#)) + (|stuffDomainSlots| |$|) + (QSETREFV |$| 6 |#1|) + |$|)))) + +(MAKEPROP + (QUOTE |UniqueFactorizationDomain&|) + (QUOTE |infovec|) + (LIST + (QUOTE + #(NIL NIL NIL NIL NIL NIL + (|local| |#1|) + (|Factored| |$|) + (0 . |squareFree|) + (|Factored| 6) + (5 . |unit|) + (|Record| (|:| |factor| 6) (|:| |exponent| (|Integer|))) + (|List| 11) + (10 . |factors|) + (15 . |*|) + (21 . |One|) + |UFD-;squareFreePart;2S;1| + (25 . |factor|) + (|Union| + (QUOTE "nil") (QUOTE "sqfr") (QUOTE "irred") (QUOTE "prime")) + (|Record| (|:| |flg| 18) (|:| |fctr| 6) (|:| |xpnt| (|Integer|))) + (|List| 19) + (30 . |factorList|) + (|Boolean|) + |UFD-;prime?;SB;2|)) + (QUOTE #(|squareFreePart| 35 |prime?| 40)) + (QUOTE NIL) + (CONS + (|makeByteWordVec2| 1 (QUOTE NIL)) + (CONS + (QUOTE #()) + (CONS + (QUOTE #()) + (|makeByteWordVec2| 23 + (QUOTE + (1 6 7 0 8 1 9 6 0 10 1 9 12 0 13 2 6 0 0 0 14 0 6 0 15 1 6 7 + 0 17 1 9 20 0 21 1 0 0 0 16 1 0 22 0 23)))))) + (QUOTE |lookupComplete|))) + +@ \section{URAGG.lsp BOOTSTRAP} {\bf URAGG} depends on a chain of files. We need to break this cycle to build the algebra. So we keep a cached copy of the translated {\bf URAGG} @@ -16749,6 +22861,7 @@ Note that this code is not included in the generated catdef.spad file. <> <> <> +<> <> <> <> @@ -16756,26 +22869,43 @@ Note that this code is not included in the generated catdef.spad file. <> <> <> +<> +<> <> +<> <> +<> +<> <> +<> <> <> <> <> <> +<> +<> +<> +<> <> <> +<> <> +<> <> <> +<> +<> <> <> <> <> +<> <> <> +<> <> +<> <> <> <> @@ -16784,11 +22914,15 @@ Note that this code is not included in the generated catdef.spad file. <> <> <> +<> <> <> <> <> <> +<> +<> +<> <> <> <> @@ -16805,7 +22939,9 @@ Note that this code is not included in the generated catdef.spad file. <> <> <> +<> <> +<> @ <>= digraph dotabb { @@ -16821,6 +22957,7 @@ digraph dotabb { <> <> <> +<> <> <> <> @@ -16828,25 +22965,41 @@ digraph dotabb { <> <> <> +<> +<> <> +<> <> +<> <> +<> <> <> <> <> <> +<> +<> +<> +<> <> <> +<> <> +<> <> +<> +<> <> <> <> <> +<> <> <> +<> <> +<> <> <> <> @@ -16855,11 +23008,15 @@ digraph dotabb { <> <> <> +<> <> <> <> <> <> +<> +<> +<> <> <> <> @@ -16876,7 +23033,9 @@ digraph dotabb { <> <> <> +<> <> +<> } @ <>= @@ -16895,6 +23054,7 @@ digraph dotfull { <> <> <> +<> <> <> <> @@ -16902,25 +23062,41 @@ digraph dotfull { <> <> <> +<> +<> <> +<> <> +<> <> +<> <> <> <> <> <> +<> +<> +<> +<> <> <> +<> <> +<> <> +<> +<> <> <> <> <> +<> <> <> +<> <> +<> <> <> <> @@ -16929,11 +23105,15 @@ digraph dotfull { <> <> <> +<> <> <> <> <> <> +<> +<> +<> <> <> <> @@ -16950,7 +23130,9 @@ digraph dotfull { <> <> <> +<> <> +<> } @ \eject diff --git a/books/ps/v102EntireRing.ps b/books/ps/v102EntireRing.ps new file mode 100644 index 0000000..d789dcb --- /dev/null +++ b/books/ps/v102EntireRing.ps @@ -0,0 +1,876 @@ +%!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 536 368 +%%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 536 368 +%%PageOrientation: Portrait +gsave +36 36 500 332 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 330 lineto +498 330 lineto +498 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 330 lineto +498 330 lineto +498 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% EntireRing() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 269 324 moveto +183 324 lineto +183 288 lineto +269 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 269 324 moveto +183 324 lineto +183 288 lineto +269 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +190 301 moveto +(EntireRing\(\)) +[8.64 6.96 3.84 3.84 4.8 6.24 9.36 3.84 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Ring() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 190 252 moveto +136 252 lineto +136 216 lineto +190 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 190 252 moveto +136 252 lineto +136 216 lineto +190 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +144 229 moveto +(Ring\(\)) +[9.36 3.84 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% EntireRing()->Ring() +newpath 210 288 moveto +202 279 193 269 186 260 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 188 257 moveto +179 252 lineto +183 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 188 257 moveto +179 252 lineto +183 262 lineto +closepath +stroke +end grestore +% BiModule(a:Ring,b:Ring) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 370 252 moveto +208 252 lineto +208 216 lineto +370 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 370 252 moveto +208 252 lineto +208 216 lineto +370 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +216 229 moveto +(BiModule\(a:Ring,b:Ring\)) +[9.36 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 3.84 6.96 6.96 3.6 6.96 3.84 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% EntireRing()->BiModule(a:Ring,b:Ring) +newpath 242 288 moveto +250 279 259 269 266 260 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 269 262 moveto +273 252 lineto +264 257 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 269 262 moveto +273 252 lineto +264 257 lineto +closepath +stroke +end grestore +% Rng() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 190 180 moveto +136 180 lineto +136 144 lineto +190 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 190 180 moveto +136 180 lineto +136 144 lineto +190 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +146 157 moveto +(Rng\(\)) +[9.36 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Ring()->Rng() +newpath 163 216 moveto +163 208 163 199 163 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 167 190 moveto +163 180 lineto +160 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 167 190 moveto +163 180 lineto +160 190 lineto +closepath +stroke +end grestore +% Monoid() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 118 180 moveto +48 180 lineto +48 144 lineto +118 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 118 180 moveto +48 180 lineto +48 144 lineto +118 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +55 157 moveto +(Monoid\(\)) +[12.48 6.96 6.96 6.96 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Ring()->Monoid() +newpath 143 216 moveto +133 207 121 196 110 187 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 113 185 moveto +103 180 lineto +108 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 113 185 moveto +103 180 lineto +108 190 lineto +closepath +stroke +end grestore +% LeftModule(a:Ring) +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 338 180 moveto +208 180 lineto +208 144 lineto +338 144 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 338 180 moveto +208 180 lineto +208 144 lineto +338 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +216 157 moveto +(LeftModule\(a:Ring\)) +[8.64 6.24 4.8 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Ring()->LeftModule(a:Ring) +newpath 190 216 moveto +204 207 222 196 237 186 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 239 189 moveto +245 180 lineto +235 183 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 239 189 moveto +245 180 lineto +235 183 lineto +closepath +stroke +end grestore +% BiModule(a:Ring,b:Ring)->LeftModule(a:Ring) +newpath 285 216 moveto +283 208 281 199 279 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 282 189 moveto +277 180 lineto +276 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 282 189 moveto +277 180 lineto +276 190 lineto +closepath +stroke +end grestore +% RightModule(a:Ring) +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 492 180 moveto +356 180 lineto +356 144 lineto +492 144 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 492 180 moveto +356 180 lineto +356 144 lineto +492 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +363 157 moveto +(RightModule\(a:Ring\)) +[9.36 3.84 6.96 6.96 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% BiModule(a:Ring,b:Ring)->RightModule(a:Ring) +newpath 323 216 moveto +341 207 363 195 381 185 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 383 188 moveto +390 180 lineto +380 182 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 383 188 moveto +390 180 lineto +380 182 lineto +closepath +stroke +end grestore +% ABELGRP... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 318 36 moveto +228 36 lineto +228 0 lineto +318 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 318 36 moveto +228 36 lineto +228 0 lineto +318 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +235 13 moveto +(ABELGRP...) +[10.08 9.36 8.64 8.64 10.08 9.36 6.24 3.6 3.6 3.6] +xshow +end grestore +end grestore +% Rng()->ABELGRP... +newpath 167 144 moveto +173 125 184 94 201 72 curveto +210 61 221 50 233 42 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 235 45 moveto +241 36 lineto +231 39 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 235 45 moveto +241 36 lineto +231 39 lineto +closepath +stroke +end grestore +% SemiGroup() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 131 108 moveto +41 108 lineto +41 72 lineto +131 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 131 108 moveto +41 108 lineto +41 72 lineto +131 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +49 85 moveto +(SemiGroup\(\)) +[7.68 6.24 10.8 3.84 10.08 4.8 6.96 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Rng()->SemiGroup() +newpath 144 144 moveto +134 135 123 125 113 115 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 115 112 moveto +105 108 lineto +110 117 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 115 112 moveto +105 108 lineto +110 117 lineto +closepath +stroke +end grestore +% Monoid()->SemiGroup() +newpath 84 144 moveto +85 136 85 127 85 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 89 118 moveto +85 108 lineto +82 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 89 118 moveto +85 108 lineto +82 118 lineto +closepath +stroke +end grestore +% LeftModule(a:Rng) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 336 108 moveto +210 108 lineto +210 72 lineto +336 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 336 108 moveto +210 108 lineto +210 72 lineto +336 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +218 85 moveto +(LeftModule\(a:Rng\)) +[8.64 6.24 4.8 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 6.96 4.56] +xshow +end grestore +end grestore +% LeftModule(a:Ring)->LeftModule(a:Rng) +newpath 273 144 moveto +273 136 273 127 273 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 277 118 moveto +273 108 lineto +270 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 277 118 moveto +273 108 lineto +270 118 lineto +closepath +stroke +end grestore +% SETCAT... +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 +8 13 moveto +(SETCAT...) +[7.68 8.64 8.64 9.12 9.36 7.44 3.6 3.6 3.6] +xshow +end grestore +end grestore +% SemiGroup()->SETCAT... +newpath 74 72 moveto +69 64 62 54 56 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 59 43 moveto +51 36 lineto +53 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 59 43 moveto +51 36 lineto +53 46 lineto +closepath +stroke +end grestore +% REPSQ... +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 166 36 moveto +96 36 lineto +96 0 lineto +166 0 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 166 36 moveto +96 36 lineto +96 0 lineto +166 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +103 13 moveto +(REPSQ...) +[9.36 8.64 7.68 7.68 10.08 3.6 3.6 3.6] +xshow +end grestore +end grestore +% SemiGroup()->REPSQ... +newpath 97 72 moveto +102 64 109 54 115 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 118 46 moveto +120 36 lineto +112 43 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 118 46 moveto +120 36 lineto +112 43 lineto +closepath +stroke +end grestore +% RightModule(a:Rng) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 489 108 moveto +355 108 lineto +355 72 lineto +489 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 489 108 moveto +355 108 lineto +355 72 lineto +489 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +363 85 moveto +(RightModule\(a:Rng\)) +[9.36 3.84 6.96 6.96 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 6.96 4.56] +xshow +end grestore +end grestore +% RightModule(a:Ring)->RightModule(a:Rng) +newpath 423 144 moveto +423 136 423 127 423 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 426 118 moveto +422 108 lineto +420 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 426 118 moveto +422 108 lineto +420 118 lineto +closepath +stroke +end grestore +% RightModule(a:Rng)->ABELGRP... +newpath 384 72 moveto +364 62 340 51 319 40 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 321 37 moveto +310 36 lineto +318 43 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 321 37 moveto +310 36 lineto +318 43 lineto +closepath +stroke +end grestore +% LeftModule(a:Rng)->ABELGRP... +newpath 273 72 moveto +273 64 273 55 273 46 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 277 46 moveto +273 36 lineto +270 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 277 46 moveto +273 36 lineto +270 46 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102algebra.ps b/books/ps/v102algebra.ps new file mode 100644 index 0000000..a0d1010 --- /dev/null +++ b/books/ps/v102algebra.ps @@ -0,0 +1,969 @@ +%!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 547 512 +%%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 547 512 +%%PageOrientation: Portrait +gsave +36 36 511 476 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 474 lineto +509 474 lineto +509 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 474 lineto +509 474 lineto +509 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% Algebra(a:CommutativeRing) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 330 468 moveto +146 468 lineto +146 432 lineto +330 432 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 330 468 moveto +146 468 lineto +146 432 lineto +330 432 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +154 445 moveto +(Algebra\(a:CommutativeRing\)) +[10.08 3.84 6.72 6.24 6.96 4.8 6.24 4.56 6.24 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Ring() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 190 252 moveto +136 252 lineto +136 216 lineto +190 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 190 252 moveto +136 252 lineto +136 216 lineto +190 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +144 229 moveto +(Ring\(\)) +[9.36 3.84 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Algebra(a:CommutativeRing)->Ring() +newpath 228 432 moveto +216 407 194 363 182 324 curveto +175 304 170 280 167 262 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 170 262 moveto +166 252 lineto +164 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 170 262 moveto +166 252 lineto +164 262 lineto +closepath +stroke +end grestore +% Module(a:CommutativeRing) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 405 396 moveto +223 396 lineto +223 360 lineto +405 360 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 405 396 moveto +223 396 lineto +223 360 lineto +405 360 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +230 373 moveto +(Module\(a:CommutativeRing\)) +[12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Algebra(a:CommutativeRing)->Module(a:CommutativeRing) +newpath 257 432 moveto +267 423 278 413 288 403 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 290 406 moveto +295 396 lineto +285 401 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 290 406 moveto +295 396 lineto +285 401 lineto +closepath +stroke +end grestore +% Rng() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 190 180 moveto +136 180 lineto +136 144 lineto +190 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 190 180 moveto +136 180 lineto +136 144 lineto +190 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +146 157 moveto +(Rng\(\)) +[9.36 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Ring()->Rng() +newpath 163 216 moveto +163 208 163 199 163 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 167 190 moveto +163 180 lineto +160 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 167 190 moveto +163 180 lineto +160 190 lineto +closepath +stroke +end grestore +% Monoid() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 118 180 moveto +48 180 lineto +48 144 lineto +118 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 118 180 moveto +48 180 lineto +48 144 lineto +118 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +55 157 moveto +(Monoid\(\)) +[12.48 6.96 6.96 6.96 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Ring()->Monoid() +newpath 143 216 moveto +133 207 121 196 110 187 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 113 185 moveto +103 180 lineto +108 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 113 185 moveto +103 180 lineto +108 190 lineto +closepath +stroke +end grestore +% LeftModule(a:Ring) +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 338 180 moveto +208 180 lineto +208 144 lineto +338 144 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 338 180 moveto +208 180 lineto +208 144 lineto +338 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +216 157 moveto +(LeftModule\(a:Ring\)) +[8.64 6.24 4.8 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Ring()->LeftModule(a:Ring) +newpath 190 216 moveto +204 207 222 196 237 186 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 239 189 moveto +245 180 lineto +235 183 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 239 189 moveto +245 180 lineto +235 183 lineto +closepath +stroke +end grestore +% BiModule(a:CommutativeRing,b:CommutativeRing) +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 503 324 moveto +191 324 lineto +191 288 lineto +503 288 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 503 324 moveto +191 324 lineto +191 288 lineto +503 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +198 301 moveto +(BiModule\(a:CommutativeRing,b:CommutativeRing\)) +[9.36 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 3.6 6.96 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Module(a:CommutativeRing)->BiModule(a:CommutativeRing,b:CommutativeRing) +newpath 322 360 moveto +326 352 330 342 335 333 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 338 335 moveto +339 324 lineto +332 332 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 338 335 moveto +339 324 lineto +332 332 lineto +closepath +stroke +end grestore +% ABELGRP... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 318 36 moveto +228 36 lineto +228 0 lineto +318 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 318 36 moveto +228 36 lineto +228 0 lineto +318 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +235 13 moveto +(ABELGRP...) +[10.08 9.36 8.64 8.64 10.08 9.36 6.24 3.6 3.6 3.6] +xshow +end grestore +end grestore +% Rng()->ABELGRP... +newpath 167 144 moveto +173 125 184 94 201 72 curveto +210 61 221 50 233 42 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 235 45 moveto +241 36 lineto +231 39 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 235 45 moveto +241 36 lineto +231 39 lineto +closepath +stroke +end grestore +% SemiGroup() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 131 108 moveto +41 108 lineto +41 72 lineto +131 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 131 108 moveto +41 108 lineto +41 72 lineto +131 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +49 85 moveto +(SemiGroup\(\)) +[7.68 6.24 10.8 3.84 10.08 4.8 6.96 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Rng()->SemiGroup() +newpath 144 144 moveto +134 135 123 125 113 115 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 115 112 moveto +105 108 lineto +110 117 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 115 112 moveto +105 108 lineto +110 117 lineto +closepath +stroke +end grestore +% Monoid()->SemiGroup() +newpath 84 144 moveto +85 136 85 127 85 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 89 118 moveto +85 108 lineto +82 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 89 118 moveto +85 108 lineto +82 118 lineto +closepath +stroke +end grestore +% LeftModule(a:Rng) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 336 108 moveto +210 108 lineto +210 72 lineto +336 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 336 108 moveto +210 108 lineto +210 72 lineto +336 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +218 85 moveto +(LeftModule\(a:Rng\)) +[8.64 6.24 4.8 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 6.96 4.56] +xshow +end grestore +end grestore +% LeftModule(a:Ring)->LeftModule(a:Rng) +newpath 273 144 moveto +273 136 273 127 273 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 277 118 moveto +273 108 lineto +270 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 277 118 moveto +273 108 lineto +270 118 lineto +closepath +stroke +end grestore +% SETCAT... +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 +8 13 moveto +(SETCAT...) +[7.68 8.64 8.64 9.12 9.36 7.44 3.6 3.6 3.6] +xshow +end grestore +end grestore +% SemiGroup()->SETCAT... +newpath 74 72 moveto +69 64 62 54 56 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 59 43 moveto +51 36 lineto +53 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 59 43 moveto +51 36 lineto +53 46 lineto +closepath +stroke +end grestore +% REPSQ... +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 166 36 moveto +96 36 lineto +96 0 lineto +166 0 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 166 36 moveto +96 36 lineto +96 0 lineto +166 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +103 13 moveto +(REPSQ...) +[9.36 8.64 7.68 7.68 10.08 3.6 3.6 3.6] +xshow +end grestore +end grestore +% SemiGroup()->REPSQ... +newpath 97 72 moveto +102 64 109 54 115 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 118 46 moveto +120 36 lineto +112 43 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 118 46 moveto +120 36 lineto +112 43 lineto +closepath +stroke +end grestore +% BiModule(a:Ring,b:Ring) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 428 252 moveto +266 252 lineto +266 216 lineto +428 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 428 252 moveto +266 252 lineto +266 216 lineto +428 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +274 229 moveto +(BiModule\(a:Ring,b:Ring\)) +[9.36 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 3.84 6.96 6.96 3.6 6.96 3.84 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% BiModule(a:CommutativeRing,b:CommutativeRing)->BiModule(a:Ring,b:Ring) +newpath 347 288 moveto +347 280 347 271 347 262 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 351 262 moveto +347 252 lineto +344 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 351 262 moveto +347 252 lineto +344 262 lineto +closepath +stroke +end grestore +% BiModule(a:Ring,b:Ring)->LeftModule(a:Ring) +newpath 328 216 moveto +319 207 308 197 298 187 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 301 185 moveto +291 180 lineto +296 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 301 185 moveto +291 180 lineto +296 190 lineto +closepath +stroke +end grestore +% RightModule(a:Ring) +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 492 180 moveto +356 180 lineto +356 144 lineto +492 144 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 492 180 moveto +356 180 lineto +356 144 lineto +492 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +363 157 moveto +(RightModule\(a:Ring\)) +[9.36 3.84 6.96 6.96 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% BiModule(a:Ring,b:Ring)->RightModule(a:Ring) +newpath 366 216 moveto +376 207 387 197 397 187 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 400 189 moveto +405 180 lineto +395 184 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 400 189 moveto +405 180 lineto +395 184 lineto +closepath +stroke +end grestore +% RightModule(a:Rng) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 489 108 moveto +355 108 lineto +355 72 lineto +489 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 489 108 moveto +355 108 lineto +355 72 lineto +489 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +363 85 moveto +(RightModule\(a:Rng\)) +[9.36 3.84 6.96 6.96 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 6.96 4.56] +xshow +end grestore +end grestore +% RightModule(a:Ring)->RightModule(a:Rng) +newpath 423 144 moveto +423 136 423 127 423 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 426 118 moveto +422 108 lineto +420 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 426 118 moveto +422 108 lineto +420 118 lineto +closepath +stroke +end grestore +% RightModule(a:Rng)->ABELGRP... +newpath 384 72 moveto +364 62 340 51 319 40 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 321 37 moveto +310 36 lineto +318 43 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 321 37 moveto +310 36 lineto +318 43 lineto +closepath +stroke +end grestore +% LeftModule(a:Rng)->ABELGRP... +newpath 273 72 moveto +273 64 273 55 273 46 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 277 46 moveto +273 36 lineto +270 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 277 46 moveto +273 36 lineto +270 46 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102bitaggregate.ps b/books/ps/v102bitaggregate.ps new file mode 100644 index 0000000..defcdac --- /dev/null +++ b/books/ps/v102bitaggregate.ps @@ -0,0 +1,886 @@ +%!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 563 440 +%%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 563 440 +%%PageOrientation: Portrait +gsave +36 36 527 404 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 402 lineto +525 402 lineto +525 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 402 lineto +525 402 lineto +525 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% BitAggregate() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 275 396 moveto +173 396 lineto +173 360 lineto +275 360 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 275 396 moveto +173 396 lineto +173 360 lineto +275 360 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +181 373 moveto +(BitAggregate\(\)) +[9.36 3.84 3.84 9.84 6.96 7.2 4.8 6.24 6.72 6.24 3.84 6.24 4.56 4.56] +xshow +end grestore +end grestore +% OrderedSet() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 185 324 moveto +97 324 lineto +97 288 lineto +185 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 185 324 moveto +97 324 lineto +97 288 lineto +185 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +104 301 moveto +(OrderedSet\(\)) +[10.08 4.56 6.96 6.24 4.8 6.24 6.96 7.68 6 3.84 4.56 4.56] +xshow +end grestore +end grestore +% BitAggregate()->OrderedSet() +newpath 203 360 moveto +193 351 180 340 169 331 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 171 328 moveto +161 324 lineto +166 333 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 171 328 moveto +161 324 lineto +166 333 lineto +closepath +stroke +end grestore +% Logic() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 253 252 moveto +195 252 lineto +195 216 lineto +253 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 253 252 moveto +195 252 lineto +195 216 lineto +253 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +203 229 moveto +(Logic\(\)) +[8.64 6.96 6.96 3.84 6.24 4.56 4.56] +xshow +end grestore +end grestore +% BitAggregate()->Logic() +newpath 224 360 moveto +224 335 224 291 224 262 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 228 262 moveto +224 252 lineto +221 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 228 262 moveto +224 252 lineto +221 262 lineto +closepath +stroke +end grestore +% OneDimensionalArrayAggregate(Boolean) +[ /Rect [ 259 288 517 324 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (bookvol10.2.pdf#nameddest=A1AGG) >> + /Subtype /Link +/ANN pdfmark +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 517 324 moveto +259 324 lineto +259 288 lineto +517 288 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 517 324 moveto +259 324 lineto +259 288 lineto +517 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +267 301 moveto +(OneDimensionalArrayAggregate\(Boolean\)) +[10.08 6.96 6.24 10.08 3.84 10.8 6.24 6.96 5.52 3.84 6.96 6.96 6.24 3.84 10.08 5.28 4.8 5.76 6.96 9.84 6.96 7.2 4.8 6.24 6.72 6.24 3.84 6.24 4.56 9.36 6.96 6.96 3.84 6.24 6.24 6.96 4.56] +xshow +end grestore +end grestore +% BitAggregate()->OneDimensionalArrayAggregate(Boolean) +newpath 265 360 moveto +287 350 314 338 338 328 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 339 331 moveto +347 324 lineto +336 325 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 339 331 moveto +347 324 lineto +336 325 lineto +closepath +stroke +end grestore +% SetCategory() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 177 252 moveto +83 252 lineto +83 216 lineto +177 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 177 252 moveto +83 252 lineto +83 216 lineto +177 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +90 229 moveto +(SetCategory\(\)) +[7.68 6 3.84 9.36 6.24 3.84 6.24 6.96 6.96 5.04 6.96 4.56 4.56] +xshow +end grestore +end grestore +% OrderedSet()->SetCategory() +newpath 138 288 moveto +137 280 135 271 134 262 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 137 262 moveto +133 252 lineto +131 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 137 262 moveto +133 252 lineto +131 262 lineto +closepath +stroke +end grestore +% BasicType() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 266 180 moveto +182 180 lineto +182 144 lineto +266 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 266 180 moveto +182 180 lineto +182 144 lineto +266 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +189 157 moveto +(BasicType\(\)) +[9.36 6.24 5.52 3.84 6.24 7.2 6.96 6.96 6.24 4.56 4.56] +xshow +end grestore +end grestore +% Logic()->BasicType() +newpath 224 216 moveto +224 208 224 199 224 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 228 190 moveto +224 180 lineto +221 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 228 190 moveto +224 180 lineto +221 190 lineto +closepath +stroke +end grestore +% OneDimensionalArrayAggregate(a:Type) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 519 252 moveto +271 252 lineto +271 216 lineto +519 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 519 252 moveto +271 252 lineto +271 216 lineto +519 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +278 229 moveto +(OneDimensionalArrayAggregate\(a:Type\)) +[10.08 6.96 6.24 10.08 3.84 10.8 6.24 6.96 5.52 3.84 6.96 6.96 6.24 3.84 10.08 5.28 4.8 5.76 6.96 9.84 6.96 7.2 4.8 6.24 6.72 6.24 3.84 6.24 4.56 6.24 3.84 7.2 6.96 6.96 6.24 4.56] +xshow +end grestore +end grestore +% OneDimensionalArrayAggregate(Boolean)->OneDimensionalArrayAggregate(a:Type) +newpath 390 288 moveto +391 280 391 271 392 262 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 395 262 moveto +393 252 lineto +389 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 395 262 moveto +393 252 lineto +389 262 lineto +closepath +stroke +end grestore +% FiniteLinearAggregate(a:Type) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 490 180 moveto +300 180 lineto +300 144 lineto +490 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 490 180 moveto +300 180 lineto +300 144 lineto +490 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +308 157 moveto +(FiniteLinearAggregate\(a:Type\)) +[7.44 3.84 6.96 3.84 3.84 6.24 8.64 3.84 6.96 6.24 6.24 4.8 9.84 6.96 7.2 4.8 6.24 6.72 6.24 3.84 6.24 4.56 6.24 3.84 7.2 6.96 6.96 6.24 4.56] +xshow +end grestore +end grestore +% OneDimensionalArrayAggregate(a:Type)->FiniteLinearAggregate(a:Type) +newpath 395 216 moveto +395 208 395 199 395 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 399 190 moveto +395 180 lineto +392 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 399 190 moveto +395 180 lineto +392 190 lineto +closepath +stroke +end grestore +% LinearAggregate(a:Type) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 474 108 moveto +316 108 lineto +316 72 lineto +474 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 474 108 moveto +316 108 lineto +316 72 lineto +474 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +324 85 moveto +(LinearAggregate\(a:Type\)) +[8.64 3.84 6.96 6.24 6.24 4.8 9.84 6.96 7.2 4.8 6.24 6.72 6.24 3.84 6.24 4.56 6.24 3.84 7.2 6.96 6.96 6.24 4.56] +xshow +end grestore +end grestore +% FiniteLinearAggregate(a:Type)->LinearAggregate(a:Type) +newpath 395 144 moveto +395 136 395 127 395 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 399 118 moveto +395 108 lineto +392 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 399 118 moveto +395 108 lineto +392 118 lineto +closepath +stroke +end grestore +% IXAGG... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 476 36 moveto +404 36 lineto +404 0 lineto +476 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 476 36 moveto +404 36 lineto +404 0 lineto +476 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +411 13 moveto +(IXAGG...) +[4.56 10.08 9.36 10.08 10.08 3.6 3.6 3.6] +xshow +end grestore +end grestore +% LinearAggregate(a:Type)->IXAGG... +newpath 406 72 moveto +411 64 418 54 424 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 427 46 moveto +429 36 lineto +421 43 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 427 46 moveto +429 36 lineto +421 43 lineto +closepath +stroke +end grestore +% CLAGG... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 386 36 moveto +312 36 lineto +312 0 lineto +386 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 386 36 moveto +312 36 lineto +312 0 lineto +386 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +319 13 moveto +(CLAGG...) +[9.36 8.64 9.36 10.08 10.08 3.6 3.6 3.6] +xshow +end grestore +end grestore +% LinearAggregate(a:Type)->CLAGG... +newpath 383 72 moveto +378 64 371 54 365 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 368 43 moveto +360 36 lineto +362 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 368 43 moveto +360 36 lineto +362 46 lineto +closepath +stroke +end grestore +% SetCategory()->BasicType() +newpath 154 216 moveto +165 207 180 196 193 186 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 195 189 moveto +201 180 lineto +191 183 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 195 189 moveto +201 180 lineto +191 183 lineto +closepath +stroke +end grestore +% CoercibleTo(OutputForm) +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 164 180 moveto +0 180 lineto +0 144 lineto +164 144 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 164 180 moveto +0 180 lineto +0 144 lineto +164 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +8 157 moveto +(CoercibleTo\(OutputForm\)) +[9.36 6.96 6.24 4.8 6.24 3.84 6.96 3.84 6.24 7.44 6.96 4.56 10.08 6.96 3.84 6.96 6.96 3.84 7.44 6.96 5.04 10.8 4.56] +xshow +end grestore +end grestore +% SetCategory()->CoercibleTo(OutputForm) +newpath 118 216 moveto +113 208 106 198 100 188 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 103 186 moveto +94 180 lineto +97 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 103 186 moveto +94 180 lineto +97 190 lineto +closepath +stroke +end grestore +% Category +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 199 36 moveto +131 36 lineto +131 0 lineto +199 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 199 36 moveto +131 36 lineto +131 0 lineto +199 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +139 13 moveto +(Category) +[9.36 6.24 3.84 6.24 6.96 6.96 5.04 6.96] +xshow +end grestore +end grestore +% BasicType()->Category +newpath 217 144 moveto +207 119 188 74 176 45 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 179 44 moveto +172 36 lineto +173 47 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 179 44 moveto +172 36 lineto +173 47 lineto +closepath +stroke +end grestore +% CoercibleTo(a:Type) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 160 108 moveto +28 108 lineto +28 72 lineto +160 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 160 108 moveto +28 108 lineto +28 72 lineto +160 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +36 85 moveto +(CoercibleTo\(a:Type\)) +[9.36 6.96 6.24 4.8 6.24 3.84 6.96 3.84 6.24 7.44 6.96 4.56 6.24 3.84 7.2 6.96 6.96 6.24 4.56] +xshow +end grestore +end grestore +% CoercibleTo(OutputForm)->CoercibleTo(a:Type) +newpath 85 144 moveto +86 136 88 127 89 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 92 118 moveto +91 108 lineto +86 117 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 92 118 moveto +91 108 lineto +86 117 lineto +closepath +stroke +end grestore +% CoercibleTo(a:Type)->Category +newpath 112 72 moveto +121 63 131 53 140 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 143 46 moveto +147 36 lineto +138 41 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 143 46 moveto +147 36 lineto +138 41 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102characteristicnonzero.ps b/books/ps/v102characteristicnonzero.ps new file mode 100644 index 0000000..af0751f --- /dev/null +++ b/books/ps/v102characteristicnonzero.ps @@ -0,0 +1,790 @@ +%!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 403 440 +%%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 403 440 +%%PageOrientation: Portrait +gsave +36 36 367 404 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 402 lineto +365 402 lineto +365 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 402 lineto +365 402 lineto +365 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% CharacteristicNonZero() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 252 396 moveto +98 396 lineto +98 360 lineto +252 360 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 252 396 moveto +98 396 lineto +98 360 lineto +252 360 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +106 373 moveto +(CharacteristicNonZero\(\)) +[9.36 6.96 6.24 4.8 6.24 6.24 3.84 6.24 5.04 3.84 5.28 3.84 3.84 6.24 9.84 6.96 6.96 8.64 6.24 4.8 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Ring() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 202 324 moveto +148 324 lineto +148 288 lineto +202 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 202 324 moveto +148 324 lineto +148 288 lineto +202 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +156 301 moveto +(Ring\(\)) +[9.36 3.84 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% CharacteristicNonZero()->Ring() +newpath 175 360 moveto +175 352 175 343 175 334 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 179 334 moveto +175 324 lineto +172 334 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 179 334 moveto +175 324 lineto +172 334 lineto +closepath +stroke +end grestore +% Rng() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 202 252 moveto +148 252 lineto +148 216 lineto +202 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 202 252 moveto +148 252 lineto +148 216 lineto +202 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +158 229 moveto +(Rng\(\)) +[9.36 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Ring()->Rng() +newpath 175 288 moveto +175 280 175 271 175 262 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 179 262 moveto +175 252 lineto +172 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 179 262 moveto +175 252 lineto +172 262 lineto +closepath +stroke +end grestore +% Monoid() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 290 252 moveto +220 252 lineto +220 216 lineto +290 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 290 252 moveto +220 252 lineto +220 216 lineto +290 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +227 229 moveto +(Monoid\(\)) +[12.48 6.96 6.96 6.96 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Ring()->Monoid() +newpath 195 288 moveto +205 279 217 268 228 259 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 230 262 moveto +235 252 lineto +225 257 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 230 262 moveto +235 252 lineto +225 257 lineto +closepath +stroke +end grestore +% LeftModule(a:Ring) +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 130 252 moveto +0 252 lineto +0 216 lineto +130 216 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 130 252 moveto +0 252 lineto +0 216 lineto +130 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +8 229 moveto +(LeftModule\(a:Ring\)) +[8.64 6.24 4.8 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Ring()->LeftModule(a:Ring) +newpath 148 288 moveto +134 279 116 268 101 258 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 103 255 moveto +93 252 lineto +99 261 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 103 255 moveto +93 252 lineto +99 261 lineto +closepath +stroke +end grestore +% AbelianGroup() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 157 108 moveto +51 108 lineto +51 72 lineto +157 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 157 108 moveto +51 108 lineto +51 72 lineto +157 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +59 85 moveto +(AbelianGroup\(\)) +[9.84 6.96 6.24 3.84 3.84 6.24 6.96 10.08 4.8 6.96 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Rng()->AbelianGroup() +newpath 169 216 moveto +163 197 152 168 140 144 curveto +135 134 129 125 123 116 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 126 114 moveto +117 108 lineto +120 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 126 114 moveto +117 108 lineto +120 118 lineto +closepath +stroke +end grestore +% SemiGroup() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 296 180 moveto +206 180 lineto +206 144 lineto +296 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 296 180 moveto +206 180 lineto +206 144 lineto +296 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +214 157 moveto +(SemiGroup\(\)) +[7.68 6.24 10.8 3.84 10.08 4.8 6.96 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Rng()->SemiGroup() +newpath 194 216 moveto +204 207 215 197 225 187 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 227 190 moveto +232 180 lineto +222 185 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 227 190 moveto +232 180 lineto +222 185 lineto +closepath +stroke +end grestore +% Monoid()->SemiGroup() +newpath 254 216 moveto +253 208 253 199 253 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 256 190 moveto +252 180 lineto +250 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 256 190 moveto +252 180 lineto +250 190 lineto +closepath +stroke +end grestore +% LeftModule(a:Rng) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 131 180 moveto +5 180 lineto +5 144 lineto +131 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 131 180 moveto +5 180 lineto +5 144 lineto +131 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +13 157 moveto +(LeftModule\(a:Rng\)) +[8.64 6.24 4.8 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 6.96 4.56] +xshow +end grestore +end grestore +% LeftModule(a:Ring)->LeftModule(a:Rng) +newpath 66 216 moveto +67 208 67 199 67 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 71 190 moveto +67 180 lineto +64 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 71 190 moveto +67 180 lineto +64 190 lineto +closepath +stroke +end grestore +% CABMON... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 99 36 moveto +11 36 lineto +11 0 lineto +99 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 99 36 moveto +11 36 lineto +11 0 lineto +99 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +19 13 moveto +(CABMON...) +[9.12 10.08 9.36 12.48 10.08 9.84 3.6 3.6 3.6] +xshow +end grestore +end grestore +% AbelianGroup()->CABMON... +newpath 92 72 moveto +86 64 79 54 73 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 76 42 moveto +67 36 lineto +70 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 76 42 moveto +67 36 lineto +70 46 lineto +closepath +stroke +end grestore +% REPDB... +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 189 36 moveto +117 36 lineto +117 0 lineto +189 0 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 189 36 moveto +117 36 lineto +117 0 lineto +189 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +124 13 moveto +(REPDB...) +[9.36 8.64 7.68 10.08 9.36 3.6 3.6 3.6] +xshow +end grestore +end grestore +% AbelianGroup()->REPDB... +newpath 116 72 moveto +122 64 129 54 135 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 138 46 moveto +141 36 lineto +132 42 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 138 46 moveto +141 36 lineto +132 42 lineto +closepath +stroke +end grestore +% SETCAT... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 271 108 moveto +193 108 lineto +193 72 lineto +271 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 271 108 moveto +193 108 lineto +193 72 lineto +271 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +201 85 moveto +(SETCAT...) +[7.68 8.64 8.64 9.12 9.36 7.44 3.6 3.6 3.6] +xshow +end grestore +end grestore +% SemiGroup()->SETCAT... +newpath 246 144 moveto +244 136 242 127 240 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 243 117 moveto +237 108 lineto +237 119 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 243 117 moveto +237 108 lineto +237 119 lineto +closepath +stroke +end grestore +% REPSQ... +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 359 108 moveto +289 108 lineto +289 72 lineto +359 72 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 359 108 moveto +289 108 lineto +289 72 lineto +359 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +296 85 moveto +(REPSQ...) +[9.36 8.64 7.68 7.68 10.08 3.6 3.6 3.6] +xshow +end grestore +end grestore +% SemiGroup()->REPSQ... +newpath 269 144 moveto +278 135 289 125 299 115 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 301 118 moveto +306 108 lineto +296 113 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 301 118 moveto +306 108 lineto +296 113 lineto +closepath +stroke +end grestore +% LeftModule(a:Rng)->AbelianGroup() +newpath 77 144 moveto +81 136 86 126 91 117 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 94 119 moveto +95 108 lineto +88 116 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 94 119 moveto +95 108 lineto +88 116 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102characteristiczero.ps b/books/ps/v102characteristiczero.ps new file mode 100644 index 0000000..88f05da --- /dev/null +++ b/books/ps/v102characteristiczero.ps @@ -0,0 +1,790 @@ +%!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 403 440 +%%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 403 440 +%%PageOrientation: Portrait +gsave +36 36 367 404 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 402 lineto +365 402 lineto +365 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 402 lineto +365 402 lineto +365 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% CharacteristicZero() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 240 396 moveto +110 396 lineto +110 360 lineto +240 360 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 240 396 moveto +110 396 lineto +110 360 lineto +240 360 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +118 373 moveto +(CharacteristicZero\(\)) +[9.36 6.96 6.24 4.8 6.24 6.24 3.84 6.24 5.04 3.84 5.28 3.84 3.84 6.24 8.64 6.24 4.8 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Ring() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 202 324 moveto +148 324 lineto +148 288 lineto +202 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 202 324 moveto +148 324 lineto +148 288 lineto +202 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +156 301 moveto +(Ring\(\)) +[9.36 3.84 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% CharacteristicZero()->Ring() +newpath 175 360 moveto +175 352 175 343 175 334 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 179 334 moveto +175 324 lineto +172 334 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 179 334 moveto +175 324 lineto +172 334 lineto +closepath +stroke +end grestore +% Rng() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 202 252 moveto +148 252 lineto +148 216 lineto +202 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 202 252 moveto +148 252 lineto +148 216 lineto +202 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +158 229 moveto +(Rng\(\)) +[9.36 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Ring()->Rng() +newpath 175 288 moveto +175 280 175 271 175 262 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 179 262 moveto +175 252 lineto +172 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 179 262 moveto +175 252 lineto +172 262 lineto +closepath +stroke +end grestore +% Monoid() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 290 252 moveto +220 252 lineto +220 216 lineto +290 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 290 252 moveto +220 252 lineto +220 216 lineto +290 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +227 229 moveto +(Monoid\(\)) +[12.48 6.96 6.96 6.96 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Ring()->Monoid() +newpath 195 288 moveto +205 279 217 268 228 259 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 230 262 moveto +235 252 lineto +225 257 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 230 262 moveto +235 252 lineto +225 257 lineto +closepath +stroke +end grestore +% LeftModule(a:Ring) +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 130 252 moveto +0 252 lineto +0 216 lineto +130 216 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 130 252 moveto +0 252 lineto +0 216 lineto +130 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +8 229 moveto +(LeftModule\(a:Ring\)) +[8.64 6.24 4.8 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Ring()->LeftModule(a:Ring) +newpath 148 288 moveto +134 279 116 268 101 258 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 103 255 moveto +93 252 lineto +99 261 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 103 255 moveto +93 252 lineto +99 261 lineto +closepath +stroke +end grestore +% AbelianGroup() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 157 108 moveto +51 108 lineto +51 72 lineto +157 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 157 108 moveto +51 108 lineto +51 72 lineto +157 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +59 85 moveto +(AbelianGroup\(\)) +[9.84 6.96 6.24 3.84 3.84 6.24 6.96 10.08 4.8 6.96 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Rng()->AbelianGroup() +newpath 169 216 moveto +163 197 152 168 140 144 curveto +135 134 129 125 123 116 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 126 114 moveto +117 108 lineto +120 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 126 114 moveto +117 108 lineto +120 118 lineto +closepath +stroke +end grestore +% SemiGroup() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 296 180 moveto +206 180 lineto +206 144 lineto +296 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 296 180 moveto +206 180 lineto +206 144 lineto +296 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +214 157 moveto +(SemiGroup\(\)) +[7.68 6.24 10.8 3.84 10.08 4.8 6.96 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Rng()->SemiGroup() +newpath 194 216 moveto +204 207 215 197 225 187 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 227 190 moveto +232 180 lineto +222 185 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 227 190 moveto +232 180 lineto +222 185 lineto +closepath +stroke +end grestore +% Monoid()->SemiGroup() +newpath 254 216 moveto +253 208 253 199 253 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 256 190 moveto +252 180 lineto +250 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 256 190 moveto +252 180 lineto +250 190 lineto +closepath +stroke +end grestore +% LeftModule(a:Rng) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 131 180 moveto +5 180 lineto +5 144 lineto +131 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 131 180 moveto +5 180 lineto +5 144 lineto +131 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +13 157 moveto +(LeftModule\(a:Rng\)) +[8.64 6.24 4.8 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 6.96 4.56] +xshow +end grestore +end grestore +% LeftModule(a:Ring)->LeftModule(a:Rng) +newpath 66 216 moveto +67 208 67 199 67 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 71 190 moveto +67 180 lineto +64 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 71 190 moveto +67 180 lineto +64 190 lineto +closepath +stroke +end grestore +% CABMON... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 99 36 moveto +11 36 lineto +11 0 lineto +99 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 99 36 moveto +11 36 lineto +11 0 lineto +99 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +19 13 moveto +(CABMON...) +[9.12 10.08 9.36 12.48 10.08 9.84 3.6 3.6 3.6] +xshow +end grestore +end grestore +% AbelianGroup()->CABMON... +newpath 92 72 moveto +86 64 79 54 73 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 76 42 moveto +67 36 lineto +70 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 76 42 moveto +67 36 lineto +70 46 lineto +closepath +stroke +end grestore +% REPDB... +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 189 36 moveto +117 36 lineto +117 0 lineto +189 0 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 189 36 moveto +117 36 lineto +117 0 lineto +189 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +124 13 moveto +(REPDB...) +[9.36 8.64 7.68 10.08 9.36 3.6 3.6 3.6] +xshow +end grestore +end grestore +% AbelianGroup()->REPDB... +newpath 116 72 moveto +122 64 129 54 135 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 138 46 moveto +141 36 lineto +132 42 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 138 46 moveto +141 36 lineto +132 42 lineto +closepath +stroke +end grestore +% SETCAT... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 271 108 moveto +193 108 lineto +193 72 lineto +271 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 271 108 moveto +193 108 lineto +193 72 lineto +271 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +201 85 moveto +(SETCAT...) +[7.68 8.64 8.64 9.12 9.36 7.44 3.6 3.6 3.6] +xshow +end grestore +end grestore +% SemiGroup()->SETCAT... +newpath 246 144 moveto +244 136 242 127 240 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 243 117 moveto +237 108 lineto +237 119 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 243 117 moveto +237 108 lineto +237 119 lineto +closepath +stroke +end grestore +% REPSQ... +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 359 108 moveto +289 108 lineto +289 72 lineto +359 72 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 359 108 moveto +289 108 lineto +289 72 lineto +359 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +296 85 moveto +(REPSQ...) +[9.36 8.64 7.68 7.68 10.08 3.6 3.6 3.6] +xshow +end grestore +end grestore +% SemiGroup()->REPSQ... +newpath 269 144 moveto +278 135 289 125 299 115 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 301 118 moveto +306 108 lineto +296 113 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 301 118 moveto +306 108 lineto +296 113 lineto +closepath +stroke +end grestore +% LeftModule(a:Rng)->AbelianGroup() +newpath 77 144 moveto +81 136 86 126 91 117 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 94 119 moveto +95 108 lineto +88 116 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 94 119 moveto +95 108 lineto +88 116 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102commutativering.ps b/books/ps/v102commutativering.ps new file mode 100644 index 0000000..baaff82 --- /dev/null +++ b/books/ps/v102commutativering.ps @@ -0,0 +1,968 @@ +%!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 540 440 +%%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 540 440 +%%PageOrientation: Portrait +gsave +36 36 504 404 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 402 lineto +502 402 lineto +502 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 402 lineto +502 402 lineto +502 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% CommutativeRing() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 294 396 moveto +166 396 lineto +166 360 lineto +294 360 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 294 396 moveto +166 396 lineto +166 360 lineto +294 360 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +174 373 moveto +(CommutativeRing\(\)) +[9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Ring() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 194 324 moveto +140 324 lineto +140 288 lineto +194 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 194 324 moveto +140 324 lineto +140 288 lineto +194 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +148 301 moveto +(Ring\(\)) +[9.36 3.84 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% CommutativeRing()->Ring() +newpath 214 360 moveto +206 351 197 341 190 332 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 192 329 moveto +183 324 lineto +187 334 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 192 329 moveto +183 324 lineto +187 334 lineto +closepath +stroke +end grestore +% BiModule(a:Ring,b:Ring) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 374 324 moveto +212 324 lineto +212 288 lineto +374 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 374 324 moveto +212 324 lineto +212 288 lineto +374 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +220 301 moveto +(BiModule\(a:Ring,b:Ring\)) +[9.36 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 3.84 6.96 6.96 3.6 6.96 3.84 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% CommutativeRing()->BiModule(a:Ring,b:Ring) +newpath 246 360 moveto +254 351 263 341 270 332 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 273 334 moveto +277 324 lineto +268 329 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 273 334 moveto +277 324 lineto +268 329 lineto +closepath +stroke +end grestore +% Rng() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 194 252 moveto +140 252 lineto +140 216 lineto +194 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 194 252 moveto +140 252 lineto +140 216 lineto +194 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +150 229 moveto +(Rng\(\)) +[9.36 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Ring()->Rng() +newpath 167 288 moveto +167 280 167 271 167 262 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 171 262 moveto +167 252 lineto +164 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 171 262 moveto +167 252 lineto +164 262 lineto +closepath +stroke +end grestore +% Monoid() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 122 252 moveto +52 252 lineto +52 216 lineto +122 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 122 252 moveto +52 252 lineto +52 216 lineto +122 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +59 229 moveto +(Monoid\(\)) +[12.48 6.96 6.96 6.96 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Ring()->Monoid() +newpath 147 288 moveto +137 279 125 268 114 259 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 117 257 moveto +107 252 lineto +112 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 117 257 moveto +107 252 lineto +112 262 lineto +closepath +stroke +end grestore +% LeftModule(a:Ring) +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 342 252 moveto +212 252 lineto +212 216 lineto +342 216 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 342 252 moveto +212 252 lineto +212 216 lineto +342 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +220 229 moveto +(LeftModule\(a:Ring\)) +[8.64 6.24 4.8 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Ring()->LeftModule(a:Ring) +newpath 194 288 moveto +208 279 226 268 241 258 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 243 261 moveto +249 252 lineto +239 255 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 243 261 moveto +249 252 lineto +239 255 lineto +closepath +stroke +end grestore +% BiModule(a:Ring,b:Ring)->LeftModule(a:Ring) +newpath 289 288 moveto +287 280 285 271 283 262 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 286 261 moveto +281 252 lineto +280 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 286 261 moveto +281 252 lineto +280 262 lineto +closepath +stroke +end grestore +% RightModule(a:Ring) +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 496 252 moveto +360 252 lineto +360 216 lineto +496 216 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 496 252 moveto +360 252 lineto +360 216 lineto +496 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +367 229 moveto +(RightModule\(a:Ring\)) +[9.36 3.84 6.96 6.96 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% BiModule(a:Ring,b:Ring)->RightModule(a:Ring) +newpath 327 288 moveto +345 279 367 267 385 257 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 387 260 moveto +394 252 lineto +384 254 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 387 260 moveto +394 252 lineto +384 254 lineto +closepath +stroke +end grestore +% AbelianGroup() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 330 108 moveto +224 108 lineto +224 72 lineto +330 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 330 108 moveto +224 108 lineto +224 72 lineto +330 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +232 85 moveto +(AbelianGroup\(\)) +[9.84 6.96 6.24 3.84 3.84 6.24 6.96 10.08 4.8 6.96 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Rng()->AbelianGroup() +newpath 172 216 moveto +177 197 188 166 205 144 curveto +214 133 225 122 237 114 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 239 117 moveto +245 108 lineto +235 111 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 239 117 moveto +245 108 lineto +235 111 lineto +closepath +stroke +end grestore +% SemiGroup() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 135 180 moveto +45 180 lineto +45 144 lineto +135 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 135 180 moveto +45 180 lineto +45 144 lineto +135 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +53 157 moveto +(SemiGroup\(\)) +[7.68 6.24 10.8 3.84 10.08 4.8 6.96 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Rng()->SemiGroup() +newpath 148 216 moveto +138 207 127 197 117 187 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 119 184 moveto +109 180 lineto +114 189 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 119 184 moveto +109 180 lineto +114 189 lineto +closepath +stroke +end grestore +% Monoid()->SemiGroup() +newpath 88 216 moveto +89 208 89 199 89 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 93 190 moveto +89 180 lineto +86 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 93 190 moveto +89 180 lineto +86 190 lineto +closepath +stroke +end grestore +% LeftModule(a:Rng) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 340 180 moveto +214 180 lineto +214 144 lineto +340 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 340 180 moveto +214 180 lineto +214 144 lineto +340 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +222 157 moveto +(LeftModule\(a:Rng\)) +[8.64 6.24 4.8 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 6.96 4.56] +xshow +end grestore +end grestore +% LeftModule(a:Ring)->LeftModule(a:Rng) +newpath 277 216 moveto +277 208 277 199 277 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 281 190 moveto +277 180 lineto +274 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 281 190 moveto +277 180 lineto +274 190 lineto +closepath +stroke +end grestore +% RightModule(a:Rng) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 493 180 moveto +359 180 lineto +359 144 lineto +493 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 493 180 moveto +359 180 lineto +359 144 lineto +493 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +367 157 moveto +(RightModule\(a:Rng\)) +[9.36 3.84 6.96 6.96 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 6.96 4.56] +xshow +end grestore +end grestore +% RightModule(a:Ring)->RightModule(a:Rng) +newpath 427 216 moveto +427 208 427 199 427 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 430 190 moveto +426 180 lineto +424 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 430 190 moveto +426 180 lineto +424 190 lineto +closepath +stroke +end grestore +% RightModule(a:Rng)->AbelianGroup() +newpath 388 144 moveto +368 134 344 123 323 112 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 325 109 moveto +314 108 lineto +322 115 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 325 109 moveto +314 108 lineto +322 115 lineto +closepath +stroke +end grestore +% CABMON... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 272 36 moveto +184 36 lineto +184 0 lineto +272 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 272 36 moveto +184 36 lineto +184 0 lineto +272 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +192 13 moveto +(CABMON...) +[9.12 10.08 9.36 12.48 10.08 9.84 3.6 3.6 3.6] +xshow +end grestore +end grestore +% AbelianGroup()->CABMON... +newpath 265 72 moveto +259 64 252 54 246 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 249 42 moveto +240 36 lineto +243 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 249 42 moveto +240 36 lineto +243 46 lineto +closepath +stroke +end grestore +% REPDB... +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 362 36 moveto +290 36 lineto +290 0 lineto +362 0 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 362 36 moveto +290 36 lineto +290 0 lineto +362 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +297 13 moveto +(REPDB...) +[9.36 8.64 7.68 10.08 9.36 3.6 3.6 3.6] +xshow +end grestore +end grestore +% AbelianGroup()->REPDB... +newpath 289 72 moveto +295 64 302 54 308 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 311 46 moveto +314 36 lineto +305 42 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 311 46 moveto +314 36 lineto +305 42 lineto +closepath +stroke +end grestore +% SETCAT... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 78 108 moveto +0 108 lineto +0 72 lineto +78 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 78 108 moveto +0 108 lineto +0 72 lineto +78 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +8 85 moveto +(SETCAT...) +[7.68 8.64 8.64 9.12 9.36 7.44 3.6 3.6 3.6] +xshow +end grestore +end grestore +% SemiGroup()->SETCAT... +newpath 77 144 moveto +71 136 64 126 58 116 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 61 114 moveto +52 108 lineto +55 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 61 114 moveto +52 108 lineto +55 118 lineto +closepath +stroke +end grestore +% REPSQ... +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 166 108 moveto +96 108 lineto +96 72 lineto +166 72 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 166 108 moveto +96 108 lineto +96 72 lineto +166 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +103 85 moveto +(REPSQ...) +[9.36 8.64 7.68 7.68 10.08 3.6 3.6 3.6] +xshow +end grestore +end grestore +% SemiGroup()->REPSQ... +newpath 100 144 moveto +104 136 110 126 116 117 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 119 118 moveto +121 108 lineto +113 115 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 119 118 moveto +121 108 lineto +113 115 lineto +closepath +stroke +end grestore +% LeftModule(a:Rng)->AbelianGroup() +newpath 277 144 moveto +277 136 277 127 277 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 281 118 moveto +277 108 lineto +274 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 281 118 moveto +277 108 lineto +274 118 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102differentialextension.ps b/books/ps/v102differentialextension.ps new file mode 100644 index 0000000..c3e4d57 --- /dev/null +++ b/books/ps/v102differentialextension.ps @@ -0,0 +1,775 @@ +%!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 519 440 +%%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 519 440 +%%PageOrientation: Portrait +gsave +36 36 483 404 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 402 lineto +481 402 lineto +481 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 402 lineto +481 402 lineto +481 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% DifferentialExtension(a:Ring) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 256 396 moveto +72 396 lineto +72 360 lineto +256 360 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 256 396 moveto +72 396 lineto +72 360 lineto +256 360 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +80 373 moveto +(DifferentialExtension\(a:Ring\)) +[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.64 6.96 3.84 6.24 6.96 5.52 3.84 6.96 6.96 4.56 6.24 3.84 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Ring() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 191 180 moveto +137 180 lineto +137 144 lineto +191 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 191 180 moveto +137 180 lineto +137 144 lineto +191 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +145 157 moveto +(Ring\(\)) +[9.36 3.84 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% DifferentialExtension(a:Ring)->Ring() +newpath 151 360 moveto +134 336 107 293 96 252 curveto +93 236 90 230 96 216 curveto +103 201 116 190 128 181 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 130 184 moveto +137 176 lineto +127 178 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 130 184 moveto +137 176 lineto +127 178 lineto +closepath +stroke +end grestore +% DifferentialRing() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 223 252 moveto +105 252 lineto +105 216 lineto +223 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 223 252 moveto +105 252 lineto +105 216 lineto +223 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +113 229 moveto +(DifferentialRing\(\)) +[10.08 3.84 4.56 4.08 6.24 4.8 6.24 6.96 3.84 3.84 6.24 3.84 9.36 3.84 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% DifferentialExtension(a:Ring)->DifferentialRing() +newpath 164 360 moveto +164 335 164 291 164 262 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 168 262 moveto +164 252 lineto +161 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 168 262 moveto +164 252 lineto +161 262 lineto +closepath +stroke +end grestore +% PartialDifferentialRing(Symbol) +[ /Rect [ 225 288 423 324 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (bookvol10.2.pdf#nameddest=PDRING) >> + /Subtype /Link +/ANN pdfmark +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 423 324 moveto +225 324 lineto +225 288 lineto +423 288 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 423 324 moveto +225 324 lineto +225 288 lineto +423 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +233 301 moveto +(PartialDifferentialRing\(Symbol\)) +[7.44 6.24 5.04 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 9.36 3.84 6.96 6.96 4.56 7.68 6.96 10.8 6.96 6.96 3.84 4.56] +xshow +end grestore +end grestore +% DifferentialExtension(a:Ring)->PartialDifferentialRing(Symbol) +newpath 204 360 moveto +226 350 252 338 275 328 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 276 331 moveto +284 324 lineto +273 325 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 276 331 moveto +284 324 lineto +273 325 lineto +closepath +stroke +end grestore +% Rng() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 111 108 moveto +57 108 lineto +57 72 lineto +111 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 111 108 moveto +57 108 lineto +57 72 lineto +111 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +67 85 moveto +(Rng\(\)) +[9.36 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Ring()->Rng() +newpath 144 144 moveto +134 135 122 124 111 115 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 114 113 moveto +104 108 lineto +109 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 114 113 moveto +104 108 lineto +109 118 lineto +closepath +stroke +end grestore +% Monoid() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 199 108 moveto +129 108 lineto +129 72 lineto +199 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 199 108 moveto +129 108 lineto +129 72 lineto +199 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +136 85 moveto +(Monoid\(\)) +[12.48 6.96 6.96 6.96 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Ring()->Monoid() +newpath 164 144 moveto +164 136 164 127 164 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 168 118 moveto +164 108 lineto +161 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 168 118 moveto +164 108 lineto +161 118 lineto +closepath +stroke +end grestore +% LeftModule(a:Ring) +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 347 108 moveto +217 108 lineto +217 72 lineto +347 72 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 347 108 moveto +217 108 lineto +217 72 lineto +347 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +225 85 moveto +(LeftModule\(a:Ring\)) +[8.64 6.24 4.8 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Ring()->LeftModule(a:Ring) +newpath 191 145 moveto +206 136 226 123 243 113 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 245 116 moveto +252 108 lineto +242 110 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 245 116 moveto +252 108 lineto +242 110 lineto +closepath +stroke +end grestore +% DifferentialRing()->Ring() +newpath 164 216 moveto +164 208 164 199 164 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 168 190 moveto +164 180 lineto +161 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 168 190 moveto +164 180 lineto +161 190 lineto +closepath +stroke +end grestore +% PartialDifferentialRing(a:SetCategory) +[ /Rect [ 241 216 475 252 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (bookvol10.2.pdf#nameddest=PDRING) >> + /Subtype /Link +/ANN pdfmark +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 475 252 moveto +241 252 lineto +241 216 lineto +475 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 475 252 moveto +241 252 lineto +241 216 lineto +475 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +249 229 moveto +(PartialDifferentialRing\(a:SetCategory\)) +[7.44 6.24 5.04 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 9.36 3.84 6.96 6.96 4.56 6.24 3.84 7.68 6 3.84 9.36 6.24 3.84 6.24 6.96 6.96 5.04 6.96 4.56] +xshow +end grestore +end grestore +% PartialDifferentialRing(Symbol)->PartialDifferentialRing(a:SetCategory) +newpath 333 288 moveto +337 280 341 270 346 261 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 349 263 moveto +350 252 lineto +343 260 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 349 263 moveto +350 252 lineto +343 260 lineto +closepath +stroke +end grestore +% PartialDifferentialRing(a:SetCategory)->Ring() +newpath 309 216 moveto +276 203 232 187 201 176 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 202 172 moveto +191 172 lineto +199 179 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 202 172 moveto +191 172 lineto +199 179 lineto +closepath +stroke +end grestore +% AbelianGroup() +gsave 10 dict begin +filled +0.000 0.000 1.000 nodecolor +0.000 0.000 1.000 nodecolor +newpath 106 36 moveto +0 36 lineto +0 0 lineto +106 0 lineto +closepath +fill +0.000 0.000 1.000 nodecolor +newpath 106 36 moveto +0 36 lineto +0 0 lineto +106 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +8 13 moveto +(AbelianGroup\(\)) +[9.84 6.96 6.24 3.84 3.84 6.24 6.96 10.08 4.8 6.96 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Rng()->AbelianGroup() +newpath 76 72 moveto +72 64 68 54 65 46 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 68 44 moveto +61 36 lineto +61 47 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 68 44 moveto +61 36 lineto +61 47 lineto +closepath +stroke +end grestore +% SGROUP... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 204 36 moveto +124 36 lineto +124 0 lineto +204 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 204 36 moveto +124 36 lineto +124 0 lineto +204 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +132 13 moveto +(SGROUP...) +[7.68 10.08 8.64 10.08 10.08 6.24 3.6 3.6 3.6] +xshow +end grestore +end grestore +% Rng()->SGROUP... +newpath 104 72 moveto +114 63 126 52 137 43 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 139 46 moveto +144 36 lineto +134 41 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 139 46 moveto +144 36 lineto +134 41 lineto +closepath +stroke +end grestore +% Monoid()->SGROUP... +newpath 164 72 moveto +164 64 164 55 164 46 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 168 46 moveto +164 36 lineto +161 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 168 46 moveto +164 36 lineto +161 46 lineto +closepath +stroke +end grestore +% LMODULE... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 330 36 moveto +234 36 lineto +234 0 lineto +330 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 330 36 moveto +234 36 lineto +234 0 lineto +330 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +242 13 moveto +(LMODULE...) +[8.64 12.48 10.08 10.08 10.08 8.64 8.64 3.6 3.6 3.6] +xshow +end grestore +end grestore +% LeftModule(a:Ring)->LMODULE... +newpath 282 72 moveto +282 64 282 55 282 46 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 286 46 moveto +282 36 lineto +279 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 286 46 moveto +282 36 lineto +279 46 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102differentialring.ps b/books/ps/v102differentialring.ps new file mode 100644 index 0000000..3cebb93 --- /dev/null +++ b/books/ps/v102differentialring.ps @@ -0,0 +1,790 @@ +%!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 403 440 +%%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 403 440 +%%PageOrientation: Portrait +gsave +36 36 367 404 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 402 lineto +365 402 lineto +365 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 402 lineto +365 402 lineto +365 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% DifferentialRing() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 234 396 moveto +116 396 lineto +116 360 lineto +234 360 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 234 396 moveto +116 396 lineto +116 360 lineto +234 360 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +124 373 moveto +(DifferentialRing\(\)) +[10.08 3.84 4.56 4.08 6.24 4.8 6.24 6.96 3.84 3.84 6.24 3.84 9.36 3.84 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Ring() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 202 324 moveto +148 324 lineto +148 288 lineto +202 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 202 324 moveto +148 324 lineto +148 288 lineto +202 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +156 301 moveto +(Ring\(\)) +[9.36 3.84 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% DifferentialRing()->Ring() +newpath 175 360 moveto +175 352 175 343 175 334 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 179 334 moveto +175 324 lineto +172 334 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 179 334 moveto +175 324 lineto +172 334 lineto +closepath +stroke +end grestore +% Rng() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 202 252 moveto +148 252 lineto +148 216 lineto +202 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 202 252 moveto +148 252 lineto +148 216 lineto +202 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +158 229 moveto +(Rng\(\)) +[9.36 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Ring()->Rng() +newpath 175 288 moveto +175 280 175 271 175 262 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 179 262 moveto +175 252 lineto +172 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 179 262 moveto +175 252 lineto +172 262 lineto +closepath +stroke +end grestore +% Monoid() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 290 252 moveto +220 252 lineto +220 216 lineto +290 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 290 252 moveto +220 252 lineto +220 216 lineto +290 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +227 229 moveto +(Monoid\(\)) +[12.48 6.96 6.96 6.96 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Ring()->Monoid() +newpath 195 288 moveto +205 279 217 268 228 259 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 230 262 moveto +235 252 lineto +225 257 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 230 262 moveto +235 252 lineto +225 257 lineto +closepath +stroke +end grestore +% LeftModule(a:Ring) +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 130 252 moveto +0 252 lineto +0 216 lineto +130 216 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 130 252 moveto +0 252 lineto +0 216 lineto +130 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +8 229 moveto +(LeftModule\(a:Ring\)) +[8.64 6.24 4.8 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Ring()->LeftModule(a:Ring) +newpath 148 288 moveto +134 279 116 268 101 258 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 103 255 moveto +93 252 lineto +99 261 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 103 255 moveto +93 252 lineto +99 261 lineto +closepath +stroke +end grestore +% AbelianGroup() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 157 108 moveto +51 108 lineto +51 72 lineto +157 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 157 108 moveto +51 108 lineto +51 72 lineto +157 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +59 85 moveto +(AbelianGroup\(\)) +[9.84 6.96 6.24 3.84 3.84 6.24 6.96 10.08 4.8 6.96 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Rng()->AbelianGroup() +newpath 169 216 moveto +163 197 152 168 140 144 curveto +135 134 129 125 123 116 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 126 114 moveto +117 108 lineto +120 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 126 114 moveto +117 108 lineto +120 118 lineto +closepath +stroke +end grestore +% SemiGroup() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 296 180 moveto +206 180 lineto +206 144 lineto +296 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 296 180 moveto +206 180 lineto +206 144 lineto +296 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +214 157 moveto +(SemiGroup\(\)) +[7.68 6.24 10.8 3.84 10.08 4.8 6.96 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Rng()->SemiGroup() +newpath 194 216 moveto +204 207 215 197 225 187 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 227 190 moveto +232 180 lineto +222 185 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 227 190 moveto +232 180 lineto +222 185 lineto +closepath +stroke +end grestore +% Monoid()->SemiGroup() +newpath 254 216 moveto +253 208 253 199 253 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 256 190 moveto +252 180 lineto +250 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 256 190 moveto +252 180 lineto +250 190 lineto +closepath +stroke +end grestore +% LeftModule(a:Rng) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 131 180 moveto +5 180 lineto +5 144 lineto +131 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 131 180 moveto +5 180 lineto +5 144 lineto +131 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +13 157 moveto +(LeftModule\(a:Rng\)) +[8.64 6.24 4.8 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 6.96 4.56] +xshow +end grestore +end grestore +% LeftModule(a:Ring)->LeftModule(a:Rng) +newpath 66 216 moveto +67 208 67 199 67 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 71 190 moveto +67 180 lineto +64 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 71 190 moveto +67 180 lineto +64 190 lineto +closepath +stroke +end grestore +% CABMON... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 99 36 moveto +11 36 lineto +11 0 lineto +99 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 99 36 moveto +11 36 lineto +11 0 lineto +99 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +19 13 moveto +(CABMON...) +[9.12 10.08 9.36 12.48 10.08 9.84 3.6 3.6 3.6] +xshow +end grestore +end grestore +% AbelianGroup()->CABMON... +newpath 92 72 moveto +86 64 79 54 73 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 76 42 moveto +67 36 lineto +70 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 76 42 moveto +67 36 lineto +70 46 lineto +closepath +stroke +end grestore +% REPDB... +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 189 36 moveto +117 36 lineto +117 0 lineto +189 0 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 189 36 moveto +117 36 lineto +117 0 lineto +189 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +124 13 moveto +(REPDB...) +[9.36 8.64 7.68 10.08 9.36 3.6 3.6 3.6] +xshow +end grestore +end grestore +% AbelianGroup()->REPDB... +newpath 116 72 moveto +122 64 129 54 135 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 138 46 moveto +141 36 lineto +132 42 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 138 46 moveto +141 36 lineto +132 42 lineto +closepath +stroke +end grestore +% SETCAT... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 271 108 moveto +193 108 lineto +193 72 lineto +271 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 271 108 moveto +193 108 lineto +193 72 lineto +271 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +201 85 moveto +(SETCAT...) +[7.68 8.64 8.64 9.12 9.36 7.44 3.6 3.6 3.6] +xshow +end grestore +end grestore +% SemiGroup()->SETCAT... +newpath 246 144 moveto +244 136 242 127 240 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 243 117 moveto +237 108 lineto +237 119 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 243 117 moveto +237 108 lineto +237 119 lineto +closepath +stroke +end grestore +% REPSQ... +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 359 108 moveto +289 108 lineto +289 72 lineto +359 72 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 359 108 moveto +289 108 lineto +289 72 lineto +359 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +296 85 moveto +(REPSQ...) +[9.36 8.64 7.68 7.68 10.08 3.6 3.6 3.6] +xshow +end grestore +end grestore +% SemiGroup()->REPSQ... +newpath 269 144 moveto +278 135 289 125 299 115 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 301 118 moveto +306 108 lineto +296 113 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 301 118 moveto +306 108 lineto +296 113 lineto +closepath +stroke +end grestore +% LeftModule(a:Rng)->AbelianGroup() +newpath 77 144 moveto +81 136 86 126 91 117 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 94 119 moveto +95 108 lineto +88 116 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 94 119 moveto +95 108 lineto +88 116 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102divisionring.ps b/books/ps/v102divisionring.ps new file mode 100644 index 0000000..917bb12 --- /dev/null +++ b/books/ps/v102divisionring.ps @@ -0,0 +1,745 @@ +%!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 556 440 +%%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 556 440 +%%PageOrientation: Portrait +gsave +36 36 520 404 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 402 lineto +518 402 lineto +518 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 402 lineto +518 402 lineto +518 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% DivisionRing() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 247 396 moveto +145 396 lineto +145 360 lineto +247 360 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 247 396 moveto +145 396 lineto +145 360 lineto +247 360 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +153 373 moveto +(DivisionRing\(\)) +[10.08 3.84 6.96 3.84 5.52 3.84 6.96 6.96 9.36 3.84 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% EntireRing() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 86 252 moveto +0 252 lineto +0 216 lineto +86 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 86 252 moveto +0 252 lineto +0 216 lineto +86 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +7 229 moveto +(EntireRing\(\)) +[8.64 6.96 3.84 3.84 4.8 6.24 9.36 3.84 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% DivisionRing()->EntireRing() +newpath 157 360 moveto +139 351 119 338 104 324 curveto +85 305 68 280 57 261 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 60 259 moveto +52 252 lineto +54 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 60 259 moveto +52 252 lineto +54 262 lineto +closepath +stroke +end grestore +% Algebra(Fraction(Integer)) +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 279 324 moveto +113 324 lineto +113 288 lineto +279 288 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 279 324 moveto +113 324 lineto +113 288 lineto +279 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +121 301 moveto +(Algebra\(Fraction\(Integer\)\)) +[10.08 3.84 6.72 6.24 6.96 4.8 6.24 4.56 7.44 4.8 6.24 6.24 3.84 3.84 6.96 6.96 4.56 4.56 6.96 3.84 6.24 6.72 6.24 4.8 4.56 4.56] +xshow +end grestore +end grestore +% DivisionRing()->Algebra(Fraction(Integer)) +newpath 196 360 moveto +196 352 196 343 196 334 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 200 334 moveto +196 324 lineto +193 334 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 200 334 moveto +196 324 lineto +193 334 lineto +closepath +stroke +end grestore +% RepeatedSquaring(DivisionRing) +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 504 324 moveto +302 324 lineto +302 288 lineto +504 288 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 504 324 moveto +302 324 lineto +302 288 lineto +504 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +309 301 moveto +(RepeatedSquaring\(DivisionRing\)) +[9.12 6.24 6.96 6.24 6.24 3.84 6.24 6.96 7.68 6.72 6.96 6.24 5.04 3.84 6.96 6.96 4.56 10.08 3.84 6.96 3.84 5.52 3.84 6.96 6.96 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% DivisionRing()->RepeatedSquaring(DivisionRing) +newpath 247 360 moveto +275 350 311 338 341 327 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 342 330 moveto +351 324 lineto +340 324 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 342 330 moveto +351 324 lineto +340 324 lineto +closepath +stroke +end grestore +% RING... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 109 180 moveto +49 180 lineto +49 144 lineto +109 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 109 180 moveto +49 180 lineto +49 144 lineto +109 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +56 157 moveto +(RING...) +[9.36 4.56 9.84 10.08 3.6 3.6 3.6] +xshow +end grestore +end grestore +% EntireRing()->RING... +newpath 52 216 moveto +56 208 61 198 66 189 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 69 191 moveto +70 180 lineto +63 188 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 69 191 moveto +70 180 lineto +63 188 lineto +closepath +stroke +end grestore +% BMODULE... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 165 36 moveto +67 36 lineto +67 0 lineto +165 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 165 36 moveto +67 36 lineto +67 0 lineto +165 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +75 13 moveto +(BMODULE...) +[9.36 12.48 10.08 10.08 10.08 8.64 8.64 3.6 3.6 3.6] +xshow +end grestore +end grestore +% EntireRing()->BMODULE... +newpath 38 216 moveto +31 184 21 118 46 72 curveto +52 60 62 50 73 42 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 75 45 moveto +81 36 lineto +71 39 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 75 45 moveto +81 36 lineto +71 39 lineto +closepath +stroke +end grestore +% Algebra(a:CommutativeRing) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 288 252 moveto +104 252 lineto +104 216 lineto +288 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 288 252 moveto +104 252 lineto +104 216 lineto +288 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +112 229 moveto +(Algebra\(a:CommutativeRing\)) +[10.08 3.84 6.72 6.24 6.96 4.8 6.24 4.56 6.24 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Algebra(Fraction(Integer))->Algebra(a:CommutativeRing) +newpath 196 288 moveto +196 280 196 271 196 262 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 200 262 moveto +196 252 lineto +193 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 200 262 moveto +196 252 lineto +193 262 lineto +closepath +stroke +end grestore +% RepeatedSquaring(a:SetCategory) +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 512 252 moveto +306 252 lineto +306 216 lineto +512 216 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 512 252 moveto +306 252 lineto +306 216 lineto +512 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +313 229 moveto +(RepeatedSquaring\(a:SetCategory\)) +[9.12 6.24 6.96 6.24 6.24 3.84 6.24 6.96 7.68 6.72 6.96 6.24 5.04 3.84 6.96 6.96 4.56 6.24 3.84 7.68 6 3.84 9.36 6.24 3.84 6.24 6.96 6.96 5.04 6.96 4.56] +xshow +end grestore +end grestore +% RepeatedSquaring(DivisionRing)->RepeatedSquaring(a:SetCategory) +newpath 405 288 moveto +406 280 406 271 407 262 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 411 262 moveto +407 252 lineto +404 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 411 262 moveto +407 252 lineto +404 262 lineto +closepath +stroke +end grestore +% Package +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 440 180 moveto +378 180 lineto +378 144 lineto +440 144 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 440 180 moveto +378 180 lineto +378 144 lineto +440 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +385 157 moveto +(Package) +[7.44 6.24 6 6.96 6.24 6.72 6.24] +xshow +end grestore +end grestore +% RepeatedSquaring(a:SetCategory)->Package +newpath 409 216 moveto +409 208 409 199 409 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 413 190 moveto +409 180 lineto +406 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 413 190 moveto +409 180 lineto +406 190 lineto +closepath +stroke +end grestore +% Algebra(a:CommutativeRing)->RING... +newpath 166 216 moveto +151 207 133 195 117 185 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 118 182 moveto +108 180 lineto +115 188 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 118 182 moveto +108 180 lineto +115 188 lineto +closepath +stroke +end grestore +% Module(a:CommutativeRing) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 309 180 moveto +127 180 lineto +127 144 lineto +309 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 309 180 moveto +127 180 lineto +127 144 lineto +309 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +134 157 moveto +(Module\(a:CommutativeRing\)) +[12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Algebra(a:CommutativeRing)->Module(a:CommutativeRing) +newpath 202 216 moveto +204 208 207 198 210 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 213 191 moveto +213 180 lineto +207 189 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 213 191 moveto +213 180 lineto +207 189 lineto +closepath +stroke +end grestore +% BiModule(a:CommutativeRing,b:CommutativeRing) +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 367 108 moveto +55 108 lineto +55 72 lineto +367 72 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 367 108 moveto +55 108 lineto +55 72 lineto +367 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +62 85 moveto +(BiModule\(a:CommutativeRing,b:CommutativeRing\)) +[9.36 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 3.6 6.96 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Module(a:CommutativeRing)->BiModule(a:CommutativeRing,b:CommutativeRing) +newpath 216 144 moveto +215 136 215 127 214 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 217 118 moveto +213 108 lineto +211 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 217 118 moveto +213 108 lineto +211 118 lineto +closepath +stroke +end grestore +% BiModule(a:CommutativeRing,b:CommutativeRing)->BMODULE... +newpath 187 72 moveto +176 63 161 52 148 42 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 150 39 moveto +140 36 lineto +146 45 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 150 39 moveto +140 36 lineto +146 45 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102euclideandomain.ps b/books/ps/v102euclideandomain.ps new file mode 100644 index 0000000..51a70fc --- /dev/null +++ b/books/ps/v102euclideandomain.ps @@ -0,0 +1,738 @@ +%!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 478 512 +%%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 478 512 +%%PageOrientation: Portrait +gsave +36 36 442 476 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 474 lineto +440 474 lineto +440 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 474 lineto +440 474 lineto +440 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% EuclideanDomain() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 252 468 moveto +126 468 lineto +126 432 lineto +252 432 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 252 468 moveto +126 468 lineto +126 432 lineto +252 432 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +133 445 moveto +(EuclideanDomain\(\)) +[8.64 6.96 6.24 3.84 3.84 6.96 6.24 6.24 6.96 10.08 6.96 10.8 6.24 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% PrincipalIdealDomain() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 264 396 moveto +114 396 lineto +114 360 lineto +264 360 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 264 396 moveto +114 396 lineto +114 360 lineto +264 360 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +122 373 moveto +(PrincipalIdealDomain\(\)) +[7.68 5.04 3.84 6.96 6.24 3.84 6.96 6.24 3.84 4.56 6.96 6.24 6.24 3.84 10.08 6.96 10.8 6.24 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% EuclideanDomain()->PrincipalIdealDomain() +newpath 189 432 moveto +189 424 189 415 189 406 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 193 406 moveto +189 396 lineto +186 406 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 193 406 moveto +189 396 lineto +186 406 lineto +closepath +stroke +end grestore +% GcdDomain() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 236 324 moveto +142 324 lineto +142 288 lineto +236 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 236 324 moveto +142 324 lineto +142 288 lineto +236 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +150 301 moveto +(GcdDomain\(\)) +[10.08 6.24 6.96 10.08 6.96 10.8 6.24 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% PrincipalIdealDomain()->GcdDomain() +newpath 189 360 moveto +189 352 189 343 189 334 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 193 334 moveto +189 324 lineto +186 334 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 193 334 moveto +189 324 lineto +186 334 lineto +closepath +stroke +end grestore +% IntegralDomain() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 246 252 moveto +132 252 lineto +132 216 lineto +246 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 246 252 moveto +132 252 lineto +132 216 lineto +246 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +139 229 moveto +(IntegralDomain\(\)) +[4.56 6.96 3.84 6.24 7.2 4.8 6.24 3.84 10.08 6.96 10.8 6.24 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% GcdDomain()->IntegralDomain() +newpath 189 288 moveto +189 280 189 271 189 262 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 193 262 moveto +189 252 lineto +186 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 193 262 moveto +189 252 lineto +186 262 lineto +closepath +stroke +end grestore +% CommutativeRing() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 128 180 moveto +0 180 lineto +0 144 lineto +128 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 128 180 moveto +0 180 lineto +0 144 lineto +128 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +8 157 moveto +(CommutativeRing\(\)) +[9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% IntegralDomain()->CommutativeRing() +newpath 157 216 moveto +141 207 121 195 104 185 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 105 182 moveto +95 180 lineto +102 188 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 105 182 moveto +95 180 lineto +102 188 lineto +closepath +stroke +end grestore +% Algebra(a:CommutativeRing) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 434 180 moveto +250 180 lineto +250 144 lineto +434 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 434 180 moveto +250 180 lineto +250 144 lineto +434 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +258 157 moveto +(Algebra\(a:CommutativeRing\)) +[10.08 3.84 6.72 6.24 6.96 4.8 6.24 4.56 6.24 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% IntegralDomain()->Algebra(a:CommutativeRing) +newpath 228 216 moveto +248 206 273 195 295 184 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 296 187 moveto +304 180 lineto +293 181 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 296 187 moveto +304 180 lineto +293 181 lineto +closepath +stroke +end grestore +% EntireRing() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 232 180 moveto +146 180 lineto +146 144 lineto +232 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 232 180 moveto +146 180 lineto +146 144 lineto +232 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +153 157 moveto +(EntireRing\(\)) +[8.64 6.96 3.84 3.84 4.8 6.24 9.36 3.84 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% IntegralDomain()->EntireRing() +newpath 189 216 moveto +189 208 189 199 189 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 193 190 moveto +189 180 lineto +186 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 193 190 moveto +189 180 lineto +186 190 lineto +closepath +stroke +end grestore +% RING... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 178 108 moveto +118 108 lineto +118 72 lineto +178 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 178 108 moveto +118 108 lineto +118 72 lineto +178 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +125 85 moveto +(RING...) +[9.36 4.56 9.84 10.08 3.6 3.6 3.6] +xshow +end grestore +end grestore +% CommutativeRing()->RING... +newpath 85 144 moveto +95 135 108 124 119 115 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 122 117 moveto +127 108 lineto +117 112 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 122 117 moveto +127 108 lineto +117 112 lineto +closepath +stroke +end grestore +% BMODULE... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 255 36 moveto +157 36 lineto +157 0 lineto +255 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 255 36 moveto +157 36 lineto +157 0 lineto +255 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +165 13 moveto +(BMODULE...) +[9.36 12.48 10.08 10.08 10.08 8.64 8.64 3.6 3.6 3.6] +xshow +end grestore +end grestore +% CommutativeRing()->BMODULE... +newpath 69 144 moveto +76 124 89 93 109 72 curveto +121 59 137 49 152 41 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 154 44 moveto +161 36 lineto +151 38 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 154 44 moveto +161 36 lineto +151 38 lineto +closepath +stroke +end grestore +% Algebra(a:CommutativeRing)->RING... +newpath 293 144 moveto +261 132 218 116 188 105 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 189 101 moveto +178 101 lineto +186 108 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 189 101 moveto +178 101 lineto +186 108 lineto +closepath +stroke +end grestore +% Module(a:CommutativeRing) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 424 108 moveto +242 108 lineto +242 72 lineto +424 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 424 108 moveto +242 108 lineto +242 72 lineto +424 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +249 85 moveto +(Module\(a:CommutativeRing\)) +[12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Algebra(a:CommutativeRing)->Module(a:CommutativeRing) +newpath 340 144 moveto +339 136 338 127 337 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 340 117 moveto +335 108 lineto +334 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 340 117 moveto +335 108 lineto +334 118 lineto +closepath +stroke +end grestore +% EntireRing()->RING... +newpath 179 144 moveto +175 136 169 126 163 117 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 166 115 moveto +158 108 lineto +160 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 166 115 moveto +158 108 lineto +160 118 lineto +closepath +stroke +end grestore +% EntireRing()->BMODULE... +newpath 191 144 moveto +195 119 200 75 203 46 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 206 46 moveto +204 36 lineto +200 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 206 46 moveto +204 36 lineto +200 46 lineto +closepath +stroke +end grestore +% Module(a:CommutativeRing)->BMODULE... +newpath 301 72 moveto +284 63 264 51 246 41 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 247 38 moveto +237 36 lineto +244 44 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 247 38 moveto +237 36 lineto +244 44 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102evalable.ps b/books/ps/v102evalable.ps new file mode 100644 index 0000000..33f828f --- /dev/null +++ b/books/ps/v102evalable.ps @@ -0,0 +1,381 @@ +%!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 310 296 +%%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 310 296 +%%PageOrientation: Portrait +gsave +36 36 274 260 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 258 lineto +272 258 lineto +272 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 258 lineto +272 258 lineto +272 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% Evalable(a:SetCategory) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 210 252 moveto +56 252 lineto +56 216 lineto +210 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 210 252 moveto +56 252 lineto +56 216 lineto +210 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +64 229 moveto +(Evalable\(a:SetCategory\)) +[8.64 6.72 6.24 3.84 6.24 6.96 3.84 6.24 4.56 6.24 3.84 7.68 6 3.84 9.36 6.24 3.84 6.24 6.96 6.96 5.04 6.96 4.56] +xshow +end grestore +end grestore +% InnerEvalable(a:SetCategory,b:SetCategory) +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 266 180 moveto +0 180 lineto +0 144 lineto +266 144 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 266 180 moveto +0 180 lineto +0 144 lineto +266 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +7 157 moveto +(InnerEvalable\(a:SetCategory,b:SetCategory\)) +[4.56 6.96 6.96 6.24 4.8 8.64 6.72 6.24 3.84 6.24 6.96 3.84 6.24 4.56 6.24 3.84 7.68 6 3.84 9.36 6.24 3.84 6.24 6.96 6.96 5.04 6 3.6 6.96 3.84 7.68 6 3.84 9.36 6.24 3.84 6.24 6.96 6.96 5.04 6.96 4.56] +xshow +end grestore +end grestore +% Evalable(a:SetCategory)->InnerEvalable(a:SetCategory,b:SetCategory) +newpath 133 216 moveto +133 208 133 199 133 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 137 190 moveto +133 180 lineto +130 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 137 190 moveto +133 180 lineto +130 190 lineto +closepath +stroke +end grestore +% InnerEvalable(a:SetCategory,b:Type) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 245 108 moveto +21 108 lineto +21 72 lineto +245 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 245 108 moveto +21 108 lineto +21 72 lineto +245 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +28 85 moveto +(InnerEvalable\(a:SetCategory,b:Type\)) +[4.56 6.96 6.96 6.24 4.8 8.64 6.72 6.24 3.84 6.24 6.96 3.84 6.24 4.56 6.24 3.84 7.68 6 3.84 9.36 6.24 3.84 6.24 6.96 6.96 5.04 6 3.6 6.96 3.84 7.2 6.96 6.96 6.24 4.56] +xshow +end grestore +end grestore +% InnerEvalable(a:SetCategory,b:SetCategory)->InnerEvalable(a:SetCategory,b:Type) +newpath 133 144 moveto +133 136 133 127 133 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 137 118 moveto +133 108 lineto +130 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 137 118 moveto +133 108 lineto +130 118 lineto +closepath +stroke +end grestore +% Category +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 167 36 moveto +99 36 lineto +99 0 lineto +167 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 167 36 moveto +99 36 lineto +99 0 lineto +167 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +107 13 moveto +(Category) +[9.36 6.24 3.84 6.24 6.96 6.96 5.04 6.96] +xshow +end grestore +end grestore +% InnerEvalable(a:SetCategory,b:Type)->Category +newpath 133 72 moveto +133 64 133 55 133 46 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 137 46 moveto +133 36 lineto +130 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 137 46 moveto +133 36 lineto +130 46 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102field.ps b/books/ps/v102field.ps new file mode 100644 index 0000000..f3b5190 --- /dev/null +++ b/books/ps/v102field.ps @@ -0,0 +1,493 @@ +%!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 396 296 +%%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 396 296 +%%PageOrientation: Portrait +gsave +36 36 360 260 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 258 lineto +358 258 lineto +358 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 258 lineto +358 258 lineto +358 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% Field() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 263 252 moveto +209 252 lineto +209 216 lineto +263 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 263 252 moveto +209 252 lineto +209 216 lineto +263 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +217 229 moveto +(Field\(\)) +[7.44 3.84 6.24 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% EuclideanDomain() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 161 180 moveto +35 180 lineto +35 144 lineto +161 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 161 180 moveto +35 180 lineto +35 144 lineto +161 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +42 157 moveto +(EuclideanDomain\(\)) +[8.64 6.96 6.24 3.84 3.84 6.96 6.24 6.24 6.96 10.08 6.96 10.8 6.24 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Field()->EuclideanDomain() +newpath 209 220 moveto +190 210 164 196 142 185 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 143 182 moveto +133 180 lineto +140 188 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 143 182 moveto +133 180 lineto +140 188 lineto +closepath +stroke +end grestore +% UniqueFactorizationDomain() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 352 108 moveto +168 108 lineto +168 72 lineto +352 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 352 108 moveto +168 108 lineto +168 72 lineto +352 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +175 85 moveto +(UniqueFactorizationDomain\(\)) +[9.6 6.96 3.84 6.72 6.96 6.24 7.2 6.24 6.24 3.84 6.96 5.04 3.84 6.24 6.24 3.84 3.84 6.96 6.96 10.08 6.96 10.8 6.24 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Field()->UniqueFactorizationDomain() +newpath 239 216 moveto +243 191 250 147 255 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 258 118 moveto +257 108 lineto +252 117 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 258 118 moveto +257 108 lineto +252 117 lineto +closepath +stroke +end grestore +% DIVRING... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 350 180 moveto +264 180 lineto +264 144 lineto +350 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 350 180 moveto +264 180 lineto +264 144 lineto +350 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +271 157 moveto +(DIVRING...) +[10.08 4.56 10.08 9.36 4.56 9.84 10.08 3.6 3.6 3.6] +xshow +end grestore +end grestore +% Field()->DIVRING... +newpath 254 216 moveto +263 207 273 197 282 188 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 285 190 moveto +289 180 lineto +280 185 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 285 190 moveto +289 180 lineto +280 185 lineto +closepath +stroke +end grestore +% PrincipalIdealDomain() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 150 108 moveto +0 108 lineto +0 72 lineto +150 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 150 108 moveto +0 108 lineto +0 72 lineto +150 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +8 85 moveto +(PrincipalIdealDomain\(\)) +[7.68 5.04 3.84 6.96 6.24 3.84 6.96 6.24 3.84 4.56 6.96 6.24 6.24 3.84 10.08 6.96 10.8 6.24 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% EuclideanDomain()->PrincipalIdealDomain() +newpath 92 144 moveto +89 136 86 127 84 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 87 117 moveto +81 108 lineto +81 119 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 87 117 moveto +81 108 lineto +81 119 lineto +closepath +stroke +end grestore +% GCDDOM... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 212 36 moveto +122 36 lineto +122 0 lineto +212 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 212 36 moveto +122 36 lineto +122 0 lineto +212 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +130 13 moveto +(GCDDOM...) +[10.08 9.36 10.08 10.08 10.08 12.48 3.6 3.6 3.6] +xshow +end grestore +end grestore +% UniqueFactorizationDomain()->GCDDOM... +newpath 237 72 moveto +226 63 211 52 198 42 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 200 39 moveto +190 36 lineto +196 45 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 200 39 moveto +190 36 lineto +196 45 lineto +closepath +stroke +end grestore +% PrincipalIdealDomain()->GCDDOM... +newpath 98 72 moveto +109 63 124 52 136 42 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 138 45 moveto +144 36 lineto +134 39 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 138 45 moveto +144 36 lineto +134 39 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102fullylinearlyexplicitringover.ps b/books/ps/v102fullylinearlyexplicitringover.ps new file mode 100644 index 0000000..f8f2f66 --- /dev/null +++ b/books/ps/v102fullylinearlyexplicitringover.ps @@ -0,0 +1,836 @@ +%!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 403 512 +%%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 403 512 +%%PageOrientation: Portrait +gsave +36 36 367 476 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 474 lineto +365 474 lineto +365 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 474 lineto +365 474 lineto +365 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% FullyLinearlyExplicitRingOver(a:Ring) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 294 468 moveto +56 468 lineto +56 432 lineto +294 432 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 294 468 moveto +56 468 lineto +56 432 lineto +294 432 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +64 445 moveto +(FullyLinearlyExplicitRingOver\(a:Ring\)) +[7.44 6.96 3.84 3.6 6.96 8.64 3.84 6.96 6.24 6.24 4.56 3.6 6.96 8.64 6.96 6.96 3.84 3.84 6.24 3.84 3.84 9.36 3.84 6.96 6.96 10.08 6.48 6.24 4.8 4.56 6.24 3.84 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% LinearlyExplicitRingOver(a:Ring) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 279 396 moveto +71 396 lineto +71 360 lineto +279 360 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 279 396 moveto +71 396 lineto +71 360 lineto +279 360 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +78 373 moveto +(LinearlyExplicitRingOver\(a:Ring\)) +[8.64 3.84 6.96 6.24 6.24 4.56 3.6 6.96 8.64 6.96 6.96 3.84 3.84 6.24 3.84 3.84 9.36 3.84 6.96 6.96 10.08 6.48 6.24 4.8 4.56 6.24 3.84 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% FullyLinearlyExplicitRingOver(a:Ring)->LinearlyExplicitRingOver(a:Ring) +newpath 175 432 moveto +175 424 175 415 175 406 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 179 406 moveto +175 396 lineto +172 406 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 179 406 moveto +175 396 lineto +172 406 lineto +closepath +stroke +end grestore +% Ring() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 202 324 moveto +148 324 lineto +148 288 lineto +202 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 202 324 moveto +148 324 lineto +148 288 lineto +202 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +156 301 moveto +(Ring\(\)) +[9.36 3.84 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% LinearlyExplicitRingOver(a:Ring)->Ring() +newpath 175 360 moveto +175 352 175 343 175 334 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 179 334 moveto +175 324 lineto +172 334 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 179 334 moveto +175 324 lineto +172 334 lineto +closepath +stroke +end grestore +% Rng() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 202 252 moveto +148 252 lineto +148 216 lineto +202 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 202 252 moveto +148 252 lineto +148 216 lineto +202 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +158 229 moveto +(Rng\(\)) +[9.36 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Ring()->Rng() +newpath 175 288 moveto +175 280 175 271 175 262 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 179 262 moveto +175 252 lineto +172 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 179 262 moveto +175 252 lineto +172 262 lineto +closepath +stroke +end grestore +% Monoid() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 290 252 moveto +220 252 lineto +220 216 lineto +290 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 290 252 moveto +220 252 lineto +220 216 lineto +290 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +227 229 moveto +(Monoid\(\)) +[12.48 6.96 6.96 6.96 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Ring()->Monoid() +newpath 195 288 moveto +205 279 217 268 228 259 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 230 262 moveto +235 252 lineto +225 257 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 230 262 moveto +235 252 lineto +225 257 lineto +closepath +stroke +end grestore +% LeftModule(a:Ring) +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 130 252 moveto +0 252 lineto +0 216 lineto +130 216 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 130 252 moveto +0 252 lineto +0 216 lineto +130 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +8 229 moveto +(LeftModule\(a:Ring\)) +[8.64 6.24 4.8 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Ring()->LeftModule(a:Ring) +newpath 148 288 moveto +134 279 116 268 101 258 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 103 255 moveto +93 252 lineto +99 261 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 103 255 moveto +93 252 lineto +99 261 lineto +closepath +stroke +end grestore +% AbelianGroup() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 157 108 moveto +51 108 lineto +51 72 lineto +157 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 157 108 moveto +51 108 lineto +51 72 lineto +157 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +59 85 moveto +(AbelianGroup\(\)) +[9.84 6.96 6.24 3.84 3.84 6.24 6.96 10.08 4.8 6.96 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Rng()->AbelianGroup() +newpath 169 216 moveto +163 197 152 168 140 144 curveto +135 134 129 125 123 116 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 126 114 moveto +117 108 lineto +120 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 126 114 moveto +117 108 lineto +120 118 lineto +closepath +stroke +end grestore +% SemiGroup() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 296 180 moveto +206 180 lineto +206 144 lineto +296 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 296 180 moveto +206 180 lineto +206 144 lineto +296 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +214 157 moveto +(SemiGroup\(\)) +[7.68 6.24 10.8 3.84 10.08 4.8 6.96 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Rng()->SemiGroup() +newpath 194 216 moveto +204 207 215 197 225 187 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 227 190 moveto +232 180 lineto +222 185 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 227 190 moveto +232 180 lineto +222 185 lineto +closepath +stroke +end grestore +% Monoid()->SemiGroup() +newpath 254 216 moveto +253 208 253 199 253 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 256 190 moveto +252 180 lineto +250 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 256 190 moveto +252 180 lineto +250 190 lineto +closepath +stroke +end grestore +% LeftModule(a:Rng) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 131 180 moveto +5 180 lineto +5 144 lineto +131 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 131 180 moveto +5 180 lineto +5 144 lineto +131 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +13 157 moveto +(LeftModule\(a:Rng\)) +[8.64 6.24 4.8 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 6.96 4.56] +xshow +end grestore +end grestore +% LeftModule(a:Ring)->LeftModule(a:Rng) +newpath 66 216 moveto +67 208 67 199 67 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 71 190 moveto +67 180 lineto +64 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 71 190 moveto +67 180 lineto +64 190 lineto +closepath +stroke +end grestore +% CABMON... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 99 36 moveto +11 36 lineto +11 0 lineto +99 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 99 36 moveto +11 36 lineto +11 0 lineto +99 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +19 13 moveto +(CABMON...) +[9.12 10.08 9.36 12.48 10.08 9.84 3.6 3.6 3.6] +xshow +end grestore +end grestore +% AbelianGroup()->CABMON... +newpath 92 72 moveto +86 64 79 54 73 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 76 42 moveto +67 36 lineto +70 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 76 42 moveto +67 36 lineto +70 46 lineto +closepath +stroke +end grestore +% REPDB... +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 189 36 moveto +117 36 lineto +117 0 lineto +189 0 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 189 36 moveto +117 36 lineto +117 0 lineto +189 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +124 13 moveto +(REPDB...) +[9.36 8.64 7.68 10.08 9.36 3.6 3.6 3.6] +xshow +end grestore +end grestore +% AbelianGroup()->REPDB... +newpath 116 72 moveto +122 64 129 54 135 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 138 46 moveto +141 36 lineto +132 42 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 138 46 moveto +141 36 lineto +132 42 lineto +closepath +stroke +end grestore +% SETCAT... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 271 108 moveto +193 108 lineto +193 72 lineto +271 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 271 108 moveto +193 108 lineto +193 72 lineto +271 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +201 85 moveto +(SETCAT...) +[7.68 8.64 8.64 9.12 9.36 7.44 3.6 3.6 3.6] +xshow +end grestore +end grestore +% SemiGroup()->SETCAT... +newpath 246 144 moveto +244 136 242 127 240 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 243 117 moveto +237 108 lineto +237 119 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 243 117 moveto +237 108 lineto +237 119 lineto +closepath +stroke +end grestore +% REPSQ... +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 359 108 moveto +289 108 lineto +289 72 lineto +359 72 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 359 108 moveto +289 108 lineto +289 72 lineto +359 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +296 85 moveto +(REPSQ...) +[9.36 8.64 7.68 7.68 10.08 3.6 3.6 3.6] +xshow +end grestore +end grestore +% SemiGroup()->REPSQ... +newpath 269 144 moveto +278 135 289 125 299 115 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 301 118 moveto +306 108 lineto +296 113 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 301 118 moveto +306 108 lineto +296 113 lineto +closepath +stroke +end grestore +% LeftModule(a:Rng)->AbelianGroup() +newpath 77 144 moveto +81 136 86 126 91 117 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 94 119 moveto +95 108 lineto +88 116 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 94 119 moveto +95 108 lineto +88 116 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102gcddomain.ps b/books/ps/v102gcddomain.ps new file mode 100644 index 0000000..93140ca --- /dev/null +++ b/books/ps/v102gcddomain.ps @@ -0,0 +1,692 @@ +%!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 570 440 +%%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 570 440 +%%PageOrientation: Portrait +gsave +36 36 534 404 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 402 lineto +532 402 lineto +532 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 402 lineto +532 402 lineto +532 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% GcdDomain() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 236 396 moveto +142 396 lineto +142 360 lineto +236 360 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 236 396 moveto +142 396 lineto +142 360 lineto +236 360 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +150 373 moveto +(GcdDomain\(\)) +[10.08 6.24 6.96 10.08 6.96 10.8 6.24 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% IntegralDomain() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 246 324 moveto +132 324 lineto +132 288 lineto +246 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 246 324 moveto +132 324 lineto +132 288 lineto +246 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +139 301 moveto +(IntegralDomain\(\)) +[4.56 6.96 3.84 6.24 7.2 4.8 6.24 3.84 10.08 6.96 10.8 6.24 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% GcdDomain()->IntegralDomain() +newpath 189 360 moveto +189 352 189 343 189 334 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 193 334 moveto +189 324 lineto +186 334 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 193 334 moveto +189 324 lineto +186 334 lineto +closepath +stroke +end grestore +% CommutativeRing() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 128 252 moveto +0 252 lineto +0 216 lineto +128 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 128 252 moveto +0 252 lineto +0 216 lineto +128 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +8 229 moveto +(CommutativeRing\(\)) +[9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% IntegralDomain()->CommutativeRing() +newpath 157 288 moveto +141 279 121 267 104 257 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 105 254 moveto +95 252 lineto +102 260 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 105 254 moveto +95 252 lineto +102 260 lineto +closepath +stroke +end grestore +% Algebra(a:CommutativeRing) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 434 252 moveto +250 252 lineto +250 216 lineto +434 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 434 252 moveto +250 252 lineto +250 216 lineto +434 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +258 229 moveto +(Algebra\(a:CommutativeRing\)) +[10.08 3.84 6.72 6.24 6.96 4.8 6.24 4.56 6.24 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% IntegralDomain()->Algebra(a:CommutativeRing) +newpath 228 288 moveto +248 278 273 267 295 256 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 296 259 moveto +304 252 lineto +293 253 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 296 259 moveto +304 252 lineto +293 253 lineto +closepath +stroke +end grestore +% EntireRing() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 232 252 moveto +146 252 lineto +146 216 lineto +232 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 232 252 moveto +146 252 lineto +146 216 lineto +232 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +153 229 moveto +(EntireRing\(\)) +[8.64 6.96 3.84 3.84 4.8 6.24 9.36 3.84 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% IntegralDomain()->EntireRing() +newpath 189 288 moveto +189 280 189 271 189 262 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 193 262 moveto +189 252 lineto +186 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 193 262 moveto +189 252 lineto +186 262 lineto +closepath +stroke +end grestore +% RING... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 158 180 moveto +98 180 lineto +98 144 lineto +158 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 158 180 moveto +98 180 lineto +98 144 lineto +158 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +105 157 moveto +(RING...) +[9.36 4.56 9.84 10.08 3.6 3.6 3.6] +xshow +end grestore +end grestore +% CommutativeRing()->RING... +newpath 80 216 moveto +88 207 97 197 105 188 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 108 190 moveto +112 180 lineto +103 185 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 108 190 moveto +112 180 lineto +103 185 lineto +closepath +stroke +end grestore +% BMODULE... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 235 36 moveto +137 36 lineto +137 0 lineto +235 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 235 36 moveto +137 36 lineto +137 0 lineto +235 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +145 13 moveto +(BMODULE...) +[9.36 12.48 10.08 10.08 10.08 8.64 8.64 3.6 3.6 3.6] +xshow +end grestore +end grestore +% CommutativeRing()->BMODULE... +newpath 67 216 moveto +70 197 77 167 89 144 curveto +108 105 139 68 161 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 164 46 moveto +168 36 lineto +159 41 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 164 46 moveto +168 36 lineto +159 41 lineto +closepath +stroke +end grestore +% Algebra(a:CommutativeRing)->RING... +newpath 288 216 moveto +251 203 202 187 168 175 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 169 172 moveto +158 172 lineto +167 178 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 169 172 moveto +158 172 lineto +167 178 lineto +closepath +stroke +end grestore +% Module(a:CommutativeRing) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 447 180 moveto +265 180 lineto +265 144 lineto +447 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 447 180 moveto +265 180 lineto +265 144 lineto +447 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +272 157 moveto +(Module\(a:CommutativeRing\)) +[12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Algebra(a:CommutativeRing)->Module(a:CommutativeRing) +newpath 346 216 moveto +347 208 349 199 351 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 354 190 moveto +353 180 lineto +348 189 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 354 190 moveto +353 180 lineto +348 189 lineto +closepath +stroke +end grestore +% EntireRing()->RING... +newpath 174 216 moveto +167 207 158 197 150 188 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 152 185 moveto +143 180 lineto +147 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 152 185 moveto +143 180 lineto +147 190 lineto +closepath +stroke +end grestore +% EntireRing()->BMODULE... +newpath 189 216 moveto +188 178 187 91 186 46 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 190 46 moveto +186 36 lineto +183 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 190 46 moveto +186 36 lineto +183 46 lineto +closepath +stroke +end grestore +% BiModule(a:CommutativeRing,b:CommutativeRing) +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 526 108 moveto +214 108 lineto +214 72 lineto +526 72 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 526 108 moveto +214 108 lineto +214 72 lineto +526 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +221 85 moveto +(BiModule\(a:CommutativeRing,b:CommutativeRing\)) +[9.36 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 3.6 6.96 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Module(a:CommutativeRing)->BiModule(a:CommutativeRing,b:CommutativeRing) +newpath 360 144 moveto +361 136 363 127 365 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 368 118 moveto +367 108 lineto +362 117 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 368 118 moveto +367 108 lineto +362 117 lineto +closepath +stroke +end grestore +% BiModule(a:CommutativeRing,b:CommutativeRing)->BMODULE... +newpath 324 72 moveto +299 62 268 50 241 40 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 243 37 moveto +232 36 lineto +240 43 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 243 37 moveto +232 36 lineto +240 43 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102innerevalable.ps b/books/ps/v102innerevalable.ps new file mode 100644 index 0000000..a852559 --- /dev/null +++ b/books/ps/v102innerevalable.ps @@ -0,0 +1,289 @@ +%!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 268 152 +%%EndComments +save +%%BeginProlog +/DotDict 200 dict def +DotDict begin + +/setupLatin1 { +mark +/EncodingVector 256 array def + EncodingVector 0 + +ISOLatin1Encoding 0 255 getinterval putinterval +EncodingVector 45 /hyphen put + +% Set up ISO Latin 1 character encoding +/starnetISO { + dup dup findfont dup length dict begin + { 1 index /FID ne { def }{ pop pop } ifelse + } forall + /Encoding EncodingVector def + currentdict end definefont +} def +/Times-Roman starnetISO def +/Times-Italic starnetISO def +/Times-Bold starnetISO def +/Times-BoldItalic starnetISO def +/Helvetica starnetISO def +/Helvetica-Oblique starnetISO def +/Helvetica-Bold starnetISO def +/Helvetica-BoldOblique starnetISO def +/Courier starnetISO def +/Courier-Oblique starnetISO def +/Courier-Bold starnetISO def +/Courier-BoldOblique starnetISO def +cleartomark +} bind def + +%%BeginResource: procset graphviz 0 0 +/coord-font-family /Times-Roman def +/default-font-family /Times-Roman def +/coordfont coord-font-family findfont 8 scalefont def + +/InvScaleFactor 1.0 def +/set_scale { + dup 1 exch div /InvScaleFactor exch def + 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 268 152 +%%PageOrientation: Portrait +gsave +36 36 232 116 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 114 lineto +230 114 lineto +230 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 114 lineto +230 114 lineto +230 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% InnerEvalable(a:SetCategory,b:Type) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 224 108 moveto +0 108 lineto +0 72 lineto +224 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 224 108 moveto +0 108 lineto +0 72 lineto +224 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +7 85 moveto +(InnerEvalable\(a:SetCategory,b:Type\)) +[4.56 6.96 6.96 6.24 4.8 8.64 6.72 6.24 3.84 6.24 6.96 3.84 6.24 4.56 6.24 3.84 7.68 6 3.84 9.36 6.24 3.84 6.24 6.96 6.96 5.04 6 3.6 6.96 3.84 7.2 6.96 6.96 6.24 4.56] +xshow +end grestore +end grestore +% Category +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 146 36 moveto +78 36 lineto +78 0 lineto +146 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 146 36 moveto +78 36 lineto +78 0 lineto +146 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +86 13 moveto +(Category) +[9.36 6.24 3.84 6.24 6.96 6.96 5.04 6.96] +xshow +end grestore +end grestore +% InnerEvalable(a:SetCategory,b:Type)->Category +newpath 112 72 moveto +112 64 112 55 112 46 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 116 46 moveto +112 36 lineto +109 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 116 46 moveto +112 36 lineto +109 46 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102integraldomain.ps b/books/ps/v102integraldomain.ps new file mode 100644 index 0000000..4572819 --- /dev/null +++ b/books/ps/v102integraldomain.ps @@ -0,0 +1,646 @@ +%!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 570 368 +%%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 570 368 +%%PageOrientation: Portrait +gsave +36 36 534 332 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 330 lineto +532 330 lineto +532 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 330 lineto +532 330 lineto +532 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% IntegralDomain() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 246 324 moveto +132 324 lineto +132 288 lineto +246 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 246 324 moveto +132 324 lineto +132 288 lineto +246 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +139 301 moveto +(IntegralDomain\(\)) +[4.56 6.96 3.84 6.24 7.2 4.8 6.24 3.84 10.08 6.96 10.8 6.24 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% CommutativeRing() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 128 252 moveto +0 252 lineto +0 216 lineto +128 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 128 252 moveto +0 252 lineto +0 216 lineto +128 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +8 229 moveto +(CommutativeRing\(\)) +[9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% IntegralDomain()->CommutativeRing() +newpath 157 288 moveto +141 279 121 267 104 257 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 105 254 moveto +95 252 lineto +102 260 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 105 254 moveto +95 252 lineto +102 260 lineto +closepath +stroke +end grestore +% Algebra(a:CommutativeRing) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 434 252 moveto +250 252 lineto +250 216 lineto +434 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 434 252 moveto +250 252 lineto +250 216 lineto +434 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +258 229 moveto +(Algebra\(a:CommutativeRing\)) +[10.08 3.84 6.72 6.24 6.96 4.8 6.24 4.56 6.24 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% IntegralDomain()->Algebra(a:CommutativeRing) +newpath 228 288 moveto +248 278 273 267 295 256 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 296 259 moveto +304 252 lineto +293 253 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 296 259 moveto +304 252 lineto +293 253 lineto +closepath +stroke +end grestore +% EntireRing() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 232 252 moveto +146 252 lineto +146 216 lineto +232 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 232 252 moveto +146 252 lineto +146 216 lineto +232 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +153 229 moveto +(EntireRing\(\)) +[8.64 6.96 3.84 3.84 4.8 6.24 9.36 3.84 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% IntegralDomain()->EntireRing() +newpath 189 288 moveto +189 280 189 271 189 262 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 193 262 moveto +189 252 lineto +186 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 193 262 moveto +189 252 lineto +186 262 lineto +closepath +stroke +end grestore +% RING... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 158 180 moveto +98 180 lineto +98 144 lineto +158 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 158 180 moveto +98 180 lineto +98 144 lineto +158 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +105 157 moveto +(RING...) +[9.36 4.56 9.84 10.08 3.6 3.6 3.6] +xshow +end grestore +end grestore +% CommutativeRing()->RING... +newpath 80 216 moveto +88 207 97 197 105 188 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 108 190 moveto +112 180 lineto +103 185 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 108 190 moveto +112 180 lineto +103 185 lineto +closepath +stroke +end grestore +% BMODULE... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 235 36 moveto +137 36 lineto +137 0 lineto +235 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 235 36 moveto +137 36 lineto +137 0 lineto +235 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +145 13 moveto +(BMODULE...) +[9.36 12.48 10.08 10.08 10.08 8.64 8.64 3.6 3.6 3.6] +xshow +end grestore +end grestore +% CommutativeRing()->BMODULE... +newpath 67 216 moveto +70 197 77 167 89 144 curveto +108 105 139 68 161 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 164 46 moveto +168 36 lineto +159 41 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 164 46 moveto +168 36 lineto +159 41 lineto +closepath +stroke +end grestore +% Algebra(a:CommutativeRing)->RING... +newpath 288 216 moveto +251 203 202 187 168 175 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 169 172 moveto +158 172 lineto +167 178 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 169 172 moveto +158 172 lineto +167 178 lineto +closepath +stroke +end grestore +% Module(a:CommutativeRing) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 447 180 moveto +265 180 lineto +265 144 lineto +447 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 447 180 moveto +265 180 lineto +265 144 lineto +447 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +272 157 moveto +(Module\(a:CommutativeRing\)) +[12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Algebra(a:CommutativeRing)->Module(a:CommutativeRing) +newpath 346 216 moveto +347 208 349 199 351 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 354 190 moveto +353 180 lineto +348 189 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 354 190 moveto +353 180 lineto +348 189 lineto +closepath +stroke +end grestore +% EntireRing()->RING... +newpath 174 216 moveto +167 207 158 197 150 188 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 152 185 moveto +143 180 lineto +147 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 152 185 moveto +143 180 lineto +147 190 lineto +closepath +stroke +end grestore +% EntireRing()->BMODULE... +newpath 189 216 moveto +188 178 187 91 186 46 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 190 46 moveto +186 36 lineto +183 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 190 46 moveto +186 36 lineto +183 46 lineto +closepath +stroke +end grestore +% BiModule(a:CommutativeRing,b:CommutativeRing) +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 526 108 moveto +214 108 lineto +214 72 lineto +526 72 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 526 108 moveto +214 108 lineto +214 72 lineto +526 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +221 85 moveto +(BiModule\(a:CommutativeRing,b:CommutativeRing\)) +[9.36 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 3.6 6.96 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Module(a:CommutativeRing)->BiModule(a:CommutativeRing,b:CommutativeRing) +newpath 360 144 moveto +361 136 363 127 365 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 368 118 moveto +367 108 lineto +362 117 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 368 118 moveto +367 108 lineto +362 117 lineto +closepath +stroke +end grestore +% BiModule(a:CommutativeRing,b:CommutativeRing)->BMODULE... +newpath 324 72 moveto +299 62 268 50 241 40 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 243 37 moveto +232 36 lineto +240 43 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 243 37 moveto +232 36 lineto +240 43 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102linearlyexplicitringover.ps b/books/ps/v102linearlyexplicitringover.ps new file mode 100644 index 0000000..2655f5a --- /dev/null +++ b/books/ps/v102linearlyexplicitringover.ps @@ -0,0 +1,790 @@ +%!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 403 440 +%%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 403 440 +%%PageOrientation: Portrait +gsave +36 36 367 404 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 402 lineto +365 402 lineto +365 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 402 lineto +365 402 lineto +365 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% LinearlyExplicitRingOver(a:Ring) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 279 396 moveto +71 396 lineto +71 360 lineto +279 360 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 279 396 moveto +71 396 lineto +71 360 lineto +279 360 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +78 373 moveto +(LinearlyExplicitRingOver\(a:Ring\)) +[8.64 3.84 6.96 6.24 6.24 4.56 3.6 6.96 8.64 6.96 6.96 3.84 3.84 6.24 3.84 3.84 9.36 3.84 6.96 6.96 10.08 6.48 6.24 4.8 4.56 6.24 3.84 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Ring() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 202 324 moveto +148 324 lineto +148 288 lineto +202 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 202 324 moveto +148 324 lineto +148 288 lineto +202 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +156 301 moveto +(Ring\(\)) +[9.36 3.84 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% LinearlyExplicitRingOver(a:Ring)->Ring() +newpath 175 360 moveto +175 352 175 343 175 334 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 179 334 moveto +175 324 lineto +172 334 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 179 334 moveto +175 324 lineto +172 334 lineto +closepath +stroke +end grestore +% Rng() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 202 252 moveto +148 252 lineto +148 216 lineto +202 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 202 252 moveto +148 252 lineto +148 216 lineto +202 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +158 229 moveto +(Rng\(\)) +[9.36 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Ring()->Rng() +newpath 175 288 moveto +175 280 175 271 175 262 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 179 262 moveto +175 252 lineto +172 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 179 262 moveto +175 252 lineto +172 262 lineto +closepath +stroke +end grestore +% Monoid() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 290 252 moveto +220 252 lineto +220 216 lineto +290 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 290 252 moveto +220 252 lineto +220 216 lineto +290 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +227 229 moveto +(Monoid\(\)) +[12.48 6.96 6.96 6.96 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Ring()->Monoid() +newpath 195 288 moveto +205 279 217 268 228 259 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 230 262 moveto +235 252 lineto +225 257 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 230 262 moveto +235 252 lineto +225 257 lineto +closepath +stroke +end grestore +% LeftModule(a:Ring) +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 130 252 moveto +0 252 lineto +0 216 lineto +130 216 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 130 252 moveto +0 252 lineto +0 216 lineto +130 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +8 229 moveto +(LeftModule\(a:Ring\)) +[8.64 6.24 4.8 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Ring()->LeftModule(a:Ring) +newpath 148 288 moveto +134 279 116 268 101 258 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 103 255 moveto +93 252 lineto +99 261 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 103 255 moveto +93 252 lineto +99 261 lineto +closepath +stroke +end grestore +% AbelianGroup() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 157 108 moveto +51 108 lineto +51 72 lineto +157 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 157 108 moveto +51 108 lineto +51 72 lineto +157 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +59 85 moveto +(AbelianGroup\(\)) +[9.84 6.96 6.24 3.84 3.84 6.24 6.96 10.08 4.8 6.96 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Rng()->AbelianGroup() +newpath 169 216 moveto +163 197 152 168 140 144 curveto +135 134 129 125 123 116 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 126 114 moveto +117 108 lineto +120 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 126 114 moveto +117 108 lineto +120 118 lineto +closepath +stroke +end grestore +% SemiGroup() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 296 180 moveto +206 180 lineto +206 144 lineto +296 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 296 180 moveto +206 180 lineto +206 144 lineto +296 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +214 157 moveto +(SemiGroup\(\)) +[7.68 6.24 10.8 3.84 10.08 4.8 6.96 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Rng()->SemiGroup() +newpath 194 216 moveto +204 207 215 197 225 187 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 227 190 moveto +232 180 lineto +222 185 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 227 190 moveto +232 180 lineto +222 185 lineto +closepath +stroke +end grestore +% Monoid()->SemiGroup() +newpath 254 216 moveto +253 208 253 199 253 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 256 190 moveto +252 180 lineto +250 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 256 190 moveto +252 180 lineto +250 190 lineto +closepath +stroke +end grestore +% LeftModule(a:Rng) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 131 180 moveto +5 180 lineto +5 144 lineto +131 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 131 180 moveto +5 180 lineto +5 144 lineto +131 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +13 157 moveto +(LeftModule\(a:Rng\)) +[8.64 6.24 4.8 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 6.96 4.56] +xshow +end grestore +end grestore +% LeftModule(a:Ring)->LeftModule(a:Rng) +newpath 66 216 moveto +67 208 67 199 67 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 71 190 moveto +67 180 lineto +64 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 71 190 moveto +67 180 lineto +64 190 lineto +closepath +stroke +end grestore +% CABMON... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 99 36 moveto +11 36 lineto +11 0 lineto +99 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 99 36 moveto +11 36 lineto +11 0 lineto +99 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +19 13 moveto +(CABMON...) +[9.12 10.08 9.36 12.48 10.08 9.84 3.6 3.6 3.6] +xshow +end grestore +end grestore +% AbelianGroup()->CABMON... +newpath 92 72 moveto +86 64 79 54 73 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 76 42 moveto +67 36 lineto +70 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 76 42 moveto +67 36 lineto +70 46 lineto +closepath +stroke +end grestore +% REPDB... +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 189 36 moveto +117 36 lineto +117 0 lineto +189 0 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 189 36 moveto +117 36 lineto +117 0 lineto +189 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +124 13 moveto +(REPDB...) +[9.36 8.64 7.68 10.08 9.36 3.6 3.6 3.6] +xshow +end grestore +end grestore +% AbelianGroup()->REPDB... +newpath 116 72 moveto +122 64 129 54 135 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 138 46 moveto +141 36 lineto +132 42 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 138 46 moveto +141 36 lineto +132 42 lineto +closepath +stroke +end grestore +% SETCAT... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 271 108 moveto +193 108 lineto +193 72 lineto +271 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 271 108 moveto +193 108 lineto +193 72 lineto +271 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +201 85 moveto +(SETCAT...) +[7.68 8.64 8.64 9.12 9.36 7.44 3.6 3.6 3.6] +xshow +end grestore +end grestore +% SemiGroup()->SETCAT... +newpath 246 144 moveto +244 136 242 127 240 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 243 117 moveto +237 108 lineto +237 119 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 243 117 moveto +237 108 lineto +237 119 lineto +closepath +stroke +end grestore +% REPSQ... +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 359 108 moveto +289 108 lineto +289 72 lineto +359 72 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 359 108 moveto +289 108 lineto +289 72 lineto +359 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +296 85 moveto +(REPSQ...) +[9.36 8.64 7.68 7.68 10.08 3.6 3.6 3.6] +xshow +end grestore +end grestore +% SemiGroup()->REPSQ... +newpath 269 144 moveto +278 135 289 125 299 115 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 301 118 moveto +306 108 lineto +296 113 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 301 118 moveto +306 108 lineto +296 113 lineto +closepath +stroke +end grestore +% LeftModule(a:Rng)->AbelianGroup() +newpath 77 144 moveto +81 136 86 126 91 117 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 94 119 moveto +95 108 lineto +88 116 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 94 119 moveto +95 108 lineto +88 116 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102logic.ps b/books/ps/v102logic.ps new file mode 100644 index 0000000..e714944 --- /dev/null +++ b/books/ps/v102logic.ps @@ -0,0 +1,335 @@ +%!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 128 224 +%%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 128 224 +%%PageOrientation: Portrait +gsave +36 36 92 188 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 186 lineto +90 186 lineto +90 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 186 lineto +90 186 lineto +90 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% Logic() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 71 180 moveto +13 180 lineto +13 144 lineto +71 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 71 180 moveto +13 180 lineto +13 144 lineto +71 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +21 157 moveto +(Logic\(\)) +[8.64 6.96 6.96 3.84 6.24 4.56 4.56] +xshow +end grestore +end grestore +% BasicType() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 84 108 moveto +0 108 lineto +0 72 lineto +84 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 84 108 moveto +0 108 lineto +0 72 lineto +84 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +7 85 moveto +(BasicType\(\)) +[9.36 6.24 5.52 3.84 6.24 7.2 6.96 6.96 6.24 4.56 4.56] +xshow +end grestore +end grestore +% Logic()->BasicType() +newpath 42 144 moveto +42 136 42 127 42 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 46 118 moveto +42 108 lineto +39 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 46 118 moveto +42 108 lineto +39 118 lineto +closepath +stroke +end grestore +% Category +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 76 36 moveto +8 36 lineto +8 0 lineto +76 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 76 36 moveto +8 36 lineto +8 0 lineto +76 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +16 13 moveto +(Category) +[9.36 6.24 3.84 6.24 6.96 6.96 5.04 6.96] +xshow +end grestore +end grestore +% BasicType()->Category +newpath 42 72 moveto +42 64 42 55 42 46 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 46 46 moveto +42 36 lineto +39 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 46 46 moveto +42 36 lineto +39 46 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102module.ps b/books/ps/v102module.ps new file mode 100644 index 0000000..e122530 --- /dev/null +++ b/books/ps/v102module.ps @@ -0,0 +1,585 @@ +%!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 356 440 +%%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 356 440 +%%PageOrientation: Portrait +gsave +36 36 320 404 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 402 lineto +318 402 lineto +318 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 402 lineto +318 402 lineto +318 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% Module(a:CommutativeRing) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 247 396 moveto +65 396 lineto +65 360 lineto +247 360 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 247 396 moveto +65 396 lineto +65 360 lineto +247 360 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +72 373 moveto +(Module\(a:CommutativeRing\)) +[12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% BiModule(a:CommutativeRing,b:CommutativeRing) +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 312 324 moveto +0 324 lineto +0 288 lineto +312 288 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 312 324 moveto +0 324 lineto +0 288 lineto +312 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +7 301 moveto +(BiModule\(a:CommutativeRing,b:CommutativeRing\)) +[9.36 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 3.6 6.96 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Module(a:CommutativeRing)->BiModule(a:CommutativeRing,b:CommutativeRing) +newpath 156 360 moveto +156 352 156 343 156 334 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 160 334 moveto +156 324 lineto +153 334 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 160 334 moveto +156 324 lineto +153 334 lineto +closepath +stroke +end grestore +% BiModule(a:Ring,b:Ring) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 237 252 moveto +75 252 lineto +75 216 lineto +237 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 237 252 moveto +75 252 lineto +75 216 lineto +237 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +83 229 moveto +(BiModule\(a:Ring,b:Ring\)) +[9.36 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 3.84 6.96 6.96 3.6 6.96 3.84 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% BiModule(a:CommutativeRing,b:CommutativeRing)->BiModule(a:Ring,b:Ring) +newpath 156 288 moveto +156 280 156 271 156 262 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 160 262 moveto +156 252 lineto +153 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 160 262 moveto +156 252 lineto +153 262 lineto +closepath +stroke +end grestore +% LeftModule(a:Ring) +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 146 180 moveto +16 180 lineto +16 144 lineto +146 144 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 146 180 moveto +16 180 lineto +16 144 lineto +146 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +24 157 moveto +(LeftModule\(a:Ring\)) +[8.64 6.24 4.8 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% BiModule(a:Ring,b:Ring)->LeftModule(a:Ring) +newpath 137 216 moveto +128 207 117 197 107 187 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 110 185 moveto +100 180 lineto +105 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 110 185 moveto +100 180 lineto +105 190 lineto +closepath +stroke +end grestore +% RightModule(a:Ring) +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 300 180 moveto +164 180 lineto +164 144 lineto +300 144 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 300 180 moveto +164 180 lineto +164 144 lineto +300 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +171 157 moveto +(RightModule\(a:Ring\)) +[9.36 3.84 6.96 6.96 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% BiModule(a:Ring,b:Ring)->RightModule(a:Ring) +newpath 175 216 moveto +185 207 196 197 206 187 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 208 190 moveto +213 180 lineto +203 185 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 208 190 moveto +213 180 lineto +203 185 lineto +closepath +stroke +end grestore +% LeftModule(a:Rng) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 145 108 moveto +19 108 lineto +19 72 lineto +145 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 145 108 moveto +19 108 lineto +19 72 lineto +145 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +27 85 moveto +(LeftModule\(a:Rng\)) +[8.64 6.24 4.8 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 6.96 4.56] +xshow +end grestore +end grestore +% LeftModule(a:Ring)->LeftModule(a:Rng) +newpath 81 144 moveto +82 136 82 127 82 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 86 118 moveto +82 108 lineto +79 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 86 118 moveto +82 108 lineto +79 118 lineto +closepath +stroke +end grestore +% RightModule(a:Rng) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 298 108 moveto +164 108 lineto +164 72 lineto +298 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 298 108 moveto +164 108 lineto +164 72 lineto +298 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +172 85 moveto +(RightModule\(a:Rng\)) +[9.36 3.84 6.96 6.96 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 6.96 4.56] +xshow +end grestore +end grestore +% RightModule(a:Ring)->RightModule(a:Rng) +newpath 232 144 moveto +231 136 231 127 231 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 235 118 moveto +231 108 lineto +228 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 235 118 moveto +231 108 lineto +228 118 lineto +closepath +stroke +end grestore +% ABELGRP... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 201 36 moveto +111 36 lineto +111 0 lineto +201 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 201 36 moveto +111 36 lineto +111 0 lineto +201 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +118 13 moveto +(ABELGRP...) +[10.08 9.36 8.64 8.64 10.08 9.36 6.24 3.6 3.6 3.6] +xshow +end grestore +end grestore +% RightModule(a:Rng)->ABELGRP... +newpath 212 72 moveto +203 63 192 53 182 43 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 185 41 moveto +175 36 lineto +180 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 185 41 moveto +175 36 lineto +180 46 lineto +closepath +stroke +end grestore +% LeftModule(a:Rng)->ABELGRP... +newpath 101 72 moveto +110 63 121 53 131 43 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 133 46 moveto +138 36 lineto +128 41 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 133 46 moveto +138 36 lineto +128 41 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102orderedintegraldomain.ps b/books/ps/v102orderedintegraldomain.ps new file mode 100644 index 0000000..e39e3ac --- /dev/null +++ b/books/ps/v102orderedintegraldomain.ps @@ -0,0 +1,856 @@ +%!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 793 440 +%%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 793 440 +%%PageOrientation: Portrait +gsave +36 36 757 404 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 402 lineto +755 402 lineto +755 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 402 lineto +755 402 lineto +755 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% OrderedIntegralDomain() +[ /Rect [ 421 360 581 396 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (bookvol10.2.pdf#nameddest=OINTDOM) >> + /Subtype /Link +/ANN pdfmark +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 581 396 moveto +421 396 lineto +421 360 lineto +581 360 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 581 396 moveto +421 396 lineto +421 360 lineto +581 360 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +429 373 moveto +(OrderedIntegralDomain\(\)) +[10.08 4.56 6.96 6.24 4.8 6.24 6.96 4.56 6.96 3.84 6.24 7.2 4.8 6.24 3.84 10.08 6.96 10.8 6.24 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% IntegralDomain() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 442 324 moveto +328 324 lineto +328 288 lineto +442 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 442 324 moveto +328 324 lineto +328 288 lineto +442 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +335 301 moveto +(IntegralDomain\(\)) +[4.56 6.96 3.84 6.24 7.2 4.8 6.24 3.84 10.08 6.96 10.8 6.24 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% OrderedIntegralDomain()->IntegralDomain() +newpath 472 360 moveto +457 351 438 340 423 330 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 424 327 moveto +414 324 lineto +420 332 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 424 327 moveto +414 324 lineto +420 332 lineto +closepath +stroke +end grestore +% OrderedRing() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 612 324 moveto +514 324 lineto +514 288 lineto +612 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 612 324 moveto +514 324 lineto +514 288 lineto +612 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +521 301 moveto +(OrderedRing\(\)) +[10.08 4.56 6.96 6.24 4.8 6.24 6.96 9.36 3.84 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% OrderedIntegralDomain()->OrderedRing() +newpath 517 360 moveto +524 351 533 341 541 332 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 544 334 moveto +548 324 lineto +539 329 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 544 334 moveto +548 324 lineto +539 329 lineto +closepath +stroke +end grestore +% CommutativeRing() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 395 252 moveto +267 252 lineto +267 216 lineto +395 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 395 252 moveto +267 252 lineto +267 216 lineto +395 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +275 229 moveto +(CommutativeRing\(\)) +[9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% IntegralDomain()->CommutativeRing() +newpath 371 288 moveto +365 280 357 269 350 260 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 353 258 moveto +344 252 lineto +347 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 353 258 moveto +344 252 lineto +347 262 lineto +closepath +stroke +end grestore +% Algebra(a:CommutativeRing) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 249 252 moveto +65 252 lineto +65 216 lineto +249 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 249 252 moveto +65 252 lineto +65 216 lineto +249 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +73 229 moveto +(Algebra\(a:CommutativeRing\)) +[10.08 3.84 6.72 6.24 6.96 4.8 6.24 4.56 6.24 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% IntegralDomain()->Algebra(a:CommutativeRing) +newpath 328 288 moveto +296 278 257 265 224 255 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 225 252 moveto +214 252 lineto +223 258 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 225 252 moveto +214 252 lineto +223 258 lineto +closepath +stroke +end grestore +% EntireRing() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 499 252 moveto +413 252 lineto +413 216 lineto +499 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 499 252 moveto +413 252 lineto +413 216 lineto +499 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +420 229 moveto +(EntireRing\(\)) +[8.64 6.96 3.84 3.84 4.8 6.24 9.36 3.84 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% IntegralDomain()->EntireRing() +newpath 403 288 moveto +412 279 422 269 431 260 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 434 262 moveto +438 252 lineto +429 257 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 434 262 moveto +438 252 lineto +429 257 lineto +closepath +stroke +end grestore +% OAGROUP... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 645 252 moveto +555 252 lineto +555 216 lineto +645 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 645 252 moveto +555 252 lineto +555 216 lineto +645 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +562 229 moveto +(OAGROUP...) +[9.36 9.36 10.08 8.64 10.08 10.08 6.24 3.6 3.6 3.6] +xshow +end grestore +end grestore +% OrderedRing()->OAGROUP... +newpath 572 288 moveto +576 280 581 270 586 261 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 589 262 moveto +591 252 lineto +583 259 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 589 262 moveto +591 252 lineto +583 259 lineto +closepath +stroke +end grestore +% RING... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 428 180 moveto +368 180 lineto +368 144 lineto +428 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 428 180 moveto +368 180 lineto +368 144 lineto +428 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +375 157 moveto +(RING...) +[9.36 4.56 9.84 10.08 3.6 3.6 3.6] +xshow +end grestore +end grestore +% OrderedRing()->RING... +newpath 556 288 moveto +547 268 530 236 508 216 curveto +487 198 460 184 437 175 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 439 172 moveto +428 171 lineto +436 178 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 439 172 moveto +428 171 lineto +436 178 lineto +closepath +stroke +end grestore +% MONOID... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 749 252 moveto +663 252 lineto +663 216 lineto +749 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 749 252 moveto +663 252 lineto +663 216 lineto +749 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +671 229 moveto +(MONOID...) +[12.48 10.08 9.84 10.08 4.56 10.08 3.6 3.6 3.6] +xshow +end grestore +end grestore +% OrderedRing()->MONOID... +newpath 599 288 moveto +618 278 641 267 661 257 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 663 260 moveto +670 252 lineto +660 254 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 663 260 moveto +670 252 lineto +660 254 lineto +closepath +stroke +end grestore +% CommutativeRing()->RING... +newpath 348 216 moveto +356 207 365 197 374 188 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 377 190 moveto +381 180 lineto +372 185 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 377 190 moveto +381 180 lineto +372 185 lineto +closepath +stroke +end grestore +% BMODULE... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 389 36 moveto +291 36 lineto +291 0 lineto +389 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 389 36 moveto +291 36 lineto +291 0 lineto +389 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +299 13 moveto +(BMODULE...) +[9.36 12.48 10.08 10.08 10.08 8.64 8.64 3.6 3.6 3.6] +xshow +end grestore +end grestore +% CommutativeRing()->BMODULE... +newpath 332 216 moveto +334 178 337 91 339 46 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 343 46 moveto +339 36 lineto +336 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 343 46 moveto +339 36 lineto +336 46 lineto +closepath +stroke +end grestore +% Algebra(a:CommutativeRing)->RING... +newpath 218 216 moveto +262 203 320 185 358 174 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 359 177 moveto +368 171 lineto +357 171 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 359 177 moveto +368 171 lineto +357 171 lineto +closepath +stroke +end grestore +% Module(a:CommutativeRing) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 247 180 moveto +65 180 lineto +65 144 lineto +247 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 247 180 moveto +65 180 lineto +65 144 lineto +247 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +72 157 moveto +(Module\(a:CommutativeRing\)) +[12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Algebra(a:CommutativeRing)->Module(a:CommutativeRing) +newpath 157 216 moveto +156 208 156 199 156 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 160 190 moveto +156 180 lineto +153 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 160 190 moveto +156 180 lineto +153 190 lineto +closepath +stroke +end grestore +% EntireRing()->RING... +newpath 441 216 moveto +434 207 426 197 418 188 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 421 186 moveto +412 180 lineto +415 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 421 186 moveto +412 180 lineto +415 190 lineto +closepath +stroke +end grestore +% EntireRing()->BMODULE... +newpath 455 216 moveto +453 197 448 167 437 144 curveto +419 105 387 68 365 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 367 41 moveto +358 36 lineto +362 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 367 41 moveto +358 36 lineto +362 46 lineto +closepath +stroke +end grestore +% BiModule(a:CommutativeRing,b:CommutativeRing) +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 312 108 moveto +0 108 lineto +0 72 lineto +312 72 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 312 108 moveto +0 108 lineto +0 72 lineto +312 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +7 85 moveto +(BiModule\(a:CommutativeRing,b:CommutativeRing\)) +[9.36 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 3.6 6.96 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Module(a:CommutativeRing)->BiModule(a:CommutativeRing,b:CommutativeRing) +newpath 156 144 moveto +156 136 156 127 156 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 160 118 moveto +156 108 lineto +153 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 160 118 moveto +156 108 lineto +153 118 lineto +closepath +stroke +end grestore +% BiModule(a:CommutativeRing,b:CommutativeRing)->BMODULE... +newpath 202 72 moveto +227 62 258 50 285 40 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 286 43 moveto +294 36 lineto +283 37 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 286 43 moveto +294 36 lineto +283 37 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102partialdifferentialring.ps b/books/ps/v102partialdifferentialring.ps new file mode 100644 index 0000000..c754226 --- /dev/null +++ b/books/ps/v102partialdifferentialring.ps @@ -0,0 +1,790 @@ +%!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 403 440 +%%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 403 440 +%%PageOrientation: Portrait +gsave +36 36 367 404 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 402 lineto +365 402 lineto +365 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 402 lineto +365 402 lineto +365 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% PartialDifferentialRing(a:SetCategory) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 292 396 moveto +58 396 lineto +58 360 lineto +292 360 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 292 396 moveto +58 396 lineto +58 360 lineto +292 360 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +66 373 moveto +(PartialDifferentialRing\(a:SetCategory\)) +[7.44 6.24 5.04 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 9.36 3.84 6.96 6.96 4.56 6.24 3.84 7.68 6 3.84 9.36 6.24 3.84 6.24 6.96 6.96 5.04 6.96 4.56] +xshow +end grestore +end grestore +% Ring() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 202 324 moveto +148 324 lineto +148 288 lineto +202 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 202 324 moveto +148 324 lineto +148 288 lineto +202 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +156 301 moveto +(Ring\(\)) +[9.36 3.84 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% PartialDifferentialRing(a:SetCategory)->Ring() +newpath 175 360 moveto +175 352 175 343 175 334 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 179 334 moveto +175 324 lineto +172 334 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 179 334 moveto +175 324 lineto +172 334 lineto +closepath +stroke +end grestore +% Rng() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 202 252 moveto +148 252 lineto +148 216 lineto +202 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 202 252 moveto +148 252 lineto +148 216 lineto +202 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +158 229 moveto +(Rng\(\)) +[9.36 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Ring()->Rng() +newpath 175 288 moveto +175 280 175 271 175 262 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 179 262 moveto +175 252 lineto +172 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 179 262 moveto +175 252 lineto +172 262 lineto +closepath +stroke +end grestore +% Monoid() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 290 252 moveto +220 252 lineto +220 216 lineto +290 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 290 252 moveto +220 252 lineto +220 216 lineto +290 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +227 229 moveto +(Monoid\(\)) +[12.48 6.96 6.96 6.96 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Ring()->Monoid() +newpath 195 288 moveto +205 279 217 268 228 259 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 230 262 moveto +235 252 lineto +225 257 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 230 262 moveto +235 252 lineto +225 257 lineto +closepath +stroke +end grestore +% LeftModule(a:Ring) +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 130 252 moveto +0 252 lineto +0 216 lineto +130 216 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 130 252 moveto +0 252 lineto +0 216 lineto +130 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +8 229 moveto +(LeftModule\(a:Ring\)) +[8.64 6.24 4.8 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Ring()->LeftModule(a:Ring) +newpath 148 288 moveto +134 279 116 268 101 258 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 103 255 moveto +93 252 lineto +99 261 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 103 255 moveto +93 252 lineto +99 261 lineto +closepath +stroke +end grestore +% AbelianGroup() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 157 108 moveto +51 108 lineto +51 72 lineto +157 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 157 108 moveto +51 108 lineto +51 72 lineto +157 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +59 85 moveto +(AbelianGroup\(\)) +[9.84 6.96 6.24 3.84 3.84 6.24 6.96 10.08 4.8 6.96 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Rng()->AbelianGroup() +newpath 169 216 moveto +163 197 152 168 140 144 curveto +135 134 129 125 123 116 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 126 114 moveto +117 108 lineto +120 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 126 114 moveto +117 108 lineto +120 118 lineto +closepath +stroke +end grestore +% SemiGroup() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 296 180 moveto +206 180 lineto +206 144 lineto +296 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 296 180 moveto +206 180 lineto +206 144 lineto +296 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +214 157 moveto +(SemiGroup\(\)) +[7.68 6.24 10.8 3.84 10.08 4.8 6.96 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% Rng()->SemiGroup() +newpath 194 216 moveto +204 207 215 197 225 187 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 227 190 moveto +232 180 lineto +222 185 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 227 190 moveto +232 180 lineto +222 185 lineto +closepath +stroke +end grestore +% Monoid()->SemiGroup() +newpath 254 216 moveto +253 208 253 199 253 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 256 190 moveto +252 180 lineto +250 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 256 190 moveto +252 180 lineto +250 190 lineto +closepath +stroke +end grestore +% LeftModule(a:Rng) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 131 180 moveto +5 180 lineto +5 144 lineto +131 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 131 180 moveto +5 180 lineto +5 144 lineto +131 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +13 157 moveto +(LeftModule\(a:Rng\)) +[8.64 6.24 4.8 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 6.96 4.56] +xshow +end grestore +end grestore +% LeftModule(a:Ring)->LeftModule(a:Rng) +newpath 66 216 moveto +67 208 67 199 67 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 71 190 moveto +67 180 lineto +64 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 71 190 moveto +67 180 lineto +64 190 lineto +closepath +stroke +end grestore +% CABMON... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 99 36 moveto +11 36 lineto +11 0 lineto +99 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 99 36 moveto +11 36 lineto +11 0 lineto +99 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +19 13 moveto +(CABMON...) +[9.12 10.08 9.36 12.48 10.08 9.84 3.6 3.6 3.6] +xshow +end grestore +end grestore +% AbelianGroup()->CABMON... +newpath 92 72 moveto +86 64 79 54 73 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 76 42 moveto +67 36 lineto +70 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 76 42 moveto +67 36 lineto +70 46 lineto +closepath +stroke +end grestore +% REPDB... +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 189 36 moveto +117 36 lineto +117 0 lineto +189 0 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 189 36 moveto +117 36 lineto +117 0 lineto +189 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +124 13 moveto +(REPDB...) +[9.36 8.64 7.68 10.08 9.36 3.6 3.6 3.6] +xshow +end grestore +end grestore +% AbelianGroup()->REPDB... +newpath 116 72 moveto +122 64 129 54 135 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 138 46 moveto +141 36 lineto +132 42 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 138 46 moveto +141 36 lineto +132 42 lineto +closepath +stroke +end grestore +% SETCAT... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 271 108 moveto +193 108 lineto +193 72 lineto +271 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 271 108 moveto +193 108 lineto +193 72 lineto +271 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +201 85 moveto +(SETCAT...) +[7.68 8.64 8.64 9.12 9.36 7.44 3.6 3.6 3.6] +xshow +end grestore +end grestore +% SemiGroup()->SETCAT... +newpath 246 144 moveto +244 136 242 127 240 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 243 117 moveto +237 108 lineto +237 119 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 243 117 moveto +237 108 lineto +237 119 lineto +closepath +stroke +end grestore +% REPSQ... +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 359 108 moveto +289 108 lineto +289 72 lineto +359 72 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 359 108 moveto +289 108 lineto +289 72 lineto +359 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +296 85 moveto +(REPSQ...) +[9.36 8.64 7.68 7.68 10.08 3.6 3.6 3.6] +xshow +end grestore +end grestore +% SemiGroup()->REPSQ... +newpath 269 144 moveto +278 135 289 125 299 115 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 301 118 moveto +306 108 lineto +296 113 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 301 118 moveto +306 108 lineto +296 113 lineto +closepath +stroke +end grestore +% LeftModule(a:Rng)->AbelianGroup() +newpath 77 144 moveto +81 136 86 126 91 117 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 94 119 moveto +95 108 lineto +88 116 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 94 119 moveto +95 108 lineto +88 116 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102polynomialfactorizationexplicit.ps b/books/ps/v102polynomialfactorizationexplicit.ps new file mode 100644 index 0000000..be666e0 --- /dev/null +++ b/books/ps/v102polynomialfactorizationexplicit.ps @@ -0,0 +1,738 @@ +%!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 478 512 +%%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 478 512 +%%PageOrientation: Portrait +gsave +36 36 442 476 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 474 lineto +440 474 lineto +440 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 474 lineto +440 474 lineto +440 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% PolynomialFactorizationExplicit() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 293 468 moveto +85 468 lineto +85 432 lineto +293 432 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 293 468 moveto +85 468 lineto +85 432 lineto +293 432 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +93 445 moveto +(PolynomialFactorizationExplicit\(\)) +[7.44 6.96 3.6 6.96 6.96 6.96 10.8 3.84 6.24 3.84 7.2 6.24 6.24 3.84 6.96 5.04 3.84 6.24 6.24 3.84 3.84 6.96 6.96 8.64 6.96 6.96 3.84 3.84 6.24 3.84 3.84 4.56 4.56] +xshow +end grestore +end grestore +% UniqueFactorizationDomain() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 281 396 moveto +97 396 lineto +97 360 lineto +281 360 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 281 396 moveto +97 396 lineto +97 360 lineto +281 360 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +104 373 moveto +(UniqueFactorizationDomain\(\)) +[9.6 6.96 3.84 6.72 6.96 6.24 7.2 6.24 6.24 3.84 6.96 5.04 3.84 6.24 6.24 3.84 3.84 6.96 6.96 10.08 6.96 10.8 6.24 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% PolynomialFactorizationExplicit()->UniqueFactorizationDomain() +newpath 189 432 moveto +189 424 189 415 189 406 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 193 406 moveto +189 396 lineto +186 406 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 193 406 moveto +189 396 lineto +186 406 lineto +closepath +stroke +end grestore +% GcdDomain() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 236 324 moveto +142 324 lineto +142 288 lineto +236 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 236 324 moveto +142 324 lineto +142 288 lineto +236 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +150 301 moveto +(GcdDomain\(\)) +[10.08 6.24 6.96 10.08 6.96 10.8 6.24 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% UniqueFactorizationDomain()->GcdDomain() +newpath 189 360 moveto +189 352 189 343 189 334 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 193 334 moveto +189 324 lineto +186 334 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 193 334 moveto +189 324 lineto +186 334 lineto +closepath +stroke +end grestore +% IntegralDomain() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 246 252 moveto +132 252 lineto +132 216 lineto +246 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 246 252 moveto +132 252 lineto +132 216 lineto +246 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +139 229 moveto +(IntegralDomain\(\)) +[4.56 6.96 3.84 6.24 7.2 4.8 6.24 3.84 10.08 6.96 10.8 6.24 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% GcdDomain()->IntegralDomain() +newpath 189 288 moveto +189 280 189 271 189 262 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 193 262 moveto +189 252 lineto +186 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 193 262 moveto +189 252 lineto +186 262 lineto +closepath +stroke +end grestore +% CommutativeRing() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 128 180 moveto +0 180 lineto +0 144 lineto +128 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 128 180 moveto +0 180 lineto +0 144 lineto +128 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +8 157 moveto +(CommutativeRing\(\)) +[9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% IntegralDomain()->CommutativeRing() +newpath 157 216 moveto +141 207 121 195 104 185 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 105 182 moveto +95 180 lineto +102 188 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 105 182 moveto +95 180 lineto +102 188 lineto +closepath +stroke +end grestore +% Algebra(a:CommutativeRing) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 434 180 moveto +250 180 lineto +250 144 lineto +434 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 434 180 moveto +250 180 lineto +250 144 lineto +434 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +258 157 moveto +(Algebra\(a:CommutativeRing\)) +[10.08 3.84 6.72 6.24 6.96 4.8 6.24 4.56 6.24 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% IntegralDomain()->Algebra(a:CommutativeRing) +newpath 228 216 moveto +248 206 273 195 295 184 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 296 187 moveto +304 180 lineto +293 181 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 296 187 moveto +304 180 lineto +293 181 lineto +closepath +stroke +end grestore +% EntireRing() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 232 180 moveto +146 180 lineto +146 144 lineto +232 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 232 180 moveto +146 180 lineto +146 144 lineto +232 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +153 157 moveto +(EntireRing\(\)) +[8.64 6.96 3.84 3.84 4.8 6.24 9.36 3.84 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% IntegralDomain()->EntireRing() +newpath 189 216 moveto +189 208 189 199 189 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 193 190 moveto +189 180 lineto +186 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 193 190 moveto +189 180 lineto +186 190 lineto +closepath +stroke +end grestore +% RING... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 178 108 moveto +118 108 lineto +118 72 lineto +178 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 178 108 moveto +118 108 lineto +118 72 lineto +178 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +125 85 moveto +(RING...) +[9.36 4.56 9.84 10.08 3.6 3.6 3.6] +xshow +end grestore +end grestore +% CommutativeRing()->RING... +newpath 85 144 moveto +95 135 108 124 119 115 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 122 117 moveto +127 108 lineto +117 112 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 122 117 moveto +127 108 lineto +117 112 lineto +closepath +stroke +end grestore +% BMODULE... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 255 36 moveto +157 36 lineto +157 0 lineto +255 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 255 36 moveto +157 36 lineto +157 0 lineto +255 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +165 13 moveto +(BMODULE...) +[9.36 12.48 10.08 10.08 10.08 8.64 8.64 3.6 3.6 3.6] +xshow +end grestore +end grestore +% CommutativeRing()->BMODULE... +newpath 69 144 moveto +76 124 89 93 109 72 curveto +121 59 137 49 152 41 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 154 44 moveto +161 36 lineto +151 38 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 154 44 moveto +161 36 lineto +151 38 lineto +closepath +stroke +end grestore +% Algebra(a:CommutativeRing)->RING... +newpath 293 144 moveto +261 132 218 116 188 105 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 189 101 moveto +178 101 lineto +186 108 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 189 101 moveto +178 101 lineto +186 108 lineto +closepath +stroke +end grestore +% Module(a:CommutativeRing) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 424 108 moveto +242 108 lineto +242 72 lineto +424 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 424 108 moveto +242 108 lineto +242 72 lineto +424 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +249 85 moveto +(Module\(a:CommutativeRing\)) +[12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Algebra(a:CommutativeRing)->Module(a:CommutativeRing) +newpath 340 144 moveto +339 136 338 127 337 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 340 117 moveto +335 108 lineto +334 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 340 117 moveto +335 108 lineto +334 118 lineto +closepath +stroke +end grestore +% EntireRing()->RING... +newpath 179 144 moveto +175 136 169 126 163 117 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 166 115 moveto +158 108 lineto +160 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 166 115 moveto +158 108 lineto +160 118 lineto +closepath +stroke +end grestore +% EntireRing()->BMODULE... +newpath 191 144 moveto +195 119 200 75 203 46 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 206 46 moveto +204 36 lineto +200 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 206 46 moveto +204 36 lineto +200 46 lineto +closepath +stroke +end grestore +% Module(a:CommutativeRing)->BMODULE... +newpath 301 72 moveto +284 63 264 51 246 41 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 247 38 moveto +237 36 lineto +244 44 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 247 38 moveto +237 36 lineto +244 44 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102principalidealdomain.ps b/books/ps/v102principalidealdomain.ps new file mode 100644 index 0000000..becb712 --- /dev/null +++ b/books/ps/v102principalidealdomain.ps @@ -0,0 +1,738 @@ +%!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 570 512 +%%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 570 512 +%%PageOrientation: Portrait +gsave +36 36 534 476 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 474 lineto +532 474 lineto +532 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 474 lineto +532 474 lineto +532 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% PrincipalIdealDomain() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 264 468 moveto +114 468 lineto +114 432 lineto +264 432 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 264 468 moveto +114 468 lineto +114 432 lineto +264 432 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +122 445 moveto +(PrincipalIdealDomain\(\)) +[7.68 5.04 3.84 6.96 6.24 3.84 6.96 6.24 3.84 4.56 6.96 6.24 6.24 3.84 10.08 6.96 10.8 6.24 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% GcdDomain() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 236 396 moveto +142 396 lineto +142 360 lineto +236 360 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 236 396 moveto +142 396 lineto +142 360 lineto +236 360 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +150 373 moveto +(GcdDomain\(\)) +[10.08 6.24 6.96 10.08 6.96 10.8 6.24 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% PrincipalIdealDomain()->GcdDomain() +newpath 189 432 moveto +189 424 189 415 189 406 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 193 406 moveto +189 396 lineto +186 406 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 193 406 moveto +189 396 lineto +186 406 lineto +closepath +stroke +end grestore +% IntegralDomain() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 246 324 moveto +132 324 lineto +132 288 lineto +246 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 246 324 moveto +132 324 lineto +132 288 lineto +246 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +139 301 moveto +(IntegralDomain\(\)) +[4.56 6.96 3.84 6.24 7.2 4.8 6.24 3.84 10.08 6.96 10.8 6.24 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% GcdDomain()->IntegralDomain() +newpath 189 360 moveto +189 352 189 343 189 334 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 193 334 moveto +189 324 lineto +186 334 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 193 334 moveto +189 324 lineto +186 334 lineto +closepath +stroke +end grestore +% CommutativeRing() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 128 252 moveto +0 252 lineto +0 216 lineto +128 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 128 252 moveto +0 252 lineto +0 216 lineto +128 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +8 229 moveto +(CommutativeRing\(\)) +[9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% IntegralDomain()->CommutativeRing() +newpath 157 288 moveto +141 279 121 267 104 257 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 105 254 moveto +95 252 lineto +102 260 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 105 254 moveto +95 252 lineto +102 260 lineto +closepath +stroke +end grestore +% Algebra(a:CommutativeRing) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 434 252 moveto +250 252 lineto +250 216 lineto +434 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 434 252 moveto +250 252 lineto +250 216 lineto +434 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +258 229 moveto +(Algebra\(a:CommutativeRing\)) +[10.08 3.84 6.72 6.24 6.96 4.8 6.24 4.56 6.24 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% IntegralDomain()->Algebra(a:CommutativeRing) +newpath 228 288 moveto +248 278 273 267 295 256 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 296 259 moveto +304 252 lineto +293 253 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 296 259 moveto +304 252 lineto +293 253 lineto +closepath +stroke +end grestore +% EntireRing() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 232 252 moveto +146 252 lineto +146 216 lineto +232 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 232 252 moveto +146 252 lineto +146 216 lineto +232 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +153 229 moveto +(EntireRing\(\)) +[8.64 6.96 3.84 3.84 4.8 6.24 9.36 3.84 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% IntegralDomain()->EntireRing() +newpath 189 288 moveto +189 280 189 271 189 262 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 193 262 moveto +189 252 lineto +186 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 193 262 moveto +189 252 lineto +186 262 lineto +closepath +stroke +end grestore +% RING... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 158 180 moveto +98 180 lineto +98 144 lineto +158 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 158 180 moveto +98 180 lineto +98 144 lineto +158 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +105 157 moveto +(RING...) +[9.36 4.56 9.84 10.08 3.6 3.6 3.6] +xshow +end grestore +end grestore +% CommutativeRing()->RING... +newpath 80 216 moveto +88 207 97 197 105 188 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 108 190 moveto +112 180 lineto +103 185 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 108 190 moveto +112 180 lineto +103 185 lineto +closepath +stroke +end grestore +% BMODULE... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 235 36 moveto +137 36 lineto +137 0 lineto +235 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 235 36 moveto +137 36 lineto +137 0 lineto +235 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +145 13 moveto +(BMODULE...) +[9.36 12.48 10.08 10.08 10.08 8.64 8.64 3.6 3.6 3.6] +xshow +end grestore +end grestore +% CommutativeRing()->BMODULE... +newpath 67 216 moveto +70 197 77 167 89 144 curveto +108 105 139 68 161 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 164 46 moveto +168 36 lineto +159 41 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 164 46 moveto +168 36 lineto +159 41 lineto +closepath +stroke +end grestore +% Algebra(a:CommutativeRing)->RING... +newpath 288 216 moveto +251 203 202 187 168 175 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 169 172 moveto +158 172 lineto +167 178 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 169 172 moveto +158 172 lineto +167 178 lineto +closepath +stroke +end grestore +% Module(a:CommutativeRing) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 447 180 moveto +265 180 lineto +265 144 lineto +447 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 447 180 moveto +265 180 lineto +265 144 lineto +447 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +272 157 moveto +(Module\(a:CommutativeRing\)) +[12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Algebra(a:CommutativeRing)->Module(a:CommutativeRing) +newpath 346 216 moveto +347 208 349 199 351 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 354 190 moveto +353 180 lineto +348 189 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 354 190 moveto +353 180 lineto +348 189 lineto +closepath +stroke +end grestore +% EntireRing()->RING... +newpath 174 216 moveto +167 207 158 197 150 188 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 152 185 moveto +143 180 lineto +147 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 152 185 moveto +143 180 lineto +147 190 lineto +closepath +stroke +end grestore +% EntireRing()->BMODULE... +newpath 189 216 moveto +188 178 187 91 186 46 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 190 46 moveto +186 36 lineto +183 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 190 46 moveto +186 36 lineto +183 46 lineto +closepath +stroke +end grestore +% BiModule(a:CommutativeRing,b:CommutativeRing) +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 526 108 moveto +214 108 lineto +214 72 lineto +526 72 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 526 108 moveto +214 108 lineto +214 72 lineto +526 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +221 85 moveto +(BiModule\(a:CommutativeRing,b:CommutativeRing\)) +[9.36 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 3.6 6.96 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Module(a:CommutativeRing)->BiModule(a:CommutativeRing,b:CommutativeRing) +newpath 360 144 moveto +361 136 363 127 365 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 368 118 moveto +367 108 lineto +362 117 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 368 118 moveto +367 108 lineto +362 117 lineto +closepath +stroke +end grestore +% BiModule(a:CommutativeRing,b:CommutativeRing)->BMODULE... +newpath 324 72 moveto +299 62 268 50 241 40 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 243 37 moveto +232 36 lineto +240 43 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 243 37 moveto +232 36 lineto +240 43 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102retractableto.ps b/books/ps/v102retractableto.ps index dd4dde1..87e09a1 100644 --- a/books/ps/v102retractableto.ps +++ b/books/ps/v102retractableto.ps @@ -206,11 +206,6 @@ stroke 0.000 0.000 0.000 graphcolor 14.00 /Times-Roman set_font % RetractableTo(a:Type) -[ /Rect [ 0 72 140 108 ] - /Border [ 0 0 0 ] - /Action << /Subtype /URI /URI (books/bookvol10.pamphlet) >> - /Subtype /Link -/ANN pdfmark gsave 10 dict begin filled 0.537 0.247 0.902 nodecolor @@ -237,11 +232,6 @@ xshow end grestore end grestore % Category -[ /Rect [ 36 0 104 36 ] - /Border [ 0 0 0 ] - /Action << /Subtype /URI /URI (books/bookvol10.pamphlet) >> - /Subtype /Link -/ANN pdfmark gsave 10 dict begin filled 0.537 0.247 0.902 nodecolor diff --git a/books/ps/v102uniquefactorizationdomain.ps b/books/ps/v102uniquefactorizationdomain.ps new file mode 100644 index 0000000..f309094 --- /dev/null +++ b/books/ps/v102uniquefactorizationdomain.ps @@ -0,0 +1,738 @@ +%!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 570 512 +%%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 570 512 +%%PageOrientation: Portrait +gsave +36 36 534 476 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 474 lineto +532 474 lineto +532 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 474 lineto +532 474 lineto +532 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% UniqueFactorizationDomain() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 281 468 moveto +97 468 lineto +97 432 lineto +281 432 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 281 468 moveto +97 468 lineto +97 432 lineto +281 432 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +104 445 moveto +(UniqueFactorizationDomain\(\)) +[9.6 6.96 3.84 6.72 6.96 6.24 7.2 6.24 6.24 3.84 6.96 5.04 3.84 6.24 6.24 3.84 3.84 6.96 6.96 10.08 6.96 10.8 6.24 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% GcdDomain() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 236 396 moveto +142 396 lineto +142 360 lineto +236 360 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 236 396 moveto +142 396 lineto +142 360 lineto +236 360 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +150 373 moveto +(GcdDomain\(\)) +[10.08 6.24 6.96 10.08 6.96 10.8 6.24 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% UniqueFactorizationDomain()->GcdDomain() +newpath 189 432 moveto +189 424 189 415 189 406 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 193 406 moveto +189 396 lineto +186 406 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 193 406 moveto +189 396 lineto +186 406 lineto +closepath +stroke +end grestore +% IntegralDomain() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 246 324 moveto +132 324 lineto +132 288 lineto +246 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 246 324 moveto +132 324 lineto +132 288 lineto +246 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +139 301 moveto +(IntegralDomain\(\)) +[4.56 6.96 3.84 6.24 7.2 4.8 6.24 3.84 10.08 6.96 10.8 6.24 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% GcdDomain()->IntegralDomain() +newpath 189 360 moveto +189 352 189 343 189 334 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 193 334 moveto +189 324 lineto +186 334 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 193 334 moveto +189 324 lineto +186 334 lineto +closepath +stroke +end grestore +% CommutativeRing() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 128 252 moveto +0 252 lineto +0 216 lineto +128 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 128 252 moveto +0 252 lineto +0 216 lineto +128 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +8 229 moveto +(CommutativeRing\(\)) +[9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% IntegralDomain()->CommutativeRing() +newpath 157 288 moveto +141 279 121 267 104 257 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 105 254 moveto +95 252 lineto +102 260 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 105 254 moveto +95 252 lineto +102 260 lineto +closepath +stroke +end grestore +% Algebra(a:CommutativeRing) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 434 252 moveto +250 252 lineto +250 216 lineto +434 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 434 252 moveto +250 252 lineto +250 216 lineto +434 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +258 229 moveto +(Algebra\(a:CommutativeRing\)) +[10.08 3.84 6.72 6.24 6.96 4.8 6.24 4.56 6.24 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% IntegralDomain()->Algebra(a:CommutativeRing) +newpath 228 288 moveto +248 278 273 267 295 256 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 296 259 moveto +304 252 lineto +293 253 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 296 259 moveto +304 252 lineto +293 253 lineto +closepath +stroke +end grestore +% EntireRing() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 232 252 moveto +146 252 lineto +146 216 lineto +232 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 232 252 moveto +146 252 lineto +146 216 lineto +232 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +153 229 moveto +(EntireRing\(\)) +[8.64 6.96 3.84 3.84 4.8 6.24 9.36 3.84 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% IntegralDomain()->EntireRing() +newpath 189 288 moveto +189 280 189 271 189 262 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 193 262 moveto +189 252 lineto +186 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 193 262 moveto +189 252 lineto +186 262 lineto +closepath +stroke +end grestore +% RING... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 158 180 moveto +98 180 lineto +98 144 lineto +158 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 158 180 moveto +98 180 lineto +98 144 lineto +158 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +105 157 moveto +(RING...) +[9.36 4.56 9.84 10.08 3.6 3.6 3.6] +xshow +end grestore +end grestore +% CommutativeRing()->RING... +newpath 80 216 moveto +88 207 97 197 105 188 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 108 190 moveto +112 180 lineto +103 185 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 108 190 moveto +112 180 lineto +103 185 lineto +closepath +stroke +end grestore +% BMODULE... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 235 36 moveto +137 36 lineto +137 0 lineto +235 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 235 36 moveto +137 36 lineto +137 0 lineto +235 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +145 13 moveto +(BMODULE...) +[9.36 12.48 10.08 10.08 10.08 8.64 8.64 3.6 3.6 3.6] +xshow +end grestore +end grestore +% CommutativeRing()->BMODULE... +newpath 67 216 moveto +70 197 77 167 89 144 curveto +108 105 139 68 161 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 164 46 moveto +168 36 lineto +159 41 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 164 46 moveto +168 36 lineto +159 41 lineto +closepath +stroke +end grestore +% Algebra(a:CommutativeRing)->RING... +newpath 288 216 moveto +251 203 202 187 168 175 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 169 172 moveto +158 172 lineto +167 178 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 169 172 moveto +158 172 lineto +167 178 lineto +closepath +stroke +end grestore +% Module(a:CommutativeRing) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 447 180 moveto +265 180 lineto +265 144 lineto +447 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 447 180 moveto +265 180 lineto +265 144 lineto +447 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +272 157 moveto +(Module\(a:CommutativeRing\)) +[12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Algebra(a:CommutativeRing)->Module(a:CommutativeRing) +newpath 346 216 moveto +347 208 349 199 351 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 354 190 moveto +353 180 lineto +348 189 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 354 190 moveto +353 180 lineto +348 189 lineto +closepath +stroke +end grestore +% EntireRing()->RING... +newpath 174 216 moveto +167 207 158 197 150 188 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 152 185 moveto +143 180 lineto +147 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 152 185 moveto +143 180 lineto +147 190 lineto +closepath +stroke +end grestore +% EntireRing()->BMODULE... +newpath 189 216 moveto +188 178 187 91 186 46 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 190 46 moveto +186 36 lineto +183 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 190 46 moveto +186 36 lineto +183 46 lineto +closepath +stroke +end grestore +% BiModule(a:CommutativeRing,b:CommutativeRing) +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 526 108 moveto +214 108 lineto +214 72 lineto +526 72 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 526 108 moveto +214 108 lineto +214 72 lineto +526 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +221 85 moveto +(BiModule\(a:CommutativeRing,b:CommutativeRing\)) +[9.36 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 3.6 6.96 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Module(a:CommutativeRing)->BiModule(a:CommutativeRing,b:CommutativeRing) +newpath 360 144 moveto +361 136 363 127 365 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 368 118 moveto +367 108 lineto +362 117 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 368 118 moveto +367 108 lineto +362 117 lineto +closepath +stroke +end grestore +% BiModule(a:CommutativeRing,b:CommutativeRing)->BMODULE... +newpath 324 72 moveto +299 62 268 50 241 40 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 243 37 moveto +232 36 lineto +240 43 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 243 37 moveto +232 36 lineto +240 43 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102vectorspace.ps b/books/ps/v102vectorspace.ps new file mode 100644 index 0000000..498929b --- /dev/null +++ b/books/ps/v102vectorspace.ps @@ -0,0 +1,677 @@ +%!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 356 584 +%%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 356 584 +%%PageOrientation: Portrait +gsave +36 36 320 548 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 546 lineto +318 546 lineto +318 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 546 lineto +318 546 lineto +318 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% VectorSpace(a:Field) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 223 540 moveto +89 540 lineto +89 504 lineto +223 504 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 223 540 moveto +89 540 lineto +89 504 lineto +223 504 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +96 517 moveto +(VectorSpace\(a:Field\)) +[8.88 6.24 6.24 3.84 6.96 4.8 7.68 6.96 6.24 6.24 6.24 4.56 6.24 3.84 7.44 3.84 6.24 3.84 6.96 4.56] +xshow +end grestore +end grestore +% Module(Field) +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 205 468 moveto +107 468 lineto +107 432 lineto +205 432 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 205 468 moveto +107 468 lineto +107 432 lineto +205 432 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +114 445 moveto +(Module\(Field\)) +[12.48 6.96 6.96 6.96 3.84 6.24 4.56 7.44 3.84 6.24 3.84 6.96 4.56] +xshow +end grestore +end grestore +% VectorSpace(a:Field)->Module(Field) +newpath 156 504 moveto +156 496 156 487 156 478 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 160 478 moveto +156 468 lineto +153 478 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 160 478 moveto +156 468 lineto +153 478 lineto +closepath +stroke +end grestore +% Module(a:CommutativeRing) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 247 396 moveto +65 396 lineto +65 360 lineto +247 360 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 247 396 moveto +65 396 lineto +65 360 lineto +247 360 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +72 373 moveto +(Module\(a:CommutativeRing\)) +[12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Module(Field)->Module(a:CommutativeRing) +newpath 156 432 moveto +156 424 156 415 156 406 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 160 406 moveto +156 396 lineto +153 406 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 160 406 moveto +156 396 lineto +153 406 lineto +closepath +stroke +end grestore +% BiModule(a:CommutativeRing,b:CommutativeRing) +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 312 324 moveto +0 324 lineto +0 288 lineto +312 288 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 312 324 moveto +0 324 lineto +0 288 lineto +312 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +7 301 moveto +(BiModule\(a:CommutativeRing,b:CommutativeRing\)) +[9.36 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 3.6 6.96 3.84 9.36 6.96 10.8 10.8 6.96 4.08 6.24 3.84 3.84 6.48 6.24 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% Module(a:CommutativeRing)->BiModule(a:CommutativeRing,b:CommutativeRing) +newpath 156 360 moveto +156 352 156 343 156 334 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 160 334 moveto +156 324 lineto +153 334 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 160 334 moveto +156 324 lineto +153 334 lineto +closepath +stroke +end grestore +% BiModule(a:Ring,b:Ring) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 237 252 moveto +75 252 lineto +75 216 lineto +237 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 237 252 moveto +75 252 lineto +75 216 lineto +237 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +83 229 moveto +(BiModule\(a:Ring,b:Ring\)) +[9.36 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 3.84 6.96 6.96 3.6 6.96 3.84 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% BiModule(a:CommutativeRing,b:CommutativeRing)->BiModule(a:Ring,b:Ring) +newpath 156 288 moveto +156 280 156 271 156 262 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 160 262 moveto +156 252 lineto +153 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 160 262 moveto +156 252 lineto +153 262 lineto +closepath +stroke +end grestore +% LeftModule(a:Ring) +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 146 180 moveto +16 180 lineto +16 144 lineto +146 144 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 146 180 moveto +16 180 lineto +16 144 lineto +146 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +24 157 moveto +(LeftModule\(a:Ring\)) +[8.64 6.24 4.8 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% BiModule(a:Ring,b:Ring)->LeftModule(a:Ring) +newpath 137 216 moveto +128 207 117 197 107 187 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 110 185 moveto +100 180 lineto +105 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 110 185 moveto +100 180 lineto +105 190 lineto +closepath +stroke +end grestore +% RightModule(a:Ring) +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 300 180 moveto +164 180 lineto +164 144 lineto +300 144 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 300 180 moveto +164 180 lineto +164 144 lineto +300 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +171 157 moveto +(RightModule\(a:Ring\)) +[9.36 3.84 6.96 6.96 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 3.84 6.96 6.96 4.56] +xshow +end grestore +end grestore +% BiModule(a:Ring,b:Ring)->RightModule(a:Ring) +newpath 175 216 moveto +185 207 196 197 206 187 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 208 190 moveto +213 180 lineto +203 185 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 208 190 moveto +213 180 lineto +203 185 lineto +closepath +stroke +end grestore +% LeftModule(a:Rng) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 145 108 moveto +19 108 lineto +19 72 lineto +145 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 145 108 moveto +19 108 lineto +19 72 lineto +145 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +27 85 moveto +(LeftModule\(a:Rng\)) +[8.64 6.24 4.8 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 6.96 4.56] +xshow +end grestore +end grestore +% LeftModule(a:Ring)->LeftModule(a:Rng) +newpath 81 144 moveto +82 136 82 127 82 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 86 118 moveto +82 108 lineto +79 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 86 118 moveto +82 108 lineto +79 118 lineto +closepath +stroke +end grestore +% RightModule(a:Rng) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 298 108 moveto +164 108 lineto +164 72 lineto +298 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 298 108 moveto +164 108 lineto +164 72 lineto +298 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +172 85 moveto +(RightModule\(a:Rng\)) +[9.36 3.84 6.96 6.96 3.84 12.48 6.96 6.96 6.96 3.84 6.24 4.56 6.24 3.84 9.36 6.96 6.96 4.56] +xshow +end grestore +end grestore +% RightModule(a:Ring)->RightModule(a:Rng) +newpath 232 144 moveto +231 136 231 127 231 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 235 118 moveto +231 108 lineto +228 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 235 118 moveto +231 108 lineto +228 118 lineto +closepath +stroke +end grestore +% ABELGRP... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 201 36 moveto +111 36 lineto +111 0 lineto +201 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 201 36 moveto +111 36 lineto +111 0 lineto +201 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +118 13 moveto +(ABELGRP...) +[10.08 9.36 8.64 8.64 10.08 9.36 6.24 3.6 3.6 3.6] +xshow +end grestore +end grestore +% RightModule(a:Rng)->ABELGRP... +newpath 212 72 moveto +203 63 192 53 182 43 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 185 41 moveto +175 36 lineto +180 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 185 41 moveto +175 36 lineto +180 46 lineto +closepath +stroke +end grestore +% LeftModule(a:Rng)->ABELGRP... +newpath 101 72 moveto +110 63 121 53 131 43 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 133 46 moveto +138 36 lineto +128 41 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 133 46 moveto +138 36 lineto +128 41 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/changelog b/changelog index 419275b..6c2a43d 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,53 @@ +20080925 tpd books/ps/v102vectorspace.ps added +20080925 tpd books/ps/v102uniquefactorizationdomain.ps added +20080925 tpd books/ps/v102principalidealdomain.ps added +20080925 tpd books/ps/v102polynomialfactorizationexplicit.ps added +20080925 tpd books/ps/v102partialdifferentialring.ps added +20080925 tpd books/ps/v102orderedintegraldomain.ps added +20080925 tpd books/ps/v102module.ps added +20080925 tpd books/ps/v102logic.ps added +20080925 tpd books/ps/v102linearlyexplicitringover.ps added +20080925 tpd books/ps/v102integraldomain.ps added +20080925 tpd books/ps/v102innerevalable.ps added +20080925 tpd books/ps/v102gcddomain.ps added +20080925 tpd books/ps/v102fullylinearlyexplicitringover.ps added +20080925 tpd books/ps/v102field.ps added +20080925 tpd books/ps/v102evalable.ps added +20080925 tpd books/ps/v102euclideandomain.ps added +20080925 tpd books/ps/v102divisionring.ps added +20080925 tpd books/ps/v102differentialring.ps added +20080925 tpd books/ps/v102differentialextension.ps added +20080925 tpd books/ps/v102commutativering.ps added +20080925 tpd books/ps/v102characteristiczero.ps added +20080925 tpd books/ps/v102characteristicnonzero.ps added +20080925 tpd books/ps/v102bitaggregate.ps added +20080925 tpd books/ps/v102algebra.ps added +20080925 tpd books/ps/v102EntireRing.ps added +20080925 tpd books/ps/v102retractableto.ps added +20080925 tpd books/bookvol10.2 absorb equation1.spad +20080925 tpd src/algebra/Makefile remove equation1 +20080925 tpd src/algebra/boolean.spad move LOGIC into bookvol10.2 +20080925 tpd src/algebra/equation1.spad remove. merged into bookvol10.2 +20080925 tpd src/algebra/Makefile remove catdef.spad +20080925 tpd books/bookvol10.2 absorb catdef.spad +20080925 tpd src/algebra/catdef.spad removed, moved to bookvol10.2 +20080921 tpd books/bookvol10.2 use .pdf rather than .pamphlet in URL +20080921 tpd books/ps/v71sept2008.eps add new image for sept 2008 +20080921 tpd books/ps/v71releasenotes.eps update image to include sept2008 +20080921 tpd books/bookvol7.1 add september release notes +20080921 tpd Makefile.pamphlet September 2008 release number +20080921 tpd Makefile September 2008 release number +20080920 tpd books/ps/v102bimodule.ps diagram BMODULE +20080920 tpd books/ps/v102group.ps diagram GROUP +20080920 tpd books/ps/v102leftmodule.ps diagram LMODULE +20080920 tpd books/ps/v102orderedabeliangroup.ps diagram OAGROUP +20080920 tpd books/ps/v102orderedabelianmonoidsup.ps OAMONS +20080920 tpd books/ps/v102orderedcancellationabelianmonoid.ps OCAMON +20080920 tpd books/ps/v102orderedring.ps diagram ORDRING +20080920 tpd books/ps/v102rightmodule.ps diagram RMODULE +20080920 tpd books/ps/v102ring.ps diagram RING +20080920 tpd src/algebra/catdef.spad remove more categories +20080920 tpd books/bookvol10.2 add more categories 20080919 tpd books/ps/v102stepthrough.ps diagram STEP 20080919 tpd books/ps/v102setaggregate.ps diagram SETAGG 20080919 tpd books/ps/v102rng.ps diagram RNG diff --git a/src/algebra/Makefile.pamphlet b/src/algebra/Makefile.pamphlet index 59f9a08..c28c491 100644 --- a/src/algebra/Makefile.pamphlet +++ b/src/algebra/Makefile.pamphlet @@ -273,9 +273,6 @@ LAYER4=\ @ \subsection{Layer 5} \subsubsection{Completed spad files} -\begin{verbatim} -equation1.spad.pamphlet (EVALAB IEVALAB) -\end{verbatim} <>= @@ -492,12 +489,6 @@ LAYER12=\ \subsubsection{Completed spad files} \begin{verbatim} carten.spad.pamphlet (GRMOD GRALG CARTEN CARTEN2) -catdef.spad.pamphlet (ABELGRP ABELMON ABELSG ALGEBRA BASTYPE BMODULE CABMON - CHARNZ CHARZ COMRING DIFRING DIFEXT DIVRING ENTIRER - EUCDOM FIELD FINITE FLINEXP GCDDOM GROUP INTDOM LMODULE - LINEXP MODULE MONOID OAGROUP OAMON OAMONS OASGP OCAMON - ORDFIN OINTDOM ORDMON ORDRING ORDSET PDRING PFECAT PID - RMODULE RING RNG SGROUP SETCAT STEP UFD VSPACE) clifford.spad.pamphlet (QFORM CLIF) clip.spad.pamphlet (CLIP) coordsys.spad.pamphlet (COORDSYS) @@ -1194,7 +1185,7 @@ SPADFILES= \ ${OUTSRC}/bags.spad ${OUTSRC}/bezout.spad ${OUTSRC}/boolean.spad \ ${OUTSRC}/brill.spad \ ${OUTSRC}/c02.spad ${OUTSRC}/c05.spad ${OUTSRC}/c06.spad \ - ${OUTSRC}/card.spad ${OUTSRC}/carten.spad ${OUTSRC}/catdef.spad \ + ${OUTSRC}/card.spad ${OUTSRC}/carten.spad \ ${OUTSRC}/cden.spad ${OUTSRC}/clifford.spad ${OUTSRC}/clip.spad \ ${OUTSRC}/cmplxrt.spad ${OUTSRC}/color.spad \ ${OUTSRC}/combfunc.spad ${OUTSRC}/combinat.spad ${OUTSRC}/complet.spad \ @@ -1215,7 +1206,7 @@ SPADFILES= \ ${OUTSRC}/e04package.spad ${OUTSRC}/e04routine.spad ${OUTSRC}/e04.spad \ ${OUTSRC}/efstruc.spad ${OUTSRC}/efuls.spad ${OUTSRC}/efupxs.spad \ ${OUTSRC}/eigen.spad ${OUTSRC}/elemntry.spad ${OUTSRC}/elfuts.spad \ - ${OUTSRC}/equation1.spad ${OUTSRC}/equation2.spad ${OUTSRC}/error.spad \ + ${OUTSRC}/equation2.spad ${OUTSRC}/error.spad \ ${OUTSRC}/expexpan.spad ${OUTSRC}/expr2ups.spad \ ${OUTSRC}/exprode.spad ${OUTSRC}/expr.spad \ ${OUTSRC}/f01.spad ${OUTSRC}/f02.spad ${OUTSRC}/f04.spad \ @@ -1354,7 +1345,7 @@ DOCFILES= \ ${DOC}/bags.spad.dvi ${DOC}/bezout.spad.dvi ${DOC}/boolean.spad.dvi \ ${DOC}/brill.spad.dvi \ ${DOC}/c02.spad.dvi ${DOC}/c05.spad.dvi ${DOC}/c06.spad.dvi \ - ${DOC}/card.spad.dvi ${DOC}/carten.spad.dvi ${DOC}/catdef.spad.dvi \ + ${DOC}/card.spad.dvi ${DOC}/carten.spad.dvi \ ${DOC}/cden.spad.dvi ${DOC}/clifford.spad.dvi ${DOC}/clip.spad.dvi \ ${DOC}/cmplxrt.spad.dvi ${DOC}/color.spad.dvi \ ${DOC}/combfunc.spad.dvi ${DOC}/combinat.spad.dvi ${DOC}/complet.spad.dvi \ @@ -1375,7 +1366,7 @@ DOCFILES= \ ${DOC}/e04package.spad.dvi ${DOC}/e04routine.spad.dvi ${DOC}/e04.spad.dvi \ ${DOC}/efstruc.spad.dvi ${DOC}/efuls.spad.dvi ${DOC}/efupxs.spad.dvi \ ${DOC}/eigen.spad.dvi ${DOC}/elemntry.spad.dvi ${DOC}/elfuts.spad.dvi \ - ${DOC}/equation1.spad.dvi ${DOC}/equation2.spad.dvi ${DOC}/error.spad.dvi \ + ${DOC}/equation2.spad.dvi ${DOC}/error.spad.dvi \ ${DOC}/expexpan.spad.dvi ${DOC}/exposed.lsp.dvi ${DOC}/expr2ups.spad.dvi \ ${DOC}/exprode.spad.dvi ${DOC}/expr.spad.dvi \ ${DOC}/f01.spad.dvi ${DOC}/f02.spad.dvi ${DOC}/f04.spad.dvi \ diff --git a/src/algebra/boolean.spad.pamphlet b/src/algebra/boolean.spad.pamphlet index 41e9347..a2768f6 100644 --- a/src/algebra/boolean.spad.pamphlet +++ b/src/algebra/boolean.spad.pamphlet @@ -98,33 +98,6 @@ Note that this code is not included in the generated catdef.spad file. (MAKEPROP (QUOTE |Reference|) (QUOTE |infovec|) (LIST (QUOTE #(NIL NIL NIL NIL NIL NIL (|local| |#1|) (QUOTE |Rep|) (|Boolean|) |REF;=;2$B;1| |REF;ref;S$;2| |REF;elt;$S;3| |REF;setelt;$2S;4| |REF;deref;$S;5| |REF;setref;$2S;6| (|String|) (|OutputForm|) (0 . |message|) (5 . |coerce|) (|List| |$|) (10 . |prefix|) (16 . |coerce|) (|SingleInteger|))) (QUOTE #(|~=| 21 |setref| 27 |setelt| 33 |ref| 39 |latex| 44 |hash| 49 |elt| 54 |deref| 59 |coerce| 64 |=| 69)) (QUOTE NIL) (CONS (|makeByteWordVec2| 1 (QUOTE (1 0 1 1))) (CONS (QUOTE #(|SetCategory&| NIL |BasicType&| NIL)) (CONS (QUOTE #((|SetCategory|) (|Type|) (|BasicType|) (|CoercibleTo| 16))) (|makeByteWordVec2| 22 (QUOTE (1 16 0 15 17 1 6 16 0 18 2 16 0 0 19 20 1 0 16 0 21 2 1 8 0 0 1 2 0 6 0 6 14 2 0 6 0 6 12 1 0 0 6 10 1 1 15 0 1 1 1 22 0 1 1 0 6 0 11 1 0 6 0 13 1 1 16 0 21 2 0 8 0 0 9)))))) (QUOTE |lookupComplete|))) @ -\section{category LOGIC Logic} -<>= -"LOGIC" -> "BASTYPE" -"Logic()" -> "BasicType()" -@ -<>= -)abbrev category LOGIC Logic -++ Author: -++ Date Created: -++ Change History: -++ Basic Operations: ~, /\, \/ -++ Related Constructors: -++ Keywords: boolean -++ Description: -++ `Logic' provides the basic operations for lattices, -++ e.g., boolean algebra. -Logic: Category == BasicType with - _~: % -> % - ++ ~(x) returns the logical complement of x. - _/_\: (%, %) -> % - ++ \spadignore { /\ }returns the logical `meet', e.g. `and'. - _\_/: (%, %) -> % - ++ \spadignore{ \/ } returns the logical `join', e.g. `or'. - add - _\_/(x: %,y: %) == _~( _/_\(_~(x), _~(y))) - -@ \section{domain BOOLEAN Boolean} <>= "BOOLEAN" -> "ORDSET" @@ -599,7 +572,6 @@ Bits(): Exports == Implementation where <> <> -<> <> <> <> diff --git a/src/algebra/catdef.spad.pamphlet b/src/algebra/catdef.spad.pamphlet deleted file mode 100644 index e564a0c..0000000 --- a/src/algebra/catdef.spad.pamphlet +++ /dev/null @@ -1,2818 +0,0 @@ -\documentclass{article} -\usepackage{axiom} -\begin{document} -\title{\$SPAD/src/algebra catdef.spad} -\author{James Davenport, Lalo Gonzalez-Vega} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{category ALGEBRA Algebra} -<>= -"ALGEBRA" -> "RING" -"Algebra(a:CommutativeRing)" -> "Ring()" -"Algebra(a:Field)" -> "Algebra(a:CommutativeRing)" -"ALGEBRA" -> "MODULE" -"Algebra(a:CommutativeRing)" -> "Module(a:CommutativeRing)" -"Algebra(Fraction(Integer))" -> "Algebra(a:CommutativeRing)" -@ -<>= -)abbrev category ALGEBRA Algebra -++ Author: -++ Date Created: -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: -++ Description: -++ The category of associative algebras (modules which are themselves rings). -++ -++ Axioms: -++ \spad{(b+c)::% = (b::%) + (c::%)} -++ \spad{(b*c)::% = (b::%) * (c::%)} -++ \spad{(1::R)::% = 1::%} -++ \spad{b*x = (b::%)*x} -++ \spad{r*(a*b) = (r*a)*b = a*(r*b)} -Algebra(R:CommutativeRing): Category == - Join(Ring, Module R) with - --operations - coerce: R -> % - ++ coerce(r) maps the ring element r to a member of the algebra. - add - coerce(x:R):% == x * 1$% - -@ -\section{category CHARNZ CharacteristicNonZero} -<>= -"CHARNZ" -> "RING" -"CharacteristicNonZero()" -> "Ring()" -@ -<>= -)abbrev category CHARNZ CharacteristicNonZero -++ Author: -++ Date Created: -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: -++ Description: -++ Rings of Characteristic Non Zero -CharacteristicNonZero():Category == Ring with - charthRoot: % -> Union(%,"failed") - ++ charthRoot(x) returns the pth root of x - ++ where p is the characteristic of the ring. - -@ -\section{category CHARZ CharacteristicZero} -<>= -"CHARZ" -> "RING" -"CharacteristicZero()" -> "Ring()" -@ -<>= -)abbrev category CHARZ CharacteristicZero -++ Author: -++ Date Created: -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: -++ Description: -++ Rings of Characteristic Zero. -CharacteristicZero():Category == Ring - -@ -\section{category COMRING CommutativeRing} -<>= -"COMRING" -> "RING" -"CommutativeRing()" -> "Ring()" -"COMRING" -> "BMODULE" -"CommutativeRing()" -> "BiModule(a:Ring,b:Ring)" -@ -<>= -)abbrev category COMRING CommutativeRing -++ Author: -++ Date Created: -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: -++ Description: -++ The category of commutative rings with unity, i.e. rings where -++ \spadop{*} is commutative, and which have a multiplicative identity. -++ element. ---CommutativeRing():Category == Join(Ring,BiModule(%:Ring,%:Ring)) with -CommutativeRing():Category == Join(Ring,BiModule(%,%)) with - commutative("*") ++ multiplication is commutative. - -@ -\section{COMRING.lsp BOOTSTRAP} -{\bf COMRING} depends on itself. We need to break this cycle to build -the algebra. So we keep a cached copy of the translated {\bf COMRING} -category which we can write into the {\bf MID} directory. We compile -the lisp code and copy the {\bf COMRING.o} file to the {\bf OUT} directory. -This is eventually forcibly replaced by a recompiled version. - -Note that this code is not included in the generated catdef.spad file. - -<>= - -(|/VERSIONCHECK| 2) - -(SETQ |CommutativeRing;AL| (QUOTE NIL)) - -(DEFUN |CommutativeRing| NIL - (LET (#:G82892) - (COND - (|CommutativeRing;AL|) - (T (SETQ |CommutativeRing;AL| (|CommutativeRing;|)))))) - -(DEFUN |CommutativeRing;| NIL - (PROG (#1=#:G82890) - (RETURN - (PROG1 - (LETT #1# - (|Join| - (|Ring|) - (|BiModule| (QUOTE |$|) (QUOTE |$|)) - (|mkCategory| - (QUOTE |package|) - NIL - (QUOTE (((|commutative| "*") T))) - (QUOTE NIL) - NIL)) - |CommutativeRing|) - (SETELT #1# 0 (QUOTE (|CommutativeRing|))))))) - -(MAKEPROP (QUOTE |CommutativeRing|) (QUOTE NILADIC) T) - -@ -\section{category DIFRING DifferentialRing} -<>= -"DIFRING" -> "RING" -"DifferentialRing()" -> "Ring()" -@ -<>= -)abbrev category DIFRING DifferentialRing -++ Author: -++ Date Created: -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: -++ Description: -++ An ordinary differential ring, that is, a ring with an operation -++ \spadfun{differentiate}. -++ -++ Axioms: -++ \spad{differentiate(x+y) = differentiate(x)+differentiate(y)} -++ \spad{differentiate(x*y) = x*differentiate(y) + differentiate(x)*y} - -DifferentialRing(): Category == Ring with - differentiate: % -> % - ++ differentiate(x) returns the derivative of x. - ++ This function is a simple differential operator - ++ where no variable needs to be specified. - D: % -> % - ++ D(x) returns the derivative of x. - ++ This function is a simple differential operator - ++ where no variable needs to be specified. - differentiate: (%, NonNegativeInteger) -> % - ++ differentiate(x, n) returns the n-th derivative of x. - D: (%, NonNegativeInteger) -> % - ++ D(x, n) returns the n-th derivative of x. - add - D r == differentiate r - differentiate(r, n) == - for i in 1..n repeat r := differentiate r - r - D(r,n) == differentiate(r,n) - -@ -\section{DIFRING.lsp BOOTSTRAP} -{\bf DIFRING} needs {\bf INT} which needs {\bf DIFRING}. -We need to break this cycle to build the algebra. So we keep a -cached copy of the translated {\bf DIFRING} category which we can write -into the {\bf MID} directory. We compile the lisp code and copy the -{\bf DIFRING.o} file to the {\bf OUT} directory. This is eventually -forcibly replaced by a recompiled version. - -Note that this code is not included in the generated catdef.spad file. - -<>= - -(|/VERSIONCHECK| 2) - -(SETQ |DifferentialRing;AL| (QUOTE NIL)) - -(DEFUN |DifferentialRing| NIL - (LET (#:G84565) - (COND - (|DifferentialRing;AL|) - (T (SETQ |DifferentialRing;AL| (|DifferentialRing;|)))))) - -(DEFUN |DifferentialRing;| NIL - (PROG (#1=#:G84563) - (RETURN - (PROG1 - (LETT #1# - (|Join| - (|Ring|) - (|mkCategory| - (QUOTE |domain|) - (QUOTE - (((|differentiate| (|$| |$|)) T) - ((D (|$| |$|)) T) - ((|differentiate| (|$| |$| (|NonNegativeInteger|))) T) - ((D (|$| |$| (|NonNegativeInteger|))) T))) - NIL - (QUOTE ((|NonNegativeInteger|))) - NIL)) - |DifferentialRing|) - (SETELT #1# 0 (QUOTE (|DifferentialRing|))))))) - -(MAKEPROP (QUOTE |DifferentialRing|) (QUOTE NILADIC) T) - -@ -\section{DIFRING-.lsp BOOTSTRAP} -{\bf DIFRING-} needs {\bf DIFRING}. -We need to break this cycle to build the algebra. So we keep a -cached copy of the translated {\bf DIFRING-} category which we can write -into the {\bf MID} directory. We compile the lisp code and copy the -{\bf DIFRING-.o} file to the {\bf OUT} directory. This is eventually -forcibly replaced by a recompiled version. - -Note that this code is not included in the generated catdef.spad file. - -<>= - -(|/VERSIONCHECK| 2) - -(DEFUN |DIFRING-;D;2S;1| (|r| |$|) - (SPADCALL |r| (QREFELT |$| 7))) - -(DEFUN |DIFRING-;differentiate;SNniS;2| (|r| |n| |$|) - (PROG (|i|) - (RETURN - (SEQ - (SEQ - (LETT |i| 1 |DIFRING-;differentiate;SNniS;2|) - G190 - (COND ((QSGREATERP |i| |n|) (GO G191))) - (SEQ - (EXIT - (LETT |r| - (SPADCALL |r| (QREFELT |$| 7)) - |DIFRING-;differentiate;SNniS;2|))) - (LETT |i| (QSADD1 |i|) |DIFRING-;differentiate;SNniS;2|) - (GO G190) - G191 - (EXIT NIL)) - (EXIT |r|))))) - -(DEFUN |DIFRING-;D;SNniS;3| (|r| |n| |$|) - (SPADCALL |r| |n| (QREFELT |$| 11))) - -(DEFUN |DifferentialRing&| (|#1|) - (PROG (|DV$1| |dv$| |$| |pv$|) - (RETURN - (PROGN - (LETT |DV$1| (|devaluate| |#1|) . #1=(|DifferentialRing&|)) - (LETT |dv$| (LIST (QUOTE |DifferentialRing&|) |DV$1|) . #1#) - (LETT |$| (GETREFV 13) . #1#) - (QSETREFV |$| 0 |dv$|) - (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #1#)) - (|stuffDomainSlots| |$|) - (QSETREFV |$| 6 |#1|) - |$|)))) - -(MAKEPROP - (QUOTE |DifferentialRing&|) - (QUOTE |infovec|) - (LIST - (QUOTE - #(NIL NIL NIL NIL NIL NIL - (|local| |#1|) - (0 . |differentiate|) - |DIFRING-;D;2S;1| - (|NonNegativeInteger|) - |DIFRING-;differentiate;SNniS;2| - (5 . |differentiate|) - |DIFRING-;D;SNniS;3|)) - (QUOTE #(|differentiate| 11 D 17)) - (QUOTE NIL) - (CONS - (|makeByteWordVec2| 1 (QUOTE NIL)) - (CONS - (QUOTE #()) - (CONS - (QUOTE #()) - (|makeByteWordVec2| 12 - (QUOTE - (1 6 0 0 7 2 6 0 0 9 11 2 0 0 0 9 10 2 0 0 0 9 12 1 0 0 0 8)))))) - (QUOTE |lookupComplete|))) - -@ -\section{category DIFEXT DifferentialExtension} -<>= -"DIFEXT" -> "RING" -"DifferentialExtension(a:Ring)" -> "Ring()" -@ -<>= -)abbrev category DIFEXT DifferentialExtension -++ Author: -++ Date Created: -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: -++ Description: -++ Differential extensions of a ring R. -++ Given a differentiation on R, extend it to a differentiation on %. - -DifferentialExtension(R:Ring): Category == Ring with - --operations - differentiate: (%, R -> R) -> % - ++ differentiate(x, deriv) differentiates x extending - ++ the derivation deriv on R. - differentiate: (%, R -> R, NonNegativeInteger) -> % - ++ differentiate(x, deriv, n) differentiate x n times - ++ using a derivation which extends deriv on R. - D: (%, R -> R) -> % - ++ D(x, deriv) differentiates x extending - ++ the derivation deriv on R. - D: (%, R -> R, NonNegativeInteger) -> % - ++ D(x, deriv, n) differentiate x n times - ++ using a derivation which extends deriv on R. - if R has DifferentialRing then DifferentialRing - if R has PartialDifferentialRing(Symbol) then - PartialDifferentialRing(Symbol) - add - differentiate(x:%, derivation: R -> R, n:NonNegativeInteger):% == - for i in 1..n repeat x := differentiate(x, derivation) - x - D(x:%, derivation: R -> R) == differentiate(x, derivation) - D(x:%, derivation: R -> R, n:NonNegativeInteger) == - differentiate(x, derivation, n) - - if R has DifferentialRing then - differentiate x == differentiate(x, differentiate$R) - - if R has PartialDifferentialRing Symbol then - differentiate(x:%, v:Symbol):% == - differentiate(x, differentiate(#1, v)$R) - -@ -\section{category DIVRING DivisionRing} -<>= -"DIVRING" -> "ENTIRER" -"DivisionRing()" -> "EntireRing()" -"DIVRING" -> "ALGEBRA" -"DivisionRing()" -> "Algebra(Fraction(Integer))" -@ -<>= -)abbrev category DIVRING DivisionRing -++ Author: -++ Date Created: -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: -++ Description: -++ A division ring (sometimes called a skew field), -++ i.e. a not necessarily commutative ring where -++ all non-zero elements have multiplicative inverses. - -DivisionRing(): Category == - Join(EntireRing, Algebra Fraction Integer) with - "**": (%,Integer) -> % - ++ x**n returns x raised to the integer power n. - "^" : (%,Integer) -> % - ++ x^n returns x raised to the integer power n. - inv : % -> % - ++ inv x returns the multiplicative inverse of x. - ++ Error: if x is 0. --- Q-algebra is a lie, should be conditional on characteristic 0, --- but knownInfo cannot handle the following commented --- if % has CharacteristicZero then Algebra Fraction Integer - add - n: Integer - x: % - _^(x:%, n:Integer):% == x ** n - import RepeatedSquaring(%) - x ** n: Integer == - zero? n => 1 - zero? x => - n<0 => error "division by zero" - x - n<0 => - expt(inv x,(-n) pretend PositiveInteger) - expt(x,n pretend PositiveInteger) --- if % has CharacteristicZero() then - q:Fraction(Integer) * x:% == numer(q) * inv(denom(q)::%) * x - -@ -\section{DIVRING.lsp BOOTSTRAP} -{\bf DIVRING} depends on {\bf QFCAT} which eventually depends on -{\bf DIVRING}. We need to break this cycle to build -the algebra. So we keep a cached copy of the translated {\bf DIVRING} -category which we can write into the {\bf MID} directory. We compile -the lisp code and copy the {\bf DIVRING.o} file to the {\bf OUT} directory. -This is eventually forcibly replaced by a recompiled version. - -Note that this code is not included in the generated catdef.spad file. - -<>= - -(|/VERSIONCHECK| 2) - -(SETQ |DivisionRing;AL| (QUOTE NIL)) - -(DEFUN |DivisionRing| NIL - (LET (#:G84035) - (COND - (|DivisionRing;AL|) - (T (SETQ |DivisionRing;AL| (|DivisionRing;|)))))) - -(DEFUN |DivisionRing;| NIL - (PROG (#1=#:G84033) - (RETURN - (PROG1 - (LETT #1# - (|sublisV| - (PAIR - (QUOTE (#2=#:G84032)) - (LIST (QUOTE (|Fraction| (|Integer|))))) - (|Join| - (|EntireRing|) - (|Algebra| (QUOTE #2#)) - (|mkCategory| - (QUOTE |domain|) - (QUOTE ( - ((|**| (|$| |$| (|Integer|))) T) - ((|^| (|$| |$| (|Integer|))) T) - ((|inv| (|$| |$|)) T))) - NIL - (QUOTE ((|Integer|))) - NIL))) - |DivisionRing|) - (SETELT #1# 0 (QUOTE (|DivisionRing|))))))) - -(MAKEPROP (QUOTE |DivisionRing|) (QUOTE NILADIC) T) - -@ -\section{DIVRING-.lsp BOOTSTRAP} -{\bf DIVRING-} depends on {\bf DIVRING}. We need to break this cycle to build -the algebra. So we keep a cached copy of the translated {\bf DIVRING-} -category which we can write into the {\bf MID} directory. We compile -the lisp code and copy the {\bf DIVRING-.o} file to the {\bf OUT} directory. -This is eventually forcibly replaced by a recompiled version. - -Note that this code is not included in the generated catdef.spad file. - -<>= - -(|/VERSIONCHECK| 2) - -(DEFUN |DIVRING-;^;SIS;1| (|x| |n| |$|) - (SPADCALL |x| |n| (QREFELT |$| 8))) - -(DEFUN |DIVRING-;**;SIS;2| (|x| |n| |$|) - (COND - ((ZEROP |n|) (|spadConstant| |$| 10)) - ((SPADCALL |x| (QREFELT |$| 12)) - (COND - ((|<| |n| 0) (|error| "division by zero")) - ((QUOTE T) |x|))) - ((|<| |n| 0) - (SPADCALL (SPADCALL |x| (QREFELT |$| 14)) (|-| |n|) (QREFELT |$| 17))) - ((QUOTE T) (SPADCALL |x| |n| (QREFELT |$| 17))))) - -(DEFUN |DIVRING-;*;F2S;3| (|q| |x| |$|) - (SPADCALL - (SPADCALL - (SPADCALL |q| (QREFELT |$| 20)) - (SPADCALL - (SPADCALL (SPADCALL |q| (QREFELT |$| 21)) (QREFELT |$| 22)) - (QREFELT |$| 14)) - (QREFELT |$| 23)) - |x| - (QREFELT |$| 24))) - -(DEFUN |DivisionRing&| (|#1|) - (PROG (|DV$1| |dv$| |$| |pv$|) - (RETURN - (PROGN - (LETT |DV$1| (|devaluate| |#1|) . #1=(|DivisionRing&|)) - (LETT |dv$| (LIST (QUOTE |DivisionRing&|) |DV$1|) . #1#) - (LETT |$| (GETREFV 27) . #1#) - (QSETREFV |$| 0 |dv$|) - (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #1#)) - (|stuffDomainSlots| |$|) - (QSETREFV |$| 6 |#1|) - |$|)))) - -(MAKEPROP - (QUOTE |DivisionRing&|) - (QUOTE |infovec|) - (LIST - (QUOTE - #(NIL NIL NIL NIL NIL NIL - (|local| |#1|) - (|Integer|) - (0 . |**|) - |DIVRING-;^;SIS;1| - (6 . |One|) - (|Boolean|) - (10 . |zero?|) - (15 . |Zero|) - (19 . |inv|) - (|PositiveInteger|) - (|RepeatedSquaring| 6) - (24 . |expt|) - |DIVRING-;**;SIS;2| - (|Fraction| 7) - (30 . |numer|) - (35 . |denom|) - (40 . |coerce|) - (45 . |*|) - (51 . |*|) - |DIVRING-;*;F2S;3| - (|NonNegativeInteger|))) - (QUOTE #(|^| 57 |**| 63 |*| 69)) - (QUOTE NIL) - (CONS - (|makeByteWordVec2| 1 (QUOTE NIL)) - (CONS - (QUOTE #()) - (CONS - (QUOTE #()) - (|makeByteWordVec2| 25 - (QUOTE - (2 6 0 0 7 8 0 6 0 10 1 6 11 0 12 0 6 0 13 1 6 0 0 14 2 16 6 - 6 15 17 1 19 7 0 20 1 19 7 0 21 1 6 0 7 22 2 6 0 7 0 23 2 6 - 0 0 0 24 2 0 0 0 7 9 2 0 0 0 7 18 2 0 0 19 0 25)))))) - (QUOTE |lookupComplete|))) - -@ -\section{category ENTIRER EntireRing} -<>= -"ENTIRER" -> "RING" -"EntireRing()" -> "Ring()" -"ENTIRER" -> "BMODULE" -"EntireRing()" -> "BiModule(a:Ring,b:Ring)" -@ -<>= -)abbrev category ENTIRER EntireRing -++ Author: -++ Date Created: -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: -++ Description: -++ Entire Rings (non-commutative Integral Domains), i.e. a ring -++ not necessarily commutative which has no zero divisors. -++ -++ Axioms: -++ \spad{ab=0 => a=0 or b=0} -- known as noZeroDivisors -++ \spad{not(1=0)} ---EntireRing():Category == Join(Ring,BiModule(%:Ring,%:Ring)) with -EntireRing():Category == Join(Ring,BiModule(%,%)) with - noZeroDivisors ++ if a product is zero then one of the factors - ++ must be zero. - -@ -\section{ENTIRER.lsp BOOTSTRAP} -{\bf ENTIRER} depends on itself. We need to break this cycle to build -the algebra. So we keep a cached copy of the translated {\bf ENTIRER} -category which we can write into the {\bf MID} directory. We compile -the lisp code and copy the {\bf ENTIRER.o} file to the {\bf OUT} directory. -This is eventually forcibly replaced by a recompiled version. - -Note that this code is not included in the generated catdef.spad file. - -<>= - -(|/VERSIONCHECK| 2) - -(SETQ |EntireRing;AL| (QUOTE NIL)) - -(DEFUN |EntireRing| NIL - (LET (#:G82841) - (COND - (|EntireRing;AL|) - (T (SETQ |EntireRing;AL| (|EntireRing;|)))))) - -(DEFUN |EntireRing;| NIL - (PROG (#1=#:G82839) - (RETURN - (PROG1 - (LETT #1# - (|Join| - (|Ring|) - (|BiModule| (QUOTE |$|) (QUOTE |$|)) - (|mkCategory| - (QUOTE |package|) - NIL - (QUOTE ((|noZeroDivisors| T))) - (QUOTE NIL) - NIL)) - |EntireRing|) - (SETELT #1# 0 (QUOTE (|EntireRing|))))))) - -(MAKEPROP (QUOTE |EntireRing|) (QUOTE NILADIC) T) - -@ -\section{category EUCDOM EuclideanDomain} -<>= -"EUCDOM" -> "PID" -"EuclideanDomain()" -> "PrincipalIdealDomain()" -@ -<>= -)abbrev category EUCDOM EuclideanDomain -++ Author: -++ Date Created: -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: -++ Description: -++ A constructive euclidean domain, i.e. one can divide producing -++ a quotient and a remainder where the remainder is either zero -++ or is smaller (\spadfun{euclideanSize}) than the divisor. -++ -++ Conditional attributes: -++ multiplicativeValuation\tab{25}\spad{Size(a*b)=Size(a)*Size(b)} -++ additiveValuation\tab{25}\spad{Size(a*b)=Size(a)+Size(b)} - -EuclideanDomain(): Category == PrincipalIdealDomain with - --operations - sizeLess?: (%,%) -> Boolean - ++ sizeLess?(x,y) tests whether x is strictly - ++ smaller than y with respect to the \spadfunFrom{euclideanSize}{EuclideanDomain}. - euclideanSize: % -> NonNegativeInteger - ++ euclideanSize(x) returns the euclidean size of the element x. - ++ Error: if x is zero. - divide: (%,%) -> Record(quotient:%,remainder:%) - ++ divide(x,y) divides x by y producing a record containing a - ++ \spad{quotient} and \spad{remainder}, - ++ where the remainder is smaller (see \spadfunFrom{sizeLess?}{EuclideanDomain}) - ++ than the divisor y. - "quo" : (%,%) -> % - ++ x quo y is the same as \spad{divide(x,y).quotient}. - ++ See \spadfunFrom{divide}{EuclideanDomain}. - "rem": (%,%) -> % - ++ x rem y is the same as \spad{divide(x,y).remainder}. - ++ See \spadfunFrom{divide}{EuclideanDomain}. - extendedEuclidean: (%,%) -> Record(coef1:%,coef2:%,generator:%) - -- formerly called princIdeal - ++ extendedEuclidean(x,y) returns a record rec where - ++ \spad{rec.coef1*x+rec.coef2*y = rec.generator} and - ++ rec.generator is a gcd of x and y. - ++ The gcd is unique only - ++ up to associates if \spadatt{canonicalUnitNormal} is not asserted. - ++ \spadfun{principalIdeal} provides a version of this operation - ++ which accepts an arbitrary length list of arguments. - extendedEuclidean: (%,%,%) -> Union(Record(coef1:%,coef2:%),"failed") - -- formerly called expressIdealElt - ++ extendedEuclidean(x,y,z) either returns a record rec - ++ where \spad{rec.coef1*x+rec.coef2*y=z} or returns "failed" - ++ if z cannot be expressed as a linear combination of x and y. - multiEuclidean: (List %,%) -> Union(List %,"failed") - ++ multiEuclidean([f1,...,fn],z) returns a list of coefficients - ++ \spad{[a1, ..., an]} such that - ++ \spad{ z / prod fi = sum aj/fj}. - ++ If no such list of coefficients exists, "failed" is returned. - add - -- declarations - x,y,z: % - l: List % - -- definitions - sizeLess?(x,y) == - zero? y => false - zero? x => true - euclideanSize(x) 0 - zero? y => "failed" - qr:=divide(x,y) - zero?(qr.remainder) => qr.quotient - "failed" - gcd(x,y) == --Euclidean Algorithm - x:=unitCanonical x - y:=unitCanonical y - while not zero? y repeat - (x,y):= (y,x rem y) - y:=unitCanonical y -- this doesn't affect the - -- correctness of Euclid's algorithm, - -- but - -- a) may improve performance - -- b) ensures gcd(x,y)=gcd(y,x) - -- if canonicalUnitNormal - x - IdealElt ==> Record(coef1:%,coef2:%,generator:%) - unitNormalizeIdealElt(s:IdealElt):IdealElt == - (u,c,a):=unitNormal(s.generator) --- one? a => s - (a = 1) => s - [a*s.coef1,a*s.coef2,c]$IdealElt - extendedEuclidean(x,y) == --Extended Euclidean Algorithm - s1:=unitNormalizeIdealElt([1$%,0$%,x]$IdealElt) - s2:=unitNormalizeIdealElt([0$%,1$%,y]$IdealElt) - zero? y => s1 - zero? x => s2 - while not zero?(s2.generator) repeat - qr:= divide(s1.generator, s2.generator) - s3:=[s1.coef1 - qr.quotient * s2.coef1, - s1.coef2 - qr.quotient * s2.coef2, qr.remainder]$IdealElt - s1:=s2 - s2:=unitNormalizeIdealElt s3 - if not(zero?(s1.coef1)) and not sizeLess?(s1.coef1,y) - then - qr:= divide(s1.coef1,y) - s1.coef1:= qr.remainder - s1.coef2:= s1.coef2 + qr.quotient * x - s1 := unitNormalizeIdealElt s1 - s1 - - TwoCoefs ==> Record(coef1:%,coef2:%) - extendedEuclidean(x,y,z) == - zero? z => [0,0]$TwoCoefs - s:= extendedEuclidean(x,y) - (w:= z exquo s.generator) case "failed" => "failed" - zero? y => - [s.coef1 * w, s.coef2 * w]$TwoCoefs - qr:= divide((s.coef1 * w), y) - [qr.remainder, s.coef2 * w + qr.quotient * x]$TwoCoefs - principalIdeal l == - l = [] => error "empty list passed to principalIdeal" - rest l = [] => - uca:=unitNormal(first l) - [[uca.unit],uca.canonical] - rest rest l = [] => - u:= extendedEuclidean(first l,second l) - [[u.coef1, u.coef2], u.generator] - v:=principalIdeal rest l - u:= extendedEuclidean(first l,v.generator) - [[u.coef1,:[u.coef2*vv for vv in v.coef]],u.generator] - expressIdealMember(l,z) == - z = 0 => [0 for v in l] - pid := principalIdeal l - (q := z exquo (pid.generator)) case "failed" => "failed" - [q*v for v in pid.coef] - multiEuclidean(l,z) == - n := #l - zero? n => error "empty list passed to multiEuclidean" - n = 1 => [z] - l1 := copy l - l2 := split!(l1, n quo 2) - u:= extendedEuclidean(*/l1, */l2, z) - u case "failed" => "failed" - v1 := multiEuclidean(l1,u.coef2) - v1 case "failed" => "failed" - v2 := multiEuclidean(l2,u.coef1) - v2 case "failed" => "failed" - concat(v1,v2) - -@ -\section{EUCDOM.lsp BOOTSTRAP} -{\bf EUCDOM} depends on {\bf INT} which depends on {\bf EUCDOM}. -We need to break this cycle to build -the algebra. So we keep a cached copy of the translated {\bf EUCDOM} -category which we can write into the {\bf MID} directory. We compile -the lisp code and copy the {\bf EUCDOM.o} file to the {\bf OUT} directory. -This is eventually forcibly replaced by a recompiled version. - -Note that this code is not included in the generated catdef.spad file. - -\subsection{The Lisp Implementation} -\subsubsection{EUCDOM;VersionCheck} -This implements the bootstrap code for {\bf EuclideanDomain}. -The call to {\bf VERSIONCHECK} is a legacy check to ensure that -we did not load algebra code from a previous system version (which -would not run due to major surgical changes in the system) without -recompiling. -<>= -(|/VERSIONCHECK| 2) - -@ -\subsubsection{The Domain Cache Variable} -We create a variable which is formed by concatenating the string -``{\bf ;AL}'' to the domain name forming, in this case, -``{\bf EuclideanDomain;AL}''. The variable has the initial value -at load time of a list of one element, {\bf NIL}. This list is -a data structure that will be modified to hold an executable -function. This function is created the first time the domain is -used which it replaces the {\bf NIL}. -<>= -(SETQ |EuclideanDomain;AL| (QUOTE NIL)) - -@ -\subsubsection{The Domain Function} -When you call a domain the code is pretty simple at the top -level. This code will check to see if this domain has ever been -used. It does this by checking the value of the cached domain -variable (which is the domain name {\bf EuclideanDomain} concatenated -with the string ``{\bf ;AL}'' to form the cache variable name which -is {\bf EuclideanDomain;AL}). - -If this value is NIL we have never executed this function -before. If it is not NIL we have executed this function before and -we need only return the cached function which was stored in the -cache variable. - -If this is the first time this function is called, the cache -variable is NIL and we execute the other branch of the conditional. -This calls a function which -\begin{enumerate} -\item creates a procedure -\item returns the procedure as a value. -\end{enumerate} -This procedure replaces the cached variable {\bf EuclideanDomain;AL} -value so it will be non-NIL the second time this domain is used. -Thus the work of building the domain only happens once. - -If this function has never been called before we call the -<>= -(DEFUN |EuclideanDomain| NIL - (LET (#:G83585) - (COND - (|EuclideanDomain;AL|) - (T (SETQ |EuclideanDomain;AL| (|EuclideanDomain;|)))))) - -@ -\subsubsection{The First Call Domain Function} -<>= -(DEFUN |EuclideanDomain;| NIL - (PROG (#1=#:G83583) - (RETURN - (PROG1 - (LETT #1# - (|Join| - (|PrincipalIdealDomain|) - (|mkCategory| - (QUOTE |domain|) - (QUOTE ( - ((|sizeLess?| ((|Boolean|) |$| |$|)) T) - ((|euclideanSize| ((|NonNegativeInteger|) |$|)) T) - ((|divide| - ((|Record| - (|:| |quotient| |$|) - (|:| |remainder| |$|)) - |$| |$|)) T) - ((|quo| (|$| |$| |$|)) T) - ((|rem| (|$| |$| |$|)) T) - ((|extendedEuclidean| - ((|Record| - (|:| |coef1| |$|) - (|:| |coef2| |$|) - (|:| |generator| |$|)) - |$| |$|)) T) - ((|extendedEuclidean| - ((|Union| - (|Record| (|:| |coef1| |$|) (|:| |coef2| |$|)) - "failed") - |$| |$| |$|)) T) - ((|multiEuclidean| - ((|Union| - (|List| |$|) - "failed") - (|List| |$|) |$|)) T))) - NIL - (QUOTE ((|List| |$|) (|NonNegativeInteger|) (|Boolean|))) - NIL)) - |EuclideanDomain|) - (SETELT #1# 0 (QUOTE (|EuclideanDomain|))))))) - -@ -\subsubsection{EUCDOM;MAKEPROP} -<>= -(MAKEPROP (QUOTE |EuclideanDomain|) (QUOTE NILADIC) T) - -@ -<>= -<> -<> -<> -<> -<> -@ -\section{EUCDOM-.lsp BOOTSTRAP} -{\bf EUCDOM-} depends on {\bf EUCDOM}. We need to break this cycle to build -the algebra. So we keep a cached copy of the translated {\bf EUCDOM-} -category which we can write into the {\bf MID} directory. We compile -the lisp code and copy the {\bf EUCDOM-.o} file to the {\bf OUT} directory. -This is eventually forcibly replaced by a recompiled version. - -Note that this code is not included in the generated catdef.spad file. - -\subsection{The Lisp Implementation} -\subsubsection{EUCDOM-;VersionCheck} -This implements the bootstrap code for {\bf EuclideanDomain}. -The call to {\bf VERSIONCHECK} is a legacy check to ensure that -we did not load algebra code from a previous system version (which -would not run due to major surgical changes in the system) without -recompiling. -<>= -(|/VERSIONCHECK| 2) - -@ -\subsubsection{EUCDOM-;sizeLess?;2SB;1} -<>= -(DEFUN |EUCDOM-;sizeLess?;2SB;1| (|x| |y| $) - (COND - ((SPADCALL |y| (QREFELT $ 8)) (QUOTE NIL)) - ((SPADCALL |x| (QREFELT $ 8)) (QUOTE T)) - ((QUOTE T) - (< (SPADCALL |x| (QREFELT $ 10)) (SPADCALL |y| (QREFELT $ 10)))))) - -@ - -\subsubsection{EUCDOM-;quo;3S;2} -<>= -(DEFUN |EUCDOM-;quo;3S;2| (|x| |y| $) - (QCAR (SPADCALL |x| |y| (QREFELT $ 13)))) - -@ -\subsubsection{EUCDOM-;rem;3S;3} -<>= -(DEFUN |EUCDOM-;rem;3S;3| (|x| |y| $) - (QCDR (SPADCALL |x| |y| (QREFELT $ 13)))) - -@ -\subsubsection{EUCDOM-;exquo;2SU;4} -<>= -(DEFUN |EUCDOM-;exquo;2SU;4| (|x| |y| $) - (PROG (|qr|) - (RETURN - (SEQ - (COND - ((SPADCALL |x| (QREFELT $ 8)) (CONS 0 (|spadConstant| $ 16))) - ((SPADCALL |y| (QREFELT $ 8)) (CONS 1 "failed")) - ((QUOTE T) - (SEQ - (LETT |qr| - (SPADCALL |x| |y| (QREFELT $ 13)) - |EUCDOM-;exquo;2SU;4|) - (EXIT - (COND - ((SPADCALL (QCDR |qr|) (QREFELT $ 8)) (CONS 0 (QCAR |qr|))) - ((QUOTE T) (CONS 1 "failed"))))))))))) - -@ -\subsubsection{EUCDOM-;gcd;3S;5} -<>= -(DEFUN |EUCDOM-;gcd;3S;5| (|x| |y| $) - (PROG (|#G13| |#G14|) - (RETURN - (SEQ - (LETT |x| (SPADCALL |x| (QREFELT $ 19)) |EUCDOM-;gcd;3S;5|) - (LETT |y| (SPADCALL |y| (QREFELT $ 19)) |EUCDOM-;gcd;3S;5|) - (SEQ G190 - (COND - ((NULL - (COND - ((SPADCALL |y| (QREFELT $ 8)) (QUOTE NIL)) - ((QUOTE T) (QUOTE T)))) - (GO G191))) - (SEQ - (PROGN - (LETT |#G13| |y| |EUCDOM-;gcd;3S;5|) - (LETT |#G14| (SPADCALL |x| |y| (QREFELT $ 20)) |EUCDOM-;gcd;3S;5|) - (LETT |x| |#G13| |EUCDOM-;gcd;3S;5|) - (LETT |y| |#G14| |EUCDOM-;gcd;3S;5|)) - (EXIT - (LETT |y| (SPADCALL |y| (QREFELT $ 19)) |EUCDOM-;gcd;3S;5|))) - NIL - (GO G190) - G191 - (EXIT NIL)) - (EXIT |x|))))) - -@ -\subsubsection{EUCDOM-;unitNormalizeIdealElt} -<>= -(DEFUN |EUCDOM-;unitNormalizeIdealElt| (|s| $) - (PROG (|#G16| |u| |c| |a|) - (RETURN - (SEQ - (PROGN - (LETT |#G16| - (SPADCALL (QVELT |s| 2) (QREFELT $ 23)) - |EUCDOM-;unitNormalizeIdealElt|) - (LETT |u| (QVELT |#G16| 0) |EUCDOM-;unitNormalizeIdealElt|) - (LETT |c| (QVELT |#G16| 1) |EUCDOM-;unitNormalizeIdealElt|) - (LETT |a| (QVELT |#G16| 2) |EUCDOM-;unitNormalizeIdealElt|) - |#G16|) - (EXIT - (COND - ((SPADCALL |a| (|spadConstant| $ 24) (QREFELT $ 25)) |s|) - ((QUOTE T) - (VECTOR - (SPADCALL |a| (QVELT |s| 0) (QREFELT $ 26)) - (SPADCALL |a| (QVELT |s| 1) (QREFELT $ 26)) - |c|)))))))) - -@ -\subsubsection{EUCDOM-;extendedEuclidean;2SR;7} -<>= -(DEFUN |EUCDOM-;extendedEuclidean;2SR;7| (|x| |y| $) - (PROG (|s3| |s2| |qr| |s1|) - (RETURN - (SEQ - (LETT |s1| - (|EUCDOM-;unitNormalizeIdealElt| - (VECTOR (|spadConstant| $ 24) (|spadConstant| $ 16) |x|) - $) - |EUCDOM-;extendedEuclidean;2SR;7|) - (LETT |s2| - (|EUCDOM-;unitNormalizeIdealElt| - (VECTOR (|spadConstant| $ 16) (|spadConstant| $ 24) |y|) - $) - |EUCDOM-;extendedEuclidean;2SR;7|) - (EXIT - (COND - ((SPADCALL |y| (QREFELT $ 8)) |s1|) - ((SPADCALL |x| (QREFELT $ 8)) |s2|) - ((QUOTE T) - (SEQ - (SEQ - G190 - (COND - ((NULL - (COND - ((SPADCALL (QVELT |s2| 2) (QREFELT $ 8)) (QUOTE NIL)) - ((QUOTE T) (QUOTE T)))) - (GO G191))) - (SEQ - (LETT |qr| - (SPADCALL (QVELT |s1| 2) (QVELT |s2| 2) (QREFELT $ 13)) - |EUCDOM-;extendedEuclidean;2SR;7|) - (LETT |s3| - (VECTOR - (SPADCALL (QVELT |s1| 0) - (SPADCALL (QCAR |qr|) (QVELT |s2| 0) (QREFELT $ 26)) - (QREFELT $ 27)) - (SPADCALL (QVELT |s1| 1) - (SPADCALL (QCAR |qr|) (QVELT |s2| 1) (QREFELT $ 26)) - (QREFELT $ 27)) - (QCDR |qr|)) - |EUCDOM-;extendedEuclidean;2SR;7|) - (LETT |s1| |s2| |EUCDOM-;extendedEuclidean;2SR;7|) - (EXIT - (LETT |s2| - (|EUCDOM-;unitNormalizeIdealElt| |s3| $) - |EUCDOM-;extendedEuclidean;2SR;7|))) - NIL - (GO G190) - G191 - (EXIT NIL)) - (COND - ((NULL (SPADCALL (QVELT |s1| 0) (QREFELT $ 8))) - (COND - ((NULL (SPADCALL (QVELT |s1| 0) |y| (QREFELT $ 28))) - (SEQ - (LETT |qr| - (SPADCALL (QVELT |s1| 0) |y| (QREFELT $ 13)) - |EUCDOM-;extendedEuclidean;2SR;7|) - (QSETVELT |s1| 0 (QCDR |qr|)) - (QSETVELT |s1| 1 - (SPADCALL (QVELT |s1| 1) - (SPADCALL (QCAR |qr|) |x| (QREFELT $ 26)) (QREFELT $ 29))) - (EXIT - (LETT |s1| - (|EUCDOM-;unitNormalizeIdealElt| |s1| $) - |EUCDOM-;extendedEuclidean;2SR;7|))))))) - (EXIT |s1|))))))))) - -@ -\subsubsection{EUCDOM-;extendedEuclidean;3SU;8} -<>= -(DEFUN |EUCDOM-;extendedEuclidean;3SU;8| (|x| |y| |z| $) - (PROG (|s| |w| |qr|) - (RETURN - (SEQ - (COND - ((SPADCALL |z| (QREFELT $ 8)) - (CONS 0 (CONS (|spadConstant| $ 16) (|spadConstant| $ 16)))) - ((QUOTE T) - (SEQ - (LETT |s| - (SPADCALL |x| |y| (QREFELT $ 32)) - |EUCDOM-;extendedEuclidean;3SU;8|) - (LETT |w| - (SPADCALL |z| (QVELT |s| 2) (QREFELT $ 33)) - |EUCDOM-;extendedEuclidean;3SU;8|) - (EXIT - (COND - ((QEQCAR |w| 1) (CONS 1 "failed")) - ((SPADCALL |y| (QREFELT $ 8)) - (CONS 0 - (CONS (SPADCALL (QVELT |s| 0) (QCDR |w|) (QREFELT $ 26)) - (SPADCALL (QVELT |s| 1) (QCDR |w|) (QREFELT $ 26))))) - ((QUOTE T) - (SEQ - (LETT |qr| - (SPADCALL - (SPADCALL (QVELT |s| 0) (QCDR |w|) (QREFELT $ 26)) - |y| - (QREFELT $ 13)) - |EUCDOM-;extendedEuclidean;3SU;8|) - (EXIT - (CONS 0 - (CONS (QCDR |qr|) - (SPADCALL - (SPADCALL (QVELT |s| 1) (QCDR |w|) (QREFELT $ 26)) - (SPADCALL (QCAR |qr|) |x| (QREFELT $ 26)) - (QREFELT $ 29)))))))))))))))) - -@ -\subsubsection{EUCDOM-;principalIdeal;LR;9} -<>= -(DEFUN |EUCDOM-;principalIdeal;LR;9| (|l| $) - (PROG (|uca| |v| |u| #0=#:G1497 |vv| #1=#:G1498) - (RETURN - (SEQ - (COND - ((SPADCALL |l| NIL (QREFELT $ 38)) - (|error| "empty list passed to principalIdeal")) - ((SPADCALL (CDR |l|) NIL (QREFELT $ 38)) - (SEQ - (LETT |uca| - (SPADCALL (|SPADfirst| |l|) (QREFELT $ 23)) - |EUCDOM-;principalIdeal;LR;9|) - (EXIT (CONS (LIST (QVELT |uca| 0)) (QVELT |uca| 1))))) - ((SPADCALL (CDR (CDR |l|)) NIL (QREFELT $ 38)) - (SEQ - (LETT |u| - (SPADCALL (|SPADfirst| |l|) - (SPADCALL |l| (QREFELT $ 39)) (QREFELT $ 32)) - |EUCDOM-;principalIdeal;LR;9|) - (EXIT (CONS (LIST (QVELT |u| 0) (QVELT |u| 1)) (QVELT |u| 2))))) - ((QUOTE T) - (SEQ - (LETT |v| - (SPADCALL (CDR |l|) (QREFELT $ 42)) - |EUCDOM-;principalIdeal;LR;9|) - (LETT |u| - (SPADCALL (|SPADfirst| |l|) (QCDR |v|) (QREFELT $ 32)) - |EUCDOM-;principalIdeal;LR;9|) - (EXIT - (CONS - (CONS (QVELT |u| 0) - (PROGN - (LETT #0# NIL |EUCDOM-;principalIdeal;LR;9|) - (SEQ - (LETT |vv| NIL |EUCDOM-;principalIdeal;LR;9|) - (LETT #1# (QCAR |v|) |EUCDOM-;principalIdeal;LR;9|) - G190 - (COND - ((OR (ATOM #1#) - (PROGN - (LETT |vv| (CAR #1#) |EUCDOM-;principalIdeal;LR;9|) NIL)) - (GO G191))) - (SEQ - (EXIT - (LETT #0# - (CONS (SPADCALL (QVELT |u| 1) |vv| (QREFELT $ 26)) - #0#) - |EUCDOM-;principalIdeal;LR;9|))) - (LETT #1# (CDR #1#) - |EUCDOM-;principalIdeal;LR;9|) - (GO G190) - G191 - (EXIT (NREVERSE0 #0#))))) - (QVELT |u| 2)))))))))) - -@ -\subsubsection{EUCDOM-;expressIdealMember;LSU;10} -<>= -(DEFUN |EUCDOM-;expressIdealMember;LSU;10| (|l| |z| $) - (PROG (#0=#:G1513 #1=#:G1514 |pid| |q| #2=#:G1515 |v| #3=#:G1516) - (RETURN - (SEQ - (COND - ((SPADCALL |z| (|spadConstant| $ 16) (QREFELT $ 25)) - (CONS 0 - (PROGN - (LETT #0# NIL |EUCDOM-;expressIdealMember;LSU;10|) - (SEQ - (LETT |v| NIL |EUCDOM-;expressIdealMember;LSU;10|) - (LETT #1# |l| |EUCDOM-;expressIdealMember;LSU;10|) - G190 - (COND - ((OR (ATOM #1#) - (PROGN - (LETT |v| (CAR #1#) |EUCDOM-;expressIdealMember;LSU;10|) NIL)) - (GO G191))) - (SEQ - (EXIT - (LETT #0# - (CONS (|spadConstant| $ 16) #0#) - |EUCDOM-;expressIdealMember;LSU;10|))) - (LETT #1# (CDR #1#) |EUCDOM-;expressIdealMember;LSU;10|) - (GO G190) - G191 - (EXIT (NREVERSE0 #0#)))))) - ((QUOTE T) - (SEQ - (LETT |pid| - (SPADCALL |l| (QREFELT $ 42)) - |EUCDOM-;expressIdealMember;LSU;10|) - (LETT |q| - (SPADCALL |z| (QCDR |pid|) (QREFELT $ 33)) - |EUCDOM-;expressIdealMember;LSU;10|) - (EXIT - (COND - ((QEQCAR |q| 1) (CONS 1 "failed")) - ((QUOTE T) - (CONS 0 - (PROGN - (LETT #2# NIL |EUCDOM-;expressIdealMember;LSU;10|) - (SEQ - (LETT |v| NIL |EUCDOM-;expressIdealMember;LSU;10|) - (LETT #3# (QCAR |pid|) |EUCDOM-;expressIdealMember;LSU;10|) - G190 - (COND - ((OR (ATOM #3#) - (PROGN - (LETT |v| (CAR #3#) |EUCDOM-;expressIdealMember;LSU;10|) - NIL)) - (GO G191))) - (SEQ - (EXIT - (LETT #2# - (CONS (SPADCALL (QCDR |q|) |v| (QREFELT $ 26)) - #2#) - |EUCDOM-;expressIdealMember;LSU;10|))) - (LETT #3# (CDR #3#) |EUCDOM-;expressIdealMember;LSU;10|) - (GO G190) - G191 - (EXIT (NREVERSE0 #2#))))))))))))))) - -@ -\subsubsection{EUCDOM-;multiEuclidean;LSU;11} -<>= -(DEFUN |EUCDOM-;multiEuclidean;LSU;11| (|l| |z| $) - (PROG (|n| |l1| |l2| #0=#:G1405 #1=#:G1535 #2=#:G1522 #3=#:G1520 - #4=#:G1521 #5=#:G1406 #6=#:G1536 #7=#:G1525 #8=#:G1523 #9=#:G1524 - |u| |v1| |v2|) - (RETURN - (SEQ - (LETT |n| (LENGTH |l|) |EUCDOM-;multiEuclidean;LSU;11|) - (EXIT - (COND - ((ZEROP |n|) (|error| "empty list passed to multiEuclidean")) - ((EQL |n| 1) (CONS 0 (LIST |z|))) - ((QUOTE T) - (SEQ - (LETT |l1| - (SPADCALL |l| (QREFELT $ 46)) |EUCDOM-;multiEuclidean;LSU;11|) - (LETT |l2| - (SPADCALL |l1| (QUOTIENT2 |n| 2) (QREFELT $ 48)) - |EUCDOM-;multiEuclidean;LSU;11|) - (LETT |u| - (SPADCALL - (PROGN - (LETT #4# NIL |EUCDOM-;multiEuclidean;LSU;11|) - (SEQ - (LETT #0# NIL |EUCDOM-;multiEuclidean;LSU;11|) - (LETT #1# |l1| |EUCDOM-;multiEuclidean;LSU;11|) - G190 - (COND - ((OR (ATOM #1#) - (PROGN - (LETT #0# (CAR #1#) |EUCDOM-;multiEuclidean;LSU;11|) - NIL)) - (GO G191))) - (SEQ - (EXIT - (PROGN - (LETT #2# #0# |EUCDOM-;multiEuclidean;LSU;11|) - (COND - (#4# - (LETT #3# - (SPADCALL #3# #2# (QREFELT $ 26)) - |EUCDOM-;multiEuclidean;LSU;11|)) - ((QUOTE T) - (PROGN - (LETT #3# #2# |EUCDOM-;multiEuclidean;LSU;11|) - (LETT #4# (QUOTE T) |EUCDOM-;multiEuclidean;LSU;11|))))))) - (LETT #1# (CDR #1#) |EUCDOM-;multiEuclidean;LSU;11|) - (GO G190) - G191 - (EXIT NIL)) - (COND (#4# #3#) ((QUOTE T) (|spadConstant| $ 24)))) - (PROGN - (LETT #9# NIL |EUCDOM-;multiEuclidean;LSU;11|) - (SEQ - (LETT #5# NIL |EUCDOM-;multiEuclidean;LSU;11|) - (LETT #6# |l2| |EUCDOM-;multiEuclidean;LSU;11|) - G190 - (COND - ((OR (ATOM #6#) - (PROGN - (LETT #5# (CAR #6#) |EUCDOM-;multiEuclidean;LSU;11|) - NIL)) - (GO G191))) - (SEQ - (EXIT - (PROGN - (LETT #7# #5# |EUCDOM-;multiEuclidean;LSU;11|) - (COND - (#9# - (LETT #8# - (SPADCALL #8# #7# (QREFELT $ 26)) - |EUCDOM-;multiEuclidean;LSU;11|)) - ((QUOTE T) - (PROGN - (LETT #8# #7# |EUCDOM-;multiEuclidean;LSU;11|) - (LETT #9# (QUOTE T) |EUCDOM-;multiEuclidean;LSU;11|))))))) - (LETT #6# (CDR #6#) |EUCDOM-;multiEuclidean;LSU;11|) - (GO G190) - G191 - (EXIT NIL)) - (COND (#9# #8#) ((QUOTE T) (|spadConstant| $ 24)))) - |z| (QREFELT $ 49)) - |EUCDOM-;multiEuclidean;LSU;11|) - (EXIT - (COND - ((QEQCAR |u| 1) (CONS 1 "failed")) - ((QUOTE T) - (SEQ - (LETT |v1| - (SPADCALL |l1| (QCDR (QCDR |u|)) (QREFELT $ 50)) - |EUCDOM-;multiEuclidean;LSU;11|) - (EXIT - (COND - ((QEQCAR |v1| 1) (CONS 1 "failed")) - ((QUOTE T) - (SEQ - (LETT |v2| - (SPADCALL |l2| (QCAR (QCDR |u|)) (QREFELT $ 50)) - |EUCDOM-;multiEuclidean;LSU;11|) - (EXIT - (COND - ((QEQCAR |v2| 1) (CONS 1 "failed")) - ((QUOTE T) - (CONS 0 - (SPADCALL - (QCDR |v1|) - (QCDR |v2|) - (QREFELT $ 51)))))))))))))))))))))) - -@ -\subsubsection{EuclideanDomain\&} -<>= -(DEFUN |EuclideanDomain&| (|#1|) - (PROG (DV$1 |dv$| $ |pv$|) - (RETURN - (PROGN - (LETT DV$1 (|devaluate| |#1|) . #0=(|EuclideanDomain&|)) - (LETT |dv$| (LIST (QUOTE |EuclideanDomain&|) DV$1) . #0#) - (LETT $ (GETREFV 53) . #0#) - (QSETREFV $ 0 |dv$|) - (QSETREFV $ 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #0#)) - (|stuffDomainSlots| $) - (QSETREFV $ 6 |#1|) - $)))) - -@ -\subsubsection{EUCDOM-;MAKEPROP} -<>= -(MAKEPROP - (QUOTE |EuclideanDomain&|) - (QUOTE |infovec|) - (LIST - (QUOTE #(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|Boolean|) (0 . |zero?|) - (|NonNegativeInteger|) (5 . |euclideanSize|) |EUCDOM-;sizeLess?;2SB;1| - (|Record| (|:| |quotient| $) (|:| |remainder| $)) (10 . |divide|) - |EUCDOM-;quo;3S;2| |EUCDOM-;rem;3S;3| (16 . |Zero|) - (|Union| $ (QUOTE "failed")) |EUCDOM-;exquo;2SU;4| (20 . |unitCanonical|) - (25 . |rem|) |EUCDOM-;gcd;3S;5| - (|Record| (|:| |unit| $) (|:| |canonical| $) (|:| |associate| $)) - (31 . |unitNormal|) (36 . |One|) (40 . =) (46 . *) (52 . -) - (58 . |sizeLess?|) (64 . +) - (|Record| (|:| |coef1| $) (|:| |coef2| $) (|:| |generator| $)) - |EUCDOM-;extendedEuclidean;2SR;7| - (70 . |extendedEuclidean|) (76 . |exquo|) - (|Record| (|:| |coef1| $) (|:| |coef2| $)) - (|Union| 34 (QUOTE "failed")) |EUCDOM-;extendedEuclidean;3SU;8| - (|List| 6) (82 . =) (88 . |second|) - (|Record| (|:| |coef| 41) (|:| |generator| $)) - (|List| $) (93 . |principalIdeal|) |EUCDOM-;principalIdeal;LR;9| - (|Union| 41 (QUOTE "failed")) |EUCDOM-;expressIdealMember;LSU;10| - (98 . |copy|) (|Integer|) (103 . |split!|) (109 . |extendedEuclidean|) - (116 . |multiEuclidean|) (122 . |concat|) |EUCDOM-;multiEuclidean;LSU;11|)) - (QUOTE - #(|sizeLess?| 128 |rem| 134 |quo| 140 |principalIdeal| 146 - |multiEuclidean| 151 |gcd| 157 |extendedEuclidean| 163 - |exquo| 176 |expressIdealMember| 182)) - (QUOTE NIL) - (CONS (|makeByteWordVec2| 1 (QUOTE NIL)) - (CONS (QUOTE #()) - (CONS (QUOTE #()) - (|makeByteWordVec2| 52 (QUOTE (1 6 7 0 8 1 6 9 0 10 2 6 12 0 0 13 0 - 6 0 16 1 6 0 0 19 2 6 0 0 0 20 1 6 22 0 23 0 6 0 24 2 6 7 0 0 25 2 6 0 - 0 0 26 2 6 0 0 0 27 2 6 7 0 0 28 2 6 0 0 0 29 2 6 30 0 0 32 2 6 17 0 0 - 33 2 37 7 0 0 38 1 37 6 0 39 1 6 40 41 42 1 37 0 0 46 2 37 0 0 47 48 3 - 6 35 0 0 0 49 2 6 44 41 0 50 2 37 0 0 0 51 2 0 7 0 0 11 2 0 0 0 0 15 2 - 0 0 0 0 14 1 0 40 41 43 2 0 44 41 0 52 2 0 0 0 0 21 3 0 35 0 0 0 36 2 0 - 30 0 0 31 2 0 17 0 0 18 2 0 44 41 0 45)))))) - (QUOTE |lookupComplete|))) - -@ -<>= - -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -@ -\section{category FIELD Field} -<>= -"FIELD" -> "EUCDOM" -"Field()" -> "EuclideanDomain()" -"FIELD" -> "UFD" -"Field()" -> "UniqueFactorizationDomain()" -"FIELD" -> "DIVRING" -"Field()" -> "DivisionRing()" -@ -<>= -)abbrev category FIELD Field -++ Author: -++ Date Created: -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: -++ Description: -++ The category of commutative fields, i.e. commutative rings -++ where all non-zero elements have multiplicative inverses. -++ The \spadfun{factor} operation while trivial is useful to have defined. -++ -++ Axioms: -++ \spad{a*(b/a) = b} -++ \spad{inv(a) = 1/a} - -Field(): Category == Join(EuclideanDomain,UniqueFactorizationDomain, - DivisionRing) with - --operations - "/": (%,%) -> % - ++ x/y divides the element x by the element y. - ++ Error: if y is 0. - canonicalUnitNormal ++ either 0 or 1. - canonicalsClosed ++ since \spad{0*0=0}, \spad{1*1=1} - add - --declarations - x,y: % - n: Integer - -- definitions - UCA ==> Record(unit:%,canonical:%,associate:%) - unitNormal(x) == - if zero? x then [1$%,0$%,1$%]$UCA else [x,1$%,inv(x)]$UCA - unitCanonical(x) == if zero? x then x else 1 - associates?(x,y) == if zero? x then zero? y else not(zero? y) - inv x ==((u:=recip x) case "failed" => error "not invertible"; u) - x exquo y == (y=0 => "failed"; x / y) - gcd(x,y) == 1 - euclideanSize(x) == 0 - prime? x == false - squareFree x == x::Factored(%) - factor x == x::Factored(%) - x / y == (zero? y => error "catdef: division by zero"; x * inv(y)) - divide(x,y) == [x / y,0] - -@ -\section{category FLINEXP FullyLinearlyExplicitRingOver} -<>= -"FLINEXP" -> "LINEXP" -"FullyLinearlyExplicitRingOver(a:Ring)" -> "LinearlyExplicitRingOver(a:Ring)" -"FullyLinearlyExplicitRingOver(a:CommutativeRing)" -> - "FullyLinearlyExplicitRingOver(a:Ring)" -@ -<>= -)abbrev category FLINEXP FullyLinearlyExplicitRingOver -++ Author: -++ Date Created: -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: -++ Description: -++ S is \spadtype{FullyLinearlyExplicitRingOver R} means that S is a -++ \spadtype{LinearlyExplicitRingOver R} and, in addition, if R is a -++ \spadtype{LinearlyExplicitRingOver Integer}, then so is S -FullyLinearlyExplicitRingOver(R:Ring):Category == - LinearlyExplicitRingOver R with - if (R has LinearlyExplicitRingOver Integer) then - LinearlyExplicitRingOver Integer - add - if not(R is Integer) then - if (R has LinearlyExplicitRingOver Integer) then - reducedSystem(m:Matrix %):Matrix(Integer) == - reducedSystem(reducedSystem(m)@Matrix(R)) - - reducedSystem(m:Matrix %, v:Vector %): - Record(mat:Matrix(Integer), vec:Vector(Integer)) == - rec := reducedSystem(m, v)@Record(mat:Matrix R, vec:Vector R) - reducedSystem(rec.mat, rec.vec) - -@ -\section{category GCDDOM GcdDomain} -<>= -"GCDDOM" -> "INTDOM" -"GcdDomain()" -> "IntegralDomain()" -@ -<>= -)abbrev category GCDDOM GcdDomain -++ Author: -++ Date Created: -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: Davenport & Trager 1 -++ Description: -++ This category describes domains where -++ \spadfun{gcd} can be computed but where there is no guarantee -++ of the existence of \spadfun{factor} operation for factorisation into irreducibles. -++ However, if such a \spadfun{factor} operation exist, factorization will be -++ unique up to order and units. - -GcdDomain(): Category == IntegralDomain with - --operations - gcd: (%,%) -> % - ++ gcd(x,y) returns the greatest common divisor of x and y. - -- gcd(x,y) = gcd(y,x) in the presence of canonicalUnitNormal, - -- but not necessarily elsewhere - gcd: List(%) -> % - ++ gcd(l) returns the common gcd of the elements in the list l. - lcm: (%,%) -> % - ++ lcm(x,y) returns the least common multiple of x and y. - -- lcm(x,y) = lcm(y,x) in the presence of canonicalUnitNormal, - -- but not necessarily elsewhere - lcm: List(%) -> % - ++ lcm(l) returns the least common multiple of the elements of the list l. - gcdPolynomial: (SparseUnivariatePolynomial %, SparseUnivariatePolynomial %) -> - SparseUnivariatePolynomial % - ++ gcdPolynomial(p,q) returns the greatest common divisor (gcd) of - ++ univariate polynomials over the domain - add - lcm(x: %,y: %) == - y = 0 => 0 - x = 0 => 0 - LCM : Union(%,"failed") := y exquo gcd(x,y) - LCM case % => x * LCM - error "bad gcd in lcm computation" - lcm(l:List %) == reduce(lcm,l,1,0) - gcd(l:List %) == reduce(gcd,l,0,1) - SUP ==> SparseUnivariatePolynomial - gcdPolynomial(p1,p2) == - zero? p1 => unitCanonical p2 - zero? p2 => unitCanonical p1 - c1:= content(p1); c2:= content(p2) - p1:= (p1 exquo c1)::SUP % - p2:= (p2 exquo c2)::SUP % - if (e1:=minimumDegree p1) > 0 then p1:=(p1 exquo monomial(1,e1))::SUP % - if (e2:=minimumDegree p2) > 0 then p2:=(p2 exquo monomial(1,e2))::SUP % - e1:=min(e1,e2); c1:=gcd(c1,c2) - p1:= - degree p1 = 0 or degree p2 = 0 => monomial(c1,0) - p:= subResultantGcd(p1,p2) - degree p = 0 => monomial(c1,0) - c2:= gcd(leadingCoefficient p1,leadingCoefficient p2) - unitCanonical(c1 * primitivePart(((c2*p) exquo leadingCoefficient p)::SUP %)) - zero? e1 => p1 - monomial(1,e1)*p1 - -@ -\section{GCDDOM.lsp BOOTSTRAP} -{\bf GCDDOM} needs -{\bf COMRING} which needs -{\bf RING} which needs -{\bf RNG} which needs -{\bf ABELGRP} which needs -{\bf CABMON} which needs -{\bf ABELMON} which needs -{\bf ABELSG} which needs -{\bf SETCAT} which needs -{\bf SINT} which needs -{\bf UFD} which needs -{\bf GCDDOM}. -We break this chain with {\bf GCDDOM.lsp} which we -cache here. We need to break this cycle to build -the algebra. So we keep a cached copy of the translated {\bf GCDDOM} -category which we can write into the {\bf MID} directory. We compile -the lisp code and copy the {\bf GCDDOM.o} file to the {\bf OUT} directory. -This is eventually forcibly replaced by a recompiled version. - -Note that this code is not included in the generated catdef.spad file. - -<>= - -(|/VERSIONCHECK| 2) - -(SETQ |GcdDomain;AL| (QUOTE NIL)) - -(DEFUN |GcdDomain| NIL - (LET (#:G83171) - (COND - (|GcdDomain;AL|) - (T (SETQ |GcdDomain;AL| (|GcdDomain;|)))))) - -(DEFUN |GcdDomain;| NIL - (PROG (#1=#:G83169) - (RETURN - (PROG1 - (LETT #1# - (|Join| - (|IntegralDomain|) - (|mkCategory| - (QUOTE |domain|) - (QUOTE ( - ((|gcd| (|$| |$| |$|)) T) - ((|gcd| (|$| (|List| |$|))) T) - ((|lcm| (|$| |$| |$|)) T) - ((|lcm| (|$| (|List| |$|))) T) - ((|gcdPolynomial| - ((|SparseUnivariatePolynomial| |$|) - (|SparseUnivariatePolynomial| |$|) - (|SparseUnivariatePolynomial| |$|))) - T))) - NIL - (QUOTE ((|SparseUnivariatePolynomial| |$|) (|List| |$|))) - NIL)) - |GcdDomain|) - (SETELT #1# 0 (QUOTE (|GcdDomain|))))))) - -(MAKEPROP (QUOTE |GcdDomain|) (QUOTE NILADIC) T) - -@ -\section{GCDDOM-.lsp BOOTSTRAP} -{\bf GCDDOM-} depends on {\bf GCDDOM}. -We break this chain with {\bf GCDDOM-.lsp} which we -cache here. We need to break this cycle to build -the algebra. So we keep a cached copy of the translated {\bf GCDDOM-} -category which we can write into the {\bf MID} directory. We compile -the lisp code and copy the {\bf GCDDOM-.o} file to the {\bf OUT} directory. -This is eventually forcibly replaced by a recompiled version. - -Note that this code is not included in the generated catdef.spad file. - -<>= - -(|/VERSIONCHECK| 2) - -(DEFUN |GCDDOM-;lcm;3S;1| (|x| |y| |$|) - (PROG (LCM) - (RETURN - (SEQ - (COND - ((OR - (SPADCALL |y| (|spadConstant| |$| 7) (QREFELT |$| 9)) - (SPADCALL |x| (|spadConstant| |$| 7) (QREFELT |$| 9))) - (|spadConstant| |$| 7)) - ((QUOTE T) - (SEQ - (LETT LCM - (SPADCALL |y| - (SPADCALL |x| |y| (QREFELT |$| 10)) - (QREFELT |$| 12)) - |GCDDOM-;lcm;3S;1|) - (EXIT - (COND - ((QEQCAR LCM 0) (SPADCALL |x| (QCDR LCM) (QREFELT |$| 13))) - ((QUOTE T) (|error| "bad gcd in lcm computation"))))))))))) - -(DEFUN |GCDDOM-;lcm;LS;2| (|l| |$|) - (SPADCALL - (ELT |$| 15) - |l| - (|spadConstant| |$| 16) - (|spadConstant| |$| 7) - (QREFELT |$| 19))) - -(DEFUN |GCDDOM-;gcd;LS;3| (|l| |$|) - (SPADCALL - (ELT |$| 10) - |l| - (|spadConstant| |$| 7) - (|spadConstant| |$| 16) - (QREFELT |$| 19))) - -(DEFUN |GCDDOM-;gcdPolynomial;3Sup;4| (|p1| |p2| |$|) - (PROG (|e2| |e1| |c1| |p| |c2| #1=#:G83191) - (RETURN - (SEQ - (COND - ((SPADCALL |p1| (QREFELT |$| 24)) (SPADCALL |p2| (QREFELT |$| 25))) - ((SPADCALL |p2| (QREFELT |$| 24)) (SPADCALL |p1| (QREFELT |$| 25))) - ((QUOTE T) - (SEQ - (LETT |c1| - (SPADCALL |p1| (QREFELT |$| 26)) - |GCDDOM-;gcdPolynomial;3Sup;4|) - (LETT |c2| - (SPADCALL |p2| (QREFELT |$| 26)) - |GCDDOM-;gcdPolynomial;3Sup;4|) - (LETT |p1| - (PROG2 - (LETT #1# - (SPADCALL |p1| |c1| (QREFELT |$| 27)) - |GCDDOM-;gcdPolynomial;3Sup;4|) - (QCDR #1#) - (|check-union| - (QEQCAR #1# 0) - (|SparseUnivariatePolynomial| (QREFELT |$| 6)) - #1#)) - |GCDDOM-;gcdPolynomial;3Sup;4|) - (LETT |p2| - (PROG2 - (LETT #1# - (SPADCALL |p2| |c2| (QREFELT |$| 27)) - |GCDDOM-;gcdPolynomial;3Sup;4|) - (QCDR #1#) - (|check-union| - (QEQCAR #1# 0) - (|SparseUnivariatePolynomial| (QREFELT |$| 6)) - #1#)) - |GCDDOM-;gcdPolynomial;3Sup;4|) - (SEQ - (LETT |e1| - (SPADCALL |p1| (QREFELT |$| 29)) - |GCDDOM-;gcdPolynomial;3Sup;4|) - (EXIT - (COND - ((|<| 0 |e1|) - (LETT |p1| - (PROG2 - (LETT #1# - (SPADCALL |p1| - (SPADCALL - (|spadConstant| |$| 16) |e1| (QREFELT |$| 32)) - (QREFELT |$| 33)) - |GCDDOM-;gcdPolynomial;3Sup;4|) - (QCDR #1#) - (|check-union| - (QEQCAR #1# 0) - (|SparseUnivariatePolynomial| (QREFELT |$| 6)) - #1#)) - |GCDDOM-;gcdPolynomial;3Sup;4|))))) - (SEQ - (LETT |e2| - (SPADCALL |p2| (QREFELT |$| 29)) - |GCDDOM-;gcdPolynomial;3Sup;4|) - (EXIT - (COND - ((|<| 0 |e2|) - (LETT |p2| - (PROG2 - (LETT #1# - (SPADCALL |p2| - (SPADCALL - (|spadConstant| |$| 16) - |e2| - (QREFELT |$| 32)) - (QREFELT |$| 33)) - |GCDDOM-;gcdPolynomial;3Sup;4|) - (QCDR #1#) - (|check-union| - (QEQCAR #1# 0) - (|SparseUnivariatePolynomial| (QREFELT |$| 6)) - #1#)) - |GCDDOM-;gcdPolynomial;3Sup;4|))))) - (LETT |e1| - (MIN |e1| |e2|) - |GCDDOM-;gcdPolynomial;3Sup;4|) - (LETT |c1| - (SPADCALL |c1| |c2| (QREFELT |$| 10)) - |GCDDOM-;gcdPolynomial;3Sup;4|) - (LETT |p1| - (COND - ((OR - (EQL (SPADCALL |p1| (QREFELT |$| 34)) 0) - (EQL (SPADCALL |p2| (QREFELT |$| 34)) 0)) - (SPADCALL |c1| 0 (QREFELT |$| 32))) - ((QUOTE T) - (SEQ - (LETT |p| - (SPADCALL |p1| |p2| (QREFELT |$| 35)) - |GCDDOM-;gcdPolynomial;3Sup;4|) - (EXIT - (COND - ((EQL (SPADCALL |p| (QREFELT |$| 34)) 0) - (SPADCALL |c1| 0 (QREFELT |$| 32))) - ((QUOTE T) - (SEQ - (LETT |c2| - (SPADCALL - (SPADCALL |p1| (QREFELT |$| 36)) - (SPADCALL |p2| (QREFELT |$| 36)) - (QREFELT |$| 10)) - |GCDDOM-;gcdPolynomial;3Sup;4|) - (EXIT - (SPADCALL - (SPADCALL |c1| - (SPADCALL - (PROG2 - (LETT #1# - (SPADCALL - (SPADCALL - |c2| - |p| - (QREFELT |$| 37)) - (SPADCALL |p| (QREFELT |$| 36)) - (QREFELT |$| 27)) - |GCDDOM-;gcdPolynomial;3Sup;4|) - (QCDR #1#) - (|check-union| - (QEQCAR #1# 0) - (|SparseUnivariatePolynomial| - (QREFELT |$| 6)) - #1#)) - (QREFELT |$| 38)) - (QREFELT |$| 37)) - (QREFELT |$| 25)))))))))) - |GCDDOM-;gcdPolynomial;3Sup;4|) - (EXIT (COND ((ZEROP |e1|) |p1|) ((QUOTE T) (SPADCALL (SPADCALL (|spadConstant| |$| 16) |e1| (QREFELT |$| 32)) |p1| (QREFELT |$| 39)))))))))))) - -(DEFUN |GcdDomain&| (|#1|) - (PROG (|DV$1| |dv$| |$| |pv$|) - (RETURN - (PROGN - (LETT |DV$1| (|devaluate| |#1|) . #1=(|GcdDomain&|)) - (LETT |dv$| (LIST (QUOTE |GcdDomain&|) |DV$1|) . #1#) - (LETT |$| (GETREFV 42) . #1#) - (QSETREFV |$| 0 |dv$|) - (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #1#)) - (|stuffDomainSlots| |$|) - (QSETREFV |$| 6 |#1|) - |$|)))) - -(MAKEPROP - (QUOTE |GcdDomain&|) - (QUOTE |infovec|) - (LIST - (QUOTE - #(NIL NIL NIL NIL NIL NIL - (|local| |#1|) - (0 . |Zero|) - (|Boolean|) - (4 . |=|) - (10 . |gcd|) - (|Union| |$| (QUOTE "failed")) - (16 . |exquo|) - (22 . |*|) - |GCDDOM-;lcm;3S;1| - (28 . |lcm|) - (34 . |One|) - (|Mapping| 6 6 6) - (|List| 6) - (38 . |reduce|) - (|List| |$|) - |GCDDOM-;lcm;LS;2| - |GCDDOM-;gcd;LS;3| - (|SparseUnivariatePolynomial| 6) - (46 . |zero?|) - (51 . |unitCanonical|) - (56 . |content|) - (61 . |exquo|) - (|NonNegativeInteger|) - (67 . |minimumDegree|) - (72 . |Zero|) - (76 . |One|) - (80 . |monomial|) - (86 . |exquo|) - (92 . |degree|) - (97 . |subResultantGcd|) - (103 . |leadingCoefficient|) - (108 . |*|) - (114 . |primitivePart|) - (119 . |*|) - (|SparseUnivariatePolynomial| |$|) - |GCDDOM-;gcdPolynomial;3Sup;4|)) - (QUOTE #(|lcm| 125 |gcdPolynomial| 136 |gcd| 142)) - (QUOTE NIL) - (CONS - (|makeByteWordVec2| 1 (QUOTE NIL)) - (CONS - (QUOTE #()) - (CONS - (QUOTE #()) - (|makeByteWordVec2| 41 - (QUOTE (0 6 0 7 2 6 8 0 0 9 2 6 0 0 0 10 2 6 11 0 0 12 2 6 0 0 0 - 13 2 6 0 0 0 15 0 6 0 16 4 18 6 17 0 6 6 19 1 23 8 0 24 - 1 23 0 0 25 1 23 6 0 26 2 23 11 0 6 27 1 23 28 0 29 0 23 - 0 30 0 23 0 31 2 23 0 6 28 32 2 23 11 0 0 33 1 23 28 0 - 34 2 23 0 0 0 35 1 23 6 0 36 2 23 0 6 0 37 1 23 0 0 38 2 - 23 0 0 0 39 1 0 0 20 21 2 0 0 0 0 14 2 0 40 40 40 41 1 0 - 0 20 22)))))) - (QUOTE |lookupComplete|))) - -@ -\section{category INTDOM IntegralDomain} -<>= -"INTDOM" -> "COMRING" -"IntegralDomain()" -> "CommutativeRing()" -"INTDOM" -> "ALGEBRA" -"IntegralDomain()" -> "Algebra(a:CommutativeRing)" -"INTDOM" -> "ENTIRER" -"IntegralDomain()" -> "EntireRing()" -@ -<>= -)abbrev category INTDOM IntegralDomain -++ Author: -++ Date Created: -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: Davenport & Trager I -++ Description: -++ The category of commutative integral domains, i.e. commutative -++ rings with no zero divisors. -++ -++ Conditional attributes: -++ canonicalUnitNormal\tab{20}the canonical field is the same for all associates -++ canonicalsClosed\tab{20}the product of two canonicals is itself canonical - -IntegralDomain(): Category == --- Join(CommutativeRing, Algebra(%:CommutativeRing), EntireRing) with - Join(CommutativeRing, Algebra(%), EntireRing) with - --operations - "exquo": (%,%) -> Union(%,"failed") - ++ exquo(a,b) either returns an element c such that - ++ \spad{c*b=a} or "failed" if no such element can be found. - unitNormal: % -> Record(unit:%,canonical:%,associate:%) - ++ unitNormal(x) tries to choose a canonical element - ++ from the associate class of x. - ++ The attribute canonicalUnitNormal, if asserted, means that - ++ the "canonical" element is the same across all associates of x - ++ if \spad{unitNormal(x) = [u,c,a]} then - ++ \spad{u*c = x}, \spad{a*u = 1}. - unitCanonical: % -> % - ++ \spad{unitCanonical(x)} returns \spad{unitNormal(x).canonical}. - associates?: (%,%) -> Boolean - ++ associates?(x,y) tests whether x and y are associates, i.e. - ++ differ by a unit factor. - unit?: % -> Boolean - ++ unit?(x) tests whether x is a unit, i.e. is invertible. - add - -- declaration - x,y: % - -- definitions - UCA ==> Record(unit:%,canonical:%,associate:%) - if not (% has Field) then - unitNormal(x) == [1$%,x,1$%]$UCA -- the non-canonical definition - unitCanonical(x) == unitNormal(x).canonical -- always true - recip(x) == if zero? x then "failed" else _exquo(1$%,x) - unit?(x) == (recip x case "failed" => false; true) - if % has canonicalUnitNormal then - associates?(x,y) == - (unitNormal x).canonical = (unitNormal y).canonical - else - associates?(x,y) == - zero? x => zero? y - zero? y => false - x exquo y case "failed" => false - y exquo x case "failed" => false - true - -@ -\section{INTDOM.lsp BOOTSTRAP} -{\bf INTDOM} depends on itself. We need to break this cycle to build -the algebra. So we keep a cached copy of the translated {\bf INTDOM} -category which we can write into the {\bf MID} directory. We compile -the lisp code and copy the {\bf INTDOM.o} file to the {\bf OUT} directory. -This is eventually forcibly replaced by a recompiled version. - -Note that this code is not included in the generated catdef.spad file. - -<>= - -(|/VERSIONCHECK| 2) - -(SETQ |IntegralDomain;AL| (QUOTE NIL)) - -(DEFUN |IntegralDomain| NIL - (LET (#:G83060) - (COND - (|IntegralDomain;AL|) - (T (SETQ |IntegralDomain;AL| (|IntegralDomain;|)))))) - -(DEFUN |IntegralDomain;| NIL - (PROG (#1=#:G83058) - (RETURN - (PROG1 - (LETT #1# - (|Join| - (|CommutativeRing|) - (|Algebra| (QUOTE |$|)) - (|EntireRing|) - (|mkCategory| - (QUOTE |domain|) - (QUOTE ( - ((|exquo| ((|Union| |$| "failed") |$| |$|)) T) - ((|unitNormal| - ((|Record| - (|:| |unit| |$|) - (|:| |canonical| |$|) - (|:| |associate| |$|)) |$|)) T) - ((|unitCanonical| (|$| |$|)) T) - ((|associates?| ((|Boolean|) |$| |$|)) T) - ((|unit?| ((|Boolean|) |$|)) T))) - NIL - (QUOTE ((|Boolean|))) - NIL)) - |IntegralDomain|) - (SETELT #1# 0 (QUOTE (|IntegralDomain|))))))) - -(MAKEPROP (QUOTE |IntegralDomain|) (QUOTE NILADIC) T) - -@ -\section{INTDOM-.lsp BOOTSTRAP} -{\bf INTDOM-} depends on {\bf INTDOM}. We need to break this cycle to build -the algebra. So we keep a cached copy of the translated {\bf INTDOM-} -category which we can write into the {\bf MID} directory. We compile -the lisp code and copy the {\bf INTDOM-.o} file to the {\bf OUT} directory. -This is eventually forcibly replaced by a recompiled version. - -Note that this code is not included in the generated catdef.spad file. - -<>= - -(|/VERSIONCHECK| 2) - -(DEFUN |INTDOM-;unitNormal;SR;1| (|x| |$|) - (VECTOR (|spadConstant| |$| 7) |x| (|spadConstant| |$| 7))) - -(DEFUN |INTDOM-;unitCanonical;2S;2| (|x| |$|) - (QVELT (SPADCALL |x| (QREFELT |$| 10)) 1)) - -(DEFUN |INTDOM-;recip;SU;3| (|x| |$|) - (COND - ((SPADCALL |x| (QREFELT |$| 13)) (CONS 1 "failed")) - ((QUOTE T) (SPADCALL (|spadConstant| |$| 7) |x| (QREFELT |$| 15))))) - -(DEFUN |INTDOM-;unit?;SB;4| (|x| |$|) - (COND - ((QEQCAR (SPADCALL |x| (QREFELT |$| 17)) 1) (QUOTE NIL)) - ((QUOTE T) (QUOTE T)))) - -(DEFUN |INTDOM-;associates?;2SB;5| (|x| |y| |$|) - (SPADCALL - (QVELT (SPADCALL |x| (QREFELT |$| 10)) 1) - (QVELT (SPADCALL |y| (QREFELT |$| 10)) 1) - (QREFELT |$| 19))) - -(DEFUN |INTDOM-;associates?;2SB;6| (|x| |y| |$|) - (COND - ((SPADCALL |x| (QREFELT |$| 13)) (SPADCALL |y| (QREFELT |$| 13))) - ((OR - (SPADCALL |y| (QREFELT |$| 13)) - (OR - (QEQCAR (SPADCALL |x| |y| (QREFELT |$| 15)) 1) - (QEQCAR (SPADCALL |y| |x| (QREFELT |$| 15)) 1))) - (QUOTE NIL)) - ((QUOTE T) (QUOTE T)))) - -(DEFUN |IntegralDomain&| (|#1|) - (PROG (|DV$1| |dv$| |$| |pv$|) - (RETURN - (PROGN - (LETT |DV$1| (|devaluate| |#1|) . #1=(|IntegralDomain&|)) - (LETT |dv$| (LIST (QUOTE |IntegralDomain&|) |DV$1|) . #1#) - (LETT |$| (GETREFV 21) . #1#) - (QSETREFV |$| 0 |dv$|) - (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #1#)) - (|stuffDomainSlots| |$|) - (QSETREFV |$| 6 |#1|) - (COND - ((|HasCategory| |#1| (QUOTE (|Field|)))) - ((QUOTE T) - (QSETREFV |$| 9 - (CONS (|dispatchFunction| |INTDOM-;unitNormal;SR;1|) |$|)))) - (COND - ((|HasAttribute| |#1| (QUOTE |canonicalUnitNormal|)) - (QSETREFV |$| 20 - (CONS (|dispatchFunction| |INTDOM-;associates?;2SB;5|) |$|))) - ((QUOTE T) - (QSETREFV |$| 20 - (CONS (|dispatchFunction| |INTDOM-;associates?;2SB;6|) |$|)))) - |$|)))) - -(MAKEPROP - (QUOTE |IntegralDomain&|) - (QUOTE |infovec|) - (LIST - (QUOTE - #(NIL NIL NIL NIL NIL NIL - (|local| |#1|) - (0 . |One|) - (|Record| (|:| |unit| |$|) (|:| |canonical| |$|) (|:| |associate| |$|)) - (4 . |unitNormal|) - (9 . |unitNormal|) - |INTDOM-;unitCanonical;2S;2| - (|Boolean|) - (14 . |zero?|) - (|Union| |$| (QUOTE "failed")) - (19 . |exquo|) - |INTDOM-;recip;SU;3| - (25 . |recip|) - |INTDOM-;unit?;SB;4| - (30 . |=|) - (36 . |associates?|))) - (QUOTE - #(|unitNormal| 42 |unitCanonical| 47 |unit?| 52 |recip| 57 - |associates?| 62)) - (QUOTE NIL) - (CONS - (|makeByteWordVec2| 1 (QUOTE NIL)) - (CONS - (QUOTE #()) - (CONS - (QUOTE #()) - (|makeByteWordVec2| 20 - (QUOTE - (0 6 0 7 1 0 8 0 9 1 6 8 0 10 1 6 12 0 13 2 6 14 0 0 15 1 6 14 - 0 17 2 6 12 0 0 19 2 0 12 0 0 20 1 0 8 0 9 1 0 0 0 11 1 0 12 0 - 18 1 0 14 0 16 2 0 12 0 0 20)))))) - (QUOTE |lookupComplete|))) - -@ -\section{category LINEXP LinearlyExplicitRingOver} -<>= -"LINEXP" -> "RING" -"LinearlyExplicitRingOver(a:Ring)" -> "Ring()" -"LinearlyExplicitRingOver(Integer)" -> "LinearlyExplicitRingOver(a:Ring)" -"LinearlyExplicitRingOver(Fraction(Integer))" -> - "LinearlyExplicitRingOver(a:Ring)" -@ -<>= -)abbrev category LINEXP LinearlyExplicitRingOver -++ Author: -++ Date Created: -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: -++ Description: -++ An extension ring with an explicit linear dependence test. -LinearlyExplicitRingOver(R:Ring): Category == Ring with - reducedSystem: Matrix % -> Matrix R - ++ reducedSystem(A) returns a matrix B such that \spad{A x = 0} and \spad{B x = 0} - ++ have the same solutions in R. - reducedSystem: (Matrix %,Vector %) -> Record(mat:Matrix R,vec:Vector R) - ++ reducedSystem(A, v) returns a matrix B and a vector w such that - ++ \spad{A x = v} and \spad{B x = w} have the same solutions in R. - -@ -\section{category MODULE Module} -<>= -"MODULE" -> "BMODULE" -"Module(a:CommutativeRing)" -> "BiModule(a:CommutativeRing,b:CommutativeRing)" -"Module(Field)" -> "Module(a:CommutativeRing)" -@ -<>= -)abbrev category MODULE Module -++ Author: -++ Date Created: -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: -++ Description: -++ The category of modules over a commutative ring. -++ -++ Axioms: -++ \spad{1*x = x} -++ \spad{(a*b)*x = a*(b*x)} -++ \spad{(a+b)*x = (a*x)+(b*x)} -++ \spad{a*(x+y) = (a*x)+(a*y)} -Module(R:CommutativeRing): Category == BiModule(R,R) - add - if not(R is %) then x:%*r:R == r*x - -@ -\section{category OINTDOM OrderedIntegralDomain} -<>= -"OINTDOM" -> "INTDOM" -"OrderedIntegralDomain()" -> "IntegralDomain()" -"OINTDOM" -> "ORDRING" -"OrderedIntegralDomain()" -> "OrderedRing()" -@ -<>= -)abbrev category OINTDOM OrderedIntegralDomain -++ Author: JH Davenport (after L Gonzalez-Vega) -++ Date Created: 30.1.96 -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ Description: -++ The category of ordered commutative integral domains, where ordering -++ and the arithmetic operations are compatible -++ - -OrderedIntegralDomain(): Category == - Join(IntegralDomain, OrderedRing) - -@ -\section{OINTDOM.lsp BOOTSTRAP} -{\bf OINTDOM} depends on itself. We need to break this cycle to build -the algebra. So we keep a cached copy of the translated {\bf OINTDOM} -category which we can write into the {\bf MID} directory. We compile -the lisp code and copy the {\bf OINTDOM.o} file to the {\bf OUT} directory. -This is eventually forcibly replaced by a recompiled version. - -Note that this code is not included in the generated catdef.spad file. - -<>= - -(|/VERSIONCHECK| 2) - -(SETQ |OrderedIntegralDomain;AL| (QUOTE NIL)) - -(DEFUN |OrderedIntegralDomain| NIL - (LET (#:G84531) - (COND - (|OrderedIntegralDomain;AL|) - (T (SETQ |OrderedIntegralDomain;AL| (|OrderedIntegralDomain;|)))))) - -(DEFUN |OrderedIntegralDomain;| NIL - (PROG (#1=#:G84529) - (RETURN - (PROG1 - (LETT #1# - (|Join| (|IntegralDomain|) (|OrderedRing|)) |OrderedIntegralDomain|) - (SETELT #1# 0 (QUOTE (|OrderedIntegralDomain|))))))) - -(MAKEPROP (QUOTE |OrderedIntegralDomain|) (QUOTE NILADIC) T) - -@ -\section{category PDRING PartialDifferentialRing} -<>= -"PDRING" -> "RING" -"PartialDifferentialRing(a:SetCategory)" -> "Ring()" -"PartialDifferentialRing(a:OrderedSet)" -> - "PartialDifferentialRing(a:SetCategory)" -@ -<>= -)abbrev category PDRING PartialDifferentialRing -++ Author: -++ Date Created: -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: -++ Description: -++ A partial differential ring with differentiations indexed by a parameter type S. -++ -++ Axioms: -++ \spad{differentiate(x+y,e) = differentiate(x,e)+differentiate(y,e)} -++ \spad{differentiate(x*y,e) = x*differentiate(y,e) + differentiate(x,e)*y} - -PartialDifferentialRing(S:SetCategory): Category == Ring with - differentiate: (%, S) -> % - ++ differentiate(x,v) computes the partial derivative of x - ++ with respect to v. - differentiate: (%, List S) -> % - ++ differentiate(x,[s1,...sn]) computes successive partial derivatives, - ++ i.e. \spad{differentiate(...differentiate(x, s1)..., sn)}. - differentiate: (%, S, NonNegativeInteger) -> % - ++ differentiate(x, s, n) computes multiple partial derivatives, i.e. - ++ n-th derivative of x with respect to s. - differentiate: (%, List S, List NonNegativeInteger) -> % - ++ differentiate(x, [s1,...,sn], [n1,...,nn]) computes - ++ multiple partial derivatives, i.e. - D: (%, S) -> % - ++ D(x,v) computes the partial derivative of x - ++ with respect to v. - D: (%, List S) -> % - ++ D(x,[s1,...sn]) computes successive partial derivatives, - ++ i.e. \spad{D(...D(x, s1)..., sn)}. - D: (%, S, NonNegativeInteger) -> % - ++ D(x, s, n) computes multiple partial derivatives, i.e. - ++ n-th derivative of x with respect to s. - D: (%, List S, List NonNegativeInteger) -> % - ++ D(x, [s1,...,sn], [n1,...,nn]) computes - ++ multiple partial derivatives, i.e. - ++ \spad{D(...D(x, s1, n1)..., sn, nn)}. - add - differentiate(r:%, l:List S) == - for s in l repeat r := differentiate(r, s) - r - - differentiate(r:%, s:S, n:NonNegativeInteger) == - for i in 1..n repeat r := differentiate(r, s) - r - - differentiate(r:%, ls:List S, ln:List NonNegativeInteger) == - for s in ls for n in ln repeat r := differentiate(r, s, n) - r - - D(r:%, v:S) == differentiate(r,v) - D(r:%, lv:List S) == differentiate(r,lv) - D(r:%, v:S, n:NonNegativeInteger) == differentiate(r,v,n) - D(r:%, lv:List S, ln:List NonNegativeInteger) == differentiate(r, lv, ln) - -@ -\section{category PFECAT PolynomialFactorizationExplicit} -<>= -"PFECAT" -> "UFD" -"PolynomialFactorizationExplicit()" -> "UniqueFactorizationDomain()" -@ -<>= -)abbrev category PFECAT PolynomialFactorizationExplicit -++ Author: James Davenport -++ Date Created: -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: -++ Description: -++ This is the category of domains that know "enough" about -++ themselves in order to factor univariate polynomials over themselves. -++ This will be used in future releases for supporting factorization -++ over finitely generated coefficient fields, it is not yet available -++ in the current release of axiom. - -PolynomialFactorizationExplicit(): Category == Definition where - P ==> SparseUnivariatePolynomial % - Definition ==> - UniqueFactorizationDomain with - -- operations - squareFreePolynomial: P -> Factored(P) - ++ squareFreePolynomial(p) returns the - ++ square-free factorization of the - ++ univariate polynomial p. - factorPolynomial: P -> Factored(P) - ++ factorPolynomial(p) returns the factorization - ++ into irreducibles of the univariate polynomial p. - factorSquareFreePolynomial: P -> Factored(P) - ++ factorSquareFreePolynomial(p) factors the - ++ univariate polynomial p into irreducibles - ++ where p is known to be square free - ++ and primitive with respect to its main variable. - gcdPolynomial: (P, P) -> P - ++ gcdPolynomial(p,q) returns the gcd of the univariate - ++ polynomials p qnd q. - -- defaults to Euclidean, but should be implemented via - -- modular or p-adic methods. - solveLinearPolynomialEquation: (List P, P) -> Union(List P,"failed") - ++ solveLinearPolynomialEquation([f1, ..., fn], g) - ++ (where the fi are relatively prime to each other) - ++ returns a list of ai such that - ++ \spad{g/prod fi = sum ai/fi} - ++ or returns "failed" if no such list of ai's exists. - if % has CharacteristicNonZero then - conditionP: Matrix % -> Union(Vector %,"failed") - ++ conditionP(m) returns a vector of elements, not all zero, - ++ whose \spad{p}-th powers (p is the characteristic of the domain) - ++ are a solution of the homogenous linear system represented - ++ by m, or "failed" is there is no such vector. - charthRoot: % -> Union(%,"failed") - ++ charthRoot(r) returns the \spad{p}-th root of r, or "failed" - ++ if none exists in the domain. - -- this is a special case of conditionP, but often the one we want - add - gcdPolynomial(f,g) == - zero? f => g - zero? g => f - cf:=content f - if not one? cf then f:=(f exquo cf)::P - cg:=content g - if not one? cg then g:=(g exquo cg)::P - ans:=subResultantGcd(f,g)$P - gcd(cf,cg)*(ans exquo content ans)::P - if % has CharacteristicNonZero then - charthRoot f == - -- to take p'th root of f, solve the system X-fY=0, - -- so solution is [x,y] - -- with x^p=X and y^p=Y, then (x/y)^p = f - zero? f => 0 - m:Matrix % := matrix [[1,-f]] - ans:= conditionP m - ans case "failed" => "failed" - (ans.1) exquo (ans.2) - if % has Field then - solveLinearPolynomialEquation(lf,g) == - multiEuclidean(lf,g)$P - else solveLinearPolynomialEquation(lf,g) == - LPE ==> LinearPolynomialEquationByFractions % - solveLinearPolynomialEquationByFractions(lf,g)$LPE - -@ -\section{category PID PrincipalIdealDomain} -<>= -"PID" -> "GCDDOM" -"PrincipalIdealDomain()" -> "GcdDomain()" -@ -<>= -)abbrev category PID PrincipalIdealDomain -++ Author: -++ Date Created: -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: -++ Description: -++ The category of constructive principal ideal domains, i.e. -++ where a single generator can be constructively found for -++ any ideal given by a finite set of generators. -++ Note that this constructive definition only implies that -++ finitely generated ideals are principal. It is not clear -++ what we would mean by an infinitely generated ideal. - -PrincipalIdealDomain(): Category == GcdDomain with - --operations - principalIdeal: List % -> Record(coef:List %,generator:%) - ++ principalIdeal([f1,...,fn]) returns a record whose - ++ generator component is a generator of the ideal - ++ generated by \spad{[f1,...,fn]} whose coef component satisfies - ++ \spad{generator = sum (input.i * coef.i)} - expressIdealMember: (List %,%) -> Union(List %,"failed") - ++ expressIdealMember([f1,...,fn],h) returns a representation - ++ of h as a linear combination of the fi or "failed" if h - ++ is not in the ideal generated by the fi. - -@ -\section{category UFD UniqueFactorizationDomain} -<>= -"UFD" -> "GCDDOM" -"UniqueFactorizationDomain()" -> "GcdDomain()" -@ -<>= -)abbrev category UFD UniqueFactorizationDomain -++ Author: -++ Date Created: -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: -++ Description: -++ A constructive unique factorization domain, i.e. where -++ we can constructively factor members into a product of -++ a finite number of irreducible elements. - -UniqueFactorizationDomain(): Category == GcdDomain with - --operations - prime?: % -> Boolean - ++ prime?(x) tests if x can never be written as the product of two - ++ non-units of the ring, - ++ i.e., x is an irreducible element. - squareFree : % -> Factored(%) - ++ squareFree(x) returns the square-free factorization of x - ++ i.e. such that the factors are pairwise relatively prime - ++ and each has multiple prime factors. - squareFreePart: % -> % - ++ squareFreePart(x) returns a product of prime factors of - ++ x each taken with multiplicity one. - factor: % -> Factored(%) - ++ factor(x) returns the factorization of x into irreducibles. - add - squareFreePart x == - unit(s := squareFree x) * _*/[f.factor for f in factors s] - - prime? x == # factorList factor x = 1 - -@ -\section{UFD.lsp BOOTSTRAP} -{\bf UFD} needs -{\bf GCDDOM} which needs -{\bf COMRING} which needs -{\bf RING} which needs -{\bf RNG} which needs -{\bf ABELGRP} which needs -{\bf CABMON} which needs -{\bf ABELMON} which needs -{\bf ABELSG} which needs -{\bf SETCAT} which needs -{\bf SINT} which needs -{\bf UFD}. -We need to break this cycle to build the algebra. So we keep a -cached copy of the translated {\bf UFD} category which we can write -into the {\bf MID} directory. We compile the lisp code and copy the -{\bf UFD.o} file to the {\bf OUT} directory. This is eventually -forcibly replaced by a recompiled version. - -Note that this code is not included in the generated catdef.spad file. - -<>= - -(|/VERSIONCHECK| 2) - -(SETQ |UniqueFactorizationDomain;AL| (QUOTE NIL)) - -(DEFUN |UniqueFactorizationDomain| NIL - (LET (#:G83334) - (COND - (|UniqueFactorizationDomain;AL|) - (T - (SETQ - |UniqueFactorizationDomain;AL| - (|UniqueFactorizationDomain;|)))))) - -(DEFUN |UniqueFactorizationDomain;| NIL - (PROG (#1=#:G83332) - (RETURN - (PROG1 - (LETT #1# - (|Join| - (|GcdDomain|) - (|mkCategory| - (QUOTE |domain|) - (QUOTE ( - ((|prime?| ((|Boolean|) |$|)) T) - ((|squareFree| ((|Factored| |$|) |$|)) T) - ((|squareFreePart| (|$| |$|)) T) - ((|factor| ((|Factored| |$|) |$|)) T))) - NIL - (QUOTE ((|Factored| |$|) (|Boolean|))) - NIL)) - |UniqueFactorizationDomain|) - (SETELT #1# 0 (QUOTE (|UniqueFactorizationDomain|))))))) - -(MAKEPROP (QUOTE |UniqueFactorizationDomain|) (QUOTE NILADIC) T) - -@ -\section{UFD-.lsp BOOTSTRAP} -{\bf UFD-} needs {\bf UFD}. -We need to break this cycle to build the algebra. So we keep a -cached copy of the translated {\bf UFD-} category which we can write -into the {\bf MID} directory. We compile the lisp code and copy the -{\bf UFD-.o} file to the {\bf OUT} directory. This is eventually -forcibly replaced by a recompiled version. - -Note that this code is not included in the generated catdef.spad file. - -<>= - -(|/VERSIONCHECK| 2) - -(DEFUN |UFD-;squareFreePart;2S;1| (|x| |$|) - (PROG (|s| |f| #1=#:G83349 #2=#:G83347 #3=#:G83345 #4=#:G83346) - (RETURN - (SEQ - (SPADCALL - (SPADCALL - (LETT |s| - (SPADCALL |x| (QREFELT |$| 8)) - |UFD-;squareFreePart;2S;1|) - (QREFELT |$| 10)) - (PROGN - (LETT #4# NIL |UFD-;squareFreePart;2S;1|) - (SEQ - (LETT |f| NIL |UFD-;squareFreePart;2S;1|) - (LETT #1# - (SPADCALL |s| (QREFELT |$| 13)) - |UFD-;squareFreePart;2S;1|) - G190 - (COND - ((OR - (ATOM #1#) - (PROGN - (LETT |f| (CAR #1#) |UFD-;squareFreePart;2S;1|) - NIL)) - (GO G191))) - (SEQ - (EXIT - (PROGN - (LETT #2# (QCAR |f|) |UFD-;squareFreePart;2S;1|) - (COND - (#4# - (LETT #3# - (SPADCALL #3# #2# (QREFELT |$| 14)) - |UFD-;squareFreePart;2S;1|)) - ((QUOTE T) - (PROGN - (LETT #3# #2# |UFD-;squareFreePart;2S;1|) - (LETT #4# (QUOTE T) |UFD-;squareFreePart;2S;1|))))))) - (LETT #1# (CDR #1#) |UFD-;squareFreePart;2S;1|) - (GO G190) - G191 - (EXIT NIL)) - (COND - (#4# #3#) - ((QUOTE T) (|spadConstant| |$| 15)))) - (QREFELT |$| 14)))))) - -(DEFUN |UFD-;prime?;SB;2| (|x| |$|) - (EQL - (LENGTH (SPADCALL (SPADCALL |x| (QREFELT |$| 17)) (QREFELT |$| 21))) 1)) - -(DEFUN |UniqueFactorizationDomain&| (|#1|) - (PROG (|DV$1| |dv$| |$| |pv$|) - (RETURN - (PROGN - (LETT |DV$1| (|devaluate| |#1|) . #1=(|UniqueFactorizationDomain&|)) - (LETT |dv$| (LIST (QUOTE |UniqueFactorizationDomain&|) |DV$1|) . #1#) - (LETT |$| (GETREFV 24) . #1#) - (QSETREFV |$| 0 |dv$|) - (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #1#)) - (|stuffDomainSlots| |$|) - (QSETREFV |$| 6 |#1|) - |$|)))) - -(MAKEPROP - (QUOTE |UniqueFactorizationDomain&|) - (QUOTE |infovec|) - (LIST - (QUOTE - #(NIL NIL NIL NIL NIL NIL - (|local| |#1|) - (|Factored| |$|) - (0 . |squareFree|) - (|Factored| 6) - (5 . |unit|) - (|Record| (|:| |factor| 6) (|:| |exponent| (|Integer|))) - (|List| 11) - (10 . |factors|) - (15 . |*|) - (21 . |One|) - |UFD-;squareFreePart;2S;1| - (25 . |factor|) - (|Union| (QUOTE "nil") (QUOTE "sqfr") (QUOTE "irred") (QUOTE "prime")) - (|Record| (|:| |flg| 18) (|:| |fctr| 6) (|:| |xpnt| (|Integer|))) - (|List| 19) - (30 . |factorList|) - (|Boolean|) - |UFD-;prime?;SB;2|)) - (QUOTE #(|squareFreePart| 35 |prime?| 40)) - (QUOTE NIL) - (CONS - (|makeByteWordVec2| 1 (QUOTE NIL)) - (CONS - (QUOTE #()) - (CONS - (QUOTE #()) - (|makeByteWordVec2| 23 - (QUOTE - (1 6 7 0 8 1 9 6 0 10 1 9 12 0 13 2 6 0 0 0 14 0 6 0 15 1 6 7 - 0 17 1 9 20 0 21 1 0 0 0 16 1 0 22 0 23)))))) - (QUOTE |lookupComplete|))) - -@ -\section{category VSPACE VectorSpace} -<>= -"VSPACE" -> "MODULE" -"VectorSpace(a:Field)" -> "Module(Field)" -@ -<>= -)abbrev category VSPACE VectorSpace -++ Author: -++ Date Created: -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: -++ Description: -++ Vector Spaces (not necessarily finite dimensional) over a field. - -VectorSpace(S:Field): Category == Module(S) with - "/" : (%, S) -> % - ++ x/y divides the vector x by the scalar y. - dimension: () -> CardinalNumber - ++ dimension() returns the dimensionality of the vector space. - add - (v:% / s:S):% == inv(s) * v - -@ -\section{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. -@ -<<*>>= -<> - -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/algebra/equation1.spad.pamphlet b/src/algebra/equation1.spad.pamphlet deleted file mode 100644 index 1483d64..0000000 --- a/src/algebra/equation1.spad.pamphlet +++ /dev/null @@ -1,129 +0,0 @@ -\documentclass{article} -\usepackage{axiom} -\begin{document} -\title{\$SPAD/src/algebra equation1.spad} -\author{The Axiom Team} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{category IEVALAB InnerEvalable} -<>= -"IEVALAB" -> "CATEGORY" -"InnerEvalable(a:SetCategory,b:Type)" -> "Category" -"InnerEvalable(a:SetCategory,b:SetCategory)" -> - "InnerEvalable(a:SetCategory,b:Type)" -"InnerEvalable(a:Ring,MultivariateTaylorSeriesCategory(a:Ring,b:OrderedSet))" - -> "InnerEvalable(a:SetCategory,b:Type)" -"InnerEvalable(Kernal(ExpressionSpace),ExpressionSpace)" -> - "InnerEvalable(a:SetCategory,b:Type)" -@ -<>= -)abbrev category IEVALAB InnerEvalable --- FOR THE BENEFIT OF LIBAX0 GENERATION -++ Author: -++ Date Created: -++ Date Last Updated: June 3, 1991 -++ Basic Operations: -++ Related Domains: -++ Also See: Evalable -++ AMS Classifications: -++ Keywords: equation -++ Examples: -++ References: -++ Description: -++ This category provides \spadfun{eval} operations. -++ A domain may belong to this category if it is possible to make -++ ``evaluation'' substitutions. The difference between this -++ and \spadtype{Evalable} is that the operations in this category -++ specify the substitution as a pair of arguments rather than as -++ an equation. -InnerEvalable(A:SetCategory, B:Type): Category == with - eval: ($, A, B) -> $ - ++ eval(f, x, v) replaces x by v in f. - eval: ($, List A, List B) -> $ - ++ eval(f, [x1,...,xn], [v1,...,vn]) replaces xi by vi in f. - add - eval(f:$, x:A, v:B) == eval(f, [x], [v]) - -@ -\section{category EVALAB Evalable} -<>= -"EVALAB" -> "IEVALAB" -"Evalable(a:SetCategory)" -> "InnerEvalable(a:SetCategory,b:SetCategory)" -"Evalable(MultivariateTaylorSeriesCategory(a:Ring,b:OrderedSet))" -> - "Evalable(a:SetCategory)" -"Evalable(ExpressionSpace)" -> "Evalable(a:SetCategory)" -@ -<>= -)abbrev category EVALAB Evalable -++ Author: -++ Date Created: -++ Date Last Updated: June 3, 1991 -++ Basic Operations: -++ Related Domains: -++ Also See: FullyEvalable -++ AMS Classifications: -++ Keywords: equation -++ Examples: -++ References: -++ Description: -++ This category provides \spadfun{eval} operations. -++ A domain may belong to this category if it is possible to make -++ ``evaluation'' substitutions. -Evalable(R:SetCategory): Category == InnerEvalable(R,R) with - eval: ($, Equation R) -> $ - ++ eval(f,x = v) replaces x by v in f. - eval: ($, List Equation R) -> $ - ++ eval(f, [x1 = v1,...,xn = vn]) replaces xi by vi in f. - add - eval(f:$, eq:Equation R) == eval(f, [eq]) - eval(f:$, xs:List R,vs:List R) == eval(f,[x=v for x in xs for v in vs]) - -@ -\section{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. -@ -<<*>>= -<> - -<> -<> -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document}