Stavros Macrakis and I (= we) have released a new version (1.2.03) of Maxima nset. 

What it is:

  Maxima nset has about 35 user-level functions supporting
  finite sets, combinatorics, and number theory.

Who wrote it:

  Stavros Macrakis and Barton Willis

Where to get it:

  http://www.unk.edu/acad/math/people/willisb/nset-1.2.tar.gz

Will it work with my Maxima?

  We've tested Maxima nset using GCL and Windows and cmucl and Linux.
A few things in nset do not work with commercial Macsyma; other than
that, we don't know of any Lisp / Maxima combinations that won't
work with nset.

What's the Plan:

  As we find bugs, we'll make 1.2.x releases. For Maxima 5.9.1, we
recommend that nset 1.2.x replace version nset 1.0. If possible,
we recommend that all other set packages be expunged or placed in
an out-of-the way place. Additionally, we recommend nset be placed
in /share/combinatorics or in a newly created
/share/combinatorics/nset directory.

What's new in Maxima nset version 1.2.0:

(0) We've replaced some algorithms (permutations for one) with 
better algorithms,

(1) We've added about twenty new functions: moebius, disjoin,
divisors, makeset, some, every, reduce, multinomial_coeff, belln, 
stirling1, stirling2, kron_delta, num_partitions,
num_distinct_partitions, integer_partitions, rreduce, 
lreduce, xreduce, set_partitions, tree_reduce.

(2) updated user documentation,

(3) expanded testing code (test-nset.mac),

(4) removed the function dupe -- the functions makelist and makeset
are more general,

(5) removed the function subpowerset and combined its functionality
into powerset (using an optional second argument),

(6) added note in user documentation about how to allow set input via
braces (a requested addition),

(7) changed cartesian_product to take zero or more arguments; previously
it required one or more arguments,

(8) the third argument to extremal_subset must now be either max or min;
the third argument no longer has a default value,

(9) flatten no longer has a special trap for exponentiation,

(10) changed the name of setequality to setequalp. 

(11) symmdifference now takes zero or more arguments and returns a
set of members that are members of exactly one argument.  This may
not be the only nary extension of a two-argument symmdifference, but
it's the most reasonable.

(12) Deleted function complement -- we don't have a universal set,
so we can't really do the complement only a relative complement.
And setdifference(a,b) is a less confusing way to do complement(b,a).


Here is a tour of some of the new Maxima nset functions.

(C1) l : [1,2,3];

(D1) 				   [1, 2, 3]
(C2) makeset(i/j,[i,j],cartesian_product(l,l));

			      1	 1  2	  3
(D2) 			     {-, -, -, 1, -, 2, 3}
			      3	 2  3	  2
(C3) reduce("+",%);

(D3) 				       9
(C4) divisors(28);

(D4) 			     {1, 2, 4, 7, 14, 28}
(C5) some(primep,%);

(D5) 				     TRUE
(C6) every(primep,d4);

(D6) 				     FALSE
(C7) integer_partitions(4);

(D7) 	        {[1, 1, 1, 1], [1, 1, 2], [1, 3], [2, 2], [4]}
(C8) set_partitions(set(a,b));

(D8) 			    {{{a}, {b}}, {{a, b}}}
(C9) num_partitions(4);

(D9) 				       5
(C10) num_distinct_partitions(4);

(D10) 				       2
(C11) num_partitions(2003);

(D11) 	        5137130903316893622770745464235084139384928426
(C12) bfloat(%);

(D12) 			     5.137130903316894B45
(C13) kron_delta(a,b);

(D13) 			       KRON_DELTA(a, b)
(C14) subst(a=b,%);

(D14) 				       1
(C15)  makelist(belln(i),i,0,6);

(D15) 			   [1, 1, 2, 5, 15, 52, 203]
(C16) cardinality(set_partitions(set(1,2,3,4,5,6)));

(D16) 				      203

Of course, send bug reports and wish list items to the Maxima nset authors.

Regards,

Barton