You can subscribe to this list here.
2001 
_{Jan}

_{Feb}

_{Mar}

_{Apr}

_{May}

_{Jun}

_{Jul}

_{Aug}

_{Sep}

_{Oct}

_{Nov}
(20) 
_{Dec}
(17) 

2002 
_{Jan}
(39) 
_{Feb}
(21) 
_{Mar}
(33) 
_{Apr}
(135) 
_{May}
(53) 
_{Jun}
(88) 
_{Jul}
(47) 
_{Aug}
(59) 
_{Sep}
(207) 
_{Oct}
(40) 
_{Nov}
(7) 
_{Dec}
(26) 
2003 
_{Jan}
(49) 
_{Feb}
(39) 
_{Mar}
(117) 
_{Apr}
(50) 
_{May}
(62) 
_{Jun}
(6) 
_{Jul}
(19) 
_{Aug}
(24) 
_{Sep}
(11) 
_{Oct}
(11) 
_{Nov}
(49) 
_{Dec}
(9) 
2004 
_{Jan}
(29) 
_{Feb}
(123) 
_{Mar}
(32) 
_{Apr}
(53) 
_{May}
(52) 
_{Jun}
(19) 
_{Jul}
(33) 
_{Aug}
(10) 
_{Sep}
(76) 
_{Oct}
(86) 
_{Nov}
(171) 
_{Dec}
(163) 
2005 
_{Jan}
(147) 
_{Feb}
(121) 
_{Mar}
(120) 
_{Apr}
(126) 
_{May}
(120) 
_{Jun}
(213) 
_{Jul}
(76) 
_{Aug}
(79) 
_{Sep}
(140) 
_{Oct}
(83) 
_{Nov}
(156) 
_{Dec}
(202) 
2006 
_{Jan}
(181) 
_{Feb}
(171) 
_{Mar}
(157) 
_{Apr}
(98) 
_{May}
(96) 
_{Jun}
(97) 
_{Jul}
(193) 
_{Aug}
(76) 
_{Sep}
(130) 
_{Oct}
(63) 
_{Nov}
(196) 
_{Dec}
(253) 
2007 
_{Jan}
(256) 
_{Feb}
(293) 
_{Mar}
(276) 
_{Apr}
(258) 
_{May}
(181) 
_{Jun}
(91) 
_{Jul}
(108) 
_{Aug}
(69) 
_{Sep}
(107) 
_{Oct}
(179) 
_{Nov}
(137) 
_{Dec}
(121) 
2008 
_{Jan}
(124) 
_{Feb}
(129) 
_{Mar}
(192) 
_{Apr}
(201) 
_{May}
(90) 
_{Jun}
(86) 
_{Jul}
(115) 
_{Aug}
(142) 
_{Sep}
(49) 
_{Oct}
(91) 
_{Nov}
(95) 
_{Dec}
(218) 
2009 
_{Jan}
(230) 
_{Feb}
(149) 
_{Mar}
(118) 
_{Apr}
(72) 
_{May}
(77) 
_{Jun}
(68) 
_{Jul}
(102) 
_{Aug}
(72) 
_{Sep}
(89) 
_{Oct}
(76) 
_{Nov}
(125) 
_{Dec}
(86) 
2010 
_{Jan}
(75) 
_{Feb}
(90) 
_{Mar}
(89) 
_{Apr}
(121) 
_{May}
(111) 
_{Jun}
(66) 
_{Jul}
(75) 
_{Aug}
(66) 
_{Sep}
(66) 
_{Oct}
(166) 
_{Nov}
(121) 
_{Dec}
(73) 
2011 
_{Jan}
(74) 
_{Feb}

_{Mar}

_{Apr}
(14) 
_{May}
(22) 
_{Jun}
(31) 
_{Jul}
(53) 
_{Aug}
(37) 
_{Sep}
(23) 
_{Oct}
(25) 
_{Nov}
(31) 
_{Dec}
(28) 
2012 
_{Jan}
(18) 
_{Feb}
(11) 
_{Mar}
(32) 
_{Apr}
(17) 
_{May}
(48) 
_{Jun}
(37) 
_{Jul}
(23) 
_{Aug}
(54) 
_{Sep}
(15) 
_{Oct}
(11) 
_{Nov}
(19) 
_{Dec}
(22) 
2013 
_{Jan}
(11) 
_{Feb}
(32) 
_{Mar}
(24) 
_{Apr}
(37) 
_{May}
(31) 
_{Jun}
(14) 
_{Jul}
(26) 
_{Aug}
(33) 
_{Sep}
(40) 
_{Oct}
(21) 
_{Nov}
(36) 
_{Dec}
(84) 
2014 
_{Jan}
(23) 
_{Feb}
(20) 
_{Mar}
(27) 
_{Apr}
(24) 
_{May}
(31) 
_{Jun}
(27) 
_{Jul}
(34) 
_{Aug}
(26) 
_{Sep}
(21) 
_{Oct}
(45) 
_{Nov}
(23) 
_{Dec}
(73) 
2015 
_{Jan}
(33) 
_{Feb}
(8) 
_{Mar}
(24) 
_{Apr}
(45) 
_{May}
(27) 
_{Jun}
(19) 
_{Jul}
(21) 
_{Aug}
(51) 
_{Sep}
(43) 
_{Oct}
(29) 
_{Nov}
(61) 
_{Dec}
(86) 
2016 
_{Jan}
(99) 
_{Feb}
(52) 
_{Mar}
(80) 
_{Apr}
(61) 
_{May}
(24) 
_{Jun}
(23) 
_{Jul}
(36) 
_{Aug}
(30) 
_{Sep}
(41) 
_{Oct}
(43) 
_{Nov}
(27) 
_{Dec}
(46) 
2017 
_{Jan}
(57) 
_{Feb}
(34) 
_{Mar}
(40) 
_{Apr}
(31) 
_{May}
(59) 
_{Jun}

_{Jul}

_{Aug}

_{Sep}

_{Oct}

_{Nov}

_{Dec}

S  M  T  W  T  F  S 

