Hi Martin,

> (By the way, are you absolutely sure that SetSpecies is necessary?)

Read the documentation. I have tried to explain why I had to introduce
SetSpecies. But maybe it is not "absolut". In particular, SetSpecies
came up when I thought more carefully how to implement Compose.

But there are actually two issues.
1) SetSpecies L as an argument of a species F. For example, in Compose
we have

         Rep == Record(
             tag: SetPartition L,
             left: F SetSpecies L,
             right: SetSpecies G L
         );

which is pretty near to the actual definition in BLL.

2) SetSpecies now appears in
<<exports: CombinatorialSpecies>>=
structures: SetSpecies L -> Generator %;
@
The reason was that I want to be close to BLL. And there a species is a
functor from the category of sets to the category of sets. If we keep

structures: List L -> Generator %;

then "structures" would have to check whether the input list is, in
fact, a set. I wanted to avoid that checking and thus put the
information into the type.

BUT... I am not so convinced that this is the best possible design. I
think already to change that signature back to List or to Array instead
of SetSpecies, first I have to check the consequences.

I would impose a different meaning than it was before.

So, let me open a discussion on that idea. It is as follows.

Let F be a species and U be a set and then F[U] is the set of
structures. That is perfectly fine in mathematics, but there are some
people who like to do ranking and unranking (and I don't even know
whether it would be interesting to provide different generation
orderings for one species). So in order to get some order on F[U], U has
to be ordered.

In that idea I would like to have

structures: List L -> Generator %

or

structures: Array L -> Generator %

with the meaning that

structures([a,b,c]) is the "same" as structures([1,2,3]) but in each
structure 1 is replaced by a, 2 by b, and 3 by c. With that in the
documentation, it would mean that structures([a,a,a]) is perfectly
defined. It gives as many structures as applied to [1,2,3]. And not the 
same as applied to [a].

It basically means, if f is a function from {1,2,...,n} to an arbitrary
set s (where not necessarily #s=n) then structures(l) generates the
elements f(F[{1,2,...,}]) in a predefined order. Here l is the list
[f(1), f(2), ..., f(n)]. I hope, it is clear, that in f(F[{1,2,...,}]) f 
is actually applied to the elements of F[{1,2,...,}] in the sense of 
applying a bijection \sigma to a structure.

Would someone like that more than what I have written near the 
introduction of SetSpecies in trunk?

All the best
Ralf

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Aldor-combinat-devel mailing list
Aldor-combinat-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/aldor-combinat-devel

Reply via email to