diff --git a/books/bookvol10.3.pamphlet b/books/bookvol10.3.pamphlet index 80207f1..97d6d81 100644 --- a/books/bookvol10.3.pamphlet +++ b/books/bookvol10.3.pamphlet @@ -52041,17 +52041,23 @@ GraphImage (): Exports == Implementation where --R --R------------------------------- Operations -------------------------------- --R ?=? : (%,%) -> Boolean allDegrees : Boolean -> % ---R checkOptions : List % -> Void coerce : % -> OutputForm +--R checkExtraValues : Boolean -> % coerce : % -> OutputForm --R debug : Boolean -> % displayAsGF : Boolean -> % --R functionName : Symbol -> % hash : % -> SingleInteger ---R homogeneous : Boolean -> % indexName : Symbol -> % ---R latex : % -> String maxDegree : Integer -> % ---R maxDerivative : Integer -> % maxLevel : Integer -> % ---R maxPower : Integer -> % maxShift : Integer -> % +--R indexName : Symbol -> % latex : % -> String --R one : Boolean -> % safety : NonNegativeInteger -> % --R variableName : Symbol -> % ?~=? : (%,%) -> Boolean +--R Somos : Union(PositiveInteger,Boolean) -> % +--R check : Union(skip,MonteCarlo,deterministic) -> % +--R homogeneous : Union(PositiveInteger,Boolean) -> % +--R maxDegree : Union(NonNegativeInteger,arbitrary) -> % +--R maxDerivative : Union(NonNegativeInteger,arbitrary) -> % +--R maxLevel : Union(NonNegativeInteger,arbitrary) -> % +--R maxMixedDegree : NonNegativeInteger -> % +--R maxPower : Union(PositiveInteger,arbitrary) -> % +--R maxShift : Union(NonNegativeInteger,arbitrary) -> % +--R maxSubst : Union(PositiveInteger,arbitrary) -> % --R option : (List %,Symbol) -> Union(Any,"failed") ---R option? : (List %,Symbol) -> Boolean --R --E 1 @@ -52073,78 +52079,96 @@ o )show GuessOption {\bf Exports:}\\ \begin{tabular}{lllll} +\cross{GOPT}{?=?} & +\cross{GOPT}{?\~{}=?} & +\cross{GOPT}{Somos} & \cross{GOPT}{allDegrees} & -\cross{GOPT}{checkOptions} & +\cross{GOPT}{check} \\ +\cross{GOPT}{checkExtraValues} & \cross{GOPT}{coerce} & \cross{GOPT}{debug} & -\cross{GOPT}{displayAsGF} \\ -\cross{GOPT}{functionName} & +\cross{GOPT}{displayAsGF} & +\cross{GOPT}{functionName} \\ \cross{GOPT}{hash} & \cross{GOPT}{homogeneous} & \cross{GOPT}{indexName} & -\cross{GOPT}{latex} \\ -\cross{GOPT}{maxDegree} & +\cross{GOPT}{latex} & +\cross{GOPT}{maxDegree} \\ \cross{GOPT}{maxDerivative} & \cross{GOPT}{maxLevel} & +\cross{GOPT}{maxMixedDegree} & \cross{GOPT}{maxPower} & \cross{GOPT}{maxShift} \\ +\cross{GOPT}{maxSubst} & \cross{GOPT}{one} & \cross{GOPT}{option} & -\cross{GOPT}{option?} & \cross{GOPT}{safety} & -\cross{GOPT}{variableName} \\ -\cross{GOPT}{?\~{}=?} & -\cross{GOPT}{?=?} &&& +\cross{GOPT}{variableName} \end{tabular} <>= )abbrev domain GOPT GuessOption ++ Author: Martin Rubey -++ Description: -++ GuessOption is a domain whose elements are various options used +++ Description: GuessOption is a domain whose elements are various options used ++ by \spadtype{Guess}. - -GuessOption(): Exports == Implementation where +GuessOption(): Exports == Implementation where Exports == SetCategory with - maxDerivative: Integer -> % + maxDerivative: Union(NonNegativeInteger, "arbitrary") -> % ++ maxDerivative(d) specifies the maximum derivative in an algebraic - ++ differential equation. maxDerivative(-1) specifies that the maximum - ++ derivative can be arbitrary. This option is expressed in the form + ++ differential equation. This option is expressed in the form ++ \spad{maxDerivative == d}. - maxShift: Integer -> % + maxShift: Union(NonNegativeInteger, "arbitrary") -> % ++ maxShift(d) specifies the maximum shift in a recurrence - ++ equation. maxShift(-1) specifies that the maximum shift can be - ++ arbitrary. This option is expressed in the form \spad{maxShift == d}. + ++ equation. This option is expressed in the form \spad{maxShift == d}. + + maxSubst: Union(PositiveInteger, "arbitrary") -> % + ++ maxSubst(d) specifies the maximum degree of the monomial substituted + ++ into the function we are looking for. That is, if \spad{maxSubst == + ++ d}, we look for polynomials such that $p(f(x), f(x^2), ..., + ++ f(x^d))=0$. equation. This option is expressed in the form + ++ \spad{maxSubst == d}. - maxPower: Integer -> % + maxPower: Union(PositiveInteger, "arbitrary") -> % ++ maxPower(d) specifies the maximum degree in an algebraic differential ++ equation. For example, the degree of (f'')^3 f' is 4. maxPower(-1) ++ specifies that the maximum exponent can be arbitrary. This option is ++ expressed in the form \spad{maxPower == d}. - homogeneous: Boolean -> % + homogeneous: Union(PositiveInteger, Boolean) -> % ++ homogeneous(d) specifies whether we allow only homogeneous algebraic - ++ differential equations. This option is expressed in the form - ++ \spad{homogeneous == d}. - - maxLevel: Integer -> % + ++ differential equations. This option is expressed in the form + ++ \spad{homogeneous == d}. If true, then maxPower must be + ++ set, too, and ADEs with constant total degree are allowed. + ++ If a PositiveInteger is given, only ADE's with this total degree are + ++ allowed. + + Somos: Union(PositiveInteger, Boolean) -> % + ++ Somos(d) specifies whether we want that the total degree of the + ++ differential operators is constant, and equal to d, or maxDerivative + ++ if true. If true, maxDerivative must be set, too. + + maxLevel: Union(NonNegativeInteger, "arbitrary") -> % ++ maxLevel(d) specifies the maximum number of recursion levels operators - ++ guessProduct and guessSum will be applied. maxLevel(-1) specifies - ++ that all levels are tried. This option is expressed in the form - ++ \spad{maxLevel == d}. + ++ guessProduct and guessSum will be applied. This option is expressed in + ++ the form spad{maxLevel == d}. - maxDegree: Integer -> % + maxDegree: Union(NonNegativeInteger, "arbitrary") -> % ++ maxDegree(d) specifies the maximum degree of the coefficient ++ polynomials in an algebraic differential equation or a recursion with ++ polynomial coefficients. For rational functions with an exponential ++ term, \spad{maxDegree} bounds the degree of the denominator - ++ polynomial. - ++ maxDegree(-1) specifies that the maximum - ++ degree can be arbitrary. This option is expressed in the form - ++ \spad{maxDegree == d}. + ++ polynomial. + ++ This option is expressed in the form \spad{maxDegree == d}. + + maxMixedDegree: NonNegativeInteger -> % + ++ maxMixedDegree(d) specifies the maximum q-degree of the coefficient + ++ polynomials in a recurrence with polynomial coefficients, in the case + ++ of mixed shifts. Although slightly inconsistent, maxMixedDegree(0) + ++ specifies that no mixed shifts are allowed. This option is expressed + ++ in the form \spad{maxMixedDegree == d}. allDegrees: Boolean -> % ++ allDegrees(d) specifies whether all possibilities of the degree vector @@ -52157,6 +52181,18 @@ GuessOption(): Exports == Implementation where ++ solutions found. This option is expressed in the form \spad{safety == ++ d}. + check: Union("skip", "MonteCarlo", "deterministic") -> % + ++ check(d) specifies how we want to check the solution. If + ++ the value is "skip", we return the solutions found by the + ++ interpolation routine without checking. If the value is + ++ "MonteCarlo", we use a probabilistic check. This option is + ++ expressed in the form \spad{check == d} + + checkExtraValues: Boolean -> % + ++ checkExtraValues(d) specifies whether we want to check the + ++ solution beyond the order given by the degree bounds. This + ++ option is expressed in the form \spad{checkExtraValues == d} + one: Boolean -> % ++ one(d) specifies whether we are happy with one solution. This option ++ is expressed in the form \spad{one == d}. @@ -52185,61 +52221,50 @@ GuessOption(): Exports == Implementation where ++ by the HP-specification. option : (List %, Symbol) -> Union(Any, "failed") - ++ option() is not to be used at the top level; - ++ option determines internally which drawing options are indicated in - ++ a draw command. - - option?: (List %, Symbol) -> Boolean - ++ option?() is not to be used at the top level; - ++ option? internally returns true for drawing options which are - ++ indicated in a draw command, or false for those which are not. - - checkOptions: List % -> Void - ++ checkOptions checks whether an option is given twice + ++ option(l, option) returns which options are given. Implementation ==> add import AnyFunctions1(Boolean) import AnyFunctions1(Symbol) - import AnyFunctions1(Integer) import AnyFunctions1(NonNegativeInteger) + import AnyFunctions1(Union(NonNegativeInteger, "arbitrary")) + import AnyFunctions1(Union(PositiveInteger, "arbitrary")) + import AnyFunctions1(Union(PositiveInteger, Boolean)) + import AnyFunctions1(Union("skip", "MonteCarlo", "deterministic")) Rep := Record(keyword: Symbol, value: Any) - maxLevel d == ["maxLevel"::Symbol, d::Any] - maxDerivative d == ["maxDerivative"::Symbol, d::Any] - maxShift d == maxDerivative d - maxDegree d == ["maxDegree"::Symbol, d::Any] - allDegrees d == ["allDegrees"::Symbol, d::Any] - maxPower d == ["maxPower"::Symbol, d::Any] - safety d == ["safety"::Symbol, d::Any] - homogeneous d == ["homogeneous"::Symbol, d::Any] - debug d == ["debug"::Symbol, d::Any] - one d == ["one"::Symbol, d::Any] - functionName d == ["functionName"::Symbol, d::Any] - variableName d == ["variableName"::Symbol, d::Any] - indexName d == ["indexName"::Symbol, d::Any] - displayAsGF d == ["displayAsGF"::Symbol, d::Any] + maxLevel d == ['maxLevel, d::Any] + maxDerivative d == ['maxDerivative, d::Any] + maxShift d == maxDerivative d + maxSubst d == + if d case PositiveInteger + then maxDerivative((d::Integer-1)::NonNegativeInteger) + else maxDerivative d + maxDegree d == ['maxDegree, d::Any] + maxMixedDegree d == ['maxMixedDegree, d::Any] + allDegrees d == ['allDegrees, d::Any] + maxPower d == ['maxPower, d::Any] + safety d == ['safety, d::Any] + homogeneous d == ['homogeneous, d::Any] + Somos d == ['Somos, d::Any] + debug d == ['debug, d::Any] + check d == ['check, d::Any] + checkExtraValues d == ['checkExtraValues, d::Any] + one d == ['one, d::Any] + functionName d == ['functionName, d::Any] + variableName d == ['variableName, d::Any] + indexName d == ['indexName, d::Any] + displayAsGF d == ['displayAsGF, d::Any] coerce(x:%):OutputForm == x.keyword::OutputForm = x.value::OutputForm x:% = y:% == x.keyword = y.keyword and x.value = y.value - option?(l, s) == - for x in l repeat - x.keyword = s => return true - false - option(l, s) == for x in l repeat x.keyword = s => return(x.value) "failed" - checkOptions l == - if not empty? l then - if find((z1:%):Boolean +-> (first l).keyword = z1.keyword, rest l)_ - case "failed" - then checkOptions rest l - else error "GuessOption: Option specified twice" - @ <>= "GOPT" [color="#88FF44",href="bookvol10.3.pdf#nameddest=GOPT"] @@ -52248,6 +52273,363 @@ GuessOption(): Exports == Implementation where @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{domain GOPT0 GuessOptionFunctions0} + +<>= +)set break resume +)sys rm -f GuessOptionFunctions0.output +)spool GuessOptionFunctions0.output +)set message test on +)set message auto off +)clear all + +--S 1 of 1 +)show GuessOptionFunctions0 +--R GuessOptionFunctions0 is a domain constructor +--R Abbreviation for GuessOptionFunctions0 is GOPT0 +--R This constructor is not exposed in this frame. +--R------------------------------- Operations -------------------------------- +--R ?=? : (%,%) -> Boolean coerce : % -> OutputForm +--R hash : % -> SingleInteger latex : % -> String +--R one : List(GuessOption) -> Boolean ?~=? : (%,%) -> Boolean +--R MonteCarlo : List(GuessOption) -> Boolean +--R Somos : List(GuessOption) -> Union(PositiveInteger,Boolean) +--R allDegrees : List(GuessOption) -> Boolean +--R check : List(GuessOption) -> Boolean +--R checkOptions : List(GuessOption) -> Void +--R debug : List(GuessOption) -> Boolean +--R displayAsGF : List(GuessOption) -> Boolean +--R functionName : List(GuessOption) -> Symbol +--R homogeneous : List(GuessOption) -> Union(PositiveInteger,Boolean) +--R indexName : List(GuessOption) -> Symbol +--R maxDegree : List(GuessOption) -> Union(NonNegativeInteger,arbitrary) +--R maxDerivative : List(GuessOption) -> Union(NonNegativeInteger,arbitrary) +--R maxLevel : List(GuessOption) -> Union(NonNegativeInteger,arbitrary) +--R maxMixedDegree : List(GuessOption) -> NonNegativeInteger +--R maxPower : List(GuessOption) -> Union(PositiveInteger,arbitrary) +--R maxShift : List(GuessOption) -> Union(NonNegativeInteger,arbitrary) +--R maxSubst : List(GuessOption) -> Union(PositiveInteger,arbitrary) +--R safety : List(GuessOption) -> NonNegativeInteger +--R variableName : List(GuessOption) -> Symbol +--R +--E 1 + +)spool +)lisp (bye) +@ +<>= +==================================================================== +GuessOptionFunctions0 examples +==================================================================== + +See Also: +o )show GuessOptionFunctions0 + +@ +\pagehead{GuessOptionFunctions0}{GOPT0} +\pagepic{ps/v103guessoptionfunctions0.eps}{GOPT0}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{GOPT0}{?=?} & +\cross{GOPT0}{?\~{}=?} & +\cross{GOPT0}{MonteCarlo} & +\cross{GOPT0}{Somos} & +\cross{GOPT0}{allDegrees} \\ +\cross{GOPT0}{check} & +\cross{GOPT0}{checkOptions} & +\cross{GOPT0}{coerce} & +\cross{GOPT0}{debug} & +\cross{GOPT0}{displayAsGF} \\ +\cross{GOPT0}{functionName} & +\cross{GOPT0}{hash} & +\cross{GOPT0}{homogeneous} & +\cross{GOPT0}{indexName} & +\cross{GOPT0}{latex} \\ +\cross{GOPT0}{maxDegree} & +\cross{GOPT0}{maxDerivative} & +\cross{GOPT0}{maxLevel} & +\cross{GOPT0}{maxMixedDegree} & +\cross{GOPT0}{maxPower} \\ +\cross{GOPT0}{maxShift} & +\cross{GOPT0}{maxSubst} & +\cross{GOPT0}{one} & +\cross{GOPT0}{safety} & +\cross{GOPT0}{variableName} +\end{tabular} + +<>= +)abbrev domain GOPT0 GuessOptionFunctions0 +++ Author: Martin Rubey +++ Description: +++ GuessOptionFunctions0 provides operations that extract the +++ values of options for Guess. +GuessOptionFunctions0(): Exports == Implementation where + + LGOPT ==> List GuessOption + + Exports == SetCategory with + + maxDerivative: LGOPT -> Union(NonNegativeInteger, "arbitrary") + ++ maxDerivative returns the specified maxDerivative. + + maxShift: LGOPT -> Union(NonNegativeInteger, "arbitrary") + ++ maxShift returns the specified maxShift. + + maxSubst: LGOPT -> Union(PositiveInteger, "arbitrary") + ++ maxSubst returns the specified maxSubst. + + maxPower: LGOPT -> Union(PositiveInteger, "arbitrary") + ++ maxPower returns the specified maxPower. + + homogeneous: LGOPT -> Union(PositiveInteger, Boolean) + ++ homogeneous returns whether we allow only homogeneous algebraic + ++ differential equations, default being false + + Somos: LGOPT -> Union(PositiveInteger, Boolean) + ++ Somos returns whether we allow only Somos-like operators, default + ++ being false + + maxLevel: LGOPT -> Union(NonNegativeInteger, "arbitrary") + ++ maxLevel returns the specified maxLevel. + + maxDegree: LGOPT -> Union(NonNegativeInteger, "arbitrary") + ++ maxDegree returns the specified maxDegree. + + maxMixedDegree: LGOPT -> NonNegativeInteger + ++ maxMixedDegree returns the specified maxMixedDegree. + + allDegrees: LGOPT -> Boolean + ++ allDegrees returns whether all possibilities of the degree vector + ++ should be tried, the default being false. + + safety: LGOPT -> NonNegativeInteger + ++ safety returns the specified safety or 1 as default. + + check: LGOPT -> Union("skip", "MonteCarlo", "deterministic") + ++ check(d) specifies how we want to check the solution. If + ++ the value is "skip", we return the solutions found by the + ++ interpolation routine without checking. If the value is + ++ "MonteCarlo", we use a probabilistic check. The default is + ++ "deterministic". + + checkExtraValues: LGOPT -> Boolean + ++ checkExtraValues(d) specifies whether we want to check the + ++ solution beyond the order given by the degree bounds. The + ++ default is true. + + one: LGOPT -> Boolean + ++ one returns whether we need only one solution, default being true. + + functionName: LGOPT -> Symbol + ++ functionName returns the name of the function given by the algebraic + ++ differential equation, default being f + + variableName: LGOPT -> Symbol + ++ variableName returns the name of the variable used in by the + ++ algebraic differential equation, default being x + + indexName: LGOPT -> Symbol + ++ indexName returns the name of the index variable used for the + ++ formulas, default being n + + displayAsGF: LGOPT -> Boolean + ++ displayAsGF specifies whether the result is a generating function + ++ or a recurrence. This option should not be set by the user, but rather + ++ by the HP-specification, therefore, there is no default. + + debug: LGOPT -> Boolean + ++ debug returns whether we want additional output on the progress, + ++ default being false + + checkOptions: LGOPT -> Void + ++ checkOptions checks whether the given options are consistent, and + ++ yields an error otherwise + + Implementation == add + + maxLevel l == + if (opt := option(l, 'maxLevel)) case "failed" then + "arbitrary" + else + retract(opt::Any)$AnyFunctions1(Union(NonNegativeInteger, "arbitrary")) + + maxDerivative l == + if (opt := option(l, 'maxDerivative)) case "failed" then + "arbitrary" + else + retract(opt::Any)$AnyFunctions1(Union(NonNegativeInteger, "arbitrary")) + + maxShift l == maxDerivative l + + maxSubst l == + d := maxDerivative l + if d case NonNegativeInteger + then (d+1)::PositiveInteger + else d + + maxDegree l == + if (opt := option(l, 'maxDegree)) case "failed" then + "arbitrary" + else + retract(opt::Any)$AnyFunctions1(Union(NonNegativeInteger, "arbitrary")) + + maxMixedDegree l == + if (opt := option(l, 'maxMixedDegree)) case "failed" then + 0 + else + retract(opt :: Any)$AnyFunctions1(NonNegativeInteger) + + allDegrees l == + if (opt := option(l, 'allDegrees)) case "failed" then + false + else + retract(opt :: Any)$AnyFunctions1(Boolean) + + maxPower l == + if (opt := option(l, 'maxPower)) case "failed" then + "arbitrary" + else + retract(opt :: Any)$AnyFunctions1(Union(PositiveInteger, "arbitrary")) + + safety l == + if (opt := option(l, 'safety)) case "failed" then + 1$NonNegativeInteger + else + retract(opt :: Any)$AnyFunctions1(NonNegativeInteger) + + check l == + if (opt := option(l, 'check)) case "failed" then + "deterministic" + else + retract(opt::Any)$AnyFunctions1(_ + Union("skip", "MonteCarlo", "deterministic")) + + checkExtraValues l == + if (opt := option(l, 'checkExtraValues)) case "failed" then + true + else + retract(opt :: Any)$AnyFunctions1(Boolean) + + one l == + if (opt := option(l, 'one)) case "failed" then + true + else + retract(opt :: Any)$AnyFunctions1(Boolean) + + debug l == + if (opt := option(l, 'debug)) case "failed" then + false + else + retract(opt :: Any)$AnyFunctions1(Boolean) + + homogeneous l == + if (opt := option(l, 'homogeneous)) case "failed" then + false + else + retract(opt :: Any)$AnyFunctions1(Union(PositiveInteger, Boolean)) + + Somos l == + if (opt := option(l, 'Somos)) case "failed" then + false + else + retract(opt :: Any)$AnyFunctions1(Union(PositiveInteger, Boolean)) + + variableName l == + if (opt := option(l, 'variableName)) case "failed" then + 'x + else + retract(opt :: Any)$AnyFunctions1(Symbol) + + functionName l == + if (opt := option(l, 'functionName)) case "failed" then + 'f + else + retract(opt :: Any)$AnyFunctions1(Symbol) + + indexName l == + if (opt := option(l, 'indexName)) case "failed" then + 'n + else + retract(opt :: Any)$AnyFunctions1(Symbol) + + displayAsGF l == + if (opt := option(l, 'displayAsGF)) case "failed" then + error "GuessOption: displayAsGF not set" + else + retract(opt :: Any)$AnyFunctions1(Boolean) + + NNI ==> NonNegativeInteger + PI ==> PositiveInteger + + checkOptions l == + maxD := maxDerivative l + maxP := maxPower l + homo := homogeneous l + Somo := Somos l + + if Somo case PI then + if one? Somo then + error "Guess: Somos must be Boolean or at least two" + + if maxP case PI and one? maxP then + error "Guess: Somos requires that maxPower is at least two" + + if maxD case NNI and maxD > Somo then + err:String:=concat [_ + "Guess: if Somos is an integer, it should be larger than ",_ + "maxDerivative/maxShift or at least as big as maxSubst" ] + error err + else + if Somo then + if maxP case PI and one? maxP then + error "Guess: Somos requires that maxPower is at least two" + + if not (maxD case NNI) or zero? maxD or one? maxD then + err:String:= concat [_ + "Guess: Somos==true requires that maxDerivative/maxShift",_ + " is an integer, at least two, or maxSubst is an ",_ + "integer, at least three" ] + error err + + if not (maxP case PI) and homo case Boolean and not homo then + err:String:= concat [_ + "Guess: Somos requires that maxPower is set or ", _ + "homogeneous is not false" ] + error err + + if homo case PI then + if maxP case PI and maxP ~= homo then + err:String:= _ + "Guess: only one of homogeneous and maxPower may be an integer" + error err + + if maxD case NNI and zero? maxD then + err:String:= concat [_ + "Guess: homogeneous requires that maxShift/maxDerivative ",_ + "is at least one or maxSubst is at least two" ] + error err + else + if homo then + if not maxP case PI then + err:String:= concat [_ + "Guess: homogeneous==true requires that maxPower is ", _ + "an integer" ] + error err + + if maxD case NNI and zero? maxD then + err:String:= concat [_ + "Guess: homogeneous requires that maxShift/maxDerivative",_ + " is at least one or maxSubst is at least two" ] + error err +@ +<>= +"GOPT0" [color="#88FF44",href="bookvol10.3.pdf#nameddest=GOPT0"] +"STRING" [color="#88FF44",href="bookvol10.3.pdf#nameddest=STRING"] +"GOPT0" -> "STRING" + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Chapter H} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{domain HASHTBL HashTable} @@ -139908,6 +140290,217 @@ UniversalSegment(S: Type): SegmentCategory(S) with @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{domain U32VEC U32Vector} + +<>= +)set break resume +)sys rm -f U32Vector.output +)spool U32Vector.output +)set message test on +)set message auto off +)clear all + +--S 1 of 1 +)show U32Vector +--R U32Vector is a domain constructor +--R Abbreviation for U32Vector is U32VEC +--R This constructor is exposed in this frame. +--R Issue )edit bookvol10.3.pamphlet to see algebra source code for U32VEC +--R +--R------------------------------- Operations -------------------------------- +--R concat : List % -> % concat : (%,%) -> % +--R concat : (Integer,%) -> % concat : (%,Integer) -> % +--R construct : List Integer -> % copy : % -> % +--R delete : (%,Integer) -> % ?.? : (%,Integer) -> Integer +--R empty : () -> % empty? : % -> Boolean +--R entries : % -> List Integer eq? : (%,%) -> Boolean +--R index? : (Integer,%) -> Boolean indices : % -> List Integer +--R insert : (%,%,Integer) -> % qelt : (%,Integer) -> Integer +--R reverse : % -> % sample : () -> % +--R #? : % -> NonNegativeInteger if $ has finiteAggregate +--R ? Boolean if Integer has ORDSET +--R ?<=? : (%,%) -> Boolean if Integer has ORDSET +--R ?=? : (%,%) -> Boolean if Integer has SETCAT +--R ?>? : (%,%) -> Boolean if Integer has ORDSET +--R ?>=? : (%,%) -> Boolean if Integer has ORDSET +--R any? : ((Integer -> Boolean),%) -> Boolean if $ has finiteAggregate +--R coerce : % -> OutputForm if Integer has SETCAT +--R convert : % -> InputForm if Integer has KONVERT INFORM +--R copyInto! : (%,%,Integer) -> % if $ has shallowlyMutable +--R count : (Integer,%) -> NonNegativeInteger if $ has finiteAggregate and Integer has SETCAT +--R count : ((Integer -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate +--R delete : (%,UniversalSegment Integer) -> % +--R ?.? : (%,UniversalSegment Integer) -> % +--R elt : (%,Integer,Integer) -> Integer +--R entry? : (Integer,%) -> Boolean if $ has finiteAggregate and Integer has SETCAT +--R eval : (%,List Integer,List Integer) -> % if Integer has EVALAB INT and Integer has SETCAT +--R eval : (%,Integer,Integer) -> % if Integer has EVALAB INT and Integer has SETCAT +--R eval : (%,Equation Integer) -> % if Integer has EVALAB INT and Integer has SETCAT +--R eval : (%,List Equation Integer) -> % if Integer has EVALAB INT and Integer has SETCAT +--R every? : ((Integer -> Boolean),%) -> Boolean if $ has finiteAggregate +--R fill! : (%,Integer) -> % if $ has shallowlyMutable +--R find : ((Integer -> Boolean),%) -> Union(Integer,"failed") +--R first : % -> Integer if Integer has ORDSET +--R hash : % -> SingleInteger if Integer has SETCAT +--R insert : (Integer,%,Integer) -> % +--R latex : % -> String if Integer has SETCAT +--R less? : (%,NonNegativeInteger) -> Boolean +--R map : (((Integer,Integer) -> Integer),%,%) -> % +--R map : ((Integer -> Integer),%) -> % +--R map! : ((Integer -> Integer),%) -> % if $ has shallowlyMutable +--R max : (%,%) -> % if Integer has ORDSET +--R maxIndex : % -> Integer if Integer has ORDSET +--R member? : (Integer,%) -> Boolean if $ has finiteAggregate and Integer has SETCAT +--R members : % -> List Integer if $ has finiteAggregate +--R merge : (%,%) -> % if Integer has ORDSET +--R merge : (((Integer,Integer) -> Boolean),%,%) -> % +--R min : (%,%) -> % if Integer has ORDSET +--R minIndex : % -> Integer if Integer has ORDSET +--R more? : (%,NonNegativeInteger) -> Boolean +--R new : (NonNegativeInteger,Integer) -> % +--R parts : % -> List Integer if $ has finiteAggregate +--R position : (Integer,%,Integer) -> Integer if Integer has SETCAT +--R position : (Integer,%) -> Integer if Integer has SETCAT +--R position : ((Integer -> Boolean),%) -> Integer +--R qsetelt! : (%,Integer,Integer) -> Integer if $ has shallowlyMutable +--R reduce : (((Integer,Integer) -> Integer),%) -> Integer if $ has finiteAggregate +--R reduce : (((Integer,Integer) -> Integer),%,Integer) -> Integer if $ has finiteAggregate +--R reduce : (((Integer,Integer) -> Integer),%,Integer,Integer) -> Integer if $ has finiteAggregate and Integer has SETCAT +--R remove : ((Integer -> Boolean),%) -> % if $ has finiteAggregate +--R remove : (Integer,%) -> % if $ has finiteAggregate and Integer has SETCAT +--R removeDuplicates : % -> % if $ has finiteAggregate and Integer has SETCAT +--R reverse! : % -> % if $ has shallowlyMutable +--R select : ((Integer -> Boolean),%) -> % if $ has finiteAggregate +--R setelt : (%,UniversalSegment Integer,Integer) -> Integer if $ has shallowlyMutable +--R setelt : (%,Integer,Integer) -> Integer if $ has shallowlyMutable +--R size? : (%,NonNegativeInteger) -> Boolean +--R sort : % -> % if Integer has ORDSET +--R sort : (((Integer,Integer) -> Boolean),%) -> % +--R sort! : % -> % if $ has shallowlyMutable and Integer has ORDSET +--R sort! : (((Integer,Integer) -> Boolean),%) -> % if $ has shallowlyMutable +--R sorted? : % -> Boolean if Integer has ORDSET +--R sorted? : (((Integer,Integer) -> Boolean),%) -> Boolean +--R swap! : (%,Integer,Integer) -> Void if $ has shallowlyMutable +--R ?~=? : (%,%) -> Boolean if Integer has SETCAT +--R +--E 1 + +)spool +)lisp (bye) +@ +<>= +==================================================================== +U32Vector examples +==================================================================== + +See Also: +o )show U32Vector + +@ +\pagehead{U32Vector}{U32VEC} +\pagepic{ps/v103u32vector.eps}{U32VEC}{1.00} +{\bf See}\\ +\pageto{Segment}{SEG} +\pageto{SegmentBinding}{SEGBIND} + +{\bf Exports:}\\ +\begin{tabular}{lllll} +\cross{U32VEC}{\#{}?} & +\cross{U32VEC}{?.?} & +\cross{U32VEC}{?.?} & +\cross{U32VEC}{?$<=$?} & +\cross{U32VEC}{?$<$?} \\ +\cross{U32VEC}{?=?} & +\cross{U32VEC}{?$>=$?} & +\cross{U32VEC}{?$>$?} & +\cross{U32VEC}{?\~{}=?} & +\cross{U32VEC}{any?} \\ +\cross{U32VEC}{coerce} & +\cross{U32VEC}{concat} & +\cross{U32VEC}{construct} & +\cross{U32VEC}{convert} & +\cross{U32VEC}{copy} \\ +\cross{U32VEC}{copyInto!} & +\cross{U32VEC}{count} & +\cross{U32VEC}{delete} & +\cross{U32VEC}{elt} & +\cross{U32VEC}{empty} \\ +\cross{U32VEC}{empty?} & +\cross{U32VEC}{entries} & +\cross{U32VEC}{entry?} & +\cross{U32VEC}{eq?} & +\cross{U32VEC}{eval} \\ +\cross{U32VEC}{every?} & +\cross{U32VEC}{fill!} & +\cross{U32VEC}{find} & +\cross{U32VEC}{first} & +\cross{U32VEC}{hash} \\ +\cross{U32VEC}{index?} & +\cross{U32VEC}{indices} & +\cross{U32VEC}{insert} & +\cross{U32VEC}{latex} & +\cross{U32VEC}{less?} \\ +\cross{U32VEC}{map} & +\cross{U32VEC}{map!} & +\cross{U32VEC}{max} & +\cross{U32VEC}{maxIndex} & +\cross{U32VEC}{member?} \\ +\cross{U32VEC}{members} & +\cross{U32VEC}{merge} & +\cross{U32VEC}{min} & +\cross{U32VEC}{minIndex} & +\cross{U32VEC}{more?} \\ +\cross{U32VEC}{new} & +\cross{U32VEC}{parts} & +\cross{U32VEC}{position} & +\cross{U32VEC}{qelt} & +\cross{U32VEC}{qsetelt!} \\ +\cross{U32VEC}{reduce} & +\cross{U32VEC}{remove} & +\cross{U32VEC}{removeDuplicates} & +\cross{U32VEC}{reverse} & +\cross{U32VEC}{reverse!} \\ +\cross{U32VEC}{sample} & +\cross{U32VEC}{select} & +\cross{U32VEC}{setelt} & +\cross{U32VEC}{size?} & +\cross{U32VEC}{sort} \\ +\cross{U32VEC}{sort!} & +\cross{U32VEC}{sorted?} & +\cross{U32VEC}{swap!} && +\end{tabular} + +<>= +)abbrev domain U32VEC U32Vector +++ Author: Waldek Hebisch +++ Description: This is a low-level domain which implements vectors +++ (one dimensional arrays) of unsigned 32-bit numbers. Indexing +++ is 0 based, there is no bound checking (unless provided by +++ lower level). +U32Vector() : OneDimensionalArrayAggregate Integer == add + Qsize ==> QV32LEN$Lisp + Qelt ==> ELT32$Lisp + Qsetelt ==> SETELT32$Lisp + Qnew ==> GETREFV32$Lisp + + #x == Qsize x + minIndex x == 0 + empty() == Qnew(0$Lisp, 0$Lisp) + new(n, x) == Qnew (n, x) + qelt(x, i) == Qelt(x, i) + elt(x:%, i:Integer) == Qelt(x, i) + qsetelt_!(x, i, s) == Qsetelt(x, i, s) + setelt(x:%, i:Integer, s:Integer) == Qsetelt(x, i, s) + fill_!(x, s) == (for i in 0..((Qsize x) - 1) repeat Qsetelt(x, i, s); x) + +@ +<>= +"U32VEC" [color="#88FF44",href="bookvol10.3.pdf#nameddest=U32VEC"] +"A1AGG" [color="#4488FF",href="bookvol10.2.pdf#nameddest=A1AGG"] +"U32VEC" -> "A1AGG" + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Chapter V} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{domain VARIABLE Variable} @@ -150619,6 +151212,7 @@ Note that this code is not included in the generated catdef.spad file. <> <> <> +<> <> <> diff --git a/books/bookvol10.4.pamphlet b/books/bookvol10.4.pamphlet index 873d2c4..c72984e 100644 --- a/books/bookvol10.4.pamphlet +++ b/books/bookvol10.4.pamphlet @@ -44053,186 +44053,6 @@ GuessInteger() == Guess(Fraction Integer, Integer, Expression Integer, @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\section{package GOPT0 GuessOptionFunctions0} -\pagehead{GuessOptionFunctions0}{GOPT0} -\pagepic{ps/v104guessoptionfunctions0.ps}{GOPT0}{1.00} - -{\bf Exports:}\\ -\begin{tabular}{lllll} -\cross{GOPT0}{allDegrees} & -\cross{GOPT0}{coerce} & -\cross{GOPT0}{debug} & -\cross{GOPT0}{displayAsGF} & -\cross{GOPT0}{functionName} \\ -\cross{GOPT0}{hash} & -\cross{GOPT0}{homogeneous} & -\cross{GOPT0}{indexName} & -\cross{GOPT0}{latex} & -\cross{GOPT0}{maxDegree} \\ -\cross{GOPT0}{maxDerivative} & -\cross{GOPT0}{maxLevel} & -\cross{GOPT0}{maxPower} & -\cross{GOPT0}{maxShift} & -\cross{GOPT0}{one} \\ -\cross{GOPT0}{safety} & -\cross{GOPT0}{variableName} & -\cross{GOPT0}{?\~{}=?} & -\cross{GOPT0}{?=?} & -\end{tabular} - -<>= -)abbrev package GOPT0 GuessOptionFunctions0 -++ Author: Martin Rubey -++ Description: -++ GuessOptionFunctions0 provides operations that extract the -++ values of options for \spadtype{Guess}. - -GuessOptionFunctions0(): Exports == Implementation where - - LGOPT ==> List GuessOption - - Exports == SetCategory with - - maxLevel: LGOPT -> Integer - ++ maxLevel returns the specified maxLevel or -1 as default. - - maxPower: LGOPT -> Integer - ++ maxPower returns the specified maxPower or -1 as default. - - maxDerivative: LGOPT -> Integer - ++ maxDerivative returns the specified maxDerivative or -1 as default. - - maxShift: LGOPT -> Integer - ++ maxShift returns the specified maxShift or -1 as default. - - maxDegree: LGOPT -> Integer - ++ maxDegree returns the specified maxDegree or -1 as default. - - allDegrees: LGOPT -> Boolean - ++ allDegrees returns whether all possibilities of the degree vector - ++ should be tried, the default being false. - - safety: LGOPT -> NonNegativeInteger - ++ safety returns the specified safety or 1 as default. - - one: LGOPT -> Boolean - ++ one returns whether we need only one solution, default being true. - - homogeneous: LGOPT -> Boolean - ++ homogeneous returns whether we allow only homogeneous algebraic - ++ differential equations, default being false - - functionName: LGOPT -> Symbol - ++ functionName returns the name of the function given by the algebraic - ++ differential equation, default being f - - variableName: LGOPT -> Symbol - ++ variableName returns the name of the variable used in by the - ++ algebraic differential equation, default being x - - indexName: LGOPT -> Symbol - ++ indexName returns the name of the index variable used for the - ++ formulas, default being n - - displayAsGF: LGOPT -> Boolean - ++ displayAsGF specifies whether the result is a generating function - ++ or a recurrence. This option should not be set by the user, but rather - ++ by the HP-specification, therefore, there is no default. - - debug: LGOPT -> Boolean - ++ debug returns whether we want additional output on the progress, - ++ default being false - - Implementation == add - - maxLevel l == - if (opt := option(l, "maxLevel" :: Symbol)) case "failed" then - -1 - else - retract(opt :: Any)$AnyFunctions1(Integer) - - maxDerivative l == - if (opt := option(l, "maxDerivative" :: Symbol)) case "failed" then - -1 - else - retract(opt :: Any)$AnyFunctions1(Integer) - - maxShift l == maxDerivative l - - maxDegree l == - if (opt := option(l, "maxDegree" :: Symbol)) case "failed" then - -1 - else - retract(opt :: Any)$AnyFunctions1(Integer) - - allDegrees l == - if (opt := option(l, "allDegrees" :: Symbol)) case "failed" then - false - else - retract(opt :: Any)$AnyFunctions1(Boolean) - - maxPower l == - if (opt := option(l, "maxPower" :: Symbol)) case "failed" then - -1 - else - retract(opt :: Any)$AnyFunctions1(Integer) - - safety l == - if (opt := option(l, "safety" :: Symbol)) case "failed" then - 1$NonNegativeInteger - else - retract(opt :: Any)$AnyFunctions1(Integer)::NonNegativeInteger - - one l == - if (opt := option(l, "one" :: Symbol)) case "failed" then - true - else - retract(opt :: Any)$AnyFunctions1(Boolean) - - debug l == - if (opt := option(l, "debug" :: Symbol)) case "failed" then - false - else - retract(opt :: Any)$AnyFunctions1(Boolean) - - homogeneous l == - if (opt := option(l, "homogeneous" :: Symbol)) case "failed" then - false - else - retract(opt :: Any)$AnyFunctions1(Boolean) - - variableName l == - if (opt := option(l, "variableName" :: Symbol)) case "failed" then - "x" :: Symbol - else - retract(opt :: Any)$AnyFunctions1(Symbol) - - functionName l == - if (opt := option(l, "functionName" :: Symbol)) case "failed" then - "f" :: Symbol - else - retract(opt :: Any)$AnyFunctions1(Symbol) - - indexName l == - if (opt := option(l, "indexName" :: Symbol)) case "failed" then - "n" :: Symbol - else - retract(opt :: Any)$AnyFunctions1(Symbol) - - displayAsGF l == - if (opt := option(l, "displayAsGF" :: Symbol)) case "failed" then - error "GuessOption: displayAsGF not set" - else - retract(opt :: Any)$AnyFunctions1(Boolean) - -@ -<>= -"GOPT0" [color="#FF4488",href="bookvol10.4.pdf#nameddest=GOPT0"] -"ALIST" [color="#88FF44",href="bookvol10.3.pdf#nameddest=ALIST"] -"GOPT0" -> "ALIST" - -@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{package GUESSP GuessPolynomial} \pagehead{GuessPolynomial}{GUESSP} \pagepic{ps/v104guesspolynomial.ps}{GUESSP}{1.00} @@ -161245,7 +161065,6 @@ ZeroDimensionalSolvePackage(R,ls,ls2): Exports == Implementation where <> <> <> -<> <> <> @@ -161541,6 +161360,7 @@ ZeroDimensionalSolvePackage(R,ls,ls2): Exports == Implementation where <> <> <> +<> <> <> <> diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet index bb9ba6c..cc22727 100644 --- a/books/bookvol5.pamphlet +++ b/books/bookvol5.pamphlet @@ -23749,7 +23749,6 @@ otherwise the new algebra won't be loaded by the interpreter when needed. (|GuessFiniteFunctions| . GUESSF1) (|GuessInteger| . GUESSINT) (|GuessOption| . GOPT) - (|GuessOptionFunctions0| . GOPT0) (|GuessPolynomial| . GUESSP) (|GuessUnivariatePolynomial| . GUESSUP) (|HallBasis| . HB) @@ -24011,6 +24010,7 @@ otherwise the new algebra won't be loaded by the interpreter when needed. (|UniversalSegment| . UNISEG) (|UniversalSegmentFunctions2| . UNISEG2) (|UserDefinedVariableOrdering| . UDVO) + (|U32Vector| . U32VEC) (|Vector| . VECTOR) (|VectorFunctions2| . VECTOR2) (|ViewDefaultsPackage| . VIEWDEF) @@ -24475,6 +24475,7 @@ otherwise the new algebra won't be loaded by the interpreter when needed. (|GrayCode| . GRAY) (|GroebnerInternalPackage| . GBINTERN) (|GroebnerSolve| . GROEBSOL) + (|GuessOptionFunctions0| . GOPT0) (|HashTable| . HASHTBL) (|Heap| . HEAP) (|HeuGcd| . HEUGCD) diff --git a/books/ps/v103u32vector.eps b/books/ps/v103u32vector.eps new file mode 100644 index 0000000..a6e3b3a --- /dev/null +++ b/books/ps/v103u32vector.eps @@ -0,0 +1,266 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009) +%%For: (root) root +%%Title: pic +%%Pages: 1 +%%BoundingBox: 36 36 116 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 + scale +} bind def + +% styles +/solid { [] 0 setdash } bind def +/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def +/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def +/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def +/bold { 2 setlinewidth } bind def +/filled { } bind def +/unfilled { } bind def +/rounded { } bind def +/diagonals { } bind def + +% hooks for setting color +/nodecolor { sethsbcolor } bind def +/edgecolor { sethsbcolor } bind def +/graphcolor { sethsbcolor } bind def +/nopcolor {pop pop pop} bind def + +/beginpage { % i j npages + /npages exch def + /j exch def + /i exch def + /str 10 string def + npages 1 gt { + gsave + coordfont setfont + 0 0 moveto + (\() show i str cvs show (,) show j str cvs show (\)) show + grestore + } if +} bind def + +/set_font { + findfont exch + scalefont setfont +} def + +% draw text fitted to its expected width +/alignedtext { % width text + /text exch def + /width exch def + gsave + width 0 gt { + [] 0 setdash + text stringwidth pop width exch sub text length div 0 text ashow + } if + grestore +} def + +/boxprim { % xcorner ycorner xsize ysize + 4 2 roll + moveto + 2 copy + exch 0 rlineto + 0 exch rlineto + pop neg 0 rlineto + closepath +} bind def + +/ellipse_path { + /ry exch def + /rx exch def + /y exch def + /x exch def + matrix currentmatrix + newpath + x y translate + rx ry scale + 0 0 1 0 360 arc + setmatrix +} bind def + +/endpage { showpage } bind def +/showpage { } def + +/layercolorseq + [ % layer color sequence - darkest to lightest + [0 0 0] + [.2 .8 .8] + [.4 .8 .8] + [.6 .8 .8] + [.8 .8 .8] + ] +def + +/layerlen layercolorseq length def + +/setlayer {/maxlayer exch def /curlayer exch def + layercolorseq curlayer 1 sub layerlen mod get + aload pop sethsbcolor + /nodecolor {nopcolor} def + /edgecolor {nopcolor} def + /graphcolor {nopcolor} def +} bind def + +/onlayer { curlayer ne {invis} if } def + +/onlayers { + /myupper exch def + /mylower exch def + curlayer mylower lt + curlayer myupper gt + or + {invis} if +} def + +/curlayer 0 def + +%%EndResource +%%EndProlog +%%BeginSetup +14 default-font-family set_font +1 setmiterlimit +% /arrowlength 10 def +% /arrowwidth 5 def + +% make sure pdfmark is harmless for PS-interpreters other than Distiller +/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse +% make '<<' and '>>' safe on PS Level 1 devices +/languagelevel where {pop languagelevel}{1} ifelse +2 lt { + userdict (<<) cvn ([) cvn load put + userdict (>>) cvn ([) cvn load put +} if + +%%EndSetup +setupLatin1 +%%Page: 1 1 +%%PageBoundingBox: 36 36 116 152 +%%PageOrientation: Portrait +0 0 1 beginpage +gsave +36 36 80 116 boxprim clip newpath +1 1 set_scale 0 rotate 40 40 translate +% U32VEC +gsave +[ /Rect [ 0 72 72 108 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=U32VEC) >> + /Subtype /Link +/ANN pdfmark +0.273 0.733 1.000 nodecolor +newpath 72 108 moveto +0 108 lineto +0 72 lineto +72 72 lineto +closepath fill +1 setlinewidth +filled +0.273 0.733 1.000 nodecolor +newpath 72 108 moveto +0 108 lineto +0 72 lineto +72 72 lineto +closepath stroke +0.000 0.000 0.000 nodecolor +14 /Times-Roman set_font +7.5 85.9 moveto 57 (U32VEC) alignedtext +grestore +% A1AGG +gsave +[ /Rect [ 3 0 69 36 ] + /Border [ 0 0 0 ] + /Action << /Subtype /URI /URI (bookvol10.2.pdf#nameddest=A1AGG) >> + /Subtype /Link +/ANN pdfmark +0.606 0.733 1.000 nodecolor +newpath 69 36 moveto +3 36 lineto +3 0 lineto +69 0 lineto +closepath fill +1 setlinewidth +filled +0.606 0.733 1.000 nodecolor +newpath 69 36 moveto +3 36 lineto +3 0 lineto +69 0 lineto +closepath stroke +0.000 0.000 0.000 nodecolor +14 /Times-Roman set_font +10.5 13.9 moveto 51 (A1AGG) alignedtext +grestore +% U32VEC->A1AGG +gsave +1 setlinewidth +0.000 0.000 0.000 edgecolor +newpath 36 72 moveto +36 64 36 55 36 46 curveto +stroke +0.000 0.000 0.000 edgecolor +newpath 39.5 46 moveto +36 36 lineto +32.5 46 lineto +closepath fill +1 setlinewidth +solid +0.000 0.000 0.000 edgecolor +newpath 39.5 46 moveto +36 36 lineto +32.5 46 lineto +closepath stroke +grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +end +restore +%%EOF diff --git a/changelog b/changelog index ad92bea..2628440 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,8 @@ +20100729 tpd src/axiom-website/patches.html 20100729.01.wxh.patch +20100729 wxh src/algebra/Makefile help and test for U32Vector +20100729 wxh books/bookvol5 expose U32Vector +20100729 wxh books/bookvol10.3 add U32Vector, move GOPT0 from bookvol10.4 +20100729 wxh books/ps/v103u32vector.eps added 20100728 tpd src/axiom-website/patches.html 20100728.04.tpd.patch 20100728 tpd books/ps/v104streamtensor.eps added 20100728 tpd src/axiom-website/patches.html 20100728.03.tpd.patch diff --git a/src/algebra/Makefile.pamphlet b/src/algebra/Makefile.pamphlet index 554d480..48a5d9f 100644 --- a/src/algebra/Makefile.pamphlet +++ b/src/algebra/Makefile.pamphlet @@ -3726,7 +3726,8 @@ LAYER8=\ ${OUT}/PROJSP.o \ ${OUT}/REDORDER.o ${OUT}/SRAGG.o ${OUT}/SRAGG-.o ${OUT}/STREAM.o \ ${OUT}/SYMPOLY.o ${OUT}/TS.o ${OUT}/TUPLE.o ${OUT}/UPSCAT.o \ - ${OUT}/UPSCAT-.o ${OUT}/VECTCAT.o ${OUT}/VECTCAT-.o ${OUT}/XDPOLY.o \ + ${OUT}/UPSCAT-.o ${OUT}/U32VEC.o \ + ${OUT}/VECTCAT.o ${OUT}/VECTCAT-.o ${OUT}/XDPOLY.o \ ${OUT}/XEXPPKG.o ${OUT}/XF.o ${OUT}/XF-.o ${OUT}/XPBWPOLY.o \ ${OUT}/XPOLY.o ${OUT}/XRPOLY.o \ layer8done @@ -4336,6 +4337,18 @@ LAYER8=\ /*"UPSCAT-" -> {"ENTIRER"; "ELTAB"; "DIFRING"; "PDRING"; "OAMON"; "OASGP"}*/ /*"UPSCAT-" -> {"ORDSET"; "INT"; "LIST"; "ILIST"; "LSAGG-"}*/ +"U32VEC" [color="#88FF44",href="bookvol10.3.pdf#nameddest=U32VEC"] +"U32VEC" -> "A1AGG" +/*"U32VEC" -> {"FLAGG"; "LNAGG"; "IXAGG"; "HOAGG"; "AGG"; "TYPE"; "SETCAT"}*/ +/*"U32VEC" -> {"BASTYPE"; "KOERCE"; "EVALAB"; "IEVALAB"; "ELTAGG"; "ELTAB"}*/ +/*"U32VEC" -> {"CLAGG"; "KONVERT"; "ORDSET"; "INT"; "SINT"; "NNI"; "INS"}*/ +/*"U32VEC" -> {"UFD"; "GCDDOM"; "INTDOM"; "COMRING"; "RING"; "RNG"}*/ +/*"U32VEC" -> {"ABELGRP"; "CABMON"; "ABELMON"; "ABELSG"; "SGROUP"}*/ +/*"U32VEC" -> {"MONOID"; "LMODULE"; "BMODULE"; "RMODULE"; "ALGEBRA"}*/ +/*"U32VEC" -> {"MODULE"; "ENTIRER"; "EUCDOM"; "PID"; "OINTDOM"; "ORDRING"}*/ +/*"U32VEC" -> {"OAGROUP"; "OCAMON"; "OAMON"; "OASGP"; "DIFRING"; "RETRACT"}*/ +/*"U32VEC" -> {"LINEXP"; "PATMAB"; "CFCAT"; "REAL"; "CHARZ"; "STEP"; "OM"}*/ + "VECTCAT" [color="#4488FF",href="bookvol10.2.pdf#nameddest=VECTCAT"] "VECTCAT" -> "A1AGG" /*"VECTCAT" -> {"FLAGG"; "LNAGG"; "IXAGG"; "HOAGG"; "AGG"; "TYPE"}*/ @@ -11277,12 +11290,12 @@ LAYER16=\ /*"GOPT" -> {"IXAGG-"; "CLAGG-"; "HOAGG-"; "ORDSET-"; "AGG-"; "ELTAGG-"}*/ /*"GOPT" -> {"SETCAT-"; "BASTYPE-"}*/ -"GOPT0" [color="#FF4488",href="bookvol10.4.pdf#nameddest=GOPT0"] -/*"GOPT0" -> {"SETCAT"; "BASTYPE"; "KOERCE"; "SYMBOL"; "INT"; "REF"}*/ -"GOPT0" -> "ALIST" -/*"GOPT0" -> {"LIST"; "STRING"; "CHAR"; "SINT"; "OUTFORM"; "PRIMARR"}*/ -/*"GOPT0" -> {"A1AGG-"; "ISTRING"; "SRAGG-"; "FLAGG-"; "LNAGG-"; "BOOLEAN"}*/ -/*"GOPT0" -> "NNI"*/ +"GOPT0" [color="#88FF44",href="bookvol10.3.pdf#nameddest=GOPT0"] +"GOPT0" -> "STRING" +/*"GOPT0" -> {"SETCAT"; "BASTYPE"; "KOERCE"; "PI";"NNI"; "INT"; "BOOLEAN"}*/ +/*"GOPT0" -> {"CHAR"; "SINT"; "OUTFORM"; "LIST"; "PRIMARR"}*/ +/*"GOPT0" -> {"A1AGG-"; "ISTRING"; "MONOID-"; "ABELSG-"; "SGROUP-"; }*/ +/*"GOPT0" -> {"ORDSET-"; "SETCAT-"; "BASTYPE-"}*/ "HACKPI" [color="#88FF44",href="bookvol10.3.pdf#nameddest=HACKPI"] /*"HACKPI" -> {"FIELD"; "EUCDOM"; "PID"; "GCDDOM"; "INTDOM"; "COMRING"}*/ @@ -17558,6 +17571,7 @@ SPADHELP=\ ${HELP}/GroebnerPackage.help \ ${HELP}/Group.help \ ${HELP}/GuessOption.help \ + ${HELP}/GuessOptionFunctions0.help \ ${HELP}/HashTable.help \ ${HELP}/Heap.help \ ${HELP}/HexadecimalExpansion.help \ @@ -17952,6 +17966,7 @@ SPADHELP=\ ${HELP}/UnivariateTaylorSeriesCZero.help \ ${HELP}/UnivariateTaylorSeriesCategory.help \ ${HELP}/UniversalSegment.help \ + ${HELP}/U32Vector.help \ ${HELP}/Variable.help \ ${HELP}/Vector.help \ ${HELP}/VectorCategory.help \ @@ -18252,6 +18267,7 @@ REGRESS= \ GroebnerPackage.regress \ Group.regress \ GuessOption.regress \ + GuessOptionFunctions0.regress \ HashTable.regress \ Heap.regress \ HexadecimalExpansion.regress \ @@ -18630,6 +18646,7 @@ REGRESS= \ UnivariateTaylorSeriesCZero.regress \ UnivariateTaylorSeriesCategory.regress \ UniversalSegment.regress \ + U32Vector.regress \ Variable.regress \ Vector.regress \ VectorCategory.regress \ @@ -21967,6 +21984,18 @@ ${HELP}/GuessOption.help: ${BOOKS}/bookvol10.3.pamphlet >${INPUT}/GuessOption.input @echo "GuessOption (GOPT)" >>${HELPFILE} +${HELP}/GuessOptionFunctions0.help: ${BOOKS}/bookvol10.3.pamphlet + @echo 5000 create GuessOptionFunctions0.help from \ + ${BOOKS}/bookvol10.3.pamphlet + @${TANGLE} -R"GuessOptionFunctions0.help" \ + ${BOOKS}/bookvol10.3.pamphlet \ + >${HELP}/GuessOptionFunctions0.help + @cp -f ${HELP}/GuessOptionFunctions0.help ${HELP}/GOPT0.help + @${TANGLE} -R"GuessOptionFunctions0.input" \ + ${BOOKS}/bookvol10.3.pamphlet \ + >${INPUT}/GuessOptionFunctions0.input + @echo "GuessOptionFunctions0 (GOPT0)" >>${HELPFILE} + ${HELP}/HashTable.help: ${BOOKS}/bookvol10.3.pamphlet @echo 5000 create HashTable.help from \ ${BOOKS}/bookvol10.3.pamphlet @@ -26701,6 +26730,16 @@ ${HELP}/UniversalSegment.help: ${BOOKS}/bookvol10.3.pamphlet >${INPUT}/UniversalSegment.input @echo "UniversalSegment (UNISEG)" >>${HELPFILE} +${HELP}/U32Vector.help: ${BOOKS}/bookvol10.3.pamphlet + @echo 8200 create U32Vector.help from \ + ${BOOKS}/bookvol10.3.pamphlet + @${TANGLE} -R"U32Vector.help" ${BOOKS}/bookvol10.3.pamphlet \ + >${HELP}/U32Vector.help + @cp -f ${HELP}/U32Vector.help ${HELP}/U32VEC.help + @${TANGLE} -R"U32Vector.input" ${BOOKS}/bookvol10.3.pamphlet \ + >${INPUT}/U32Vector.input + @echo "U32Vector (U32VEC)" >>${HELPFILE} + ${HELP}/Variable.help: ${BOOKS}/bookvol10.3.pamphlet @echo 5000 create Variable.help from \ ${BOOKS}/bookvol10.3.pamphlet diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html index 184ac7b..ffbe4d8 100644 --- a/src/axiom-website/patches.html +++ b/src/axiom-website/patches.html @@ -3039,5 +3039,7 @@ books/bookvol10.4 add StreamTensor
books/bookvol10.4 fix ScriptTensor regression test
20100728.04.tpd.patch books/ps/v104streamtensor.eps added
+20100729.01.wxh.patch +books/bookvol10.3 add U32Vector, move GOPT0 from bookvol10.4