diff --git a/books/bookvol10.2.pamphlet b/books/bookvol10.2.pamphlet index 2e31015..96d8704 100644 --- a/books/bookvol10.2.pamphlet +++ b/books/bookvol10.2.pamphlet @@ -37,8 +37,8 @@ %% %% pagepic adds an image and an index entry %% -\newcommand{\pagepic}[2]{% e.g. \pagepic{pathandfile}{abb} -\includegraphics{#1}% +\newcommand{\pagepic}[3]{% e.g. \pagepic{pathandfile}{abb}{scale} +\includegraphics[scale=#3]{#1}% \index{images!#2}} %% %% pageto is a forward link to a referenced page @@ -290,9 +290,10 @@ This is the root of the category hierarchy and is not represented by code. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{BasicType}{BASTYPE} -\pagepic{ps/v102basictype.ps}{BASTYPE} +\pagepic{ps/v102basictype.ps}{BASTYPE}{1.00} {\bf See:}\\ +\pageto{SetCategory}{SETCAT} \pagefrom{Category}{CATEGORY} {\bf Exports:}\\ @@ -359,9 +360,10 @@ digraph pic { @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{CoercibleTo}{KOERCE} -\pagepic{ps/v102koerce.ps}{KOERCE} +\pagepic{ps/v102koerce.ps}{KOERCE}{1.00} {\bf See:}\\ +\pageto{SetCategory}{SETCAT} \pagefrom{Category}{CATEGORY} {\bf Exports:} @@ -422,7 +424,7 @@ digraph pic { @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{ConvertibleTo}{KONVERT} -\pagepic{ps/v102konvert.ps}{KONVERT} +\pagepic{ps/v102konvert.ps}{KONVERT}{1.00} {\bf See:}\\ \pageto{Collection}{CLAGG} @@ -542,9 +544,10 @@ digraph pic { @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{Eltable}{ELTAB} -\pagepic{ps/v102eltab.ps}{ELTAB} +\pagepic{ps/v102eltab.ps}{ELTAB}{1.00} {\bf See:}\\ +\pageto{EltableAggregate}{ELTAGG} \pagefrom{Category}{CATEGORY} {\bf Exports:} @@ -610,7 +613,7 @@ digraph pic { @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{RetractableTo}{RETRACT} -\pagepic{ps/v102retractableto.ps}{RETRACT} +\pagepic{ps/v102retractableto.ps}{RETRACT}{1.00} {\bf See:}\\ \pagefrom{Category}{CATEGORY} @@ -718,7 +721,7 @@ digraph pic { @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{Type}{TYPE} -\pagepic{ps/v102type.ps}{TYPE} +\pagepic{ps/v102type.ps}{TYPE}{1.00} {\bf See:}\\ \pageto{Aggregate}{AGG} @@ -759,7 +762,7 @@ digraph pic { \chapter{Category Layer 2} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{Aggregate}{AGG} -\pagepic{ps/v102agg.ps}{AGG} +\pagepic{ps/v102agg.ps}{AGG}{1.00} {\bf See:}\\ \pageto{HomogeneousAggregate}{HOAGG} @@ -871,9 +874,7 @@ digraph pic { @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{EltableAggregate}{ELTAGG} -%\pagepic{ps/v102eltableaggregate.ps}{ELTAGG} -\includegraphics[scale=0.75]{ps/v102eltableaggregate.ps} -\index{images!STAGG} +\pagepic{ps/v102eltableaggregate.ps}{ELTAGG}{0.75} {\bf See:}\\ \pageto{IndexedAggregate}{IXAGG} @@ -987,7 +988,7 @@ digraph pic { @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{SetCategory}{SETCAT} -\pagepic{ps/v102setcategory.ps}{SETCAT} +\pagepic{ps/v102setcategory.ps}{SETCAT}{1.00} {\bf See:}\\ \pageto{AbelianSemiGroup}{ABELSG} @@ -995,6 +996,10 @@ digraph pic { \pageto{HomogeneousAggregate}{HOAGG} \pageto{OrderedSet}{ORDSET} \pageto{SemiGroup}{SGROUP} +\pageto{SetAggregate}{SETAGG} +\pageto{StepThrough}{STEP} +\pagefrom{BasicType}{BASTYPE} +\pagefrom{CoercibleTo}{KOERCE} {\bf Exports:}\\ \begin{tabular}{lllll} @@ -1094,9 +1099,10 @@ digraph pic { \chapter{Category Layer 3} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{AbelianSemiGroup}{ABELSG} -\pagepic{ps/v102abeliansemigroup.ps}{ABELSG} +\pagepic{ps/v102abeliansemigroup.ps}{ABELSG}{1.00} {\bf See:}\\ +\pageto{AbelianMonoid}{ABELMON} \pagefrom{SetCategory}{SETCAT} {\bf Exports:}\\ @@ -1212,9 +1218,10 @@ digraph pic { @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{Finite}{FINITE} -\pagepic{ps/v102finite.ps}{FINITE} +\pagepic{ps/v102finite.ps}{FINITE}{1.00} {\bf See:}\\ +\pageto{OrderedFinite}{ORDFIN} \pagefrom{SetCategory}{SETCAT} {\bf Exports:}\\ @@ -1328,7 +1335,7 @@ digraph pic { @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{HomogeneousAggregate}{HOAGG} -\pagepic{ps/v102homogeneousaggregate.ps}{HOAGG} +\pagepic{ps/v102homogeneousaggregate.ps}{HOAGG}{1.00} {\bf See:}\\ \pageto{BagAggregate}{BGAGG} @@ -1420,7 +1427,7 @@ These exports come from Evalable(a:Type): if S has EVALAB S and S has SETCAT \end{verbatim} -These exports come from SetCategory: +These exports come from SetCategory(): \begin{verbatim} hash : % -> SingleInteger if S has SETCAT ?~=? : (%,%) -> Boolean if S has SETCAT @@ -1554,15 +1561,18 @@ digraph pic { @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{OrderedSet}{ORDSET} -\pagepic{ps/v102orderedset.ps}{ORDSET} +\pagepic{ps/v102orderedset.ps}{ORDSET}{1.00} {\bf See:}\\ +\pageto{OrderedAbelianSemiGroup}{OASGP} +\pageto{OrderedFinite}{ORDFIN} +\pageto{OrderedMonoid}{ORDMON} \pagefrom{SetCategory}{SETCAT} {\bf Exports:}\\ \begin{tabular}{llllll} - coerce & hash & latex & max & min & ?? & ?>=? & ?\~{}=? &\\ + coerce & hash & latex & max & min & ?$<$?\\ + ?$<=$? & ?=? & ?$>$? & ?$>=$? & ?\~{}=? &\\ \end{tabular} \cross{ORDSET}{coerce} @@ -1570,11 +1580,11 @@ digraph pic { \cross{ORDSET}{latex} \cross{ORDSET}{max} \cross{ORDSET}{min} -\cross{ORDSET}{??} -\cross{ORDSET}{?>=?} +\cross{ORDSET}{?$>$?} +\cross{ORDSET}{?$>=$?} \cross{ORDSET}{?\~{}=?} These are directly exported but not implemented: @@ -1616,7 +1626,6 @@ These exports come from SetCategory(): ++ pair of elements \spad{(a,b)} ++ exactly one of the following relations holds \spad{a a Boolean @@ -1688,9 +1697,7 @@ digraph pic { @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{SemiGroup}{SGROUP} -%\pagepic{ps/v102semigroup.ps}{SGROUP} -\includegraphics[scale=0.75]{ps/v102semigroup.ps} -\index{images!SGROUP} +\pagepic{ps/v102semigroup.ps}{SGROUP}{0.75} A Semigroup is defined as a set $S$ with a binary multiplicative operator ``*''. A Semigroup $G(S,*)$ is: @@ -1701,6 +1708,8 @@ operator ``*''. A Semigroup $G(S,*)$ is: \end{itemize} {\bf See:}\\ +\pageto{Monoid}{MONOID} +\pageto{Rng}{RNG} \pagefrom{SetCategory}{SETCAT} {\bf Exports:}\\ @@ -1820,10 +1829,256 @@ digraph pic { } @ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{StepThrough}{STEP} +\pagepic{ps/v102stepthrough.ps}{STEP}{1.00} + +{\bf See:}\\ +\pagefrom{SetCategory}{SETCAT} + +{\bf Exports:}\\ +\begin{tabular}{lllllll} + coerce & hash & init & latex & nextItem & ?=? & ?\~{}=? +\end{tabular} + +\cross{STEP}{coerce} +\cross{STEP}{hash} +\cross{STEP}{init} +\cross{STEP}{latex} +\cross{STEP}{?=?} +\cross{STEP}{?~=?} +\cross{STEP}{nextItem} + +These are directly exported but not implemented: +\begin{verbatim} + init : () -> % + nextItem : % -> Union(%,"failed") +\end{verbatim} + +These exports come from SetCategory(): +\begin{verbatim} + coerce : % -> OutputForm + hash : % -> SingleInteger + latex : % -> String + ?=? : (%,%) -> Boolean + ?~=? : (%,%) -> Boolean +\end{verbatim} + +<>= +)abbrev category STEP StepThrough +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ A class of objects which can be 'stepped through'. +++ Repeated applications of \spadfun{nextItem} is guaranteed never to +++ return duplicate items and only return "failed" after exhausting +++ all elements of the domain. +++ This assumes that the sequence starts with \spad{init()}. +++ For infinite domains, repeated application +++ of \spadfun{nextItem} is not required to reach all possible domain elements +++ starting from any initial element. +++ +++ Conditional attributes: +++ infinite\tab{15}repeated \spad{nextItem}'s are never "failed". +StepThrough(): Category == SetCategory with + --operations + init: constant -> % + ++ init() chooses an initial object for stepping. + nextItem: % -> Union(%,"failed") + ++ nextItem(x) returns the next item, or "failed" if domain is exhausted. + +@ +<>= +"STEP" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=STEP"]; +"STEP" -> "SETCAT" + +@ +<>= +"StepThrough()" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=STEP"]; +"StepThrough()" -> "SetCategory()" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"StepThrough()" [color=lightblue]; +"StepThrough()" -> "SetCategory()" + +"SetCategory()" [color=lightblue]; +"SetCategory()" -> "BasicType()" +"SetCategory()" -> "CoercibleTo(OutputForm)" + +"BasicType()" [color=lightblue]; +"BasicType()" -> "Category" + +"CoercibleTo(OutputForm)" [color=seagreen]; +"CoercibleTo(OutputForm)" -> "CoercibleTo(a:Type)" + +"CoercibleTo(a:Type)" [color=lightblue]; +"CoercibleTo(a:Type)" -> "Category" + +"Category" [color=lightblue]; + +} + +@ \chapter{Category Layer 4} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{AbelianMonoid}{ABELMON} +\pagepic{ps/v102abelianmonoid.ps}{ABELMON}{0.75} + +{\bf See:}\\ +\pageto{CancellationAbelianMonoid}{CABMON} +\pageto{OrderedAbelianMonoid}{OAMON} +\pageto{OrderedAbelianSemiGroup}{OASGP} +\pagefrom{AbelianSemiGroup}{ABELSG} + +{\bf Exports:}\\ +\begin{tabular}{lllll} + 0 & coerce & hash & latex & sample\\ + zero? & ?*? & ?+? & ?=? & ?\~{}=? +\end{tabular} + +\cross{ABELMON}{0} +\cross{ABELMON}{coerce} +\cross{ABELMON}{hash} +\cross{ABELMON}{latex} +\cross{ABELMON}{sample} +\cross{ABELMON}{zero?} +\cross{ABELMON}{?*?} +\cross{ABELMON}{?+?} +\cross{ABELMON}{?=?} +\cross{ABELMON}{?\~{}=?} + +These are directly exported but not implemented: +\begin{verbatim} + 0 : () -> % +\end{verbatim} + +These are implemented by this category: +\begin{verbatim} + sample : () -> % + zero? : % -> Boolean + ?*? : (PositiveInteger,%) -> % + ?*? : (NonNegativeInteger,%) -> % +\end{verbatim} + +These exports come from AbelianSemiGroup(): +\begin{verbatim} + coerce : % -> OutputForm + hash : % -> SingleInteger + latex : % -> String + ?=? : (%,%) -> Boolean + ?~=? : (%,%) -> Boolean + ?+? : (%,%) -> % +\end{verbatim} + +<>= +)abbrev category ABELMON AbelianMonoid +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ The class of multiplicative monoids, i.e. semigroups with an +++ additive identity element. +++ +++ Axioms: +++ \spad{leftIdentity("+":(%,%)->%,0)}\tab{30}\spad{ 0+x=x } +++ \spad{rightIdentity("+":(%,%)->%,0)}\tab{30}\spad{ x+0=x } +-- following domain must be compiled with subsumption disabled +-- define SourceLevelSubset to be EQUAL +AbelianMonoid(): Category == AbelianSemiGroup with + --operations + 0: constant -> % + ++ 0 is the additive identity element. + sample: constant -> % + ++ sample yields a value of type % + zero?: % -> Boolean + ++ zero?(x) tests if x is equal to 0. + "*": (NonNegativeInteger,%) -> % + ++ n * x is left-multiplication by a non negative integer + add + import RepeatedDoubling(%) + zero? x == x = 0 + n:PositiveInteger * x:% == (n::NonNegativeInteger) * x + sample() == 0 + if not (% has Ring) then + n:NonNegativeInteger * x:% == + zero? n => 0 + double(n pretend PositiveInteger,x) + +@ +<>= +"ABELMON" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ABELMON"]; +"ABELMON" -> "ABELSG" + +@ +<>= +"AbelianMonoid()" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ABELMON"]; +"AbelianMonoid()" -> "AbelianSemiGroup()" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"AbelianMonoid()" [color=lightblue]; +"AbelianMonoid()" -> "AbelianSemiGroup()" + +"AbelianSemiGroup()" [color=lightblue]; +"AbelianSemiGroup()" -> "SetCategory()" +"AbelianSemiGroup()" -> "RepeatedDoubling(AbelianSemiGroup)" + +"SetCategory()" [color=lightblue]; +"SetCategory()" -> "BasicType()" +"SetCategory()" -> "CoercibleTo(OutputForm)" + +"BasicType()" [color=lightblue]; +"BasicType()" -> "Category" + +"CoercibleTo(OutputForm)" [color=seagreen]; +"CoercibleTo(OutputForm)" -> + "CoercibleTo(a:Type)" + +"CoercibleTo(a:Type)" [color=lightblue]; +"CoercibleTo(a:Type)" -> "Category" + +"RepeatedDoubling(AbelianSemiGroup)" [color="#00EE00"]; +"RepeatedDoubling(AbelianSemiGroup)" -> "RepeatedDoubling(a:SetCategory)" + +"RepeatedDoubling(a:SetCategory)" [color="#00EE00"]; +"RepeatedDoubling(a:SetCategory)" -> "Package" + +"Package" [color="#00EE00"]; + +"Category" [color=lightblue]; +} + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{BagAggregate}{BGAGG} -\pagepic{ps/v102bagaggregate.ps}{BGAGG} +\pagepic{ps/v102bagaggregate.ps}{BGAGG}{1.00} {\bf See:}\\ \pageto{DictionaryOperations}{DIOPS} @@ -1880,7 +2135,7 @@ These are implemented by this category: bag : List S -> % \end{verbatim} -These exports come from HomogeneousAggregate: +These exports come from HomogeneousAggregate(S:Type): \begin{verbatim} any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate @@ -1993,11 +2248,12 @@ digraph pic { @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{Collection}{CLAGG} -\pagepic{ps/v102collection.ps}{CLAGG} +\pagepic{ps/v102collection.ps}{CLAGG}{1.00} {\bf See:}\\ \pageto{DictionaryOperations}{DIOPS} \pageto{LinearAggregate}{LNAGG} +\pageto{SetAggregate}{SETAGG} \pagefrom{ConvertibleTo}{KONVERT} \pagefrom{HomogeneousAggregate}{HOAGG} @@ -2066,7 +2322,7 @@ These are implemented by this category: #? : % -> NonNegativeInteger if $ has finiteAggregate \end{verbatim} -These exports come from HomogeneousAggregate(a:Type): +These exports come from HomogeneousAggregate(S:Type): \begin{verbatim} coerce : % -> OutputForm if S has SETCAT copy : % -> % @@ -2091,16 +2347,16 @@ These exports come from HomogeneousAggregate(a:Type): map! : ((S -> S),%) -> % if $ has shallowlyMutable member? : (S,%) -> Boolean if S has SETCAT and $ has finiteAggregate - sample : () -> % members : % -> List S if $ has finiteAggregate more? : (%,NonNegativeInteger) -> Boolean parts : % -> List S if $ has finiteAggregate + sample : () -> % size? : (%,NonNegativeInteger) -> Boolean ?=? : (%,%) -> Boolean if S has SETCAT ?~=? : (%,%) -> Boolean if S has SETCAT \end{verbatim} -These exports come from ConvertibleTo(a:Type): +These exports come from ConvertibleTo(S:Type): \begin{verbatim} convert : % -> InputForm if S has KONVERT INFORM \end{verbatim} @@ -2241,7 +2497,7 @@ digraph pic { @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{IndexedAggregate}{IXAGG} -\pagepic{ps/v102indexedaggregate.ps}{IXAGG} +\pagepic{ps/v102indexedaggregate.ps}{IXAGG}{1.00} {\bf See:}\\ \pageto{LinearAggregate}{LNAGG} @@ -2318,7 +2574,7 @@ These are implemented by this category: swap! : (%,Index,Index) -> Void if $ has shallowlyMutable \end{verbatim} -These exports come from HomogeneousAggregate(a:Type): +These exports come from HomogeneousAggregate(Entry:Type): \begin{verbatim} any? : ((Entry -> Boolean),%) -> Boolean if $ has finiteAggregate @@ -2356,7 +2612,7 @@ These exports come from HomogeneousAggregate(a:Type): ?=? : (%,%) -> Boolean if Entry has SETCAT \end{verbatim} -These exports come from EltableAggregate(a:SetCategory,b:Type): +These exports come from EltableAggregate(Index:SetCategory,Entry:Type): \begin{verbatim} qelt : (%,Index) -> Entry qsetelt! : (%,Index,Entry) -> Entry if $ has shallowlyMutable @@ -2510,8 +2766,282 @@ digraph pic { @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{Monoid}{MONOID} +\pagepic{ps/v102monoid.ps}{MONOID}{0.75} + +{\bf See:}\\ +\pageto{OrderedMonoid}{ORDMON} +\pagefrom{SemiGroup}{SGROUP} + +{\bf Exports:}\\ +\begin{tabular}{lllll} + 1 & coerce & hash & latex & one?\\ + recip & sample & ?*? & ?=? & ?\~{}=?\\ + ?**? & ?\^{}? & ?\^{}? &&\\ +\end{tabular} + +\cross{MONOID}{1} +\cross{MONOID}{coerce} +\cross{MONOID}{hash} +\cross{MONOID}{latex} +\cross{MONOID}{one?} +\cross{MONOID}{recip} +\cross{MONOID}{sample} +\cross{MONOID}{?*?} +\cross{MONOID}{?=?} +\cross{MONOID}{?\~{}=?} +\cross{MONOID}{?**?} +\cross{MONOID}{?\^{}?} + + +These are directly exported but not implemented: +\begin{verbatim} + 1 : () -> % +\end{verbatim} + +These are implemented by this category: +\begin{verbatim} + one? : % -> Boolean + recip : % -> Union(%,"failed") + sample : () -> % + ?^? : (%,NonNegativeInteger) -> % + ?**? : (%,NonNegativeInteger) -> % +\end{verbatim} + +These exports come from SemiGroup(): +\begin{verbatim} + coerce : % -> OutputForm + hash : % -> SingleInteger + latex : % -> String + ?*? : (%,%) -> % + ?**? : (%,PositiveInteger) -> % + ?^? : (%,PositiveInteger) -> % + ?=? : (%,%) -> Boolean + ?~=? : (%,%) -> Boolean +\end{verbatim} + +<>= +)abbrev category MONOID Monoid +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ The class of multiplicative monoids, i.e. semigroups with a +++ multiplicative identity element. +++ +++ Axioms: +++ \spad{leftIdentity("*":(%,%)->%,1)}\tab{30}\spad{1*x=x} +++ \spad{rightIdentity("*":(%,%)->%,1)}\tab{30}\spad{x*1=x} +++ +++ Conditional attributes: +++ unitsKnown\tab{15}\spadfun{recip} only returns "failed" on non-units +Monoid(): Category == SemiGroup with + 1: constant -> % + ++ 1 is the multiplicative identity. + sample: constant -> % + ++ sample yields a value of type % + one?: % -> Boolean + ++ one?(x) tests if x is equal to 1. + "**": (%,NonNegativeInteger) -> % + ++ x**n returns the repeated product + ++ of x n times, i.e. exponentiation. + "^" : (%,NonNegativeInteger) -> % + ++ x^n returns the repeated product + ++ of x n times, i.e. exponentiation. + recip: % -> Union(%,"failed") + ++ recip(x) tries to compute the multiplicative inverse for x + ++ or "failed" if it cannot find the inverse (see unitsKnown). + add + import RepeatedSquaring(%) + _^(x:%, n:NonNegativeInteger):% == x ** n + one? x == x = 1 + sample() == 1 + recip x == + (x = 1) => x + "failed" + x:% ** n:NonNegativeInteger == + zero? n => 1 + expt(x,n pretend PositiveInteger) + +@ +<>= +"MONOID" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=MONOID"]; +"MONOID" -> "SGROUP" + +@ +<>= +"Monoid()" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=MONOID"]; +"Monoid()" -> "SemiGroup()" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"Monoid()" [color=lightblue]; +"Monoid()" -> "SemiGroup()" + +"SemiGroup()" [color=lightblue]; +"SemiGroup()" -> "SetCategory()" +"SemiGroup()" -> "RepeatedSquaring(SemiGroup)" + +"SetCategory()" [color=lightblue]; +"SetCategory()" -> "BasicType()" +"SetCategory()" -> "CoercibleTo(OutputForm)" + +"BasicType()" [color=lightblue]; +"BasicType()" -> "Category" + +"CoercibleTo(OutputForm)" [color=seagreen]; +"CoercibleTo(OutputForm)" -> "CoercibleTo(a:Type)" + +"CoercibleTo(a:Type)" [color=lightblue]; +"CoercibleTo(a:Type)" -> "Category" + +"RepeatedSquaring(SemiGroup)" [color="#00EE00"]; +"RepeatedSquaring(SemiGroup)" -> "RepeatedSquaring(a:SetCategory)" + +"RepeatedSquaring(a:SetCategory)" [color="#00EE00"]; +"RepeatedSquaring(a:SetCategory)" -> "Package" + +"Package" [color="#00EE00"]; + +"Category" [color=lightblue]; + +} + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{OrderedFinite}{ORDFIN} +\pagepic{ps/v102orderedfinite.ps}{ORDFIN}{1.00} + +{\bf See:}\\ +\pagefrom{Finite}{FINITE} +\pagefrom{OrderedSet}{ORDSET} + +{\bf Exports:}\\ +\begin{tabular}{lllll} + coerce & hash & index & latex & lookup \\ + max & min & random & size & ?\~{}=? \\ + ?$<$? & ?$<=$? & ?=? & ?$>$? & ?$>=$? \\ +\end{tabular} + +\cross{ORDFIN}{coerce} +\cross{ORDFIN}{hash} +\cross{ORDFIN}{index} +\cross{ORDFIN}{latex} +\cross{ORDFIN}{lookup} +\cross{ORDFIN}{max} +\cross{ORDFIN}{min} +\cross{ORDFIN}{random} +\cross{ORDFIN}{size} +\cross{ORDFIN}{?\~{}=?} +\cross{ORDFIN}{?$<$?} +\cross{ORDFIN}{?$<=$?} +\cross{ORDFIN}{?=?} +\cross{ORDFIN}{?$>$?} +\cross{ORDFIN}{?$>=$?} + +These exports come from OrderedSet(): +\begin{verbatim} + coerce : % -> OutputForm + hash : % -> SingleInteger + latex : % -> String + max : (%,%) -> % + min : (%,%) -> % + ?=? : (%,%) -> Boolean + ?~=? : (%,%) -> Boolean + ? Boolean + ?<=? : (%,%) -> Boolean + ?>? : (%,%) -> Boolean + ?>=? : (%,%) -> Boolean +\end{verbatim} + +These exports come from Finite(): +\begin{verbatim} + index : PositiveInteger -> % + lookup : % -> PositiveInteger + random : () -> % + size : () -> NonNegativeInteger +\end{verbatim} + +<>= +)abbrev category ORDFIN OrderedFinite +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ Ordered finite sets. + +OrderedFinite(): Category == Join(OrderedSet, Finite) + +@ +<>= +"ORDFIN" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ORDFIN"]; +"ORDFIN" -> "ORDSET" +"ORDFIN" -> "FINITE" + +@ +<>= +"OrderedFinite()" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ORDFIN"]; +"OrderedFinite()" -> "OrderedSet()" +"OrderedFinite()" -> "Finite()" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"OrderedFinite()" [color=lightblue]; +"OrderedFinite()" -> "OrderedSet()" +"OrderedFinite()" -> "Finite()" + +"Finite()" [color=lightblue]; +"Finite()" -> "SetCategory()" + +"OrderedSet()" [color=lightblue]; +"OrderedSet()" -> "SetCategory()" + +"SetCategory()" [color=lightblue]; +"SetCategory()" -> "BasicType()" +"SetCategory()" -> "CoercibleTo(OutputForm)" + +"BasicType()" [color=lightblue]; +"BasicType()" -> "Category" + +"CoercibleTo(OutputForm)" [color=seagreen]; +"CoercibleTo(OutputForm)" -> "CoercibleTo(a:Type)" + +"CoercibleTo(a:Type)" [color=lightblue]; +"CoercibleTo(a:Type)" -> "Category" + +"Category" [color=lightblue]; + +} +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{RecursiveAggregate}{RCAGG} -\pagepic{ps/v102recursiveaggregate.ps}{RCAGG} +\pagepic{ps/v102recursiveaggregate.ps}{RCAGG}{1.00} {\bf See:}\\ \pageto{BinaryRecursiveAggregate}{BRAGG} @@ -2587,7 +3117,7 @@ These are implemented by this category: ?.value : (%,value) -> S \end{verbatim} -These exports come from HomogeneousAggregate(a:Type): +These exports come from HomogeneousAggregate(S:Type): \begin{verbatim} any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate @@ -2726,7 +3256,7 @@ digraph pic { \chapter{Category Layer 5} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{BinaryRecursiveAggregate}{BRAGG} -\pagepic{ps/v102binaryrecursiveaggregate.ps}{BRAGG} +\pagepic{ps/v102binaryrecursiveaggregate.ps}{BRAGG}{1.00} {\bf See:}\\ \pagefrom{RecursiveAggregate}{RCAGG} @@ -2819,7 +3349,7 @@ These are implemented by this category: ?.left : (%,left) -> % \end{verbatim} -These exports come from RecursiveAggregate(a:Type) +These exports come from RecursiveAggregate(S:Type) \begin{verbatim} any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate @@ -3011,8 +3541,134 @@ digraph pic { @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{CancellationAbelianMonoid}{CABMON} +\pagepic{ps/v102cancellationabelianmonoid.ps}{CABMON}{0.75} + +{\bf See:}\\ +\pageto{AbelianGroup}{ABELGRP} +\pagefrom{AbelianMonoid}{ABELMON} + +{\bf Exports:}\\ +\begin{tabular}{lllll} + 0 & coerce & hash & latex & sample\\ + subtractIfCan & zero? & ?\~{}=? & ?*? & ?+?\\ + ?=?&&&& +\end{tabular} + +\cross{CABMON}{0} +\cross{CABMON}{coerce} +\cross{CABMON}{hash} +\cross{CABMON}{latex} +\cross{CABMON}{sample} +\cross{CABMON}{subtractIfCan} +\cross{CABMON}{zero?} +\cross{CABMON}{?\~{}=?} +\cross{CABMON}{?*?} +\cross{CABMON}{?+?} +\cross{CABMON}{?=?} + +These are directly exported but not implemented: +\begin{verbatim} + subtractIfCan : (%,%) -> Union(%,"failed") +\end{verbatim} + +These exports come from AbelianMonoid(): +\begin{verbatim} + 0 : () -> % + coerce : % -> OutputForm + hash : % -> SingleInteger + latex : % -> String + sample : () -> % + zero? : % -> Boolean + ?*? : (NonNegativeInteger,%) -> % + ?*? : (PositiveInteger,%) -> % + ?~=? : (%,%) -> Boolean + ?+? : (%,%) -> % + ?=? : (%,%) -> Boolean +\end{verbatim} + +<>= +)abbrev category CABMON CancellationAbelianMonoid +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: Davenport & Trager I +++ Description: +++ This is an \spadtype{AbelianMonoid} with the cancellation property, i.e. +++ \spad{ a+b = a+c => b=c }. +++ This is formalised by the partial subtraction operator, +++ which satisfies the axioms listed below: +++ +++ Axioms: +++ \spad{c = a+b <=> c-b = a} +CancellationAbelianMonoid(): Category == AbelianMonoid with + subtractIfCan: (%,%) -> Union(%,"failed") + ++ subtractIfCan(x, y) returns an element z such that \spad{z+y=x} + ++ or "failed" if no such element exists. + +@ +<>= +"CABMON" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=CABMON"]; +"CABMON" -> "ABELMON" + +@ +<>= +"CancellationAbelianMonoid()" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=CABMON"]; +"CancellationAbelianMonoid()" -> "AbelianMonoid()" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"CancellationAbelianMonoid()" [color=lightblue]; +"CancellationAbelianMonoid()" -> "AbelianMonoid()" + +"AbelianMonoid()" [color=lightblue]; +"AbelianMonoid()" -> "AbelianSemiGroup()" + +"AbelianSemiGroup()" [color=lightblue]; +"AbelianSemiGroup()" -> "SetCategory()" +"AbelianSemiGroup()" -> "RepeatedDoubling(AbelianSemiGroup)" + +"SetCategory()" [color=lightblue]; +"SetCategory()" -> "BasicType()" +"SetCategory()" -> "CoercibleTo(OutputForm)" + +"BasicType()" [color=lightblue]; +"BasicType()" -> "Category" + +"CoercibleTo(OutputForm)" [color=seagreen]; +"CoercibleTo(OutputForm)" -> + "CoercibleTo(a:Type)" + +"CoercibleTo(a:Type)" [color=lightblue]; +"CoercibleTo(a:Type)" -> "Category" + +"RepeatedDoubling(AbelianSemiGroup)" [color="#00EE00"]; +"RepeatedDoubling(AbelianSemiGroup)" -> "RepeatedDoubling(a:SetCategory)" + +"RepeatedDoubling(a:SetCategory)" [color="#00EE00"]; +"RepeatedDoubling(a:SetCategory)" -> "Package" + +"Package" [color="#00EE00"]; + +"Category" [color=lightblue]; +} + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{DictionaryOperations}{DIOPS} -\pagepic{ps/v102dictionaryoperations.ps}{DIOPS} +\pagepic{ps/v102dictionaryoperations.ps}{DIOPS}{1.00} {\bf See:}\\ \pageto{Dictionary}{DIAGG} @@ -3085,7 +3741,7 @@ These are implemented by this category: dictionary : () -> % \end{verbatim} -These exports come from BagAggregate(a:SetCategory): +These exports come from BagAggregate(S:SetCategory): \begin{verbatim} any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate @@ -3126,7 +3782,7 @@ These exports come from BagAggregate(a:SetCategory): ?~=? : (%,%) -> Boolean if S has SETCAT \end{verbatim} -These exports come from Collection(a:SetCategory) +These exports come from Collection(S:SetCategory) \begin{verbatim} convert : % -> InputForm if S has KONVERT INFORM find : ((S -> Boolean),%) -> Union(S,"failed") @@ -3240,7 +3896,7 @@ digraph pic { @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{DoublyLinkedAggregate}{DLAGG} -\pagepic{ps/v102doublylinkedaggregate.ps}{DLAGG} +\pagepic{ps/v102doublylinkedaggregate.ps}{DLAGG}{1.00} {\bf See:}\\ \pagefrom{RecursiveAggregate}{RCAGG} @@ -3318,7 +3974,7 @@ These are directly exported but not implemented: tail : % -> % \end{verbatim} -These exports come from RecursiveAggregate(a:Type): +These exports come from RecursiveAggregate(S:Type): \begin{verbatim} any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate @@ -3456,7 +4112,7 @@ digraph pic { @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{LinearAggregate}{LNAGG} -\pagepic{ps/v102linearaggregate.ps}{LNAGG} +\pagepic{ps/v102linearaggregate.ps}{LNAGG}{1.00} {\bf See:}\\ \pageto{ExtensibleLinearAggregate}{ELAGG} @@ -3557,7 +4213,7 @@ These are implemented by this category: maxIndex : % -> Integer if Integer has ORDSET \end{verbatim} -These exports come from IndexedAggregate(a:SetCategory,b:Type) +These exports come from IndexedAggregate(Integer,S:Type) \begin{verbatim} any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate @@ -3608,7 +4264,7 @@ These exports come from IndexedAggregate(a:SetCategory,b:Type) ?=? : (%,%) -> Boolean if S has SETCAT \end{verbatim} -These exports come from Collection(a:Type): +These exports come from Collection(S:Type): \begin{verbatim} construct : List S -> % convert : % -> InputForm if S has KONVERT INFORM @@ -3759,11 +4415,292 @@ digraph pic { } @ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{OrderedAbelianSemiGroup}{OASGP} +\pagepic{ps/v102orderedabeliansemigroup.ps}{OASGP}{0.75} + +{\bf See:}\\ +\pageto{OrderedAbelianMonoid}{OAMON} +\pagefrom{AbelianMonoid}{ABELMON} +\pagefrom{OrderedSet}{ORDSET} + +{\bf Exports:}\\ +\begin{tabular}{llllllll} + 0 & coerce & hash & latex & max & min & sample & zero?\\ + ?\~{}=? & ?*? & ?+? & ?$<$? & ?$<=$? & ?=? & ?$>$? & ?$>=$? +\end{tabular} + +\cross{OASGP}{0} +\cross{OASGP}{coerce} +\cross{OASGP}{hash} +\cross{OASGP}{latex} +\cross{OASGP}{max} +\cross{OASGP}{min} +\cross{OASGP}{sample} +\cross{OASGP}{zero?} +\cross{OASGP}{?\~{}=?} +\cross{OASGP}{?*?} +\cross{OASGP}{?+?} +\cross{OASGP}{?$<$?} +\cross{OASGP}{?$<=$?} +\cross{OASGP}{?=?} +\cross{OASGP}{?$>$?} +\cross{OASGP}{?$>=$?} + +These exports come from OrderedSet(): +\begin{verbatim} + coerce : % -> OutputForm + hash : % -> SingleInteger + latex : % -> String + max : (%,%) -> % + min : (%,%) -> % + ? Boolean + ?>? : (%,%) -> Boolean + ?<=? : (%,%) -> Boolean + ?>=? : (%,%) -> Boolean + ?=? : (%,%) -> Boolean + ?~=? : (%,%) -> Boolean +\end{verbatim} + +These exports come from AbelianMonoid(): +\begin{verbatim} + 0 : () -> % + sample : () -> % + zero? : % -> Boolean + ?*? : (NonNegativeInteger,%) -> % + ?*? : (PositiveInteger,%) -> % + ?+? : (%,%) -> % +\end{verbatim} + +<>= +)abbrev category OASGP OrderedAbelianSemiGroup +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ Ordered sets which are also abelian semigroups, such that the addition +++ preserves the ordering. +++ \spad{ x < y => x+z < y+z} +OrderedAbelianSemiGroup(): Category == Join(OrderedSet, AbelianMonoid) + +@ +<>= +"OASGP" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=OASGP"]; +"OASGP" -> "ORDSET" +"OASGP" -> "ABELMON" + +@ +<>= +"OrderedAbelianSemiGroup()" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=OASGP"]; +"OrderedAbelianSemiGroup()" -> "OrderedSet()" +"OrderedAbelianSemiGroup()" -> "AbelianMonoid()" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"OrderedAbelianSemiGroup()" [color=lightblue]; +"OrderedAbelianSemiGroup()" -> "OrderedSet()" +"OrderedAbelianSemiGroup()" -> "AbelianMonoid()" + +"OrderedSet()" [color=lightblue]; +"OrderedSet()" -> "SetCategory()" + +"AbelianMonoid()" [color=lightblue]; +"AbelianMonoid()" -> "AbelianSemiGroup()" + +"AbelianSemiGroup()" [color=lightblue]; +"AbelianSemiGroup()" -> "SetCategory()" +"AbelianSemiGroup()" -> "RepeatedDoubling(AbelianSemiGroup)" + +"SetCategory()" [color=lightblue]; +"SetCategory()" -> "BasicType()" +"SetCategory()" -> "CoercibleTo(OutputForm)" + +"BasicType()" [color=lightblue]; +"BasicType()" -> "Category" + +"CoercibleTo(OutputForm)" [color=seagreen]; +"CoercibleTo(OutputForm)" -> + "CoercibleTo(a:Type)" + +"CoercibleTo(a:Type)" [color=lightblue]; +"CoercibleTo(a:Type)" -> "Category" + +"RepeatedDoubling(AbelianSemiGroup)" [color="#00EE00"]; +"RepeatedDoubling(AbelianSemiGroup)" -> "RepeatedDoubling(a:SetCategory)" + +"RepeatedDoubling(a:SetCategory)" [color="#00EE00"]; +"RepeatedDoubling(a:SetCategory)" -> "Package" + +"Package" [color="#00EE00"]; + +"Category" [color=lightblue]; +} + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{OrderedMonoid}{ORDMON} +\pagepic{ps/v102orderedmonoid.ps}{ORDMON}{0.75} + +{\bf See:}\\ +\pagefrom{Monoid}{MONOID} +\pagefrom{OrderedSet}{ORDSET} + +{\bf Exports:}\\ +\begin{tabular}{llllll} + 1 & coerce & hash & latex & max & min\\ + one? & recip & sample & ?*? & ?**? & ?$<$?\\ + ?$<=$? & ?=? & ?$>$? & ?$>=$? & ?\~{}=? & ?\^{}?\\ +\end{tabular} + +\cross{ORDMON}{1} +\cross{ORDMON}{coerce} +\cross{ORDMON}{hash} +\cross{ORDMON}{latex} +\cross{ORDMON}{max} +\cross{ORDMON}{min} +\cross{ORDMON}{one?} +\cross{ORDMON}{recip} +\cross{ORDMON}{sample} +\cross{ORDMON}{?*?} +\cross{ORDMON}{?**?} +\cross{ORDMON}{?$<$?} +\cross{ORDMON}{?$<=$?} +\cross{ORDMON}{?=?} +\cross{ORDMON}{?$>$?} +\cross{ORDMON}{?$>=$?} +\cross{ORDMON}{?\~{}=?} +\cross{ORDMON}{?\^{}?} + +These exports come from Monoid(): +\begin{verbatim} + 1 : () -> % + coerce : % -> OutputForm + hash : % -> SingleInteger + latex : % -> String + one? : % -> Boolean + recip : % -> Union(%,"failed") + sample : () -> % + ?*? : (%,%) -> % + ?^? : (%,PositiveInteger) -> % + ?^? : (%,NonNegativeInteger) -> % + ?**? : (%,PositiveInteger) -> % + ?**? : (%,NonNegativeInteger) -> % + ?=? : (%,%) -> Boolean + ?~=? : (%,%) -> Boolean +\end{verbatim} + +These exports come from OrderedSet(): +\begin{verbatim} + max : (%,%) -> % + min : (%,%) -> % + ? Boolean + ?<=? : (%,%) -> Boolean + ?>? : (%,%) -> Boolean + ?>=? : (%,%) -> Boolean +\end{verbatim} + +<>= +)abbrev category ORDMON OrderedMonoid +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ Ordered sets which are also monoids, such that multiplication +++ preserves the ordering. +++ +++ Axioms: +++ \spad{x < y => x*z < y*z} +++ \spad{x < y => z*x < z*y} + +OrderedMonoid(): Category == Join(OrderedSet, Monoid) + +@ +<>= +"ORDMON" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ORDMON"]; +"ORDMON" -> "ORDSET" +"ORDMON" -> "MONOID" + +@ +<>= +"OrderedMonoid()" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ORDMON"]; +"OrderedMonoid()" -> "OrderedSet()" +"OrderedMonoid()" -> "Monoid()" +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"OrderedMonoid()" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ORDMON"]; +"OrderedMonoid()" -> "OrderedSet()" +"OrderedMonoid()" -> "Monoid()" + +"OrderedSet()" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ORDSET"]; +"OrderedSet()" -> "SetCategory()" + +"Monoid()" [color=lightblue]; +"Monoid()" -> "SemiGroup()" + +"SemiGroup()" [color=lightblue]; +"SemiGroup()" -> "SetCategory()" +"SemiGroup()" -> "RepeatedSquaring(SemiGroup)" + +"SetCategory()" [color=lightblue]; +"SetCategory()" -> "BasicType()" +"SetCategory()" -> "CoercibleTo(OutputForm)" + +"BasicType()" [color=lightblue]; +"BasicType()" -> "Category" + +"CoercibleTo(OutputForm)" [color=seagreen]; +"CoercibleTo(OutputForm)" -> "CoercibleTo(a:Type)" + +"CoercibleTo(a:Type)" [color=lightblue]; +"CoercibleTo(a:Type)" -> "Category" + +"RepeatedSquaring(SemiGroup)" [color="#00EE00"]; +"RepeatedSquaring(SemiGroup)" -> "RepeatedSquaring(a:SetCategory)" + +"RepeatedSquaring(a:SetCategory)" [color="#00EE00"]; +"RepeatedSquaring(a:SetCategory)" -> "Package" + +"Package" [color="#00EE00"]; + +"Category" [color=lightblue]; + +} + +@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{PriorityQueueAggregate}{PRQAGG} -\pagepic{ps/v102priorityqueueaggregate.ps}{PRQAGG} +\pagepic{ps/v102priorityqueueaggregate.ps}{PRQAGG}{1.00} {\bf See:}\\ +\pageto{OrderedMultisetAggregate}{OMSAGG} \pagefrom{BagAggregate}{BGAGG} {\bf Exports:}\\ @@ -3813,7 +4750,7 @@ These are directly exported but not implemented: merge! : (%,%) -> % \end{verbatim} -These exports come from PriorityQueueAggregate(a:Type): +These exports come from BagAggregate(S:OrderedSet): \begin{verbatim} any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate @@ -3930,7 +4867,7 @@ digraph pic { @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{QueueAggregate}{QUAGG} -\pagepic{ps/v102queueaggregate.ps}{QUAGG} +\pagepic{ps/v102queueaggregate.ps}{QUAGG}{1.00} {\bf See:}\\ \pageto{DequeueAggregate}{DQAGG} @@ -3989,7 +4926,7 @@ These are implemented by this category: rotate! : % -> % \end{verbatim} -These exports come from BagAggregate(a:Type): +These exports come from BagAggregate(S:Type): \begin{verbatim} any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate @@ -4112,8 +5049,296 @@ digraph pic { @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{SetAggregate}{SETAGG} +\pagepic{ps/v102setaggregate.ps}{SETAGG}{1.00} + +{\bf See:}\\ +\pageto{FiniteSetAggregate}{FSAGG} +\pageto{MultisetAggregate}{MSETAGG} +\pagefrom{Collection}{CLAGG} +\pagefrom{SetCategory}{SETCAT} + +{\bf Exports:}\\ +\begin{tabular}{lllll} + any? & brace & coerce & construct & convert\\ + copy & count & difference & empty & empty?\\ + eq? & eval & every? & find & hash\\ + intersect & latex & less? & map & map!\\ + member? & members & more? & parts & reduce\\ + remove & removeDuplicates & sample & select & set\\ + size? & subset? & symmetricDifference & union & \#?\\ + ?$<$? & ?=? & ?\~{}=? && +\end{tabular} + +\cross{SETAGG}{any?} +\cross{SETAGG}{brace} +\cross{SETAGG}{coerce} +\cross{SETAGG}{construct} +\cross{SETAGG}{convert} +\cross{SETAGG}{copy} +\cross{SETAGG}{count} +\cross{SETAGG}{difference} +\cross{SETAGG}{empty} +\cross{SETAGG}{empty?} +\cross{SETAGG}{eq?} +\cross{SETAGG}{eval} +\cross{SETAGG}{every?} +\cross{SETAGG}{find} +\cross{SETAGG}{hash} +\cross{SETAGG}{intersect} +\cross{SETAGG}{latex} +\cross{SETAGG}{less?} +\cross{SETAGG}{map} +\cross{SETAGG}{map!} +\cross{SETAGG}{member?} +\cross{SETAGG}{members} +\cross{SETAGG}{more?} +\cross{SETAGG}{parts} +\cross{SETAGG}{reduce} +\cross{SETAGG}{remove} +\cross{SETAGG}{removeDuplicates} +\cross{SETAGG}{sample} +\cross{SETAGG}{select} +\cross{SETAGG}{set} +\cross{SETAGG}{size?} +\cross{SETAGG}{subset?} +\cross{SETAGG}{symmetricDifference} +\cross{SETAGG}{union} +\cross{SETAGG}{\#?} +\cross{SETAGG}{?$<$?} +\cross{SETAGG}{?=?} +\cross{SETAGG}{?\~{}=?} + +These are directly exported but not implemented: +\begin{verbatim} + brace : List S -> % + brace : () -> % + difference : (%,%) -> % + intersect : (%,%) -> % + set : List S -> % + set : () -> % + subset? : (%,%) -> Boolean + union : (%,%) -> % + ? Boolean +\end{verbatim} + +These are implemented by this category: +\begin{verbatim} + difference : (%,S) -> % + symmetricDifference : (%,%) -> % + union : (S,%) -> % + union : (%,S) -> % +\end{verbatim} + +These exports come from SetCategory(): +\begin{verbatim} + coerce : % -> OutputForm + hash : % -> SingleInteger + latex : % -> String + ?=? : (%,%) -> Boolean + ?~=? : (%,%) -> Boolean +\end{verbatim} + +These exports come from Collection(S:SetCategory): +\begin{verbatim} + any? : ((S -> Boolean),%) -> Boolean + if $ has finiteAggregate + construct : List S -> % + convert : % -> InputForm if S has KONVERT INFORM + copy : % -> % + count : ((S -> Boolean),%) -> NonNegativeInteger + if $ has finiteAggregate + count : (S,%) -> NonNegativeInteger + if S has SETCAT + and $ has finiteAggregate + empty : () -> % + empty? : % -> Boolean + eq? : (%,%) -> Boolean + eval : (%,List Equation S) -> % + if S has EVALAB S + and S has SETCAT + eval : (%,Equation S) -> % + if S has EVALAB S + and S has SETCAT + eval : (%,S,S) -> % + if S has EVALAB S + and S has SETCAT + eval : (%,List S,List S) -> % + if S has EVALAB S + and S has SETCAT + every? : ((S -> Boolean),%) -> Boolean + if $ has finiteAggregate + find : ((S -> Boolean),%) -> Union(S,"failed") + less? : (%,NonNegativeInteger) -> Boolean + map : ((S -> S),%) -> % + map! : ((S -> S),%) -> % if $ has shallowlyMutable + members : % -> List S if $ has finiteAggregate + member? : (S,%) -> Boolean + if S has SETCAT and $ has finiteAggregate + more? : (%,NonNegativeInteger) -> Boolean + parts : % -> List S if $ has finiteAggregate + reduce : (((S,S) -> S),%,S,S) -> S + if S has SETCAT + and $ has finiteAggregate + reduce : (((S,S) -> S),%,S) -> S + if $ has finiteAggregate + reduce : (((S,S) -> S),%) -> S + if $ 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 + sample : () -> % + select : ((S -> Boolean),%) -> % + if $ has finiteAggregate + size? : (%,NonNegativeInteger) -> Boolean + #? : % -> NonNegativeInteger + if $ has finiteAggregate +\end{verbatim} + +<>= +)abbrev category SETAGG SetAggregate +++ Author: Michael Monagan; revised by Manuel Bronstein and Richard Jenks +++ Date Created: August 87 through August 88 +++ Date Last Updated: 14 Oct, 1993 by RSS +++ Basic Operations: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ A set category lists a collection of set-theoretic operations +++ useful for both finite sets and multisets. +++ Note however that finite sets are distinct from multisets. +++ Although the operations defined for set categories are +++ common to both, the relationship between the two cannot +++ be described by inclusion or inheritance. +SetAggregate(S:SetCategory): + Category == Join(SetCategory, Collection(S)) with + partiallyOrderedSet + "<" : (%, %) -> Boolean + ++ s < t returns true if all elements of set aggregate s are also + ++ elements of set aggregate t. + brace : () -> % + ++ brace()$D (otherwise written {}$D) + ++ creates an empty set aggregate of type D. + ++ This form is considered obsolete. Use \axiomFun{set} instead. + brace : List S -> % + ++ brace([x,y,...,z]) + ++ creates a set aggregate containing items x,y,...,z. + ++ This form is considered obsolete. Use \axiomFun{set} instead. + set : () -> % + ++ set()$D creates an empty set aggregate of type D. + set : List S -> % + ++ set([x,y,...,z]) creates a set aggregate containing items x,y,...,z. + intersect: (%, %) -> % + ++ intersect(u,v) returns the set aggregate w consisting of + ++ elements common to both set aggregates u and v. + ++ Note: equivalent to the notation (not currently supported) + ++ {x for x in u | member?(x,v)}. + difference : (%, %) -> % + ++ difference(u,v) returns the set aggregate w consisting of + ++ elements in set aggregate u but not in set aggregate v. + ++ If u and v have no elements in common, \axiom{difference(u,v)} + ++ returns a copy of u. + ++ Note: equivalent to the notation (not currently supported) + ++ \axiom{{x for x in u | not member?(x,v)}}. + difference : (%, S) -> % + ++ difference(u,x) returns the set aggregate u with element x removed. + ++ If u does not contain x, a copy of u is returned. + ++ Note: \axiom{difference(s, x) = difference(s, {x})}. + symmetricDifference : (%, %) -> % + ++ symmetricDifference(u,v) returns the set aggregate of elements x + ++ which are members of set aggregate u or set aggregate v but + ++ not both. If u and v have no elements in common, + ++ \axiom{symmetricDifference(u,v)} returns a copy of u. + ++ Note: \axiom{symmetricDifference(u,v) = + ++ union(difference(u,v),difference(v,u))} + subset? : (%, %) -> Boolean + ++ subset?(u,v) tests if u is a subset of v. + ++ Note: equivalent to + ++ \axiom{reduce(and,{member?(x,v) for x in u},true,false)}. + union : (%, %) -> % + ++ union(u,v) returns the set aggregate of elements which are members + ++ of either set aggregate u or v. + union : (%, S) -> % + ++ union(u,x) returns the set aggregate u with the element x added. + ++ If u already contains x, \axiom{union(u,x)} returns a copy of u. + union : (S, %) -> % + ++ union(x,u) returns the set aggregate u with the element x added. + ++ If u already contains x, \axiom{union(x,u)} returns a copy of u. + add + symmetricDifference(x, y) == union(difference(x, y), difference(y, x)) + union(s:%, x:S) == union(s, {x}) + union(x:S, s:%) == union(s, {x}) + difference(s:%, x:S) == difference(s, {x}) + +@ +<>= +"SETAGG" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SETAGG"]; +"SETAGG" -> "SETCAT" +"SETAGG" -> "CLAGG" + +@ +<>= +"SetAggregate(a:SetCategory)" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SETAGG"]; +"SetAggregate(a:SetCategory)" -> "SetCategory()" +"SetAggregate(a:SetCategory)" -> "Collection(a:SetCategory)" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"SetAggregate(a:SetCategory)" [color=lightblue]; +"SetAggregate(a:SetCategory)" -> "SetCategory()" +"SetAggregate(a:SetCategory)" -> "Collection(a:SetCategory)" + +"SetCategory()" [color=lightblue]; +"SetCategory()" -> "BasicType()" +"SetCategory()" -> "CoercibleTo(OutputForm)" + +"BasicType()" [color=lightblue]; +"BasicType()" -> "Category" + +"CoercibleTo(OutputForm)" [color=seagreen]; +"CoercibleTo(OutputForm)" -> "CoercibleTo(a:Type)" + +"CoercibleTo(a:Type)" [color=lightblue]; +"CoercibleTo(a:Type)" -> "Category" + +"Collection(a:SetCategory)" + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=CLAGG"]; +"Collection(a:SetCategory)" -> "Collection(a:Type)" + +"Collection(a:Type)" [color=lightblue]; +"Collection(a:Type)" -> "HomogeneousAggregate(a:Type)" + +"HomogeneousAggregate(a:Type)" [color=lightblue]; +"HomogeneousAggregate(a:Type)" -> "Aggregate()" + +"Aggregate()" [color=lightblue]; +"Aggregate()" -> "Type()" + +"Type()" [color=lightblue]; +"Type()" -> "Category" + +"Category" [color=lightblue]; + +} +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{StackAggregate}{SKAGG} -\pagepic{ps/v102stackaggregate.ps}{SKAGG} +\pagepic{ps/v102stackaggregate.ps}{SKAGG}{1.00} {\bf See:}\\ \pageto{DequeueAggregate}{DQAGG} @@ -4168,7 +5393,7 @@ These are directly exported but not implemented: top : % -> S \end{verbatim} -These exports come from BagAggregate(a:Type): +These exports come from BagAggregate(S:Type): \begin{verbatim} any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate @@ -4285,7 +5510,7 @@ digraph pic { @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{UnaryRecursiveAggregate}{URAGG} -\pagepic{ps/v102unaryrecursiveaggregate.ps}{URAGG} +\pagepic{ps/v102unaryrecursiveaggregate.ps}{URAGG}{1.00} {\bf See:}\\ \pageto{StreamAggregate}{STAGG} @@ -4409,7 +5634,7 @@ These are implemented by this category: ?.rest : (%,rest) -> % \end{verbatim} -These exports come from RecursiveAggregate(a:Type): +These exports come from RecursiveAggregate(S:Type): \begin{verbatim} any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate @@ -4751,10 +5976,154 @@ digraph pic { @ \chapter{Category Layer 6} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{AbelianGroup}{ABELGRP} +\pagepic{ps/v102abeliangroup.ps}{ABELGRP}{0.75} + +{\bf See:}\\ +\pageto{Rng}{RNG} +\pagefrom{CancellationAbelianMonoid}{CABMON} + +{\bf Exports:}\\ +\begin{tabular}{lllllll} + 0 & coerce & hash & latex & sample & subtractIfCan & zero?\\ + ?\~{}=? & ?*? & ?+? & ?-? & -? & ?=? & +\end{tabular} + +\cross{ABELGRP}{0} +\cross{ABELGRP}{coerce} +\cross{ABELGRP}{hash} +\cross{ABELGRP}{latex} +\cross{ABELGRP}{sample} +\cross{ABELGRP}{subtractIfCan} +\cross{ABELGRP}{zero?} +\cross{ABELGRP}{?\~{}=?} +\cross{ABELGRP}{?*?} +\cross{ABELGRP}{?+?} +\cross{ABELGRP}{?-?} +\cross{ABELGRP}{-?} +\cross{ABELGRP}{?=?} + + +These are directly exported but not implemented: +\begin{verbatim} + -? : % -> % +\end{verbatim} + +These are implemented by this category: +\begin{verbatim} + subtractIfCan : (%,%) -> Union(%,"failed") + ?*? : (Integer,%) -> % + ?*? : (NonNegativeInteger,%) -> % + ?-? : (%,%) -> % +\end{verbatim} + +These exports come from CancellationAbelianMonoid(): +\begin{verbatim} + 0 : () -> % + coerce : % -> OutputForm + hash : % -> SingleInteger + latex : % -> String + sample : () -> % + zero? : % -> Boolean + ?~=? : (%,%) -> Boolean + ?*? : (PositiveInteger,%) -> % + ?+? : (%,%) -> % + ?=? : (%,%) -> Boolean +\end{verbatim} + +<>= +)abbrev category ABELGRP AbelianGroup +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ The class of abelian groups, i.e. additive monoids where +++ each element has an additive inverse. +++ +++ Axioms: +++ \spad{-(-x) = x} +++ \spad{x+(-x) = 0} +-- following domain must be compiled with subsumption disabled +AbelianGroup(): Category == CancellationAbelianMonoid with + "-": % -> % + ++ -x is the additive inverse of x. + "-": (%,%) -> % + ++ x-y is the difference of x and y + ++ i.e. \spad{x + (-y)}. + -- subsumes the partial subtraction from previous + "*": (Integer,%) -> % + ++ n*x is the product of x by the integer n. + add + (x:% - y:%):% == x+(-y) + subtractIfCan(x:%, y:%):Union(%, "failed") == (x-y)::Union(%,"failed") + n:NonNegativeInteger * x:% == (n::Integer) * x + import RepeatedDoubling(%) + if not (% has Ring) then + n:Integer * x:% == + zero? n => 0 + n>0 => double(n pretend PositiveInteger,x) + double((-n) pretend PositiveInteger,-x) + +@ +<>= +"ABELGRP" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ABELGRP"]; +"ABELGRP" -> "CABMON" + +@ +<>= +"AbelianGroup()" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ABELGRP"]; +"AbelianGroup()" -> "CancellationAbelianMonoid()" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"AbelianGroup()" [color=lightblue]; +"AbelianGroup()" -> "CancellationAbelianMonoid()" +"AbelianGroup()" -> "RepeatedDoubling(AbelianGroup)" + +"RepeatedDoubling(AbelianGroup)" [color="#00EE00"]; +"RepeatedDoubling(AbelianGroup)" -> "RepeatedDoubling(a:SetCategory)" + +"RepeatedDoubling(AbelianSemiGroup)" [color="#00EE00"]; +"RepeatedDoubling(AbelianSemiGroup)" -> "RepeatedDoubling(a:SetCategory)" + +"RepeatedDoubling(a:SetCategory)" [color="#00EE00"]; +"RepeatedDoubling(a:SetCategory)" -> "Package" + +"Package" [color="#00EE00"]; + +"CancellationAbelianMonoid()" [color=lightblue]; +"CancellationAbelianMonoid()" -> "AbelianMonoid()" + +"AbelianMonoid()" [color=lightblue]; +"AbelianMonoid()" -> "AbelianSemiGroup()" + +"AbelianSemiGroup()" [color=lightblue]; +"AbelianSemiGroup()" -> "SETCAT..." +"AbelianSemiGroup()" -> "RepeatedDoubling(AbelianSemiGroup)" + +"SETCAT..." [color=lightblue]; +} + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{Dictionary}{DIAGG} -\pagepic{ps/v102dictionary.ps}{DIAGG} +\pagepic{ps/v102dictionary.ps}{DIAGG}{1.00} {\bf See:}\\ +\pageto{FiniteSetAggregate}{FSAGG} \pageto{KeyedDictionary}{KDAGG} \pagefrom{DictionaryOperations}{DIOPS} @@ -4816,7 +6185,7 @@ These are implemented by this category: remove! : ((S -> Boolean),%) -> % if $ has finiteAggregate \end{verbatim} -These exports come from DictionaryOperations(a:SetCategory): +These exports come from DictionaryOperations(S:SetCategory): \begin{verbatim} any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate @@ -4972,7 +6341,7 @@ digraph pic { @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{DequeueAggregate}{DQAGG} -\pagepic{ps/v102dequeueaggregate.ps}{DQAGG} +\pagepic{ps/v102dequeueaggregate.ps}{DQAGG}{1.00} {\bf See:}\\ \pagefrom{QueueAggregate}{QUAGG} @@ -5053,7 +6422,7 @@ These are directly exported but not implemented: top! : % -> S \end{verbatim} -These exports come from StackAggregate(a:Type): +These exports come from StackAggregate(S:Type): \begin{verbatim} any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate @@ -5100,7 +6469,7 @@ These exports come from StackAggregate(a:Type): ?~=? : (%,%) -> Boolean if S has SETCAT \end{verbatim} -These exports come from QueueAggregate(a:Type): +These exports come from QueueAggregate(S:Type): \begin{verbatim} back : % -> S dequeue! : % -> S @@ -5205,7 +6574,7 @@ digraph pic { @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{ExtensibleLinearAggregate}{ELAGG} -\pagepic{ps/v102extensiblelinearaggregate.ps}{ELAGG} +\pagepic{ps/v102extensiblelinearaggregate.ps}{ELAGG}{1.00} {\bf See:}\\ \pageto{ListAggregate}{LSAGG} @@ -5313,7 +6682,7 @@ These are implemented by this category: select : ((S -> Boolean),%) -> % if $ has finiteAggregate \end{verbatim} -These exports come from LinearAggregate(a:Type): +These exports come from LinearAggregate(S:Type): \begin{verbatim} any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate @@ -5503,7 +6872,7 @@ digraph pic { @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{FiniteLinearAggregate}{FLAGG} -\pagepic{ps/v102finitelinearaggregate.ps}{FLAGG} +\pagepic{ps/v102finitelinearaggregate.ps}{FLAGG}{1.00} {\bf See:}\\ \pageto{OneDimensionalArrayAggregate}{A1AGG} @@ -5583,11 +6952,11 @@ digraph pic { \cross{FLAGG}{\#?} \cross{FLAGG}{?.?} \cross{FLAGG}{?.?} -\cross{FLAGG}{??} -\cross{FLAGG}{?>=?} +\cross{FLAGG}{?$>$?} +\cross{FLAGG}{?$>=$?} \cross{FLAGG}{?\~{}=?} These are directly exported but not implemented: @@ -5615,7 +6984,7 @@ These are implemented by this category: if S has ORDSET and $ has shallowlyMutable \end{verbatim} -These exports come from LinearAggregate(a:Type): +These exports come from LinearAggregate(S:Type): \begin{verbatim} any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate @@ -5846,9 +7215,10 @@ digraph pic { @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{MultiDictionary}{MDAGG} -\pagepic{ps/v102multidictionary.ps}{MDAGG} +\pagepic{ps/v102multidictionary.ps}{MDAGG}{1.00} {\bf See:}\\ +\pageto{MultisetAggregate}{MSETAGG} \pagefrom{DictionaryOperations}{DIOPS} {\bf Exports:}\\ @@ -5857,10 +7227,10 @@ digraph pic { copy & count & dictionary & duplicates & empty\\ empty? & eq? & eval & every? & extract!\\ find & hash & insert! & inspect & latex\\ - less? & map & map! & member? & members\\ + less? & map & map! & member? & members\\ more? & parts & reduce & remove & remove! \\ - removeDuplicates & sample & select & select! & size? \\ - \#? & ?=? & ?\~{}=? &&\\ + removeDuplicates & removeDuplicates! & sample & select & select!\\ + size? & \#? & ?=? & ?\~{}=? &\\ \end{tabular} \cross{MDAGG}{any?} @@ -5894,6 +7264,7 @@ digraph pic { \cross{MDAGG}{remove} \cross{MDAGG}{remove!} \cross{MDAGG}{removeDuplicates} +\cross{MDAGG}{removeDuplicates!} \cross{MDAGG}{sample} \cross{MDAGG}{select} \cross{MDAGG}{select!} @@ -5906,10 +7277,10 @@ These are directly exported but not implemented: \begin{verbatim} insert! : (S,%,NonNegativeInteger) -> % removeDuplicates! : % -> % - duplicates : % -> List Record(entry: S,count: NonNegativeInteger) + duplicates : % -> List Record(entry:S,count:NonNegativeInteger) \end{verbatim} -These exports come from DictionaryOperations(a:SetCategory): +These exports come from DictionaryOperations(S:SetCategory): \begin{verbatim} any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate @@ -6047,10 +7418,122 @@ digraph pic { @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{OrderedAbelianMonoid}{OAMON} +\pagepic{ps/v102orderedabelianmonoid.ps}{OAMON}{1.00} + +{\bf See:}\\ +\pagefrom{AbelianMonoid}{ABELMON} +\pagefrom{OrderedAbelianSemiGroup}{OASGP} + +{\bf Exports:}\\ +\begin{tabular}{lllllll} + 0 & coerce & hash & latex & max & min & sample \\ + zero? & ?*? & ?+? & ?$<$? & ?$<=$? & ?=? & ?$>$? \\ + ?$>=$? & ?\~{}=? & ?*? &&&& +\end{tabular} + +\cross{OAMON}{0} +\cross{OAMON}{coerce} +\cross{OAMON}{hash} +\cross{OAMON}{latex} +\cross{OAMON}{max} +\cross{OAMON}{min} +\cross{OAMON}{sample} +\cross{OAMON}{zero?} +\cross{OAMON}{?*?} +\cross{OAMON}{?+?} +\cross{OAMON}{?$<$?} +\cross{OAMON}{?$<=$?} +\cross{OAMON}{?=?} +\cross{OAMON}{?$>$?} +\cross{OAMON}{?$>=$?} +\cross{OAMON}{?\~{}=?} +\cross{OAMON}{?*?} + +These exports come from OrderedAbelianSemiGroup(): +\begin{verbatim} + coerce : % -> OutputForm + hash : % -> SingleInteger + latex : % -> String + max : (%,%) -> % + min : (%,%) -> % + ? Boolean + ?<=? : (%,%) -> Boolean + ?=? : (%,%) -> Boolean + ?>? : (%,%) -> Boolean + ?>=? : (%,%) -> Boolean + ?~=? : (%,%) -> Boolean +\end{verbatim} + +These exports come from AbelianMonoid(): +\begin{verbatim} + 0 : () -> % + sample : () -> % + zero? : % -> Boolean + ?*? : (PositiveInteger,%) -> % + ?+? : (%,%) -> % + ?*? : (NonNegativeInteger,%) -> % +\end{verbatim} + +<>= +)abbrev category OAMON OrderedAbelianMonoid +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ Ordered sets which are also abelian monoids, such that the addition +++ preserves the ordering. +OrderedAbelianMonoid(): Category == + Join(OrderedAbelianSemiGroup, AbelianMonoid) + +@ +<>= +"OAMON" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=OAMON"]; +"OAMON" -> "OASGP" +"OAMON" -> "ABELMON" + +@ +<>= +"OrderedAbelianMonoid()" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=OAMON"]; +"OrderedAbelianMonoid()" -> "OrderedAbelianSemiGroup()" +"OrderedAbelianMonoid()" -> "AbelianMonoid()" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"OrderedAbelianMonoid()" [color=lightblue]; +"OrderedAbelianMonoid()" -> "OrderedAbelianSemiGroup()" +"OrderedAbelianMonoid()" -> "AbelianMonoid()" + +"OrderedAbelianSemiGroup()" [color=lightblue]; +"OrderedAbelianSemiGroup()" -> "OrderedSet()" +"OrderedAbelianSemiGroup()" -> "AbelianMonoid()" + +"OrderedSet()" [color=lightblue]; +"OrderedSet()" -> "SETCAT..." + +"AbelianMonoid()" [color=lightblue]; +"AbelianMonoid()" -> "ABELSG..." + +"SETCAT..." [color=lightblue]; +"ABELSG..." [color=lightblue]; +} + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{StreamAggregate}{STAGG} -%\pagepic{ps/v102streamaggregate.ps}{STAGG} -\includegraphics[scale=0.75]{ps/v102streamaggregate.ps} -\index{images!STAGG} +\pagepic{ps/v102streamaggregate.ps}{STAGG}{0.50} {\bf See:}\\ \pagefrom{LinearAggregate}{LNAGG} @@ -6173,7 +7656,7 @@ These are implemented by this category: ?.? : (%,UniversalSegment Integer) -> % \end{verbatim} -These exports come from UnaryRecursiveAggregate(a:Type): +These exports come from UnaryRecursiveAggregate(S:Type): \begin{verbatim} any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate @@ -6256,7 +7739,7 @@ These exports come from UnaryRecursiveAggregate(a:Type): ?.value : (%,value) -> S \end{verbatim} -These exports come from LinearAggregate(a:Type): +These exports come from LinearAggregate(S:Type): \begin{verbatim} construct : List S -> % delete : (%,Integer) -> % @@ -6448,7 +7931,7 @@ digraph pic { \chapter{Category Layer 7} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{OneDimensionalArrayAggregate}{A1AGG} -\pagepic{ps/v102onedimensionalarrayaggregate.ps}{A1AGG} +\pagepic{ps/v102onedimensionalarrayaggregate.ps}{A1AGG}{1.00} {\bf See:}\\ \pageto{StringAggregate}{SRAGG} @@ -6576,7 +8059,7 @@ These are implemented by this category: ? Boolean if S has ORDSET \end{verbatim} -These exports come from FiniteLinearAggregate(a:Type): +These exports come from FiniteLinearAggregate(S:Type): \begin{verbatim} concat : (S,%) -> % concat : (%,S) -> % @@ -6942,8 +8425,333 @@ digraph pic { } @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{FiniteSetAggregate}{FSAGG} +\pagepic{ps/v102finitesetaggregate.ps}{FSAGG}{0.75} + +{\bf See:}\\ +\pagefrom{Dictionary}{DIAGG} +\pagefrom{SetAggregate}{SETAGG} + +{\bf Exports:}\\ +\begin{tabular}{lllll} + any? & bag & brace & cardinality & coerce\\ + complement & construct & convert & copy & count\\ + count & dictionary & difference & empty & empty?\\ + eq? & eval & every? & extract! & find\\ + hash & index & insert! & inspect & intersect\\ + latex & less? & lookup & map & map!\\ + max & member? & members & min & more?\\ + parts & random & reduce & remove & remove!\\ + removeDuplicates & sample & select & select! & set\\ + size & size? & subset? & symmetricDifference & union\\ + universe & \#? & ?$<$? & ?=? & ?\~{}=?\\ +\end{tabular} + +\cross{FSAGG}{any?} +\cross{FSAGG}{bag} +\cross{FSAGG}{brace} +\cross{FSAGG}{cardinality} +\cross{FSAGG}{coerce} +\cross{FSAGG}{complement} +\cross{FSAGG}{construct} +\cross{FSAGG}{convert} +\cross{FSAGG}{copy} +\cross{FSAGG}{count} +\cross{FSAGG}{count} +\cross{FSAGG}{dictionary} +\cross{FSAGG}{difference} +\cross{FSAGG}{empty} +\cross{FSAGG}{empty?} +\cross{FSAGG}{eq?} +\cross{FSAGG}{eval} +\cross{FSAGG}{every?} +\cross{FSAGG}{extract!} +\cross{FSAGG}{find} +\cross{FSAGG}{hash} +\cross{FSAGG}{index} +\cross{FSAGG}{insert!} +\cross{FSAGG}{inspect} +\cross{FSAGG}{intersect} +\cross{FSAGG}{latex} +\cross{FSAGG}{less?} +\cross{FSAGG}{lookup} +\cross{FSAGG}{map} +\cross{FSAGG}{map!} +\cross{FSAGG}{max} +\cross{FSAGG}{member?} +\cross{FSAGG}{members} +\cross{FSAGG}{min} +\cross{FSAGG}{more?} +\cross{FSAGG}{parts} +\cross{FSAGG}{random} +\cross{FSAGG}{reduce} +\cross{FSAGG}{remove} +\cross{FSAGG}{remove!} +\cross{FSAGG}{removeDuplicates} +\cross{FSAGG}{sample} +\cross{FSAGG}{select} +\cross{FSAGG}{select!} +\cross{FSAGG}{set} +\cross{FSAGG}{size} +\cross{FSAGG}{size?} +\cross{FSAGG}{subset?} +\cross{FSAGG}{symmetricDifference} +\cross{FSAGG}{union} +\cross{FSAGG}{universe} +\cross{FSAGG}{\#?} +\cross{FSAGG}{?$<$?} +\cross{FSAGG}{?=?} +\cross{FSAGG}{?\~{}=?} + +These are implemented by this category: +\begin{verbatim} + brace : List S -> % + cardinality : % -> NonNegativeInteger + coerce : % -> OutputForm + complement : % -> % if S has FINITE + construct : List S -> % + count : (S,%) -> NonNegativeInteger + if S has SETCAT and $ has finiteAggregate + difference : (%,%) -> % + index : PositiveInteger -> % if S has FINITE + intersect : (%,%) -> % + lookup : % -> PositiveInteger if S has FINITE + max : % -> S if S has ORDSET + min : % -> S if S has ORDSET + random : () -> % if S has FINITE + set : List S -> % + size : () -> NonNegativeInteger if S has FINITE + subset? : (%,%) -> Boolean + symmetricDifference : (%,%) -> % + union : (%,%) -> % + universe : () -> % if S has FINITE + ? Boolean + ?=? : (%,%) -> Boolean +\end{verbatim} + +These exports come from Dictionary(S:SetCategory): +\begin{verbatim} + any? : ((S -> Boolean),%) -> Boolean + if $ has finiteAggregate + bag : List S -> % + convert : % -> InputForm if S has KONVERT INFORM + copy : % -> % + count : ((S -> Boolean),%) -> NonNegativeInteger + if $ has finiteAggregate + dictionary : () -> % + dictionary : List S -> % + empty : () -> % + empty? : % -> Boolean + eq? : (%,%) -> Boolean + eval : (%,List S,List S) -> % + if S has EVALAB S + and S has SETCAT + eval : (%,S,S) -> % + if S has EVALAB S + and S has SETCAT + eval : (%,Equation S) -> % + if S has EVALAB S + and S has SETCAT + eval : (%,List Equation S) -> % + if S has EVALAB S + and S has SETCAT + every? : ((S -> Boolean),%) -> Boolean + if $ has finiteAggregate + extract! : % -> S + find : ((S -> Boolean),%) -> Union(S,"failed") + hash : % -> SingleInteger + insert! : (S,%) -> % + inspect : % -> S + latex : % -> String + less? : (%,NonNegativeInteger) -> Boolean + select! : ((S -> Boolean),%) -> % + if $ has finiteAggregate + map : ((S -> S),%) -> % + map! : ((S -> S),%) -> % + if $ has shallowlyMutable + 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 + remove! : ((S -> Boolean),%) -> % + if $ has finiteAggregate + remove! : (S,%) -> % if $ has finiteAggregate + removeDuplicates : % -> % + if S has SETCAT + and $ has finiteAggregate + sample : () -> % + select : ((S -> Boolean),%) -> % + if $ has finiteAggregate + size? : (%,NonNegativeInteger) -> Boolean + #? : % -> NonNegativeInteger if $ has finiteAggregate + ?~=? : (%,%) -> Boolean +\end{verbatim} + +These exports come from SetAggregate(S:SetCategory): +\begin{verbatim} + brace : () -> % + difference : (%,S) -> % + set : () -> % + union : (%,S) -> % + union : (S,%) -> % +\end{verbatim} + +<>= +)abbrev category FSAGG FiniteSetAggregate +++ Author: Michael Monagan; revised by Manuel Bronstein and Richard Jenks +++ Date Created: August 87 through August 88 +++ Date Last Updated: 14 Oct, 1993 by RSS +++ Basic Operations: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ A finite-set aggregate models the notion of a finite set, that is, +++ a collection of elements characterized by membership, but not +++ by order or multiplicity. +++ See \spadtype{Set} for an example. +FiniteSetAggregate(S:SetCategory): Category == + Join(Dictionary S, SetAggregate S) with + finiteAggregate + cardinality: % -> NonNegativeInteger + ++ cardinality(u) returns the number of elements of u. + ++ Note: \axiom{cardinality(u) = #u}. + if S has Finite then + Finite + complement: % -> % + ++ complement(u) returns the complement of the set u, + ++ i.e. the set of all values not in u. + universe: () -> % + ++ universe()$D returns the universal set for finite set aggregate D. + if S has OrderedSet then + max: % -> S + ++ max(u) returns the largest element of aggregate u. + min: % -> S + ++ min(u) returns the smallest element of aggregate u. + + add + s < t == #s < #t and s = intersect(s,t) + s = t == #s = #t and empty? difference(s,t) + brace l == construct l + set l == construct l + cardinality s == #s + construct l == (s := set(); for x in l repeat insert_!(x,s); s) + count(x:S, s:%) == (member?(x, s) => 1; 0) + subset?(s, t) == #s < #t and _and/[member?(x, t) for x in parts s] + + coerce(s:%):OutputForm == + brace [x::OutputForm for x in parts s]$List(OutputForm) + + intersect(s, t) == + i := {} + for x in parts s | member?(x, t) repeat insert_!(x, i) + i + + difference(s:%, t:%) == + m := copy s + for x in parts t repeat remove_!(x, m) + m + + symmetricDifference(s, t) == + d := copy s + for x in parts t repeat + if member?(x, s) then remove_!(x, d) else insert_!(x, d) + d + + union(s:%, t:%) == + u := copy s + for x in parts t repeat insert_!(x, u) + u + + if S has Finite then + universe() == {index(i::PositiveInteger) for i in 1..size()$S} + complement s == difference(universe(), s ) + size() == 2 ** size()$S + index i == + {index(j::PositiveInteger)$S for j in 1..size()$S | bit?(i-1,j-1)} + random() == + index((random()$Integer rem (size()$% + 1))::PositiveInteger) + + lookup s == + n:PositiveInteger := 1 + for x in parts s repeat _ + n := n + 2 ** ((lookup(x) - 1)::NonNegativeInteger) + n + + if S has OrderedSet then + max s == + empty?(l := parts s) => error "Empty set" + reduce("max", l) + + min s == + empty?(l := parts s) => error "Empty set" + reduce("min", l) + +@ +<>= +"FSAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=FSAGG"]; +"FSAGG" -> "DIAGG" +"FSAGG" -> "SETAGG" + +@ +<>= +"FiniteSetAggregate(a:SetCategory)" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=FSAGG"]; +"FiniteSetAggregate(a:SetCategory)" -> "Dictionary(a:SetCategory)" +"FiniteSetAggregate(a:SetCategory)" -> "SetAggregate(a:SetCategory)" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"FiniteSetAggregate(a:SetCategory)" [color=lightblue]; +"FiniteSetAggregate(a:SetCategory)" -> "Dictionary(a:SetCategory)" +"FiniteSetAggregate(a:SetCategory)" -> "SetAggregate(a:SetCategory)" + +"SetAggregate(a:SetCategory)" [color=lightblue]; +"SetAggregate(a:SetCategory)" -> "SetCategory()" +"SetAggregate(a:SetCategory)" -> "CLAGG..." + +"SetCategory()" [color=lightblue]; +"SetCategory()" -> "BASTYPE..." +"SetCategory()" -> "KOERCE..." + +"Dictionary(a:SetCategory)" [color=lightblue]; +"Dictionary(a:SetCategory)" -> "DictionaryOperations(a:SetCategory)" + +"DictionaryOperations(a:SetCategory)" [color=lightblue]; +"DictionaryOperations(a:SetCategory)" -> "BGAGG..." +"DictionaryOperations(a:SetCategory)" -> "CLAGG..." + +"BGAGG..." [color=lightblue]; +"CLAGG..." [color=lightblue]; +"BASTYPE..." [color=lightblue]; +"KOERCE..." [color=lightblue]; +} + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{KeyedDictionary}{KDAGG} -\pagepic{ps/v102keyeddictionary.ps}{KDAGG} +\pagepic{ps/v102keyeddictionary.ps}{KDAGG}{1.00} {\bf See:}\\ \pageto{TableAggregate}{TBAGG} @@ -7018,7 +8826,7 @@ These are implemented by this category: \end{verbatim} These exports come from Dictionary(R) \\ -where R=Record(a:SetCategory,b:SetCategory)): +where R=Record(a:SetCategory,b:SetCategory))\\ and S=Record(key: Key,entry: Entry) \begin{verbatim} any? : ((S) -> Boolean),%) -> Boolean @@ -7174,12 +8982,11 @@ digraph pic { "HOAGG..." [color=lightblue]; } + @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{ListAggregate}{LSAGG} -%\pagepic{ps/v102listaggregate.ps}{LSAGG} -\includegraphics[scale=0.75]{ps/v102listaggregate.ps} -\index{images!LSAGG} +\pagepic{ps/v102listaggregate.ps}{LSAGG}{0.50} {\bf See:}\\ \pageto{AssociationListAggregate}{ALAGG} @@ -7349,7 +9156,7 @@ These are implemented by this category: ? Boolean if S has ORDSET \end{verbatim} -These exports come from StreamAggregate(a:Type): +These exports come from StreamAggregate(S:Type): \begin{verbatim} any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate @@ -7469,7 +9276,7 @@ These exports come from StreamAggregate(a:Type): ?~=? : (%,%) -> Boolean if S has SETCAT \end{verbatim} -These exports come from FiniteLinearAggregate(a:Type) +These exports come from FiniteLinearAggregate(S:Type) \begin{verbatim} max : (%,%) -> % if S has ORDSET merge : (%,%) -> % if S has ORDSET @@ -7485,7 +9292,7 @@ These exports come from FiniteLinearAggregate(a:Type) ?>=? : (%,%) -> Boolean if S has ORDSET \end{verbatim} -These exports come from ExtensibleLinearAggregate(a:Type): +These exports come from ExtensibleLinearAggregate(S:Type): \begin{verbatim} merge! : (%,%) -> % if S has ORDSET remove! : (S,%) -> % if S has SETCAT @@ -7766,8 +9573,335 @@ digraph pic { @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{MultisetAggregate}{MSETAGG} +\pagepic{ps/v102multisetaggregate.ps}{MSETAGG}{0.75} + +{\bf See:}\\ +\pageto{OrderedMultisetAggregate}{OMSAGG} +\pagefrom{MultiDictionary}{MDAGG} +\pagefrom{SetAggregate}{SETAGG} + +{\bf Exports:}\\ +\begin{tabular}{lllll} + any? & bag & brace & coerce & construct\\ + convert & copy & count & dictionary & difference\\ + duplicates & empty & empty? & eq? & eval\\ + every? & extract! & find & hash & insert!\\ + inspect & intersect & latex & less? & map\\ + map! & member? & members & more? & parts\\ + reduce & remove & remove! & removeDuplicates & removeDuplicates!\\ + sample & select & select! & set & size?\\ + subset? & symmetricDifference & union & \#? & ?\~{}=?\\ + ?$<$? & ?=? &&& +\end{tabular} + +\cross{MSETAGG}{any?} +\cross{MSETAGG}{bag} +\cross{MSETAGG}{brace} +\cross{MSETAGG}{coerce} +\cross{MSETAGG}{construct} +\cross{MSETAGG}{convert} +\cross{MSETAGG}{copy} +\cross{MSETAGG}{count} +\cross{MSETAGG}{dictionary} +\cross{MSETAGG}{difference} +\cross{MSETAGG}{duplicates} +\cross{MSETAGG}{empty} +\cross{MSETAGG}{empty?} +\cross{MSETAGG}{eq?} +\cross{MSETAGG}{eval} +\cross{MSETAGG}{every?} +\cross{MSETAGG}{extract!} +\cross{MSETAGG}{find} +\cross{MSETAGG}{hash} +\cross{MSETAGG}{insert!} +\cross{MSETAGG}{inspect} +\cross{MSETAGG}{intersect} +\cross{MSETAGG}{latex} +\cross{MSETAGG}{less?} +\cross{MSETAGG}{map} +\cross{MSETAGG}{map!} +\cross{MSETAGG}{member?} +\cross{MSETAGG}{members} +\cross{MSETAGG}{more?} +\cross{MSETAGG}{parts} +\cross{MSETAGG}{reduce} +\cross{MSETAGG}{remove} +\cross{MSETAGG}{remove!} +\cross{MSETAGG}{removeDuplicates} +\cross{MSETAGG}{removeDuplicates!} +\cross{MSETAGG}{sample} +\cross{MSETAGG}{select} +\cross{MSETAGG}{select!} +\cross{MSETAGG}{set} +\cross{MSETAGG}{size?} +\cross{MSETAGG}{subset?} +\cross{MSETAGG}{symmetricDifference} +\cross{MSETAGG}{union} +\cross{MSETAGG}{\#?} +\cross{MSETAGG}{?\~{}=?} +\cross{MSETAGG}{?$<$?} +\cross{MSETAGG}{?=?} + +These exports come from MultiDictionary(S:SetCategory): +\begin{verbatim} + any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate + bag : List S -> % + coerce : % -> OutputForm + 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 + dictionary : List S -> % + dictionary : () -> % + duplicates : % -> List Record(entry: S,count: NonNegativeInteger) + empty : () -> % + empty? : % -> Boolean + eq? : (%,%) -> Boolean + eval : (%,List S,List S) -> % if S has EVALAB S and S has SETCAT + eval : (%,S,S) -> % if S has EVALAB S and S has SETCAT + eval : (%,Equation S) -> % if S has EVALAB S and S has SETCAT + eval : (%,List Equation S) -> % if S has EVALAB S and S has SETCAT + every? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate + extract! : % -> S + find : ((S -> Boolean),%) -> Union(S,"failed") + hash : % -> SingleInteger + insert! : (S,%) -> % + insert! : (S,%,NonNegativeInteger) -> % + inspect : % -> S + latex : % -> String + less? : (%,NonNegativeInteger) -> Boolean + map : ((S -> S),%) -> % + map! : ((S -> S),%) -> % if $ has shallowlyMutable + 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 + removeDuplicates! : % -> % + remove! : ((S -> Boolean),%) -> % if $ has finiteAggregate + remove! : (S,%) -> % if $ has finiteAggregate + select : ((S -> Boolean),%) -> % if $ has finiteAggregate + select! : ((S -> Boolean),%) -> % if $ has finiteAggregate + size? : (%,NonNegativeInteger) -> Boolean + #? : % -> NonNegativeInteger if $ has finiteAggregate + ?~=? : (%,%) -> Boolean + ?=? : (%,%) -> Boolean +\end{verbatim} + +These exports come from SetAggregate(S:SetCategory): +\begin{verbatim} + brace : () -> % + brace : List S -> % + difference : (%,S) -> % + intersect : (%,%) -> % + sample : () -> % + set : () -> % + set : List S -> % + subset? : (%,%) -> Boolean + symmetricDifference : (%,%) -> % + union : (%,S) -> % + union : (S,%) -> % + union : (%,%) -> % + ? Boolean +\end{verbatim} + +<>= +)abbrev category MSETAGG MultisetAggregate +++ 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: +++ A multi-set aggregate is a set which keeps track of the multiplicity +++ of its elements. +MultisetAggregate(S:SetCategory): + Category == Join(MultiDictionary S, SetAggregate S) + +@ +<>= +"MSETAGG" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=MSETAGG"]; +"MSETAGG" -> "MDAGG" +"MSETAGG" -> "SETAGG" + +@ +<>= +"MultisetAggregate(a:SetCategory)" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=MSETAGG"]; +"MultisetAggregate(a:SetCategory)" -> "MultiDictionary(a:SetCategory)" +"MultisetAggregate(a:SetCategory)" -> "SetAggregate(a:SetCategory)" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"MultisetAggregate(a:SetCategory)" [color=lightblue]; +"MultisetAggregate(a:SetCategory)" -> "MultiDictionary(a:SetCategory)" +"MultisetAggregate(a:SetCategory)" -> "SetAggregate(a:SetCategory)" + +"MultiDictionary(a:SetCategory)" [color=lightblue]; +"MultiDictionary(a:SetCategory)" -> "DictionaryOperations(a:SetCategory)" + +"SetAggregate(a:SetCategory)" [color=lightblue]; +"SetAggregate(a:SetCategory)" -> "SETAGG..." +"SetAggregate(a:SetCategory)" -> "CLAGG..." + +"DictionaryOperations(a:SetCategory)" [color=lightblue]; +"DictionaryOperations(a:SetCategory)" -> "BGAGG..." +"DictionaryOperations(a:SetCategory)" -> "CLAGG..." + +"BGAGG..." [color=lightblue]; +"CLAGG..." [color=lightblue]; +"SETAGG..." [color=lightblue]; +} + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{Rng}{RNG} +\pagepic{ps/v102rng.ps}{RNG}{1.00} + +{\bf See:}\\ +\pagefrom{AbelianGroup}{ABELGRP} +\pagefrom{SemiGroup}{SGROUP} + +{\bf Exports:}\\ +\begin{tabular}{lllll} + 0 & coerce & hash & latex & sample \\ + zero? & subtractIfCan & ?*? & ?**? & ?+? \\ + ?-? & -? & ?=? & ?\~{}=? & ?\^{}? \\ +\end{tabular} + +\cross{RNG}{0} +\cross{RNG}{coerce} +\cross{RNG}{hash} +\cross{RNG}{latex} +\cross{RNG}{sample} +\cross{RNG}{zero?} +\cross{RNG}{subtractIfCan} +\cross{RNG}{?*?} +\cross{RNG}{?**?} +\cross{RNG}{?+?} +\cross{RNG}{?-?} +\cross{RNG}{-?} +\cross{RNG}{?=?} +\cross{RNG}{?\~{}=?} +\cross{RNG}{?\^{}?} + +These exports come from AbelianGroup(): +\begin{verbatim} + 0 : () -> % + coerce : % -> OutputForm + hash : % -> SingleInteger + latex : % -> String + sample : () -> % + subtractIfCan : (%,%) -> Union(%,"failed") + zero? : % -> Boolean + ?+? : (%,%) -> % + ?=? : (%,%) -> Boolean + ?~=? : (%,%) -> Boolean + ?*? : (NonNegativeInteger,%) -> % + ?*? : (PositiveInteger,%) -> % + ?*? : (Integer,%) -> % + ?-? : (%,%) -> % + -? : % -> % +\end{verbatim} + +These exports come from SemiGroup(): +\begin{verbatim} + ?*? : (%,%) -> % + ?**? : (%,PositiveInteger) -> % + ?^? : (%,PositiveInteger) -> % +\end{verbatim} + +<>= +)abbrev category RNG Rng +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ The category of associative rings, not necessarily commutative, and not +++ necessarily with a 1. This is a combination of an abelian group +++ and a semigroup, with multiplication distributing over addition. +++ +++ Axioms: +++ \spad{ x*(y+z) = x*y + x*z} +++ \spad{ (x+y)*z = x*z + y*z } +++ +++ Conditional attributes: +++ \spadnoZeroDivisors\tab{25}\spad{ ab = 0 => a=0 or b=0} +Rng(): Category == Join(AbelianGroup,SemiGroup) + +@ +<>= +"RNG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=RNG"]; +"RNG" -> "ABELGRP" +"RNG" -> "SGROUP" + +@ +<>= +"Rng()" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=RNG"]; +"Rng()" -> "AbelianGroup()" +"Rng()" -> "SemiGroup()" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"Rng()" [color=lightblue]; +"Rng()" -> "AbelianGroup()" +"Rng()" -> "SemiGroup()" + +"AbelianGroup()" [color=lightblue]; +"AbelianGroup()" -> "CancellationAbelianMonoid()" +"AbelianGroup()" -> "REPDB..." + +"CancellationAbelianMonoid()" [color=lightblue]; +"CancellationAbelianMonoid()" -> "AbelianMonoid()" + +"AbelianMonoid()" [color=lightblue]; +"AbelianMonoid()" -> "AbelianSemiGroup()" + +"AbelianSemiGroup()" [color=lightblue]; +"AbelianSemiGroup()" -> "SETCAT..." +"AbelianSemiGroup()" -> "REPDB..." + +"SemiGroup()" [color=lightblue]; +"SemiGroup()" -> "SETCAT..." +"SemiGroup()" -> "REPSQ..." + +"REPDB..." [color="#00EE00"]; +"REPSQ..." [color="#00EE00"]; +"SETCAT..." [color=lightblue]; +} + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{StringAggregate}{SRAGG} -\pagepic{ps/v102stringaggregate.ps}{SRAGG} +\pagepic{ps/v102stringaggregate.ps}{SRAGG}{1.00} {\bf See:}\\ \pagefrom{OneDimensionalArrayAggregate}{A1AGG} @@ -8187,9 +10321,7 @@ digraph pic { @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{TableAggregate}{TBAGG} -%\pagepic{ps/v102tableaggregate.ps}{TBAGG} -\includegraphics[scale=0.60]{ps/v102tableaggregate.ps} -\index{images!TBAGG} +\pagepic{ps/v102tableaggregate.ps}{TBAGG}{0.60} {\bf See:}\\ \pageto{AssociationListAggregate}{ALAGG} @@ -8274,7 +10406,8 @@ These are directly exported but not implemented: These are implemented by this category: \begin{verbatim} - any? : ((Entry -> Boolean),%) -> Boolean if $ has finiteAggregate + any? : ((Entry -> Boolean),%) -> Boolean + if $ has finiteAggregate coerce : % -> OutputForm if Entry has SETCAT or Record(key: Key,entry: Entry) has SETCAT @@ -8314,92 +10447,92 @@ These are implemented by this category: These exports come from KeyedDictionary(Key,Entry)\\ where Key:SetCategory and Entry:SetCategory\\ -and RECKEYENTRY=Record(key: Key,entry: Entry): +and RecKE=Record(key: Key,entry: Entry): \begin{verbatim} - any? : ((RECKEYENTRY -> Boolean),%) -> Boolean + any? : ((RecKE -> Boolean),%) -> Boolean if $ has finiteAggregate - bag : List RECKEYENTRY -> % - construct : List RECKEYENTRY -> % - convert : % -> InputForm if RECKEYENTRY has KONVERT INFORM + bag : List RecKE -> % + construct : List RecKE -> % + convert : % -> InputForm if RecKE has KONVERT INFORM copy : % -> % count : (Entry,%) -> NonNegativeInteger if Entry has SETCAT and $ has finiteAggregate - count : ((RECKEYENTRY -> Boolean),%) -> NonNegativeInteger + count : ((RecKE -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate dictionary : () -> % - dictionary : List RECKEYENTRY -> % + dictionary : List RecKE -> % empty : () -> % empty? : % -> Boolean eq? : (%,%) -> Boolean - eval : (%,List RECKEYENTRY,List RECKEYENTRY) -> % - if RECKEYENTRY has EVALAB RECKEYENTRY - and RECKEYENTRY has SETCAT - eval : (%,RECKEYENTRY,RECKEYENTRY) -> % - if RECKEYENTRY has EVALAB RECKEYENTRY - and RECKEYENTRY has SETCAT - eval : (%,Equation RECKEYENTRY) -> % - if RECKEYENTRY has EVALAB RECKEYENTRY - and RECKEYENTRY has SETCAT - eval : (%,List Equation RECKEYENTRY) -> % - if RECKEYENTRY has EVALAB RECKEYENTRY - and RECKEYENTRY has SETCAT - every? : ((RECKEYENTRY -> Boolean),%) -> Boolean + eval : (%,List RecKE,List RecKE) -> % + if RecKE has EVALAB RecKE + and RecKE has SETCAT + eval : (%,RecKE,RecKE) -> % + if RecKE has EVALAB RecKE + and RecKE has SETCAT + eval : (%,Equation RecKE) -> % + if RecKE has EVALAB RecKE + and RecKE has SETCAT + eval : (%,List Equation RecKE) -> % + if RecKE has EVALAB RecKE + and RecKE has SETCAT + every? : ((RecKE -> Boolean),%) -> Boolean if $ has finiteAggregate key? : (Key,%) -> Boolean keys : % -> List Key hash : % -> SingleInteger if Entry has SETCAT - or RECKEYENTRY has SETCAT + or RecKE has SETCAT latex : % -> String if Entry has SETCAT - or RECKEYENTRY has SETCAT + or RecKE has SETCAT less? : (%,NonNegativeInteger) -> Boolean - member? : (RECKEYENTRY,%) -> Boolean - if RECKEYENTRY has SETCAT + member? : (RecKE,%) -> Boolean + if RecKE has SETCAT and $ has finiteAggregate - members : % -> List RECKEYENTRY if $ has finiteAggregate + members : % -> List RecKE if $ has finiteAggregate more? : (%,NonNegativeInteger) -> Boolean reduce : - (((RECKEYENTRY,RECKEYENTRY) -> RECKEYENTRY),%) -> RECKEYENTRY + (((RecKE,RecKE) -> RecKE),%) -> RecKE if $ has finiteAggregate reduce : - (((RECKEYENTRY,RECKEYENTRY)->RECKEYENTRY),%,RECKEYENTRY) -> RECKEYENTRY + (((RecKE,RecKE)->RecKE),%,RecKE) -> RecKE if $ has finiteAggregate reduce : - (((RECKEYENTRY,RECKEYENTRY)->RECKEYENTRY),%,RECKEYENTRY,RECKEYENTRY) - -> RECKEYENTRY - if RECKEYENTRY has SETCAT + (((RecKE,RecKE)->RecKE),%,RecKE,RecKE) + -> RecKE + if RecKE has SETCAT and $ has finiteAggregate - remove : ((RECKEYENTRY -> Boolean),%) -> % + remove : ((RecKE -> Boolean),%) -> % if $ has finiteAggregate - remove : (RECKEYENTRY,%) -> % - if RECKEYENTRY has SETCAT + remove : (RecKE,%) -> % + if RecKE has SETCAT and $ has finiteAggregate - remove! : ((RECKEYENTRY -> Boolean),%) -> % + remove! : ((RecKE -> Boolean),%) -> % if $ has finiteAggregate - remove! : (RECKEYENTRY,%) -> % if $ has finiteAggregate + remove! : (RecKE,%) -> % if $ has finiteAggregate removeDuplicates : % -> % - if RECKEYENTRY has SETCAT + if RecKE has SETCAT and $ has finiteAggregate sample : () -> % search : (Key,%) -> Union(Entry,"failed") - select : ((RECKEYENTRY -> Boolean),%) -> % + select : ((RecKE -> Boolean),%) -> % if $ has finiteAggregate - select! : ((RECKEYENTRY -> Boolean),%) -> % + select! : ((RecKE -> Boolean),%) -> % if $ has finiteAggregate #? : % -> NonNegativeInteger if $ has finiteAggregate ?~=? : (%,%) -> Boolean if Entry has SETCAT - or RECKEYENTRY has SETCAT + or RecKE has SETCAT \end{verbatim} These exports come from IndexedAggregate(Key,Entry))\\ where Key:SetCategory and Entry:SetCategory\\ -and RECKEYENTRY=Record(key: Key,entry: Entry): +and RecKE=Record(key: Key,entry: Entry): \begin{verbatim} - count : (RECKEYENTRY,%) -> NonNegativeInteger - if RECKEYENTRY has SETCAT + count : (RecKE,%) -> NonNegativeInteger + if RecKE has SETCAT and $ has finiteAggregate entry? : (Entry,%) -> Boolean if $ has finiteAggregate @@ -8633,9 +10766,7 @@ digraph pic { \chapter{Category Layer 8} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{AssociationListAggregate}{ALAGG} -%\pagepic{ps/v102associationlistaggregate.ps}{ALAGG} -\includegraphics[scale=0.50]{ps/v102associationlistaggregate.ps} -\index{images!ALAGG} +\pagepic{ps/v102associationlistaggregate.ps}{ALAGG}{0.50} {\bf See:}\\ \pagefrom{ListAggregate}{LSAGG} @@ -8784,41 +10915,41 @@ These are directly exported but not implemented: These exports come from TableAggregate(Key, Entry)\\ where Key:SetCategory and Entry:SetCategory\\ -and RECKEYENTRY = Record(key: Key,entry: Entry) +and RecKE = Record(key: Key,entry: Entry) \begin{verbatim} - any? : ((RECKEYENTRY -> Boolean),%) -> Boolean + any? : ((RecKE -> Boolean),%) -> Boolean if $ has finiteAggregate any? : ((Entry -> Boolean),%) -> Boolean if $ has finiteAggregate - any? : ((RECKEYENTRY -> Boolean),%) -> Boolean + any? : ((RecKE -> Boolean),%) -> Boolean if $ has finiteAggregate - bag : List RECKEYENTRY -> % - construct : List RECKEYENTRY -> % + bag : List RecKE -> % + construct : List RecKE -> % convert : % -> InputForm - if RECKEYENTRY has KONVERT INFORM - or RECKEYENTRY has KONVERT INFORM + if RecKE has KONVERT INFORM + or RecKE has KONVERT INFORM copy : % -> % count : - ((RECKEYENTRY -> Boolean),%) -> NonNegativeInteger + ((RecKE -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate - count : (RECKEYENTRY,%) -> NonNegativeInteger - if RECKEYENTRY has SETCAT + count : (RecKE,%) -> NonNegativeInteger + if RecKE has SETCAT and $ has finiteAggregate count : ((Entry -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate count : (Entry,%) -> NonNegativeInteger if Entry has SETCAT and $ has finiteAggregate - count : (RECKEYENTRY,%) -> NonNegativeInteger - if RECKEYENTRY has SETCAT + count : (RecKE,%) -> NonNegativeInteger + if RecKE has SETCAT and $ has finiteAggregate count : - ((RECKEYENTRY -> Boolean),%) -> NonNegativeInteger + ((RecKE -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate dictionary : () -> % - dictionary : List RECKEYENTRY -> % + dictionary : List RecKE -> % elt : (%,Key,Entry) -> Entry - elt : (%,Integer,RECKEYENTRY) -> RECKEYENTRY + elt : (%,Integer,RecKE) -> RecKE empty : () -> % empty? : % -> Boolean entries : % -> List Entry @@ -8826,18 +10957,18 @@ and RECKEYENTRY = Record(key: Key,entry: Entry) if $ has finiteAggregate and Entry has SETCAT eq? : (%,%) -> Boolean - eval : (%,List Equation RECKEYENTRY) -> % - if RECKEYENTRY has EVALAB RECKEYENTRY - and RECKEYENTRY has SETCAT - eval : (%,Equation RECKEYENTRY) -> % - if RECKEYENTRY has EVALAB RECKEYENTRY - and RECKEYENTRY has SETCAT - eval : (%,RECKEYENTRY,RECKEYENTRY) -> % - if RECKEYENTRY has EVALAB RECKEYENTRY - and RECKEYENTRY has SETCAT - eval : (%,List RECKEYENTRY,List RECKEYENTRY) -> % - if RECKEYENTRY has EVALAB RECKEYENTRY - and RECKEYENTRY has SETCAT + eval : (%,List Equation RecKE) -> % + if RecKE has EVALAB RecKE + and RecKE has SETCAT + eval : (%,Equation RecKE) -> % + if RecKE has EVALAB RecKE + and RecKE has SETCAT + eval : (%,RecKE,RecKE) -> % + if RecKE has EVALAB RecKE + and RecKE has SETCAT + eval : (%,List RecKE,List RecKE) -> % + if RecKE has EVALAB RecKE + and RecKE has SETCAT eval : (%,List Equation Entry) -> % if Entry has EVALAB Entry and Entry has SETCAT @@ -8850,124 +10981,124 @@ and RECKEYENTRY = Record(key: Key,entry: Entry) eval : (%,List Entry,List Entry) -> % if Entry has EVALAB Entry and Entry has SETCAT - eval : (%,List RECKEYENTRY,List RECKEYENTRY) -> % - if RECKEYENTRY has EVALAB RECKEYENTRY - and RECKEYENTRY has SETCAT - eval : (%,RECKEYENTRY,RECKEYENTRY) -> % - if RECKEYENTRY has EVALAB RECKEYENTRY - and RECKEYENTRY has SETCAT - eval : (%,Equation RECKEYENTRY) -> % - if RECKEYENTRY has EVALAB RECKEYENTRY - and RECKEYENTRY has SETCAT - eval : (%,List Equation RECKEYENTRY) -> % - if RECKEYENTRY has EVALAB RECKEYENTRY - and RECKEYENTRY has SETCAT - every? : ((RECKEYENTRY -> Boolean),%) -> Boolean + eval : (%,List RecKE,List RecKE) -> % + if RecKE has EVALAB RecKE + and RecKE has SETCAT + eval : (%,RecKE,RecKE) -> % + if RecKE has EVALAB RecKE + and RecKE has SETCAT + eval : (%,Equation RecKE) -> % + if RecKE has EVALAB RecKE + and RecKE has SETCAT + eval : (%,List Equation RecKE) -> % + if RecKE has EVALAB RecKE + and RecKE has SETCAT + every? : ((RecKE -> Boolean),%) -> Boolean if $ has finiteAggregate every? : ((Entry -> Boolean),%) -> Boolean if $ has finiteAggregate - extract! : % -> RECKEYENTRY + extract! : % -> RecKE fill! : (%,Entry) -> % if $ has shallowlyMutable - find : ((RECKEYENTRY -> Boolean),%) -> Union(RECKEYENTRY,"failed") + find : ((RecKE -> Boolean),%) -> Union(RecKE,"failed") first : % -> Entry if Key has ORDSET hash : % -> SingleInteger - if RECKEYENTRY has SETCAT + if RecKE has SETCAT or Entry has SETCAT - or RECKEYENTRY has SETCAT + or RecKE has SETCAT index? : (Key,%) -> Boolean indices : % -> List Key - insert! : (RECKEYENTRY,%) -> % - inspect : % -> RECKEYENTRY + insert! : (RecKE,%) -> % + inspect : % -> RecKE key? : (Key,%) -> Boolean keys : % -> List Key latex : % -> String - if RECKEYENTRY has SETCAT + if RecKE has SETCAT or Entry has SETCAT - or RECKEYENTRY has SETCAT + or RecKE has SETCAT less? : (%,NonNegativeInteger) -> Boolean map : ((Entry -> Entry),%) -> % - map : ((RECKEYENTRY -> RECKEYENTRY),%) -> % + map : ((RecKE -> RecKE),%) -> % map : (((Entry,Entry) -> Entry),%,%) -> % - map! : ((RECKEYENTRY -> RECKEYENTRY),%) -> % + map! : ((RecKE -> RecKE),%) -> % if $ has shallowlyMutable map! : ((Entry -> Entry),%) -> % if $ has shallowlyMutable - map! : ((RECKEYENTRY -> RECKEYENTRY),%) -> % + map! : ((RecKE -> RecKE),%) -> % if $ has shallowlyMutable maxIndex : % -> Key if Key has ORDSET - member? : (RECKEYENTRY,%) -> Boolean - if RECKEYENTRY has SETCAT + member? : (RecKE,%) -> Boolean + if RecKE has SETCAT and $ has finiteAggregate member? : (Entry,%) -> Boolean if Entry has SETCAT and $ has finiteAggregate - members : % -> List RECKEYENTRY if $ has finiteAggregate + members : % -> List RecKE if $ has finiteAggregate members : % -> List Entry if $ has finiteAggregate - members : % -> List RECKEYENTRY if $ has finiteAggregate + members : % -> List RecKE if $ has finiteAggregate minIndex : % -> Key if Key has ORDSET more? : (%,NonNegativeInteger) -> Boolean parts : % -> List Entry if $ has finiteAggregate - parts : % -> List RECKEYENTRY if $ has finiteAggregate + parts : % -> List RecKE if $ has finiteAggregate qelt : (%,Key) -> Entry qsetelt! : (%,Key,Entry) -> Entry if $ has shallowlyMutable reduce : - (((RECKEYENTRY,RECKEYENTRY) -> RECKEYENTRY),%) - -> RECKEYENTRY + (((RecKE,RecKE) -> RecKE),%) + -> RecKE if $ has finiteAggregate reduce : - (((RECKEYENTRY,RECKEYENTRY) -> RECKEYENTRY),%,RECKEYENTRY) - -> RECKEYENTRY + (((RecKE,RecKE) -> RecKE),%,RecKE) + -> RecKE if $ has finiteAggregate reduce : - (((RECKEYENTRY,RECKEYENTRY) -> RECKEYENTRY),%,RECKEYENTRY,RECKEYENTRY) - -> RECKEYENTRY - if RECKEYENTRY has SETCAT + (((RecKE,RecKE) -> RecKE),%,RecKE,RecKE) + -> RecKE + if RecKE has SETCAT and $ has finiteAggregate - remove : ((RECKEYENTRY -> Boolean),%) -> % if $ has finiteAggregate - remove : (RECKEYENTRY,%) -> % - if RECKEYENTRY has SETCAT + remove : ((RecKE -> Boolean),%) -> % if $ has finiteAggregate + remove : (RecKE,%) -> % + if RecKE has SETCAT and $ has finiteAggregate remove! : (Key,%) -> Union(Entry,"failed") - remove! : (RECKEYENTRY,%) -> % if RECKEYENTRY has SETCAT - remove! : (RECKEYENTRY,%) -> % if $ has finiteAggregate + remove! : (RecKE,%) -> % if RecKE has SETCAT + remove! : (RecKE,%) -> % if $ has finiteAggregate removeDuplicates : % -> % - if RECKEYENTRY has SETCAT + if RecKE has SETCAT and $ has finiteAggregate - or RECKEYENTRY has SETCAT + or RecKE has SETCAT and $ has finiteAggregate sample : () -> % search : (Key,%) -> Union(Entry,"failed") - select : ((RECKEYENTRY -> Boolean),%) -> % + select : ((RecKE -> Boolean),%) -> % if $ has finiteAggregate - select! : ((RECKEYENTRY -> Boolean),%) -> % + select! : ((RecKE -> Boolean),%) -> % if $ has finiteAggregate setelt : (%,Key,Entry) -> Entry size? : (%,NonNegativeInteger) -> Boolean swap! : (%,Key,Key) -> Void if $ has shallowlyMutable table : () -> % - table : List RECKEYENTRY -> % + table : List RecKE -> % ?~=? : (%,%) -> Boolean - if RECKEYENTRY has SETCAT + if RecKE has SETCAT or Entry has SETCAT - or RECKEYENTRY has SETCAT + or RecKE has SETCAT ?.? : (%,Key) -> Entry \end{verbatim} -These exports come from ListAggregate(a:Type)\\ +These exports come from ListAggregate(a)\\ where a is Record(key:Key,entry:Entry)\\ -and RECKEYENTRY=Record(key: Key,entry: Entry) +and RecKE=Record(key: Key,entry: Entry) \begin{verbatim} children : % -> List % - child? : (%,%) -> Boolean if RECKEYENTRY has SETCAT + child? : (%,%) -> Boolean if RecKE has SETCAT coerce : % -> OutputForm - if RECKEYENTRY has SETCAT + if RecKE has SETCAT or Entry has SETCAT - or RECKEYENTRY has SETCAT + or RecKE has SETCAT concat : (%,%) -> % concat : List % -> % - concat : (RECKEYENTRY,%) -> % - concat : (%,RECKEYENTRY) -> % + concat : (RecKE,%) -> % + concat : (%,RecKE) -> % concat! : (%,%) -> % - concat! : (%,RECKEYENTRY) -> % + concat! : (%,RecKE) -> % copyInto! : (%,%,Integer) -> % if $ has shallowlyMutable cycleEntry : % -> % cycleLength : % -> NonNegativeInteger @@ -8979,108 +11110,108 @@ and RECKEYENTRY=Record(key: Key,entry: Entry) delete : (%,UniversalSegment Integer) -> % delete! : (%,UniversalSegment Integer) -> % distance : (%,%) -> Integer - entries : % -> List RECKEYENTRY - entry? : (RECKEYENTRY,%) -> Boolean + entries : % -> List RecKE + entry? : (RecKE,%) -> Boolean if $ has finiteAggregate - and RECKEYENTRY has SETCAT + and RecKE has SETCAT explicitlyFinite? : % -> Boolean - fill! : (%,RECKEYENTRY) -> % if $ has shallowlyMutable - first : % -> RECKEYENTRY + fill! : (%,RecKE) -> % if $ has shallowlyMutable + first : % -> RecKE first : (%,NonNegativeInteger) -> % index? : (Integer,%) -> Boolean indices : % -> List Integer insert : (%,%,Integer) -> % - insert : (RECKEYENTRY,%,Integer) -> % + insert : (RecKE,%,Integer) -> % insert! : (%,%,Integer) -> % - insert! : (RECKEYENTRY,%,Integer) -> % - last : % -> RECKEYENTRY + insert! : (RecKE,%,Integer) -> % + last : % -> RecKE last : (%,NonNegativeInteger) -> % leaf? : % -> Boolean - leaves : % -> List RECKEYENTRY - list : RECKEYENTRY -> % - map : (((RECKEYENTRY,RECKEYENTRY) -> RECKEYENTRY),%,%) -> % - max : (%,%) -> % if RECKEYENTRY has ORDSET + leaves : % -> List RecKE + list : RecKE -> % + map : (((RecKE,RecKE) -> RecKE),%,%) -> % + max : (%,%) -> % if RecKE has ORDSET maxIndex : % -> Integer if Integer has ORDSET - merge : (%,%) -> % if RECKEYENTRY has ORDSET - merge : (((RECKEYENTRY,RECKEYENTRY) -> Boolean),%,%) -> % - merge! : (%,%) -> % if RECKEYENTRY has ORDSET - merge! : (((RECKEYENTRY,RECKEYENTRY) -> Boolean),%,%) -> % - min : (%,%) -> % if RECKEYENTRY has ORDSET + merge : (%,%) -> % if RecKE has ORDSET + merge : (((RecKE,RecKE) -> Boolean),%,%) -> % + merge! : (%,%) -> % if RecKE has ORDSET + merge! : (((RecKE,RecKE) -> Boolean),%,%) -> % + min : (%,%) -> % if RecKE has ORDSET minIndex : % -> Integer if Integer has ORDSET - new : (NonNegativeInteger,RECKEYENTRY) -> % + new : (NonNegativeInteger,RecKE) -> % nodes : % -> List % - node? : (%,%) -> Boolean if RECKEYENTRY has SETCAT - position : (RECKEYENTRY,%,Integer) -> Integer - if RECKEYENTRY has SETCAT - position : (RECKEYENTRY,%) -> Integer - if RECKEYENTRY has SETCAT - position : ((RECKEYENTRY -> Boolean),%) -> Integer + node? : (%,%) -> Boolean if RecKE has SETCAT + position : (RecKE,%,Integer) -> Integer + if RecKE has SETCAT + position : (RecKE,%) -> Integer + if RecKE has SETCAT + position : ((RecKE -> Boolean),%) -> Integer possiblyInfinite? : % -> Boolean - qelt : (%,Integer) -> RECKEYENTRY - qsetelt! : (%,Integer,RECKEYENTRY) -> RECKEYENTRY + qelt : (%,Integer) -> RecKE + qsetelt! : (%,Integer,RecKE) -> RecKE if $ has shallowlyMutable - remove! : ((RECKEYENTRY -> Boolean),%) -> % - remove! : ((RECKEYENTRY -> Boolean),%) -> % + remove! : ((RecKE -> Boolean),%) -> % + remove! : ((RecKE -> Boolean),%) -> % if $ has finiteAggregate - removeDuplicates! : % -> % if RECKEYENTRY has SETCAT + removeDuplicates! : % -> % if RecKE has SETCAT rest : % -> % rest : (%,NonNegativeInteger) -> % reverse : % -> % reverse! : % -> % if $ has shallowlyMutable - second : % -> RECKEYENTRY - select! : ((RECKEYENTRY -> Boolean),%) -> % + second : % -> RecKE + select! : ((RecKE -> Boolean),%) -> % setchildren! : (%,List %) -> % if $ has shallowlyMutable - setelt : (%,value,RECKEYENTRY) -> RECKEYENTRY + setelt : (%,value,RecKE) -> RecKE if $ has shallowlyMutable - setelt : (%,first,RECKEYENTRY) -> RECKEYENTRY + setelt : (%,first,RecKE) -> RecKE if $ has shallowlyMutable setelt : (%,rest,%) -> % if $ has shallowlyMutable - setelt : (%,last,RECKEYENTRY) -> RECKEYENTRY + setelt : (%,last,RecKE) -> RecKE if $ has shallowlyMutable - setelt : (%,UniversalSegment Integer,RECKEYENTRY) -> RECKEYENTRY + setelt : (%,UniversalSegment Integer,RecKE) -> RecKE if $ has shallowlyMutable - setelt : (%,Integer,RECKEYENTRY) -> RECKEYENTRY + setelt : (%,Integer,RecKE) -> RecKE if $ has shallowlyMutable - setfirst! : (%,RECKEYENTRY) -> RECKEYENTRY + setfirst! : (%,RecKE) -> RecKE if $ has shallowlyMutable - setlast! : (%,RECKEYENTRY) -> RECKEYENTRY + setlast! : (%,RecKE) -> RecKE if $ has shallowlyMutable setrest! : (%,%) -> % if $ has shallowlyMutable - setvalue! : (%,RECKEYENTRY) -> RECKEYENTRY + setvalue! : (%,RecKE) -> RecKE if $ has shallowlyMutable - sort : % -> % if RECKEYENTRY has ORDSET - sort : (((RECKEYENTRY,RECKEYENTRY) -> Boolean),%) -> % + sort : % -> % if RecKE has ORDSET + sort : (((RecKE,RecKE) -> Boolean),%) -> % sort! : % -> % - if RECKEYENTRY has ORDSET + if RecKE has ORDSET and $ has shallowlyMutable - sort! : (((RECKEYENTRY,RECKEYENTRY) -> Boolean),%) -> % + sort! : (((RecKE,RecKE) -> Boolean),%) -> % if $ has shallowlyMutable - sorted? : % -> Boolean if RECKEYENTRY has ORDSET - sorted? : (((RECKEYENTRY,RECKEYENTRY) -> Boolean),%) -> Boolean + sorted? : % -> Boolean if RecKE has ORDSET + sorted? : (((RecKE,RecKE) -> Boolean),%) -> Boolean split! : (%,Integer) -> % if $ has shallowlyMutable swap! : (%,Integer,Integer) -> Void if $ has shallowlyMutable tail : % -> % - third : % -> RECKEYENTRY - value : % -> RECKEYENTRY + third : % -> RecKE + value : % -> RecKE #? : % -> NonNegativeInteger if $ has finiteAggregate - ? Boolean if RECKEYENTRY has ORDSET - ?<=? : (%,%) -> Boolean if RECKEYENTRY has ORDSET + ? Boolean if RecKE has ORDSET + ?<=? : (%,%) -> Boolean if RecKE has ORDSET ?=? : (%,%) -> Boolean - if RECKEYENTRY has SETCAT + if RecKE has SETCAT or Entry has SETCAT - or RECKEYENTRY has SETCAT - ?>? : (%,%) -> Boolean if RECKEYENTRY has ORDSET - ?>=? : (%,%) -> Boolean if RECKEYENTRY has ORDSET - ?.value : (%,value) -> RECKEYENTRY - ?.first : (%,first) -> RECKEYENTRY - ?.last : (%,last) -> RECKEYENTRY + or RecKE has SETCAT + ?>? : (%,%) -> Boolean if RecKE has ORDSET + ?>=? : (%,%) -> Boolean if RecKE has ORDSET + ?.value : (%,value) -> RecKE + ?.first : (%,first) -> RecKE + ?.last : (%,last) -> RecKE ?.rest : (%,rest) -> % ?.? : (%,UniversalSegment Integer) -> % - ?.? : (%,Integer) -> RECKEYENTRY + ?.? : (%,Integer) -> RecKE \end{verbatim} -These exports come from SetCategory: +These exports come from SetCategory(): \begin{verbatim} \end{verbatim} @@ -9163,17 +11294,163 @@ digraph pic { @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\chapter{Category Layers} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\pagehead{FiniteSetAggregate}{FSAGG} -%%%%%%%%\pagepic{ps/v102finitesetaggregate.ps}{FSAGG} +\pagehead{OrderedMultisetAggregate}{OMSAGG} +\pagepic{ps/v102orderedmultisetaggregate.ps}{OMSAGG}{0.65} {\bf See:}\\ -<>= -)abbrev category FSAGG FiniteSetAggregate +\pagefrom{MultisetAggregate}{MSETAGG} +\pagefrom{PriorityQueueAggregate}{PRQAGG} + +{\bf Exports:}\\ +\begin{tabular}{lllll} + any? & bag & brace & coerce & construct\\ + convert & copy & count & dictionary & difference\\ + empty & empty? & eq? & duplicates & eval\\ + every? & extract! & find & hash & insert!\\ + inspect & intersect & latex & less? & map\\ + map! & max & member? & members & merge\\ + merge! & min & more? & parts & reduce\\ + remove & remove! & removeDuplicates & removeDuplicates! & sample\\ + select & select! & set & size? & subset?\\ + symmetricDifference & union & \#? & ?$<$? & ?=?\\ + ?\~{}=? &&&& +\end{tabular} + +\cross{OMSAGG}{any?} +\cross{OMSAGG}{bag} +\cross{OMSAGG}{brace} +\cross{OMSAGG}{coerce} +\cross{OMSAGG}{construct} +\cross{OMSAGG}{convert} +\cross{OMSAGG}{copy} +\cross{OMSAGG}{count} +\cross{OMSAGG}{dictionary} +\cross{OMSAGG}{difference} +\cross{OMSAGG}{empty} +\cross{OMSAGG}{empty?} +\cross{OMSAGG}{eq?} +\cross{OMSAGG}{duplicates} +\cross{OMSAGG}{eval} +\cross{OMSAGG}{every?} +\cross{OMSAGG}{extract!} +\cross{OMSAGG}{find} +\cross{OMSAGG}{hash} +\cross{OMSAGG}{insert!} +\cross{OMSAGG}{inspect} +\cross{OMSAGG}{intersect} +\cross{OMSAGG}{latex} +\cross{OMSAGG}{less?} +\cross{OMSAGG}{map} +\cross{OMSAGG}{map!} +\cross{OMSAGG}{max} +\cross{OMSAGG}{member?} +\cross{OMSAGG}{members} +\cross{OMSAGG}{merge} +\cross{OMSAGG}{merge!} +\cross{OMSAGG}{min} +\cross{OMSAGG}{more?} +\cross{OMSAGG}{parts} +\cross{OMSAGG}{reduce} +\cross{OMSAGG}{remove} +\cross{OMSAGG}{remove!} +\cross{OMSAGG}{removeDuplicates} +\cross{OMSAGG}{removeDuplicates!} +\cross{OMSAGG}{sample} +\cross{OMSAGG}{select} +\cross{OMSAGG}{select!} +\cross{OMSAGG}{set} +\cross{OMSAGG}{size?} +\cross{OMSAGG}{subset?} +\cross{OMSAGG}{symmetricDifference} +\cross{OMSAGG}{union} +\cross{OMSAGG}{\#?} +\cross{OMSAGG}{?$<$?} +\cross{OMSAGG}{?=?} +\cross{OMSAGG}{?\~{}=?} + +These are directly exported but not implemented: +\begin{verbatim} + min : % -> S +\end{verbatim} + +These exports come from MultisetAggregate(S:OrderedSet): +\begin{verbatim} + any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate + bag : List S -> % + brace : () -> % + brace : List S -> % + coerce : % -> OutputForm + 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 + dictionary : List S -> % + dictionary : () -> % + difference : (%,S) -> % + difference : (%,%) -> % + duplicates : % -> List Record(entry: S,count: NonNegativeInteger) + empty : () -> % + empty? : % -> Boolean + eq? : (%,%) -> Boolean + eval : (%,List S,List S) -> % if S has EVALAB S and S has SETCAT + eval : (%,S,S) -> % if S has EVALAB S and S has SETCAT + eval : (%,Equation S) -> % if S has EVALAB S and S has SETCAT + eval : (%,List Equation S) -> % if S has EVALAB S and S has SETCAT + every? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate + extract! : % -> S + find : ((S -> Boolean),%) -> Union(S,"failed") + hash : % -> SingleInteger + insert! : (S,%) -> % + insert! : (S,%,NonNegativeInteger) -> % + inspect : % -> S + intersect : (%,%) -> % + latex : % -> String + less? : (%,NonNegativeInteger) -> Boolean + map : ((S -> S),%) -> % + map! : ((S -> S),%) -> % if $ has shallowlyMutable + 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 + remove! : ((S -> Boolean),%) -> % if $ has finiteAggregate + remove! : (S,%) -> % if $ has finiteAggregate + removeDuplicates : % -> % if S has SETCAT and $ has finiteAggregate + removeDuplicates! : % -> % + sample : () -> % + select : ((S -> Boolean),%) -> % if $ has finiteAggregate + select! : ((S -> Boolean),%) -> % if $ has finiteAggregate + set : () -> % + set : List S -> % + size? : (%,NonNegativeInteger) -> Boolean + subset? : (%,%) -> Boolean + symmetricDifference : (%,%) -> % + union : (%,%) -> % + union : (%,S) -> % + union : (S,%) -> % + #? : % -> NonNegativeInteger if $ has finiteAggregate + ?~=? : (%,%) -> Boolean + ?=? : (%,%) -> Boolean + ? Boolean +\end{verbatim} + +These exports come from PriorityQueueAggregate(S:OrderedSet): +\begin{verbatim} + max : % -> S + merge : (%,%) -> % + merge! : (%,%) -> % +\end{verbatim} + +<>= +)abbrev category OMSAGG OrderedMultisetAggregate ++ Author: Michael Monagan; revised by Manuel Bronstein and Richard Jenks ++ Date Created: August 87 through August 88 -++ Date Last Updated: 14 Oct, 1993 by RSS +++ Date Last Updated: April 1991 ++ Basic Operations: ++ Related Constructors: ++ Also See: @@ -9181,101 +11458,78 @@ digraph pic { ++ Keywords: ++ References: ++ Description: -++ A finite-set aggregate models the notion of a finite set, that is, -++ a collection of elements characterized by membership, but not -++ by order or multiplicity. -++ See \spadtype{Set} for an example. -FiniteSetAggregate(S:SetCategory): Category == - Join(Dictionary S, SetAggregate S) with - finiteAggregate - cardinality: % -> NonNegativeInteger - ++ cardinality(u) returns the number of elements of u. - ++ Note: \axiom{cardinality(u) = #u}. - if S has Finite then - Finite - complement: % -> % - ++ complement(u) returns the complement of the set u, - ++ i.e. the set of all values not in u. - universe: () -> % - ++ universe()$D returns the universal set for finite set aggregate D. - if S has OrderedSet then - max: % -> S - ++ max(u) returns the largest element of aggregate u. +++ An ordered-multiset aggregate is a multiset built over an ordered set S +++ so that the relative sizes of its entries can be assessed. +++ These aggregates serve as models for priority queues. +OrderedMultisetAggregate(S:OrderedSet): Category == + Join(MultisetAggregate S,PriorityQueueAggregate S) with + -- max: % -> S ++ smallest entry in the set + -- duplicates: % -> List Record(entry:S,count:NonNegativeInteger) + ++ to become an in order iterator + -- parts: % -> List S ++ in order iterator min: % -> S - ++ min(u) returns the smallest element of aggregate u. - - add - s < t == #s < #t and s = intersect(s,t) - s = t == #s = #t and empty? difference(s,t) - brace l == construct l - set l == construct l - cardinality s == #s - construct l == (s := set(); for x in l repeat insert_!(x,s); s) - count(x:S, s:%) == (member?(x, s) => 1; 0) - subset?(s, t) == #s < #t and _and/[member?(x, t) for x in parts s] + ++ min(u) returns the smallest entry in the multiset aggregate u. - coerce(s:%):OutputForm == - brace [x::OutputForm for x in parts s]$List(OutputForm) +@ +<>= +"OMSAGG" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=OMSAGG"]; +"OMSAGG" -> "MSETAGG" +"OMSAGG" -> "PRQAGG" - intersect(s, t) == - i := {} - for x in parts s | member?(x, t) repeat insert_!(x, i) - i +@ +<>= +"OrderedMultisetAggregate(a:SetCategory)" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=OMSAGG"]; +"OrderedMultisetAggregate(a:SetCategory)" -> + "MultisetAggregate(a:SetCategory)" +"OrderedMultisetAggregate(a:SetCategory)" -> + "PriorityQueueAggregate(a:SetCategory)" - difference(s:%, t:%) == - m := copy s - for x in parts t repeat remove_!(x, m) - m +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; - symmetricDifference(s, t) == - d := copy s - for x in parts t repeat - if member?(x, s) then remove_!(x, d) else insert_!(x, d) - d +"OrderedMultisetAggregate(a:SetCategory)" [color=lightblue]; +"OrderedMultisetAggregate(a:SetCategory)" -> + "MultisetAggregate(a:SetCategory)" +"OrderedMultisetAggregate(a:SetCategory)" -> + "PriorityQueueAggregate(a:SetCategory)" - union(s:%, t:%) == - u := copy s - for x in parts t repeat insert_!(x, u) - u +"MultisetAggregate(a:SetCategory)" [color=lightblue]; +"MultisetAggregate(a:SetCategory)" -> "MultiDictionary(a:SetCategory)" +"MultisetAggregate(a:SetCategory)" -> "SetAggregate(a:SetCategory)" - if S has Finite then - universe() == {index(i::PositiveInteger) for i in 1..size()$S} - complement s == difference(universe(), s ) - size() == 2 ** size()$S - index i == - {index(j::PositiveInteger)$S for j in 1..size()$S | bit?(i-1,j-1)} - random() == - index((random()$Integer rem (size()$% + 1))::PositiveInteger) +"MultiDictionary(a:SetCategory)" [color=lightblue]; +"MultiDictionary(a:SetCategory)" -> "DictionaryOperations(a:SetCategory)" - lookup s == - n:PositiveInteger := 1 - for x in parts s repeat _ - n := n + 2 ** ((lookup(x) - 1)::NonNegativeInteger) - n +"SetAggregate(a:SetCategory)" [color=lightblue]; +"SetAggregate(a:SetCategory)" -> "SETAGG..." +"SetAggregate(a:SetCategory)" -> "CLAGG..." - if S has OrderedSet then - max s == - empty?(l := parts s) => error "Empty set" - reduce("max", l) +"DictionaryOperations(a:SetCategory)" [color=lightblue]; +"DictionaryOperations(a:SetCategory)" -> "BGAGG..." +"DictionaryOperations(a:SetCategory)" -> "CLAGG..." - min s == - empty?(l := parts s) => error "Empty set" - reduce("min", l) +"PriorityQueueAggregate(a:SetCategory)" + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=PRQAGG"]; +"PriorityQueueAggregate(a:SetCategory)" -> "PriorityQueueAggregate(a:Type)" -@ -<>= -"FSAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=FSAGG"]; -"FSAGG" -> "DIAGG" -"FSAGG" -> "SETAGG" +"PriorityQueueAggregate(a:Type)" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=PRQAGG"]; +"PriorityQueueAggregate(a:Type)" -> "BGAGG..." -@ -<>= -"FiniteSetAggregate(a:SetCategory)" - [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=FSAGG"]; -"FiniteSetAggregate(a:SetCategory)" -> "Dictionary(a:SetCategory)" -"FiniteSetAggregate(a:SetCategory)" -> "SetAggregate(a:SetCategory)" +"BGAGG..." [color=lightblue]; +"CLAGG..." [color=lightblue]; +"SETAGG..." [color=lightblue]; +} @ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Category Layers} \section{category BTAGG BitAggregate} <>= )abbrev category BTAGG BitAggregate @@ -9340,184 +11594,291 @@ BitAggregate(): Category == "BitAggregate()" -> "OneDimensionalArrayAggregate(Boolean)" @ -\section{category MSETAGG MultisetAggregate} -<>= -)abbrev category MSETAGG MultisetAggregate -++ 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: -++ A multi-set aggregate is a set which keeps track of the multiplicity -++ of its elements. -MultisetAggregate(S:SetCategory): - Category == Join(MultiDictionary S, SetAggregate S) - +\chapter{Temporary Placeholders} +\pagehead{Evalable}{EVALAB} +\pageto{HomogeneousAggregate}{HOAGG} +<>= +"Evalable(a:Type)" + [color="#00EE00",href="books/bookvol10.2.pamphlet#nameddest=EVALAB"]; @ -<>= -"MSETAGG" - [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=MSETAGG"]; -"MSETAGG" -> "MDAGG" -"MSETAGG" -> "SETAGG" -@ -<>= -"MultisetAggregate(a:SetCategory)" - [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=MSETAGG"]; -"MultisetAggregate(a:SetCategory)" -> "MultiDictionary(a:SetCategory)" -"MultisetAggregate(a:SetCategory)" -> "SetAggregate(a:SetCategory)" +\chapter{The bootstrap code} +\section{ABELGRP.lsp BOOTSTRAP} +{\bf ABELGRP} 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 ABELGRP} category which we can write +into the {\bf MID} directory. We compile the lisp code and copy the +{\bf ABELGRP.o} file to the {\bf OUT} directory. This is eventually +forcibly replaced by a recompiled version. -@ -\section{category OMSAGG OrderedMultisetAggregate} -<>= -)abbrev category OMSAGG OrderedMultisetAggregate -++ 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: -++ An ordered-multiset aggregate is a multiset built over an ordered set S -++ so that the relative sizes of its entries can be assessed. -++ These aggregates serve as models for priority queues. -OrderedMultisetAggregate(S:OrderedSet): Category == - Join(MultisetAggregate S,PriorityQueueAggregate S) with - -- max: % -> S ++ smallest entry in the set - -- duplicates: % -> List Record(entry:S,count:NonNegativeInteger) - ++ to become an in order iterator - -- parts: % -> List S ++ in order iterator - min: % -> S - ++ min(u) returns the smallest entry in the multiset aggregate u. +Note that this code is not included in the generated catdef.spad file. -@ -<>= -"OMSAGG" - [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=OMSAGG"]; -"OMSAGG" -> "MSETAGG" -"OMSAGG" -> "PRQAGG" +<>= -@ -<>= -"OrderedMultisetAggregate(a:SetCategory)" - [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=OMSAGG"]; -"OrderedMultisetAggregate(a:SetCategory)" -> - "MultisetAggregate(a:SetCategory)" -"OrderedMultisetAggregate(a:SetCategory)" -> - "PriorityQueueAggregate(a:SetCategory)" +(|/VERSIONCHECK| 2) -@ -\section{category SETAGG SetAggregate} -<>= -)abbrev category SETAGG SetAggregate -++ Author: Michael Monagan; revised by Manuel Bronstein and Richard Jenks -++ Date Created: August 87 through August 88 -++ Date Last Updated: 14 Oct, 1993 by RSS -++ Basic Operations: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: -++ Description: -++ A set category lists a collection of set-theoretic operations -++ useful for both finite sets and multisets. -++ Note however that finite sets are distinct from multisets. -++ Although the operations defined for set categories are -++ common to both, the relationship between the two cannot -++ be described by inclusion or inheritance. -SetAggregate(S:SetCategory): - Category == Join(SetCategory, Collection(S)) with - partiallyOrderedSet - "<" : (%, %) -> Boolean - ++ s < t returns true if all elements of set aggregate s are also - ++ elements of set aggregate t. - brace : () -> % - ++ brace()$D (otherwise written {}$D) - ++ creates an empty set aggregate of type D. - ++ This form is considered obsolete. Use \axiomFun{set} instead. - brace : List S -> % - ++ brace([x,y,...,z]) - ++ creates a set aggregate containing items x,y,...,z. - ++ This form is considered obsolete. Use \axiomFun{set} instead. - set : () -> % - ++ set()$D creates an empty set aggregate of type D. - set : List S -> % - ++ set([x,y,...,z]) creates a set aggregate containing items x,y,...,z. - intersect: (%, %) -> % - ++ intersect(u,v) returns the set aggregate w consisting of - ++ elements common to both set aggregates u and v. - ++ Note: equivalent to the notation (not currently supported) - ++ {x for x in u | member?(x,v)}. - difference : (%, %) -> % - ++ difference(u,v) returns the set aggregate w consisting of - ++ elements in set aggregate u but not in set aggregate v. - ++ If u and v have no elements in common, \axiom{difference(u,v)} - ++ returns a copy of u. - ++ Note: equivalent to the notation (not currently supported) - ++ \axiom{{x for x in u | not member?(x,v)}}. - difference : (%, S) -> % - ++ difference(u,x) returns the set aggregate u with element x removed. - ++ If u does not contain x, a copy of u is returned. - ++ Note: \axiom{difference(s, x) = difference(s, {x})}. - symmetricDifference : (%, %) -> % - ++ symmetricDifference(u,v) returns the set aggregate of elements x - ++ which are members of set aggregate u or set aggregate v but - ++ not both. If u and v have no elements in common, - ++ \axiom{symmetricDifference(u,v)} returns a copy of u. - ++ Note: \axiom{symmetricDifference(u,v) = - ++ union(difference(u,v),difference(v,u))} - subset? : (%, %) -> Boolean - ++ subset?(u,v) tests if u is a subset of v. - ++ Note: equivalent to - ++ \axiom{reduce(and,{member?(x,v) for x in u},true,false)}. - union : (%, %) -> % - ++ union(u,v) returns the set aggregate of elements which are members - ++ of either set aggregate u or v. - union : (%, S) -> % - ++ union(u,x) returns the set aggregate u with the element x added. - ++ If u already contains x, \axiom{union(u,x)} returns a copy of u. - union : (S, %) -> % - ++ union(x,u) returns the set aggregate u with the element x added. - ++ If u already contains x, \axiom{union(x,u)} returns a copy of u. - add - symmetricDifference(x, y) == union(difference(x, y), difference(y, x)) - union(s:%, x:S) == union(s, {x}) - union(x:S, s:%) == union(s, {x}) - difference(s:%, x:S) == difference(s, {x}) +(SETQ |AbelianGroup;AL| (QUOTE NIL)) -@ -<>= -"SETAGG" - [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SETAGG"]; -"SETAGG" -> "SETCAT" -"SETAGG" -> "CLAGG" +(DEFUN |AbelianGroup| NIL + (LET (#:G82664) + (COND + (|AbelianGroup;AL|) + (T (SETQ |AbelianGroup;AL| (|AbelianGroup;|)))))) + +(DEFUN |AbelianGroup;| NIL + (PROG (#1=#:G82662) + (RETURN + (PROG1 + (LETT #1# + (|Join| + (|CancellationAbelianMonoid|) + (|mkCategory| + (QUOTE |domain|) + (QUOTE ( + ((|-| (|$| |$|)) T) + ((|-| (|$| |$| |$|)) T) + ((|*| (|$| (|Integer|) |$|)) T))) + NIL + (QUOTE ((|Integer|))) + NIL)) + |AbelianGroup|) + (SETELT #1# 0 (QUOTE (|AbelianGroup|))))))) + +(MAKEPROP (QUOTE |AbelianGroup|) (QUOTE NILADIC) T) @ -<>= -"SetAggregate(a:SetCategory)" - [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SETAGG"]; -"SetAggregate(a:SetCategory)" -> "SetCategory()" -"SetAggregate(a:SetCategory)" -> "Collection(a:SetCategory)" +\section{ABELGRP-.lsp BOOTSTRAP} +{\bf ABELGRP-} 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 ABELGRP-} +category which we can write into the {\bf MID} directory. We compile +the lisp code and copy the {\bf ABELGRP-.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 |ABELGRP-;-;3S;1| (|x| |y| |$|) + (SPADCALL |x| (SPADCALL |y| (QREFELT |$| 7)) (QREFELT |$| 8))) + +(DEFUN |ABELGRP-;subtractIfCan;2SU;2| (|x| |y| |$|) + (CONS 0 (SPADCALL |x| |y| (QREFELT |$| 10)))) + +(DEFUN |ABELGRP-;*;Nni2S;3| (|n| |x| |$|) + (SPADCALL |n| |x| (QREFELT |$| 14))) + +(DEFUN |ABELGRP-;*;I2S;4| (|n| |x| |$|) + (COND + ((ZEROP |n|) (|spadConstant| |$| 17)) + ((|<| 0 |n|) (SPADCALL |n| |x| (QREFELT |$| 20))) + ((QUOTE T) + (SPADCALL (|-| |n|) (SPADCALL |x| (QREFELT |$| 7)) (QREFELT |$| 20))))) + +(DEFUN |AbelianGroup&| (|#1|) + (PROG (|DV$1| |dv$| |$| |pv$|) + (RETURN + (PROGN + (LETT |DV$1| (|devaluate| |#1|) . #1=(|AbelianGroup&|)) + (LETT |dv$| (LIST (QUOTE |AbelianGroup&|) |DV$1|) . #1#) + (LETT |$| (GETREFV 22) . #1#) + (QSETREFV |$| 0 |dv$|) + (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #1#)) + (|stuffDomainSlots| |$|) + (QSETREFV |$| 6 |#1|) + (COND + ((|HasCategory| |#1| (QUOTE (|Ring|)))) + ((QUOTE T) + (QSETREFV |$| 21 + (CONS (|dispatchFunction| |ABELGRP-;*;I2S;4|) |$|)))) + |$|)))) + +(MAKEPROP + (QUOTE |AbelianGroup&|) + (QUOTE |infovec|) + (LIST + (QUOTE + #(NIL NIL NIL NIL NIL NIL + (|local| |#1|) + (0 . |-|) + (5 . |+|) + |ABELGRP-;-;3S;1| + (11 . |-|) + (|Union| |$| (QUOTE "failed")) + |ABELGRP-;subtractIfCan;2SU;2| + (|Integer|) + (17 . |*|) + (|NonNegativeInteger|) + |ABELGRP-;*;Nni2S;3| + (23 . |Zero|) + (|PositiveInteger|) + (|RepeatedDoubling| 6) + (27 . |double|) + (33 . |*|))) + (QUOTE #(|subtractIfCan| 39 |-| 45 |*| 51)) + (QUOTE NIL) + (CONS + (|makeByteWordVec2| 1 (QUOTE NIL)) + (CONS + (QUOTE #()) + (CONS + (QUOTE #()) + (|makeByteWordVec2| 21 + (QUOTE (1 6 0 0 7 2 6 0 0 0 8 2 6 0 0 0 10 2 6 0 13 0 14 0 6 0 17 + 2 19 6 18 6 20 2 0 0 13 0 21 2 0 11 0 0 12 2 0 0 0 0 9 2 + 0 0 13 0 21 2 0 0 15 0 16)))))) + (QUOTE |lookupComplete|))) @ -\chapter{Temporary Placeholders} -\pagehead{Evalable}{EVALAB} -\pageto{HomogeneousAggregate}{HOAGG} -<>= -"Evalable(a:Type)" - [color="#00EE00",href="books/bookvol10.2.pamphlet#nameddest=EVALAB"]; +\section{ABELMON.lsp BOOTSTRAP} +{\bf ABELMON} which needs +{\bf ABELSG} which needs +{\bf SETCAT} which needs +{\bf SINT} which needs +{\bf UFD} which 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}. +We break this chain with {\bf ABELMON.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 ABELMON} +category which we can write into the {\bf MID} directory. We compile +the lisp code and copy the {\bf ABELMON.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 |AbelianMonoid;AL| (QUOTE NIL)) + +(DEFUN |AbelianMonoid| NIL + (LET (#:G82597) + (COND + (|AbelianMonoid;AL|) + (T (SETQ |AbelianMonoid;AL| (|AbelianMonoid;|)))))) + +(DEFUN |AbelianMonoid;| NIL + (PROG (#1=#:G82595) + (RETURN + (PROG1 + (LETT #1# + (|Join| + (|AbelianSemiGroup|) + (|mkCategory| + (QUOTE |domain|) + (QUOTE ( + ((|Zero| (|$|) |constant|) T) + ((|sample| (|$|) |constant|) T) + ((|zero?| ((|Boolean|) |$|)) T) + ((|*| (|$| (|NonNegativeInteger|) |$|)) T))) + NIL + (QUOTE ((|NonNegativeInteger|) (|Boolean|))) + NIL)) + |AbelianMonoid|) + (SETELT #1# 0 (QUOTE (|AbelianMonoid|))))))) + +(MAKEPROP (QUOTE |AbelianMonoid|) (QUOTE NILADIC) T) + @ +\section{ABELMON-.lsp BOOTSTRAP} +{\bf ABELMON-} which needs +{\bf ABELSG} which needs +{\bf SETCAT} which needs +{\bf SINT} which needs +{\bf UFD} which 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-}. +We break this chain with {\bf ABELMON-.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 ABELMON-} +category which we can write into the {\bf MID} directory. We compile +the lisp code and copy the {\bf ABELMON-.o} file to the {\bf OUT} directory. +This is eventually forcibly replaced by a recompiled version. -\chapter{The bootstrap code} +Note that this code is not included in the generated catdef.spad file. + +<>= + +(|/VERSIONCHECK| 2) + +(DEFUN |ABELMON-;zero?;SB;1| (|x| |$|) + (SPADCALL |x| (|spadConstant| |$| 7) (QREFELT |$| 9))) + +(DEFUN |ABELMON-;*;Pi2S;2| (|n| |x| |$|) + (SPADCALL |n| |x| (QREFELT |$| 12))) + +(DEFUN |ABELMON-;sample;S;3| (|$|) + (|spadConstant| |$| 7)) + +(DEFUN |ABELMON-;*;Nni2S;4| (|n| |x| |$|) + (COND + ((ZEROP |n|) (|spadConstant| |$| 7)) + ((QUOTE T) (SPADCALL |n| |x| (QREFELT |$| 17))))) + +(DEFUN |AbelianMonoid&| (|#1|) + (PROG (|DV$1| |dv$| |$| |pv$|) + (RETURN + (PROGN + (LETT |DV$1| (|devaluate| |#1|) . #1=(|AbelianMonoid&|)) + (LETT |dv$| (LIST (QUOTE |AbelianMonoid&|) |DV$1|) . #1#) + (LETT |$| (GETREFV 19) . #1#) + (QSETREFV |$| 0 |dv$|) + (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #1#)) + (|stuffDomainSlots| |$|) + (QSETREFV |$| 6 |#1|) + (COND + ((|HasCategory| |#1| (QUOTE (|Ring|)))) + ((QUOTE T) + (QSETREFV |$| 18 + (CONS (|dispatchFunction| |ABELMON-;*;Nni2S;4|) |$|)))) |$|)))) + +(MAKEPROP + (QUOTE |AbelianMonoid&|) + (QUOTE |infovec|) + (LIST + (QUOTE + #(NIL NIL NIL NIL NIL NIL + (|local| |#1|) + (0 . |Zero|) + (|Boolean|) + (4 . |=|) + |ABELMON-;zero?;SB;1| + (|NonNegativeInteger|) + (10 . |*|) + (|PositiveInteger|) + |ABELMON-;*;Pi2S;2| + |ABELMON-;sample;S;3| + (|RepeatedDoubling| 6) + (16 . |double|) + (22 . |*|))) + (QUOTE #(|zero?| 28 |sample| 33 |*| 37)) + (QUOTE NIL) + (CONS + (|makeByteWordVec2| 1 (QUOTE NIL)) + (CONS + (QUOTE #()) + (CONS + (QUOTE #()) + (|makeByteWordVec2| 18 + (QUOTE (0 6 0 7 2 6 8 0 0 9 2 6 0 11 0 12 2 16 6 13 6 17 2 0 0 11 + 0 18 1 0 8 0 10 0 0 0 15 2 0 0 11 0 18 2 0 0 13 0 14)))))) + (QUOTE |lookupComplete|))) + +@ \section{ABELSG.lsp BOOTSTRAP} {\bf ABELSG} needs {\bf SETCAT} which needs @@ -9709,6 +12070,63 @@ Note that this code is not included in the generated catdef.spad file. (|devaluate| |t#1|) (|devaluate| |t#2|))))))) @ +\section{CABMON.lsp BOOTSTRAP} +{\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} which needs +{\bf COMRING} which needs +{\bf RING} which needs +{\bf RNG} which needs +{\bf ABELGRP} which needs +{\bf CABMON}. +We break this chain with {\bf CABMON.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 CABMON} +category which we can write into the {\bf MID} directory. We compile +the lisp code and copy the {\bf CABMON.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 |CancellationAbelianMonoid;AL| (QUOTE NIL)) + +(DEFUN |CancellationAbelianMonoid| NIL + (LET (#:G82646) + (COND + (|CancellationAbelianMonoid;AL|) + (T + (SETQ + |CancellationAbelianMonoid;AL| + (|CancellationAbelianMonoid;|)))))) + +(DEFUN |CancellationAbelianMonoid;| NIL + (PROG (#1=#:G82644) + (RETURN + (PROG1 + (LETT #1# + (|Join| + (|AbelianMonoid|) + (|mkCategory| + (QUOTE |domain|) + (QUOTE + (((|subtractIfCan| ((|Union| |$| "failed") |$| |$|)) T))) + NIL + (QUOTE NIL) + NIL)) + |CancellationAbelianMonoid|) + (SETELT #1# 0 (QUOTE (|CancellationAbelianMonoid|))))))) + +(MAKEPROP (QUOTE |CancellationAbelianMonoid|) (QUOTE NILADIC) T) + +@ \section{CLAGG.lsp BOOTSTRAP} {\bf CLAGG} 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 CLAGG} @@ -11466,6 +13884,134 @@ Note that this code is not included in the generated catdef.spad file. 0 0 57 2 0 15 0 0 64)))))) (QUOTE |lookupComplete|))) @ +\section{MONOID.lsp BOOTSTRAP} +{\bf MONOID} depends on itself. We need to break this cycle to build +the algebra. So we keep a cached copy of the translated {\bf MONOID} +category which we can write into the {\bf MID} directory. We compile +the lisp code and copy the {\bf MONOID.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 |Monoid;AL| (QUOTE NIL)) + +(DEFUN |Monoid| NIL + (LET (#:G82434) + (COND + (|Monoid;AL|) + (T (SETQ |Monoid;AL| (|Monoid;|)))))) + +(DEFUN |Monoid;| NIL + (PROG (#1=#:G82432) + (RETURN + (PROG1 + (LETT #1# + (|Join| + (|SemiGroup|) + (|mkCategory| + (QUOTE |domain|) + (QUOTE ( + ((|One| (|$|) |constant|) T) + ((|sample| (|$|) |constant|) T) + ((|one?| ((|Boolean|) |$|)) T) + ((|**| (|$| |$| (|NonNegativeInteger|))) T) + ((|^| (|$| |$| (|NonNegativeInteger|))) T) + ((|recip| ((|Union| |$| "failed") |$|)) T))) + NIL + (QUOTE ((|NonNegativeInteger|) (|Boolean|))) + NIL)) + |Monoid|) + (SETELT #1# 0 (QUOTE (|Monoid|))))))) + +(MAKEPROP (QUOTE |Monoid|) (QUOTE NILADIC) T) + +@ +\section{MONOID-.lsp BOOTSTRAP} +{\bf MONOID-} depends on {\bf MONOID}. We need to break this cycle to build +the algebra. So we keep a cached copy of the translated {\bf MONOID-} +category which we can write into the {\bf MID} directory. We compile +the lisp code and copy the {\bf MONOID-.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 |MONOID-;^;SNniS;1| (|x| |n| |$|) + (SPADCALL |x| |n| (QREFELT |$| 8))) + +(DEFUN |MONOID-;one?;SB;2| (|x| |$|) + (SPADCALL |x| (|spadConstant| |$| 10) (QREFELT |$| 12))) + +(DEFUN |MONOID-;sample;S;3| (|$|) + (|spadConstant| |$| 10)) + +(DEFUN |MONOID-;recip;SU;4| (|x| |$|) + (COND + ((SPADCALL |x| (QREFELT |$| 15)) (CONS 0 |x|)) + ((QUOTE T) (CONS 1 "failed")))) + +(DEFUN |MONOID-;**;SNniS;5| (|x| |n| |$|) + (COND + ((ZEROP |n|) (|spadConstant| |$| 10)) + ((QUOTE T) (SPADCALL |x| |n| (QREFELT |$| 20))))) + +(DEFUN |Monoid&| (|#1|) + (PROG (|DV$1| |dv$| |$| |pv$|) + (RETURN + (PROGN + (LETT |DV$1| (|devaluate| |#1|) . #1=(|Monoid&|)) + (LETT |dv$| (LIST (QUOTE |Monoid&|) |DV$1|) . #1#) + (LETT |$| (GETREFV 22) . #1#) + (QSETREFV |$| 0 |dv$|) + (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #1#)) + (|stuffDomainSlots| |$|) + (QSETREFV |$| 6 |#1|) + |$|)))) + +(MAKEPROP + (QUOTE |Monoid&|) + (QUOTE |infovec|) + (LIST + (QUOTE + #(NIL NIL NIL NIL NIL NIL + (|local| |#1|) + (|NonNegativeInteger|) + (0 . |**|) + |MONOID-;^;SNniS;1| + (6 . |One|) + (|Boolean|) + (10 . |=|) + |MONOID-;one?;SB;2| + |MONOID-;sample;S;3| + (16 . |one?|) + (|Union| |$| (QUOTE "failed")) + |MONOID-;recip;SU;4| + (|PositiveInteger|) + (|RepeatedSquaring| 6) + (21 . |expt|) + |MONOID-;**;SNniS;5|)) + (QUOTE #(|sample| 27 |recip| 31 |one?| 36 |^| 41 |**| 47)) + (QUOTE NIL) + (CONS + (|makeByteWordVec2| 1 (QUOTE NIL)) + (CONS + (QUOTE #()) + (CONS + (QUOTE #()) + (|makeByteWordVec2| 21 + (QUOTE + (2 6 0 0 7 8 0 6 0 10 2 6 11 0 0 12 1 6 11 0 15 2 19 6 6 18 20 + 0 0 0 14 1 0 16 0 17 1 0 11 0 13 2 0 0 0 7 9 2 0 0 0 7 21)))))) + (QUOTE |lookupComplete|))) + +@ \section{RCAGG.lsp BOOTSTRAP} {\bf RCAGG} 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 RCAGG} @@ -11603,6 +14149,38 @@ Note that this code is not included in the generated catdef.spad file. 10 2 0 15 0 0 18)))))) (QUOTE |lookupComplete|))) @ +\section{RNG.lsp BOOTSTRAP} +{\bf RNG} 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 RNG} category which we can write +into the {\bf MID} directory. We compile the lisp code and copy the +{\bf RNG.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 |Rng;AL| (QUOTE NIL)) + +(DEFUN |Rng| NIL + (LET (#:G82722) + (COND + (|Rng;AL|) + (T (SETQ |Rng;AL| (|Rng;|)))))) + +(DEFUN |Rng;| NIL + (PROG (#1=#:G82720) + (RETURN + (PROG1 + (LETT #1# (|Join| (|AbelianGroup|) (|SemiGroup|)) |Rng|) + (SETELT #1# 0 (QUOTE (|Rng|))))))) + +(MAKEPROP (QUOTE |Rng|) (QUOTE NILADIC) T) + +@ \section{SETAGG.lsp BOOTSTRAP} {\bf SETAGG} 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 SETAGG} @@ -13005,6 +15583,8 @@ Note that this code is not included in the generated catdef.spad file. @ \chapter{Chunk collections} <>= +<> +<> <> <> <> @@ -13013,6 +15593,7 @@ Note that this code is not included in the generated catdef.spad file. <> <> <> +<> <> <> <> @@ -13031,20 +15612,27 @@ Note that this code is not included in the generated catdef.spad file. <> <> <> +<> <> <> +<> +<> <> +<> +<> <> <> <> <> <> +<> <> <> <> <> <> <> +<> <> <> <> @@ -13058,6 +15646,8 @@ digraph dotabb { "CATEGORY" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=CATEGORY"]; +<> +<> <> <> <> @@ -13066,6 +15656,7 @@ digraph dotabb { <> <> <> +<> <> <> <> @@ -13085,19 +15676,26 @@ digraph dotabb { <> <> <> +<> <> +<> +<> <> +<> +<> <> <> <> <> <> +<> <> <> <> <> <> <> +<> <> <> <> @@ -13114,6 +15712,8 @@ digraph dotfull { "Category" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=CATEGORY"]; +<> +<> <> <> <> @@ -13122,6 +15722,7 @@ digraph dotfull { <> <> <> +<> <> <> <> @@ -13141,19 +15742,26 @@ digraph dotfull { <> <> <> +<> <> +<> +<> <> +<> +<> <> <> <> <> <> +<> <> <> <> <> <> <> +<> <> <> <> diff --git a/books/ps/v102abeliangroup.ps b/books/ps/v102abeliangroup.ps new file mode 100644 index 0000000..1930497 --- /dev/null +++ b/books/ps/v102abeliangroup.ps @@ -0,0 +1,632 @@ +%!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 511 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 511 512 +%%PageOrientation: Portrait +gsave +36 36 475 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 +473 474 lineto +473 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 474 lineto +473 474 lineto +473 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% AbelianGroup() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 325 468 moveto +219 468 lineto +219 432 lineto +325 432 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 325 468 moveto +219 468 lineto +219 432 lineto +325 432 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +227 445 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 +% CancellationAbelianMonoid() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 289 396 moveto +105 396 lineto +105 360 lineto +289 360 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 289 396 moveto +105 396 lineto +105 360 lineto +289 360 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +113 373 moveto +(CancellationAbelianMonoid\(\)) +[9.36 6.24 6.96 6.24 6.24 3.84 3.84 6.24 3.84 3.84 6.96 6.96 9.84 6.96 6.24 3.84 3.84 6.24 6.96 12.48 6.96 6.96 6.96 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% AbelianGroup()->CancellationAbelianMonoid() +newpath 253 432 moveto +244 423 233 413 223 403 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 226 401 moveto +216 396 lineto +221 406 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 226 401 moveto +216 396 lineto +221 406 lineto +closepath +stroke +end grestore +% RepeatedDoubling(AbelianGroup) +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 467 324 moveto +257 324 lineto +257 288 lineto +467 288 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 467 324 moveto +257 324 lineto +257 288 lineto +467 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +265 301 moveto +(RepeatedDoubling\(AbelianGroup\)) +[9.12 6.24 6.96 6.24 6.24 3.84 6.24 6.96 10.08 6.96 6.96 6.96 3.84 3.84 6.96 6.96 4.56 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] +xshow +end grestore +end grestore +% AbelianGroup()->RepeatedDoubling(AbelianGroup) +newpath 283 432 moveto +299 407 328 362 346 333 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 349 334 moveto +351 324 lineto +343 331 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 349 334 moveto +351 324 lineto +343 331 lineto +closepath +stroke +end grestore +% AbelianMonoid() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 239 324 moveto +125 324 lineto +125 288 lineto +239 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 239 324 moveto +125 324 lineto +125 288 lineto +239 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +132 301 moveto +(AbelianMonoid\(\)) +[9.84 6.96 6.24 3.84 3.84 6.24 6.96 12.48 6.96 6.96 6.96 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% CancellationAbelianMonoid()->AbelianMonoid() +newpath 193 360 moveto +192 352 190 343 188 334 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 191 333 moveto +186 324 lineto +185 334 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 191 333 moveto +186 324 lineto +185 334 lineto +closepath +stroke +end grestore +% RepeatedDoubling(a:SetCategory) +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 344 108 moveto +136 108 lineto +136 72 lineto +344 72 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 344 108 moveto +136 108 lineto +136 72 lineto +344 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +143 85 moveto +(RepeatedDoubling\(a:SetCategory\)) +[9.12 6.24 6.96 6.24 6.24 3.84 6.24 6.96 10.08 6.96 6.96 6.96 3.84 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 +% RepeatedDoubling(AbelianGroup)->RepeatedDoubling(a:SetCategory) +newpath 365 288 moveto +369 256 373 188 343 144 curveto +334 131 320 120 306 113 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 307 110 moveto +297 108 lineto +304 116 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 307 110 moveto +297 108 lineto +304 116 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 271 36 moveto +209 36 lineto +209 0 lineto +271 0 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 271 36 moveto +209 36 lineto +209 0 lineto +271 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +216 13 moveto +(Package) +[7.44 6.24 6 6.96 6.24 6.72 6.24] +xshow +end grestore +end grestore +% RepeatedDoubling(a:SetCategory)->Package +newpath 240 72 moveto +240 64 240 55 240 46 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 244 46 moveto +240 36 lineto +237 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 244 46 moveto +240 36 lineto +237 46 lineto +closepath +stroke +end grestore +% RepeatedDoubling(AbelianSemiGroup) +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 238 180 moveto +0 180 lineto +0 144 lineto +238 144 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 238 180 moveto +0 180 lineto +0 144 lineto +238 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +8 157 moveto +(RepeatedDoubling\(AbelianSemiGroup\)) +[9.12 6.24 6.96 6.24 6.24 3.84 6.24 6.96 10.08 6.96 6.96 6.96 3.84 3.84 6.96 6.96 4.56 9.84 6.96 6.24 3.84 3.84 6.24 6.96 7.68 6.24 10.8 3.84 10.08 4.8 6.96 6.96 6.96 4.56] +xshow +end grestore +end grestore +% RepeatedDoubling(AbelianSemiGroup)->RepeatedDoubling(a:SetCategory) +newpath 150 144 moveto +165 135 184 123 201 113 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 203 116 moveto +210 108 lineto +200 110 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 203 116 moveto +210 108 lineto +200 110 lineto +closepath +stroke +end grestore +% AbelianSemiGroup() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 249 252 moveto +115 252 lineto +115 216 lineto +249 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 249 252 moveto +115 252 lineto +115 216 lineto +249 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +122 229 moveto +(AbelianSemiGroup\(\)) +[9.84 6.96 6.24 3.84 3.84 6.24 6.96 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 +% AbelianMonoid()->AbelianSemiGroup() +newpath 182 288 moveto +182 280 182 271 182 262 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 186 262 moveto +182 252 lineto +179 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 186 262 moveto +182 252 lineto +179 262 lineto +closepath +stroke +end grestore +% AbelianSemiGroup()->RepeatedDoubling(AbelianSemiGroup) +newpath 166 216 moveto +158 207 149 197 142 188 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 144 185 moveto +135 180 lineto +139 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 144 185 moveto +135 180 lineto +139 190 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 334 180 moveto +256 180 lineto +256 144 lineto +334 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 334 180 moveto +256 180 lineto +256 144 lineto +334 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +264 157 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 +% AbelianSemiGroup()->SETCAT... +newpath 211 216 moveto +225 207 243 196 258 186 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 261 188 moveto +267 180 lineto +257 183 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 261 188 moveto +267 180 lineto +257 183 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102abelianmonoid.ps b/books/ps/v102abelianmonoid.ps new file mode 100644 index 0000000..79c12f1 --- /dev/null +++ b/books/ps/v102abelianmonoid.ps @@ -0,0 +1,678 @@ +%!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 521 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 521 440 +%%PageOrientation: Portrait +gsave +36 36 485 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 +483 402 lineto +483 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 402 lineto +483 402 lineto +483 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% AbelianMonoid() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 318 396 moveto +204 396 lineto +204 360 lineto +318 360 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 318 396 moveto +204 396 lineto +204 360 lineto +318 360 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +211 373 moveto +(AbelianMonoid\(\)) +[9.84 6.96 6.24 3.84 3.84 6.24 6.96 12.48 6.96 6.96 6.96 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% AbelianSemiGroup() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 328 324 moveto +194 324 lineto +194 288 lineto +328 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 328 324 moveto +194 324 lineto +194 288 lineto +328 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +201 301 moveto +(AbelianSemiGroup\(\)) +[9.84 6.96 6.24 3.84 3.84 6.24 6.96 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 +% AbelianMonoid()->AbelianSemiGroup() +newpath 261 360 moveto +261 352 261 343 261 334 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 265 334 moveto +261 324 lineto +258 334 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 265 334 moveto +261 324 lineto +258 334 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 211 252 moveto +117 252 lineto +117 216 lineto +211 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 211 252 moveto +117 252 lineto +117 216 lineto +211 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +124 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 +% AbelianSemiGroup()->SetCategory() +newpath 237 288 moveto +225 279 210 268 196 258 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 198 255 moveto +188 252 lineto +194 261 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 198 255 moveto +188 252 lineto +194 261 lineto +closepath +stroke +end grestore +% RepeatedDoubling(AbelianSemiGroup) +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 477 252 moveto +239 252 lineto +239 216 lineto +477 216 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 477 252 moveto +239 252 lineto +239 216 lineto +477 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +247 229 moveto +(RepeatedDoubling\(AbelianSemiGroup\)) +[9.12 6.24 6.96 6.24 6.24 3.84 6.24 6.96 10.08 6.96 6.96 6.96 3.84 3.84 6.96 6.96 4.56 9.84 6.96 6.24 3.84 3.84 6.24 6.96 7.68 6.24 10.8 3.84 10.08 4.8 6.96 6.96 6.96 4.56] +xshow +end grestore +end grestore +% AbelianSemiGroup()->RepeatedDoubling(AbelianSemiGroup) +newpath 285 288 moveto +297 279 312 268 326 258 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 328 261 moveto +334 252 lineto +324 255 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 328 261 moveto +334 252 lineto +324 255 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 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 +% SetCategory()->BasicType() +newpath 121 216 moveto +104 207 86 195 73 180 curveto +59 162 51 137 47 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 50 117 moveto +45 108 lineto +44 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 50 117 moveto +45 108 lineto +44 118 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 246 180 moveto +82 180 lineto +82 144 lineto +246 144 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 246 180 moveto +82 180 lineto +82 144 lineto +246 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +90 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 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 +% RepeatedDoubling(a:SetCategory) +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 472 180 moveto +264 180 lineto +264 144 lineto +472 144 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 472 180 moveto +264 180 lineto +264 144 lineto +472 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +271 157 moveto +(RepeatedDoubling\(a:SetCategory\)) +[9.12 6.24 6.96 6.24 6.24 3.84 6.24 6.96 10.08 6.96 6.96 6.96 3.84 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 +% RepeatedDoubling(AbelianSemiGroup)->RepeatedDoubling(a:SetCategory) +newpath 361 216 moveto +362 208 363 199 364 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 367 190 moveto +365 180 lineto +361 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 367 190 moveto +365 180 lineto +361 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 139 36 moveto +71 36 lineto +71 0 lineto +139 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 139 36 moveto +71 36 lineto +71 0 lineto +139 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +79 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 58 72 moveto +66 63 75 53 82 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 85 46 moveto +89 36 lineto +80 41 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 85 46 moveto +89 36 lineto +80 41 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 234 108 moveto +102 108 lineto +102 72 lineto +234 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 234 108 moveto +102 108 lineto +102 72 lineto +234 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +110 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 165 144 moveto +166 136 166 127 166 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 169 118 moveto +167 108 lineto +163 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 169 118 moveto +167 108 lineto +163 118 lineto +closepath +stroke +end grestore +% CoercibleTo(a:Type)->Category +newpath 152 72 moveto +144 63 135 53 128 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 130 41 moveto +121 36 lineto +125 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 130 41 moveto +121 36 lineto +125 46 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 399 108 moveto +337 108 lineto +337 72 lineto +399 72 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 399 108 moveto +337 108 lineto +337 72 lineto +399 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +344 85 moveto +(Package) +[7.44 6.24 6 6.96 6.24 6.72 6.24] +xshow +end grestore +end grestore +% RepeatedDoubling(a:SetCategory)->Package +newpath 368 144 moveto +368 136 368 127 368 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 372 118 moveto +368 108 lineto +365 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 372 118 moveto +368 108 lineto +365 118 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102cancellationabelianmonoid.ps b/books/ps/v102cancellationabelianmonoid.ps new file mode 100644 index 0000000..3ad5745 --- /dev/null +++ b/books/ps/v102cancellationabelianmonoid.ps @@ -0,0 +1,729 @@ +%!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 521 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 521 512 +%%PageOrientation: Portrait +gsave +36 36 485 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 +483 474 lineto +483 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 474 lineto +483 474 lineto +483 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% CancellationAbelianMonoid() +[ /Rect [ 169 432 353 468 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet#nameddest=CABMON) >> + /Subtype /Link +/ANN pdfmark +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 353 468 moveto +169 468 lineto +169 432 lineto +353 432 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 353 468 moveto +169 468 lineto +169 432 lineto +353 432 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +177 445 moveto +(CancellationAbelianMonoid\(\)) +[9.36 6.24 6.96 6.24 6.24 3.84 3.84 6.24 3.84 3.84 6.96 6.96 9.84 6.96 6.24 3.84 3.84 6.24 6.96 12.48 6.96 6.96 6.96 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% AbelianMonoid() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 318 396 moveto +204 396 lineto +204 360 lineto +318 360 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 318 396 moveto +204 396 lineto +204 360 lineto +318 360 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +211 373 moveto +(AbelianMonoid\(\)) +[9.84 6.96 6.24 3.84 3.84 6.24 6.96 12.48 6.96 6.96 6.96 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% CancellationAbelianMonoid()->AbelianMonoid() +newpath 261 432 moveto +261 424 261 415 261 406 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 265 406 moveto +261 396 lineto +258 406 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 265 406 moveto +261 396 lineto +258 406 lineto +closepath +stroke +end grestore +% AbelianSemiGroup() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 328 324 moveto +194 324 lineto +194 288 lineto +328 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 328 324 moveto +194 324 lineto +194 288 lineto +328 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +201 301 moveto +(AbelianSemiGroup\(\)) +[9.84 6.96 6.24 3.84 3.84 6.24 6.96 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 +% AbelianMonoid()->AbelianSemiGroup() +newpath 261 360 moveto +261 352 261 343 261 334 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 265 334 moveto +261 324 lineto +258 334 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 265 334 moveto +261 324 lineto +258 334 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 211 252 moveto +117 252 lineto +117 216 lineto +211 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 211 252 moveto +117 252 lineto +117 216 lineto +211 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +124 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 +% AbelianSemiGroup()->SetCategory() +newpath 237 288 moveto +225 279 210 268 196 258 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 198 255 moveto +188 252 lineto +194 261 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 198 255 moveto +188 252 lineto +194 261 lineto +closepath +stroke +end grestore +% RepeatedDoubling(AbelianSemiGroup) +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 477 252 moveto +239 252 lineto +239 216 lineto +477 216 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 477 252 moveto +239 252 lineto +239 216 lineto +477 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +247 229 moveto +(RepeatedDoubling\(AbelianSemiGroup\)) +[9.12 6.24 6.96 6.24 6.24 3.84 6.24 6.96 10.08 6.96 6.96 6.96 3.84 3.84 6.96 6.96 4.56 9.84 6.96 6.24 3.84 3.84 6.24 6.96 7.68 6.24 10.8 3.84 10.08 4.8 6.96 6.96 6.96 4.56] +xshow +end grestore +end grestore +% AbelianSemiGroup()->RepeatedDoubling(AbelianSemiGroup) +newpath 285 288 moveto +297 279 312 268 326 258 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 328 261 moveto +334 252 lineto +324 255 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 328 261 moveto +334 252 lineto +324 255 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 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 +% SetCategory()->BasicType() +newpath 121 216 moveto +104 207 86 195 73 180 curveto +59 162 51 137 47 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 50 117 moveto +45 108 lineto +44 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 50 117 moveto +45 108 lineto +44 118 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 246 180 moveto +82 180 lineto +82 144 lineto +246 144 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 246 180 moveto +82 180 lineto +82 144 lineto +246 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +90 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 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 +% RepeatedDoubling(a:SetCategory) +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 472 180 moveto +264 180 lineto +264 144 lineto +472 144 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 472 180 moveto +264 180 lineto +264 144 lineto +472 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +271 157 moveto +(RepeatedDoubling\(a:SetCategory\)) +[9.12 6.24 6.96 6.24 6.24 3.84 6.24 6.96 10.08 6.96 6.96 6.96 3.84 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 +% RepeatedDoubling(AbelianSemiGroup)->RepeatedDoubling(a:SetCategory) +newpath 361 216 moveto +362 208 363 199 364 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 367 190 moveto +365 180 lineto +361 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 367 190 moveto +365 180 lineto +361 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 139 36 moveto +71 36 lineto +71 0 lineto +139 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 139 36 moveto +71 36 lineto +71 0 lineto +139 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +79 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 58 72 moveto +66 63 75 53 82 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 85 46 moveto +89 36 lineto +80 41 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 85 46 moveto +89 36 lineto +80 41 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 234 108 moveto +102 108 lineto +102 72 lineto +234 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 234 108 moveto +102 108 lineto +102 72 lineto +234 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +110 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 165 144 moveto +166 136 166 127 166 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 169 118 moveto +167 108 lineto +163 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 169 118 moveto +167 108 lineto +163 118 lineto +closepath +stroke +end grestore +% CoercibleTo(a:Type)->Category +newpath 152 72 moveto +144 63 135 53 128 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 130 41 moveto +121 36 lineto +125 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 130 41 moveto +121 36 lineto +125 46 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 399 108 moveto +337 108 lineto +337 72 lineto +399 72 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 399 108 moveto +337 108 lineto +337 72 lineto +399 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +344 85 moveto +(Package) +[7.44 6.24 6 6.96 6.24 6.72 6.24] +xshow +end grestore +end grestore +% RepeatedDoubling(a:SetCategory)->Package +newpath 368 144 moveto +368 136 368 127 368 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 372 118 moveto +368 108 lineto +365 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 372 118 moveto +368 108 lineto +365 118 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102finitesetaggregate.ps b/books/ps/v102finitesetaggregate.ps new file mode 100644 index 0000000..07aab67 --- /dev/null +++ b/books/ps/v102finitesetaggregate.ps @@ -0,0 +1,636 @@ +%!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 512 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 512 296 +%%PageOrientation: Portrait +gsave +36 36 476 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 +474 258 lineto +474 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 258 lineto +474 258 lineto +474 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% FiniteSetAggregate(a:SetCategory) +[ /Rect [ 102 216 314 252 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet#nameddest=FSAGG) >> + /Subtype /Link +/ANN pdfmark +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 314 252 moveto +102 252 lineto +102 216 lineto +314 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 314 252 moveto +102 252 lineto +102 216 lineto +314 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +109 229 moveto +(FiniteSetAggregate\(a:SetCategory\)) +[7.44 3.84 6.96 3.84 3.84 6.24 7.68 6 3.84 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.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 +% Dictionary(a:SetCategory) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 196 180 moveto +30 180 lineto +30 144 lineto +196 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 196 180 moveto +30 180 lineto +30 144 lineto +196 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +38 157 moveto +(Dictionary\(a:SetCategory\)) +[10.08 3.84 6.24 3.84 3.84 6.96 6.96 6.24 5.04 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 +% FiniteSetAggregate(a:SetCategory)->Dictionary(a:SetCategory) +newpath 184 216 moveto +173 207 158 196 145 186 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 147 183 moveto +137 180 lineto +143 189 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 147 183 moveto +137 180 lineto +143 189 lineto +closepath +stroke +end grestore +% SetAggregate(a:SetCategory) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 394 180 moveto +214 180 lineto +214 144 lineto +394 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 394 180 moveto +214 180 lineto +214 144 lineto +394 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +221 157 moveto +(SetAggregate\(a:SetCategory\)) +[7.68 6 3.84 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.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 +% FiniteSetAggregate(a:SetCategory)->SetAggregate(a:SetCategory) +newpath 232 216 moveto +244 207 259 196 272 186 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 274 189 moveto +280 180 lineto +270 183 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 274 189 moveto +280 180 lineto +270 183 lineto +closepath +stroke +end grestore +% DictionaryOperations(a:SetCategory) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 226 108 moveto +0 108 lineto +0 72 lineto +226 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 226 108 moveto +0 108 lineto +0 72 lineto +226 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +7 85 moveto +(DictionaryOperations\(a:SetCategory\)) +[10.08 3.84 6.24 3.84 3.84 6.96 6.96 6.24 5.04 6.96 10.08 6.96 6.24 4.8 6.24 3.84 3.84 6.96 6.96 5.52 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 +% Dictionary(a:SetCategory)->DictionaryOperations(a:SetCategory) +newpath 113 144 moveto +113 136 113 127 113 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 117 118 moveto +113 108 lineto +110 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 117 118 moveto +113 108 lineto +110 118 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 376 108 moveto +282 108 lineto +282 72 lineto +376 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 376 108 moveto +282 108 lineto +282 72 lineto +376 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +289 85 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 +% SetAggregate(a:SetCategory)->SetCategory() +newpath 310 144 moveto +313 136 316 126 320 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 323 119 moveto +323 108 lineto +317 117 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 323 119 moveto +323 108 lineto +317 117 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 254 36 moveto +180 36 lineto +180 0 lineto +254 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 254 36 moveto +180 36 lineto +180 0 lineto +254 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +187 13 moveto +(CLAGG...) +[9.36 8.64 9.36 10.08 10.08 3.6 3.6 3.6] +xshow +end grestore +end grestore +% SetAggregate(a:SetCategory)->CLAGG... +newpath 293 144 moveto +279 119 251 74 233 45 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 236 43 moveto +228 36 lineto +230 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 236 43 moveto +228 36 lineto +230 46 lineto +closepath +stroke +end grestore +% BASTYPE... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 368 36 moveto +278 36 lineto +278 0 lineto +368 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 368 36 moveto +278 36 lineto +278 0 lineto +368 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +286 13 moveto +(BASTYPE...) +[8.64 10.08 7.44 8.88 10.08 7.68 8.64 3.6 3.6 3.6] +xshow +end grestore +end grestore +% SetCategory()->BASTYPE... +newpath 327 72 moveto +326 64 326 55 325 46 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 329 46 moveto +325 36 lineto +322 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 329 46 moveto +325 36 lineto +322 46 lineto +closepath +stroke +end grestore +% KOERCE... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 468 36 moveto +386 36 lineto +386 0 lineto +468 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 468 36 moveto +386 36 lineto +386 0 lineto +468 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +393 13 moveto +(KOERCE...) +[9.12 10.08 8.64 8.88 9.36 8.64 3.6 3.6 3.6] +xshow +end grestore +end grestore +% SetCategory()->KOERCE... +newpath 354 72 moveto +366 63 381 52 395 42 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 397 45 moveto +403 36 lineto +393 39 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 397 45 moveto +403 36 lineto +393 39 lineto +closepath +stroke +end grestore +% DictionaryOperations(a:SetCategory)->CLAGG... +newpath 139 72 moveto +152 63 168 52 182 42 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 185 44 moveto +191 36 lineto +181 39 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 185 44 moveto +191 36 lineto +181 39 lineto +closepath +stroke +end grestore +% BGAGG... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 151 36 moveto +75 36 lineto +75 0 lineto +151 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 151 36 moveto +75 36 lineto +75 0 lineto +151 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +82 13 moveto +(BGAGG...) +[9.36 9.6 9.36 10.08 10.08 3.6 3.6 3.6] +xshow +end grestore +end grestore +% DictionaryOperations(a:SetCategory)->BGAGG... +newpath 113 72 moveto +113 64 113 55 113 46 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 117 46 moveto +113 36 lineto +110 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 117 46 moveto +113 36 lineto +110 46 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102monoid.ps b/books/ps/v102monoid.ps new file mode 100644 index 0000000..e76f312 --- /dev/null +++ b/books/ps/v102monoid.ps @@ -0,0 +1,678 @@ +%!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 514 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 514 440 +%%PageOrientation: Portrait +gsave +36 36 478 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 +476 402 lineto +476 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 402 lineto +476 402 lineto +476 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% Monoid() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 290 396 moveto +220 396 lineto +220 360 lineto +290 360 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 290 396 moveto +220 396 lineto +220 360 lineto +290 360 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +227 373 moveto +(Monoid\(\)) +[12.48 6.96 6.96 6.96 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% SemiGroup() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 300 324 moveto +210 324 lineto +210 288 lineto +300 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 300 324 moveto +210 324 lineto +210 288 lineto +300 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +218 301 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 +% Monoid()->SemiGroup() +newpath 255 360 moveto +255 352 255 343 255 334 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 259 334 moveto +255 324 lineto +252 334 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 259 334 moveto +255 324 lineto +252 334 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 211 252 moveto +117 252 lineto +117 216 lineto +211 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 211 252 moveto +117 252 lineto +117 216 lineto +211 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +124 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 +% SemiGroup()->SetCategory() +newpath 232 288 moveto +221 279 207 268 195 258 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 197 255 moveto +187 252 lineto +193 261 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 197 255 moveto +187 252 lineto +193 261 lineto +closepath +stroke +end grestore +% RepeatedSquaring(SemiGroup) +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 442 252 moveto +250 252 lineto +250 216 lineto +442 216 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 442 252 moveto +250 252 lineto +250 216 lineto +442 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +258 229 moveto +(RepeatedSquaring\(SemiGroup\)) +[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 7.68 6.24 10.8 3.84 10.08 4.8 6.96 6.96 6.96 4.56] +xshow +end grestore +end grestore +% SemiGroup()->RepeatedSquaring(SemiGroup) +newpath 278 288 moveto +289 279 303 268 315 258 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 317 261 moveto +323 252 lineto +313 255 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 317 261 moveto +323 252 lineto +313 255 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 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 +% SetCategory()->BasicType() +newpath 121 216 moveto +104 207 86 195 73 180 curveto +59 162 51 137 47 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 50 117 moveto +45 108 lineto +44 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 50 117 moveto +45 108 lineto +44 118 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 246 180 moveto +82 180 lineto +82 144 lineto +246 144 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 246 180 moveto +82 180 lineto +82 144 lineto +246 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +90 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 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 +% RepeatedSquaring(a:SetCategory) +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 470 180 moveto +264 180 lineto +264 144 lineto +470 144 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 470 180 moveto +264 180 lineto +264 144 lineto +470 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +271 157 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(SemiGroup)->RepeatedSquaring(a:SetCategory) +newpath 351 216 moveto +354 208 357 199 359 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 362 191 moveto +362 180 lineto +356 189 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 362 191 moveto +362 180 lineto +356 189 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 139 36 moveto +71 36 lineto +71 0 lineto +139 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 139 36 moveto +71 36 lineto +71 0 lineto +139 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +79 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 58 72 moveto +66 63 75 53 82 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 85 46 moveto +89 36 lineto +80 41 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 85 46 moveto +89 36 lineto +80 41 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 234 108 moveto +102 108 lineto +102 72 lineto +234 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 234 108 moveto +102 108 lineto +102 72 lineto +234 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +110 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 165 144 moveto +166 136 166 127 166 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 169 118 moveto +167 108 lineto +163 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 169 118 moveto +167 108 lineto +163 118 lineto +closepath +stroke +end grestore +% CoercibleTo(a:Type)->Category +newpath 152 72 moveto +144 63 135 53 128 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 130 41 moveto +121 36 lineto +125 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 130 41 moveto +121 36 lineto +125 46 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 398 108 moveto +336 108 lineto +336 72 lineto +398 72 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 398 108 moveto +336 108 lineto +336 72 lineto +398 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +343 85 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 367 144 moveto +367 136 367 127 367 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 371 118 moveto +367 108 lineto +364 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 371 118 moveto +367 108 lineto +364 118 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102multisetaggregate.ps b/books/ps/v102multisetaggregate.ps new file mode 100644 index 0000000..629fc7b --- /dev/null +++ b/books/ps/v102multisetaggregate.ps @@ -0,0 +1,540 @@ +%!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 453 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 453 296 +%%PageOrientation: Portrait +gsave +36 36 417 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 +415 258 lineto +415 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 258 lineto +415 258 lineto +415 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% MultisetAggregate(a:SetCategory) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 321 252 moveto +111 252 lineto +111 216 lineto +321 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 321 252 moveto +111 252 lineto +111 216 lineto +321 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +119 229 moveto +(MultisetAggregate\(a:SetCategory\)) +[12.48 6.96 3.84 3.84 3.84 5.52 6 3.84 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.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 +% MultiDictionary(a:SetCategory) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 211 180 moveto +15 180 lineto +15 144 lineto +211 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 211 180 moveto +15 180 lineto +15 144 lineto +211 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +22 157 moveto +(MultiDictionary\(a:SetCategory\)) +[12.48 6.96 3.84 3.84 3.84 10.08 3.84 6.24 3.84 3.84 6.96 6.96 6.24 5.04 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 +% MultisetAggregate(a:SetCategory)->MultiDictionary(a:SetCategory) +newpath 190 216 moveto +177 207 161 196 147 186 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 148 183 moveto +138 180 lineto +144 188 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 148 183 moveto +138 180 lineto +144 188 lineto +closepath +stroke +end grestore +% SetAggregate(a:SetCategory) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 409 180 moveto +229 180 lineto +229 144 lineto +409 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 409 180 moveto +229 180 lineto +229 144 lineto +409 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +236 157 moveto +(SetAggregate\(a:SetCategory\)) +[7.68 6 3.84 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.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 +% MultisetAggregate(a:SetCategory)->SetAggregate(a:SetCategory) +newpath 242 216 moveto +255 207 271 196 285 186 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 288 188 moveto +294 180 lineto +284 183 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 288 188 moveto +294 180 lineto +284 183 lineto +closepath +stroke +end grestore +% DictionaryOperations(a:SetCategory) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 226 108 moveto +0 108 lineto +0 72 lineto +226 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 226 108 moveto +0 108 lineto +0 72 lineto +226 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +7 85 moveto +(DictionaryOperations\(a:SetCategory\)) +[10.08 3.84 6.24 3.84 3.84 6.96 6.96 6.24 5.04 6.96 10.08 6.96 6.24 4.8 6.24 3.84 3.84 6.96 6.96 5.52 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 +% MultiDictionary(a:SetCategory)->DictionaryOperations(a:SetCategory) +newpath 113 144 moveto +113 136 113 127 113 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 117 118 moveto +113 108 lineto +110 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 117 118 moveto +113 108 lineto +110 118 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 267 36 moveto +193 36 lineto +193 0 lineto +267 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 267 36 moveto +193 36 lineto +193 0 lineto +267 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +200 13 moveto +(CLAGG...) +[9.36 8.64 9.36 10.08 10.08 3.6 3.6 3.6] +xshow +end grestore +end grestore +% SetAggregate(a:SetCategory)->CLAGG... +newpath 301 144 moveto +292 134 281 121 273 108 curveto +260 88 248 64 241 46 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 244 44 moveto +237 36 lineto +237 47 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 244 44 moveto +237 36 lineto +237 47 lineto +closepath +stroke +end grestore +% SETAGG... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 362 108 moveto +282 108 lineto +282 72 lineto +362 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 362 108 moveto +282 108 lineto +282 72 lineto +362 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +289 85 moveto +(SETAGG...) +[7.68 8.64 7.92 9.36 10.08 10.08 3.6 3.6 3.6] +xshow +end grestore +end grestore +% SetAggregate(a:SetCategory)->SETAGG... +newpath 320 144 moveto +321 136 321 127 321 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 325 118 moveto +321 108 lineto +318 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 325 118 moveto +321 108 lineto +318 118 lineto +closepath +stroke +end grestore +% DictionaryOperations(a:SetCategory)->CLAGG... +newpath 143 72 moveto +158 63 176 51 192 41 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 194 44 moveto +201 36 lineto +191 38 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 194 44 moveto +201 36 lineto +191 38 lineto +closepath +stroke +end grestore +% BGAGG... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 151 36 moveto +75 36 lineto +75 0 lineto +151 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 151 36 moveto +75 36 lineto +75 0 lineto +151 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +82 13 moveto +(BGAGG...) +[9.36 9.6 9.36 10.08 10.08 3.6 3.6 3.6] +xshow +end grestore +end grestore +% DictionaryOperations(a:SetCategory)->BGAGG... +newpath 113 72 moveto +113 64 113 55 113 46 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 117 46 moveto +113 36 lineto +110 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 117 46 moveto +113 36 lineto +110 46 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102orderedabelianmonoid.ps b/books/ps/v102orderedabelianmonoid.ps new file mode 100644 index 0000000..81557c9 --- /dev/null +++ b/books/ps/v102orderedabelianmonoid.ps @@ -0,0 +1,494 @@ +%!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 309 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 309 296 +%%PageOrientation: Portrait +gsave +36 36 273 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 +271 258 lineto +271 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 258 lineto +271 258 lineto +271 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% OrderedAbelianMonoid() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 196 252 moveto +36 252 lineto +36 216 lineto +196 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 196 252 moveto +36 252 lineto +36 216 lineto +196 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +44 229 moveto +(OrderedAbelianMonoid\(\)) +[10.08 4.56 6.96 6.24 4.8 6.24 6.96 9.84 6.96 6.24 3.84 3.84 6.24 6.96 12.48 6.96 6.96 6.96 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% OrderedAbelianSemiGroup() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 265 180 moveto +85 180 lineto +85 144 lineto +265 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 265 180 moveto +85 180 lineto +85 144 lineto +265 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +93 157 moveto +(OrderedAbelianSemiGroup\(\)) +[10.08 4.56 6.96 6.24 4.8 6.24 6.96 9.84 6.96 6.24 3.84 3.84 6.24 6.96 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 +% OrderedAbelianMonoid()->OrderedAbelianSemiGroup() +newpath 131 216 moveto +138 207 146 197 154 188 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 157 190 moveto +160 180 lineto +151 186 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 157 190 moveto +160 180 lineto +151 186 lineto +closepath +stroke +end grestore +% AbelianMonoid() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 114 108 moveto +0 108 lineto +0 72 lineto +114 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 114 108 moveto +0 108 lineto +0 72 lineto +114 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +7 85 moveto +(AbelianMonoid\(\)) +[9.84 6.96 6.24 3.84 3.84 6.24 6.96 12.48 6.96 6.96 6.96 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% OrderedAbelianMonoid()->AbelianMonoid() +newpath 99 216 moveto +91 206 82 193 76 180 curveto +68 160 63 136 60 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 63 118 moveto +59 108 lineto +57 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 63 118 moveto +59 108 lineto +57 118 lineto +closepath +stroke +end grestore +% OrderedAbelianSemiGroup()->AbelianMonoid() +newpath 145 144 moveto +130 135 111 123 95 113 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 96 110 moveto +86 108 lineto +93 116 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 96 110 moveto +86 108 lineto +93 116 lineto +closepath +stroke +end grestore +% OrderedSet() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 220 108 moveto +132 108 lineto +132 72 lineto +220 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 220 108 moveto +132 108 lineto +132 72 lineto +220 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +139 85 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 +% OrderedAbelianSemiGroup()->OrderedSet() +newpath 175 144 moveto +176 136 176 127 176 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 180 118 moveto +176 108 lineto +173 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 180 118 moveto +176 108 lineto +173 118 lineto +closepath +stroke +end grestore +% ABELSG... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 98 36 moveto +16 36 lineto +16 0 lineto +98 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 98 36 moveto +16 36 lineto +16 0 lineto +98 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +23 13 moveto +(ABELSG...) +[10.08 9.36 8.64 8.64 7.68 10.08 3.6 3.6 3.6] +xshow +end grestore +end grestore +% AbelianMonoid()->ABELSG... +newpath 57 72 moveto +57 64 57 55 57 46 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 61 46 moveto +57 36 lineto +54 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 61 46 moveto +57 36 lineto +54 46 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 215 36 moveto +137 36 lineto +137 0 lineto +215 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 215 36 moveto +137 36 lineto +137 0 lineto +215 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +145 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 +% OrderedSet()->SETCAT... +newpath 176 72 moveto +176 64 176 55 176 46 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 180 46 moveto +176 36 lineto +173 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 180 46 moveto +176 36 lineto +173 46 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102orderedabeliansemigroup.ps b/books/ps/v102orderedabeliansemigroup.ps new file mode 100644 index 0000000..35945ae --- /dev/null +++ b/books/ps/v102orderedabeliansemigroup.ps @@ -0,0 +1,795 @@ +%!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 521 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 521 512 +%%PageOrientation: Portrait +gsave +36 36 485 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 +483 474 lineto +483 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 474 lineto +483 474 lineto +483 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% OrderedAbelianSemiGroup() +[ /Rect [ 138 432 318 468 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet#nameddest=OASGP) >> + /Subtype /Link +/ANN pdfmark +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 318 468 moveto +138 468 lineto +138 432 lineto +318 432 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 318 468 moveto +138 468 lineto +138 432 lineto +318 432 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +146 445 moveto +(OrderedAbelianSemiGroup\(\)) +[10.08 4.56 6.96 6.24 4.8 6.24 6.96 9.84 6.96 6.24 3.84 3.84 6.24 6.96 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 +% OrderedSet() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 208 324 moveto +120 324 lineto +120 288 lineto +208 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 208 324 moveto +120 324 lineto +120 288 lineto +208 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +127 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 +% OrderedAbelianSemiGroup()->OrderedSet() +newpath 220 432 moveto +209 407 189 362 176 333 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 179 332 moveto +172 324 lineto +173 335 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 179 332 moveto +172 324 lineto +173 335 lineto +closepath +stroke +end grestore +% AbelianMonoid() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 339 396 moveto +225 396 lineto +225 360 lineto +339 360 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 339 396 moveto +225 396 lineto +225 360 lineto +339 360 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +232 373 moveto +(AbelianMonoid\(\)) +[9.84 6.96 6.24 3.84 3.84 6.24 6.96 12.48 6.96 6.96 6.96 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% OrderedAbelianSemiGroup()->AbelianMonoid() +newpath 242 432 moveto +248 424 256 413 263 404 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 266 406 moveto +269 396 lineto +260 402 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 266 406 moveto +269 396 lineto +260 402 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 211 252 moveto +117 252 lineto +117 216 lineto +211 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 211 252 moveto +117 252 lineto +117 216 lineto +211 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +124 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 164 288 moveto +164 280 164 271 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 +% AbelianSemiGroup() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 360 324 moveto +226 324 lineto +226 288 lineto +360 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 360 324 moveto +226 324 lineto +226 288 lineto +360 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +233 301 moveto +(AbelianSemiGroup\(\)) +[9.84 6.96 6.24 3.84 3.84 6.24 6.96 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 +% AbelianMonoid()->AbelianSemiGroup() +newpath 285 360 moveto +286 352 288 343 289 334 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 292 334 moveto +290 324 lineto +286 334 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 292 334 moveto +290 324 lineto +286 334 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 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 +% SetCategory()->BasicType() +newpath 121 216 moveto +104 207 86 195 73 180 curveto +59 162 51 137 47 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 50 117 moveto +45 108 lineto +44 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 50 117 moveto +45 108 lineto +44 118 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 246 180 moveto +82 180 lineto +82 144 lineto +246 144 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 246 180 moveto +82 180 lineto +82 144 lineto +246 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +90 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 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 +% AbelianSemiGroup()->SetCategory() +newpath 260 288 moveto +243 279 222 267 205 257 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 206 254 moveto +196 252 lineto +203 260 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 206 254 moveto +196 252 lineto +203 260 lineto +closepath +stroke +end grestore +% RepeatedDoubling(AbelianSemiGroup) +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 477 252 moveto +239 252 lineto +239 216 lineto +477 216 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 477 252 moveto +239 252 lineto +239 216 lineto +477 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +247 229 moveto +(RepeatedDoubling\(AbelianSemiGroup\)) +[9.12 6.24 6.96 6.24 6.24 3.84 6.24 6.96 10.08 6.96 6.96 6.96 3.84 3.84 6.96 6.96 4.56 9.84 6.96 6.24 3.84 3.84 6.24 6.96 7.68 6.24 10.8 3.84 10.08 4.8 6.96 6.96 6.96 4.56] +xshow +end grestore +end grestore +% AbelianSemiGroup()->RepeatedDoubling(AbelianSemiGroup) +newpath 309 288 moveto +317 279 326 269 335 260 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 338 262 moveto +342 252 lineto +333 257 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 338 262 moveto +342 252 lineto +333 257 lineto +closepath +stroke +end grestore +% RepeatedDoubling(a:SetCategory) +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 472 180 moveto +264 180 lineto +264 144 lineto +472 144 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 472 180 moveto +264 180 lineto +264 144 lineto +472 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +271 157 moveto +(RepeatedDoubling\(a:SetCategory\)) +[9.12 6.24 6.96 6.24 6.24 3.84 6.24 6.96 10.08 6.96 6.96 6.96 3.84 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 +% RepeatedDoubling(AbelianSemiGroup)->RepeatedDoubling(a:SetCategory) +newpath 361 216 moveto +362 208 363 199 364 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 367 190 moveto +365 180 lineto +361 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 367 190 moveto +365 180 lineto +361 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 139 36 moveto +71 36 lineto +71 0 lineto +139 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 139 36 moveto +71 36 lineto +71 0 lineto +139 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +79 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 58 72 moveto +66 63 75 53 82 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 85 46 moveto +89 36 lineto +80 41 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 85 46 moveto +89 36 lineto +80 41 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 234 108 moveto +102 108 lineto +102 72 lineto +234 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 234 108 moveto +102 108 lineto +102 72 lineto +234 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +110 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 165 144 moveto +166 136 166 127 166 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 169 118 moveto +167 108 lineto +163 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 169 118 moveto +167 108 lineto +163 118 lineto +closepath +stroke +end grestore +% CoercibleTo(a:Type)->Category +newpath 152 72 moveto +144 63 135 53 128 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 130 41 moveto +121 36 lineto +125 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 130 41 moveto +121 36 lineto +125 46 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 399 108 moveto +337 108 lineto +337 72 lineto +399 72 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 399 108 moveto +337 108 lineto +337 72 lineto +399 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +344 85 moveto +(Package) +[7.44 6.24 6 6.96 6.24 6.72 6.24] +xshow +end grestore +end grestore +% RepeatedDoubling(a:SetCategory)->Package +newpath 368 144 moveto +368 136 368 127 368 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 372 118 moveto +368 108 lineto +365 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 372 118 moveto +368 108 lineto +365 118 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102orderedfinite.ps b/books/ps/v102orderedfinite.ps new file mode 100644 index 0000000..5b606af --- /dev/null +++ b/books/ps/v102orderedfinite.ps @@ -0,0 +1,606 @@ +%!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 290 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 290 440 +%%PageOrientation: Portrait +gsave +36 36 254 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 +252 402 lineto +252 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 402 lineto +252 402 lineto +252 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% OrderedFinite() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 153 396 moveto +49 396 lineto +49 360 lineto +153 360 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 153 396 moveto +49 396 lineto +49 360 lineto +153 360 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +57 373 moveto +(OrderedFinite\(\)) +[10.08 4.56 6.96 6.24 4.8 6.24 6.96 7.44 3.84 6.96 3.84 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 100 324 moveto +12 324 lineto +12 288 lineto +100 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 100 324 moveto +12 324 lineto +12 288 lineto +100 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +19 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 +% OrderedFinite()->OrderedSet() +newpath 90 360 moveto +85 352 78 342 72 332 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 75 331 moveto +67 324 lineto +69 334 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 75 331 moveto +67 324 lineto +69 334 lineto +closepath +stroke +end grestore +% Finite() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 176 324 moveto +118 324 lineto +118 288 lineto +176 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 176 324 moveto +118 324 lineto +118 288 lineto +176 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +126 301 moveto +(Finite\(\)) +[7.44 3.84 6.96 3.84 3.84 6.24 4.56 4.56] +xshow +end grestore +end grestore +% OrderedFinite()->Finite() +newpath 113 360 moveto +118 352 125 342 131 332 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 134 334 moveto +136 324 lineto +128 331 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 134 334 moveto +136 324 lineto +128 331 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 148 252 moveto +54 252 lineto +54 216 lineto +148 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 148 252 moveto +54 252 lineto +54 216 lineto +148 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +61 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 67 288 moveto +72 280 79 270 85 260 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 88 262 moveto +90 252 lineto +82 259 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 88 262 moveto +90 252 lineto +82 259 lineto +closepath +stroke +end grestore +% Finite()->SetCategory() +newpath 135 288 moveto +130 280 123 270 117 260 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 120 259 moveto +112 252 lineto +114 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 120 259 moveto +112 252 lineto +114 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 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 +% SetCategory()->BasicType() +newpath 91 216 moveto +85 206 78 192 73 180 curveto +65 160 56 136 51 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 54 117 moveto +48 108 lineto +48 119 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 54 117 moveto +48 108 lineto +48 119 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 246 180 moveto +82 180 lineto +82 144 lineto +246 144 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 246 180 moveto +82 180 lineto +82 144 lineto +246 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +90 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 117 216 moveto +125 207 134 197 141 188 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 144 190 moveto +148 180 lineto +139 185 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 144 190 moveto +148 180 lineto +139 185 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 139 36 moveto +71 36 lineto +71 0 lineto +139 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 139 36 moveto +71 36 lineto +71 0 lineto +139 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +79 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 58 72 moveto +66 63 75 53 82 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 85 46 moveto +89 36 lineto +80 41 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 85 46 moveto +89 36 lineto +80 41 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 234 108 moveto +102 108 lineto +102 72 lineto +234 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 234 108 moveto +102 108 lineto +102 72 lineto +234 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +110 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 165 144 moveto +166 136 166 127 166 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 169 118 moveto +167 108 lineto +163 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 169 118 moveto +167 108 lineto +163 118 lineto +closepath +stroke +end grestore +% CoercibleTo(a:Type)->Category +newpath 152 72 moveto +144 63 135 53 128 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 130 41 moveto +121 36 lineto +125 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 130 41 moveto +121 36 lineto +125 46 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102orderedmonoid.ps b/books/ps/v102orderedmonoid.ps new file mode 100644 index 0000000..8ce38a2 --- /dev/null +++ b/books/ps/v102orderedmonoid.ps @@ -0,0 +1,800 @@ +%!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 514 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 514 512 +%%PageOrientation: Portrait +gsave +36 36 478 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 +476 474 lineto +476 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 474 lineto +476 474 lineto +476 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% OrderedMonoid() +[ /Rect [ 159 432 275 468 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet#nameddest=ORDMON) >> + /Subtype /Link +/ANN pdfmark +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 275 468 moveto +159 468 lineto +159 432 lineto +275 432 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 275 468 moveto +159 468 lineto +159 432 lineto +275 432 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +167 445 moveto +(OrderedMonoid\(\)) +[10.08 4.56 6.96 6.24 4.8 6.24 6.96 12.48 6.96 6.96 6.96 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% OrderedSet() +[ /Rect [ 120 288 208 324 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet#nameddest=ORDSET) >> + /Subtype /Link +/ANN pdfmark +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 208 324 moveto +120 324 lineto +120 288 lineto +208 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 208 324 moveto +120 324 lineto +120 288 lineto +208 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +127 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 +% OrderedMonoid()->OrderedSet() +newpath 210 432 moveto +201 407 185 363 174 334 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 177 333 moveto +171 324 lineto +171 335 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 177 333 moveto +171 324 lineto +171 335 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 295 396 moveto +225 396 lineto +225 360 lineto +295 360 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 295 396 moveto +225 396 lineto +225 360 lineto +295 360 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +232 373 moveto +(Monoid\(\)) +[12.48 6.96 6.96 6.96 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% OrderedMonoid()->Monoid() +newpath 228 432 moveto +233 424 239 414 244 405 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 247 406 moveto +249 396 lineto +241 403 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 247 406 moveto +249 396 lineto +241 403 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 211 252 moveto +117 252 lineto +117 216 lineto +211 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 211 252 moveto +117 252 lineto +117 216 lineto +211 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +124 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 164 288 moveto +164 280 164 271 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 +% SemiGroup() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 316 324 moveto +226 324 lineto +226 288 lineto +316 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 316 324 moveto +226 324 lineto +226 288 lineto +316 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +234 301 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 +% Monoid()->SemiGroup() +newpath 263 360 moveto +264 352 266 343 267 334 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 270 334 moveto +268 324 lineto +264 334 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 270 334 moveto +268 324 lineto +264 334 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 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 +% SetCategory()->BasicType() +newpath 121 216 moveto +104 207 86 195 73 180 curveto +59 162 51 137 47 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 50 117 moveto +45 108 lineto +44 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 50 117 moveto +45 108 lineto +44 118 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 246 180 moveto +82 180 lineto +82 144 lineto +246 144 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 246 180 moveto +82 180 lineto +82 144 lineto +246 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +90 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 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 +% SemiGroup()->SetCategory() +newpath 244 288 moveto +231 279 214 268 200 258 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 201 255 moveto +191 252 lineto +197 260 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 201 255 moveto +191 252 lineto +197 260 lineto +closepath +stroke +end grestore +% RepeatedSquaring(SemiGroup) +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 442 252 moveto +250 252 lineto +250 216 lineto +442 216 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 442 252 moveto +250 252 lineto +250 216 lineto +442 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +258 229 moveto +(RepeatedSquaring\(SemiGroup\)) +[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 7.68 6.24 10.8 3.84 10.08 4.8 6.96 6.96 6.96 4.56] +xshow +end grestore +end grestore +% SemiGroup()->RepeatedSquaring(SemiGroup) +newpath 290 288 moveto +299 279 310 269 320 259 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 322 262 moveto +327 252 lineto +317 257 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 322 262 moveto +327 252 lineto +317 257 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 470 180 moveto +264 180 lineto +264 144 lineto +470 144 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 470 180 moveto +264 180 lineto +264 144 lineto +470 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +271 157 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(SemiGroup)->RepeatedSquaring(a:SetCategory) +newpath 351 216 moveto +354 208 357 199 359 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 362 191 moveto +362 180 lineto +356 189 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 362 191 moveto +362 180 lineto +356 189 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 139 36 moveto +71 36 lineto +71 0 lineto +139 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 139 36 moveto +71 36 lineto +71 0 lineto +139 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +79 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 58 72 moveto +66 63 75 53 82 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 85 46 moveto +89 36 lineto +80 41 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 85 46 moveto +89 36 lineto +80 41 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 234 108 moveto +102 108 lineto +102 72 lineto +234 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 234 108 moveto +102 108 lineto +102 72 lineto +234 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +110 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 165 144 moveto +166 136 166 127 166 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 169 118 moveto +167 108 lineto +163 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 169 118 moveto +167 108 lineto +163 118 lineto +closepath +stroke +end grestore +% CoercibleTo(a:Type)->Category +newpath 152 72 moveto +144 63 135 53 128 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 130 41 moveto +121 36 lineto +125 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 130 41 moveto +121 36 lineto +125 46 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 398 108 moveto +336 108 lineto +336 72 lineto +398 72 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 398 108 moveto +336 108 lineto +336 72 lineto +398 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +343 85 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 367 144 moveto +367 136 367 127 367 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 371 118 moveto +367 108 lineto +364 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 371 118 moveto +367 108 lineto +364 118 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102orderedmultisetaggregate.ps b/books/ps/v102orderedmultisetaggregate.ps new file mode 100644 index 0000000..8ed618a --- /dev/null +++ b/books/ps/v102orderedmultisetaggregate.ps @@ -0,0 +1,708 @@ +%!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 694 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 694 368 +%%PageOrientation: Portrait +gsave +36 36 658 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 +656 330 lineto +656 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 330 lineto +656 330 lineto +656 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% OrderedMultisetAggregate(a:SetCategory) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 532 324 moveto +278 324 lineto +278 288 lineto +532 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 532 324 moveto +278 324 lineto +278 288 lineto +532 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +285 301 moveto +(OrderedMultisetAggregate\(a:SetCategory\)) +[10.08 4.56 6.96 6.24 4.8 6.24 6.96 12.48 6.96 3.84 3.84 3.84 5.52 6 3.84 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.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 +% MultisetAggregate(a:SetCategory) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 388 252 moveto +178 252 lineto +178 216 lineto +388 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 388 252 moveto +178 252 lineto +178 216 lineto +388 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +186 229 moveto +(MultisetAggregate\(a:SetCategory\)) +[12.48 6.96 3.84 3.84 3.84 5.52 6 3.84 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.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 +% OrderedMultisetAggregate(a:SetCategory)->MultisetAggregate(a:SetCategory) +newpath 374 288 moveto +358 279 339 267 322 257 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 323 254 moveto +313 252 lineto +320 260 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 323 254 moveto +313 252 lineto +320 260 lineto +closepath +stroke +end grestore +% PriorityQueueAggregate(a:SetCategory) +[ /Rect [ 406 216 650 252 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet#nameddest=PRQAGG) >> + /Subtype /Link +/ANN pdfmark +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 650 252 moveto +406 252 lineto +406 216 lineto +650 216 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 650 252 moveto +406 252 lineto +406 216 lineto +650 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +414 229 moveto +(PriorityQueueAggregate\(a:SetCategory\)) +[7.68 5.04 3.84 6.96 5.04 3.84 3.84 6.96 10.08 6.96 6.24 6.96 6.24 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.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 +% OrderedMultisetAggregate(a:SetCategory)->PriorityQueueAggregate(a:SetCategory) +newpath 436 288 moveto +452 279 471 267 488 257 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 490 260 moveto +497 252 lineto +487 254 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 490 260 moveto +497 252 lineto +487 254 lineto +closepath +stroke +end grestore +% MultiDictionary(a:SetCategory) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 394 180 moveto +198 180 lineto +198 144 lineto +394 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 394 180 moveto +198 180 lineto +198 144 lineto +394 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +205 157 moveto +(MultiDictionary\(a:SetCategory\)) +[12.48 6.96 3.84 3.84 3.84 10.08 3.84 6.24 3.84 3.84 6.96 6.96 6.24 5.04 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 +% MultisetAggregate(a:SetCategory)->MultiDictionary(a:SetCategory) +newpath 286 216 moveto +287 208 289 199 291 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 294 190 moveto +293 180 lineto +288 189 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 294 190 moveto +293 180 lineto +288 189 lineto +closepath +stroke +end grestore +% SetAggregate(a:SetCategory) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 180 180 moveto +0 180 lineto +0 144 lineto +180 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 180 180 moveto +0 180 lineto +0 144 lineto +180 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +7 157 moveto +(SetAggregate\(a:SetCategory\)) +[7.68 6 3.84 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.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 +% MultisetAggregate(a:SetCategory)->SetAggregate(a:SetCategory) +newpath 234 216 moveto +208 206 175 194 147 184 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 149 181 moveto +138 180 lineto +146 187 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 149 181 moveto +138 180 lineto +146 187 lineto +closepath +stroke +end grestore +% PriorityQueueAggregate(a:Type) +[ /Rect [ 427 72 629 108 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet#nameddest=PRQAGG) >> + /Subtype /Link +/ANN pdfmark +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 629 108 moveto +427 108 lineto +427 72 lineto +629 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 629 108 moveto +427 108 lineto +427 72 lineto +629 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +435 85 moveto +(PriorityQueueAggregate\(a:Type\)) +[7.68 5.04 3.84 6.96 5.04 3.84 3.84 6.96 10.08 6.96 6.24 6.96 6.24 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 +% PriorityQueueAggregate(a:SetCategory)->PriorityQueueAggregate(a:Type) +newpath 528 216 moveto +528 191 528 147 528 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 532 118 moveto +528 108 lineto +525 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 532 118 moveto +528 108 lineto +525 118 lineto +closepath +stroke +end grestore +% DictionaryOperations(a:SetCategory) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 409 108 moveto +183 108 lineto +183 72 lineto +409 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 409 108 moveto +183 108 lineto +183 72 lineto +409 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +190 85 moveto +(DictionaryOperations\(a:SetCategory\)) +[10.08 3.84 6.24 3.84 3.84 6.96 6.96 6.24 5.04 6.96 10.08 6.96 6.24 4.8 6.24 3.84 3.84 6.96 6.96 5.52 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 +% MultiDictionary(a:SetCategory)->DictionaryOperations(a:SetCategory) +newpath 296 144 moveto +296 136 296 127 296 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 300 118 moveto +296 108 lineto +293 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 300 118 moveto +296 108 lineto +293 118 lineto +closepath +stroke +end grestore +% SETAGG... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 165 108 moveto +85 108 lineto +85 72 lineto +165 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 165 108 moveto +85 108 lineto +85 72 lineto +165 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +92 85 moveto +(SETAGG...) +[7.68 8.64 7.92 9.36 10.08 10.08 3.6 3.6 3.6] +xshow +end grestore +end grestore +% SetAggregate(a:SetCategory)->SETAGG... +newpath 99 144 moveto +103 136 107 126 112 117 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 115 119 moveto +116 108 lineto +109 116 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 115 119 moveto +116 108 lineto +109 116 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 250 36 moveto +176 36 lineto +176 0 lineto +250 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 250 36 moveto +176 36 lineto +176 0 lineto +250 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +183 13 moveto +(CLAGG...) +[9.36 8.64 9.36 10.08 10.08 3.6 3.6 3.6] +xshow +end grestore +end grestore +% SetAggregate(a:SetCategory)->CLAGG... +newpath 80 144 moveto +72 124 62 93 76 72 curveto +87 56 131 40 166 30 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 167 33 moveto +176 27 lineto +165 27 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 167 33 moveto +176 27 lineto +165 27 lineto +closepath +stroke +end grestore +% DictionaryOperations(a:SetCategory)->CLAGG... +newpath 275 72 moveto +265 63 252 52 241 43 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 243 40 moveto +233 36 lineto +238 45 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 243 40 moveto +233 36 lineto +238 45 lineto +closepath +stroke +end grestore +% BGAGG... +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 417 36 moveto +341 36 lineto +341 0 lineto +417 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 417 36 moveto +341 36 lineto +341 0 lineto +417 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +348 13 moveto +(BGAGG...) +[9.36 9.6 9.36 10.08 10.08 3.6 3.6 3.6] +xshow +end grestore +end grestore +% DictionaryOperations(a:SetCategory)->BGAGG... +newpath 317 72 moveto +327 63 340 52 351 43 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 354 45 moveto +359 36 lineto +349 40 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 354 45 moveto +359 36 lineto +349 40 lineto +closepath +stroke +end grestore +% PriorityQueueAggregate(a:Type)->BGAGG... +newpath 490 72 moveto +470 62 446 51 425 40 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 427 37 moveto +416 36 lineto +424 43 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 427 37 moveto +416 36 lineto +424 43 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102rng.ps b/books/ps/v102rng.ps new file mode 100644 index 0000000..78d0303 --- /dev/null +++ b/books/ps/v102rng.ps @@ -0,0 +1,653 @@ +%!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 402 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 402 440 +%%PageOrientation: Portrait +gsave +36 36 366 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 +364 402 lineto +364 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 402 lineto +364 402 lineto +364 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% Rng() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 227 396 moveto +173 396 lineto +173 360 lineto +227 360 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 227 396 moveto +173 396 lineto +173 360 lineto +227 360 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +183 373 moveto +(Rng\(\)) +[9.36 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% AbelianGroup() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 193 324 moveto +87 324 lineto +87 288 lineto +193 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 193 324 moveto +87 324 lineto +87 288 lineto +193 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +95 301 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 185 360 moveto +178 351 169 341 162 332 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 164 329 moveto +155 324 lineto +159 334 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 164 329 moveto +155 324 lineto +159 334 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 305 324 moveto +215 324 lineto +215 288 lineto +305 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 305 324 moveto +215 324 lineto +215 288 lineto +305 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +223 301 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 215 360 moveto +222 351 231 341 238 332 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 241 334 moveto +245 324 lineto +236 329 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 241 334 moveto +245 324 lineto +236 329 lineto +closepath +stroke +end grestore +% CancellationAbelianMonoid() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 232 252 moveto +48 252 lineto +48 216 lineto +232 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 232 252 moveto +48 252 lineto +48 216 lineto +232 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +56 229 moveto +(CancellationAbelianMonoid\(\)) +[9.36 6.24 6.96 6.24 6.24 3.84 3.84 6.24 3.84 3.84 6.96 6.96 9.84 6.96 6.24 3.84 3.84 6.24 6.96 12.48 6.96 6.96 6.96 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% AbelianGroup()->CancellationAbelianMonoid() +newpath 140 288 moveto +140 280 140 271 140 262 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 144 262 moveto +140 252 lineto +137 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 144 262 moveto +140 252 lineto +137 262 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 123 36 moveto +51 36 lineto +51 0 lineto +123 0 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 123 36 moveto +51 36 lineto +51 0 lineto +123 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +58 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 87 290 moveto +69 282 50 269 39 252 curveto +0 185 44 90 70 45 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 73 46 moveto +75 36 lineto +67 43 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 73 46 moveto +75 36 lineto +67 43 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 232 36 moveto +154 36 lineto +154 0 lineto +232 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 232 36 moveto +154 36 lineto +154 0 lineto +232 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +162 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 258 288 moveto +253 248 239 150 216 72 curveto +213 63 209 54 206 46 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 209 44 moveto +202 36 lineto +202 47 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 209 44 moveto +202 36 lineto +202 47 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 358 252 moveto +288 252 lineto +288 216 lineto +358 216 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 358 252 moveto +288 252 lineto +288 216 lineto +358 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +295 229 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 276 288 moveto +284 279 293 269 300 260 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 303 262 moveto +307 252 lineto +298 257 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 303 262 moveto +307 252 lineto +298 257 lineto +closepath +stroke +end grestore +% AbelianMonoid() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 197 180 moveto +83 180 lineto +83 144 lineto +197 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 197 180 moveto +83 180 lineto +83 144 lineto +197 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +90 157 moveto +(AbelianMonoid\(\)) +[9.84 6.96 6.24 3.84 3.84 6.24 6.96 12.48 6.96 6.96 6.96 3.84 6.96 4.56 4.56] +xshow +end grestore +end grestore +% CancellationAbelianMonoid()->AbelianMonoid() +newpath 140 216 moveto +140 208 140 199 140 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 144 190 moveto +140 180 lineto +137 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 144 190 moveto +140 180 lineto +137 190 lineto +closepath +stroke +end grestore +% AbelianSemiGroup() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 207 108 moveto +73 108 lineto +73 72 lineto +207 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 207 108 moveto +73 108 lineto +73 72 lineto +207 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +80 85 moveto +(AbelianSemiGroup\(\)) +[9.84 6.96 6.24 3.84 3.84 6.24 6.96 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 +% AbelianMonoid()->AbelianSemiGroup() +newpath 140 144 moveto +140 136 140 127 140 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 144 118 moveto +140 108 lineto +137 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 144 118 moveto +140 108 lineto +137 118 lineto +closepath +stroke +end grestore +% AbelianSemiGroup()->REPDB... +newpath 127 72 moveto +121 64 113 53 106 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 109 42 moveto +100 36 lineto +103 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 109 42 moveto +100 36 lineto +103 46 lineto +closepath +stroke +end grestore +% AbelianSemiGroup()->SETCAT... +newpath 153 72 moveto +159 64 167 53 174 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 177 46 moveto +180 36 lineto +171 42 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 177 46 moveto +180 36 lineto +171 42 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102setaggregate.ps b/books/ps/v102setaggregate.ps new file mode 100644 index 0000000..08f2e02 --- /dev/null +++ b/books/ps/v102setaggregate.ps @@ -0,0 +1,760 @@ +%!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 439 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 439 512 +%%PageOrientation: Portrait +gsave +36 36 403 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 +401 474 lineto +401 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 474 lineto +401 474 lineto +401 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% SetAggregate(a:SetCategory) +[ /Rect [ 106 432 286 468 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet#nameddest=SETAGG) >> + /Subtype /Link +/ANN pdfmark +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 286 468 moveto +106 468 lineto +106 432 lineto +286 432 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 286 468 moveto +106 468 lineto +106 432 lineto +286 432 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +113 445 moveto +(SetAggregate\(a:SetCategory\)) +[7.68 6 3.84 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.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 +% SetCategory() +[ /Rect [ 81 216 175 252 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet#nameddest=SETCAT) >> + /Subtype /Link +/ANN pdfmark +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 175 252 moveto +81 252 lineto +81 216 lineto +175 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 175 252 moveto +81 252 lineto +81 216 lineto +175 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +88 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 +% SetAggregate(a:SetCategory)->SetCategory() +newpath 185 432 moveto +179 422 172 408 168 396 curveto +151 350 139 295 133 262 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 136 261 moveto +131 252 lineto +130 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 136 261 moveto +131 252 lineto +130 262 lineto +closepath +stroke +end grestore +% Collection(a:SetCategory) +[ /Rect [ 177 360 339 396 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet#nameddest=CLAGG) >> + /Subtype /Link +/ANN pdfmark +gsave 10 dict begin +filled +0.404 0.667 0.545 nodecolor +0.404 0.667 0.545 nodecolor +newpath 339 396 moveto +177 396 lineto +177 360 lineto +339 360 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 339 396 moveto +177 396 lineto +177 360 lineto +339 360 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +184 373 moveto +(Collection\(a:SetCategory\)) +[9.36 6.96 3.84 3.84 6.24 6.24 3.84 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 +% SetAggregate(a:SetCategory)->Collection(a:SetCategory) +newpath 212 432 moveto +219 423 228 413 236 404 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 239 406 moveto +243 396 lineto +234 401 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 239 406 moveto +243 396 lineto +234 401 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 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 +% SetCategory()->BasicType() +newpath 98 216 moveto +84 207 70 194 61 180 curveto +50 162 46 137 43 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 46 118 moveto +42 108 lineto +40 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 46 118 moveto +42 108 lineto +40 118 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 234 180 moveto +70 180 lineto +70 144 lineto +234 144 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 234 180 moveto +70 180 lineto +70 144 lineto +234 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +78 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 134 216 moveto +137 208 140 198 143 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 146 191 moveto +146 180 lineto +140 189 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 146 191 moveto +146 180 lineto +140 189 lineto +closepath +stroke +end grestore +% Collection(a:Type) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 346 324 moveto +226 324 lineto +226 288 lineto +346 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 346 324 moveto +226 324 lineto +226 288 lineto +346 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +233 301 moveto +(Collection\(a:Type\)) +[9.36 6.96 3.84 3.84 6.24 6.24 3.84 3.84 6.96 6.96 4.56 6.24 3.84 7.2 6.96 6.96 6.24 4.56] +xshow +end grestore +end grestore +% Collection(a:SetCategory)->Collection(a:Type) +newpath 265 360 moveto +268 352 272 342 275 334 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 279 335 moveto +279 324 lineto +272 332 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 279 335 moveto +279 324 lineto +272 332 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 202 36 moveto +134 36 lineto +134 0 lineto +202 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 202 36 moveto +134 36 lineto +134 0 lineto +202 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +142 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 74 72 moveto +90 63 110 51 128 41 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 130 44 moveto +137 36 lineto +127 38 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 130 44 moveto +137 36 lineto +127 38 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 234 108 moveto +102 108 lineto +102 72 lineto +234 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 234 108 moveto +102 108 lineto +102 72 lineto +234 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +110 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 156 144 moveto +158 136 160 127 162 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 165 118 moveto +164 108 lineto +159 117 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 165 118 moveto +164 108 lineto +159 117 lineto +closepath +stroke +end grestore +% CoercibleTo(a:Type)->Category +newpath 168 72 moveto +168 64 168 55 168 46 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 172 46 moveto +168 36 lineto +165 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 172 46 moveto +168 36 lineto +165 46 lineto +closepath +stroke +end grestore +% HomogeneousAggregate(a:Type) +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 395 252 moveto +193 252 lineto +193 216 lineto +395 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 395 252 moveto +193 252 lineto +193 216 lineto +395 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +200 229 moveto +(HomogeneousAggregate\(a:Type\)) +[10.08 6.96 10.8 6.96 6.72 6.24 6.96 6.24 6.96 6.96 5.52 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 +% Collection(a:Type)->HomogeneousAggregate(a:Type) +newpath 288 288 moveto +289 280 290 271 291 262 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 294 262 moveto +292 252 lineto +288 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 294 262 moveto +292 252 lineto +288 262 lineto +closepath +stroke +end grestore +% Aggregate() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 336 180 moveto +252 180 lineto +252 144 lineto +336 144 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 336 180 moveto +252 180 lineto +252 144 lineto +336 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +259 157 moveto +(Aggregate\(\)) +[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 +% HomogeneousAggregate(a:Type)->Aggregate() +newpath 294 216 moveto +294 208 294 199 294 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 298 190 moveto +294 180 lineto +291 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 298 190 moveto +294 180 lineto +291 190 lineto +closepath +stroke +end grestore +% Type() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 313 108 moveto +259 108 lineto +259 72 lineto +313 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 313 108 moveto +259 108 lineto +259 72 lineto +313 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +267 85 moveto +(Type\(\)) +[7.2 6.96 6.96 6.24 4.56 4.56] +xshow +end grestore +end grestore +% Aggregate()->Type() +newpath 292 144 moveto +291 136 290 127 289 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 292 118 moveto +288 108 lineto +286 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 292 118 moveto +288 108 lineto +286 118 lineto +closepath +stroke +end grestore +% Type()->Category +newpath 259 73 moveto +244 64 224 51 207 41 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 208 38 moveto +198 36 lineto +205 44 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 208 38 moveto +198 36 lineto +205 44 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102stepthrough.ps b/books/ps/v102stepthrough.ps new file mode 100644 index 0000000..b91cee3 --- /dev/null +++ b/books/ps/v102stepthrough.ps @@ -0,0 +1,499 @@ +%!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 290 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 290 368 +%%PageOrientation: Portrait +gsave +36 36 254 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 +252 330 lineto +252 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 330 lineto +252 330 lineto +252 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% StepThrough() +[ /Rect [ 56 288 154 324 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet#nameddest=STEP) >> + /Subtype /Link +/ANN pdfmark +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 154 324 moveto +56 324 lineto +56 288 lineto +154 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 154 324 moveto +56 324 lineto +56 288 lineto +154 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +64 301 moveto +(StepThrough\(\)) +[7.44 3.84 6.24 6.96 8.64 6.96 4.8 6.96 6.96 6.96 6.96 4.56 4.56] +xshow +end grestore +end grestore +% SetCategory() +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 152 252 moveto +58 252 lineto +58 216 lineto +152 216 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 152 252 moveto +58 252 lineto +58 216 lineto +152 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +65 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 +% StepThrough()->SetCategory() +newpath 105 288 moveto +105 280 105 271 105 262 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 109 262 moveto +105 252 lineto +102 262 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 109 262 moveto +105 252 lineto +102 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 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 +% SetCategory()->BasicType() +newpath 93 216 moveto +86 206 78 192 73 180 curveto +64 160 55 136 50 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 53 117 moveto +47 108 lineto +47 119 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 53 117 moveto +47 108 lineto +47 119 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 246 180 moveto +82 180 lineto +82 144 lineto +246 144 lineto +closepath +fill +0.404 0.667 0.545 nodecolor +newpath 246 180 moveto +82 180 lineto +82 144 lineto +246 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +90 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 120 216 moveto +127 207 135 197 143 188 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 146 190 moveto +149 180 lineto +140 186 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 146 190 moveto +149 180 lineto +140 186 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 139 36 moveto +71 36 lineto +71 0 lineto +139 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 139 36 moveto +71 36 lineto +71 0 lineto +139 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +79 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 58 72 moveto +66 63 75 53 82 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 85 46 moveto +89 36 lineto +80 41 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 85 46 moveto +89 36 lineto +80 41 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 234 108 moveto +102 108 lineto +102 72 lineto +234 72 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 234 108 moveto +102 108 lineto +102 72 lineto +234 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +110 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 165 144 moveto +166 136 166 127 166 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 169 118 moveto +167 108 lineto +163 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 169 118 moveto +167 108 lineto +163 118 lineto +closepath +stroke +end grestore +% CoercibleTo(a:Type)->Category +newpath 152 72 moveto +144 63 135 53 128 44 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 130 41 moveto +121 36 lineto +125 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 130 41 moveto +121 36 lineto +125 46 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/changelog b/changelog index 4671a53..419275b 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,19 @@ +20080919 tpd books/ps/v102stepthrough.ps diagram STEP +20080919 tpd books/ps/v102setaggregate.ps diagram SETAGG +20080919 tpd books/ps/v102rng.ps diagram RNG +20080919 tpd books/ps/v102orderedmultisetaggregate.ps diagram OMSAGG +20080919 tpd books/ps/v102orderedmonoid.ps diagram ORDMON +20080919 tpd books/ps/v102orderedfinite.ps diagram ORDFIN +20080919 tpd books/ps/v102orderedabeliansemigroup.ps diagram OASGP +20080919 tpd books/ps/v102orderedabelianmonoid.ps diagram OAMON +20080919 tpd books/ps/v102multisetaggregate.ps diagram MSETAGG +20080919 tpd books/ps/v102monoid.ps diagram MONOID +20080919 tpd books/ps/v102finitesetaggregate.ps diagram FINITE +20080919 tpd books/ps/v102cancellationabelianmonoid.ps diagram CABMON +20080919 tpd books/ps/v102abelianmonoid.ps diagram ABELMON +20080919 tpd books/ps/v102abeliangroup.ps diagram ABELSG +20080919 tpd src/algebra/catdef.spad remove more categories +20080919 tpd books/bookvol10.2 add more categories 20080918 tpd books/ps/v102semigroup.ps diagram SGROUP 20080918 tpd books/ps/v102orderedset.ps diagram ORDSET 20080918 tpd books/ps/v102finite.ps diagram FINITE diff --git a/src/algebra/catdef.spad.pamphlet b/src/algebra/catdef.spad.pamphlet index 6b2ac80..9252bff 100644 --- a/src/algebra/catdef.spad.pamphlet +++ b/src/algebra/catdef.spad.pamphlet @@ -9,371 +9,6 @@ \eject \tableofcontents \eject -\section{category ABELGRP AbelianGroup} -<>= -"ABELGRP" -> "CABMON" -"AbelianGroup()" -> "CancellationAbelianMonoid()" -@ -<>= -)abbrev category ABELGRP AbelianGroup -++ Author: -++ Date Created: -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: -++ Description: -++ The class of abelian groups, i.e. additive monoids where -++ each element has an additive inverse. -++ -++ Axioms: -++ \spad{-(-x) = x} -++ \spad{x+(-x) = 0} --- following domain must be compiled with subsumption disabled -AbelianGroup(): Category == CancellationAbelianMonoid with - --operations - "-": % -> % ++ -x is the additive inverse of x. - "-": (%,%) -> % ++ x-y is the difference of x and y - ++ i.e. \spad{x + (-y)}. - -- subsumes the partial subtraction from previous - "*": (Integer,%) -> % ++ n*x is the product of x by the integer n. - add - (x:% - y:%):% == x+(-y) - subtractIfCan(x:%, y:%):Union(%, "failed") == (x-y) :: Union(%,"failed") - n:NonNegativeInteger * x:% == (n::Integer) * x - import RepeatedDoubling(%) - if not (% has Ring) then - n:Integer * x:% == - zero? n => 0 - n>0 => double(n pretend PositiveInteger,x) - double((-n) pretend PositiveInteger,-x) - -@ -\section{ABELGRP.lsp BOOTSTRAP} -{\bf ABELGRP} 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 ABELGRP} category which we can write -into the {\bf MID} directory. We compile the lisp code and copy the -{\bf ABELGRP.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 |AbelianGroup;AL| (QUOTE NIL)) - -(DEFUN |AbelianGroup| NIL - (LET (#:G82664) - (COND - (|AbelianGroup;AL|) - (T (SETQ |AbelianGroup;AL| (|AbelianGroup;|)))))) - -(DEFUN |AbelianGroup;| NIL - (PROG (#1=#:G82662) - (RETURN - (PROG1 - (LETT #1# - (|Join| - (|CancellationAbelianMonoid|) - (|mkCategory| - (QUOTE |domain|) - (QUOTE ( - ((|-| (|$| |$|)) T) - ((|-| (|$| |$| |$|)) T) - ((|*| (|$| (|Integer|) |$|)) T))) - NIL - (QUOTE ((|Integer|))) - NIL)) - |AbelianGroup|) - (SETELT #1# 0 (QUOTE (|AbelianGroup|))))))) - -(MAKEPROP (QUOTE |AbelianGroup|) (QUOTE NILADIC) T) - -@ -\section{ABELGRP-.lsp BOOTSTRAP} -{\bf ABELGRP-} 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 ABELGRP-} -category which we can write into the {\bf MID} directory. We compile -the lisp code and copy the {\bf ABELGRP-.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 |ABELGRP-;-;3S;1| (|x| |y| |$|) - (SPADCALL |x| (SPADCALL |y| (QREFELT |$| 7)) (QREFELT |$| 8))) - -(DEFUN |ABELGRP-;subtractIfCan;2SU;2| (|x| |y| |$|) - (CONS 0 (SPADCALL |x| |y| (QREFELT |$| 10)))) - -(DEFUN |ABELGRP-;*;Nni2S;3| (|n| |x| |$|) - (SPADCALL |n| |x| (QREFELT |$| 14))) - -(DEFUN |ABELGRP-;*;I2S;4| (|n| |x| |$|) - (COND - ((ZEROP |n|) (|spadConstant| |$| 17)) - ((|<| 0 |n|) (SPADCALL |n| |x| (QREFELT |$| 20))) - ((QUOTE T) - (SPADCALL (|-| |n|) (SPADCALL |x| (QREFELT |$| 7)) (QREFELT |$| 20))))) - -(DEFUN |AbelianGroup&| (|#1|) - (PROG (|DV$1| |dv$| |$| |pv$|) - (RETURN - (PROGN - (LETT |DV$1| (|devaluate| |#1|) . #1=(|AbelianGroup&|)) - (LETT |dv$| (LIST (QUOTE |AbelianGroup&|) |DV$1|) . #1#) - (LETT |$| (GETREFV 22) . #1#) - (QSETREFV |$| 0 |dv$|) - (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #1#)) - (|stuffDomainSlots| |$|) - (QSETREFV |$| 6 |#1|) - (COND - ((|HasCategory| |#1| (QUOTE (|Ring|)))) - ((QUOTE T) - (QSETREFV |$| 21 - (CONS (|dispatchFunction| |ABELGRP-;*;I2S;4|) |$|)))) - |$|)))) - -(MAKEPROP - (QUOTE |AbelianGroup&|) - (QUOTE |infovec|) - (LIST - (QUOTE - #(NIL NIL NIL NIL NIL NIL - (|local| |#1|) - (0 . |-|) - (5 . |+|) - |ABELGRP-;-;3S;1| - (11 . |-|) - (|Union| |$| (QUOTE "failed")) - |ABELGRP-;subtractIfCan;2SU;2| - (|Integer|) - (17 . |*|) - (|NonNegativeInteger|) - |ABELGRP-;*;Nni2S;3| - (23 . |Zero|) - (|PositiveInteger|) - (|RepeatedDoubling| 6) - (27 . |double|) - (33 . |*|))) - (QUOTE #(|subtractIfCan| 39 |-| 45 |*| 51)) - (QUOTE NIL) - (CONS - (|makeByteWordVec2| 1 (QUOTE NIL)) - (CONS - (QUOTE #()) - (CONS - (QUOTE #()) - (|makeByteWordVec2| 21 - (QUOTE (1 6 0 0 7 2 6 0 0 0 8 2 6 0 0 0 10 2 6 0 13 0 14 0 6 0 17 - 2 19 6 18 6 20 2 0 0 13 0 21 2 0 11 0 0 12 2 0 0 0 0 9 2 - 0 0 13 0 21 2 0 0 15 0 16)))))) - (QUOTE |lookupComplete|))) - -@ -\section{category ABELMON AbelianMonoid} -<>= -"ABELMON" -> "ABELSG" -"AbelianMonoid()" -> "AbelianSemiGroup()" -@ -<>= -)abbrev category ABELMON AbelianMonoid -++ Author: -++ Date Created: -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: -++ Description: -++ The class of multiplicative monoids, i.e. semigroups with an -++ additive identity element. -++ -++ Axioms: -++ \spad{leftIdentity("+":(%,%)->%,0)}\tab{30}\spad{ 0+x=x } -++ \spad{rightIdentity("+":(%,%)->%,0)}\tab{30}\spad{ x+0=x } --- following domain must be compiled with subsumption disabled --- define SourceLevelSubset to be EQUAL -AbelianMonoid(): Category == AbelianSemiGroup with - --operations - 0: constant -> % - ++ 0 is the additive identity element. - sample: constant -> % - ++ sample yields a value of type % - zero?: % -> Boolean - ++ zero?(x) tests if x is equal to 0. - "*": (NonNegativeInteger,%) -> % - ++ n * x is left-multiplication by a non negative integer - add - import RepeatedDoubling(%) - zero? x == x = 0 - n:PositiveInteger * x:% == (n::NonNegativeInteger) * x - sample() == 0 - if not (% has Ring) then - n:NonNegativeInteger * x:% == - zero? n => 0 - double(n pretend PositiveInteger,x) - -@ -\section{ABELMON.lsp BOOTSTRAP} -{\bf ABELMON} which needs -{\bf ABELSG} which needs -{\bf SETCAT} which needs -{\bf SINT} which needs -{\bf UFD} which 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}. -We break this chain with {\bf ABELMON.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 ABELMON} -category which we can write into the {\bf MID} directory. We compile -the lisp code and copy the {\bf ABELMON.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 |AbelianMonoid;AL| (QUOTE NIL)) - -(DEFUN |AbelianMonoid| NIL - (LET (#:G82597) - (COND - (|AbelianMonoid;AL|) - (T (SETQ |AbelianMonoid;AL| (|AbelianMonoid;|)))))) - -(DEFUN |AbelianMonoid;| NIL - (PROG (#1=#:G82595) - (RETURN - (PROG1 - (LETT #1# - (|Join| - (|AbelianSemiGroup|) - (|mkCategory| - (QUOTE |domain|) - (QUOTE ( - ((|Zero| (|$|) |constant|) T) - ((|sample| (|$|) |constant|) T) - ((|zero?| ((|Boolean|) |$|)) T) - ((|*| (|$| (|NonNegativeInteger|) |$|)) T))) - NIL - (QUOTE ((|NonNegativeInteger|) (|Boolean|))) - NIL)) - |AbelianMonoid|) - (SETELT #1# 0 (QUOTE (|AbelianMonoid|))))))) - -(MAKEPROP (QUOTE |AbelianMonoid|) (QUOTE NILADIC) T) - -@ -\section{ABELMON-.lsp BOOTSTRAP} -{\bf ABELMON-} which needs -{\bf ABELSG} which needs -{\bf SETCAT} which needs -{\bf SINT} which needs -{\bf UFD} which 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-}. -We break this chain with {\bf ABELMON-.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 ABELMON-} -category which we can write into the {\bf MID} directory. We compile -the lisp code and copy the {\bf ABELMON-.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 |ABELMON-;zero?;SB;1| (|x| |$|) - (SPADCALL |x| (|spadConstant| |$| 7) (QREFELT |$| 9))) - -(DEFUN |ABELMON-;*;Pi2S;2| (|n| |x| |$|) - (SPADCALL |n| |x| (QREFELT |$| 12))) - -(DEFUN |ABELMON-;sample;S;3| (|$|) - (|spadConstant| |$| 7)) - -(DEFUN |ABELMON-;*;Nni2S;4| (|n| |x| |$|) - (COND - ((ZEROP |n|) (|spadConstant| |$| 7)) - ((QUOTE T) (SPADCALL |n| |x| (QREFELT |$| 17))))) - -(DEFUN |AbelianMonoid&| (|#1|) - (PROG (|DV$1| |dv$| |$| |pv$|) - (RETURN - (PROGN - (LETT |DV$1| (|devaluate| |#1|) . #1=(|AbelianMonoid&|)) - (LETT |dv$| (LIST (QUOTE |AbelianMonoid&|) |DV$1|) . #1#) - (LETT |$| (GETREFV 19) . #1#) - (QSETREFV |$| 0 |dv$|) - (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #1#)) - (|stuffDomainSlots| |$|) - (QSETREFV |$| 6 |#1|) - (COND - ((|HasCategory| |#1| (QUOTE (|Ring|)))) - ((QUOTE T) - (QSETREFV |$| 18 - (CONS (|dispatchFunction| |ABELMON-;*;Nni2S;4|) |$|)))) |$|)))) - -(MAKEPROP - (QUOTE |AbelianMonoid&|) - (QUOTE |infovec|) - (LIST - (QUOTE - #(NIL NIL NIL NIL NIL NIL - (|local| |#1|) - (0 . |Zero|) - (|Boolean|) - (4 . |=|) - |ABELMON-;zero?;SB;1| - (|NonNegativeInteger|) - (10 . |*|) - (|PositiveInteger|) - |ABELMON-;*;Pi2S;2| - |ABELMON-;sample;S;3| - (|RepeatedDoubling| 6) - (16 . |double|) - (22 . |*|))) - (QUOTE #(|zero?| 28 |sample| 33 |*| 37)) - (QUOTE NIL) - (CONS - (|makeByteWordVec2| 1 (QUOTE NIL)) - (CONS - (QUOTE #()) - (CONS - (QUOTE #()) - (|makeByteWordVec2| 18 - (QUOTE (0 6 0 7 2 6 8 0 0 9 2 6 0 11 0 12 2 16 6 13 6 17 2 0 0 11 - 0 18 1 0 8 0 10 0 0 0 15 2 0 0 11 0 18 2 0 0 13 0 14)))))) - (QUOTE |lookupComplete|))) - -@ \section{category ALGEBRA Algebra} <>= "ALGEBRA" -> "RING" @@ -444,93 +79,6 @@ BiModule(R:Ring,S:Ring):Category == rightUnitary ++ \spad{x * 1 = x} @ -\section{category CABMON CancellationAbelianMonoid} -<>= -"CABMON" -> "ABELMON" -"CancellationAbelianMonoid()" -> "AbelianMonoid()" -@ -<>= -)abbrev category CABMON CancellationAbelianMonoid -++ Author: -++ Date Created: -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: Davenport & Trager I -++ Description: -++ This is an \spadtype{AbelianMonoid} with the cancellation property, i.e. -++ \spad{ a+b = a+c => b=c }. -++ This is formalised by the partial subtraction operator, -++ which satisfies the axioms listed below: -++ -++ Axioms: -++ \spad{c = a+b <=> c-b = a} -CancellationAbelianMonoid(): Category == AbelianMonoid with - --operations - subtractIfCan: (%,%) -> Union(%,"failed") - ++ subtractIfCan(x, y) returns an element z such that \spad{z+y=x} - ++ or "failed" if no such element exists. - -@ -\section{CABMON.lsp BOOTSTRAP} -{\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} which needs -{\bf COMRING} which needs -{\bf RING} which needs -{\bf RNG} which needs -{\bf ABELGRP} which needs -{\bf CABMON}. -We break this chain with {\bf CABMON.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 CABMON} -category which we can write into the {\bf MID} directory. We compile -the lisp code and copy the {\bf CABMON.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 |CancellationAbelianMonoid;AL| (QUOTE NIL)) - -(DEFUN |CancellationAbelianMonoid| NIL - (LET (#:G82646) - (COND - (|CancellationAbelianMonoid;AL|) - (T - (SETQ - |CancellationAbelianMonoid;AL| - (|CancellationAbelianMonoid;|)))))) - -(DEFUN |CancellationAbelianMonoid;| NIL - (PROG (#1=#:G82644) - (RETURN - (PROG1 - (LETT #1# - (|Join| - (|AbelianMonoid|) - (|mkCategory| - (QUOTE |domain|) - (QUOTE (((|subtractIfCan| ((|Union| |$| "failed") |$| |$|)) T))) - NIL - (QUOTE NIL) - NIL)) - |CancellationAbelianMonoid|) - (SETELT #1# 0 (QUOTE (|CancellationAbelianMonoid|))))))) - -(MAKEPROP (QUOTE |CancellationAbelianMonoid|) (QUOTE NILADIC) T) - -@ \section{category CHARNZ CharacteristicNonZero} <>= "CHARNZ" -> "RING" @@ -2817,186 +2365,6 @@ Module(R:CommutativeRing): Category == BiModule(R,R) if not(R is %) then x:%*r:R == r*x @ -\section{category MONOID Monoid} -<>= -"MONOID" -> "SGROUP" -"Monoid()" -> "SemiGroup()" -@ -<>= -)abbrev category MONOID Monoid -++ Author: -++ Date Created: -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: -++ Description: -++ The class of multiplicative monoids, i.e. semigroups with a -++ multiplicative identity element. -++ -++ Axioms: -++ \spad{leftIdentity("*":(%,%)->%,1)}\tab{30}\spad{1*x=x} -++ \spad{rightIdentity("*":(%,%)->%,1)}\tab{30}\spad{x*1=x} -++ -++ Conditional attributes: -++ unitsKnown\tab{15}\spadfun{recip} only returns "failed" on non-units -Monoid(): Category == SemiGroup with - --operations - 1: constant -> % ++ 1 is the multiplicative identity. - sample: constant -> % ++ sample yields a value of type % - one?: % -> Boolean ++ one?(x) tests if x is equal to 1. - "**": (%,NonNegativeInteger) -> % ++ x**n returns the repeated product - ++ of x n times, i.e. exponentiation. - "^" : (%,NonNegativeInteger) -> % ++ x^n returns the repeated product - ++ of x n times, i.e. exponentiation. - recip: % -> Union(%,"failed") - ++ recip(x) tries to compute the multiplicative inverse for x - ++ or "failed" if it cannot find the inverse (see unitsKnown). - add - import RepeatedSquaring(%) - _^(x:%, n:NonNegativeInteger):% == x ** n - one? x == x = 1 - sample() == 1 - recip x == --- one? x => x - (x = 1) => x - "failed" - x:% ** n:NonNegativeInteger == - zero? n => 1 - expt(x,n pretend PositiveInteger) - -@ -\section{MONOID.lsp BOOTSTRAP} -{\bf MONOID} depends on itself. We need to break this cycle to build -the algebra. So we keep a cached copy of the translated {\bf MONOID} -category which we can write into the {\bf MID} directory. We compile -the lisp code and copy the {\bf MONOID.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 |Monoid;AL| (QUOTE NIL)) - -(DEFUN |Monoid| NIL - (LET (#:G82434) - (COND - (|Monoid;AL|) - (T (SETQ |Monoid;AL| (|Monoid;|)))))) - -(DEFUN |Monoid;| NIL - (PROG (#1=#:G82432) - (RETURN - (PROG1 - (LETT #1# - (|Join| - (|SemiGroup|) - (|mkCategory| - (QUOTE |domain|) - (QUOTE ( - ((|One| (|$|) |constant|) T) - ((|sample| (|$|) |constant|) T) - ((|one?| ((|Boolean|) |$|)) T) - ((|**| (|$| |$| (|NonNegativeInteger|))) T) - ((|^| (|$| |$| (|NonNegativeInteger|))) T) - ((|recip| ((|Union| |$| "failed") |$|)) T))) - NIL - (QUOTE ((|NonNegativeInteger|) (|Boolean|))) - NIL)) - |Monoid|) - (SETELT #1# 0 (QUOTE (|Monoid|))))))) - -(MAKEPROP (QUOTE |Monoid|) (QUOTE NILADIC) T) - -@ -\section{MONOID-.lsp BOOTSTRAP} -{\bf MONOID-} depends on {\bf MONOID}. We need to break this cycle to build -the algebra. So we keep a cached copy of the translated {\bf MONOID-} -category which we can write into the {\bf MID} directory. We compile -the lisp code and copy the {\bf MONOID-.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 |MONOID-;^;SNniS;1| (|x| |n| |$|) - (SPADCALL |x| |n| (QREFELT |$| 8))) - -(DEFUN |MONOID-;one?;SB;2| (|x| |$|) - (SPADCALL |x| (|spadConstant| |$| 10) (QREFELT |$| 12))) - -(DEFUN |MONOID-;sample;S;3| (|$|) - (|spadConstant| |$| 10)) - -(DEFUN |MONOID-;recip;SU;4| (|x| |$|) - (COND - ((SPADCALL |x| (QREFELT |$| 15)) (CONS 0 |x|)) - ((QUOTE T) (CONS 1 "failed")))) - -(DEFUN |MONOID-;**;SNniS;5| (|x| |n| |$|) - (COND - ((ZEROP |n|) (|spadConstant| |$| 10)) - ((QUOTE T) (SPADCALL |x| |n| (QREFELT |$| 20))))) - -(DEFUN |Monoid&| (|#1|) - (PROG (|DV$1| |dv$| |$| |pv$|) - (RETURN - (PROGN - (LETT |DV$1| (|devaluate| |#1|) . #1=(|Monoid&|)) - (LETT |dv$| (LIST (QUOTE |Monoid&|) |DV$1|) . #1#) - (LETT |$| (GETREFV 22) . #1#) - (QSETREFV |$| 0 |dv$|) - (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #1#)) - (|stuffDomainSlots| |$|) - (QSETREFV |$| 6 |#1|) - |$|)))) - -(MAKEPROP - (QUOTE |Monoid&|) - (QUOTE |infovec|) - (LIST - (QUOTE - #(NIL NIL NIL NIL NIL NIL - (|local| |#1|) - (|NonNegativeInteger|) - (0 . |**|) - |MONOID-;^;SNniS;1| - (6 . |One|) - (|Boolean|) - (10 . |=|) - |MONOID-;one?;SB;2| - |MONOID-;sample;S;3| - (16 . |one?|) - (|Union| |$| (QUOTE "failed")) - |MONOID-;recip;SU;4| - (|PositiveInteger|) - (|RepeatedSquaring| 6) - (21 . |expt|) - |MONOID-;**;SNniS;5|)) - (QUOTE #(|sample| 27 |recip| 31 |one?| 36 |^| 41 |**| 47)) - (QUOTE NIL) - (CONS - (|makeByteWordVec2| 1 (QUOTE NIL)) - (CONS - (QUOTE #()) - (CONS - (QUOTE #()) - (|makeByteWordVec2| 21 - (QUOTE - (2 6 0 0 7 8 0 6 0 10 2 6 11 0 0 12 1 6 11 0 15 2 19 6 6 18 20 - 0 0 0 14 1 0 16 0 17 1 0 11 0 13 2 0 0 0 7 9 2 0 0 0 7 21)))))) - (QUOTE |lookupComplete|))) - -@ \section{category OAGROUP OrderedAbelianGroup} <>= "OAGROUP" -> "OCAMON" @@ -3023,32 +2391,6 @@ OrderedAbelianGroup(): Category == Join(OrderedCancellationAbelianMonoid, AbelianGroup) @ -\section{category OAMON OrderedAbelianMonoid} -<>= -"OAMON" -> "OASGP" -"OrderedAbelianMonoid()" -> "OrderedAbelianSemiGroup()" -"OAMON" -> "ABELMON" -"OrderedAbelianMonoid()" -> "AbelianMonoid()" -@ -<>= -)abbrev category OAMON OrderedAbelianMonoid -++ Author: -++ Date Created: -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: -++ Description: -++ Ordered sets which are also abelian monoids, such that the addition -++ preserves the ordering. - -OrderedAbelianMonoid(): Category == - Join(OrderedAbelianSemiGroup, AbelianMonoid) - -@ \section{category OAMONS OrderedAbelianMonoidSup} <>= "OAMONS" -> "OCAMON" @@ -3083,32 +2425,6 @@ OrderedAbelianMonoidSup(): Category == OrderedCancellationAbelianMonoid with ++ x and y can be subtracted. @ -\section{category OASGP OrderedAbelianSemiGroup} -<>= -"OASGP" -> "ORDSET" -"OrderedAbelianSemiGroup()" -> "OrderedSet()" -"OASGP" -> "ABELMON" -"OrderedAbelianSemiGroup()" -> "AbelianMonoid()" -@ -<>= -)abbrev category OASGP OrderedAbelianSemiGroup -++ Author: -++ Date Created: -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: -++ Description: -++ Ordered sets which are also abelian semigroups, such that the addition -++ preserves the ordering. -++ \spad{ x < y => x+z < y+z} - -OrderedAbelianSemiGroup(): Category == Join(OrderedSet, AbelianMonoid) - -@ \section{category OCAMON OrderedCancellationAbelianMonoid} <>= "OCAMON" -> "OAMON" @@ -3135,30 +2451,6 @@ OrderedCancellationAbelianMonoid(): Category == Join(OrderedAbelianMonoid, CancellationAbelianMonoid) @ -\section{category ORDFIN OrderedFinite} -<>= -"ORDFIN" -> "ORDSET" -"OrderedFinite()" -> "OrderedSet()" -"ORDFIN" -> "FINITE" -"OrderedFinite()" -> "Finite()" -@ -<>= -)abbrev category ORDFIN OrderedFinite -++ Author: -++ Date Created: -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: -++ Description: -++ Ordered finite sets. - -OrderedFinite(): Category == Join(OrderedSet, Finite) - -@ \section{category OINTDOM OrderedIntegralDomain} <>= "OINTDOM" -> "INTDOM" @@ -3217,35 +2509,6 @@ Note that this code is not included in the generated catdef.spad file. (MAKEPROP (QUOTE |OrderedIntegralDomain|) (QUOTE NILADIC) T) @ -\section{category ORDMON OrderedMonoid} -<>= -"ORDMON" -> "ORDSET" -"OrderedMonoid()" -> "OrderedSet()" -"ORDMON" -> "MONOID" -"OrderedMonoid()" -> "Monoid()" -@ -<>= -)abbrev category ORDMON OrderedMonoid -++ Author: -++ Date Created: -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: -++ Description: -++ Ordered sets which are also monoids, such that multiplication -++ preserves the ordering. -++ -++ Axioms: -++ \spad{x < y => x*z < y*z} -++ \spad{x < y => z*x < z*y} - -OrderedMonoid(): Category == Join(OrderedSet, Monoid) - -@ \section{category ORDRING OrderedRing} <>= "ORDRING" -> "OAGROUP" @@ -3800,106 +3063,6 @@ Note that this code is not included in the generated catdef.spad file. (QUOTE |lookupComplete|))) @ -\section{category RNG Rng} -<>= -"RNG" -> "ABELGRP" -"Rng()" -> "AbelianGroup()" -"RNG" -> "SGROUP" -"Rng()" -> "SemiGroup()" -@ -<>= -)abbrev category RNG Rng -++ Author: -++ Date Created: -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: -++ Description: -++ The category of associative rings, not necessarily commutative, and not -++ necessarily with a 1. This is a combination of an abelian group -++ and a semigroup, with multiplication distributing over addition. -++ -++ Axioms: -++ \spad{ x*(y+z) = x*y + x*z} -++ \spad{ (x+y)*z = x*z + y*z } -++ -++ Conditional attributes: -++ \spadnoZeroDivisors\tab{25}\spad{ ab = 0 => a=0 or b=0} -Rng(): Category == Join(AbelianGroup,SemiGroup) - -@ -\section{RNG.lsp BOOTSTRAP} -{\bf RNG} 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 RNG} category which we can write -into the {\bf MID} directory. We compile the lisp code and copy the -{\bf RNG.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 |Rng;AL| (QUOTE NIL)) - -(DEFUN |Rng| NIL - (LET (#:G82722) - (COND - (|Rng;AL|) - (T (SETQ |Rng;AL| (|Rng;|)))))) - -(DEFUN |Rng;| NIL - (PROG (#1=#:G82720) - (RETURN - (PROG1 - (LETT #1# (|Join| (|AbelianGroup|) (|SemiGroup|)) |Rng|) - (SETELT #1# 0 (QUOTE (|Rng|))))))) - -(MAKEPROP (QUOTE |Rng|) (QUOTE NILADIC) T) - -@ -\section{category STEP StepThrough} -<>= -"STEP" -> "SETCAT" -"StepThrough()" -> "SetCategory()" -@ -<>= -)abbrev category STEP StepThrough -++ Author: -++ Date Created: -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: -++ Description: -++ A class of objects which can be 'stepped through'. -++ Repeated applications of \spadfun{nextItem} is guaranteed never to -++ return duplicate items and only return "failed" after exhausting -++ all elements of the domain. -++ This assumes that the sequence starts with \spad{init()}. -++ For infinite domains, repeated application -++ of \spadfun{nextItem} is not required to reach all possible domain elements -++ starting from any initial element. -++ -++ Conditional attributes: -++ infinite\tab{15}repeated \spad{nextItem}'s are never "failed". -StepThrough(): Category == SetCategory with - --operations - init: constant -> % - ++ init() chooses an initial object for stepping. - nextItem: % -> Union(%,"failed") - ++ nextItem(x) returns the next item, or "failed" if domain is exhausted. - -@ \section{category UFD UniqueFactorizationDomain} <>= "UFD" -> "GCDDOM" @@ -4183,13 +3346,7 @@ VectorSpace(S:Field): Category == Module(S) with <<*>>= <> -<> -<> <> -<> -<> -<> -<> <> <> <> @@ -4211,10 +3368,6 @@ VectorSpace(S:Field): Category == Module(S) with <> <> <> -<> -<> -<> -<> <> <> <>