diff --git a/books/bookvol10.2.pamphlet b/books/bookvol10.2.pamphlet index 9ae7057..87e140e 100644 --- a/books/bookvol10.2.pamphlet +++ b/books/bookvol10.2.pamphlet @@ -6,9 +6,29 @@ \makeindex \usepackage{graphicx} %% +%% Note that this file will eventually generate a dvi file +%% which will eventually be processed by dvipdfm to create a pdf. +%% The categories/domains/packages will be placed in a graphviz graph. +%% The graphviz dot syntax allows an href parameter. +%% The href parameter will reference this file. +%% pdf href syntax allows named destinations. +%% This macro creates a named destination using \special +%% Thus, you reference http://thispdf#nameddest=ABBREV +%% and you end up at the right page. +%% This macro is called implicitly by \pagehead so every +%% category/domain/package can be referenced by fullname or abbrev. +%% +%% dest will give the ability to use nameddest= in html pdfs +%% +\newcommand{\dest}[1]{% e.g. \dest{abb} +\special{pdf:dest (#1) [ @thispage /FitH @ypos ]}} +%% +%% %% pagehead consolidates standard page indexing %% \newcommand{\pagehead}[2]{% e.g. \pagehead{name}{abb} +\dest{#1}% +\dest{#2}% \section{#1 (#2)} \label{#1}% \label{#2}% @@ -36,7 +56,6 @@ \newcommand{\cross}[2]{% e.g. \pagefrom{cat}{funcname} \index{#1!#2}% \index{#2!#1}} -%% % special meanings for math characters @@ -262,6 +281,7 @@ A ``yellow'' color indicates a domain. This is the root of the category hierarchy and is not represented by code. {\bf See:}\\ +\pageto{BasicType}{BASTYPE} \pageto{Eltable}{ELTAB} \pageto{CoercibleTo}{KOERCE} \pageto{ConvertibleTo}{KONVERT} @@ -269,6 +289,75 @@ This is the root of the category hierarchy and is not represented by code. \pageto{Type}{TYPE} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{BasicType}{BASTYPE} +\pagepic{ps/v102basictype.ps}{BASTYPE} + +{\bf See:}\\ +\pagefrom{Category}{CATEGORY} + +{\bf Exports:}\\ +\begin{tabular}{ll} + ?=? & ?\~{}=? +\end{tabular} + +These are directly exported but not implemented: +\begin{verbatim} + ?=? : (%,%) -> Boolean +\end{verbatim} + +These are implemented by this category: +\begin{verbatim} + ?~=? : (%,%) -> Boolean +\end{verbatim} + +<>= +)abbrev category BASTYPE BasicType +--% BasicType +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ \spadtype{BasicType} is the basic category for describing a collection +++ of elements with \spadop{=} (equality). +BasicType(): Category == with + "=": (%,%) -> Boolean ++ x=y tests if x and y are equal. + "~=": (%,%) -> Boolean ++ x~=y tests if x and y are not equal. + add + _~_=(x:%,y:%) : Boolean == not(x=y) + +@ +<>= +"BASTYPE" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=BASTYPE"]; +"BASTYPE" -> "CATEGORY" + +@ +<>= +"BasicType()" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=BASTYPE"]; +"BasicType()" -> "Category" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"BasicType()" [color=lightblue]; +"BasicType()" -> "Category" + +"Category" [color=lightblue]; +} + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{CoercibleTo}{KOERCE} \pagepic{ps/v102koerce.ps}{KOERCE} @@ -302,17 +391,20 @@ CoercibleTo(S:Type): Category == with @ <>= -"KOERCE" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"KOERCE" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=KOERCE"]; "KOERCE" -> "CATEGORY" @ <>= -"CoercibleTo(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"CoercibleTo(a:Type)" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=KOERCE"]; "CoercibleTo(a:Type)" -> "Category" -"CoercibleTo(OutputForm)" [color=seagreen,href="books/bookvol10.2.pamphlet"]; +"CoercibleTo(OutputForm)" + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KOERCE"]; "CoercibleTo(OutputForm)" -> "CoercibleTo(a:Type)" + @ <>= digraph pic { @@ -320,10 +412,10 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"CoercibleTo(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"CoercibleTo(a:Type)" [color=lightblue]; "CoercibleTo(a:Type)" -> "Category" -"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Category" [color=lightblue]; } @ @@ -363,73 +455,74 @@ ConvertibleTo(S:Type): Category == with @ <>= -"KONVERT" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"KONVERT" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"]; "KONVERT" -> "CATEGORY" @ <>= "ConvertibleTo(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"]; "ConvertibleTo(a:Type)" -> "Category" "ConvertibleTo(DoubleFloat)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"]; "ConvertibleTo(DoubleFloat)" -> "ConvertibleTo(a:Type)" "ConvertibleTo(Float)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"]; "ConvertibleTo(Float)" -> "ConvertibleTo(a:Type)" "ConvertibleTo(InputForm)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"]; "ConvertibleTo(InputForm)" -> "ConvertibleTo(a:Type)" "ConvertibleTo(Integer)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"]; "ConvertibleTo(Integer)" -> "ConvertibleTo(a:Type)" "ConvertibleTo(Pattern(Integer))" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"]; "ConvertibleTo(Pattern(Integer))" -> "ConvertibleTo(a:Type)" "ConvertibleTo(Pattern(Float))" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"]; "ConvertibleTo(Pattern(Float))" -> "ConvertibleTo(a:Type)" "ConvertibleTo(Complex(Float))" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"]; "ConvertibleTo(Complex(Float))" -> "ConvertibleTo(a:Type)" "ConvertibleTo(Complex(DoubleFloat))" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"]; "ConvertibleTo(Complex(DoubleFloat))" -> "ConvertibleTo(a:Type)" "ConvertibleTo(String)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"]; "ConvertibleTo(String)" -> "ConvertibleTo(a:Type)" "ConvertibleTo(Symbol)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"]; "ConvertibleTo(Symbol)" -> "ConvertibleTo(a:Type)" "ConvertibleTo(SExpression)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"]; "ConvertibleTo(SExpression)" -> "ConvertibleTo(a:Type)" "ConvertibleTo(Pattern(Base))" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"]; "ConvertibleTo(Pattern(Base))" -> "ConvertibleTo(a:Type)" "ConvertibleTo(List(Integer))" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"]; "ConvertibleTo(List(Integer))" -> "ConvertibleTo(a:Type)" "ConvertibleTo(List(Character))" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"]; "ConvertibleTo(List(Character))" -> "ConvertibleTo(a:Type)" "ConvertibleTo(UnivariatePolynomialCategory(CommutativeRing))" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=KONVERT"]; "ConvertibleTo(UnivariatePolynomialCategory(CommutativeRing))" -> "ConvertibleTo(a:Type)" @ @@ -439,11 +532,10 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"ConvertibleTo(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"ConvertibleTo(a:Type)" [color=lightblue]; "ConvertibleTo(a:Type)" -> "Category" -"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Category" [color=lightblue]; } @ @@ -491,13 +583,13 @@ Eltable(S:SetCategory, Index:Type): Category == with @ <>= -"ELTAB" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"ELTAB" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ELTAB"]; "ELTAB" -> "CATEGORY" @ <>= "Eltable(a:SetCategory,b:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ELTAB"]; "Eltable(a:SetCategory,b:Type)" -> "Category" @ @@ -507,11 +599,10 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"Eltable(a:SetCategory,b:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Eltable(a:SetCategory,b:Type)" [color=lightblue]; "Eltable(a:SetCategory,b:Type)" -> "Category" -"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Category" [color=lightblue]; } @ @@ -568,45 +659,46 @@ RetractableTo(S: Type): Category == with @ <>= -"RETRACT" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"RETRACT" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=RETRACT"]; "RETRACT" -> "CATEGORY" @ <>= "RetractableTo(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=RETRACT"]; "RetractableTo(a:Type)" -> "Category" "RetractableTo(SetCategory)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=RETRACT"]; "RetractableTo(SetCategory)" -> "RetractableTo(a:Type)" "RetractableTo(Symbol)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=RETRACT"]; "RetractableTo(Symbol)" -> "RetractableTo(a:Type)" "RetractableTo(Integer)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=RETRACT"]; "RetractableTo(Integer)" -> "RetractableTo(a:Type)" "RetractableTo(NonNegativeInteger)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=RETRACT"]; "RetractableTo(NonNegativeInteger)" -> "RetractableTo(a:Type)" "RetractableTo(Fraction(Integer))" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=RETRACT"]; "RetractableTo(Fraction(Integer))" -> "RetractableTo(a:Type)" "RetractableTo(Float)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=RETRACT"]; "RetractableTo(Float)" -> "RetractableTo(a:Type)" "RetractableTo(Kernel(ExpressionSpace))" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=RETRACT"]; "RetractableTo(Kernel(ExpressionSpace))" -> "RetractableTo(a:Type)" "RetractableTo(CommutativeRing)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=RETRACT"]; "RetractableTo(CommutativeRing)" -> "RetractableTo(a:Type)" @ <>= @@ -615,11 +707,10 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"RetractableTo(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"RetractableTo(a:Type)" [color=lightblue]; "RetractableTo(a:Type)" -> "Category" -"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Category" [color=lightblue]; } @ @@ -641,12 +732,12 @@ Type(): Category == with nil @ <>= -"TYPE" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"TYPE" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=TYPE"]; "TYPE" -> "CATEGORY" @ <>= -"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=TYPE"]; "Type()" -> "Category" @ @@ -656,10 +747,10 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Type()" [color=lightblue]; "Type()" -> "Category" -"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Category" [color=lightblue]; } @ @@ -748,12 +839,13 @@ Aggregate: Category == Type with @ <>= -"AGG" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"AGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=AGG"]; "AGG" -> "TYPE" @ <>= -"Aggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Aggregate()" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=AGG"]; "Aggregate()" -> "Type()" @ @@ -763,13 +855,13 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"Aggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Aggregate()" [color=lightblue]; "Aggregate()" -> "Type()" -"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Type()" [color=lightblue]; "Type()" -> "Category" -"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Category" [color=lightblue]; } @ @@ -862,13 +954,13 @@ EltableAggregate(Dom:SetCategory, Im:Type): Category == @ <>= -"ELTAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"ELTAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ELTAGG"]; "ELTAGG" -> "ELTAB" @ <>= "EltableAggregate(a:SetCategory,b:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ELTAGG"]; "EltableAggregate(a:SetCategory,b:Type)" -> "Eltable(a:SetCategory,b:Type)" @ @@ -878,20 +970,237 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"EltableAggregate(a:SetCategory,b:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"EltableAggregate(a:SetCategory,b:Type)" [color=lightblue]; "EltableAggregate(a:SetCategory,b:Type)" -> "Eltable(a:SetCategory,b:Type)" -"Eltable(a:SetCategory,b:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Eltable(a:SetCategory,b:Type)" [color=lightblue]; "Eltable(a:SetCategory,b:Type)" -> "Category" -"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Category" [color=lightblue]; +} + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{SetCategory}{SETCAT} +\pagepic{ps/v102setcategory.ps}{SETCAT} + +{\bf See:}\\ +\pageto{AbelianSemiGroup}{ABELSG} +\pageto{HomogeneousAggregate}{HOAGG} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +coerce & hash & latex & ?=? & ?\~{}=? +\end{tabular} + +\cross{SETCAT}{coerce} +\cross{SETCAT}{hash} +\cross{SETCAT}{latex} +\cross{SETCAT}{?=?} +\cross{SETCAT}{?\~{}=?} + +These are implemented by this category: +\begin{verbatim} + hash : % -> SingleInteger + latex : % -> String +\end{verbatim} + +These exports come from BasicType(): +\begin{verbatim} + ?=? : (%,%) -> Boolean + ?~=? : (%,%) -> Boolean +\end{verbatim} + +These exports come from CoercibleTo(OutputForm): +\begin{verbatim} + coerce : % -> OutputForm +\end{verbatim} + +<>= +)abbrev category SETCAT SetCategory +++ Author: +++ Date Created: +++ Date Last Updated: +++ 09/09/92 RSS added latex and hash +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ \spadtype{SetCategory} is the basic category for describing a collection +++ of elements with \spadop{=} (equality) and \spadfun{coerce} to output form. +++ +++ Conditional Attributes: +++ canonical\tab{15}data structure equality is the same as \spadop{=} +SetCategory(): Category == Join(BasicType,CoercibleTo OutputForm) with + --operations + hash: % -> SingleInteger ++ hash(s) calculates a hash code for s. + latex: % -> String ++ latex(s) returns a LaTeX-printable output + ++ representation of s. + add + hash(s : %): SingleInteger == 0$SingleInteger + latex(s : %): String == "\mbox{\bf Unimplemented}" + +@ +<>= +"SETCAT" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SETCAT"]; +"SETCAT" -> "BASTYPE" +"SETCAT" -> "KOERCE" + +@ +<>= +"SetCategory()" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SETCAT"]; +"SetCategory()" -> "BasicType()" +"SetCategory()" -> "CoercibleTo(OutputForm)" + +@ +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"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 3} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagehead{AbelianSemiGroup}{ABELSG} +\pagepic{ps/v102abeliansemigroup.ps}{ABELSG} + +{\bf See:}\\ +\pagefrom{SetCategory}{SETCAT} + +{\bf Exports:}\\ +\begin{tabular}{lllllll} + coerce & hash & latex & ?*? & ?+? & ?=? & ?\~{}=? +\end{tabular} + +\cross{ABELSG}{coerce} +\cross{ABELSG}{hash} +\cross{ABELSG}{latex} +\cross{ABELSG}{?*?} +\cross{ABELSG}{?+?} +\cross{ABELSG}{?=?} +\cross{ABELSG}{?\~{}=?} + +These are directly exported but not implemented: +\begin{verbatim} + ?+? : (%,%) -> % +\end{verbatim} + +These are implemented by this category: +\begin{verbatim} + ?*? : (PositiveInteger,%) -> % +\end{verbatim} + +These exports come from SetCategory(): +\begin{verbatim} + coerce : % -> OutputForm + hash : % -> SingleInteger + latex : % -> String + ?=? : (%,%) -> Boolean + ?~=? : (%,%) -> Boolean +\end{verbatim} + +<>= +)abbrev category ABELSG AbelianSemiGroup +++ Author: +++ Date Created: +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +++ the class of all additive (commutative) semigroups, i.e. +++ a set with a commutative and associative operation \spadop{+}. +++ +++ Axioms: +++ \spad{associative("+":(%,%)->%)}\tab{30}\spad{ (x+y)+z = x+(y+z) } +++ \spad{commutative("+":(%,%)->%)}\tab{30}\spad{ x+y = y+x } +AbelianSemiGroup(): Category == SetCategory with + --operations + "+": (%,%) -> % ++ x+y computes the sum of x and y. + "*": (PositiveInteger,%) -> % + ++ n*x computes the left-multiplication of x by the positive integer n. + ++ This is equivalent to adding x to itself n times. + add + import RepeatedDoubling(%) + if not (% has Ring) then + n:PositiveInteger * x:% == double(n,x) + +@ +<>= +"ABELSG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ABELSG"]; +"ABELSG" -> "SETCAT" +"ABELSG" -> "REPDB" + +@ +<>= +"AbelianSemiGroup()" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ABELSG"]; +"AbelianSemiGroup()" -> "SetCategory()" +"AbelianSemiGroup()" -> "RepeatedDoubling(S:SetCategory)" + +<>= +digraph pic { + fontsize=10; + bgcolor="#FFFF66"; + node [shape=box, color=white, style=filled]; + +"AbelianSemiGroup()" [color=lightblue]; +"AbelianSemiGroup()" -> "SetCategory()" +"AbelianSemiGroup()" -> "RepeatedDoubling(S: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(S:AbelianSemiGroup)" [color="#00EE00"]; +"RepeatedDoubling(S:AbelianSemiGroup)" -> "RepeatedDoubling(S:SetCategory)" + +"RepeatedDoubling(S:SetCategory)" [color="#00EE00"]; +"RepeatedDoubling(S:SetCategory)" -> "Package" + +"Package" [color="#00EE00"]; + +"Category" [color=lightblue]; +} + +@ + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagehead{HomogeneousAggregate}{HOAGG} \pagepic{ps/v102homogeneousaggregate.ps}{HOAGG} @@ -1070,13 +1379,13 @@ HomogeneousAggregate(S:Type): Category == Aggregate with @ <>= -"HOAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"HOAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=HOAGG"]; "HOAGG" -> "AGG" @ <>= "HomogeneousAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=HOAGG"]; "HomogeneousAggregate(a:Type)" -> "Aggregate()" @ @@ -1086,23 +1395,22 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"HomogeneousAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"HomogeneousAggregate(a:Type)" [color=lightblue]; "HomogeneousAggregate(a:Type)" -> "Aggregate()" "HomogeneousAggregate(a:Type)" -> "Evalable(a:Type)" -"HomogeneousAggregate(a:Type)" -> "SetCategory" +"HomogeneousAggregate(a:Type)" -> "SetCategory()" -"Evalable(a:Type)" [color="#00EE00",href="books/bookvol10.2.pamphlet"]; +"Evalable(a:Type)" [color="#00EE00"]; -"SetCategory" [color="#00EE00",href="books/bookvol10.2.pamphlet"]; +"SetCategory()" [color="#00EE00"]; -"Aggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Aggregate()" [color=lightblue]; "Aggregate()" -> "Type()" -"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Type()" [color=lightblue]; "Type()" -> "Category" -"Category" [color=lightblue,href="books/bookvol10.pamphlet"]; +"Category" [color=lightblue]; } @@ -1242,16 +1550,17 @@ BagAggregate(S:Type): Category == HomogeneousAggregate S with @ <>= -"BGAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"BGAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=BGAGG"]; "BGAGG" -> "HOAGG" @ <>= -"BagAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"BagAggregate(a:Type)" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=BGAGG"]; "BagAggregate(a:Type)" -> "HomogeneousAggregate(a:Type)" "BagAggregate(a:SetCategory)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=BGAGG"]; "BagAggregate(a:SetCategory)" -> "BagAggregate(a:Type)" @ @@ -1261,20 +1570,19 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"BagAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"BagAggregate(a:Type)" [color=lightblue]; "BagAggregate(a:Type)" -> "HomogeneousAggregate(a:Type)" -"HomogeneousAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"HomogeneousAggregate(a:Type)" [color=lightblue]; "HomogeneousAggregate(a:Type)" -> "Aggregate()" -"Aggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Aggregate()" [color=lightblue]; "Aggregate()" -> "Type()" -"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Type()" [color=lightblue]; "Type()" -> "Category" -"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Category" [color=lightblue]; } @ @@ -1483,15 +1791,17 @@ Collection(S:Type): Category == HomogeneousAggregate(S) with @ <>= -"CLAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"CLAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=CLAGG"]; "CLAGG" -> "HOAGG" @ <>= -"Collection(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Collection(a:Type)" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=CLAGG"]; "Collection(a:Type)" -> "HomogeneousAggregate(a:Type)" -"Collection(a:SetCategory)" [color=seagreen,href="books/bookvol10.2.pamphlet"]; +"Collection(a:SetCategory)" + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=CLAGG"]; "Collection(a:SetCategory)" -> "Collection(a:Type)" @ @@ -1501,29 +1811,26 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"Collection(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Collection(a:Type)" [color=lightblue]; "Collection(a:Type)" -> "HomogeneousAggregate(a:Type)" "Collection(a:Type)" -> "ConvertibleTo(InputForm)" -"HomogeneousAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"HomogeneousAggregate(a:Type)" [color=lightblue]; "HomogeneousAggregate(a:Type)" -> "Aggregate()" -"Aggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Aggregate()" [color=lightblue]; "Aggregate()" -> "Type()" -"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Type()" [color=lightblue]; "Type()" -> "Category" -"ConvertibleTo(InputForm)" - [color="#00EE00",href="books/bookvol10.2.pamphlet"]; +"ConvertibleTo(InputForm)" [color="#00EE00"]; "ConvertibleTo(InputForm)" -> "ConvertibleTo(a:Type)" -"ConvertibleTo(a:Type)" - [color="#00EE00",href="books/bookvol10.2.pamphlet"]; +"ConvertibleTo(a:Type)" [color="#00EE00"]; "ConvertibleTo(a:Type)" -> "Category" -"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Category" [color=lightblue]; } @ @@ -1741,26 +2048,26 @@ IndexedAggregate(Index: SetCategory, Entry: Type): Category == @ <>= -"IXAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"IXAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=IXAGG"]; "IXAGG" -> "HOAGG" "IXAGG" -> "ELTAGG" @ <>= "IndexedAggregate(a:SetCategory,b:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=IXAGG"]; "IndexedAggregate(a:SetCategory,b:Type)" -> "HomogeneousAggregate(a:Type)" "IndexedAggregate(a:SetCategory,b:Type)" -> "EltableAggregate(a:SetCategory,b:Type)" "IndexedAggregate(a:SetCategory,b:SetCategory)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=IXAGG"]; "IndexedAggregate(a:SetCategory,b:SetCategory)" -> "IndexedAggregate(a:SetCategory,b:Type)" "IndexedAggregate(b:Integer,a:Type)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=IXAGG"]; "IndexedAggregate(b:Integer,a:Type)" -> "IndexedAggregate(a:SetCategory,b:Type)" @@ -1771,32 +2078,28 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"IndexedAggregate(a:SetCategory,b:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"IndexedAggregate(a:SetCategory,b:Type)" [color=lightblue]; "IndexedAggregate(a:SetCategory,b:Type)" -> "HomogeneousAggregate(a:Type)" "IndexedAggregate(a:SetCategory,b:Type)" -> "EltableAggregate(a:SetCategory,b:Type)" -"HomogeneousAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"HomogeneousAggregate(a:Type)" [color=lightblue]; "HomogeneousAggregate(a:Type)" -> "Aggregate()" -"EltableAggregate(a:SetCategory,b:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"EltableAggregate(a:SetCategory,b:Type)" [color=lightblue]; "EltableAggregate(a:SetCategory,b:Type)" -> "Eltable(a:SetCategory,b:Type)" -"Eltable(a:SetCategory,b:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Eltable(a:SetCategory,b:Type)" [color=lightblue]; "Eltable(a:SetCategory,b:Type)" -> "Category" -"Aggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Aggregate()" [color=lightblue]; "Aggregate()" -> "Type()" -"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Type()" [color=lightblue]; "Type()" -> "Category" -"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Category" [color=lightblue]; } @ @@ -1982,13 +2285,13 @@ RecursiveAggregate(S:Type): Category == HomogeneousAggregate(S) with @ <>= -"RCAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"RCAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=RCAGG"]; "RCAGG" -> "HOAGG" @ <>= "RecursiveAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=RCAGG"]; "RecursiveAggregate(a:Type)" -> "HomogeneousAggregate(a:Type)" @ @@ -1998,21 +2301,19 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"RecursiveAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"RecursiveAggregate(a:Type)" [color=lightblue]; "RecursiveAggregate(a:Type)" -> "HomogeneousAggregate(a:Type)" -"HomogeneousAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"HomogeneousAggregate(a:Type)" [color=lightblue]; "HomogeneousAggregate(a:Type)" -> "Aggregate()" -"Aggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Aggregate()" [color=lightblue]; "Aggregate()" -> "Type()" -"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Type()" [color=lightblue]; "Type()" -> "Category" -"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Category" [color=lightblue]; } @ @@ -2268,13 +2569,13 @@ BinaryRecursiveAggregate(S:Type):Category == RecursiveAggregate S with @ <>= -"BRAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"BRAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=BRAGG"]; "BRAGG" -> "RCAGG" @ <>= "BinaryRecursiveAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=BRAGG"]; "BinaryRecursiveAggregate(a:Type)" -> "RecursiveAggregate(a:Type)" @ @@ -2284,25 +2585,22 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"BinaryRecursiveAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"BinaryRecursiveAggregate(a:Type)" [color=lightblue]; "BinaryRecursiveAggregate(a:Type)" -> "RecursiveAggregate(a:Type)" -"RecursiveAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"RecursiveAggregate(a:Type)" [color=lightblue]; "RecursiveAggregate(a:Type)" -> "HomogeneousAggregate(a:Type)" -"HomogeneousAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"HomogeneousAggregate(a:Type)" [color=lightblue]; "HomogeneousAggregate(a:Type)" -> "Aggregate()" -"Aggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Aggregate()" [color=lightblue]; "Aggregate()" -> "Type()" -"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Type()" [color=lightblue]; "Type()" -> "Category" -"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Category" [color=lightblue]; } @ @@ -2487,14 +2785,14 @@ DictionaryOperations(S:SetCategory): Category == @ <>= -"DIOPS" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"DIOPS" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=DIOPS"]; "DIOPS" -> "BGAGG" "DIOPS" -> "CLAGG" @ <>= "DictionaryOperations(a:SetCategory)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=DIOPS"]; "DictionaryOperations(a:SetCategory)" -> "BagAggregate(a:SetCategory)" "DictionaryOperations(a:SetCategory)" -> "Collection(a:SetCategory)" @@ -2505,35 +2803,32 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"DictionaryOperations(a:SetCategory)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"DictionaryOperations(a:SetCategory)" [color=lightblue]; "DictionaryOperations(a:SetCategory)" -> "BagAggregate(a:SetCategory)" "DictionaryOperations(a:SetCategory)" -> "Collection(a:SetCategory)" -"BagAggregate(a:SetCategory)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; +"BagAggregate(a:SetCategory)" [color=seagreen]; "BagAggregate(a:SetCategory)" -> "BagAggregate(a:Type)" -"BagAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"BagAggregate(a:Type)" [color=lightblue]; "BagAggregate(a:Type)" -> "HomogeneousAggregate(a:Type)" -"Collection(a:SetCategory)" [color=seagreen,href="books/bookvol10.2.pamphlet"]; +"Collection(a:SetCategory)" [color=seagreen]; "Collection(a:SetCategory)" -> "Collection(a:Type)" -"Collection(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Collection(a:Type)" [color=lightblue]; "Collection(a:Type)" -> "HomogeneousAggregate(a:Type)" -"HomogeneousAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"HomogeneousAggregate(a:Type)" [color=lightblue]; "HomogeneousAggregate(a:Type)" -> "Aggregate()" -"Aggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Aggregate()" [color=lightblue]; "Aggregate()" -> "Type()" -"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Type()" [color=lightblue]; "Type()" -> "Category" -"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Category" [color=lightblue]; } @ @@ -2718,13 +3013,13 @@ DoublyLinkedAggregate(S:Type): Category == RecursiveAggregate S with @ <>= -"DLAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"DLAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=DLAGG"]; "DLAGG" -> "RCAGG" @ <>= "DoublyLinkedAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=DLAGG"]; "DoublyLinkedAggregate(a:Type)" -> "RecursiveAggregate(a:Type)" @ @@ -2734,25 +3029,22 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"DoublyLinkedAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"DoublyLinkedAggregate(a:Type)" [color=lightblue]; "DoublyLinkedAggregate(a:Type)" -> "RecursiveAggregate(a:Type)" -"RecursiveAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"RecursiveAggregate(a:Type)" [color=lightblue]; "RecursiveAggregate(a:Type)" -> "HomogeneousAggregate(a:Type)" -"HomogeneousAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"HomogeneousAggregate(a:Type)" [color=lightblue]; "HomogeneousAggregate(a:Type)" -> "Aggregate()" -"Aggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Aggregate()" [color=lightblue]; "Aggregate()" -> "Type()" -"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Type()" [color=lightblue]; "Type()" -> "Category" -"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Category" [color=lightblue]; } @ @@ -3013,13 +3305,14 @@ LinearAggregate(S:Type): Category == @ <>= -"LNAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"LNAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=LNAGG"]; "LNAGG" -> "IXAGG" "LNAGG" -> "CLAGG" @ <>= -"LinearAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"LinearAggregate(a:Type)" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=LNAGG"]; "LinearAggregate(a:Type)" -> "IndexedAggregate(b:Integer,a:Type)" "LinearAggregate(a:Type)" -> "Collection(a:Type)" @@ -3030,34 +3323,31 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"LinearAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"LinearAggregate(a:Type)" [color=lightblue]; "LinearAggregate(a:Type)" -> "IndexedAggregate(b:Integer,a:Type)" "LinearAggregate(a:Type)" -> "Collection(a:Type)" -"IndexedAggregate(b:Integer,a:Type)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; +"IndexedAggregate(b:Integer,a:Type)" [color=seagreen]; "IndexedAggregate(b:Integer,a:Type)" -> "IndexedAggregate(a:SetCategory,b:Type)" -"IndexedAggregate(a:SetCategory,b:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"IndexedAggregate(a:SetCategory,b:Type)" [color=lightblue]; "IndexedAggregate(a:SetCategory,b:Type)" -> "HomogeneousAggregate(a:Type)" -"Collection(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Collection(a:Type)" [color=lightblue]; "Collection(a:Type)" -> "HomogeneousAggregate(a:Type)" -"HomogeneousAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"HomogeneousAggregate(a:Type)" [color=lightblue]; "HomogeneousAggregate(a:Type)" -> "Aggregate()" -"Aggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Aggregate()" [color=lightblue]; "Aggregate()" -> "Type()" -"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Type()" [color=lightblue]; "Type()" -> "Category" -"Category" [color=lightblue,href="books/bookvol10.pamphlet"]; +"Category" [color=lightblue]; } @ @@ -3185,21 +3475,21 @@ PriorityQueueAggregate(S:OrderedSet): Category == BagAggregate S with @ <>= -"PRQAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"PRQAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=PRQAGG"]; "PRQAGG" -> "BGAGG" @ <>= "PriorityQueueAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=PRQAGG"]; "PriorityQueueAggregate(a:Type)" -> "BagAggregate(a:Type)" "PriorityQueueAggregate(a:SetCategory)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=PRQAGG"]; "PriorityQueueAggregate(a:SetCategory)" -> "PriorityQueueAggregate(a:Type)" "PriorityQueueAggregate(a:OrderedSet)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=PRQAGG"]; "PriorityQueueAggregate(a:OrderedSet)" -> "PriorityQueueAggregate(a:SetCategory)" @@ -3210,24 +3500,22 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"PriorityQueueAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"PriorityQueueAggregate(a:Type)" [color=lightblue]; "PriorityQueueAggregate(a:Type)" -> "BagAggregate(a:Type)" -"BagAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"BagAggregate(a:Type)" [color=lightblue]; "BagAggregate(a:Type)" -> "HomogeneousAggregate(a:Type)" -"HomogeneousAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"HomogeneousAggregate(a:Type)" [color=lightblue]; "HomogeneousAggregate(a:Type)" -> "Aggregate()" -"Aggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Aggregate()" [color=lightblue]; "Aggregate()" -> "Type()" -"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Type()" [color=lightblue]; "Type()" -> "Category" -"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Category" [color=lightblue]; } @ @@ -3374,16 +3662,17 @@ QueueAggregate(S:Type): Category == BagAggregate S with @ <>= -"QUAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"QUAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=QUAGG"]; "QUAGG" -> "BGAGG" @ <>= -"QueueAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"QueueAggregate(a:Type)" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=QUAGG"]; "QueueAggregate(a:Type)" -> "BagAggregate(a:Type)" "QueueAggregate(a:SetCategory)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=QUAGG"]; "QueueAggregate(a:SetCategory)" -> "QueueAggregate(a:Type)" @ @@ -3393,23 +3682,22 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"QueueAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"QueueAggregate(a:Type)" [color=lightblue]; "QueueAggregate(a:Type)" -> "BagAggregate(a:Type)" -"BagAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"BagAggregate(a:Type)" [color=lightblue]; "BagAggregate(a:Type)" -> "HomogeneousAggregate(a:Type)" -"HomogeneousAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"HomogeneousAggregate(a:Type)" [color=lightblue]; "HomogeneousAggregate(a:Type)" -> "Aggregate()" -"Aggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Aggregate()" [color=lightblue]; "Aggregate()" -> "Type()" -"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Type()" [color=lightblue]; "Type()" -> "Category" -"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Category" [color=lightblue]; } @ @@ -3546,16 +3834,17 @@ StackAggregate(S:Type): Category == BagAggregate S with @ <>= -"SKAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"SKAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SKAGG"]; "SKAGG" -> "BGAGG" @ <>= -"StackAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"StackAggregate(a:Type)" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SKAGG"]; "StackAggregate(a:Type)" -> "BagAggregate(a:Type)" "StackAggregate(a:SetCategory)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=SKAGG"]; "StackAggregate(a:SetCategory)" -> "StackAggregate(a:Type)" @ @@ -3565,23 +3854,22 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"StackAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"StackAggregate(a:Type)" [color=lightblue]; "StackAggregate(a:Type)" -> "BagAggregate(a:Type)" -"BagAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"BagAggregate(a:Type)" [color=lightblue]; "BagAggregate(a:Type)" -> "HomogeneousAggregate(a:Type)" -"HomogeneousAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"HomogeneousAggregate(a:Type)" [color=lightblue]; "HomogeneousAggregate(a:Type)" -> "Aggregate()" -"Aggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Aggregate()" [color=lightblue]; "Aggregate()" -> "Type()" -"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Type()" [color=lightblue]; "Type()" -> "Category" -"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Category" [color=lightblue]; } @ @@ -4016,13 +4304,13 @@ UnaryRecursiveAggregate(S:Type): Category == RecursiveAggregate S with @ <>= -"URAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"URAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=URAGG"]; "URAGG" -> "RCAGG" @ <>= "UnaryRecursiveAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=URAGG"]; "UnaryRecursiveAggregate(a:Type)" -> "RecursiveAggregate(a:Type)" @ @@ -4032,25 +4320,22 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"UnaryRecursiveAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"UnaryRecursiveAggregate(a:Type)" [color=lightblue]; "UnaryRecursiveAggregate(a:Type)" -> "RecursiveAggregate(a:Type)" -"RecursiveAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"RecursiveAggregate(a:Type)" [color=lightblue]; "RecursiveAggregate(a:Type)" -> "HomogeneousAggregate(a:Type)" -"HomogeneousAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"HomogeneousAggregate(a:Type)" [color=lightblue]; "HomogeneousAggregate(a:Type)" -> "Aggregate()" -"Aggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Aggregate()" [color=lightblue]; "Aggregate()" -> "Type()" -"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Type()" [color=lightblue]; "Type()" -> "Category" -"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Category" [color=lightblue]; } @ @@ -4222,17 +4507,17 @@ Dictionary(S:SetCategory): Category == @ <>= -"DIAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"DIAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=DIAGG"]; "DIAGG" -> "DIOPS" @ <>= "Dictionary(a:SetCategory)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=DIAGG"]; "Dictionary(a:SetCategory)" -> "DictionaryOperations(a:SetCategory)" "Dictionary(Record(a:SetCategory,b:SetCategory))" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=DIAGG"]; "Dictionary(Record(a:SetCategory,b:SetCategory))" -> "Dictionary(a:SetCategory)" @@ -4243,39 +4528,35 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"Dictionary(a:SetCategory)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Dictionary(a:SetCategory)" [color=lightblue]; "Dictionary(a:SetCategory)" -> "DictionaryOperations(a:SetCategory)" -"DictionaryOperations(a:SetCategory)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"DictionaryOperations(a:SetCategory)" [color=lightblue]; "DictionaryOperations(a:SetCategory)" -> "BagAggregate(a:SetCategory)" "DictionaryOperations(a:SetCategory)" -> "Collection(a:SetCategory)" -"BagAggregate(a:SetCategory)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; +"BagAggregate(a:SetCategory)" [color=seagreen]; "BagAggregate(a:SetCategory)" -> "BagAggregate(a:Type)" -"BagAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"BagAggregate(a:Type)" [color=lightblue]; "BagAggregate(a:Type)" -> "HomogeneousAggregate(a:Type)" -"Collection(a:SetCategory)" [color=seagreen,href="books/bookvol10.2.pamphlet"]; +"Collection(a:SetCategory)" [color=seagreen]; "Collection(a:SetCategory)" -> "Collection(a:Type)" -"Collection(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Collection(a:Type)" [color=lightblue]; "Collection(a:Type)" -> "HomogeneousAggregate(a:Type)" -"HomogeneousAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"HomogeneousAggregate(a:Type)" [color=lightblue]; "HomogeneousAggregate(a:Type)" -> "Aggregate()" -"Aggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Aggregate()" [color=lightblue]; "Aggregate()" -> "Type()" -"Type()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Type()" [color=lightblue]; "Type()" -> "Category" -"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Category" [color=lightblue]; } @ @@ -4470,18 +4751,19 @@ DequeueAggregate(S:Type): @ <>= -"DQAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"DQAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=DQAGG"]; "DQAGG" -> "SKAGG" "DQAGG" -> "QUAGG" @ <>= -"DequeueAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"DequeueAggregate(a:Type)" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=DQAGG"]; "DequeueAggregate(a:Type)" -> "StackAggregate(a:Type)" "DequeueAggregate(a:Type)" -> "QueueAggregate(a:Type)" "DequeueAggregate(a:SetCategory)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=DQAGG"]; "DequeueAggregate(a:SetCategory)" -> "DequeueAggregate(a:Type)" @ @@ -4491,24 +4773,23 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"DequeueAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"DequeueAggregate(a:Type)" [color=lightblue]; "DequeueAggregate(a:Type)" -> "StackAggregate(a:Type)" "DequeueAggregate(a:Type)" -> "QueueAggregate(a:Type)" -"StackAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"StackAggregate(a:Type)" [color=lightblue]; "StackAggregate(a:Type)" -> "BagAggregate(a:Type)" -"QueueAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"QueueAggregate(a:Type)" [color=lightblue]; "QueueAggregate(a:Type)" -> "BagAggregate(a:Type)" -"BagAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"BagAggregate(a:Type)" [color=lightblue]; "BagAggregate(a:Type)" -> "HomogeneousAggregate(a:Type)" -"HomogeneousAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"HomogeneousAggregate(a:Type)" [color=lightblue]; "HomogeneousAggregate(a:Type)" -> "..." -"..." [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"..." [color=lightblue]; } @ @@ -4769,13 +5050,13 @@ ExtensibleLinearAggregate(S:Type):Category == LinearAggregate S with @ <>= -"ELAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"ELAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ELAGG"]; "ELAGG" -> "LNAGG" @ <>= "ExtensibleLinearAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ELAGG"]; "ExtensibleLinearAggregate(a:Type)" -> "LinearAggregate(a:Type)" @ @@ -4785,32 +5066,28 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"ExtensibleLinearAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"ExtensibleLinearAggregate(a:Type)" [color=lightblue]; "ExtensibleLinearAggregate(a:Type)" -> "LinearAggregate(a:Type)" -"LinearAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"LinearAggregate(a:Type)" [color=lightblue]; "LinearAggregate(a:Type)" -> "IndexedAggregate(b:Integer,a:Type)" "LinearAggregate(a:Type)" -> "Collection(a:Type)" -"IndexedAggregate(b:Integer,a:Type)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; +"IndexedAggregate(b:Integer,a:Type)" [color=seagreen]; "IndexedAggregate(b:Integer,a:Type)" -> "IndexedAggregate(a:SetCategory,b:Type)" -"IndexedAggregate(a:SetCategory,b:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"IndexedAggregate(a:SetCategory,b:Type)" [color=lightblue]; "IndexedAggregate(a:SetCategory,b:Type)" -> "HomogeneousAggregate(a:Type)" -"Collection(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Collection(a:Type)" [color=lightblue]; "Collection(a:Type)" -> "HomogeneousAggregate(a:Type)" -"HomogeneousAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"HomogeneousAggregate(a:Type)" [color=lightblue]; "HomogeneousAggregate(a:Type)" -> "..." -"..." [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"..." [color=lightblue]; } @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -5112,13 +5389,13 @@ FiniteLinearAggregate(S:Type): Category == LinearAggregate S with @ <>= -"FLAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"FLAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=FLAGG"]; "FLAGG" -> "LNAGG" @ <>= "FiniteLinearAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=FLAGG"]; "FiniteLinearAggregate(a:Type)" -> "LinearAggregate(a:Type)" @ @@ -5128,35 +5405,31 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"FiniteLinearAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"FiniteLinearAggregate(a:Type)" [color=lightblue]; "FiniteLinearAggregate(a:Type)" -> "LinearAggregate(a:Type)" "FiniteLinearAggregate(a:Type)" -> "OrderedSet" -"OrderedSet" [color="#00EE00",href="books/bookvol10.2.pamphlet"]; +"OrderedSet" [color="#00EE00"]; -"LinearAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"LinearAggregate(a:Type)" [color=lightblue]; "LinearAggregate(a:Type)" -> "IndexedAggregate(b:Integer,a:Type)" "LinearAggregate(a:Type)" -> "Collection(a:Type)" -"IndexedAggregate(b:Integer,a:Type)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; +"IndexedAggregate(b:Integer,a:Type)" [color=seagreen]; "IndexedAggregate(b:Integer,a:Type)" -> "IndexedAggregate(a:SetCategory,b:Type)" -"IndexedAggregate(a:SetCategory,b:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"IndexedAggregate(a:SetCategory,b:Type)" [color=lightblue]; "IndexedAggregate(a:SetCategory,b:Type)" -> "HomogeneousAggregate(a:Type)" -"Collection(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Collection(a:Type)" [color=lightblue]; "Collection(a:Type)" -> "HomogeneousAggregate(a:Type)" -"HomogeneousAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"HomogeneousAggregate(a:Type)" [color=lightblue]; "HomogeneousAggregate(a:Type)" -> "..." -"..." [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"..." [color=lightblue]; } @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -5165,7 +5438,6 @@ digraph pic { {\bf See:}\\ \pagefrom{DictionaryOperations}{DIOPS} -<>= {\bf Exports:}\\ \begin{tabular}{lllll} @@ -5214,9 +5486,9 @@ digraph pic { \cross{MDAGG}{select} \cross{MDAGG}{select!} \cross{MDAGG}{size?} -\cross{MDAGG}{#?} +\cross{MDAGG}{\#?} \cross{MDAGG}{?=?} -\cross{MDAGG}{?~=?} +\cross{MDAGG}{?\~{}=?} These are directly exported but not implemented: \begin{verbatim} @@ -5288,6 +5560,7 @@ These exports come from DictionaryOperations(a:SetCategory): ?~=? : (%,%) -> Boolean if S has SETCAT \end{verbatim} +<>= )abbrev category MDAGG MultiDictionary ++ Author: Michael Monagan; revised by Manuel Bronstein and Richard Jenks ++ Date Created: August 87 through August 88 @@ -5319,13 +5592,13 @@ MultiDictionary(S:SetCategory): Category == DictionaryOperations S with @ <>= -"MDAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"MDAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=MDAGG"]; "MDAGG" -> "DIOPS" @ <>= "MultiDictionary(a:SetCategory)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=MDAGG"]; "MultiDictionary(a:SetCategory)" -> "DictionaryOperations(a:SetCategory)" @ @@ -5335,33 +5608,29 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"MultiDictionary(a:SetCategory)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"MultiDictionary(a:SetCategory)" [color=lightblue]; "MultiDictionary(a:SetCategory)" -> "DictionaryOperations(a:SetCategory)" -"DictionaryOperations(a:SetCategory)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"DictionaryOperations(a:SetCategory)" [color=lightblue]; "DictionaryOperations(a:SetCategory)" -> "BagAggregate(a:SetCategory)" "DictionaryOperations(a:SetCategory)" -> "Collection(a:SetCategory)" -"BagAggregate(a:SetCategory)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; +"BagAggregate(a:SetCategory)" [color=seagreen]; "BagAggregate(a:SetCategory)" -> "BagAggregate(a:Type)" -"BagAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"BagAggregate(a:Type)" [color=lightblue]; "BagAggregate(a:Type)" -> "HomogeneousAggregate(a:Type)" -"Collection(a:SetCategory)" [color=seagreen,href="books/bookvol10.2.pamphlet"]; +"Collection(a:SetCategory)" [color=seagreen]; "Collection(a:SetCategory)" -> "Collection(a:Type)" -"Collection(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Collection(a:Type)" [color=lightblue]; "Collection(a:Type)" -> "HomogeneousAggregate(a:Type)" -"HomogeneousAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"HomogeneousAggregate(a:Type)" [color=lightblue]; "HomogeneousAggregate(a:Type)" -> "..." -"..." [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"..." [color=lightblue]; } @ @@ -5684,13 +5953,14 @@ StreamAggregate(S:Type): Category == @ <>= -"STAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"STAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=STAGG"]; "STAGG" -> "RCAGG" "STAGG" -> "LNAGG" @ <>= -"StreamAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"StreamAggregate(a:Type)" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=STAGG"]; "StreamAggregate(a:Type)" -> "UnaryRecursiveAggregate(a:Type)" "StreamAggregate(a:Type)" -> "LinearAggregate(a:Type)" @@ -5701,40 +5971,35 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"StreamAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"StreamAggregate(a:Type)" [color=lightblue]; "StreamAggregate(a:Type)" -> "UnaryRecursiveAggregate(a:Type)" "StreamAggregate(a:Type)" -> "LinearAggregate(a:Type)" -"UnaryRecursiveAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"UnaryRecursiveAggregate(a:Type)" [color=lightblue]; "UnaryRecursiveAggregate(a:Type)" -> "RecursiveAggregate(a:Type)" -"RecursiveAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"RecursiveAggregate(a:Type)" [color=lightblue]; "RecursiveAggregate(a:Type)" -> "HomogeneousAggregate(a:Type)" -"LinearAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"LinearAggregate(a:Type)" [color=lightblue]; "LinearAggregate(a:Type)" -> "IndexedAggregate(b:Integer,a:Type)" "LinearAggregate(a:Type)" -> "Collection(a:Type)" -"IndexedAggregate(b:Integer,a:Type)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; +"IndexedAggregate(b:Integer,a:Type)" [color=seagreen]; "IndexedAggregate(b:Integer,a:Type)" -> "IndexedAggregate(a:SetCategory,b:Type)" -"IndexedAggregate(a:SetCategory,b:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"IndexedAggregate(a:SetCategory,b:Type)" [color=lightblue]; "IndexedAggregate(a:SetCategory,b:Type)" -> "HomogeneousAggregate(a:Type)" -"Collection(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Collection(a:Type)" [color=lightblue]; "Collection(a:Type)" -> "HomogeneousAggregate(a:Type)" -"HomogeneousAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"HomogeneousAggregate(a:Type)" [color=lightblue]; "HomogeneousAggregate(a:Type)" -> "..." -"..." [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"..." [color=lightblue]; } @ @@ -6189,23 +6454,23 @@ OneDimensionalArrayAggregate(S:Type): Category == @ <>= -"A1AGG" [color=lightblue,style=filled]; +"A1AGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=A1AGG"]; "A1AGG" -> "FLAGG" @ <>= "OneDimensionalArrayAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=A1AGG"]; "OneDimensionalArrayAggregate(a:Type)" -> "FiniteLinearAggregate(a:Type)" "OneDimensionalArrayAggregate(Character)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=A1AGG"]; "OneDimensionalArrayAggregate(Character)" -> "OneDimensionalArrayAggregate(a:Type)" "OneDimensionalArrayAggregate(Boolean)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=A1AGG"]; "OneDimensionalArrayAggregate(Boolean)" -> "OneDimensionalArrayAggregate(a:Type)" @@ -6216,25 +6481,22 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"OneDimensionalArrayAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"OneDimensionalArrayAggregate(a:Type)" [color=lightblue]; "OneDimensionalArrayAggregate(a:Type)" -> "FiniteLinearAggregate(a:Type)" -"FiniteLinearAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"FiniteLinearAggregate(a:Type)" [color=lightblue]; "FiniteLinearAggregate(a:Type)" -> "LinearAggregate(a:Type)" -"LinearAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"LinearAggregate(a:Type)" [color=lightblue]; "LinearAggregate(a:Type)" -> "IndexedAggregate(b:Integer,a:Type)" "LinearAggregate(a:Type)" -> "CLAGG..." -"IndexedAggregate(b:Integer,a:Type)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; +"IndexedAggregate(b:Integer,a:Type)" [color=seagreen]; "IndexedAggregate(b:Integer,a:Type)" -> "IXAGG..." -"CLAGG..." [color=lightblue,href="books/bookvol10.2.pamphlet"]; -"IXAGG..." [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"CLAGG..." [color=lightblue]; +"IXAGG..." [color=lightblue]; } @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -6424,13 +6686,13 @@ KeyedDictionary(Key:SetCategory, Entry:SetCategory): Category == @ <>= -"KDAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"KDAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=KDAGG"]; "KDAGG" -> "DIAGG" @ <>= "KeyedDictionary(a:SetCategory,b:SetCategory)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=KDAGG"]; "KeyedDictionary(a:SetCategory,b:SetCategory)" -> "Dictionary(Record(a:SetCategory,b:SetCategory))" @@ -6441,39 +6703,34 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"KeyedDictionary(a:SetCategory,b:SetCategory)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"KeyedDictionary(a:SetCategory,b:SetCategory)" [color=lightblue]; "KeyedDictionary(a:SetCategory,b:SetCategory)" -> "Dictionary(Record(a:SetCategory,b:SetCategory))" -"Dictionary(Record(a:SetCategory,b:SetCategory))" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; +"Dictionary(Record(a:SetCategory,b:SetCategory))" [color=seagreen]; "Dictionary(Record(a:SetCategory,b:SetCategory))" -> "Dictionary(a:SetCategory)" -"Dictionary(a:SetCategory)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Dictionary(a:SetCategory)" [color=lightblue]; "Dictionary(a:SetCategory)" -> "DictionaryOperations(a:SetCategory)" -"DictionaryOperations(a:SetCategory)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"DictionaryOperations(a:SetCategory)" [color=lightblue]; "DictionaryOperations(a:SetCategory)" -> "BagAggregate(a:SetCategory)" "DictionaryOperations(a:SetCategory)" -> "Collection(a:SetCategory)" -"BagAggregate(a:SetCategory)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; +"BagAggregate(a:SetCategory)" [color=seagreen]; "BagAggregate(a:SetCategory)" -> "BagAggregate(a:Type)" -"BagAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"BagAggregate(a:Type)" [color=lightblue]; "BagAggregate(a:Type)" -> "HOAGG..." -"Collection(a:SetCategory)" [color=seagreen,href="books/bookvol10.2.pamphlet"]; +"Collection(a:SetCategory)" [color=seagreen]; "Collection(a:SetCategory)" -> "Collection(a:Type)" -"Collection(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Collection(a:Type)" [color=lightblue]; "Collection(a:Type)" -> "HOAGG..." -"HOAGG..." [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"HOAGG..." [color=lightblue]; } @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -6985,19 +7242,20 @@ ListAggregate(S:Type): Category == Join(StreamAggregate S, @ <>= -"LSAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"LSAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=LSAGG"]; "LSAGG" -> "FLAGG" "LSAGG" -> "ELAGG" @ <>= -"ListAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"ListAggregate(a:Type)" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=LSAGG"]; "ListAggregate(a:Type)" -> "StreamAggregate(a:Type)" "ListAggregate(a:Type)" -> "FiniteLinearAggregate(a:Type)" "ListAggregate(a:Type)" -> "ExtensibleLinearAggregate(a:Type)" "ListAggregate(Record(a:SetCategory,b:SetCategory))" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; + [color=seagreen,href="books/bookvol10.2.pamphlet#nameddest=LSAGG"]; "ListAggregate(Record(a:SetCategory,b:SetCategory))" -> "ListAggregate(a:Type)" @@ -7008,34 +7266,31 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"ListAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"ListAggregate(a:Type)" [color=lightblue]; "ListAggregate(a:Type)" -> "StreamAggregate(a:Type)" "ListAggregate(a:Type)" -> "FiniteLinearAggregate(a:Type)" "ListAggregate(a:Type)" -> "ExtensibleLinearAggregate(a:Type)" -"StreamAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"StreamAggregate(a:Type)" [color=lightblue]; "StreamAggregate(a:Type)" -> "UnaryRecursiveAggregate(a:Type)" "StreamAggregate(a:Type)" -> "LinearAggregate(a:Type)" -"FiniteLinearAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"FiniteLinearAggregate(a:Type)" [color=lightblue]; "FiniteLinearAggregate(a:Type)" -> "LinearAggregate(a:Type)" -"ExtensibleLinearAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"ExtensibleLinearAggregate(a:Type)" [color=lightblue]; "ExtensibleLinearAggregate(a:Type)" -> "LinearAggregate(a:Type)" -"UnaryRecursiveAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"UnaryRecursiveAggregate(a:Type)" [color=lightblue]; "UnaryRecursiveAggregate(a:Type)" -> "RCAGG..." -"LinearAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"LinearAggregate(a:Type)" [color=lightblue]; "LinearAggregate(a:Type)" -> "IXAGG..." "LinearAggregate(a:Type)" -> "CLAGG..." -"CLAGG..." [color=lightblue,href="books/bookvol10.2.pamphlet"]; -"IXAGG..." [color=lightblue,href="books/bookvol10.2.pamphlet"]; -"RCAGG..." [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"CLAGG..." [color=lightblue]; +"IXAGG..." [color=lightblue]; +"RCAGG..." [color=lightblue]; } @ @@ -7418,12 +7673,13 @@ StringAggregate: Category == OneDimensionalArrayAggregate Character with @ <>= -"SRAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"SRAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SRAGG"]; "SRAGG" -> "A1AGG" @ <>= -"StringAggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"StringAggregate()" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SRAGG"]; "StringAggregate()" -> "OneDimensionalArrayAggregate(Character)" @ @@ -7433,33 +7689,29 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"StringAggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"StringAggregate()" [color=lightblue]; "StringAggregate()" -> "OneDimensionalArrayAggregate(Character)" -"OneDimensionalArrayAggregate(Character)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; +"OneDimensionalArrayAggregate(Character)" [color=seagreen]; "OneDimensionalArrayAggregate(Character)" -> "OneDimensionalArrayAggregate(a:Type)" -"OneDimensionalArrayAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"OneDimensionalArrayAggregate(a:Type)" [color=lightblue]; "OneDimensionalArrayAggregate(a:Type)" -> "FiniteLinearAggregate(a:Type)" -"FiniteLinearAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"FiniteLinearAggregate(a:Type)" [color=lightblue]; "FiniteLinearAggregate(a:Type)" -> "LinearAggregate(a:Type)" -"LinearAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"LinearAggregate(a:Type)" [color=lightblue]; "LinearAggregate(a:Type)" -> "IndexedAggregate(b:Integer,a:Type)" "LinearAggregate(a:Type)" -> "CLAGG..." -"IndexedAggregate(b:Integer,a:Type)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; +"IndexedAggregate(b:Integer,a:Type)" [color=seagreen]; "IndexedAggregate(b:Integer,a:Type)" -> "IXAGG..." -"CLAGG..." [color=lightblue,href="books/bookvol10.2.pamphlet"]; -"IXAGG..." [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"CLAGG..." [color=lightblue]; +"IXAGG..." [color=lightblue]; } @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -7789,14 +8041,14 @@ TableAggregate(Key:SetCategory, Entry:SetCategory): Category == @ <>= -"TBAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"TBAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=TBAGG"]; "TBAGG" -> "KDAGG" "TBAGG" -> "IXAGG" @ <>= "TableAggregate(a:SetCategory,b:SetCategory)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=TBAGG"]; "TableAggregate(a:SetCategory,b:SetCategory)" -> "KeyedDictionary(a:SetCategory,b:SetCategory)" "TableAggregate(a:SetCategory,b:SetCategory)" -> @@ -7809,57 +8061,49 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"TableAggregate(a:SetCategory,b:SetCategory)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"TableAggregate(a:SetCategory,b:SetCategory)" [color=lightblue]; "TableAggregate(a:SetCategory,b:SetCategory)" -> "KeyedDictionary(a:SetCategory,b:SetCategory)" "TableAggregate(a:SetCategory,b:SetCategory)" -> "IndexedAggregate(a:SetCategory,b:SetCategory)" -"IndexedAggregate(a:SetCategory,b:SetCategory)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; +"IndexedAggregate(a:SetCategory,b:SetCategory)" [color=seagreen]; "IndexedAggregate(a:SetCategory,b:SetCategory)" -> "IndexedAggregate(a:SetCategory,b:Type)" -"IndexedAggregate(a:SetCategory,b:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"IndexedAggregate(a:SetCategory,b:Type)" [color=lightblue]; "IndexedAggregate(a:SetCategory,b:Type)" -> "HOAGG..." "IndexedAggregate(a:SetCategory,b:Type)" -> "ELTAGG..." -"KeyedDictionary(a:SetCategory,b:SetCategory)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"KeyedDictionary(a:SetCategory,b:SetCategory)" [color=lightblue]; "KeyedDictionary(a:SetCategory,b:SetCategory)" -> "Dictionary(Record(a:SetCategory,b:SetCategory))" -"Dictionary(Record(a:SetCategory,b:SetCategory))" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; +"Dictionary(Record(a:SetCategory,b:SetCategory))" [color=seagreen]; "Dictionary(Record(a:SetCategory,b:SetCategory))" -> "Dictionary(a:SetCategory)" -"Dictionary(a:SetCategory)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Dictionary(a:SetCategory)" [color=lightblue]; "Dictionary(a:SetCategory)" -> "DictionaryOperations(a:SetCategory)" -"DictionaryOperations(a:SetCategory)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"DictionaryOperations(a:SetCategory)" [color=lightblue]; "DictionaryOperations(a:SetCategory)" -> "BagAggregate(a:SetCategory)" "DictionaryOperations(a:SetCategory)" -> "Collection(a:SetCategory)" -"BagAggregate(a:SetCategory)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; +"BagAggregate(a:SetCategory)" [color=seagreen]; "BagAggregate(a:SetCategory)" -> "BagAggregate(a:Type)" -"BagAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"BagAggregate(a:Type)" [color=lightblue]; "BagAggregate(a:Type)" -> "HOAGG..." -"Collection(a:SetCategory)" [color=seagreen,href="books/bookvol10.2.pamphlet"]; +"Collection(a:SetCategory)" [color=seagreen]; "Collection(a:SetCategory)" -> "Collection(a:Type)" -"Collection(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Collection(a:Type)" [color=lightblue]; "Collection(a:Type)" -> "HOAGG..." -"ELTAGG..." [color=lightblue,href="books/bookvol10.2.pamphlet"]; -"HOAGG..." [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"ELTAGG..." [color=lightblue]; +"HOAGG..." [color=lightblue]; } @ \chapter{Category Layer 8} @@ -8236,14 +8480,14 @@ AssociationListAggregate(Key:SetCategory,Entry:SetCategory): Category == @ <>= -"ALAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"ALAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ALAGG"]; "ALAGG" -> "TBAGG" "ALAGG" -> "LSAGG" @ <>= "AssociationListAggregate(a:SetCategory,b:SetCategory)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=ALAGG"]; "AssociationListAggregate(a:SetCategory,b:SetCategory)" -> "TableAggregate(a:SetCategory,b:SetCategory)" "AssociationListAggregate(a:SetCategory,b:SetCategory)" -> @@ -8256,43 +8500,37 @@ digraph pic { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"AssociationListAggregate(a:SetCategory,b:SetCategory)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"AssociationListAggregate(a:SetCategory,b:SetCategory)" [color=lightblue]; "AssociationListAggregate(a:SetCategory,b:SetCategory)" -> "TableAggregate(a:SetCategory,b:SetCategory)" "AssociationListAggregate(a:SetCategory,b:SetCategory)" -> "ListAggregate(Record(a:SetCategory,b:SetCategory))" -"TableAggregate(a:SetCategory,b:SetCategory)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"TableAggregate(a:SetCategory,b:SetCategory)" [color=lightblue]; "TableAggregate(a:SetCategory,b:SetCategory)" -> "KDAGG..." "TableAggregate(a:SetCategory,b:SetCategory)" -> "IndexedAggregate(a:SetCategory,b:SetCategory)" -"IndexedAggregate(a:SetCategory,b:SetCategory)" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; +"IndexedAggregate(a:SetCategory,b:SetCategory)" [color=seagreen]; "IndexedAggregate(a:SetCategory,b:SetCategory)" -> "IXAGG..." -"ListAggregate(Record(a:SetCategory,b:SetCategory))" - [color=seagreen,href="books/bookvol10.2.pamphlet"]; +"ListAggregate(Record(a:SetCategory,b:SetCategory))" [color=seagreen]; "ListAggregate(Record(a:SetCategory,b:SetCategory))" -> "ListAggregate(a:Type)" -"ListAggregate(a:Type)" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"ListAggregate(a:Type)" [color=lightblue]; "ListAggregate(a:Type)" -> "FiniteLinearAggregate(a:Type)" "ListAggregate(a:Type)" -> "ExtensibleLinearAggregate(a:Type)" -"FiniteLinearAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"FiniteLinearAggregate(a:Type)" [color=lightblue]; "FiniteLinearAggregate(a:Type)" -> "LSAGG..." -"ExtensibleLinearAggregate(a:Type)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"ExtensibleLinearAggregate(a:Type)" [color=lightblue]; "ExtensibleLinearAggregate(a:Type)" -> "LSAGG..." -"KDAGG..." [color=lightblue,href="books/bookvol10.2.pamphlet"]; -"IXAGG..." [color=lightblue,href="books/bookvol10.2.pamphlet"]; -"LSAGG..." [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"KDAGG..." [color=lightblue]; +"IXAGG..." [color=lightblue]; +"LSAGG..." [color=lightblue]; } @ @@ -8397,14 +8635,14 @@ FiniteSetAggregate(S:SetCategory): Category == @ <>= -"FSAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"FSAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=FSAGG"]; "FSAGG" -> "DIAGG" "FSAGG" -> "SETAGG" @ <>= "FiniteSetAggregate(a:SetCategory)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=FSAGG"]; "FiniteSetAggregate(a:SetCategory)" -> "Dictionary(a:SetCategory)" "FiniteSetAggregate(a:SetCategory)" -> "SetAggregate(a:SetCategory)" @@ -8459,14 +8697,15 @@ BitAggregate(): Category == @ <>= -"BTAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"BTAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=BTAGG"]; "BTAGG" -> "ORDSET" "BTAGG" -> "LOGIC" "BTAGG" -> "A1AGG" @ <>= -"BitAggregate()" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"BitAggregate()" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=BTAGG"]; "BitAggregate()" -> "OrderedSet()" "BitAggregate()" -> "Logic()" "BitAggregate()" -> "OneDimensionalArrayAggregate(Boolean)" @@ -8492,14 +8731,15 @@ MultisetAggregate(S:SetCategory): @ <>= -"MSETAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"MSETAGG" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=MSETAGG"]; "MSETAGG" -> "MDAGG" "MSETAGG" -> "SETAGG" @ <>= "MultisetAggregate(a:SetCategory)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=MSETAGG"]; "MultisetAggregate(a:SetCategory)" -> "MultiDictionary(a:SetCategory)" "MultisetAggregate(a:SetCategory)" -> "SetAggregate(a:SetCategory)" @@ -8531,14 +8771,14 @@ OrderedMultisetAggregate(S:OrderedSet): Category == @ <>= -"OMSAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"OMSAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=OMSAGG"]; "OMSAGG" -> "MSETAGG" "OMSAGG" -> "PRQAGG" @ <>= "OrderedMultisetAggregate(a:SetCategory)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=OMSAGG"]; "OrderedMultisetAggregate(a:SetCategory)" -> "MultisetAggregate(a:SetCategory)" "OrderedMultisetAggregate(a:SetCategory)" -> "PriorityQueueAggregate(a:SetCategory)" @@ -8625,14 +8865,14 @@ SetAggregate(S:SetCategory): @ <>= -"SETAGG" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"SETAGG" [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SETAGG"]; "SETAGG" -> "SETCAT" "SETAGG" -> "CLAGG" @ <>= "SetAggregate(a:SetCategory)" - [color=lightblue,href="books/bookvol10.2.pamphlet"]; + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=SETAGG"]; "SetAggregate(a:SetCategory)" -> "SetCategory()" "SetAggregate(a:SetCategory)" -> "Collection(a:SetCategory)" @@ -8641,22 +8881,141 @@ SetAggregate(S:SetCategory): \pagehead{Evalable}{EVALAB} \pageto{HomogeneousAggregate}{HOAGG} <>= -"Evalable(a:Type)" [color="#00EE00",href="books/bookvol10.2.pamphlet"]; +"Evalable(a:Type)" + [color="#00EE00",href="books/bookvol10.2.pamphlet#nameddest=EVALAB"]; @ \pagehead{OrderedSet}{ORDSET} \pageto{FiniteLinearAggregate}{FLAGG} <>= -"OrderedSet" [color="#00EE00",href="books/bookvol10.2.pamphlet"]; -@ - -\pagehead{SetCategory}{SETCAT} -\pageto{HomogeneousAggregate}{HOAGG} -<>= -"SetCategory" [color="#00EE00",href="books/bookvol10.2.pamphlet"]; +"OrderedSet" + [color="#00EE00",href="books/bookvol10.2.pamphlet#nameddest=ORDSET"]; @ \chapter{The bootstrap code} +\section{ABELSG.lsp BOOTSTRAP} +{\bf ABELSG} 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} which needs +{\bf ABELSG}. +We break this chain with {\bf ABELSG.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 ABELSG} +category which we can write into the {\bf MID} directory. We compile +the lisp code and copy the {\bf ABELSG.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 |AbelianSemiGroup;AL| (QUOTE NIL)) + +(DEFUN |AbelianSemiGroup| NIL + (LET (#:G82568) + (COND + (|AbelianSemiGroup;AL|) + (T (SETQ |AbelianSemiGroup;AL| (|AbelianSemiGroup;|)))))) + +(DEFUN |AbelianSemiGroup;| NIL + (PROG (#1=#:G82566) + (RETURN + (PROG1 + (LETT #1# + (|Join| + (|SetCategory|) + (|mkCategory| + (QUOTE |domain|) + (QUOTE ( + ((|+| (|$| |$| |$|)) T) + ((|*| (|$| (|PositiveInteger|) |$|)) T))) + NIL + (QUOTE ((|PositiveInteger|))) + NIL)) + |AbelianSemiGroup|) + (SETELT #1# 0 (QUOTE (|AbelianSemiGroup|))))))) + +(MAKEPROP (QUOTE |AbelianSemiGroup|) (QUOTE NILADIC) T) +@ +\section{ABELSG-.lsp BOOTSTRAP} +{\bf ABELSG-} 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} which needs +{\bf ABELSG-}. +We break this chain with {\bf ABELSG-.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 ABELSG-} +category which we can write into the {\bf MID} directory. We compile +the lisp code and copy the {\bf ABELSG-.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 |ABELSG-;*;Pi2S;1| (|n| |x| |$|) (SPADCALL |n| |x| (QREFELT |$| 9))) + +(DEFUN |AbelianSemiGroup&| (|#1|) + (PROG (|DV$1| |dv$| |$| |pv$|) + (RETURN + (PROGN + (LETT |DV$1| (|devaluate| |#1|) . #1=(|AbelianSemiGroup&|)) + (LETT |dv$| (LIST (QUOTE |AbelianSemiGroup&|) |DV$1|) . #1#) + (LETT |$| (GETREFV 11) . #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 |$| 10 + (CONS (|dispatchFunction| |ABELSG-;*;Pi2S;1|) |$|)))) + |$|)))) + +(MAKEPROP + (QUOTE |AbelianSemiGroup&|) + (QUOTE |infovec|) + (LIST + (QUOTE + #(NIL NIL NIL NIL NIL NIL + (|local| |#1|) + (|PositiveInteger|) + (|RepeatedDoubling| 6) + (0 . |double|) + (6 . |*|))) + (QUOTE #(|*| 12)) + (QUOTE NIL) + (CONS + (|makeByteWordVec2| 1 (QUOTE NIL)) + (CONS + (QUOTE #()) + (CONS + (QUOTE #()) + (|makeByteWordVec2| 10 + (QUOTE (2 8 6 7 6 9 2 0 0 7 0 10 2 0 0 7 0 10)))))) + (QUOTE |lookupComplete|))) +@ \section{ALAGG.lsp BOOTSTRAP} {\bf ALAGG} 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 ALAGG} @@ -10747,6 +11106,132 @@ Note that this code is not included in the generated catdef.spad file. 0 0 7 0 14 2 0 0 0 7 13 2 0 0 0 0 10 2 0 0 0 7 15)))))) (QUOTE |lookupComplete|))) @ +\section{SETCAT.lsp BOOTSTRAP} +{\bf SETCAT} 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} which needs +{\bf ABELSG} which needs +{\bf SETCAT}. We break this chain with {\bf SETCAT.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 SETCAT} +category which we can write into the {\bf MID} directory. We compile +the lisp code and copy the {\bf SETCAT.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 |SetCategory;AL| (QUOTE NIL)) + +(DEFUN |SetCategory| NIL + (LET (#:G82359) + (COND + (|SetCategory;AL|) + (T (SETQ |SetCategory;AL| (|SetCategory;|)))))) + +(DEFUN |SetCategory;| NIL + (PROG (#1=#:G82357) + (RETURN + (PROG1 + (LETT #1# + (|sublisV| + (PAIR + (QUOTE (#2=#:G82356)) + (LIST (QUOTE (|OutputForm|)))) + (|Join| + (|BasicType|) + (|CoercibleTo| (QUOTE #2#)) + (|mkCategory| + (QUOTE |domain|) + (QUOTE ( + ((|hash| ((|SingleInteger|) |$|)) T) + ((|latex| ((|String|) |$|)) T))) + NIL + (QUOTE ((|String|) (|SingleInteger|))) + NIL))) + |SetCategory|) + (SETELT #1# 0 (QUOTE (|SetCategory|))))))) + +(MAKEPROP (QUOTE |SetCategory|) (QUOTE NILADIC) T) + +@ +\section{SETCAT-.lsp BOOTSTRAP} +{\bf SETCAT-} is the implementation of the operations exported +by {\bf SETCAT}. It comes into existance whenever {\bf SETCAT} +gets compiled by Axiom. However this will not happen at the +lisp level so we also cache this information here. See the +explanation under the {\bf SETCAT.lsp} section for more details. + +Note that this code is not included in the generated catdef.spad file. + +<>= + +(|/VERSIONCHECK| 2) + +(PUT + (QUOTE |SETCAT-;hash;SSi;1|) + (QUOTE |SPADreplace|) + (QUOTE (XLAM (|s|) 0))) + +(DEFUN |SETCAT-;hash;SSi;1| (|s| |$|) 0) + +(PUT + (QUOTE |SETCAT-;latex;SS;2|) + (QUOTE |SPADreplace|) + (QUOTE (XLAM (|s|) "\\mbox{\\bf Unimplemented}"))) + +(DEFUN |SETCAT-;latex;SS;2| (|s| |$|) + "\\mbox{\\bf Unimplemented}") + +(DEFUN |SetCategory&| (|#1|) + (PROG (|DV$1| |dv$| |$| |pv$|) + (RETURN + (PROGN + (LETT |DV$1| (|devaluate| |#1|) . #1=(|SetCategory&|)) + (LETT |dv$| (LIST (QUOTE |SetCategory&|) |DV$1|) . #1#) + (LETT |$| (GETREFV 11) . #1#) + (QSETREFV |$| 0 |dv$|) + (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #1#)) + (|stuffDomainSlots| |$|) + (QSETREFV |$| 6 |#1|) + |$|)))) + +(MAKEPROP + (QUOTE |SetCategory&|) + (QUOTE |infovec|) + (LIST + (QUOTE + #(NIL NIL NIL NIL NIL NIL + (|local| |#1|) + (|SingleInteger|) + |SETCAT-;hash;SSi;1| + (|String|) + |SETCAT-;latex;SS;2|)) + (QUOTE + #(|latex| 0 |hash| 5)) + (QUOTE NIL) + (CONS + (|makeByteWordVec2| 1 (QUOTE NIL)) + (CONS + (QUOTE #()) + (CONS + (QUOTE #()) + (|makeByteWordVec2| + 10 + (QUOTE (1 0 9 0 10 1 0 7 0 8)))))) + (QUOTE |lookupComplete|))) + +@ \section{STAGG.lsp BOOTSTRAP} {\bf STAGG} 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 STAGG} @@ -11895,9 +12380,11 @@ Note that this code is not included in the generated catdef.spad file. @ \chapter{Chunk collections} <>= +<> <> <> <> +<> <> <> <> @@ -11926,6 +12413,7 @@ Note that this code is not included in the generated catdef.spad file. <> <> <> +<> <> <> <> @@ -11939,11 +12427,14 @@ digraph dotabb { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"CATEGORY" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"CATEGORY" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=CATEGORY"]; +<> <> <> <> +<> <> <> <> @@ -11972,6 +12463,7 @@ digraph dotabb { <> <> <> +<> <> <> <> @@ -11988,11 +12480,14 @@ digraph dotfull { bgcolor="#FFFF66"; node [shape=box, color=white, style=filled]; -"Category" [color=lightblue,href="books/bookvol10.2.pamphlet"]; +"Category" + [color=lightblue,href="books/bookvol10.2.pamphlet#nameddest=CATEGORY"]; +<> <> <> <> +<> <> <> <> @@ -12021,6 +12516,7 @@ digraph dotfull { <> <> <> +<> <> <> <> diff --git a/books/ps/v102abeliansemigroup.ps b/books/ps/v102abeliansemigroup.ps new file mode 100644 index 0000000..c21f701 --- /dev/null +++ b/books/ps/v102abeliansemigroup.ps @@ -0,0 +1,677 @@ +%!PS-Adobe-2.0 +%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006) +%%For: (root) root +%%Title: pic +%%Pages: (atend) +%%BoundingBox: 36 36 530 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 530 368 +%%PageOrientation: Portrait +gsave +36 36 494 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 +492 330 lineto +492 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 330 lineto +492 330 lineto +492 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% AbelianSemiGroup() +[ /Rect [ 195 288 329 324 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet) >> + /Subtype /Link +/ANN pdfmark +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 329 324 moveto +195 324 lineto +195 288 lineto +329 288 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 329 324 moveto +195 324 lineto +195 288 lineto +329 288 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +202 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 +% SetCategory() +[ /Rect [ 117 216 211 252 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet) >> + /Subtype /Link +/ANN pdfmark +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(S:AbelianSemiGroup) +[ /Rect [ 236 216 486 252 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet) >> + /Subtype /Link +/ANN pdfmark +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 486 252 moveto +236 252 lineto +236 216 lineto +486 216 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 486 252 moveto +236 252 lineto +236 216 lineto +486 216 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +244 229 moveto +(RepeatedDoubling\(S: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 7.68 3.84 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(S:AbelianSemiGroup) +newpath 287 288 moveto +299 279 314 268 328 258 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 330 261 moveto +336 252 lineto +326 255 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 330 261 moveto +336 252 lineto +326 255 lineto +closepath +stroke +end grestore +% BasicType() +[ /Rect [ 0 72 84 108 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet) >> + /Subtype /Link +/ANN pdfmark +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) +[ /Rect [ 82 144 246 180 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet) >> + /Subtype /Link +/ANN pdfmark +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(S:SetCategory) +[ /Rect [ 264 144 474 180 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet) >> + /Subtype /Link +/ANN pdfmark +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 474 180 moveto +264 180 lineto +264 144 lineto +474 144 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 474 180 moveto +264 180 lineto +264 144 lineto +474 144 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +271 157 moveto +(RepeatedDoubling\(S: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 7.68 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(S:AbelianSemiGroup)->RepeatedDoubling(S:SetCategory) +newpath 363 216 moveto +364 208 365 199 366 190 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 369 190 moveto +367 180 lineto +363 190 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 369 190 moveto +367 180 lineto +363 190 lineto +closepath +stroke +end grestore +% Category +[ /Rect [ 71 0 139 36 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (books/bookvol10.pamphlet) >> + /Subtype /Link +/ANN pdfmark +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +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) +[ /Rect [ 102 72 234 108 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet) >> + /Subtype /Link +/ANN pdfmark +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 +[ /Rect [ 338 72 400 108 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet) >> + /Subtype /Link +/ANN pdfmark +gsave 10 dict begin +filled +0.333 1.000 0.933 nodecolor +0.333 1.000 0.933 nodecolor +newpath 400 108 moveto +338 108 lineto +338 72 lineto +400 72 lineto +closepath +fill +0.333 1.000 0.933 nodecolor +newpath 400 108 moveto +338 108 lineto +338 72 lineto +400 72 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +345 85 moveto +(Package) +[7.44 6.24 6 6.96 6.24 6.72 6.24] +xshow +end grestore +end grestore +% RepeatedDoubling(S:SetCategory)->Package +newpath 369 144 moveto +369 136 369 127 369 118 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 373 118 moveto +369 108 lineto +366 118 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 373 118 moveto +369 108 lineto +366 118 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102basictype.ps b/books/ps/v102basictype.ps new file mode 100644 index 0000000..87d2ee1 --- /dev/null +++ b/books/ps/v102basictype.ps @@ -0,0 +1,299 @@ +%!PS-Adobe-2.0 +%%Creator: dot version 2.8 (Thu Sep 14 20:34:11 UTC 2006) +%%For: (root) root +%%Title: pic +%%Pages: (atend) +%%BoundingBox: 36 36 128 152 +%%EndComments +save +%%BeginProlog +/DotDict 200 dict def +DotDict begin + +/setupLatin1 { +mark +/EncodingVector 256 array def + EncodingVector 0 + +ISOLatin1Encoding 0 255 getinterval putinterval +EncodingVector 45 /hyphen put + +% Set up ISO Latin 1 character encoding +/starnetISO { + dup dup findfont dup length dict begin + { 1 index /FID ne { def }{ pop pop } ifelse + } forall + /Encoding EncodingVector def + currentdict end definefont +} def +/Times-Roman starnetISO def +/Times-Italic starnetISO def +/Times-Bold starnetISO def +/Times-BoldItalic starnetISO def +/Helvetica starnetISO def +/Helvetica-Oblique starnetISO def +/Helvetica-Bold starnetISO def +/Helvetica-BoldOblique starnetISO def +/Courier starnetISO def +/Courier-Oblique starnetISO def +/Courier-Bold starnetISO def +/Courier-BoldOblique starnetISO def +cleartomark +} bind def + +%%BeginResource: procset graphviz 0 0 +/coord-font-family /Times-Roman def +/default-font-family /Times-Roman def +/coordfont coord-font-family findfont 8 scalefont def + +/InvScaleFactor 1.0 def +/set_scale { + dup 1 exch div /InvScaleFactor exch def + dup scale +} bind def + +% styles +/solid { [] 0 setdash } bind def +/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def +/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def +/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def +/bold { 2 setlinewidth } bind def +/filled { } bind def +/unfilled { } bind def +/rounded { } bind def +/diagonals { } bind def + +% hooks for setting color +/nodecolor { sethsbcolor } bind def +/edgecolor { sethsbcolor } bind def +/graphcolor { sethsbcolor } bind def +/nopcolor {pop pop pop} bind def + +/beginpage { % i j npages + /npages exch def + /j exch def + /i exch def + /str 10 string def + npages 1 gt { + gsave + coordfont setfont + 0 0 moveto + (\() show i str cvs show (,) show j str cvs show (\)) show + grestore + } if +} bind def + +/set_font { + findfont exch + scalefont setfont +} def + +% draw aligned label in bounding box aligned to current point +/alignedtext { % width adj text + /text exch def + /adj exch def + /width exch def + gsave + width 0 gt { + text stringwidth pop adj mul 0 rmoveto + } if + [] 0 setdash + text show + grestore +} def + +/boxprim { % xcorner ycorner xsize ysize + 4 2 roll + moveto + 2 copy + exch 0 rlineto + 0 exch rlineto + pop neg 0 rlineto + closepath +} bind def + +/ellipse_path { + /ry exch def + /rx exch def + /y exch def + /x exch def + matrix currentmatrix + newpath + x y translate + rx ry scale + 0 0 1 0 360 arc + setmatrix +} bind def + +/endpage { showpage } bind def +/showpage { } def + +/layercolorseq + [ % layer color sequence - darkest to lightest + [0 0 0] + [.2 .8 .8] + [.4 .8 .8] + [.6 .8 .8] + [.8 .8 .8] + ] +def + +/layerlen layercolorseq length def + +/setlayer {/maxlayer exch def /curlayer exch def + layercolorseq curlayer 1 sub layerlen mod get + aload pop sethsbcolor + /nodecolor {nopcolor} def + /edgecolor {nopcolor} def + /graphcolor {nopcolor} def +} bind def + +/onlayer { curlayer ne {invis} if } def + +/onlayers { + /myupper exch def + /mylower exch def + curlayer mylower lt + curlayer myupper gt + or + {invis} if +} def + +/curlayer 0 def + +%%EndResource +%%EndProlog +%%BeginSetup +14 default-font-family set_font +1 setmiterlimit +% /arrowlength 10 def +% /arrowwidth 5 def + +% make sure pdfmark is harmless for PS-interpreters other than Distiller +/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse +% make '<<' and '>>' safe on PS Level 1 devices +/languagelevel where {pop languagelevel}{1} ifelse +2 lt { + userdict (<<) cvn ([) cvn load put + userdict (>>) cvn ([) cvn load put +} if + +%%EndSetup +%%Page: 1 1 +%%PageBoundingBox: 36 36 128 152 +%%PageOrientation: Portrait +gsave +36 36 92 116 boxprim clip newpath +36 36 translate +0 0 1 beginpage +1.0000 set_scale +4 4 translate 0 rotate +0.167 0.600 1.000 graphcolor +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 114 lineto +90 114 lineto +90 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 114 lineto +90 114 lineto +90 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% BasicType() +[ /Rect [ 0 72 84 108 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet) >> + /Subtype /Link +/ANN pdfmark +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 +% Category +[ /Rect [ 8 0 76 36 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet) >> + /Subtype /Link +/ANN pdfmark +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +0.537 0.247 0.902 nodecolor +newpath 76 36 moveto +8 36 lineto +8 0 lineto +76 0 lineto +closepath +fill +0.537 0.247 0.902 nodecolor +newpath 76 36 moveto +8 36 lineto +8 0 lineto +76 0 lineto +closepath +stroke +gsave 10 dict begin +0.000 0.000 0.000 nodecolor +16 13 moveto +(Category) +[9.36 6.24 3.84 6.24 6.96 6.96 5.04 6.96] +xshow +end grestore +end grestore +% BasicType()->Category +newpath 42 72 moveto +42 64 42 55 42 46 curveto +stroke +gsave 10 dict begin +solid +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 46 46 moveto +42 36 lineto +39 46 lineto +closepath +fill +0.000 0.000 0.000 edgecolor +newpath 46 46 moveto +42 36 lineto +39 46 lineto +closepath +stroke +end grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +%%Pages: 1 +end +restore +%%EOF diff --git a/books/ps/v102setcategory.ps b/books/ps/v102setcategory.ps new file mode 100644 index 0000000..ba73fd5 --- /dev/null +++ b/books/ps/v102setcategory.ps @@ -0,0 +1,473 @@ +%!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 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 290 296 +%%PageOrientation: Portrait +gsave +36 36 254 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 +252 258 lineto +252 -6 lineto +closepath +fill +0.167 0.600 1.000 graphcolor +newpath -6 -6 moveto +-6 258 lineto +252 258 lineto +252 -6 lineto +closepath +stroke +0.000 0.000 0.000 graphcolor +14.00 /Times-Roman set_font +% SetCategory() +[ /Rect [ 58 216 152 252 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet) >> + /Subtype /Link +/ANN pdfmark +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 +% BasicType() +[ /Rect [ 0 72 84 108 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet) >> + /Subtype /Link +/ANN pdfmark +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) +[ /Rect [ 82 144 246 180 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet) >> + /Subtype /Link +/ANN pdfmark +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 +[ /Rect [ 71 0 139 36 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (books/bookvol10.pamphlet) >> + /Subtype /Link +/ANN pdfmark +gsave 10 dict begin +filled +0.537 0.247 0.902 nodecolor +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) +[ /Rect [ 102 72 234 108 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (books/bookvol10.2.pamphlet) >> + /Subtype /Link +/ANN pdfmark +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 c184379..74e0af1 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,9 @@ +20080917 tpd src/algebra/catdef.spad remove BASTYPE, SETCAT, ABELSG +20080917 tpd books/ps/v102abeliansemigroup.ps ABELSG graph +20080917 tpd books/ps/v102setcategory.ps SETCAT graph +20080917 tpd books/ps/v102basictype.ps BASTYPE graph +20080917 tpd books/bookvol10.2 add pdf destinations +20080917 tpd books/bookvol10.2 add BASTYPE, SETCAT, ABELSG 20080917 wsp src/algebra/mkfunc.spad add parse to InputForm 20080917 tpd books/bookvol10.2 remove duplicate function def in FLAGG 20080916 tpd books/ps/v102streamaggregate.ps diff --git a/src/algebra/catdef.spad.pamphlet b/src/algebra/catdef.spad.pamphlet index b16f4b2..bd42900 100644 --- a/src/algebra/catdef.spad.pamphlet +++ b/src/algebra/catdef.spad.pamphlet @@ -374,168 +374,11 @@ Note that this code is not included in the generated catdef.spad file. (QUOTE |lookupComplete|))) @ -\section{category ABELSG AbelianSemiGroup} -<>= -"ABELSG" -> "SETCAT" -"AbelianSemiGroup()" -> "SetCategory()" -@ -<>= -)abbrev category ABELSG AbelianSemiGroup -++ Author: -++ Date Created: -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: -++ Description: -++ the class of all additive (commutative) semigroups, i.e. -++ a set with a commutative and associative operation \spadop{+}. -++ -++ Axioms: -++ \spad{associative("+":(%,%)->%)}\tab{30}\spad{ (x+y)+z = x+(y+z) } -++ \spad{commutative("+":(%,%)->%)}\tab{30}\spad{ x+y = y+x } -AbelianSemiGroup(): Category == SetCategory with - --operations - "+": (%,%) -> % ++ x+y computes the sum of x and y. - "*": (PositiveInteger,%) -> % - ++ n*x computes the left-multiplication of x by the positive integer n. - ++ This is equivalent to adding x to itself n times. - add - import RepeatedDoubling(%) - if not (% has Ring) then - n:PositiveInteger * x:% == double(n,x) - -@ -\section{ABELSG.lsp BOOTSTRAP} -{\bf ABELSG} 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} which needs -{\bf ABELSG}. -We break this chain with {\bf ABELSG.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 ABELSG} -category which we can write into the {\bf MID} directory. We compile -the lisp code and copy the {\bf ABELSG.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 |AbelianSemiGroup;AL| (QUOTE NIL)) - -(DEFUN |AbelianSemiGroup| NIL - (LET (#:G82568) - (COND - (|AbelianSemiGroup;AL|) - (T (SETQ |AbelianSemiGroup;AL| (|AbelianSemiGroup;|)))))) - -(DEFUN |AbelianSemiGroup;| NIL - (PROG (#1=#:G82566) - (RETURN - (PROG1 - (LETT #1# - (|Join| - (|SetCategory|) - (|mkCategory| - (QUOTE |domain|) - (QUOTE ( - ((|+| (|$| |$| |$|)) T) - ((|*| (|$| (|PositiveInteger|) |$|)) T))) - NIL - (QUOTE ((|PositiveInteger|))) - NIL)) - |AbelianSemiGroup|) - (SETELT #1# 0 (QUOTE (|AbelianSemiGroup|))))))) - -(MAKEPROP (QUOTE |AbelianSemiGroup|) (QUOTE NILADIC) T) -@ -\section{ABELSG-.lsp BOOTSTRAP} -{\bf ABELSG-} 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} which needs -{\bf ABELSG-}. -We break this chain with {\bf ABELSG-.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 ABELSG-} -category which we can write into the {\bf MID} directory. We compile -the lisp code and copy the {\bf ABELSG-.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 |ABELSG-;*;Pi2S;1| (|n| |x| |$|) (SPADCALL |n| |x| (QREFELT |$| 9))) - -(DEFUN |AbelianSemiGroup&| (|#1|) - (PROG (|DV$1| |dv$| |$| |pv$|) - (RETURN - (PROGN - (LETT |DV$1| (|devaluate| |#1|) . #1=(|AbelianSemiGroup&|)) - (LETT |dv$| (LIST (QUOTE |AbelianSemiGroup&|) |DV$1|) . #1#) - (LETT |$| (GETREFV 11) . #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 |$| 10 - (CONS (|dispatchFunction| |ABELSG-;*;Pi2S;1|) |$|)))) - |$|)))) - -(MAKEPROP - (QUOTE |AbelianSemiGroup&|) - (QUOTE |infovec|) - (LIST - (QUOTE - #(NIL NIL NIL NIL NIL NIL - (|local| |#1|) - (|PositiveInteger|) - (|RepeatedDoubling| 6) - (0 . |double|) - (6 . |*|))) - (QUOTE #(|*| 12)) - (QUOTE NIL) - (CONS - (|makeByteWordVec2| 1 (QUOTE NIL)) - (CONS - (QUOTE #()) - (CONS - (QUOTE #()) - (|makeByteWordVec2| 10 - (QUOTE (2 8 6 7 6 9 2 0 0 7 0 10 2 0 0 7 0 10)))))) - (QUOTE |lookupComplete|))) -@ \section{category ALGEBRA Algebra} <>= "ALGEBRA" -> "RING" "Algebra(a:CommutativeRing)" -> "Ring()" +"Algebra(a:Field)" -> "Algebra(a:CommutativeRing)" "ALGEBRA" -> "MODULE" "Algebra(a:CommutativeRing)" -> "Module(a:CommutativeRing)" "Algebra(Fraction(Integer))" -> "Algebra(a:CommutativeRing)" @@ -569,33 +412,6 @@ Algebra(R:CommutativeRing): Category == coerce(x:R):% == x * 1$% @ -\section{category BASTYPE BasicType} -<>= -"BASTYPE" -> "CATEGORY" -"BasicType()" -> "Category" -@ -<>= -)abbrev category BASTYPE BasicType ---% BasicType -++ Author: -++ Date Created: -++ Date Last Updated: -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: -++ Description: -++ \spadtype{BasicType} is the basic category for describing a collection -++ of elements with \spadop{=} (equality). -BasicType(): Category == with - "=": (%,%) -> Boolean ++ x=y tests if x and y are equal. - "~=": (%,%) -> Boolean ++ x~=y tests if x and y are not equal. - add - _~_=(x:%,y:%) : Boolean == not(x=y) - -@ \section{category BMODULE BiModule} <>= "BMODULE" -> "LMODULE" @@ -2987,6 +2803,8 @@ LeftModule(R:Rng):Category == AbelianGroup with "LINEXP" -> "RING" "LinearlyExplicitRingOver(a:Ring)" -> "Ring()" "LinearlyExplicitRingOver(Integer)" -> "LinearlyExplicitRingOver(a:Ring)" +"LinearlyExplicitRingOver(Fraction(Integer))" -> + "LinearlyExplicitRingOver(a:Ring)" @ <>= )abbrev category LINEXP LinearlyExplicitRingOver @@ -4184,167 +4002,6 @@ SemiGroup(): Category == SetCategory with _^(x:%, n:PositiveInteger):% == x ** n @ -\section{category SETCAT SetCategory} -<>= -"SETCAT" -> "BASTYPE" -"SetCategory()" -> "BasicType()" -"SETCAT" -> "KOERCE" -"SetCategory()" -> "CoercibleTo(OutputForm)" -@ -<>= -)abbrev category SETCAT SetCategory -++ Author: -++ Date Created: -++ Date Last Updated: -++ 09/09/92 RSS added latex and hash -++ Basic Functions: -++ Related Constructors: -++ Also See: -++ AMS Classifications: -++ Keywords: -++ References: -++ Description: -++ \spadtype{SetCategory} is the basic category for describing a collection -++ of elements with \spadop{=} (equality) and \spadfun{coerce} to output form. -++ -++ Conditional Attributes: -++ canonical\tab{15}data structure equality is the same as \spadop{=} -SetCategory(): Category == Join(BasicType,CoercibleTo OutputForm) with - --operations - hash: % -> SingleInteger ++ hash(s) calculates a hash code for s. - latex: % -> String ++ latex(s) returns a LaTeX-printable output - ++ representation of s. - add - hash(s : %): SingleInteger == 0$SingleInteger - latex(s : %): String == "\mbox{\bf Unimplemented}" - -@ -\section{SETCAT.lsp BOOTSTRAP} -{\bf SETCAT} 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} which needs -{\bf ABELSG} which needs -{\bf SETCAT}. We break this chain with {\bf SETCAT.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 SETCAT} -category which we can write into the {\bf MID} directory. We compile -the lisp code and copy the {\bf SETCAT.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 |SetCategory;AL| (QUOTE NIL)) - -(DEFUN |SetCategory| NIL - (LET (#:G82359) - (COND - (|SetCategory;AL|) - (T (SETQ |SetCategory;AL| (|SetCategory;|)))))) - -(DEFUN |SetCategory;| NIL - (PROG (#1=#:G82357) - (RETURN - (PROG1 - (LETT #1# - (|sublisV| - (PAIR - (QUOTE (#2=#:G82356)) - (LIST (QUOTE (|OutputForm|)))) - (|Join| - (|BasicType|) - (|CoercibleTo| (QUOTE #2#)) - (|mkCategory| - (QUOTE |domain|) - (QUOTE ( - ((|hash| ((|SingleInteger|) |$|)) T) - ((|latex| ((|String|) |$|)) T))) - NIL - (QUOTE ((|String|) (|SingleInteger|))) - NIL))) - |SetCategory|) - (SETELT #1# 0 (QUOTE (|SetCategory|))))))) - -(MAKEPROP (QUOTE |SetCategory|) (QUOTE NILADIC) T) - -@ -\section{SETCAT-.lsp BOOTSTRAP} -{\bf SETCAT-} is the implementation of the operations exported -by {\bf SETCAT}. It comes into existance whenever {\bf SETCAT} -gets compiled by Axiom. However this will not happen at the -lisp level so we also cache this information here. See the -explanation under the {\bf SETCAT.lsp} section for more details. - -Note that this code is not included in the generated catdef.spad file. - -<>= - -(|/VERSIONCHECK| 2) - -(PUT - (QUOTE |SETCAT-;hash;SSi;1|) - (QUOTE |SPADreplace|) - (QUOTE (XLAM (|s|) 0))) - -(DEFUN |SETCAT-;hash;SSi;1| (|s| |$|) 0) - -(PUT - (QUOTE |SETCAT-;latex;SS;2|) - (QUOTE |SPADreplace|) - (QUOTE (XLAM (|s|) "\\mbox{\\bf Unimplemented}"))) - -(DEFUN |SETCAT-;latex;SS;2| (|s| |$|) - "\\mbox{\\bf Unimplemented}") - -(DEFUN |SetCategory&| (|#1|) - (PROG (|DV$1| |dv$| |$| |pv$|) - (RETURN - (PROGN - (LETT |DV$1| (|devaluate| |#1|) . #1=(|SetCategory&|)) - (LETT |dv$| (LIST (QUOTE |SetCategory&|) |DV$1|) . #1#) - (LETT |$| (GETREFV 11) . #1#) - (QSETREFV |$| 0 |dv$|) - (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #1#)) - (|stuffDomainSlots| |$|) - (QSETREFV |$| 6 |#1|) - |$|)))) - -(MAKEPROP - (QUOTE |SetCategory&|) - (QUOTE |infovec|) - (LIST - (QUOTE - #(NIL NIL NIL NIL NIL NIL - (|local| |#1|) - (|SingleInteger|) - |SETCAT-;hash;SSi;1| - (|String|) - |SETCAT-;latex;SS;2|)) - (QUOTE - #(|latex| 0 |hash| 5)) - (QUOTE NIL) - (CONS - (|makeByteWordVec2| 1 (QUOTE NIL)) - (CONS - (QUOTE #()) - (CONS - (QUOTE #()) - (|makeByteWordVec2| - 10 - (QUOTE (1 0 9 0 10 1 0 7 0 8)))))) - (QUOTE |lookupComplete|))) - -@ \section{category STEP StepThrough} <>= "STEP" -> "SETCAT" @@ -4664,13 +4321,10 @@ VectorSpace(S:Field): Category == Module(S) with <<*>>= <> -<> -<> <> <> <> <> -<> <> <> <>