1
(14) 
2
(3) 
3
(2) 
4

5
(6) 
6
(7) 
7
(3) 
8
(1) 
9

10

11
(3) 
12
(1) 
13

14

15
(8) 
16
(1) 
17
(1) 
18
(6) 
19
(6) 
20
(11) 
21
(8) 
22
(1) 
23
(9) 
24
(4) 
25
(4) 
26
(6) 
27

28
(3) 
29
(7) 
30
(1) 
31
(4) 




From: Robert Dodier <robert_dodier@us...>  20050526 15:27:03

Update of /cvsroot/maxima/maxima/doc/info In directory sc8prcvs1.sourceforge.net:/tmp/cvsserv12149 Modified Files: maxima.texi nset.texi Log Message: maxima.texi: link to nset.texi; put Sets right after Lists. nset.texi: fix up sectioning and subst @{ @} for { } as needed to make makeinfo happy. makeinfo succeeds without errors or warnings, and ? sets in Maxima finds the text. There is still some more work that can be done on nset.texi. Index: maxima.texi =================================================================== RCS file: /cvsroot/maxima/maxima/doc/info/maxima.texi,v retrieving revision 1.27 retrieving revision 1.28 diff u d r1.27 r1.28  maxima.texi 22 Apr 2005 14:11:28 0000 1.27 +++ maxima.texi 26 May 2005 15:26:53 0000 1.28 @@ 113,7 +113,8 @@ * Miscellaneous Options:: Options with a global effect on Maxima. * Rules and Patterns:: User defined pattern matching and simplification rules. * Lists:: Manipulation of Lisp lists. +* Lists:: Manipulation of lists. +* Sets:: Manipulation of sets. * Function Definition:: Defining functions. * Program Flow:: Defining Maxima programs. * Debugging:: Debugging Maxima programs. @@ 319,6 +320,11 @@ * Introduction to Lists:: * Definitions for Lists:: +Sets + +* Introduction to Sets:: +* Definitions for Sets:: + Function Definition * Introduction to Function Definition:: @@ 499,11 +505,15 @@ @include Rules.texi @... Lists, Function Definition, Rules and Patterns, Top +@node Lists, Sets, Rules and Patterns, Top @chapter Lists @include Lists.texi @... Function Definition, Program Flow, Lists, Top +@node Sets, Function Definition, Lists, Top +@chapter Sets +@include nset.texi + +@node Function Definition, Program Flow, Sets, Top @chapter Function Definition @include Function.texi Index: nset.texi =================================================================== RCS file: /cvsroot/maxima/maxima/doc/info/nset.texi,v retrieving revision 1.2 retrieving revision 1.3 diff u d r1.2 r1.3  nset.texi 26 May 2005 14:56:02 0000 1.2 +++ nset.texi 26 May 2005 15:26:54 0000 1.3 @@ 1,10 +1,11 @@ @... Introduction to Sets, Definitions for Finite Sets, Sets, Sets @... Introduction to Finite Sets @menu * Introduction to Finite Sets:: * Definitions for Finite Sets:: +* Introduction to Sets:: +* Definitions for Sets:: @end menu +@node Introduction to Sets, Definitions for Sets, Sets, Sets +@section Introduction to Sets + The @emph{nset} package provides set functions, such as intersection and union, for finite sets that are defined by explicit enumeration. @emph{nset} treats @@ 60,13 +61,13 @@ once, the simplification process eliminates the redundant member. @example (C1) set(); (D1) {} +(D1) @{@} (C2) set(a,b,a); (D2) {a, b} +(D2) @{a, b@} (C3) set(a,set(b)); (D3) {a, {b}} +(D3) @{a, @{b@}@} (C4) set(a,[b]); (D4) {a, [b]} +(D4) @{a, [b]@} @end example Sets are displayed as brace delimited lists; if you would like to be able to @emph{input} a set using braces, see the section @@ 75,7 +76,7 @@ To construct a set from the elements of a list, use @emph{setify} @example (C4) setify([b,a]); (D4) {a,b} +(D4) @{a,b@} @end example Set members @emph{x} and @emph{y} are equal provided @emph{is(x = y)} @@ 83,29 +84,29 @@ consequently, @example (C1) set(x,rat(x)); (D1) {x} +(D1) @{x@} @end example Further, since @emph{is((x1)*(x+1) = x^2  1)} evaluates to false, @emph{(x1)*(x+1)} and @emph{x^21} are distinct set members; thus @example (C2) set((x1)*(x+1),x^21); 2 (D2) {(x  1) (x + 1), x  1} +(D2) @{(x  1) (x + 1), x  1@} @end example To reduce this set to a singleton set, apply @emph{rat} to each set member @example (C3) map(rat,%); 2 (D3) {x  1} +(D3) @{x  1@} @end example To remove redundancies from other sets, you may need to use other simplification functions. Here is an example that uses @emph{trigsimp} @example (C1) set(1, cos(x)^2 + sin(x)^2); 2 2 (D1) {1, SIN (x) + COS (x)} +(D1) @{1, SIN (x) + COS (x)@} (C2) map(trigsimp,%); (D2) {1} +(D2) @{1@} @end example A set is simplified when its members are nonredundant and @@ 120,11 +121,11 @@ @example (C1) s : set(a,b,c)$ (C2) subst(c=a,s); (D2) {a, b} +(D2) @{a, b@} (C3) subst([a=x,b=x,c=x],s); (D3) {x} +(D3) @{x@} (C4) map(lambda([x],x^2), set(1,0,1)); (D4) {0, 1} +(D4) @{0, 1@} @end example The @emph{nset} package treats lists and sets as distinct objects; @@ 137,7 +138,7 @@ Function union expects a set, instead found [1,2]  an error. Quitting. To debug this try DEBUGMODE(TRUE);) (C2) union(setify([1,2]),set(a,b)); (D2) {1, 2, a, b} +(D2) @{1, 2, a, b@} @end example To extract all set elements of a set @emph{s} that satisfy a predicate @@ 146,7 +147,7 @@ in a given set that do not depend on a variable @emph{z}, use @example (C1) subset(set(x+y+z,xy+4,x+y5),lambda([e],freeof(z,e))); (D1) { y + x + 4, y + x  5} +(D1) @{ y + x + 4, y + x  5@} @end example The section @emph{Definitions for Sets} has a complete list of the functions in @emph{nset}. @@ 157,12 +158,12 @@ @emph{map}; for example @example (C1) map(f,set(a,b,c)); (D1) {f(a), f(b), f(C)} +(D1) @{f(a), f(b), f(C)@} @end example The other way is to use @emph{for in do} @example (C1) s : set(a,b,c); (D1) {a, b, C} +(D1) @{a, b, C@} (C2) for si in s do print(concat(si,1)); a1 b1 @@ 207,7 +208,7 @@ member in CRE form, however, shouldn't be a problem @example (C1) set(x,rat(x)); (D1)/R/ {x} +(D1)/R/ @{x@} @end example Maxima's @emph{orderlessp} has another bug that can cause problems @@ 263,18 +264,18 @@ so by declaring the left brace to be a matchfix operator; this is done using the commands @example (C1) matchfix("{","}")$ +(C1) matchfix("@{","@}")$ (C2) "{"([a]) := apply(set,a)$ +(C2) "@{"([a]) := apply(set,a)$ @end example Now we can define sets using braces; thus @example (C3) {}; +(C3) @{@}; (D3) {} (C4) {a,{a,b}}; +(D3) @{@} +(C4) @{a,@{a,b@}@}; (D4) {a, {a, b}} +(D4) @{a, @{a, b@}@} @end example To always allow this form of set input, place the two commands in lines (c1) and (c2) in your @emph{maximainit.mac} file. @@ 305,9 +306,9 @@ set, signal an error. @example (C1) adjoin(c,set(a,b)); (D1) {a, b, c} +(D1) @{a, b, c@} (C2) adjoin(a,set(a,b)); (D2) {a, b} +(D2) @{a, b@} @end example See also @math{disjoin}. @end defun @@ 361,13 +362,13 @@ Signal an error when any @emph{b} isn't a list or a set. @example (C1) cartesian_product(set(0,1)); (D1) {[0], [1]} +(D1) @{[0], [1]@} (C2) cartesian_product(set(0,1),set(0,1)); (D2) {[0, 0], [0, 1], [1, 0], [1, 1]} +(D2) @{[0, 0], [0, 1], [1, 0], [1, 1]@} (C3) cartesian_product(set(x),set(y),set(z)); (D3) {[x, y, z]} +(D3) @{[x, y, z]@} (C4) cartesian_product(set(x),set(1,0,1)); (D4) {[x,  1], [x, 0], [x, 1]} +(D4) @{[x,  1], [x, 0], [x, 1]@} @end example @end defun @@ 397,7 +398,7 @@ We can show that 28 is a perfect number using @example (C1) s : divisors(28); (D1) {1, 2, 4, 7, 14, 28} +(D1) @{1, 2, 4, 7, 14, 28@} (C2) lreduce("+",s)28; (D2) 28 @end example @@ 407,7 +408,7 @@ (C3) divisors(a); (D3) DIVISORS(a) (C4) subst(8,a,%); (D4) {1, 2, 4, 8} +(D4) @{1, 2, 4, 8@} @end example The function divisors threads over equalities, lists, matrices, and sets. Here is an example of threading over a list and an equality. @@ 447,19 +448,19 @@ check that it is. @example (C1) equiv_classes(set(a,b,c),lambda([x,y],is(x=y))); (D1) {{a}, {b}, {c}} +(D1) @{@{a@}, @{b@}, @{c@}@} @end example Actually, @emph{equiv_classes(s,f)} automatically applies the Maxima function @emph{is} after applying the function @emph{f}; accordingly, we can rework the previous example with the command @example (C2) equiv_classes(set(a,b,c),"="); (D2) {{a}, {b}, {c}} +(D2) @{@{a@}, @{b@}, @{c@}@} @end example Here is another example @example (C3) equiv_classes(set(1,2,3,4,5,6,7),lambda([x,y],remainder(xy,3)=0)); (D3) {{1, 4, 7}, {2, 5}, {3, 6}} +(D3) @{@{1, 4, 7@}, @{2, 5@}, @{3, 6@}@} @end example @end defun @@ 506,9 +507,9 @@ subset for which @emph{f} takes on its least value. @example (C1) extremal_subset(set(2,1,0,1,2),abs, max); (D1) { 2, 2} +(D1) @{ 2, 2@} (C2) extremal_subset(set(sqrt(2), 1.57, %pi/2),sin,min); (D2) {SQRT(2)} +(D2) @{SQRT(2)@} @end example @end defun @@ 531,9 +532,9 @@ @example (C1) flatten(set(a, set(b), set(set(c)))); (D1) {a, b, c} +(D1) @{a, b, c@} (C2) flatten(set(a,set([a],set(a)))); (D2) {a, [a]} +(D2) @{a, [a]@} @end example Flatten works correctly when the main operator is a subscripted function @example @@ 561,9 +562,9 @@ @emph{fullsetify} to each set member. @example (C1) fullsetify([a,[a]]); (D1) {a, {a}} +(D1) @{a, @{a@}@} (C2) fullsetify([a,f([b])]); (D2) {a, f([b])} +(D2) @{a, f([b])@} (C3) @end example In line (C2), the argument of @emph{f} isn't converted to a set @@ 598,16 +599,16 @@ @math{a1 + a2 + ... + am = n.} Thus 0 has no partitions. @example (C1) integer_partitions(3); (D1) {[1, 1, 1], [1, 2], [3]} +(D1) @{[1, 1, 1], [1, 2], [3]@} (C2) s : integer_partitions(25)$ (C3) cardinality(s); (D3) 1958 (C4) map(lambda([x],apply("+",x)),s); (D4) {25} +(D4) @{25@} (C5) integer_partitions(5,3); (D5) {[2, 2, 1], [3, 1, 1], [3, 2, 0], [4, 1, 0], [5, 0, 0]} +(D5) @{[2, 2, 1], [3, 1, 1], [3, 2, 0], [4, 1, 0], [5, 0, 0]@} (C6) integer_partitions(5,2); (D6) {[3, 2], [4, 1], [5, 0]} +(D6) @{[3, 2], [4, 1], [5, 0]@} @end example To find all partitions that satisfy a condition, use the function @math{subset}; here is an example that finds all partitions of 10 that consist of prime numbers @@ 615,8 +616,8 @@ (C1) s : integer_partitions(10)$ (C2) xprimep(x) := integerp(x) and (x > 1) and primep(x)$ (C3) subset(s,lambda([x],every(xprimep,x))); (D3) {[2, 2, 2, 2, 2], [3, 3, 2, 2], [5, 3, 2], [5, 5], [7, 3]} +(D3) @{[2, 2, 2, 2, 2], [3, 3, 2, 2], [5, 3, 2], [5, 5], [7, +3]@} @end example @c SEE SF BUG REPORT # 779053 (Notice that @math{primep(1)} is true in Maxima. This disagrees with @@ 695,8 +696,8 @@ @end example @end defun @... {lreduce} @... lreduce (f, s, {init}) +@anchor{lreduce} +@defun lreduce (f, s, @{init@}) The function @math{lreduce} (left reduce) extends a 2arity function to an narity function by composition; an example should make this clear. When the optional argument @math{init} isn't defined, we have @@ 722,7 +723,7 @@ (C5) lreduce("*",set(1,2,3,4,5)); (D5) 120 @end example Unlike most nset functions, when the second argument to @amth{lreduce} is a list, +Unlike most @emph{nset} functions, when the second argument to @math{lreduce} is a list, the list isn't coerced to a set. For example @example (C6) lreduce(f,[a,a,a]); @@ 743,15 +744,15 @@ @example (C1) makeset(i/j,[i,j],[[a,b],[c,d]]); a c (D1) {, } +(D1) @{, @} b d (C2) ind : [0,1,2,3]$ (C3) makeset(i^2 + j^2 + k^2, [i,j,k], cartesian_product(ind,ind,ind)); (D3) {0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 17, 18, 19, 22, 27} +(D3) @{0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 17, 18, 19, 22, 27@} @end example @end defun @... {moebius} +@anchor{moebius} @defun moebius (n) The Moebius function; when @math{n} is product of @math{k} distinct primes, @emph{moebius(n)} evaluates to @math{(1)^k}; it evaluates to 1 when @@ 833,9 +834,9 @@ or a set, signal an error. See also @ref{subset}. @example (C1) partition_set(set(2,7,1,8,2,8),evenp); (D1) [{1, 7}, {2, 8}] +(D1) [@{1, 7@}, @{2, 8@}] (C2) partition_set(set(x,rat(y),rat(y)+z,1),lambda([x], ratp(x))); (D2)/R/ [{1, x}, {y, y + z}] +(D2)/R/ [@{1, x@}, @{y, y + z@}] @end example @end defun @@ 847,9 +848,9 @@ before finding the permutations. Thus @example (C1) permutations([a,a]); (D1) {[a, a]} +(D1) @{[a, a]@} (C2) permutations([a,a,b]); (D2) {[a, a, b], [a, b, a], [b, a, a]} +(D2) @{[a, a, b], [a, b, a], [b, a, a]@} (C3) @end example If @emph{a} isn't a list or set, signal an error. @@ 865,8 +866,8 @@ additionally signal an error if @math{n} isn't a positive integer. @end defun @... {rreduce} @... rreduce (f, s, {init}) +@anchor{rreduce} +@defun rreduce (f, s, @{init@}) The function @math{rreduce} (right reduce) extends a 2arity function to an narity function by composition; an example should make this clear. When the optional argument @math{init} isn't defined, we have @@ 949,7 +950,7 @@ vacuously true); thus @example (C1) set_partitions(set()); (D1) {{}} +(D1) @{@{@}@} @end example A few additional examples @example @@ 964,13 +965,13 @@ Each member of @math{p} should have 3 members; let's check @example (C4) map(cardinality,p); (D4) {3} +(D4) @{3@} @end example Finally, for each member of @math{p}, the union of its members should equal @math{s}; again let's check @example (C5) map(lambda([x],apply(union,listify(x))),p); (D5) {{0, 1, 2, 3, 4, 5}} +(D5) @{@{0, 1, 2, 3, 4, 5@}@} @end example @end defun @@ 1089,9 +1090,9 @@ For example @example (C1) subset(set(1,2,x,x+y,z,x+y+z),atom); (D1) {1,2,z} +(D1) @{1,2,z@} (C2) subset(set(1,2,7,8,9,14),evenp); (D2) {2,8,14} +(D2) @{2,8,14@} @end example The second argument to @emph{subset} must be a Maxima predicate (a booleanvalued function of one argument) if the first argument to @@ 1114,7 +1115,7 @@ @end defun @anchor{tree_reduce} @... tree_reduce (f, s, {init}) +@defun tree_reduce (f, s, @{init@}) The function @math{tree_reduce} extends a associative binary operator @math{f : S x S > S} from two arguments to any number of arguments using a minimum @@ 1144,7 +1145,7 @@ @end defun @anchor{xreduce} @... xreduce (f, s, {init}) +@defun xreduce (f, s, @{init@}) This function is similar to both @math{lreduce} and @math{rreduce} except that @math{xreduce} is free to use either left or right associativity; 
From: Robert Dodier <robert_dodier@us...>  20050526 14:56:22

