Dear Martin, a short note on your branches/multisort-experiment/src/mspecies.as.nw (r205)
line 230:------------------------------- \begin{+++} \adthisname{} generates structures where for the labels of some sorts are considered as being indistinguishable. The indices of these sorts are given as a second argument. \end{+++} %CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC <<exports: MultisortSpecies>>= structures: (Multiset M, List I) -> Generator %; @ ----------------------------------------- I have no idea, what you mean by "indices of these sorts". line 239:------------------------------- \begin{+++} \adthisname{} generates the isomorphism types of the species, i.e., the labels of each variable are considered as indistinguishable. \end{+++} %CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC <<exports: MultisortSpecies>>= isomorphismTypes: (Multiset M) -> Generator %; @ ----------------------------------------- I don't understand what "labels of each variable" means. In particular I don't understand "variable" here. line 239:------------------------------- \adthistype{} stores a species together with its LabelType. Apart from being convenient, it seems to be \emph{necessary}, because \xAldor{} doesn't seem to like constructs like \begin{adsnippet} List Record(L: LabelType, SetSpecies L) \end{adsnippet} ----------------------------------------- That is not a good description of the problem with Aldor. I have to invent code and test this myself rather than just reading about the particular problem you had. That is wasted time for people who want to understand your need for this "Wrapped" design decision. line 321:------------------------------- <<representation: Multiset>>= Rep == List Wrapped SetSpecies; import from Rep; @ ----------------------------------------- Is there a particular reason why you have chosen "List" instead of "Array"? line 564:------------------------------- <<implementation: MultiSubset>>= structures(s: Multiset M, i: I, l: List I): Generator % == generate { aux(L: LabelType, s: SetSpecies L): Generator Wrapped Subset == generate { for a in ( if member?(i, l)$List(I) then isomorphismTypes(s)$Subset(L) else structures(s)$Subset(L); ) repeat { yield object(L, a)$Wrapped(Subset) } } if (prev i = #$%) then yield per []; else { import from Wrapped SetSpecies; for a in aux avail(s.i) repeat { for p in structures(s, next i, l) repeat { yield per cons(a, rep p); } } } } structures(s: Multiset M, l: List I): Generator % == structures(s, 1, l); @ ----------------------------------------- I dont understand the first function. In particular, it is unclear why there appears something like if member?(i, l)$List(I) then isomorphismTypes(s)$Subset(L) else structures(s)$Subset(L); in "structures". You probably have your reasons, but unfortunately you don't give your knowledge to others. line 689:------------------------------- Given a partition $1^2 5 | 1 6 | 4 6^2$ we recover the elements by replacing numbers from left to right: $1 2 b | 3 r | a s t$. ----------------------------------------- Although you haven't written it somewhere, you also take the point of view of "iso-types = representatives". That's good. But your replacement only works in this case but not for general structures. But maybe it is enough. I'll have to invest more time in Knuth's algorithm. Although I don't like this "Wrapped" thing too much, I found your code surprisingly good. I still need more time to digest, but if we can completely hide "Wrapped" inside Multiset (at the moment you still seem to have need for <<implementation: Multiset>>= apply(x: %, i: I): Wrapped SetSpecies == (rep x).i; @ where "Wrapped" is seen by the outside world) then this approach is certainly worth to be considered. The remaining discussion we can do at the workshop. Ralf ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ Aldor-combinat-devel mailing list Aldor-combinat-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/aldor-combinat-devel