Update of /cvsroot/maxima/maxima/doc/info In directory sc8prcvs1.sourceforge.net:/tmp/cvsserv3787 Modified Files: nset.texi Log Message: First cut at merging nset.texi into ref manual: cut or comment out text related to installation. Index: nset.texi =================================================================== RCS file: /cvsroot/maxima/maxima/doc/info/nset.texi,v retrieving revision 1.1 retrieving revision 1.2 diff u d r1.1 r1.2  nset.texi 26 May 2005 14:29:09 0000 1.1 +++ nset.texi 26 May 2005 14:56:02 0000 1.2 @@ 6,8 +6,8 @@ @end menu The @emph{nset} package provides set functions, such as intersection and union, for finite sets that are defined by explicit enumeration. Unlike the package @emph{set} in Maxima's share library, @emph{nset} treats +union, for finite sets that are defined by explicit enumeration. +@emph{nset} treats lists and sets as distinct objects. This feature makes it possible to work with sets that have members that are either lists or sets. @@ 15,76 +15,45 @@ functions related to combinatorics; these include the Stirling numbers, the Bell numbers, and several others. @... Installation  Download the archive nsetx.tar.gz, where x is the release identifier, from http://www.unk.edu/acad/math/people/willisb. Under Linux, unpack it using   gzip d nsetx.tar.gz   tar xvf nsetx.tar +@c THIS DOCUMENT SHOULD MENTION nsetinit.lisp AND testnset.mac IN SOME WAY This will create a directory @emph{nsetx} (again x is the release identifier) that contains the source file @emph{nset.lisp}, user documentation in html and texi formats, a sample maxima initialization file @emph{nsetinit.lisp}, a README file, and a testing routine @emph{testnset.mac}. From the @...{nsetx} directory,start Maxima and compile @emph{nset} using @... (C1) compile_file("nset.lisp")$ @... example This will create a file @emph{nset.xxx} in the @emph{nsetx} directory. The file extension @emph{xxx} depends on  which Lisp your Maxima uses; under gcl, the extension is "o". +@c This will create a directory @emph{nsetx} (again x is the release identifier) +@c that contains the source file @emph{nset.lisp}, user documentation in html +@c and texi formats, a sample maxima initialization file @emph{nsetinit.lisp}, +@c a README file, and a testing routine @emph{testnset.mac}. Copy @emph{nset.lisp} and its compiled forms to a directory that Maxima can find. A good location is Maxima's /share/combinatorics directory. If you don't have write permission for this directory, or if you want to install @emph{nset} in a different location, that is fine as long as you place it in a directory that Maxima can find. +@c FOLLOWING TEXT LIKELY OBSOLETE NOW THAT nset.lisp IS IN src/, PRESERVE PENDING FINAL DETERMINATION If you are using Maxima version 5.9.0 or higher, finish the installation by appending the contents of @emph{nsetinit.lisp} to your own @...{maximainit.lisp} file. The Lisp file @emph{nsetinit.lisp} contains replacements for the Maxima functions @emph{setup_autoload} and @emph{generic_autoload}. Unlike Maxima's @emph{setup_autoload} function, the version in @emph{nsetinit.lisp} uses @emph{file_search}. Without this change, a full pathname must be given to @emph{setup_autoload}. The autoload function in Maxima 5.9.0 and lower does not recognize some file extensions, such as .x86f and .fasl, as valid extensions for compiled code. The version of @emph{generic_autoload} in @emph{nsetinit} fixes this problem. Additionally, @emph{nsetinit.lisp} contains autoload statements for all userlevel functions in @emph{nset}. +@c If you are using Maxima version 5.9.0 or higher, finish the installation +@c by appending the contents of @emph{nsetinit.lisp} to your own +@c @emph{maximainit.lisp} file. The Lisp file @emph{nsetinit.lisp} +@c contains replacements for the Maxima functions @emph{setup_autoload} +@c and @emph{generic_autoload}. Unlike Maxima's @emph{setup_autoload} function, +@c the version in @emph{nsetinit.lisp} uses @emph{file_search}. Without this +@c change, a full pathname must be given to @emph{setup_autoload}. The +@c autoload function in Maxima 5.9.0 and lower does not recognize some +@c file extensions, such as .x86f and .fasl, as valid extensions for +@c compiled code. The version of @emph{generic_autoload} in @emph{nsetinit} +@c fixes this problem. Additionally, @emph{nsetinit.lisp} contains +@c autoload statements for all userlevel functions in @emph{nset}. Maxima versions prior to 5.9.0 do not support initialization files. You may still use @emph{nset} under these versions of Maxima; you must, however, manually load @emph{nset} @emph{before} you use any functions (especially the @emph{set} function) that are in @emph{nset}. +@c NEED TO MOVE testnset.mac TO tests/ Once @emph{nset} is installed, run its testing code. Do this from a Maxima prompt using the command @... (C1) batch("testnset.mac",'test); @... example You may need to use the full pathname for the file. The test should end with the statement @... ..Which was correct Congratulations: No differences! @... example Please report any errors to the Maxima list. +@c Once @emph{nset} is installed, run its testing code. Do this from a Maxima +@c prompt using the command +@c @example +@c (C1) batch("testnset.mac",'test); +@c @end example +@c You may need to use the full pathname for the file. The test should +@c end with the statement +@c @example +@c ..Which was correct +@c Congratulations: No differences! +@c @end example +@c Please report any errors to the Maxima list. @subsubsection Usage To use the set functions, begin by loading @emph{nset}. Provided you have installed the package correctly, load it with the command @... (C1) load("nset")$ @... example If Maxima is unable to find @emph{nset}, use its full pathname. If you have included an autoload statement for all functions in @emph{nset} in your @...{maximainit.lisp} file, you will not have to manually load @...{nset}.  To construct a set with members @emph{a1,a2,...,an}, use the command @emph{set(a1,a2,...,an)}; to construct the empty set, use @emph{set()}. If a member is listed more than @@ 140,7 +109,7 @@ @end example A set is simplified when its members are nonredundant and sorted. @emph{Nset} version 1.2 uses the Maxima function +sorted. The current version of @emph{nset} uses the Maxima function @emph{orderlessp} to order sets; however, @emph{future versions of @emph{nset} might use a different ordering function. Robust application code that uses nset must not depend on a @@ 180,7 +149,7 @@ (D1) { y + x + 4, y + x  5} @end example The section @emph{Definitions for Sets} has a complete list of the functions in @emph{nset} +the functions in @emph{nset}. @subsubsection Set Member Iteration @@ 205,10 +174,12 @@ implementationdependent. If @emph{s} is a set, then @emph{rest(s)} is equivalent to @emph{disjoin(first(s),s)}. Currently, there are other Maxima functions that work correctly on sets; however, for future versions of nset, they may function +on sets; however, for future versions of @emph{nset}, they may function differently or not at all. @subsubsection Bugs +@c AT THIS POINT (2005/05) I DON'T KNOW IF IT'S NECESSARY TO GO INTO DETAILS +@c ABOUT BUGS IN MAXIMA REVISIONS 5.9.0 AND EARLIER The @emph{nset} package uses the Maxima function @emph{orderlessp} to order set members and the (Lisplevel) function @emph{like} to test for set @@ 647,7 +618,8 @@ (D3) {[2, 2, 2, 2, 2], [3, 3, 2, 2], [5, 3, 2], [5, 5], [7, 3]} @end example (Notice that @math{primep(1)} is true in Maxima 5.9.0. This disagrees with +@c SEE SF BUG REPORT # 779053 +(Notice that @math{primep(1)} is true in Maxima. This disagrees with most definitions of prime.) @end defun 
From: Robert Dodier <robert_dodier@us...>  20050526 14:29:17

Update of /cvsroot/maxima/maxima/doc/info In directory sc8prcvs1.sourceforge.net:/tmp/cvsserv29730/doc/info Added Files: nset.texi Log Message: Moved share/contrib/nset/nset.texi to doc/info/nset.texi in preparation for merging nset.texi into reference manual. share/contrib/nset/nset.lisp was moved to src/nset.lisp some time ago.  NEW FILE: nset.texi  @node Introduction to Sets, Definitions for Finite Sets, Sets, Sets @section Introduction to Finite Sets @menu * Introduction to Finite Sets:: * Definitions for Finite Sets:: @end menu The @emph{nset} package provides set functions, such as intersection and union, for finite sets that are defined by explicit enumeration. Unlike the package @emph{set} in Maxima's share library, @emph{nset} treats lists and sets as distinct objects. This feature makes it possible to work with sets that have members that are either lists or sets. In addition to functions for finite sets, @emph{nset} provides some functions related to combinatorics; these include the Stirling numbers, the Bell numbers, and several others. @subsubsection Installation [...1159 lines suppressed...] in particular when @math{f} is an associative function and Maxima has a builtin evaluator for it, @math{xreduce} may use the nary function; these nary functions include addition, multiplication, 'and', 'or', 'max', 'min', and 'append'. For these operators, we generally expect using @math{xreduce} to be faster than using either @math{rreduce} or @math{lreduce}. When @math{f} isn't nary, @math{xreduce} uses leftassociativity. Floating point addition is not associative; nevertheless, @math{xreduce} uses Maxima's nary addition when the set or list @math{s} contains floating point numbers. @end defun 
From: Robert Dodier <robert_dodier@us...>  20050526 14:29:16

Update of /cvsroot/maxima/maxima/share/contrib/nset In directory sc8prcvs1.sourceforge.net:/tmp/cvsserv29730/share/contrib/nset Removed Files: nset.texi Log Message: Moved share/contrib/nset/nset.texi to doc/info/nset.texi in preparation for merging nset.texi into reference manual. share/contrib/nset/nset.lisp was moved to src/nset.lisp some time ago.  nset.texi DELETED  
From: Cliff Yapp <starseeker@us...>  20050526 02:57:46

Update of /cvsroot/maxima/maxima/share/contrib/unit In directory sc8prcvs1.sourceforge.net:/tmp/cvsserv8370 Added Files: unit.texi Log Message: Start on documentation for unit.mac package. Very incomplete at the moment  this will be ongoing. Once this is complete I'll start on a Maximabook chapter.  NEW FILE: unit.texi  @menu * Introduction to Units:: * Definitions for Units:: @end menu @node Introduction to Units, Definitions for Units, Units, Units @section Introduction to Units The @emph{unit} package enables the user to convert between arbitrary units and work with dimensions in equations. The functioning of this package is radically different from the original Maxima units package  whereas the original was a basic list of definitions, this package uses rulesets to allow the user to chose, on a per dimension basis, what unit final answers should be rendered in. It will separate units instead of intermixing them in the display, allowing the user to readily identify the units associated with a particular answer. It will allow a user to simplify an expression to its fundamental Base Units, as well as providing fine control over simplifying to derived units. Dimensional analysis is possible, and a variety of tools are available to manage conversion and simplification options. In addition to customizable automatic conversion, @emph{units} also provides a traditional manual conversion option. Note  when unit conversions are inexact Maxima will make approximations resulting in fractions. This is a consequence of the techniques used to simplify units. The messages warning of this type of substitution are disabled by default in the case of units (normally they are on) since this situation occurs frequently and the warnings clutter the output. (The existing state of ratprint is restored after unit conversions, so user changes to that setting will be preserved otherwise.) If the user needs this information for units, they can set @emph{unitverbose:on} to reactivate the printing of warnings from the unit conversion process. @subsubsection Loading @emph{unit} @emph{unit} is included in Maxima in the share/contrib/unit directory. It obeys normal Maxima package loading conventions: @example (%i1) load("share/contrib/unit.mac"); ******************************************************************* * Units version 0.50 * * Definitions based on the NIST Reference on * * Constants, Units, and Uncertainty * * Conversion factors from various sources including * * NIST and the GNU units package * ******************************************************************* Redefining necessary functions... STYLEWARNING: redefining TOPLEVELMACSYMAEVAL in DEFUN STYLEWARNING: redefining MSETCHK in DEFUN STYLEWARNING: redefining KILL1 in DEFUN STYLEWARNING: redefining NFORMAT in DEFUN Initializing unit arrays... Done. (%o1) /usr/local/share/maxima/5.9.1.1cvs/share/contrib/unit/unit.mac @end example The STYLEWARNING messages are expected and not a cause for concern  they indicate the @emph{unit} package is redefining functions already defined in Maxima proper. This is necessary in order to properly handle units. The user should be aware that if other changes have been made to these functions by other packages those changes will be overwritten by this loading process. The @emph{unit.mac} file also loads a lisp file @emph{unitfunctions.lisp} which contains the lisp functions needed for the package. @subsubsection Basic Usage By default, the @emph{unit} package does not use any derived dimensions, but will convert all units to the seven fundamental dimensions using MKS units. @example (%i2) N; kg m (%o2)  2 s (%i3) dyn; 1 kg m (%o3) () () 100000 2 s (%i4) g; 1 (%o4) () (kg) 1000 (%i5) centigram*inch/minutes^2; 127 kg m (%o5) () () 1800000000000 2 s @end example In some cases this is the desired behavior. If the user wishes to use other units, this is achieved with the @code{setunits} command: @example (%i6) setunits([centigram,inch,minute]); (%o6) done (%i7) N; 1800000000000 %in cg (%o7) () () 127 2 %min (%i8) dyn; 18000000 %in cg (%o8) () () 127 2 %min (%i9) g; (%o9) (100) (cg) (%i10) centigram*inch/minutes^2; %in cg (%o10)  2 %min @end example The setting of units is quite flexible. For example, if we want to get back to kilograms, meters, and seconds as defaults for those dimensions we can do: @example (%i11) setunits([kg,m,s]); (%o11) done (%i12) centigram*inch/minutes^2; 127 kg m (%o12) () () 1800000000000 2 s @end example Or, alternately, if one wishes to restore the default behavior for a particular dimension: @example (%i13) setunits([centigram,inch,minute]); (%o13) done (%i14) centigram*inch/minutes^2; %in cg (%o14)  2 %min (%i15) forget([cg,%in,%min]); (%o15) [done, done, done] (%i16) centigram*inch/minutes^2; 127 kg m (%o16) () () 1800000000000 2 s @end example Derived units are also handled by these commands: @example (%i17) setunits(N); (%o17) done (%i18) N; (%o18) N (%i19) dyn; 1 (%o19) () (N) 100000 (%i20) kg*m/s^2; (%o20) N (%i21) centigram*inch/minutes^2; 127 (%o21) () (N) 1800000000000 @end example Notice that the @emph{unit} package recognized the non MKS combination of mass, length, and inverse time squared as a force, and converted it to Newtons. This is how Maxima works in general. If, for example, we prefer dyne to Newtons, we simply do the following: @example (%i22) setunits(dyn); (%o22) done (%i23) kg*m/s^2; (%o23) (100000) (dyn) (%i24) centigram*inch/minutes^2; 127 (%o24) () (dyn) 18000000 @end example To discontinue simplifying to any force, we use the forget command: @example (%i26) forget(dyn); (%o26) done (%i27) kg*m/s^2; kg m (%o27)  2 s (%i28) centigram*inch/minutes^2; 127 kg m (%o28) () () 1800000000000 2 s @end example This would have worked equally well with @code{forget(N)} or @code{forget(%force)}. @code{forget} operates on dimensions, not units, so any unit of a particular dimension will work. The dimension itself is also a legal argument. @subsubsection @code{convert} When resetting the global environment is overkill, there is the @code{convert} command, which allows one time conversions. It can accept either a single argument or a list of units to use in conversion. When a convert operation is done, the normal global evaluation system is bypassed, in order to avoid the desired result being converted again. As a consequence, for inexact calculations "rat" warnings will be visible if the global environment controlling this behavior (@code{ratprint}) is true. This is also useful for spotchecking the accuracy of a global conversion. Another feature is @code{convert} will allow a user to do Base Dimension conversions even if the global environment is set to simplify to a Derived Dimension. @example (%i2) kg*m/s^2; kg m (%o2)  2 s (%i3) convert(kg*m/s^2,[g,km,s]); g km (%o3)  2 s (%i4) convert(kg*m/s^2,[g,inch,minute]); `rat' replaced 39.37007874015748 by 5000//127 = 39.37007874015748 18000000000 %in g (%o4) () () 127 2 %min (%i5) convert(kg*m/s^2,[N]); (%o5) N (%i6) convert(kg*m^2/s^2,[N]); (%o6) m N (%i7) setunits([N,J]); (%o7) done (%i8) convert(kg*m^2/s^2,[N]); (%o8) m N (%i9) convert(kg*m^2/s^2,[N,inch]); `rat' replaced 39.37007874015748 by 5000//127 = 39.37007874015748 5000 (%o9) () (%in N) 127 (%i10) convert(kg*m^2/s^2,[J]); (%o10) J (%i11) kg*m^2/s^2; (%o11) J (%i12) setunits([g,inch,s]); (%o12) done (%i13) kg*m/s^2; (%o13) N (%i14) forget(N); (%o14) false (%i15) kg*m/s^2; 5000000 %in g (%o15) () () 127 2 s (%i16) convert(kg*m/s^2,[g,inch,s]); `rat' replaced 39.37007874015748 by 5000//127 = 39.37007874015748 5000000 %in g (%o16) () () 127 2 s @end example TODO : dimension functionality, handling of temperature, showabbr and friends. Show examples with addition of quantities containing units. @subsubsection User defaults and resetting @emph{unit} behavior If a user wishes to have a default unit behavior other than that described, they can make use of @emph{maximainit.mac} and the @emph{usersetunits} variable. The @emph{unit} package will check on startup to see if this variable has been assigned a list. If it has, it will use setunits on that list and take the units from that list to be defaults. @code{forget} will revert to the behavior defined by usersetunits over its own defaults. For example, if we have a @emph{maximainit.mac} file containing: @example usersetunits : [N,J]; @end example we would see the following behavior: @example (%i1) load("./unit.mac"); ******************************************************************* * Units version 0.50 * * Definitions based on the NIST Reference on * * Constants, Units, and Uncertainty * * Conversion factors from various sources including * * NIST and the GNU units package * ******************************************************************* Redefining necessary functions... STYLEWARNING: redefining TOPLEVELMACSYMAEVAL in DEFUN STYLEWARNING: redefining MSETCHK in DEFUN STYLEWARNING: redefining KILL1 in DEFUN STYLEWARNING: redefining NFORMAT in DEFUN Initializing unit arrays... Done. User defaults found... User defaults initialized. (%o1) ./unit.mac (%i2) kg*m/s^2; (%o2) N (%i3) kg*m^2/s^2; (%o3) J (%i4) kg*m^3/s^2; (%o4) J m (%i5) kg*m*km/s^2; (%o5) (1000) (J) (%i6) setunits([dyn,eV]); (%o6) done (%i7) kg*m/s^2; (%o7) (100000) (dyn) (%i8) kg*m^2/s^2; (%o8) (6241509596477042688) (eV) (%i9) kg*m^3/s^2; (%o9) (6241509596477042688) (eV m) (%i10) kg*m*km/s^2; (%o10) (6241509596477042688000) (eV) (%i11) forget([dyn,eV]); (%o11) [done, done] (%i12) kg*m/s^2; (%o12) N (%i13) kg*m^2/s^2; (%o13) J (%i14) kg*m^3/s^2; (%o14) J m (%i15) kg*m*km/s^2; (%o15) (1000) (J) @end example Without @code{usersetunits}, the initial inputs would have been converted to MKS, and forget would have resulted in a return to MKS rules. Instead, the user preferences are respected in both cases. Notice these can still be overridden if desired. To completely eliminate this simplification  i.e. to have the user defaults reset to factory defaults  the @code{dontusedimension} command can be used. @code{forget} can restore user settings again, but only if @code{usedimension} frees it for use. Alternately, @code{kill(usersetunits)} will completely remove all knowledge of the user defaults from the session. Here are some examples of how these various options work. @example (%i2) kg*m/s^2; (%o2) N (%i3) kg*m^2/s^2; (%o3) J (%i4) setunits([dyn,eV]); (%o4) done (%i5) kg*m/s^2; (%o5) (100000) (dyn) (%i6) kg*m^2/s^2; (%o6) (6241509596477042688) (eV) (%i7) forget([dyn,eV]); (%o7) [done, done] (%i8) kg*m/s^2; (%o8) N (%i9) kg*m^2/s^2; (%o9) J (%i10) dontusedimension(N); (%o10) [%force] (%i11) dontusedimension(J); (%o11) [%energy, %force] (%i12) kg*m/s^2; kg m (%o12)  2 s (%i13) kg*m^2/s^2; 2 kg m (%o13)  2 s (%i14) setunits([dyn,eV]); (%o14) done (%i15) kg*m/s^2; kg m (%o15)  2 s (%i16) kg*m^2/s^2; 2 kg m (%o16)  2 s (%i17) forget([dyn,eV]); (%o17) [done, done] (%i18) kg*m/s^2; kg m (%o18)  2 s (%i19) kg*m^2/s^2; 2 kg m (%o19)  2 s (%i20) usedimension(N); Done. To have Maxima simplify to this dimension, use setunits([unit]) to select a unit. (%o20) true (%i21) usedimension(J); Done. To have Maxima simplify to this dimension, use setunits([unit]) to select a unit. (%o21) true (%i22) kg*m/s^2; kg m (%o22)  2 s (%i23) kg*m^2/s^2; 2 kg m (%o23)  2 s (%i24) setunits([dyn,eV]); (%o24) done (%i25) kg*m/s^2; (%o25) (100000) (dyn) (%i26) kg*m^2/s^2; (%o26) (6241509596477042688) (eV) (%i27) forget([dyn,eV]); (%o27) [done, done] (%i28) kg*m/s^2; (%o28) N (%i29) kg*m^2/s^2; (%o29) J (%i30) kill(usersetunits); (%o30) done (%i31) forget([dyn,eV]); (%o31) [false, false] (%i32) kg*m/s^2; kg m (%o32)  2 s (%i33) kg*m^2/s^2; 2 kg m (%o33)  2 s @end example Unfortunately this wide variety of options is a little confusing at first, but once the user grows used to them they should find they have very full control over their working environment. One other significant customization option available is the @code{setunitprefix} command. Normally, abbreviations used in this package are as close to those used in standard texts as possible. Some people, however, prefer to use those symbols for normal work and have units labeled in some other fasion. @code{setunitprefix} is provided for this case. Here is an example of its use: @subsubsection Bugs Undoubtedly. Probably lots of them. Let me know. float and numer don't do what is expected. @subsubsection Authors Clifford Yapp is the primary author. He has recieved valuable assistance from Barton Willis of the University of Nebraska at Kearney (UNK), Robert Dodier, and other intrepid folk of the Maxima mailing list. @node Definitions for Units, , Introduction to Units, Units @section Definitions for Units @deffn {Function} metricexpandall (@var{x}) Rebuilds global unit lists automatically creating all desired metric units. @var{x} is a numerical argument which is used to specify how many metric prefixes the user wishes defined. The arguments are as follows, with each higher number defining all lower numbers' units: @example 0  none. Only base units 1  kilo, centi, milli (default) 2  giga, mega, kilo, hecto, deka, deci, centi, milli, micro, nano 3  peta, tera, giga, mega, kilo, hecto, deka, deci, centi, milli, micro, nano, pico, femto 4  all @end example Normally, Maxima will not define the full expansion since this results in a very large number of units, but @code{metricexpandall} can be used to rebuild the list in a more or less complete fashion. The relevant variable in the @emph{unit.mac} file is @var{%unitexpand}. @c This should be made configurable as a maximainit.mac controllable option. @end deffn @defvr {Variable} %unitexpand Default value: @code{2} This is the value supplied to @code{metricexpandall} during the initial loading of @emph{unit}. @end defvr @deffn {Function} functionname (@var{arg1}, @var{arg2}, ..., @var{argn}) @end deffn @defvr {Variable} variablename Default value: @code{true} @end defvr 
From: Cliff Yapp <starseeker@us...>  20050526 02:56:03

Update of /cvsroot/maxima/maxima/share/contrib/unit In directory sc8prcvs1.sourceforge.net:/tmp/cvsserv8176 Removed Files: unit.usg Log Message: This file is left over from an early attempt at a units package.  unit.usg DELETED  